Merge branch 'develop'

This commit is contained in:
conory 2016-01-08 16:58:37 +09:00
commit 3b3f3bed4f
852 changed files with 66236 additions and 5617 deletions

5
.gitignore vendored
View file

@ -8,12 +8,13 @@ config.user.inc.php
codeception.yml
/tests/_output/
/tests/*.suite.yml
/tests/_support/InstallTester.php
/tests/_support/UnitTester.php
/tests/_support/_generated/
/node_modules/
/bower_components/
/vendor/
composer.phar
composer.lock
.idea
*.sublime-workspace

View file

@ -4,28 +4,26 @@ php:
- 5.4
- 5.5
- 5.6
- 7
- 7.0
- hhvm
matrix:
allow_failures:
- php: 7
- php: hhvm
fast_finish: true
sudo: false
before_script:
- travis_retry composer self-update
- npm install -g grunt-cli
- npm install
- if [ $(phpenv version-name) != "5.3" ]; then composer install; fi
- if [ $(phpenv version-name) != "5.3" ]; then mysql -e 'create database xe_test;'; fi
- if [ $(phpenv version-name) != "5.3" ]; then echo "USE mysql;\nUPDATE user SET password=PASSWORD('travis')
WHERE user='travis';\nFLUSH PRIVILEGES;\n" | mysql -u root; fi
- if [ $(phpenv version-name) != "5.3" ]; then php -S localhost:8000 & fi
- mysql -e "CREATE DATABASE xe_test;"
- echo "USE mysql;\nUPDATE user SET password=PASSWORD('travis') WHERE user='travis';\nFLUSH PRIVILEGES;\n" | mysql -u root
- php -S localhost:8000 &
- if [ $(phpenv version-name) == "5.3" ]; then touch codecept.phar; fi
- if [ $(phpenv version-name) == "5.4" ]; then wget http://codeception.com/releases/2.0.16/codecept.phar; fi
- if [ ! -f codecept.phar ]; then wget http://codeception.com/codecept.phar; fi
script:
- grunt lint
- grunt minify
- if [ $(phpenv version-name) != "5.3" ]; then ./vendor/bin/codecept build; fi
- if [ $(phpenv version-name) != "5.3" ]; then ./vendor/bin/codecept run -d --fail-fast --env travis; fi
- if [ -f codecept.phar ]; then php codecept.phar build; fi
- if [ -f codecept.phar ]; then php codecept.phar run -d --fail-fast --env travis; fi
notifications:
slack:
secure: jpoMjtkveVuPZM4JXJETAPv8QUCtTbI/ZTixdS9HUgxSb9tD2DkoekMaRzXYnXA82Les/gGxTC0fQFcFrls6Ypkbvp1udBPggmAdLiBHubBIz+yd1BGIf/l4I6MY1QmGe1Lx4xlnVlEgLnKXHn+W+ENep4/MzpCEaR9Vw8wfGqY=
secure: "gPv4qFmGcXimNlI/OeVk5n4VtRCWbAe7VUtw7Inb3A/ZZaVDo11gtMNkwo/JVKSnXqFkaCQYebcNpj2D9Rb2ZCwgjMSX6wxvpA4/8OLOZpbWqFW6Hz2RKNggubXlnalXkIwFcsvj70rKctbcJFk2C1G9rVvYWdVGD9X4/ozQtAc="
email: false

View file

@ -1,9 +1,27 @@
XpressEngine With XETOWN
============
develop 브랜치에서 쓸만한 PR Merge!
RhymiX : RX (라이믹스)
=========================
xe core 새버전이 나오면 master 브랜치에서 Merge후 develop 브랜치와 최종 Merge!
라이믹스(RhymiX)는 XETOWN Fork 프로젝트의 XE Core 이름입니다.
develop 브랜치에서 커밋 가능. (소스수정)
원작 : XpressEngine (NAVER Corp) https://www.xpressengine.com
참여하실 분들은 conory(conorycom@gmail.com) 에게 알려주시면 Collaborators 으로 등록해드리겠습니다.
### 개발방향
원작을 개선시켜 사용자 편리성이 가장 뛰어난 CMS로 만들고자 합니다.
- 초보자도 쉽게 클릭 몇 번으로 웹사이트를 완성할 수 있을 만큼의 뛰어난 편리성
- 기존 XE 서드파티(애드온, 모듈, 위젯등...)와의 호환성 100% 목표!
- 보안이 우수한 CMS
## Server Requirements
* PHP version 5.3.0 or greater (But recommend PHP >= 5.5.0)
* MYSQL version 4.1 or greater (But recommend MYSQL >= 5.x) , MS-SQL, CUBRID
* XML Library
* GD Library
* ICONV
* session.auto_start = Off (php.ini)
## Official site
https://www.rhymix.org
## License
미정

View file

@ -285,7 +285,7 @@ class Context
$this->db_info->lang_type = $site_module_info->default_language;
if(!$this->db_info->lang_type)
{
$this->db_info->lang_type = 'en';
$this->db_info->lang_type = 'ko';
}
if(!$this->db_info->use_db_session)
{
@ -315,14 +315,14 @@ class Context
$this->lang_type = $this->db_info->lang_type;
}
// if still lang_type has not been set or has not-supported type , set as English.
// if still lang_type has not been set or has not-supported type , set as Korean.
if(!$this->lang_type)
{
$this->lang_type = 'en';
$this->lang_type = 'ko';
}
if(is_array($lang_supported) && !isset($lang_supported[$this->lang_type]))
{
$this->lang_type = 'en';
$this->lang_type = 'ko';
}
$this->set('lang_supported', $lang_supported);

View file

@ -382,7 +382,7 @@ class DB
{
$this->setError(0, 'success');
$this->query = $query;
$this->act_start = getMicroTime();
$this->act_start = microtime(true);
$this->elapsed_time = 0;
}
@ -396,7 +396,7 @@ class DB
{
return;
}
$this->act_finish = getMicroTime();
$this->act_finish = microtime(true);
$elapsed_time = $this->act_finish - $this->act_start;
$this->elapsed_time = $elapsed_time;
$GLOBALS['__db_elapsed_time__'] += $elapsed_time;
@ -1316,7 +1316,7 @@ class DB
function actDBClassStart()
{
$this->setError(0, 'success');
$this->act_dbclass_start = getMicroTime();
$this->act_dbclass_start = microtime(true);
$this->elapsed_dbclass_time = 0;
}
@ -1330,7 +1330,7 @@ class DB
{
return;
}
$this->act_dbclass_finish = getMicroTime();
$this->act_dbclass_finish = microtime(true);
$elapsed_dbclass_time = $this->act_dbclass_finish - $this->act_dbclass_start;
$this->elapsed_dbclass_time = $elapsed_dbclass_time;
$GLOBALS['__dbclass_elapsed_time__'] += $elapsed_dbclass_time;

View file

@ -142,7 +142,7 @@ class DisplayHandler extends Handler
return;
}
$end = getMicroTime();
$end = microtime(true);
// Firebug console output
if(__DEBUG_OUTPUT__ == 2 && version_compare(PHP_VERSION, '6.0.0') === -1)

View file

@ -76,7 +76,7 @@ class HTMLDisplayHandler
{
if(__DEBUG__ == 3)
{
$start = getMicroTime();
$start = microtime(true);
}
Context::set('content', $output, false);
@ -132,7 +132,7 @@ class HTMLDisplayHandler
if(__DEBUG__ == 3)
{
$GLOBALS['__layout_compile_elapsed__'] = getMicroTime() - $start;
$GLOBALS['__layout_compile_elapsed__'] = microtime(true) - $start;
}
if(stripos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE && (Context::get('_use_ssl') == 'optional' || Context::get('_use_ssl') == 'always'))
@ -158,7 +158,7 @@ class HTMLDisplayHandler
if(__DEBUG__ == 3)
{
$start = getMicroTime();
$start = microtime(true);
}
// move <style ..></style> in body to the header
@ -208,7 +208,7 @@ class HTMLDisplayHandler
if(__DEBUG__ == 3)
{
$GLOBALS['__trans_content_elapsed__'] = getMicroTime() - $start;
$GLOBALS['__trans_content_elapsed__'] = microtime(true) - $start;
}
// Remove unnecessary information

View file

@ -1052,7 +1052,7 @@ class ModuleHandler extends Handler
if(__DEBUG__ == 3)
{
$start_time = getMicroTime();
$start_time = microtime(true);
}
$parent_module = $module;
@ -1127,7 +1127,7 @@ class ModuleHandler extends Handler
if(__DEBUG__ == 3)
{
$GLOBALS['__elapsed_class_load__'] += getMicroTime() - $start_time;
$GLOBALS['__elapsed_class_load__'] += microtime(true) - $start_time;
}
// return the instance

View file

@ -17,244 +17,12 @@ class EmbedFilter
* @var int
*/
var $allowscriptaccessKey = 0;
var $whiteUrlXmlFile = './classes/security/conf/embedWhiteUrl.xml';
var $whiteUrlCacheFile = './files/cache/embedfilter/embedWhiteUrl.php';
var $whiteUrlDefaultFile = './classes/security/conf/whitelist.php';
var $whiteUrlList = array();
var $whiteIframeUrlList = array();
var $mimeTypeList = array();
var $extList = array();
var $parser = NULL;
var $mimeTypeList = array('application/andrew-inset' => 1, 'application/applixware' => 1, 'application/atom+xml' => 1, 'application/atomcat+xml' => 1, 'application/atomsvc+xml' => 1,
'application/ccxml+xml' => 1, 'application/cdmi-capability' => 1, 'application/cdmi-container' => 1, 'application/cdmi-domain' => 1, 'application/cdmi-object' => 1,
'application/cdmi-queue' => 1, 'application/cu-seeme' => 1, 'application/davmount+xml' => 1, 'application/docbook+xml' => 1, 'application/dssc+der' => 1, 'application/dssc+xml' => 1,
'application/ecmascript' => 1, 'application/emma+xml' => 1, 'application/epub+zip' => 1, 'application/exi' => 1, 'application/font-tdpfr' => 1, 'application/gml+xml' => 1,
'application/gpx+xml' => 1, 'application/gxf' => 1, 'application/hyperstudio' => 1, 'application/inkml+xml' => 1, 'application/inkml+xml' => 1, 'application/ipfix' => 1,
'application/java-archive' => 1, 'application/java-serialized-object' => 1, 'application/java-vm' => 1, 'application/javascript' => 1, 'application/json' => 1,
'application/jsonml+json' => 1, 'application/lost+xml' => 1, 'application/mac-binhex40' => 1, 'application/mac-compactpro' => 1, 'application/mads+xml' => 1,
'application/marc' => 1, 'application/marcxml+xml' => 1, 'application/mathematica' => 1, 'application/mathematica' => 1, 'application/mathematica' => 1, 'application/mathml+xml' => 1,
'application/mbox' => 1, 'application/mediaservercontrol+xml' => 1, 'application/metalink+xml' => 1, 'application/metalink4+xml' => 1, 'application/mets+xml' => 1,
'application/mods+xml' => 1, 'application/mp21' => 1, 'application/mp4' => 1, 'application/msword' => 1, 'application/mxf' => 1, 'application/octet-stream' => 1,
'application/octet-stream' => 1, 'application/octet-stream' => 1, 'application/octet-stream' => 1, 'application/octet-stream' => 1, 'application/octet-stream' => 1,
'application/octet-stream' => 1, 'application/octet-stream' => 1, 'application/octet-stream' => 1, 'application/octet-stream' => 1, 'application/octet-stream' => 1,
'application/octet-stream' => 1, 'application/oda' => 1, 'application/oebps-package+xml' => 1, 'application/ogg' => 1, 'application/omdoc+xml' => 1, 'application/onenote' => 1,
'application/onenote' => 1, 'application/onenote' => 1, 'application/onenote' => 1, 'application/oxps' => 1, 'application/patch-ops-error+xml' => 1, 'application/pdf' => 1,
'application/pgp-encrypted' => 1, 'application/pgp-signature' => 1, 'application/pgp-signature' => 1, 'application/pics-rules' => 1, 'application/pkcs10' => 1,
'application/pkcs7-mime' => 1, 'application/pkcs7-mime' => 1, 'application/pkcs7-signature' => 1, 'application/pkcs8' => 1, 'application/pkix-attr-cert' => 1,
'application/pkix-cert' => 1, 'application/pkix-crl' => 1, 'application/pkix-pkipath' => 1, 'application/pkixcmp' => 1, 'application/pls+xml' => 1,
'application/postscript' => 1, 'application/postscript' => 1, 'application/postscript' => 1, 'application/prs.cww' => 1, 'application/pskc+xml' => 1,
'application/rdf+xml' => 1, 'application/reginfo+xml' => 1, 'application/relax-ng-compact-syntax' => 1, 'application/resource-lists+xml' => 1,
'application/resource-lists-diff+xml' => 1, 'application/rls-services+xml' => 1, 'application/rpki-ghostbusters' => 1, 'application/rpki-manifest' => 1,
'application/rpki-roa' => 1, 'application/rsd+xml' => 1, 'application/rss+xml' => 1, 'application/rtf' => 1, 'application/sbml+xml' => 1, 'application/scvp-cv-request' => 1,
'application/scvp-cv-response' => 1, 'application/scvp-vp-request' => 1, 'application/scvp-vp-response' => 1, 'application/sdp' => 1, 'application/set-payment-initiation' => 1,
'application/set-registration-initiation' => 1, 'application/shf+xml' => 1, 'application/smil+xml' => 1, 'application/smil+xml' => 1, 'application/sparql-query' => 1,
'application/sparql-results+xml' => 1, 'application/srgs' => 1, 'application/srgs+xml' => 1, 'application/sru+xml' => 1, 'application/ssdl+xml' => 1,
'application/ssml+xml' => 1, 'application/tei+xml' => 1, 'application/tei+xml' => 1, 'application/thraud+xml' => 1, 'application/timestamped-data' => 1,
'application/vnd.3gpp.pic-bw-large' => 1, 'application/vnd.3gpp.pic-bw-small' => 1, 'application/vnd.3gpp.pic-bw-var' => 1, 'application/vnd.3gpp2.tcap' => 1,
'application/vnd.3m.post-it-notes' => 1, 'application/vnd.accpac.simply.aso' => 1, 'application/vnd.accpac.simply.imp' => 1, 'application/vnd.acucobol' => 1,
'application/vnd.acucorp' => 1, 'application/vnd.acucorp' => 1, 'application/vnd.adobe.air-application-installer-package+zip' => 1, 'application/vnd.adobe.formscentral.fcdt' => 1,
'application/vnd.adobe.fxp' => 1, 'application/vnd.adobe.fxp' => 1, 'application/vnd.adobe.xdp+xml' => 1, 'application/vnd.adobe.xfdf' => 1, 'application/vnd.ahead.space' => 1,
'application/vnd.airzip.filesecure.azf' => 1, 'application/vnd.airzip.filesecure.azs' => 1, 'application/vnd.amazon.ebook' => 1, 'application/vnd.americandynamics.acc' => 1,
'application/vnd.amiga.ami' => 1, 'application/vnd.android.package-archive' => 1, 'application/vnd.anser-web-certificate-issue-initiation' => 1,
'application/vnd.anser-web-funds-transfer-initiation' => 1, 'application/vnd.antix.game-component' => 1, 'application/vnd.apple.installer+xml' => 1,
'application/vnd.apple.mpegurl' => 1, 'application/vnd.aristanetworks.swi' => 1, 'application/vnd.astraea-software.iota' => 1, 'application/vnd.audiograph' => 1,
'application/vnd.blueice.multipass' => 1, 'application/vnd.bmi' => 1, 'application/vnd.businessobjects' => 1, 'application/vnd.chemdraw+xml' => 1,
'application/vnd.chipnuts.karaoke-mmd' => 1, 'application/vnd.cinderella' => 1, 'application/vnd.claymore' => 1, 'application/vnd.cloanto.rp9' => 1,
'application/vnd.clonk.c4group' => 1, 'application/vnd.clonk.c4group' => 1, 'application/vnd.clonk.c4group' => 1, 'application/vnd.clonk.c4group' => 1,
'application/vnd.clonk.c4group' => 1, 'application/vnd.cluetrust.cartomobile-config' => 1, 'application/vnd.cluetrust.cartomobile-config-pkg' => 1,
'application/vnd.commonspace' => 1, 'application/vnd.contact.cmsg' => 1, 'application/vnd.cosmocaller' => 1, 'application/vnd.crick.clicker' => 1,
'application/vnd.crick.clicker.keyboard' => 1, 'application/vnd.crick.clicker.palette' => 1, 'application/vnd.crick.clicker.template' => 1,
'application/vnd.crick.clicker.wordbank' => 1, 'application/vnd.criticaltools.wbs+xml' => 1, 'application/vnd.ctc-posml' => 1, 'application/vnd.cups-ppd' => 1,
'application/vnd.curl.car' => 1, 'application/vnd.curl.pcurl' => 1, 'application/vnd.dart' => 1, 'application/vnd.data-vision.rdz' => 1, 'application/vnd.dece.data' => 1,
'application/vnd.dece.data' => 1, 'application/vnd.dece.data' => 1, 'application/vnd.dece.data' => 1, 'application/vnd.dece.ttml+xml' => 1, 'application/vnd.dece.ttml+xml' => 1,
'application/vnd.dece.unspecified' => 1, 'application/vnd.dece.unspecified' => 1, 'application/vnd.dece.zip' => 1, 'application/vnd.dece.zip' => 1,
'application/vnd.denovo.fcselayout-link' => 1, 'application/vnd.dna' => 1, 'application/vnd.dolby.mlp' => 1, 'application/vnd.dpgraph' => 1, 'application/vnd.dreamfactory' => 1,
'application/vnd.ds-keypoint' => 1, 'application/vnd.dvb.ait' => 1, 'application/vnd.dvb.service' => 1, 'application/vnd.dynageo' => 1, 'application/vnd.ecowin.chart' => 1,
'application/vnd.enliven' => 1, 'application/vnd.epson.esf' => 1, 'application/vnd.epson.msf' => 1, 'application/vnd.epson.quickanime' => 1, 'application/vnd.epson.salt' => 1,
'application/vnd.epson.ssf' => 1, 'application/vnd.eszigno3+xml' => 1, 'application/vnd.eszigno3+xml' => 1, 'application/vnd.ezpix-album' => 1, 'application/vnd.ezpix-package' => 1,
'application/vnd.fdf' => 1, 'application/vnd.fdsn.mseed' => 1, 'application/vnd.fdsn.seed' => 1, 'application/vnd.fdsn.seed' => 1, 'application/vnd.flographit' => 1,
'application/vnd.fluxtime.clip' => 1, 'application/vnd.framemaker' => 1, 'application/vnd.framemaker' => 1, 'application/vnd.framemaker' => 1, 'application/vnd.framemaker' => 1,
'application/vnd.frogans.fnc' => 1, 'application/vnd.frogans.ltf' => 1, 'application/vnd.fsc.weblaunch' => 1, 'application/vnd.fujitsu.oasys' => 1,
'application/vnd.fujitsu.oasys2' => 1, 'application/vnd.fujitsu.oasys3' => 1, 'application/vnd.fujitsu.oasysgp' => 1, 'application/vnd.fujitsu.oasysprs' => 1,
'application/vnd.fujixerox.ddd' => 1, 'application/vnd.fujixerox.docuworks' => 1, 'application/vnd.fujixerox.docuworks.binder' => 1, 'application/vnd.fuzzysheet' => 1,
'application/vnd.genomatix.tuxedo' => 1, 'application/vnd.geogebra.file' => 1, 'application/vnd.geogebra.tool' => 1, 'application/vnd.geometry-explorer' => 1,
'application/vnd.geometry-explorer' => 1, 'application/vnd.geonext' => 1, 'application/vnd.geoplan' => 1, 'application/vnd.geospace' => 1, 'application/vnd.gmx' => 1,
'application/vnd.google-earth.kml+xml' => 1, 'application/vnd.google-earth.kmz' => 1, 'application/vnd.grafeq' => 1, 'application/vnd.grafeq' => 1,
'application/vnd.groove-account' => 1, 'application/vnd.groove-help' => 1, 'application/vnd.groove-identity-message' => 1, 'application/vnd.groove-injector' => 1,
'application/vnd.groove-tool-message' => 1, 'application/vnd.groove-tool-template' => 1, 'application/vnd.groove-vcard' => 1, 'application/vnd.hal+xml' => 1,
'application/vnd.handheld-entertainment+xml' => 1, 'application/vnd.hbci' => 1, 'application/vnd.hhe.lesson-player' => 1, 'application/vnd.hp-hpgl' => 1,
'application/vnd.hp-hpid' => 1, 'application/vnd.hp-hps' => 1, 'application/vnd.hp-jlyt' => 1, 'application/vnd.hp-pcl' => 1, 'application/vnd.hp-pclxl' => 1,
'application/vnd.hydrostatix.sof-data' => 1, 'application/vnd.ibm.minipay' => 1, 'application/vnd.ibm.modcap' => 1, 'application/vnd.ibm.modcap' => 1, 'application/vnd.ibm.modcap' => 1,
'application/vnd.ibm.rights-management' => 1, 'application/vnd.ibm.secure-container' => 1, 'application/vnd.iccprofile' => 1, 'application/vnd.iccprofile' => 1,
'application/vnd.igloader' => 1, 'application/vnd.immervision-ivp' => 1, 'application/vnd.immervision-ivu' => 1, 'application/vnd.insors.igm' => 1, 'application/vnd.intercon.formnet' => 1,
'application/vnd.intercon.formnet' => 1, 'application/vnd.intergeo' => 1, 'application/vnd.intu.qbo' => 1, 'application/vnd.intu.qfx' => 1, 'application/vnd.ipunplugged.rcprofile' => 1,
'application/vnd.irepository.package+xml' => 1, 'application/vnd.is-xpr' => 1, 'application/vnd.isac.fcs' => 1, 'application/vnd.jam' => 1, 'application/vnd.jcp.javame.midlet-rms' => 1,
'application/vnd.jisp' => 1, 'application/vnd.joost.joda-archive' => 1, 'application/vnd.kahootz' => 1, 'application/vnd.kahootz' => 1, 'application/vnd.kde.karbon' => 1,
'application/vnd.kde.kchart' => 1, 'application/vnd.kde.kformula' => 1, 'application/vnd.kde.kivio' => 1, 'application/vnd.kde.kontour' => 1, 'application/vnd.kde.kpresenter' => 1,
'application/vnd.kde.kpresenter' => 1, 'application/vnd.kde.kspread' => 1, 'application/vnd.kde.kword' => 1, 'application/vnd.kde.kword' => 1, 'application/vnd.kenameaapp' => 1,
'application/vnd.kidspiration' => 1, 'application/vnd.kinar' => 1, 'application/vnd.kinar' => 1, 'application/vnd.koan' => 1, 'application/vnd.koan' => 1, 'application/vnd.koan' => 1,
'application/vnd.koan' => 1, 'application/vnd.kodak-descriptor' => 1, 'application/vnd.las.las+xml' => 1, 'application/vnd.llamagraphics.life-balance.desktop' => 1,
'application/vnd.llamagraphics.life-balance.exchange+xml' => 1, 'application/vnd.lotus-1-2-3' => 1, 'application/vnd.lotus-approach' => 1, 'application/vnd.lotus-freelance' => 1,
'application/vnd.lotus-notes' => 1, 'application/vnd.lotus-organizer' => 1, 'application/vnd.lotus-screencam' => 1, 'application/vnd.lotus-wordpro' => 1,
'application/vnd.macports.portpkg' => 1, 'application/vnd.mcd' => 1, 'application/vnd.medcalcdata' => 1, 'application/vnd.mediastation.cdkey' => 1, 'application/vnd.mfer' => 1,
'application/vnd.mfmp' => 1, 'application/vnd.micrografx.flo' => 1, 'application/vnd.micrografx.igx' => 1, 'application/vnd.mif' => 1, 'application/vnd.mobius.daf' => 1,
'application/vnd.mobius.dis' => 1, 'application/vnd.mobius.mbk' => 1, 'application/vnd.mobius.mqy' => 1, 'application/vnd.mobius.msl' => 1, 'application/vnd.mobius.plc' => 1,
'application/vnd.mobius.txf' => 1, 'application/vnd.mophun.application' => 1, 'application/vnd.mophun.certificate' => 1, 'application/vnd.mozilla.xul+xml' => 1,
'application/vnd.ms-artgalry' => 1, 'application/vnd.ms-cab-compressed' => 1, 'application/vnd.ms-excel' => 1, 'application/vnd.ms-excel' => 1, 'application/vnd.ms-excel' => 1,
'application/vnd.ms-excel' => 1, 'application/vnd.ms-excel' => 1, 'application/vnd.ms-excel' => 1, 'application/vnd.ms-excel.addin.macroenabled.12' => 1,
'application/vnd.ms-excel.sheet.binary.macroenabled.12' => 1, 'application/vnd.ms-excel.sheet.macroenabled.12' => 1, 'application/vnd.ms-excel.template.macroenabled.12' => 1,
'application/vnd.ms-fontobject' => 1, 'application/vnd.ms-htmlhelp' => 1, 'application/vnd.ms-ims' => 1, 'application/vnd.ms-lrm' => 1, 'application/vnd.ms-officetheme' => 1,
'application/vnd.ms-pki.seccat' => 1, 'application/vnd.ms-pki.stl' => 1, 'application/vnd.ms-powerpoint' => 1, 'application/vnd.ms-powerpoint' => 1,
'application/vnd.ms-powerpoint' => 1, 'application/vnd.ms-powerpoint.addin.macroenabled.12' => 1, 'application/vnd.ms-powerpoint.presentation.macroenabled.12' => 1,
'application/vnd.ms-powerpoint.slide.macroenabled.12' => 1, 'application/vnd.ms-powerpoint.slideshow.macroenabled.12' => 1,
'application/vnd.ms-powerpoint.template.macroenabled.12' => 1, 'application/vnd.ms-project' => 1, 'application/vnd.ms-project' => 1,
'application/vnd.ms-word.document.macroenabled.12' => 1, 'application/vnd.ms-word.template.macroenabled.12' => 1, 'application/vnd.ms-works' => 1,
'application/vnd.ms-works' => 1, 'application/vnd.ms-works' => 1, 'application/vnd.ms-works' => 1, 'application/vnd.ms-wpl' => 1, 'application/vnd.ms-xpsdocument' => 1,
'application/vnd.mseq' => 1, 'application/vnd.musician' => 1, 'application/vnd.muvee.style' => 1, 'application/vnd.mynfc' => 1, 'application/vnd.neurolanguage.nlu' => 1,
'application/vnd.nitf' => 1, 'application/vnd.nitf' => 1, 'application/vnd.noblenet-directory' => 1, 'application/vnd.noblenet-sealer' => 1, 'application/vnd.noblenet-web' => 1,
'application/vnd.nokia.n-gage.data' => 1, 'application/vnd.nokia.n-gage.symbian.install' => 1, 'application/vnd.nokia.radio-preset' => 1, 'application/vnd.nokia.radio-presets' => 1,
'application/vnd.novadigm.edm' => 1, 'application/vnd.novadigm.edx' => 1, 'application/vnd.novadigm.ext' => 1, 'application/vnd.oasis.opendocument.chart' => 1,
'application/vnd.oasis.opendocument.chart-template' => 1, 'application/vnd.oasis.opendocument.database' => 1, 'application/vnd.oasis.opendocument.formula' => 1,
'application/vnd.oasis.opendocument.formula-template' => 1, 'application/vnd.oasis.opendocument.graphics' => 1, 'application/vnd.oasis.opendocument.graphics-template' => 1,
'application/vnd.oasis.opendocument.image' => 1, 'application/vnd.oasis.opendocument.image-template' => 1, 'application/vnd.oasis.opendocument.presentation' => 1,
'application/vnd.oasis.opendocument.presentation-template' => 1, 'application/vnd.oasis.opendocument.spreadsheet' => 1, 'application/vnd.oasis.opendocument.spreadsheet-template' => 1,
'application/vnd.oasis.opendocument.text' => 1, 'application/vnd.oasis.opendocument.text-master' => 1, 'application/vnd.oasis.opendocument.text-template' => 1,
'application/vnd.oasis.opendocument.text-web' => 1, 'application/vnd.olpc-sugar' => 1, 'application/vnd.oma.dd2+xml' => 1, 'application/vnd.openofficeorg.extension' => 1,
'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 1, 'application/vnd.openxmlformats-officedocument.presentationml.slide' => 1,
'application/vnd.openxmlformats-officedocument.presentationml.slideshow' => 1, 'application/vnd.openxmlformats-officedocument.presentationml.template' => 1,
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 1, 'application/vnd.openxmlformats-officedocument.spreadsheetml.template' => 1,
'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 1, 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' => 1,
'application/vnd.osgeo.mapguide.package' => 1, 'application/vnd.osgi.dp' => 1, 'application/vnd.osgi.subsystem' => 1, 'application/vnd.palm' => 1, 'application/vnd.palm' => 1,
'application/vnd.palm' => 1, 'application/vnd.pawaafile' => 1, 'application/vnd.pg.format' => 1, 'application/vnd.pg.osasli' => 1, 'application/vnd.picsel' => 1, 'application/vnd.pmi.widget' => 1,
'application/vnd.pocketlearn' => 1, 'application/vnd.powerbuilder6' => 1, 'application/vnd.previewsystems.box' => 1, 'application/vnd.proteus.magazine' => 1,
'application/vnd.publishare-delta-tree' => 1, 'application/vnd.pvi.ptid1' => 1, 'application/vnd.quark.quarkxpress' => 1, 'application/vnd.quark.quarkxpress' => 1,
'application/vnd.quark.quarkxpress' => 1, 'application/vnd.quark.quarkxpress' => 1, 'application/vnd.quark.quarkxpress' => 1, 'application/vnd.quark.quarkxpress' => 1,
'application/vnd.realvnc.bed' => 1, 'application/vnd.recordare.musicxml' => 1, 'application/vnd.recordare.musicxml+xml' => 1, 'application/vnd.rig.cryptonote' => 1,
'application/vnd.rim.cod' => 1, 'application/vnd.rn-realmedia' => 1, 'application/vnd.rn-realmedia-vbr' => 1, 'application/vnd.route66.link66+xml' => 1, 'application/vnd.sailingtracker.track' => 1,
'application/vnd.seemail' => 1, 'application/vnd.sema' => 1, 'application/vnd.semd' => 1, 'application/vnd.semf' => 1, 'application/vnd.shana.informed.formdata' => 1,
'application/vnd.shana.informed.formtemplate' => 1, 'application/vnd.shana.informed.interchange' => 1, 'application/vnd.shana.informed.package' => 1, 'application/vnd.simtech-mindmapper' => 1,
'application/vnd.simtech-mindmapper' => 1, 'application/vnd.smaf' => 1, 'application/vnd.smart.teacher' => 1, 'application/vnd.solent.sdkm+xml' => 1, 'application/vnd.solent.sdkm+xml' => 1,
'application/vnd.spotfire.dxp' => 1, 'application/vnd.spotfire.sfs' => 1, 'application/vnd.stardivision.calc' => 1, 'application/vnd.stardivision.draw' => 1,
'application/vnd.stardivision.impress' => 1, 'application/vnd.stardivision.math' => 1, 'application/vnd.stardivision.writer' => 1, 'application/vnd.stardivision.writer' => 1,
'application/vnd.stardivision.writer-global' => 1, 'application/vnd.stepmania.package' => 1, 'application/vnd.stepmania.stepchart' => 1, 'application/vnd.sun.xml.calc' => 1,
'application/vnd.sun.xml.calc.template' => 1, 'application/vnd.sun.xml.draw' => 1, 'application/vnd.sun.xml.draw.template' => 1, 'application/vnd.sun.xml.impress' => 1,
'application/vnd.sun.xml.impress.template' => 1, 'application/vnd.sun.xml.math' => 1, 'application/vnd.sun.xml.writer' => 1, 'application/vnd.sun.xml.writer.global' => 1,
'application/vnd.sun.xml.writer.template' => 1, 'application/vnd.sus-calendar' => 1, 'application/vnd.sus-calendar' => 1, 'application/vnd.svd' => 1, 'application/vnd.symbian.install' => 1,
'application/vnd.symbian.install' => 1, 'application/vnd.syncml+xml' => 1, 'application/vnd.syncml.dm+wbxml' => 1, 'application/vnd.syncml.dm+xml' => 1,
'application/vnd.tao.intent-module-archive' => 1, 'application/vnd.tcpdump.pcap' => 1, 'application/vnd.tcpdump.pcap' => 1, 'application/vnd.tcpdump.pcap' => 1,
'application/vnd.tmobile-livetv' => 1, 'application/vnd.trid.tpt' => 1, 'application/vnd.triscape.mxs' => 1, 'application/vnd.trueapp' => 1, 'application/vnd.ufdl' => 1, 'application/vnd.ufdl' => 1,
'application/vnd.uiq.theme' => 1, 'application/vnd.umajin' => 1, 'application/vnd.unity' => 1, 'application/vnd.uoml+xml' => 1, 'application/vnd.vcx' => 1, 'application/vnd.visio' => 1,
'application/vnd.visio' => 1, 'application/vnd.visio' => 1, 'application/vnd.visio' => 1, 'application/vnd.visionary' => 1, 'application/vnd.vsf' => 1, 'application/vnd.wap.wbxml' => 1,
'application/vnd.wap.wmlc' => 1, 'application/vnd.wap.wmlscriptc' => 1, 'application/vnd.webturbo' => 1, 'application/vnd.wolfram.player' => 1, 'application/vnd.wordperfect' => 1,
'application/vnd.wqd' => 1, 'application/vnd.wt.stf' => 1, 'application/vnd.xara' => 1, 'application/vnd.xfdl' => 1, 'application/vnd.yamaha.hv-dic' => 1, 'application/vnd.yamaha.hv-script' => 1,
'application/vnd.yamaha.hv-voice' => 1, 'application/vnd.yamaha.openscoreformat' => 1, 'application/vnd.yamaha.openscoreformat.osfpvg+xml' => 1, 'application/vnd.yamaha.smaf-audio' => 1,
'application/vnd.yamaha.smaf-phrase' => 1, 'application/vnd.yellowriver-custom-menu' => 1, 'application/vnd.zul' => 1, 'application/vnd.zul' => 1, 'application/vnd.zzazz.deck+xml' => 1,
'application/voicexml+xml' => 1, 'application/widget' => 1, 'application/winhlp' => 1, 'application/wsdl+xml' => 1, 'application/wspolicy+xml' => 1, 'application/x-7z-compressed' => 1,
'application/x-abiword' => 1, 'application/x-ace-compressed' => 1, 'application/x-apple-diskimage' => 1, 'application/x-authorware-bin' => 1, 'application/x-authorware-bin' => 1,
'application/x-authorware-bin' => 1, 'application/x-authorware-bin' => 1, 'application/x-authorware-map' => 1, 'application/x-authorware-seg' => 1, 'application/x-bcpio' => 1,
'application/x-bittorrent' => 1, 'application/x-blorb' => 1, 'application/x-blorb' => 1, 'application/x-bzip' => 1, 'application/x-bzip2' => 1, 'application/x-bzip2' => 1, 'application/x-cbr' => 1,
'application/x-cbr' => 1, 'application/x-cbr' => 1, 'application/x-cbr' => 1, 'application/x-cbr' => 1, 'application/x-cdlink' => 1, 'application/x-cfs-compressed' => 1, 'application/x-chat' => 1,
'application/x-chess-pgn' => 1, 'application/x-conference' => 1, 'application/x-cpio' => 1, 'application/x-csh' => 1, 'application/x-debian-package' => 1, 'application/x-debian-package' => 1,
'application/x-dgc-compressed' => 1, 'application/x-director' => 1, 'application/x-director' => 1, 'application/x-director' => 1, 'application/x-director' => 1, 'application/x-director' => 1,
'application/x-director' => 1, 'application/x-director' => 1, 'application/x-director' => 1, 'application/x-director' => 1, 'application/x-doom' => 1, 'application/x-dtbncx+xml' => 1,
'application/x-dtbook+xml' => 1, 'application/x-dtbresource+xml' => 1, 'application/x-dvi' => 1, 'application/x-envoy' => 1, 'application/x-eva' => 1, 'application/x-font-bdf' => 1,
'application/x-font-ghostscript' => 1, 'application/x-font-linux-psf' => 1, 'application/x-font-otf' => 1, 'application/x-font-pcf' => 1, 'application/x-font-snf' => 1,
'application/x-font-ttf' => 1, 'application/x-font-ttf' => 1, 'application/x-font-type1' => 1, 'application/x-font-type1' => 1, 'application/x-font-type1' => 1, 'application/x-font-type1' => 1,
'application/x-font-woff' => 1, 'application/x-freearc' => 1, 'application/x-futuresplash' => 1, 'application/x-gca-compressed' => 1, 'application/x-glulx' => 1, 'application/x-gnumeric' => 1,
'application/x-gramps-xml' => 1, 'application/x-gtar' => 1, 'application/x-hdf' => 1, 'application/x-install-instructions' => 1, 'application/x-iso9660-image' => 1,
'application/x-java-jnlp-file' => 1, 'application/x-latex' => 1, 'application/x-lzh-compressed' => 1, 'application/x-lzh-compressed' => 1, 'application/x-mie' => 1,
'application/x-mobipocket-ebook' => 1, 'application/x-mobipocket-ebook' => 1, 'application/x-ms-application' => 1, 'application/x-ms-shortcut' => 1, 'application/x-ms-wmd' => 1,
'application/x-ms-wmz' => 1, 'application/x-ms-xbap' => 1, 'application/x-msaccess' => 1, 'application/x-msbinder' => 1, 'application/x-mscardfile' => 1, 'application/x-msclip' => 1,
'application/x-msdownload' => 1, 'application/x-msdownload' => 1, 'application/x-msdownload' => 1, 'application/x-msdownload' => 1, 'application/x-msdownload' => 1, 'application/x-msmediaview' => 1,
'application/x-msmediaview' => 1, 'application/x-msmediaview' => 1, 'application/x-msmetafile' => 1, 'application/x-msmetafile' => 1, 'application/x-msmetafile' => 1, 'application/x-msmetafile' => 1,
'application/x-msmoney' => 1, 'application/x-mspublisher' => 1, 'application/x-msschedule' => 1, 'application/x-msterminal' => 1, 'application/x-mswrite' => 1, 'application/x-netcdf' => 1,
'application/x-netcdf' => 1, 'application/x-nzb' => 1, 'application/x-pkcs12' => 1, 'application/x-pkcs12' => 1, 'application/x-pkcs7-certificates' => 1, 'application/x-pkcs7-certificates' => 1,
'application/x-pkcs7-certreqresp' => 1, 'application/x-rar-compressed' => 1, 'application/x-research-info-systems' => 1, 'application/x-sh' => 1, 'application/x-shar' => 1,
'application/x-shockwave-flash' => 1, 'application/x-silverlight-app' => 1, 'application/x-silverlight-2' => 1, 'application/x-sql' => 1, 'application/x-stuffit' => 1, 'application/x-stuffitx' => 1,
'application/x-subrip' => 1, 'application/x-sv4cpio' => 1, 'application/x-sv4crc' => 1, 'application/x-t3vm-image' => 1, 'application/x-tads' => 1, 'application/x-tar' => 1, 'application/x-tcl' => 1,
'application/x-tex' => 1, 'application/x-tex-tfm' => 1, 'application/x-texinfo' => 1, 'application/x-texinfo' => 1, 'application/x-tgif' => 1, 'application/x-ustar' => 1, 'application/x-wais-source' => 1,
'application/x-x509-ca-cert' => 1, 'application/x-x509-ca-cert' => 1, 'application/x-xfig' => 1, 'application/x-xliff+xml' => 1, 'application/x-xpinstall' => 1, 'application/x-xz' => 1,
'application/x-zmachine' => 1, 'application/x-zmachine' => 1, 'application/x-zmachine' => 1, 'application/x-zmachine' => 1, 'application/x-zmachine' => 1, 'application/x-zmachine' => 1,
'application/x-zmachine' => 1, 'application/x-zmachine' => 1, 'application/xaml+xml' => 1, 'application/xcap-diff+xml' => 1, 'application/xenc+xml' => 1, 'application/xhtml+xml' => 1,
'application/xhtml+xml' => 1, 'application/xml' => 1, 'application/xml' => 1, 'application/xml-dtd' => 1, 'application/xop+xml' => 1, 'application/xproc+xml' => 1, 'application/xslt+xml' => 1,
'application/xspf+xml' => 1, 'application/xv+xml' => 1, 'application/xv+xml' => 1, 'application/xv+xml' => 1, 'application/xv+xml' => 1, 'application/yang' => 1, 'application/yin+xml' => 1,
'application/zip' => 1, 'audio/adpcm' => 1, 'audio/basic' => 1, 'audio/basic' => 1, 'audio/midi' => 1, 'audio/midi' => 1, 'audio/midi' => 1, 'audio/midi' => 1, 'audio/mp4' => 1, 'audio/mpeg' => 1,
'audio/mpeg' => 1, 'audio/mpeg' => 1, 'audio/mpeg' => 1, 'audio/mpeg' => 1, 'audio/mpeg' => 1, 'audio/ogg' => 1, 'audio/ogg' => 1, 'audio/ogg' => 1, 'audio/s3m' => 1, 'audio/silk' => 1,
'audio/vnd.dece.audio' => 1, 'audio/vnd.dece.audio' => 1, 'audio/vnd.digital-winds' => 1, 'audio/vnd.dra' => 1, 'audio/vnd.dts' => 1, 'audio/vnd.dts.hd' => 1, 'audio/vnd.lucent.voice' => 1,
'audio/vnd.ms-playready.media.pya' => 1, 'audio/vnd.nuera.ecelp4800' => 1, 'audio/vnd.nuera.ecelp7470' => 1, 'audio/vnd.nuera.ecelp9600' => 1, 'audio/vnd.rip' => 1, 'audio/webm' => 1,
'audio/x-aac' => 1, 'audio/x-aiff' => 1, 'audio/x-aiff' => 1, 'audio/x-aiff' => 1, 'audio/x-caf' => 1, 'audio/x-flac' => 1, 'audio/x-matroska' => 1, 'audio/x-mpegurl' => 1, 'audio/x-ms-wax' => 1,
'audio/x-ms-wma' => 1, 'audio/x-pn-realaudio' => 1, 'audio/x-pn-realaudio' => 1, 'audio/x-pn-realaudio-plugin' => 1, 'audio/x-wav' => 1, 'audio/xm' => 1, 'chemical/x-cdx' => 1, 'chemical/x-cif' => 1,
'chemical/x-cmdf' => 1, 'chemical/x-cml' => 1, 'chemical/x-csml' => 1, 'chemical/x-xyz' => 1, 'image/bmp' => 1, 'image/cgm' => 1, 'image/g3fax' => 1, 'image/gif' => 1, 'image/ief' => 1, 'image/jpeg' => 1,
'image/jpeg' => 1, 'image/jpeg' => 1, 'image/ktx' => 1, 'image/png' => 1, 'image/prs.btif' => 1, 'image/sgi' => 1, 'image/svg+xml' => 1, 'image/svg+xml' => 1, 'image/tiff' => 1, 'image/tiff' => 1,
'image/vnd.adobe.photoshop' => 1, 'image/vnd.dece.graphic' => 1, 'image/vnd.dece.graphic' => 1, 'image/vnd.dece.graphic' => 1, 'image/vnd.dece.graphic' => 1, 'image/vnd.dvb.subtitle' => 1,
'image/vnd.djvu' => 1, 'image/vnd.djvu' => 1, 'image/vnd.dwg' => 1, 'image/vnd.dxf' => 1, 'image/vnd.fastbidsheet' => 1, 'image/vnd.fpx' => 1, 'image/vnd.fst' => 1, 'image/vnd.fujixerox.edmics-mmr' => 1,
'image/vnd.fujixerox.edmics-rlc' => 1, 'image/vnd.ms-modi' => 1, 'image/vnd.ms-photo' => 1, 'image/vnd.net-fpx' => 1, 'image/vnd.wap.wbmp' => 1, 'image/vnd.xiff' => 1, 'image/webp' => 1,
'image/x-3ds' => 1, 'image/x-cmu-raster' => 1, 'image/x-cmx' => 1, 'image/x-freehand' => 1, 'image/x-freehand' => 1, 'image/x-freehand' => 1, 'image/x-freehand' => 1, 'image/x-freehand' => 1,
'image/x-icon' => 1, 'image/x-mrsid-image' => 1, 'image/x-pcx' => 1, 'image/x-pict' => 1, 'image/x-pict' => 1, 'image/x-portable-anymap' => 1, 'image/x-portable-bitmap' => 1,
'image/x-portable-graymap' => 1, 'image/x-portable-pixmap' => 1, 'image/x-rgb' => 1, 'image/x-tga' => 1, 'image/x-xbitmap' => 1, 'image/x-xpixmap' => 1, 'image/x-xwindowdump' => 1,
'message/rfc822' => 1, 'message/rfc822' => 1, 'model/iges' => 1, 'model/iges' => 1, 'model/mesh' => 1, 'model/mesh' => 1, 'model/mesh' => 1, 'model/vnd.collada+xml' => 1, 'model/vnd.dwf' => 1,
'model/vnd.gdl' => 1, 'model/vnd.gtw' => 1, 'model/vnd.mts' => 1, 'model/vnd.vtu' => 1, 'model/vrml' => 1, 'model/vrml' => 1, 'model/x3d+binary' => 1, 'model/x3d+binary' => 1, 'model/x3d+vrml' => 1,
'model/x3d+vrml' => 1, 'model/x3d+xml' => 1, 'model/x3d+xml' => 1, 'video/3gpp' => 1, 'video/3gpp2' => 1, 'video/h261' => 1, 'video/h263' => 1, 'video/h264' => 1, 'video/jpeg' => 1, 'video/jpm' => 1,
'video/jpm' => 1, 'video/mj2' => 1, 'video/mj2' => 1, 'video/mp4' => 1, 'video/mp4' => 1, 'video/mp4' => 1, 'video/mpeg' => 1, 'video/mpeg' => 1, 'video/mpeg' => 1, 'video/mpeg' => 1, 'video/mpeg' => 1,
'video/ogg' => 1, 'video/quicktime' => 1, 'video/quicktime' => 1, 'video/vnd.dece.hd' => 1, 'video/vnd.dece.hd' => 1, 'video/vnd.dece.mobile' => 1, 'video/vnd.dece.mobile' => 1, 'video/vnd.dece.pd' => 1,
'video/vnd.dece.pd' => 1, 'video/vnd.dece.sd' => 1, 'video/vnd.dece.sd' => 1, 'video/vnd.dece.video' => 1, 'video/vnd.dece.video' => 1, 'video/vnd.dvb.file' => 1, 'video/vnd.fvt' => 1,
'video/vnd.mpegurl' => 1, 'video/vnd.mpegurl' => 1, 'video/vnd.ms-playready.media.pyv' => 1, 'video/vnd.uvvu.mp4' => 1, 'video/vnd.uvvu.mp4' => 1, 'video/vnd.vivo' => 1, 'video/webm' => 1,
'video/x-f4v' => 1, 'video/x-fli' => 1, 'video/x-flv' => 1, 'video/x-m4v' => 1, 'video/x-matroska' => 1, 'video/x-matroska' => 1, 'video/x-matroska' => 1, 'video/x-mng' => 1, 'video/x-ms-asf' => 1,
'video/x-ms-asf' => 1, 'video/x-ms-vob' => 1, 'video/x-ms-wm' => 1, 'video/x-ms-wmv' => 1, 'video/x-ms-wmx' => 1, 'video/x-ms-wvx' => 1, 'video/x-msvideo' => 1, 'video/x-sgi-movie' => 1,
'video/x-smv' => 1, 'x-conference/x-cooltalk' => 1
);
var $extList = array('ez' => 1, 'aw' => 1, 'atom' => 1, 'atomcat' => 1, 'atomsvc' => 1, 'ccxml' => 1, 'cdmia' => 1, 'cdmic' => 1, 'cdmid' => 1, 'cdmio' => 1, 'cdmiq' => 1, 'cu' => 1, 'davmount' => 1,
'dbk' => 1, 'dssc' => 1, 'xdssc' => 1, 'ecma' => 1, 'emma' => 1, 'epub' => 1, 'exi' => 1, 'pfr' => 1, 'gml' => 1, 'gpx' => 1, 'gxf' => 1, 'stk' => 1, 'ink' => 1, 'inkml' => 1, 'ipfix' => 1, 'jar' => 1,
'ser' => 1, 'class' => 1, 'js' => 1, 'json' => 1, 'jsonml' => 1, 'lostxml' => 1, 'hqx' => 1, 'cpt' => 1, 'mads' => 1, 'mrc' => 1, 'mrcx' => 1, 'ma' => 1, 'nb' => 1, 'mb' => 1, 'mathml' => 1, 'mbox' => 1,
'mscml' => 1, 'metalink' => 1, 'meta4' => 1, 'mets' => 1, 'mods' => 1, 'm21 mp21' => 1, 'mp4s' => 1, 'doc dot' => 1, 'mxf' => 1, 'bin' => 1, 'dms' => 1, 'lrf' => 1, 'mar' => 1, 'so' => 1, 'dist' => 1,
'distz' => 1, 'pkg' => 1, 'bpk' => 1, 'dump' => 1, 'elc' => 1, 'deploy' => 1, 'oda' => 1, 'opf' => 1, 'ogx' => 1, 'omdoc' => 1, 'onetoc' => 1, 'onetoc2' => 1, 'onetmp' => 1, 'onepkg' => 1, 'oxps' => 1,
'xer' => 1, 'pdf' => 1, 'pgp' => 1, 'asc' => 1, 'sig' => 1, 'prf' => 1, 'p10' => 1, 'p7m' => 1, 'p7c' => 1, 'p7s' => 1, 'p8' => 1, 'ac' => 1, 'cer' => 1, 'crl' => 1, 'pkipath' => 1, 'pki' => 1, 'pls' => 1,
'ai' => 1, 'eps' => 1, 'ps' => 1, 'cww' => 1, 'pskcxml' => 1, 'rdf' => 1, 'rif' => 1, 'rnc' => 1, 'rl' => 1, 'rld' => 1, 'rs' => 1, 'gbr' => 1, 'mft' => 1, 'roa' => 1, 'rsd' => 1, 'rss' => 1, 'rtf' => 1,
'sbml' => 1, 'scq' => 1, 'scs' => 1, 'spq' => 1, 'spp' => 1, 'sdp' => 1, 'setpay' => 1, 'setreg' => 1, 'shf' => 1, 'smi' => 1, 'smil' => 1, 'rq' => 1, 'srx' => 1, 'gram' => 1, 'grxml' => 1, 'sru' => 1,
'ssdl' => 1, 'ssml' => 1, 'tei' => 1, 'teicorpus' => 1, 'tfi' => 1, 'tsd' => 1, 'plb' => 1, 'psb' => 1, 'pvb' => 1, 'tcap' => 1, 'pwn' => 1, 'aso' => 1, 'imp' => 1, 'acu' => 1, 'atc' => 1, 'acutc' => 1,
'air' => 1, 'fcdt' => 1, 'fxp' => 1, 'fxpl' => 1, 'xdp' => 1, 'xfdf' => 1, 'ahead' => 1, 'azf' => 1, 'azs' => 1, 'azw' => 1, 'acc' => 1, 'ami' => 1, 'apk' => 1, 'cii' => 1, 'fti' => 1, 'atx' => 1, 'mpkg' => 1,
'm3u8' => 1, 'swi' => 1, 'iota' => 1, 'aep' => 1, 'mpm' => 1, 'bmi' => 1, 'rep' => 1, 'cdxml' => 1, 'mmd' => 1, 'cdy' => 1, 'cla' => 1, 'rp9' => 1, 'c4g' => 1, 'c4d' => 1, 'c4f' => 1, 'c4p' => 1, 'c4u' => 1,
'c11amc' => 1, 'c11amz' => 1, 'csp' => 1, 'cdbcmsg' => 1, 'cmc' => 1, 'clkx' => 1, 'clkk' => 1, 'clkp' => 1, 'clkt' => 1, 'clkw' => 1, 'wbs' => 1, 'pml' => 1, 'ppd' => 1, 'car' => 1, 'pcurl' => 1, 'dart' => 1,
'rdz' => 1, 'uvf' => 1, 'uvvf' => 1, 'uvd' => 1, 'uvvd' => 1, 'uvt' => 1, 'uvvt' => 1, 'uvx' => 1, 'uvvx' => 1, 'uvz' => 1, 'uvvz' => 1, 'fe_launch' => 1, 'dna' => 1, 'mlp' => 1, 'dpg' => 1, 'dfac' => 1,
'kpxx' => 1, 'ait' => 1, 'svc' => 1, 'geo' => 1, 'mag' => 1, 'nml' => 1, 'esf' => 1, 'msf' => 1, 'qam' => 1, 'slt' => 1, 'ssf' => 1, 'es3' => 1, 'et3' => 1, 'ez2' => 1, 'ez3' => 1, 'fdf' => 1, 'mseed' => 1,
'seed' => 1, 'dataless' => 1, 'gph' => 1, 'ftc' => 1, 'fm' => 1, 'frame' => 1, 'maker' => 1, 'book' => 1, 'fnc' => 1, 'ltf' => 1, 'fsc' => 1, 'oas' => 1, 'oa2' => 1, 'oa3' => 1, 'fg5' => 1, 'bh2' => 1, 'ddd' => 1,
'xdw' => 1, 'xbd' => 1, 'fzs' => 1, 'txd' => 1, 'ggb' => 1, 'ggt' => 1, 'gex' => 1, 'gre' => 1, 'gxt' => 1, 'g2w' => 1, 'g3w' => 1, 'gmx' => 1, 'kml' => 1, 'kmz' => 1, 'gqf' => 1, 'gqs' => 1, 'gac' => 1, 'ghf' => 1,
'gim' => 1, 'grv' => 1, 'gtm' => 1, 'tpl' => 1, 'vcg' => 1, 'hal' => 1, 'zmm' => 1, 'hbci' => 1, 'les' => 1, 'hpgl' => 1, 'hpid' => 1, 'hps' => 1, 'jlt' => 1, 'pcl' => 1, 'pclxl' => 1, 'sfd-hdstx' => 1, 'mpy' => 1,
'afp' => 1, 'listafp' => 1, 'list3820' => 1, 'irm' => 1, 'sc' => 1, 'icc' => 1, 'icm' => 1, 'igl' => 1, 'ivp' => 1, 'ivu' => 1, 'igm' => 1, 'xpw' => 1, 'xpx' => 1, 'i2g' => 1, 'qbo' => 1, 'qfx' => 1,
'rcprofile' => 1, 'irp' => 1, 'xpr' => 1, 'fcs' => 1, 'jam' => 1, 'rms' => 1, 'jisp' => 1, 'joda' => 1, 'ktz' => 1, 'ktr' => 1, 'karbon' => 1, 'chrt' => 1, 'kfo' => 1, 'flw' => 1, 'kon' => 1, 'kpr' => 1, 'kpt' => 1,
'ksp' => 1, 'kwd' => 1, 'kwt' => 1, 'htke' => 1, 'kia' => 1, 'kne' => 1, 'knp' => 1, 'skp' => 1, 'skd' => 1, 'skt' => 1, 'skm' => 1, 'sse' => 1, 'lasxml' => 1, 'lbd' => 1, 'lbe' => 1, '123' => 1, 'apr' => 1,
'pre' => 1, 'nsf' => 1, 'org' => 1, 'scm' => 1, 'lwp' => 1, 'portpkg' => 1, 'mcd' => 1, 'mc1' => 1, 'cdkey' => 1, 'mwf' => 1, 'mfm' => 1, 'flo' => 1, 'igx' => 1, 'mif' => 1, 'daf' => 1, 'dis' => 1, 'mbk' => 1,
'mqy' => 1, 'msl' => 1, 'plc' => 1, 'txf' => 1, 'mpn' => 1, 'mpc' => 1, 'xul' => 1, 'cil' => 1, 'cab' => 1, 'xls' => 1, 'xlm' => 1, 'xla' => 1, 'xlc' => 1, 'xlt' => 1, 'xlw' => 1, 'xlam' => 1, 'xlsb' => 1, 'xlsm' => 1,
'xltm' => 1, 'eot' => 1, 'chm' => 1, 'ims' => 1, 'lrm' => 1, 'thmx' => 1, 'cat' => 1, 'stl' => 1, 'ppt' => 1, 'pps' => 1, 'pot' => 1, 'ppam' => 1, 'pptm' => 1, 'sldm' => 1, 'ppsm' => 1, 'potm' => 1, 'mpp' => 1,
'mpt' => 1, 'docm' => 1, 'dotm' => 1, 'wps' => 1, 'wks' => 1, 'wcm' => 1, 'wdb' => 1, 'wpl' => 1, 'xps' => 1, 'mseq' => 1, 'mus' => 1, 'msty' => 1, 'taglet' => 1, 'nlu' => 1, 'nitf' => 1, 'nitf' => 1, 'nnd' => 1,
'nns' => 1, 'nnw' => 1, 'ngdat' => 1, 'n-gage' => 1, 'rpst' => 1, 'rpss' => 1, 'edm' => 1, 'edx' => 1, 'ext' => 1, 'odc' => 1, 'otc' => 1, 'odb' => 1, 'odf' => 1, 'odft' => 1, 'odg' => 1, 'otg' => 1, 'odi' => 1,
'oti' => 1, 'odp' => 1, 'otp' => 1, 'ods' => 1, 'ots' => 1, 'odt' => 1, 'odm' => 1, 'ott' => 1, 'oth' => 1, 'xo' => 1, 'dd2' => 1, 'oxt' => 1, 'pptx' => 1, 'sldx' => 1, 'ppsx' => 1, 'potx' => 1, 'xlsx' => 1, 'xltx' => 1,
'docx' => 1, 'dotx' => 1, 'mgp' => 1, 'dp' => 1, 'esa' => 1, 'pdb' => 1, 'pqa' => 1, 'oprc' => 1, 'paw' => 1, 'str' => 1, 'ei6' => 1, 'efif' => 1, 'wg' => 1, 'plf' => 1, 'pbd' => 1, 'box' => 1, 'mgz' => 1, 'qps' => 1,
'ptid' => 1, 'qxd' => 1, 'qxt' => 1, 'qwd' => 1, 'qwt' => 1, 'qxl' => 1, 'qxb' => 1, 'bed' => 1, 'mxl' => 1, 'musicxml' => 1, 'cryptonote' => 1, 'cod' => 1, 'rm' => 1, 'rmvb' => 1, 'link66' => 1, 'st' => 1, 'see' => 1,
'sema' => 1, 'semd' => 1, 'semf' => 1, 'ifm' => 1, 'itp' => 1, 'iif' => 1, 'ipk' => 1, 'twd' => 1, 'twds' => 1, 'mmf' => 1, 'teacher' => 1, 'sdkm' => 1, 'sdkd' => 1, 'dxp' => 1, 'sfs' => 1, 'sdc' => 1, 'sda' => 1,
'sdd' => 1, 'smf' => 1, 'sdw' => 1, 'vor' => 1, 'sgl' => 1, 'smzip' => 1, 'sm' => 1, 'sxc' => 1, 'stc' => 1, 'sxd' => 1, 'std' => 1, 'sxi' => 1, 'sti' => 1, 'sxm' => 1, 'sxw' => 1, 'sxg' => 1, 'stw' => 1, 'sus' => 1,
'susp' => 1, 'svd' => 1, 'sis' => 1, 'sisx' => 1, 'xsm' => 1, 'bdm' => 1, 'xdm' => 1, 'tao' => 1, 'pcap' => 1, 'cap' => 1, 'dmp' => 1, 'tmo' => 1, 'tpt' => 1, 'mxs' => 1, 'tra' => 1, 'ufd' => 1, 'ufdl' => 1, 'utz' => 1,
'umj' => 1, 'unityweb' => 1, 'uoml' => 1, 'vcx' => 1, 'vsd' => 1, 'vst' => 1, 'vss' => 1, 'vsw' => 1, 'vis' => 1, 'vsf' => 1, 'wbxml' => 1, 'wmlc' => 1, 'wmlsc' => 1, 'wtb' => 1, 'nbp' => 1, 'wpd' => 1, 'wqd' => 1,
'stf' => 1, 'xar' => 1, 'xfdl' => 1, 'hvd' => 1, 'hvs' => 1, 'hvp' => 1, 'osf' => 1, 'osfpvg' => 1, 'saf' => 1, 'spf' => 1, 'cmp' => 1, 'zir' => 1, 'zirz' => 1, 'zaz' => 1, 'vxml' => 1, 'wgt' => 1, 'hlp' => 1, 'wsdl' => 1,
'wspolicy' => 1, '7z' => 1, 'abw' => 1, 'ace' => 1, 'dmg' => 1, 'aab' => 1, 'x32' => 1, 'u32' => 1, 'vox' => 1, 'aam' => 1, 'aas' => 1, 'bcpio' => 1, 'torrent' => 1, 'blb' => 1, 'blorb' => 1, 'bz' => 1, 'bz2' => 1,
'boz' => 1, 'cbr' => 1, 'cba' => 1, 'cbt' => 1, 'cbz' => 1, 'cb7' => 1, 'vcd' => 1, 'cfs' => 1, 'chat' => 1, 'pgn' => 1, 'nsc' => 1, 'cpio' => 1, 'csh' => 1, 'deb' => 1, 'udeb' => 1, 'dgc' => 1, 'dir' => 1, 'dcr' => 1,
'dxr' => 1, 'cst' => 1, 'cct' => 1, 'cxt' => 1, 'w3d' => 1, 'fgd' => 1, 'swa' => 1, 'wad' => 1, 'ncx' => 1, 'dtb' => 1, 'res' => 1, 'dvi' => 1, 'evy' => 1, 'eva' => 1, 'bdf' => 1, 'gsf' => 1, 'psf' => 1, 'otf' => 1,
'pcf' => 1, 'snf' => 1, 'ttf' => 1, 'ttc' => 1, 'pfa' => 1, 'pfb' => 1, 'pfm' => 1, 'afm' => 1, 'woff' => 1, 'arc' => 1, 'spl' => 1, 'gca' => 1, 'ulx' => 1, 'gnumeric' => 1, 'gramps' => 1, 'gtar' => 1, 'hdf' => 1,
'install' => 1, 'iso' => 1, 'jnlp' => 1, 'latex' => 1, 'lzh' => 1, 'lha' => 1, 'mie' => 1, 'prc' => 1, 'mobi' => 1, 'application' => 1, 'lnk' => 1, 'wmd' => 1, 'wmz' => 1, 'xbap' => 1, 'mdb' => 1, 'obd' => 1,
'crd' => 1, 'clp' => 1, 'exe' => 1, 'dll' => 1, 'com' => 1, 'bat' => 1, 'msi' => 1, 'mvb' => 1, 'm13' => 1, 'm14' => 1, 'wmf' => 1, 'wmz' => 1, 'emf' => 1, 'emz' => 1, 'mny' => 1, 'pub' => 1, 'scd' => 1, 'trm' => 1,
'wri' => 1, 'nc' => 1, 'cdf' => 1, 'nzb' => 1, 'p12' => 1, 'pfx' => 1, 'p7b' => 1, 'spc' => 1, 'p7r' => 1, 'rar' => 1, 'ris' => 1, 'sh' => 1, 'shar' => 1, 'swf' => 1, 'xap' => 1, 'sql' => 1, 'sit' => 1, 'sitx' => 1,
'srt' => 1, 'sv4cpio' => 1, 'sv4crc' => 1, 't3' => 1, 'gam' => 1, 'tar' => 1, 'tcl' => 1, 'tex' => 1, 'tfm' => 1, 'texinfo' => 1, 'texi' => 1, 'obj' => 1, 'ustar' => 1, 'src' => 1, 'der' => 1, 'crt' => 1, 'fig' => 1,
'xlf' => 1, 'xpi' => 1, 'xz' => 1, 'z1' => 1, 'z2' => 1, 'z3' => 1, 'z4' => 1, 'z5' => 1, 'z6' => 1, 'z7' => 1, 'z8' => 1, 'xaml' => 1, 'xdf' => 1, 'xenc' => 1, 'xhtml' => 1, 'xht' => 1, 'xml' => 1, 'xsl' => 1, 'dtd' => 1,
'xop' => 1, 'xpl' => 1, 'xslt' => 1, 'xspf' => 1, 'mxml' => 1, 'xhvml' => 1, 'xvml' => 1, 'xvm' => 1, 'yang' => 1, 'yin' => 1, 'zip' => 1, 'adp' => 1, 'au' => 1, 'snd' => 1, 'mid' => 1, 'midi' => 1, 'kar' => 1, 'rmi' => 1,
'mp4a' => 1, 'mpga' => 1, 'mp2' => 1, 'mp2a' => 1, 'mp3' => 1, 'm2a' => 1, 'm3a' => 1, 'oga' => 1, 'ogg' => 1, 'spx' => 1, 's3m' => 1, 'sil' => 1, 'uva' => 1, 'uvva' => 1, 'eol' => 1, 'dra' => 1, 'dts' => 1, 'dtshd' => 1,
'lvp' => 1, 'pya' => 1, 'ecelp4800' => 1, 'ecelp7470' => 1, 'ecelp9600' => 1, 'rip' => 1, 'weba' => 1, 'aac' => 1, 'aif' => 1, 'aiff' => 1, 'aifc' => 1, 'caf' => 1, 'flac' => 1, 'mka' => 1, 'm3u' => 1, 'wax' => 1,
'wma' => 1, 'ram' => 1, 'ra' => 1, 'rmp' => 1, 'wav' => 1, 'xm' => 1, 'cdx' => 1, 'cif' => 1, 'cmdf' => 1, 'cml' => 1, 'csml' => 1, 'xyz' => 1, 'bmp' => 1, 'cgm' => 1, 'g3' => 1, 'gif' => 1, 'ief' => 1, 'jpeg' => 1,
'jpg' => 1, 'jpe' => 1, 'ktx' => 1, 'png' => 1, 'btif' => 1, 'sgi' => 1, 'svg' => 1, 'svgz' => 1, 'tiff' => 1, 'tif' => 1, 'psd' => 1, 'uvi' => 1, 'uvvi' => 1, 'uvg' => 1, 'uvvg' => 1, 'sub' => 1, 'djvu' => 1, 'djv' => 1,
'dwg' => 1, 'dxf' => 1, 'fbs' => 1, 'fpx' => 1, 'fst' => 1, 'mmr' => 1, 'rlc' => 1, 'mdi' => 1, 'wdp' => 1, 'npx' => 1, 'wbmp' => 1, 'xif' => 1, 'webp' => 1, '3ds' => 1, 'ras' => 1, 'cmx' => 1, 'fh' => 1, 'fhc' => 1,
'fh4' => 1, 'fh5' => 1, 'fh7' => 1, 'ico' => 1, 'sid' => 1, 'pcx' => 1, 'pic' => 1, 'pct' => 1, 'pnm' => 1, 'pbm' => 1, 'pgm' => 1, 'ppm' => 1, 'rgb' => 1, 'tga' => 1, 'xbm' => 1, 'xpm' => 1, 'xwd' => 1, 'eml' => 1,
'mime' => 1, 'igs' => 1, 'iges' => 1, 'msh' => 1, 'mesh' => 1, 'silo' => 1, 'dae' => 1, 'dwf' => 1, 'gdl' => 1, 'gtw' => 1, 'mts' => 1, 'vtu' => 1, 'wrl' => 1, 'vrml' => 1, 'x3db' => 1, 'x3dbz' => 1, 'x3dv' => 1,
'x3dvz' => 1, 'x3d' => 1, 'x3dz' => 1, '3gp' => 1, '3g2' => 1, 'h261' => 1, 'h263' => 1, 'h264' => 1, 'jpgv' => 1, 'jpm' => 1, 'jpgm' => 1, 'mj2' => 1, 'mjp2' => 1, 'mp4' => 1, 'mp4v' => 1, 'mpg4' => 1, 'mpeg' => 1,
'mpg' => 1, 'mpe' => 1, 'm1v' => 1, 'm2v' => 1, 'ogv' => 1, 'qt' => 1, 'mov' => 1, 'uvh' => 1, 'uvvh' => 1, 'uvm' => 1, 'uvvm' => 1, 'uvp' => 1, 'uvvp' => 1, 'uvs' => 1, 'uvvs' => 1, 'uvv' => 1, 'uvvv' => 1, 'dvb' => 1,
'fvt' => 1, 'mxu' => 1, 'm4u' => 1, 'pyv' => 1, 'uvu' => 1, 'uvvu' => 1, 'viv' => 1, 'webm' => 1, 'f4v' => 1, 'fli' => 1, 'flv' => 1, 'm4v' => 1, 'mkv' => 1, 'mk3d' => 1, 'mks' => 1, 'mng' => 1, 'asf' => 1, 'asx' => 1,
'vob' => 1, 'wm' => 1, 'wmv' => 1, 'wmx' => 1, 'wvx' => 1, 'avi' => 1, 'movie' => 1, 'smv' => 1, 'ice' => 1,
);
/**
* @constructor
@ -263,10 +31,6 @@ class EmbedFilter
function __construct()
{
$this->_makeWhiteDomainList();
include FileHandler::getRealPath($this->whiteUrlCacheFile);
$this->whiteUrlList = $whiteUrlList;
$this->whiteIframeUrlList = $whiteIframeUrlList;
}
/**
@ -495,7 +259,7 @@ class EmbedFilter
{
foreach($this->whiteUrlList AS $key => $value)
{
if(preg_match('@^' . preg_quote($value) . '@i', $urlAttribute))
if(preg_match('@^https?://' . preg_quote($value, '@') . '@i', $urlAttribute))
{
return TRUE;
}
@ -514,7 +278,7 @@ class EmbedFilter
{
foreach($this->whiteIframeUrlList AS $key => $value)
{
if(preg_match('@^' . preg_quote($value) . '@i', $urlAttribute))
if(preg_match('@^https?://' . preg_quote($value, '@') . '@i', $urlAttribute))
{
return TRUE;
}
@ -595,109 +359,64 @@ class EmbedFilter
*/
function _makeWhiteDomainList($whitelist = NULL)
{
$whiteUrlXmlFile = FileHandler::getRealPath($this->whiteUrlXmlFile);
$whiteUrlCacheFile = FileHandler::getRealPath($this->whiteUrlCacheFile);
$whiteUrlDefaultFile = FileHandler::getRealPath($this->whiteUrlDefaultFile);
$whiteUrlDefaultList = (include $whiteUrlDefaultFile);
$this->extList = $whiteUrlDefaultList['extensions'];
$this->mimeTypeList = $whiteUrlDefaultList['mime'];
$this->whiteUrlList = array();
$this->whiteIframeUrlList = array();
$isMake = FALSE;
if(!file_exists($whiteUrlCacheFile))
if($whitelist !== NULL)
{
$isMake = TRUE;
}
if(file_exists($whiteUrlCacheFile) && filemtime($whiteUrlCacheFile) < filemtime($whiteUrlXmlFile))
{
$isMake = TRUE;
}
if(gettype($whitelist) == 'array' && gettype($whitelist['object']) == 'array' && gettype($whitelist['iframe']) == 'array')
{
$isMake = FALSE;
}
if(isset($whitelist) && gettype($whitelist) == 'object')
{
$isMake = TRUE;
}
if($isMake)
{
$whiteUrlList = array();
$whiteIframeUrlList = array();
if(gettype($whitelist->object) == 'array' && gettype($whitelist->iframe) == 'array')
if(!is_array($whitelist) || !isset($whitelist['object']) || !isset($whitelist['iframe']))
{
$whiteUrlList = $whitelist->object;
$whiteIframeUrlList = $whitelist->iframe;
$whitelist = array(
'object' => isset($whitelist->object) ? $whitelist->object : array(),
'iframe' => isset($whitelist->iframe) ? $whitelist->iframe : array(),
);
}
else
foreach ($whitelist['object'] as $prefix)
{
$xmlBuff = FileHandler::readFile($this->whiteUrlXmlFile);
$xmlParser = new XmlParser();
$domainListObj = $xmlParser->parse($xmlBuff);
$embedDomainList = $domainListObj->whiteurl->embed->domain;
$iframeDomainList = $domainListObj->whiteurl->iframe->domain;
if(!is_array($embedDomainList)) $embedDomainList = array();
if(!is_array($iframeDomainList)) $iframeDomainList = array();
foreach($embedDomainList AS $key => $value)
{
$patternList = $value->pattern;
if(is_array($patternList))
{
foreach($patternList AS $key => $value)
{
$whiteUrlList[] = $value->body;
}
}
else
{
$whiteUrlList[] = $patternList->body;
}
}
foreach($iframeDomainList AS $key => $value)
{
$patternList = $value->pattern;
if(is_array($patternList))
{
foreach($patternList AS $key => $value)
{
$whiteIframeUrlList[] = $value->body;
}
}
else
{
$whiteIframeUrlList[] = $patternList->body;
}
}
$this->whiteUrlList[] = preg_match('@^https?://(.*)$@i', $prefix, $matches) ? $matches[1] : $prefix;
}
foreach ($whitelist['iframe'] as $prefix)
{
$this->whiteIframeUrlList[] = preg_match('@^https?://(.*)$@i', $prefix, $matches) ? $matches[1] : $prefix;
}
}
else
{
foreach ($whiteUrlDefaultList['object'] as $prefix)
{
$this->whiteUrlList[] = $prefix;
}
foreach ($whiteUrlDefaultList['iframe'] as $prefix)
{
$this->whiteIframeUrlList[] = $prefix;
}
$db_info = Context::getDBInfo();
if($db_info->embed_white_object)
if(isset($db_info->embed_white_object) && count($db_info->embed_white_object))
{
$whiteUrlList = array_merge($whiteUrlList, $db_info->embed_white_object);
foreach ($db_info->embed_white_object as $prefix)
{
$this->whiteUrlList[] = preg_match('@^https?://(.*)$@i', $prefix, $matches) ? $matches[1] : $prefix;
}
}
if($db_info->embed_white_iframe)
if(isset($db_info->embed_white_iframe) && count($db_info->embed_white_iframe))
{
$whiteIframeUrlList = array_merge($whiteIframeUrlList, $db_info->embed_white_iframe);
foreach ($db_info->embed_white_iframe as $prefix)
{
$this->whiteIframeUrlList[] = preg_match('@^https?://(.*)$@i', $prefix, $matches) ? $matches[1] : $prefix;
}
}
$whiteUrlList = array_unique($whiteUrlList);
$whiteIframeUrlList = array_unique($whiteIframeUrlList);
asort($whiteUrlList);
asort($whiteIframeUrlList);
$buff = array();
$buff[] = '<?php if(!defined("__XE__")) exit();';
$buff[] = '$whiteUrlList = ' . var_export($whiteUrlList, TRUE) . ';';
$buff[] = '$whiteIframeUrlList = ' . var_export($whiteIframeUrlList, TRUE) . ';';
FileHandler::writeFile($this->whiteUrlCacheFile, implode(PHP_EOL, $buff));
}
}
$this->whiteUrlList = array_unique($this->whiteUrlList);
$this->whiteIframeUrlList = array_unique($this->whiteIframeUrlList);
natcasesort($this->whiteUrlList);
natcasesort($this->whiteIframeUrlList);
}
}
/* End of file : EmbedFilter.class.php */
/* Location: ./classes/security/EmbedFilter.class.php */

