20
.gitignore
vendored
|
|
@ -1,6 +1,22 @@
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
config.user.inc.php
|
config.user.inc.php
|
||||||
/files/
|
/files/
|
||||||
/build/
|
/build/
|
||||||
|
|
||||||
|
codeception.yml
|
||||||
|
/tests/_output/
|
||||||
|
/tests/*.suite.yml
|
||||||
|
|
||||||
/node_modules/
|
/node_modules/
|
||||||
.DS_Store
|
/bower_components/
|
||||||
Thumbs.db
|
/vendor/
|
||||||
|
composer.phar
|
||||||
|
composer.lock
|
||||||
|
|
||||||
|
.idea
|
||||||
|
*.sublime-workspace
|
||||||
|
*.sublime-project
|
||||||
|
.codeintel
|
||||||
|
|
||||||
|
|
|
||||||
9
.jshintignore
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
common/js/jquery*.js
|
||||||
|
common/js/modernizr.js
|
||||||
|
common/js/xe.js
|
||||||
|
common/js/x.js
|
||||||
|
common/js/*.min.js
|
||||||
|
common/js/unittest/*
|
||||||
|
common/js/plugins/*
|
||||||
|
common/js/foggyLayer.js
|
||||||
|
common/js/html5.js
|
||||||
68
.jshintrc
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
{
|
||||||
|
"globalstrict": false,
|
||||||
|
"undef": false,
|
||||||
|
"eqeqeq": false,
|
||||||
|
"browser": true,
|
||||||
|
"devel": true,
|
||||||
|
"jquery": true,
|
||||||
|
"evil": true,
|
||||||
|
"globals": {
|
||||||
|
"window": true,
|
||||||
|
"current_url": true,
|
||||||
|
"exec_json": true,
|
||||||
|
"exec_xml": true,
|
||||||
|
"procFilter": true,
|
||||||
|
"xe": true,
|
||||||
|
"request_uri": true,
|
||||||
|
"xAddEventListener": false,
|
||||||
|
"xResizeEvent": false,
|
||||||
|
"xScrollEvent": false,
|
||||||
|
"xAppendChild": false,
|
||||||
|
"xClientHeight": false,
|
||||||
|
"xClientWidth": false,
|
||||||
|
"xCreateElement": false,
|
||||||
|
"xDef": false,
|
||||||
|
"xDeleteCookie": false,
|
||||||
|
"xDisplay": false,
|
||||||
|
"xEvent": false,
|
||||||
|
"xFirstChild": false,
|
||||||
|
"xGetBodyWidth": false,
|
||||||
|
"xGetBodyHeight": false,
|
||||||
|
"xGetComputedStyle": false,
|
||||||
|
"xGetCookie": false,
|
||||||
|
"xGetElementById": false,
|
||||||
|
"xGetElementsByAttribute": false,
|
||||||
|
"xGetElementsByClassName": false,
|
||||||
|
"xGetElementsByTagName": false,
|
||||||
|
"xGetURLArguments": false,
|
||||||
|
"xHeight": false,
|
||||||
|
"xHex": false,
|
||||||
|
"xHide": false,
|
||||||
|
"xInnerHtml": false,
|
||||||
|
"xLeft": false,
|
||||||
|
"xMoveTo": false,
|
||||||
|
"xName": false,
|
||||||
|
"xNextSib": false,
|
||||||
|
"xNum": false,
|
||||||
|
"xOffsetLeft": false,
|
||||||
|
"xOffsetTop": false,
|
||||||
|
"xPad": false,
|
||||||
|
"xPageX": false,
|
||||||
|
"xPageY": false,
|
||||||
|
"xParent": false,
|
||||||
|
"xPreventDefault": false,
|
||||||
|
"xPrevSib": false,
|
||||||
|
"xRemoveEventListener": false,
|
||||||
|
"xResizeTo": false,
|
||||||
|
"xScrollLeft": false,
|
||||||
|
"xScrollTop": false,
|
||||||
|
"xSetCookie": false,
|
||||||
|
"xShow": false,
|
||||||
|
"xStr": false,
|
||||||
|
"xTop": false,
|
||||||
|
"xVisibility": false,
|
||||||
|
"xWidth": false,
|
||||||
|
"xZIndex": false,
|
||||||
|
"xStopPropagation": false
|
||||||
|
}
|
||||||
|
}
|
||||||
21
.travis.yml
|
|
@ -1,11 +1,30 @@
|
||||||
language: php
|
language: php
|
||||||
php:
|
php:
|
||||||
- 5.2
|
|
||||||
- 5.3
|
- 5.3
|
||||||
- 5.4
|
- 5.4
|
||||||
- 5.5
|
- 5.5
|
||||||
|
- 5.6
|
||||||
|
- 7
|
||||||
|
- hhvm
|
||||||
|
matrix:
|
||||||
|
allow_failures:
|
||||||
|
- php: 7
|
||||||
|
- php: hhvm
|
||||||
before_script:
|
before_script:
|
||||||
|
- travis_retry composer self-update
|
||||||
- npm install -g grunt-cli
|
- npm install -g grunt-cli
|
||||||
- npm install
|
- 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
|
||||||
script:
|
script:
|
||||||
- grunt lint
|
- grunt lint
|
||||||
|
- grunt minify
|
||||||
|
- if [ $(phpenv version-name) != "5.3" ]; then ./vendor/bin/codecept run -d --env travis;
|
||||||
|
fi
|
||||||
|
notifications:
|
||||||
|
slack:
|
||||||
|
secure: V4p13KlqML94RK0KTlHNJwrdwOK1K6n7sfxs6oILCJTqBfGuqN2fCglnxX78QEUwnl8LWrwSdA4AnUVfZqv6N5g7zlDDr2ZU2+a4XVApmEss3/C0g9zsYNlFfkJqChvtMsV29UiBjSfqn/coAVLtY1wbCYJYk3Wc2nmB/3Qti9Y=
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,11 @@ Issue 작성 시 참고해주세요.
|
||||||
|
|
||||||
* 작성하려는 이슈가 이미 있는지 검색 후 등록해주세요. 비슷한 이슈가 있다면 댓글로 추가 내용을 덧붙일 수 있습니다.
|
* 작성하려는 이슈가 이미 있는지 검색 후 등록해주세요. 비슷한 이슈가 있다면 댓글로 추가 내용을 덧붙일 수 있습니다.
|
||||||
* 이슈에는 하나의 문제 또는 제안을 작성해주세요. 절대 하나의 이슈에 2개 이상의 내용을 적지마세요.
|
* 이슈에는 하나의 문제 또는 제안을 작성해주세요. 절대 하나의 이슈에 2개 이상의 내용을 적지마세요.
|
||||||
* 이슈는 가능한 상세하고 간결하게 작성해주세요
|
* 이슈는 가능한 상세하고 간결하게 작성해주세요.
|
||||||
* 필요하다면 화면을 캡쳐하여 이미지를 업로드할 수 있습니다
|
* 필요하다면 화면을 캡처하여 이미지를 업로드할 수 있습니다.
|
||||||
|
|
||||||
## Pull request(PR)
|
## Pull request(PR)
|
||||||
* `master` 브랜치의 코드는 수정하지마세요
|
* `master` 브랜치의 코드는 수정하지마세요.
|
||||||
* PR은 `develop` 브랜치만 허용합니다.
|
* PR은 `develop` 브랜치만 허용합니다.
|
||||||
* `develop` 브랜치를 부모로 한 토픽 브랜치를 활용하면 편리합니다.
|
* `develop` 브랜치를 부모로 한 토픽 브랜치를 활용하면 편리합니다.
|
||||||
|
|
||||||
|
|
@ -17,9 +17,9 @@ Issue 작성 시 참고해주세요.
|
||||||
## Coding Guidelines
|
## Coding Guidelines
|
||||||
코드를 기여할 때 Coding conventions을 따라야합니다.
|
코드를 기여할 때 Coding conventions을 따라야합니다.
|
||||||
|
|
||||||
* 모든 text 파일의 charset은 BOM이 없는 UTF-8입니다
|
* 모든 text 파일의 charset은 BOM이 없는 UTF-8입니다.
|
||||||
* newline은 UNIX type을 사용합니다. 일부 파일이 다른 type을 사용하더라도 절대 고치지 마세요!
|
* newline은 UNIX type을 사용합니다. 일부 파일이 다른 type을 사용하더라도 절대 고치지 마세요!
|
||||||
* 들여쓰기는 1개의 탭으로 합니다
|
* 들여쓰기는 1개의 탭으로 합니다.
|
||||||
* class 선언과 function, if, foreach, for, while 등 중괄호의 `{}`는 다음 줄에 있어야 합니다
|
* class 선언과 function, if, foreach, for, while 등 중괄호의 `{}`는 다음 줄에 있어야 합니다.
|
||||||
* 마찬가지로 선언 다음에는 공백을 두지 않습니다. ex) CORRECT `if(...)`, INCORRECT `if (...)`
|
* 마찬가지로 선언 다음에는 공백을 두지 않습니다. ex) CORRECT `if(...)`, INCORRECT `if (...)`
|
||||||
* **Coding convention에 맞지 않는 코드를 발견 하더라도 목적과 관계 없는 코드는 절대 고치지 마세요**
|
* **Coding convention에 맞지 않는 코드를 발견 하더라도 목적과 관계 없는 코드는 절대 고치지 마세요.**
|
||||||
|
|
|
||||||
117
Gruntfile.js
|
|
@ -2,7 +2,7 @@ module.exports = function(grunt) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var banner = '/*! Copyright (C) NAVER <http://www.navercorp.com> */\n';
|
var banner = '/*! Copyright (C) NAVER <http://www.navercorp.com> */\n';
|
||||||
var banner_xe_js = banner + '/**!\n * @file common.js + js_app.js + xml_handler.js + xml_js_filter.js\n * @brief XE Common JavaScript\n **/\n';
|
var banner_xe_js = banner + '/**!\n * @concat modernizr.js + common.js + js_app.js + xml_handler.js + xml_js_filter.js\n * @brief XE Common JavaScript\n **/\n';
|
||||||
|
|
||||||
grunt.file.defaultEncoding = 'utf8';
|
grunt.file.defaultEncoding = 'utf8';
|
||||||
|
|
||||||
|
|
@ -22,6 +22,7 @@ module.exports = function(grunt) {
|
||||||
banner: banner_xe_js
|
banner: banner_xe_js
|
||||||
},
|
},
|
||||||
src: [
|
src: [
|
||||||
|
'common/js/modernizr.js',
|
||||||
'common/js/common.js',
|
'common/js/common.js',
|
||||||
'common/js/js_app.js',
|
'common/js/js_app.js',
|
||||||
'common/js/xml_handler.js',
|
'common/js/xml_handler.js',
|
||||||
|
|
@ -32,7 +33,7 @@ module.exports = function(grunt) {
|
||||||
'xpresseditor': {
|
'xpresseditor': {
|
||||||
options: {
|
options: {
|
||||||
stripBanners: true,
|
stripBanners: true,
|
||||||
banner: banner_xe_js
|
banner: '/**!\n * @concat Xpress_Editor.js + xe_interface.js \n **/\n'
|
||||||
},
|
},
|
||||||
src: [
|
src: [
|
||||||
'modules/editor/skins/xpresseditor/js/Xpress_Editor.js',
|
'modules/editor/skins/xpresseditor/js/Xpress_Editor.js',
|
||||||
|
|
@ -47,7 +48,18 @@ module.exports = function(grunt) {
|
||||||
banner: banner_xe_js
|
banner: banner_xe_js
|
||||||
},
|
},
|
||||||
files: {
|
files: {
|
||||||
'common/js/xe.min.js': ['common/js/xe.js']
|
'common/js/xe.min.js': ['common/js/xe.js'],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'common-js-plugins': {
|
||||||
|
files: {
|
||||||
|
'common/js/plugins/jquery.fileupload/js/main.min.js': ['common/js/plugins/jquery.fileupload/js/main.js'],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'handlebars': {
|
||||||
|
files: {
|
||||||
|
'common/js/plugins/handlebars/handlebars.min.js': ['common/js/plugins/handlebars/handlebars.js'],
|
||||||
|
'common/js/plugins/handlebars.runtime/handlebars.runtime.min.js': ['common/js/plugins/handlebars.runtime/handlebars.runtime.js'],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'modules': {
|
'modules': {
|
||||||
|
|
@ -60,11 +72,15 @@ module.exports = function(grunt) {
|
||||||
// module/editor
|
// module/editor
|
||||||
'modules/editor/skins/xpresseditor/js/xpresseditor.min.js': ['modules/editor/skins/xpresseditor/js/xpresseditor.js'],
|
'modules/editor/skins/xpresseditor/js/xpresseditor.min.js': ['modules/editor/skins/xpresseditor/js/xpresseditor.js'],
|
||||||
'modules/editor/skins/xpresseditor/js/xe_textarea.min.js': ['modules/editor/skins/xpresseditor/js/xe_textarea.js'],
|
'modules/editor/skins/xpresseditor/js/xe_textarea.min.js': ['modules/editor/skins/xpresseditor/js/xe_textarea.js'],
|
||||||
|
'modules/editor/skins/ckeditor/js/default.min.js': ['modules/editor/skins/ckeditor/js/default.js'],
|
||||||
|
'modules/editor/skins/ckeditor/js/xe_interface.min.js': ['modules/editor/skins/ckeditor/js/xe_interface.js'],
|
||||||
|
'modules/editor/skins/ckeditor/js/xe_textarea.min.js': ['modules/editor/skins/ckeditor/js/xe_textarea.js'],
|
||||||
'modules/editor/tpl/js/editor_common.min.js': ['modules/editor/tpl/js/editor_common.js'],
|
'modules/editor/tpl/js/editor_common.min.js': ['modules/editor/tpl/js/editor_common.js'],
|
||||||
'modules/editor/tpl/js/swfupload.min.js': ['modules/editor/tpl/js/swfupload.js'],
|
'modules/editor/tpl/js/swfupload.min.js': ['modules/editor/tpl/js/swfupload.js'],
|
||||||
'modules/editor/tpl/js/uploader.min.js': ['modules/editor/tpl/js/uploader.js'],
|
'modules/editor/tpl/js/uploader.min.js': ['modules/editor/tpl/js/uploader.js'],
|
||||||
'modules/editor/tpl/js/editor.min.js': ['modules/editor/tpl/js/editor.js'],
|
'modules/editor/tpl/js/editor.min.js': ['modules/editor/tpl/js/editor.js'],
|
||||||
'modules/editor/tpl/js/editor_module_config.min.js': ['modules/editor/tpl/js/editor_module_config.js'],
|
'modules/editor/tpl/js/editor_module_config.min.js': ['modules/editor/tpl/js/editor_module_config.js'],
|
||||||
|
'modules/editor/tpl/js/editor.app.min.js': ['modules/editor/tpl/js/editor.app.js'],
|
||||||
// module/admin
|
// module/admin
|
||||||
'modules/admin/tpl/js/admin.min.js': ['modules/admin/tpl/js/admin.js'],
|
'modules/admin/tpl/js/admin.min.js': ['modules/admin/tpl/js/admin.js'],
|
||||||
'modules/admin/tpl/js/config.min.js': ['modules/admin/tpl/js/config.js'],
|
'modules/admin/tpl/js/config.min.js': ['modules/admin/tpl/js/config.js'],
|
||||||
|
|
@ -75,6 +91,7 @@ module.exports = function(grunt) {
|
||||||
'modules/board/skins/default/board.default.min.js': ['modules/board/skins/default/board.default.js'],
|
'modules/board/skins/default/board.default.min.js': ['modules/board/skins/default/board.default.js'],
|
||||||
'modules/board/m.skins/default/js/mboard.min.js': ['modules/board/m.skins/default/js/mboard.js'],
|
'modules/board/m.skins/default/js/mboard.min.js': ['modules/board/m.skins/default/js/mboard.js'],
|
||||||
'modules/board/m.skins/simpleGray/js/mboard.min.js': ['modules/board/m.skins/simpleGray/js/mboard.js'],
|
'modules/board/m.skins/simpleGray/js/mboard.min.js': ['modules/board/m.skins/simpleGray/js/mboard.js'],
|
||||||
|
'modules/board/skins/xedition/board.default.min.js': ['modules/board/skins/xedition/board.default.js'],
|
||||||
// editor-component-image-gallery
|
// editor-component-image-gallery
|
||||||
'modules/editor/components/image_gallery/tpl/gallery.min.js' : ['modules/editor/components/image_gallery/tpl/gallery.js'],
|
'modules/editor/components/image_gallery/tpl/gallery.min.js' : ['modules/editor/components/image_gallery/tpl/gallery.js'],
|
||||||
'modules/editor/components/image_gallery/tpl/list_gallery.min.js' : ['modules/editor/components/image_gallery/tpl/list_gallery.js'],
|
'modules/editor/components/image_gallery/tpl/list_gallery.min.js' : ['modules/editor/components/image_gallery/tpl/list_gallery.js'],
|
||||||
|
|
@ -93,81 +110,79 @@ module.exports = function(grunt) {
|
||||||
'addons/oembed/oembed.min.js': ['addons/oembed/oembed.js'],
|
'addons/oembed/oembed.min.js': ['addons/oembed/oembed.js'],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
'layout': {
|
||||||
|
files: {
|
||||||
|
'layouts/xedition/js/jquery.easing.min.js': ['layouts/xedition/js/jquery.easing.js'],
|
||||||
|
'layouts/xedition/js/layout.min.js': ['layouts/xedition/js/layout.js'],
|
||||||
|
'layouts/xedition/js/welcome.min.js': ['layouts/xedition/js/welcome.js'],
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
cssmin: {
|
cssmin: {
|
||||||
'common-css': {
|
'common': {
|
||||||
files: {
|
files: {
|
||||||
'common/css/xe.min.css': ['common/css/xe.css'],
|
'common/css/xe.min.css': ['common/css/xe.css'],
|
||||||
'common/css/mobile.min.css': ['common/css/mobile.css']
|
'common/css/mobile.min.css': ['common/css/mobile.css']
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'module-admin-css': {
|
'modules': {
|
||||||
files: {
|
|
||||||
'modules/admin/tpl/css/admin.min.css': ['modules/admin/tpl/css/admin.css']
|
|
||||||
}
|
|
||||||
},
|
|
||||||
'editor-component-image-gallery': {
|
|
||||||
files: {
|
files: {
|
||||||
|
'modules/admin/tpl/css/admin.min.css': ['modules/admin/tpl/css/admin.css'],
|
||||||
'modules/editor/components/image_gallery/tpl/popup.min.css': ['modules/editor/components/image_gallery/tpl/popup.css'],
|
'modules/editor/components/image_gallery/tpl/popup.min.css': ['modules/editor/components/image_gallery/tpl/popup.css'],
|
||||||
'modules/editor/components/image_gallery/tpl/slide_gallery.min.css': ['modules/editor/components/image_gallery/tpl/slide_gallery.css'],
|
'modules/editor/components/image_gallery/tpl/slide_gallery.min.css': ['modules/editor/components/image_gallery/tpl/slide_gallery.css'],
|
||||||
}
|
|
||||||
},
|
|
||||||
'moudle-widget-tpl': {
|
|
||||||
files: {
|
|
||||||
'modules/widget/tpl/css/widget.min.css': ['modules/widget/tpl/css/widget.css'],
|
'modules/widget/tpl/css/widget.min.css': ['modules/widget/tpl/css/widget.css'],
|
||||||
}
|
|
||||||
},
|
|
||||||
'moudle-poll': {
|
|
||||||
files: {
|
|
||||||
'modules/poll/tpl/css/poll.min.css': ['modules/poll/tpl/css/poll.css'],
|
'modules/poll/tpl/css/poll.min.css': ['modules/poll/tpl/css/poll.css'],
|
||||||
'modules/poll/skins/default/css/poll.min.css': ['modules/poll/skins/default/css/poll.css'],
|
'modules/poll/skins/default/css/poll.min.css': ['modules/poll/skins/default/css/poll.css'],
|
||||||
'modules/poll/skins/simple/css/poll.min.css': ['modules/poll/skins/simple/css/poll.css'],
|
'modules/poll/skins/simple/css/poll.min.css': ['modules/poll/skins/simple/css/poll.css'],
|
||||||
}
|
|
||||||
},
|
|
||||||
'moudle-editor': {
|
|
||||||
files: {
|
|
||||||
'modules/editor/skins/xpresseditor/css/default.min.css': ['modules/editor/skins/xpresseditor/css/default.css'],
|
'modules/editor/skins/xpresseditor/css/default.min.css': ['modules/editor/skins/xpresseditor/css/default.css'],
|
||||||
|
'modules/board/skins/default/board.default.min.css': ['modules/board/skins/default/board.default.css'],
|
||||||
|
'modules/board/m.skins/default/css/mboard.min.css': ['modules/board/m.skins/default/css/mboard.css'],
|
||||||
|
'modules/board/m.skins/simpleGray/css/mboard.min.css': ['modules/board/m.skins/simpleGray/css/mboard.css'],
|
||||||
|
'modules/board/skins/xedition/board.default.min.css': ['modules/board/skins/xedition/board.default.css'],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'addon-oembed': {
|
'addons': {
|
||||||
files: {
|
files: {
|
||||||
'addons/oembed/jquery.oembed.min.css': ['addons/oembed/jquery.oembed.css'],
|
'addons/oembed/jquery.oembed.min.css': ['addons/oembed/jquery.oembed.css'],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'module-board': {
|
'layout': {
|
||||||
files: {
|
files: {
|
||||||
'modules/board/skins/default/board.default.min.css': ['modules/board/skins/default/board.default.css'],
|
'layouts/xedition/css/camera.min.css': ['layouts/xedition/css/camera.css'],
|
||||||
'modules/board/m.skins/default/css/mboard.min.css': ['modules/board/m.skins/default/css/mboard.css'],
|
'layouts/xedition/css/layout.min.css': ['layouts/xedition/css/layout.css'],
|
||||||
'modules/board/m.skins/simpleGray/css/mboard.min.css': ['modules/board/m.skins/simpleGray/css/mboard.css']
|
'layouts/xedition/css/webfont.min.css': ['layouts/xedition/css/webfont.css'],
|
||||||
}
|
'layouts/xedition/css/welcome.min.css': ['layouts/xedition/css/welcome.css'],
|
||||||
|
'layouts/xedition/css/widget.login.min.css': ['layouts/xedition/css/widget.login.css'],
|
||||||
|
'layouts/xedition/css/xeicon.min.css': ['layouts/xedition/css/xeicon.css'],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
},
|
||||||
jshint: {
|
jshint: {
|
||||||
files: [
|
files: [
|
||||||
'Gruntfile.js',
|
'Gruntfile.js',
|
||||||
'common/js/*.js', '!common/js/html5.js', '!common/js/jquery.js', '!common/js/x.js', '!common/js/xe.js',
|
'common/js/*.js',
|
||||||
'modules/admin/tpl/js/*.js',
|
'modules/admin/tpl/js/*.js',
|
||||||
'modules/board/tpl/js/*.js',
|
'modules/board/tpl/js/*.js',
|
||||||
|
'modules/board/skins/*/*.js',
|
||||||
'modules/editor/tpl/js/*.js',
|
'modules/editor/tpl/js/*.js',
|
||||||
'modules/menu/tpl/js/*.js',
|
'modules/menu/tpl/js/*.js',
|
||||||
'modules/widget/tpl/js/*.js',
|
'modules/widget/tpl/js/*.js',
|
||||||
],
|
],
|
||||||
options : {
|
options : {
|
||||||
globalstrict: false,
|
|
||||||
undef : false,
|
|
||||||
eqeqeq: false,
|
|
||||||
browser : true,
|
|
||||||
globals: {
|
|
||||||
"jQuery" : true,
|
|
||||||
"console" : true,
|
|
||||||
"window" : true
|
|
||||||
},
|
|
||||||
ignores : [
|
ignores : [
|
||||||
'**/jquery*.js',
|
'**/jquery*.js',
|
||||||
'**/swfupload.js',
|
'**/swfupload.js',
|
||||||
'**/*.min.js',
|
'**/**.min.js',
|
||||||
'**/*-packed.js',
|
'**/*-packed.js',
|
||||||
'**/*.compressed.js'
|
'**/*.compressed.js',
|
||||||
|
'**/jquery-*.js',
|
||||||
|
'**/jquery.*.js',
|
||||||
|
'common/js/html5.js',
|
||||||
|
'common/js/x.js',
|
||||||
|
'common/js/xe.js',
|
||||||
|
'common/js/modernizr.js',
|
||||||
|
'vendor/**',
|
||||||
|
'tests/**',
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -190,6 +205,8 @@ module.exports = function(grunt) {
|
||||||
'!common/css/bootstrap.css',
|
'!common/css/bootstrap.css',
|
||||||
'!common/css/bootstrap-responsive.css',
|
'!common/css/bootstrap-responsive.css',
|
||||||
'!**/*.min.css',
|
'!**/*.min.css',
|
||||||
|
'!vendor/**',
|
||||||
|
'!tests/**',
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -205,7 +222,9 @@ module.exports = function(grunt) {
|
||||||
"!tests/**",
|
"!tests/**",
|
||||||
"!tools/**",
|
"!tools/**",
|
||||||
"!node_modules/**",
|
"!node_modules/**",
|
||||||
"!libs/**"
|
"!libs/**",
|
||||||
|
"!vendor/**",
|
||||||
|
"!tests/_output/**"
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
@ -259,9 +278,10 @@ module.exports = function(grunt) {
|
||||||
if(tasks.length === 0) {
|
if(tasks.length === 0) {
|
||||||
grunt.util.spawn({
|
grunt.util.spawn({
|
||||||
cmd: "tar",
|
cmd: "tar",
|
||||||
args: ['cfz', 'xe.'+version+'.tar.gz', 'xe/'],
|
args: ['cfz', '../xe.'+version+'.tar.gz', './'],
|
||||||
opts: {
|
opts: {
|
||||||
cwd: 'build'
|
cwd: 'build/xe',
|
||||||
|
cache: false
|
||||||
}
|
}
|
||||||
}, function (error, result, code) {
|
}, function (error, result, code) {
|
||||||
grunt.log.ok('Archived(full) : ' + build_dir + '/xe.'+version+'.tar.gz');
|
grunt.log.ok('Archived(full) : ' + build_dir + '/xe.'+version+'.tar.gz');
|
||||||
|
|
@ -269,9 +289,10 @@ module.exports = function(grunt) {
|
||||||
|
|
||||||
grunt.util.spawn({
|
grunt.util.spawn({
|
||||||
cmd: "zip",
|
cmd: "zip",
|
||||||
args: ['-r', 'xe.'+version+'.zip', 'xe/'],
|
args: ['-r', '../xe.'+version+'.zip', './'],
|
||||||
opts: {
|
opts: {
|
||||||
cwd: 'build'
|
cwd: 'build/xe',
|
||||||
|
cache: false
|
||||||
}
|
}
|
||||||
}, function (error, result, code) {
|
}, function (error, result, code) {
|
||||||
grunt.log.ok('Archived(full) : ' + build_dir + '/xe.'+version+'.zip');
|
grunt.log.ok('Archived(full) : ' + build_dir + '/xe.'+version+'.zip');
|
||||||
|
|
@ -303,7 +324,7 @@ module.exports = function(grunt) {
|
||||||
// changed
|
// changed
|
||||||
grunt.util.spawn({
|
grunt.util.spawn({
|
||||||
cmd: "git",
|
cmd: "git",
|
||||||
args: ['diff', '--name-only', target]
|
args: ['diff', '--name-only', '--diff-filter' ,'ACM', target]
|
||||||
}, function (error, result, code) {
|
}, function (error, result, code) {
|
||||||
diff = result.stdout;
|
diff = result.stdout;
|
||||||
|
|
||||||
|
|
@ -313,8 +334,8 @@ module.exports = function(grunt) {
|
||||||
|
|
||||||
// changed
|
// changed
|
||||||
if(diff.length) {
|
if(diff.length) {
|
||||||
var args_tar = ['archive', '--prefix=xe/', '-o', 'build/xe.'+version+'.changed.tar.gz', version];
|
var args_tar = ['archive', '-o', 'build/xe.'+version+'.changed.tar.gz', version];
|
||||||
var args_zip = ['archive', '--prefix=xe/', '-o', 'build/xe.'+version+'.changed.zip', version];
|
var args_zip = ['archive', '-o', 'build/xe.'+version+'.changed.zip', version];
|
||||||
args_tar = args_tar.concat(diff);
|
args_tar = args_tar.concat(diff);
|
||||||
args_zip = args_zip.concat(diff);
|
args_zip = args_zip.concat(diff);
|
||||||
|
|
||||||
|
|
|
||||||
35
README.md
|
|
@ -5,20 +5,39 @@ XpressEngine
|
||||||
[](http://www.gnu.org/licenses/gpl.html)
|
[](http://www.gnu.org/licenses/gpl.html)
|
||||||
[](https://github.com/xpressengine/xe-core/releases)
|
[](https://github.com/xpressengine/xe-core/releases)
|
||||||
|
|
||||||
XpressEngine(XE)은 PHP로 작성한 설치형 CMS(Content Management System)입니다.
|
XpressEngine(XE)은 누구나 쉽고 편하고 자유롭게 콘텐츠를 발행을 할 수 있도록 하기 위한 CMS(Content Management System)입니다.
|
||||||
오픈소스 라이선스로 누구나 사용 또는 개작할 수 있으며, 개방형 프로젝트로서 누구나 개발에 참여할 수 있습니다.
|
오픈소스 라이선스로 누구나 사용 또는 개작할 수 있으며, 개방형 프로젝트로서 누구나 개발에 참여할 수 있습니다.
|
||||||
|
|
||||||
## Support
|
### 확장형 구조
|
||||||
* Official sitie (Korean) : http://www.xpressengine.com/
|
|
||||||
|
XE 코어는 모듈, 애드온, 에디터 컴포넌트, 위젯, 레이아웃의 구조를 기반으로 결과물을 생성합니다.
|
||||||
|
|
||||||
|
이렇게 각각의 기능과 디자인이 구조적으로 연결되는 모듈형 구조는 개발 및 유지보수를 쉽게 하도록 도와주며 관리자는 손쉽게 설정과 디자인을 변경할 수 있습니다.
|
||||||
|
|
||||||
|
레이아웃, 모듈 스킨 그리고 위젯의 스타일과 스킨을 활용하면 여러분만의 개성을 가진 웹 사이트를 만들 수 있습니다. XE와 함께 더 다채롭고 개성있는 웹사이트를 만들어보세요!
|
||||||
|
|
||||||
|
### 오픈 소스 소프트웨어! 열린 프로젝트! (코드 공헌 가이드)
|
||||||
|
많은 분들께서 개발, 디자인, 마크업 등의 전문 분야는 물론 다국어 번역, 문제점 보고 등 기능 개선 및 문제 해결을 위해 많은 노력을 해주시고 계십니다.
|
||||||
|
|
||||||
|
참여를 원하시는 분들은 버그 신고/제안 혹은 Pull Request 전에 [CONTRIBUTING.md](./CONTRIBUTING.md) 문서를 먼저 읽어주시기 바랍니다.
|
||||||
|
XpressEngine은 여러분들의 개발 참여를 기다립니다.
|
||||||
|
|
||||||
|
## 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)
|
||||||
|
|
||||||
## Maintainers
|
## Maintainers
|
||||||
@akasima @bnu @jhyeon1010 @khongchi @ngleader
|
@akasima @bnu @jhyeon1010 @khongchi @findstar @ngleader
|
||||||
|
|
||||||
## Authors
|
## Contributors
|
||||||
adrian.vasile.constantin, aerofleet, @akasima, @andreimarin, araste, @bnu, @bongkeun, bradly1, buffkj, c2joy, @canto, cbrghost, @ccata17, @ChanMyeong, chinaskyking, chschy, clench, @cometdev, @devdho, @devjin, @dionisrom, @dorami, @dragan-dan, ducduydaovn, duvent, @Eundong, @florinutz, @flourscent, @flyskyko, @ForPeople, FruitsHake, guny, @haneul, hankm2004, @hansim, haojilin, heemin, @hyeon0142, ikko, @izuzero, johnsonshu, juanlee0, k10206, kagami, @khongchi, @lansi951, @largeden, liahona, lickawtl, @mAKEkr, mayoojin, mglclub, @misol, mmx900, @mog422, mooo, mosmartin, @nagoon97, @ngleader, nicetwo, ovclas, @qw5414, @Rayyin, risapapa, rokmcssu, royallin, rubyeye, ryin005, @samswnlee, sanghunjun, @sejin7940, @smaker, @solidh, sspa3141, @stellar12, supershop, @taggon, @ucorina, unryong, venister, wdlee91, welcomeju, @YJSoft, ysnglee2000, zero
|
http://www.xpressengine.com/contributors
|
||||||
|
|
||||||
## Contribution Guide
|
## Support
|
||||||
`CONTRIBUTING.md`파일을 참고하세요.
|
* Official site (Korean) : http://www.xpressengine.com/
|
||||||
|
|
||||||
## License
|
## License
|
||||||
Copyright 2014 NAVER Corp. <http://www.navercorp.com>
|
Copyright 2014 NAVER Corp. <http://www.navercorp.com>
|
||||||
|
|
|
||||||
|
|
@ -30,8 +30,10 @@ if($_REQUEST['act'] != 'api')
|
||||||
// Read func file
|
// Read func file
|
||||||
require_once(_XE_PATH_ . 'addons/blogapi/blogapi.func.php');
|
require_once(_XE_PATH_ . 'addons/blogapi/blogapi.func.php');
|
||||||
|
|
||||||
|
$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
|
||||||
|
|
||||||
// If HTTP_RAW_POST_DATA is NULL, Print error message
|
// If HTTP_RAW_POST_DATA is NULL, Print error message
|
||||||
if(!$GLOBALS['HTTP_RAW_POST_DATA'])
|
if(!$xml)
|
||||||
{
|
{
|
||||||
$content = getXmlRpcFailure(1, 'Invalid Method Call');
|
$content = getXmlRpcFailure(1, 'Invalid Method Call');
|
||||||
printContent($content);
|
printContent($content);
|
||||||
|
|
@ -39,7 +41,14 @@ if(!$GLOBALS['HTTP_RAW_POST_DATA'])
|
||||||
|
|
||||||
// xmlprc parsing
|
// xmlprc parsing
|
||||||
// Parse the requested xmlrpc
|
// Parse the requested xmlrpc
|
||||||
$xml = new SimpleXMLElement($GLOBALS['HTTP_RAW_POST_DATA']);
|
if(Security::detectingXEE($xml))
|
||||||
|
{
|
||||||
|
header("HTTP/1.0 400 Bad Request");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(version_compare(PHP_VERSION, '5.2.11', '<=')) libxml_disable_entity_loader(true);
|
||||||
|
$xml = new SimpleXMLElement($xml, LIBXML_NONET | LIBXML_NOENT);
|
||||||
|
|
||||||
$method_name = (string)$xml->methodName;
|
$method_name = (string)$xml->methodName;
|
||||||
$params = $xml->params->param;
|
$params = $xml->params->param;
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ if(!defined('__XE__'))
|
||||||
* @brief Counter add-on
|
* @brief Counter add-on
|
||||||
*/
|
*/
|
||||||
// Execute if called_position is before_display_content
|
// Execute if called_position is before_display_content
|
||||||
if($called_position == 'before_module_init' && Context::get('module') != 'admin' && Context::getResponseMethod() == 'HTML' && Context::isInstalled())
|
if($called_position == 'before_module_init' && Context::get('module') != 'admin' && Context::getResponseMethod() == 'HTML' && Context::isInstalled() && !isCrawler())
|
||||||
{
|
{
|
||||||
$oCounterController = getController('counter');
|
$oCounterController = getController('counter');
|
||||||
$oCounterController->counterExecute();
|
$oCounterController->counterExecute();
|
||||||
|
|
|
||||||
|
|
@ -74,10 +74,10 @@ elseif($this->act == 'getMemberMenu' && $called_position == 'before_module_proc'
|
||||||
$oMemberController = getController('member');
|
$oMemberController = getController('member');
|
||||||
// Add a menu for sending message
|
// Add a menu for sending message
|
||||||
if($logged_info->is_admin == 'Y' || $target_member_info->allow_message == 'Y' || ($target_member_info->allow_message == 'F' && $oCommunicationModel->isFriend($member_srl)))
|
if($logged_info->is_admin == 'Y' || $target_member_info->allow_message == 'Y' || ($target_member_info->allow_message == 'F' && $oCommunicationModel->isFriend($member_srl)))
|
||||||
$oMemberController->addMemberPopupMenu(getUrl('', 'module', 'communication', 'act', 'dispCommunicationSendMessage', 'receiver_srl', $member_srl), 'cmd_send_message', '', 'popup');
|
$oMemberController->addMemberPopupMenu(getUrl('', 'mid', Context::get('cur_mid'), 'act', 'dispCommunicationSendMessage', 'receiver_srl', $member_srl), 'cmd_send_message', '', 'popup');
|
||||||
// Add a menu for listing friends (if a friend is new)
|
// Add a menu for listing friends (if a friend is new)
|
||||||
if(!$oCommunicationModel->isAddedFriend($member_srl))
|
if(!$oCommunicationModel->isAddedFriend($member_srl))
|
||||||
$oMemberController->addMemberPopupMenu(getUrl('', 'module', 'communication', 'act', 'dispCommunicationAddFriend', 'target_srl', $member_srl), 'cmd_add_friend', '', 'popup');
|
$oMemberController->addMemberPopupMenu(getUrl('', 'mid', Context::get('cur_mid'), 'act', 'dispCommunicationAddFriend', 'target_srl', $member_srl), 'cmd_add_friend', '', 'popup');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* End of file member_communication.addon.php */
|
/* End of file member_communication.addon.php */
|
||||||
|
|
|
||||||
|
|
@ -781,12 +781,6 @@
|
||||||
from: 'htmlstring'
|
from: 'htmlstring'
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
new $.fn.oembed.OEmbedProvider("gravtar", "photo", ["mailto:.+"], null, {
|
|
||||||
templateRegex: /mailto:([^\/]+).*/,
|
|
||||||
template: function (wm, email) {
|
|
||||||
return '<img src="http://gravatar.com/avatar/' + email.md5() + '.jpg" alt="on Gravtar" class="jqoaImg">';
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
|
|
||||||
//Rich
|
//Rich
|
||||||
new $.fn.oembed.OEmbedProvider("twitter", "rich", ["twitter.com/.+"], "https://api.twitter.com/1/statuses/oembed.json"),
|
new $.fn.oembed.OEmbedProvider("twitter", "rich", ["twitter.com/.+"], "https://api.twitter.com/1/statuses/oembed.json"),
|
||||||
|
|
@ -1062,137 +1056,3 @@
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
})(jQuery);
|
})(jQuery);
|
||||||
|
|
||||||
//This is needed for gravatar :(
|
|
||||||
String.prototype.md5 = function () {
|
|
||||||
var a = function (a, b) {
|
|
||||||
var c = (a & 65535) + (b & 65535);
|
|
||||||
var d = (a >> 16) + (b >> 16) + (c >> 16);
|
|
||||||
return d << 16 | c & 65535
|
|
||||||
};
|
|
||||||
var b = function (a, b) {
|
|
||||||
return a << b | a >>> 32 - b
|
|
||||||
};
|
|
||||||
var c = function (c, d, e, f, g, h) {
|
|
||||||
return a(b(a(a(d, c), a(f, h)), g), e)
|
|
||||||
};
|
|
||||||
var d = function (a, b, d, e, f, g, h) {
|
|
||||||
return c(b & d | ~b & e, a, b, f, g, h)
|
|
||||||
};
|
|
||||||
var e = function (a, b, d, e, f, g, h) {
|
|
||||||
return c(b & e | d & ~e, a, b, f, g, h)
|
|
||||||
};
|
|
||||||
var f = function (a, b, d, e, f, g, h) {
|
|
||||||
return c(b ^ d ^ e, a, b, f, g, h)
|
|
||||||
};
|
|
||||||
var g = function (a, b, d, e, f, g, h) {
|
|
||||||
return c(d ^ (b | ~e), a, b, f, g, h)
|
|
||||||
};
|
|
||||||
var h = function (b) {
|
|
||||||
var c, h, i, j, k, l = b.length;
|
|
||||||
var m = 1732584193;
|
|
||||||
var n = -271733879;
|
|
||||||
var o = -1732584194;
|
|
||||||
var p = 271733878;
|
|
||||||
for(k = 0; k < l; k += 16) {
|
|
||||||
c = m;
|
|
||||||
h = n;
|
|
||||||
i = o;
|
|
||||||
j = p;
|
|
||||||
m = d(m, n, o, p, b[k + 0], 7, -680876936);
|
|
||||||
p = d(p, m, n, o, b[k + 1], 12, -389564586);
|
|
||||||
o = d(o, p, m, n, b[k + 2], 17, 606105819);
|
|
||||||
n = d(n, o, p, m, b[k + 3], 22, -1044525330);
|
|
||||||
m = d(m, n, o, p, b[k + 4], 7, -176418897);
|
|
||||||
p = d(p, m, n, o, b[k + 5], 12, 1200080426);
|
|
||||||
o = d(o, p, m, n, b[k + 6], 17, -1473231341);
|
|
||||||
n = d(n, o, p, m, b[k + 7], 22, -45705983);
|
|
||||||
m = d(m, n, o, p, b[k + 8], 7, 1770035416);
|
|
||||||
p = d(p, m, n, o, b[k + 9], 12, -1958414417);
|
|
||||||
o = d(o, p, m, n, b[k + 10], 17, -42063);
|
|
||||||
n = d(n, o, p, m, b[k + 11], 22, -1990404162);
|
|
||||||
m = d(m, n, o, p, b[k + 12], 7, 1804603682);
|
|
||||||
p = d(p, m, n, o, b[k + 13], 12, -40341101);
|
|
||||||
o = d(o, p, m, n, b[k + 14], 17, -1502002290);
|
|
||||||
n = d(n, o, p, m, b[k + 15], 22, 1236535329);
|
|
||||||
m = e(m, n, o, p, b[k + 1], 5, -165796510);
|
|
||||||
p = e(p, m, n, o, b[k + 6], 9, -1069501632);
|
|
||||||
o = e(o, p, m, n, b[k + 11], 14, 643717713);
|
|
||||||
n = e(n, o, p, m, b[k + 0], 20, -373897302);
|
|
||||||
m = e(m, n, o, p, b[k + 5], 5, -701558691);
|
|
||||||
p = e(p, m, n, o, b[k + 10], 9, 38016083);
|
|
||||||
o = e(o, p, m, n, b[k + 15], 14, -660478335);
|
|
||||||
n = e(n, o, p, m, b[k + 4], 20, -405537848);
|
|
||||||
m = e(m, n, o, p, b[k + 9], 5, 568446438);
|
|
||||||
p = e(p, m, n, o, b[k + 14], 9, -1019803690);
|
|
||||||
o = e(o, p, m, n, b[k + 3], 14, -187363961);
|
|
||||||
n = e(n, o, p, m, b[k + 8], 20, 1163531501);
|
|
||||||
m = e(m, n, o, p, b[k + 13], 5, -1444681467);
|
|
||||||
p = e(p, m, n, o, b[k + 2], 9, -51403784);
|
|
||||||
o = e(o, p, m, n, b[k + 7], 14, 1735328473);
|
|
||||||
n = e(n, o, p, m, b[k + 12], 20, -1926607734);
|
|
||||||
m = f(m, n, o, p, b[k + 5], 4, -378558);
|
|
||||||
p = f(p, m, n, o, b[k + 8], 11, -2022574463);
|
|
||||||
o = f(o, p, m, n, b[k + 11], 16, 1839030562);
|
|
||||||
n = f(n, o, p, m, b[k + 14], 23, -35309556);
|
|
||||||
m = f(m, n, o, p, b[k + 1], 4, -1530992060);
|
|
||||||
p = f(p, m, n, o, b[k + 4], 11, 1272893353);
|
|
||||||
o = f(o, p, m, n, b[k + 7], 16, -155497632);
|
|
||||||
n = f(n, o, p, m, b[k + 10], 23, -1094730640);
|
|
||||||
m = f(m, n, o, p, b[k + 13], 4, 681279174);
|
|
||||||
p = f(p, m, n, o, b[k + 0], 11, -358537222);
|
|
||||||
o = f(o, p, m, n, b[k + 3], 16, -722521979);
|
|
||||||
n = f(n, o, p, m, b[k + 6], 23, 76029189);
|
|
||||||
m = f(m, n, o, p, b[k + 9], 4, -640364487);
|
|
||||||
p = f(p, m, n, o, b[k + 12], 11, -421815835);
|
|
||||||
o = f(o, p, m, n, b[k + 15], 16, 530742520);
|
|
||||||
n = f(n, o, p, m, b[k + 2], 23, -995338651);
|
|
||||||
m = g(m, n, o, p, b[k + 0], 6, -198630844);
|
|
||||||
p = g(p, m, n, o, b[k + 7], 10, 1126891415);
|
|
||||||
o = g(o, p, m, n, b[k + 14], 15, -1416354905);
|
|
||||||
n = g(n, o, p, m, b[k + 5], 21, -57434055);
|
|
||||||
m = g(m, n, o, p, b[k + 12], 6, 1700485571);
|
|
||||||
p = g(p, m, n, o, b[k + 3], 10, -1894986606);
|
|
||||||
o = g(o, p, m, n, b[k + 10], 15, -1051523);
|
|
||||||
n = g(n, o, p, m, b[k + 1], 21, -2054922799);
|
|
||||||
m = g(m, n, o, p, b[k + 8], 6, 1873313359);
|
|
||||||
p = g(p, m, n, o, b[k + 15], 10, -30611744);
|
|
||||||
o = g(o, p, m, n, b[k + 6], 15, -1560198380);
|
|
||||||
n = g(n, o, p, m, b[k + 13], 21, 1309151649);
|
|
||||||
m = g(m, n, o, p, b[k + 4], 6, -145523070);
|
|
||||||
p = g(p, m, n, o, b[k + 11], 10, -1120210379);
|
|
||||||
o = g(o, p, m, n, b[k + 2], 15, 718787259);
|
|
||||||
n = g(n, o, p, m, b[k + 9], 21, -343485551);
|
|
||||||
m = a(m, c);
|
|
||||||
n = a(n, h);
|
|
||||||
o = a(o, i);
|
|
||||||
p = a(p, j)
|
|
||||||
}
|
|
||||||
return [m, n, o, p]
|
|
||||||
};
|
|
||||||
var i = function (a) {
|
|
||||||
var b = "0123456789abcdef",
|
|
||||||
c = "",
|
|
||||||
d, e = a.length * 4;
|
|
||||||
for(d = 0; d < e; d++) {
|
|
||||||
c += b.charAt(a[d >> 2] >> d % 4 * 8 + 4 & 15) + b.charAt(a[d >> 2] >> d % 4 * 8 & 15)
|
|
||||||
}
|
|
||||||
return c
|
|
||||||
};
|
|
||||||
var j = function (a) {
|
|
||||||
var b = (a.length + 8 >> 6) + 1;
|
|
||||||
var c = [],
|
|
||||||
d, e = b * 16,
|
|
||||||
f, g = a.length;
|
|
||||||
for(d = 0; d < e; d++) {
|
|
||||||
c.push(0)
|
|
||||||
}
|
|
||||||
for(f = 0; f < g; f++) {
|
|
||||||
c[f >> 2] |= (a.charCodeAt(f) & 255) << f % 4 * 8
|
|
||||||
}
|
|
||||||
c[f >> 2] |= 128 << f % 4 * 8;
|
|
||||||
c[b * 16 - 2] = g * 8;
|
|
||||||
return c
|
|
||||||
};
|
|
||||||
return i(h(j(this)))
|
|
||||||
}
|
|
||||||
|
|
|
||||||
4
addons/oembed/jquery.oembed.min.js
vendored
|
|
@ -98,7 +98,8 @@ function getScreen() {
|
||||||
;
|
;
|
||||||
|
|
||||||
// 이미지 홀더
|
// 이미지 홀더
|
||||||
imgframe = $("<img>")
|
imgframe = $(new Image());
|
||||||
|
imgframe
|
||||||
.attr("id", "xe_gallery_holder")
|
.attr("id", "xe_gallery_holder")
|
||||||
.css({
|
.css({
|
||||||
border: '5px solid white',
|
border: '5px solid white',
|
||||||
|
|
@ -111,6 +112,15 @@ function getScreen() {
|
||||||
|
|
||||||
body.append(xScreen).append(controls);
|
body.append(xScreen).append(controls);
|
||||||
|
|
||||||
|
imgframe.live('load', function(){
|
||||||
|
var clientWidth = $(window).width();
|
||||||
|
var clientHeight = $(window).height();
|
||||||
|
imgframe.css({
|
||||||
|
left : clientWidth/2 - imgframe.width()/2 + "px",
|
||||||
|
top : clientHeight/2 - imgframe.height()/2 + "px"
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
// xScreen 객체를 확장한다.
|
// xScreen 객체를 확장한다.
|
||||||
xScreen.xeShow = function() {
|
xScreen.xeShow = function() {
|
||||||
var clientWidth = $(window).width();
|
var clientWidth = $(window).width();
|
||||||
|
|
@ -143,10 +153,15 @@ function getScreen() {
|
||||||
//textyle 이미지 리사이즈 처리
|
//textyle 이미지 리사이즈 처리
|
||||||
var src = this.list.eq(this.index).attr("rawsrc");
|
var src = this.list.eq(this.index).attr("rawsrc");
|
||||||
if(!src) src = this.list.eq(this.index).attr("src");
|
if(!src) src = this.list.eq(this.index).attr("src");
|
||||||
imgframe.attr("src", src).css({
|
|
||||||
|
imgframe.attr("src", src).removeAttr('width').removeAttr('height');
|
||||||
|
if(imgframe.width() > 0) {
|
||||||
|
imgframe.css({
|
||||||
left : clientWidth/2 - imgframe.width()/2 + "px",
|
left : clientWidth/2 - imgframe.width()/2 + "px",
|
||||||
top : clientHeight/2 - imgframe.height()/2 + "px"
|
top : clientHeight/2 - imgframe.height()/2 + "px"
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
closebtn.css({
|
closebtn.css({
|
||||||
left : clientWidth/2 - 32 + "px",
|
left : clientWidth/2 - 32 + "px",
|
||||||
top : "10px"
|
top : "10px"
|
||||||
|
|
|
||||||
2
addons/resize_image/js/resize_image.min.js
vendored
|
|
@ -1 +1 @@
|
||||||
!function(a){function b(){var b,c,e,f,g,h=a(document.body);return d?(b=a("#xe_gallery_controls"),c=a("#xe_gallery_holder"),e=a("#xe_gallery_closebtn"),f=a("#xe_gallery_prevbtn"),g=a("#xe_gallery_nextbtn")):(d=a("<div>").attr("id","xe_gallery_screen").css({position:"fixed",display:"none",backgroundColor:"black",zIndex:500,opacity:.7}),b=a("<div>").attr("id","xe_gallery_controls").css({position:"fixed",display:"none",overflow:"hidden",zIndex:510}),f=a('<button type="button" id="xe_gallery_prevbtn" />').css({left:"10px",backgroundPosition:"0 -64px"}).click(function(){d.xePrev()}).appendTo(b),e=a('<button type="button" id="xe_gallery_closebtn" />').css({top:"10px",backgroundPosition:"0 0"}).click(function(){d.xeHide()}).appendTo(b),g=a('<button type="button" id="xe_gallery_nextbtn" />').attr("id","xe_gallery_nextbtn").css({right:"10px",backgroundPosition:"0 -128px"}).click(function(){d.xeNext()}).appendTo(b),b.find(">button").css({position:"absolute",width:"64px",height:"64px",zIndex:530,cursor:"pointer",border:0,margin:0,padding:0,backgroundColor:"transparent",backgroundImage:"url("+request_uri+"addons/resize_image/btn.png)",backgroundRepeat:"no-repeat",opacity:".5",filter:"alpha(opacity=50)"}).mouseover(function(){a(this).css({opacity:"1",filter:"alpha(opacity=100)"})}).mouseout(function(){a(this).css({opacity:".5",filter:"alpha(opacity=50)"})}).focus(function(){a(this).trigger("mouseover")}).blur(function(){a(this).trigger("mouseout")}),c=a("<img>").attr("id","xe_gallery_holder").css({border:"5px solid white",zindex:520,maxWidth:"none",borderRadius:"5px",boxShadow:"0 0 10px #000"}).appendTo(b).draggable(),h.append(d).append(b),d.xeShow=function(){var b=(a(window).width(),a(window).height());a("#xe_gallery_controls,#xe_gallery_screen").show().css({top:0,right:0,bottom:0,left:0}),a("#xe_gallery_prevbtn,#xe_gallery_nextbtn").css("top",Math.round(b/2-32)+"px"),this.xeMove(0)},d.xeHide=function(){d.hide(),b.hide()},d.xePrev=function(){this.xeMove(-1)},d.xeNext=function(){this.xeMove(1)},d.xeMove=function(b){var d=a(window).width(),h=a(window).height();this.index+=b,f.css("visibility",this.index>0?"visible":"hidden"),g.css("visibility",this.index<this.list.size()-1?"visible":"hidden");var i=this.list.eq(this.index).attr("rawsrc");i||(i=this.list.eq(this.index).attr("src")),c.attr("src",i).css({left:d/2-c.width()/2+"px",top:h/2-c.height()/2+"px"}),e.css({left:d/2-32+"px",top:"10px"}).focus()},a(document).keydown(function(a){return 27==a.which?(d.xeHide(),!1):!0})),d}function c(){var c=a(this).closest(".xe_content"),d=c.find("img[rel=xe_gallery]"),e=a.inArray(a(this).get(0),d.get()),f=b();f.list=d,f.index=e,f.xeShow()}var d=null;a(window).load(function(){function b(a,c){if(c||(c=0),!(c>=10)){var d=this,e={width:d.width(),height:d.height()};if(!e.width||!e.height)return void setTimeout(function(){b.call(d,a,++c)},200);if(!(e.width<=a)){var f=a/e.width;d.removeAttr("width").removeAttr("height").css({width:a,height:parseInt(e.height*f,10)})}}}var d=/(?:(modules|addons|classes|common|layouts|libs|widgets|widgetstyles)\/)/i,e=/(?:common\/tpl\/images\/blank\.gif$)/i,f=a('<div style="height:1px;overflow:hidden;opacity:0;display:block;clear:both"></div>');a(".xe_content").each(function(){var g=f.appendTo(this).width();f.remove(),g&&(a("img",this).each(function(){var c=a(this),f=c.attr("src");(!d.test(f)||e.test(f))&&(c.attr("rel","xe_gallery"),b.call(c,g))}),a("img[rel=xe_gallery]",this).live("mouseover",function(){var b=a(this);b.parent("a").length||b.attr("onclick")||b.css("cursor","pointer").click(c)}))})})}(jQuery);
|
!function(a){function b(){var b,c,e,f,g,h=a(document.body);return d?(b=a("#xe_gallery_controls"),c=a("#xe_gallery_holder"),e=a("#xe_gallery_closebtn"),f=a("#xe_gallery_prevbtn"),g=a("#xe_gallery_nextbtn")):(d=a("<div>").attr("id","xe_gallery_screen").css({position:"fixed",display:"none",backgroundColor:"black",zIndex:500,opacity:.7}),b=a("<div>").attr("id","xe_gallery_controls").css({position:"fixed",display:"none",overflow:"hidden",zIndex:510}),f=a('<button type="button" id="xe_gallery_prevbtn" />').css({left:"10px",backgroundPosition:"0 -64px"}).click(function(){d.xePrev()}).appendTo(b),e=a('<button type="button" id="xe_gallery_closebtn" />').css({top:"10px",backgroundPosition:"0 0"}).click(function(){d.xeHide()}).appendTo(b),g=a('<button type="button" id="xe_gallery_nextbtn" />').attr("id","xe_gallery_nextbtn").css({right:"10px",backgroundPosition:"0 -128px"}).click(function(){d.xeNext()}).appendTo(b),b.find(">button").css({position:"absolute",width:"64px",height:"64px",zIndex:530,cursor:"pointer",border:0,margin:0,padding:0,backgroundColor:"transparent",backgroundImage:"url("+request_uri+"addons/resize_image/btn.png)",backgroundRepeat:"no-repeat",opacity:".5",filter:"alpha(opacity=50)"}).mouseover(function(){a(this).css({opacity:"1",filter:"alpha(opacity=100)"})}).mouseout(function(){a(this).css({opacity:".5",filter:"alpha(opacity=50)"})}).focus(function(){a(this).trigger("mouseover")}).blur(function(){a(this).trigger("mouseout")}),c=a(new Image),c.attr("id","xe_gallery_holder").css({border:"5px solid white",zindex:520,maxWidth:"none",borderRadius:"5px",boxShadow:"0 0 10px #000"}).appendTo(b).draggable(),h.append(d).append(b),c.live("load",function(){var b=a(window).width(),d=a(window).height();c.css({left:b/2-c.width()/2+"px",top:d/2-c.height()/2+"px"})}),d.xeShow=function(){var b=(a(window).width(),a(window).height());a("#xe_gallery_controls,#xe_gallery_screen").show().css({top:0,right:0,bottom:0,left:0}),a("#xe_gallery_prevbtn,#xe_gallery_nextbtn").css("top",Math.round(b/2-32)+"px"),this.xeMove(0)},d.xeHide=function(){d.hide(),b.hide()},d.xePrev=function(){this.xeMove(-1)},d.xeNext=function(){this.xeMove(1)},d.xeMove=function(b){var d=a(window).width(),h=a(window).height();this.index+=b,f.css("visibility",this.index>0?"visible":"hidden"),g.css("visibility",this.index<this.list.size()-1?"visible":"hidden");var i=this.list.eq(this.index).attr("rawsrc");i||(i=this.list.eq(this.index).attr("src")),c.attr("src",i).removeAttr("width").removeAttr("height"),c.width()>0&&c.css({left:d/2-c.width()/2+"px",top:h/2-c.height()/2+"px"}),e.css({left:d/2-32+"px",top:"10px"}).focus()},a(document).keydown(function(a){return 27==a.which?(d.xeHide(),!1):!0})),d}function c(){var c=a(this).closest(".xe_content"),d=c.find("img[rel=xe_gallery]"),e=a.inArray(a(this).get(0),d.get()),f=b();f.list=d,f.index=e,f.xeShow()}var d=null;a(window).load(function(){function b(a,c){if(c||(c=0),!(c>=10)){var d=this,e={width:d.width(),height:d.height()};if(!e.width||!e.height)return void setTimeout(function(){b.call(d,a,++c)},200);if(!(e.width<=a)){var f=a/e.width;d.removeAttr("width").removeAttr("height").css({width:a,height:parseInt(e.height*f,10)})}}}var d=/(?:(modules|addons|classes|common|layouts|libs|widgets|widgetstyles)\/)/i,e=/(?:common\/tpl\/images\/blank\.gif$)/i,f=a('<div style="height:1px;overflow:hidden;opacity:0;display:block;clear:both"></div>');a(".xe_content").each(function(){var g=f.appendTo(this).width();f.remove(),g&&(a("img",this).each(function(){var c=a(this),f=c.attr("src");(!d.test(f)||e.test(f))&&(c.attr("rel","xe_gallery"),b.call(c,g))}),a("img[rel=xe_gallery]",this).live("mouseover",function(){var b=a(this);b.parent("a").length||b.attr("onclick")||b.css("cursor","pointer").click(c)}))})})}(jQuery);
|
||||||
|
|
@ -2,14 +2,16 @@
|
||||||
/* Copyright (C) NAVER <http://www.navercorp.com> */
|
/* Copyright (C) NAVER <http://www.navercorp.com> */
|
||||||
|
|
||||||
if(!defined('__XE__'))
|
if(!defined('__XE__'))
|
||||||
|
{
|
||||||
exit();
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file resize_image.addon.php
|
* @file resize_image.addon.php
|
||||||
* @author NAVER (developers@xpressengine.com)
|
* @author NAVER (developers@xpressengine.com)
|
||||||
* @brief Add-on to resize images in the body
|
* @brief Add-on to resize images in the body
|
||||||
*/
|
*/
|
||||||
if($called_position == 'after_module_proc' && (Context::getResponseMethod() == "HTML" || !isCrawler()))
|
if($called_position == 'after_module_proc' && Context::getResponseMethod() == "HTML" && !isCrawler())
|
||||||
{
|
{
|
||||||
if(Mobile::isFromMobilePhone())
|
if(Mobile::isFromMobilePhone())
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 3 KiB |
|
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 6 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 9 KiB After Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 9.3 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 330 B After Width: | Height: | Size: 184 B |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 327 B After Width: | Height: | Size: 180 B |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 229 B After Width: | Height: | Size: 122 B |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 228 B After Width: | Height: | Size: 122 B |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 383 B After Width: | Height: | Size: 223 B |
|
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 713 B |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 9.3 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 815 B After Width: | Height: | Size: 598 B |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 20 KiB |