View file

@ -12,11 +12,6 @@ class Purifier
public function __construct()
{
$this->_checkCacheDir();
// purifier setting
require_once _XE_PATH_ . 'classes/security/htmlpurifier/library/HTMLPurifier.auto.php';
require_once 'HTMLPurifier.func.php';
$this->_setConfig();
}

View file

@ -1,90 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<whiteurl>
<embed>
<domain name="http://www.naver.com" isNAVER="true" desc="네이버">
<pattern>http://serviceapi.nmv.naver.com/</pattern>
<pattern>http://scrap.ad.naver.com/</pattern>
<pattern>http://event.dn.naver.com/sbsplayer/vmplayer.xap</pattern>
</domain>
<domain name="" isNAVER="true" desc="네이버 뮤직 서비스">
<pattern>http://musicplayer.naver.com/naverPlayer/posting/</pattern>
<pattern>http://player.music.naver.com/naverPlayer/posting/</pattern>
</domain>
<domain name="http://www.daum.net" desc="다음">
<pattern>http://flvs.daum.net/flvPlayer.swf</pattern>
<pattern>http://api.v.daum.net/</pattern>
<pattern>http://tvpot.daum.net/playlist/playlist.swf</pattern>
<pattern>http://videofarm.daum.net/</pattern>
</domain>
<domain name="http://www.youtube.com" desc="Youtube">
<pattern>http://www.youtube.com/</pattern>
<pattern>https://www.youtube.com/</pattern>
<pattern>http://www.youtube-nocookie.com/</pattern>
<pattern>https://www.youtube-nocookie.com/</pattern>
</domain>
<domain name="http://www.mgoon.com" desc="엠군">
<pattern>http://play.mgoon.com/</pattern>
<pattern>http://doc.mgoon.com/player/</pattern>
</domain>
<domain name="http://www.pandora.tv" desc="판도라TV">
<pattern>http://flvr.pandora.tv/flv2pan/</pattern>
<pattern>http://imgcdn.pandora.tv/gplayer/pandora_EGplayer.swf</pattern>
<pattern>http://imgcdn.pandora.tv/gplayer/flJal.swf</pattern>
</domain>
<domain name="http://www.tagstory.com" desc="태그스토리">
<pattern>http://play.tagstory.com/player/</pattern>
<pattern>http://www.tagstory.com/player/basic/</pattern>
</domain>
<domain name="" desc="싸이월드">
<pattern>http://dbi.video.cyworld.com/v.sk/</pattern>
</domain>
<domain name="" desc="이글루스 동영상">
<pattern>http://v.egloos.com/v.sk/</pattern>
</domain>
<domain name="http://www.nate.com" desc="네이트">
<pattern>http://v.nate.com/v.sk/</pattern>
<pattern>http://w.blogdoc.nate.com/</pattern>
<pattern>http://blogdoc.nate.com/flash/blogdoc_widget_reco.swf</pattern>
</domain>
<domain name="http://www.kbs.co.kr" desc="KBS">
<pattern>http://www.kbs.co.kr/zzim/vmplayer/vmplayer.xap</pattern>
<pattern>http://vmark.kbs.co.kr/zzim/vmplayer/vmplayer.xap</pattern>
</domain>
<domain name="http://www.sbs.co.kr" desc="SBS">
<pattern>http://netv.sbs.co.kr/sbox/</pattern>
<pattern>http://news.sbs.co.kr/</pattern>
<pattern>http://wizard2.sbs.co.kr/</pattern>
<pattern>http://sbsplayer.sbs.co.kr/</pattern>
</domain>
<domain name="http://www.imbc.com" desc="MBC">
<pattern>http://onemore.imbc.com/ClientBin/oneplus.xap</pattern>
</domain>
<domain name="" isNAVER="true" desc="socialsearch">
<pattern>http://static.campaign.naver.com/</pattern>
</domain>
</embed>
<iframe>
<domain name="http://www.youtube.com" desc="유튜브 동영상" mobile="true">
<pattern>http://www.youtube.com/</pattern>
<pattern>https://www.youtube.com/</pattern>
<pattern>http://www.youtube-nocookie.com/</pattern>
<pattern>https://www.youtube-nocookie.com/</pattern>
</domain>
<domain name="http://maps.google.com" desc="구글맵스" mobile="true">
<pattern>http://maps.google.com/</pattern>
<pattern>http://maps.google.co.kr/</pattern>
</domain>
<domain name="http://flvs.daum.net" desc="다음 TV 팟 동영상" mobile="false">
<pattern>http://flvs.daum.net/</pattern>
</domain>
<domain name="http://www.sbs.co.kr" desc="SBS">
<pattern>http://sbsplayer.sbs.co.kr/</pattern>
</domain>
<domain name="http://www.vimeo.com" desc="vimeo.com">
<pattern>http://player.vimeo.com/</pattern>
</domain>
<domain name="http://tvcast.naver.com" isNAVER="true" desc="NAVER TVCAST">
<pattern>http://serviceapi.rmcnmv.naver.com/</pattern>
</domain>
</iframe>
</whiteurl>

File diff suppressed because it is too large Load diff

View file

@ -123,7 +123,7 @@ class TemplateHandler
// store the starting time for debug information
if(__DEBUG__ == 3)
{
$start = getMicroTime();
$start = microtime(true);
}
// initiation
@ -184,7 +184,7 @@ class TemplateHandler
// store the ending time for debug information
if(__DEBUG__ == 3)
{
$GLOBALS['__template_elapsed__'] += getMicroTime() - $start;
$GLOBALS['__template_elapsed__'] += microtime(true) - $start;
}
return $output;

View file

@ -91,7 +91,7 @@ class XmlParser
// Save the compile starting time for debugging
if(__DEBUG__ == 3)
{
$start = getMicroTime();
$start = microtime(true);
}
$this->lang = Context::getLangType();
@ -143,7 +143,7 @@ class XmlParser
// Save compile starting time for debugging
if(__DEBUG__ == 3)
{
$GLOBALS['__xmlparse_elapsed__'] += getMicroTime() - $start;
$GLOBALS['__xmlparse_elapsed__'] += microtime(true) - $start;
}
return $output;

View file

@ -8,4 +8,4 @@ settings:
bootstrap: _bootstrap.php
colors: true
memory_limit: 1024M
error_level: "E_ALL & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED & ~E_NOTICE"
error_level: "E_ALL & ~E_STRICT & ~E_DEPRECATED & ~E_NOTICE"

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,5 +1,5 @@
en,English
ko,한국어
en,English
jp,日本語
zh-CN,中文(中国)
zh-TW,中文(臺灣)

View file

@ -2033,6 +2033,15 @@
<value xml:lang="vi"><![CDATA[Ngày gửi]]></value>
<value xml:lang="mn"><![CDATA[Оруулсан өдөр]]></value>
</item>
<item name="anonymous">
<value xml:lang="ko"><![CDATA[익명]]></value>
<value xml:lang="en"><![CDATA[Anonymous]]></value>
<value xml:lang="jp"><![CDATA[匿名]]></value>
<value xml:lang="zh-CN"><![CDATA[匿名]]></value>
<value xml:lang="zh-TW"><![CDATA[匿名]]></value>
<value xml:lang="tr"><![CDATA[Anonim]]></value>
<value xml:lang="vi"><![CDATA[Anonymous]]></value>
</item>
<item name="last_update">
<value xml:lang="ko"><![CDATA[최근 수정일]]></value>
<value xml:lang="en"><![CDATA[Last Update]]></value>
@ -3963,18 +3972,18 @@
</item>
<item name="license_agreement">
<value xml:lang="ko"><![CDATA[사용권 동의]]></value>
<value xml:lang="en"><![CDATA[License agree]]></value>
<value xml:lang="en"><![CDATA[License Agreement]]></value>
</item>
<item name="license">
<value xml:lang="ko"><![CDATA[<p>Copyright (C) NAVER &lt;http://www.navercorp.com&gt;</p> <p>"XpressEngine (XE)"은 자유 소프트웨어이며, 오픈 소스 프로젝트로 개발되고 있습니다. 자세한 내용은 아래 링크를 참조하시기 바랍니다.</p> <ul> <li>공식 사이트: <a href="http://www.xpressengine.com">http://www.xpressengine.com</a></li> <li>공식 저장소: <a href="http://github.com/xpressengine">http://github.com/xpressengine</a></li> </ul> <p>"XpressEngine (XE)"은 자유 소프트웨어입니다. 소프트웨어의 피양도자는 자유 소프트웨어 재단이 공표한 GNU 약소 일반 공중 사용 허가서 2.1판 또는 그 이후 판을 임의로 선택해서, 그 규정에 따라 소프트웨어를 개작하거나 재배포할 수 있습니다.</p> <p>이 소프트웨어는 유용하게 사용될 수 있으리라는 희망에서 배포되고 있지만, 특정한 목적에 맞는 적합성 여부나 판매용으로 사용할 수 있으리라는 묵시적인 보증을 포함한 어떠한 형태의 보증도 제공하지 않습니다. 보다 자세한 사항에 대해서는 GNU 약소 일반 공중 사용 허가서를 참고하시기 바랍니다.</p> <p>GNU 약소 일반 공중 사용 허가서는 이 라이브러리와 함께 제공됩니다. 만약, 이 문서가 누락되어 있다면 자유 소프트웨어 재단으로 문의하시기 바랍니다. (자유 소프트웨어 재단: Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA)</p> <ul> <li>한국어 번역문 (비공식) : <a href="http://korea.gnu.org/people/chsong/copyleft/lgpl.ko.html" target="_blank">GNU Lesser General Public License, version 2.1</a></li> <li>영문 (공식 원본) : <a href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html" target="_blank">GNU Lesser General Public License, version 2.1</a></li> </ul>]]></value>
<value xml:lang="en"><![CDATA[<p>Copyright (C) NAVER &lt;http://www.navercorp.com&gt;</p> <p>"XpressEngine (XE)" is an opensource and being developed in the opensource project. For more information, please see the link below.</p> <ul> <li>Official website: <a href="http://www.xpressengine.com">http://www.xpressengine.com</a></li> <li>Official Repository: <a href="http://github.com/xpressengine">http://github.com/xpressengine</a></li> </ul> <p>"XpressEngine (XE)" is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.</p> <p>This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.</p> <p>You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</p> <ul> <li>License : <a href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html" target="_blank">GNU Lesser General Public License, version 2.1</a></li> </ul>]]></value>
<value xml:lang="ko"><![CDATA[LGPL v2.1]]></value>
<value xml:lang="en"><![CDATA[LGPL v2.1]]></value>
</item>
<item name="cmd_license_agree">
<value xml:lang="ko"><![CDATA[사용권에 대해 이해했으며, 이에 동의합니다.]]></value>
<value xml:lang="en"><![CDATA[I understand the license. I agree.]]></value>
<value xml:lang="en"><![CDATA[I understand the license, and I accept it.]]></value>
</item>
<item name="msg_must_accept_license_agreement">
<value xml:lang="ko"><![CDATA[사용권에 동의해야 설치할 수 있습니다.]]></value>
<value xml:lang="en"><![CDATA[You must accept the license agreement]]></value>
<value xml:lang="ko"><![CDATA[사용권에 동의해야 설치를 진행할 수 있습니다.]]></value>
<value xml:lang="en"><![CDATA[You must accept the license agreement in order to continue.]]></value>
</item>
</lang>

View file

@ -1,18 +1,35 @@
{
"name": "xpressengine/xe-core",
"license": "GNU LGPL",
"name": "xetown/xe-core",
"description": "XpressEngine XETOWN Remix",
"homepage": "https://www.xetown.com/",
"license": "LGPL-2.1",
"type": "project",
"authors": [
{
"name": "NAVER",
"email": "developers@xpressengine.com"
}
{ "name": "NAVER", "email": "developers@xpressengine.com" },
{ "name": "XETOWN Contributors" }
],
"require": {
"php": ">=5.4.0"
"php": ">=5.3.0",
"ext-curl": "*",
"ext-gd": "*",
"ext-iconv": "*",
"ext-json": "*",
"ext-mbstring": "*",
"ext-mcrypt": "*",
"ext-openssl": "*",
"ext-pcre": "*",
"ext-xml": "*",
"defuse/php-encryption": "1.2.1",
"ezyang/htmlpurifier": "4.7.*",
"matthiasmullie/minify": "1.3.*",
"michelf/php-markdown": "1.5.*",
"rmccue/requests": "1.6.*",
"sunra/php-simple-html-dom-parser": "1.5.*"
},
"require-dev": {
"codeception/codeception": "~2.0",
"codeception/verify": "0.2.*",
"php": ">=5.4.0",
"codeception/codeception": "2.1.*",
"codeception/verify": "0.3.*",
"codeception/specify": "0.4.*"
}
}

369
composer.lock generated Normal file
View file

@ -0,0 +1,369 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "8649ea9e0951fe7dd685f9bb14e4a17d",
"content-hash": "0276b439721108d097fff978f7ee1c93",
"packages": [
{
"name": "defuse/php-encryption",
"version": "v1.2.1",
"source": {
"type": "git",
"url": "https://github.com/defuse/php-encryption.git",
"reference": "b87737b2eec06b13f025cabea847338fa203d1b4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/defuse/php-encryption/zipball/b87737b2eec06b13f025cabea847338fa203d1b4",
"reference": "b87737b2eec06b13f025cabea847338fa203d1b4",
"shasum": ""
},
"require": {
"ext-mcrypt": "*",
"ext-openssl": "*",
"php": ">=5.4.0"
},
"type": "library",
"autoload": {
"files": [
"Crypto.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Taylor Hornby",
"email": "havoc@defuse.ca"
}
],
"description": "Secure PHP Encryption Library",
"keywords": [
"aes",
"cipher",
"encryption",
"mcrypt",
"security"
],
"time": "2015-03-14 20:27:45"
},
{
"name": "ezyang/htmlpurifier",
"version": "v4.7.0",
"source": {
"type": "git",
"url": "https://github.com/ezyang/htmlpurifier.git",
"reference": "ae1828d955112356f7677c465f94f7deb7d27a40"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/ae1828d955112356f7677c465f94f7deb7d27a40",
"reference": "ae1828d955112356f7677c465f94f7deb7d27a40",
"shasum": ""
},
"require": {
"php": ">=5.2"
},
"type": "library",
"autoload": {
"psr-0": {
"HTMLPurifier": "library/"
},
"files": [
"library/HTMLPurifier.composer.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL"
],
"authors": [
{
"name": "Edward Z. Yang",
"email": "admin@htmlpurifier.org",
"homepage": "http://ezyang.com"
}
],
"description": "Standards compliant HTML filter written in PHP",
"homepage": "http://htmlpurifier.org/",
"keywords": [
"html"
],
"time": "2015-08-05 01:03:42"
},
{
"name": "matthiasmullie/minify",
"version": "1.3.30",
"source": {
"type": "git",
"url": "https://github.com/matthiasmullie/minify.git",
"reference": "0cd5108683e7376e795555ced56229c4c16597aa"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/matthiasmullie/minify/zipball/0cd5108683e7376e795555ced56229c4c16597aa",
"reference": "0cd5108683e7376e795555ced56229c4c16597aa",
"shasum": ""
},
"require": {
"ext-pcre": "*",
"matthiasmullie/path-converter": "~1.0",
"php": ">=5.3.0"
},
"require-dev": {
"matthiasmullie/scrapbook": "~1.0",
"phpunit/phpunit": "~4.8",
"satooshi/php-coveralls": "~1.0"
},
"bin": [
"bin/minifycss",
"bin/minifyjs"
],
"type": "library",
"autoload": {
"psr-4": {
"MatthiasMullie\\Minify\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Matthias Mullie",
"email": "minify@mullie.eu",
"homepage": "http://www.mullie.eu",
"role": "Developer"
}
],
"description": "CSS & JS minifier",
"homepage": "http://www.minifier.org",
"keywords": [
"JS",
"css",
"javascript",
"minifier",
"minify"
],
"time": "2016-01-05 07:43:18"
},
{
"name": "matthiasmullie/path-converter",
"version": "1.0.6",
"source": {
"type": "git",
"url": "https://github.com/matthiasmullie/path-converter.git",
"reference": "9f83d0c398dbe70f45f5840d95ffad73d5efd35f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/matthiasmullie/path-converter/zipball/9f83d0c398dbe70f45f5840d95ffad73d5efd35f",
"reference": "9f83d0c398dbe70f45f5840d95ffad73d5efd35f",
"shasum": ""
},
"require": {
"ext-pcre": "*",
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "~4.8",
"satooshi/php-coveralls": "~1.0"
},
"type": "library",
"autoload": {
"psr-4": {
"MatthiasMullie\\PathConverter\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Matthias Mullie",
"email": "pathconverter@mullie.eu",
"homepage": "http://www.mullie.eu",
"role": "Developer"
}
],
"description": "Relative path converter",
"homepage": "http://github.com/matthiasmullie/path-converter",
"keywords": [
"converter",
"path",
"paths",
"relative"
],
"time": "2016-01-05 07:45:30"
},
{
"name": "michelf/php-markdown",
"version": "1.5.0",
"source": {
"type": "git",
"url": "https://github.com/michelf/php-markdown.git",
"reference": "e1aabe18173231ebcefc90e615565742fc1c7fd9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/michelf/php-markdown/zipball/e1aabe18173231ebcefc90e615565742fc1c7fd9",
"reference": "e1aabe18173231ebcefc90e615565742fc1c7fd9",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-lib": "1.4.x-dev"
}
},
"autoload": {
"psr-0": {
"Michelf": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "John Gruber",
"homepage": "http://daringfireball.net/"
},
{
"name": "Michel Fortin",
"email": "michel.fortin@michelf.ca",
"homepage": "https://michelf.ca/",
"role": "Developer"
}
],
"description": "PHP Markdown",
"homepage": "https://michelf.ca/projects/php-markdown/",
"keywords": [
"markdown"
],
"time": "2015-03-01 12:03:08"
},
{
"name": "rmccue/requests",
"version": "v1.6.1",
"source": {
"type": "git",
"url": "https://github.com/rmccue/Requests.git",
"reference": "6aac485666c2955077d77b796bbdd25f0013a4ea"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/rmccue/Requests/zipball/6aac485666c2955077d77b796bbdd25f0013a4ea",
"reference": "6aac485666c2955077d77b796bbdd25f0013a4ea",
"shasum": ""
},
"require": {
"php": ">=5.2"
},
"require-dev": {
"satooshi/php-coveralls": "dev-master"
},
"type": "library",
"autoload": {
"psr-0": {
"Requests": "library/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"ISC"
],
"authors": [
{
"name": "Ryan McCue",
"homepage": "http://ryanmccue.info"
}
],
"description": "A HTTP library written in PHP, for human beings.",
"homepage": "http://github.com/rmccue/Requests",
"keywords": [
"curl",
"fsockopen",
"http",
"idna",
"ipv6",
"iri",
"sockets"
],
"time": "2014-05-18 04:59:02"
},
{
"name": "sunra/php-simple-html-dom-parser",
"version": "v1.5.0",
"source": {
"type": "git",
"url": "https://github.com/sunra/php-simple-html-dom-parser.git",
"reference": "a0b80ace086c7e09085669205e1b3c2c9c7a453c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sunra/php-simple-html-dom-parser/zipball/a0b80ace086c7e09085669205e1b3c2c9c7a453c",
"reference": "a0b80ace086c7e09085669205e1b3c2c9c7a453c",
"shasum": ""
},
"require": {
"php": ">=5.3.2"
},
"type": "library",
"autoload": {
"psr-0": {
"Sunra\\PhpSimple\\HtmlDomParser": "Src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "sunra",
"email": "sunra@yandex.ru",
"homepage": "http://github.com/sunra"
}
],
"description": "Composer adaptation of: A HTML DOM parser written in PHP5+ let you manipulate HTML in a very easy way! Require PHP 5+. Supports invalid HTML. Find tags on an HTML page with selectors just like jQuery. Extract contents from HTML in a single line.",
"homepage": "https://github.com/sunra/php-simple-html-dom-parser",
"keywords": [
"dom",
"html",
"parser"
],
"time": "2013-05-04 14:32:03"
}
],
"packages-dev": null,
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": ">=5.3.0",
"ext-curl": "*",
"ext-gd": "*",
"ext-iconv": "*",
"ext-json": "*",
"ext-mbstring": "*",
"ext-mcrypt": "*",
"ext-openssl": "*",
"ext-pcre": "*",
"ext-xml": "*"
},
"platform-dev": []
}

View file

@ -9,11 +9,11 @@
*/
if(version_compare(PHP_VERSION, '5.4.0', '<'))
{
@error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED ^ E_WARNING);
@error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED);
}
else
{
@error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED ^ E_WARNING ^ E_STRICT);
@error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED ^ E_STRICT);
}
if(!defined('__XE__'))
@ -305,7 +305,7 @@ if(version_compare(PHP_VERSION, '5.3.0') >= 0)
require(_XE_PATH_ . 'config/func.inc.php');
if(__DEBUG__) {
define('__StartTime__', getMicroTime());
define('__StartTime__', microtime(true));
}
if(__DEBUG__) {
@ -412,7 +412,7 @@ $GLOBALS['__xe_autoload_file_map'] = array_change_key_case(array(
function __xe_autoload($class_name)
{
if(__DEBUG__) {
$time_at = getMicroTime();
$time_at = microtime(true);
}
if(isset($GLOBALS['__xe_autoload_file_map'][strtolower($class_name)]))
@ -436,7 +436,7 @@ function __xe_autoload($class_name)
}
if(__DEBUG__) {
$GLOBALS['__elapsed_class_load__'] += getMicroTime() - $time_at;
$GLOBALS['__elapsed_class_load__'] += microtime(true) - $time_at;
}
}
spl_autoload_register('__xe_autoload');

View file

@ -14,12 +14,18 @@ if(!defined('__XE__'))
// define an empty function to avoid errors when iconv function doesn't exist
if(!function_exists('iconv'))
{
eval('
function iconv($in_charset, $out_charset, $str)
function iconv($in_charset, $out_charset, $str)
{
if(function_exists('mb_convert_encoding'))
{
$out_charset = preg_replace('#//.+$#', '', $out_charset);
return mb_convert_encoding($str, $out_charset, $in_charset);
}
else
{
return $str;
}
');
}
}
/**
@ -27,45 +33,47 @@ if(!function_exists('iconv'))
* @var array
*/
$time_zone = array(
'-1200' => '[GMT -12:00] Baker Island Time',
'-1100' => '[GMT -11:00] Niue Time, Samoa Standard Time',
'-1000' => '[GMT -10:00] Hawaii-Aleutian Standard Time, Cook Island Time',
'-0930' => '[GMT -09:30] Marquesas Islands Time',
'-0900' => '[GMT -09:00] Alaska Standard Time, Gambier Island Time',
'-0800' => '[GMT -08:00] Pacific Standard Time',
'-0700' => '[GMT -07:00] Mountain Standard Time',
'-0600' => '[GMT -06:00] Central Standard Time',
'-0500' => '[GMT -05:00] Eastern Standard Time',
'-0400' => '[GMT -04:00] Atlantic Standard Time',
'-0330' => '[GMT -03:30] Newfoundland Standard Time',
'-0300' => '[GMT -03:00] Amazon Standard Time, Central Greenland Time',
'-0200' => '[GMT -02:00] Fernando de Noronha Time, South Georgia &amp; the South Sandwich Islands Time',
'-0100' => '[GMT -01:00] Azores Standard Time, Cape Verde Time, Eastern Greenland Time',
'0000' => '[GMT 00:00] Western European Time, Greenwich Mean Time',
'+0100' => '[GMT +01:00] Central European Time, West African Time',
'+0200' => '[GMT +02:00] Eastern European Time, Central African Time',
'+0300' => '[GMT +03:00] Moscow Standard Time, Eastern African Time',
'+0330' => '[GMT +03:30] Iran Standard Time',
'+0400' => '[GMT +04:00] Gulf Standard Time, Samara Standard Time',
'+0430' => '[GMT +04:30] Afghanistan Time',
'+0500' => '[GMT +05:00] Pakistan Standard Time, Yekaterinburg Standard Time',
'+0530' => '[GMT +05:30] Indian Standard Time, Sri Lanka Time',
'+0545' => '[GMT +05:45] Nepal Time',
'+0600' => '[GMT +06:00] Bangladesh Time, Bhutan Time, Novosibirsk Standard Time',
'+0630' => '[GMT +06:30] Cocos Islands Time, Myanmar Time',
'+0700' => '[GMT +07:00] Indochina Time, Krasnoyarsk Standard Time',
'+0800' => '[GMT +08:00] China Standard Time, Australian Western Standard Time, Irkutsk Standard Time',
'+0845' => '[GMT +08:45] Southeastern Western Australia Standard Time',
'+0900' => '[GMT +09:00] Korea Standard Time, Japan Standard Time',
'+0930' => '[GMT +09:30] Australian Central Standard Time',
'+1000' => '[GMT +10:00] Australian Eastern Standard Time, Vladivostok Standard Time',
'+1030' => '[GMT +10:30] Lord Howe Standard Time',
'+1100' => '[GMT +11:00] Solomon Island Time, Magadan Standard Time',
'+1130' => '[GMT +11:30] Norfolk Island Time',
'+1200' => '[GMT +12:00] New Zealand Time, Fiji Time, Kamchatka Standard Time',
'+1245' => '[GMT +12:45] Chatham Islands Time',
'+1300' => '[GMT +13:00] Tonga Time, Phoenix Islands Time',
'+1400' => '[GMT +14:00] Line Island Time'
'-1200' => '[UTC -12:00] Baker Island',
'-1100' => '[UTC -11:00] Niue, American Samoa',
'-1000' => '[UTC -10:00] Hawaii, Aleutian Islands, Cook Islands',
'-0930' => '[UTC -09:30] Marquesas Islands',
'-0900' => '[UTC -09:00] Alaska, Gambier Islands',
'-0800' => '[UTC -08:00] U.S. and Canada (Pacific)',
'-0700' => '[UTC -07:00] U.S. and Canada (Mountain)',
'-0600' => '[UTC -06:00] U.S. and Canada (Central), Mexico',
'-0500' => '[UTC -05:00] U.S. and Canada (Eastern), Chile',
'-0430' => '[UTC -04:30] Venezuela',
'-0400' => '[UTC -04:00] Canada (Atlantic), Brazil (Western)',
'-0330' => '[UTC -03:30] Canada (Newfoundland)',
'-0300' => '[UTC -03:00] Argentina, Brazil (Eastern), Greenland',
'-0200' => '[UTC -02:00] Fernando de Noronha, South Georgia &amp; South Sandwich Islands',
'-0100' => '[UTC -01:00] Azores, Cape Verde',
'0000' => '[UTC ±00:00] GMT, Ireland, Portugal, West Africa',
'+0100' => '[UTC +01:00] Central Europe, West Africa',
'+0200' => '[UTC +02:00] Eastern Europe, Central Africa, Russia (Kaliningrad)',
'+0300' => '[UTC +03:00] Russia (Moscow), East Africa',
'+0330' => '[UTC +03:30] Iran',
'+0400' => '[UTC +04:00] Armenia, Azerbaijan, Georgia, Oman, Russia (Samara), UAE',
'+0430' => '[UTC +04:30] Afghanistan',
'+0500' => '[UTC +05:00] Pakistan, Russia (Yekaterinburg), Central Asia',
'+0530' => '[UTC +05:30] India, Sri Lanka',
'+0545' => '[UTC +05:45] Nepal',
'+0600' => '[UTC +06:00] Bangladesh, Bhutan, Kyrgyzstan, Russia (Omsk)',
'+0630' => '[UTC +06:30] Cocos Islands, Myanmar',
'+0700' => '[UTC +07:00] Cambodia, Indonesia, Laos, Russia (Krasnoyarsk), Thailand, Vietnam',
'+0800' => '[UTC +08:00] China, Malaysia, Philippines, Russia (Irkutsk), Singapore, Taiwan',
'+0830' => '[UTC +08:30] North Korea',
'+0845' => '[UTC +08:45] Australia (Eucla)',
'+0900' => '[UTC +09:00] Korea, Japan, Palua, East Timor, Russia (Yakutsk)',
'+0930' => '[UTC +09:30] Australia (Central)',
'+1000' => '[UTC +10:00] Australia (Eastern), Guam, Russia (Vladivostok)',
'+1030' => '[UTC +10:30] Lord Howe Island',
'+1100' => '[UTC +11:00] New Caledonia, Solomon Islands, Vanuatu, Russia (Srednekolymsk)',
'+1130' => '[UTC +11:30] Norfolk Island (before 2015)',
'+1200' => '[UTC +12:00] Fiji, New Zealand, Russia (Kamchatka)',
'+1245' => '[UTC +12:45] Chatham Islands',
'+1300' => '[UTC +13:00] Samoa, Tokelau, Tonga, Phoenix Islands',
'+1400' => '[UTC +14:00] Line Islands'
);
/**
@ -965,8 +973,7 @@ function flushSlowlog()
*/
function getMicroTime()
{
list($time1, $time2) = explode(' ', microtime());
return (float) $time1 + (float) $time2;
return microtime(true);
}
/**

View file

@ -549,17 +549,24 @@ class adminAdminController extends admin
$white_object = preg_replace("/[\r\n|\r|\n]+/", '|@|', $white_object);
$white_object = preg_replace("/[\s\'\"]+/", '', $white_object);
$white_object = explode('|@|', $white_object);
$white_object = array_unique($white_object);
$white_object = array_unique(array_map(function($item) {
return preg_match('@^https?://(.*)$@i', $item, $matches) ? $matches[1] : $item;
}, $white_object));
natcasesort($white_object);
$white_iframe = $vars->embed_white_iframe;
$white_iframe = preg_replace("/[\r\n|\r|\n]+/", '|@|', $white_iframe);
$white_iframe = preg_replace("/[\s\'\"]+/", '', $white_iframe);
$white_iframe = explode('|@|', $white_iframe);
$white_iframe = array_unique($white_iframe);
$white_iframe = array_unique(array_map(function($item) {
return preg_match('@^https?://(.*)$@i', $item, $matches) ? $matches[1] : $item;
}, $white_iframe));
natcasesort($white_iframe);
$whitelist = new stdClass;
$whitelist->object = $white_object;
$whitelist->iframe = $white_iframe;
$whitelist = array(
'object' => $white_object,
'iframe' => $white_iframe,
);
$db_info->embed_white_object = $white_object;
$db_info->embed_white_iframe = $white_iframe;
@ -570,10 +577,6 @@ class adminAdminController extends admin
return new Object(-1, 'msg_invalid_request');
}
require_once(_XE_PATH_ . 'classes/security/EmbedFilter.class.php');
$oEmbedFilter = EmbedFilter::getInstance();
$oEmbedFilter->_makeWhiteDomainList($whitelist);
if(!in_array(Context::getRequestMethod(), array('XMLRPC','JSON')))
{
$returnUrl = Context::get('success_return_url');

View file

@ -84,7 +84,6 @@ class adminAdminView extends admin
Context::set('https_port', $db_info->https_port);
}
$this->showSendEnv();
$this->checkEasyinstall();
}
@ -390,16 +389,6 @@ class adminAdminView extends admin
$oSecurity = new Security();
$oSecurity->encodeHTML('module_list..', 'module_list..author..', 'newVersionList..');
// gathering enviroment check
$mainVersion = join('.', array_slice(explode('.', __XE_VERSION__), 0, 2));
$path = FileHandler::getRealPath('./files/env/' . $mainVersion);
$isEnviromentGatheringAgreement = FALSE;
if(file_exists($path))
{
$isEnviromentGatheringAgreement = TRUE;
}
Context::set('isEnviromentGatheringAgreement', $isEnviromentGatheringAgreement);
// license agreement check
$isLicenseAgreement = FALSE;
$path = FileHandler::getRealPath('./files/env/license_agreement');
@ -471,7 +460,6 @@ class adminAdminView extends admin
Context::set('htmlFooter', htmlspecialchars($config->htmlFooter));
// embed filter
require_once(_XE_PATH_ . 'classes/security/EmbedFilter.class.php');
$oEmbedFilter = EmbedFilter::getInstance();
context::set('embed_white_object', implode(PHP_EOL, $oEmbedFilter->whiteUrlList));
context::set('embed_white_iframe', implode(PHP_EOL, $oEmbedFilter->whiteIframeUrlList));
@ -524,46 +512,6 @@ class adminAdminView extends admin
$this->setTemplateFile('admin_setup');
}
/**
* Enviroment information send to XE collect server
* @return void
*/
function showSendEnv()
{
if(Context::getResponseMethod() != 'HTML')
{
return;
}
$server = 'http://collect.xpressengine.com/env/img.php?';
$path = './files/env/';
$install_env = $path . 'install';
$mainVersion = join('.', array_slice(explode('.', __XE_VERSION__), 0, 2));
if(file_exists(FileHandler::getRealPath($install_env)))
{
$oAdminAdminModel = getAdminModel('admin');
$params = $oAdminAdminModel->getEnv('INSTALL');
$img = sprintf('<img src="%s" alt="" style="height:0px;width:0px" />', $server . $params);
Context::addHtmlFooter($img);
FileHandler::writeFile($path . $mainVersion, '1');
}
else if(isset($_SESSION['enviroment_gather']) && !file_exists(FileHandler::getRealPath($path . $mainVersion)))
{
if($_SESSION['enviroment_gather'] == 'Y')
{
$oAdminAdminModel = getAdminModel('admin');
$params = $oAdminAdminModel->getEnv();
$img = sprintf('<img src="%s" alt="" style="height:0px;width:0px" />', $server . $params);
Context::addHtmlFooter($img);
}
FileHandler::writeFile($path . $mainVersion, '1');
unset($_SESSION['enviroment_gather']);
}
}
/**
* Retrun server environment to XML string
* @return object

View file

@ -910,11 +910,17 @@
<value xml:lang="tr"><![CDATA[Kısa bir adres kullanmak istiyor musunuz?]]></value>
</item>
<item name="timezone">
<value xml:lang="ko"><![CDATA[현지 표준시]]></value>
<value xml:lang="en"><![CDATA[The local standard time.]]></value>
<value xml:lang="jp"><![CDATA[現地の標準時間]]></value>
<value xml:lang="zh-CN"><![CDATA[设置本地时间.]]></value>
<value xml:lang="tr"><![CDATA[Yerel Zamanı ayarlayın.]]></value>
<value xml:lang="ko"><![CDATA[표준 시간대]]></value>
<value xml:lang="en"><![CDATA[Time Zone]]></value>
<value xml:lang="jp"><![CDATA[標準時間帯]]></value>
<value xml:lang="zh-CN"><![CDATA[时区]]></value>
<value xml:lang="zh-TW"><![CDATA[時區]]></value>
<value xml:lang="fr"><![CDATA[Fuseau horaire]]></value>
<value xml:lang="es"><![CDATA[Huso horario]]></value>
<value xml:lang="de"><![CDATA[Zeitzone]]></value>
<value xml:lang="ru"><![CDATA[Часовой пояс]]></value>
<value xml:lang="tr"><![CDATA[Saat Dilimi]]></value>
<value xml:lang="vi"><![CDATA[Múi giờ]]></value>
</item>
<item name="use_mobile_view">
<value xml:lang="ko"><![CDATA[모바일 뷰 사용]]></value>

View file

@ -38,18 +38,6 @@
</div>
</form>
<form action="./" method="post" class="message info x_clearfix" cond="!$isEnviromentGatheringAgreement">
<input type="hidden" name="module" value="admin" />
<input type="hidden" name="act" value="procAdminEnviromentGatheringAgreement" />
<input type="hidden" name="xe_validator_id" value="modules/admin/tpl/index/1" />
<h2>{$lang->install_env_agreement}</h2>
<p>{$lang->install_env_agreement_desc}</p>
<div class="x_btn-group x_pull-right" style="margin-bottom:10px">
<button type="submit" name="is_agree" value="false" class="x_btn x_btn-small">{$lang->disagree}</button>
<button type="submit" name="is_agree" value="true" class="x_btn x_btn-small x_btn-primary">{$lang->agree}</button>
</div>
</form>
<div class="message update" cond="$addTables || $needUpdate">
<h2 cond="$needUpdate && $addTables">{$lang->need_update_and_table}</h2>
<h2 cond="$needUpdate && !$addTables">{$lang->need_update}</h2>

View file

@ -18,8 +18,8 @@
<description xml:lang="ru">Вы можете присоединить опрос при написании статей. Компонент опросов зависит от настроек модуля отпросов.</description>
<description xml:lang="zh-TW">發表主題時可以附加投票調查。投票調查組件受投票調查模組設置的影響。</description>
<description xml:lang="tr">Oylamaları yazı makalelerine ekleyebilirsiniz. Oylama bileşeni, oylama modülü ayarlarından ayarlanır.</description>
<version>1.7</version>
<date>2013-11-27</date>
<version>2.0</version>
<date>2015-06-09</date>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="vi">NAVER</name>

View file

@ -82,6 +82,30 @@
<value xml:lang="en"><![CDATA[Delete last item]]></value>
<value xml:lang="jp"><![CDATA[最後の項目削除]]></value>
</item>
<item name="poll_display_memberinfo">
<value xml:lang="ko"><![CDATA[공개 투표]]></value>
<value xml:lang="en"><![CDATA[Open ballot]]></value>
</item>
<item name="poll_display_memberinfo_yes">
<value xml:lang="ko"><![CDATA[투표한 사용자 공개]]></value>
<value xml:lang="en"><![CDATA[Display who votes]]></value>
</item>
<item name="poll_display_memberinfo_no">
<value xml:lang="ko"><![CDATA[투표한 사용자 비공개]]></value>
<value xml:lang="en"><![CDATA[Do not display who votes]]></value>
</item>
<item name="poll_ableto_additems">
<value xml:lang="ko"><![CDATA[항목 추가]]></value>
<value xml:lang="en"><![CDATA[Able to add items]]></value>
</item>
<item name="poll_ableto_additems_yes">
<value xml:lang="ko"><![CDATA[항목 추가 가능]]></value>
<value xml:lang="en"><![CDATA[Voters can add items]]></value>
</item>
<item name="poll_ableto_additems_no">
<value xml:lang="ko"><![CDATA[항목 추가 금지]]></value>
<value xml:lang="en"><![CDATA[Voters cannot add items]]></value>
</item>
<item name="msg_poll_cannot_modify">
<value xml:lang="ko"><![CDATA[설문조사는 수정할 수 없습니다. 삭제 후 다시 생성해야 합니다.]]></value>
<value xml:lang="en"><![CDATA[You cannot modify the poll. You need to delete it and create a new one.]]></value>

View file

@ -27,7 +27,7 @@ class poll_maker extends EditorHandler
{
// Wanted Skins survey
$oModuleModel = getModel('module');
$skin_list = $oModuleModel->getSkins(_XE_PATH_ . 'modules/poll/');
$skin_list = $oModuleModel->getSkins(_XE_PATH_ . 'widgets/pollWidget/');
Context::set('skin_list', $skin_list);
// Pre-compiled source code to compile template return to
$tpl_path = $this->component_path.'tpl';
@ -45,17 +45,29 @@ class poll_maker extends EditorHandler
*/
function transHTML($xml_obj)
{
$poll_srl = $xml_obj->attrs->poll_srl;
$args = new stdClass();
$args->poll_srl = $xml_obj->attrs->poll_srl;
$skin = $xml_obj->attrs->skin;
if(!$skin) $skin = 'default';
$args->skin = $skin;
preg_match('/width([^[:digit:]]+)([0-9]+)/i',$xml_obj->attrs->style,$matches);
$width = $matches[2];
if(!$width) $width = 400;
$style = sprintf('width:%dpx', $width);
// poll model object creation to come get it return html
$oPollModel = getModel('poll');
return $oPollModel->getPollHtml($poll_srl, $style, $skin);
$args->style = sprintf('width:%dpx', $width);
// Set a path of the template skin (values of skin, colorset settings)
$tpl_path = sprintf('%sskins/%s', _XE_PATH_ . 'widgets/pollWidget/', $args->skin);
$tpl_file = 'pollview';
Context::set('colorset', $args->colorset);
Context::set('poll_srl', $args->poll_srl);
Context::set('style', $args->style);
// Compile a template
$oTemplate = &TemplateHandler::getInstance();
return $oTemplate->compile($tpl_path, $tpl_file);
}
}
/* End of file poll_maker.class.php */

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View file

@ -18,8 +18,8 @@
<div class="x_control-group">
<label for="" class="x_control-label">{$lang->poll_stop_date}</label>
<div class="x_controls">
<input type="hidden" name="stop_date" id="stop_date" value="{date('Ymd',time()+60*60*24*7)}" />
<input type="date" class="inputDate" value="{date('Y-m-d',time()+60*60*24*7)}" />
<input type="hidden" name="stop_date" id="stop_date" value="{date('Ymd',time()+60*60*24*30)}" />
<input type="date" class="inputDate" value="{date('Y-m-d',time()+60*60*24*30)}" />
<script>
(function($){
$(function(){
@ -31,7 +31,7 @@ $(function(){
, onSelect:function(){
$(this).prev('input[type="hidden"]').val(this.value.replace(/-/g,""));
}
,minDate: new Date("{date('Y-m-d',time())}")
,minDate: new Date("{date('Y-m-d',time()+60*60*24*30)}")
};
$.extend(option,$.datepicker.regional['{$lang_type}']);
$(".inputDate").datepicker(option);
@ -42,15 +42,30 @@ $(function(){
</div>
</div>
<div class="x_control-group">
<label for="" class="x_control-label">{$lang->skin}</label>
<label for="skin" class="x_control-label">{$lang->skin}</label>
<div class="x_controls">
<select name="skin">
<select id="skin" name="skin">
<!--@foreach($skin_list as $skin=>$skin_info)-->
<option value="{$skin}">{$skin_info->title} (skin by {$skin_info->maker->name})</option>
<option value="{$skin}">{$skin_info->title} (skin by <!--@foreach($skin_info->author as $author=>$author_info)-->{@ $authorname = array(); $authorname[] = $author_info->name; }<!--@end-->{implode(",",$authorname)})</option>
<!--@end-->
</select>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label">{$lang->poll_display_memberinfo}</label>
<div class="x_controls">
<input type="radio" name="show_vote" value="1" id="poll_display_memberinfo_yes" /> <label class="x_inline" for="poll_display_memberinfo_yes">{$lang->poll_display_memberinfo_yes}</label>
<input type="radio" name="show_vote" value="0" checked="checked" id="poll_display_memberinfo_no" /> <label class="x_inline" for="poll_display_memberinfo_no">{$lang->poll_display_memberinfo_no}</label>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label">{$lang->poll_ableto_additems}</label>
<div class="x_controls">
<input type="radio" name="add_item" value="2" id="poll_ableto_additems_yes" /> <label class="x_inline" for="poll_ableto_additems_yes">{$lang->poll_ableto_additems_yes}</label>
<input type="radio" name="add_item" value="0" checked="checked" id="poll_ableto_additems_no" /> <label class="x_inline" for="poll_ableto_additems_no">{$lang->poll_ableto_additems_no}</label>
</div>
</div>
<div id="poll_source" style="display:none">
<div class="table">
<table class="x_table x_table-striped x_table-hover">

View file

@ -16,7 +16,6 @@ function completeInsertPoll(ret_obj) {
if(!poll_srl) return null;
var text = "<img src=\"../../../../common/img/blank.gif\" poll_srl=\""+poll_srl+"\" editor_component=\"poll_maker\" skin=\""+skin+"\" style=\"display:block;width:400px;height:300px;border:2px dotted #4371B9;background:url(./modules/editor/components/poll_maker/tpl/poll_maker_component.gif) no-repeat center;\" />";
alert(ret_obj['message']);
opener.editorFocus(opener.editorPrevSrl);

View file

@ -0,0 +1 @@
function completeInsertPoll(e){if("undefined"==typeof opener)return null;var t=get_by_id("fo_component"),o=t.skin.options[t.skin.selectedIndex].value,n=e.poll_srl;if(!n)return null;var l='<img src="../../../../common/img/blank.gif" poll_srl="'+n+'" editor_component="poll_maker" skin="'+o+'" style="display:block;width:400px;height:300px;border:2px dotted #4371B9;background:url(./modules/editor/components/poll_maker/tpl/poll_maker_component.gif) no-repeat center;" />';alert(e.message),opener.editorFocus(opener.editorPrevSrl);var i=opener.editorGetIFrame(opener.editorPrevSrl);return opener.editorReplaceHTML(i,l),opener.editorFocus(opener.editorPrevSrl),window.close(),null}jQuery(function(e){function t(){var t=e(".poll_box");$inputs=t.find("input"),poll_idx=0,$inputs.attr("name",function(e,t){return/^checkcount_/.test(t)&&poll_idx++,t.replace(/^([a-z]+_)(?:tidx|\d+)/,"$1"+poll_idx)}),t.length>1?t.find("button._del_poll").show():t.find("button._del_poll").hide()}function o(){var o=e("#poll_source");o.before(o.clone(!0).removeAttr("id").addClass("poll_box").css("display","block")),t()}var n;return n=e(opener.editorPrevNode),n.length&&"poll_maker"==n.attr("editor_component")?(alert(msg_poll_cannot_modify),window.close()):(e("#add_poll").click(function(){o(),setFixedPopupSize()}),e("button._add_item").click(function(){var t,o,n;t=e(this).prev().children("table").find(">tbody>tr:last"),o=t.clone(),match=t.find("td>input").attr("name").match(/item_(\d+)_(\d+)$/),match&&(match[2]++,(n=o.find("th")).html(n.html().replace(/ \d+/," "+match[2])),o.find("td>input").attr("name","item_"+match[1]+"_"+match[2]),t.after(o),setFixedPopupSize())}),e("button._del_item").click(function(){var t,o;t=e(this).prevAll("div").children("table").find(">tbody>tr:last"),o=t.find("td>input").attr("name").match(/item_(\d+)_(\d+)/),o&&2!=o[2]&&(t.remove(),setFixedPopupSize())}),e("button._del_poll").click(function(){e(this).parent(".poll_box").remove(),t()}),void o())}),jQuery(window).load(setFixedPopupSize);

View file

@ -302,7 +302,9 @@ class fileModel extends file
function getFileGrant($file_info, $member_info)
{
if(!$file_info) return null;
$file_grant = new stdClass;
if($_SESSION['__XE_UPLOADING_FILES_INFO__'][$file_info->file_srl])
{
$file_grant->is_deletable = true;

View file

@ -8,15 +8,8 @@
<action name="dispInstallCheckEnv" type="view" />
<action name="dispInstallSelectDB" type="view" />
<action name="dispInstallDBForm" type="view" />
<action name="dispInstallConfigForm" type="view" />
<action name="dispInstallManagerForm" type="view" />
<action name="procCubridDBSetting" type="controller" ruleset="cubrid" />
<action name="procFirebirdDBSetting" type="controller" ruleset="firebird" />
<action name="procMssqlDBSetting" type="controller" ruleset="mssql" />
<action name="procMysqlDBSetting" type="controller" ruleset="mysql" />
<action name="procPostgresqlDBSetting" type="controller" ruleset="postgresql" />
<action name="procSqliteDBSetting" type="controller" ruleset="sqlite" />
<action name="procConfigSetting" type="controller" ruleset="config" />
<action name="procDBSetting" type="controller" />
<action name="procInstall" type="controller" ruleset="install" />
<action name="procInstallLicenseAggrement" type="controller" />
<action name="procInstallFTP" type="controller" />

View file

@ -26,64 +26,10 @@ class installController extends install
$this->etc_tmp_config_file = _XE_PATH_.'files/config/tmpEtc.config.php';
}
/**
* @brief cubrid db setting wrapper, becase Server Side Validator...
* Server Side Validatro can use only one proc, one ruleset
*/
function procCubridDBSetting()
{
return $this->_procDBSetting();
}
/**
* @brief firebird db setting wrapper, becase Server Side Validator...
* Server Side Validatro can use only one proc, one ruleset
*/
function procFirebirdDBSetting()
{
return $this->_procDBSetting();
}
/**
* @brief mssql db setting wrapper, becase Server Side Validator...
* Server Side Validatro can use only one proc, one ruleset
*/
function procMssqlDBSetting()
{
return $this->_procDBSetting();
}
/**
* @brief mysql db setting wrapper, becase Server Side Validator...
* Server Side Validatro can use only one proc, one ruleset
*/
function procMysqlDBSetting()
{
return $this->_procDBSetting();
}
/**
* @brief postgresql db setting wrapper, becase Server Side Validator...
* Server Side Validatro can use only one proc, one ruleset
*/
function procPostgresqlDBSetting()
{
return $this->_procDBSetting();
}
/**
* @brief sqlite db setting wrapper, becase Server Side Validator...
* Server Side Validatro can use only one proc, one ruleset
*/
function procSqliteDBSetting()
{
return $this->_procDBSetting();
}
/**
* @brief division install step... DB Config temp file create
*/
function _procDBSetting()
function procDBSetting()
{
// Get DB-related variables
$con_string = Context::gets('db_type','db_port','db_hostname','db_userid','db_password','db_database','db_table_prefix');
@ -104,29 +50,33 @@ class installController extends install
if(!$output->toBool()) return $output;
if(!$oDB->isConnected()) return $oDB->getError();
// Check if MySQL server supports InnoDB
if(stripos($con_string->db_type, 'innodb') !== false)
{
$innodb_supported = false;
$show_engines = $oDB->_fetch($oDB->_query('SHOW ENGINES'));
foreach($show_engines as $engine_info)
{
if(strcasecmp($engine_info->Engine, 'InnoDB') === 0)
{
$innodb_supported = true;
}
}
// If server does not support InnoDB, fall back to default storage engine (usually MyISAM)
if(!$innodb_supported)
{
$con_string->db_type = str_ireplace('_innodb', '', $con_string->db_type);
$db_info->master_db['db_type'] = $con_string->db_type;
$db_info->slave_db[0]['db_type'] = $con_string->db_type;
Context::set('db_type', $con_string->db_type);
Context::setDBInfo($db_info);
}
}
// Create a db temp config file
if(!$this->makeDBConfigFile()) return new Object(-1, 'msg_install_failed');
if(!in_array(Context::getRequestMethod(),array('XMLRPC','JSON')))
{
$returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'act', 'dispInstallConfigForm');
header('location:'.$returnUrl);
return;
}
}
/**
* @brief division install step... rewrite, time_zone Config temp file create
*/
function procConfigSetting()
{
// Get variables
$config_info = Context::gets('use_rewrite','time_zone');
if($config_info->use_rewrite!='Y') $config_info->use_rewrite = 'N';
// Create a db temp config file
if(!$this->makeEtcConfigFile($config_info)) return new Object(-1, 'msg_install_failed');
if(!in_array(Context::getRequestMethod(),array('XMLRPC','JSON')))
{
$returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'act', 'dispInstallManagerForm');
@ -141,7 +91,21 @@ class installController extends install
function procInstall()
{
// Check if it is already installed
if(Context::isInstalled()) return new Object(-1, 'msg_already_installed');
if(Context::isInstalled())
{
return new Object(-1, 'msg_already_installed');
}
// Save rewrite and time zone settings
if(!Context::get('install_config'))
{
$config_info = Context::gets('use_rewrite','time_zone');
if($config_info->use_rewrite!='Y') $config_info->use_rewrite = 'N';
if(!$this->makeEtcConfigFile($config_info))
{
return new Object(-1, 'msg_install_failed');
}
}
// Assign a temporary administrator when installing
$logged_info = new stdClass();
@ -339,39 +303,118 @@ class installController extends install
{
// Check each item
$checklist = array();
// 0. check your version of php (5.2.4 or higher)
// Check PHP version
$checklist['php_version'] = true;
if(version_compare(PHP_VERSION, __XE_MIN_PHP_VERSION__, '<'))
{
$checklist['php_version'] = false;
}
if(version_compare(PHP_VERSION, __XE_RECOMMEND_PHP_VERSION__, '<'))
{
Context::set('phpversion_warning', true);
}
// 1. Check permission
if(is_writable('./')||is_writable('./files')) $checklist['permission'] = true;
else $checklist['permission'] = false;
// 2. Check if xml_parser_create exists
if(function_exists('xml_parser_create')) $checklist['xml'] = true;
else $checklist['xml'] = false;
// 3. Check if ini_get (session.auto_start) == 1
if(ini_get('session.auto_start')!=1) $checklist['session'] = true;
else $checklist['session'] = false;
// 4. Check if iconv exists
if(function_exists('iconv')) $checklist['iconv'] = true;
else $checklist['iconv'] = false;
// 5. Check gd(imagecreatefromgif function)
if(function_exists('imagecreatefromgif')) $checklist['gd'] = true;
else $checklist['gd'] = false;
// 6. Check DB
if(DB::getEnableList()) $checklist['db'] = true;
else $checklist['db'] = false;
// Check DB
if(DB::getEnableList())
{
$checklist['db_support'] = true;
}
else
{
$checklist['db_support'] = false;
}
if(!$checklist['php_version'] || !$checklist['permission'] || !$checklist['xml'] || !$checklist['session'] || !$checklist['db']) $install_enable = false;
else $install_enable = true;
// Check permission
if(is_writable('./')||is_writable('./files'))
{
$checklist['permission'] = true;
}
else
{
$checklist['permission'] = false;
}
// Check session.auto_start
if(ini_get('session.auto_start') != 1)
{
$checklist['session'] = true;
}
else
{
$checklist['session'] = false;
}
// Check curl
if(function_exists('curl_init'))
{
$checklist['curl'] = true;
}
else
{
$checklist['curl'] = false;
}
// Check GD
if(function_exists('imagecreatefromgif'))
{
$checklist['gd'] = true;
}
else
{
$checklist['gd'] = false;
}
// Check iconv or mbstring
if(function_exists('iconv') || function_exists('mb_convert_encoding'))
{
$checklist['iconv'] = true;
}
else
{
$checklist['iconv'] = false;
}
// Check json
if(function_exists('json_encode'))
{
$checklist['json'] = true;
}
else
{
$checklist['json'] = false;
}
// Check openssl
if(function_exists('openssl_encrypt'))
{
$checklist['openssl'] = true;
}
else
{
$checklist['openssl'] = false;
}
// Check XML
if(function_exists('xml_parser_create'))
{
$checklist['xml'] = true;
}
else
{
$checklist['xml'] = false;
}
// Enable install if all conditions are met
$install_enable = true;
foreach($checklist as $k => $v)
{
if (!$v)
{
$install_enable = false;
break;
}
}
// Save the checked result to the Context
Context::set('checklist', $checklist);

View file

@ -76,7 +76,8 @@ class installView extends install
}
Context::set('l', Context::getLangType());
$this->setTemplateFile('introduce');
return $this->dispInstallLicenseAgreement();
//$this->setTemplateFile('introduce');
}
/**
@ -117,11 +118,13 @@ class installView extends install
if(ini_get('safe_mode') && !Context::isFTPRegisted())
{
Context::set('progressMenu', '3');
Context::set('server_ip_address', $_SERVER['SERVER_ADDR']);
Context::set('server_ftp_user', get_current_user());
$this->setTemplateFile('ftp');
}
else
{
$defaultDatabase = 'mysqli';
$defaultDatabase = 'mysqli_innodb';
$disableList = DB::getDisableList();
if(is_array($disableList))
{
@ -135,8 +138,20 @@ class installView extends install
}
}
Context::set('defaultDatabase', $defaultDatabase);
Context::set('progressMenu', '4');
$error_return_url = getNotEncodedUrl('', 'act', Context::get('act'), 'db_type', Context::get('db_type'));
if($_SERVER['HTTPS'] == 'on')
{
// Error occured when using https protocol at "ModuleHandler::init() '
$parsedUrl = parse_url($error_return_url);
$error_return_url = '';
if(isset($parsedUrl['path'])) $error_return_url .= $parsedUrl['path'];
if(isset($parsedUrl['query'])) $error_return_url .= '?' . $parsedUrl['query'];
if(isset($parsedUrl['fragment'])) $error_return_url .= '?' . $parsedUrl['fragment'];
}
Context::set('error_return_url', $error_return_url);
$this->setTemplateFile('select_db');
}
}
@ -144,50 +159,25 @@ class installView extends install
/**
* @brief Display a screen to enter DB and administrator's information
*/
function dispInstallDBForm()
function dispInstallManagerForm()
{
// Display check_env if not installable
if(!$this->install_enable) return $this->dispInstallCheckEnv();
// Return to the start-up screen if db_type is not specified
if(!Context::get('db_type')) return $this->dispInstallSelectDB();
// Output the file, disp_db_info_form.html
$tpl_filename = sprintf('form.%s', Context::get('db_type'));
$title = sprintf(Context::getLang('input_dbinfo_by_dbtype'), Context::get('db_type'));
Context::set('title', $title);
$error_return_url = getNotEncodedUrl('', 'act', Context::get('act'), 'db_type', Context::get('db_type'));
if($_SERVER['HTTPS'] == 'on')
if(!$this->install_enable)
{
// Error occured when using https protocol at "ModuleHandler::init() '
$parsedUrl = parse_url($error_return_url);
$error_return_url = '';
if(isset($parsedUrl['path'])) $error_return_url .= $parsedUrl['path'];
if(isset($parsedUrl['query'])) $error_return_url .= '?' . $parsedUrl['query'];
if(isset($parsedUrl['fragment'])) $error_return_url .= '?' . $parsedUrl['fragment'];
return $this->dispInstallCheckEnv();
}
Context::set('error_return_url', $error_return_url);
$this->setTemplateFile($tpl_filename);
}
/**
* @brief Display a screen to enter DB and administrator's information
*/
function dispInstallConfigForm()
{
// Display check_env if not installable
if(!$this->install_enable) return $this->dispInstallCheckEnv();
include _XE_PATH_.'files/config/tmpDB.config.php';
Context::set('use_rewrite', $_SESSION['use_rewrite']);
Context::set('time_zone', $GLOBALS['time_zone']);
Context::set('db_type', $db_info->db_type);
$this->setTemplateFile('config_form');
$this->setTemplateFile('admin_form');
}
/**
* @brief Check whether this server supports mod_rewrite
*/
function useRewriteModule()
{
if(function_exists('apache_get_modules') && in_array('mod_rewrite',apache_get_modules()))
@ -202,20 +192,6 @@ class installView extends install
return (strpos($output->body, '<?xml') !== 0);
}
/**
* @brief Display a screen to enter DB and administrator's information
*/
function dispInstallManagerForm()
{
// Display check_env if not installable
if(!$this->install_enable)
{
return $this->dispInstallCheckEnv();
}
$this->setTemplateFile('admin_form');
}
}
/* End of file install.view.php */
/* Location: ./modules/install/install.view.php */

View file

@ -33,21 +33,21 @@
</item>
<item name="license_agreement">
<value xml:lang="ko"><![CDATA[사용권 동의]]></value>
<value xml:lang="en"><![CDATA[License agreement]]></value>
<value xml:lang="en"><![CDATA[License Agreement]]></value>
<value xml:lang="jp"><![CDATA[ライセンス契約]]></value>
<value xml:lang="zh-CN"><![CDATA[许可协议]]></value>
<value xml:lang="zh-TW"><![CDATA[許可協議]]></value>
</item>
<item name="condition">
<value xml:lang="ko"><![CDATA[설치 조건 확인]]></value>
<value xml:lang="en"><![CDATA[Check the installation conditions]]></value>
<value xml:lang="ko"><![CDATA[설치 환경 확인]]></value>
<value xml:lang="en"><![CDATA[Environment Check]]></value>
<value xml:lang="jp"><![CDATA[インストール条件確認]]></value>
<value xml:lang="zh-CN"><![CDATA[检查安装条件]]></value>
<value xml:lang="zh-TW"><![CDATA[檢查安裝條件]]></value>
</item>
<item name="ftp">
<value xml:lang="ko"><![CDATA[FTP 정보 입력]]></value>
<value xml:lang="en"><![CDATA[Input FTP information]]></value>
<value xml:lang="en"><![CDATA[FTP Setup]]></value>
<value xml:lang="jp"><![CDATA[FTP情報入力]]></value>
<value xml:lang="zh-CN"><![CDATA[输入FTP信息]]></value>
<value xml:lang="zh-TW"><![CDATA[輸入FTP信息]]></value>
@ -61,31 +61,36 @@
</item>
<item name="dbInfo">
<value xml:lang="ko"><![CDATA[DB 정보 입력]]></value>
<value xml:lang="en"><![CDATA[Input Database information]]></value>
<value xml:lang="en"><![CDATA[DB Setup]]></value>
<value xml:lang="jp"><![CDATA[DB情報入力]]></value>
<value xml:lang="zh-CN"><![CDATA[输入DB信息]]></value>
<value xml:lang="zh-TW"><![CDATA[輸入DB信息]]></value>
</item>
<item name="configInfo">
<value xml:lang="ko"><![CDATA[환경 설정]]></value>
<value xml:lang="en"><![CDATA[Settings]]></value>
<value xml:lang="en"><![CDATA[Configuration]]></value>
<value xml:lang="jp"><![CDATA[環境設定]]></value>
<value xml:lang="zh-CN"><![CDATA[环境设置]]></value>
<value xml:lang="zh-TW"><![CDATA[環境設置]]></value>
</item>
<item name="adminInfo">
<value xml:lang="ko"><![CDATA[관리자 정보 입력]]></value>
<value xml:lang="en"><![CDATA[Enter Administrator information]]></value>
<value xml:lang="ko"><![CDATA[관리자 계정 생성]]></value>
<value xml:lang="en"><![CDATA[Create Administrator Account]]></value>
<value xml:lang="jp"><![CDATA[管理者情報入力]]></value>
<value xml:lang="zh-CN"><![CDATA[输入管理员信息]]></value>
<value xml:lang="zh-TW"><![CDATA[輸入管理員信息]]></value>
</item>
</item>
<item name="install_condition_enable">
<value xml:lang="ko"><![CDATA[설치가 가능합니다.]]></value>
<value xml:lang="en"><![CDATA[You can Install.]]></value>
<value xml:lang="ko"><![CDATA[설치할 수 있습니다]]></value>
<value xml:lang="en"><![CDATA[Your server is compatible with XE.]]></value>
<value xml:lang="jp"><![CDATA[インストールできます。]]></value>
</item>
<item name="install_condition_disable">
<value xml:lang="ko"><![CDATA[설치할 수 없습니다]]></value>
<value xml:lang="en"><![CDATA[Your server does not support XE.]]></value>
<value xml:lang="jp"><![CDATA[インストールできません。]]></value>
</item>
<item name="install_details">
<value xml:lang="ko"><![CDATA[자세히]]></value>
<value xml:lang="en"><![CDATA[Details]]></value>
@ -108,7 +113,7 @@
</item>
<item name="install_checklist_title" type="array">
<item name="php_version">
<value xml:lang="ko"><![CDATA[PHP Version]]></value>
<value xml:lang="ko"><![CDATA[PHP 버전]]></value>
<value xml:lang="en"><![CDATA[PHP Version]]></value>
<value xml:lang="jp"><![CDATA[PHPバージョン]]></value>
<value xml:lang="zh-CN"><![CDATA[PHP版本]]></value>
@ -120,87 +125,117 @@
<value xml:lang="vi"><![CDATA[Phiên bản PHP]]></value>
</item>
<item name="permission">
<value xml:lang="ko"><![CDATA[퍼미션]]></value>
<value xml:lang="en"><![CDATA[Permission]]></value>
<value xml:lang="jp"><![CDATA[パーミッション]]></value>
<value xml:lang="zh-CN"><![CDATA[权限]]></value>
<value xml:lang="zh-TW"><![CDATA[權限]]></value>
<value xml:lang="fr"><![CDATA[Autorisation]]></value>
<value xml:lang="ru"><![CDATA[Права доступа]]></value>
<value xml:lang="es"><![CDATA[Atribución]]></value>
<value xml:lang="tr"><![CDATA[Yetki]]></value>
<value xml:lang="vi"><![CDATA[Sự cho phép]]></value>
<value xml:lang="ko"><![CDATA[files 폴더 퍼미션]]></value>
<value xml:lang="en"><![CDATA[files folder permissions]]></value>
<value xml:lang="jp"><![CDATA[filesフォルダのパーミッション]]></value>
<value xml:lang="zh-CN"><![CDATA[files文件夹权限]]></value>
<value xml:lang="zh-TW"><![CDATA[files文件夾權限]]></value>
<value xml:lang="fr"><![CDATA[Autorisations de dossier files]]></value>
<value xml:lang="ru"><![CDATA[права доступа к папке files]]></value>
<value xml:lang="es"><![CDATA[Permisos de carpeta files]]></value>
<value xml:lang="tr"><![CDATA[files klasör izinleri]]></value>
<value xml:lang="vi"><![CDATA[Điều khoản thư mục files]]></value>
</item>
<item name="xml">
<value xml:lang="ko"><![CDATA[XML 라이브러리]]></value>
<value xml:lang="en"><![CDATA[XML Library]]></value>
<value xml:lang="jp"><![CDATA[XMLライブラリ]]></value>
<value xml:lang="zh-CN"><![CDATA[XML库]]></value>
<value xml:lang="fr"><![CDATA[Bibliothèque de XML]]></value>
<value xml:lang="ru"><![CDATA[XML библиотека]]></value>
<value xml:lang="es"><![CDATA[Librería XML]]></value>
<value xml:lang="tr"><![CDATA[XML Kitaplığı]]></value>
<value xml:lang="ko"><![CDATA[xml]]></value>
<value xml:lang="en"><![CDATA[xml]]></value>
<value xml:lang="jp"><![CDATA[xml]]></value>
<value xml:lang="zh-CN"><![CDATA[xml]]></value>
<value xml:lang="fr"><![CDATA[xml]]></value>
<value xml:lang="ru"><![CDATA[xml]]></value>
<value xml:lang="es"><![CDATA[xml]]></value>
<value xml:lang="tr"><![CDATA[xml]]></value>
</item>
<item name="curl">
<value xml:lang="ko"><![CDATA[curl]]></value>
<value xml:lang="en"><![CDATA[curl]]></value>
<value xml:lang="jp"><![CDATA[curl]]></value>
<value xml:lang="zh-CN"><![CDATA[curl]]></value>
<value xml:lang="fr"><![CDATA[curl]]></value>
<value xml:lang="ru"><![CDATA[curl]]></value>
<value xml:lang="es"><![CDATA[curl]]></value>
<value xml:lang="tr"><![CDATA[curl]]></value>
</item>
<item name="iconv">
<value xml:lang="ko"><![CDATA[ICONV 라이브러리]]></value>
<value xml:lang="en"><![CDATA[ICONV Library]]></value>
<value xml:lang="jp"><![CDATA[ICONVライブラリ]]></value>
<value xml:lang="zh-CN"><![CDATA[ICONV库]]></value>
<value xml:lang="fr"><![CDATA[Bibliothèque de ICONV]]></value>
<value xml:lang="ru"><![CDATA[ICONV библиотека]]></value>
<value xml:lang="es"><![CDATA[Librería ICONV]]></value>
<value xml:lang="tr"><![CDATA[ICONV Kitaplığı]]></value>
<value xml:lang="ko"><![CDATA[iconv / mbstring]]></value>
<value xml:lang="en"><![CDATA[iconv / mbstring]]></value>
<value xml:lang="jp"><![CDATA[iconv / mbstring]]></value>
<value xml:lang="zh-CN"><![CDATA[iconv / mbstring]]></value>
<value xml:lang="fr"><![CDATA[iconv / mbstring]]></value>
<value xml:lang="ru"><![CDATA[iconv / mbstring]]></value>
<value xml:lang="es"><![CDATA[iconv / mbstring]]></value>
<value xml:lang="tr"><![CDATA[iconv / mbstring]]></value>
</item>
<item name="json">
<value xml:lang="ko"><![CDATA[json]]></value>
<value xml:lang="en"><![CDATA[json]]></value>
<value xml:lang="jp"><![CDATA[json]]></value>
<value xml:lang="zh-CN"><![CDATA[json]]></value>
<value xml:lang="fr"><![CDATA[json]]></value>
<value xml:lang="ru"><![CDATA[json]]></value>
<value xml:lang="es"><![CDATA[json]]></value>
<value xml:lang="tr"><![CDATA[json]]></value>
</item>
<item name="gd">
<value xml:lang="ko"><![CDATA[GD 라이브러리]]></value>
<value xml:lang="en"><![CDATA[GD Library]]></value>
<value xml:lang="jp"><![CDATA[GDライブラリ]]></value>
<value xml:lang="zh-CN"><![CDATA[GD库]]></value>
<value xml:lang="fr"><![CDATA[Bibliothèque de GD]]></value>
<value xml:lang="ru"><![CDATA[GD библиотека]]></value>
<value xml:lang="es"><![CDATA[Librería GD]]></value>
<value xml:lang="tr"><![CDATA[GD Kitaplığı]]></value>
<value xml:lang="ko"><![CDATA[gd]]></value>
<value xml:lang="en"><![CDATA[gd]]></value>
<value xml:lang="jp"><![CDATA[gd]]></value>
<value xml:lang="zh-CN"><![CDATA[gd]]></value>
<value xml:lang="fr"><![CDATA[gd]]></value>
<value xml:lang="ru"><![CDATA[gd]]></value>
<value xml:lang="es"><![CDATA[gd]]></value>
<value xml:lang="tr"><![CDATA[gd]]></value>
</item>
<item name="openssl">
<value xml:lang="ko"><![CDATA[openssl]]></value>
<value xml:lang="en"><![CDATA[openssl]]></value>
<value xml:lang="jp"><![CDATA[openssl]]></value>
<value xml:lang="zh-CN"><![CDATA[openssl]]></value>
<value xml:lang="fr"><![CDATA[openssl]]></value>
<value xml:lang="ru"><![CDATA[openssl]]></value>
<value xml:lang="es"><![CDATA[openssl]]></value>
<value xml:lang="tr"><![CDATA[openssl]]></value>
</item>
<item name="session">
<value xml:lang="ko"><![CDATA[Session.auto_start 설정]]></value>
<value xml:lang="en"><![CDATA[Session.auto_start setting]]></value>
<value xml:lang="jp"><![CDATA[Session.auto_startの設定]]></value>
<value xml:lang="zh-CN"><![CDATA[Session.auto_start 设置]]></value>
<value xml:lang="zh-TW"><![CDATA[Session.auto_start設置]]></value>
<value xml:lang="fr"><![CDATA[Configuration de Session.auto_start]]></value>
<value xml:lang="ru"><![CDATA[Session.auto_start настройка]]></value>
<value xml:lang="es"><![CDATA[Configuración Session.auto_start]]></value>
<value xml:lang="tr"><![CDATA[Session.auto_start(otomatik.oturum_acma) ayarı]]></value>
<value xml:lang="vi"><![CDATA[Thiết lập Session.auto_start]]></value>
<value xml:lang="ko"><![CDATA[session.auto_start 설정]]></value>
<value xml:lang="en"><![CDATA[session.auto_start setting]]></value>
<value xml:lang="jp"><![CDATA[session.auto_startの設定]]></value>
<value xml:lang="zh-CN"><![CDATA[session.auto_start 设置]]></value>
<value xml:lang="zh-TW"><![CDATA[session.auto_start設置]]></value>
<value xml:lang="fr"><![CDATA[Configuration de session.auto_start]]></value>
<value xml:lang="ru"><![CDATA[session.auto_start настройка]]></value>
<value xml:lang="es"><![CDATA[Configuración session.auto_start]]></value>
<value xml:lang="tr"><![CDATA[session.auto_start(otomatik.oturum_acma) ayarı]]></value>
<value xml:lang="vi"><![CDATA[Thiết lập session.auto_start]]></value>
</item>
<item name="db">
<value xml:lang="ko"><![CDATA[DB]]></value>
<value xml:lang="en"><![CDATA[DB]]></value>
<value xml:lang="jp"><![CDATA[DB]]></value>
<item name="db_support">
<value xml:lang="ko"><![CDATA[DB 지원]]></value>
<value xml:lang="en"><![CDATA[DB support]]></value>
<value xml:lang="jp"><![CDATA[DBサポート]]></value>
</item>
</item>
<item name="install_checklist_desc" type="array">
<item name="php_version">
<value xml:lang="ko"><![CDATA[[필수] PHP버전이 %s 이상에서 설치가 가능합니다.]]></value>
<value xml:lang="ko"><![CDATA[[필수] XE를 설치하려면 PHP 버전이 %s 이상이어야 합니다.]]></value>
<value xml:lang="en"><![CDATA[[Required] XE supports only PHP Version %s or higher]]></value>
<value xml:lang="jp"><![CDATA[[必修] %s以上のPHPバージョンでインストールが可能です。]]></value>
</item>
<item name="php_version_warning">
<value xml:lang="ko"><![CDATA[[권장] XE는 PHP %s 버전 이상을 권장합니다.]]></value>
<value xml:lang="ko"><![CDATA[[권장] XE는 PHP %s 이상을 권장합니다.]]></value>
<value xml:lang="en"><![CDATA[[Recommend] XE recommends only PHP Version %s or higher]]></value>
<value xml:lang="jp"><![CDATA[[推奨] XEはPHP %sバージョン以上をおすすめします。]]></value>
</item>
<item name="permission">
<value xml:lang="ko"><![CDATA[[필수] XE의 설치 경로 또는 ./files 디렉토리의 퍼미션이 707이어야 합니다.]]></value>
<value xml:lang="en"><![CDATA[[Required] XE installation path or ./files directory's permission must be 707]]></value>
<value xml:lang="jp"><![CDATA[【必須】XEのインストール先、または「./files」ディレクトリのパーミッションを「707」に設定してください。]]></value>
<value xml:lang="zh-CN"><![CDATA[[必须] 的安装路径或 ./files目录属性必须是707]]></value>
<value xml:lang="zh-TW"><![CDATA[[必須] XE的資料夾或『./files』資料夾權限必須是『707』。]]></value>
<value xml:lang="fr"><![CDATA[[Obligatoire] Chemin de l'installation de XE ou la permission de répertoire de ./files doit être 707]]></value>
<value xml:lang="ru"><![CDATA[[Требуется] Путь установки XE или директория ./files должна иметь права доступа 707]]></value>
<value xml:lang="es"><![CDATA[[Requerido] La ruta de la instalación de XE o el directorio de ./archivos deberia tener la atribución 707]]></value>
<value xml:lang="tr"><![CDATA[[Gerekli] XE kurulum yolu ya da ./files directory yolunun yetkisi 707 olmalıdır]]></value>
<value xml:lang="vi"><![CDATA[[Bắt buộc] Thư mục cài đặt của XE hay ./files directory phải CHMOD thành 707]]></value>
<value xml:lang="ko"><![CDATA[[필수] XE의 설치 경로 또는 ./files 디렉토리의 퍼미션이 777이어야 합니다.]]></value>
<value xml:lang="en"><![CDATA[[Required] XE installation path or ./files directory's permission must be 777]]></value>
<value xml:lang="jp"><![CDATA[【必須】XEのインストール先、または「./files」ディレクトリのパーミッションを「777」に設定してください。]]></value>
<value xml:lang="zh-CN"><![CDATA[[必须] 的安装路径或 ./files目录属性必须是777]]></value>
<value xml:lang="zh-TW"><![CDATA[[必須] XE的資料夾或『./files』資料夾權限必須是『777』。]]></value>
<value xml:lang="fr"><![CDATA[[Obligatoire] Chemin de l'installation de XE ou la permission de répertoire de ./files doit être 777]]></value>
<value xml:lang="ru"><![CDATA[[Требуется] Путь установки XE или директория ./files должна иметь права доступа 777]]></value>
<value xml:lang="es"><![CDATA[[Requerido] La ruta de la instalación de XE o el directorio de ./archivos deberia tener la atribución 777]]></value>
<value xml:lang="tr"><![CDATA[[Gerekli] XE kurulum yolu ya da ./files directory yolunun yetkisi 777 olmalıdır]]></value>
<value xml:lang="vi"><![CDATA[[Bắt buộc] Thư mục cài đặt của XE hay ./files directory phải CHMOD thành 777]]></value>
</item>
<item name="xml">
<value xml:lang="ko"><![CDATA[[필수] XML통신을 위하여 XML 라이브러리가 필요합니다.]]></value>
@ -252,7 +287,7 @@
</item>
</item>
<item name="install_checklist_xml">
<value xml:lang="ko"><![CDATA[XML라이브러리 설치]]></value>
<value xml:lang="ko"><![CDATA[XML 라이브러리 설치]]></value>
<value xml:lang="en"><![CDATA[Install XML Library]]></value>
<value xml:lang="jp"><![CDATA[XMLライブラリのインストール]]></value>
<value xml:lang="zh-CN"><![CDATA[安装XML库]]></value>
@ -264,7 +299,7 @@
<value xml:lang="vi"><![CDATA[Cài đặt XML Library]]></value>
</item>
<item name="install_without_xml">
<value xml:lang="ko"><![CDATA[xml 라이브러리가 설치되어 있지 않습니다.]]></value>
<value xml:lang="ko"><![CDATA[XML 라이브러리가 설치되어 있지 않습니다.]]></value>
<value xml:lang="en"><![CDATA[XML Library is not installed]]></value>
<value xml:lang="jp"><![CDATA[XMLライブラリがインストールされていません。]]></value>
<value xml:lang="zh-CN"><![CDATA[还没有安装xml库]]></value>
@ -276,7 +311,7 @@
<value xml:lang="vi"><![CDATA[XML Library đã không được cài đặt.]]></value>
</item>
<item name="install_checklist_gd">
<value xml:lang="ko"><![CDATA[GD라이브러리 설치]]></value>
<value xml:lang="ko"><![CDATA[GD 라이브러리 설치]]></value>
<value xml:lang="en"><![CDATA[Install GD Library]]></value>
<value xml:lang="jp"><![CDATA[GDライブラリのインストール]]></value>
<value xml:lang="zh-CN"><![CDATA[安装GD库]]></value>
@ -324,31 +359,31 @@
<value xml:lang="vi"><![CDATA[Đã có lỗi xảy ra, có lẽ do sự thiết đặt PHP. session.auto_start không phải là 1]]></value>
</item>
<item name="install_permission_denied">
<value xml:lang="ko"><![CDATA[설치대상 디렉토리의 퍼미션이 707이 아닙니다.]]></value>
<value xml:lang="en"><![CDATA[Installation path's permission doesn't equal to 707]]></value>
<value xml:lang="jp"><![CDATA[インストールする対象ディレクトリのパーミッションが「707」になっていません。]]></value>
<value xml:lang="zh-CN"><![CDATA[安装目录属性不是707]]></value>
<value xml:lang="zh-TW"><![CDATA[安裝目錄權限不是『707』]]></value>
<value xml:lang="fr"><![CDATA[La permission du chemin d'installation n'est pas égale à 707]]></value>
<value xml:lang="ru"><![CDATA[Права доступа пути не установлены в 707]]></value>
<value xml:lang="es"><![CDATA[La atribución de la ruta de instalacion no es igual a 707]]></value>
<value xml:lang="tr"><![CDATA[Kurulum yolu yetkisi 707'ye eşit değil]]></value>
<value xml:lang="vi"><![CDATA[Sự cho phép của thư mục cài đặt không phải là 707]]></value>
<value xml:lang="ko"><![CDATA[설치대상 디렉토리의 퍼미션이 777이 아닙니다.]]></value>
<value xml:lang="en"><![CDATA[Installation path's permission doesn't equal to 777]]></value>
<value xml:lang="jp"><![CDATA[インストールする対象ディレクトリのパーミッションが「777」になっていません。]]></value>
<value xml:lang="zh-CN"><![CDATA[安装目录属性不是777]]></value>
<value xml:lang="zh-TW"><![CDATA[安裝目錄權限不是『777』]]></value>
<value xml:lang="fr"><![CDATA[La permission du chemin d'installation n'est pas égale à 777]]></value>
<value xml:lang="ru"><![CDATA[Права доступа пути не установлены в 777]]></value>
<value xml:lang="es"><![CDATA[La atribución de la ruta de instalacion no es igual a 777]]></value>
<value xml:lang="tr"><![CDATA[Kurulum yolu yetkisi 777'ye eşit değil]]></value>
<value xml:lang="vi"><![CDATA[Sự cho phép của thư mục cài đặt không phải là 777]]></value>
</item>
<item name="install_notandum">
<value xml:lang="ko"><![CDATA[모든 항목을 반드시 작성해야 합니다. 모든 항목을 관리자 환경에서 수정할 수 있습니다. <strong>최초 로그인시 로그인 계정은 이메일 주소 입니다.</strong>]]></value>
<value xml:lang="en"><![CDATA[All form must be filled, but you can modify all of settings after finish the installation.]]></value>
<value xml:lang="jp"><![CDATA[すべての項目を必ず作成してください。すべての項目を管理者環境にて修正できます。]]></value>
<value xml:lang="ko"><![CDATA[작성하신 모든 항목은 설치 후 관리 모듈에서 수정할 수 있습니다.]]></value>
<value xml:lang="en"><![CDATA[You can edit this information in the admin module after installation.]]></value>
<value xml:lang="jp"><![CDATA[すべての項目を管理者環境にて修正できます。]]></value>
</item>
<item name="cmd_install_fix_checklist">
<value xml:lang="ko"><![CDATA[필수 설치조건을 설정하였습니다.]]></value>
<value xml:lang="en"><![CDATA[I have fixed the required conditions.]]></value>
<value xml:lang="jp"><![CDATA[インストール必須条件を設定しました。]]></value>
<value xml:lang="zh-CN"><![CDATA[已设置了必要的安装条件。]]></value>
<value xml:lang="zh-TW"><![CDATA[重新檢查]]></value>
<value xml:lang="fr"><![CDATA[J'ai corrigé les conditions obligatoires.]]></value>
<value xml:lang="ru"><![CDATA[Я удоволетворил требуемые условия]]></value>
<value xml:lang="es"><![CDATA[Yo he configurado las condiciones necesarias para la instalación.]]></value>
<item name="cmd_install_refresh_page">
<value xml:lang="ko"><![CDATA[새로고침]]></value>
<value xml:lang="en"><![CDATA[Refresh]]></value>
<value xml:lang="jp"><![CDATA[リフレッシュ]]></value>
<value xml:lang="zh-CN"><![CDATA[刷新屏幕]]></value>
<value xml:lang="zh-TW"><![CDATA[刷新屏幕]]></value>
<value xml:lang="fr"><![CDATA[Rafraîchir]]></value>
<value xml:lang="ru"><![CDATA[обновление]]></value>
<value xml:lang="es"><![CDATA[Refrescar]]></value>
<value xml:lang="tr"><![CDATA[Gerekli koşulları tamamladım.]]></value>
<value xml:lang="vi"><![CDATA[Tôi đã thay đổi để phù hợp với yêu cầu cài đặt.]]></value>
</item>
@ -373,36 +408,23 @@
<value xml:lang="tr"><![CDATA[Önemseme]]></value>
<value xml:lang="vi"><![CDATA[Bỏ qua]]></value>
</item>
<item name="cmd_recommended">
<value xml:lang="ko"><![CDATA[권장]]></value>
<value xml:lang="en"><![CDATA[Recommended]]></value>
<value xml:lang="jp"><![CDATA[推奨]]></value>
<value xml:lang="zh-CN"><![CDATA[推荐]]></value>
<value xml:lang="zh-TW"><![CDATA[推薦]]></value>
<value xml:lang="fr"><![CDATA[Recommandé]]></value>
<value xml:lang="ru"><![CDATA[рекомендуемые]]></value>
<value xml:lang="es"><![CDATA[Recomendado]]></value>
<value xml:lang="tr"><![CDATA[Tavsiye edilen]]></value>
<value xml:lang="vi"><![CDATA[Đê]]></value>
</item>
<item name="db_desc" type="array">
<item name="mysql">
<value xml:lang="ko"><![CDATA[MySQL DB를 php의 mysql*()함수를 이용하여 사용합니다.<br />DB 파일은 myisam으로 생성되기에 트랜잭션이 이루어지지 않습니다.]]></value>
<value xml:lang="en"><![CDATA[Use MySQL as a database with mysql*() functions in php.<br />Transactions will not be processed since DB file is created in myisam.]]></value>
<value xml:lang="jp"><![CDATA[MySQL DBでPHPの「mysql*()」関数を利用してデータの入出力を行います。<br />DBは「myisam」タイプで作成されるため、トランザクション処理はできません。]]></value>
<value xml:lang="zh-CN"><![CDATA[利用php的 mysql*()函数使用mysql DB。<br />DB数据是以myisam生成因此不能实现transaction。]]></value>
<value xml:lang="zh-TW"><![CDATA[利用 PHP 的『mysql*()』函數使用 MySQL 資料庫。<br />利用『myisam』建立資料庫檔案因此不能實現transaction。]]></value>
<value xml:lang="fr"><![CDATA[Utilisera fonction mysql*() pour utiliser la base de données de mysql.<br />La transaction sera invalidé parce que le fichier de Base de Données est créé par myisam.]]></value>
<value xml:lang="ru"><![CDATA[Используем mysql*() функцию, чтобы использовать базу данных mysql.<br />Транзакция отключена из-за того, что файл базы данных создан посредством myisam.]]></value>
<value xml:lang="es"><![CDATA[Utilizando las funciones mysql*() de PHP usar DB mysql.<br />La transacción es desabilitado ya que DB(Bases de Datos) está creado por myisam.]]></value>
<value xml:lang="tr"><![CDATA[PHP'de mysql*() özellikleri için MySQL'ü veritabanı olarak kullanınız.<br />İşlemler, veritabanı dosyası myisam 'da oluşturulduğu zaman işlenmeyecektir.]]></value>
<value xml:lang="vi"><![CDATA[Dùng chức năng <b>mysql*()</b> để sử dụng MySql Database.<br />Giao dịch được vô hiệu hóa bởi File Database được tạo ra bởi myisam.]]></value>
</item>
<item name="mysqli_innodb">
<value xml:lang="ko"><![CDATA[MySQL DB를 innodb를 이용하여 사용합니다.<br />innodb는 트랜잭션을 사용할 수 있습니다.]]></value>
<value xml:lang="en"><![CDATA[Use MySQL as a database with innodb.<br />Transactions will be processed with innodb]]></value>
<value xml:lang="jp"><![CDATA[MySQL DBで「innodb」タイプでデータの入出力を行います。<br />「innodb」ではトランザクションの処理が行えます。]]></value>
<value xml:lang="zh-CN"><![CDATA[利用innodb使用mysql DB。<br />innodb可以使用transaction。]]></value>
<value xml:lang="zh-TW"><![CDATA[利用『innodb』使用 Mysql 資料庫。<br />innodb可以使用 transaction。]]></value>
<value xml:lang="fr"><![CDATA[Utilisera innodb pour utiliser Base de Données de mysql.<br />La transaction sera validé pour innodb]]></value>
<value xml:lang="ru"><![CDATA[Используем innodb чтобы использовать базу данных mysql.<br />Транзакция включена для innodb]]></value>
<value xml:lang="es"><![CDATA[Utilizando innodb usar BD mysql.<br />La transacción es hablilitado para innodb]]></value>
<value xml:lang="tr"><![CDATA[innodb ile MySQL'ü veritabanı olrak kullanınız.<br />İşlemler, innodb ile işlenecektir]]></value>
<value xml:lang="vi"><![CDATA[Dùng chức năng <b>innodb</b> để sử dụng MySql Database.<br />Giao dịch được kích hoạt cho innodb]]></value>
</item>
<item name="mysqli">
<value xml:lang="ko"><![CDATA[MySQL DB를 php의 mysqli*()함수를 이용하여 사용합니다.<br />DB 파일은 myisam으로 생성되기에 트랜잭션이 이루어지지 않습니다.]]></value>
<value xml:lang="en"><![CDATA[Use MySQL as a database with mysqli*() functions in php.<br />Transactions will not be processed since DB file is created in myisam]]></value>
<value xml:lang="jp"><![CDATA[MySQL DBでPHPの「mysqli*()」関数を利用してデータの入出力を行います。<br />DBは「myisam」タイプで作成されるため、トランザクション処理はできせん。]]></value>
<value xml:lang="ko"><![CDATA[mysqli 모듈을 사용하여 MySQL DB에 접속합니다.<br />MyISAM 저장엔진을 사용하므로 트랜잭션이 이루어지지 않으며 데이터 손상의 위험이 있습니다.]]></value>
<value xml:lang="en"><![CDATA[Use MySQL as a database via the mysqli extension.<br />Use the MyISAM storage engine, which does not support transactions.]]></value>
<value xml:lang="jp"><![CDATA[mysqliモジュールを使用してMySQL DBに接続します。<br />MyISAMのエンジンを使用するので、トランザクションが行われず、データの損傷の危険があります。]]></value>
<value xml:lang="zh-CN"><![CDATA[利用php的 mysqli*()函数使用mysql DB。<br />DB数据是以myisam生成因此不能实现transaction。]]></value>
<value xml:lang="zh-TW"><![CDATA[利用 PHP 的『mysqli*()』函數使用 MySQL 資料庫。<br />利用『myisam』建立資料庫檔案因此不能實現transaction。]]></value>
<value xml:lang="fr"><![CDATA[Utilisera fonction mysqli*() pour utiliser la base de données de mysql.<br />La transaction sera invalidé parce que le fichier de Base de Données est créé par myisam.]]></value>
@ -411,10 +433,34 @@
<value xml:lang="tr"><![CDATA[PHP'de mysqli*() özellikleri için MySQL'ü veritabanı olarak kullanınız.<br />İşlemler, veritabanı dosyası myisam 'da oluşturulduğu zaman işlenmeyecektir.]]></value>
<value xml:lang="vi"><![CDATA[Dùng chức năng <b>mysqli*()</b> để sử dụng MySql Database.<br />Giao dịch được vô hiệu hóa bởi File Database được tạo ra bởi myisam.]]></value>
</item>
<item name="mysqli_innodb">
<value xml:lang="ko"><![CDATA[mysqli 모듈을 사용하여 MySQL DB에 접속합니다.<br />InnoDB 저장엔진은 트랜잭션을 지원하여 데이터 손상의 위험이 낮으며, 동시 처리 능력이 뛰어납니다.]]></value>
<value xml:lang="en"><![CDATA[Use MySQL as a database via the mysqli extension.<br />Use the InnoDB storage engine, which supports transactions and higher concurrency.]]></value>
<value xml:lang="jp"><![CDATA[mysqliモジュールを使用してMySQL DBに接続します。<br />InnoDBのエンジンは、トランザクションを支援してデータの損傷の危険が低く、同時処理能力が優れています。]]></value>
<value xml:lang="zh-CN"><![CDATA[利用innodb使用mysql DB。<br />innodb可以使用transaction。]]></value>
<value xml:lang="zh-TW"><![CDATA[利用『innodb』使用 Mysql 資料庫。<br />innodb可以使用 transaction。]]></value>
<value xml:lang="fr"><![CDATA[Utilisera innodb pour utiliser Base de Données de mysql.<br />La transaction sera validé pour innodb]]></value>
<value xml:lang="ru"><![CDATA[Используем innodb чтобы использовать базу данных mysql.<br />Транзакция включена для innodb]]></value>
<value xml:lang="es"><![CDATA[Utilizando innodb usar BD mysql.<br />La transacción es hablilitado para innodb]]></value>
<value xml:lang="tr"><![CDATA[innodb ile MySQL'ü veritabanı olrak kullanınız.<br />İşlemler, innodb ile işlenecektir]]></value>
<value xml:lang="vi"><![CDATA[Dùng chức năng <b>innodb</b> để sử dụng MySql Database.<br />Giao dịch được kích hoạt cho innodb]]></value>
</item>
<item name="mysql">
<value xml:lang="ko"><![CDATA[PHP의 mysql_*() 함수를 사용하여 MySQL DB에 접속합니다.<br />MyISAM 저장엔진을 사용하므로 트랜잭션이 이루어지지 않으며 데이터 손상의 위험이 있습니다.]]></value>
<value xml:lang="en"><![CDATA[Use MySQL as a database via PHP's mysql_* functions.<br />Use the MyISAM storage engine, which does not support transactions.]]></value>
<value xml:lang="jp"><![CDATA[PHPのmysql_*()関数を使用してMySQL DBに接続します。<br />MyISAMのエンジンを使用するので、トランザクションが行われず、データの損傷の危険があります。]]></value>
<value xml:lang="zh-CN"><![CDATA[利用php的 mysql_*()函数使用mysql DB。<br />DB数据是以myisam生成因此不能实现transaction。]]></value>
<value xml:lang="zh-TW"><![CDATA[利用 PHP 的『mysql_*()』函數使用 MySQL 資料庫。<br />利用『myisam』建立資料庫檔案因此不能實現transaction。]]></value>
<value xml:lang="fr"><![CDATA[Utilisera fonction mysql_*() pour utiliser la base de données de mysql.<br />La transaction sera invalidé parce que le fichier de Base de Données est créé par myisam.]]></value>
<value xml:lang="ru"><![CDATA[Используем mysql_*() функцию, чтобы использовать базу данных mysql.<br />Транзакция отключена из-за того, что файл базы данных создан посредством myisam.]]></value>
<value xml:lang="es"><![CDATA[Utilizando las funciones mysql_*() de PHP usar DB mysql.<br />La transacción es desabilitado ya que DB(Bases de Datos) está creado por myisam.]]></value>
<value xml:lang="tr"><![CDATA[PHP'de mysql_*() özellikleri için MySQL'ü veritabanı olarak kullanınız.<br />İşlemler, veritabanı dosyası myisam 'da oluşturulduğu zaman işlenmeyecektir.]]></value>
<value xml:lang="vi"><![CDATA[Dùng chức năng <b>mysql_*()</b> để sử dụng MySql Database.<br />Giao dịch được vô hiệu hóa bởi File Database được tạo ra bởi myisam.]]></value>
</item>
<item name="mysql_innodb">
<value xml:lang="ko"><![CDATA[MySQL DB를 innodb를 이용하여 사용합니다.<br />innodb는 트랜잭션을 사용할 수 있습니다.]]></value>
<value xml:lang="en"><![CDATA[Use MySQL as a database with innodb.<br />Transactions will be processed with innodb]]></value>
<value xml:lang="jp"><![CDATA[MySQL DBで「innodb」タイプでデータの入出力を行います。<br />「innodb」ではトランザクションの処理が行えます。]]></value>
<value xml:lang="ko"><![CDATA[PHP의 mysql_*() 함수를 사용하여 MySQL DB에 접속합니다.<br />InnoDB 저장엔진은 트랜잭션을 지원하여 데이터 손상의 위험이 낮으며, 동시 처리 능력이 뛰어납니다.]]></value>
<value xml:lang="en"><![CDATA[Use MySQL as a database via PHP's mysql_* functions.<br />Use the InnoDB storage engine, which supports transactions and higher concurrency.]]></value>
<value xml:lang="jp"><![CDATA[PHPのmysql_*()関数を使用してMySQL DBに接続します。<br />InnoDBのエンジンは、トランザクションを支援してデータの損傷の危険が低く、同時処理能力が優れています。]]></value>
<value xml:lang="zh-CN"><![CDATA[利用innodb使用mysql DB。<br />innodb可以使用transaction。]]></value>
<value xml:lang="zh-TW"><![CDATA[利用『innodb』使用 Mysql 資料庫。<br />innodb可以使用 transaction。]]></value>
<value xml:lang="fr"><![CDATA[Utilisera innodb pour utiliser Base de Données de mysql.<br />La transaction sera validé pour innodb]]></value>
@ -436,21 +482,24 @@
<value xml:lang="vi"><![CDATA[Sử dụng <b>CUBRID</b> Database. <a href="http://www.cubrid.org/wiki_tutorials/entry/cubrid-installation-instructions" target="_blank">Hướng dẫn</a>]]></value>
</item>
<item name="mssql">
<value xml:lang="ko"><![CDATA[MSSQL DB를 이용합니다.]]></value>
<value xml:lang="en"><![CDATA[Use MSSQL as a database]]></value>
<value xml:lang="jp"><![CDATA[MSSQL DBを利用します。]]></value>
<value xml:lang="zh-CN"><![CDATA[使用MSSQL DB。]]></value>
<value xml:lang="zh-TW"><![CDATA[使用 MSSQL DB。]]></value>
<value xml:lang="fr"><![CDATA[Utiliser la Base de Données de MSSQL.]]></value>
<value xml:lang="ru"><![CDATA[Используем MSSQL DB.]]></value>
<value xml:lang="es"><![CDATA[Usar BD MSSQL.]]></value>
<value xml:lang="tr"><![CDATA[MSSQL'ü veritabanı olarak kullanın]]></value>
<value xml:lang="ko"><![CDATA[Microsoft SQL Server를 이용합니다.]]></value>
<value xml:lang="en"><![CDATA[Use Microsoft SQL Server as a database.]]></value>
<value xml:lang="jp"><![CDATA[Microsoft SQL Serverを利用します。]]></value>
<value xml:lang="zh-CN"><![CDATA[使用 Microsoft SQL Server。]]></value>
<value xml:lang="zh-TW"><![CDATA[使用 Microsoft SQL Server。]]></value>
<value xml:lang="fr"><![CDATA[Utiliser la Base de Données de Microsoft SQL Server.]]></value>
<value xml:lang="ru"><![CDATA[Используем Microsoft SQL Server DB.]]></value>
<value xml:lang="es"><![CDATA[Usar Microsoft SQL Server.]]></value>
<value xml:lang="tr"><![CDATA[Microsoft SQL Server'ü veritabanı olarak kullanın]]></value>
</item>
</item>
<item name="can_use_when_installed">
<value xml:lang="ko"><![CDATA[설치하면 사용할 수 있음.]]></value>
<value xml:lang="en"><![CDATA[You can use when it has installed.]]></value>
<value xml:lang="jp"><![CDATA[設置すれば使用できます。]]></value>
<value xml:lang="ko"><![CDATA[설치되어 있지 않음]]></value>
<value xml:lang="en"><![CDATA[Not installed on this server]]></value>
<value xml:lang="jp"><![CDATA[このサーバーにインストールされていません]]></value>
<value xml:lang="zh-CN"><![CDATA[不是这个服务器上安装]]></value>
<value xml:lang="zh-TW"><![CDATA[不是這個服務器上安裝]]></value>
<value xml:lang="fr"><![CDATA[Pas installé sur ce serveur]]></value>
</item>
<item name="form_title">
<value xml:lang="ko"><![CDATA[DB &amp; 관리자 정보 입력]]></value>
@ -501,7 +550,7 @@
<value xml:lang="vi"><![CDATA[Xin hãy chọn Database bạn muốn sử dụng.]]></value>
</item>
<item name="db_hostname">
<value xml:lang="ko"><![CDATA[DB 호스트네임]]></value>
<value xml:lang="ko"><![CDATA[DB 서버 주소]]></value>
<value xml:lang="en"><![CDATA[DB Hostname]]></value>
<value xml:lang="jp"><![CDATA[ホスト名]]></value>
<value xml:lang="zh-CN"><![CDATA[服务器名]]></value>
@ -513,7 +562,7 @@
<value xml:lang="vi"><![CDATA[Hostname]]></value>
</item>
<item name="db_port">
<value xml:lang="ko"><![CDATA[DB Port]]></value>
<value xml:lang="ko"><![CDATA[DB 서버 포트]]></value>
<value xml:lang="en"><![CDATA[DB Port]]></value>
<value xml:lang="jp"><![CDATA[ポート番号]]></value>
<value xml:lang="zh-CN"><![CDATA[数据库端口]]></value>
@ -583,14 +632,12 @@
<value xml:lang="vi"><![CDATA[Tên Table]]></value>
</item>
<item name="db_info_desc">
<value xml:lang="ko"><![CDATA[<p><strong>DB 아이디</strong>, <strong>DB 비밀번호</strong>, <strong>DB 이름</strong> 정보는 서버 호스팅 관리자로부터 정보를 확인 하세요.</p>]]></value>
<value xml:lang="en"><![CDATA[<p>Please check <strong>database information</strong> to server master.</p>]]></value>
<value xml:lang="jp"><![CDATA[<p><strong>DB ID</strong>, <strong>DB パスワード</strong>, <strong>DB 名稱</strong> 情報は、サーバーホスティング管理者に情報を確認してください。</p>]]></value>
<value xml:lang="ko"><![CDATA[DB 아이디, 비밀번호, 서버 주소, 포트 등의 정보는 호스팅 관리자에게 문의하세요.]]></value>
<value xml:lang="en"><![CDATA[Please check database server information with your server administrator.]]></value>
</item>
<item name="db_prefix_desc">
<value xml:lang="ko"><![CDATA[<p><strong>DB 호스트 네임</strong>, <strong>DB Port</strong> 정보는 서버 호스팅 관리자로부터 정보를 확인 하세요.</p><p><strong>DB 테이블 머리말</strong> 정보는 사용자 정의 할 수 있습니다. 영문 소문자를 권장 합니다. 숫자를 포함할 수 있습니다. 특수 문자를 사용할 수 없습니다.</p>]]></value>
<value xml:lang="en"><![CDATA[<p>Please check <strong>database information</strong> to server master.</p><p>You can modify database <strong>table prefix</strong>, and can use small letters(small letter is recommended), and numbers, but you can not use special letters.</p>]]></value>
<value xml:lang="jp"><![CDATA[<p><strong>DBホスト名</strong>, <strong>DB Port</strong> 情報は、サーバーホスティング管理者に情報を確認してください。</p><p><strong>DBテーブルプレフィックス</strong> 情報は、ユーザーが定義できます。英文小文字の使用を推奨します。数字を含めることができます。特殊文字は、使用できません。</p>]]></value>
<value xml:lang="ko"><![CDATA[DB 테이블 접두사는 사용자가 선택할 수 있습니다. 영문 소문자를 권장하며, 특수 문자를 사용할 수 없습니다.]]></value>
<value xml:lang="en"><![CDATA[You can customize the table prefix. We recommend that you use lowercase alphabets only.]]></value>
</item>
<item name="admin_title">
<value xml:lang="ko"><![CDATA[관리자 정보]]></value>
@ -641,13 +688,13 @@
</item>
<item name="use_rewrite">
<value xml:lang="ko"><![CDATA[짧은 주소 사용]]></value>
<value xml:lang="en"><![CDATA[Rewrite Mod]]></value>
<value xml:lang="en"><![CDATA[mod_rewrite]]></value>
<value xml:lang="jp"><![CDATA[リライト・モジュールを使用]]></value>
<value xml:lang="zh-CN"><![CDATA[使用rewrite模块]]></value>
<value xml:lang="zh-TW"><![CDATA[Rewrite]]></value>
<value xml:lang="fr"><![CDATA[Utiliser mode de récrire(rewrite mod)]]></value>
<value xml:lang="ru"><![CDATA[Использовать<br /> модуль перезаписи<br />(rewrite mod)]]></value>
<value xml:lang="es"><![CDATA[Usar rewrite mod]]></value>
<value xml:lang="fr"><![CDATA[Utiliser mode de récrire(mod_rewrite)]]></value>
<value xml:lang="ru"><![CDATA[Использовать<br /> модуль перезаписи<br />(mod_rewrite)]]></value>
<value xml:lang="es"><![CDATA[Usar mod_rewrite]]></value>
<value xml:lang="tr"><![CDATA[YenidenYazma Modu (mod_rewrite)]]></value>
<value xml:lang="vi"><![CDATA[Mod Rewrite]]></value>
</item>
@ -664,26 +711,31 @@
<value xml:lang="vi"><![CDATA[<abbr title="Single Sign On">SSO</abbr>]]></value>
</item>
<item name="about_rewrite">
<value xml:lang="ko"><![CDATA[이 기능을 사용하면 <em>http://yourdomain/</em><strong>?document_srl=123</strong> 과 같이 복잡한 주소를 <em>http://yourdomain/</em><strong>123</strong> 과 같이 간단하게 줄일 수 있습니다. 웹 서버에서 <strong>rewrite_mod</strong>를 지원해야 합니다. 지원 여부는 서버 관리자에게 문의하세요.]]></value>
<value xml:lang="en"><![CDATA[If web server provides rewrite mod, long URL such as <em>http://blah/</em><strong>?document_srl=123</strong> can be shortened like <em>http://blah/</em><strong>123</strong>]]></value>
<value xml:lang="ko"><![CDATA[이 기능을 사용하면 <em>http://yourdomain/</em><strong>?document_srl=123</strong> 과 같이 복잡한 주소를 <em>http://yourdomain/</em><strong>123</strong> 과 같이 간단하게 줄일 수 있습니다. 웹 서버에서 mod_rewrite를 지원해야 합니다. 지원 여부는 서버 관리자에게 문의하세요.]]></value>
<value xml:lang="en"><![CDATA[If web server provides mod_rewrite, long URL such as <em>http://blah/</em><strong>?document_srl=123</strong> can be shortened like <em>http://blah/</em><strong>123</strong>]]></value>
<value xml:lang="jp"><![CDATA[Webサーバで「リライト・モジュールmod_rewrite」をサポートしている場合は、「http://アドレス/?document_srl=123」のようなアドレスを、動的だけど「http://アドレス/123」のように静的なページに見せることができます。]]></value>
<value xml:lang="zh-CN"><![CDATA[如服务器支持rewrite模块且选择此项可以简化复杂的网址。<br />例如http://域名/?document_srl=123简化为http://域名/123。]]></value>
<value xml:lang="zh-TW"><![CDATA[如果支援 rewrite 功能,可縮短冗長的網址。<br />例>『http://域名/?document_srl=123』縮短成『http://域名/123』。]]></value>
<value xml:lang="fr"><![CDATA[Si le serveur de web est capable d'utiliser le mode de récrire, URL longue comme http://murmure/?document_srl=123 peut être abrégé comme http://murmure/123]]></value>
<value xml:lang="ru"><![CDATA[Если сервер предлагает rewrite mod, длинные URL такие как http://blah/?document_srl=123 могут быть сокращены до http://blah/123]]></value>
<value xml:lang="es"><![CDATA[Si el servidor de la web soporte rewrite mod, URL largas como http://bla/?documento_srl=123 puede abreviarse como http://bla/123]]></value>
<value xml:lang="ru"><![CDATA[Если сервер предлагает mod_rewrite, длинные URL такие как http://blah/?document_srl=123 могут быть сокращены до http://blah/123]]></value>
<value xml:lang="es"><![CDATA[Si el servidor de la web soporte mod_rewrite, URL largas como http://bla/?documento_srl=123 puede abreviarse como http://bla/123]]></value>
<value xml:lang="tr"><![CDATA[Eğer websunucusu yenidenyazma(rewritemod) destekliyorsa, http://ornek/?dosya_no=123 gibi URLler http://ornek/123 olarak kısaltılabilir]]></value>
<value xml:lang="vi"><![CDATA[Nếu Host của bạn hỗ trợ Mod Rewrite, khi địa chỉ có dạng <b>http://blah/?document_srl=123</b> sẽ được rút ngắn thành <b>http://blah/123</b>]]></value>
</item>
<item name="disable_rewrite">
<value xml:lang="ko"><![CDATA[짧은 주소를 사용할 수 없습니다. 웹 서버 담당자에게 <strong>rewrite_mod</strong>지원 여부를 확인 바랍니다.]]></value>
<value xml:lang="en"><![CDATA[Required module for "Friendly URL" feature is not found. Please check with the web master about <strong>rewrite_mod</strong> module support.]]></value>
<value xml:lang="jp"><![CDATA[短縮アドレスを使用できません。ウェブサーバー担当者に <strong>rewrite_mod</strong>サポート可否を確認してください。]]></value>
<value xml:lang="ko"><![CDATA[짧은 주소를 사용할 수 없습니다. 웹 서버 담당자에게 mod_rewrite 지원 여부를 확인 바랍니다.]]></value>
<value xml:lang="en"><![CDATA["Friendly URL" feature is not available. Please check with the server administrator about mod_rewrite module support.]]></value>
<value xml:lang="jp"><![CDATA[短縮アドレスを使用できません。ウェブサーバー担当者に mod_rewriteサポート可否を確認してください。]]></value>
</item>
<item name="disable_rewrite_can_proceed">
<value xml:lang="ko"><![CDATA[짧은 주소를 사용할 수 없더라도 XE 설치와 사용에는 지장이 없습니다.]]></value>
<value xml:lang="en"><![CDATA[It is OK to continue to install and use XE without the "Friendly URL" feature.]]></value>
<value xml:lang="jp"><![CDATA[この機能は、XEをインストールと使用するために必要ではありません。]]></value>
</item>
<item name="about_nginx_rewrite">
<value xml:lang="ko"><![CDATA[Nginx를 사용할 경우, 짧은 주소를 사용하기 위하여 rewrite 설정이 필요합니다. 설정방법은 <a href="https://github.com/xpressengine/xe-core/wiki/Nginx-rewite-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0" target="_blank"><strong>여기</strong></a>를 참고하세요.]]></value>
<value xml:lang="en"><![CDATA[For using "Friendly URL" feature at Nginx, need to configure rewrites at Nginx. show <a href="https://github.com/xpressengine/xe-core/wiki/Nginx-rewite-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0" target="_blank"><strong>here</strong></a>.]]></value>
<value xml:lang="jp"><![CDATA[Nginxを使用する場合、短縮アクセスを使用するためにrewrite設定が必要です。設定方法は<a href="https://github.com/xpressengine/xe-core/wiki/Nginx-rewite-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0" target="_blank"><strong>여기</strong></a>を参考ください。]]></value>
<value xml:lang="ko"><![CDATA[nginx에서 짧은 주소를 사용하려면 rewrite 설정이 필요합니다. <a href="https://github.com/xpressengine/xe-core/wiki/Nginx-rewite-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0" target="_blank">여기</a>를 참고하세요.]]></value>
<value xml:lang="en"><![CDATA[To use this feature at nginx, you need to configure rewrite. See <a href="https://github.com/xpressengine/xe-core/wiki/Nginx-rewite-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0" target="_blank">here</a>.]]></value>
<value xml:lang="jp"><![CDATA[nginxを使用する場合、短縮アクセスを使用するためにrewrite設定が必要です。設定方法は<a href="https://github.com/xpressengine/xe-core/wiki/Nginx-rewite-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0" target="_blank">このページ</a>を参考ください。]]></value>
</item>
<item name="time_zone">
<value xml:lang="ko"><![CDATA[표준 시간대]]></value>
@ -698,8 +750,8 @@
<value xml:lang="vi"><![CDATA[Múi giờ]]></value>
</item>
<item name="about_time_zone">
<value xml:lang="ko"><![CDATA[서버의 설정시간과 사용하려는 장소의 시간이 차이가 날 경우 표준 시간대를 지정하면 표시되는 시간을 지정된 곳의 시간으로 사용할 수 있습니다.]]></value>
<value xml:lang="en"><![CDATA[If the server time and the time on your location don't accord each other, you can set the time to be same as your location by using the time zone]]></value>
<value xml:lang="ko"><![CDATA[서버의 시간과 주 사용자의 시간이 다를 경우 (예: 해외 서버인 경우) 원하는 표준 시간대를 선택할 수 있습니다.]]></value>
<value xml:lang="en"><![CDATA[If the server time is different from your time zone, you can use this option to display times in your time zone.]]></value>
<value xml:lang="jp"><![CDATA[サーバの設定時間とサービスしているローカル時間との差がある場合、タイムゾーンを指定して表示時間を合わせることができます。]]></value>
<value xml:lang="zh-CN"><![CDATA[服务器时间和您所处的时间有差异时,可以设置时区来满足你所需要的时间显示。]]></value>
<value xml:lang="zh-TW"><![CDATA[主機時間和您所處的時間有差異時,可以設置時區來滿足你所需要的時間顯示。]]></value>
@ -732,16 +784,16 @@
<value xml:lang="vi"><![CDATA[Nó sẽ cho phép gửi thư từ MTA mà không phân biệt CRLF.]]></value>
</item>
<item name="about_database_file">
<value xml:lang="ko"><![CDATA[Sqlite는 파일에 데이터를 저장합니다. 데이터베이스 파일의 위치를 웹에서 접근할 수 없는 곳으로 해야 합니다.<br/><span style="color:red">데이터 파일은 707퍼미션 설정된 곳으로 지정해주세요.</span>]]></value>
<value xml:lang="en"><![CDATA[Sqlite saves data in a file. Location of the database file should be unreachable by web<br/><span style="color:red">Data file should be inside the permission of 707.</span>]]></value>
<value xml:lang="jp"><![CDATA[Sqliteはファイルにデータを保存します。そのため、データベースファイルにはウェブからアクセスできない場所にしなければなりません。<br/><span style="color:red">データファイルのパーミッションは「707」に設定してください。</span>]]></value>
<value xml:lang="zh-CN"><![CDATA[Sqlite是文件里保存数据。数据库的文件位置应该放在web不能访问的地方。<br/><span style="color:red">数据文件应放在具有707属性的位置。</span>]]></value>
<value xml:lang="zh-TW"><![CDATA[Sqlite是保存資料於檔案中。資料庫的檔案位置應該放在 web 不能訪問的地方。<br/><span style="color:red">資料檔案應放在具有 707 權限的位置。</span>]]></value>
<value xml:lang="fr"><![CDATA[Sqlite conserve des données dans le fichier. Vous devez placer le fichier de la base de données où l'on ne peut pas accéder par web.<br/><span style="color:red">Le fichier des Donées doit être en dedans la permission 707.</span>]]></value>
<value xml:lang="ru"><![CDATA[Sqlite сохраняет данные в файл. Размещение базы данных должно быть недоступно с веб<br/><span style="color:red">Файл базы данных должен иметь права доступа 707.</span>]]></value>
<value xml:lang="es"><![CDATA[Sqlite guarda el dato en el archivo. Es necesario crear archivo de BD en un lugar inaccesible de la web.<br/><span style="color:red">El archivo de dato debe estar ubicado en un lugar con la atribución 707.</span>]]></value>
<value xml:lang="tr"><![CDATA[Sqlite veriyi dosyaya kaydeder. Veritabanı dosyası tarayıcıyla erişilebilir olmamalıdır.<br/><span style="color:red">Veri dosyası 707 yetki kapsamı içinde olmalıdır.</span>]]></value>
<value xml:lang="vi"><![CDATA[Sqlite lưu trữ dữ liệu trong một File, vì vậy cần tới sự truy cập đến nó trong Database. <br/><span style="color:red">Hãy CHMOD thành 707.</span>]]></value>
<value xml:lang="ko"><![CDATA[Sqlite는 파일에 데이터를 저장합니다. 데이터베이스 파일의 위치를 웹에서 접근할 수 없는 곳으로 해야 합니다.<br/><span style="color:red">데이터 파일은 777퍼미션 설정된 곳으로 지정해주세요.</span>]]></value>
<value xml:lang="en"><![CDATA[Sqlite saves data in a file. Location of the database file should be unreachable by web<br/><span style="color:red">Data file should be inside the permission of 777.</span>]]></value>
<value xml:lang="jp"><![CDATA[Sqliteはファイルにデータを保存します。そのため、データベースファイルにはウェブからアクセスできない場所にしなければなりません。<br/><span style="color:red">データファイルのパーミッションは「777」に設定してください。</span>]]></value>
<value xml:lang="zh-CN"><![CDATA[Sqlite是文件里保存数据。数据库的文件位置应该放在web不能访问的地方。<br/><span style="color:red">数据文件应放在具有777属性的位置。</span>]]></value>
<value xml:lang="zh-TW"><![CDATA[Sqlite是保存資料於檔案中。資料庫的檔案位置應該放在 web 不能訪問的地方。<br/><span style="color:red">資料檔案應放在具有 777 權限的位置。</span>]]></value>
<value xml:lang="fr"><![CDATA[Sqlite conserve des données dans le fichier. Vous devez placer le fichier de la base de données où l'on ne peut pas accéder par web.<br/><span style="color:red">Le fichier des Donées doit être en dedans la permission 777.</span>]]></value>
<value xml:lang="ru"><![CDATA[Sqlite сохраняет данные в файл. Размещение базы данных должно быть недоступно с веб<br/><span style="color:red">Файл базы данных должен иметь права доступа 777.</span>]]></value>
<value xml:lang="es"><![CDATA[Sqlite guarda el dato en el archivo. Es necesario crear archivo de BD en un lugar inaccesible de la web.<br/><span style="color:red">El archivo de dato debe estar ubicado en un lugar con la atribución 777.</span>]]></value>
<value xml:lang="tr"><![CDATA[Sqlite veriyi dosyaya kaydeder. Veritabanı dosyası tarayıcıyla erişilebilir olmamalıdır.<br/><span style="color:red">Veri dosyası 777 yetki kapsamı içinde olmalıdır.</span>]]></value>
<value xml:lang="vi"><![CDATA[Sqlite lưu trữ dữ liệu trong một File, vì vậy cần tới sự truy cập đến nó trong Database. <br/><span style="color:red">Hãy CHMOD thành 777.</span>]]></value>
</item>
<item name="success_installed">
<value xml:lang="ko"><![CDATA[설치가 되었습니다.]]></value>
@ -889,9 +941,9 @@
<value xml:lang="vi"><![CDATA[Tên Host FTP]]></value>
</item>
<item name="ftp_port">
<value xml:lang="ko"><![CDATA[FTP port]]></value>
<value xml:lang="en"><![CDATA[FTP port]]></value>
<value xml:lang="jp"><![CDATA[FTPポート番号port]]></value>
<value xml:lang="ko"><![CDATA[FTP 서버 포트]]></value>
<value xml:lang="en"><![CDATA[FTP server port]]></value>
<value xml:lang="jp"><![CDATA[FTPサーバーポート]]></value>
<value xml:lang="zh-CN"><![CDATA[FTP端口]]></value>
<value xml:lang="zh-TW"><![CDATA[FTP 埠口]]></value>
<value xml:lang="de"><![CDATA[FTP Port]]></value>
@ -1033,8 +1085,8 @@
<value xml:lang="vi"><![CDATA[Đường dẫn thư mục đã cài đặt XE]]></value>
</item>
<item name="msg_ftp_installed_ftp_realpath">
<value xml:lang="ko"><![CDATA[설치된 XE의 FTP 경로]]></value>
<value xml:lang="en"><![CDATA[Absolute FTP Path of XE]]></value>
<value xml:lang="ko"><![CDATA[XE 설치 경로]]></value>
<value xml:lang="en"><![CDATA[XE installation path]]></value>
<value xml:lang="jp"><![CDATA[インストールされたXEのFTP絶対パス設定]]></value>
<value xml:lang="zh-CN"><![CDATA[FTP绝对路径设置]]></value>
<value xml:lang="zh-TW"><![CDATA[XE的 FTP 絕對路經]]></value>

View file

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ruleset version="1.5.0">
<customrules>
</customrules>
<fields>
<field name="time_zone" required="true" />
</fields>
</ruleset>

View file

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ruleset version="1.5.0">
<customrules>
</customrules>
<fields>
<field name="db_type" required="true" default="mysql" />
<field name="db_hostname" required="true" length="1:250" default="localhost" />
<field name="db_port" required="true" length="1:250" rule="number" default="3306" />
<field name="db_userid" required="true" length="1:250" rule="alpha_number" />
<field name="db_password" required="true" length="1:250"/>
<field name="db_database" required="true" length="1:250" />
<field name="db_table_prefix" length="2:20" rule="alpha_number" />
</fields>
</ruleset>

View file

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ruleset version="1.5.0">
<customrules>
</customrules>
<fields>
<field name="db_type" required="true" default="mysql" />
<field name="db_hostname" required="true" length="1:250" default="localhost" />
<field name="db_port" required="true" length="1:250" rule="number" default="3306" />
<field name="db_userid" required="true" length="1:250" rule="alpha_number" />
<field name="db_password" required="true" length="1:250"/>
<field name="db_database" required="true" length="1:250" />
<field name="db_table_prefix" length="2:20" rule="alpha" />
</fields>
</ruleset>

View file

@ -4,9 +4,10 @@
</customrules>
<fields>
<field name="email_address" required="true" length="1:200" rule="email" />
<field name="password" required="true" length="1:20" />
<field name="password2" required="true" length="1:20" equalto="password" />
<field name="password" required="true" length="1:60" />
<field name="password2" required="true" length="1:60" equalto="password" />
<field name="nick_name" required="true" length="2:20" />
<field name="user_id" required="true" length="2:20" rule="userid" />
<field name="time_zone" required="true" />
</fields>
</ruleset>

View file

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ruleset version="1.5.0">
<customrules>
</customrules>
<fields>
<field name="db_type" required="true" default="mysql" />
<field name="db_hostname" required="true" length="1:250" default="localhost" />
<field name="db_port" required="true" length="1:250" rule="number" default="3306" />
<field name="db_userid" required="true" length="1:250" rule="alpha_number" />
<field name="db_password" required="true" length="1:250"/>
<field name="db_database" required="true" length="1:250" />
<field name="db_table_prefix" length="2:20" rule="alpha_number" />
</fields>
</ruleset>

View file

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ruleset version="1.5.0">
<customrules>
</customrules>
<fields>
<field name="db_type" required="true" default="mysql" />
<field name="db_hostname" required="true" length="1:250" default="localhost" />
<field name="db_port" required="true" length="1:250" rule="number" default="3306" />
<field name="db_userid" required="true" length="1:250" />
<field name="db_password" required="true" length="1:250"/>
<field name="db_database" required="true" length="1:250" />
<field name="db_table_prefix" length="2:20" rule="alpha_number" />
</fields>
</ruleset>

View file

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ruleset version="1.5.0">
<customrules>
</customrules>
<fields>
<field name="db_type" required="true" default="mysql" />
<field name="db_hostname" required="true" length="1:250" default="localhost" />
<field name="db_port" required="true" length="1:250" rule="number" default="3306" />
<field name="db_userid" required="true" length="1:250" rule="alpha_number" />
<field name="db_password" required="true" length="1:250"/>
<field name="db_database" required="true" length="1:250" />
<field name="db_table_prefix" length="2:20" rule="alpha" />
</fields>
</ruleset>

View file

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ruleset version="1.5.0">
<customrules>
</customrules>
<fields>
<field name="db_type" required="true" default="mysql" />
<field name="db_database" required="true" length="1:250" />
<field name="db_table_prefix" length="2:20" rule="alpha" />
</fields>
</ruleset>

View file

@ -1,55 +1,61 @@
<load target="js/install_admin.js" />
<include target="header.html" />
<div id="body">
<include target="progress_menu.html" />
<div id="content">
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
<form id="body" ruleset="install" method="post" action="./">
<include target="progress_menu.html" />
<div id="content">
<h2>{$lang->install_progress_menu['adminInfo']}</h2>
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<input type="hidden" name="act" value="procInstall" />
<input type="hidden" name="use_rewrite" value="{$use_rewrite}" />
<div class="x_control-group">
<label for="aMail" class="x_control-label">{$lang->email_address}</label>
<div class="x_controls">
<input name="email_address" type="email" id="aMail" class="focus" required />
</div>
<form ruleset="install" action="./" method="post" class="x_form-horizontal">
<input type="hidden" name="act" value="procInstall" />
<div class="x_control-group">
<label for="aMail" class="x_control-label"><strong>*</strong> {$lang->email_address}</label>
<div class="x_controls">
<input name="email_address" type="email" id="aMail" required />
</div>
</div>
<div class="x_control-group">
<label for="aPw1" class="x_control-label"><strong>*</strong> {$lang->password1}</label>
<div class="x_controls">
<input name="password" type="password" id="aPw1" required />
</div>
</div>
<div class="x_control-group">
<label for="aPw2" class="x_control-label"><strong>*</strong> {$lang->password2}</label>
<div class="x_controls">
<input name="password2" type="password" id="aPw2" required />
</div>
</div>
<div class="x_control-group">
<label for="aNick" class="x_control-label"><strong>*</strong> {$lang->nick_name}</label>
<div class="x_controls">
<input name="nick_name" type="text" id="aNick" required />
</div>
</div>
<div class="x_control-group">
<label for="aId" class="x_control-label"><strong>*</strong> {$lang->user_id}</label>
<div class="x_controls">
<input name="user_id" type="text" id="aId" required />
</div>
</div>
<div class="desc">
<p>{$lang->install_notandum}</p>
</div>
<div class="ibtnArea">
<span class="x_pull-left">
<a href="{getUrl('', 'act', 'dispInstallConfigForm')}" class="x_btn x_btn-small x_btn-inverse"><i class="x_icon-chevron-left x_icon-white"></i> {$lang->cmd_back}</a>
</span>
<span class="x_pull-right">
<button type="submit" class="x_btn x_btn-small x_btn-inverse x_disabled" id="task-done"><i class="x_icon-ok x_icon-white"></i> {$lang->cmd_complete}</button>
</span>
</div>
</form>
</div>
<div class="x_control-group">
<label for="aPw1" class="x_control-label">{$lang->password1}</label>
<div class="x_controls">
<input name="password" type="password" id="aPw1" required />
</div>
</div>
<div class="x_control-group">
<label for="aPw2" class="x_control-label">{$lang->password2}</label>
<div class="x_controls">
<input name="password2" type="password" id="aPw2" required />
</div>
</div>
<div class="x_control-group">
<label for="aNick" class="x_control-label">{$lang->nick_name}</label>
<div class="x_controls">
<input name="nick_name" type="text" id="aNick" required value="" />
</div>
</div>
<div class="x_control-group">
<label for="aId" class="x_control-label">{$lang->user_id}</label>
<div class="x_controls">
<input name="user_id" type="text" id="aId" required value="" />
</div>
</div>
<p class="install_help">{$lang->install_notandum}</p>
<div class="x_control-group">
<label for="time_zone" class="x_control-label">{$lang->time_zone}</label>
<div class="x_controls">
<select name="time_zone" style="width:100%">
<option loop="$time_zone => $key,$val" id="{$key}" value="{$key}" selected="selected"|cond="$key==date('O')">{$val}</option>
</select>
</div>
</div>
<p class="install_help">{$lang->about_time_zone}</p>
</div>
<div id="buttons">
<div class="align-left">
<a href="{getUrl('', 'act','dispInstallSelectDB')}" class="button grey">&laquo; {$lang->cmd_back}</a>
</div>
<div class="align-right">
<button type="submit" id="task-done" value="">{$lang->cmd_complete} &raquo;</button>
</div>
</div>
</form>
<include target="footer.html" />

View file

@ -2,50 +2,55 @@
<div id="body">
<include target="progress_menu.html" />
<div id="content">
<ul>
<li loop="$checklist => $key,$val" cond="!$val">
{@ $isDisable = TRUE}
<strong>{$lang->install_checklist_title[$key]}<block cond="$key == 'php_version'">(Ver. {$phpversion})</block></strong>
:
<em><i class="x_icon-ban-circle x_icon-white"></i> {$lang->disable}</em>
<p>{sprintf($lang->install_checklist_desc[$key], __XE_MIN_PHP_VERSION__)}</p>
<p cond="$key == 'php_version' && $phpversion_warning === true">
{sprintf($lang->install_checklist_desc['php_version_warning'], __XE_RECOMMEND_PHP_VERSION__)} <a href="https://secure.php.net/supported-versions.php" target="_blank">[{$lang->more}]</a>
</p>
</li>
</ul>
<div cond="!$isDisable">
<p>
<i class="x_icon-ok-sign x_icon-white"></i>
<strong>XE {__XE_VERSION__}</strong> {$lang->install_condition_enable}
</p>
<ul id="details">
<li loop="$checklist => $key,$val">
<strong>{$lang->install_checklist_title[$key]}<block cond="$key == 'php_version'">(Ver. {$phpversion})</block></strong>
:
<em>{$lang->enable}</em>
<p cond="$key == 'php_version' && $phpversion_warning === true">
<h2 cond="$install_enable">{$lang->install_condition_enable}</h2>
<h2 cond="!$install_enable">{$lang->install_condition_disable}</h2>
<table id="check_env">
<block loop="$checklist => $key,$val">
<tr>
<td class="check_env_item">
{$lang->install_checklist_title[$key]}
<block cond="$key == 'php_version'">({$phpversion})</block>
</td>
<td class="check_env_status">
<span cond="$val" class="ok">OK</span>
<span cond="!$val" class="error">ERROR</span>
</td>
</tr>
<tr cond="$key === 'php_version' && $phpversion_warning === true">
<td colspan="2" class="error_description">
{sprintf($lang->install_checklist_desc['php_version_warning'], __XE_RECOMMEND_PHP_VERSION__)} <a href="https://secure.php.net/supported-versions.php" target="_blank">[{$lang->more}]</a>
</p>
</li>
</ul>
</td>
</tr>
<tr cond="$key !== 'php_version' && !$val && isset($lang->install_checklist_desc[$key])">
<td colspan="2" class="error_description">
{$lang->install_checklist_desc[$key]}
</td>
</tr>
</block>
<tr>
<td class="check_env_item">mod_rewrite</td>
<td class="check_env_status">
<span cond="$use_rewrite === 'Y'" class="ok">OK</span>
<span cond="$use_rewrite === 'N'">&mdash;</span>
</td>
</tr>
<tr cond="$use_rewrite === 'N'">
<td colspan="2" class="error_description">
{$lang->disable_rewrite}
<block cond="$use_nginx == 'Y'"><br />{$lang->about_nginx_rewrite}</block>
<br /><strong>{$lang->disable_rewrite_can_proceed}</strong>
</td>
</tr>
</table>
</div>
<div id="buttons">
<div class="align-left">
<a href="{getUrl('', 'act','dispInstallLicenseAgreement')}" class="button grey">&laquo; {$lang->cmd_back}</a>
</div>
<div cond="$use_rewrite == 'N' && $checklist['permission'] == true">
<p>
<i class="x_icon-ok-sign x_icon-white"></i>
{$lang->disable_rewrite}
<block cond="$use_nginx == 'Y'"><br> {$lang->about_nginx_rewrite}</block>
</p>
</div>
<div class="ibtnArea">
<span class="x_pull-left">
<a href="{getUrl('', 'act','dispInstallLicenseAgreement')}" class="x_btn x_btn-small x_btn-inverse"><i class="x_icon-chevron-left x_icon-white"></i> {$lang->cmd_back}</a>
</span>
<span class="x_pull-right">
<a cond="$install_enable" class="x_btn x_btn-small x_btn-inverse" id="task-checklist-confirm" href="{getUrl('','act','dispInstallSelectDB')}">{$lang->cmd_install_next} <i class="x_icon-chevron-right x_icon-white"></i></a>
<a cond="!$install_enable" class="x_btn x_btn-small x_btn-inverse" id="task-checklist-fix" href="{getUrl('','act',$act)}">{$lang->cmd_install_fix_checklist} <i class="x_icon-chevron-right x_icon-white"></i></a>
</span>
<div class="align-right">
<a cond="$install_enable" class="button" id="task-checklist-confirm" href="{getUrl('','act','dispInstallSelectDB')}">{$lang->cmd_next} &raquo;</a>
<a cond="!$install_enable" class="button" id="task-checklist-fix" href="{getUrl('','act',$act)}">{$lang->cmd_install_refresh_page} &raquo;</a>
</div>
</div>
</div>
<include target="footer.html" />

View file

@ -1,34 +0,0 @@
<load target="js/install_admin.js" />
<include target="header.html" />
<div id="body">
<include target="progress_menu.html" />
<div id="content">
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form action="./" method="post">
<input type="hidden" name="act" value="procConfigSetting" />
<input type="hidden" name="use_rewrite" value="{$use_rewrite}" />
<div class="x_control-group">
<select name="time_zone" style="width:100%">
<option loop="$time_zone => $key,$val" id="{$key}" value="{$key}" selected="selected"|cond="$key==date('O')">{$val}</option>
</select>
<p>{$lang->about_time_zone}</p>
</div>
<div class="ibtnArea">
<span class="x_pull-left">
<button type="button" onclick="document.backForm.submit()" class="x_btn x_btn-small x_btn-inverse"><i class="x_icon-chevron-left x_icon-white"></i> {$lang->cmd_back}</button>
</span>
<span class="x_pull-right">
<button type="submit" class="x_btn x_btn-small x_btn-inverse" id="task-settings">{$lang->cmd_next} <i class="x_icon-chevron-right x_icon-white"></i></button>
</span>
</div>
</form>
<form name="backForm" method="post" action="./">
<input type="hidden" name="module" value="{$module}" />
<input type="hidden" name="act" value="dispInstallDBForm" />
<input type="hidden" name="db_type" value="{$db_type}" />
</form>
</div>
</div>
<include target="footer.html" />

View file

@ -1,57 +1,229 @@
@charset "utf-8";
/* NAVER (developers@xpressengine.com) */
/* Element Reset */
html, body{margin:0;min-height:100%}
body, .x input, .x textarea, .x select, .x table, .x button, .x label{font-family:Tahoma, Geneva, sans-serif;font-size:12px}
body{background:-webkit-linear-gradient(top,#ccc,#fff);background:-moz-linear-gradient(top,#ccc,#fff);background:-o-linear-gradient(top,#ccc,#fff);background:-ms-linear-gradient(top,#ccc,#fff);background:linear-gradient(top,#ccc,#fff)}
img, fieldset{border:0}
form, fieldset{margin:0;padding:0}
.x em{color:#ffc;font-weight:normal;font-style:normal}
.x strong{color:#f60}
.x button{margin:0;padding:0;overflow:visible;cursor:pointer}
.x a{text-decoration:none}
.x a:hover,
.x a:active,
.x a:focus{text-decoration:underline}
/* Bootstrap Override */
.x label[for],
.x .x_form-horizontal .x_control-label{font-weight:bold}
.x ol,
.x ul{margin-top:15px;margin-bottom:15px}
.x input[type="radio"],
.x input[type="checkbox"]{margin:0}
.x hr{border-bottom:0}
.x .x_btn{text-decoration:none}
.x .x_control-group{padding-top:8px;margin-bottom:10px;border-top:1px dotted #888;clear:both}
.x .x_control-group:first-child,
.x .x_control-group:first-of-type{border-top:0;padding-top:0}
html, body { margin: 0; min-height: 100%; background-color: #f0f0f0; }
img, form, fieldset { border: 0; margin:0; padding: 0; }
.x a { color: #1976d2; text-decoration: none; }
.x a:hover, .x a:active, .x a:focus { text-decoration: underline; }
/* Font */
.x, .x input, .x textarea, .x select, .x table, .x button, .x label {
font: normal 13px/100% NanumGothic, "Malgun Gothic", Gulim, sans-serif;
}
.enfont, .enfont input, .enfont textarea, .enfont select, .enfont table, .enfont button, .enfont label {
font: normal 13px/100% Arial, NanumGothic, "Malgun Gothic", sans-serif;
}
.x input[type=password] {
font-family: Arial, sans-serif;
}
/* Layout */
.x{width:800px;margin:120px auto 0 auto;background-color:transparent}
.x #header{position:relative;background:#444;margin:0 0 1px 0;padding:10px 20px;color:#fff;border-radius:5px 5px 0 0}
.x #header h1{margin:0}
.x #header em{position:absolute;bottom:10px;right:20px;font-weight:bold;font-size:14px;color:#eee}
.x #header em strong{font-size:20px;color:#F60}
.x #body{width:580px;padding:0 0 0 220px;position:relative;*zoom:1}
.x #body:after{content:"";display:block;clear:both}
.x #progress{position:absolute;left:0;top:0;width:219px}
.x #progress ul{list-style:none;margin:0;padding:0}
.x #progress li{position:relative;margin:0 0 1px 0;vertical-align:top;line-height:40px;color:#999;text-indent:30px;background-color:#555;background-image:url(../img/icoStatus.gif);background-repeat:no-repeat;background-position:10px 0;*zoom:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.x #progress li:last-child{border-radius:0 0 0 5px}
.x #progress li.done{background-position:10px -40px}
.x #progress li.active{background-color:#666;background-position:10px -80px;font-weight:bold;color:#fff;margin-right:-1px}
.x #content{position:relative;width:500px;min-height:145px;padding:40px;background:#666;color:#fff}
.x #content a{color:#FFC}
.x {
width: 90%; max-width: 800px;
margin: 80px auto 0 auto;
background-color: transparent;
}
@media screen and (max-width: 640px) {
.x { margin-top: 48px; }
}
@media screen and (max-width: 480px) {
.x { margin-top: 32px; }
}
.x #header {
clear: both;
margin: 0;
}
.x #header h1 {
font: bold 48px/100% Arial, sans-serif;
color: #444;
text-align: center;
text-shadow: 2px 2px 3px rgba(128, 128, 128, 0.4);
margin: 0 0 16px 0;
}
.x #header h1 span.green {
color: #55a72f;
}
.x #header h1 span.brown {
color: #905a29;
}
.x #header h1 span.colon {
color: #888888;
position: relative;
top: -4px;
}
.x #header h2 {
font: normal 16px/110% Arial, sans-serif;
color: #666;
text-align: center;
text-shadow: 1px 1px 1.5px rgba(128, 128, 128, 0.2);
margin: 0 0 32px 0;
}
.x #header h2 strong {
font-weight: bold;
color: #444;
}
.x #body {
clear: both;
position: relative;
background-color: #fff;
border-radius: 2px;
margin-bottom: 32px;
box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.18), 0px 2px 8px 0px rgba(0, 0, 0, 0.12);
}
.x #progress {
clear: both; padding: 16px 16px 4px 16px; border-bottom: 1px solid #ddd;
border-top-left-radius: 2px; border-top-right-radius: 2px;
background-color: #fbfbfb;
}
.x #progress ul { clear: both; margin: 0; padding: 0; }
.x #progress li { list-style:none; display: inline-block; color: #888; margin: 0 4px 12px 0; padding: 0; }
.x #progress li.done { color: #444; }
.x #progress li.active { color: #444; font-weight: bold; }
.x #progress li:after { content: ">"; color: #aaa; font-weight: normal; margin-left: 8px; }
.x #progress li:last-child { margin-right: 0; }
.x #progress li:last-child:after { content: ""; margin-left: 0; }
.x #footer {
text-align: center;
margin-bottom: 32px;
font: 11px/160% Arial, sans-serif;
color: #aaa;
}
/* Table */
table {
clear: both;
width: 100%;
box-sizing: border-box;
border-collapse: collapse;
margin: 0 0 16px 0;
}
table tr td {
padding: 4px 8px; border: 1px solid #ddd;
border-spacing: 0;
line-height: 160%;
}
table tr td.check_env_status { text-align: center; }
table tr td.check_env_status span.ok { color: #4caf50; font-weight: bold; }
table tr td.check_env_status span.error { color: #f44336; font-weight: bold; }
table tr td.check_env_status span.warn { color: #fb8c00; font-weight: bold; }
table tr td.error_description { text-align: center; color: #666; }
/* Button Area */
.x .ibtnArea{position:absolute;bottom:-61px;right:0;width:540px;height:30px;margin:1px 0 0 0;padding:15px 20px;text-align:center;*zoom:1;color:#fff;background:#555;border-radius:0 0 5px 5px}
.x .ibtnArea:after{content:"";display:block;clear:both}
.x .ibtnArea .x_btn-inverse{color:#fff !important}
.x .ibtnArea .x_btn>i{opacity:.75;filter:alpha(opacity=75)}
.x #buttons {
clear: both; padding: 16px;
border-top: 1px solid #ddd;
height: 34px;
border-bottom-left-radius: 2px; border-bottom-right-radius: 2px;
background-color: #fbfbfb;
}
.x #buttons .align-left {
float: left;
}
.x #buttons .align-right {
float: right;
}
button, a.button {
display: inline-block;
margin: 0px 4px;
padding: 9px 18px 9px 18px;
font-weight: bold !important;
line-height: 15px;
text-align: center;
text-decoration: none;
border: 0;
cursor: pointer;
color: #fff;
background-color: #1976d2;
border-radius: 2px;
box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.12), 0px 2px 8px 0px rgba(0, 0, 0, 0.08);
}
button.grey, a.button.grey {
background-color: #aaa;
}
button:hover, a.button:hover {
text-decoration: none;
background-color: #303f9f;
}
button.grey:hover, a.button.grey:hover {
background-color: #888;
}
/* Content */
.x h2{font-size:22px;margin:0 0 15px 0;color:#ff9;line-height:1}
.x .desc{padding:10px 20px;margin:15px 0;background:#555;color:#fff;line-height:1.5;border-radius:5px}
.x .desc strong{color:#F60}
.x .language{list-style:none;margin:0;padding:0 0 0 20px}
.x .language li{position:relative;margin:0 0 7px 0}
.x .language li>i{position:absolute;top:2px;left:-20px}
.x #content { clear: both; padding: 16px 16px 4px 16px; }
.x #content a { }
.x #content h2 {
font-size: 20px;
line-height: 140%;
margin: 0 0 16px 0;
}
.x #content p {
line-height: 160%;
margin: 0 0 12px 0;
}
.x #content p.install_help {
margin: -6px 0 16px 16px;
color: #888;
}
.x #content ul {
margin: 0 0 12px 0;
}
.x #content ul li {
line-height: 160%;
}
.x #content label input[type=checkbox] {
position: relative;
top: 2px;
}
.x #language {
clear: both;
margin: 0 0 24px 0;
padding: 0;
text-align: center;
line-height: 140%;
}
.x #language li {
list-style: none;
display: inline-block;
margin-right: 12px;
font-size: 12px;
}
.x #language li:last-child {
margin-right: 0;
}
.x #language li a {
color: #666;
}
.x .x_control-group { clear: both; margin-bottom: 16px; }
.x .x_control-group .x_control-label { display: inline-block; line-height: 17px; width: 130px; }
.x .x_control-group .x_controls { display: inline-block; }
.x .x_control-group .x_controls input {
line-height: 17px; padding: 3px 5px;
width: 260px; box-sizing: border-box;
}
.x .x_control-group .x_controls select {
line-height: 17px; padding: 3px 7px 3px 3px;
width: 260px; box-sizing: border-box;
}
@media screen and (max-width: 480px) {
.x .x_control-group .x_control-label { display: block; clear: both; margin-bottom: 6px; }
.x .x_control-group .x_controls { display: block; clear: both; }
}
/* Waiting for server response */
.wfsr{display:none;position:absolute;position:fixed;left:0;top:0;right:0;bottom:0;z-index:100;color:#fff;background:#333 url(../../common/img/msg.loading.gif) no-repeat center 90px;text-align:center;margin:0;padding:120px 0 0 0;opacity:.8;filter:alpha(opacity=80);font:bold 16px "Helvetica Neue", Helvetica, Arial, , Dotum, sans-serif}
.wfsr {
display: none;
position: absolute;
position: fixed;
left: 0; top: 0; right: 0; bottom: 0; z-index: 100;
color: #fff;
background: #333 url(../../common/img/msg.loading.gif) no-repeat center 90px;
text-align: center;
margin: 0;
padding: 120px 0 0 0;
opacity: 0.8; filter:alpha(opacity=80);
font-size: 16px; font-weight: bold;
}

View file

@ -1,2 +1,14 @@
<ul id="language" class="enfont">
<li loop="$lang_supported=>$key,$val">
<i cond="$lang_type==$key" class="x_icon-ok-sign x_icon-white" title="Selected Language"></i>
<a href="{getUrl('l', $key)}" cond="$lang_type!=$key">{$val}</a>
<strong cond="$lang_type==$key">{$val}</strong>
</li>
</ul>
<div id="footer">
XpressEngine XETown Remix (XE:XTR) is a fork of the <a href="https://www.xpressengine.com" target="_blank">XpressEngine</a> CMS<br />
with additional patches by members of the <a href="https://www.xetown.com" target="_blank">XETOWN</a> community.<br />
Please see our <a href="https://github.com/xetown/xe-core" target="_blank">GitHub repository</a> for a full timeline of patches and their authors.
</div>
</div>
<script src="js/install.js"></script>

View file

@ -1,54 +0,0 @@
<load target="js/install_admin.js" />
<include target="header.html" />
<div id="body">
<include target="progress_menu.html" />
<div id="content">
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form rule="cubrid" action="./" method="post" class="x_form-horizontal">
<input type="hidden" value="{$error_return_url}" name="error_return_url">
<input type="hidden" name="act" value="procCubridDBSetting" />
<input type="hidden" name="db_type" value="{$db_type}" />
<h2>{$title}</h2>
<div class="x_control-group">
<label for="dbId" class="x_control-label"><strong>*</strong> {$lang->db_userid}</label>
<div class="x_controls"><input name="db_userid" type="text" id="dbId" required /></div>
</div>
<div class="x_control-group">
<label for="dbPw" class="x_control-label"><strong>*</strong> {$lang->db_password}</label>
<div class="x_controls"><input name="db_password" type="password" id="dbPw" required /></div>
</div>
<div class="x_control-group">
<label for="dbName" class="x_control-label"><strong>*</strong> {$lang->db_name}</label>
<div class="x_controls"><input name="db_database" type="text" id="dbName" required /></div>
</div>
<div class="desc">{$lang->db_info_desc}</div>
<p style="text-align:right"><a href="#advanced" data-toggle style="text-decoration:underline">{$lang->advanced_setup}</a></p>
<div id="advanced">
<div class="x_control-group">
<label for="dbHostName" class="x_control-label"><strong>*</strong> {$lang->db_hostname}</label>
<div class="x_controls"><input name="db_hostname" value="127.0.0.1" type="text" id="dbHostName" required /></div>
</div>
<div class="x_control-group">
<label for="dbPort" class="x_control-label"><strong>*</strong> {$lang->db_port}</label>
<div class="x_controls"><input name="db_port" value="33000" type="text" id="dbPort" required /></div>
</div>
<div class="x_control-group">
<label for="dbPrefix" class="x_control-label"><strong>*</strong> {$lang->db_table_prefix}</label>
<div class="x_controls"><input name="db_table_prefix" type="text" id="dbPrefix" value="xe" required /></div>
</div>
<div class="desc">{$lang->db_prefix_desc}</div>
</div>
<div class="ibtnArea">
<span class="x_pull-left">
<a href="{getUrl('', 'act', 'dispInstallSelectDB')}" class="x_btn x_btn-small x_btn-inverse"><i class="x_icon-chevron-left x_icon-white"></i> {$lang->cmd_back}</a>
</span>
<div class="x_pull-right">
<button type="submit" class="x_btn x_btn-small x_btn-inverse x_disabled" id="task-db-info">{$lang->cmd_next} <i class="x_icon-chevron-right x_icon-white"></i></button>
</div>
</div>
</form>
</div>
</div>
<include target="footer.html" />

View file

@ -1,54 +0,0 @@
<load target="js/install_admin.js" />
<include target="header.html" />
<div id="body">
<include target="progress_menu.html" />
<div id="content">
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form rule="mssql" action="./" method="post" class="x_form-horizontal">
<input type="hidden" value="{$error_return_url}" name="error_return_url">
<input type="hidden" name="act" value="procMssqlDBSetting" />
<input type="hidden" name="db_type" value="{$db_type}" />
<h2>{$title}</h2>
<div class="x_control-group">
<label for="dbId" class="x_control-label"><strong>*</strong> {$lang->db_userid}</label>
<div class="x_controls"><input name="db_userid" type="text" id="dbId" required /></div>
</div>
<div class="x_control-group">
<label for="dbPw" class="x_control-label"><strong>*</strong> {$lang->db_password}</label>
<div class="x_controls"><input name="db_password" type="password" id="dbPw" required /></div>
</div>
<div class="x_control-group">
<label for="dbName" class="x_control-label"><strong>*</strong> {$lang->db_name}</label>
<div class="x_controls"><input name="db_database" type="text" id="dbName" required /></div>
</div>
<div class="desc">{$lang->db_info_desc}</div>
<p style="text-align:right"><a href="#advanced" data-toggle style="text-decoration:underline">{$lang->advanced_setup}</a></p>
<div id="advanced">
<div class="x_control-group">
<label for="dbHostName" class="x_control-label"><strong>*</strong> {$lang->db_hostname}</label>
<div class="x_controls"><input name="db_hostname" value="127.0.0.1" type="text" id="dbHostName" required /></div>
</div>
<div class="x_control-group">
<label for="dbPort" class="x_control-label"><strong>*</strong> {$lang->db_port}</label>
<div class="x_controls"><input name="db_port" value="3306" type="text" id="dbPort" required /></div>
</div>
<div class="x_control-group">
<label for="dbPrefix" class="x_control-label"><strong>*</strong> {$lang->db_table_prefix}</label>
<div class="x_controls"><input name="db_table_prefix" type="text" id="dbPrefix" value="xe" required /></div>
</div>
<div class="desc">{$lang->db_prefix_desc}</div>
</div>
<div class="ibtnArea">
<span class="x_pull-left">
<a href="{getUrl('', 'act', 'dispInstallSelectDB')}" class="x_btn x_btn-small x_btn-inverse"><i class="x_icon-chevron-left x_icon-white"></i> {$lang->cmd_back}</a>
</span>
<div class="x_pull-right">
<button type="submit" class="x_btn x_btn-small x_btn-inverse x_disabled" id="task-db-info">{$lang->cmd_next} <i class="x_icon-chevron-right x_icon-white"></i></button>
</div>
</div>
</form>
</div>
</div>
<include target="footer.html" />

View file

@ -1,54 +0,0 @@
<load target="js/install_admin.js" />
<include target="header.html" />
<div id="body">
<include target="progress_menu.html" />
<div id="content">
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form rule="mysql" action="./" method="post" class="x_form-horizontal">
<input type="hidden" value="{$error_return_url}" name="error_return_url">
<input type="hidden" name="act" value="procMysqlDBSetting" />
<input type="hidden" name="db_type" value="{$db_type}" />
<h2>{$title}</h2>
<div class="x_control-group">
<label for="dbId" class="x_control-label"><strong>*</strong> {$lang->db_userid}</label>
<div class="x_controls"><input name="db_userid" type="text" id="dbId" required /></div>
</div>
<div class="x_control-group">
<label for="dbPw" class="x_control-label"><strong>*</strong> {$lang->db_password}</label>
<div class="x_controls"><input name="db_password" type="password" id="dbPw" required /></div>
</div>
<div class="x_control-group">
<label for="dbName" class="x_control-label"><strong>*</strong> {$lang->db_name}</label>
<div class="x_controls"><input name="db_database" type="text" id="dbName" required /></div>
</div>
<div class="desc">{$lang->db_info_desc}</div>
<p style="text-align:right"><a href="#advanced" data-toggle style="text-decoration:underline">{$lang->advanced_setup}</a></p>
<div id="advanced">
<div class="x_control-group">
<label for="dbHostName" class="x_control-label"><strong>*</strong> {$lang->db_hostname}</label>
<div class="x_controls"><input name="db_hostname" value="127.0.0.1" type="text" id="dbHostName" required /></div>
</div>
<div class="x_control-group">
<label for="dbPort" class="x_control-label"><strong>*</strong> {$lang->db_port}</label>
<div class="x_controls"><input name="db_port" value="3306" type="text" id="dbPort" required /></div>
</div>
<div class="x_control-group">
<label for="dbPrefix" class="x_control-label"><strong>*</strong> {$lang->db_table_prefix}</label>
<div class="x_controls"><input name="db_table_prefix" type="text" id="dbPrefix" value="xe" required /></div>
</div>
<div class="desc">{$lang->db_prefix_desc}</div>
</div>
<div class="ibtnArea">
<span class="x_pull-left">
<a href="{getUrl('', 'act', 'dispInstallSelectDB')}" class="x_btn x_btn-small x_btn-inverse"><i class="x_icon-chevron-left x_icon-white"></i> {$lang->cmd_back}</a>
</span>
<div class="x_pull-right">
<button type="submit" class="x_btn x_btn-small x_btn-inverse x_disabled" id="task-db-info">{$lang->cmd_next} <i class="x_icon-chevron-right x_icon-white"></i></button>
</div>
</div>
</form>
</div>
</div>
<include target="footer.html" />

View file

@ -1,54 +0,0 @@
<load target="js/install_admin.js" />
<include target="header.html" />
<div id="body">
<include target="progress_menu.html" />
<div id="content">
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form rule="mysql" action="./" method="post" class="x_form-horizontal">
<input type="hidden" value="{$error_return_url}" name="error_return_url">
<input type="hidden" name="act" value="procMysqlDBSetting" />
<input type="hidden" name="db_type" value="{$db_type}" />
<h2>{$title}</h2>
<div class="x_control-group">
<label for="dbId" class="x_control-label"><strong>*</strong> {$lang->db_userid}</label>
<div class="x_controls"><input name="db_userid" type="text" id="dbId" required /></div>
</div>
<div class="x_control-group">
<label for="dbPw" class="x_control-label"><strong>*</strong> {$lang->db_password}</label>
<div class="x_controls"><input name="db_password" type="password" id="dbPw" required /></div>
</div>
<div class="x_control-group">
<label for="dbName" class="x_control-label"><strong>*</strong> {$lang->db_name}</label>
<div class="x_controls"><input name="db_database" type="text" id="dbName" required /></div>
</div>
<div class="desc">{$lang->db_info_desc}</div>
<p style="text-align:right"><a href="#advanced" data-toggle style="text-decoration:underline">{$lang->advanced_setup}</a></p>
<div id="advanced">
<div class="x_control-group">
<label for="dbHostName" class="x_control-label"><strong>*</strong> {$lang->db_hostname}</label>
<div class="x_controls"><input name="db_hostname" value="127.0.0.1" type="text" id="dbHostName" required /></div>
</div>
<div class="x_control-group">
<label for="dbPort" class="x_control-label"><strong>*</strong> {$lang->db_port}</label>
<div class="x_controls"><input name="db_port" value="3306" type="text" id="dbPort" required /></div>
</div>
<div class="x_control-group">
<label for="dbPrefix" class="x_control-label"><strong>*</strong> {$lang->db_table_prefix}</label>
<div class="x_controls"><input name="db_table_prefix" type="text" id="dbPrefix" value="xe" required /></div>
</div>
<div class="desc">{$lang->db_prefix_desc}</div>
</div>
<div class="ibtnArea">
<span class="x_pull-left">
<a href="{getUrl('', 'act', 'dispInstallSelectDB')}" class="x_btn x_btn-small x_btn-inverse"><i class="x_icon-chevron-left x_icon-white"></i> {$lang->cmd_back}</a>
</span>
<div class="x_pull-right">
<button type="submit" class="x_btn x_btn-small x_btn-inverse x_disabled" id="task-db-info">{$lang->cmd_next} <i class="x_icon-chevron-right x_icon-white"></i></button>
</div>
</div>
</form>
</div>
</div>
<include target="footer.html" />

View file

@ -1,54 +0,0 @@
<load target="js/install_admin.js" />
<include target="header.html" />
<div id="body">
<include target="progress_menu.html" />
<div id="content">
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form rule="mysql" action="./" method="post" class="x_form-horizontal">
<input type="hidden" value="{$error_return_url}" name="error_return_url">
<input type="hidden" name="act" value="procMysqlDBSetting" />
<input type="hidden" name="db_type" value="{$db_type}" />
<h2>{$title}</h2>
<div class="x_control-group">
<label for="dbId" class="x_control-label"><strong>*</strong> {$lang->db_userid}</label>
<div class="x_controls"><input name="db_userid" type="text" id="dbId" required /></div>
</div>
<div class="x_control-group">
<label for="dbPw" class="x_control-label"><strong>*</strong> {$lang->db_password}</label>
<div class="x_controls"><input name="db_password" type="password" id="dbPw" required /></div>
</div>
<div class="x_control-group">
<label for="dbName" class="x_control-label"><strong>*</strong> {$lang->db_name}</label>
<div class="x_controls"><input name="db_database" type="text" id="dbName" required /></div>
</div>
<div class="desc">{$lang->db_info_desc}</div>
<p style="text-align:right"><a href="#advanced" data-toggle style="text-decoration:underline">{$lang->advanced_setup}</a></p>
<div id="advanced">
<div class="x_control-group">
<label for="dbHostName" class="x_control-label"><strong>*</strong> {$lang->db_hostname}</label>
<div class="x_controls"><input name="db_hostname" value="127.0.0.1" type="text" id="dbHostName" required /></div>
</div>
<div class="x_control-group">
<label for="dbPort" class="x_control-label"><strong>*</strong> {$lang->db_port}</label>
<div class="x_controls"><input name="db_port" value="3306" type="text" id="dbPort" required /></div>
</div>
<div class="x_control-group">
<label for="dbPrefix" class="x_control-label"><strong>*</strong> {$lang->db_table_prefix}</label>
<div class="x_controls"><input name="db_table_prefix" type="text" id="dbPrefix" value="xe" required /></div>
</div>
<div class="desc">{$lang->db_prefix_desc}</div>
</div>
<div class="ibtnArea">
<span class="x_pull-left">
<a href="{getUrl('', 'act', 'dispInstallSelectDB')}" class="x_btn x_btn-small x_btn-inverse"><i class="x_icon-chevron-left x_icon-white"></i> {$lang->cmd_back}</a>
</span>
<div class="x_pull-right">
<button type="submit" class="x_btn x_btn-small x_btn-inverse" id="task-db-info">{$lang->cmd_next} <i class="x_icon-chevron-right x_icon-white"></i></button>
</div>
</div>
</form>
</div>
</div>
<include target="footer.html" />

View file

@ -1,54 +0,0 @@
<load target="js/install_admin.js" />
<include target="header.html" />
<div id="body">
<include target="progress_menu.html" />
<div id="content">
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form rule="mysql" action="./" method="post" class="x_form-horizontal">
<input type="hidden" value="{$error_return_url}" name="error_return_url">
<input type="hidden" name="act" value="procMysqlDBSetting" />
<input type="hidden" name="db_type" value="{$db_type}" />
<h2>{$title}</h2>
<div class="x_control-group">
<label for="dbId" class="x_control-label"><strong>*</strong> {$lang->db_userid}</label>
<div class="x_controls"><input name="db_userid" type="text" id="dbId" required /></div>
</div>
<div class="x_control-group">
<label for="dbPw" class="x_control-label"><strong>*</strong> {$lang->db_password}</label>
<div class="x_controls"><input name="db_password" type="password" id="dbPw" required /></div>
</div>
<div class="x_control-group">
<label for="dbName" class="x_control-label"><strong>*</strong> {$lang->db_name}</label>
<div class="x_controls"><input name="db_database" type="text" id="dbName" required /></div>
</div>
<div class="desc">{$lang->db_info_desc}</div>
<p style="text-align:right"><a href="#advanced" data-toggle style="text-decoration:underline">{$lang->advanced_setup}</a></p>
<div id="advanced">
<div class="x_control-group">
<label for="dbHostName" class="x_control-label"><strong>*</strong> {$lang->db_hostname}</label>
<div class="x_controls"><input name="db_hostname" value="127.0.0.1" type="text" id="dbHostName" required /></div>
</div>
<div class="x_control-group">
<label for="dbPort" class="x_control-label"><strong>*</strong> {$lang->db_port}</label>
<div class="x_controls"><input name="db_port" value="3306" type="text" id="dbPort" required /></div>
</div>
<div class="x_control-group">
<label for="dbPrefix" class="x_control-label"><strong>*</strong> {$lang->db_table_prefix}</label>
<div class="x_controls"><input name="db_table_prefix" type="text" id="dbPrefix" value="xe" required /></div>
</div>
<div class="desc">{$lang->db_prefix_desc}</div>
</div>
<div class="ibtnArea">
<span class="x_pull-left">
<a href="{getUrl('', 'act', 'dispInstallSelectDB')}" class="x_btn x_btn-small x_btn-inverse"><i class="x_icon-chevron-left x_icon-white"></i> {$lang->cmd_back}</a>
</span>
<div class="x_pull-right">
<button type="submit" class="x_btn x_btn-small x_btn-inverse" id="task-db-info">{$lang->cmd_next} <i class="x_icon-chevron-right x_icon-white"></i></button>
</div>
</div>
</form>
</div>
</div>
<include target="footer.html" />

View file

@ -1,62 +1,61 @@
<load target="js/install_admin.js" />
<include target="header.html" />
<div id="body">
<include target="progress_menu.html" />
<div id="content">
<form action="./" method="post" onsubmit="return doInstallFTPInfo(this);" id="ftp_form" class="x_form-horizontal">
<div class="x_control-group">
<label for="ftphost" class="x_control-label">{$lang->ftp_host}</label>
<div class="x_controls">
<input name="ftp_host" value="10.25.80.77" type="text" id="ftphost" />
</div>
</div>
<div class="x_control-group">
<label for="ftpid" class="x_control-label">{$lang->user_id}</label>
<div class="x_controls">
<input name="ftp_user" type="text" id="ftpid" />
</div>
</div>
<div class="x_control-group">
<label for="ftppw" class="x_control-label">{$lang->password}</label>
<div class="x_controls">
<input name="ftp_password" type="password" id="ftppw" />
</div>
</div>
<div class="x_control-group">
<label for="ftpport" class="x_control-label">{$lang->ftp_port}</label>
<div class="x_controls">
<input name="ftp_port" type="text" id="ftpport" />
</div>
</div>
<div class="x_control-group">
<label for="ftppath" class="x_control-label">{$lang->msg_ftp_installed_ftp_realpath}</label>
<div class="x_controls">
<input name="ftp_root_path" value="{$ftp_info->ftp_root_path}" type="text" id="ftppath" />
<p>{$lang->msg_ftp_installed_realpath}:<br/> {_XE_PATH_}</p>
<button type="button" class="x_btn x_btn-small" id="task-ftp-list" onclick="getFTPList();return false;"><i class="x_icon-list"></i> {$lang->ftp_get_list}</button>
<ul id="ftplist">
</ul>
<button type="button" class="x_btn x_btn-small x_btn-inverse" id="task-ftp-check" onclick="doCheckFTPInfo();return false"><i class="x_icon-resize-vertical x_icon-white"></i> {$lang->cmd_check_ftp_connect}</button>
</div>
</div>
<div class="desc">
<p>{$lang->install_ftp_reason}</p>
<ul>
<li>{$lang->msg_safe_mode_ftp_needed}</li>
<li>{$lang->msg_safe_mode_ftp_needed2}</li>
</ul>
<p>{$lang->msg_safe_mode_ftp_config}</p>
</div>
<div class="ibtnArea">
<span class="x_pull-left">
<a href="{getUrl('', 'act', 'dispInstallCheckEnv')}" class="x_btn x_btn-small x_btn-inverse"><i class="x_icon-chevron-left x_icon-white"></i> {$lang->cmd_back}</a>
</span>
<span class="x_pull-right">
<button type="submit" class="x_btn x_btn-small x_btn-inverse" id="task-ftp-skip">{$lang->cmd_pass_step} <i class="x_icon-chevron-right x_icon-white"></i></button>
<button type="submit" class="x_btn x_btn-small x_btn-inverse" id="task-ftp-confirm">{$lang->cmd_next} <i class="x_icon-chevron-right x_icon-white"></i></button>
</span>
</div>
</form>
<form id="body" action="./" method="post" onsubmit="return doInstallFTPInfo(this);" id="ftp_form">
<include target="progress_menu.html" />
<div id="content">
<h2>{$lang->install_progress_menu['ftp']}</h2>
<div class="x_control-group">
<label for="ftphost" class="x_control-label">{$lang->ftp_host}</label>
<div class="x_controls">
<input name="ftp_host" value="{$server_ip_address}" type="text" id="ftphost" />
</div>
</div>
<div class="x_control-group">
<label for="ftpport" class="x_control-label">{$lang->ftp_port}</label>
<div class="x_controls">
<input name="ftp_port" type="text" id="ftpport" value="21" />
</div>
</div>
<div class="x_control-group">
<label for="ftpid" class="x_control-label">{$lang->user_id}</label>
<div class="x_controls">
<input name="ftp_user" type="text" id="ftpid" class="focus" value="{$server_ftp_user}" />
</div>
</div>
<div class="x_control-group">
<label for="ftppw" class="x_control-label">{$lang->password}</label>
<div class="x_controls">
<input name="ftp_password" type="password" id="ftppw" value="" />
</div>
</div>
<div class="x_control-group">
<label for="ftppath" class="x_control-label">{$lang->msg_ftp_installed_ftp_realpath}</label>
<div class="x_controls">
<input name="ftp_root_path" value="{$ftp_info->ftp_root_path}" type="text" id="ftppath" />
</div>
</div>
<p class="install_help">{$lang->msg_ftp_installed_realpath}: {_XE_PATH_}</p>
<p>
<button type="button" class="x_btn x_btn-small" id="task-ftp-list" onclick="getFTPList();return false;">{$lang->ftp_get_list}</button>
<button type="button" class="x_btn x_btn-small x_btn-inverse" id="task-ftp-check" onclick="doCheckFTPInfo();return false">{$lang->cmd_check_ftp_connect}</button>
</p>
<ul id="ftplist"></ul>
<p class="install_help">{$lang->install_ftp_reason}</p>
<ul>
<li>{$lang->msg_safe_mode_ftp_needed}</li>
<li>{$lang->msg_safe_mode_ftp_needed2}</li>
</ul>
<p class="install_help">{$lang->msg_safe_mode_ftp_config}</p>
</div>
<div id="buttons">
<div class="align-left">
<a href="{getUrl('', 'act','dispInstallCheckEnv')}" class="button grey">&laquo; {$lang->cmd_back}</a>
</div>
<div class="align-right">
<button type="submit" id="task-ftp-skip" value="">{$lang->cmd_pass_step} &raquo;</button>
<button type="submit" id="task-ftp-confirm" value="">{$lang->cmd_next} &raquo;</button>
</div>
</div>
</form>
<include target="footer.html" />

View file

@ -1,7 +1,8 @@
<load target="../../../modules/admin/tpl/css/admin.bootstrap.min.css" />
<load target="./css/install.css" />
<div class="x">
<load target="css/install.css" />
<load target="js/install.js" />
<div class="x"|cond="$lang_type == 'ko'" class="x enfont"|cond="$lang_type != 'ko'">
<div id="header">
<h1><img src="img/xe.png" width="161" height="26" alt="XpressEngine" /></h1>
<em>Version <strong>{__XE_VERSION__}</strong> {$lang->introduce_title}</em>
<h1><span class="green">XE</span><span class="colon">:</span><span class="brown">XTR</span></h1>
<h2>XpressEngine XETOWN Remix <strong>{__XE_VERSION__}</strong></h2>
</div>

View file

@ -1,8 +1,8 @@
<load target="js/install_admin.js" />
<include target="header.html" />
<div id="body">
<include target="progress_menu.html" />
<div id="content">
<h2>{$lang->install_progress_menu['language']}</h2>
<ul class="language">
<li loop="$lang_supported=>$key,$val">
<i cond="$l==$key" class="x_icon-ok-sign x_icon-white" title="Selected Language"></i>
@ -10,10 +10,10 @@
<strong cond="$l==$key">{$val}</strong>
</li>
</ul>
<div class="ibtnArea">
<span class="x_pull-right">
<a href="{getUrl('', 'act', 'dispInstallLicenseAgreement')}" class="x_btn x_btn-small x_btn-inverse" id="task-choose-language">{$lang->cmd_next} <i class="x_icon-chevron-right x_icon-white"></i></a>
</span>
</div>
<div id="buttons">
<div class="align-right">
<a href="{getUrl('', 'act', 'dispInstallLicenseAgreement')}" class="button" id="task-choose-language">{$lang->cmd_next} &raquo;</a>
</div>
</div>
</div>

View file

@ -1,31 +1,18 @@
jQuery(function($){
// TARGET toggle
$(document.body).on('click', '.x [data-toggle]', function(){
var $this = $(this);
if($this.is('a') && $this.attr('href') != $this.attr('data-toggle')){
var target = $this.attr('href');
$this.attr('data-toggle', target);
}
var $target = $($this.attr('data-toggle'));
var focusable = 'a,input,button,textarea,select';
$target.toggle();
if($target.is(':visible') && !$target.find(focusable).length){
$target.not(':disabled').attr('tabindex','0').focus();
} else if($target.is(':visible') && $target.find(focusable).length) {
$target.not(':disabled').find(focusable).eq(0).focus();
} else {
$this.focus();
}
return false;
});
// SUBMIT disabled
$('input[required]').change(function(){
var invalid = $('input[required]').is('[value=""], [value=" "], [value=" "], [value=" "]');
var $submit = $('[type="submit"]');
if(!invalid){
$submit.removeClass('x_disabled');
} else {
$submit.addClass('x_disabled');
}
});
$('.focus').focus();
if($("#db_type").size()) {
$("#db_type").click(function() {
$("p.db_type").hide();
$("p.db_type_" + $(this).val()).show();
}).triggerHandler("click");
}
if($("input[name='user_id']").size() && $("input[name='email_address']").size()) {
var user_id_input = $("input[name='user_id']");
var email_input = $("input[name='email_address']");
email_input.on("blur", function() {
if (user_id_input.val() == "") {
user_id_input.val(email_input.val().replace(/@.+$/g, "").replace(/[^a-zA-Z0-9_]/g, ""));
}
});
}
});

View file

@ -1,145 +0,0 @@
/**
* @brief DB정보 Setting후 실행될 함수
*/
function completeAgreement(ret_obj)
{
if(ret_obj['error'] != 0) {
alert(ret_obj['message']);
return;
} else {
var url = current_url.setQuery('act', 'dispInstallCheckEnv');
location.href = url;
}
}
function completeDBSetting(ret_obj) {
if(ret_obj['error'] != 0) {
alert(ret_obj['message']);
return;
} else {
location.href = "./index.php?act=dispInstallConfigForm";
}
}
/**
* @brief Rewrite module, Time-zone Setting 실행될 함수
*/
function completeConfigSetting(ret_obj) {
if(ret_obj['error'] != 0) {
alert(ret_obj['message']);
return;
} else {
location.href = "./index.php?act=dispInstallManagerForm";
}
}
/**
* @brief 설치 완료후 실행될 함수
*/
function completeInstalled(ret_obj) {
alert(ret_obj["message"]);
location.href = "./index.php";
}
/**
* @brief FTP 정보 입력
**/
function doInstallFTPInfo(form) {
var params={}, data=jQuery(form).serializeArray();
jQuery.each(data, function(i, field){ params[field.name] = field.value });
exec_xml('install', 'procInstallFTP', params, completeInstallFTPInfo, ['error', 'message'], params, form);
return false;
}
function completeInstallFTPInfo(ret_obj) {
location.href = current_url;
}
function doCheckFTPInfo() {
var form = jQuery("#ftp_form").get(0);
var params={}, data=jQuery(form).serializeArray();
jQuery.each(data, function(i, field){ params[field.name] = field.value });
exec_xml('install', 'procInstallCheckFTP', params, completeInstallCheckFtpInfo, ['error', 'message'], params, form);
return false;
}
function completeInstallCheckFtpInfo(ret_obj) {
alert(ret_obj['message']);
}
function completeFtpPath(ret_obj){
location.reload();
}
function getFTPList(pwd)
{
var form = jQuery("#ftp_form").get(0);
if(typeof(pwd) != 'undefined')
{
form.ftp_root_path.value = pwd;
}
else
{
if(!form.ftp_root_path.value)
{
if(typeof(form.sftp) != 'undefined' && form.sftp.checked) {
form.ftp_root_path.value = xe_root;
}
else
{
form.ftp_root_path.value = "/";
}
}
}
var params={}, data=jQuery("#ftp_form").serializeArray();
jQuery.each(data, function(i, field){ params[field.name] = field.value });
exec_xml('install', 'getInstallFTPList', params, completeGetFtpInfo, ['list', 'error', 'message'], params, form);
}
function completeGetFtpInfo(ret_obj)
{
if(ret_obj['error'] != 0)
{
alert(ret_obj['error']);
alert(ret_obj['message']);
return;
}
var e = jQuery("#ftplist").empty();
var list = "";
if(!jQuery.isArray(ret_obj['list']['item']))
{
ret_obj['list']['item'] = [ret_obj['list']['item']];
}
pwd = jQuery("#ftp_form").get(0).ftp_root_path.value;
if(pwd != "/")
{
arr = pwd.split("/");
arr.pop();
arr.pop();
arr.push("");
target = arr.join("/");
list = list + "<li><a href='#ftpSetup' onclick=\"getFTPList('"+target+"')\">../</a></li>";
}
for(var i=0;i<ret_obj['list']['item'].length;i++)
{
var v = ret_obj['list']['item'][i];
if(v == "../")
{
continue;
}
else if( v == "./")
{
continue;
}
else
{
list = list + "<li><a href='#ftpSetup' onclick=\"getFTPList('"+pwd+v+"')\">"+v+"</a></li>";
}
}
//list = "<td><ul>"+list+"</ul></td>";
e.append(jQuery(list));
}

View file

@ -1,35 +1,30 @@
<load target="js/install_admin.js" />
<include target="header.html" />
<div id="body">
<form id="body" action="./" method="post">
<include target="progress_menu.html" />
<div id="content">
<h2>{$lang->license_agreement}</h2>
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<h2>{$lang->license_agreement}</h2>
<form action="./" method="post" class="x_form-horizontal">
<input type="hidden" name="act" value="procInstallLicenseAggrement">
<input type="hidden" name="module" value="install">
<div class="content-license">
<div>{$lang->license}</div>
</div>
<div>
<label><input type="checkbox" name="license_agreement" value="Y" /> <strong>{$lang->cmd_license_agree}</strong></label>
</div>
<div class="ibtnArea">
<span class="x_pull-left">
<a href="{getUrl('', 'act','')}" class="x_btn x_btn-small x_btn-inverse"><i class="x_icon-chevron-left x_icon-white"></i> {$lang->cmd_back}</a>
</span>
<span class="x_pull-right">
<button type="submit" class="x_btn x_btn-small x_btn-inverse" id="task-license-aggrement" value="">{$lang->cmd_next} <i class="x_icon-chevron-right x_icon-white"></i></button>
</span>
</div>
</form>
<input type="hidden" name="act" value="procInstallLicenseAggrement">
<input type="hidden" name="module" value="install">
<div class="content-license">
<include target="license_text.ko.html" cond="$lang_type === 'ko'" />
<include target="license_text.en.html" cond="$lang_type !== 'ko'" />
</div>
<p>
<label><input type="checkbox" name="license_agreement" value="Y" /> <strong>{$lang->cmd_license_agree}</strong></label>
</p>
</div>
</div>
<div id="buttons">
<div class="align-left">
<!--<a href="{getUrl('', 'act','')}" class="button grey">&laquo; {$lang->cmd_back}</a>-->
</div>
<div class="align-right">
<button type="submit" id="task-license-aggrement" value="">{$lang->cmd_next} &raquo;</button>
</div>
</div>
</form>
<include target="footer.html" />

View file

@ -0,0 +1,41 @@
<p>Copyright &copy; <a href="http://www.navercorp.com" target="_blank">NAVER</a> and Contributors</p>
<p>
XpressEngine (XE) is an opensource and being developed in the open-source project.
For more information, please see the links below.
</p>
<ul>
<li>Official website: <a href="https://www.xpressengine.com" target="_blank">https://www.xpressengine.com</a></li>
<li>Official repository: <a href="https://github.com/xpressengine/xe-core" target="_blank">https://github.com/xpressengine/xe-core</a></li>
</ul>
<p>
XpressEngine XETown Remix is a fork of the XpressEngine CMS
with additional patches by members of the XETOWN community.
For more information, please see the links below.
</p>
<ul>
<li>Official website: <a href="https://www.xetown.com" target="_blank">https://www.xetown.com</a></li>
<li>Official repository: <a href="https://github.com/xetown/xe-core" target="_blank">https://github.com/xetown/xe-core</a></li>
</ul>
<p>
XpressEngine XETown Remix is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License (LGPL) as published by the Free Software Foundation;
either version 2.1 of the License, or (at your option) any later version.
</p>
<p>
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library;
if not, write to the <a href="https://fsf.org/" target="_blank">Free Software Foundation, Inc.</a>,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
</p>
<ul>
<li>License : <a href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html" target="_blank">GNU Lesser General Public License, version 2.1</a></li>
</ul>

View file

@ -0,0 +1,41 @@
<p>Copyright &copy; <a href="http://www.navercorp.com" target="_blank">NAVER</a> and Contributors</p>
<p>
XpressEngine(XE)은 자유 소프트웨어이며, 오픈 소스 프로젝트로 개발되고 있습니다.
자세한 내용은 아래 링크를 참조하시기 바랍니다.
</p>
<ul>
<li>공식 사이트: <a href="https://www.xpressengine.com" target="_blank">https://www.xpressengine.com</a></li>
<li>공식 저장소: <a href="https://github.com/xpressengine/xe-core" target="_blank">https://github.com/xpressengine/xe-core</a></li>
</ul>
<p>
XpressEngine XETOWN Remix는 XE를 가지치기(fork)하여 XETOWN 커뮤니티 회원들이 개발한 다양한 기능을 추가한 것입니다.
자세한 내용은 아래 링크를 참조하시기 바랍니다.
</p>
<ul>
<li>공식 사이트: <a href="https://www.xetown.com" target="_blank">https://www.xetown.com</a></li>
<li>공식 저장소: <a href="https://github.com/xetown/xe-core" target="_blank">https://github.com/xetown/xe-core</a></li>
</ul>
<p>
XpressEngine XETOWN Remix는 자유 소프트웨어입니다.
소프트웨어의 피양도자는 자유 소프트웨어 재단이 공표한 GNU 약소 일반 공중 사용 허가서 (LGPL) 2.1판
또는 그 이후 판을 임의로 선택해서, 그 규정에 따라 소프트웨어를 개작하거나 재배포할 수 있습니다.
</p>
<p>
이 소프트웨어는 유용하게 사용될 수 있으리라는 희망에서 배포되고 있지만,
특정한 목적에 맞는 적합성 여부나 판매용으로 사용할 수 있으리라는 묵시적인 보증을 포함한
어떠한 형태의 보증도 제공하지 않습니다.
보다 자세한 사항에 대해서는 GNU 약소 일반 공중 사용 허가서를 참고하시기 바랍니다.
GNU 약소 일반 공중 사용 허가서는 이 라이브러리와 함께 제공됩니다.
만약, 이 문서가 누락되어 있다면 <a href="https://fsf.org/" target="_blank">자유 소프트웨어 재단</a>으로 문의하시기 바랍니다.
</p>
<ul>
<li>한글 (비공식 번역본) : <a href="http://korea.gnu.org/people/chsong/copyleft/lgpl.ko.html" target="_blank">GNU Lesser General Public License, version 2.1</a></li>
<li>영문 (공식 원본) : <a href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html" target="_blank">GNU Lesser General Public License, version 2.1</a></li>
</ul>

View file

@ -1,12 +1,9 @@
<div id="progress">
<ul>
<li class="active"|cond="$act==''">{$lang->install_progress_menu['language']}</li>
<li class="active"|cond="$act=='dispInstallLicenseAgreement'">{$lang->install_progress_menu['license_agreement']}</li>
<li class="active"|cond="($act==''||$act=='dispInstallLicenseAgreement')">{$lang->install_progress_menu['license_agreement']}</li>
<li class="active"|cond="$act=='dispInstallCheckEnv'">{$lang->install_progress_menu['condition']}</li>
<li class="active"|cond="$act=='dispInstallSelectDB' && $progressMenu == '3'">{$lang->install_progress_menu['ftp']}</li>
<li class="active"|cond="$act=='dispInstallSelectDB' && $progressMenu == '4'">{$lang->install_progress_menu['dbSelect']}</li>
<li class="active"|cond="$act=='dispInstallDBForm'">{$lang->install_progress_menu['dbInfo']}</li>
<li class="active"|cond="$act=='dispInstallConfigForm'">{$lang->install_progress_menu['configInfo']}</li>
<li cond="ini_get('safe_mode')" class="active"|cond="$act=='dispInstallSelectDB' && $progressMenu == '3'">{$lang->install_progress_menu['ftp']}</li>
<li class="active"|cond="$act=='dispInstallSelectDB' && $progressMenu == '4'">{$lang->install_progress_menu['dbInfo']}</li>
<li class="active"|cond="$act=='dispInstallManagerForm'">{$lang->install_progress_menu['adminInfo']}</li>
</ul>
</div>

View file

@ -1,28 +1,66 @@
<load target="js/install_admin.js" />
<include target="header.html" />
<div id="body">
<include target="progress_menu.html" />
<div id="content">
<form method="post" action="./">
<input type="hidden" name="module" value="{$module}" />
<input type="hidden" name="act" value="dispInstallDBForm" />
<div class="x_control-group" loop="DB::getEnableList() => $key,$val">
<label for="db_type_{$val->db_type}"><input name="db_type" type="radio" value="{$val->db_type}" disabled="disabled"|cond="!$val->enable" id="db_type_{$val->db_type}" checked="checked"|cond="$val->db_type==$defaultDatabase" /> {$val->db_type}</label>
<p>{$lang->db_desc[$val->db_type]}</p>
</div>
<div class="x_control-group x_muted" loop="DB::getDisableList() => $key,$val">
<label for="db_type_{$val->db_type}"><input name="db_type" type="radio" value="{$val->db_type}" disabled="disabled"|cond="!$val->enable" id="db_type_{$val->db_type}" /> {$val->db_type}<em>({$lang->can_use_when_installed})</em></label>
<p>{$lang->db_desc[$val->db_type]}</p>
</div>
<div class="ibtnArea">
<span class="x_pull-left">
<a href="{getUrl('', 'act', 'dispInstallCheckEnv')}" class="x_btn x_btn-small x_btn-inverse"><i class="x_icon-chevron-left x_icon-white"></i> {$lang->cmd_back}</a>
</span>
<span class="x_pull-right">
<button type="submit" class="x_btn x_btn-small x_btn-inverse" id="task-db-select">{$lang->cmd_next} <i class="x_icon-chevron-right x_icon-white"></i></button>
</span>
</div>
</form>
<form id="body" method="post" action="./">
<include target="progress_menu.html" />
<div id="content">
<h2>{$lang->install_progress_menu['dbInfo']}</h2>
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<input type="hidden" value="{$error_return_url}" name="error_return_url">
<input type="hidden" name="module" value="{$module}" />
<input type="hidden" name="act" value="procDBSetting" />
<div class="x_control-group">
<label for="db_type" class="x_control-label">{$lang->db_type}</label>
<div class="x_controls">
<select id="db_type" name="db_type">
<block loop="DB::getEnableList() => $key,$val">
<option value="{$val->db_type}" selected="selected"|cond="$val->db_type==$defaultDatabase" />
{$val->db_type}
<block cond="$val->db_type==$defaultDatabase && stripos($val->db_type, 'innodb') !== false">({$lang->cmd_recommended})</block>
</option>
</block>
<block loop="DB::getDisableList() => $key,$val">
<option value="{$val->db_type}" disabled="disabled" />{$val->db_type} ({$lang->can_use_when_installed})</option>
</block>
</select>
</div>
</div>
<p loop="DB::getEnableList() => $key,$val" class="install_help db_type db_type_{$val->db_type}">{$lang->db_desc[$val->db_type]}</p>
<div class="x_control-group">
<label for="dbHostName" class="x_control-label">{$lang->db_hostname}</label>
<div class="x_controls"><input name="db_hostname" value="localhost" type="text" id="dbHostName" required /></div>
</div>
<div class="x_control-group">
<label for="dbPort" class="x_control-label">{$lang->db_port}</label>
<div class="x_controls"><input name="db_port" value="3306" type="text" id="dbPort" required /></div>
</div>
<div class="x_control-group">
<label for="dbId" class="x_control-label">{$lang->db_userid}</label>
<div class="x_controls"><input name="db_userid" type="text" id="dbId" class="focus" required /></div>
</div>
<div class="x_control-group">
<label for="dbPw" class="x_control-label">{$lang->db_password}</label>
<div class="x_controls"><input name="db_password" type="password" id="dbPw" required /></div>
</div>
<div class="x_control-group">
<label for="dbName" class="x_control-label">{$lang->db_name}</label>
<div class="x_controls"><input name="db_database" type="text" id="dbName" required /></div>
</div>
<div class="x_control-group">
<label for="dbPrefix" class="x_control-label">{$lang->db_table_prefix}</label>
<div class="x_controls"><input name="db_table_prefix" type="text" id="dbPrefix" value="xe" required /></div>
</div>
<p class="install_help">
{$lang->db_info_desc}<br />{$lang->db_prefix_desc}
</p>
</div>
<div id="buttons">
<div class="align-left">
<a href="{getUrl('', 'act','dispInstallCheckEnv')}" class="button grey">&laquo; {$lang->cmd_back}</a>
</div>
<div class="align-right">
<button type="submit" id="task-db-select" value="">{$lang->cmd_next} &raquo;</button>
</div>
</div>
</form>
<include target="footer.html" />

1
modules/krzip/COPYRIGHT Normal file
View file

@ -0,0 +1 @@
Copyright (C) NAVER <http://www.navercorp.com>

481
modules/krzip/LICENSE Normal file
View file

@ -0,0 +1,481 @@
Copyright (C) NAVER <http://www.navercorp.com>
XE is an opensource and being developed in the opensource project.
For more information, please see the link below.
- Official website: http://www.xpressengine.com
- Official Repository: http://github.com/xpressengine/
"XpressEngine (XE)" is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-------
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS

15
modules/krzip/README.md Normal file
View file

@ -0,0 +1,15 @@
# 한국 우편번호 모듈
공개 API를 이용해 우편번호 검색 서비스를 이용합니다.
## 지원하는 API
1. 다음 우편번호 API
2. 인터넷 우체국 우편번호 API
3. Postcodify API
## 인증키 발급
인터넷 우체국 우편번호 API를 사용하기 위해서는 인증키 발급이 필요합니다.
다음 안내에 따라 인증키를 발급 받은 후 모듈 설정에 입력하세요.
1. [인증키 발급 페이지](http://biz.epost.go.kr/openapi/openapi_request.jsp?subGubun=sub_3&subGubun_1=cum_38&gubun=m07)를 방문한 후 양식을 작성합니다.
2. 인증키 발급 신청을 완료한 후 보여지는 인증키를 복사하거나 [인증키 확인 페이지](http://biz.epost.go.kr/openapi/openapi_reqresult_chk.jsp?subGubun=sub_3&subGubun_1=cum_39&gubun=m07)를 방문한 후 작성했던 양식을 입력해 확인합니다.
3. XE 모듈 목록에서 **한국 우편번호 모듈**을 선택해 모듈 설정 페이지를 띄우고 **우체국 우편번호 API**를 선택한 후 활성화된 인증키 입력 칸에 발급 받은 인증키를 입력하고 설정을 저장합니다.

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="0.2">
<title xml:lang="ko">한국 우편번호</title>
<description xml:lang="ko">공개 API를 이용해 우편번호 검색 서비스를 이용합니다.</description>
<version>1.8.0</version>
<date>2015-03-10</date>
<author email_address="developers@xpressengine.com" link="http://www.xpressengine.com/">
<name xml:lang="ko">NAVER</name>
</author>
</module>

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<module>
<actions>
<action name="dispKrzipAdminConfig" type="view" menu_name="krzip" menu_index="true" admin_index="true" />
<action name="procKrzipAdminInsertConfig" type="controller" ruleset="krzipConfig" />
<action name="dispKrzipSearchForm" type="view" />
<action name="getKrzipCodeList" type="model" />
</actions>
<menus>
<menu name="krzip" type="all">
<title xml:lang="ko">한국 우편번호</title>
</menu>
</menus>
</module>

View file

@ -0,0 +1,43 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @class krzipAdminController
* @author NAVER (developers@xpressengine.com)
* @brief Krzip module admin controller class.
*/
class krzipAdminController extends krzip
{
function procKrzipAdminInsertConfig()
{
$module_config = Context::getRequestVars();
getDestroyXeVars($module_config);
unset($module_config->module);
unset($module_config->act);
unset($module_config->mid);
unset($module_config->vid);
$oKrzipController = getController('krzip');
$output = $oKrzipController->updateConfig($module_config);
if(!$output->toBool())
{
return $output;
}
$success_return_url = Context::get('success_return_url');
if($success_return_url)
{
$return_url = $success_return_url;
}
else
{
$return_url = getNotEncodedUrl('', 'module', 'krzip', 'act', 'dispKrzipAdminConfig');
}
$this->setMessage('success_registed');
$this->setRedirectUrl($return_url);
}
}
/* End of file krzip.admin.controller.php */
/* Location: ./modules/krzip/krzip.admin.controller.php */

View file

@ -0,0 +1,26 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @class krzipAdminView
* @author NAVER (developers@xpressengine.com)
* @brief Krzip module admin view class.
*/
class krzipAdminView extends krzip
{
function init()
{
$this->setTemplatePath($this->module_path . 'tpl');
$this->setTemplateFile(lcfirst(str_replace('dispKrzipAdmin', '', $this->act)));
}
function dispKrzipAdminConfig()
{
$oKrzipModel = getModel('krzip');
$module_config = $oKrzipModel->getConfig();
Context::set('module_config', $module_config);
}
}
/* End of file krzip.admin.view.php */
/* Location: ./modules/krzip/krzip.admin.view.php */

View file

@ -0,0 +1,49 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @class krzip
* @author NAVER (developers@xpressengine.com)
* @brief Krzip module high class.
*/
if(!function_exists('lcfirst'))
{
function lcfirst($text)
{
return strtolower(substr($text, 0, 1)) . substr($text, 1);
}
}
class krzip extends ModuleObject
{
public static $sequence_id = 0;
public static $default_config = array('api_handler' => 0);
public static $api_list = array('daumapi', 'epostapi', 'postcodify');
public static $epostapi_host = 'http://biz.epost.go.kr/KpostPortal/openapi';
function moduleInstall()
{
return new Object();
}
function moduleUninstall()
{
return new Object();
}
function checkUpdate()
{
return FALSE;
}
function moduleUpdate()
{
return new Object();
}
}
/* End of file krzip.class.php */
/* Location: ./modules/krzip/krzip.class.php */

View file

@ -0,0 +1,30 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @class krzipController
* @author NAVER (developers@xpressengine.com)
* @brief Krzip module controller class.
*/
class krzipController extends krzip
{
function updateConfig($args)
{
if(!$args || !is_object($args))
{
$args = new stdClass();
}
$oModuleController = getController('module');
$output = $oModuleController->updateModuleConfig('krzip', $args);
if($output->toBool())
{
unset($this->module_config);
}
return $output;
}
}
/* End of file krzip.controller.php */
/* Location: ./modules/krzip/krzip.controller.php */

243
modules/krzip/krzip.model.php Executable file
View file

@ -0,0 +1,243 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @class krzipModel
* @author NAVER (developers@xpressengine.com)
* @brief Krzip module model class.
*/
class krzipModel extends krzip
{
/**
* @brief 한국 우편번호 모듈 설정 반환
* @return object
*/
function getConfig()
{
if(!isset($this->module_config))
{
$oModuleModel = getModel('module');
$module_config = $oModuleModel->getModuleConfig('krzip');
if(!is_object($module_config))
{
$module_config = new stdClass();
}
/* 기본 설정 추가 */
$default_config = self::$default_config;
foreach($default_config as $key => $val)
{
if(!isset($module_config->{$key}))
{
$module_config->{$key} = $val;
}
}
$this->module_config = $module_config;
}
return $this->module_config;
}
/**
* @brief 여러 포맷의 우편번호를 모듈 표준 포맷으로 변환
* @param mixed $values
* @return array
*/
function getMigratedPostcode($values)
{
if(is_array($values))
{
$values = implode(' ', $values);
}
$output = array('', trim(preg_replace('/\s+/', ' ', $values)), '', '', '');
/* 우편번호 */
if(preg_match('/\(?([0-9]{3}-[0-9]{3})\)?/', $output[1], $matches))
{
$output[1] = trim(preg_replace('/\s+/', ' ', str_replace($matches[0], '', $output[1])));
$output[0] = $matches[1];
}
/* 지번 주소 */
if(preg_match('/\(.+\s.+[읍면동리(마을)(0-9+가)]\s[0-9-]+\)/', $output[1], $matches))
{
$output[1] = trim(str_replace($matches[0], '', $output[1]));
$output[2] = $matches[0];
}
/* 부가 정보 */
if(preg_match('/\(.+[읍면동리(마을)(0-9+가)](?:,.*)?\)/u', $output[1], $matches))
{
$output[1] = trim(str_replace($matches[0], '', $output[1]));
$output[4] = $matches[0];
}
/* 상세 주소 */
if(preg_match('/^(.+ [가-힝]+[0-9]*[동리로길]\s*[0-9-]+(?:번지?)?),?\s+(.+)$/u', $output[1], $matches))
{
$output[1] = trim($matches[1]);
$output[3] = trim($matches[2]);
}
return $output;
}
/**
* @brief 외부 서버로부터 주소 검색 결과 반환
* @param string $query
* @return mixed
*/
function getKrzipCodeList($query)
{
$module_config = $this->getConfig();
if($module_config->api_handler != 1)
{
return new Object(-1, 'msg_invalid_request');
}
if(!isset($query))
{
$query = Context::get('query');
}
$query = trim(strval($query));
if($query === '')
{
return $this->stop('msg_krzip_no_query');
}
$output = $this->getEpostapiSearch($query);
/* XML Request에서는 Array 치환에 대한 문제로 이 함수를 제대로 사용할 수 없음 */
$this->add('address_list', $output->get('address_list'));
if(!$output->toBool())
{
return $output;
}
}
/**
* @brief 우체국 우편번호 API 검색 결과 반환
* @param string $query
* @return object
*/
function getEpostapiSearch($query = '')
{
/**
* @brief 문자열 인코딩 변환
* @note 우체국 우편번호 API는 검색어를 EUC-KR로 넘겨주어야
*/
$encoding = strtoupper(mb_detect_encoding($query));
if($encoding !== 'EUC-KR')
{
$query = iconv($encoding, 'EUC-KR', $query);
}
$module_config = $this->getConfig();
$regkey = $module_config->epostapi_regkey;
$fields = array(
'target' => 'postRoad', /* 도로명 주소 */
'regkey' => $regkey,
'query' => $query
);
$headers = array(
'accept-language' => 'ko'
);
$request_config = array(
'ssl_verify_peer' => FALSE
);
$buff = FileHandler::getRemoteResource(
self::$epostapi_host,
NULL,
30,
'POST',
'application/x-www-form-urlencoded',
$headers,
array(),
$fields,
$request_config
);
$oXmlParser = new XmlParser();
$result = $oXmlParser->parse($buff);
if($result->error)
{
$err_msg = trim($result->error->message->body);
if(!$err_msg)
{
$err_code = intval(str_replace('ERR-', '', $result->error->error_code->body));
switch($err_code)
{
case 1:
$err_msg = 'msg_krzip_is_maintenance';
break;
case 2:
$err_msg = 'msg_krzip_wrong_regkey';
break;
case 3:
$err_msg = 'msg_krzip_no_result';
break;
default:
$err_msg = 'msg_krzip_riddling_wrong';
break;
}
}
return new Object(-1, $err_msg);
}
if(!$result->post)
{
return new Object(-1, 'msg_krzip_riddling_wrong');
}
$item_list = $result->post->itemlist->item;
if(!is_array($item_list))
{
$item_list = array($item_list);
}
if(!$item_list)
{
return new Object(-1, 'msg_krzip_no_result');
}
$addr_list = array();
foreach($item_list as $key => $val)
{
$postcode = substr($val->postcd->body, 0, 3) . '-' . substr($val->postcd->body, 3, 3);
$road_addr = $val->lnmaddress->body;
$jibun_addr = $val->rnaddress->body;
$addr_list[] = $this->getMigratedPostcode('(' . $postcode . ') (' . $jibun_addr . ') ' . $road_addr);
}
$output = new Object();
$output->add('address_list', $addr_list);
return $output;
}
/**
* @brief HTML 입력 반환
* @param string $column_name
* @param mixed $values
* @return string
*/
function getKrzipCodeSearchHtml($column_name, $values)
{
$template_config = $this->getConfig();
$template_config->sequence_id = ++self::$sequence_id;
$template_config->column_name = $column_name;
$template_config->values = $this->getMigratedPostcode($values);
Context::set('template_config', $template_config);
$api_name = strval(self::$api_list[$template_config->api_handler]);
$oTemplate = TemplateHandler::getInstance();
$output = $oTemplate->compile($this->module_path . 'tpl', 'template.' . $api_name);
return $output;
}
}
/* End of file krzip.model.php */
/* Location: ./modules/krzip/krzip.model.php */

View file

@ -0,0 +1,39 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @class krzipView
* @author NAVER (developers@xpressengine.com)
* @brief Krzip module view class.
*/
class krzipView extends krzip
{
function init()
{
$this->setTemplatePath($this->module_path . 'tpl');
}
/**
* @brief 우편번호 검색
* @param integer $api_handler
* @return mixed
*/
function dispKrzipSearchForm($api_handler)
{
$oKrzipModel = getModel('krzip');
$module_config = $oKrzipModel->getConfig();
$module_config->sequence_id = ++self::$sequence_id;
if(!isset($api_handler) || !isset(self::$api_list[$api_handler]))
{
$api_handler = $module_config->api_handler;
}
Context::set('template_config', $module_config);
$this->setTemplateFile('searchForm.' . self::$api_list[$api_handler]);
$this->setLayoutPath('./common/tpl/');
$this->setLayoutFile('popup_layout');
}
}
/* End of file krzip.view.php */
/* Location: ./modules/krzip/krzip.view.php */

View file

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<lang>
<item name="krzip">
<value xml:lang="ko"><![CDATA[한국 우편번호]]></value>
</item>
<item name="cmd_krzip_api_type">
<value xml:lang="ko"><![CDATA[API 선택]]></value>
</item>
<item name="cmd_krzip_daumapi">
<value xml:lang="ko"><![CDATA[다음 우편번호]]></value>
</item>
<item name="cmd_krzip_epostapi">
<value xml:lang="ko"><![CDATA[우체국 우편번호]]></value>
</item>
<item name="cmd_krzip_postcodify">
<value xml:lang="ko"><![CDATA[Postcodify]]></value>
</item>
<item name="cmd_krzip_regkey">
<value xml:lang="ko"><![CDATA[등록키]]></value>
</item>
<item name="cmd_krzip_postcode">
<value xml:lang="ko"><![CDATA[우편번호]]></value>
</item>
<item name="cmd_krzip_address">
<value xml:lang="ko"><![CDATA[주소]]></value>
</item>
<item name="cmd_krzip_detail_address">
<value xml:lang="ko"><![CDATA[상세 주소]]></value>
</item>
<item name="about_krzip">
<value xml:lang="ko"><![CDATA[공개 API를 이용해 우편번호 검색 서비스를 이용합니다.]]></value>
</item>
<item name="about_krzip_api_handler">
<value xml:lang="ko"><![CDATA[우편번호 검색을 어떤 API를 통해 할 것인지 결정합니다.]]></value>
</item>
<item name="about_krzip_epostapi_regkey">
<value xml:lang="ko"><![CDATA[우체국 우편번호 API를 이용하기 위해 인터넷 우체국에서 발급 받은 등록키를 입력합니다.]]></value>
</item>
<item name="msg_krzip_road_address_expectation">
<value xml:lang="ko"><![CDATA[예상 도로명 주소: %s]]></value>
</item>
<item name="msg_krzip_jibun_address_expectation">
<value xml:lang="ko"><![CDATA[예상 지번 주소: %s]]></value>
</item>
<item name="msg_krzip_no_query">
<value xml:lang="ko"><![CDATA[검색할 주소가 없습니다.]]></value>
</item>
<item name="msg_krzip_is_maintenance">
<value xml:lang="ko"><![CDATA[점검 중입니다.]]></value>
</item>
<item name="msg_krzip_wrong_regkey">
<value xml:lang="ko"><![CDATA[잘못된 등록키입니다.]]></value>
</item>
<item name="msg_krzip_no_result">
<value xml:lang="ko"><![CDATA[검색된 주소가 없습니다.]]></value>
</item>
<item name="msg_krzip_riddling_wrong">
<value xml:lang="ko"><![CDATA[알 수 없는 오류입니다.]]></value>
</item>
</lang>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ruleset version="1.5.0">
<fields>
<field name="api_handler" required="true" />
</fields>
</ruleset>

View file

@ -0,0 +1,51 @@
<!--// HEADER -->
<load target="./js/admin.js" />
<div class="x_page-header">
<h1>
{$lang->krzip}
<a href="#descModule" class="x_icon-question-sign" data-toggle="#descModule">{$lang->help}</a>
</h1>
</div>
<p id="descModule" class="x_alert x_alert-info" hidden="hidden">{$lang->about_krzip}</p>
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/krzip/tpl/config/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<!--// BODY -->
<section class="section">
<form ruleset="krzipConfig" class="x_form-horizontal" action="{getUrl('')}" method="post">
<input type="hidden" name="module" value="krzip" />
<input type="hidden" name="act" value="procKrzipAdminInsertConfig" />
<input type="hidden" name="success_return_url" value="{getRequestUriByServerEnviroment()}" />
<input type="hidden" name="xe_validator_id" value="modules/krzip/tpl/config/1" />
<section class="section">
<h1>{$lang->subtitle_primary}</h1>
<div class="x_control-group">
<label class="x_control-label" for="api_handler">{$lang->cmd_krzip_api_type}</label>
<div class="x_controls">
<select name="api_handler" id="api_handler">
<option value="0">{$lang->cmd_krzip_daumapi}</option>
<option value="1" selected="selected"|cond="$module_config->api_handler == 1">{$lang->cmd_krzip_epostapi}</option>
<option value="2" selected="selected"|cond="$module_config->api_handler == 2">{$lang->cmd_krzip_postcodify}</option>
</select>
<a href="#about_api_handler" class="x_icon-question-sign" data-toggle="#about_api_handler">{$lang->help}</a>
<p id="about_api_handler" class="x_help-block" hidden="hidden">{$lang->about_krzip_api_handler}</p>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label" for="epostapi_regkey">{$lang->cmd_krzip_regkey}</label>
<div class="x_controls">
<input type="text" name="epostapi_regkey" id="epostapi_regkey" value="{htmlspecialchars($module_config->epostapi_regkey, ENT_COMPAT | ENT_HTML401, 'UTF-8', FALSE)}" disabled="disabled"|cond="$module_config->api_handler != 1" />
<a href="#about_epostapi_regkey" class="x_icon-question-sign" data-toggle="#about_epostapi_regkey">{$lang->help}</a>
<p id="about_epostapi_regkey" class="x_help-block" hidden="hidden">{$lang->about_krzip_epostapi_regkey}</p>
</div>
</div>
</section>
<div class="btnArea">
<button type="submit" class="x_btn x_btn-primary x_pull-right">{$lang->cmd_registration}</button>
</div>
</form>
</section>

View file

@ -0,0 +1,27 @@
@charset "UTF-8";
/* Copyright (C) NAVER <http://www.navercorp.com> */
.krZip label {
min-width: 70px;
}
.krZip .krzip-postcode,
.krZip .krzip-roadAddress,
.krZip .krzip-jibunAddress,
.krZip .krzip-extraAddress,
.krZip .krzip-detailAddress {
min-width: 20%;
height: 24px;
line-height: 24px;
margin: 0;
padding: 0;
border: 1px solid #CCC;
}
.krZip .krzip-guide {
display: none;
height: 24px;
line-height: 24px;
color: #888;
}
/* End of file default.css */
/* Location: ./modules/krzip/tpl/css/default.css */

View file

@ -0,0 +1,86 @@
@charset "UTF-8";
/* Copyright (C) NAVER <http://www.navercorp.com> */
body {
margin: 0;
background: #EEE;
}
.x .krZip .krzip-search-wrap,
.krZip .krzip-search-wrap {
position: relative;
height: 45px;
line-height: 45px;
border-bottom: 1px solid #DDD;
background: #FFF;
}
.x .krZip .krzip-input-wrap,
.krZip .krzip-input-wrap {
margin: 0 70px 0 10px;
}
.x .krZip .krzip-input,
.krZip .krzip-input {
width: 100%;
height: 45px;
line-height: 45px;
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 20px;
background: none;
box-shadow: none;
-moz-border-radius: 0;
-webkit-border-radius: 0;
border-radius: 0;
-moz-transition: none;
-o-transition: none;
-webkit-transition: none;
transition: none;
}
.x .krZip .krzip-input:focus,
.krZip .krzip-input:focus {
outline: 0;
box-shadow: none;
}
.x .krZip .krzip-search,
.krZip .krzip-search {
position: absolute;
top: 0;
right: 10px;
width: 50px;
height: 45px;
line-height: 45px;
margin: 0;
padding: 0;
border: 0;
outline: 0;
background: url(../img/search.png) center center no-repeat;
}
.x .krZip .krzip-addressList,
.krZip .krzip-addressList {
overflow: auto;
height: 300px;
margin: 10px;
border: 1px solid #DDD;
background: #FFF;
list-style: none;
-moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
}
.x .krZip .krzip-addressList li,
.krZip .krzip-addressList li {
height: 40px;
line-height: 40px;
padding: 0 10px;
border-bottom: 1px solid #DDD;
}
.x .krZip .krzip-addressList li:hover,
.krZip .krzip-addressList li:hover {
cursor: pointer;
text-decoration: underline;
background: #F8F8F8;
}
/* End of file popup.css */
/* Location: ./modules/krzip/tpl/css/popup.css */

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -0,0 +1,11 @@
/* Copyright (C) NAVER <http://www.navercorp.com> */
jQuery(function ($) {
$("#api_handler").on("change", function (e) {
var prop = $(this).val() != 1;
$("#epostapi_regkey").prop("disabled", prop);
});
});
/* End of file admin.js */
/* Location: ./modules/krzip/tpl/js/admin.js */

View file

@ -0,0 +1,107 @@
/* Copyright (C) NAVER <http://www.navercorp.com> */
(function ($) {
"use strict";
$.fn.Krzip = function () {
var $this = $(this);
var values = {
postcode : $this.find(".krzip-hidden-postcode"),
roadAddress : $this.find(".krzip-hidden-roadAddress"),
jibunAddress : $this.find(".krzip-hidden-jibunAddress"),
detailAddress : $this.find(".krzip-hidden-detailAddress"),
extraAddress : $this.find(".krzip-hidden-extraAddress")
};
var ui = {
postcode : $this.find(".krzip-postcode"),
roadAddress : $this.find(".krzip-roadAddress"),
jibunAddress : $this.find(".krzip-jibunAddress"),
detailAddress : $this.find(".krzip-detailAddress"),
extraAddress : $this.find(".krzip-extraAddress"),
search : $this.find(".krzip-search"),
guide : $this.find(".krzip-guide")
};
var krzip = new daum.Postcode({
oncomplete: function (response) {
var fullAddr = "", extraAddr = "";
/* 도로명 주소를 선택했을 경우 */
if(response.userSelectedType === "R") {
fullAddr = response.roadAddress;
/* 법정동명이 있을 경우 */
if(response.bname !== "") {
extraAddr += response.bname;
}
/* 건물명이 있을 경우 */
if(response.buildingName !== "") {
extraAddr += (extraAddr !== "" ? ", " + response.buildingName : response.buildingName);
}
if(extraAddr) {
extraAddr = "(" + extraAddr + ")";
}
}
/* 지번 주소를 선택했을 경우 */
else {
fullAddr = response.jibunAddress;
}
/* 우편번호 저장 */
ui.postcode.val(response.zonecode).trigger("change");
/* 도로명 주소 저장 */
var roadAddr = (response.userSelectedType === "R" ? fullAddr : response.roadAddress);
ui.roadAddress.val(roadAddr).trigger("change");
/* 지번 주소 저장 */
var jibunAddr = (response.userSelectedType === "R" ? response.jibunAddress : fullAddr);
ui.jibunAddress.val(jibunAddr ? "(" + jibunAddr + ")" : jibunAddr).trigger("change");
/* 부가 주소 저장 */
ui.extraAddress.val(extraAddr).trigger("change");
/* 예상 주소 저장 */
ui.guide.hide().html("");
if(response.autoRoadAddress) {
var expRoadAddr = (response.autoRoadAddress + extraRoadAddr);
ui.guide
.html("(" + xe.lang.msg_krzip_road_address_expectation.replace("%s", expRoadAddr) + ")")
.show();
}
else if(response.autoJibunAddress) {
var expJibunAddr = response.autoJibunAddress;
ui.guide
.html("(" + xe.lang.msg_krzip_jibun_address_expectation.replace("%s", expJibunAddr) + ")")
.show();
}
/* 상세 주소로 커서 이동 */
ui.detailAddress.trigger("focus");
}
});
/* 상세 주소 저장 이벤트 등록 */
var i, val, key = ["postcode", "roadAddress", "jibunAddress", "detailAddress", "extraAddress"];
for(i = 0; i < key.length; i++) {
val = key[i];
ui[val].data("linked", val).on("change", function (e) {
var $this = $(this);
values[$this.data("linked")].val($this.val());
});
}
/* 검색 이벤트 등록 */
key = ["postcode", "roadAddress", "jibunAddress", "extraAddress", "search"];
for(i = 0; i < key.length; i++) {
val = key[i];
ui[val].on("click", function (e) {
krzip.open();
});
}
};
})(jQuery);
/* End of file daumapi.js */
/* Location: ./modules/krzip/tpl/js/daumapi.js */

View file

@ -0,0 +1,73 @@
/* Copyright (C) NAVER <http://www.navercorp.com> */
(function ($) {
"use strict";
$.fn.Krzip = function (order, data) {
var $this = $(this);
var values = {
postcode : $this.find(".krzip-hidden-postcode"),
roadAddress : $this.find(".krzip-hidden-roadAddress"),
jibunAddress : $this.find(".krzip-hidden-jibunAddress"),
detailAddress : $this.find(".krzip-hidden-detailAddress"),
extraAddress : $this.find(".krzip-hidden-extraAddress")
};
var ui = {
postcode : $this.find(".krzip-postcode"),
roadAddress : $this.find(".krzip-roadAddress"),
jibunAddress : $this.find(".krzip-jibunAddress"),
detailAddress : $this.find(".krzip-detailAddress"),
extraAddress : $this.find(".krzip-extraAddress"),
search : $this.find(".krzip-search")
};
var krzip = $this.data("krzip");
if(!krzip) {
krzip = {
open: function (query) {
var request_url = "./"
.setQuery("module", "krzip")
.setQuery("act", "dispKrzipSearchForm")
.setQuery("query", query);
popopen(request_url, $this.selector);
}
};
/* 상세 주소 저장 이벤트 등록 */
var i, val, key = ["postcode", "roadAddress", "jibunAddress", "detailAddress", "extraAddress"];
for(i = 0; i < key.length; i++) {
val = key[i];
ui[val].data("linked", val).on("change", function (e) {
var $this = $(this);
values[$this.data("linked")].val($this.val());
});
}
/* 검색 이벤트 등록 */
key = ["postcode", "roadAddress", "jibunAddress", "extraAddress", "search"];
for(i = 0; i < key.length; i++) {
val = key[i];
ui[val].on("click", function (e) {
var query = krzip.query;
krzip.open(query);
});
}
}
else if(order === "query" && data) {
krzip.query = data.query;
ui.postcode.val(data[0]).trigger("change");
ui.roadAddress.val(data[1]).trigger("change");
ui.jibunAddress.val(data[2]).trigger("change");
ui.extraAddress.val(data[4]).trigger("change");
ui.detailAddress.trigger("focus");
}
/* 인스턴스 저장 */
$this.data("krzip", krzip);
};
})(jQuery);
/* End of file epostapi.js */
/* Location: ./modules/krzip/tpl/js/epostapi.js */

View file

@ -0,0 +1,48 @@
/* Copyright (C) NAVER <http://www.navercorp.com> */
(function ($) {
"use strict";
$.fn.Krzip = function () {
var $this = $(this);
var ui = {
input : $this.find(".krzip-input"),
search : $this.find(".krzip-search"),
addressList : $this.find(".krzip-addressList")
};
/* 자식 요소 이벤트 등록 */
ui.search.on("click", function (e) {
exec_json(
"krzip.getKrzipCodeList",
{query: ui.input.val()},
function (response) {
var address_list = response.address_list;
$this.data("address_list", address_list);
for(var i = 0; i < address_list.length; i++) {
var val = address_list[i];
var $li = $("<li>").data("index", i).html(val.join(" "));
ui.addressList.html("").append($li);
}
},
function (response) {
$this.data("address_list", "");
ui.addressList.html("");
}
);
});
ui.addressList.on("click", "li", function (e) {
var address_list = $this.data("address_list"),
address = address_list[$(this).data("index")];
opener.jQuery(window.name).Krzip("query", address);
window.close();
});
ui.input.on("keydown", function (e) {
(e.keyCode == 13 && ui.search.trigger("click"));
});
};
})(jQuery);
/* End of file epostapi.search.js */
/* Location: ./modules/krzip/tpl/js/epostapi.search.js */

View file

@ -0,0 +1,55 @@
/* Copyright (C) NAVER <http://www.navercorp.com> */
(function ($) {
"use strict";
$.fn.Krzip = function () {
var $this = $(this);
var values = {
postcode : $this.find(".krzip-hidden-postcode"),
roadAddress : $this.find(".krzip-hidden-roadAddress"),
jibunAddress : $this.find(".krzip-hidden-jibunAddress"),
detailAddress : $this.find(".krzip-hidden-detailAddress"),
extraAddress : $this.find(".krzip-hidden-extraAddress")
};
var ui = {
postcode : $this.find(".krzip-postcode"),
roadAddress : $this.find(".krzip-roadAddress"),
jibunAddress : $this.find(".krzip-jibunAddress"),
detailAddress : $this.find(".krzip-detailAddress"),
extraAddress : $this.find(".krzip-extraAddress"),
search : $this.find(".krzip-search"),
guide : $this.find(".krzip-guide")
};
values.postcode.addClass("postcodify_postcode5");
values.roadAddress.addClass("postcodify_address");
values.jibunAddress.addClass("postcodify_jibeon_address");
values.detailAddress.addClass("postcodify_details");
values.extraAddress.addClass("postcodify_extra_info");
ui.postcode.addClass("postcodify_postcode5");
ui.roadAddress.addClass("postcodify_address");
ui.jibunAddress.addClass("postcodify_jibeon_address");
ui.detailAddress.addClass("postcodify_details");
ui.extraAddress.addClass("postcodify_extra_info");
ui.search.postcodifyPopUp({
inputParent : $this,
useFullJibeon : false,
requireExactQuery : false,
onSelect : function () {
var jibun = ui.jibunAddress.val();
if(jibun) {
values.jibunAddress.val("(" + jibun + ")");
ui.jibunAddress.val("(" + jibun + ")");
}
}
});
};
})(jQuery);
/* End of file postcodify.js */
/* Location: ./modules/krzip/tpl/js/postcodify.js */

View file

@ -0,0 +1,24 @@
<!--// 우체국 우편번호 API -->
<!--// HEADER -->
<load target="" />
<load target="./css/popup.css" index="100000" />
<load target="./js/epostapi.search.js" />
<!--// BODY -->
<div class="krZip" id="krzip-{$template_config->sequence_id}">
<div class="krzip-search-wrap">
<div class="krzip-input-wrap">
<input type="text" class="krzip-input" placeholder="{$lang->cmd_search}" />
</div>
<input type="button" class="krzip-search" />
</div>
<ul class="krzip-addressList">
</ul>
</div>
<!--// FOOTER -->
<script>
//<![CDATA[
jQuery("#krzip-{$template_config->sequence_id}").Krzip();
//]]>
</script>

View file

@ -0,0 +1,41 @@
<!--// 다음 우편번호 API -->
<!--// HEADER -->
{@$is_https = strtoupper(parse_url($current_url, 0)) == 'HTTPS'}
<load target="./css/default.css" />
<load target="http://dmaps.daum.net/map_js_init/postcode.v2.js" cond="!$is_https" />
<load target="https://spi.maps.daum.net/imap/map_js_init/postcode.v2.js" cond="$is_https" />
<load target="./js/daumapi.js" />
<!--// BODY -->
<div class="krZip" id="krzip-{$template_config->sequence_id}">
<input type="hidden" name="{$template_config->column_name}[]" class="krzip-hidden-postcode" value="{$template_config->values[0]}" />
<input type="hidden" name="{$template_config->column_name}[]" class="krzip-hidden-roadAddress" value="{$template_config->values[1]}" />
<input type="hidden" name="{$template_config->column_name}[]" class="krzip-hidden-jibunAddress" value="{$template_config->values[2]}" />
<input type="hidden" name="{$template_config->column_name}[]" class="krzip-hidden-detailAddress" value="{$template_config->values[3]}" />
<input type="hidden" name="{$template_config->column_name}[]" class="krzip-hidden-extraAddress" value="{$template_config->values[4]}" />
<div class="krzip-postcode-wrap">
<label>{$lang->cmd_krzip_postcode}</label>
<input type="text" class="krzip-postcode" value="{$template_config->values[0]}" disabled="disabled" />
<input type="button" class="krzip-search btn" value="{$lang->cmd_search}" />
</div>
<div class="krzip-address-wrap">
<label>{$lang->cmd_krzip_address}</label>
<input type="text" class="krzip-roadAddress" value="{$template_config->values[1]}" disabled="disabled" />
<input type="text" class="krzip-jibunAddress" value="{$template_config->values[2]}" disabled="disabled" />
<input type="text" class="krzip-extraAddress" value="{$template_config->values[4]}" disabled="disabled" />
</div>
<div class="krzip-detailAddress-wrap">
<label>{$lang->cmd_krzip_detail_address}</label>
<input type="text" class="krzip-detailAddress" value="{$template_config->values[3]}" />
</div>
<div class="krzip-guide"></div>
</div>
<!--// FOOTER -->
<script>
//<![CDATA[
xe.lang.msg_krzip_road_address_expectation = "{$lang->msg_krzip_road_address_expectation}";
xe.lang.msg_krzip_jibun_address_expectation = "{$lang->msg_krzip_jibun_address_expectation}";
jQuery("#krzip-{$template_config->sequence_id}").Krzip();
//]]>
</script>

View file

@ -0,0 +1,35 @@
<!--// 우체국 우편번호 API -->
<!--// HEADER -->
<load target="./css/default.css" />
<load target="./js/epostapi.js" />
<!--// BODY -->
<div class="krZip" id="krzip-{$template_config->sequence_id}">
<input type="hidden" name="{$template_config->column_name}[]" class="krzip-hidden-postcode" value="{$template_config->values[0]}" />
<input type="hidden" name="{$template_config->column_name}[]" class="krzip-hidden-roadAddress" value="{$template_config->values[1]}" />
<input type="hidden" name="{$template_config->column_name}[]" class="krzip-hidden-jibunAddress" value="{$template_config->values[2]}" />
<input type="hidden" name="{$template_config->column_name}[]" class="krzip-hidden-detailAddress" value="{$template_config->values[3]}" />
<input type="hidden" name="{$template_config->column_name}[]" class="krzip-hidden-extraAddress" value="{$template_config->values[4]}" />
<div class="krzip-postcode-wrap">
<label>{$lang->cmd_krzip_postcode}</label>
<input type="text" class="krzip-postcode" value="{$template_config->values[0]}" disabled="disabled" />
<input type="button" class="krzip-search btn" value="{$lang->cmd_search}" />
</div>
<div class="krzip-address-wrap">
<label>{$lang->cmd_krzip_address}</label>
<input type="text" class="krzip-roadAddress" value="{$template_config->values[1]}" disabled="disabled" />
<input type="text" class="krzip-jibunAddress" value="{$template_config->values[2]}" disabled="disabled" />
<input type="text" class="krzip-extraAddress" value="{$template_config->values[4]}" disabled="disabled" />
</div>
<div class="krzip-detailAddress-wrap">
<label>{$lang->cmd_krzip_detail_address}</label>
<input type="text" class="krzip-detailAddress" value="{$template_config->values[3]}" />
</div>
</div>
<!--// FOOTER -->
<script>
//<![CDATA[
jQuery("#krzip-{$template_config->sequence_id}").Krzip();
//]]>
</script>

View file

@ -0,0 +1,36 @@
<!--// Postcodify 우편번호 API -->
<!--// HEADER -->
<load target="./css/default.css" />
<load target="https://cdn.poesis.kr/post/search.min.js" />
<load target="./js/postcodify.js" />
<!--// BODY -->
<div class="krZip" id="krzip-{$template_config->sequence_id}">
<input type="hidden" name="{$template_config->column_name}[]" class="krzip-hidden-postcode" value="{$template_config->values[0]}" />
<input type="hidden" name="{$template_config->column_name}[]" class="krzip-hidden-roadAddress" value="{$template_config->values[1]}" />
<input type="hidden" name="{$template_config->column_name}[]" class="krzip-hidden-jibunAddress" value="{$template_config->values[2]}" />
<input type="hidden" name="{$template_config->column_name}[]" class="krzip-hidden-detailAddress" value="{$template_config->values[3]}" />
<input type="hidden" name="{$template_config->column_name}[]" class="krzip-hidden-extraAddress" value="{$template_config->values[4]}" />
<div class="krzip-postcode-wrap">
<label>{$lang->cmd_krzip_postcode}</label>
<input type="text" class="krzip-postcode" value="{$template_config->values[0]}" disabled="disabled" />
<input type="button" class="krzip-search btn" value="{$lang->cmd_search}" />
</div>
<div class="krzip-address-wrap">
<label>{$lang->cmd_krzip_address}</label>
<input type="text" class="krzip-roadAddress" value="{$template_config->values[1]}" disabled="disabled" />
<input type="text" class="krzip-jibunAddress" value="{$template_config->values[2]}" disabled="disabled" />
<input type="text" class="krzip-extraAddress" value="{$template_config->values[4]}" disabled="disabled" />
</div>
<div class="krzip-detailAddress-wrap">
<label>{$lang->cmd_krzip_detail_address}</label>
<input type="text" class="krzip-detailAddress" value="{$template_config->values[3]}" />
</div>
</div>
<!--// FOOTER -->
<script>
//<![CDATA[
jQuery("#krzip-{$template_config->sequence_id}").Krzip();
//]]>
</script>

View file

@ -93,19 +93,16 @@ class member extends ModuleObject {
if(!$config->signupForm || !is_array($config->signupForm))
{
$identifier = $isNotInstall ? 'email_address' : 'user_id';
$identifier = 'user_id';
$config->signupForm = $oMemberAdminController->createSignupForm($identifier);
$config->identifier = $identifier;
// Create Ruleset File
FileHandler::makeDir('./files/ruleset');
$oMemberAdminController->_createSignupRuleset($config->signupForm);
$oMemberAdminController->_createLoginRuleset($config->identifier);
$oMemberAdminController->_createFindAccountByQuestion($config->identifier);
}
$oModuleController->insertModuleConfig('member',$config);
$groups = $oMemberModel->getGroups();

View file

@ -1988,7 +1988,7 @@ class memberController extends member
}
// Check if ID is prohibited
if($oMemberModel->isDeniedID($args->user_id))
if($logged_info->is_admin !== 'Y' && $oMemberModel->isDeniedID($args->user_id))
{
return new Object(-1,'denied_user_id');
}
@ -2001,7 +2001,7 @@ class memberController extends member
}
// Check if nickname is prohibited
if($oMemberModel->isDeniedNickName($args->nick_name))
if($logged_info->is_admin !== 'Y' && $oMemberModel->isDeniedNickName($args->nick_name))
{
return new Object(-1,'denied_nick_name');
}
@ -2014,7 +2014,7 @@ class memberController extends member
}
// Check managed Email Host
if($oMemberModel->isDeniedEmailHost($args->email_address))
if($logged_info->is_admin !== 'Y' && $oMemberModel->isDeniedEmailHost($args->email_address))
{
$config = $oMemberModel->getMemberConfig();
$emailhost_check = $config->emailhost_check;
@ -2175,7 +2175,7 @@ class memberController extends member
$orgMemberInfo = $output->data;
// Check managed Email Host
if($oMemberModel->isDeniedEmailHost($args->email_address))
if($logged_info->is_admin !== 'Y' && $oMemberModel->isDeniedEmailHost($args->email_address))
{
$config = $oMemberModel->getMemberConfig();
$emailhost_check = $config->emailhost_check;
@ -2212,7 +2212,7 @@ class memberController extends member
}
// Check if ID is prohibited
if($args->user_id && $oMemberModel->isDeniedID($args->user_id))
if($logged_info->is_admin !== 'Y' && $args->user_id && $oMemberModel->isDeniedID($args->user_id))
{
return new Object(-1,'denied_user_id');
}
@ -2228,7 +2228,7 @@ class memberController extends member
}
// Check if nickname is prohibited
if($args->nick_name && $oMemberModel->isDeniedNickName($args->nick_name))
if($logged_info->is_admin !== 'Y' && $args->nick_name && $oMemberModel->isDeniedNickName($args->nick_name))
{
return new Object(-1, 'denied_nick_name');
}

View file

@ -9,7 +9,7 @@
<title xml:lang="ru">Опрос</title>
<title xml:lang="zh-TW">投票調查</title>
<title xml:lang="tr">Oylama</title>
<description xml:lang="ko">설문조사 관리</description>
<description xml:lang="ko">설문조사 관리를 위한 모듈입니다.</description>
<description xml:lang="zh-CN">管理投票调查的模块。</description>
<description xml:lang="jp">アンケート管理モジュール</description>
<description xml:lang="en">This module is for managering polls.</description>
@ -18,8 +18,8 @@
<description xml:lang="ru">Этот модуль служит для управления опросами.</description>
<description xml:lang="zh-TW">管理投票調查的模組。</description>
<description xml:lang="tr">Oylamaları düzenlemek için kullanılan modüldür.</description>
<version>1.7</version>
<date>2013-11-27</date>
<version>2.0</version>
<date>2015-06-09</date>
<category>content</category>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
@ -33,4 +33,4 @@
<name xml:lang="zh-TW">NAVER</name>
<name xml:lang="tr">NAVER</name>
</author>
</module>
</module>

View file

@ -9,7 +9,12 @@
<action name="getPollGetColorsetList" type="model" />
<action name="getPollAdminTarget" type="model" />
<action name="getPollstatus" type="model" />
<action name="getPollinfo" type="model" />
<action name="getPollitemInfo" type="model" />
<action name="procPollInsert" type="controller" />
<action name="procPollInsertItem" type="controller" />
<action name="procPollDeleteItem" type="controller" />
<action name="procPoll" type="controller" ruleset="poll" />
<action name="procPollViewResult" type="controller" />
<action name="procPollGetList" type="controller" />

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