From fd745953d8b04258eda7366d00cfd082ece4c7fa Mon Sep 17 00:00:00 2001 From: Soonjae Kim Date: Tue, 13 May 2014 13:45:10 +0900 Subject: [PATCH 001/265] Update DB.class.php --- classes/db/DB.class.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/classes/db/DB.class.php b/classes/db/DB.class.php index 25a7cdb10..9003d51e8 100644 --- a/classes/db/DB.class.php +++ b/classes/db/DB.class.php @@ -552,7 +552,7 @@ class DB * @param array $arg_columns column list. if you want get specific colums from executed result, add column list to $arg_columns * @return object result of query */ - function executeQuery($query_id, $args = NULL, $arg_columns = NULL) + function executeQuery($query_id, $args = NULL, $arg_columns = NULL, $type = NULL) { static $cache_file = array(); @@ -606,7 +606,7 @@ class DB // look for cache file $cache_file[$query_id] = $this->checkQueryCacheFile($query_id, $xml_file); } - $result = $this->_executeQuery($cache_file[$query_id], $args, $query_id, $arg_columns); + $result = $this->_executeQuery($cache_file[$query_id], $args, $query_id, $arg_columns, $type); $this->actDBClassFinish(); // execute query @@ -649,9 +649,11 @@ class DB * @param array $arg_columns column list. if you want get specific colums from executed result, add column list to $arg_columns * @return object result of query */ - function _executeQuery($cache_file, $source_args, $query_id, $arg_columns) + function _executeQuery($cache_file, $source_args, $query_id, $arg_columns, $type) { global $lang; + + if(!in_array($type, array('master','slave'))) $type = 'slave'; if(!file_exists($cache_file)) { @@ -689,7 +691,7 @@ class DB case 'select' : $arg_columns = is_array($arg_columns) ? $arg_columns : array(); $output->setColumnList($arg_columns); - $connection = $this->_getConnection('slave'); + $connection = $this->_getConnection($type); $output = $this->_executeSelectAct($output, $connection); break; } From 46ec1e8d3b9c3a946a95083de42a8ff79b89d122 Mon Sep 17 00:00:00 2001 From: Soonjae Kim Date: Tue, 13 May 2014 13:52:41 +0900 Subject: [PATCH 002/265] Update comment.model.php --- modules/comment/comment.model.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/comment/comment.model.php b/modules/comment/comment.model.php index 9d5439a13..11195be03 100644 --- a/modules/comment/comment.model.php +++ b/modules/comment/comment.model.php @@ -126,7 +126,7 @@ class commentModel extends comment { $args = new stdClass(); $args->comment_srl = $comment_srl; - $output = executeQuery('comment.getChildCommentCount', $args); + $output = executeQuery('comment.getChildCommentCount', $args, NULL, 'master'); return (int) $output->data->count; } @@ -139,7 +139,7 @@ class commentModel extends comment { $args = new stdClass(); $args->comment_srl = $comment_srl; - $output = executeQueryArray('comment.getChildComments', $args); + $output = executeQueryArray('comment.getChildComments', $args, NULL, 'master'); return $output->data; } @@ -248,7 +248,7 @@ class commentModel extends comment $args->status = 1; } - $output = executeQuery('comment.getCommentCount', $args); + $output = executeQuery('comment.getCommentCount', $args, NULL, 'master'); $total_count = $output->data->count; return (int) $total_count; From 49760d39d318becfd09e4fd9dc2496c8ab7ed8c6 Mon Sep 17 00:00:00 2001 From: Soonjae Kim Date: Wed, 14 May 2014 09:23:26 +0900 Subject: [PATCH 003/265] Update member.controller.php --- modules/member/member.controller.php | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index 860aef260..e57b04773 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -314,6 +314,10 @@ class memberController extends member unset($all_args->captchaType); unset($all_args->secret_text); + // check musthave field + $checkmusthave = $this->checkMusthave($all_args, $config->signupForm); + if($checkmusthave) return $this->stop($checkmusthave); + // Set the user state as "denied" when using mail authentication if($config->enable_confirm == 'Y') $args->denied = 'Y'; // Add extra vars after excluding necessary information from all the requested arguments @@ -412,6 +416,22 @@ class memberController extends member $this->setRedirectUrl($returnUrl); } + // check the value of musthave fields + function checkMusthave($args, $signupForm) + { + if(!$signupForm) return false; + + foreach($signupForm as $formInfo) + { + if($formInfo->mustRequired)) + { + $val = $args->{$formInfo->name}; + if(!$val) return $formInfo->name; + } + } + return false; + } + function procMemberModifyInfoBefore() { if($_SESSION['rechecked_password_step'] != 'INPUT_PASSWORD') From 95e0cf458c71ad6e13fae497c0022186855e780b Mon Sep 17 00:00:00 2001 From: Soonjae Kim Date: Thu, 15 May 2014 10:37:02 +0900 Subject: [PATCH 004/265] Update member.controller.php --- modules/member/member.controller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index e57b04773..94b6cfae4 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -423,7 +423,7 @@ class memberController extends member foreach($signupForm as $formInfo) { - if($formInfo->mustRequired)) + if($formInfo->mustRequired) { $val = $args->{$formInfo->name}; if(!$val) return $formInfo->name; From a89741ddde81590822fb3425099cafa81d676232 Mon Sep 17 00:00:00 2001 From: Soonjae Kim Date: Thu, 15 May 2014 10:38:33 +0900 Subject: [PATCH 005/265] Update admin.admin.controller.php --- modules/admin/admin.admin.controller.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/admin/admin.admin.controller.php b/modules/admin/admin.admin.controller.php index 6e1d09f3b..331adec58 100644 --- a/modules/admin/admin.admin.controller.php +++ b/modules/admin/admin.admin.controller.php @@ -61,6 +61,9 @@ class adminAdminController extends admin FileHandler::rename('./files/cache', $temp_cache_dir); FileHandler::makeDir('./files/cache'); + // remove module extend cache + FileHandler::removeFile(_XE_PATH_ . 'files/config/module_extend.php'); + // remove debug files FileHandler::removeFile(_XE_PATH_ . 'files/_debug_message.php'); FileHandler::removeFile(_XE_PATH_ . 'files/_debug_db_query.php'); From 023b0b5f3e804969c40cc25436de8c0f4bf37694 Mon Sep 17 00:00:00 2001 From: sejin7940 Date: Tue, 30 Sep 2014 01:42:56 +0900 Subject: [PATCH 006/265] Update trash_list.html --- modules/trash/tpl/trash_list.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/trash/tpl/trash_list.html b/modules/trash/tpl/trash_list.html index 64393fdb1..f69476fb9 100644 --- a/modules/trash/tpl/trash_list.html +++ b/modules/trash/tpl/trash_list.html @@ -29,6 +29,7 @@ var no_text_comment = '{$lang->no_text_comment}'; {$lang->document} + {$lang->nick_name} {$lang->origin_module_type} {$lang->trash_nick_name} {$lang->trash_date} @@ -48,6 +49,7 @@ var no_text_comment = '{$lang->no_text_comment}'; {$oTrashVO->getTitle()} + {$oTrashVO->unserializedObject['nick_name']} {$lang->document}{$lang->comment} {$oTrashVO->getNickName()} {zdate($oTrashVO->getRegdate(), "Y-m-d H:i:s")} From c9bbafaee8629abefcd9b2a49666cb24a43ba895 Mon Sep 17 00:00:00 2001 From: sejin7940 Date: Tue, 4 Nov 2014 07:09:52 +0900 Subject: [PATCH 007/265] Update send_message.html --- modules/communication/skins/default/send_message.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/communication/skins/default/send_message.html b/modules/communication/skins/default/send_message.html index 50f6f401e..461d05f4c 100644 --- a/modules/communication/skins/default/send_message.html +++ b/modules/communication/skins/default/send_message.html @@ -14,7 +14,7 @@ - + From f391b59e1c8d0f3c47465e7cea75f891334b61e7 Mon Sep 17 00:00:00 2001 From: YJSoft Date: Tue, 30 Dec 2014 15:45:46 +0900 Subject: [PATCH 008/265] =?UTF-8?q?=EB=A0=88=EB=B2=A8=20=ED=8F=AC=EC=9D=B8?= =?UTF-8?q?=ED=8A=B8=20=EC=9E=85=EB=A0=A5=EC=B9=B8=EC=9D=98=20=EB=84=88?= =?UTF-8?q?=EB=B9=84=EB=A5=BC=20=EB=8A=98=EC=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 기본 60px로는 레벨이 어느 정도 넘어갈 경우 포인트가 커져서 잘리기에 정확한 비교가 어려우므로 120px로 두배가량 늘였습니다. --- modules/point/tpl/config.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/point/tpl/config.html b/modules/point/tpl/config.html index 0f64c8994..d91422586 100644 --- a/modules/point/tpl/config.html +++ b/modules/point/tpl/config.html @@ -125,7 +125,7 @@ - + {@$point_group_item = $point_group[1]} {@$title=array()} @@ -149,7 +149,7 @@ - + From 701318311bcb96e4e0e2494f391a3f72afdcb8e0 Mon Sep 17 00:00:00 2001 From: sejin7940 Date: Tue, 6 Jan 2015 07:50:54 +0900 Subject: [PATCH 009/265] =?UTF-8?q?=EC=B6=94=EC=B2=9C,=EB=B9=84=EC=B6=94?= =?UTF-8?q?=EC=B2=9C=EC=8B=9C=20=EC=A6=9D=EA=B0=80=EB=90=9C=20=EC=B6=94?= =?UTF-8?q?=EC=B2=9C=EC=88=98,=EB=B9=84=EC=B6=94=EC=B2=9C=EC=88=98=20?= =?UTF-8?q?=EC=A0=84=EB=8B=AC=ED=95=A0=20=EC=88=98=20=EC=9E=88=EA=B2=8C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 사실 버그는 아닌데, procDocumentVoteUp 함수나 procDocumentVoteDown 함수를 보다 더 잘 활용하기 위해 추천,비추천시 증가된 추천수,비추천수 전달할 수 있게 수정 --- modules/document/document.controller.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index 8dd284ee5..a135532a8 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -39,7 +39,9 @@ class documentController extends document if($document_config->use_vote_up=='N') return new Object(-1, 'msg_invalid_request'); $point = 1; - return $this->updateVotedCount($document_srl, $point); + $output = $this->updateVotedCount($document_srl, $point); + $this->add('voted_count', $output->get('voted_count')); + return $output; } /** @@ -82,7 +84,9 @@ class documentController extends document if($document_config->use_vote_down=='N') return new Object(-1, 'msg_invalid_request'); $point = -1; - return $this->updateVotedCount($document_srl, $point); + $output = $this->updateVotedCount($document_srl, $point); + $this->add('blamed_count', $output->get('blamed_count')); + return $output; } /** From 47730c548b18ac9191da153ddf04a3bc31af0b1b Mon Sep 17 00:00:00 2001 From: sejin7940 Date: Tue, 6 Jan 2015 10:57:15 +0900 Subject: [PATCH 010/265] =?UTF-8?q?=EC=A0=95=EB=A0=AC=EC=9D=84=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=EC=9E=90=EC=A0=95=EC=9D=98=EA=B0=92=EC=9C=BC=EB=A1=9C?= =?UTF-8?q?=20=ED=95=9C=20=EA=B2=BD=EC=9A=B0=20=EC=A0=80=EC=9E=A5=20?= =?UTF-8?q?=EC=95=88=20=EB=90=98=EB=8A=94=20=ED=98=84=EC=83=81=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit eid 값이 key 에 저장되어있기에, in_array 가 아니라 array_key_exists 로 해야됨 --- modules/board/board.admin.controller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/board/board.admin.controller.php b/modules/board/board.admin.controller.php index 12b06a098..3855cb3b2 100644 --- a/modules/board/board.admin.controller.php +++ b/modules/board/board.admin.controller.php @@ -47,7 +47,7 @@ class boardAdminController extends board { if($args->use_anonymous != 'Y') $args->use_anonymous = 'N'; if($args->consultation != 'Y') $args->consultation = 'N'; if($args->protect_content!= 'Y') $args->protect_content = 'N'; - if(!in_array($args->order_target,$this->order_target) && !in_array($args->order_target, $extra_order_target)) $args->order_target = 'list_order'; + if(!in_array($args->order_target,$this->order_target) && !array_key_exists($args->order_target, $extra_order_target)) $args->order_target = 'list_order'; if(!in_array($args->order_type, array('asc', 'desc'))) $args->order_type = 'asc'; // if there is an existed module From ac83016d5dcb0806aca6e7287dbdd384d42755fe Mon Sep 17 00:00:00 2001 From: sejin7940 Date: Tue, 6 Jan 2015 14:07:08 +0900 Subject: [PATCH 011/265] =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=20=EC=A0=95?= =?UTF-8?q?=EC=9D=98=20=EC=A0=95=EB=A0=AC=EC=8B=9C,=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=EC=9E=90=20=EC=A0=95=EC=9D=98=20=EA=B2=80=EC=83=89=EC=8B=9C=20?= =?UTF-8?q?=EB=B3=84=EB=8F=84=EC=9D=98=20query=20=EA=B0=80=20=EC=8B=A4?= =?UTF-8?q?=ED=96=89=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=9E=AC=EC=A0=95?= =?UTF-8?q?=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 현재 사용자정의 기준으로 정렬을 하면 getDocumentListExtraSort.xml 파일이 구현되고. 이 query 는 sort_index 대신 sort가 고정되어있고 사용자정의 기준으로 검색을 하면 getDocumentListWithinExtraVars.xml 파일이 실행되는데 이건 검색만 해당 eid 로 될뿐, 실제 정렬은 사용자정의를 제외한 일반 검색만 가능하게 되어있다. 이는 사용자정의 기준으로 정렬 설정을 해두고 사용자정의 검색할때뿐만 아니라. 기본 정렬 (등록일이나 문서번호) 로 정렬 후, 목록에서 사용자정의 기준으로 재정렬 한 후, 사용자정의 검색할때도 마찬가지로 결과가 안 나오는 문제가 발생한다. 결국 각각 다른 사용자정의 기준으로도 정렬 과 검색이 각각 될 수 있도록 테이블 3개를 join 한 새로운 query 를 추가하여 구현되도록 보완했다 --- modules/document/document.model.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/document/document.model.php b/modules/document/document.model.php index 8723577cd..78b8ed37c 100644 --- a/modules/document/document.model.php +++ b/modules/document/document.model.php @@ -224,7 +224,13 @@ class documentModel extends document $this->_setSearchOption($obj, $args, $query_id, $use_division); - if ($sort_check->isExtraVars) + if ($sort_check->isExtraVars && substr_count($obj->search_target,'extra_vars')) + { + $query_id = 'document.getDocumentListWithinExtraVarsExtraSort'; + $args->sort_index = str_replace('documents.','',$args->sort_index); + $output = executeQueryArray($query_id, $args); + } + elseif ($sort_check->isExtraVars) { $output = executeQueryArray($query_id, $args); } From fe942d6b7b3112d9f7398779b37d98913830862c Mon Sep 17 00:00:00 2001 From: sejin7940 Date: Tue, 6 Jan 2015 14:11:03 +0900 Subject: [PATCH 012/265] Create getDocumentListWithinExtraVarsExtraSort.xml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 사용자정의 기준의 검색과 정렬을 각각 할 수 있게 하기 위해 3개의 테이블을 join 하는 query 신규 추가 --- ...etDocumentListWithinExtraVarsExtraSort.xml | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 modules/document/queries/getDocumentListWithinExtraVarsExtraSort.xml diff --git a/modules/document/queries/getDocumentListWithinExtraVarsExtraSort.xml b/modules/document/queries/getDocumentListWithinExtraVarsExtraSort.xml new file mode 100644 index 000000000..6ab95e780 --- /dev/null +++ b/modules/document/queries/getDocumentListWithinExtraVarsExtraSort.xml @@ -0,0 +1,61 @@ + + +
{$receiver_info->nick_name}{$receiver_info->nick_name}
{$lang->title}
1 1
{$i} {$i} {implode(', ', $title)}
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From b91e059a478b5d151fd7669b07beb71b3dd3f2fd Mon Sep 17 00:00:00 2001 From: whantae ji Date: Thu, 8 Jan 2015 23:22:37 +0900 Subject: [PATCH 013/265] =?UTF-8?q?=ED=9A=8C=EC=9B=90=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EB=B9=84=EA=B3=B5=EA=B0=9C=EC=9D=B8=20?= =?UTF-8?q?=ED=95=AD=EB=AA=A9=EC=9D=80=20=EA=B2=80=EC=83=89=20=EC=98=B5?= =?UTF-8?q?=EC=85=98=EC=97=90=EC=84=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/board/board.view.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/board/board.view.php b/modules/board/board.view.php index c6420fed8..1eb3132da 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -169,6 +169,16 @@ class boardView extends board if($val->search == 'Y') $search_option['extra_vars'.$val->idx] = $val->name; } } + // remove a search option that is not public in member config + $memberConfig = getModel('module')->getModuleConfig('member'); + foreach($memberConfig->signupForm as $signupFormElement) + { + if(in_array($signupFormElement->title, $search_option)) + { + if($signupFormElement->isPublic == 'N') + unset($search_option[$signupFormElement->name]); + } + } Context::set('search_option', $search_option); $oDocumentModel = getModel('document'); From 1f9844ed084f46034ab302d18a313578f8a39dff Mon Sep 17 00:00:00 2001 From: BJRambo Date: Sat, 10 Jan 2015 14:28:59 +0900 Subject: [PATCH 014/265] =?UTF-8?q?=EB=AA=A8=EB=B0=94=EC=9D=BC=20=EB=B7=B0?= =?UTF-8?q?=EC=96=B4=20=EC=82=AC=EC=9A=A9=EC=A4=91=EC=97=90=EB=A7=8C=20?= =?UTF-8?q?=EB=AA=A8=EB=B0=94=EC=9D=BC=EC=97=90=20=EC=B5=9C=EC=A0=81?= =?UTF-8?q?=ED=99=94=20=ED=99=94=EB=A9=B4=20=EB=B2=84=ED=8A=BC=EC=9D=84=20?= =?UTF-8?q?=EC=8B=A4=ED=96=89=ED=95=98=EB=8F=84=EB=A1=9D=20=EA=B0=9C?= =?UTF-8?q?=EC=84=A0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 모바일 뷰어 사용중에만 모바일에 최적화된 화면 버튼을 실행 하도록 개선. --- classes/module/ModuleHandler.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php index 8a2c105e8..0505a6a35 100644 --- a/classes/module/ModuleHandler.class.php +++ b/classes/module/ModuleHandler.class.php @@ -667,7 +667,8 @@ class ModuleHandler extends Handler 'dispEditorConfigPreview' => 1, 'dispLayoutPreviewWithModule' => 1 ); - if($type == "view" && $this->module_info->use_mobile == "Y" && Mobile::isMobileCheckByAgent() && !isset($skipAct[Context::get('act')])) + $db_info = Context::getDBInfo(); + if($type == "view" && $this->module_info->use_mobile == "Y" && Mobile::isMobileCheckByAgent() && !isset($skipAct[Context::get('act')]) && $db_info->use_mobile_view == "Y") { global $lang; $header = ''; From 4b1025e8c587054a31847951b844e531d39a0443 Mon Sep 17 00:00:00 2001 From: BJRambo Date: Tue, 13 Jan 2015 17:28:44 +0900 Subject: [PATCH 015/265] =?UTF-8?q?=EB=AA=A8=EB=B0=94=EC=9D=BC=20=EB=B7=B0?= =?UTF-8?q?=EC=96=B4=20=EC=82=AC=EC=9A=A9=EC=A4=91=EC=9D=BC=20=EA=B2=BD?= =?UTF-8?q?=EC=9A=B0=20=EB=AA=A8=EB=B0=94=EC=9D=BC=20=EC=B5=9C=EC=A0=81?= =?UTF-8?q?=ED=99=94=20=ED=99=94=EB=A9=B4=20=EB=AC=B8=EA=B5=AC=20=EB=9C=A8?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/mobile/Mobile.class.php | 9 ++++++--- classes/module/ModuleHandler.class.php | 4 ++-- modules/menu/menu.admin.controller.php | 3 +-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/classes/mobile/Mobile.class.php b/classes/mobile/Mobile.class.php index 79607c26e..c38ffcf21 100644 --- a/classes/mobile/Mobile.class.php +++ b/classes/mobile/Mobile.class.php @@ -52,9 +52,7 @@ class Mobile { return $this->ismobile; } - - $db_info = Context::getDBInfo(); - if($db_info->use_mobile_view != "Y" || Context::get('full_browse') || $_COOKIE["FullBrowse"]) + if(Mobile::isMobileEnabled() === false || Context::get('full_browse') || $_COOKIE["FullBrowse"]) { return ($this->ismobile = false); } @@ -234,5 +232,10 @@ class Mobile $oMobile->ismobile = $ismobile; } + function isMobileEnabled() + { + $db_info = Context::getDBInfo(); + return ($db_info->use_mobile_view === 'Y'); + } } ?> diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php index 0505a6a35..67aa3c151 100644 --- a/classes/module/ModuleHandler.class.php +++ b/classes/module/ModuleHandler.class.php @@ -667,8 +667,8 @@ class ModuleHandler extends Handler 'dispEditorConfigPreview' => 1, 'dispLayoutPreviewWithModule' => 1 ); - $db_info = Context::getDBInfo(); - if($type == "view" && $this->module_info->use_mobile == "Y" && Mobile::isMobileCheckByAgent() && !isset($skipAct[Context::get('act')]) && $db_info->use_mobile_view == "Y") + $db_use_mobile = Mobile::isMobileEnabled(); + if($type == "view" && $this->module_info->use_mobile == "Y" && Mobile::isMobileCheckByAgent() && !isset($skipAct[Context::get('act')]) && $db_use_mobile === true) { global $lang; $header = ''; diff --git a/modules/menu/menu.admin.controller.php b/modules/menu/menu.admin.controller.php index 960f0f584..c468d8cb7 100644 --- a/modules/menu/menu.admin.controller.php +++ b/modules/menu/menu.admin.controller.php @@ -606,8 +606,7 @@ class menuAdminController extends menu $cmArgs->is_skin_fix = 'N'; $cmArgs->is_mskin_fix = 'N'; - $db_info = Context::getDBInfo(); - if($db_info->use_mobile_view == 'Y') + if(Mobile::isMobileEnabled() === true) { $cmArgs->use_mobile = 'Y'; } From 57a4eece3a9aa7b17d349fe14c1485a33901f5f6 Mon Sep 17 00:00:00 2001 From: Eunsoo Lee Date: Tue, 27 Jan 2015 01:07:36 +0900 Subject: [PATCH 016/265] =?UTF-8?q?=ED=9C=B4=EC=A7=80=ED=86=B5=EC=97=90=20?= =?UTF-8?q?=EB=93=A4=EC=96=B4=20=EC=9E=88=EB=8A=94=20=EB=8C=93=EA=B8=80?= =?UTF-8?q?=EC=9D=84=20=EC=82=AD=EC=A0=9C=ED=95=A0=20=EC=88=98=20=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/comment/comment.admin.controller.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/comment/comment.admin.controller.php b/modules/comment/comment.admin.controller.php index efb01180e..2436fd611 100644 --- a/modules/comment/comment.admin.controller.php +++ b/modules/comment/comment.admin.controller.php @@ -495,7 +495,9 @@ class commentAdminController extends comment //already comment deleted, therefore only comment log delete $oCommentController = getController('comment'); - $output = $oCommentController->deleteCommentLog($oComment->get('comment_srl')); + $args = new stdClass(); + $args->comment_srl = $oComment->get('comment_srl'); + $output = $oCommentController->deleteCommentLog($args); return $output; } From 44acf38e8454cd08505193198995518ba689085a Mon Sep 17 00:00:00 2001 From: sejin7940 Date: Sat, 31 Jan 2015 09:41:36 +0900 Subject: [PATCH 017/265] Update document.item.php --- modules/document/document.item.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 4f5dc0624..ae9c1c155 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -524,6 +524,8 @@ class documentItem extends Object function getSummary($str_size = 50, $tail = '...') { $content = $this->getContent(FALSE, FALSE); + + $content = nl2br($content); // For a newlink, inert a whitespace $content = preg_replace('!([\s]*)+!is', ' ', $content); From b146250c996e43c172f29a686b5e00c23d67f751 Mon Sep 17 00:00:00 2001 From: sejin7940 Date: Sat, 31 Jan 2015 19:02:15 +0900 Subject: [PATCH 018/265] Update document.controller.php --- modules/document/document.controller.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index accc182e3..9461e3a91 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -1257,6 +1257,8 @@ class documentController extends document return $output; } + $this->add('declared_count', $declared_count+1); + // Call a trigger (after) $trigger_obj->declared_count = $declared_count + 1; $trigger_output = ModuleHandler::triggerCall('document.declaredDocument', 'after', $trigger_obj); From ceae3b9310318201ccec16b3ab307f96fe84f1ec Mon Sep 17 00:00:00 2001 From: Jaedong Kim Date: Sun, 1 Feb 2015 15:36:48 +0900 Subject: [PATCH 019/265] =?UTF-8?q?=EB=B9=84=EB=B0=80=EB=B2=88=ED=98=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=EC=8B=9C=20=EB=B9=84=EB=B0=80=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=EB=B3=B4=EC=95=88=EC=88=98=EC=A4=80=EC=9D=84=20?= =?UTF-8?q?=ED=86=B5=EA=B3=BC=ED=95=98=EC=A7=80=20=EB=AA=BB=ED=96=88?= =?UTF-8?q?=EB=8A=94=EB=8D=B0=EB=8F=84=20change=5Fpassword=5Fdate=EA=B0=80?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD=EB=90=98=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20?= =?UTF-8?q?=ED=95=B4=EA=B2=B0=20xpressengine/xe-core#1224?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/member/member.controller.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index aba6df5df..d44936952 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -2242,8 +2242,6 @@ class memberController extends member */ function updateMemberPassword($args) { - $output = executeQuery('member.updateChangePasswordDate', $args); - if($args->password) { @@ -2272,7 +2270,10 @@ class memberController extends member } $output = executeQuery('member.updateMemberPassword', $args);; - + if($output->toBool()) + { + $output = executeQuery('member.updateChangePasswordDate', $args); + } $this->_clearMemberCache($args->member_srl); return $output; From a520a83ff0e80e8d83c323e309a754f57d4c89d4 Mon Sep 17 00:00:00 2001 From: sejin7940 Date: Tue, 3 Feb 2015 23:13:19 +0900 Subject: [PATCH 020/265] Update member_communication.addon.php --- addons/member_communication/member_communication.addon.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/member_communication/member_communication.addon.php b/addons/member_communication/member_communication.addon.php index fb048ab99..4744451d7 100644 --- a/addons/member_communication/member_communication.addon.php +++ b/addons/member_communication/member_communication.addon.php @@ -74,10 +74,10 @@ elseif($this->act == 'getMemberMenu' && $called_position == 'before_module_proc' $oMemberController = getController('member'); // 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))) - $oMemberController->addMemberPopupMenu(getUrl('', 'module', 'communication', 'act', 'dispCommunicationSendMessage', 'receiver_srl', $member_srl), 'cmd_send_message', '', 'popup'); + $oMemberController->addMemberPopupMenu(getUrl('', 'act', 'dispCommunicationSendMessage', 'receiver_srl', $member_srl), 'cmd_send_message', '', 'popup'); // Add a menu for listing friends (if a friend is new) if(!$oCommunicationModel->isAddedFriend($member_srl)) - $oMemberController->addMemberPopupMenu(getUrl('', 'module', 'communication', 'act', 'dispCommunicationAddFriend', 'target_srl', $member_srl), 'cmd_add_friend', '', 'popup'); + $oMemberController->addMemberPopupMenu(getUrl('', 'act', 'dispCommunicationAddFriend', 'target_srl', $member_srl), 'cmd_add_friend', '', 'popup'); } } /* End of file member_communication.addon.php */ From b1224c7237f72b5499ff72185377865f6352568e Mon Sep 17 00:00:00 2001 From: sejin7940 Date: Tue, 3 Feb 2015 23:30:58 +0900 Subject: [PATCH 021/265] Update member_communication.addon.php --- addons/member_communication/member_communication.addon.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/member_communication/member_communication.addon.php b/addons/member_communication/member_communication.addon.php index 4744451d7..8986d8b59 100644 --- a/addons/member_communication/member_communication.addon.php +++ b/addons/member_communication/member_communication.addon.php @@ -74,10 +74,10 @@ elseif($this->act == 'getMemberMenu' && $called_position == 'before_module_proc' $oMemberController = getController('member'); // 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))) - $oMemberController->addMemberPopupMenu(getUrl('', '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) if(!$oCommunicationModel->isAddedFriend($member_srl)) - $oMemberController->addMemberPopupMenu(getUrl('', '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 */ From f788f487020dc3ebe39993c6bc9b6b3eda982e5e Mon Sep 17 00:00:00 2001 From: YJSoft Date: Sun, 8 Feb 2015 11:01:59 +0900 Subject: [PATCH 022/265] =?UTF-8?q?=EC=96=B4=EB=94=94=EC=97=90=EC=84=9C?= =?UTF-8?q?=EB=8F=84=20=EC=84=A0=EC=96=B8=EB=90=98=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EC=9D=80=20$member=5Fsrl=20=EB=B3=80=EC=88=98=EB=A5=BC=20?= =?UTF-8?q?=EA=B0=80=EC=A0=B8=EC=98=A4=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit $this->memberInfo->password 값이 비어 있을경우 $member_srl를 이용하여 회원 정보를 구한 뒤 비밀번호를 구해오도록 하였지만 어디에도 $member_srl 값을 구해오는 부분이 없어 값이 비어있기에 무조건 잘못된 비밀번호라고 출력되는 문제를 수정합니다. --- modules/member/member.controller.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index aba6df5df..cf8283822 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -441,6 +441,10 @@ class memberController extends member if(!$this->memberInfo->password) { + // Get information of logged-in user + $logged_info = Context::get('logged_info'); + $member_srl = $logged_info->member_srl; + $columnList = array('member_srl', 'password'); $memberInfo = $oMemberModel->getMemberInfoByMemberSrl($member_srl, 0, $columnList); $this->memberInfo->password = $memberInfo->password; From 67c33ab55429b6502f31000a0d064a7319808f58 Mon Sep 17 00:00:00 2001 From: mog422 Date: Sun, 8 Feb 2015 22:25:30 +0900 Subject: [PATCH 023/265] =?UTF-8?q?fix=20#1247=20=ED=8F=AC=EC=9D=B8?= =?UTF-8?q?=ED=8A=B8=20=EC=84=A4=EC=A0=95=20=EC=A0=80=EC=9E=A5=EC=8B=9C=20?= =?UTF-8?q?=ED=8F=AC=EC=9D=B8=ED=8A=B8=20=EA=B7=B8=EB=A3=B9=20=EC=97=B0?= =?UTF-8?q?=EB=8F=99=EC=9D=B4=20=EB=90=98=EC=9E=88=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EC=9D=80=20=EA=B7=B8=EB=A3=B9=EC=9D=B4=20=EC=97=B0=EB=8F=99?= =?UTF-8?q?=EC=9D=B4=20=EB=90=98=EB=8A=94=20=EB=B2=84=EA=B7=B8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/point/point.admin.controller.php | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/modules/point/point.admin.controller.php b/modules/point/point.admin.controller.php index a61fa2780..63d8d3dc2 100644 --- a/modules/point/point.admin.controller.php +++ b/modules/point/point.admin.controller.php @@ -61,20 +61,20 @@ class pointAdminController extends point $group_srl = $group->group_srl; - //if group level is higher than max level, change to max level - if($args->{'point_group_'.$group_srl} > $args->max_level) + if(isset($args->{'point_group_'.$group_srl})) { - $args->{'point_group_'.$group_srl} = $args->max_level; - } + //if group level is higher than max level, change to max level + if($args->{'point_group_'.$group_srl} > $args->max_level) + { + $args->{'point_group_'.$group_srl} = $args->max_level; + } - //if group level is lower than 1, change to 1 - if($args->{'point_group_'.$group_srl} < 1) - { - $args->{'point_group_'.$group_srl} = 1; - } + //if group level is lower than 1, change to 1 + if($args->{'point_group_'.$group_srl} < 1) + { + $args->{'point_group_'.$group_srl} = 1; + } - if($args->{'point_group_'.$group_srl}) - { $config->point_group[$group_srl] = $args->{'point_group_'.$group_srl}; } else From fb285799e170bdb6d140b2309ff6f29cc44f52e6 Mon Sep 17 00:00:00 2001 From: Beom Jinhyeok Date: Tue, 10 Feb 2015 02:38:15 +0900 Subject: [PATCH 024/265] =?UTF-8?q?=EC=9D=B4=EB=A9=94=EC=9D=BC=20=EC=A3=BC?= =?UTF-8?q?=EC=86=8C=EB=A1=9C=20=EA=B3=84=EC=A0=95=20=EC=B0=BE=EA=B8=B0=20?= =?UTF-8?q?=EC=9D=B8=EC=A6=9D=20=ED=9B=84=20=EC=9D=BC=EB=B3=B8=EC=96=B4=20?= =?UTF-8?q?=EB=A9=94=EC=8B=9C=EC=A7=80=20=EB=AC=B8=EA=B5=AC=20=EA=B3=A0?= =?UTF-8?q?=EC=B9=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/member/lang/lang.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/member/lang/lang.xml b/modules/member/lang/lang.xml index 96f6f379a..3a294a544 100644 --- a/modules/member/lang/lang.xml +++ b/modules/member/lang/lang.xml @@ -1363,7 +1363,7 @@ - + From 01de49b190e6c967c0c18f490550872fe8adf719 Mon Sep 17 00:00:00 2001 From: Eunsoo Lee Date: Sat, 14 Feb 2015 16:11:58 +0900 Subject: [PATCH 025/265] =?UTF-8?q?=EC=97=86=EB=8A=94=20=ED=8A=B8=EB=A6=AC?= =?UTF-8?q?=EA=B1=B0=EB=A5=BC=20=EB=B0=98=ED=99=98=ED=95=A0=20=EB=95=8C=20?= =?UTF-8?q?foreach=20=EA=B5=AC=EB=AC=B8=20=EC=82=AC=EC=9A=A9=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit moduleModel::getTrigger --- modules/module/module.model.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/module/module.model.php b/modules/module/module.model.php index 08997c298..3d57629f7 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -662,11 +662,14 @@ class moduleModel extends module function getTrigger($trigger_name, $module, $type, $called_method, $called_position) { $triggers = $this->getTriggers($trigger_name, $called_position); - foreach($triggers as $item) + if($triggers && is_object($triggers)) { - if($item->module == $module && $item->type == $type && $item->called_method == $called_method) + foreach($triggers as $item) { - return $item; + if($item->module == $module && $item->type == $type && $item->called_method == $called_method) + { + return $item; + } } } From b21d6534f1c81879de330635f34c90df2a2a95da Mon Sep 17 00:00:00 2001 From: Eunsoo Lee Date: Sat, 14 Feb 2015 16:21:34 +0900 Subject: [PATCH 026/265] =?UTF-8?q?DB=20Column=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=EC=8B=9C=20=EA=B8=B0=EB=B3=B8=EA=B0=92=EC=9C=BC=EB=A1=9C=200?= =?UTF-8?q?=EC=9D=84=20=EC=A7=80=EC=A0=95=ED=95=A0=20=EC=88=98=20=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/db/DBCubrid.class.php | 4 ++-- classes/db/DBMssql.class.php | 4 ++-- classes/db/DBMysql.class.php | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/classes/db/DBCubrid.class.php b/classes/db/DBCubrid.class.php index 28eb0d81a..064ae99ab 100644 --- a/classes/db/DBCubrid.class.php +++ b/classes/db/DBCubrid.class.php @@ -479,7 +479,7 @@ class DBCubrid extends DB * @param boolean $notnull not null status, default value is false * @return void */ - function addColumn($table_name, $column_name, $type = 'number', $size = '', $default = '', $notnull = FALSE) + function addColumn($table_name, $column_name, $type = 'number', $size = '', $default = null, $notnull = FALSE) { $type = strtoupper($this->column_type[$type]); if($type == 'INTEGER') @@ -506,7 +506,7 @@ class DBCubrid extends DB $query .= sprintf("%s ", $type); } - if($default) + if(isset($default)) { if($type == 'INTEGER' || $type == 'BIGINT' || $type == 'INT') { diff --git a/classes/db/DBMssql.class.php b/classes/db/DBMssql.class.php index f53b32ac4..5a7217735 100644 --- a/classes/db/DBMssql.class.php +++ b/classes/db/DBMssql.class.php @@ -377,7 +377,7 @@ class DBMssql extends DB * @param boolean $notnull not null status, default value is false * @return void */ - function addColumn($table_name, $column_name, $type = 'number', $size = '', $default = '', $notnull = false) + function addColumn($table_name, $column_name, $type = 'number', $size = '', $default = null, $notnull = false) { if($this->isColumnExists($table_name, $column_name)) { @@ -399,7 +399,7 @@ class DBMssql extends DB $query .= sprintf(" %s ", $type); } - if($default) + if(isset($default)) { $query .= sprintf(" default '%s' ", $default); } diff --git a/classes/db/DBMysql.class.php b/classes/db/DBMysql.class.php index 35a0d1ec1..9e60f410e 100644 --- a/classes/db/DBMysql.class.php +++ b/classes/db/DBMysql.class.php @@ -299,7 +299,7 @@ class DBMysql extends DB * @param boolean $notnull not null status, default value is false * @return void */ - function addColumn($table_name, $column_name, $type = 'number', $size = '', $default = '', $notnull = false) + function addColumn($table_name, $column_name, $type = 'number', $size = '', $default = null, $notnull = false) { $type = $this->column_type[$type]; if(strtoupper($type) == 'INTEGER') @@ -316,7 +316,7 @@ class DBMysql extends DB { $query .= sprintf(" %s ", $type); } - if($default) + if(isset($default)) { $query .= sprintf(" default '%s' ", $default); } From 0f2e900816eef6251e3c70f6771c6fd18284ae16 Mon Sep 17 00:00:00 2001 From: MinSoo Kim Date: Tue, 17 Feb 2015 14:20:34 +0900 Subject: [PATCH 027/265] =?UTF-8?q?#1273=20PC=20=ED=9A=8C=EC=9B=90?= =?UTF-8?q?=EA=B0=80=EC=9E=85=20=ED=8E=98=EC=9D=B4=EC=A7=80=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=83=9D=EC=9D=BC=20=EC=82=AD=EC=A0=9C=20=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=20=EC=9E=91=EB=8F=99=20=EB=90=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/xpressengine/xe-core/issues/1273 PC 회원 가입 페이지에서 생일 삭제 버튼 작동 되도록 수정. --- modules/member/skins/default/signup_form.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/member/skins/default/signup_form.html b/modules/member/skins/default/signup_form.html index fce3e9cda..572b13644 100644 --- a/modules/member/skins/default/signup_form.html +++ b/modules/member/skins/default/signup_form.html @@ -82,7 +82,7 @@ jQuery(function($){ $.extend(option,$.datepicker.regional['{$lang_type}']); $(".inputDate").datepicker(option); $(".dateRemover").click(function() { - $(this).parent().prevAll('input').val(''); + $(this).prev('input').val(''); return false;}); }); })(jQuery); From 607cc292da9fb5bbb8669becebbd565924bb6aa4 Mon Sep 17 00:00:00 2001 From: MinSoo Kim Date: Tue, 17 Feb 2015 15:13:30 +0900 Subject: [PATCH 028/265] =?UTF-8?q?#1273=20=EB=B3=B4=EC=99=84=20=EC=BB=A4?= =?UTF-8?q?=EB=B0=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 0f2e900816eef6251e3c70f6771c6fd18284ae16 수정 hidden 된 생일 속성 input이 있어서 prevAll로 바꿈 * 종합: .parent 를 삭제 --- modules/member/skins/default/signup_form.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/member/skins/default/signup_form.html b/modules/member/skins/default/signup_form.html index 572b13644..274a32c5d 100644 --- a/modules/member/skins/default/signup_form.html +++ b/modules/member/skins/default/signup_form.html @@ -82,7 +82,7 @@ jQuery(function($){ $.extend(option,$.datepicker.regional['{$lang_type}']); $(".inputDate").datepicker(option); $(".dateRemover").click(function() { - $(this).prev('input').val(''); + $(this).prevAll('input').val(''); return false;}); }); })(jQuery); From b2f108d1246099e753a933f7a8d6ad9a2286ba41 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Wed, 25 Feb 2015 12:32:54 +0900 Subject: [PATCH 029/265] Fix incorrect gzip encoding when output already exists --- classes/display/DisplayHandler.class.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/classes/display/DisplayHandler.class.php b/classes/display/DisplayHandler.class.php index 4ee8f25aa..e4bca38da 100644 --- a/classes/display/DisplayHandler.class.php +++ b/classes/display/DisplayHandler.class.php @@ -84,10 +84,6 @@ class DisplayHandler extends Handler } // header output - if($this->gz_enabled) - { - header("Content-Encoding: gzip"); - } $httpStatusCode = $oModule->getHttpStatusCode(); if($httpStatusCode && $httpStatusCode != 200) @@ -114,9 +110,17 @@ class DisplayHandler extends Handler $this->content_size = strlen($output); $output .= $this->_debugOutput(); + // disable gzip if output already exists + ob_flush(); + if(headers_sent()) + { + $this->gz_enabled = FALSE; + } + // results directly output if($this->gz_enabled) { + header("Content-Encoding: gzip"); print ob_gzhandler($output, 5); } else From cd823663b4cc58f74ef0ff6b594b2ee69bc2bb3b Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Wed, 25 Feb 2015 16:05:35 +0900 Subject: [PATCH 030/265] Allow protocol-relative URLs in syntax --- classes/frontendfile/FrontEndFileHandler.class.php | 4 ++++ classes/template/TemplateHandler.class.php | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/classes/frontendfile/FrontEndFileHandler.class.php b/classes/frontendfile/FrontEndFileHandler.class.php index a647b6dcd..cbff623ac 100644 --- a/classes/frontendfile/FrontEndFileHandler.class.php +++ b/classes/frontendfile/FrontEndFileHandler.class.php @@ -345,6 +345,10 @@ class FrontEndFileHandler extends Handler { $path = './' . $path; } + elseif(!strncmp($path, '//', 2)) + { + return $path; + } $path = preg_replace('@/\./|(? Date: Tue, 3 Mar 2015 17:19:05 +0900 Subject: [PATCH 031/265] =?UTF-8?q?#183=20=EB=B3=B4=EC=99=84=20counter=20?= =?UTF-8?q?=EB=AA=A8=EB=93=88=EC=9D=84=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EC=9D=84=20=EB=95=8C=20=EB=A9=94=EC=8B=9C?= =?UTF-8?q?=EC=A7=80=20=ED=91=9C=EC=8B=9C=EB=90=98=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/admin/tpl/_dashboard_counter.html | 8 -------- modules/admin/tpl/index.html | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/modules/admin/tpl/_dashboard_counter.html b/modules/admin/tpl/_dashboard_counter.html index 66d7f2002..db8112a0b 100644 --- a/modules/admin/tpl/_dashboard_counter.html +++ b/modules/admin/tpl/_dashboard_counter.html @@ -90,14 +90,6 @@ jQuery(function($) $(this).removeClass('hover').find('>.action').hide(); } }); - - // check browser version - if($.browser.msie == true ) { - var arrBrowserVersion = $.browser.version.split('.'); - if(parseInt(arrBrowserVersion[0]) <= 8) { - $('#checkBrowserMessage').show(); - } - } }); function obj2Array(htObj) diff --git a/modules/admin/tpl/index.html b/modules/admin/tpl/index.html index 04c73e0a3..c3c29cad6 100644 --- a/modules/admin/tpl/index.html +++ b/modules/admin/tpl/index.html @@ -80,5 +80,20 @@ + + + + From e7b629d995aaf234ce0a43e8f6ace1df9ec19ca0 Mon Sep 17 00:00:00 2001 From: BJRambo Date: Tue, 3 Mar 2015 18:57:43 +0900 Subject: [PATCH 032/265] =?UTF-8?q?=EC=84=B8=EB=AF=B8=ED=81=B4=EB=A1=A0=20?= =?UTF-8?q?=EC=A4=91=EB=B3=B5=20=EC=A0=9C=EA=B1=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 세미클론의 중복으로 들어간 부분을 제거했습니다. --- modules/member/member.controller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index 24c3b364c..1ce37cd91 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -2264,7 +2264,7 @@ class memberController extends member $args->password = $args->hashed_password; } - $output = executeQuery('member.updateMemberPassword', $args);; + $output = executeQuery('member.updateMemberPassword', $args); $this->_clearMemberCache($args->member_srl); From d6a898a7f29945a825a50977d9a130dccd6ce903 Mon Sep 17 00:00:00 2001 From: bnu Date: Thu, 5 Mar 2015 16:27:47 +0900 Subject: [PATCH 033/265] =?UTF-8?q?fix=20#1181=20=ED=95=9C=EA=B8=80=20?= =?UTF-8?q?=EB=8F=84=EB=A9=94=EC=9D=B8=20=EC=B2=98=EB=A6=AC=20=EA=B0=9C?= =?UTF-8?q?=EC=84=A0=20-=20default=20URL=EC=9D=84=20IDN=EC=9C=BC=EB=A1=9C?= =?UTF-8?q?=20=EC=A7=80=EC=A0=95=20=EC=8B=9C=20punycode=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=ED=99=98=ED=95=98=EC=97=AC=20=EC=A0=80=EC=9E=A5=20-?= =?UTF-8?q?=20request=5Furi=20=EB=B0=8F=20current=5Furl=EB=A5=BC=20punycod?= =?UTF-8?q?e=EB=A1=9C=20=EB=B3=80=ED=99=98=ED=95=98=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EC=9D=80=20IDN=EC=9C=BC=EB=A1=9C=20=EC=B6=9C=EB=A0=A5=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD=20-=20String.prototype.?= =?UTF-8?q?setQuery()=EC=97=90=EC=84=9C=20IDN=EC=9D=84=20=EC=9D=B8?= =?UTF-8?q?=EC=BD=94=EB=94=A9=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EB=B3=80=EA=B2=BD=20thanks=20to=20@andjfrrk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/context/Context.class.php | 22 ++++++++++++++++++++++ classes/module/ModuleHandler.class.php | 2 +- common/js/common.js | 14 +++++++++----- config/func.inc.php | 13 ++++++++----- 4 files changed, 40 insertions(+), 11 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 401e025b3..4cedb6357 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -410,6 +410,16 @@ class Context $this->set('current_url', $current_url); $this->set('request_uri', self::getRequestUri()); + + if(strpos($current_url, 'xn--') !== FALSE) + { + $this->set('current_url', self::decodeIdna($current_url)); + } + + if(strpos(self::getRequestUri(), 'xn--') !== FALSE) + { + $this->set('request_uri', self::decodeIdna(self::getRequestUri())); + } } /** @@ -1081,6 +1091,18 @@ class Context return $obj->str; } + function decodeIdna($domain) + { + if(strpos($domain, 'xn--') !== FALSE) + { + require_once(_XE_PATH_ . 'libs/idna_convert/idna_convert.class.php'); + $IDN = new idna_convert(array('idn_version' => 2008)); + $domain = $IDN->decode($domain); + } + + return $domain; + } + /** * Force to set response method * diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php index 8a2c105e8..075afb838 100644 --- a/classes/module/ModuleHandler.class.php +++ b/classes/module/ModuleHandler.class.php @@ -172,7 +172,7 @@ class ModuleHandler extends Handler if(Context::getRequestMethod() == 'GET') { $this->mid = $module_info->mid; - header('location:' . getNotEncodedSiteUrl($site_info->domain, 'mid', $this->mid, 'document_srl', $this->document_srl)); + header('location:' . getNotEncodedSiteUrl($site_module_info->domain, 'mid', $this->mid, 'document_srl', $this->document_srl)); return FALSE; } else diff --git a/common/js/common.js b/common/js/common.js index f83f0aa05..718c3c53c 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -240,12 +240,13 @@ jQuery(function($) { var loc = isSameUrl(this, window.location.href) ? current_url : this; var idx = loc.indexOf('?'); var uri = loc.replace(/#$/, ''); - var act, re, v, toReplace; + var act, re, v, toReplace, query_string; if (typeof(val)=='undefined') val = ''; if (idx != -1) { - var query_string = uri.substr(idx+1, loc.length), args = {}, q_list = []; + var args = {}, q_list = []; + query_string = uri.substr(idx + 1, loc.length); uri = loc.substr(0, idx); query_string.replace(/([^=]+)=([^&]*)(&|$)/g, function(all,key,val) { args[key] = val; }); @@ -258,9 +259,12 @@ jQuery(function($) { } query_string = q_list.join('&'); - uri = uri+(query_string?'?'+query_string:''); + uri = uri + (query_string ? '?' + encodeURI(query_string) : ''); } else { - if (String(val).trim()) uri = uri+'?'+key+'='+val; + if (String(val).trim()) { + query_string = '?' + key + '=' + val; + uri = uri + encodeURI(query_string); + } } re = /^https:\/\/([^:\/]+)(:\d+|)/i; @@ -290,7 +294,7 @@ jQuery(function($) { // insert index.php if it isn't included uri = uri.replace(/\/(index\.php)?\?/, '/index.php?'); - return encodeURI(uri); + return uri; }; /** diff --git a/config/func.inc.php b/config/func.inc.php index 5d622bf76..d3fd2d83a 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -1564,22 +1564,25 @@ function checkCSRF() return FALSE; } - $defaultUrl = Context::getDefaultUrl(); - $referer = parse_url($_SERVER["HTTP_REFERER"]); + $default_url = Context::getDefaultUrl(); + $referer = $_SERVER["HTTP_REFERER"]; - if(strpos(Context::getRequestUri(), 'xn--') !== FALSE) + if(strpos($default_url, 'xn--') !== FALSE && strpos($referer, 'xn--') === FALSE) { require_once(_XE_PATH_ . 'libs/idna_convert/idna_convert.class.php'); $IDN = new idna_convert(array('idn_version' => 2008)); - $referer = parse_url($IDN->encode($_SERVER["HTTP_REFERER"])); + $referer = $IDN->encode($referer); } + $default_url = parse_url($default_url); + $referer = parse_url($referer); + $oModuleModel = getModel('module'); $siteModuleInfo = $oModuleModel->getDefaultMid(); if($siteModuleInfo->site_srl == 0) { - if(!strstr(strtolower($defaultUrl), strtolower($referer['host']))) + if($default_url['host'] !== $referer['host']) { return FALSE; } From d4486ab32159681ae8faa42e03e919bc14fdc2a2 Mon Sep 17 00:00:00 2001 From: bnu Date: Thu, 5 Mar 2015 17:20:27 +0900 Subject: [PATCH 034/265] =?UTF-8?q?=EC=82=AC=EC=9D=B4=ED=8A=B8=20=EA=B8=B0?= =?UTF-8?q?=EB=B3=B8=20=EC=A3=BC=EC=86=8C=EB=A5=BC=20punycode=20=EB=8C=80?= =?UTF-8?q?=EC=8B=A0=20IDN=EC=9C=BC=EB=A1=9C=20=ED=91=9C=EC=8B=9C=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/admin/admin.admin.view.php | 14 ++++++++++++++ modules/admin/tpl/_header.html | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/modules/admin/admin.admin.view.php b/modules/admin/admin.admin.view.php index 7d6b7a800..1f7ec5216 100644 --- a/modules/admin/admin.admin.view.php +++ b/modules/admin/admin.admin.view.php @@ -68,6 +68,16 @@ class adminAdminView extends admin Context::set('https_port', $db_info->https_port); } + if(strpos($db_info->default_url, 'xn--') !== FALSE) + { + $xe_default_url = Context::decodeIdna($db_info->default_url); + } + else + { + $xe_default_url = $db_info->default_url; + } + Context::set('xe_default_url', $xe_default_url); + $this->showSendEnv(); $this->checkEasyinstall(); } @@ -410,6 +420,10 @@ class adminAdminView extends admin Context::set('selected_lang', $db_info->lang_type); + if(strpos($db_info->default_url, 'xn--') !== FALSE) + { + $db_info->default_url = Context::decodeIdna($db_info->default_url); + } Context::set('default_url', $db_info->default_url); Context::set('langs', Context::loadLangSupported()); diff --git a/modules/admin/tpl/_header.html b/modules/admin/tpl/_header.html index 71c100f49..34b083724 100644 --- a/modules/admin/tpl/_header.html +++ b/modules/admin/tpl/_header.html @@ -6,7 +6,7 @@

{$gnb_title_info->adminTitle} {$gnb_title_info->adminTitle}

-

{getFullUrl('')}

+

{$xe_default_url}

+
@@ -208,12 +208,12 @@ body,table,input,textarea,select,button{font-family:나눔고딕,NanumGothic,NG, - + - - + + @@ -226,28 +226,16 @@ body,table,input,textarea,select,button{font-family:나눔고딕,NanumGothic,NG, - + - - - - - - - - - - - - - - - - - - + + + +
설치 프로그램 목록
PHPXE Core 1.5.x 이하: PHP 4.x ~ 5.x(5.2.2 제외)PHP 5.3 이상 필수
XE Core 1.7 이상: PHP 5.2.4 이상필수PHP 5.5 이상권장
PHP 라이브러리
ICONV선택필수
DBMS(Database Management System)CUBRID택1
Firebird (XE Core 1.7.x 이상부터 공식 지원 안함)
MySQL 4.1이상
PostgreSQL (XE Core 1.7.x 이상부터 공식 지원 안함)
SQLite2/SQLite3 (XE Core 1.7.x 이상부터 공식 지원 안함)
MS-SQLDBMS(Database Management System) + CUBRID, MySQL 4.1 이상, MS-SQL + 택1
diff --git a/config/config.inc.php b/config/config.inc.php index e158dfdde..a84e6a9b7 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -36,6 +36,7 @@ define('__XE_VERSION_RC__', (stripos(__XE_VERSION__, 'rc') !== false)); define('__XE_VERSION_STABLE__', (!__XE_VERSION_ALPHA__ && !__XE_VERSION_BETA__ && !__XE_VERSION_RC__)); define('__XE_MIN_PHP_VERSION__', '5.3.0'); +define('__XE_RECOMMEND_PHP_VERSION__', '5.5.0'); /** * @deprecated __ZBXE_VERSION__ will be removed. Use __XE_VERSION__ instead. diff --git a/modules/install/install.controller.php b/modules/install/install.controller.php index 015b06968..99dc1644a 100644 --- a/modules/install/install.controller.php +++ b/modules/install/install.controller.php @@ -340,14 +340,17 @@ class installController extends install // Check each item $checklist = array(); // 0. check your version of php (5.2.4 or higher) - if(version_compare(PHP_VERSION, '5.2.4') == -1) $checklist['php_version'] = false; - else if(version_compare(PHP_VERSION, '5.3.10') == -1) + $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__, '<')) { - $checklist['php_version'] = true; Context::set('phpversion_warning', true); } - else $checklist['php_version'] = true; - + // 1. Check permission if(is_writable('./')||is_writable('./files')) $checklist['permission'] = true; else $checklist['permission'] = false; diff --git a/modules/install/lang/lang.xml b/modules/install/lang/lang.xml index ceebf0d74..26cb55e44 100644 --- a/modules/install/lang/lang.xml +++ b/modules/install/lang/lang.xml @@ -166,14 +166,14 @@ - - - + + + - PHP 5.2.x버전은 더이상 업데이트되지 않는 버전입니다.]]> - - PHP 5.2.xバージョンはもうアップデートされないバージョンです。]]> + + + diff --git a/modules/install/tpl/check_env.html b/modules/install/tpl/check_env.html index 4de19e0a2..3178ba1bd 100644 --- a/modules/install/tpl/check_env.html +++ b/modules/install/tpl/check_env.html @@ -5,24 +5,27 @@
  • {@ $isDisable = TRUE} - {$lang->install_checklist_title[$key]}(Ver. {$phpversion}) + {$lang->install_checklist_title[$key]}(Ver. {$phpversion}) : {$lang->disable} -

    {$lang->install_checklist_desc[$key]}

    +

    {sprintf($lang->install_checklist_desc[$key], __XE_MIN_PHP_VERSION__)}

    +

    + {sprintf($lang->install_checklist_desc['php_version_warning'], __XE_RECOMMEND_PHP_VERSION__)} [{$lang->more}] +

- XE {__XE_VERSION__} {$lang->install_condition_enable} + XE {__XE_VERSION__} {$lang->install_condition_enable}

-
From 73178c94bb219840b7e1ce9e190c9786de7a599d Mon Sep 17 00:00:00 2001 From: izuzero Date: Tue, 31 Mar 2015 18:56:45 +0900 Subject: [PATCH 129/265] =?UTF-8?q?XEDITION:=20=EC=82=AC=EC=9A=A9=EC=9E=90?= =?UTF-8?q?=20=EC=A0=95=EC=9D=98=20=EC=8A=AC=EB=9D=BC=EC=9D=B4=EB=93=9C=20?= =?UTF-8?q?=EC=84=A4=EB=AA=85=EC=9D=84=20=EC=A0=9C=EB=8C=80=EB=A1=9C=20?= =?UTF-8?q?=EC=B6=9C=EB=A0=A5=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layouts/xedition/css/camera.css | 8 +++++++- layouts/xedition/demo/slide.html | 24 ++++++++++++++++-------- layouts/xedition/layout.html | 20 +++++++++++++++----- 3 files changed, 38 insertions(+), 14 deletions(-) diff --git a/layouts/xedition/css/camera.css b/layouts/xedition/css/camera.css index fe5356cc6..32c2d5796 100644 --- a/layouts/xedition/css/camera.css +++ b/layouts/xedition/css/camera.css @@ -151,7 +151,13 @@ position: absolute; width: 100%; } -.camera_caption > div { +.camera_caption_wrap { + width: 1200px; + margin: 0 auto; + font-size: 20px; + line-height: 22px; +} +.camera_caption_wrap > div { padding: 10px 20px; } .camerarelative { diff --git a/layouts/xedition/demo/slide.html b/layouts/xedition/demo/slide.html index e2eaf811a..e49e0ec4c 100644 --- a/layouts/xedition/demo/slide.html +++ b/layouts/xedition/demo/slide.html @@ -1,24 +1,32 @@
-

SHARING, PUBLISHING.
& PLEASURE.

-

지식을 나누고 컨텐츠를 출판하며 즐거움을 함께합니다.

+
+

SHARING, PUBLISHING.
& PLEASURE.

+

지식을 나누고 컨텐츠를 출판하며 즐거움을 함께합니다.

+
-

MAKING
WEB CULTURES

-

올바른 웹 문화를 지향합니다.

+
+

MAKING
WEB CULTURES

+

올바른 웹 문화를 지향합니다.

+
-

EVOLUTION & INNOVATION
TOGETHER

-

함께 진화하고 혁신을 추구합니다.

+
+

EVOLUTION & INNOVATION
TOGETHER

+

함께 진화하고 혁신을 추구합니다.

+
-

CREATE A GOOD DESIGN WITH
THE POSSIILITY OF TECHNOLOGY

-

기술의 가능성을 발굴하고 좋은 디자인을 만들어 갑니다.

+
+

CREATE A GOOD DESIGN WITH
THE POSSIILITY OF TECHNOLOGY

+

기술의 가능성을 발굴하고 좋은 디자인을 만들어 갑니다.

+
diff --git a/layouts/xedition/layout.html b/layouts/xedition/layout.html index f06510638..999b43d07 100644 --- a/layouts/xedition/layout.html +++ b/layouts/xedition/layout.html @@ -149,27 +149,37 @@
- {$layout_info->slide_text1} +
+ {$layout_info->slide_text1} +
- {$layout_info->slide_text2} +
+ {$layout_info->slide_text2} +
- {$layout_info->slide_text3} +
+ {$layout_info->slide_text3} +
- {$layout_info->slide_text4} +
+ {$layout_info->slide_text4} +
- {$layout_info->slide_text5} +
+ {$layout_info->slide_text5} +
From fff4ef11095dfa71f5c398b9798d5d52e22f55a9 Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 1 Apr 2015 13:46:44 +0900 Subject: [PATCH 130/265] =?UTF-8?q?`FileHandler::returnBytes()`=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=9E=98=EB=AA=BB=EB=90=9C=20=EA=B0=92=EC=9D=84=20?= =?UTF-8?q?=EB=B0=98=ED=99=98=ED=95=98=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/file/FileHandler.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/classes/file/FileHandler.class.php b/classes/file/FileHandler.class.php index 9cc2458d7..38f6dc57f 100644 --- a/classes/file/FileHandler.class.php +++ b/classes/file/FileHandler.class.php @@ -636,7 +636,8 @@ class FileHandler function returnBytes($val) { $unit = strtoupper(substr($val, -1)); - $val = (int)$val; + $val = (float)$val; + switch ($unit) { case 'G': $val *= 1024; From 76c1eb48e95b3f0484acbc7e1552dd04b4422d99 Mon Sep 17 00:00:00 2001 From: bnu Date: Thu, 2 Apr 2015 13:54:24 +0900 Subject: [PATCH 131/265] =?UTF-8?q?#1354=20statistics=20=EC=84=B9=EC=85=98?= =?UTF-8?q?=EC=9D=84=20xeicon=20=EC=84=B9=EC=85=98=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=8C=80=EC=B2=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layouts/xedition/css/layout.css | 10 +++- layouts/xedition/css/welcome.css | 19 ++++---- layouts/xedition/demo/welcome_main.html | 23 ++++------ layouts/xedition/img/bg_stat.jpg | Bin 139722 -> 267070 bytes layouts/xedition/js/welcome.js | 58 ++++++++++-------------- 5 files changed, 51 insertions(+), 59 deletions(-) diff --git a/layouts/xedition/css/layout.css b/layouts/xedition/css/layout.css index cf7bcbbe1..99018c15f 100644 --- a/layouts/xedition/css/layout.css +++ b/layouts/xedition/css/layout.css @@ -73,6 +73,14 @@ a:hover,a:active,a:focus{text-decoration:none} .footer .site_map > ul ul a:focus, .footer .site_map > ul ul a:active{color:#555} + +/* button */ +.btn_item{display:inline-block;margin:35px 0;padding:0 27px;height:50px;font-family: "Open Sans";background-color:#555;font-size:13px;line-height:50px;letter-spacing:1px;color:#FFF;-webkit-transition: all .2s ease-in-out;-moz-transition: all .2s ease-in-out;-ms-transition: all .2s ease-in-out;-o-transition: all .2s ease-in-out;transition: all .2s ease-in-out} +.btn_item:hover, +.btn_item:active +.btn_item:focus{background-color:#CBA061;color:#fff} +.btn_item + .btn_item {margin-left: 10px; } + /* Login */ .header>.side>ul>li{float:left;position:relative} .header>.side>ul>li>a{display:block;width:22px;height:22px;margin-left:12px;font-size:22px;line-height:22px;color:#888;text-align:center} @@ -199,4 +207,4 @@ a:hover,a:active,a:focus{text-decoration:none} @keyframes ani-header { 0% {top: -60px} 100% {top: 0px} -} \ No newline at end of file +} diff --git a/layouts/xedition/css/welcome.css b/layouts/xedition/css/welcome.css index bb7791933..51ba7b002 100644 --- a/layouts/xedition/css/welcome.css +++ b/layouts/xedition/css/welcome.css @@ -11,14 +11,14 @@ .welcomeXE .intro .btn_start:active .welcomeXE .intro .btn_start:focus{background-color:#cda25a;color:#fff} -.welcomeXE .statistics{overflow:hidden;position:static;width:100%;margin:0;height:500px;background-image:url(../img/bg_stat.jpg);background-position:50% 0;background-attachment:fixed;background-repeat:no-repeat} -.welcomeXE .statistics ul{overflow:hidden;width:1200px;margin:220px auto 0} -.welcomeXE .statistics li{float:left;width:384px;margin-left:24px;text-align:center} -.welcomeXE .statistics li:first-child{margin-left:0} -.welcomeXE .statistics li span{display:block} -.welcomeXE .statistics .number{font-family:'Open sans',sans-serif;font-size:48px;color:#333;line-height:60px} -.welcomeXE .statistics .text{font-size:16px;line-height:20px;padding:20px 0;font-weight:600} +/* section.xeicon */ +.welcomeXE .xeicon{overflow:hidden;position:static;width:100%;margin:0;height:500px;background-image:url(../img/bg_stat.jpg);background-position:50% 0;background-attachment:fixed;background-repeat:no-repeat} +.welcomeXE .xeicon h1 {margin-top: 170px; font-size: 40px; color: #f6f6f6; text-align: center; letter-spacing: 1px; font-weight: 400; line-height: 1.2em; text-transform: uppercase; } +.welcomeXE .xeicon h1 a {color: #FFF; } +.welcomeXE .xeicon .button-area {text-align: center; } +.welcomeXE .xeicon .button-area .btn_item {font-size: 16px; } +/* section.guide */ .welcomeXE .guide{height:640px;padding-top:80px} .welcomeXE .guide ul{padding-top:27px} .welcomeXE .guide li{position:relative;float:left;width:314px;min-height:140px;padding:0 0 0 70px;margin:0 0 30px 0} @@ -33,6 +33,7 @@ .welcomeXE .guide p a:active, .welcomeXE .guide p a:focus{color:#cda25a;border-bottom:1px solid #cda25a} +/* section.features */ .welcomeXE .features{width:100%;margin:0;height:800px;padding-top:80px;background-color:#444} .welcomeXE .features .noti, .welcomeXE .features .tit, @@ -61,6 +62,8 @@ .welcomeXE .features .fe_box.on .ico3{background-position:-140px -70px} .welcomeXE .features .fe_box.on .ico4{background-position:-210px -70px} + +/*section.connect*/ .welcomeXE .connect{height:344px;padding-top:80px} .welcomeXE .connect ul{overflow:hidden;padding:40px 0} .welcomeXE .connect li{position:relative;float:left;width:180px;margin-left:24px;padding:4px 0 0 102px;min-height:78px} @@ -71,4 +74,4 @@ .welcomeXE .connect .ico:focus{background-color:#555} .welcomeXE .connect .ico i{line-height:78px} .welcomeXE .connect h2{margin-bottom:16px;font-size:15px;font-weight:600;letter-spacing:1px;line-height:18px;color:#333} -.welcomeXE .connect p{font-size:13px;color:#888;line-height:21px} \ No newline at end of file +.welcomeXE .connect p{font-size:13px;color:#888;line-height:21px} diff --git a/layouts/xedition/demo/welcome_main.html b/layouts/xedition/demo/welcome_main.html index 908a246f2..827d74e96 100644 --- a/layouts/xedition/demo/welcome_main.html +++ b/layouts/xedition/demo/welcome_main.html @@ -6,22 +6,15 @@

XpressEngine은 자유로운 웹 콘텐츠 발행을 돕는 CMS입니다.
간편한 설치와 다양한 추가 프로그램을 활용하여
자신만의 웹페이지를 쉽고 빠르게 만들 수 있습니다.

XE 시작하기 -
-
    -
  • - 62247 - INSTALLS -
  • -
  • - 1300000 - XE DOWNLOADS -
  • -
  • - 830000 - COMMNITY MEMBERS -
  • -
+ +
+

Beautiful iconpack
XEIcon

+
+
GUIDE

START-UP

diff --git a/layouts/xedition/img/bg_stat.jpg b/layouts/xedition/img/bg_stat.jpg index db45478b3cc0ba197c00ed47ba63600f70d52c1a..cd7d68de0d53a2d060d96200854208ef848a1372 100644 GIT binary patch literal 267070 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

N@{ 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

L_ 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 literal 139722 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

Il+Z+5u|f9F{d>>~Lnc2iphy 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

|i49`|=(_2uptINa_GdTxwdGNcO&(1Oie~5TmFd zy;gmA5SnZFF&`1)vscPz2e;(F}vj z3k;ZPJygnT@_MeVD7?2lK|*xSJs?rknixUo6Y94y4o}?wJ8gw8GCy;&3w&7fl~Fr7 z_IS|@-h-6}whRUwpP~0(*(pmXU%^}r721{CIo9y6rt@r`={&rby#JZ$l=%j9m&j5F zKNRAow$7)=^WQIRCVcg{f84t9}ELE z7IKlhELhj(ssTEqOUR#Lc6BtnS(b{7(visZ39xrXJDN@1>i|YVrHk9Ou;{&N4pC!J zRsW#~W_tUNR3-CjZA(FaNOM%w)QF%}C(Dd>7TGB89-Gm-% z0x1z;6(6BkLI1;#>vlTQv}49yHNDAUF4*NQWlKSCPsnx|8% zh7Z!wT<3OzGc$#mlGbt(FIv4~b`m6HB+>uSBxkqENy)$e;pc8I<#RqWO&OAgp|h92 z=6u@vM-#uSPj{HRzFHYqad$VT$zb78aImLYINR;=(W*|wqfi)jb~-pC2$M^10(>p@ zmj>eE2xO^(y&WD6PKKpLpvn6J1L(z5q%;2mGd2CS1*%urmas8kQ zEEmi6CQk!(Y$rL(@p0=rEIl3Q*o^@)EUAq9j>WSGM69bGkYWAqUr>hFg|sWxovML$OtR-P-(INlf##1;GFRA zK=(nZ_AN~EG^9=Mkm*Xr;8hsc3!guelXo1>80%)Hox4Lf^82c_#svHC0kenAaz&Z? z^>|D|v!7w+eW}jgu*@bw!=$oyG-&p-9!C;-`QNpw#(L|6r~s(RA+9#8s7$vAcL+E( zpEp62E#fmPQUeoP+(_>2Nr4rcnMup=O*$YBX0v9A6ve+cyA;<6Qktd+81nG*o8wme z;z%qi5S1O+Qvk7&$arZhh=OHFovm2n%>OMJ=r#i3Oh#3c&J{hkzm0ny5%D@(=Z<*> zV25|Ez4iDfey`eZ$AW8UbWt(%xdb=EuwgYIhkTKTYoWQjB8dUoaK_+xKtRB`XYs}b z#A{suj&hXm>4?Sug|m_1g=bMD`T)#NY!J<6bpz0p3m_d`xo{uFrit%I6Sh0zKmqLh z%hgXF)=)E+YJu=IPwu#vGk;KiMUUQm<*^!9|9(~4(kgm>;)I{yiQe#! zIHKsy+hQXVkGtj5&nmAyubZq-Hz>PPSfbcj;`RwZ3iXa|W&N)hPfHmPCmd!DPrrPa zqacj#u>fT)Nn8a;BDX$M(5Z^u_ey(@9A4gf#C&Xs?bctx@8@Gr3btfnJW%(xJ@%4X|+5xvcu2$lsY1xp!?ahX@;hXkOkM2@j&z5_)@unYj z9ZIO%hS%MU)gV%Gd`p*1srtjKt1AvZIEET606cp5su3#5MwQW(j&@Vwz&ydpFhr2-}d zY+RlGHpH#4+Lp?uT3ZByM2RjWF@6NrASzxtIaxG!Y#O*y2+)MkLYxs3EM@h4Gtm(E zMNO(>^0N=td;*u?Th-b)ssKd3eqD^0d-81F$z4ErPl#CJrM6Gp`XxFEjVniYSQ@@+ zZsT|UD0#UUnBLF34^9n`e=g4LQ*lf{3h4*!QgJbLUQU9g(P!U`{XMCd3G4$vcNXGE zkP|HiwGmk`3w}G3v9lH14=##zZ6GLqtpOD(<4TY}I4Nd;O^XKEjDW&=3<)0E;8~s6 z-M$MN9is{IT3*c8NWHXY=OE>Z+;5E8DJk%+6KD+mvqyn?&`3Jb6TwsJ;Q3~Rx)4v# zKs0rosja1$Qxoa9|YKy8DNc9Y=@i#X@dk79q76tHR*K*%A@4f+y4c$jf{diGmL zTfDMqgKwYG@4oYFEP3elz1zMNV}*DQ@0D7>yIz@pw?Cc;xX3WR*(hFl|7fhCsfzGf zZj%z*wia9!swzKNpP_j$K;lWFb*Q}CB2boN%n%{oI;14SRL6B3Qfv-t=8EN>VCXi) z{sJnHIu@$u&lCDf>k`4kBnqm-J&9wBg-0Vf91&gG4w$GwP3;A*Ps68xfKmQ$12EmM z$0xD4ity1J6HqY`oV6Nw*4YGUf|LZocR?;TIXY90{{>Bh{a3E=t&cJI;vn0w_%Bw#R$+{vPjClT&RcEM{m$ zb^6dN(@JZW0wJC-e8P51w&AAZz773-Etksm$lCvMPw_ivDVTSO3oc!Q9W!fMa4T?A>$b5t1((4S`qx55Yc23(-{Rot*nlo0Tq2`i9G>_<7D^^$ zKPUeywD)|jF}(T1ZJMTu5$y0=+QKbb-e0orTn0i1)YZ3;dRz}gS(oAwNA>A+-LAUeGa|% z?0w9Q!FJo(jPP%YhVMK*sR~*zqgt=pxMAp7nQAg;#z6) zHjJ9nX2%Qsy^zJWXVumojX1Vkdu2NO4f9}I&rj1Jw=`k0XquriGumJ3<)=r=rD~E| z>K0VKx_lue-|WkF95x9^XkBnxsb==CW4eZFsmyCnx5I>8WGDEPj=I#xKBRCuQnP!Z z4w*KfGqgEr4{;F_7mD2u1(P`a+?|#Ov*@}#gCd!1p<1{nhI z!hg@30?dX$d;x#DXVBx`d{-0@ihsMU57r;`Wx*1!%*C+Z41B5e6T8G|)J|D$|aP148ZqvS^ zaOlUJVS?gGG@AoV3|g{l;OH#cY`}@OR)jT!*^faImsPO zQq;M9_EbO%4_=hp`bkMwYTx_P?%uy{_Os7x;?(t3hIEdq}GCPb5G=C#O z4X9K+5rZj_2g~O^0^OSF7G)xS!G-p1iuN`I@25839F<;?SIt0966$=Ba0jpQCk)zl zP+$6YjGeH*7+n8O0B2%bJ& zI>a?XWI<{j3yh{Qo)D2QFt|t!fQ8EhcLz~g2bP3Jd0(htP~IJNZ{4a27_C2a(y+Mt zx}$$N(13G%CS~Ie-?Ze}(S=q@&E8!5MvjkX47*fWf9SWs-}jD~&NtYz^ZYE@WCz}E zB6|#JxC0d{tWphC8Gh$%J_*caWX5__6JAov5H7Ta=UfS$K>&4S>mJNB(O(okWP*h{ z!BL?av0$H4(Q6Xt5xfwf0QeXMH}ydVew9zCJNEd)#?|ji-G9c62vs05R=x-nY`{5y zA4^cb(^oH&N~2D!LhFNQt58grw(>vmH-Yz4IY1y@x8mU-0>S!h5G*1!vE`yU;@e^z zSC)uGR!vlc5$)h|-okyIHGq^Z0IVE)4Cy3J7>&n(C@hh(%#=3SqGyuBmytzNoKR-QA@ER0(& ziY4xnfXRKF?7(CThOS_4VmA2ae1mck3KjXaW#PypRKb<1#wg zqZh6pw5#^M>;+bLMOu*g3uGr61eu;ko}*fV-yOiKgB+(w4$gQ)WI^1BSVVbL`b|%D zI^H%-uJPq8@+-G3-moiEQjc8toN_@~DYCJovqbxB10*Qhj2t2<5%{09Fy8_)4p^ToC~F9 zakyOWz#{kI8 z(KfY~OY$tx_QkwRCg)2>%-xY{jKMpveQtVvEwa7aGvmZ*yU&ZeY^ja$ngiBJ0R+~% zl&0+8YHu+icP!SlQhuPkd zK3?zK8B|hJr@-_1Jml1@H91)2{x92Vhnf#E<-DUl%w+q~X8+4HH|70(n2;8EPzQ1W z*H^MeP_f(JOilFqJ&5|bq*8``o@^w4oJoIZ>4p9F;DX@h4vr;z!k=gJ5;PiIGw69Z zHK7@-G$YqEUNKsDX>4_llzrOyDEUJw_W0Yay?eqfYumV2iTbjGqoz^+>5X*vX)acU zn?2SxBUHG;xTi6%=etstbE!Ct{)&B*8q?=$%f;zi*R%CPQnl$cLy*y+Ht85;P?vD5 z*Nz)K$6s0f&e+=^O8h3Ze@^_?iGDn@8Yz3?Xjk=w&}$sXIBw*1VmF!thSwNkxCCeI zRM@9YA_USYW69mrV?O^2LQ@MfNJcK4SU;Uy_aEDXtcm?4GZm)+h79bh>x%$_Hi|cXcO_ zF;>65aG_pjy$Rvpd`(y@&U#5MexG$yx;V2;L7+CAcl0#k(ViZo3;E2l8{Oz#>v!wp}M9m3?bQcCqH4(fiRS-mNAb& zqfJ>iU>is`UJ};|RQf^#P@aqdl~B}Wn0(>c9Tt}OY1rWnv;a!3#%Ul{!8YwrEuFrY znpm3*!I~>Y3I*U4_kuwb*7}C#*;Ey0B7o*?21aZ|Y^L(Q&VeNk!(Ph8&D<3J z9v%$s(dGywr;ONxXR2lW!$!am^_@f?RQ!WHeeea=9)sWokF#|CI z50eyU^wt5L|MW?Xk{S}k9ZfnYYial3QCVH{KlA` zNGM=r{GWaI2UxBce9`^yK%<;=zI?Wy^=`*Kxv8kqF#=)0$@s-eG#jwb2h7e%L@-6G z+lrwLfc4vh8?ZR@CDWdXbumTlt=+dhd0=n=B=}f)CQb@g*5UOE9L!vXDQ#T0)8YpF zu^r~QOML)dyw|DJFXp}a-;#U(=ia9#Ghokh6-UVd@Va?I!x|a`8#ya?S1mTw7Ke=? z%IeO<f~WB7MwJ9X(q>8;G;>M!2^GBtoWBo$BY23}7^UztEIDjwn?Qa(xL(`!*f zYEpe#6S%~EW#+i@YC}M3ws-26GcXZpLn@YT{mDZ@ASEbV6TATH;2}nk(gW2nS!cj- z^HRxGer^TtDU&)sGvjp5Es5jz8);9l!qjGO@$dBBl+)+W4>LTLFBmga zHxqD_-%sPBSpP~Bb_qaV*cS0d_JYM& zm_d-5#gQf&7BtY`Lh1jCNB(%zN8-tYma+=)$l7GO65M}iE_fbr2+cbCH{9P)r#N^n zR9|HFn)RYxJ5s>Xy!BTat2!>oVdar9qQ04^z$Zpa29aPk^C$4X`^{gO5NN z6aZM9FN;rQ!JD$GwLa8)PHZ>gcSNfDnclN5Dqi8195~q(-vCe8Wtnp(6KVE==i|Gk z2YFS<^eI-G^3mFwQ2V1#;Z^*bS$-sm?>F3EgC@bADu`d+1@9m#{Nhz;@dK+HaWmpJ zAT|q(391}wLofb=zEBH%+kjE6FWN-de3&@a-*#2T9`ivA*opg8>}k&ZrX3f-Az#kmz7eWCAD!? z>wR3HnSlQ?8xg9lt}ruN;%u-IKa=~ZU*jBgH4J=^-HO_N+niMKi!GTr<44kR98l&& z8=wlPQrE0$Yy3ueZm9IEmdW1SFor@esCKX}2nc*!l12N#{-fFvXlAtO_A!yrLh(Ts zszH~S{_%@j77t$G5coXf_4sbO_FoU$T~Q=gtv;93o3sCp-vl^+qj^UHROw<#UR7=2 zT7M1O8Z4pnA3)LvT54Scl~%uJDo%UXjjM^Er;%;k#zA()ya|Xla2^_W!@45X_w`5A z?+ZuFQ<)M})sHmL9~m&89DaRm%#?t7J*>^`_BP=5X$7^>xz3L+0Wn`O(BT3al59W> z0t`@e2btNUm0Nq zF<}M`&wiI~6_>?doKSBL+t|Ua{%tO6T3P1i5o)(2T7EYE>rRb1vu~ktLGy5=xiAEx z+2ypn_3|s_G%gVLsl~4EvT*-dFMK?0iD%Lt6-AtR34e}XDaj>WcwXb6EDQSbZW`wL zc7vW%cTq9b^dW8SXqGX!f_LimP1h!Pwh+y6!R@C|l}_}2Fs~C$*C7-4AXOjr1(GQY z?sScg$6Vkldd9kd0zC$aV^Os#K8Yx!#%jIb_AWH)e;Q`N;R!WpUGmWAa>?!4>(ys> z_>R5tSV1fH*P{E;@nU*df7&mc^+KvD;PZglX~kEq_i9OlH+t&-p6H)G5~-bbe!R$F z7gp-pY-nFGgsV(icy#{xhMPkEuhtLZ^gR$Z@M)`_sj@EMt};TawKa0hiVk>aKQ-fp zI(6UX8{ZNf`WxhdpA9Y&i8*t<1xcn90h+hJsR)sWJrC3Enaah=LEr@4(FKMTbJOs%zcgEx})zX zpB9kc<1hs3{ldlx`97lLie`*bp0L3Jf4p>A_J;_c9njx3rI&cdPV{N2X^}2Nk#KHPM!7LNHS6zqitb9*amvk% zPPE^lt_HQTY}c=X()Q#%*G{$Ibzi&u)X^(=U!T1u_qLF$w_(tzLVRzUXh9pZlq6pa z`}#aN{y|?)Ktv0%BsIVELQoHbR=$=))7WYx_rK(Id>!gP)@qJ+@|X~_=2zW2;*qv? z0+w*acjQ9f#TEQ{%&PWXQ3no3HLV|vX+@^vD&z;&ulI%t-G<-65SA_T=DUxL$2BHL zSYyJy0k{YU(^@@J>^S{8e;JR@B@OXD#XYRkvEN^}EBm13*|<7Blb5m5rAjkX&7


+`=K$OzdcCW4w=xWbfUi?RRp$^u& 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 500) { - if(flag){ - $('.number').countTo({ - formatter: function (value, options) { - return value.toFixed(options.decimals).replace(/\B(?=(\d{3})+(?!\d))/g, ","); - } - }); - } - flag = false; - } - }); + "user strict"; + $(function(){ + $('.xeicon').parallax('50%',0.4); - $('.fe_box').on('mouseenter mouseleave',function(e){ - $this = $(this); - if(e.type == 'mouseenter'){ - $this.addClass('on') - } else { - $this.removeClass('on'); - } + $('.fe_box').on('mouseenter mouseleave',function(e){ + $this = $(this); + if(e.type == 'mouseenter'){ + $this.addClass('on'); + } else { + $this.removeClass('on'); + } - }); - }) + }); + }); })(jQuery); (function($) { + "user strict"; var $window = $(window); var windowHeight = $window.height(); $window.resize(function() { - windowHeight = $window.height() + windowHeight = $window.height(); }); @@ -51,12 +39,12 @@ if (outerHeight) { getHeight = function(object) { - return object.outerHeight(true) - } + return object.outerHeight(true); + }; } else { getHeight = function(object) { - return object.height() - } + return object.height(); + }; } if (arguments.length < 1 || xpos === null) xpos = "50%"; @@ -72,12 +60,12 @@ var height = getHeight($element); if (top + height < pos || top > pos + windowHeight) { - return + return; } - $this.css('backgroundPosition', xpos + " " + Math.round((firstTop - pos) * speedFactor) + "px") - }) + $this.css('backgroundPosition', xpos + " " + Math.round((firstTop - pos) * speedFactor) + "px"); + }); } $window.bind('scroll', update).resize(update); - update() - } + update(); + }; })(jQuery); From b4bbbb378f150fce940619e11cc8bc79217f12eb Mon Sep 17 00:00:00 2001 From: UPGLE Date: Fri, 3 Apr 2015 11:28:43 +0900 Subject: [PATCH 132/265] ADD XEedition Layout banner(XEICON). --- layouts/xedition/img/sub_banner_03.jpg | Bin 0 -> 167223 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 layouts/xedition/img/sub_banner_03.jpg diff --git a/layouts/xedition/img/sub_banner_03.jpg b/layouts/xedition/img/sub_banner_03.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b5330f002c9fd558134f8731270c790bb69c675e GIT binary patch literal 167223 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�w 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 F{{W)GrV;=E literal 0 HcmV?d00001 From d03e081a4baa1ca27856fcd65474fb3cfa6baa21 Mon Sep 17 00:00:00 2001 From: UPGLE Date: Fri, 3 Apr 2015 14:54:53 +0900 Subject: [PATCH 133/265] xeicon page theme commit. --- layouts/xedition/demo/welcome_sub3.html | 140 ++++++++++++++++++++++-- 1 file changed, 133 insertions(+), 7 deletions(-) diff --git a/layouts/xedition/demo/welcome_sub3.html b/layouts/xedition/demo/welcome_sub3.html index 8f0714b1c..1e120d082 100644 --- a/layouts/xedition/demo/welcome_sub3.html +++ b/layouts/xedition/demo/welcome_sub3.html @@ -1,7 +1,133 @@ - -

FULL PAGE EXAMPLE PAGE

-

Carefully crafted elements come together into one amazing design.

-

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Typi non habent claritatem insitam; est usus legentis in iis qui facit eorum claritatem.

-

Typi non habent claritatem insitam; est usus legentis in iis qui facit eorum claritatem. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Claritas est etiam processus dynamicus, qui sequitur mutationem consuetudium lectorum. Mirum est notare quam littera gothica, quam nunc putamus parum claram, anteposuerit litterarum formas humanitatis per seacula quarta decima et quinta decima.

-

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum.

- +
+ + \ No newline at end of file From d36377268707bfe808c1907fede0112a8efedfd9 Mon Sep 17 00:00:00 2001 From: bnu Date: Fri, 3 Apr 2015 17:22:21 +0900 Subject: [PATCH 134/265] =?UTF-8?q?#1354=20=EB=A0=88=EC=9D=B4=EC=95=84?= =?UTF-8?q?=EC=9B=83=20=EC=84=A4=EC=A0=95=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layouts/xedition/conf/info.xml | 106 +++++++++++--- layouts/xedition/css/layout.css | 42 +++--- layouts/xedition/img/logo.png | Bin 1457 -> 15750 bytes layouts/xedition/img/s_logo.png | Bin 1299 -> 15686 bytes layouts/xedition/js/layout.js | 4 +- layouts/xedition/js/welcome.js | 4 +- layouts/xedition/layout.html | 249 +++++++++++++++++++++++--------- 7 files changed, 292 insertions(+), 113 deletions(-) diff --git a/layouts/xedition/conf/info.xml b/layouts/xedition/conf/info.xml index b1097aa44..ce5a91177 100644 --- a/layouts/xedition/conf/info.xml +++ b/layouts/xedition/conf/info.xml @@ -25,7 +25,7 @@ 기본 - 데모 사용 + 메인 페이지 데모 사용 사용함 @@ -33,46 +33,114 @@ 사용 안 함 - + + + + + + + 레이아웃 타입 - - 기본형 + + 자동 적용 - - 서브1형 + + 메인형 - - 서브2형 + + 서브형 - - 서브3형 + + + 메인형 메뉴 타입 + + 일반 메뉴 + 슬라이드 : 분리 + + + 일반 메뉴 + 슬라이드 : 겹침 + + + 매거진 메뉴 + 슬라이드 : 분리 + + + + 서브형 메뉴 타입 + + 일반 메뉴 + SIMPLE-TEXT HEADER + + + 일반 메뉴 + REGULAR HEADER + + + 겹침 메뉴 + REGULAR RARALLAX + + + 매거진 메뉴 + SIMPLE-TEXT HEADER + + + 매거진 메뉴 + REGULAR HEADER + + + + contet_fixed_width + + 시작 모듈만 전체 폭 + + + 전체 폭 + + + 고정폭 메뉴 타입 - - 기본형 - - 블로그형 + 일반형 매거진형 - 스타트업형 + 배경, 슬라이드 통합 + + + + 매거진형 메뉴 타입 제외 + 메뉴 고정 + + 상단 고정 + + + 고정안함 사이드바 위치 레이아웃 타입 서브형에서만 사용되는 옵션입니다. - - 왼쪽 - 오른쪽 - + + 왼쪽 + + 풀 페이지 diff --git a/layouts/xedition/css/layout.css b/layouts/xedition/css/layout.css index 99018c15f..ab4b0917f 100644 --- a/layouts/xedition/css/layout.css +++ b/layouts/xedition/css/layout.css @@ -23,8 +23,8 @@ a:hover,a:active,a:focus{text-decoration:none} .header>.side{float:right;z-index:2;margin:39px 0 0 22px;line-height:20px} .visual{overflow:hidden;position:relative;z-index:1;width:100%} .body{position:relative;padding:30px 0} -.body.main .content{width:1200px;margin:0 auto} -.body.sub{width:1200px;margin:0 auto} +.body .content{} +.body.fixed-width {width:1200px;margin:0 auto} .header:after,.body:after{display:block;clear:both;content:''} .content{zoom:1} @@ -37,9 +37,9 @@ a:hover,a:active,a:focus{text-decoration:none} .header>h1 img{vertical-align:top} /* Fixed Header */ -.container.fixed_header{padding-top:100px} -.fixed_header .header_wrap{position:absolute;top:0;left:0;width:100%;z-index:1000} -.fixed_header .header_wrap.shrink{position:fixed;border-bottom:1px solid #e1e1e1;background-color:#fff;-webkit-animation:ani-header 0.5s forwards;animation:ani-header 0.5s forwards} +/*.container.fixed_header{padding-top:80px}*/ + +.fixed_header .header_wrap.shrink{position:fixed;width:100%;z-index:1000;border-bottom:1px solid #e1e1e1;background-color:#fff;-webkit-animation:ani-header 0.5s forwards;animation:ani-header 0.5s forwards} .fixed_header .header_wrap.shrink .header>h1{padding:0} .fixed_header .header_wrap.shrink .gnb>ul>li>a{line-height:60px} .fixed_header .header_wrap.shrink .header>.side{margin:19px 0 0 22px} @@ -174,21 +174,23 @@ a:hover,a:active,a:focus{text-decoration:none} .visual.sub.sub_type3 .sub_title h1{font-size:39px;font-weight:400;color:#fff;letter-spacing:2px} /* LNB */ -.body.sub .lnb{float:left;width:260px;padding:0 0 16px} -.body.sub .content{float:right;width:900px;min-height:400px;padding:40px 0 100px} -.body.sub .lnb>ul{position:relative;z-index:1;margin:0;padding:40px 0 0} -.body.sub .lnb>ul>li{margin-bottom:40px} -.body.sub .lnb>ul>li>a,.body.sub .lnb>ul>li>span{display:block;line-height:21px;margin-bottom:14px;font-size:15px;color:#444} -.body.sub .lnb ul ul li.on a{color:#cda25a} -.body.sub .lnb ul ul a{display:block;padding:10px 0;font-size:14px;line-height:20px;color:#888;text-decoration:none} -.body.sub .lnb ul ul a:hover, -.body.sub .lnb ul ul a:focus, -.body.sub .lnb ul ul a:active{color:#cda25a} -.body.sub .lnb img{vertical-align:top} -.body.sub.right .lnb{float:right} -.body.sub.right .content{float:left} -.body.sub.full_width .lnb{display:none} -.body.sub.full_width .content{float:none;width:1200px} +.body.fixed-width .lnb>ul{position:relative;z-index:1;margin:0;padding:40px 0 0} +.body.fixed-width .lnb>ul>li{margin-bottom:40px} +.body.fixed-width .lnb>ul>li>a,.body.fixed-width .lnb>ul>li>span{display:block;line-height:21px;margin-bottom:14px;font-size:15px;color:#444} +.body.fixed-width .lnb ul ul li.on a{color:#cda25a} +.body.fixed-width .lnb ul ul a{display:block;padding:10px 0;font-size:14px;line-height:20px;color:#888;text-decoration:none} +.body.fixed-width .lnb ul ul a:hover, +.body.fixed-width .lnb ul ul a:focus, +.body.fixed-width .lnb ul ul a:active{color:#cda25a} +.body.fixed-width .lnb img{vertical-align:top} +.body.fixed-width.left .lnb, +.body.fixed-width.right .lnb{float:left;width:260px;padding:0 0 16px} +.body.fixed-width.left .content, +.body.fixed-width.right .content{float:right;width:900px;min-height:400px;padding:40px 0 100px} +.body.fixed-width.right .lnb{float:right} +.body.fixed-width.right .content{float:left} +.body.fixed-width.none .lnb{display:none} +.body.fixed-width.none .content{float:none;width:1200px} /* Scroll to top link */ .btn_top{display:none;position:fixed;right:0;bottom:57px;z-index:1000;width:48px;height:48px;background-color:#555;font-size:24px;color:#fff;text-align:center;opacity:0.8;filter:alpha(opacity=80)} diff --git a/layouts/xedition/img/logo.png b/layouts/xedition/img/logo.png index 17cd34378c46f4b411b8643cf6227600d2216889..b480f5375de84a512e80eeb220004fb971a409f7 100644 GIT binary patch literal 15750 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 C0iN6d diff --git a/layouts/xedition/img/s_logo.png b/layouts/xedition/img/s_logo.png index 9d9e07941c307167a93e37f255e5b2b11cb0221d..5c81637a13fb80c575fc02e498c37a07dc92424d 100644 GIT binary patch literal 15686 zcmeI3d0Z1`8pj6|3sH+82&=M$P_c+%a*#k`k}8*=L|I5A){7w-U?gNh5+od2@IqQ$ zwe`S)=XxT7biFUA1$5ndlr0|-T?7R$6m{)_ma=w|AiN+t?SA^_%7OHd_xtLr0q4R?ydlt`HR9 zjmZ=Sg)~B_#FKpy6&{EB8k4nznlOK2)FR3x)Ig6z6EKaK@$_^#gN~`hj2NDjCDjI@ ziC9>M4vo&3AyZ}~DFrIVClZ>-C?pajqXvX-Ojc|3LZg^r&MPEhQ!~tNYM1w&qgyFQbG~YC?FRn{~*#dz8W^rH+he;@y`gDx}F)}rJPfLflMl8k4KxT zQ=3msrG!y6nv7};dcwyZ(5Fqr4Y)oLe@Drl?spa@#zZRZsXgHNCMOSAT5kwhL?Gx! zI-pZ8OV^@s6spHlbxJg35pgM=16{oVi|-wrKAB8C?>u+Zh`qyR>ap0&Q^7JqBH~(w zK{^yM;5r$Ot0k6M7WoDtJt)XLtLPs~5hbQEarG9#{Y||i-kT2%MhvKgn2|gti_7G) zWo(|%PayQ;_z+W*#R8I8l>Kr@aTOMy4&?A-vN$p}pP14@UY{I*vVRU@1*s4N@|&`N zS|E=~DU8Q;$%sLMB_jzatkool;NC_+*)y+%LAV;%5vPSpxFUF$5QqR<3#9oJ}0gdVGe{YEa(!5nF4AT=cG#!|^#QZhyX3=O$-_|!B zYRtSVX%U?sHLW=@q^u+lKwW18B() z*xy|vEfLkcZ$Vj7nN{yjqQ~P6X^0M;l0eLf-?rKr%f=8*+$f+DK99%ciQxXt{T-2*5mhUKF=7SlP4kk?Coarv z>fbY!(jbi~T%?FV0fh^sK^jxIND+Yo3KvL&G^TKoA_4^zE|3OkOyMF$ z1PUlzAPv%(!bOS*6i~Q88l*9Wixd$kpm2dSNMi~YDI!on;R0!p#uP46M4*7e1=1jm zDO{w8Kmmmdq(K@}xJVI!0ty#MgEXdaks<;G6fTekX-wfFMFa{cTp$h7n8HPh2ozAb zKpLd+dvVcvpZ`NO#6y2+#M6CjcBhhfGLWtei;_Z6#yAMdUIsz0UK8IBAt;pvL62e~ zNSF^nF8G%VszM=X@aFK~DKcaI1 zED=L>-W~VWcNHA}#dnbQVdCo#Cfn^;W$du6@Nc~z1GTQqd?7Bb^2|PTA)ufw$&=lh zWk=^F$%Ygk{mAB7t#bZc<*S^cqUzeI)pGf_&tG}hH#0k`Yuf)Otp;vxX3o_?#=ms9p~;k{e;W3d4dgvW9${t!ZWpH z;orM{Hm0@9-F47Qta@vJsEbzd)!lRaQGxc~3L0;%y4aT0P}4Li95~LeZZ2L{)bd4q;2FtW{Gtc9vgIu+8pSHM_yzsXHfrUh-q`)%4X+((%FxC9;(dTx&d;*GleNM~off zaw^m#^R)h7Ue5B*TCsmtlqs%WI(lcdOX3H*u)WjfT|3pnGbkqSRn*1V*OpGNY{~IT z+}$i$9RDM-8r_{UGsGe4{<7;H*6QgDE(EWdR9SLTvVQCV+&r$p`8=v?8GNwvn*{3(cVCTa^d9dXo|D=r|daZ zdhyOK6(d^Ll`H=5{d)P!;Tx`a?ON@-qUfwo;Yg3~Ix7f`}&)zJZ~DO?3m|Q zo3WKA8=@C1D#^O-8`!q|bi;%%WTXGmF!ZY9r?Qtzo{VoU;18{;ui12el-Rj(mbdkz z)K9kvrj3<9KKG(#cC-WMNU;ZQdp1&Zp;Fg+z~L!}<^E#$)-q>JL9XI&w~G(iwoKYL zu3dj|M_Fa(_Qfixhho;z>AATl z_@ptfupmFBw&~yPmr7lJnaXRFN8Wpnu;Xj+%sH!;>_ou((9!$W2S JmjuQx{S}bj#u5Mk literal 1299 zcmZA1{Xf$Q00;1IMA^}6GfS&chh&|ntW9}ntc?-Trdu_2h9$9fGcja!^0d|H!BZ0E z6wVO}Vz?~I1%xr^{rTs%~sX* zZhvQ2y*}_@!l_^~^L%h9Er<@-`!c=hdz=_FKRSs{^9^IQ(QN==bGZ}V-h(qZ_233; z)EpeE6RUIuhM?HvR9O3g{aZb5x&I+lBC6a1;r2hL*k6G)7VPm<$*|S$p2P$w=p`rC zm<}lItltV(DdIaeZExo|>cFf(w;He;*q}ib*a(aPHkwW6N}I#PDG94>?~acR-mej~ zmgd#yq_KV47pZ+K!v~pISpWAm3Yi?)!epK=xjdb-{Ryi;@eugV!X z+L(9;qgFZQsxRr<;a|4l;aF892Ep9NW6R558}B* zJk}RC={bV6N(vww-VgPzV!Apc5W`<>Lb`3!_K3>u5Iblj4xUAp=a-E0lM~^0O>_}b zA#@?+aYK(XO6hN6IQ5LNb$MHY)3e&QgJi?(%NCz*%C%F&!-hkib*kM@F&K(2RO}_f zx@8l${Tg(UQ$>1g_2s8IT}%PDX%6?a@(xRx6y<`*68BH$FY%l;;ls|5GfHVL#8BCC zR&4)FtM6e=30Jb0mMTYjlRzdX1LMyGt<!fl>W>gY~MWlRqv)N+>@!51=> z=F_HPy#~HUwxErlbu}xpN*sWo;A%|NvWx>G9_~U0~kC%@;x%@2~+BktQQ>0I@Zg{t8ml# zRfE(W?K)j$xkJ*j4eIt1^R@aSMx#qq+o=}ea?{w-a#C~T;q(xpBX>c9qGA09Iv}V` zqdWf{%G*w(HjHnk_Pq|K1R*@TRJZt1MnA+qIG{g$!#g*_f?bdoE1f7VQj18GZ$A9j z_Qs`o(+-XXGUH2E&4k4)v>HLZRN~5GZpoSXsKkBOBSs9SyS3eQT%J4De5h_EB*NYS z_d2zI)uvb0UJpZA;n9n(Hn5Op7pXIrf!`g&KPh;mSX-*vml%l*ALDBpcsW#;CQ0=m zT87lA+v8z|=zBAbzI`L{Z%$T_9Ntd9K6v5$yx`BCW;FS8Mva!R5E0N6kMS|web&qg z6cIaY_ohq~mkwu|l+7R~5c4B9+3B@f1YS~t$AaJKJFWWv9CcrfjAIO9jimPbOj4=U z_nMwSUrd}h(rO#n7fZf=HYQ a'); diff --git a/layouts/xedition/js/welcome.js b/layouts/xedition/js/welcome.js index cf7f2f037..11c5b35a2 100644 --- a/layouts/xedition/js/welcome.js +++ b/layouts/xedition/js/welcome.js @@ -1,7 +1,7 @@ (function($){ "user strict"; $(function(){ - $('.xeicon').parallax('50%',0.4); + $('.xeicon').parallax('50%', 0.4); $('.fe_box').on('mouseenter mouseleave',function(e){ $this = $(this); @@ -30,7 +30,7 @@ var getHeight; var firstTop; $this.each(function() { - if($this.hasClass('statistics')){ + if($this.hasClass('xeicon')){ firstTop = $this.offset().top + 600; } else { firstTop = $this.offset().top; diff --git a/layouts/xedition/layout.html b/layouts/xedition/layout.html index 999b43d07..f45ed403a 100644 --- a/layouts/xedition/layout.html +++ b/layouts/xedition/layout.html @@ -2,13 +2,99 @@ {Context::addHtmlHeader('')} + + + + {@ $_is_indexmodule = ($site_module_info->module_srl === $current_module_info->module_srl)} + {@ $_body_class = array()} + {@ $_container_class = array()} + {@ $_visual_class = array()} + + + {@ $_enable_slide = true} + {@ $_enable_snb = false} + {@ $_sample_slide = false} + {@ $_sample_footer = false} + {@ $layout_info->use_demo = 'Y'} + {@ $layout_info->layout_type = 'auto'} + {@ $layout_info->menu_type_main = 'basic'} + {@ $layout_info->menu_type_sub = 'basic'} + {@ $layout_info->content_fixed_width = 'index'} + {@ $layout_info->menu_fixed = 'Y'} + {@ $layout_info->sidebar_position = 'right'} + {@ $layout_info->use_slide = 'Y'} + + + {@ $_sample_slide = true} + {@ $layout_info->use_slide = 'Y'} + + {@ $_sample_slide = true} + {@ $_sample_footer = true} + + + {@ $_container_class[] = 'fixed_header'} + + {@ $layout_info->layout_type = ($_is_indexmodule) ? 'main' : 'sub';} + + {@ $_body_class[] = $layout_info->layout_type} + {@ $_body_class[] = $layout_info->sidebar_position} + + + {@ $_visual_class[] = 'main'} + + {@ $_container_class[] = 'onepage'} + + + {@ $_container_class[] = 'magazine'} + {@ $_enable_snb = true} + + + + + + + {@ $layout_info->content_fixed_width = (!$_is_indexmodule) ? 'Y' : 'N';} + + + {@ $_body_class[] = 'fixed-width'} + + + + {@ $_enable_slide = false} + {@ $_visual_class[] = 'sub'} + + {@ $_visual_class[] = 'sub_type2'} + + + {@ $_container_class[] = 'magazine'} + {@ $_enable_snb = true} + + + {@ $_container_class[] = 'onepage'} + {@ $_visual_class[] = 'sub_type3'} + + + + + + {@ $layout_info->use_demo = 'N'} + + {@ $layout_info->use_demo = 'N'} + + +{@ $_body_class = join(' ', $_body_class)} +{@ $_visual_class = join(' ', $_visual_class)} +{@ $_container_class = join(' ', $_container_class)} + + + - + + +
+ Profile +
{$oDocument->getSignature()}
+
+ + + + + + + + diff --git a/modules/board/skins/xedition/_trackback.html b/modules/board/skins/xedition/_trackback.html new file mode 100644 index 000000000..7f88f9da5 --- /dev/null +++ b/modules/board/skins/xedition/_trackback.html @@ -0,0 +1,18 @@ + + + diff --git a/modules/board/skins/xedition/board.default.css b/modules/board/skins/xedition/board.default.css new file mode 100644 index 000000000..e0498ade9 --- /dev/null +++ b/modules/board/skins/xedition/board.default.css @@ -0,0 +1,1120 @@ +@charset "utf-8"; +/* NHN (developers@xpressengine.com) */ +/* Board */ +.board img { + border: 0; +} +.board, +.board label, +.board table, +.board input, +.board button, +.board textarea, +.board select { + font-size: 12px; + font-family: "Open Sans","나눔바른고딕",NanumBarunGothic,"맑은 고딕","Malgun Gothic","돋움",Dotum,"애플 SD 산돌고딕 Neo","Apple SD Gothic Neo",AppleGothic,Helvetica,sans-serif; +} +.board select { + margin: 0; +} +.board .iCheck { + width: 13px; + height: 13px; + margin: 0; + vertical-align: middle; +} +.board .iCheck+label { + vertical-align: middle; +} +.board .iText { + position: relative; + padding: 4px 9px; + height: 19px; + line-height: 19px; + border: 1px solid #DBDBDB; + background: transparent; +} +.board textarea { + margin: 0; + padding: 3px 4px; + border: 1px solid #a6a6a6; + border-right-color: #d8d8d8; + border-bottom-color: #d8d8d8; +} +.board label { + display: inline-block; + margin: 0; +} +/* Category Tab */ +.cTab { + position: relative; + margin: 0; + padding: 0; + list-style: none; + zoom: 1; + border: 0; +} +.cTab:after { + content: ""; + display: block; + clear: both; +} +.cTab li { + float: left; + margin: 0 2px 0 0; + border: 1px solid #e0e0e0; + border-top: 0; + border-bottom: 0; +} +.cTab li a { + position: relative; + border-top: 1px solid #e0e0e0; + float: left; + height: 28px; + line-height: 28px; + padding: 0 20px; + font-size: 11px; + font-family: 나눔고딕, NanumGothic, "맑은 고딕", "MalgunGhotic", sans-serif; + text-decoration: none; + color: #666; + box-sizing:border-box; +} +.cTab li em { + font: 11px Tahoma, Geneva, sans-serif; + color: #767676; + padding: 0 0 0 2px; +} +.cTab li.on a { + color: #000; + border-top: 2px solid #CDA25A; +} +.cTab ul { + display: none; + position: absolute; + top: 30px; + left: 0; + margin: 0; + padding: 0; +} +.cTab li.on ul { + display: block; + overflow: hidden; + white-space: nowrap; +} +.cTab li.on ul li { + position: relative; + left: 1px; + float: none; + display: inline; + margin: 0; + padding: 0 15px; + list-style: none; + border: 0; + border-right: 1px solid #d0d0d0; +} +.cTab li.on ul li a { + border: 0; + top: 0; + float: none; + line-height: none; + padding: 0; + font-family: 돋움, Dotum; + font-weight: normal; +} +.cTab li.on ul li.on_ a { + font-weight: bold; + color: #3912b3; +} +/* Board List */ +/* list.html */ +.board_list { +} +.board_list table { + border: 0; + border-top: 1px solid #D8D8D8; + border-bottom: 1px solid #D8D8D8; + color: #4a4a4a; +} +.board_list a { + text-decoration: none; + color: #4a4a4a; +} +.board_list a:hover, +.board_list a:active, +.board_list a:focus { + text-decoration: underline; +} +.board_list th { + border: 0; + border-bottom:double #DBDBDB; + padding: 14px 0 15px 0; + height: 14px; + white-space: nowrap; +} +.board_list th:first-child span { + border: 0; +} +.board_list th span { + display: block; + padding: 0 15px; + height: 14px; + font-weight: normal; +} +.board_list tr.notice { + background: #f6f6f6; +} +.board_list tr.notice td.title a { + font-weight: bold; +} +.board_list td { + border: 0; + border-bottom: 1px solid #e6e6e6; + padding: 8px 10px; + white-space: nowrap; + vertical-align: top; +} +.board_list tr:last-child td { + border: 0; +} +.board_list td.notice { + text-align: center; +} +.board_list td.no { + text-align: center; + font: 11px Tahoma, Geneva, sans-serif; +} +.board_list td.title { + white-space: normal; + line-height: 1.4; + width: 100%; +} +.board_list td.author img { + position: relative; + top: -1px; +} +.board_list td.time, +.board_list td.readNum, +.board_list td.voteNum, +.board_list td.lastReply a { + text-align: center; + font: 11px Tahoma, Geneva, sans-serif; +} +.board_list td.lastReply sub { + font: 9px Tahoma, Geneva, sans-serif; +} +.board_list td.check { + text-align: center; +} +.board_list tr.no_article { + height:150px; +} +.board_list tr.no_article td { + vertical-align: middle; +} +.list_footer { + position: relative; + margin: 15px 0; + zoom: 1; +} +.list_footer:after { + content: ""; + display: block; + clear: both; +} +.list_footer .btnArea { + float: right; + margin: 0; +} +.list_footer .board_search { + float: left; + position: relative; + margin: 0 4px 0 0; } +.list_footer .board_search .xi-magnifier { + position:absolute; top:7px; left: 7px; +} +.list_footer .board_search * { + vertical-align: top; +} +.list_footer .board_search .iText { + height: 25px; + line-height: 25px; + padding: 0 60px 0 27px; + width: 140px; + border: 1px solid #DBDBDB; + border-radius: 4px; + box-sizing:border-box; + -webkit-transition: all .2s ease-in-out;-moz-transition: all .2s ease-in-out;-ms-transition: all .2s ease-in-out;-o-transition: all .2s ease-in-out;transition: all .2s ease-in-out +} +.list_footer .board_search .iText.active, +.list_footer .board_search .iText:active, +.list_footer .board_search .iText:focus { + width: 180px; +} +.list_footer .board_search .search_input {display:inline-block; position: relative;} +.list_footer .board_search select { + height: 25px; + width: 80px; + padding: 0; +} +.list_footer .board_search .btn { + position: absolute; + right:0; + border-radius: 0 2px 2px 0; +} +/* Board Write */ + +/* write_form.html */ +.board_write { +} +.write_header { + padding: 9px 10px 10px 0px; +} +.write_header * { + vertical-align: middle; +} +.write_header select { + height: 29px; + width: 140px; + padding: 0; +} +.write_header .iText { + width: 360px; + margin: 0 10px 0 0; + background: #fff; +} +.write_editor .xd { + margin-top: -3px; +} +.write_footer { + overflow: hidden; + margin: 1em 0; +} +.write_footer:after { + content: ""; + display: block; + clear: both; +} +.write_footer .btnArea { + float: right; + margin: 0; +} +.write_option { + margin: 0 0 1em 0; +} +.write_option label { + margin: 0 10px 0 0; +} +/* Extra Form */ +.exForm { + background: #fff; + padding: 10px 0; +} +.exForm table { + border: 0; + width: 100%; +} +.exForm caption { + text-align: right; + font-size: 11px; + padding: 0 0 2px 0; +} +.exForm th, +.exForm td { + border: 0; + vertical-align: top; + border-top: 1px solid #ddd; +} +.exForm th { + color: #333; + text-align: left; + padding: 10px 5px 15px 5px; + white-space: nowrap; +} +.exForm th label { + cursor: default; +} +.exForm td { + color: #666; + padding: 8px 10px; +} +.exForm em { + font-style: normal; + color: #f60; +} +.exForm .text, +.exForm .homepage, +.exForm .email_address, +.exForm .tel, +.exForm .address, +.exForm .date { + padding: 3px 4px; + margin: 0 4px 0 0; + height: 14px; + line-height: 14px; + vertical-align: top; + border: 1px solid #A6A6A6; + border-right-color: #D8D8D8; + border-bottom-color: #D8D8D8; +} +.exForm .text, +.exForm .email_address, +.exForm .homepage, +.exForm .address { + width: 300px; +} +.exForm .tel { + width: 40px; +} +.exForm .date { + width: 120px; +} +.exForm textarea { + width: 90%; + padding: 3px 4px; + margin: 0 4px 0 0; + vertical-align: top; + border: 1px solid #A6A6A6; + border-right-color: #D8D8D8; + border-bottom-color: #D8D8D8; +} +.exForm p { + margin: 5px 0 0 0; + font-size: 11px; +} +.exForm ul { + margin: 0; + padding: 0; + list-style: none; +} +.exForm li { + display: inline; +} +.exForm li input { + width: 13px; + height: 13px; + margin: 0 4px 0 0; + vertical-align: middle; +} +.exForm li label { + margin: 0 15px 0 0; +} +.exOut { + background: #fff; + padding: 10px 0; +} +.exOut table { + border: 0; + width: 100%; +} +.exOut th, +.exOut td { + border: 0; + vertical-align: top; + border-bottom: 1px solid #ddd; + padding: 8px 15px; +} +.exOut th { + color: #333; + text-align: left; + white-space: nowrap; +} +.exOut td { + color: #666; + width: 100%; +} +/* Board Read */ + +/* _read.html */ +.board_read { + zoom: 1; +} +.read_header { + position: relative; + margin-bottom:20px; +} +.read_header h1 { + width: 90%; + margin: 0; + font-size: 21px; + font-weight: normal; + line-height: 36px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + color: #555; +} +.read_header h1 a { + text-decoration: none; + color: #444; +} +.read_header h1 .category { + font-weight: normal; + border-right: 1px solid #DDD; + padding: 0 13px 0 0; + margin: 0 8px 0 0; +} +.read_header .meta { + margin: 0; + padding: 8px 0 13px; + border-bottom: 1px solid #ddd; + zoom: 1; + white-space: nowrap; + color : #666; +} +.read_header .meta > span { margin-left: 8px ;} +.read_header .meta > span:first-child {margin-left:0;} +.read_header .meta:after { + content: ""; + display: block; + clear: both; +} +.read_header .meta .author { + text-decoration: none; + color: #666; + font-weight: normal; +} +.read_body { + padding: 15px 10px; +} +.read_body .xe_content { + color: #333; +} +.read_footer { + overflow: hidden; +} +.read_footer .fileList { + margin: 15px 0; + display: inline; + float: left; +} +.read_footer .toggleFile { + border: 0; + background: none; + cursor: pointer; + overflow: visible; + padding: 0; + color: #4b4b4b; +} +.read_footer .files { + display: none; + list-style: none; + margin: 15px 0; + padding: 0; + line-height: 16px; +} +.read_footer .files li { + background: url(icoSet.gif) no-repeat 0 -28px; + padding: 0 0 0 15px; +} +.read_footer .files a { + color: #4b4b4b; + position: relative; + text-decoration: none; +} +.read_footer .files a .fileSize { + visibility: hidden; + position: absolute; + padding: 1px 4px; + left: 100%; + top: -4px; + border: 1px solid #ddd; + font: 11px Tahoma, Geneva, sans-serif; + background: #fff; + white-space: nowrap; +} +.read_footer .files a:hover .fileSize, +.read_footer .files a:active .fileSize, +.read_footer .files a:focus .fileSize { + visibility: visible; +} +.read_footer .tns { + float: right; + margin: 15px 0; +} +.read_footer .tns a:hover, +.read_footer .tns a:active, +.read_footer .tns a:focus { + text-decoration: underline; +} +.read_footer .tags { + display: inline-block; + height: 16px; + font-size: 11px; + color: #666; + vertical-align: top; + padding: 0 15px 0 32px; + line-height: 16px; + background: none; +} +.read_footer .tags a { + text-decoration: none; + color: #666; +} +.read_footer .tags .xi-tags { + font-size: 14px; + margin-right:3px; +} +.read_footer .action { + display: inline-block; + line-height: 16px; + font-size: 11px; + margin: 0 15px 0 0; + color: #555; +} +.read_footer .sns { + display: inline; + margin: 0; + padding: 0; + list-style: none; + vertical-align: top; +} +.read_footer .sns li { + display: inline; + vertical-align: top; +} +.read_footer .sns a { + display: inline-block; + height: 16px; + line-height: 16px; +} +.read_footer .sns .link a { + width: 16px; + height: 0; + padding: 16px 0 0 0; + overflow: hidden; + background: url(icoSet.gif) no-repeat; +} +.read_footer .sns .twitter a { + background-position: 0 -270px; +} +.read_footer .sns .facebook a { + background-position: 0 -330px; +} +.read_footer .sns .delicious a { + background-position: 0 -360px; +} +.read_footer .sign { + clear: both; + border: 1px solid #ddd; + margin: 0 0 -1px 0; + padding: 10px 15px; + overflow: hidden; + zoom: 1; +} +.read_footer .sign .pf { + float: left; + margin: 0 15px 0 0; + width: 80px; + height: 80px; +} +.read_footer .sign .tx { + overflow: hidden; + line-height: 1.3; + font-size: 11px; + border-left: 1px dotted #ddd; + padding: 0 0 0 15px; + color: #333; +} +.read_footer .sign .tx * { + margin: 0; +} +.read_footer .btnArea { + clear: both; + text-align: right; + padding: 10px 0; +} +/* Feedback (Trackback+Comment) */ +/* _trackback.html | _comment.html */ +.feedback { + position: relative; + color: #4b4b4b; + margin: 0 0 20px 0; +} +.feedback .fbHeader { + position: relative; + height: 32px; + padding: 10px 0 0 5px; + line-height: 30px; + border-top:1px solid #DDD; +} +#comment .fbHeader .wComment { + position: absolute; + top: 10px; + right: 15px; + padding: 0 0 0 18px; + text-decoration: none; + color: #666; + line-height: 1; +} +.feedback .fbHeader h2 { + margin: 0; + font-size: 14px; + display: inline; +} +.feedback .fbHeader h2 em { + font-style: normal; + color: #CDA25A; +} +.feedback .fbHeader .trackbackURL { + position: absolute; + top: 8px; + right: 10px; + margin: 0; + line-height: 1; + color: #666; + font: 11px Tahoma, Geneva, sans-serif; +} +.feedback .fbHeader .trackbackURL a { + text-decoration: none; + color: #666; +} +.feedback .fbList { + margin: 0; + padding: 0; +} +.feedback .fbItem { + padding: 20px 0 19px 0; + border-bottom: 1px solid #E9E9E9; + margin: 0 0 -1px 0; + zoom: 1; + list-style: none; +} +.feedback .fbItem:last-child { + border-bottom:none; +} +.feedback .fbItem:after { + content: ""; + display: block; + clear: both; +} +.feedback .indent { + background: url(icoIndent.gif) no-repeat; +} +.feedback .fbMeta { + float: left; + width: 184px; + padding: 0 0 0 6px; +} +.feedback .fbMeta .profile { + float: left; + width: 38px; + height: 38px; + margin: 0 10px 5px 0; + background: url(profile.gif) no-repeat; + background-size:100%; + border-radius: 100%; +} +.feedback .fbMeta .author { + margin: 0; + font-size: 12px; +} +.feedback .author a { + text-decoration: none; + color: #666; +} +.feedback .author a img { + margin: 0 6px 0 0 !important; + vertical-align: top !important; +} +.feedback .time { + margin: 0; + font: 11px Tahoma, Geneva, sans-serif; + color: #8e8e8e; +} +.feedback .xe_content { + margin: 0 0 0 200px; + color: #666; + line-height: 1.5; +} +.feedback .xe_content *:first-child { + margin-top: 0; +} +#trackback .xe_content { + color: #888; +} +#trackback .xe_content strong { + color: #666; + display: block; + font-weight: normal; +} +.feedback .fileList { + margin: 0 0 0 190px; + padding: 8px 0 0 0; + display: inline; + float: left; + clear: both; +} +.feedback .toggleFile { + border: 0; + background: none; + cursor: pointer; + overflow: visible; + padding: 0; + color: #767676; +} +.feedback .files { + display: none; + list-style: none; + margin: 15px 0; + padding: 0; + line-height: 16px; +} +.feedback .files li { + background: url(icoSet.gif) no-repeat 0 -28px; + padding: 0 0 0 15px; +} +.feedback .files a { + color: #767676; + position: relative; + text-decoration: none; +} +.feedback .files a .fileSize { + visibility: hidden; + position: absolute; + padding: 1px 4px; + left: 100%; + top: -4px; + border: 1px solid #ddd; + font: 11px Tahoma, Geneva, sans-serif; + background: #fff; + white-space: nowrap; +} +.feedback .files a:hover .fileSize, +.feedback .files a:active .fileSize, +.feedback .files a:focus .fileSize { + visibility: visible; +} +.feedback .action { + margin: 0; + padding: 10px 10px 0 0; + white-space: nowrap; + float: right; +} +.feedback .action .vote { + margin: 0 10px 0 0; + color: #767676; +} +.feedback .action a { + padding: 0 0 0 4px; + color: #767676; + text-decoration: none; +} +.feedback .action a:hover { + color:#CDA25A; +} +.feedback .action a.this { + background: none; + padding: 0; + margin: 0 0 0 10px; + text-decoration: underline; +} +.feedback .pagination { + padding: 10px 0; +} +.feedback .indent1 { + padding-left: 20px; + background-position: 6px 15px; +} +.feedback .indent2 { + padding-left: 40px; + background-position: 26px 15px; +} +.feedback .indent3 { + padding-left: 60px; + background-position: 46px 15px; +} +.feedback .indent4 { + padding-left: 80px; + background-position: 66px 15px; +} +.feedback .indent5 { + padding-left: 100px; + background-position: 86px 15px; +} +.feedback .indent6 { + padding-left: 120px; + background-position: 106px 15px; +} +.feedback .indent7 { + padding-left: 140px; + background-position: 126px 15px; +} +.feedback .indent8 { + padding-left: 160px; + background-position: 146px 15px; +} +.feedback .indent9 { + padding-left: 180px; + background-position: 166px 15px; +} +.feedback .indent10 { + padding-left: 200px; + background-position: 186px 15px; +} +.feedback .indent11 { + padding-left: 220px; + background-position: 206px 15px; +} +.feedback .indent12 { + padding-left: 240px; + background-position: 226px 15px; +} +.feedback .indent12 .action {display: none} +.fbFooter { + margin: -10px 0 10px 0; +} +/* Pagination */ +/* list.html | _comment.html */ +.pagination { + margin: 0; + padding: 13px 0; + text-align: center; + line-height: normal; + clear:both; +} +.pagination a, +.pagination strong { + position: relative; + color: #767676; + font: bold 11px/22px Tahoma, Sans-serif; + vertical-align: top; + display: inline-block; + text-decoration: none; + padding: 1px 8px; + background-color: #F6F6F6; + border-radius:2px; + z-index: 2; +} +.pagination a:hover, +.pagination a:active, +.pagination a:focus { + background-color: #f8f8f8; +} +.pagination strong { + color: #D88700; + font-size: 13px; +} +.pagination .direction { + font-weight: normal; + color: #767676; + text-decoration: none !important; + border: 0; + z-index: 1; +} +.pagination .direction:hover, +.pagination .direction:active, +.pagination .direction:focus { + color: #333; + background-color: #fff; +} +.pagination .prev { + border-left: 0; +} +.pagination .next { + border-right: 0; +} +.pagination .direction span { + position: relative; + display: inline-block; + width: 0; + height: 0; + font-size: 0; + line-height: 0; + vertical-align: top; + top: 4px; +} +.pagination .prev span { + border: 3px solid; + border-top: solid #fff; + border-bottom: solid #fff; + border-left: 0; + margin-right: 1px; + *left: -4px; +} +.pagination .next span { + border: 3px solid; + border-top: solid #fff; + border-bottom: solid #fff; + border-right: 0; + margin-left: 1px; +} +/* Write Author */ +/* _read.html | write_form.html | comment_form.html */ +.write_author { + float: left; + margin: 0 4px 0 0; +} +.write_author .item { + position: relative; + display: inline-block; + zoom: 1; +} +.write_author .iLabel { + top: 6px; + left: 12px; + color: #666; +} +.write_author label { + margin: 0 10px 0 0; +} +/* Write Comment */ +/* _read.html | comment_form.html */ +.write_comment { + position: relative; + margin: 10px 0 35px; + zoom: 1; +} +.write_comment:after { + content: ""; + display: block; + clear: both; +} +.write_comment textarea { + width: 645px; + height: 37px; + margin: 0 0 5px 0; +} +.write_comment .write_author { + padding: 0 0 10px 0; +} +.write_comment .iText.userName, +.write_comment .iText.userPw {width:100px;} +.write_comment .iText.homePage {width:150px;} +/* Context Data | Context Message */ +/* comment_form.html | delete_form.html | delete_comment_form.html | input_password_form.html | message.html */ +.context_data { + background: #f8f8f8; + border-top: 2px solid #666; + padding: 15px 20px; + color: #666; +} +.context_data h3.author { + margin: 0 0 10px 0; + color: #333; +} +.context_data h3.title { + margin: 0 0 10px 0; + color: #333; +} +.context_data p.author { + margin: 0; +} +.context_data p.author strong { + font-weight: normal; +} +.context_data .xe_content { + color: #666; +} +.context_message { + text-align: center; + border-top: 2px solid #666; +} +.context_message h1 { + font-size: 16px; + margin: 20px 0; +} +.context_message .btnArea { + margin: 20px 0; +} +/* Tag List */ +.tagList { + margin: 0; + padding: 25px; + border: 1px solid #cdcdcd; + line-height: 1.2; + text-align: justify; +} +.tagList a { + color: #fff; + text-decoration: none; + white-space: nowrap; + margin: 0 2px; +} +.tagList a.rank1 { + font-size: 24px; + background: #000; +} +.tagList a.rank2 { + font-size: 18px; + background: #333; +} +.tagList a.rank3 { + font-size: 14px; + background: #666; +} +.tagList a.rank4 { + font-size: 12px; + background: #999; +} +.tagList a.rank5 { + font-size: 12px; + color: #666; + text-decoration: underline; +} +.tagFooter { + text-align: center; + padding: 20px 0; +} +/* Button */ +.board .btn { + text-decoration: none !important; + display: inline-block; + *display: inline; + *zoom: 1; + padding: 0 12px !important; + margin: 0; + font-family: inherit; + font-size: 12px; + line-height: 24px !important; + height: 25px !important; + color: #fff; + text-align: center; + vertical-align: top; + cursor: pointer; + overflow: visible; + background-color: #ECECEC; + background-image: none; + border: 0; + border-radius:2px; + text-shadow:none; + color:#000; + box-shadow:none; +} +.board .btn:hover, +.board .btn:active, +.board .btn[disabled] { + color: #fff; + background-color: #CDA25A; + *background-color: #CDA25A; +} +.board .btn i { + width: 24px; + background: none repeat scroll 0% 0% rgba(0, 0, 0, 0.06); + height: 25px; + line-height: 25px; + display: inline-block; + margin-left: -12px; + margin-right: 4px; + text-align: center; + padding-left: 2px; + border-radius: 2px 0 0 2px; +} +.board .btn_insert { + border:0; + cursor:pointer; + width:130px; + height:38px; + border-radius:2px; + color:#fff; + background:#CDA25A; + -webkit-transition: all .2s ease-in-out;-moz-transition: all .2s ease-in-out;-ms-transition: all .2s ease-in-out;-o-transition: all .2s ease-in-out;transition: all .2s ease-in-out +} +.board .btn_insert:hover { + background:#555; +} +/* secret form */ +.board .secretForm .iText {height:25px; width:150px; box-sizing:border-box;} +.board .secretForm .btn {border-radius: 0 2px 2px 0; } +.board .secretForm p {margin-bottom:5px;} + + diff --git a/modules/board/skins/xedition/board.default.js b/modules/board/skins/xedition/board.default.js new file mode 100644 index 000000000..0035b0ec6 --- /dev/null +++ b/modules/board/skins/xedition/board.default.js @@ -0,0 +1,59 @@ +jQuery(function($) { + // hide last tag + $('.read_footer .tags span:last-child').hide(); + // user input text blur/focus/change + var iText = $('.item .iLabel').next('.iText'); + $('.item .iLabel').css('position','absolute'); + iText + .focus(function() { + $(this).prev('.iLabel').css('visibility','hidden'); + }) + .blur(function() { + if(!$(this).val()) { + $(this).prev('.iLabel').css('visibility','visible'); + } else { + $(this).prev('.iLabel').css('visibility','hidden'); + } + }) + .change(function() { + if(!$(this).val()) { + $(this).prev('.iLabel').css('visibility','visible'); + } else { + $(this).prev('.iLabel').css('visibility','hidden'); + } + }) + .blur(); + // add class to the parent category + $('.cTab>li>ul>li.on_').parents('li:first').addClass('on'); + // delete the margin-top for the first child of the ccomments + $('.feedback .xe_content>*:first-child').css('margin-top','0'); +}); + +// SNS post +(function($) { + $.fn.snspost = function(opts) { + var loc = ''; + opts = $.extend({}, {type:'twitter', event:'click', content:''}, opts); + opts.content = encodeURIComponent(opts.content); + switch(opts.type) { + case 'facebook': + loc = 'http://www.facebook.com/share.php?t='+opts.content+'&u='+encodeURIComponent(opts.url||location.href); + break; + case 'delicious': + loc = 'http://www.delicious.com/save?v=5&noui&jump=close&url='+encodeURIComponent(opts.url||location.href)+'&title='+opts.content; + break; + case 'twitter': + loc = 'http://twitter.com/home?status='+opts.content; + break; + } + this.bind(opts.event, function() { + window.open(loc); + return false; + }); + }; + $.snspost = function(selectors, action) { + $.each(selectors, function(key,val) { + $(val).snspost( $.extend({}, action, {type:key}) ); + }); + }; +})(jQuery); diff --git a/modules/board/skins/xedition/comment_form.html b/modules/board/skins/xedition/comment_form.html new file mode 100644 index 000000000..1f3876c85 --- /dev/null +++ b/modules/board/skins/xedition/comment_form.html @@ -0,0 +1,40 @@ + +
+

+ {$oSourceComment->getNickName()} + {$oSourceComment->getNickName()} +

+ {$oSourceComment->getContent(false)} +
+ + diff --git a/modules/board/skins/xedition/delete_comment_form.html b/modules/board/skins/xedition/delete_comment_form.html new file mode 100644 index 000000000..5e008d770 --- /dev/null +++ b/modules/board/skins/xedition/delete_comment_form.html @@ -0,0 +1,20 @@ + +
+

+ {$oComment->getNickName()} + {$oComment->getNickName()} +

+ {$oComment->getContent(false)} +
+
+ + + + +

{$lang->cmd_comment_do} {$lang->confirm_delete}

+
+ + +
+
+ \ No newline at end of file diff --git a/modules/board/skins/xedition/delete_form.html b/modules/board/skins/xedition/delete_form.html new file mode 100644 index 000000000..aeac844e1 --- /dev/null +++ b/modules/board/skins/xedition/delete_form.html @@ -0,0 +1,18 @@ + +
+

{$oDocument->getTitle()}

+

+ {$oDocument->getNickName()} +

+
+
+ + + +

{$lang->cmd_document_do} {$lang->confirm_delete}

+
+ + +
+
+ \ No newline at end of file diff --git a/modules/board/skins/xedition/delete_trackback_form.html b/modules/board/skins/xedition/delete_trackback_form.html new file mode 100644 index 000000000..26b4cce56 --- /dev/null +++ b/modules/board/skins/xedition/delete_trackback_form.html @@ -0,0 +1,13 @@ + +
+ + + + +

{$lang->confirm_delete}

+
+ + +
+
+ \ No newline at end of file diff --git a/modules/board/skins/xedition/icoIndent.gif b/modules/board/skins/xedition/icoIndent.gif new file mode 100644 index 0000000000000000000000000000000000000000..e712357156fcdd14d652be92557d8ac4ba1c5f5b GIT binary patch literal 66 zcmZ?wbhEHbVM literal 0 HcmV?d00001 diff --git a/modules/board/skins/xedition/icoSet.gif b/modules/board/skins/xedition/icoSet.gif new file mode 100644 index 0000000000000000000000000000000000000000..a71c8f6da75d351eab9bcf47f2d4aab377f50ccd GIT binary patch literal 2361 zcmV-93C8wENk%w1VIBa60p@=IC@L&NWulkm=!e+m?d|QCmzPpgmHqww^7HdlbF68l zx@u*p$h+pFq@;+5h*G!irg~$P%0QLN zySuzIPmt{B_?d*(TY9lbm;bD+tch{ZqlV-^g#WSZ?#Rg0b5_UK*yL%;-oCQk+}zxv z=gm2r;A_aOe>e}`uldz;zN!9hi=cq!^_>`=}n&LHGZ?r#O8cq z%6@)+_4W5}MahQA+|o$!ArWspjie z!rR{0@=ir(K99nLYtD&^z{T2b5}X|l3}UevE#Pf{K!gU1ok}mXDWaU6Y=FU1*x4XlR|El3fdV z3#+ZH3#X`y3relFwXL$Vhg}B0z`?t`pa!F(2E)9*$C}B+h|JA?&(Ma_&DGX~+=JHN z;Njxq* zq_b@QcgW6PdRn;nkZxN(rf@d1Kw-yd{~!|}Vg@NmQ- zX!3m=T=L=&ntyw4{2Pkv*ikHxZViQ(E#Sd>K~epW^hqeft0xcq_<2R?w`c;7A~&Mj zsN$>Nf!c>Nv1;4I$lHy(ivN|GIRl4MxhhaiS1 z;)qynXkvuWRJfmd7pA!4iYW4;-y`7BNMCp1*=VDJF1|Qmk3Qa*;&(x|nBsLrj+fp4 zI2FcNj(1Kz8Re5CR%zvxSZ1lES07M70XiRu;oB4De9>DEBalgsnOiJ?!wL(m`9Ygs zd@+WcblQpM0(IUw4h2gXz^9(%e6U0hV-QNt7(ICD=Qt6u!A2f*XcU7T1R(GY0vM>F z!KWIiF#!u0WV$H<1lXY}rl>-s>6Wm@D(kGYUI_#RE+FCp1we!YM08K&`iBcoJOM$k z)_Cwi86PweEU_bu;KK(VB)i23AAFGJ6J?B0#&^|1O8Y3yr+?x=ZfH_*!!S3_zsd#uE%=#K047^pGhG2k>$L5UBRRzyv%`utE+P#6SSe zHV*^?%0Re^01!aXJP<{bB+nEQ-(cWC4jiQ5fd?sYkb?s;faAakaL7RePH=(-2@4k@+J51nH4HyX)KBWdbObi+aK!6=w$3hk|PIEAfp$upEha>a> z3^>f84smD#JrJW0Oo)OIhe$*rGQkAI$if>;z{Dmxk%@1}LJ~7TMFkW=0aVOl7Ny7w z0c5cVJSc(|wI~2$3?PdF3z%~T=uD?MFEE1&5Q7TqoB;`j zu!JQHfdu6=r#pE;1a{7V0nLB_Ixj#3Vh~{lRvH_083Z8+6#(clR#1VX5)~CjMJg4X;DRMQf&oeSowg}vNrXsyr2OQ)Ed^hX0-xDfa@$)K!d*e^{;;gm^KGX*utg*2vA6X zVi(I;#X`YjsDOeTpg`HmT9&etB}Ns(%RAiLlVz$3uh-Qk8eyW`Dnc~Q}U(suR{pIz@KEYJqq{)PD5p#w@F1_G2|fdU)&zy(&qs|?HF20Qo@FtCG`4kk?D9a#9ncQ^tu>M)HEc=*F1 z*a0zcdkheNSj4;_@hD8};VO)H8aIfsjBns#UZeoVGmdeMXK~|Zl;FoeE)1W0wa literal 0 HcmV?d00001 diff --git a/modules/board/skins/xedition/ico_default_360.png.jpeg b/modules/board/skins/xedition/ico_default_360.png.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..75fceccac0008b239d80024e86a3bc7b07c9948c GIT binary patch literal 2013 zcmbVM2~ZPf6yD8}kf5OPL`7T!=pg3UoFozu5`xhp$fXEWLb6DT$%aj05*%9?p;8K+ za)}OAImL>CHx39oj@oIfwpA2Q#@q3Lwy5YRl5WCbopJ0;-|X!E@89ox*ZVWqE&!;&d$B(Q=yJ0<(*}Tm3$Yyy0QNf&mSHj(By6_c$Wm#rG?b;rbZo22 zz(!acHV_nIHK^2?s0mI(*J|}r#-Hsc7_e3&WvmoLav}{fG()>28%JZam&d8IGu2`Z zBP19OvP!HvgAO&RV5@GO-YBt38BXI8V(r*wGhipglqqF|I=sTGBBNm$hNG~6#bc^D z2m%X*EQBu*3Xz2{mxFNG9O4l&5xztqlyF7xh%g9mxF%f^BUg<0A~Y#uBq@ufrtY?3mFNQYC<86qRc z41cs*I-MggC)#L=LEne*QM576WJ&(B;s;I`7)tGfP^Cm5+(>l!i7kfSg26QiTaM(_!yTT$l>x8 zGJ#yo;Uh>mKa3~h$pk!(KrG_R_+gw;u2OF_sq|`e)UTHCJHq9Ek}HwnsLF)laTvC4 zv;(3uFcW6Xzznb~R=`5wm0G<9vlt!6Gn}m)#kK2EjRMDXu(Q4r?MM6z0{<)TVXo%? z)Qn98!*(>sznW!qi|9bda;)_UWo&p*JuxvjF&g$hz{A<_faWAIf}s5dkOz>)1R_?D z3-N|r$Sw{cQ^-!CP+VQ9uC5ds&CQKQ8~>qz5CoB3$TSLt=01)#&V7OhArmGzK_j2> z!`g?uG0lDwpi==Rz=S|LK%#>X9kibY48%PFf#CZKgt$#8u4I=Fww!+_0w6?!D3B}3 zbr=m23DC*FB+6VQbcHK*@|3BntXu{+Y=ckt@w0b4h#*`P=mu67Fh{pD~u1cy-*)_9}wR2-vzHQnn zUUK-C-PEjlXmCOFz-?)F=jC_a=Pm6+Z=MHNy2*cIKeh!$fk(t;qN@0SEfqB<>H8;x z9BR*1W)^F9cnNEn>dduX_AmJ>l3V=GZax2(tkBbAWwNI?<>bqMNM%9 zC7B1C8+1#cyIU%9TFkGaA`h6kZw9|EXRJx6%5Mvu6Ht%^2Z9ePNx9zlegY2;G^B1h zC0O26T6(7AzJN5V>8e+(rma6Wh~8iLHfkZbCh^vcjwkP8twlyfTgtAbMYf|)pRNum zFCu4xoS6}ke8u6*t*>$Zre%e_dt_MiP+M(Kcy+$t(iHdjLureB`x^|@zNfoxxVJ1x zN-;N@A$)d8#he(QX{Wq=<7PfJf&lY~~ja7=LVRm99H>mcO3&b4?@Jw=X7&ObWe|b3auWT=?R0 zbKMh*`ewq>XTtQddC!u>34JK4%WLYr5bE1csnX_znkVlYU~P}s5cZT#{vieA-F$v zp(Nn*CpySDow+FRz}<=S7UNCDbN%0@=xf{0Q)@SqIPOXFsvp0~T0j3;cNNz7WZ4Gt zW!{R1K5==KcSEAK%_ulmDkjg*g2jUt%V6>Ad#9s*%&shXZW0HvTh5{T@Yid)cD+fZ zZ>)>y2z@lPXXnFIT3eZ@FJK`1(aRZ$&#{)GJy(u-ut=#BXCF= +
+ + + + +

{$lang->msg_input_password}

+ + +
+ diff --git a/modules/board/skins/xedition/list.html b/modules/board/skins/xedition/list.html new file mode 100644 index 000000000..4834d795c --- /dev/null +++ b/modules/board/skins/xedition/list.html @@ -0,0 +1,160 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{$lang->no}{$lang->title}{$lang->writer}{$lang->user_id}{$lang->user_name}{$lang->date}{$lang->last_update}{$lang->last_post}{$lang->readed_count}{$lang->voted_count}{$lang->blamed_count}{$val->name}
+

{$lang->no_documents}

+
+ » + {$lang->notice} + + + {$document->getTitle()} + + + [{$document->getCommentCount()}] + + + [{$document->getTrackbackCount()}] + + {$document->getNickName()}{$document->getUserID()}{$document->getUserName()}{$document->getRegdate('Y.m.d')}{zdate($document->get('last_update'),'Y.m.d')} + + + {zdate($document->get('last_update'),'Y.m.d')} + + + by + {$document->getLastUpdater()} + + +   + {$document->get('readed_count')>0?$document->get('readed_count'):'0'}{$document->get('voted_count')!=0?$document->get('voted_count'):'0'}{$document->get('blamed_count')!=0?$document->get('blamed_count'):'0'}{$document->getExtraValueHTML($val->idx)} 
+ » + {$no} + + {$document->getTitle()} + [{$document->getCommentCount()}] + [{$document->getTrackbackCount()}] + {$document->printExtraImages(60*60*$module_info->duration_new)} + {$document->getNickName()}{$document->getUserID()}{$document->getUserName()}{$document->getRegdate('Y.m.d')}{zdate($document->get('last_update'),'Y.m.d')} + + + {zdate($document->get('last_update'),'Y.m.d')} + + + by + {$document->getLastUpdater()} + + +   + {$document->get('readed_count')>0?$document->get('readed_count'):'0'}{$document->get('voted_count')!=0?$document->get('voted_count'):'0'}{$document->get('blamed_count')!=0?$document->get('blamed_count'):'0'}{$document->getExtraValueHTML($val->idx)} 
+
+ + diff --git a/modules/board/skins/xedition/message.html b/modules/board/skins/xedition/message.html new file mode 100644 index 000000000..74907d05c --- /dev/null +++ b/modules/board/skins/xedition/message.html @@ -0,0 +1,9 @@ + +
+

{$message}

+
+ {$lang->cmd_login} + +
+
+ diff --git a/modules/board/skins/xedition/profile.gif b/modules/board/skins/xedition/profile.gif new file mode 100644 index 0000000000000000000000000000000000000000..aac4921668c56b66f5dffb5e87beb1f2cc2371db GIT binary patch literal 1390 zcmb`E|2xwO0LMQwYM8J#lj_PW-$HIDqNlqxDdEx7%Dzdy)VaH^qo;cw=eg&Ow7HPS zvKeExF{UBID&N~MU#BQvHWnsinXc_2-zs(8 zmX_YWeXG;y78e)aym_;*urNPAKRY|C)oN#EW~Qg7r>3S}y?Uk5XeK8oCnhG;YPCwG z8XFrM9UUDR8F}&I#qjX((9qEH=g*%#dp0;Ys8lKk1_t{3`}_L(dV70&dV0FMyA=vW zS65eOXJd~$z)HTK5cJrZ)-@Gl$Vzag~GD3GJ!zA=ks|yUP(y_m&+|KE-or6 z;&3>Hg@pwL1#C7uKR=(vVlkP_yu3UHgYj>o|5E+`aNIBj0YEI^@kRaR6JY0dD*1N$ zZ3>A@y+k5XC^R~WPL3kyP^fnbIUG_nkwhxs7t^z;jEo|2p&*hFtt8-Z@`;b5oGY1gzSLQ?~L%ImD=oXw^6fJPDdmot~~L zWw1ib^~?GtHR!!ToG(dCDoy1A*CEy@sQ27-h3BQ#-U$>a8n8HgLnVuG>d6Ae(Z>R$ z^Ld?tS$`Z%K=MyAffl}^;_`()Z(SRFk+Y|%aS~4F6{8|Z)NL?nUH#`WPItak2S`C^&$h`-gIkh3LjkFS zM`uS(+=ON4_QcyB6n-4d+!0ezQ zNsvS6BZ}N_I0$6?9$*La4kqmeqPjd3kyor%9(e$j0|9&BWr`hY=nxoHzYj6^opV&I znYljxL0|+)pJ;RZP?&9`>i`xxZoBF>2Ow&_&j*23@%~uT(>9NSkPZR2XwaiqI{}!e z@pcyMPh%j~(nKfjBVL9m6bO9S%-B&IkBDkyCh`6$Q_KD6wB5P;jHBsfqM;w*m+;!z z*I896pwnd*bhr!D#mg$6VC=8!Az)|_ozzKYf?J>e83og#oNX*z=dM9;1|M6mD56|W z6Q|_zE?35f?ixU45DX^)lAYw9nS)(fjhA~P0sx;Nq}_d@#&!1&G+!44nxtE$nuJVT z)6!s|_sO|C!V(29>n>&A%6=kAN$PirK9(f+y%8W7K>3JeyFdqe%?>-qeRWfxto1Nv zB3P+1Ys(ua=qE;6pT})owLS%wk=2tWT)>WGPN* H0C4;tQS^lX literal 0 HcmV?d00001 diff --git a/modules/board/skins/xedition/skin.xml b/modules/board/skins/xedition/skin.xml new file mode 100644 index 000000000..721c9fbfa --- /dev/null +++ b/modules/board/skins/xedition/skin.xml @@ -0,0 +1,16 @@ + + + XE Edition + XE Edition + XE 에디션 테마 게시판. + 1.0 + 2015-04-07 + + NHN + NHN + + LGPL v2 + + + + diff --git a/modules/board/skins/xedition/tag_list.html b/modules/board/skins/xedition/tag_list.html new file mode 100644 index 000000000..27ee18faf --- /dev/null +++ b/modules/board/skins/xedition/tag_list.html @@ -0,0 +1,27 @@ + +
+ + + {@ $tag_class = "rank1" } + + {@ $tag_class = "rank2" } + + {@ $tag_class = "rank3" } + + {@ $tag_class = "rank4" } + + {@ $tag_class = "rank5" } + + + + {htmlspecialchars($val->tag)} + + {htmlspecialchars($val->tag)} + + + +
+ + diff --git a/modules/board/skins/xedition/thumbnail.png b/modules/board/skins/xedition/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..f1d97f10721bbcf54087d0e18a35b475285efc73 GIT binary patch literal 8638 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 QoB#j-07*qoM6N<$g0;H2Jpcdz literal 0 HcmV?d00001 diff --git a/modules/board/skins/xedition/write_form.html b/modules/board/skins/xedition/write_form.html new file mode 100644 index 000000000..e9a197a07 --- /dev/null +++ b/modules/board/skins/xedition/write_form.html @@ -0,0 +1,80 @@ + +
+ + + +
+ + + + + +
+
+ + + + + + +
* : {$lang->is_required}
* {$val->name}{$val->getFormHTML()}
+
+
+ {$oDocument->getEditor()} +
+ +
+ From cc572122b24fd97bfee3317b20773c55c0a7b763 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Mon, 6 Apr 2015 20:49:43 +0900 Subject: [PATCH 149/265] =?UTF-8?q?autoload=20=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=EB=8B=A8=EC=88=9C=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.inc.php | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/config/config.inc.php b/config/config.inc.php index fb9c4b508..420dbabc9 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -294,7 +294,7 @@ if(!defined('__XE_LOADED_CLASS__')) if(__DEBUG__) define('__ClassLoadStartTime__', getMicroTime()); - $__xe_autoload_file_map = array( + $__xe_autoload_file_map = array_change_key_case(array( 'CacheHandler' => 'classes/cache/CacheHandler.class.php', 'Context' => 'classes/context/Context.class.php', 'DB' => 'classes/db/DB.class.php', @@ -323,22 +323,16 @@ if(!defined('__XE_LOADED_CLASS__')) 'XmlParser' => 'classes/xml/XmlParser.class.php', 'XmlLangParser' => 'classes/xml/XmlLangParser.class.php', 'XmlQueryParser' => 'classes/xml/XmlQueryParser.class.php', - ); + ), CASE_LOWER); function __xe_autoload($class_name) { - static $file_map = null; - if($file_map === null) - { - $file_map = array_change_key_case($GLOBALS['__xe_autoload_file_map'], CASE_LOWER); - } $class_name = strtolower($class_name); - if(isset($file_map[$class_name])) + if(isset($GLOBALS['__xe_autoload_file_map'][$class_name])) { - require $file_map[$class_name]; + require _XE_PATH_ . $GLOBALS['__xe_autoload_file_map'][$class_name]; } } - __xe_autoload('Context'); spl_autoload_register('__xe_autoload'); if(__DEBUG__) From d0753e746bd1d2bfd4ea113ea2edf921d37d7b61 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Mon, 6 Apr 2015 21:18:39 +0900 Subject: [PATCH 150/265] =?UTF-8?q?=EB=AA=A8=EB=93=88=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EB=A1=9C=EB=94=A9=EC=97=90=EC=84=9C=20autoload?= =?UTF-8?q?=EB=A5=BC=20=EC=82=AC=EC=9A=A9=ED=95=A0=20=EC=88=98=20=EC=9E=88?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/module/ModuleHandler.class.php | 25 ++++++------------------- config/config.inc.php | 8 ++++++++ 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php index 075afb838..070198be8 100644 --- a/classes/module/ModuleHandler.class.php +++ b/classes/module/ModuleHandler.class.php @@ -1043,31 +1043,18 @@ class ModuleHandler extends Handler ModuleHandler::_getModuleFilePath($module, $type, $kind, $class_path, $high_class_file, $class_file, $instance_name); } - // Get base class name and load the file contains it - if(!class_exists($module, false)) + // Check if the base class and instance class exist + if(!class_exists($module, true)) { - $high_class_file = sprintf('%s%s%s.class.php', _XE_PATH_, $class_path, $module); - if(!file_exists($high_class_file)) - { - return NULL; - } - require_once($high_class_file); + return NULL; } - - // Get the name of the class file - if(!is_readable($class_file)) + if(!class_exists($instance_name, true)) { return NULL; } - // Create an instance with eval function - require_once($class_file); - if(!class_exists($instance_name, false)) - { - return NULL; - } - $tmp_fn = create_function('', "return new {$instance_name}();"); - $oModule = $tmp_fn(); + // Create an instance + $oModule = new $instance_name(); if(!is_object($oModule)) { return NULL; diff --git a/config/config.inc.php b/config/config.inc.php index 420dbabc9..d1986ba14 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -332,6 +332,14 @@ if(!defined('__XE_LOADED_CLASS__')) { require _XE_PATH_ . $GLOBALS['__xe_autoload_file_map'][$class_name]; } + elseif(preg_match('/^([a-z0-9_]+?)(admin)?(view|controller|model|api|wap|mobile)?$/i', $class_name, $matches)) + { + $candidate_filename = 'modules/' . $matches[1] . '/' . $matches[1] . ($matches[2] ? '.admin' : '') . ($matches[3] ? ('.' . $matches[3]) : '.class') . '.php'; + if(file_exists(_XE_PATH_ . $candidate_filename)) + { + require _XE_PATH_ . $candidate_filename; + } + } } spl_autoload_register('__xe_autoload'); From f4f15e4a394a3febf2f76e02c53e1a79f1f61d3a Mon Sep 17 00:00:00 2001 From: UPGLE Date: Tue, 7 Apr 2015 09:54:15 +0900 Subject: [PATCH 151/265] =?UTF-8?q?xeedition=20board=20skin=20=EC=97=90?= =?UTF-8?q?=EC=84=9C=20xeicon=20common=20=ED=8C=8C=EC=9D=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B6=88=EB=9F=AC=EC=98=A4=EB=8F=84=EB=A1=9D=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/board/skins/xedition/_header.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/board/skins/xedition/_header.html b/modules/board/skins/xedition/_header.html index 16d86ec75..8722ffa4a 100644 --- a/modules/board/skins/xedition/_header.html +++ b/modules/board/skins/xedition/_header.html @@ -1,6 +1,6 @@ - + {@ $order_type = "asc"; } From af1d1fcb2d4122bcf535e56eb2ad5c11b35d29bb Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Tue, 7 Apr 2015 10:13:34 +0900 Subject: [PATCH 152/265] =?UTF-8?q?=EB=8B=A4=EB=A5=B8=20=EB=AA=A8=EB=93=A0?= =?UTF-8?q?=20=ED=81=B4=EB=9E=98=EC=8A=A4=EC=97=90=20autoload=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/db/DB.class.php | 30 ---------- classes/display/DisplayHandler.class.php | 5 -- classes/xml/XmlQueryParser.class.php | 25 --------- config/config.inc.php | 70 ++++++++++++++++++++++-- 4 files changed, 66 insertions(+), 64 deletions(-) diff --git a/classes/db/DB.class.php b/classes/db/DB.class.php index af6f2f01d..06b6d17bd 100644 --- a/classes/db/DB.class.php +++ b/classes/db/DB.class.php @@ -4,35 +4,6 @@ if(!defined('__XE_LOADED_DB_CLASS__')) { define('__XE_LOADED_DB_CLASS__', 1); - - require(_XE_PATH_ . 'classes/xml/xmlquery/DBParser.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/QueryParser.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/argument/Argument.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/argument/SortArgument.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/argument/ConditionArgument.class.php'); - - require(_XE_PATH_ . 'classes/db/queryparts/expression/Expression.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/expression/SelectExpression.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/expression/InsertExpression.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/expression/UpdateExpression.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/expression/UpdateExpressionWithoutArgument.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/expression/ClickCountExpression.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/table/Table.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/table/JoinTable.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/table/CubridTableWithHint.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/table/MysqlTableWithHint.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/table/MssqlTableWithHint.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/table/IndexHint.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/condition/ConditionGroup.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/condition/Condition.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/condition/ConditionWithArgument.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/condition/ConditionWithoutArgument.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/condition/ConditionSubquery.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/expression/StarExpression.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/order/OrderByColumn.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/limit/Limit.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/Query.class.php'); - require(_XE_PATH_ . 'classes/db/queryparts/Subquery.class.php'); } /** @@ -627,7 +598,6 @@ class DB // if there is no cache file or is not new, find original xml query file and parse it if($cache_time < filemtime($xml_file) || $cache_time < filemtime(_XE_PATH_ . 'classes/db/DB.class.php') || $cache_time < filemtime(_XE_PATH_ . 'classes/xml/XmlQueryParser.class.php')) { - require_once(_XE_PATH_ . 'classes/xml/XmlQueryParser.class.php'); $oParser = new XmlQueryParser(); $oParser->parse($query_id, $xml_file, $cache_file); } diff --git a/classes/display/DisplayHandler.class.php b/classes/display/DisplayHandler.class.php index e4bca38da..deb8d8326 100644 --- a/classes/display/DisplayHandler.class.php +++ b/classes/display/DisplayHandler.class.php @@ -39,12 +39,10 @@ class DisplayHandler extends Handler // Extract contents to display by the request method if(Context::get('xeVirtualRequestMethod') == 'xml') { - require_once(_XE_PATH_ . "classes/display/VirtualXMLDisplayHandler.php"); $handler = new VirtualXMLDisplayHandler(); } else if(Context::getRequestMethod() == 'XMLRPC') { - require_once(_XE_PATH_ . "classes/display/XMLDisplayHandler.php"); $handler = new XMLDisplayHandler(); if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) { @@ -53,17 +51,14 @@ class DisplayHandler extends Handler } else if(Context::getRequestMethod() == 'JSON') { - require_once(_XE_PATH_ . "classes/display/JSONDisplayHandler.php"); $handler = new JSONDisplayHandler(); } else if(Context::getRequestMethod() == 'JS_CALLBACK') { - require_once(_XE_PATH_ . "classes/display/JSCallbackDisplayHandler.php"); $handler = new JSCallbackDisplayHandler(); } else { - require_once(_XE_PATH_ . "classes/display/HTMLDisplayHandler.php"); $handler = new HTMLDisplayHandler(); } diff --git a/classes/xml/XmlQueryParser.class.php b/classes/xml/XmlQueryParser.class.php index a804376bd..e86c00c8f 100644 --- a/classes/xml/XmlQueryParser.class.php +++ b/classes/xml/XmlQueryParser.class.php @@ -7,31 +7,6 @@ if(!defined('__XE_LOADED_XML_CLASS__')) { define('__XE_LOADED_XML_CLASS__', 1); - - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/query/QueryTag.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/table/TableTag.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/table/HintTableTag.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/table/TablesTag.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/column/ColumnTag.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/column/SelectColumnTag.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/column/InsertColumnTag.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/column/InsertColumnTagWithoutArgument.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/column/SelectColumnsTag.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/column/InsertColumnsTag.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/column/UpdateColumnsTag.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/condition/ConditionTag.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/condition/ConditionsTag.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/condition/JoinConditionsTag.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/condition/ConditionGroupTag.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/group/GroupsTag.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/navigation/NavigationTag.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/navigation/IndexTag.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/tags/navigation/LimitTag.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/queryargument/QueryArgument.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/queryargument/SortQueryArgument.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/queryargument/validator/QueryArgumentValidator.class.php'); - require(_XE_PATH_ . 'classes/xml/xmlquery/queryargument/DefaultValue.class.php'); } /** diff --git a/config/config.inc.php b/config/config.inc.php index d1986ba14..99f254b25 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -298,31 +298,93 @@ if(!defined('__XE_LOADED_CLASS__')) 'CacheHandler' => 'classes/cache/CacheHandler.class.php', 'Context' => 'classes/context/Context.class.php', 'DB' => 'classes/db/DB.class.php', + 'Query' => 'classes/db/queryparts/Query.class.php', + 'Subquery' => 'classes/db/queryparts/Subquery.class.php', + 'Condition' => 'classes/db/queryparts/condition/Condition.class.php', + 'ConditionGroup' => 'classes/db/queryparts/condition/ConditionGroup.class.php', + 'ConditionSubquery' => 'classes/db/queryparts/condition/ConditionSubquery.class.php', + 'ConditionWithArgument' => 'classes/db/queryparts/condition/ConditionWithArgument.class.php', + 'ConditionWithoutArgument' => 'classes/db/queryparts/condition/ConditionWithoutArgument.class.php', + 'ClickCountExpression' => 'classes/db/queryparts/expression/ClickCountExpression.class.php', + 'DeleteExpression' => 'classes/db/queryparts/expression/DeleteExpression.class.php', + 'Expression' => 'classes/db/queryparts/expression/Expression.class.php', + 'InsertExpression' => 'classes/db/queryparts/expression/InsertExpression.class.php', + 'SelectExpression' => 'classes/db/queryparts/expression/SelectExpression.class.php', + 'StarExpression' => 'classes/db/queryparts/expression/StarExpression.class.php', + 'UpdateExpression' => 'classes/db/queryparts/expression/UpdateExpression.class.php', + 'UpdateExpressionWithoutArgument' => 'classes/db/queryparts/expression/UpdateExpressionWithoutArgument.class.php', + 'Limit' => 'classes/db/queryparts/limit/Limit.class.php', + 'OrderByColumn' => 'classes/db/queryparts/order/OrderByColumn.class.php', + 'CubridTableWithHint' => 'classes/db/queryparts/table/CubridTableWithHint.class.php', + 'IndexHint' => 'classes/db/queryparts/table/IndexHint.class.php', + 'JoinTable' => 'classes/db/queryparts/table/JoinTable.class.php', + 'MssqlTableWithHint' => 'classes/db/queryparts/table/MssqlTableWithHint.class.php', + 'MysqlTableWithHint' => 'classes/db/queryparts/table/MysqlTableWithHint.class.php', + 'Table' => 'classes/db/queryparts/table/Table.class.php', 'DisplayHandler' => 'classes/display/DisplayHandler.class.php', + 'HTMLDisplayHandler' => 'classes/display/HTMLDisplayHandler.php', + 'JSCallbackDisplayHandler' => 'classes/display/JSCallbackDisplayHandler.php', + 'JSONDisplayHandler' => 'classes/display/JSONDisplayHandler.php', + 'VirtualXMLDisplayHandler' => 'classes/display/VirtualXMLDisplayHandler.php', + 'XMLDisplayHandler' => 'classes/display/XMLDisplayHandler.php', 'EditorHandler' => 'classes/editor/EditorHandler.class.php', 'ExtraVar' => 'classes/extravar/Extravar.class.php', 'FileHandler' => 'classes/file/FileHandler.class.php', 'FileObject' => 'classes/file/FileObject.class.php', 'FrontEndFileHandler' => 'classes/frontendfile/FrontEndFileHandler.class.php', 'Handler' => 'classes/handler/Handler.class.php', + 'XEHttpRequest' => 'classes/httprequest/XEHttpRequest.class.php', 'Mail' => 'classes/mail/Mail.class.php', 'Mobile' => 'classes/mobile/Mobile.class.php', 'ModuleHandler' => 'classes/module/ModuleHandler.class.php', 'ModuleObject' => 'classes/module/ModuleObject.class.php', 'Object' => 'classes/object/Object.class.php', 'PageHandler' => 'classes/page/PageHandler.class.php', - 'Password' => 'classes/security/Password.class.php', - 'Security' => 'classes/security/Security.class.php', + 'EmbedFilter' => 'classes/security/EmbedFilter.class.php', 'IpFilter' => 'classes/security/IpFilter.class.php', + 'Password' => 'classes/security/Password.class.php', + 'Purifier' => 'classes/security/Purifier.class.php', + 'Security' => 'classes/security/Security.class.php', + 'UploadFileFilter' => 'classes/security/UploadFileFilter.class.php', 'TemplateHandler' => 'classes/template/TemplateHandler.class.php', 'Validator' => 'classes/validator/Validator.class.php', 'WidgetHandler' => 'classes/widget/WidgetHandler.class.php', - 'XEHttpRequest' => 'classes/httprequest/XEHttpRequest.class.php', + 'GeneralXmlParser' => 'classes/widget/GeneralXmlParser.class.php', + 'Xml_Node_' => 'classes/xml/XmlParser.class.php', 'XmlGenerator' => 'classes/xml/XmlGenerator.class.php', 'XmlJsFilter' => 'classes/xml/XmlJsFilter.class.php', - 'XmlParser' => 'classes/xml/XmlParser.class.php', 'XmlLangParser' => 'classes/xml/XmlLangParser.class.php', + 'XmlParser' => 'classes/xml/XmlParser.class.php', 'XmlQueryParser' => 'classes/xml/XmlQueryParser.class.php', + 'DBParser' => 'classes/xml/xmlquery/DBParser.class.php', + 'QueryParser' => 'classes/xml/xmlquery/QueryParser.class.php', + 'Argument' => 'classes/xml/xmlquery/argument/Argument.class.php', + 'ConditionArgument' => 'classes/xml/xmlquery/argument/ConditionArgument.class.php', + 'SortArgument' => 'classes/xml/xmlquery/argument/SortArgument.class.php', + 'DefaultValue' => 'classes/xml/xmlquery/queryargument/DefaultValue.class.php', + 'QueryArgument' => 'classes/xml/xmlquery/queryargument/QueryArgument.class.php', + 'SortQueryArgument' => 'classes/xml/xmlquery/queryargument/SortQueryArgument.class.php', + 'QueryArgumentValidator' => 'classes/xml/xmlquery/queryargument/validator/QueryArgumentValidator.class.php', + 'ColumnTag' => 'classes/xml/xmlquery/tags/column/ColumnTag.class.php', + 'InsertColumnTag' => 'classes/xml/xmlquery/tags/column/InsertColumnTag.class.php', + 'InsertColumnTagWithoutArgument' => 'classes/xml/xmlquery/tags/column/InsertColumnTagWithoutArgument.class.php', + 'InsertColumnsTag' => 'classes/xml/xmlquery/tags/column/InsertColumnsTag.class.php', + 'SelectColumnTag' => 'classes/xml/xmlquery/tags/column/SelectColumnTag.class.php', + 'SelectColumnsTag' => 'classes/xml/xmlquery/tags/column/SelectColumnsTag.class.php', + 'UpdateColumnTag' => 'classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php', + 'UpdateColumnsTag' => 'classes/xml/xmlquery/tags/column/UpdateColumnsTag.class.php', + 'ConditionGroupTag' => 'classes/xml/xmlquery/tags/condition/ConditionGroupTag.class.php', + 'ConditionTag' => 'classes/xml/xmlquery/tags/condition/ConditionTag.class.php', + 'ConditionsTag' => 'classes/xml/xmlquery/tags/condition/ConditionsTag.class.php', + 'JoinConditionsTag' => 'classes/xml/xmlquery/tags/condition/JoinConditionsTag.class.php', + 'GroupsTag' => 'classes/xml/xmlquery/tags/group/GroupsTag.class.php', + 'IndexTag' => 'classes/xml/xmlquery/tags/navigation/IndexTag.class.php', + 'LimitTag' => 'classes/xml/xmlquery/tags/navigation/LimitTag.class.php', + 'NavigationTag' => 'classes/xml/xmlquery/tags/navigation/NavigationTag.class.php', + 'QueryTag' => 'classes/xml/xmlquery/tags/query/QueryTag.class.php', + 'HintTableTag' => 'classes/xml/xmlquery/tags/table/HintTableTag.class.php', + 'TableTag' => 'classes/xml/xmlquery/tags/table/TableTag.class.php', + 'TablesTag' => 'classes/xml/xmlquery/tags/table/TablesTag.class.php', ), CASE_LOWER); function __xe_autoload($class_name) From a4bff3957da8d635de067d117d111f7685466f7d Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Tue, 7 Apr 2015 12:56:49 +0900 Subject: [PATCH 153/265] =?UTF-8?q?=EC=9E=98=EB=AA=BB=EB=90=9C=20=EC=BF=BC?= =?UTF-8?q?=EB=A6=AC=20ID=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/member/queries/chkAuthMail.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/member/queries/chkAuthMail.xml b/modules/member/queries/chkAuthMail.xml index 9505632a9..34911c35f 100644 --- a/modules/member/queries/chkAuthMail.xml +++ b/modules/member/queries/chkAuthMail.xml @@ -1,4 +1,4 @@ - + From fc09d56ad2db557bf0f1a7c877a3b896afa1c7dd Mon Sep 17 00:00:00 2001 From: UPGLE Date: Tue, 7 Apr 2015 13:35:32 +0900 Subject: [PATCH 154/265] =?UTF-8?q?XE=201.8=20=ED=85=8C=EB=A7=88=20?= =?UTF-8?q?=EB=A6=AC=EB=B7=B0=202=EC=B0=A8=20=EC=88=98=EC=A0=95=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20=EA=B0=9C=EC=84=A0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layouts/xedition/css/welcome.css | 4 ++-- layouts/xedition/css/xeicon.css | 8 ++++---- layouts/xedition/demo/welcome_main.html | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/layouts/xedition/css/welcome.css b/layouts/xedition/css/welcome.css index 51ba7b002..c5c347a0b 100644 --- a/layouts/xedition/css/welcome.css +++ b/layouts/xedition/css/welcome.css @@ -13,10 +13,10 @@ /* section.xeicon */ .welcomeXE .xeicon{overflow:hidden;position:static;width:100%;margin:0;height:500px;background-image:url(../img/bg_stat.jpg);background-position:50% 0;background-attachment:fixed;background-repeat:no-repeat} -.welcomeXE .xeicon h1 {margin-top: 170px; font-size: 40px; color: #f6f6f6; text-align: center; letter-spacing: 1px; font-weight: 400; line-height: 1.2em; text-transform: uppercase; } +.welcomeXE .xeicon h1 {margin-top: 170px; font-size: 40px; color: #f6f6f6; text-align: center; letter-spacing: 3px; font-weight: 400; line-height: 1.2em; text-transform: uppercase; } .welcomeXE .xeicon h1 a {color: #FFF; } .welcomeXE .xeicon .button-area {text-align: center; } -.welcomeXE .xeicon .button-area .btn_item {font-size: 16px; } +.welcomeXE .xeicon .button-area .btn_item {font-size: 16px; letter-spacing: 2px;} /* section.guide */ .welcomeXE .guide{height:640px;padding-top:80px} diff --git a/layouts/xedition/css/xeicon.css b/layouts/xedition/css/xeicon.css index 1f5b35a51..ec8806ba4 100644 --- a/layouts/xedition/css/xeicon.css +++ b/layouts/xedition/css/xeicon.css @@ -18,14 +18,14 @@ .XEicon p a:focus{color:#cda25a;border-bottom:1px solid #cda25a} /* section .main_title */ -.XEicon .main_title h1 {margin-bottom:47px;font-size:34px;font-weight:400;color:#cda25a;text-align:center;text-transform: uppercase} +.XEicon .main_title h1 {margin-bottom: 47px;font-size: 34px;font-weight: 600;color: #cda25a;text-align: center;font-family: Raleway,'나눔바른고딕',NanumBarunGothic,ng,'맑은 고딕','Malgun Gothic','돋움',Dotum,'애플 SD 산돌고딕 Neo','Apple SD Gothic Neo',AppleGothic,Helvetica,sans-serif;text-transform: uppercase;letter-spacing: 1px;} .XEicon .main_title p {font-size:15px;line-height:28px;color:#444;text-align:center} /* section .feature */ .XEicon .feature{height:518px;padding-top:120px;} .XEicon .feature ul{padding-top:80px} .XEicon .feature li{position:relative;float:left;width:314px;min-height:140px;padding:0 16px 0 70px;margin:0 0 30px 0} -.XEicon .feature h2{padding:7px 24px 13px 0;font-size:17px;font-weight:normal;line-height:23px;color:#333} +.XEicon .feature h2{padding:7px 24px 13px 0;font-size:17px;font-weight:600;line-height:23px;color:#333} .XEicon .feature p{padding:0 24px 0 0;font-size:14px;line-height:26px;color:#888} .XEicon .feature .ico{position:absolute;top:0;left:0;width:48px;height:48px;font-size:22px;text-align:center;line-height:50px;color:#555} @@ -35,7 +35,7 @@ .XEicon .get_started ul {margin-top:34px;} .XEicon .get_started li {position:relative; float:left; width:286px; height:212px; margin-right:15px; border:1px solid #e8e8e8; background:#fff; text-align:center;} .XEicon .get_started li:last-child {margin-right:0;} -.XEicon .get_started li h2 {padding:33px 0 19px; font-size:17px; font-weight: normal} +.XEicon .get_started li h2 {padding:33px 0 19px; font-size:17px; font-weight: 600} .XEicon .get_started li p {padding: 0 37px; font-size:14px; line-height: 26px; color:#888;} .XEicon .get_started li > a {position:absolute; display:block; bottom:0; width:100%; height:50px; background:#888; border-top:1px solid #e1e1e1; line-height: 50px; font-size:14px; font-weight:600; text-transform:uppercase; color:#fff; -webkit-transition: all .2s ease-in-out;-moz-transition: all .2s ease-in-out;-ms-transition: all .2s ease-in-out;-o-transition: all .2s ease-in-out;transition: all .2s ease-in-out} .XEicon .get_started li > a:hover, @@ -48,7 +48,7 @@ /* section .contribution */ .XEicon .contribution {height:442px; padding-top:93px; box-sizing:border-box; text-align:center;} .XEicon .contribution .cont {font-size:15px;line-height:26px;text-align:center; margin-top:58px; color:#888;} -.XEicon .contribution .btn_github{display:inline-block;margin:50px 0;padding:0 42px;height:52px;border:2px solid #cda25a;background-color:#fff;font-size:16px;line-height:52px;letter-spacing:1px;color:#cda25a;-webkit-transition: all .2s ease-in-out;-moz-transition: all .2s ease-in-out;-ms-transition: all .2s ease-in-out;-o-transition: all .2s ease-in-out;transition: all .2s ease-in-out} +.XEicon .contribution .btn_github{display:inline-block;margin:50px 0;padding:0 40px;height:52px;border:2px solid #cda25a;background-color:#fff;font-size:15px;line-height:52px;font-weight: 600;letter-spacing:1px;color:#cda25a;-webkit-transition: all .2s ease-in-out;-moz-transition: all .2s ease-in-out;-ms-transition: all .2s ease-in-out;-o-transition: all .2s ease-in-out;transition: all .2s ease-in-out} .XEicon .contribution .btn_github:hover, .XEicon .contribution .btn_github:active .XEicon .contribution .btn_github:focus{background-color:#cda25a;color:#fff} diff --git a/layouts/xedition/demo/welcome_main.html b/layouts/xedition/demo/welcome_main.html index e44b8f155..fdccbf744 100644 --- a/layouts/xedition/demo/welcome_main.html +++ b/layouts/xedition/demo/welcome_main.html @@ -10,8 +10,8 @@

Beautiful iconpack
XEIcon

From 57057849a19f5f1174690a02d5353eb51d02d6b0 Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 7 Apr 2015 13:38:44 +0900 Subject: [PATCH 155/265] =?UTF-8?q?#1354=20=EC=84=A4=EC=B9=98=EC=9A=A9=20?= =?UTF-8?q?=EB=8D=B0=EB=AA=A8=20=EC=BD=98=ED=85=90=EC=B8=A0=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layouts/xedition/demo/welcome_main.html | 7 ---- .../welcome_content/welcome_content_ko.html | 41 ++++--------------- .../xeicon_content/xeicon_content_ko_1.html | 8 ++++ .../xeicon_content/xeicon_content_ko_2.html | 35 ++++++++++++++++ .../xeicon_content/xeicon_content_ko_3.html | 28 +++++++++++++ .../xeicon_content/xeicon_content_ko_4.html | 5 +++ 6 files changed, 84 insertions(+), 40 deletions(-) create mode 100644 modules/install/script/xeicon_content/xeicon_content_ko_1.html create mode 100644 modules/install/script/xeicon_content/xeicon_content_ko_2.html create mode 100644 modules/install/script/xeicon_content/xeicon_content_ko_3.html create mode 100644 modules/install/script/xeicon_content/xeicon_content_ko_4.html diff --git a/layouts/xedition/demo/welcome_main.html b/layouts/xedition/demo/welcome_main.html index e44b8f155..306566cc3 100644 --- a/layouts/xedition/demo/welcome_main.html +++ b/layouts/xedition/demo/welcome_main.html @@ -1,12 +1,5 @@
-
- WELCOME TO -

WELCOME TO XPRESSENGINE

-

XpressEngine은 자유로운 웹 콘텐츠 발행을 돕는 CMS입니다.
간편한 설치와 다양한 추가 프로그램을 활용하여
자신만의 웹페이지를 쉽고 빠르게 만들 수 있습니다.

- XE 시작하기 -
-

Beautiful iconpack
XEIcon

diff --git a/modules/install/script/welcome_content/welcome_content_ko.html b/modules/install/script/welcome_content/welcome_content_ko.html index fb75c5a7d..e82bea382 100644 --- a/modules/install/script/welcome_content/welcome_content_ko.html +++ b/modules/install/script/welcome_content/welcome_content_ko.html @@ -1,34 +1,9 @@ - -
-

XE core '{$version}' 설치를 환영합니다!

-
-

사이트 제목 바꾸기

-

관리자로 로그인 한 다음 '관리 > 설정 > 일반 > 기본'에서 '사이트 제목'을 변경할 수 있습니다.

- 설정변경 + +
+
+ WELCOME TO +

WELCOME TO XPRESSENGINE

+

XpressEngine은 자유로운 웹 콘텐츠 발행을 돕는 CMS입니다.
간편한 설치와 다양한 추가 프로그램을 활용하여
자신만의 웹페이지를 쉽고 빠르게 만들 수 있습니다.

+ XE 시작하기
-
-

메뉴 구조 바꾸기

-

관리자로 로그인 한 다음 '관리 > 사이트 제작/편집 > 사이트 메뉴 편집'에서 '메뉴 구조'를 변경할 수 있습니다.

- 설정변경 -
-
-

레이아웃 디자인 바꾸기

-

관리자로 로그인 한 다음 '관리 > 사이트 제작/편집 > 사이트 디자인 설정'에서 '레이아웃 디자인'을 변경할 수 있습니다.

- 설정변경 -
-
-

초기화면 바꾸기

-

관리자로 로그인 한 다음 '관리 > 사이트 제작/편집 > 사이트 메뉴 편집'에서 '초기화면'을 바꿀 수 있습니다.

- 설정변경 -
-
-

초기화면 꾸미기

-

관리자로 로그인 한 다음 '페이지 수정' 버튼을 눌러 '초기화면'을 꾸밀 수 있습니다.

- 설정변경 -
-
-

모듈 설치하기

-

관리자로 로그인 한 다음 '관리 > 고급 > 쉬운 설치'에서 '모듈'을 설치할 수 있습니다.

- 설정변경 -
-
+
diff --git a/modules/install/script/xeicon_content/xeicon_content_ko_1.html b/modules/install/script/xeicon_content/xeicon_content_ko_1.html new file mode 100644 index 000000000..89cfe4afb --- /dev/null +++ b/modules/install/script/xeicon_content/xeicon_content_ko_1.html @@ -0,0 +1,8 @@ +
+

Beautiful iconic font & CSS toolkit

+

+ XEIcon은 웹사이트 제작에 최적화된 백터 그래픽 아이콘 툴킷입니다.
+ 한국 웹서비스 문화에 적합한 디자인과 카테고리를 고려하여 제작되었습니다.
+ XEIcon으로 아름답고 직관적인 웹페이지를 만들어보세요!
+

+
diff --git a/modules/install/script/xeicon_content/xeicon_content_ko_2.html b/modules/install/script/xeicon_content/xeicon_content_ko_2.html new file mode 100644 index 000000000..a1e0d0977 --- /dev/null +++ b/modules/install/script/xeicon_content/xeicon_content_ko_2.html @@ -0,0 +1,35 @@ +
+

FEATURE

+
    +
  • +
    사이트 제목 바꾸기
    +

    한개의 폰트, 680개의 아이콘

    +

    웹 콘텐츠의 목적에 맞는 아이콘을 다양한 구성에서 찾아볼 수 있습니다.
    라이브러리에서 필요한 아이콘을 찾아보세요!

    +
  • +
  • +
    메뉴 구조 구성하기
    +

    호환성

    +

    XEIcon은 자바스크립트 없이 구현됩니다.
    또한 다양한 브라우저에서도 동일한 뷰로 웹 페이지를 노출합니다.

    +
  • +
  • +
    레이아웃 디자인 바꾸기
    +

    최적화

    +

    XpressEngine 뿐 아니라, 다양한 프레임워크에서 동일하게 구현됩니다. 다양한 프레임워크에서 자유롭게 이용해 보세요!

    +
  • +
  • +
    초기화면 바꾸기
    +

    확장성

    +

    백터 아이콘으로 만들어진 XEIcon은 어떤 크기로도 확장이 가능하며 높은 해상도의 화면에서도 선명한 형태를 유지합니다.

    +
  • +
  • +
    기능과 디자인 추가하기
    +

    자유로운 변형

    +

    CSS를 통해 아이콘의 색상, 크기, 그림자 등을 손쉽게 변형할 수 있습니다. LESS, SASS로 추가된 기능으로 더 넓어진 활용범위를 확인하세요!

    +
  • +
  • +
    레이아웃 꾸미기
    +

    오픈소스

    +

    XEIcon은 OFL 라이선스를 따르는 오픈소스입니다.
    모든 사용자에게 무료로 제공됩니다. 라이선스를 확인해 보세요!

    +
  • +
+
diff --git a/modules/install/script/xeicon_content/xeicon_content_ko_3.html b/modules/install/script/xeicon_content/xeicon_content_ko_3.html new file mode 100644 index 000000000..83f666107 --- /dev/null +++ b/modules/install/script/xeicon_content/xeicon_content_ko_3.html @@ -0,0 +1,28 @@ +
+
+

GET STARTED

+

XEIcon 사용과 설치 방법은 매우 간단합니다. 자세한 사용방법을 XEIcon 공식사이트에서 확인해보세요!

+
    +
  • +

    최신버전 다운로드

    +

    가장 최신 버전 구성을 압축파일로
    다운로드 받아볼 수 있습니다.

    + Download +
  • +
  • +

    Git 저장소 복제

    +

    Github에서 로컬 저장소로 복제하여 사용할 수 있습니다.

    + check out +
  • +
  • +

    CDN by jsDelivr

    +

    한줄의 코드만 작성하면 다운로드 없이 XEIcon을 사용할 수 있습니다.

    + check out +
  • +
  • +

    Install with Bower

    +

    Bower 서비스에서 XEIcon 패키지를 바로 설치할 수 있습니다.

    + check out +
  • +
+
+
diff --git a/modules/install/script/xeicon_content/xeicon_content_ko_4.html b/modules/install/script/xeicon_content/xeicon_content_ko_4.html new file mode 100644 index 000000000..251e868cb --- /dev/null +++ b/modules/install/script/xeicon_content/xeicon_content_ko_4.html @@ -0,0 +1,5 @@ +
+

CONTRIBUTION

+

새로운 아이콘 요청이나 XEICON에 대한 제안이 있다면 자유롭게 이야기해주세요!
앞으로의 이야기들을 함께 만들어갈 third party 참여 또한 환영합니다.

+ github +
From 605bd4c15c7f3f918b6ca1dc204fe0bcdd6321c1 Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 7 Apr 2015 13:45:53 +0900 Subject: [PATCH 156/265] =?UTF-8?q?#1354=20=EC=84=A4=EC=B9=98=EC=9A=A9=20?= =?UTF-8?q?=EB=8D=B0=EB=AA=A8=20=EC=BD=98=ED=85=90=EC=B8=A0=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../install/script/xeicon_content/xeicon_content_ko_2.html | 6 +++--- .../install/script/xeicon_content/xeicon_content_ko_3.html | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/install/script/xeicon_content/xeicon_content_ko_2.html b/modules/install/script/xeicon_content/xeicon_content_ko_2.html index a1e0d0977..3768fb612 100644 --- a/modules/install/script/xeicon_content/xeicon_content_ko_2.html +++ b/modules/install/script/xeicon_content/xeicon_content_ko_2.html @@ -14,7 +14,7 @@
  • 레이아웃 디자인 바꾸기

    최적화

    -

    XpressEngine 뿐 아니라, 다양한 프레임워크에서 동일하게 구현됩니다. 다양한 프레임워크에서 자유롭게 이용해 보세요!

    +

    XpressEngine 뿐 아니라, 다양한 프레임워크에서 동일하게 구현됩니다. 여러 환경에서 자유롭게 이용해보세요!

  • 초기화면 바꾸기
    @@ -24,12 +24,12 @@
  • 기능과 디자인 추가하기

    자유로운 변형

    -

    CSS를 통해 아이콘의 색상, 크기, 그림자 등을 손쉽게 변형할 수 있습니다. LESS, SASS로 추가된 기능으로 더 넓어진 활용범위를 확인하세요!

    +

    CSS를 통해 아이콘의 색상, 크기 등을 손쉽게 변형할 수 있습니다. LESS SASS로 더 넓어진 활용 범위를 확인하세요!

  • 레이아웃 꾸미기

    오픈소스

    -

    XEIcon은 OFL 라이선스를 따르는 오픈소스입니다.
    모든 사용자에게 무료로 제공됩니다. 라이선스를 확인해 보세요!

    +

    XEIcon은 OFL 라이선스를 따르는 오픈소스로 모든 사용자에게 무료로 제공됩니다. 라이선스를 확인해 보세요!

  • diff --git a/modules/install/script/xeicon_content/xeicon_content_ko_3.html b/modules/install/script/xeicon_content/xeicon_content_ko_3.html index 83f666107..0ee950452 100644 --- a/modules/install/script/xeicon_content/xeicon_content_ko_3.html +++ b/modules/install/script/xeicon_content/xeicon_content_ko_3.html @@ -5,13 +5,13 @@
    • 최신버전 다운로드

      -

      가장 최신 버전 구성을 압축파일로
      다운로드 받아볼 수 있습니다.

      +

      가장 최신버전 구성을 압축파일로
      다운로드 받아볼 수 있습니다.

      Download
    • Git 저장소 복제

      Github에서 로컬 저장소로 복제하여 사용할 수 있습니다.

      - check out + check out
    • CDN by jsDelivr

      From 79b2643a087bf04b4b375839e758bcac2348979c Mon Sep 17 00:00:00 2001 From: UPGLE Date: Tue, 7 Apr 2015 14:22:05 +0900 Subject: [PATCH 157/265] =?UTF-8?q?=20#1354=20=EB=A1=9C=EA=B7=B8=EC=9D=B8?= =?UTF-8?q?=20=EC=98=81=EC=97=AD=20=EC=84=9C=EB=B8=8C=20=EB=A9=94=EB=89=B4?= =?UTF-8?q?=EA=B0=80=20=EC=95=88=EB=82=98=EC=98=A4=EB=8A=94=20=EC=9D=B4?= =?UTF-8?q?=EC=8A=88=20=EC=B2=98=EB=A6=AC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layouts/xedition/js/layout.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/layouts/xedition/js/layout.js b/layouts/xedition/js/layout.js index 0c58a03be..b363808a1 100644 --- a/layouts/xedition/js/layout.js +++ b/layouts/xedition/js/layout.js @@ -64,11 +64,10 @@ // login popup $hoverEl.on('mouseenter mouseleave focusin focusout',function(e){ e.preventDefault(); - $this = $(this); if(e.type == 'mouseenter' || e.type == 'focusin'){ - $this.addClass('on'); + $(this).addClass('on'); } else { - $this.removeClass('on'); + $(this).removeClass('on'); } }); From 7ba8f591269001b841a5616832abd4cbcf22a160 Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 7 Apr 2015 13:57:58 +0900 Subject: [PATCH 158/265] =?UTF-8?q?#1354=20LNB=20=EA=B5=90=EC=B2=B4=20?= =?UTF-8?q?=EB=B0=8F=20=EC=98=B5=EC=85=98=20=EC=88=98=EC=A0=95=20-=20LNB?= =?UTF-8?q?=20=EB=A9=94=EB=89=B4=EB=A5=BC=20=EB=B3=84=EB=8F=84=EB=A1=9C=20?= =?UTF-8?q?=EB=91=90=EC=A7=80=20=EC=95=8A=EA=B3=A0=20GNB=EB=A5=BC=20?= =?UTF-8?q?=EC=9D=B4=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20-=20=EB=A7=A4=EA=B1=B0=EC=A7=84=20=ED=98=95?= =?UTF-8?q?=ED=83=9C=20=EB=A9=94=EB=89=B4=EC=97=90=EC=84=9C=20fixed=5Fhead?= =?UTF-8?q?er=20=EC=98=B5=EC=85=98=20=EC=A0=9C=EA=B1=B0=20-=20=ED=9A=8C?= =?UTF-8?q?=EC=9B=90,=20=EC=BB=A4=EB=AE=A4=EB=8B=88=EC=BC=80=EC=9D=B4?= =?UTF-8?q?=EC=85=98=20=EB=AA=A8=EB=93=88=20=EB=93=B1=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EC=98=81=EC=97=AD=20=EA=B3=A0?= =?UTF-8?q?=EC=A0=95=ED=8F=AD=20=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layouts/xedition/conf/info.xml | 36 ++++++------ layouts/xedition/css/layout.css | 7 ++- layouts/xedition/css/welcome.css | 1 + layouts/xedition/js/layout.js | 5 +- layouts/xedition/layout.html | 96 +++++++++++++++++++++----------- 5 files changed, 89 insertions(+), 56 deletions(-) diff --git a/layouts/xedition/conf/info.xml b/layouts/xedition/conf/info.xml index 02bf8b439..6ebf86f5d 100644 --- a/layouts/xedition/conf/info.xml +++ b/layouts/xedition/conf/info.xml @@ -3,22 +3,20 @@ XEDITION XE 1.8 기본 테마 1.8 - 2015-03-26 + 2015-04-07 NAVER - 전역 네비게이션 바 + 메인 메뉴 - - 지역 네비게이션 바 - - - 서브 네비게이션 바 + + 매거진형 추가 메뉴 + asdf - 푸터 네비게이션 바 + 푸터 메뉴 @@ -48,31 +46,31 @@ 메인형 메뉴 타입 - 일반 메뉴 + 슬라이드 : 분리 + 기본형 : FIXED+SHRINKING - 일반 메뉴 + 슬라이드 : 겹침 + 투명형 : TRANSPARENT HEADER - 매거진 메뉴 + 슬라이드 : 분리 + 매거진형 : HEADER WITH BOTTOM MENU 서브형 메뉴 타입 - 일반 메뉴 + SIMPLE-TEXT HEADER + 기본형 : SIMPLE-TEXT HEADER - 일반 메뉴 + REGULAR HEADER + 기본형 : REGULAR HEADER - 겹침 메뉴 + REGULAR RARALLAX + 투명형 : REGULAR RARALLAX - 매거진 메뉴 + SIMPLE-TEXT HEADER + 매거진형 : SIMPLE-TEXT HEADER - 매거진 메뉴 + REGULAR HEADER + 매거진형 : REGULAR HEADER @@ -88,13 +86,13 @@ - 매거진형 메뉴 타입 제외 + 매거진형 메뉴에는 적용되지 않습니다 메뉴 고정 - 상단 고정 + 상단에 고정 - 고정안함 + 고정 안 함 diff --git a/layouts/xedition/css/layout.css b/layouts/xedition/css/layout.css index 518616605..1c300b3ba 100644 --- a/layouts/xedition/css/layout.css +++ b/layouts/xedition/css/layout.css @@ -38,8 +38,8 @@ a:hover,a:active,a:focus{text-decoration:none} /* Fixed Header */ /*.container.fixed_header{padding-top:80px}*/ - -.fixed_header .header_wrap.shrink{position:fixed;width:100%;z-index:1000;border-bottom:1px solid #e1e1e1;background-color:#fff;-webkit-animation:ani-header 0.5s forwards;animation:ani-header 0.5s forwards} +.fixed_header .header_wrap{position:absolute;top:0;left:0;width:100%;z-index:1000} +.fixed_header .header_wrap.shrink{position:fixed;top:0;width:100%;z-index:1000;border-bottom:1px solid #e1e1e1;background-color:#fff;-webkit-animation:ani-header 0.5s forwards;animation:ani-header 0.5s forwards} .fixed_header .header_wrap.shrink .header>h1{padding:0} .fixed_header .header_wrap.shrink .gnb>ul>li>a{line-height:60px} .fixed_header .header_wrap.shrink .header>.side{margin:19px 0 0 22px} @@ -83,10 +83,11 @@ a:hover,a:active,a:focus{text-decoration:none} /* Login */ .header>.side>ul>li{float:left;position:relative} +.header>.side>ul:after{display:block;clear:both;content:''} .header>.side>ul>li>a{display:block;width:22px;height:22px;margin-left:12px;font-size:22px;line-height:22px;color:#888;text-align:center} .header>.side>ul>li>a:hover,.header>.side>ul>li>a:focus,.header>.side>ul>li>a:active,.header>.side>ul>li.on>a{color:#444} .header>.side>ul .ly{position:relative;position:absolute;top:100%;right:0;margin-top:13px;background-color:#f9f9f9} -.header>.side>ul .ly.ly_login{overflow:hidden;margin-top:0;background:none;height:0} +.header>.side>ul .ly.ly_login{overflow:hidden;margin-top:0;background:url('../img/blank.gif') 0 0 repeat;height:0} .header>.side>ul .ly.ly_login ul{position:relative;margin-top:18px;padding:8px 0;background-color:#333;z-index:3} .header>.side>ul .on .ly.ly_login{height:auto} .header>.side>ul .ly a{display:block;min-width:120px;height:40px;padding:0 20px;line-height:40px;font-size:13px;color:#9d9d9d} diff --git a/layouts/xedition/css/welcome.css b/layouts/xedition/css/welcome.css index 51ba7b002..c622580aa 100644 --- a/layouts/xedition/css/welcome.css +++ b/layouts/xedition/css/welcome.css @@ -1,6 +1,7 @@ @charset "utf-8"; .welcomeXE{padding-top:50px;font-family:Raleway,'나눔바른고딕',NanumBarunGothic,ng,'맑은 고딕','Malgun Gothic','돋움',Dotum,'애플 SD 산돌고딕 Neo','Apple SD Gothic Neo',AppleGothic,Helvetica,sans-serif} +.content + .welcomeXE { padding-top: 0;} .welcomeXE section{width:1200px;margin:0 auto} .welcomeXE .tit{padding-bottom:32px;font-size:40px;color:#333;font-weight:700;letter-spacing:1px;line-height:50px} .welcomeXE .noti{display:block;padding:28px 0 0;margin:0 0 12px;font-size:14px;font-weight:bold;color:#cda25a;letter-spacing:1px;line-height:20px} diff --git a/layouts/xedition/js/layout.js b/layouts/xedition/js/layout.js index 0c58a03be..e1f9510af 100644 --- a/layouts/xedition/js/layout.js +++ b/layouts/xedition/js/layout.js @@ -1,6 +1,7 @@ (function($){ "use strict"; $(function(){ + var $shrinkHeaderHeight = 300; var $fixedHeader = $('.fixed_header .header_wrap'); var $gnb = $('.gnb'); var $hoverEl = $('.hover'); @@ -15,17 +16,15 @@ $(window).scroll(function() { var scroll = $(this).scrollTop(); - if(scroll >= fixedHeaderHeight ) { + if(scroll >= $shrinkHeaderHeight ) { if(!hasClass) { - $('body').css('padding-top', fixedHeaderHeight); $fixedHeader.addClass('shrink'); hasClass = true; } } else { if(hasClass) { - $('body').css('padding-top', 0); $fixedHeader.removeClass('shrink'); hasClass = false; } diff --git a/layouts/xedition/layout.html b/layouts/xedition/layout.html index 87afbde51..5d4b5772e 100644 --- a/layouts/xedition/layout.html +++ b/layouts/xedition/layout.html @@ -9,10 +9,12 @@ {@ $_body_class = array()} {@ $_container_class = array()} {@ $_visual_class = array()} + {@ $_selected_menu = null} + {@ $sub_header_title = $module_info->browser_title} {@ $_enable_slide = true} - {@ $_enable_snb = false} + {@ $_enable_unb = false} {@ $_sample_slide = false} {@ $_sample_footer = false} {@ $layout_info->use_demo = 'Y'} @@ -31,26 +33,6 @@ {@ $_sample_slide = true} {@ $_sample_footer = true} - - {@ $_container_class[] = 'fixed_header'} - - {@ $layout_info->layout_type = ($_is_indexmodule) ? 'main' : 'sub';} - - {@ $_body_class[] = $layout_info->layout_type} - {@ $_body_class[] = $layout_info->sidebar_position} - - - {@ $_visual_class[] = 'main'} - - {@ $_container_class[] = 'onepage'} - - - {@ $_container_class[] = 'magazine'} - {@ $_enable_snb = true} - - - - {@ $layout_info->content_fixed_width = (!$_is_indexmodule) ? 'Y' : 'N';} @@ -58,7 +40,49 @@ {@ $_body_class[] = 'fixed-width'} + + {@ $_fixed_width_act = array( + 'dispMemberSignUpForm', + 'dispMemberLoginForm', + 'dispMemberFindAccount', + 'dispMemberInfo', + 'dispMemberModifyPassword', + 'dispMemberModifyEmailAddress', + 'dispMemberModifyInfo', + 'dispMemberLeave', + 'dispMemberScrappedDocument', + 'dispMemberSavedDocument', + 'dispMemberOwnDocument', + 'dispCommunicationFriend', + 'dispCommunicationMessages', + 'dispNcenterliteUserConfig', + 'dispNcenterliteNotifyList', + 'dispLoginxeclientListProvider', + 'dispAjaxboardNotificationConfig' + )} + + {@ $_body_class[] = 'fixed-width'} + {@ $layout_info->sidebar_position = 'none'} + {@ $sub_header_title = 'Membership'} + + + + {@ $layout_info->layout_type = ($_is_indexmodule) ? 'main' : 'sub';} + + {@ $_body_class[] = $layout_info->layout_type} + {@ $_body_class[] = $layout_info->sidebar_position} + + {@ $_visual_class[] = 'main'} + + {@ $_container_class[] = 'onepage'} + + + {@ $_container_class[] = 'magazine'} + {@ $_enable_unb = true} + {@ $layout_info->menu_fixed = 'N'} + + {@ $_enable_slide = false} {@ $_visual_class[] = 'sub'} @@ -67,7 +91,8 @@ {@ $_container_class[] = 'magazine'} - {@ $_enable_snb = true} + {@ $_enable_unb = true} + {@ $layout_info->menu_fixed = 'N'} {@ $_container_class[] = 'onepage'} @@ -75,6 +100,14 @@ + + + {@ $_container_class[] = 'fixed_header'} + + + + + {@ $layout_info->use_demo = 'N'} @@ -208,9 +241,9 @@
    -
    +
    @@ -221,6 +254,7 @@
    @@ -305,12 +339,12 @@
    -
    From ad9ef6c42a9e4e0383b5246ed1dda8e7869882fe Mon Sep 17 00:00:00 2001 From: UPGLE Date: Tue, 7 Apr 2015 14:23:26 +0900 Subject: [PATCH 159/265] =?UTF-8?q?#1376=20XEDITION=20=EA=B2=8C=EC=8B=9C?= =?UTF-8?q?=ED=8C=90=20SNS=20=EC=98=81=EC=97=AD=20=EB=B0=8F=20=EB=94=94?= =?UTF-8?q?=EC=9E=90=EC=9D=B8=20=EC=9D=BC=EB=B6=80=20=EA=B0=9C=EC=84=A0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/board/skins/xedition/_read.html | 58 +++++++++++-------- .../board/skins/xedition/board.default.css | 46 ++++----------- modules/board/skins/xedition/board.default.js | 3 + 3 files changed, 48 insertions(+), 59 deletions(-) diff --git a/modules/board/skins/xedition/_read.html b/modules/board/skins/xedition/_read.html index 26a399a78..8a2b5d8b6 100644 --- a/modules/board/skins/xedition/_read.html +++ b/modules/board/skins/xedition/_read.html @@ -18,7 +18,7 @@ {$lang->readed_count} : {$oDocument->get('readed_count')} - {$lang->cmd_vote}:{$oDocument->get('voted_count')} + {$lang->cmd_vote}:{$oDocument->get('voted_count')}

    @@ -51,6 +51,36 @@ diff --git a/modules/board/skins/xedition/board.default.css b/modules/board/skins/xedition/board.default.css index e0498ade9..648272c24 100644 --- a/modules/board/skins/xedition/board.default.css +++ b/modules/board/skins/xedition/board.default.css @@ -78,12 +78,14 @@ text-decoration: none; color: #666; box-sizing:border-box; + -webkit-transition: all .1s ease-in-out;-moz-transition: all .1s ease-in-out;-ms-transition: all .1s ease-in-out;-o-transition: all .1s ease-in-out;transition: all .1s ease-in-out } .cTab li em { font: 11px Tahoma, Geneva, sans-serif; color: #767676; padding: 0 0 0 2px; } +.cTab li:hover a, .cTab li.on a { color: #000; border-top: 2px solid #CDA25A; @@ -118,7 +120,6 @@ float: none; line-height: none; padding: 0; - font-family: 돋움, Dotum; font-weight: normal; } .cTab li.on ul li.on_ a { @@ -561,38 +562,13 @@ margin: 0 15px 0 0; color: #555; } -.read_footer .sns { - display: inline; - margin: 0; - padding: 0; - list-style: none; - vertical-align: top; -} -.read_footer .sns li { - display: inline; - vertical-align: top; -} -.read_footer .sns a { - display: inline-block; - height: 16px; - line-height: 16px; -} -.read_footer .sns .link a { - width: 16px; - height: 0; - padding: 16px 0 0 0; - overflow: hidden; - background: url(icoSet.gif) no-repeat; -} -.read_footer .sns .twitter a { - background-position: 0 -270px; -} -.read_footer .sns .facebook a { - background-position: 0 -330px; -} -.read_footer .sns .delicious a { - background-position: 0 -360px; -} +.read_footer .sns{ margin-top:51px;text-align:center; } +.read_footer .sns li{display:inline;vertical-align:top} +.read_footer .sns a{display:inline-block;width:32px;height:32px;border:1px solid #e0e0e0;background-color:#f4f4f4; border-radius:2px;} +.read_footer .sns i{font-size:22px;line-height:32px;color:#bcbcbc} +.read_footer .sns a:hover{border-color:#DECA79;background-color:#f9dc5f;transition: all 0.2s ease-in-out;-webkit-transition: all 0.2s ease-in-out} +.read_footer .sns a:hover {color:#747474;transition: all 0.2s ease-in-out;-webkit-transition: all 0.2s ease-in-out} + .read_footer .sign { clear: both; border: 1px solid #ddd; @@ -961,7 +937,7 @@ /* _read.html | comment_form.html */ .write_comment { position: relative; - margin: 10px 0 35px; + margin: 10px 0 75px; zoom: 1; } .write_comment:after { @@ -1079,6 +1055,7 @@ text-shadow:none; color:#000; box-shadow:none; + -webkit-transition: all .2s ease-in-out;-moz-transition: all .2s ease-in-out;-ms-transition: all .2s ease-in-out;-o-transition: all .2s ease-in-out;transition: all .2s ease-in-out } .board .btn:hover, .board .btn:active, @@ -1100,6 +1077,7 @@ border-radius: 2px 0 0 2px; } .board .btn_insert { + font-size: 13px; border:0; cursor:pointer; width:130px; diff --git a/modules/board/skins/xedition/board.default.js b/modules/board/skins/xedition/board.default.js index 0035b0ec6..dae3818c4 100644 --- a/modules/board/skins/xedition/board.default.js +++ b/modules/board/skins/xedition/board.default.js @@ -45,6 +45,9 @@ jQuery(function($) { case 'twitter': loc = 'http://twitter.com/home?status='+opts.content; break; + case 'google' : + loc = 'http://plus.google.com/share?url='+encodeURIComponent(opts.url||location.href)+'?l=ko='+opts.content; + break; } this.bind(opts.event, function() { window.open(loc); From 7a2b350ec8637c17d88f331dc0e8bfac861d7cc2 Mon Sep 17 00:00:00 2001 From: UPGLE Date: Tue, 7 Apr 2015 14:26:49 +0900 Subject: [PATCH 160/265] =?UTF-8?q?XE=201.8=20=EC=A7=80=EC=9B=90=20PHP=20?= =?UTF-8?q?=EB=B2=84=EC=A0=84=20=EC=88=98=EC=A0=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a8e36bf4b..a96a87e1b 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ XE 코어는 모듈, 애드온, 에디터 컴포넌트, 위젯, 레이아웃의 XpressEngine은 여러분들의 개발 참여를 기다립니다. ## Server Requirements -* PHP version 5.2.4 or greater (But recommend PHP >= 5.3.11) +* 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 From 7676d787ab532ef2855837ed520102a2eb73d6fb Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 7 Apr 2015 15:35:28 +0900 Subject: [PATCH 161/265] =?UTF-8?q?#1354=20xeicon=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EB=B3=84=EB=8F=84=20=EC=98=B5=EC=85=98=20=EC=A7=80?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layouts/xedition/css/layout.css | 1 - layouts/xedition/layout.html | 7 +++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/layouts/xedition/css/layout.css b/layouts/xedition/css/layout.css index 1c300b3ba..3d4e0da0a 100644 --- a/layouts/xedition/css/layout.css +++ b/layouts/xedition/css/layout.css @@ -38,7 +38,6 @@ a:hover,a:active,a:focus{text-decoration:none} /* Fixed Header */ /*.container.fixed_header{padding-top:80px}*/ -.fixed_header .header_wrap{position:absolute;top:0;left:0;width:100%;z-index:1000} .fixed_header .header_wrap.shrink{position:fixed;top:0;width:100%;z-index:1000;border-bottom:1px solid #e1e1e1;background-color:#fff;-webkit-animation:ani-header 0.5s forwards;animation:ani-header 0.5s forwards} .fixed_header .header_wrap.shrink .header>h1{padding:0} .fixed_header .header_wrap.shrink .gnb>ul>li>a{line-height:60px} diff --git a/layouts/xedition/layout.html b/layouts/xedition/layout.html index 5d4b5772e..38eca2957 100644 --- a/layouts/xedition/layout.html +++ b/layouts/xedition/layout.html @@ -33,6 +33,13 @@ {@ $_sample_slide = true} {@ $_sample_footer = true} + + + {@ $layout_info->layout_type = 'sub'} + {@ $layout_info->menu_type_sub = 'onepage_parallax'} + {@ $layout_info->content_fixed_width = 'N'} + + {@ $layout_info->content_fixed_width = (!$_is_indexmodule) ? 'Y' : 'N';} From a8430dec0c79b53671e670eecdf740393a64d476 Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 7 Apr 2015 18:38:07 +0900 Subject: [PATCH 162/265] =?UTF-8?q?#1354=20=EC=84=A4=EC=B9=98=20=EC=8B=9C?= =?UTF-8?q?=20=EB=8D=B0=EB=AA=A8=20=EC=BD=98=ED=85=90=EC=B8=A0=20=EB=B0=8F?= =?UTF-8?q?=20=EB=A9=94=EB=89=B4=20=EC=9E=90=EB=8F=99=20=EA=B5=AC=EC=84=B1?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/install/script/ko.install.php | 256 +++++++++++++++--- .../welcome_content/welcome_content_de.html | 41 +-- .../welcome_content/welcome_content_en.html | 41 +-- .../welcome_content/welcome_content_es.html | 41 +-- .../welcome_content/welcome_content_fr.html | 41 +-- .../welcome_content/welcome_content_jp.html | 41 +-- .../welcome_content/welcome_content_mn.html | 41 +-- .../welcome_content/welcome_content_ru.html | 41 +-- .../welcome_content/welcome_content_tr.html | 41 +-- .../welcome_content/welcome_content_vi.html | 41 +-- .../welcome_content_zh-CN.html | 41 +-- .../welcome_content_zh-TW.html | 41 +-- 12 files changed, 304 insertions(+), 403 deletions(-) diff --git a/modules/install/script/ko.install.php b/modules/install/script/ko.install.php index fedd39a76..c77d4221d 100644 --- a/modules/install/script/ko.install.php +++ b/modules/install/script/ko.install.php @@ -4,57 +4,200 @@ $lang = Context::getLangType(); $logged_info = Context::get('logged_info'); -// insertMenu -$oMenuAdminController = getAdminController('menu'); /* @var $oMenuAdminController menuAdminController */ -$output = $oMenuAdminController->addMenu('Welcome menu'); -if(!$output->toBool()) +$oMenuAdminController = getAdminController('menu'); + +// sitemap +$sitemap = array( + 'GNB' => array( + 'title' => 'Main menu', + 'list' => array( + array( + 'menu_name' => 'Welcome Page', + 'module_type' => 'WIDGET', + 'module_id' => 'index', + ), + array( + 'menu_name' => 'XEIcon', + 'module_type' => 'WIDGET', + 'module_id' => 'xeicon', + ), + array( + 'menu_name' => 'Board', + 'module_type' => 'board', + 'module_id' => 'board', + 'list' => array( + array( + 'menu_name' => 'Smaple 1', + 'is_shortcut' => 'Y', + 'shortcut_target' => '#', + 'list' => array( + array( + 'menu_name' => 'Smaple 1-1', + 'is_shortcut' => 'Y', + 'shortcut_target' => '#' + ), + ) + ), + array( + 'menu_name' => 'Smaple 2', + 'is_shortcut' => 'Y', + 'shortcut_target' => '#' + ), + array( + 'menu_name' => 'Smaple 3', + 'is_shortcut' => 'Y', + 'shortcut_target' => '#' + ), + ) + ), + ) + ), + 'UNB' => array( + 'title' => 'Utility menu', + 'list' => array( + array( + 'menu_name' => 'XE Official Site', + 'is_shortcut' => 'Y', + 'open_window' => 'Y', + 'shortcut_target' => 'http://www.xpressengine.com' + ), + array( + 'menu_name' => 'GitHub', + 'is_shortcut' => 'Y', + 'open_window' => 'Y', + 'shortcut_target' => 'https://github.com/xpressengine' + ), + ) + ), + 'FNB' => array( + 'title' => 'Footer Menu', + 'list' => array( + array( + 'menu_name' => 'Welcome Page', + 'is_shortcut' => 'Y', + 'shortcut_target' => 'index', + 'list' => array( + array( + 'menu_name' => 'Sample 1', + 'is_shortcut' => 'Y', + 'shortcut_target' => '#' + ), + array( + 'menu_name' => 'Smaple 2', + 'is_shortcut' => 'Y', + 'shortcut_target' => '#' + ), + array( + 'menu_name' => 'Smaple 3', + 'is_shortcut' => 'Y', + 'shortcut_target' => '#' + ) + ), + ), + array( + 'menu_name' => 'XEIcon', + 'is_shortcut' => 'Y', + 'shortcut_target' => 'xeicon', + 'list' => array( + array( + 'menu_name' => 'Sample 1', + 'is_shortcut' => 'Y', + 'shortcut_target' => '#' + ), + array( + 'menu_name' => 'Smaple 2', + 'is_shortcut' => 'Y', + 'shortcut_target' => '#' + ) + ) + ), + array( + 'menu_name' => 'Board', + 'is_shortcut' => 'Y', + 'shortcut_target' => 'board', + 'list' => array( + array( + 'menu_name' => 'Sample 1', + 'is_shortcut' => 'Y', + 'shortcut_target' => '#' + ) + ) + ), + ), + ), +); + +function __makeMenu(&$list, $parent_srl) { - return $output; + $oMenuAdminController = getAdminController('menu'); + foreach($list as $idx => &$item) + { + Context::set('parent_srl', $parent_srl, TRUE); + Context::set('menu_name', $item['menu_name'], TRUE); + Context::set('module_type', $item['module_type'], TRUE); + Context::set('module_id', $item['module_id'], TRUE); + if($item['is_shortcut'] === 'Y') + { + Context::set('is_shortcut', $item['is_shortcut'], TRUE); + Context::set('shortcut_target', $item['shortcut_target'], TRUE); + } + else + { + Context::set('is_shortcut', 'N', TRUE); + Context::set('shortcut_target', null, TRUE); + } + + $output = $oMenuAdminController->procMenuAdminInsertItem(); + if($output instanceof Object && !$output->toBool()) + { + return $output; + } + $menu_srl = $oMenuAdminController->get('menu_item_srl'); + $item['menu_srl'] = $menu_srl; + + if($item['list']) __makeMenu($item['list'], $menu_srl); + } } -$menuSrl = $output->get('menuSrl'); -// make home menu cache -$oMenuAdminController->makeHomemenuCacheFile($menuSrl); -// insertMenuItem -// create 1depth menuitem - -// adhoc... -Context::set('parent_srl', $menuSrl, TRUE); -Context::set('menu_name', 'Welcome Page', TRUE); -Context::set('module_type', 'WIDGET', TRUE); -$output = $oMenuAdminController->procMenuAdminInsertItem(); -if($output instanceof Object && !$output->toBool()) +// 사이트맵 생성 +foreach($sitemap as $id => &$val) { - return $output; -} -$menuItemSrl = $oMenuAdminController->get('menu_item_srl'); + $output = $oMenuAdminController->addMenu($val['title']); + if(!$output->toBool()) + { + return $output; + } + $val['menu_srl'] = $output->get('menuSrl'); + + __makeMenu($val['list'], $val['menu_srl']); + + $oMenuAdminController->makeHomemenuCacheFile($val['menu_srl']); +} + -// create menu cache -$oMenuAdminController->makeXmlFile($menuSrl); // create Layout //extra_vars init -$extra_vars = new stdClass; -$extra_vars->GNB = $menuSrl; -$extra_vars->LNB = $menuSrl; -$extra_vars->SNB = $menuSrl; -$extra_vars->FNB = $menuSrl; +$extra_vars = new stdClass(); +$extra_vars->GNB = $sitemap['GNB']['menu_srl']; +$extra_vars->UNB = $simtemap['UNB']['menu_srl']; +$extra_vars->FNB = $simtemap['FNB']['menu_srl']; $extra_vars->menu_name_list = array(); -$extra_vars->menu_name_list[$menuSrl] = 'Welcome menu'; +$extra_vars->menu_name_list[$sitemap['GNB']['menu_srl']] = 'Welcome menu'; -$args = new stdClass; -$args->site_srl = 0; +$args = new stdClass(); $layout_srl = $args->layout_srl = getNextSequence(); +$args->site_srl = 0; $args->layout = 'xedition'; -$args->title = 'xedition'; +$args->title = 'XEDITION'; $args->layout_type = 'P'; -$oLayoutAdminController = getAdminController('layout'); /* @var $oLayoutAdminController layoutAdminController */ +$oLayoutAdminController = getAdminController('layout'); $output = $oLayoutAdminController->insertLayout($args); if(!$output->toBool()) return $output; -// update Layout +// update Layout (PC) $args->extra_vars = serialize($extra_vars); $output = $oLayoutAdminController->updateLayout($args); if(!$output->toBool()) return $output; @@ -64,23 +207,26 @@ $mlayout_srl = $args->layout_srl = getNextSequence(); $args->layout = 'default'; $args->title = 'welcome_mobile_layout'; $args->layout_type = 'M'; +$extra_vars->main_menu = $sitemap['GNB']['menu_srl']; $output = $oLayoutAdminController->insertLayout($args); if(!$output->toBool()) return $output; -// update Layout +// update mobile Layout $args->extra_vars = serialize($extra_vars); $output = $oLayoutAdminController->updateLayout($args); if(!$output->toBool()) return $output; + $siteDesignPath = _XE_PATH_.'files/site_design/'; FileHandler::makeDir($siteDesignPath); + $designInfo = new stdClass(); $designInfo->layout_srl = $layout_srl; $designInfo->mlayout_srl = $mlayout_srl; -$moduleList = array('page'); +$moduleList = array('page', 'board', 'editor'); $moutput = ModuleHandler::triggerCall('menu.getModuleListInSitemap', 'after', $moduleList); if($moutput->toBool()) { @@ -97,16 +243,18 @@ foreach($skinTypes as $key => $dir) $skinType = $key == 'skin' ? 'P' : 'M'; foreach($moduleList as $moduleName) { - $designInfo->module->{$moduleName} = new stdClass; + $designInfo->module->{$moduleName} = new stdClass(); $designInfo->module->{$moduleName}->{$key} = $oModuleModel->getModuleDefaultSkin($moduleName, $skinType, 0, false); } } +$designInfo->module->board->skin = 'xedition'; +$designInfo->module->editor->skin = 'ckeditor'; $oAdminController = getAdminController('admin'); /* @var $oAdminController adminAdminController */ $oAdminController->makeDefaultDesignFile($designInfo, 0); // create page content -$moduleInfo = $oModuleModel->getModuleInfoByMenuItemSrl($menuItemSrl); +$moduleInfo = $oModuleModel->getModuleInfoByMenuItemSrl($sitemap['GNB']['list'][0]['menu_srl']); $module_srl = $moduleInfo->module_srl; // insert PageContents - widget @@ -115,7 +263,7 @@ $oTemplateHandler = TemplateHandler::getInstance(); $oDocumentModel = getModel('document'); /* @var $oDocumentModel documentModel */ $oDocumentController = getController('document'); /* @var $oDocumentController documentController */ -$obj = new stdClass; +$obj = new stdClass(); $obj->member_srl = $logged_info->member_srl; $obj->user_id = htmlspecialchars_decode($logged_info->user_id); @@ -149,10 +297,38 @@ $output = $oModuleController->updateModule($module_info); if(!$output->toBool()) return $output; // insertFirstModule -$site_args = new stdClass; +$site_args = new stdClass(); $site_args->site_srl = 0; $site_args->index_module_srl = $module_srl; $oModuleController->updateSite($site_args); + +// XEIcon page +$moduleInfo = $oModuleModel->getModuleInfoByMenuItemSrl($sitemap['GNB']['list'][1]['menu_srl']); +$xeicon_module_srl = $moduleInfo->module_srl; + +$xeicon_document_srl = array(); +for($i = 1; $i <=4; $i++) +{ + unset($obj->document_srl); + $obj->title = "XEIcon ({$i})"; + $obj->content = $oTemplateHandler->compile(_XE_PATH_ . 'modules/install/script/xeicon_content', 'xeicon_content_ko_' . $i); + + $output = $oDocumentController->insertDocument($obj, true); + if(!$output->toBool()) return $output; + + $xeicon_document_srl[$i] = $output->get('document_srl'); +} + +// save PageWidget +$oModuleController = getController('module'); /* @var $oModuleController moduleController */ +$module_info = $oModuleModel->getModuleInfoByModuleSrl($xeicon_module_srl); +$module_info->content = '
    '; +$output = $oModuleController->updateModule($module_info); +if(!$output->toBool()) return $output; + + +// create menu cache +$oMenuAdminController->makeXmlFile($menuSrl); + /* End of file ko.install.php */ -/* Location: ./modules/install/script/ko.install.php */ diff --git a/modules/install/script/welcome_content/welcome_content_de.html b/modules/install/script/welcome_content/welcome_content_de.html index 77146851c..e82bea382 100644 --- a/modules/install/script/welcome_content/welcome_content_de.html +++ b/modules/install/script/welcome_content/welcome_content_de.html @@ -1,34 +1,9 @@ - -
    -

    XE core '{$version}' has been successfully installed!

    -
    -

    Change the site title

    -

    After login as administrator, you can change the 'site title' as 'Admin > Settings > General > Primary...' progress.

    - Settings + +
    +
    + WELCOME TO +

    WELCOME TO XPRESSENGINE

    +

    XpressEngine은 자유로운 웹 콘텐츠 발행을 돕는 CMS입니다.
    간편한 설치와 다양한 추가 프로그램을 활용하여
    자신만의 웹페이지를 쉽고 빠르게 만들 수 있습니다.

    + XE 시작하기
    -
    -

    Change the menu structure

    -

    After login as administrator, you can change the 'menu structure' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Change the layout design

    -

    After login as administrator, you can change the 'layout design' as 'Admin > Menu > Site Design...' progress.

    - Settings -
    -
    -

    Main page replacement

    -

    After login as administrator, you can change the 'main page' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Main page decoration

    -

    After login as administrator, you can edit the 'main page' by click the 'Modify...' button.

    - Settings -
    -
    -

    Module installation

    -

    After login as administrator, you can install the 'module' as 'Admin > Advanced > Easy install...' progress.

    - Settings -
    -
    + diff --git a/modules/install/script/welcome_content/welcome_content_en.html b/modules/install/script/welcome_content/welcome_content_en.html index 77146851c..e82bea382 100644 --- a/modules/install/script/welcome_content/welcome_content_en.html +++ b/modules/install/script/welcome_content/welcome_content_en.html @@ -1,34 +1,9 @@ - -
    -

    XE core '{$version}' has been successfully installed!

    -
    -

    Change the site title

    -

    After login as administrator, you can change the 'site title' as 'Admin > Settings > General > Primary...' progress.

    - Settings + +
    +
    + WELCOME TO +

    WELCOME TO XPRESSENGINE

    +

    XpressEngine은 자유로운 웹 콘텐츠 발행을 돕는 CMS입니다.
    간편한 설치와 다양한 추가 프로그램을 활용하여
    자신만의 웹페이지를 쉽고 빠르게 만들 수 있습니다.

    + XE 시작하기
    -
    -

    Change the menu structure

    -

    After login as administrator, you can change the 'menu structure' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Change the layout design

    -

    After login as administrator, you can change the 'layout design' as 'Admin > Menu > Site Design...' progress.

    - Settings -
    -
    -

    Main page replacement

    -

    After login as administrator, you can change the 'main page' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Main page decoration

    -

    After login as administrator, you can edit the 'main page' by click the 'Modify...' button.

    - Settings -
    -
    -

    Module installation

    -

    After login as administrator, you can install the 'module' as 'Admin > Advanced > Easy install...' progress.

    - Settings -
    -
    + diff --git a/modules/install/script/welcome_content/welcome_content_es.html b/modules/install/script/welcome_content/welcome_content_es.html index 77146851c..e82bea382 100644 --- a/modules/install/script/welcome_content/welcome_content_es.html +++ b/modules/install/script/welcome_content/welcome_content_es.html @@ -1,34 +1,9 @@ - -
    -

    XE core '{$version}' has been successfully installed!

    -
    -

    Change the site title

    -

    After login as administrator, you can change the 'site title' as 'Admin > Settings > General > Primary...' progress.

    - Settings + +
    +
    + WELCOME TO +

    WELCOME TO XPRESSENGINE

    +

    XpressEngine은 자유로운 웹 콘텐츠 발행을 돕는 CMS입니다.
    간편한 설치와 다양한 추가 프로그램을 활용하여
    자신만의 웹페이지를 쉽고 빠르게 만들 수 있습니다.

    + XE 시작하기
    -
    -

    Change the menu structure

    -

    After login as administrator, you can change the 'menu structure' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Change the layout design

    -

    After login as administrator, you can change the 'layout design' as 'Admin > Menu > Site Design...' progress.

    - Settings -
    -
    -

    Main page replacement

    -

    After login as administrator, you can change the 'main page' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Main page decoration

    -

    After login as administrator, you can edit the 'main page' by click the 'Modify...' button.

    - Settings -
    -
    -

    Module installation

    -

    After login as administrator, you can install the 'module' as 'Admin > Advanced > Easy install...' progress.

    - Settings -
    -
    + diff --git a/modules/install/script/welcome_content/welcome_content_fr.html b/modules/install/script/welcome_content/welcome_content_fr.html index 77146851c..e82bea382 100644 --- a/modules/install/script/welcome_content/welcome_content_fr.html +++ b/modules/install/script/welcome_content/welcome_content_fr.html @@ -1,34 +1,9 @@ - -
    -

    XE core '{$version}' has been successfully installed!

    -
    -

    Change the site title

    -

    After login as administrator, you can change the 'site title' as 'Admin > Settings > General > Primary...' progress.

    - Settings + +
    +
    + WELCOME TO +

    WELCOME TO XPRESSENGINE

    +

    XpressEngine은 자유로운 웹 콘텐츠 발행을 돕는 CMS입니다.
    간편한 설치와 다양한 추가 프로그램을 활용하여
    자신만의 웹페이지를 쉽고 빠르게 만들 수 있습니다.

    + XE 시작하기
    -
    -

    Change the menu structure

    -

    After login as administrator, you can change the 'menu structure' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Change the layout design

    -

    After login as administrator, you can change the 'layout design' as 'Admin > Menu > Site Design...' progress.

    - Settings -
    -
    -

    Main page replacement

    -

    After login as administrator, you can change the 'main page' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Main page decoration

    -

    After login as administrator, you can edit the 'main page' by click the 'Modify...' button.

    - Settings -
    -
    -

    Module installation

    -

    After login as administrator, you can install the 'module' as 'Admin > Advanced > Easy install...' progress.

    - Settings -
    -
    + diff --git a/modules/install/script/welcome_content/welcome_content_jp.html b/modules/install/script/welcome_content/welcome_content_jp.html index 9d99e9235..e82bea382 100644 --- a/modules/install/script/welcome_content/welcome_content_jp.html +++ b/modules/install/script/welcome_content/welcome_content_jp.html @@ -1,34 +1,9 @@ - -
    -

    XE core '{$version}' 設置を歓迎します!

    -
    -

    サイトタイトル変更

    -

    管理者でログイン後、'管理 > 設定 > 一般 > 基本'で 'サイトタイトル'を変更できます。

    - 設定変更 + +
    +
    + WELCOME TO +

    WELCOME TO XPRESSENGINE

    +

    XpressEngine은 자유로운 웹 콘텐츠 발행을 돕는 CMS입니다.
    간편한 설치와 다양한 추가 프로그램을 활용하여
    자신만의 웹페이지를 쉽고 빠르게 만들 수 있습니다.

    + XE 시작하기
    -
    -

    メニュー構造変更

    -

    管理者でログイン後、'管理 > サイト制作・編集 > サイトマップ'で 'メニュー構造'を変更できます。

    - 設定変更 -
    -
    -

    レイアウトデザイン変更

    -

    管理者でログイン後、'管理 > サイト制作・編集 > サイトデザイン'で 'レイアウトデザイン'を変更できます。

    - 設定変更 -
    -
    -

    初期画面変更

    -

    管理者でログイン後、'管理 > サイト制作・編集 > サイトデザイン'で '初期画面'を変更できます。

    - 設定変更 -
    -
    -

    初期画面飾り付け

    -

    管理者でログイン後、'ページ修正' ブタンを押して '初期画面'を飾り付けできます。

    - 設定変更 -
    -
    -

    モジュール設定

    -

    管理者でログイン後、'管理 > 上級 > 簡単設置'で 'モジュール'を設置できます。

    - 設定変更 -
    -
    + diff --git a/modules/install/script/welcome_content/welcome_content_mn.html b/modules/install/script/welcome_content/welcome_content_mn.html index 77146851c..e82bea382 100644 --- a/modules/install/script/welcome_content/welcome_content_mn.html +++ b/modules/install/script/welcome_content/welcome_content_mn.html @@ -1,34 +1,9 @@ - -
    -

    XE core '{$version}' has been successfully installed!

    -
    -

    Change the site title

    -

    After login as administrator, you can change the 'site title' as 'Admin > Settings > General > Primary...' progress.

    - Settings + +
    +
    + WELCOME TO +

    WELCOME TO XPRESSENGINE

    +

    XpressEngine은 자유로운 웹 콘텐츠 발행을 돕는 CMS입니다.
    간편한 설치와 다양한 추가 프로그램을 활용하여
    자신만의 웹페이지를 쉽고 빠르게 만들 수 있습니다.

    + XE 시작하기
    -
    -

    Change the menu structure

    -

    After login as administrator, you can change the 'menu structure' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Change the layout design

    -

    After login as administrator, you can change the 'layout design' as 'Admin > Menu > Site Design...' progress.

    - Settings -
    -
    -

    Main page replacement

    -

    After login as administrator, you can change the 'main page' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Main page decoration

    -

    After login as administrator, you can edit the 'main page' by click the 'Modify...' button.

    - Settings -
    -
    -

    Module installation

    -

    After login as administrator, you can install the 'module' as 'Admin > Advanced > Easy install...' progress.

    - Settings -
    -
    + diff --git a/modules/install/script/welcome_content/welcome_content_ru.html b/modules/install/script/welcome_content/welcome_content_ru.html index 77146851c..e82bea382 100644 --- a/modules/install/script/welcome_content/welcome_content_ru.html +++ b/modules/install/script/welcome_content/welcome_content_ru.html @@ -1,34 +1,9 @@ - -
    -

    XE core '{$version}' has been successfully installed!

    -
    -

    Change the site title

    -

    After login as administrator, you can change the 'site title' as 'Admin > Settings > General > Primary...' progress.

    - Settings + +
    +
    + WELCOME TO +

    WELCOME TO XPRESSENGINE

    +

    XpressEngine은 자유로운 웹 콘텐츠 발행을 돕는 CMS입니다.
    간편한 설치와 다양한 추가 프로그램을 활용하여
    자신만의 웹페이지를 쉽고 빠르게 만들 수 있습니다.

    + XE 시작하기
    -
    -

    Change the menu structure

    -

    After login as administrator, you can change the 'menu structure' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Change the layout design

    -

    After login as administrator, you can change the 'layout design' as 'Admin > Menu > Site Design...' progress.

    - Settings -
    -
    -

    Main page replacement

    -

    After login as administrator, you can change the 'main page' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Main page decoration

    -

    After login as administrator, you can edit the 'main page' by click the 'Modify...' button.

    - Settings -
    -
    -

    Module installation

    -

    After login as administrator, you can install the 'module' as 'Admin > Advanced > Easy install...' progress.

    - Settings -
    -
    + diff --git a/modules/install/script/welcome_content/welcome_content_tr.html b/modules/install/script/welcome_content/welcome_content_tr.html index 77146851c..e82bea382 100644 --- a/modules/install/script/welcome_content/welcome_content_tr.html +++ b/modules/install/script/welcome_content/welcome_content_tr.html @@ -1,34 +1,9 @@ - -
    -

    XE core '{$version}' has been successfully installed!

    -
    -

    Change the site title

    -

    After login as administrator, you can change the 'site title' as 'Admin > Settings > General > Primary...' progress.

    - Settings + +
    +
    + WELCOME TO +

    WELCOME TO XPRESSENGINE

    +

    XpressEngine은 자유로운 웹 콘텐츠 발행을 돕는 CMS입니다.
    간편한 설치와 다양한 추가 프로그램을 활용하여
    자신만의 웹페이지를 쉽고 빠르게 만들 수 있습니다.

    + XE 시작하기
    -
    -

    Change the menu structure

    -

    After login as administrator, you can change the 'menu structure' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Change the layout design

    -

    After login as administrator, you can change the 'layout design' as 'Admin > Menu > Site Design...' progress.

    - Settings -
    -
    -

    Main page replacement

    -

    After login as administrator, you can change the 'main page' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Main page decoration

    -

    After login as administrator, you can edit the 'main page' by click the 'Modify...' button.

    - Settings -
    -
    -

    Module installation

    -

    After login as administrator, you can install the 'module' as 'Admin > Advanced > Easy install...' progress.

    - Settings -
    -
    + diff --git a/modules/install/script/welcome_content/welcome_content_vi.html b/modules/install/script/welcome_content/welcome_content_vi.html index 77146851c..e82bea382 100644 --- a/modules/install/script/welcome_content/welcome_content_vi.html +++ b/modules/install/script/welcome_content/welcome_content_vi.html @@ -1,34 +1,9 @@ - -
    -

    XE core '{$version}' has been successfully installed!

    -
    -

    Change the site title

    -

    After login as administrator, you can change the 'site title' as 'Admin > Settings > General > Primary...' progress.

    - Settings + +
    +
    + WELCOME TO +

    WELCOME TO XPRESSENGINE

    +

    XpressEngine은 자유로운 웹 콘텐츠 발행을 돕는 CMS입니다.
    간편한 설치와 다양한 추가 프로그램을 활용하여
    자신만의 웹페이지를 쉽고 빠르게 만들 수 있습니다.

    + XE 시작하기
    -
    -

    Change the menu structure

    -

    After login as administrator, you can change the 'menu structure' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Change the layout design

    -

    After login as administrator, you can change the 'layout design' as 'Admin > Menu > Site Design...' progress.

    - Settings -
    -
    -

    Main page replacement

    -

    After login as administrator, you can change the 'main page' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Main page decoration

    -

    After login as administrator, you can edit the 'main page' by click the 'Modify...' button.

    - Settings -
    -
    -

    Module installation

    -

    After login as administrator, you can install the 'module' as 'Admin > Advanced > Easy install...' progress.

    - Settings -
    -
    + diff --git a/modules/install/script/welcome_content/welcome_content_zh-CN.html b/modules/install/script/welcome_content/welcome_content_zh-CN.html index 77146851c..e82bea382 100644 --- a/modules/install/script/welcome_content/welcome_content_zh-CN.html +++ b/modules/install/script/welcome_content/welcome_content_zh-CN.html @@ -1,34 +1,9 @@ - -
    -

    XE core '{$version}' has been successfully installed!

    -
    -

    Change the site title

    -

    After login as administrator, you can change the 'site title' as 'Admin > Settings > General > Primary...' progress.

    - Settings + +
    +
    + WELCOME TO +

    WELCOME TO XPRESSENGINE

    +

    XpressEngine은 자유로운 웹 콘텐츠 발행을 돕는 CMS입니다.
    간편한 설치와 다양한 추가 프로그램을 활용하여
    자신만의 웹페이지를 쉽고 빠르게 만들 수 있습니다.

    + XE 시작하기
    -
    -

    Change the menu structure

    -

    After login as administrator, you can change the 'menu structure' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Change the layout design

    -

    After login as administrator, you can change the 'layout design' as 'Admin > Menu > Site Design...' progress.

    - Settings -
    -
    -

    Main page replacement

    -

    After login as administrator, you can change the 'main page' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Main page decoration

    -

    After login as administrator, you can edit the 'main page' by click the 'Modify...' button.

    - Settings -
    -
    -

    Module installation

    -

    After login as administrator, you can install the 'module' as 'Admin > Advanced > Easy install...' progress.

    - Settings -
    -
    + diff --git a/modules/install/script/welcome_content/welcome_content_zh-TW.html b/modules/install/script/welcome_content/welcome_content_zh-TW.html index 77146851c..e82bea382 100644 --- a/modules/install/script/welcome_content/welcome_content_zh-TW.html +++ b/modules/install/script/welcome_content/welcome_content_zh-TW.html @@ -1,34 +1,9 @@ - -
    -

    XE core '{$version}' has been successfully installed!

    -
    -

    Change the site title

    -

    After login as administrator, you can change the 'site title' as 'Admin > Settings > General > Primary...' progress.

    - Settings + +
    +
    + WELCOME TO +

    WELCOME TO XPRESSENGINE

    +

    XpressEngine은 자유로운 웹 콘텐츠 발행을 돕는 CMS입니다.
    간편한 설치와 다양한 추가 프로그램을 활용하여
    자신만의 웹페이지를 쉽고 빠르게 만들 수 있습니다.

    + XE 시작하기
    -
    -

    Change the menu structure

    -

    After login as administrator, you can change the 'menu structure' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Change the layout design

    -

    After login as administrator, you can change the 'layout design' as 'Admin > Menu > Site Design...' progress.

    - Settings -
    -
    -

    Main page replacement

    -

    After login as administrator, you can change the 'main page' as 'Admin > Menu > Menu Editor...' progress.

    - Settings -
    -
    -

    Main page decoration

    -

    After login as administrator, you can edit the 'main page' by click the 'Modify...' button.

    - Settings -
    -
    -

    Module installation

    -

    After login as administrator, you can install the 'module' as 'Admin > Advanced > Easy install...' progress.

    - Settings -
    -
    + From 54a8d259c64ac0ac88d98297dbab27c4185d778e Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 8 Apr 2015 04:39:01 +0900 Subject: [PATCH 163/265] =?UTF-8?q?#1376=20XEDITION=20=EA=B2=8C=EC=8B=9C?= =?UTF-8?q?=ED=8C=90=20=EC=8A=A4=ED=82=A8=20=EC=A0=95=EB=B3=B4=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gruntfile.js | 4 +++- modules/board/skins/xedition/board.default.css | 2 +- modules/board/skins/xedition/skin.xml | 11 ++++------- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 96ba3fb36..17afdb7ff 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -91,6 +91,7 @@ module.exports = function(grunt) { '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/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 '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'], @@ -137,7 +138,8 @@ module.exports = function(grunt) { '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/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'], } }, 'addons': { diff --git a/modules/board/skins/xedition/board.default.css b/modules/board/skins/xedition/board.default.css index 648272c24..ab840d9c6 100644 --- a/modules/board/skins/xedition/board.default.css +++ b/modules/board/skins/xedition/board.default.css @@ -1,5 +1,5 @@ @charset "utf-8"; -/* NHN (developers@xpressengine.com) */ +/* NAVER (developers@xpressengine.com) */ /* Board */ .board img { border: 0; diff --git a/modules/board/skins/xedition/skin.xml b/modules/board/skins/xedition/skin.xml index 721c9fbfa..d61e79ff0 100644 --- a/modules/board/skins/xedition/skin.xml +++ b/modules/board/skins/xedition/skin.xml @@ -1,13 +1,10 @@ - XE Edition - XE Edition - XE 에디션 테마 게시판. + XEDITION 1.0 - 2015-04-07 - - NHN - NHN + 2015-04-08 + + NAVER LGPL v2 From b05074a83d61930f5cfcd0d0ad3921a3fa6b432a Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 8 Apr 2015 09:37:28 +0900 Subject: [PATCH 164/265] =?UTF-8?q?#1354=20=EB=A1=9C=EA=B3=A0=20=EB=B0=8F?= =?UTF-8?q?=20=EC=84=9C=EB=B8=8C=20=ED=97=A4=EB=8D=94=20=EB=B0=B0=EA=B2=BD?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=84=A4=EC=A0=95=20=EA=B0=9C?= =?UTF-8?q?=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layouts/xedition/conf/info.xml | 13 ++- layouts/xedition/css/layout.css | 9 +- layouts/xedition/img/logo.png | Bin 15750 -> 16055 bytes layouts/xedition/img/m_logo.png | Bin 2579 -> 16760 bytes layouts/xedition/img/s_logo.png | Bin 15686 -> 15997 bytes ...ub_banner_03.jpg => sub_banner_xeicon.jpg} | Bin layouts/xedition/js/jquery.countTo.js | 80 ------------------ layouts/xedition/js/layout.js | 23 ++++- layouts/xedition/layout.html | 63 +++++++------- 9 files changed, 68 insertions(+), 120 deletions(-) rename layouts/xedition/img/{sub_banner_03.jpg => sub_banner_xeicon.jpg} (100%) delete mode 100644 layouts/xedition/js/jquery.countTo.js diff --git a/layouts/xedition/conf/info.xml b/layouts/xedition/conf/info.xml index 6ebf86f5d..d216bfc27 100644 --- a/layouts/xedition/conf/info.xml +++ b/layouts/xedition/conf/info.xml @@ -108,14 +108,21 @@ 풀 페이지 + - 사이트 로고 이미지 + 기본형 로고 이미지 + + + 투명형 로고 이미지 + + + 매거진형 로고 이미지 사이트 로고 문자 - 사이트 로고 경로 + 사이트 로고 링크 주소 푸터 로고 이미지 @@ -124,7 +131,7 @@ 푸터 로고 문자 - 푸터 로고 경로 + 푸터 로고 링크 주소 푸터 내용 diff --git a/layouts/xedition/css/layout.css b/layouts/xedition/css/layout.css index 3d4e0da0a..e12ef5993 100644 --- a/layouts/xedition/css/layout.css +++ b/layouts/xedition/css/layout.css @@ -33,8 +33,8 @@ a:hover,a:active,a:focus{text-decoration:none} .content img{max-width:100%;height:auto} /* Header */ -.header>h1{float:left;padding:20px 0;margin-right:32px} -.header>h1 img{vertical-align:top} +.header>h1{float:left;padding:20px 0;margin-right:32px;line-height:60px;} +.header>h1 img{vertical-align:middle; max-height:40px; } /* Fixed Header */ /*.container.fixed_header{padding-top:80px}*/ @@ -126,13 +126,17 @@ a:hover,a:active,a:focus{text-decoration:none} .onepage .gnb>ul{background:transparent} .onepage .gnb>ul>li>a{line-height:60px;color:#f6f6f6} .onepage .gnb>ul>li>a:hover,.onepage .gnb>ul>li>a:focus,.onepage .gnb>ul>li>a:focus,.onepage .gnb>ul>li.on>a{color:#fff} +.onepage .shrink .gnb>ul>li>a{color:#888} +.onepage .shrink .gnb>ul>li>a:hover,.onepage .shrink .gnb>ul>li>a:focus,.onepage .shrink .gnb>ul>li>a:focus,.onepage .shrink .gnb>ul>li.on>a{color:#444} .onepage .header>.side>ul>li>a{color:#f6f6f6} .onepage .header>.side>ul>li>a:hover, .onepage .header>.side>ul>li>a:focus,.onepage .header>.side>ul>li>a:active,.onepage .header>.side>ul>li.on>a{color:#fff} .onepage .search_area .btn_close{color:#f6f6f6} +.onepage .shrink .search_area .btn_close{color:#888} .onepage .gnb>ul .depth2:after{background:none} .onepage .gnb{margin-top:20px} .onepage .header>h1{padding:20px 0 0} .onepage .search_area input[type=text]{color:#f6f6f6} +.onepage .shrink .search_area input[type=text]{color:#888} /* Search */ .search_wrap{position:relative;width:1200px;margin:0 auto} @@ -157,7 +161,6 @@ a:hover,a:active,a:focus{text-decoration:none} .gnb>ul .depth2 a:hover,.gnb>ul .depth2 a:active,.gnb>ul .depth2 a:focus,.gnb>ul .depth2>li.on>a{color:#cda25a} .gnb>ul .depth3{display:none;position:absolute;top:-8px;left:100%;z-index:2;padding:8px 0;background-color:#333} .gnb>ul .depth2>li.more>a:after{position:absolute;right:20px;content:'>'} -.onepage .header_wrap.shrink a, .onepage .shrink .header > .side > ul > li > a {color: #444; } .onepage .shrink .gnb {margin-top: 0; } .magazine .shrink .gnb {margin-bottom: 10px; } diff --git a/layouts/xedition/img/logo.png b/layouts/xedition/img/logo.png index b480f5375de84a512e80eeb220004fb971a409f7..e2f6bafd47d1ff9f1af8b2b881ac2b54a6b3bc3b 100644 GIT binary patch delta 1357 zcmV-T1+w~vd$)a%7YY^#1^@s6M_iXhks%iXIpwiBe*+3QR4_FB}`WjSLlVq-ZoEi^M@FfC$XIASd~F*i9iGG#e4FgY=k ziv~CiG%YYVR4_F&zvkwVaF9Z~6Fp`sNI4^%pNklfKow71%V18 z&v<`ZRA5|zp#tOzz!iWiu>JdfAXgB%g5V0GRN(x`l3aH7q`Q+CgC=iAV?K1^cJJ-J zy_Njo;^HC$@CASIVvKp*zab(xFamHXKDz@@Dd#Q_hufO(rT{)QjQPC@ zgNSHsj42x?v1StPkvqt@|E_BSUa=#5Pytxg1c-}(_PmQ4N9P?7@Yz8uY3FkQ0TTc> z0A~E!M#g`4?B`9uT)!$d`;3>iuTCR|*4huoPvVkn`jf8Fd9zfbt#|XeTwmWGE zv^6K8B=WbGf)CypaGJbj68)Jx5iM#aJQJT?pU9#l0Jc{2_nCZKUMpW@JSNt!>lgwL ztk)AEPdO2d9MWt5&|Hw$2Om6-5S%OH#|~*&2QE&mJ-H&)u5*hHgG|e28}@(EM*yEW zX_N|amn}%Yj3%HlW~a!gyx>eoSi!Z`v7%&0k411L9%aU`LlR)#u+zO(vhPicIRw>%1IL6a zC8Cxht=~qp1KtylisbaI7My=7f#;)8*NR_~7W3Hpjvpv}8!5$F;ePDW>%zTwf7vqv zUN+e4!med-mX10!Dg*AN_)+Y9ZRwq~bkw%tSRQDBN@Yjix7{y9q6kq48=nHl=1PgP zh$5gvikm(ULE3PP4zxg3&k2|`1YGDEh2T~pd`?7J6akGfl@b+IhwXoY_dtdJI3y;@ zzFyn+T@ozsc5H-vMcsBe!d+t7 zGXhF`t^zV;)?x!Au~C1zBvY-nA1K)`6O$=fa%F4g)b1ptN@0E9GXmau*sNip5V>t| zYPV>US^~24u9aOcn9+7rWH_Bhu4Y%!!wk4nGS@>xS7EBu`ga}8=e%j-H&7;Pvosfr zG*_hh*jpJ>{C*5;sI(3G2-zk}cvCPHYdhq+Obg6SM{}u~>ivI#mHlQSUGMlYEt#70 z4y1VNd5i+Cxm3o#IqKCpPP?7dlm+Jw1^B_o8wcggv5V~t{JiPBwhhC5nuSApp=6HC zB1g)GtODyXU+Ik9;nrn{4f>6ZrBJ>;Ez!+Q291O(BKo38{htgdv&706Q#351EMkvc ziVL`(59})m$DV0*?uw=IkTtRT+~^tqqlmrjt~~0ay%gJ-?4~Bw#>!n4&~k9e(f%KA zb`if_v~1bDifhF5*2(~%Xk*8$SeKk6hL$g$B7GBVmocUyqKU}LufGNWRk1&oX%&Rs P00000NkvXXu0mjfgui1K delta 1358 zcmV-U1+n_KeTI9G7YaNG1^@s6;cKxKks%iXI4Q9@e*+3KR53O>Ff%$ZF_XgsJPI;Y zF*Z6dGdeIalL-W!lV=7dv&;mZ0<$Iwi~#~RFtfA@Z!ZJ}K$tC)Cps^G*GWV{RCwC# zo!xQTOcaJ+GcG`>Af$po1;I1kYeNOb6&NZ&t^iyCxB@%Zdx2a*lnR0?h*AOH#kXWO zJ7=ZUN(`WRpBYUIXvO}#=Vy<^5erm1X4lk5azP1AZcg}my z01DyUMP&b;Ng* zjdB1#0lY=@bp+sBz`Q_f4NFVzSl+MAU|#J;N~xjNIw~zLx2f@M*uVPx6Ro6yEF5=snOSO!k9zayJJav zMrf%Zt}+&m`0@&|oSMXp@mCGeUOEE+Kg_t33PW2PCzM2f*V55Ly&O<${bWS+xARJ= zMM;Ne&U+6RvM33EfURZyT^8TgtW_vu(~b8npHGtooGxRQW0<5F1&#x*hXkePYd89_=0I%|-Brc8zC7+!|aTCW^S99b9a zJG;H&fO3zQ2x`mXJM;W&yq5yIwk&9M zKt;y|m{b^C-8HJilOXt1DK(A~pw_w&tfFYKTyP2skYh3t_62LDl-JO&eIF>LMnY1X znDE$i_gf|6{74hj7jmC2({C`wJkr1?&L$)Q@T!!5x(ODbQmQP8oC5fcxSQAqZq6h} z>Y4yECv=Vwevj9kn~w&%f=S`$DjLw`1dkuc+HDXShquJ0?JPJohy`<+#BH z#$_W^Nv2Y6-xIvw*y&7eLatkyxwJb8BO$SV>6ieY1I8?|5QN;+IHg;(NvQx$=v@oD zUKmAx+g35g$uKu9^`)rF_j{K2n>p@!XCBjXU31z(DBcDhgBsUd z3hnove07e?E+O_GFJGt~NH@6*Wo@zHoH-;mt1MyR(LM zC7TcD8ZouCyvCeJZHFde-5Dp*x8~w|pF diff --git a/layouts/xedition/img/m_logo.png b/layouts/xedition/img/m_logo.png index 659168913c9e567bf68eb4e327f390dd4c12c981..3735c6a80e7c6239d0a5c0303a2dac78d232bdb8 100644 GIT binary patch literal 16760 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 rf{nXciiEu;l-i+ITe~Vw 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 A4*&oF delta 1288 zcmV+j1^4>>e8zf^7YaNG1^@s6;cKxKks%iXI4Q9@e**_HR53O>Ffx zFfx+{1fY{=1}3x21fBx3CJBrI0yZ$Sv zg^w8uP%1E~Ah?3a6&NarTtQ3)G8KR;09RnU0+b4(R1jQ&Nd?LeuVyyaSK5bQ0Ofo$ z{IIN*_HpiO7mqKhssbU$V!$aN6d<7h384T91xN@5NGL!;C_q915<&qI3Xl*AkWhex zP=JI2B!mJa6n`Kg6d*ZUh5#l2zF60O0eJRkI|gtgt~~(QDfi}){hPP^E(37sX#WR5 z38090_Xxl@>*rSh>xO&tJ*>qefUU-4o@wLTUXCRn7)!VpN?kdWoEr~VQ#!oWu}RDre;e!l9~cApX~vy6JpBs5ljFWN z7D5lfIpExg$nJdJ(&0OC?e}K8;i&K8+nBZTWn$XI&g&{hz;+Qb75UqJgR13= zWtH8yH9gmDG_bvApdo(i5o2|_peFE^=IE_*f?xKU}7hMFn zRl=xz;GGCz1%TxVdxFwT^p!BK#3Ri(S8~O;re+=rGY?xMNXrKVV1%Y zQ|o~v5tesn6naaguj!t>;Hjh-QUEhYrF*M*-+%8N`Vf>44jMYNQ!HvB-1(2tF8drg2c6l;n5sfXUSy*8Vho(b^AG2SM&9gVYW$U~hB z8?G<$zR@_b!mk~AryVD1<1wJwfkLsY==)avLO6<$2w}Is3~c)>imuc|&v}dhYqy*# zu76a9=or!?Ezqv#0!$nR7rI6vd%JVfCKXkG>uJltu~^T_wc?ByXa{mgrb=DVy5%)= zSU{#&*kTXWuS>+`fhK6AFNizDuDL#u9I0;t zEJO%Q;r~SeIXABzgge8(`>bO$Y*IIcV1Iequ@>Pg>e%H3tHiQr0+i$V7T_r-9SRu9 z8XtE_GDYO704Jg|r3txmYv$Ze5>lo3dF+`0A3Vmakt;&(YMj~;ZQ>H3CagN&TMDa~ z;Cwc6wQ&_a^nhE%b3LK`WFk{?{f9mE=h{{H4V2C%qKqzus=X_m6CuO<*RV#)wtqn% zk=ta6DGD;Nwj-05X@Gu@+R~Qi z7CjZtRZg*y-+;I#B%GY5$`fEAM*{Ju@!EchghTE ztgQ&;JEtY~bI72v#QUFpWKAJhR)4iihljXTlGsxZ#RZzbAJ|tBUU^24rHNvP%!$=# zHndb(SZ>&rAJw7Q_GI7De101n?sfrN4o%^xJ__1Kyt@c|pX60MBW7={444zG?UjjG zH^xbfthsoJoST?&)#2Ut%C8svM>XV_@b7{N1xP4BLMT8&0TMz15(= loops) { - // remove the interval - $self.removeData('countTo'); - clearInterval(data.interval); - value = settings.to; - - if (typeof(settings.onComplete) == 'function') { - settings.onComplete.call(self, value); - } - } - } - - function render(value) { - var formattedValue = settings.formatter.call(self, value, settings); - $self.text(formattedValue); - } - }); - }; - - $.fn.countTo.defaults = { - from: 0, // the number the element should start at - to: 0, // the number the element should end at - speed: 1000, // how long it should take to count between the target numbers - refreshInterval: 100, // how often the element should be updated - decimals: 0, // the number of decimal places to show - formatter: formatter, // handler for formatting the value before rendering - onUpdate: null, // callback method for every time the element is updated - onComplete: null // callback method for when the element finishes updating - }; - - function formatter(value, settings) { - return value.toFixed(settings.decimals); - } -}(jQuery)); diff --git a/layouts/xedition/js/layout.js b/layouts/xedition/js/layout.js index c594cda2e..36228f7a1 100644 --- a/layouts/xedition/js/layout.js +++ b/layouts/xedition/js/layout.js @@ -13,19 +13,27 @@ { var fixedHeaderHeight = $fixedHeader.height(); var hasClass = false; + var $logoImg = $fixedHeader.find('.header h1 img'); + var logoDataSrc = $logoImg.data('logo'); + var logo = $logoImg.attr('src'); + $(window).scroll(function() { var scroll = $(this).scrollTop(); if(scroll >= $shrinkHeaderHeight ) { if(!hasClass) { + $('body').css('padding-top', fixedHeaderHeight); $fixedHeader.addClass('shrink'); + if(logoDataSrc) $logoImg.attr('src', logoDataSrc); hasClass = true; } } else { if(hasClass) { + $('body').css('padding-top', 0); $fixedHeader.removeClass('shrink'); + if(logoDataSrc) $logoImg.attr('src', logo); hasClass = false; } } @@ -84,7 +92,7 @@ return false; }); $('.btn_close').click(function(){ - $this = $(this); + var $this = $(this); $this.parent().fadeOut().find('input').val(''); if($('.magazine').length > 0){ $('.custom_area').css('opacity',1); @@ -96,6 +104,19 @@ return false; }); + // slide + if($.isFunction($.fn.camera) && $(".camera_wrap").length) { + $(".camera_wrap").camera({ + height: "600px", + pagination: true, + thumbnails: false, + playPause: false, + loader: "none", + fx: "simpleFade", + time: 3000 + }); + } + // Scroll to top var scrollToTop = function() { var link = $('.btn_top'); diff --git a/layouts/xedition/layout.html b/layouts/xedition/layout.html index 38eca2957..c9ba5bed8 100644 --- a/layouts/xedition/layout.html +++ b/layouts/xedition/layout.html @@ -10,6 +10,8 @@ {@ $_container_class = array()} {@ $_visual_class = array()} {@ $_selected_menu = null} + {@ $_magazine_header = false} + {@ $_onepage_header = false} {@ $sub_header_title = $module_info->browser_title} @@ -83,10 +85,12 @@ {@ $_visual_class[] = 'main'} {@ $_container_class[] = 'onepage'} + {@ $_onepage_header = true} {@ $_container_class[] = 'magazine'} {@ $_enable_unb = true} + {@ $_magazine_header = true} {@ $layout_info->menu_fixed = 'N'}
    @@ -98,11 +102,13 @@ {@ $_container_class[] = 'magazine'} + {@ $_magazine_header = true} {@ $_enable_unb = true} {@ $layout_info->menu_fixed = 'N'} {@ $_container_class[] = 'onepage'} + {@ $_onepage_header = true} {@ $_visual_class[] = 'sub_type3'} @@ -136,33 +142,13 @@ - - - - + - - - -

    {$lang->skip_to_content}

    @@ -185,18 +171,26 @@
    -

    - - - {$layout_info->logo_text} - - - XEDITION - - XEDITION Header : Magazine type +

    + {@ $_logo_img = $layout_info->logo_img} + + {@ $_logo_img = $layout_info->logo_img_magazine} + + + + + {$layout_info->logo_text} - XEDITION + + {@ $_logo_img = $layout_info->logo_img_transparent} + + {$layout_info->logo_text} + + {@ $_logo_img = 'logo.png'} + {@ $_logo_img = 'm_logo.png'} + {@ $_logo_img = 's_logo.png'} + XEDITION

    @@ -282,8 +276,11 @@
    - - + {@ $_subheader_img = 'sub_banner_01.jpg'} + {@ $_subheader_img = 'sub_banner_02.jpg'} + {@ $_subheader_img = 'sub_banner_xeicon.jpg'} + +

    {$sub_header_title}

    From a78c21d4c44d1330cce113a267313c518ed017c4 Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 8 Apr 2015 09:41:07 +0900 Subject: [PATCH 165/265] =?UTF-8?q?#1376=20XEIcon=20CSS=20=EA=B2=BD?= =?UTF-8?q?=EB=A1=9C=20=EC=88=98=EC=A0=95=20=EB=B0=8F=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/board/skins/xedition/_header.html | 2 +- modules/board/skins/xedition/board.default.js | 2 ++ modules/board/skins/xedition/icoSet.gif | Bin 2361 -> 2324 bytes .../skins/xedition/ico_default_360.png.jpeg | Bin 2013 -> 0 bytes modules/board/skins/xedition/profile.gif | Bin 1390 -> 989 bytes 5 files changed, 3 insertions(+), 1 deletion(-) delete mode 100644 modules/board/skins/xedition/ico_default_360.png.jpeg diff --git a/modules/board/skins/xedition/_header.html b/modules/board/skins/xedition/_header.html index 8722ffa4a..b2bcd4948 100644 --- a/modules/board/skins/xedition/_header.html +++ b/modules/board/skins/xedition/_header.html @@ -1,6 +1,6 @@ - + {@ $order_type = "asc"; } diff --git a/modules/board/skins/xedition/board.default.js b/modules/board/skins/xedition/board.default.js index dae3818c4..29326273a 100644 --- a/modules/board/skins/xedition/board.default.js +++ b/modules/board/skins/xedition/board.default.js @@ -1,4 +1,5 @@ jQuery(function($) { + "use strict"; // hide last tag $('.read_footer .tags span:last-child').hide(); // user input text blur/focus/change @@ -31,6 +32,7 @@ jQuery(function($) { // SNS post (function($) { + "use strict"; $.fn.snspost = function(opts) { var loc = ''; opts = $.extend({}, {type:'twitter', event:'click', content:''}, opts); diff --git a/modules/board/skins/xedition/icoSet.gif b/modules/board/skins/xedition/icoSet.gif index a71c8f6da75d351eab9bcf47f2d4aab377f50ccd..dd9d6346cb6020f1e9e41ad67bd6c764912f63ad 100644 GIT binary patch delta 2186 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 H0C4;tQS^lX From ea4a79f49cde1c7b332aa69cde9ac61ff9d0d64b Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 8 Apr 2015 09:45:14 +0900 Subject: [PATCH 166/265] =?UTF-8?q?=EC=B6=94=EA=B0=80/=EC=82=AD=EC=A0=9C?= =?UTF-8?q?=EB=90=9C=20=ED=8C=8C=EC=9D=BC=EB=93=A4=EC=97=90=20=EB=8C=80?= =?UTF-8?q?=ED=95=9C=20grunt=20task=20=EC=84=A4=EC=A0=95=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gruntfile.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Gruntfile.js b/Gruntfile.js index 17afdb7ff..d91b423d4 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -112,7 +112,6 @@ module.exports = function(grunt) { }, 'layout': { files: { - 'layouts/xedition/js/jquery.countTo.min.js': ['layouts/xedition/js/jquery.countTo.js'], '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'], @@ -151,8 +150,10 @@ module.exports = function(grunt) { files: { 'layouts/xedition/css/camera.min.css': ['layouts/xedition/css/camera.css'], 'layouts/xedition/css/layout.min.css': ['layouts/xedition/css/layout.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'], } }, }, @@ -162,6 +163,7 @@ module.exports = function(grunt) { 'common/js/*.js', 'modules/admin/tpl/js/*.js', 'modules/board/tpl/js/*.js', + 'modules/board/skins/*/*.js', 'modules/editor/tpl/js/*.js', 'modules/menu/tpl/js/*.js', 'modules/widget/tpl/js/*.js', From 7948a5c3fc0f2adc79d63ebdd6a9060a54ab76cb Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 8 Apr 2015 09:45:55 +0900 Subject: [PATCH 167/265] MINIFY --- common/js/jquery-1.x.min.js | 3 +-- common/js/jquery.min.js | 3 +-- layouts/xedition/css/camera.min.css | 1 + layouts/xedition/css/layout.min.css | 1 + layouts/xedition/css/webfont.min.css | 1 + layouts/xedition/css/welcome.min.css | 1 + layouts/xedition/css/widget.login.min.css | 1 + layouts/xedition/css/xeicon.min.css | 1 + layouts/xedition/js/jquery.easing.min.js | 1 + layouts/xedition/js/layout.min.js | 1 + layouts/xedition/js/welcome.min.js | 1 + modules/board/skins/xedition/board.default.min.css | 1 + modules/board/skins/xedition/board.default.min.js | 1 + modules/editor/tpl/js/editor.app.min.js | 2 +- 14 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 layouts/xedition/css/camera.min.css create mode 100644 layouts/xedition/css/layout.min.css create mode 100644 layouts/xedition/css/webfont.min.css create mode 100644 layouts/xedition/css/welcome.min.css create mode 100644 layouts/xedition/css/widget.login.min.css create mode 100644 layouts/xedition/css/xeicon.min.css create mode 100644 layouts/xedition/js/jquery.easing.min.js create mode 100644 layouts/xedition/js/layout.min.js create mode 100644 layouts/xedition/js/welcome.min.js create mode 100644 modules/board/skins/xedition/board.default.min.css create mode 100644 modules/board/skins/xedition/board.default.min.js diff --git a/common/js/jquery-1.x.min.js b/common/js/jquery-1.x.min.js index e0ec1680f..71f284725 100644 --- a/common/js/jquery-1.x.min.js +++ b/common/js/jquery-1.x.min.js @@ -1,8 +1,7 @@ /*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license -//@ sourceMappingURL=jquery-1.10.2.min.map */ (function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="
    ",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="

    a",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="
    t
    ",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
    ",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t }({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:x.support.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("

    IFrame

    ', - '
    <iframe src="path/to/file.html"></iframe>

    IFrame

    ' - ), - // expression - array( - '
    ', - '
    ' - ), - // no quotes and no semicolon - http://ha.ckers.org/xss.html - array( - '', - '' - ), - // embedded encoded tab to break up XSS - http://ha.ckers.org/xss.html - array( - '', - '' - ), - // issue 178 - array( - "", - '' - ), - // issue 534 - array( - '*/" onerror="console.log(\'Yet another XSS\')">', - '*/" onerror="console.log(\'Yet another XSS\')">' - ), - // issue 602 - array( - 'test', - 'test' - ) - ); - } - - /** - * @dataProvider xssProvider - */ - public function testXSS($source, $expected) - { - $result = removeHackTag($source); - $this->assertEquals($result, $expected); - } -} diff --git a/tests/classes/context/Context.mock.php b/tests/classes/context/Context.mock.php deleted file mode 100644 index 7b577a9c7..000000000 --- a/tests/classes/context/Context.mock.php +++ /dev/null @@ -1,74 +0,0 @@ - */ - -if(!defined('FOLLOW_REQUEST_SSL')) define('FOLLOW_REQUEST_SSL',0); -if(!defined('ENFORCE_SSL')) define('ENFORCE_SSL',1); -if(!defined('RELEASE_SSL')) define('RELEASE_SSL',2); -if(!defined('MOCK_CONTEXT')) define('MOCK_CONTEXT', 1); - -class Context -{ - public static $mock_vars = array(); - private static $useCdn = 'N'; - private static $requestUrl = 'http://www.test.com'; - - public function gets() { - $args = func_get_args(); - $output = new stdClass; - - foreach($args as $name) { - $output->{$name} = self::$mock_vars[$name]; - } - - return $output; - } - - public function get($name) { - return array_key_exists($name, self::$mock_vars)?self::$mock_vars[$name]:''; - } - - public function getRequestVars() { - return self::$mock_vars; - } - - public function set($name, $value) { - self::$mock_vars[$name] = $value; - } - - public function getLangType() { - return 'en'; - } - - public function getLang($str) { - return $str; - } - - public function truncate() { - self::$mock_vars = array(); - } - - public static function setUseCdn($useCdn) - { - self::$useCdn = $useCdn != 'Y' ? 'N':'Y'; - } - - public static function getDBInfo() { - $dbInfo = new stdClass(); - $dbInfo->use_cdn = self::$useCdn; - - return $dbInfo; - } - - - public static function setRequestUrl($url) - { - self::$requestUrl= $url; - } - - public static function getRequestUrl() { - return self::$requestUrl; - } -} - -/* End of file Context.mock.php */ -/* Location: ./tests/classes/context/Context.mock.php */ diff --git a/tests/classes/context/ContextTest.php b/tests/classes/context/ContextTest.php deleted file mode 100644 index d4551b4d6..000000000 --- a/tests/classes/context/ContextTest.php +++ /dev/null @@ -1,86 +0,0 @@ - */ - -if(!defined('__XE__')) require dirname(__FILE__).'/../../Bootstrap.php'; - -require_once _XE_PATH_.'classes/context/Context.class.php'; -require_once _XE_PATH_.'classes/handler/Handler.class.php'; -require_once _XE_PATH_.'classes/frontendfile/FrontEndFileHandler.class.php'; - -class ContextTest extends PHPUnit_Framework_TestCase -{ - /** - * test whether the singleton works - */ - public function testGetInstance() - { - $this->assertInstanceOf('Context', Context::getInstance()); - $this->assertSame(Context::getInstance(), Context::getInstance()); - } - - public function testSetGetVars() - { - $this->assertSame(Context::get('var1'), null); - Context::set('var1', 'val1'); - $this->assertSame(Context::get('var1'), 'val1'); - - Context::set('var2', 'val2'); - $this->assertSame(Context::get('var2'), 'val2'); - Context::set('var3', 'val3'); - $data = new stdClass; - $data->var1 = 'val1'; - $data->var2 = 'val2'; - $this->assertEquals(Context::gets('var1','var2'), $data); - $data->var3 = 'val3'; - $this->assertEquals(Context::getAll(), $data); - } - - public function testAddGetBodyClass() - { - $this->assertEquals(Context::getBodyClass(), ''); - Context::addBodyClass('red'); - $this->assertEquals(Context::getBodyClass(), ' class="red"'); - Context::addBodyClass('green'); - $this->assertEquals(Context::getBodyClass(), ' class="red green"'); - Context::addBodyClass('blue'); - $this->assertEquals(Context::getBodyClass(), ' class="red green blue"'); - - // remove duplicated class - Context::addBodyClass('red'); - $this->assertEquals(Context::getBodyClass(), ' class="red green blue"'); - } - - public function testRequsetResponseMethod() - { - $this->assertEquals(Context::getRequestMethod(), 'GET'); - - $_SERVER['REQUEST_METHOD'] = 'POST'; - Context::setRequestMethod(); - $this->assertEquals(Context::getRequestMethod(), 'POST'); - - $GLOBALS['HTTP_RAW_POST_DATA'] = 'abcde'; - Context::setRequestMethod(); - $this->assertEquals(Context::getRequestMethod(), 'XMLRPC'); - - $_SERVER['CONTENT_TYPE'] = 'application/json'; - Context::setRequestMethod(); - $this->assertEquals(Context::getRequestMethod(), 'JSON'); - - Context::setRequestMethod('POST'); - $this->assertEquals(Context::getRequestMethod(), 'POST'); - - $this->assertEquals(Context::getResponseMethod(), 'HTML'); - Context::setRequestMethod('JSON'); - $this->assertEquals(Context::getResponseMethod(), 'JSON'); - - Context::setResponseMethod('WRONG_TYPE'); - $this->assertEquals(Context::getResponseMethod(), 'HTML'); - Context::setResponseMethod('XMLRPC'); - $this->assertEquals(Context::getResponseMethod(), 'XMLRPC'); - Context::setResponseMethod('HTML'); - $this->assertEquals(Context::getResponseMethod(), 'HTML'); - } -} - -/* End of file ContextTest.php */ -/* Location: ./tests/classes/context/ContextTest.php */ diff --git a/tests/classes/db/Helper.class.php b/tests/classes/db/Helper.class.php deleted file mode 100644 index e3aa4ad02..000000000 --- a/tests/classes/db/Helper.class.php +++ /dev/null @@ -1,24 +0,0 @@ - */ - - class Helper { - static function cleanString($query){ - $query = trim(preg_replace('/\s+/', ' ',$query)); - $query = preg_replace('/\t+/', '',$query); - $query = str_replace(" , ", ', ', $query); - $query = str_replace(" ,", ',', $query); - $query = str_replace("( ", '(', $query); - $query = str_replace(" )", ')', $query); - $query = str_replace(array("\r", "\r\n", "\n"), '*', $query); - $query = strtolower($query); - return $query; - } - - static function getXmlObject($xml_file){ - $xmlParser = XmlQueryParser::getInstance(); - return $xmlParser->getXmlFileContent($xml_file); - } - - } - -?> diff --git a/tests/classes/db/QueryTester.class.php b/tests/classes/db/QueryTester.class.php deleted file mode 100644 index f827529da..000000000 --- a/tests/classes/db/QueryTester.class.php +++ /dev/null @@ -1,321 +0,0 @@ - */ - -// Only supports queries inside modules for now - - class QueryTester { - - function QueryTester(){ - - } - - function getQueryPath($type, $name, $query_name){ - return _XE_PATH_ . $type ."/".$name."/queries/" . $query_name . ".xml"; - } - - function getNewParserOutput($xml_file){ - $newXmlQueryParser = new XmlQueryParser(); - $xml_obj = $newXmlQueryParser->getXmlFileContent($xml_file); - $parser = new QueryParser($xml_obj->query); - return $parser->toString(); - } - - function getOldParserOutput($query_id, $xml_file){ - $cache_file = _TEST_PATH_ . "cache/".$query_id.'.cache.php'; - $parser = new OldXmlQueryParser(); - $parser->parse($query_id, $xml_file, $cache_file); - $buff = FileHandler::readFile($cache_file); - return $buff; - } - - function cleanOutputAndAddArgs($outputString, $argsString = ''){ - $outputString = str_replace("", "", $outputString); - $outputString = $argsString . $outputString; - return $outputString; - } - - function getXmlFileContent($xml_file){ - return FileHandler::readFile($xml_file); - } - - function printOutput($output){ - if(is_object($output)) { - var_dump($output); return; - } - $output = htmlspecialchars($output, ENT_COMPAT | ENT_HTML401, 'UTF-8', false); - - $output = preg_replace('/select/i', 'SELECT', $output); - $output = preg_replace('/from/i', '
    FROM', $output); - $output = preg_replace('/where/i', '
    WHERE', $output); - $output = preg_replace('/group by/i', '
    GROUP BY', $output); - $output = preg_replace('/order by/i', '
    ORDER BY', $output); - - $output = str_replace("\n", "
    ", $output); - - echo '
    '
    -					.$output
    -				.'
    '; - } - - function getNewParserOutputString($xml_file, $argsString){ - $outputString = ''; - $outputString = $this->getNewParserOutput($xml_file); - $outputString = $this->cleanOutputAndAddArgs($outputString, $argsString); - return $outputString; - } - - function getNewParserQuery($outputString){ - //echo $outputString; - //exit(0); - $output = eval($outputString); - if(is_a($output, 'Object')) - if(!$output->toBool()) return("Date incorecte! Query-ul nu a putut fi executat."); - $db = new DBCubrid(); - if($output->getAction() == 'select') - return $db->getSelectSql($output); - else if($output->getAction() == 'insert') - return $db->getInsertSql($output); - else if($output->getAction() == 'update') - return $db->getUpdateSql($output); - else if($output->getAction() == 'delete') - return $db->getDeleteSql($output); - } - - function testNewParser($xml_file, $escape_char, $argsString, $show_output_string){ - $outputString = $this->getNewParserOutputString($xml_file, $escape_char, $argsString); - $query = $this->getNewParserQuery($outputString); - - echo '
    '; - if($show_output_string){ - echo ''; - } - - echo ''; - echo ''; - } - - function getOldParserOutputString($query_id, $xml_file, $argsString){ - $outputString = $this->getOldParserOutput($query_id, $xml_file); - $outputString = $this->cleanOutputAndAddArgs($outputString, $argsString); - return $outputString; - } - - function getOldParserQuery($outputString){ - $output = eval($outputString); - if(is_a($output, 'Object')) - if(!$output->toBool()) exit("Date incorecte! Query-ul nu a putut fi executat."); - - /* SQL Server - * - $db = new DBMssql(false); - if($output->action == "select") - return $db->_executeSelectAct($output); - else if($output->action == "insert") - return $db->_executeInsertAct($output); - else if($output->action == "delete") - return $db->_executeDeleteAct($output); - else if($output->action == "update") - return $db->_executeUpdateAct($output); - */ - - /* - * Mysql - */ - $db = new DBMysql(false); - if($output->action == "select") - $db->_executeSelectAct($output); - else if($output->action == "insert") - $db->_executeInsertAct($output); - else if($output->action == "delete") - $db->_executeDeleteAct($output); - else if($output->action == "update") - $db->_executeUpdateAct($output); - return $db->getLatestQuery(); - } - - function testOldParser($query_id, $xml_file, $argsString, $show_output_string){ - $outputString = $this->getOldParserOutputString($query_id, $xml_file, $argsString); - $query = $this->getOldParserQuery($outputString); - - - echo ''; - if($show_output_string){ - echo ''; - } - - echo ''; - echo ''; - } - - function showXmlInputFile($xml_file){ - echo ''; - echo ''; - } - - function test($query_id, $xml_file, $argsString, $show_output_string, $escape_char = '"'){ - echo "

    $query_id

    "; - echo '
    '; - $this->printOutput($outputString); - echo ''; - $this->printOutput($query); - echo '
    '; - $this->printOutput($outputString); - echo ''; - $this->printOutput($query); - echo '
    '; - $xml_file_content = $this->getXmlFileContent($xml_file); - $this->printOutput($xml_file_content); - echo '
    '; - - $this->showXmlInputFile($xml_file); - - $this->testNewParser($xml_file, $escape_char, $argsString, $show_output_string); - - //$this->testOldParser($query_id, $xml_file, $argsString, $show_output_string); - - echo '
    '; - } - - function test_addon_getAddonInfo($show_output_string = false){ - $argsString = '$args->addon = "captcha";'; - $this->test("modules.addon.getAddonInfo" - , $this->getQueryPath("modules", "addon", "getAddonInfo") - , $argsString - , $show_output_string); - } - - function test_addon_getAddons($show_output_string = false){ - $argsString = ''; - $this->test("modules.addon.getAddons" - , $this->getQueryPath("modules", "addon", "getAddons") - , $argsString - , $show_output_string); - } - - function test_admin_getCommentCount($show_output_string = false){ - $argsString = ''; - $this->test("modules.admin.getCommentCount" - , $this->getQueryPath("modules", "admin", "getCommentCount") - , $argsString - , $show_output_string); - } - - function test_admin_getCommentDeclaredStatus($show_output_string = false){ - $argsString = '$args->date = "20110411";'; - $this->test("modules.admin.getCommentDeclaredStatus" - , $this->getQueryPath("modules", "admin", "getCommentDeclaredStatus") - , $argsString - , $show_output_string); - } - - function test_module_getDefaultModules($show_output_string = false){ - $argsString = ''; - $this->test("modules.module.getDefaultModules" - , $this->getQueryPath("modules", "module", "getDefaultModules") - , $argsString - , $show_output_string); - } - - function test_module_getModuleCategories($show_output_string = false){ - $argsString = ''; - $this->test("modules.module.getModuleCategories" - , $this->getQueryPath("modules", "module", "getModuleCategories") - , $argsString - , $show_output_string); - } - - function test_module_getNonuniqueDomains($show_output_string = false){ - $argsString = ''; - $this->test("modules.module.getNonuniqueDomains" - , $this->getQueryPath("modules", "module", "getNonuniqueDomains") - , $argsString - , $show_output_string); - } - - function test_module_getAdminId($show_output_string = false){ - $argsString = '$args->module_srl = 23;'; - $this->test("modules.module.getAdminId" - , $this->getQueryPath("modules", "module", "getAdminId") - , $argsString - , $show_output_string); - } - function test_module_getSiteInfo($show_output_string = false){ - $argsString = '$args->site_srl = 0;'; - $this->test("modules.module.getSiteInfo" - , $this->getQueryPath("modules", "module", "getSiteInfo") - , $argsString - , $show_output_string); - } - function test_module_insertModule($show_output_string = false){ - $argsString = ' $args->module_category_srl = 0; - $args->browser_title = "test"; - $args->layout_srl = 0; - $args->mlayout_srl = 0; - $args->module = "page"; - $args->mid = "test"; - $args->site_srl = 0; - $args->module_srl = 47374;'; - $this->test("modules.module.insertModule" - , $this->getQueryPath("modules", "module", "insertModule") - , $argsString - , $show_output_string); - } - function test_module_updateModule($show_output_string = false){ - $argsString = ' $args->module_category_srl = 0; - $args->browser_title = "test"; - $args->layout_srl = 0; - $args->mlayout_srl = 0; - $args->module = "page"; - $args->mid = "test"; - $args->use_mobile = ""; - $args->site_srl = 0; - $args->module_srl = 47374;'; - $this->test("modules.module.updateModule" - , $this->getQueryPath("modules", "module", "updateModule") - , $argsString - , $show_output_string); - } - function test_admin_deleteActionForward($show_output_string = false){ - $argsString = '$args->module = "page"; - $args->type = "page"; - $args->act = "tata";'; - $this->test("modules.admin.deleteActionForward" - , $this->getQueryPath("modules", "module", "deleteActionForward") - , $argsString - , $show_output_string); - } - - function test_member_getAutologin($show_output_string = false){ - $argsString = '$args->autologin_key = 10;'; - $this->test("modules.member.getAutologin" - , $this->getQueryPath("modules", "member", "getAutologin") - , $argsString - , $show_output_string); - } - - function test_opage_getOpageList($show_output_string = false){ - $argsString = '$args->s_title = "yuhuu"; - $args->module = 12;'; - $this->test("modules.opage.getOpageList" - , $this->getQueryPath("modules", "opage", "getOpageList") - , $argsString - , $show_output_string); - } - function test_getPageList($show_output_string = false){ - $argsString = '$args->sort_index = "module_srl"; - $args->page_count = 10; - $args->s_module_category_srl = 0; - $args->s_mid = "test"; - $args->s_browser_title = "caca";'; - - $this->test("modules.page.getPageList" - , $this->getQueryPath("modules", "page", "getPageList") - , $argsString - , $show_output_string); - } - - - - } -?> diff --git a/tests/classes/db/classes/db/queryparts/condition/ConditionWithArgumentTest.php b/tests/classes/db/classes/db/queryparts/condition/ConditionWithArgumentTest.php deleted file mode 100644 index 4b99ab824..000000000 --- a/tests/classes/db/classes/db/queryparts/condition/ConditionWithArgumentTest.php +++ /dev/null @@ -1,93 +0,0 @@ - */ - -/** - * Test class for ConditionWithArgument. - */ -class ConditionWithArgumentTest extends CubridTest { - - /** - * Checks equal operation - */ - public function testConditionString_Equal_WithoutPipe_NumericValue() { - $member_srl_argument = new ConditionArgument('"member_srl"', 20, 'equal'); - - $tag = new ConditionWithArgument('"member_srl"', $member_srl_argument, 'equal', null); - - $this->assertEquals(' "member_srl" = 20', $tag->toString()); - } - - /** - * Checks equal operation - */ - public function testConditionString_Equal_WithPipe_NumericValue() { - $member_srl_argument = new ConditionArgument('"member_srl"', 20, 'equal'); - - $tag = new ConditionWithArgument('"member_srl"', $member_srl_argument, 'equal', 'and'); - - $this->assertEquals('and "member_srl" = 20', $tag->toString()); - } - - /** - * Checks condition returns nothing when argument is not valid - */ - public function testConditionString_InvalidArgument() { - $member_srl_argument = new ConditionArgument('"member_srl"', null, 'equal'); - $member_srl_argument->checkNotNull(); - - $tag = new ConditionWithArgument('"member_srl"', $member_srl_argument, 'equal', 'and'); - - $this->assertEquals('', $tag->toString()); - } - - /** - * Checks "in" operation - */ - public function testConditionString_In_VarcharArray() { - $member_srl_argument = new ConditionArgument('"member_srl"', array('a', 'b', 'c'), 'in'); - $member_srl_argument->createConditionValue(); - $member_srl_argument->setColumnType('varchar'); - - $tag = new ConditionWithArgument('"member_srl"', $member_srl_argument, 'in'); - - $this->assertEquals(' "member_srl" in (\'a\',\'b\',\'c\')', $tag->toString()); - } - - /** - * Checks and operation - */ - public function testConditionString_And() { - $tag = new ConditionWithoutArgument('"member_srl"', "20", 'and', null); - - $this->assertEquals(' "member_srl" & 20', $tag->toString()); - } - - /** - * Checks or operation - */ - public function testConditionString_Or() { - $tag = new ConditionWithoutArgument('"member_srl"', "20", 'or', null); - - $this->assertEquals(' "member_srl" | 20', $tag->toString()); - } - - /** - * Checks xor operation - */ - public function testConditionString_Xor() { - $tag = new ConditionWithoutArgument('"member_srl"', "20", 'xor', null); - - $this->assertEquals(' "member_srl" ^ 20', $tag->toString()); - } - - /** - * Checks not operation - */ - public function testConditionString_Not() { - $tag = new ConditionWithoutArgument('"member_srl"', "20", 'not', null); - - $this->assertEquals(' "member_srl" ~ 20', $tag->toString()); - } -} - -?> diff --git a/tests/classes/db/classes/db/queryparts/table/TableTest.php b/tests/classes/db/classes/db/queryparts/table/TableTest.php deleted file mode 100644 index 96ef0f230..000000000 --- a/tests/classes/db/classes/db/queryparts/table/TableTest.php +++ /dev/null @@ -1,43 +0,0 @@ - */ - - /** - * Test class for Table. - */ -class TableTest extends CubridTest -{ - /** - * @var Table - */ - protected $object; - - protected function setUp() - { - $this->object = new Table('"xe_member"', '"m"'); - } - - protected function tearDown() - { - } - - public function testToString() - { - $this->assertEquals('"xe_member" as "m"', $this->object->toString()); - } - - public function testGetName() - { - $this->assertEquals('"xe_member"', $this->object->getName()); - } - - public function testGetAlias() - { - $this->assertEquals('"m"', $this->object->getAlias()); - } - - public function testIsJoinTable() - { - $this->assertEquals(false, $this->object->isJoinTable()); - } -} -?> diff --git a/tests/classes/db/classes/xml/xmlquery/argument/ArgumentTest.php b/tests/classes/db/classes/xml/xmlquery/argument/ArgumentTest.php deleted file mode 100644 index ca44d5dda..000000000 --- a/tests/classes/db/classes/xml/xmlquery/argument/ArgumentTest.php +++ /dev/null @@ -1,281 +0,0 @@ - */ - -/** - * Test class for Argument. - * Generated by PHPUnit on 2011-07-07 at 16:51:29. - */ -class ArgumentTest extends CubridTest { - - public function testErrorMessageIsSent_NotNullCheck(){ - global $lang; - include(_TEST_PATH_ . "classes/xml/xmlquery/argument/data/en.lang.php"); - $page_argument = new Argument('page', $args->page); - $page_argument->checkNotNull(); - $this->assertFalse($page_argument->isValid()); - $this->assertEquals("Please input a value for page", $page_argument->getErrorMessage()->message); - } - - public function testErrorMessageIsSent_MinLengthCheck(){ - global $lang; - include(_TEST_PATH_ . "classes/xml/xmlquery/argument/data/en.lang.php"); - - $args->page = '123'; - $page_argument = new Argument('page', $args->page); - $page_argument->checkMinLength(6); - $this->assertFalse($page_argument->isValid()); - $this->assertEquals("Please align the text length of page", $page_argument->getErrorMessage()->message); - } - - public function testErrorMessageIsSent_MaxLengthCheck(){ - global $lang; - include(_TEST_PATH_ . "classes/xml/xmlquery/argument/data/en.lang.php"); - - $args->page = '123'; - $page_argument = new Argument('page', $args->page); - $page_argument->checkMaxLength(2); - $this->assertFalse($page_argument->isValid()); - $this->assertEquals("Please align the text length of page", $page_argument->getErrorMessage()->message); - } - - /** - * @todo Implement testGetType(). - */ - public function testGetType() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @todo Implement testSetColumnType(). - */ - public function testSetColumnType() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @todo Implement testGetName(). - */ - public function testGetName() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @todo Implement testGetValue(). - */ - public function testGetValue() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @todo Implement testGetUnescapedValue(). - */ - public function testGetUnescapedValue() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @todo Implement testToString(). - */ - public function testToString() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @todo Implement testEscapeValue(). - */ - public function testEscapeValue() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @todo Implement testIsValid(). - */ - public function testIsValid() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @todo Implement testGetErrorMessage(). - */ - public function testGetErrorMessage() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @todo Implement testEnsureDefaultValue(). - */ - public function testEnsureDefaultValue() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @todo Implement testCheckFilter(). - */ - public function testCheckFilter() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @todo Implement testCheckMaxLength(). - */ - public function testCheckMaxLength() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @todo Implement testCheckMinLength(). - */ - public function testCheckMinLength() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * Checks that argument is valid after a notnull check when value is not null - */ - public function testCheckNotNullWhenNotNull() { - $member_srl_argument = new ConditionArgument('member_srl', 20, 'equal'); - $member_srl_argument->checkNotNull(); - - $this->assertEquals(true, $member_srl_argument->isValid()); - } - - /** - * Checks that argument becomes invalid after a notnull check when value is null - */ - public function testCheckNotNullWhenNull() { - $member_srl_argument = new ConditionArgument('member_srl', null, 'equal'); - $member_srl_argument->checkNotNull(); - - $this->assertEquals(false, $member_srl_argument->isValid()); - } - - /** - * Checks that argument value stays the same when both user value and default value are given - */ - public function testCheckDefaultValueWhenNotNull() { - $member_srl_argument = new ConditionArgument('member_srl', 20, 'equal'); - $member_srl_argument->ensureDefaultValue(25); - - $this->assertEquals(20, $member_srl_argument->getValue()); - } - - /** - * Checks that argument value gets set when user value is null and default value is specified - */ - public function testCheckDefaultValueWhenNull() { - $member_srl_argument = new ConditionArgument('member_srl', null, 'equal'); - $member_srl_argument->ensureDefaultValue(25); - - $this->assertEquals(25, $member_srl_argument->getValue()); - } - - /** - * Checks like prefix operation - */ - public function testCreateConditionValue_LikePrefix() { - $member_srl_argument = new ConditionArgument('"mid"', 'forum', 'like_prefix'); - $member_srl_argument->createConditionValue(); - - $this->assertEquals('\'forum%\'', $member_srl_argument->getValue()); - } - - /** - * Checks like tail operation - */ - public function testCreateConditionValue_LikeTail() { - $member_srl_argument = new ConditionArgument('"mid"', 'forum', 'like_tail'); - $member_srl_argument->createConditionValue(); - - $this->assertEquals('\'%forum\'', $member_srl_argument->getValue()); - } - - /** - * Checks like operation - */ - public function testCreateConditionValue_Like() { - $member_srl_argument = new ConditionArgument('"mid"', 'forum', 'like'); - $member_srl_argument->createConditionValue(); - - $this->assertEquals('\'%forum%\'', $member_srl_argument->getValue()); - } - - - /** - * Checks in operation - */ - public function testCreateConditionValue_In_StringValues() { - $member_srl_argument = new ConditionArgument('"mid"', array('forum', 'board'), 'in'); - $member_srl_argument->createConditionValue(); - $member_srl_argument->setColumnType('varchar'); - - $this->assertEquals('(\'forum\',\'board\')', $member_srl_argument->getValue()); - } - - /** - * Checks in operation - */ - public function testCreateConditionValue_In_NumericValues() { - $member_srl_argument = new ConditionArgument('"module_srl"', array(3, 21), 'in'); - $member_srl_argument->setColumnType('number'); - $member_srl_argument->createConditionValue(); - - $this->assertEquals('(3,21)', $member_srl_argument->getValue()); - } - - public function testEnsureDefaultValueWithEmptyString(){ - $homepage_argument = new Argument('homepage', ''); - $homepage_argument->ensureDefaultValue(''); - $homepage_argument->checkFilter('homepage'); - if(!$homepage_argument->isValid()) return $homepage_argument->getErrorMessage(); - $homepage_argument->setColumnType('varchar'); - - - $this->assertEquals('\'\'', $homepage_argument->getValue()); - } - - public function testDefaultValue() { - $default = new DefaultValue("var", ''); - $this->assertEquals('\'\'', $default->toString()); - } -} - -?> diff --git a/tests/classes/db/classes/xml/xmlquery/argument/ConditionArgumentTest.php b/tests/classes/db/classes/xml/xmlquery/argument/ConditionArgumentTest.php deleted file mode 100644 index 23ded1838..000000000 --- a/tests/classes/db/classes/xml/xmlquery/argument/ConditionArgumentTest.php +++ /dev/null @@ -1,65 +0,0 @@ - */ - -/** - * Test class for ConditionArgument. - */ -class ConditionArgumentTest extends CubridTest { - - function testIn(){ - $args->document_srl = 1234; - $document_srl_argument = new ConditionArgument('document_srl', $args->document_srl, 'in'); - $document_srl_argument->checkNotNull(); - $document_srl_argument->createConditionValue(); - if(!$document_srl_argument->isValid()) return $document_srl_argument->getErrorMessage(); - $document_srl_argument->setColumnType('number'); - - $condition = new ConditionWithArgument('"extra_vars"."document_srl"',$document_srl_argument,"in", 'and'); - $this->assertEquals('and "extra_vars"."document_srl" in (1234)', $condition->toString()); - } - - function testZeroValue(){ - $args->site_srl = 0; - $site_srl_argument = new ConditionArgument('site_srl', $args->site_srl, 'equal'); - $site_srl_argument->checkNotNull(); - $site_srl_argument->createConditionValue(); - if(!$site_srl_argument->isValid()) return $site_srl_argument->getErrorMessage(); - $site_srl_argument->setColumnType('number'); - - $condition = new ConditionWithArgument('"sites"."site_srl"',$site_srl_argument,"equal"); - $this->assertEquals(' "sites"."site_srl" = 0', $condition->toString()); - } - - /** - * @todo Implement testCreateConditionValue(). - */ - public function testCreateConditionValue() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @todo Implement testGetType(). - */ - public function testGetType() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @todo Implement testSetColumnType(). - */ - public function testSetColumnType() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - -} - -?> diff --git a/tests/classes/db/classes/xml/xmlquery/argument/data/en.lang.php b/tests/classes/db/classes/xml/xmlquery/argument/data/en.lang.php deleted file mode 100644 index 9d07584f7..000000000 --- a/tests/classes/db/classes/xml/xmlquery/argument/data/en.lang.php +++ /dev/null @@ -1,323 +0,0 @@ - */ -/** - * @file common/lang/en.lang.php - * @author NAVER (developers@xpressengine.com) - * @brief English Language Pack (Only basic words are included here) - **/ - -// words for action, which is basically used -$lang->cmd_write = 'Write'; -$lang->cmd_reply = 'Reply'; -$lang->cmd_delete = 'Delete'; -$lang->cmd_modify = 'Modify'; -$lang->cmd_edit = 'Edit'; -$lang->cmd_view = 'View'; -$lang->cmd_view_all = 'View All'; -$lang->cmd_list = 'List'; -$lang->cmd_prev = 'Prev'; -$lang->cmd_next = 'Next'; -$lang->cmd_send_trackback = 'Send Trackback'; -$lang->cmd_registration = $lang->cmd_submit = 'Submit'; -$lang->cmd_comment_registration = 'Add Comment'; -$lang->cmd_insert = 'Insert'; -$lang->cmd_save = 'Save'; -$lang->cmd_load = 'Load'; -$lang->cmd_input = 'Input'; -$lang->cmd_search = 'Search'; -$lang->cmd_find = 'Find'; -$lang->cmd_replace = 'Replace'; -$lang->cmd_confirm = 'Confirm'; -$lang->cmd_cancel = 'Cancel'; -$lang->cmd_back = 'Go Back'; -$lang->cmd_vote = 'Recommend'; -$lang->cmd_vote_down = 'Criticize'; -$lang->cmd_declare = 'Accuse'; -$lang->cmd_cancel_declare = 'Cancel Accuse'; -$lang->cmd_declared_list = 'Accusations List'; -$lang->cmd_copy = 'Copy'; -$lang->cmd_move = 'Move'; -$lang->cmd_move_up = 'Up'; -$lang->cmd_move_down = 'Down'; -$lang->cmd_add_indent = 'Indent'; -$lang->cmd_remove_indent = 'Outdent'; -$lang->cmd_management = 'Manage'; -$lang->cmd_make = 'Create'; -$lang->cmd_select = 'Select'; -$lang->cmd_select_all = 'Select All'; -$lang->cmd_unselect_all = 'Deselect All'; -$lang->cmd_reverse_all = 'Reverse'; -$lang->cmd_close_all = 'Close All'; -$lang->cmd_open_all = 'Open All'; -$lang->cmd_reload = 'Reload'; -$lang->cmd_close = 'Close'; -$lang->cmd_open = 'Open'; -$lang->cmd_setup = 'Configure'; -$lang->cmd_addition_setup = 'Additional Setup'; -$lang->cmd_option = 'Option'; -$lang->cmd_apply = 'Apply'; -$lang->cmd_open_calendar = 'Select a Date'; -$lang->cmd_send = 'Send'; -$lang->cmd_print = 'Print'; -$lang->cmd_scrap = 'Scrap'; -$lang->cmd_preview = 'Preview'; -$lang->cmd_reset = 'Reset'; -$lang->cmd_remake_cache = "Re-create cache file"; -$lang->cmd_publish = "Publish"; -$lang->cmd_layout_setup = 'Configure layout'; -$lang->cmd_layout_edit = 'Edit layout'; -$lang->cmd_search_by_ipaddress = 'Search by IP Address'; -$lang->cmd_add_ip_to_spamfilter = 'Add IP to spamfilter'; - -$lang->enable = 'Enable'; -$lang->disable = 'Disable'; - -// Essential Words -$lang->menu = 'Menu'; -$lang->no = 'No.'; -$lang->notice = 'Notice'; -$lang->secret = 'Secret'; -$lang->category = $lang->category_srl = 'Category'; -$lang->none_category = 'None category'; -$lang->none_image = 'Image does not exist'; -$lang->document_srl = 'Doc. No.'; -$lang->user_id = 'User ID'; -$lang->author = 'Developer'; -$lang->password = 'Password'; -$lang->password1 = 'Password'; -$lang->password2 = 'Retype Password'; -$lang->admin_id = 'Admin ID'; -$lang->writer = 'Author'; -$lang->user_name = 'User Name'; -$lang->nick_name = 'Nick Name'; -$lang->email_address = 'Email'; -$lang->homepage = 'Homepage'; -$lang->blog = 'Blog'; -$lang->birthday = 'Birthday'; -$lang->browser_title = 'Browser Title'; -$lang->title = 'Subject'; -$lang->title_content = 'Subject+Content'; -$lang->topic = 'Topic'; -$lang->replies = 'Reply'; -$lang->content = 'Content'; -$lang->document = 'Article'; -$lang->comment = 'Comment'; -$lang->description = 'Description'; -$lang->trackback = 'Trackback'; -$lang->tag = 'Tag'; -$lang->allow_comment = 'Allow Comments'; -$lang->lock_comment = 'Block Comments'; -$lang->allow_trackback = 'Allow Trackbacks'; -$lang->uploaded_file = 'Attachment'; -$lang->grant = 'Permission'; -$lang->target = 'Target'; -$lang->total = 'Total'; -$lang->total_count = 'Count Total'; -$lang->ipaddress = 'IP Address'; -$lang->path = 'Path'; -$lang->cart = 'Selected Item'; -$lang->friend = 'Friends'; -$lang->notify = 'Notification'; -$lang->order_target = 'Align Target'; -$lang->order_type = 'Sorting Type'; -$lang->order_asc = 'ascend'; -$lang->order_desc = 'descend'; -$lang->file = 'file'; - -$lang->mid = 'Module Name'; -$lang->sid = 'Site Name'; -$lang->layout = 'Layout'; -$lang->mobile_layout = 'Mobile Layout'; -$lang->widget = 'Widget'; -$lang->module = 'Module'; -$lang->skin = 'Theme'; -$lang->mobile_skin = 'Mobile Theme'; -$lang->colorset = 'Colorset'; -$lang->extra_vars = 'Extra Vars'; - -$lang->domain = "Domain Name"; -$lang->url = "URL"; -$lang->document_url = 'Article URL'; -$lang->trackback_url = 'Trackback URL'; -$lang->blog_name = 'Blog Title'; -$lang->excerpt = 'Quotation'; - -$lang->document_count = 'Total Articles'; -$lang->page_count = 'Page Count'; -$lang->list_count = 'List Count'; -$lang->search_list_count = 'Search List Count'; -$lang->readed_count = 'Views'; -$lang->voted_count = 'Votes'; -$lang->comment_count = 'Comments'; -$lang->member_count = 'Member Count'; -$lang->date = 'Date'; -$lang->regdate = 'Registered Date'; -$lang->last_update = 'Last Update'; -$lang->last_post = 'Last Post'; -$lang->signup_date = 'Sign up Date'; -$lang->last_login = 'Last Sign in'; -$lang->first_page = 'First Page'; -$lang->last_page = 'Last Page'; -$lang->search_target = 'Target for Search'; -$lang->search_keyword = 'Keyword'; -$lang->is_default = 'Default'; - -$lang->no_documents = 'No Articles'; - -$lang->board_manager = 'Board Settings'; -$lang->member_manager = 'Member Settings'; -$lang->layout_manager = 'Layout Settings'; - -$lang->use = 'Use'; -$lang->notuse = 'Not use'; -$lang->not_exists = "Doesn't exist"; - -$lang->public = 'public'; -$lang->private = 'private'; - -$lang->unit_sec = 'sec'; -$lang->unit_min = 'min'; -$lang->unit_hour = 'hr'; -$lang->unit_day = 'th'; -$lang->unit_month = 'month'; -$lang->unit_year = 'year'; - -$lang->unit_week = array( - 'Monday' => 'Monday', - 'Tuesday' => 'Tuesday', - 'Wednesday' => 'Wednesday', - 'Thursday' => 'Thursday', - 'Friday' => 'Friday', - 'Saturday' => 'Saturday', - 'Sunday' => 'Sunday', -); - -$lang->unit_meridiem = array( - 'am' => 'am', - 'pm' => 'pm', - 'AM' => 'AM', - 'PM' => 'PM', -); - -$lang->time_gap = array( - 'min' => '%d minute ago', - 'mins' => '%d minutes ago', - 'hour' => '%d hour ago', - 'hours' => '%d hours ago', -); - -// Descriptions -$lang->about_tag = 'You may submit multiple tags by inserting commas(,) between each tag'; -$lang->about_layout = 'Layouts decorate the appearance of your modules. you can configure them from Layout menu on the top'; - -// Messages -$lang->msg_call_server = 'Requesting to the server, please wait'; -$lang->msg_db_not_setted = 'DB configuration has not been set'; -$lang->msg_dbconnect_failed = "Error has occurred while connecting DB.\nPlease check DB information again"; -$lang->msg_invalid_queryid = 'Specified query ID value is invalid'; -$lang->msg_not_permitted = 'You do not have permission to access'; -$lang->msg_input_password = 'Please input the password'; -$lang->msg_invalid_document = 'Invalid Article Number'; -$lang->msg_invalid_request = 'Invalid Request'; -$lang->msg_invalid_password = 'Invalid Password'; -$lang->msg_error_occured = 'An error has occured'; -$lang->msg_not_founded = 'Target could not be found'; -$lang->msg_no_result = 'Nothing found'; -$lang->msg_fail_to_request_open = 'Fail to open your request'; -$lang->msg_invalid_format = 'Invalid Format'; - -$lang->msg_not_permitted_act = 'You do not have permission to execute requested action'; -$lang->msg_module_does_not_exist = "Couldn't find the requested module.\nPlease contact the administrator."; -$lang->msg_module_is_not_standalone = 'Requested module cannot be executed independently'; -$lang->msg_default_url_is_not_defined = 'Default URL is not defined'; - -$lang->success_registed = 'Registered successfully'; -$lang->success_declared = 'Accused successfully'; -$lang->success_updated = 'Updated successfully'; -$lang->success_deleted = 'Deleted successfully'; -$lang->success_voted = 'Recommended successfully'; -$lang->success_blamed = 'Blamed successfully'; -$lang->success_moved = 'Moved successfully'; -$lang->success_sended = 'Sent successfully'; -$lang->success_reset = 'Reset successfully'; -$lang->success_leaved = 'All member data have been deleted completely.'; -$lang->success_saved = 'Saved successfully'; - -$lang->fail_to_delete = 'Could not be deleted'; -$lang->fail_to_move = 'Could not be moved'; - -$lang->failed_voted = 'Could not recommend'; -$lang->failed_blamed = 'Could not blame'; -$lang->failed_declared = 'Could not accuse'; -$lang->fail_to_delete_have_children = 'Please try again after removing replies first'; - -$lang->confirm_submit = 'Are you sure to submit?'; -$lang->confirm_logout = 'Are you sure to logout?'; -$lang->confirm_vote = 'Are you sure to recommend?'; -$lang->confirm_delete = 'Are you sure to delete?'; -$lang->confirm_move = 'Are you sure to move?'; -$lang->confirm_reset = 'Are you sure to reset?'; -$lang->confirm_leave = 'Are you sure to leave?'; -$lang->confirm_update = 'Are you sure to update?'; - -$lang->column_type = 'Column Type'; -$lang->column_type_list['text'] = 'one-line text'; -$lang->column_type_list['homepage'] = 'url'; -$lang->column_type_list['email_address'] = 'email'; -$lang->column_type_list['tel'] = 'phone number'; -$lang->column_type_list['textarea'] = 'multi-line textarea'; -$lang->column_type_list['checkbox'] = 'checkbox (multiple selection)'; -$lang->column_type_list['select'] = 'select box (single selection)'; -$lang->column_type_list['radio'] = 'radio button (radio)'; -$lang->column_type_list['kr_zip'] = 'zip code (Korean)'; -$lang->column_type_list['date'] = 'date (yyyy/mm/dd)'; -//$lang->column_type_list['jp_zip'] = 'zip code (Japanese)'; -$lang->column_name = 'Column Name'; -$lang->column_title = 'Column Title'; -$lang->default_value = 'Default Value'; -$lang->is_active = 'Active'; -$lang->is_required = 'Required Field'; -$lang->eid = 'Name of extra variable'; - -// ftp-related -$lang->ftp_form_title = 'FTP Account Information'; -$lang->ftp = 'FTP'; -$lang->ftp_host = 'FTP hostname'; -$lang->ftp_port = 'FTP port'; -$lang->about_ftp_password = 'FTP password will not be stored'; -$lang->cmd_check_ftp_connect = 'Check FTP Connection'; -$lang->about_ftp_info = " - FTP account information can be used in following cases.
    - 1. If safe_mode setting of PHP is on, XE will be installed using FTP.
    - 2. Automatic updates might use FTP information.
    - This account info will be stored in files/config/ftp.config.php
    - After installation, you can modify or delete the account info at the administration page.
    -"; - -$lang->msg_safe_mode_ftp_needed = "If safe_mode setting of PHP is on, you should input FTP account information to install XE."; -$lang->msg_ftp_not_connected = "Connection to localhost via FTP failed. Please check the port number and if FTP service is available."; -$lang->msg_ftp_invalid_auth_info = "Authentication failed. Please check the username and password."; -$lang->msg_ftp_mkdir_fail = "Directory creation failed. Please check the permission of FTP account."; -$lang->msg_ftp_chmod_fail = "Chmod failed. Please check the permission and configuration of FTP server."; -$lang->msg_ftp_connect_success = "Connection and authentication to the FTP server succeeded."; - -$lang->ftp_path_title = 'FTP Path Information'; -$lang->msg_ftp_installed_realpath = 'Absolute Path of XE'; -$lang->msg_ftp_installed_ftp_realpath = 'Absolute FTP Path of XE'; - -// Alert messages for Javascript using by XML filter -$lang->filter->isnull = 'Please input a value for %s'; -$lang->filter->outofrange = 'Please align the text length of %s'; -$lang->filter->equalto = "The value of %s is invalid"; -$lang->filter->invalid_email = "The format of %s is invalid. ex) developers@xpressengine.com"; -$lang->filter->invalid_user_id = $lang->filter->invalid_userid = "The format of %s is invalid.\\nAll values should consist of alphabets, numbers or underscore(_) and the first letter should be alphabet"; -$lang->filter->invalid_homepage = "The format of %s is invalid. ex) http://xpressengine.com/"; -$lang->filter->invalid_korean = "The format of %s is invalid. Please input Korean only"; -$lang->filter->invalid_korean_number = "The format of %s is invalid. Please input Korean or numbers"; -$lang->filter->invalid_alpha = "The format of %s is invalid. Please input alphabets only"; -$lang->filter->invalid_alpha_number = "The format of %s is invalid. Please input alphabets or numbers"; -$lang->filter->invalid_number = "The format of %s is invalid. Please input numbers only"; - -$lang->security_warning_embed = "Due to security concern, administrators are not allowed to view embedded items.
    To view them, please use another non-administrator ID."; -$lang->msg_pc_to_mobile = '이 페이지는 모바일 보기가 있습니다. 모바일 보기로 이동하시겠습니까?'; -?> diff --git a/tests/classes/db/classes/xml/xmlquery/queryargument/QueryArgumentTest.php b/tests/classes/db/classes/xml/xmlquery/queryargument/QueryArgumentTest.php deleted file mode 100644 index aafc07268..000000000 --- a/tests/classes/db/classes/xml/xmlquery/queryargument/QueryArgumentTest.php +++ /dev/null @@ -1,16 +0,0 @@ - */ - -/** - * Test class for QueryArgument. - */ -class QueryArgumentTest extends CubridTest { - - var $xmlPath = "data/"; - - function QueryArgumentTest(){ - $this->xmlPath = str_replace('QueryArgumentTest.php', '', str_replace('\\', '/', __FILE__)) . $this->xmlPath; - } - } - -?> diff --git a/tests/classes/db/classes/xml/xmlquery/queryargument/data/condition1.xml b/tests/classes/db/classes/xml/xmlquery/queryargument/data/condition1.xml deleted file mode 100644 index 53decc580..000000000 --- a/tests/classes/db/classes/xml/xmlquery/queryargument/data/condition1.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tests/classes/db/classes/xml/xmlquery/queryargument/data/index1.xml b/tests/classes/db/classes/xml/xmlquery/queryargument/data/index1.xml deleted file mode 100644 index 6cbf9193a..000000000 --- a/tests/classes/db/classes/xml/xmlquery/queryargument/data/index1.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tests/classes/db/classes/xml/xmlquery/tags/condition/ConditionTagTest.php b/tests/classes/db/classes/xml/xmlquery/tags/condition/ConditionTagTest.php deleted file mode 100644 index 97dda224b..000000000 --- a/tests/classes/db/classes/xml/xmlquery/tags/condition/ConditionTagTest.php +++ /dev/null @@ -1,88 +0,0 @@ - */ - -/** - * Test class for ConditionTag. - */ -class ConditionTagTest extends CubridTest { - - var $xmlPath = "data/"; - - function ConditionTagTest(){ - $this->xmlPath = str_replace('ConditionTagTest.php', '', str_replace('\\', '/', __FILE__)) . $this->xmlPath; - } - - /** - * Tests a simple tag: - * - */ - function testConditionStringWithArgument(){ - $xml_file = $this->xmlPath . "condition1.xml"; - $xml_obj = Helper::getXmlObject($xml_file); - $tag = new ConditionTag($xml_obj->condition); - $arguments = $tag->getArguments(); - - $expected = "new ConditionWithArgument('\"user_id\"',\$" . $arguments[0]->getArgumentName() . "_argument,\"equal\")"; - $actual = $tag->getConditionString(); - $this->assertEquals($expected, $actual); - - - $this->assertEquals(1, count($arguments)); - } - - /** - * Tests a condition tag for joins - that uses no argument - * - */ - function testConditionStringWithoutArgument(){ - $xml_file = $this->xmlPath . "condition3.xml"; - $xml_obj = Helper::getXmlObject($xml_file); - $tag = new ConditionTag($xml_obj->condition); - - $expected = "new ConditionWithoutArgument('\"comments\".\"user_id\"','\"member\".\"user_id\"',\"equal\")"; - $actual = $tag->getConditionString(); - $this->assertEquals($expected, $actual); - - $arguments = $tag->getArguments(); - $this->assertEquals(0, count($arguments)); - } - - - /** - * Tests a tag with pipe: - * - */ - function testConditionStringWithPipe(){ - $xml_file = $this->xmlPath . "condition2.xml"; - $xml_obj = Helper::getXmlObject($xml_file); - $tag = new ConditionTag($xml_obj->condition); - $arguments = $tag->getArguments(); - - $expected = "new ConditionWithArgument('\"type\"',\$" . $arguments[0]->getArgumentName() . "_argument,\"equal\", 'and')"; - $actual = $tag->getConditionString(); - $this->assertEquals($expected, $actual); - - - $this->assertEquals(1, count($arguments)); - } - - /** - * Tests that even if the column name is given in the var attribute, it knows it's just a name and not an argument - * - */ - function testConditionStringWithoutArgumentAndDefaultValueInsideVar(){ - $xml_file = $this->xmlPath . "condition4.xml"; - $xml_obj = Helper::getXmlObject($xml_file); - $tag = new ConditionTag($xml_obj->condition); - - $expected = "new ConditionWithoutArgument('\"modules\".\"module_srl\"','\"documents\".\"module_srl\"',\"equal\", 'and')"; - $actual = $tag->getConditionString(); - $this->assertEquals($expected, $actual); - - $arguments = $tag->getArguments(); - $this->assertEquals(0, count($arguments)); - } - -} - -?> diff --git a/tests/classes/db/classes/xml/xmlquery/tags/condition/data/condition1.xml b/tests/classes/db/classes/xml/xmlquery/tags/condition/data/condition1.xml deleted file mode 100644 index 274121640..000000000 --- a/tests/classes/db/classes/xml/xmlquery/tags/condition/data/condition1.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tests/classes/db/classes/xml/xmlquery/tags/condition/data/condition2.xml b/tests/classes/db/classes/xml/xmlquery/tags/condition/data/condition2.xml deleted file mode 100644 index 7ace26b8d..000000000 --- a/tests/classes/db/classes/xml/xmlquery/tags/condition/data/condition2.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tests/classes/db/classes/xml/xmlquery/tags/condition/data/condition3.xml b/tests/classes/db/classes/xml/xmlquery/tags/condition/data/condition3.xml deleted file mode 100644 index 538d81f3d..000000000 --- a/tests/classes/db/classes/xml/xmlquery/tags/condition/data/condition3.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tests/classes/db/classes/xml/xmlquery/tags/condition/data/condition4.xml b/tests/classes/db/classes/xml/xmlquery/tags/condition/data/condition4.xml deleted file mode 100644 index ac432b118..000000000 --- a/tests/classes/db/classes/xml/xmlquery/tags/condition/data/condition4.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tests/classes/db/classes/xml/xmlquery/tags/table/TableTagTest.php b/tests/classes/db/classes/xml/xmlquery/tags/table/TableTagTest.php deleted file mode 100644 index d449b65fc..000000000 --- a/tests/classes/db/classes/xml/xmlquery/tags/table/TableTagTest.php +++ /dev/null @@ -1,133 +0,0 @@ - */ - /** - * Test class for TableTag. - */ - class TableTagTest extends CubridTest { - - var $xmlPath = "data/"; - - function TableTagTest(){ - $this->xmlPath = str_replace('TableTagTest.php', '', str_replace('\\', '/', __FILE__)) . $this->xmlPath; - } - - /** - * Tests a simple tag: - *
    - */ - function testTableTagWithName(){ - $xml_file = $this->xmlPath . "table_name.xml"; - $xml_obj = Helper::getXmlObject($xml_file); - $tag = new TableTag($xml_obj->table); - - $expected = "new Table('\"xe_modules\"', '\"modules\"')"; - $actual = $tag->getTableString(); - $this->assertEquals($expected, $actual); - } - - /** - * Tests a
    tag with name and alias - *
    - */ - function testTableTagWithNameAndAlias(){ - $xml_file = $this->xmlPath . "table_name_alias.xml"; - $xml_obj = Helper::getXmlObject($xml_file); - - $tag = new TableTag($xml_obj->table); - - $expected = "new Table('\"xe_modules\"', '\"mod\"')"; - $actual = $tag->getTableString(); - $this->assertEquals($expected, $actual); - } - - /** - * Tests a
    tag used for joins - *
    - * - * - * - *
    - * - */ - function testTableTagWithJoinCondition(){ - $xml_file = $this->xmlPath . "table_name_alias_type.xml"; - $xml_obj = Helper::getXmlObject($xml_file); - - $tag = new TableTag($xml_obj->table); - - $actual = $tag->getTableString(); - - $expected = 'new JoinTable(\'"xe_module_categories"\', \'"module_categories"\', "left join", array( - new ConditionGroup(array( - new ConditionWithoutArgument(\'"module_categories"."module_category_srl"\',\'"modules"."module_category_srl"\',"equal") - )) - ))'; - $actual = Helper::cleanString($actual); - $expected = Helper::cleanString($expected); - - $this->assertEquals($expected, $actual); - } - - /** - * If a table tag has the type attribute and condition children - * it means it is meant to be used inside a join - */ - function testTagWithTypeIsJoinTable(){ - $xml_file = $this->xmlPath . "table_name_alias_type.xml"; - $xml_obj = Helper::getXmlObject($xml_file); - - $tag = new TableTag($xml_obj->table); - - $this->assertEquals(true, $tag->isJoinTable()); - } - - /** - * Tests that a simple table tag is not a join table - */ - function testTagWithoutTypeIsNotJoinTable(){ - $xml_file = $this->xmlPath . "table_name_alias.xml"; - $xml_obj = Helper::getXmlObject($xml_file); - - $tag = new TableTag($xml_obj->table); - - $this->assertEquals(false, $tag->isJoinTable()); - } - - /** - * If no alias is specified, test that table name is used - */ - function testTableAliasWhenAliasNotSpecified(){ - $xml_file = $this->xmlPath . "table_name.xml"; - $xml_obj = Helper::getXmlObject($xml_file); - - $tag = new TableTag($xml_obj->table); - - $this->assertEquals("modules", $tag->getTableAlias()); - } - - /** - * If alias is specified, test that it is used - */ - function testTableAliasWhenAliasSpecified(){ - $xml_file = $this->xmlPath . "table_name_alias.xml"; - $xml_obj = Helper::getXmlObject($xml_file); - - $tag = new TableTag($xml_obj->table); - - $this->assertEquals("mod", $tag->getTableAlias()); - } - - /** - * Table name propery should returned unescaped and unprefixed table name - * (The one in the XML file) - */ - function testTableName(){ - $xml_file = $this->xmlPath . "table_name_alias.xml"; - $xml_obj = Helper::getXmlObject($xml_file); - - $tag = new TableTag($xml_obj->table); - - $this->assertEquals("modules", $tag->getTableName()); - } - - } diff --git a/tests/classes/db/classes/xml/xmlquery/tags/table/TablesTagTest.php b/tests/classes/db/classes/xml/xmlquery/tags/table/TablesTagTest.php deleted file mode 100644 index 466c22cad..000000000 --- a/tests/classes/db/classes/xml/xmlquery/tags/table/TablesTagTest.php +++ /dev/null @@ -1,113 +0,0 @@ - */ - /** - * Test class for TablesTag. - */ - class TablesTagTest extends CubridTest { - - var $xmlPath = "data/"; - - function TablesTagTest(){ - $this->xmlPath = str_replace('TablesTagTest.php', '', str_replace('\\', '/', __FILE__)) . $this->xmlPath; - } - - /** - * Tests a simple tag: - * - * - * - */ - function testTablesTagWithOneTable(){ - $xml_file = $this->xmlPath . "tables_one_table.xml"; - $xml_obj = Helper::getXmlObject($xml_file); - $tag = new TablesTag($xml_obj->tables); - - $expected = "array(new Table('\"xe_member\"', '\"member\"'))"; - $actual = $tag->toString(); - - $this->_testCachedOutput($expected, $actual); - } - - /** - * Tests a simple tag: - * - *
    - *
    - * - */ - function testTablesTagWithTwoTablesNoJoin(){ - $xml_file = $this->xmlPath . "tables_two_tables_no_join.xml"; - $xml_obj = Helper::getXmlObject($xml_file); - $tag = new TablesTag($xml_obj->tables); - - $expected = "array( - new Table('\"xe_member_group\"', '\"a\"') - ,new Table('\"xe_member_group_member\"', '\"b\"') - )"; - $actual = $tag->toString(); - - $this->_testCachedOutput($expected, $actual); - } - - /** - * Tests a simple tag: - * - *
    - *
    - * - * - * - *
    - *
    - */ - function testTablesTagWithTwoTablesWithJoin(){ - $xml_file = $this->xmlPath . "tables_two_tables_with_join.xml"; - $xml_obj = Helper::getXmlObject($xml_file); - $tag = new TablesTag($xml_obj->tables); - - $expected = "array( - new Table('\"xe_files\"', '\"files\"') - ,new JoinTable('\"xe_member\"' - , '\"member\"' - , \"left join\" - , array( - new ConditionGroup( - array( - new ConditionWithoutArgument( - '\"files\".\"member_srl\"' - ,'\"member\".\"member_srl\"' - ,\"equal\" - ) - ) - ) - ) - ) - )"; - $actual = $tag->toString(); - - $this->_testCachedOutput($expected, $actual); - } - - /** - * Tests a simple tag: - * - * - *
    - * - * - * - *
    - *
    - */ - function testGetTables(){ - $xml_file = $this->xmlPath . "tables_two_tables_with_join.xml"; - $xml_obj = Helper::getXmlObject($xml_file); - $tag = new TablesTag($xml_obj->tables); - - $tables = $tag->getTables(); - - $this->assertEquals(2, count($tables)); - $this->assertTrue(is_a($tables[0], 'TableTag')); - $this->assertTrue(is_a($tables[1], 'TableTag')); - } - } diff --git a/tests/classes/db/classes/xml/xmlquery/tags/table/data/table_name.xml b/tests/classes/db/classes/xml/xmlquery/tags/table/data/table_name.xml deleted file mode 100644 index 6525964f0..000000000 --- a/tests/classes/db/classes/xml/xmlquery/tags/table/data/table_name.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tests/classes/db/classes/xml/xmlquery/tags/table/data/table_name_alias.xml b/tests/classes/db/classes/xml/xmlquery/tags/table/data/table_name_alias.xml deleted file mode 100644 index 8240d4652..000000000 --- a/tests/classes/db/classes/xml/xmlquery/tags/table/data/table_name_alias.xml +++ /dev/null @@ -1 +0,0 @@ -
    \ No newline at end of file diff --git a/tests/classes/db/classes/xml/xmlquery/tags/table/data/table_name_alias_type.xml b/tests/classes/db/classes/xml/xmlquery/tags/table/data/table_name_alias_type.xml deleted file mode 100644 index 6d8e7f1d5..000000000 --- a/tests/classes/db/classes/xml/xmlquery/tags/table/data/table_name_alias_type.xml +++ /dev/null @@ -1,5 +0,0 @@ -
    - - - -
    \ No newline at end of file diff --git a/tests/classes/db/classes/xml/xmlquery/tags/table/data/tables_one_table.xml b/tests/classes/db/classes/xml/xmlquery/tags/table/data/tables_one_table.xml deleted file mode 100644 index 525df54be..000000000 --- a/tests/classes/db/classes/xml/xmlquery/tags/table/data/tables_one_table.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/classes/db/classes/xml/xmlquery/tags/table/data/tables_two_tables_no_join.xml b/tests/classes/db/classes/xml/xmlquery/tags/table/data/tables_two_tables_no_join.xml deleted file mode 100644 index cdedcb831..000000000 --- a/tests/classes/db/classes/xml/xmlquery/tags/table/data/tables_two_tables_no_join.xml +++ /dev/null @@ -1,4 +0,0 @@ - -
    -
    - \ No newline at end of file diff --git a/tests/classes/db/classes/xml/xmlquery/tags/table/data/tables_two_tables_with_join.xml b/tests/classes/db/classes/xml/xmlquery/tags/table/data/tables_two_tables_with_join.xml deleted file mode 100644 index fd8d8775e..000000000 --- a/tests/classes/db/classes/xml/xmlquery/tags/table/data/tables_two_tables_with_join.xml +++ /dev/null @@ -1,8 +0,0 @@ - -
    -
    - - - -
    -
    \ No newline at end of file diff --git a/tests/classes/db/config/config.inc.php b/tests/classes/db/config/config.inc.php deleted file mode 100644 index 3d18c86c3..000000000 --- a/tests/classes/db/config/config.inc.php +++ /dev/null @@ -1,64 +0,0 @@ - */ - -error_reporting(E_ALL ^ E_NOTICE); -define('_XE_PATH_', str_replace('tests/classes/db/config/config.inc.php', '', str_replace('\\', '/', __FILE__))); -define('_TEST_PATH_', _XE_PATH_ . 'tests/classes/db/'); - -if(!defined('__DEBUG__')) define('__DEBUG__', 4); - -define('__ZBXE__', true); -define('__XE__', true); - -require_once(_TEST_PATH_.'Helper.class.php'); -require_once(_TEST_PATH_.'QueryTester.class.php'); -require_once(_TEST_PATH_.'db/DBTest.php'); -require_once(_TEST_PATH_.'db/CubridTest.php'); -require_once(_TEST_PATH_.'db/CubridOnlineTest.php'); -require_once(_TEST_PATH_.'db/MssqlTest.php'); -require_once(_TEST_PATH_.'db/MssqlOnlineTest.php'); -require_once(_TEST_PATH_.'db/MysqlTest.php'); -require_once(_TEST_PATH_.'db/SqliteTest.php'); - -require_once(_XE_PATH_.'config/config.inc.php'); -require_once(_XE_PATH_.'classes/xml/XmlQueryParser.class.php'); - -require_once(_XE_PATH_.'classes/db/DB.class.php'); -require_once(_XE_PATH_.'classes/db/DBCubrid.class.php'); -require_once(_XE_PATH_.'classes/db/DBMssql.class.php'); -require_once(_XE_PATH_.'classes/db/DBMysql.class.php'); -require_once(_TEST_PATH_.'db/MockDb.php'); - -require_once(_XE_PATH_.'classes/xml/xmlquery/DBParser.class.php'); -require_once(_XE_PATH_.'classes/xml/xmlquery/argument/Argument.class.php'); -require_once(_XE_PATH_.'classes/xml/xmlquery/argument/SortArgument.class.php'); -require_once(_XE_PATH_.'classes/xml/xmlquery/argument/ConditionArgument.class.php'); -require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/DefaultValue.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/expression/Expression.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/expression/SelectExpression.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/expression/InsertExpression.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/expression/UpdateExpression.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/expression/UpdateExpressionWithoutArgument.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/expression/ClickCountExpression.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/table/Table.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/table/JoinTable.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/table/CubridTableWithHint.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/table/MysqlTableWithHint.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/table/MssqlTableWithHint.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/table/IndexHint.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/condition/ConditionGroup.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/condition/Condition.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/condition/ConditionWithArgument.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/condition/ConditionWithoutArgument.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/condition/ConditionSubquery.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/expression/StarExpression.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/order/OrderByColumn.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/limit/Limit.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/Query.class.php'); -require_once(_XE_PATH_.'classes/db/queryparts/Subquery.class.php'); - -require_once(_XE_PATH_.'classes/xml/xmlquery/tags/table/TableTag.class.php'); -require_once(_XE_PATH_.'classes/xml/xmlquery/tags/table/HintTableTag.class.php'); -require_once(_XE_PATH_.'classes/xml/xmlquery/tags/condition/ConditionTag.class.php'); -require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/QueryArgument.class.php'); -require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/SortQueryArgument.class.php'); diff --git a/tests/classes/db/db/CubridOnlineTest.php b/tests/classes/db/db/CubridOnlineTest.php deleted file mode 100644 index 0e2556368..000000000 --- a/tests/classes/db/db/CubridOnlineTest.php +++ /dev/null @@ -1,50 +0,0 @@ - */ - - /** - * Base class for tests for CUBRID SQL syntax - */ - - class CubridOnlineTest extends PHPUnit_Framework_TestCase { - - protected $backupGlobals = FALSE; - protected $backupStaticAttributes = FALSE; - protected $preserveGlobalState = FALSE; - - /** - * Prepare runtime context - tell DB class that current DB is CUBRID - */ - protected function setUp() { - $this->markTestSkipped(); - $oContext = &Context::getInstance(); - - $db_info->master_db = array('db_type' => 'cubrid' - ,'db_port' => '33000' - ,'db_hostname' => '10.0.0.206' - ,'db_userid' => 'dba' - ,'db_password' => 'arniarules' - ,'db_database' => 'xe15QA' - ,'db_table_prefix' => 'xe_'); - $db_info->slave_db = array(array('db_type' => 'cubrid' - ,'db_port' => '33000' - ,'db_hostname' => '10.0.0.206' - ,'db_userid' => 'dba' - ,'db_password' => 'arniarules' - ,'db_database' => 'xe15QA' - ,'db_table_prefix' => 'xe_')); - $oContext->setDbInfo($db_info); - - // remove cache dir - FileHandler::removeDir( _XE_PATH_ . 'files/cache'); - - DB::getParser(true); - } - - /** - * Free resources - reset static DB and QueryParser - */ - protected function tearDown() { - unset($GLOBALS['__DB__']); - } - } -?> diff --git a/tests/classes/db/db/CubridTest.php b/tests/classes/db/db/CubridTest.php deleted file mode 100644 index dd02378c6..000000000 --- a/tests/classes/db/db/CubridTest.php +++ /dev/null @@ -1,32 +0,0 @@ - */ - - /** - * Base class for tests for CUBRID SQL syntax - */ - - class CubridTest extends DBTest { - - /** - * Prepare runtime context - tell DB class that current DB is CUBRID - */ - protected function setUp() { - $oContext = &Context::getInstance(); - - $db_info->master_db = array('db_type' => 'cubrid','db_table_prefix' => 'xe_'); - $db_info->slave_db = array(array('db_type' => 'cubrid','db_table_prefix' => 'xe_')); - - $oContext->setDbInfo($db_info); - - $db = new MockDb(); - $db->getParser(true); - } - - /** - * Free resources - reset static DB and QueryParser - */ - protected function tearDown() { - unset($GLOBALS['__DB__']); - } - } -?> diff --git a/tests/classes/db/db/DBTest.php b/tests/classes/db/db/DBTest.php deleted file mode 100644 index cdc9e9f83..000000000 --- a/tests/classes/db/db/DBTest.php +++ /dev/null @@ -1,75 +0,0 @@ - */ - -class DBTest extends PHPUnit_Framework_TestCase { - - function _testQuery($xml_file, $argsString, $expected, $methodName, $columnList = null){ - echo PHP_EOL . ' ----------------------------------- ' .PHP_EOL; - echo $xml_file; - echo PHP_EOL . ' ----------------------------------- ' .PHP_EOL; - - $tester = new QueryTester(); - $outputString = $tester->getNewParserOutputString($xml_file, $argsString); - echo $outputString; - $output = eval($outputString); - - if(!is_a($output, 'Query')){ - if(!$output->toBool()) $querySql = "Date incorecte! Query-ul nu a putut fi executat."; - }else { - $db = &DB::getInstance(); - if($columnList) $output->setColumnList($columnList); - $querySql = $db->{$methodName}($output); - - // Remove whitespaces, tabs and all - if(is_a($querySql, 'Object')) - { - $querySql = $querySql->getMessage(); - } - $querySql = Helper::cleanString($querySql); - $expected = Helper::cleanString($expected); - } - $this->assertEquals($expected, $querySql); - } - - function _testPreparedQuery($xml_file, $argsString, $expected, $methodName, $expectedArgs = NULL){ - echo PHP_EOL . ' ----------------------------------- ' .PHP_EOL; - echo $xml_file; - echo PHP_EOL . ' ----------------------------------- ' .PHP_EOL; - - $tester = new QueryTester(); - $outputString = $tester->getNewParserOutputString($xml_file, $argsString); - echo $outputString; - $output = eval($outputString); - - if(!is_a($output, 'Query')){ - if(!$output->toBool()) $querySql = "Date incorecte! Query-ul nu a putut fi executat."; - }else { - $db = &DB::getInstance(); - $querySql = $db->{$methodName}($output, false); - $queryArguments = $output->getArguments(); - - // Remove whitespaces, tabs and all - $querySql = Helper::cleanString($querySql); - $expected = Helper::cleanString($expected); - } - - // Test - $this->assertEquals($expected, $querySql); - - // Test query arguments - $argCount = count($expectedArgs); - for($i = 0; $i < $argCount; $i++){ - $this->assertEquals($expectedArgs[$i], $queryArguments[$i]->getEscapedValue()); - } - } - - function _testCachedOutput($expected, $actual){ - $expected = Helper::cleanString($expected); - $actual = Helper::cleanString($actual); - - $this->assertEquals($expected, $actual); - - } - } - -?> diff --git a/tests/classes/db/db/ExpressionParserTest.php b/tests/classes/db/db/ExpressionParserTest.php deleted file mode 100644 index b48feef46..000000000 --- a/tests/classes/db/db/ExpressionParserTest.php +++ /dev/null @@ -1,110 +0,0 @@ - */ - - class ExpressionParserTest extends PHPUnit_Framework_TestCase { - /* Escape char for: - * CUBRID "" - * MySql `` - * SqlServer [] - */ - var $dbLeftEscapeChar = '['; - var $dbRightEscapeChar = ']'; - - function _test($column_name, $alias, $expected){ - $expressionParser = new DBParser($this->dbLeftEscapeChar,$this->dbRightEscapeChar); - $actual = $expressionParser->parseExpression($column_name); - if($alias) $actual .= " as $alias"; - $this->assertEquals($expected, $actual); - } - - function testStarExpressionIsNotEscaped(){ - $this->_test("*", NULL, '*'); - } - - function testSimpleColumnNameGetsEscaped(){ - $this->_test("member_srl", NULL - , $this->dbLeftEscapeChar.'member_srl'.$this->dbRightEscapeChar ); - } - - function testUnqualifiedAliasedColumnNameGetsEscaped(){ - $this->_test("member_srl", "id" - , $this->dbLeftEscapeChar.'member_srl'.$this->dbRightEscapeChar.' as id'); - } - - function testQualifiedColumnNameGetsEscaped(){ - $this->_test("xe_members.member_srl", NULL - , $this->dbLeftEscapeChar.'xe_members'.$this->dbRightEscapeChar.'.'.$this->dbLeftEscapeChar.'member_srl'.$this->dbRightEscapeChar); - } - - function testQualifiedAliasedColumnNameGetsEscaped(){ - $this->_test("xe_members.member_srl","id" - ,$this->dbLeftEscapeChar.'xe_members'.$this->dbRightEscapeChar.'.'.$this->dbLeftEscapeChar.'member_srl'.$this->dbRightEscapeChar.' as id'); - } - - function testCountDoesntGetEscaped(){ - $this->_test("count(*)", NULL, 'count(*)'); - } - - function testAliasedCountDoesntGetEscaped(){ - $this->_test("count(*)", "count", 'count(*) as count'); - } - - function testUnqualifiedColumnExpressionWithOneParameterLessFunction(){ - $this->_test("substring(regdate)", NULL - , 'substring('.$this->dbLeftEscapeChar.'regdate'.$this->dbRightEscapeChar.')'); - } - - function testAliasedUnqualifiedColumnExpressionWithOneParameterLessFunction(){ - $this->_test("substring(regdate)", "regdate" - , 'substring('.$this->dbLeftEscapeChar.'regdate'.$this->dbRightEscapeChar.') as regdate'); - } - - function testQualifiedColumnExpressionWithOneParameterLessFunction(){ - $this->_test("substring(xe_member.regdate)", NULL - , 'substring('.$this->dbLeftEscapeChar.'xe_member'.$this->dbRightEscapeChar.'.'.$this->dbLeftEscapeChar.'regdate'.$this->dbRightEscapeChar.')'); - } - - function testAliasedQualifiedColumnExpressionWithOneParameterLessFunction(){ - $this->_test("substring(xe_member.regdate)", "regdate" - , 'substring('.$this->dbLeftEscapeChar.'xe_member'.$this->dbRightEscapeChar.'.'.$this->dbLeftEscapeChar.'regdate'.$this->dbRightEscapeChar.') as regdate'); - } - - function testUnqualifiedColumnExpressionWithTwoParameterLessFunctions(){ - $this->_test("lpad(rpad(regdate))", NULL - , 'lpad(rpad('.$this->dbLeftEscapeChar.'regdate'.$this->dbRightEscapeChar.'))'); - } - - function testAliasedUnqualifiedColumnExpressionWithTwoParameterLessFunctions(){ - $this->_test("lpad(rpad(regdate))", "regdate" - , 'lpad(rpad('.$this->dbLeftEscapeChar.'regdate'.$this->dbRightEscapeChar.')) as regdate'); - } - - function testQualifiedColumnExpressionWithTwoParameterLessFunctions(){ - $this->_test("lpad(rpad(xe_member.regdate))", NULL - , 'lpad(rpad('.$this->dbLeftEscapeChar.'xe_member'.$this->dbRightEscapeChar.'.'.$this->dbLeftEscapeChar.'regdate'.$this->dbRightEscapeChar.'))'); - } - - function testAliasedQualifiedColumnExpressionWithTwoParameterLessFunctions(){ - $this->_test("lpad(rpad(xe_member.regdate))", "regdate" - , 'lpad(rpad('.$this->dbLeftEscapeChar.'xe_member'.$this->dbRightEscapeChar.'.'.$this->dbLeftEscapeChar.'regdate'.$this->dbRightEscapeChar.')) as regdate'); - } - - function testColumnAddition(){ - $this->_test("score1 + score2", "total" - , $this->dbLeftEscapeChar.'score1'.$this->dbRightEscapeChar.' + '.$this->dbLeftEscapeChar.'score2'.$this->dbRightEscapeChar.' as total'); - } - - function testMultipleParameterFunction(){ - $this->_test("substring(regdate, 1, 8)", NULL - , 'substring('.$this->dbLeftEscapeChar.'regdate'.$this->dbRightEscapeChar.', 1, 8)'); - $this->_test("substring(regdate, 1, 8)", "regdate" - , 'substring('.$this->dbLeftEscapeChar.'regdate'.$this->dbRightEscapeChar.', 1, 8) as regdate'); - $this->_test("substring(xe_member.regdate, 1, 8)", NULL - , 'substring('.$this->dbLeftEscapeChar.'xe_member'.$this->dbRightEscapeChar.'.'.$this->dbLeftEscapeChar.'regdate'.$this->dbRightEscapeChar.', 1, 8)'); - } - - function testFunctionAddition(){ - $this->_test("abs(score) + abs(totalscore)", NULL - , 'abs('.$this->dbLeftEscapeChar.'score'.$this->dbRightEscapeChar.') + abs('.$this->dbLeftEscapeChar.'totalscore'.$this->dbRightEscapeChar.')'); - } - } diff --git a/tests/classes/db/db/MockDb.php b/tests/classes/db/db/MockDb.php deleted file mode 100644 index 009dbff21..000000000 --- a/tests/classes/db/db/MockDb.php +++ /dev/null @@ -1,82 +0,0 @@ - */ - - /** - * @brief Mock database base class - * - * Used to load mock classes instead of actual ones, - * so that connect methods can be skipped - */ - class MockDb extends DB { - - function &getParser($force = false){ - static $dbParser = null; - if(!$dbParser || $force) { - $oDB = &MockDb::getInstance(); - $dbParser = $oDB->getParser(); - DB::getParser(true); - } - - return $dbParser; - } - - function &getInstance(){ - $db_type = Context::getDBType(); - - if(!isset($GLOBALS['__DB__'])) $GLOBALS['__DB__'] = array(); - if(!isset($GLOBALS['__DB__'][$db_type])) { - switch($db_type){ - case 'mssql' : - $GLOBALS['__DB__'][$db_type] = new MockDBMssql; break; - case 'mysql' : - $GLOBALS['__DB__'][$db_type] = new MockDBMysql; break; - case 'cubrid' : - $GLOBALS['__DB__'][$db_type] = new MockDBCubrid; break; - } - } - - return $GLOBALS['__DB__'][$db_type]; - } - } - - /** - * @brief Mock up for MS SQL class - * - * Overrides default constructor in order to skip connect method - */ - class MockDBMssql extends DBMssql { - function MockDBMssql(){ - $this->_setDBInfo(); - } - } - - /** - * @brief Mock up for CUBRID class - * - * Overrides default constructor in order to skip connect method - */ - class MockDBCubrid extends DBCubrid { - function MockDBCubrid(){ - $this->_setDBInfo(); - } - } - - /** - * @brief Mock up for Mysql class - * - * Overri des default constructor in order to skip connect method. - */ - class MockDBMysql extends DBMysql { - function MockDBMysql(){ - $this->_setDBInfo(); - } - - /** - * Overrides mysql_real_escape_string, that returns null when no connection is present - */ - function addQuotes($string){ - return $string; - } - } - -?> diff --git a/tests/classes/db/db/MssqlOnlineTest.php b/tests/classes/db/db/MssqlOnlineTest.php deleted file mode 100644 index 497f6e1a7..000000000 --- a/tests/classes/db/db/MssqlOnlineTest.php +++ /dev/null @@ -1,50 +0,0 @@ - */ - - /** - * Base class for tests for MSSQL SQL syntax - */ - - class MssqlOnlineTest extends PHPUnit_Framework_TestCase { - - protected $backupGlobals = FALSE; - protected $backupStaticAttributes = FALSE; - protected $preserveGlobalState = FALSE; - - /** - * Prepare runtime context - tell DB class that current DB is MSSQL - */ - protected function setUp() { - $this->markTestSkipped(); - $oContext = &Context::getInstance(); - - $db_info->master_db = array('db_type' => 'mssql' - ,'db_port' => '3306' - ,'db_hostname' => 'PHENOMII\SQL2008EXPRESS' - ,'db_userid' => 'dba' - ,'db_password' => 'arniarules' - ,'db_database' => 'xe-15-db' - ,'db_table_prefix' => 'xe_'); - $db_info->slave_db = array(array('db_type' => 'mssql' - ,'db_port' => '3306' - ,'db_hostname' => 'PHENOMII\SQL2008EXPRESS' - ,'db_userid' => 'dba' - ,'db_password' => 'arniarules' - ,'db_database' => 'xe-15-db' - ,'db_table_prefix' => 'xe_')); - $oContext->setDbInfo($db_info); - - // remove cache dir - FileHandler::removeDir( _XE_PATH_ . 'files/cache'); - - DB::getParser(true); - } - - /** - * Free resources - reset static DB and QueryParser - */ - protected function tearDown() { - unset($GLOBALS['__DB__']); - } - } -?> diff --git a/tests/classes/db/db/MssqlTest.php b/tests/classes/db/db/MssqlTest.php deleted file mode 100644 index 1f09ed99b..000000000 --- a/tests/classes/db/db/MssqlTest.php +++ /dev/null @@ -1,27 +0,0 @@ - */ - -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - - class MssqlTest extends DBTest { - - protected function setUp() { - $oContext = &Context::getInstance(); - - $db_info->master_db = array('db_type' => 'mssql','db_table_prefix' => 'xe_'); - $db_info->slave_db = array(array('db_type' => 'mssql','db_table_prefix' => 'xe_')); - - $oContext->setDbInfo($db_info); - - $db = new MockDb(); - $db->getParser(true); - } - - protected function tearDown() { - unset($GLOBALS['__DB__']); - } - } -?> diff --git a/tests/classes/db/db/MysqlTest.php b/tests/classes/db/db/MysqlTest.php deleted file mode 100644 index c78e857b3..000000000 --- a/tests/classes/db/db/MysqlTest.php +++ /dev/null @@ -1,32 +0,0 @@ - */ - - /** - * Base class for tests for Mysql SQL syntax - */ - - class MysqlTest extends DBTest { - - /** - * Prepare runtime context - tell DB class that current DB is CUBRID - */ - protected function setUp() { - $oContext = &Context::getInstance(); - - $db_info->master_db = array('db_type' => 'mysql','db_table_prefix' => 'xe_'); - $db_info->slave_db = array(array('db_type' => 'mysql','db_table_prefix' => 'xe_')); - - $oContext->setDbInfo($db_info); - - $db = new MockDb(); - $db->getParser(true); - } - - /** - * Free resources - reset static DB and QueryParser - */ - protected function tearDown() { - unset($GLOBALS['__DB__']); - } - } -?> diff --git a/tests/classes/db/db/SqliteTest.php b/tests/classes/db/db/SqliteTest.php deleted file mode 100644 index b1916b921..000000000 --- a/tests/classes/db/db/SqliteTest.php +++ /dev/null @@ -1,33 +0,0 @@ - */ - - /** - * Base class for tests for Sqlite SQL syntax - * - * See syntax reference: - * http://www.sqlite.org/lang.html - */ - - class SqliteTest extends DBTest { - - /** - * Prepare runtime context - tell DB class that current DB is CUBRID - */ - protected function setUp() { - $oContext = &Context::getInstance(); - - $db_info->master_db = array('db_type' => 'sqlite3_pdo','db_table_prefix' => 'xe_'); - $db_info->slave_db = array(array('db_type' => 'sqlite3_pdo','db_table_prefix' => 'xe_')); - - $oContext->setDbInfo($db_info); - DB::getParser(true); - } - - /** - * Free resources - reset static DB and QueryParser - */ - protected function tearDown() { - unset($GLOBALS['__DB__']); - } - } -?> diff --git a/tests/classes/db/db/xml_query/cubrid/CubridDeleteTest.php b/tests/classes/db/db/xml_query/cubrid/CubridDeleteTest.php deleted file mode 100644 index 0e9bc8ec1..000000000 --- a/tests/classes/db/db/xml_query/cubrid/CubridDeleteTest.php +++ /dev/null @@ -1,21 +0,0 @@ - */ - - class CubridDeleteTest extends CubridTest { - - function _test($xml_file, $argsString, $expected){ - $this->_testQuery($xml_file, $argsString, $expected, 'getDeleteSql'); - } - - function test_module_deleteActionForward(){ - $xml_file = _XE_PATH_ . "modules/module/queries/deleteActionForward.xml"; - $argsString = '$args->module = "page"; - $args->type = "page"; - $args->act = "tata";'; - $expected = 'delete "action_forward" from "xe_action_forward" as "action_forward" - where "module" = \'page\' - and "type" = \'page\' - and "act" = \'tata\''; - $this->_test($xml_file, $argsString, $expected); - } - } diff --git a/tests/classes/db/db/xml_query/cubrid/CubridIndexHintTest.php b/tests/classes/db/db/xml_query/cubrid/CubridIndexHintTest.php deleted file mode 100644 index 78552090a..000000000 --- a/tests/classes/db/db/xml_query/cubrid/CubridIndexHintTest.php +++ /dev/null @@ -1,86 +0,0 @@ - */ - - class CubridIndexHintTest extends CubridTest { - var $xmlPath = 'data/'; - - function CubridIndexHintTest(){ - $this->xmlPath = str_replace('CubridIndexHintTest.php', '', str_replace('\\', '/', __FILE__)) . $this->xmlPath; - } - - function _test($xml_file, $argsString, $expected){ - var_dump($xml_file); - $this->_testQuery($xml_file, $argsString, $expected, 'getSelectSql'); - } - - function testOneUseIndexHintAndOneTable(){ - $xml_file = $this->xmlPath . "one_index_hint_one_table.xml"; - $argsString = ''; - $expected = 'select * from "xe_member" as "member" using index "member"."xe_idx_member_list_order"'; - $this->_test($xml_file, $argsString, $expected); - } - - - function testTwoUseIndexHintsAndOneTable(){ - $xml_file = $this->xmlPath . "two_index_hints_one_table.xml"; - $argsString = ''; - $expected = 'select * from "xe_member" as "member" using index "member"."xe_idx_member_list_order", "member"."xe_idx_member_srl"'; - $this->_test($xml_file, $argsString, $expected); - } - - function testThreeUseIndexHintsAndTwoTables(){ - $xml_file = $this->xmlPath . "three_index_hints_two_tables.xml"; - $argsString = ''; - $expected = 'select * from "xe_member" as "member", "xe_document" as "document" - using index "member"."xe_idx_member_list_order", "member"."xe_idx_member_srl", "document"."xe_idx_document_srl"'; - $this->_test($xml_file, $argsString, $expected); - } - - function testThreeUseIndexHintsAndTwoTablesCombined(){ - $xml_file = $this->xmlPath . "three_index_hints_two_tables_combined.xml"; - $argsString = ''; - $expected = 'select * from "xe_member" as "member", "xe_document" as "document" - using index "member"."xe_idx_member_list_order", "member"."xe_idx_member_srl"(+), "document"."xe_idx_document_srl"'; - $this->_test($xml_file, $argsString, $expected); - } - - function testIgnoreIndexHintIsSkipped(){ - $xml_file = $this->xmlPath . "ignore_index_hint.xml"; - $argsString = ''; - $expected = 'select * from "xe_member" as "member"'; - $this->_test($xml_file, $argsString, $expected); - } - - function testMysqlIndexHintIsSkipped(){ - $xml_file = $this->xmlPath . "mysql_index_hint.xml"; - $argsString = ''; - $expected = 'select * from "xe_member" as "member"'; - $this->_test($xml_file, $argsString, $expected); - } - - /** - * If CUBRID database is used, indexes are created with prefix. - * - * e.g.: xe_indx_list_order - */ - function testPrefixIsAddedToIndexName(){ - $xml_file = $this->xmlPath . "one_index_hint_one_table.xml"; - $argsString = ''; - $expected = 'select * from "xe_member" as "member" using index "member"."xe_idx_member_list_order"'; - $this->_test($xml_file, $argsString, $expected); - } - - /** - * Tests that index is added if "for" attribute is "ALL" - * - * example: ... - */ - function testIndexHintForAll(){ - $xml_file = $this->xmlPath . "index_hint_for_all.xml"; - $argsString = ''; - $expected = 'select * from "xe_member" as "member" using index "member"."xe_idx_member_list_order"'; - $this->_test($xml_file, $argsString, $expected); - } - - } -?> diff --git a/tests/classes/db/db/xml_query/cubrid/CubridInsertOnlineTest.php b/tests/classes/db/db/xml_query/cubrid/CubridInsertOnlineTest.php deleted file mode 100644 index 5ce67752e..000000000 --- a/tests/classes/db/db/xml_query/cubrid/CubridInsertOnlineTest.php +++ /dev/null @@ -1,86 +0,0 @@ - */ - - class CubridInsertOnlineTest extends CubridOnlineTest { - - /** - * Note: this test can fail when comaparing regdate from the $args with - * regdate from the expected string - a few seconds difference - */ - function test_module_insertModule_escapeContent(){ - $xml_file = _XE_PATH_ . "modules/module/queries/insertModule.xml"; - - $args->module_category_srl = 0; - $args->browser_title = "test"; - $args->layout_srl = 0; - $args->mlayout_srl = 0; - $args->module = "page"; - $args->mid = "test"; - $args->site_srl = 0; - $args->module_srl = 47374; - $args->content = "hello \' moto"; - - $output = executeQuery('module.insertModule', $args); - - $this->assertTrue(!$output->error, $output->message); - } - - function test_document_insertDocument_defaultVarcharValue(){ - $args->module_srl = 102; - $args->content = '

    yuhuuuuu

    '; - $args->document_srl = 9200; - $args->is_secret = 'N'; - $args->allow_comment = 'N'; - $args->lock_comment = 'N'; - $args->allow_trackback = 'N'; - $args->notify_message = 'N'; - $args->ipaddress = '127.0.0.1'; - $args->extra_vars = 'N;'; - $args->readed_count = 0; - $args->list_order = -9201; - $args->update_order = -9201; - $args->member_srl = 4; - $args->user_id = 'admin'; - $args->user_name = 'admin'; - $args->nick_name = 'admin'; - $args->email_address = 'admin@admin.admin'; - $args->homepage = ''; - $args->title = 'yuhuu'; - $args->lang_code; - $output = executeQuery('document.insertDocument', $args); - - $this->assertNotEquals(-225, $output->error); - $this->assertNotEquals('Missing value for attribute "homepage" with the NOT NULL constraint.', $output->message); - } - - function test_communication_addFriendGroup(){ - $args->member_srl = 202; - $args->title = "Grup"; - - $output = executeQuery("communication.addFriendGroup", $args); - $this->assertEquals(0, $output->error, $output->message); - - } - - function test_communication_addFriendGroup_NullId(){ - $args->member_srl = 202; - $args->title = "Grup"; - $args->friend_group_srl = trim(null); - - $output = executeQuery("communication.addFriendGroup", $args); - $this->assertEquals(0, $output->error, $output->message); - - } - - protected function tearDown() { - $db = &DB::getInstance(); - $db->_query("DELETE FROM xe_modules WHERE module_srl = 47374"); - $db->_query("DELETE FROM xe_documents WHERE document_srl = 9200"); - $db->_query("DELETE FROM xe_member_friend_group WHERE member_srl = 202"); - $db->close(); - - parent::tearDown(); - } - - - } diff --git a/tests/classes/db/db/xml_query/cubrid/CubridInsertTest.php b/tests/classes/db/db/xml_query/cubrid/CubridInsertTest.php deleted file mode 100644 index 204726450..000000000 --- a/tests/classes/db/db/xml_query/cubrid/CubridInsertTest.php +++ /dev/null @@ -1,128 +0,0 @@ - */ - - class CubridInsertTest extends CubridTest { - - function _test($xml_file, $argsString, $expected){ - $this->_testQuery($xml_file, $argsString, $expected, 'getInsertSql'); - } - - - /** - * Note: this test can fail when comaparing regdate from the $args with - * regdate from the expected string - a few seconds difference - */ - function test_module_insertModule(){ - $xml_file = _XE_PATH_ . "modules/module/queries/insertModule.xml"; - $argsString = ' $args->module_category_srl = 0; - $args->browser_title = "test"; - $args->layout_srl = 0; - $args->mlayout_srl = 0; - $args->module = "page"; - $args->mid = "test"; - $args->site_srl = 0; - $args->module_srl = 47374;'; - $expected = 'insert into "xe_modules" - ("site_srl" - , "module_srl" - , "module_category_srl" - , "mid" - , "browser_title" - , "layout_srl" - , "module" - , "is_default" - , "open_rss" - , "regdate" - , "mlayout_srl" - , "use_mobile") - values - (0 - , 47374 - , 0 - , \'test\' - , \'test\' - , 0 - , \'page\' - , \'n\' - , \'y\' - , \''.date("YmdHis").'\' - , 0 - , \'n\')'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_module_insertSiteTodayStatus(){ - //\''.date("YmdHis").'\' - $xml_file = _XE_PATH_ . "modules/counter/queries/insertTodayStatus.xml"; - $argsString = ' $args->regdate = 0; - $args->unique_visitor = 0; - $args->pageview = 0;'; - $expected = 'insert into "xe_counter_status" - ("regdate" - , "unique_visitor" - , "pageview") - values - ('.date("YmdHis").' - , 0 - , 0)'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_module_insertCounterLog(){ - $xml_file = _XE_PATH_ . "modules/counter/queries/insertCounterLog.xml"; - $argsString = ' $args->site_srl = 0; - $args->regdate = "20110607120619"; - $args->ipaddress = "127.0.0.1"; - $args->user_agent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Safari/534.24";'; - $expected = 'insert into "xe_counter_log" - ("site_srl", "regdate", "ipaddress", "user_agent") - VALUES (0, \'20110607120619\', \'127.0.0.1\', \'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Safari/534.24\') - '; - $this->_test($xml_file, $argsString, $expected); - } - - function test_module_insertMember(){ - $xml_file = _XE_PATH_ . "modules/member/queries/insertMember.xml"; - $argsString = ' $args->member_srl = 203; - $args->user_id = "cacao"; - $args->email_address = "teta@ar.ro"; - $args->password = "23e5484cb88f3c07bcce2920a5e6a2a7"; - $args->email_id = "teta"; - $args->email_host = "ar.ro"; - $args->user_name = "trident"; - $args->nick_name = "aloha"; - $args->homepage = "http://jkgjfk./ww"; - $args->allow_mailing = "Y"; - $args->allow_message = "Y"; - $args->denied = "N"; - $args->regdate = "20110607121952"; - $args->change_password_date = "20110607121952"; - $args->last_login = "20110607121952"; - $args->is_admin = "N"; - $args->extra_vars = "O:8:\"stdClass\":2:{s:4:\"body\";s:0:\"\";s:7:\"_filter\";s:6:\"insert\";}"; - $args->list_order = -203; - '; - $expected = 'INSERT INTO "xe_member" - ("member_srl", "user_id", "email_address", "password", "email_id", "email_host", "user_name", "nick_name", - "homepage", "allow_mailing", "allow_message", "denied", "regdate", "change_password_date", - "last_login", "is_admin", "extra_vars", "list_order") - VALUES (203, \'cacao\', \'teta@ar.ro\', \'23e5484cb88f3c07bcce2920a5e6a2a7\', \'teta\', \'ar.ro\', \'trident\', - \'aloha\', \'http://jkgjfk./ww\', \'Y\', \'Y\', \'N\', \'20110607121952\', \'20110607121952\', - \'20110607121952\', \'N\', \'O:8:"stdClass":2:{s:4:"body";s:0:"";s:7:"_filter";s:6:"insert";}\', -203)'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_module_insertModuleExtraVars(){ - $xml_file = _XE_PATH_ . "modules/module/queries/insertModuleExtraVars.xml"; - $argsString = ' $args->module_srl = 202; - $args->name = "_filter"; - $args->value = "insert_page"; - '; - $expected = 'INSERT INTO "xe_module_extra_vars" - ("module_srl", "name", "value") - VALUES (202, \'_filter\', \'insert_page\') - '; - $this->_test($xml_file, $argsString, $expected); - } - - } diff --git a/tests/classes/db/db/xml_query/cubrid/CubridSelectOnlineTest.php b/tests/classes/db/db/xml_query/cubrid/CubridSelectOnlineTest.php deleted file mode 100644 index 6d4abb679..000000000 --- a/tests/classes/db/db/xml_query/cubrid/CubridSelectOnlineTest.php +++ /dev/null @@ -1,77 +0,0 @@ - */ - - class CubridSelectOnlineTest extends CubridOnlineTest { - - function test_get_module_by_mid(){ - $args->mid = 'test_4l8ci4vv0n'; - $args->site_srl = 0; - $output = executeQuery('module.getMidInfo', $args); - $this->assertNotNull($output); - $this->assertNotNull($output->data, $output->message . PHP_EOL . $output->variables["_query"]); - $this->assertEquals($output->data->module_srl, 111); - } - - /** - * Tests that when a column list is given, the query only selects those columns from the database - * insetad of retrieving all table columns (as specified in the xml query file) - */ - function test_get_module_by_mid_columnList(){ - $args->mid = 'test_4l8ci4vv0n'; - $args->site_srl = 0; - $output = executeQuery('module.getMidInfo', $args, array('module_srl')); - $this->assertNotNull($output); - $this->assertNotNull($output->data, $output->message . PHP_EOL . $output->variables["_query"]); - $this->assertEquals($output->data->module_srl, 111); - $this->assertEquals($output->data->module, null); - } - - function test_module_getInfo(){ - $args->site_srl = 0; - $output = executeQuery('module.getSiteInfo', $args); - $this->assertTrue(is_a($output, 'Object')); - $this->assertEquals(0, $output->error, $output->message . PHP_EOL . $output->variables["_query"]); - } - - function test_document_getDocumentList_pagination(){ - $args->sort_index = 'list_order'; - $args->order_type = 'asc'; - $args->page = 1; - $args->list_count = 30; - $args->page_count = 10; - $args->s_member_srl = 4; - - $output = executeQuery('document.getDocumentList', $args); - $this->assertEquals(0, $output->error, $output->message . PHP_EOL . $output->variables["_query"]); - } - - function test_syndication_getDocumentList(){ - $args->module_srl = NULL; - $args->exclude_module_srl = NULL; - $args->category_srl = NULL; - $args->sort_index = 'list_order'; - $args->order_type = 'asc'; - $args->page = 5; - $args->list_count = 30; - $args->page_count = 10; - $args->start_date = NULL; - $args->end_date = NULL; - $args->member_srl = NULL; - $output = executeQuery('document.getDocumentList', $args); - - $this->assertTrue(is_int($output->page), $output->message . PHP_EOL . $output->variables["_query"]); - } - - function test_member_getMemberList(){ - $args->is_admin = ''; - $args->is_denied = ''; - $args->sort_index = "list_order"; - $args->sort_order = 'asc'; - $args->list_count = 40; - $args->page_count = 10; - - $output = executeQuery('member.getMemberList', $args); - $this->assertEquals(0, $output->error, $output->message . PHP_EOL . $output->variables["_query"]); - } - } -?> diff --git a/tests/classes/db/db/xml_query/cubrid/CubridSelectTest.php b/tests/classes/db/db/xml_query/cubrid/CubridSelectTest.php deleted file mode 100644 index bd439956f..000000000 --- a/tests/classes/db/db/xml_query/cubrid/CubridSelectTest.php +++ /dev/null @@ -1,456 +0,0 @@ - */ - - class CubridSelectTest extends CubridTest { - - function _test($xml_file, $argsString, $expected, $columnList = null){ - $this->_testQuery($xml_file, $argsString, $expected, 'getSelectSql', $columnList); - } - - function testSelectStar(){ - $xml_file = _XE_PATH_ . "modules/module/queries/getAdminId.xml"; - $argsString = '$args->module_srl = 10;'; - $expected = 'SELECT * FROM "xe_module_admins" as "module_admins" , "xe_member" as "member" WHERE "module_srl" = 10 and "member"."member_srl" = "module_admins"."member_srl"'; - $this->_test($xml_file, $argsString, $expected); - } - - function testRequiredParameter(){ - $xml_file = _XE_PATH_ . "modules/module/queries/getAdminId.xml"; - $argsString = ''; - $expected = 'Date incorecte! Query-ul nu a putut fi executat.'; - $this->_test($xml_file, $argsString, $expected); - } - - function testWithoutCategoriesTag(){ - $xml_file = _XE_PATH_ . "modules/module/queries/getModuleCategories.xml"; - $argsString = ''; - $expected = 'SELECT * FROM "xe_module_categories" as "module_categories" ORDER BY "title" asc'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_module_getDefaultModules(){ - $xml_file = _XE_PATH_ . "modules/module/queries/getDefaultModules.xml"; - $argsString = '$args->site_srl = 0;'; - $expected = 'SELECT "modules"."site_srl" - , "modules"."module" - , "modules"."mid" - , "modules"."browser_title" - , "module_categories"."title" as "category" - , "modules"."module_srl" - FROM "xe_modules" as "modules" - left join "xe_module_categories" as "module_categories" - on "module_categories"."module_category_srl" = "modules"."module_category_srl" - WHERE "modules"."site_srl" = 0 - ORDER BY "modules"."module" asc, "module_categories"."title" asc, "modules"."mid" asc'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_module_getSiteInfo(){ - $xml_file = _XE_PATH_ . "modules/module/queries/getSiteInfo.xml"; - $argsString = '$args->site_srl = 0;'; - $expected = 'SELECT "modules"."site_srl" as "module_site_srl" - , "modules"."module_srl" as "module_srl" - , "modules"."module" as "module" - , "modules"."module_category_srl" as "module_category_srl" - , "modules"."layout_srl" as "layout_srl" - , "modules"."mlayout_srl" as "mlayout_srl" - , "modules"."use_mobile" as "use_mobile" - , "modules"."menu_srl" as "menu_srl" - , "modules"."mid" as "mid" - , "modules"."skin" as "skin" - , "modules"."mskin" as "mskin" - , "modules"."browser_title" as "browser_title" - , "modules"."description" as "description" - , "modules"."is_default" as "is_default" - , "modules"."content" as "content" - , "modules"."mcontent" as "mcontent" - , "modules"."open_rss" as "open_rss" - , "modules"."header_text" as "header_text" - , "modules"."footer_text" as "footer_text" - , "modules"."regdate" as "regdate" - , "sites"."site_srl" as "site_srl" - , "sites"."domain" as "domain" - , "sites"."index_module_srl" as "index_module_srl" - , "sites"."default_language" as "default_language" - FROM "xe_sites" as "sites" - left join "xe_modules" as "modules" on "modules"."module_srl" = "sites"."index_module_srl" - WHERE "sites"."site_srl" = 0 '; - $this->_test($xml_file, $argsString, $expected); - } - - function test_addon_getAddonInfo(){ - $xml_file = _XE_PATH_ . "modules/addon/queries/getAddonInfo.xml"; - $argsString = '$args->addon = "captcha";'; - $expected = 'SELECT * - FROM "xe_addons" as "addons" - WHERE "addon" = \'captcha\' '; - $this->_test($xml_file, $argsString, $expected); - } - - function test_addon_getAddons(){ - $xml_file = _XE_PATH_ . "modules/addon/queries/getAddons.xml"; - $argsString = ''; - $expected = 'SELECT * - FROM "xe_addons" as "addons" - ORDER BY "addon" asc'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_admin_getCommentCount(){ - $xml_file = _XE_PATH_ . "modules/admin/queries/getCommentCount.xml"; - $argsString = ''; - $expected = 'SELECT count(*) as "count" - FROM "xe_comments" as "comments"'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_admin_getCommentDeclaredStatus(){ - $xml_file = _XE_PATH_ . "modules/admin/queries/getCommentDeclaredStatus.xml"; - $argsString = '$args->date = "20110411";'; - $expected = 'SELECT substr("regdate",1,8) as "date", count(*) as "count" - FROM "xe_comment_declared_log" as "comment_declared_log" - WHERE "regdate" >= \'20110411\' - GROUP BY substr("regdate",1,8) - ORDER BY substr("regdate",1,8) asc limit 2'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_member_getAutoLogin(){ - $xml_file = _XE_PATH_ . "modules/member/queries/getAutoLogin.xml"; - $argsString = '$args->autologin_key = 10;'; - $expected = 'SELECT "member"."user_id" as "user_id" - , "member"."password" as "password" - , "member_autologin"."autologin_key" as "autologin_key" - FROM "xe_member" as "member" , "xe_member_autologin" as "member_autologin" - WHERE "member_autologin"."autologin_key" = \'10\' - and "member"."member_srl" = "member_autologin"."member_srl"'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_opage_getOpageList(){ - $xml_file = _TEST_PATH_ . "db/xml_query/cubrid/data/opage.getOpageList.xml"; - $argsString = '$args->s_title = "yuhuu"; - $args->module = \'opage\';'; - $expected = 'SELECT * - FROM "xe_modules" as "modules" - WHERE "module" = \'opage\' and ("title" like \'%yuhuu%\') - ORDER BY "module_srl" desc - LIMIT 0, 20'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_syndication_getGrantedModules(){ - $xml_file = _TEST_PATH_ . "db/xml_query/cubrid/data/syndication.getGrantedModules.xml"; - $argsString = '$args->module_srl = 12; - $args->name = array(\'access\',\'view\',\'list\');'; - $expected = 'select "module_srl" - from "xe_module_grants" as "module_grants" - where "name" in (\'access\',\'view\',\'list\') - and ("group_srl" >= 1 - or "group_srl" = -1 - or "group_srl" = -2) - group by "module_srl"'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_document_getDocumentList(){ - $xml_file = _XE_PATH_ . "modules/document/queries/getDocumentList.xml"; - $argsString = '$args->sort_index = \'list_order\'; - $args->order_type = \'asc\'; - $args->page = 1; - $args->list_count = 30; - $args->page_count = 10; - $args->s_member_srl = 4;'; - $expected = 'select * - from "xe_documents" as "documents" - where ("member_srl" = 4) - and "list_order" <= 2100000000 - order by "list_order" asc - limit 0, 30'; - $this->_test($xml_file, $argsString, $expected); - - - } - - /** - * Test column list - */ - function test_session_getSession(){ - $xml_file = _XE_PATH_ . "modules/session/queries/getSession.xml"; - $argsString = '$args->session_key = \'session_key\';'; - $columnList = array('session_key', 'cur_mid', 'val'); - - $expected = 'select "session_key", "cur_mid", "val" - from "xe_session" as "session" - where "session_key" = \'session_key\''; - - $this->_test($xml_file, $argsString, $expected, $columnList); - } - - function test_module_getModuleInfoByDocument(){ - $xml_file = _XE_PATH_ . "modules/module/queries/getModuleInfoByDocument.xml"; - $argsString = '$args->document_srl = 10;'; - $expected = 'SELECT "modules".* - FROM "xe_modules" as "modules" - , "xe_documents" as "documents" - WHERE "documents"."document_srl" = 10 - and "modules"."module_srl" = "documents"."module_srl"'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_member_getMemberList(){ - $xml_file = _XE_PATH_ . "modules/member/queries/getMemberList.xml"; - $argsString = '$args->is_admin = \'\'; - $args->is_denied = \'\'; - $args->sort_index = "list_order"; - $args->sort_order = \'asc\'; - $args->list_count = 40; - $args->page_count = 10;'; - $expected = 'select * - from "xe_member" as "member" - where "list_order" <= 2100000000 - order by "list_order" asc - limit 0, 40'; - $this->_test($xml_file, $argsString, $expected); - } - - /** - * Tests "not in" query condition - * Query argument is a single value - not in (12) - */ - function test_module_getModules_Notin_Single_Value(){ - $xml_file = _TEST_PATH_ . "db/xml_query/cubrid/data/syndication.getModules.xml"; - $argsString = '$args->except_module_srls = 12;'; - $expected = 'select "modules"."site_srl" as "site_srl" - , "modules"."module_srl" as "module_srl" - , "sites"."domain" as "domain" - , "modules"."mid" as "mid" - , "modules"."module" as "module" - , "modules"."browser_title" as "browser_title" - , "modules"."description" as "description" - from "xe_sites" as "sites" - , "xe_modules" as "modules" - left join "xe_syndication_except_modules" as "except_modules" - on "modules"."module_srl" = "except_modules"."module_srl" - where "modules"."module_srl" not in (12) - and "sites"."site_srl" = "modules"."site_srl" - and "except_modules"."module_srl" is null'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_module_getModules_Notin_Multiple_Value_String(){ - $xml_file = _TEST_PATH_ . "db/xml_query/cubrid/data/syndication.getModules.xml"; - $argsString = '$args->except_module_srls = "12, 13, 14";'; - $expected = 'select "modules"."site_srl" as "site_srl" - , "modules"."module_srl" as "module_srl" - , "sites"."domain" as "domain" - , "modules"."mid" as "mid" - , "modules"."module" as "module" - , "modules"."browser_title" as "browser_title" - , "modules"."description" as "description" - from "xe_sites" as "sites" - , "xe_modules" as "modules" - left join "xe_syndication_except_modules" as "except_modules" - on "modules"."module_srl" = "except_modules"."module_srl" - where "modules"."module_srl" not in (12,13,14) - and "sites"."site_srl" = "modules"."site_srl" - and "except_modules"."module_srl" is null'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_module_getModules_Notin_Multiple_Value_Array(){ - $xml_file = _TEST_PATH_ . "db/xml_query/cubrid/data/syndication.getModules.xml"; - $argsString = '$args->except_module_srls = array(12, 13, 14);'; - $expected = 'select "modules"."site_srl" as "site_srl" - , "modules"."module_srl" as "module_srl" - , "sites"."domain" as "domain" - , "modules"."mid" as "mid" - , "modules"."module" as "module" - , "modules"."browser_title" as "browser_title" - , "modules"."description" as "description" - from "xe_sites" as "sites" - , "xe_modules" as "modules" - left join "xe_syndication_except_modules" as "except_modules" - on "modules"."module_srl" = "except_modules"."module_srl" - where "modules"."module_srl" not in (12,13,14) - and "sites"."site_srl" = "modules"."site_srl" - and "except_modules"."module_srl" is null'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_module_getModules_In_Single_Value(){ - $xml_file = _TEST_PATH_ . "db/xml_query/cubrid/data/syndication.getModules.xml"; - $argsString = '$args->module_srls = 12;'; - $expected = 'select "modules"."site_srl" as "site_srl" - , "modules"."module_srl" as "module_srl" - , "sites"."domain" as "domain" - , "modules"."mid" as "mid" - , "modules"."module" as "module" - , "modules"."browser_title" as "browser_title" - , "modules"."description" as "description" - from "xe_sites" as "sites" - , "xe_modules" as "modules" - left join "xe_syndication_except_modules" as "except_modules" - on "modules"."module_srl" = "except_modules"."module_srl" - where "modules"."module_srl" in (12) - and "sites"."site_srl" = "modules"."site_srl" - and "except_modules"."module_srl" is null'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_module_getModules_In_Multiple_Value_String(){ - $xml_file = _TEST_PATH_ . "db/xml_query/cubrid/data/syndication.getModules.xml"; - $argsString = '$args->module_srls = "12, 13, 14";'; - $expected = 'select "modules"."site_srl" as "site_srl" - , "modules"."module_srl" as "module_srl" - , "sites"."domain" as "domain" - , "modules"."mid" as "mid" - , "modules"."module" as "module" - , "modules"."browser_title" as "browser_title" - , "modules"."description" as "description" - from "xe_sites" as "sites" - , "xe_modules" as "modules" - left join "xe_syndication_except_modules" as "except_modules" - on "modules"."module_srl" = "except_modules"."module_srl" - where "modules"."module_srl" in (12,13,14) - and "sites"."site_srl" = "modules"."site_srl" - and "except_modules"."module_srl" is null'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_module_getModules_In_Multiple_Value_Array(){ - $xml_file = _TEST_PATH_ . "db/xml_query/cubrid/data/syndication.getModules.xml"; - $argsString = '$args->module_srls = array(12, 13, 14);'; - $expected = 'select "modules"."site_srl" as "site_srl" - , "modules"."module_srl" as "module_srl" - , "sites"."domain" as "domain" - , "modules"."mid" as "mid" - , "modules"."module" as "module" - , "modules"."browser_title" as "browser_title" - , "modules"."description" as "description" - from "xe_sites" as "sites" - , "xe_modules" as "modules" - left join "xe_syndication_except_modules" as "except_modules" - on "modules"."module_srl" = "except_modules"."module_srl" - where "modules"."module_srl" in (12,13,14) - and "sites"."site_srl" = "modules"."site_srl" - and "except_modules"."module_srl" is null'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_module_getModuleSrlByMid_In_Multiple_Value_Array_Strings(){ - $xml_file = _XE_PATH_ . "modules/module/queries/getModuleSrlByMid.xml"; - $argsString = '$args->mid = "\'mid1\', \'mid2\'";'; - $expected = 'select "module_srl" from "xe_modules" as "modules" where "mid" in (\'mid1\',\'mid2\')'; - $this->_test($xml_file, $argsString, $expected); - } - - - function test_file_getFileList_In_Empty_Array_Value(){ - $xml_file = _XE_PATH_ . "modules/file/queries/getFileList.xml"; - $argsString = '$args->exclude_module_srl = 12; $args->s_module_srl = array(); '; - $expected = 'select "files".* - from "xe_files" as "files" - left join "xe_member" as "member" on "files"."member_srl" = "member"."member_srl" - where "files"."module_srl" not in (12) - order by "files"."file_srl" desc - limit 0, 20'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_file_getFileList_Not_In_Empty_String_Value(){ - $xml_file = _XE_PATH_ . "modules/file/queries/getFileList.xml"; - $argsString = '$args->exclude_module_srl = ""; $args->s_module_srl = array(12); '; - $expected = 'select "files".* - from "xe_files" as "files" - left join "xe_member" as "member" on "files"."member_srl" = "member"."member_srl" - where "files"."module_srl" in (12) - order by "files"."file_srl" desc - limit 0, 20'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_document_getDeclaredList_In_Query(){ - $xml_file = _XE_PATH_ . "modules/document/queries/getDeclaredList.xml"; - $argsString = "\$args->list_count = 30; - \$args->page_count = 10; - \$args->sort_index = 'document_declared.declared_count'; - \$args->order_type = 'desc';"; - $expected = 'select * from "xe_documents" as "documents" - , "xe_document_declared" as "document_declared" - where "documents"."document_srl" - in ("document_declared"."document_srl") - order by "document_declared"."declared_count" desc - limit 0, 30'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_getExpiredSession_curdate(){ - $xml_file = _XE_PATH_ . "modules/session/queries/getExpiredSessions.xml"; - $argsString = ''; - $expected = 'select "session_key" - from "xe_session" as "session" - where "expired" <= \'' . date("YmdHis") . '\''; - $this->_test($xml_file, $argsString, $expected); - } - - function test_rlike_1(){ - $xml_file = _TEST_PATH_ . "db/xml_query/cubrid/data/rlike1.xml"; - $argsString = '$args->title = "aaa";'; - $expected = 'select * from "xe_modules" as "modules" where "title" rlike \'aaa\''; - define('__CUBRID_VERSION__', '8.4.1'); - $this->_test($xml_file, $argsString, $expected); - } - - - function test_resource_getLatestItem(){ - $xml_file = _TEST_PATH_ . "db/xml_query/cubrid/data/resource.getLatestItem.xml"; - $expected = 'SELECT "package"."module_srl" as "module_srl" - , "package"."status" as "status" - , "package"."category_srl" as "category_srl" - , "package"."member_srl" as "member_srl" - , "package"."package_srl" as "package_srl" - , "package"."path" as "path" - , "package"."license" as "license" - , "package"."title" as "title" - , "package"."homepage" as "homepage" - , "package"."description" as "package_description" - , "package"."voter" as "package_voter" - , "package"."voted" as "package_voted" - , "package"."downloaded" as "package_downloaded" - , "package"."regdate" as "package_regdate" - , "package"."last_update" as "package_last_update" - , "member"."nick_name" as "nick_name" - , "member"."user_id" as "user_id" - , "item"."item_srl" as "item_srl" - , "item"."document_srl" as "document_srl" - , "item"."file_srl" as "item_file_srl" - , "item"."screenshot_url" as "item_screenshot_url" - , "item"."version" as "item_version" - , "item"."voter" as "item_voter" - , "item"."voted" as "item_voted" - , "item"."downloaded" as "item_downloaded" - , "item"."regdate" as "item_regdate" - FROM "xe_resource_packages" as "package" - , "xe_member" as "member" - , "xe_resource_items" as "item" - WHERE "package"."package_srl" = ? - and "package"."member_srl" = "member"."member_srl" - and "item"."item_srl" = "package"."latest_item_srl"'; - $argsString = '$args->package_srl = 18325662;'; - $expectedArgs = array(18325662); - $this->_testPreparedQuery($xml_file, $argsString, $expected, 'getSelectSql', $expectedArgs); - } - - /** - * Issue 1431 - xml click count error - */ - function testClickCount() - { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/click_count.xml"; - $argsString = '$args->incr_expose_count = true;'; - $expected = 'select INCR("expose_count") from "xe_modules" as "modules"'; - $this->_test($xml_file, $argsString, $expected); - } - - } diff --git a/tests/classes/db/db/xml_query/cubrid/CubridSubqueryTest.php b/tests/classes/db/db/xml_query/cubrid/CubridSubqueryTest.php deleted file mode 100644 index 42d5c59b0..000000000 --- a/tests/classes/db/db/xml_query/cubrid/CubridSubqueryTest.php +++ /dev/null @@ -1,192 +0,0 @@ - */ - -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - - class CubridSubqueryTest extends CubridTest { - var $xmlPath = 'data/'; - - function CubridSubqueryTest(){ - $this->xmlPath = str_replace('CubridSubqueryTest.php', '', str_replace('\\', '/', __FILE__)) . $this->xmlPath; - } - - function _test($xml_file, $argsString, $expected){ - $this->_testQuery($xml_file, $argsString, $expected, 'getSelectSql'); - } - - function testSelectUncorrelated1(){ - $xml_file = $this->xmlPath . "select_uncorrelated1.xml"; - $argsString = '$args->user_id = 4; - '; - $expected = 'select "column_a" as "value_a" - , (select max("column_b") as "count" - from "xe_table_b" as "table_b" - ) as "value_b" - from "xe_table_a" as "table_a" - where "column_a" = 4'; - $this->_test($xml_file, $argsString, $expected); - } - - function testSelectUncorrelated2(){ - $xml_file = $this->xmlPath . "select_uncorrelated2.xml"; - $argsString = '$args->user_id = 4; - $args->user_name = 7; - '; - $expected = 'SELECT "column_a" as "value_a" - , "column_b" as "value_b" - , "column_c" as "value_c" - , (SELECT max("column_b") as "count" - FROM "xe_table_b" as "table_b" - WHERE "column_ab" = 7) as "value_b" - FROM "xe_table_a" as "table_a" - WHERE "column_a" = 4'; - $this->_test($xml_file, $argsString, $expected); - } - - function testFromUncorrelated1(){ - $xml_file = $this->xmlPath . "from_uncorrelated1.xml"; - $argsString = '$args->user_id = 4; - $args->user_name = 7; - '; - $expected = 'select max("documentcountbymember"."count") as "maxcount" - from ( - select "member_srl" as "member_srl" - , count(*) as "count" - from "xe_documents" as "documents" - group by "member_srl" - ) as "documentcountbymember"'; - $this->_test($xml_file, $argsString, $expected); - } - -// function testFromUncorrelated2(){ -// $xml_file = $this->xmlPath . "from_uncorrelated1.xml"; -// $argsString = '$args->user_id = 4; -// $args->user_name = 7; -// '; -// $expected = 'select max("documentcountbymember"."count") as "maxcount" -// from ( -// select "member_srl" as "member_srl" -// , count(*) as "count" -// from "xe_documents" as "documents" -// group by "member_srl" -// ) as "documentcountbymember"'; -// $this->_test($xml_file, $argsString, $expected); -// } - - function testFromUncorrelated2(){ - $xml_file = $this->xmlPath . "from_uncorrelated2.xml"; - $argsString = '$args->member_srl = 4; - $args->module_srl = 7; - '; - $expected = 'select max("documentcountbymember"."count") as "maxcount" - from ( - select "member_srl" as "member_srl" - , count(*) as "count" - from "xe_documents" as "documents" - where "module_srl" = 7 - group by "member_srl" - ) as "documentcountbymember" - where "member_srl" = 4 - '; - $this->_test($xml_file, $argsString, $expected); - } - - function testSelectCorrelated1(){ - $xml_file = $this->xmlPath . "select_correlated1.xml"; - $argsString = '$args->user_id = 7;'; - $expected = 'select *, - (select count(*) as "count" - from "xe_documents" as "documents" - where "documents"."user_id" = "member"."user_id" - ) as "totaldocumentcount" - from "xe_member" as "member" - where "user_id" = \'7\''; - $this->_test($xml_file, $argsString, $expected); - } - - function testSelectCorrelated2(){ - $xml_file = $this->xmlPath . "select_correlated2.xml"; - $argsString = '$args->user_id = 7; - $args->module_srl = 17; - '; - $expected = 'select *, - (select count(*) as "count" - from "xe_documents" as "documents" - where "documents"."user_id" = "member"."user_id" - and "module_srl" = 17 - ) as "totaldocumentcount" - from "xe_member" as "member" - where "user_id" = \'7\''; - $this->_test($xml_file, $argsString, $expected); - } - - function testWhereCorrelated1(){ - $xml_file = $this->xmlPath . "where_correlated1.xml"; - $argsString = ''; - $expected = 'select * - from "xe_member" as "member" - where "regdate" = ( - select max("regdate") as "maxregdate" - from "xe_documents" as "documents" - where "documents"."user_id" = "member"."user_id" - )'; - $this->_test($xml_file, $argsString, $expected); - } - - function testWhereCorrelated2(){ - $xml_file = $this->xmlPath . "where_correlated2.xml"; - $argsString = '$args->module_srl = 12; $args->member_srl = 19;'; - $expected = 'select * - from "xe_member" as "member" - where "member_srl" = 19 - and "regdate" = ( - select max("regdate") as "maxregdate" - from "xe_documents" as "documents" - where "documents"."user_id" = "member"."user_id" - and "module_srl" = 12 - ) - '; - $this->_test($xml_file, $argsString, $expected); - } - - function testFromCorrelated1(){ - $xml_file = $this->xmlPath . "from_correlated1.xml"; - $argsString = ''; - $expected = 'select "m"."member_srl" - , "m"."nickname" - , "m"."regdate" - , "a"."count" - from ( - select "member_srl" as "member_srl" - , count(*) as "count" - from "xe_documents" as "documents" - group by "member_srl" - ) as "a" - left join "xe_member" as "m" on "m"."member" = "a"."member_srl"'; - $this->_test($xml_file, $argsString, $expected); - } - - function testFromCorrelated2(){ - $xml_file = $this->xmlPath . "from_correlated2.xml"; - $argsString = '$args->module_srl = 12; $args->count = 20;'; - $expected = 'select "m"."member_srl" - , "m"."nickname" - , "m"."regdate" - , "a"."count" - from ( - select "member_srl" as "member_srl" - , count(*) as "count" - from "xe_documents" as "documents" - where "module_srl" = 12 - group by "member_srl" - ) as "a" - left join "xe_member" as "m" on "m"."member" = "a"."member_srl" - where "a"."count" >= 20 -'; - $this->_test($xml_file, $argsString, $expected); - } - } -?> diff --git a/tests/classes/db/db/xml_query/cubrid/CubridUpdateTest.php b/tests/classes/db/db/xml_query/cubrid/CubridUpdateTest.php deleted file mode 100644 index 2f1012d4b..000000000 --- a/tests/classes/db/db/xml_query/cubrid/CubridUpdateTest.php +++ /dev/null @@ -1,98 +0,0 @@ - */ - - class CubridUpdateTest extends CubridTest { - - function _test($xml_file, $argsString, $expected){ - $this->_testQuery($xml_file, $argsString, $expected, 'getUpdateSql'); - } - - function test_module_updateModule(){ - $xml_file = _XE_PATH_ . "modules/module/queries/updateModule.xml"; - $argsString = ' $args->module_category_srl = 0; - $args->browser_title = "test"; - $args->layout_srl = 0; - $args->mlayout_srl = 0; - $args->module = "page"; - $args->mid = "test"; - $args->use_mobile = ""; - $args->site_srl = 0; - $args->module_srl = 47374;'; - $expected = 'update "xe_modules" as "modules" - set "module" = \'page\' - , "module_category_srl" = 0 - , "layout_srl" = 0 - , "mid" = \'test\' - , "browser_title" = \'test\' - , "description" = \'\' - , "is_default" = \'n\' - , "open_rss" = \'y\' - , "header_text" = \'\' - , "footer_text" = \'\' - , "mlayout_srl" = 0 - , "use_mobile" = \'n\' - where "site_srl" = 0 and "module_srl" = 47374'; -// $expected = 'UPDATE "xe_modules" as "modules" -// SET "module" = \'page\' -// , "mid" = \'test\' -// , "browser_title" = \'test\' -// , "description" = \'\' -// , "is_default" = \'N\' -// , "open_rss" = \'Y\' -// , "header_text" = \'\' -// , "footer_text" = \'\' -// , "use_mobile" = \'n\' -// WHERE "site_srl" = 0 -// AND "module_srl" = 47374'; - $this->_test($xml_file, $argsString, $expected); - } - function test_member_updateLastLogin(){ - $xml_file = _XE_PATH_ . "modules/member/queries/updateLastLogin.xml"; - $argsString = ' $args->member_srl = 4; - $args->last_login = "20110607120549";'; - $expected = 'UPDATE "xe_member" as "member" SET "member_srl" = 4, "last_login" = \'20110607120549\' WHERE "member_srl" = 4'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_module_updatePoint(){ - $xml_file = _XE_PATH_ . "modules/point/queries/updatePoint.xml"; - $argsString = ' $args->member_srl = 4; - $args->point = 105;'; - $expected = 'UPDATE "xe_point" as "point" SET "point" = 105 WHERE "member_srl" = 4'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_module_updateCounterUnique(){ - $xml_file = _XE_PATH_ . "modules/counter/queries/updateCounterUnique.xml"; - $argsString = '$args->regdate = 20110607; - '; - $expected = 'UPDATE "xe_counter_status" as "counter_status" SET "unique_visitor" = "unique_visitor" + 1, - "pageview" = "pageview" + 1 WHERE "regdate" = 20110607 '; - $this->_test($xml_file, $argsString, $expected); - } - - function test_module_updateMenu(){ - $xml_file = _XE_PATH_ . "modules/menu/queries/updateMenu.xml"; - $argsString = '$args->menu_srl = 204; - $args->title = "test_menu"; - '; - $expected = 'UPDATE "xe_menu" as "menu" SET "title" = \'test_menu\' WHERE "menu_srl" = 204'; - $this->_test($xml_file, $argsString, $expected); - } - - - function test_menu_updateMenuItemNode(){ - $xml_file = _XE_PATH_ . "modules/menu/queries/updateMenuItemNode.xml"; - $argsString = '$args->parent_srl = 0; - $args->menu_srl = 237423; - $args->listorder = -8; - $args->menu_item_srl = 237431;'; - $expected = 'UPDATE "xe_menu_item" as "menu_item" SET "parent_srl" = 0, "listorder" = -8 WHERE "menu_item_srl" = 237431'; - $this->_test($xml_file, $argsString, $expected); - } - -// $queryTester->test_admin_deleteActionForward(); -// $queryTester->test_module_insertModule(); - - - } diff --git a/tests/classes/db/db/xml_query/cubrid/data/click_count.xml b/tests/classes/db/db/xml_query/cubrid/data/click_count.xml deleted file mode 100644 index 3dd210b09..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/click_count.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/cubrid/data/doc_subquery.xml b/tests/classes/db/db/xml_query/cubrid/data/doc_subquery.xml deleted file mode 100644 index 5709c7a17..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/doc_subquery.xml +++ /dev/null @@ -1,21 +0,0 @@ - - -
    - - - - - - - -
    - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/cubrid/data/from_correlated1.xml b/tests/classes/db/db/xml_query/cubrid/data/from_correlated1.xml deleted file mode 100644 index 7c2c27143..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/from_correlated1.xml +++ /dev/null @@ -1,27 +0,0 @@ - - -
    - -
    - - - - - - - - -
    - - - - -
    -
    - - - - - - -
    \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/cubrid/data/from_correlated2.xml b/tests/classes/db/db/xml_query/cubrid/data/from_correlated2.xml deleted file mode 100644 index 8dc162154..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/from_correlated2.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - -
    - - - - - - - - - - - -
    - - - - -
    -
    - - - - - - - - - -
    \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/cubrid/data/from_uncorrelated1.xml b/tests/classes/db/db/xml_query/cubrid/data/from_uncorrelated1.xml deleted file mode 100644 index ec83f3f36..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/from_uncorrelated1.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - -
    - - - - - - - - -
    -
    - - - -
    \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/cubrid/data/from_uncorrelated2.xml b/tests/classes/db/db/xml_query/cubrid/data/from_uncorrelated2.xml deleted file mode 100644 index 6431b3b90..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/from_uncorrelated2.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - -
    - - - - - - - - - - - -
    -
    - - - - - - -
    \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/cubrid/data/ignore_index_hint.xml b/tests/classes/db/db/xml_query/cubrid/data/ignore_index_hint.xml deleted file mode 100644 index e911abce5..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/ignore_index_hint.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/cubrid/data/index_hint_for_all.xml b/tests/classes/db/db/xml_query/cubrid/data/index_hint_for_all.xml deleted file mode 100644 index b0784fa94..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/index_hint_for_all.xml +++ /dev/null @@ -1,11 +0,0 @@ - - -
    - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/cubrid/data/mysql_index_hint.xml b/tests/classes/db/db/xml_query/cubrid/data/mysql_index_hint.xml deleted file mode 100644 index 702080eb5..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/mysql_index_hint.xml +++ /dev/null @@ -1,11 +0,0 @@ - - -
    - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/cubrid/data/one_index_hint_one_table.xml b/tests/classes/db/db/xml_query/cubrid/data/one_index_hint_one_table.xml deleted file mode 100644 index 070ed3697..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/one_index_hint_one_table.xml +++ /dev/null @@ -1,11 +0,0 @@ - - -
    - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/cubrid/data/opage.getOpageList.xml b/tests/classes/db/db/xml_query/cubrid/data/opage.getOpageList.xml deleted file mode 100644 index 2e7964335..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/opage.getOpageList.xml +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/classes/db/db/xml_query/cubrid/data/resource.getLatestItem.xml b/tests/classes/db/db/xml_query/cubrid/data/resource.getLatestItem.xml deleted file mode 100644 index f6fa06e83..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/resource.getLatestItem.xml +++ /dev/null @@ -1,40 +0,0 @@ - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/classes/db/db/xml_query/cubrid/data/rlike1.xml b/tests/classes/db/db/xml_query/cubrid/data/rlike1.xml deleted file mode 100644 index 895b1ccb0..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/rlike1.xml +++ /dev/null @@ -1,11 +0,0 @@ - - -
    - - - - - - - - diff --git a/tests/classes/db/db/xml_query/cubrid/data/select_correlated1.xml b/tests/classes/db/db/xml_query/cubrid/data/select_correlated1.xml deleted file mode 100644 index 797d878e3..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/select_correlated1.xml +++ /dev/null @@ -1,22 +0,0 @@ - - -
    - - - - - -
    - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/cubrid/data/select_correlated2.xml b/tests/classes/db/db/xml_query/cubrid/data/select_correlated2.xml deleted file mode 100644 index 85ab25308..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/select_correlated2.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
    - - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/cubrid/data/select_uncorrelated1.xml b/tests/classes/db/db/xml_query/cubrid/data/select_uncorrelated1.xml deleted file mode 100644 index 00e556e35..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/select_uncorrelated1.xml +++ /dev/null @@ -1,19 +0,0 @@ - - -
    - - - - - -
    - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/cubrid/data/select_uncorrelated2.xml b/tests/classes/db/db/xml_query/cubrid/data/select_uncorrelated2.xml deleted file mode 100644 index a42294bcf..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/select_uncorrelated2.xml +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - - - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/cubrid/data/syndication.getGrantedModules.xml b/tests/classes/db/db/xml_query/cubrid/data/syndication.getGrantedModules.xml deleted file mode 100644 index 97d2b4ec9..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/syndication.getGrantedModules.xml +++ /dev/null @@ -1,19 +0,0 @@ - - -
    - - - - - - - - - - - - - - - - diff --git a/tests/classes/db/db/xml_query/cubrid/data/syndication.getModules.xml b/tests/classes/db/db/xml_query/cubrid/data/syndication.getModules.xml deleted file mode 100644 index fbbe83ad9..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/syndication.getModules.xml +++ /dev/null @@ -1,26 +0,0 @@ - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - - - - -
    diff --git a/tests/classes/db/db/xml_query/cubrid/data/three_index_hints_two_tables.xml b/tests/classes/db/db/xml_query/cubrid/data/three_index_hints_two_tables.xml deleted file mode 100644 index 6656d3b98..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/three_index_hints_two_tables.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - -
    - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/cubrid/data/three_index_hints_two_tables_combined.xml b/tests/classes/db/db/xml_query/cubrid/data/three_index_hints_two_tables_combined.xml deleted file mode 100644 index f2ac06e76..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/three_index_hints_two_tables_combined.xml +++ /dev/null @@ -1,14 +0,0 @@ - - -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/cubrid/data/two_index_hints_one_table.xml b/tests/classes/db/db/xml_query/cubrid/data/two_index_hints_one_table.xml deleted file mode 100644 index 832becd1b..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/two_index_hints_one_table.xml +++ /dev/null @@ -1,12 +0,0 @@ - - -
    - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/cubrid/data/where_correlated1.xml b/tests/classes/db/db/xml_query/cubrid/data/where_correlated1.xml deleted file mode 100644 index f6115c71f..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/where_correlated1.xml +++ /dev/null @@ -1,21 +0,0 @@ - - -
    - - - - - - - -
    - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/cubrid/data/where_correlated2.xml b/tests/classes/db/db/xml_query/cubrid/data/where_correlated2.xml deleted file mode 100644 index 2ab45461c..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/where_correlated2.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
    - - - - - - - - -
    - - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/cubrid/data/where_uncorrelated1.xml b/tests/classes/db/db/xml_query/cubrid/data/where_uncorrelated1.xml deleted file mode 100644 index 248b63ae9..000000000 --- a/tests/classes/db/db/xml_query/cubrid/data/where_uncorrelated1.xml +++ /dev/null @@ -1,18 +0,0 @@ - - -
    - - - - - - - -
    - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mssql/MssqlIndexHintTest.php b/tests/classes/db/db/xml_query/mssql/MssqlIndexHintTest.php deleted file mode 100644 index 307381d20..000000000 --- a/tests/classes/db/db/xml_query/mssql/MssqlIndexHintTest.php +++ /dev/null @@ -1,65 +0,0 @@ - */ - - class MssqlIndexHintTest extends MssqlTest { - var $xmlPath = 'data/'; - - function MssqlIndexHintTest(){ - $this->xmlPath = str_replace('MssqlIndexHintTest.php', '', str_replace('\\', '/', __FILE__)) . $this->xmlPath; - } - - function _test($xml_file, $argsString, $expected){ - $this->_testQuery($xml_file, $argsString, $expected, 'getSelectSql'); - } - - function testOneUseIndexHintAndOneTable(){ - $xml_file = $this->xmlPath . "one_index_hint_one_table.xml"; - $argsString = ''; - $expected = 'select * from [xe_member] as [member] with(index([idx_member_list_order]))'; - $this->_test($xml_file, $argsString, $expected); - } - - - function testTwoUseIndexHintsAndOneTable(){ - $xml_file = $this->xmlPath . "two_index_hints_one_table.xml"; - $argsString = ''; - $expected = 'select * from [xe_member] as [member] with(index([idx_member_list_order]), index([idx_member_srl]))'; - $this->_test($xml_file, $argsString, $expected); - } - - function testThreeUseIndexHintsAndTwoTables(){ - $xml_file = $this->xmlPath . "three_index_hints_two_tables.xml"; - $argsString = ''; - $expected = 'select * from [xe_member] as [member] with(index([idx_member_list_order]), index([idx_member_srl])) - , [xe_document] as [document] with(index([idx_document_srl]))'; - $this->_test($xml_file, $argsString, $expected); - } - - /** - * Tests that index is added if "for" attribute is "ALL" - * - * example: ... - */ - function testIndexHintForAll(){ - $xml_file = $this->xmlPath . "index_hint_for_all.xml"; - $argsString = ''; - $expected = 'select * from [xe_member] as [member] with(index([idx_member_list_order]))'; - $this->_test($xml_file, $argsString, $expected); - } - - - function testIgnoreIndexHintIsSkipped(){ - $xml_file = $this->xmlPath . "ignore_index_hint.xml"; - $argsString = ''; - $expected = 'select * from [xe_member] as [member]'; - $this->_test($xml_file, $argsString, $expected); - } - - function testMysqlIndexHintIsSkipped(){ - $xml_file = $this->xmlPath . "mysql_index_hint.xml"; - $argsString = ''; - $expected = 'select * from [xe_member] as [member]'; - $this->_test($xml_file, $argsString, $expected); - } - } -?> diff --git a/tests/classes/db/db/xml_query/mssql/MssqlSelectOnlineTest.php b/tests/classes/db/db/xml_query/mssql/MssqlSelectOnlineTest.php deleted file mode 100644 index aef9cc250..000000000 --- a/tests/classes/db/db/xml_query/mssql/MssqlSelectOnlineTest.php +++ /dev/null @@ -1,12 +0,0 @@ - */ - class MssqlSelectOnlineTest extends MssqlOnlineTest { - - function test_syndication_getGrantedModule(){ - $args->module_srl = 67; - $output = executeQuery("syndication.getGrantedModule", $args); - $this->assertEquals(0, $output->error, $output->error + ' ' + $output->message); - } - } - -?> diff --git a/tests/classes/db/db/xml_query/mssql/MssqlSelectTest.php b/tests/classes/db/db/xml_query/mssql/MssqlSelectTest.php deleted file mode 100644 index 64b3d3524..000000000 --- a/tests/classes/db/db/xml_query/mssql/MssqlSelectTest.php +++ /dev/null @@ -1,171 +0,0 @@ - */ - - class MssqlSelectTest extends MssqlTest { - - function _test($xml_file, $argsString, $expected, $expectedArgs = NULL){ - $this->_testPreparedQuery($xml_file, $argsString, $expected, 'getSelectSql', $expectedArgs); - } - - function testSelectStar(){ - $xml_file = _XE_PATH_ . "modules/module/queries/getAdminId.xml"; - $argsString = '$args->module_srl = 10;'; - $expected = 'SELECT * FROM [xe_module_admins] as [module_admins] , [xe_member] as [member] WHERE [module_srl] = ? and [member].[member_srl] = [module_admins].[member_srl]'; - $this->_test($xml_file, $argsString, $expected, array(10)); - } - - function testRequiredParameter(){ - $xml_file = _XE_PATH_ . "modules/module/queries/getAdminId.xml"; - $argsString = ''; - $expected = 'Date incorecte! Query-ul nu a putut fi executat.'; - $this->_test($xml_file, $argsString, $expected); - } - - function testWithoutCategoriesTag(){ - $xml_file = _XE_PATH_ . "modules/module/queries/getModuleCategories.xml"; - $argsString = ''; - $expected = 'SELECT * FROM [xe_module_categories] as [module_categories] ORDER BY [title] asc'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_module_getDefaultModules(){ - $xml_file = _XE_PATH_ . "modules/module/queries/getDefaultModules.xml"; - $argsString = '$args->site_srl = 0;'; - $expected = 'SELECT [modules].[site_srl] - , [modules].[module] - , [modules].[mid] - , [modules].[browser_title] - , [module_categories].[title] as [category] - , [modules].[module_srl] - FROM [xe_modules] as [modules] - left join [xe_module_categories] as [module_categories] - on [module_categories].[module_category_srl] = [modules].[module_category_srl] - WHERE [modules].[site_srl] = ? - ORDER BY [modules].[module] asc, [module_categories].[title] asc, [modules].[mid] asc'; - $this->_test($xml_file, $argsString, $expected, array(0)); - } - - function test_module_getSiteInfo(){ - $xml_file = _XE_PATH_ . "modules/module/queries/getSiteInfo.xml"; - $argsString = '$args->site_srl = 0;'; - $expected = 'SELECT [modules].[site_srl] as [module_site_srl] - , [modules].[module_srl] as [module_srl] - , [modules].[module] as [module] - , [modules].[module_category_srl] as [module_category_srl] - , [modules].[layout_srl] as [layout_srl] - , [modules].[mlayout_srl] as [mlayout_srl] - , [modules].[use_mobile] as [use_mobile] - , [modules].[menu_srl] as [menu_srl] - , [modules].[mid] as [mid] - , [modules].[skin] as [skin] - , [modules].[mskin] as [mskin] - , [modules].[browser_title] as [browser_title] - , [modules].[description] as [description] - , [modules].[is_default] as [is_default] - , [modules].[content] as [content] - , [modules].[mcontent] as [mcontent] - , [modules].[open_rss] as [open_rss] - , [modules].[header_text] as [header_text] - , [modules].[footer_text] as [footer_text] - , [modules].[regdate] as [regdate] - , [sites].[site_srl] as [site_srl] - , [sites].[domain] as [domain] - , [sites].[index_module_srl] as [index_module_srl] - , [sites].[default_language] as [default_language] - FROM [xe_sites] as [sites] - left join [xe_modules] as [modules] on [modules].[module_srl] = [sites].[index_module_srl] - WHERE [sites].[site_srl] = ? '; - $this->_test($xml_file, $argsString, $expected, array(0)); - } - - function test_addon_getAddonInfo(){ - $xml_file = _XE_PATH_ . "modules/addon/queries/getAddonInfo.xml"; - $argsString = '$args->addon = "captcha";'; - $expected = 'SELECT * - FROM [xe_addons] as [addons] - WHERE [addon] = ? '; - $this->_test($xml_file, $argsString, $expected, array("'captcha'")); - } - - function test_addon_getAddons(){ - $xml_file = _XE_PATH_ . "modules/addon/queries/getAddons.xml"; - $argsString = ''; - $expected = 'SELECT * - FROM [xe_addons] as [addons] - ORDER BY [addon] asc'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_admin_getCommentCount(){ - $xml_file = _XE_PATH_ . "modules/admin/queries/getCommentCount.xml"; - $argsString = ''; - $expected = 'SELECT count(*) as [count] - FROM [xe_comments] as [comments]'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_admin_getCommentDeclaredStatus(){ - $xml_file = _XE_PATH_ . "modules/admin/queries/getCommentDeclaredStatus.xml"; - $argsString = '$args->date = "20110411";'; - $expected = 'SELECT TOP 2 substr([regdate],1,8) as [date], count(*) as [count] - FROM [xe_comment_declared_log] as [comment_declared_log] - WHERE [regdate] >= ? - GROUP BY substr([regdate],1,8) - ORDER BY substr([regdate],1,8) asc'; - $this->_test($xml_file, $argsString, $expected, array("'20110411'")); - } - - function test_member_getAutoLogin(){ - $xml_file = _XE_PATH_ . "modules/member/queries/getAutoLogin.xml"; - $argsString = '$args->autologin_key = 10;'; - $expected = 'SELECT [member].[user_id] as [user_id] - , [member].[password] as [password] - , [member_autologin].[autologin_key] as [autologin_key] - FROM [xe_member] as [member] , [xe_member_autologin] as [member_autologin] - WHERE [member_autologin].[autologin_key] = ? - and [member].[member_srl] = [member_autologin].[member_srl]'; - $this->_test($xml_file, $argsString, $expected, array("'10'")); - } - - /** - * Query fails because XML is wrong - title column does not exist - * in xe_modules. Maybe the developer ment "browser_title" - */ - function test_opage_getOpageList(){ - $xml_file = _TEST_PATH_ . "db/xml_query/mssql/data/opage.getOpageList.xml"; - $argsString = '$args->s_title = "yuhuu"; - $args->module = \'opage\';'; - $expected = 'SELECT TOP 20 * - FROM [xe_modules] as [modules] - WHERE [module] = \'opage\' and ([title] like ?) - ORDER BY [module_srl] desc'; - $this->_test($xml_file, $argsString, $expected, array("'%yuhuu%'")); - } - - function test_module_getExtraVars(){ - $xml_file = _XE_PATH_ . "modules/module/queries/getModuleExtraVars.xml"; - $argsString = '$args->module_srl = 25;'; - $expected = 'SELECT * FROM [xe_module_extra_vars] as [module_extra_vars] WHERE [module_srl] in (?)'; - $this->_test($xml_file, $argsString, $expected, array(array(25))); - } - - function test_module_getModuleSites(){ - $xml_file = _XE_PATH_ . "modules/module/queries/getModuleSites.xml"; - $argsString = '$args->module_srls = "67, 65";'; - $expected = 'SELECT [modules].[module_srl] as [module_srl], [sites].[domain] as [domain] FROM [xe_modules] as [modules] , [xe_sites] as [sites] WHERE [modules].[module_srl] in (?,?) and [sites].[site_srl] = [modules].[site_srl]'; - $this->_test($xml_file, $argsString, $expected, array(array(67, 65))); - } - - function test_syndication_getGrantedModule(){ - $xml_file = _TEST_PATH_ . "db/xml_query/mssql/data/syndication.getGrantedModule.xml"; - $argsString = '$args->module_srl = 67;'; - $expected = 'select count(*) as [count] - from [xe_module_grants] as [module_grants] - where [module_srl] = ? - and [name] in (\'access\',\'view\',\'list\') - and ([group_srl] >= 1 - or [group_srl] = -1 - or [group_srl] = -2)'; - $this->_test($xml_file, $argsString, $expected, array(67)); - } - } diff --git a/tests/classes/db/db/xml_query/mssql/MssqlUpdateOnlineTest.php b/tests/classes/db/db/xml_query/mssql/MssqlUpdateOnlineTest.php deleted file mode 100644 index 704771aa3..000000000 --- a/tests/classes/db/db/xml_query/mssql/MssqlUpdateOnlineTest.php +++ /dev/null @@ -1,13 +0,0 @@ - */ - class MssqlUpdateOnlineTest extends MssqlOnlineTest { - - function test_counter_updateCounterUnique(){ - $args->regdate = 20110211; - - $output = executeQuery("counter.updateCounterUnique", $args); - $this->assertEquals(0, $output->error, $output->error + ' ' + $output->message); - } - } - -?> diff --git a/tests/classes/db/db/xml_query/mssql/MssqlUpdateTest.php b/tests/classes/db/db/xml_query/mssql/MssqlUpdateTest.php deleted file mode 100644 index 8d45a548c..000000000 --- a/tests/classes/db/db/xml_query/mssql/MssqlUpdateTest.php +++ /dev/null @@ -1,23 +0,0 @@ - */ - -class MssqlUpdateTest extends MssqlTest { - - function _test($xml_file, $argsString, $expected, $expectedArgs = NULL) { - $this->_testPreparedQuery($xml_file, $argsString, $expected, 'getUpdateSql', $expectedArgs = NULL); - } - - function test_counter_updateCounterUnique() { - $xml_file = _XE_PATH_ . "modules/counter/queries/updateCounterUnique.xml"; - $argsString = '$args->regdate = 25;'; - $expected = 'UPDATE [counter_status] - SET [unique_visitor] = [unique_visitor] + ? - , [pageview] = [pageview] + ? - FROM [xe_counter_status] as [counter_status] - WHERE [regdate] = ?'; - $this->_test($xml_file, $argsString, $expected, array("25", 1, 1)); - } - -} - -?> diff --git a/tests/classes/db/db/xml_query/mssql/data/ignore_index_hint.xml b/tests/classes/db/db/xml_query/mssql/data/ignore_index_hint.xml deleted file mode 100644 index e17cfde49..000000000 --- a/tests/classes/db/db/xml_query/mssql/data/ignore_index_hint.xml +++ /dev/null @@ -1,11 +0,0 @@ - - -
    - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mssql/data/index_hint_for_all.xml b/tests/classes/db/db/xml_query/mssql/data/index_hint_for_all.xml deleted file mode 100644 index b0784fa94..000000000 --- a/tests/classes/db/db/xml_query/mssql/data/index_hint_for_all.xml +++ /dev/null @@ -1,11 +0,0 @@ - - -
    - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mssql/data/mysql_index_hint.xml b/tests/classes/db/db/xml_query/mssql/data/mysql_index_hint.xml deleted file mode 100644 index 702080eb5..000000000 --- a/tests/classes/db/db/xml_query/mssql/data/mysql_index_hint.xml +++ /dev/null @@ -1,11 +0,0 @@ - - -
    - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mssql/data/one_index_hint_one_table.xml b/tests/classes/db/db/xml_query/mssql/data/one_index_hint_one_table.xml deleted file mode 100644 index 54b660823..000000000 --- a/tests/classes/db/db/xml_query/mssql/data/one_index_hint_one_table.xml +++ /dev/null @@ -1,11 +0,0 @@ - - -
    - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mssql/data/opage.getOpageList.xml b/tests/classes/db/db/xml_query/mssql/data/opage.getOpageList.xml deleted file mode 100644 index 2e7964335..000000000 --- a/tests/classes/db/db/xml_query/mssql/data/opage.getOpageList.xml +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/classes/db/db/xml_query/mssql/data/syndication.getGrantedModule.xml b/tests/classes/db/db/xml_query/mssql/data/syndication.getGrantedModule.xml deleted file mode 100644 index 9a2f20e29..000000000 --- a/tests/classes/db/db/xml_query/mssql/data/syndication.getGrantedModule.xml +++ /dev/null @@ -1,17 +0,0 @@ - - -
    - - - - - - - - - - - - - - diff --git a/tests/classes/db/db/xml_query/mssql/data/three_index_hints_two_tables.xml b/tests/classes/db/db/xml_query/mssql/data/three_index_hints_two_tables.xml deleted file mode 100644 index f3a05c237..000000000 --- a/tests/classes/db/db/xml_query/mssql/data/three_index_hints_two_tables.xml +++ /dev/null @@ -1,14 +0,0 @@ - - -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mssql/data/two_index_hints_one_table.xml b/tests/classes/db/db/xml_query/mssql/data/two_index_hints_one_table.xml deleted file mode 100644 index def6aadab..000000000 --- a/tests/classes/db/db/xml_query/mssql/data/two_index_hints_one_table.xml +++ /dev/null @@ -1,12 +0,0 @@ - - -
    - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mysql/MysqlIndexHintTest.php b/tests/classes/db/db/xml_query/mysql/MysqlIndexHintTest.php deleted file mode 100644 index bec4ac6c7..000000000 --- a/tests/classes/db/db/xml_query/mysql/MysqlIndexHintTest.php +++ /dev/null @@ -1,59 +0,0 @@ - */ - - class MysqlIndexHintTest extends MysqlTest { - var $xmlPath = 'data/'; - - function MysqlIndexHintTest(){ - $this->xmlPath = str_replace('MysqlIndexHintTest.php', '', str_replace('\\', '/', __FILE__)) . $this->xmlPath; - } - - function _test($xml_file, $argsString, $expected){ - $this->_testQuery($xml_file, $argsString, $expected, 'getSelectSql'); - } - - function testOneUseIndexHintAndOneTable(){ - $xml_file = $this->xmlPath . "one_index_hint_one_table.xml"; - $argsString = ''; - $expected = 'select * from `xe_member` as `member` use index (`idx_member_list_order`)'; - $this->_test($xml_file, $argsString, $expected); - } - - - function testTwoUseIndexHintsAndOneTable(){ - $xml_file = $this->xmlPath . "two_index_hints_one_table.xml"; - $argsString = ''; - $expected = 'select * from `xe_member` as `member` use index (`idx_member_list_order`, `idx_member_srl`)'; - $this->_test($xml_file, $argsString, $expected); - } - - function testThreeUseIndexHintsAndTwoTables(){ - $xml_file = $this->xmlPath . "three_index_hints_two_tables.xml"; - $argsString = ''; - $expected = 'select * from `xe_member` as `member` use index (`idx_member_list_order`, `idx_member_srl`) - , `xe_document` as `document` use index (`idx_document_srl`)'; - $this->_test($xml_file, $argsString, $expected); - } - - function testThreeIndexHintsAndTwoTables_ForceAndIgnore(){ - $xml_file = $this->xmlPath . "three_index_hints_two_tables_combined.xml"; - $argsString = ''; - $expected = 'select * from `xe_member` as `member` force index (`idx_member_list_order`, `idx_member_srl`) - , `xe_document` as `document` ignore index (`idx_document_srl`)'; - $this->_test($xml_file, $argsString, $expected); - } - - /** - * Tests that index is added if "for" attribute is "ALL" - * - * example: ... - */ - function testIndexHintForAll(){ - $xml_file = $this->xmlPath . "index_hint_for_all.xml"; - $argsString = ''; - $expected = 'select * from `xe_member` as `member` use index (`idx_member_list_order`)'; - $this->_test($xml_file, $argsString, $expected); - } - - } -?> diff --git a/tests/classes/db/db/xml_query/mysql/MysqlInsertTest.php b/tests/classes/db/db/xml_query/mysql/MysqlInsertTest.php deleted file mode 100644 index aeb6c7057..000000000 --- a/tests/classes/db/db/xml_query/mysql/MysqlInsertTest.php +++ /dev/null @@ -1,76 +0,0 @@ - */ - -/** - * @class MysqlInsertTest - * @brief Constains all test method for insert statements, using Mysql SQL syntax - * @developer Corina Udrescu (xe_dev@arnia.ro) - */ -class MysqlInsertTest extends MysqlTest -{ - /** - * @brief _test - local helper method - * @developer Corina Udrescu (xe_dev@arnia.ro) - * @access private - * @param $xml_file string - Path to XML file containing the query to be tested - * @param $argsString string - String containing PHP code that initializez the arguments that the query receives - * @param $expected string - Expected SQL query as string - * @param $columnList array - Array containing the column names that will be retrieved, in case only a part of the ones in the query file are needed - * @return void - */ - function _test($xml_file, $argsString, $expected, $columnList = NULL) - { - $this->_testQuery($xml_file, $argsString, $expected, 'getInsertSql', $columnList); - } - - function testInsertIntoNumericColumnConvertsValue() - { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/member_insert_injection.xml"; - $argsString = '$args->member_srl = 7; - $args->find_account_question = "1\'"; - '; - $expected = 'insert into `xe_member` (`member_srl`, `find_account_question`) values (7, 1)'; - $this->_test($xml_file, $argsString, $expected); - } - - -} - -/* End of file MysqlInsertTest.php */ -/* Location: ./tests/classes/db/db/xml_query/mysql/MysqlInsertTest.php */ - /** - * @brief testInsertSelectStatement - checks that when query action is 'insert-selct' an 'INSERT INTO .. SELECT ...' statement is properly generated - * @developer Corina Udrescu (xe_dev@arnia.ro) - * @access public - * @return void - */ - function testInsertSelectStatement() - { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/insert_select.xml"; - $argsString = '$args->condition_value = 7;'; - $expected = 'insert into `xe_table1` (`column1`, `column2`, `column3`) - select `column4`, `column5`, `column6` - from `xe_table2` as `table2` - where `column4` >= 7'; - $this->_test($xml_file, $argsString, $expected); - } - - function testInsertSelectStatement2() - { - $xml_file = _XE_PATH_ . "modules/wiki/queries/insertLinkedDocuments.xml"; - $argsString = '$args->document_srl = 7; - $args->module_srl = 10; - $args->alias_list = array("unu", "doi"); - '; - $expected = 'insert into `xe_wiki_links` - (`cur_doc_srl`, `link_doc_srl`) - select 7, `document_srl` - from `xe_document_aliases` as `document_aliases` - where `module_srl` = 10 - and `alias_title` in (\'unu\',\'doi\')'; - $this->_test($xml_file, $argsString, $expected); - } -} - -/* End of file MysqlInsertTest.php */ -/* Location: ./tests/classes/db/db/xml_query/mysql/MysqlInsertTest.php */ diff --git a/tests/classes/db/db/xml_query/mysql/MysqlSelectTest.php b/tests/classes/db/db/xml_query/mysql/MysqlSelectTest.php deleted file mode 100644 index 53d2a6583..000000000 --- a/tests/classes/db/db/xml_query/mysql/MysqlSelectTest.php +++ /dev/null @@ -1,417 +0,0 @@ - */ - -class MysqlSelectTest extends MysqlTest { - - function _test($xml_file, $argsString, $expected, $columnList = NULL) { - $this->_testQuery($xml_file, $argsString, $expected, 'getSelectSql', $columnList); - } - - function testConditionWithVarAndColumnDefaultValue_WithoutArgument() { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/resource.getLatestItem.xml"; - $argsString = '$args->item_srl = "";'; - $expected = 'select `package`.`module_srl` as `module_srl` - , `package`.`status` as `status` - , `package`.`category_srl` as `category_srl` - , `package`.`member_srl` as `member_srl` - , `package`.`package_srl` as `package_srl` - , `package`.`path` as `path` - , `package`.`license` as `license` - , `package`.`title` as `title` - , `package`.`homepage` as `homepage` - , `package`.`description` as `package_description` - , `package`.`voter` as `package_voter` - , `package`.`voted` as `package_voted` - , `package`.`downloaded` as `package_downloaded` - , `package`.`regdate` as `package_regdate` - , `package`.`last_update` as `package_last_update` - , `member`.`nick_name` as `nick_name` - , `member`.`user_id` as `user_id` - , `item`.`item_srl` as `item_srl` - , `item`.`document_srl` as `document_srl` - , `item`.`file_srl` as `item_file_srl` - , `item`.`screenshot_url` as `item_screenshot_url` - , `item`.`version` as `item_version` - , `item`.`voter` as `item_voter` - , `item`.`voted` as `item_voted` - , `item`.`downloaded` as `item_downloaded` - , `item`.`regdate` as `item_regdate` - from `xe_resource_packages` as `package` - , `xe_member` as `member` - , `xe_resource_items` as `item` - where `package`.`member_srl` = `member`.`member_srl` - and `item`.`item_srl` = `package`.`latest_item_srl`'; - $this->_test($xml_file, $argsString, $expected); - } - - function testConditionWithVarAndColumnDefaultValue_WithArgument() { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/resource.getLatestItem.xml"; - $argsString = '$args->item_srl = "10";'; - $expected = 'select `package`.`module_srl` as `module_srl` - , `package`.`status` as `status` - , `package`.`category_srl` as `category_srl` - , `package`.`member_srl` as `member_srl` - , `package`.`package_srl` as `package_srl` - , `package`.`path` as `path` - , `package`.`license` as `license` - , `package`.`title` as `title` - , `package`.`homepage` as `homepage` - , `package`.`description` as `package_description` - , `package`.`voter` as `package_voter` - , `package`.`voted` as `package_voted` - , `package`.`downloaded` as `package_downloaded` - , `package`.`regdate` as `package_regdate` - , `package`.`last_update` as `package_last_update` - , `member`.`nick_name` as `nick_name` - , `member`.`user_id` as `user_id` - , `item`.`item_srl` as `item_srl` - , `item`.`document_srl` as `document_srl` - , `item`.`file_srl` as `item_file_srl` - , `item`.`screenshot_url` as `item_screenshot_url` - , `item`.`version` as `item_version` - , `item`.`voter` as `item_voter` - , `item`.`voted` as `item_voted` - , `item`.`downloaded` as `item_downloaded` - , `item`.`regdate` as `item_regdate` - from `xe_resource_packages` as `package` - , `xe_member` as `member` - , `xe_resource_items` as `item` - where `package`.`member_srl` = `member`.`member_srl` - and `item`.`item_srl` = 10'; - $this->_test($xml_file, $argsString, $expected); - } - - function testSubstring() { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/substring.xml"; - $argsString = '$args->var_start_mmdd = "1102"; '; - $expected = 'select * from `xe_member` as `member` where substr(`extra_vars_t1`.`value`,5,4) >= 1102'; - $this->_test($xml_file, $argsString, $expected); - } - - function testResource_getLatestItemList() { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/resource.getLatestItemList.xml"; - $argsString = ''; - $expected = 'select `package`.`module_srl` as `module_srl` - , `package`.`status` as `status` - , `package`.`category_srl` as `category_srl` - , `package`.`member_srl` as `member_srl` - , `package`.`package_srl` as `package_srl` - , `package`.`path` as `path` - , `package`.`license` as `license` - , `package`.`title` as `title` - , `package`.`homepage` as `homepage` - , `package`.`description` as `package_description` - , `package`.`voter` as `package_voter` - , `package`.`voted` as `package_voted` - , `package`.`downloaded` as `package_downloaded` - , `package`.`regdate` as `package_regdate` - , `package`.`last_update` as `package_last_update` - , `member`.`nick_name` as `nick_name` - , `member`.`user_id` as `user_id` - , `item`.`item_srl` as `item_srl` - , `item`.`document_srl` as `item_document_srl` - , `item`.`file_srl` as `item_file_srl` - , `item`.`screenshot_url` as `item_screenshot_url` - , `item`.`version` as `item_version` - , `item`.`voter` as `item_voter` - , `item`.`voted` as `item_voted` - , `item`.`downloaded` as `item_downloaded` - , `item`.`regdate` as `item_regdate` - , `files`.`source_filename` as `source_filename` - , `files`.`sid` as `sid` - from `xe_resource_packages` as `package` - , `xe_member` as `member` - , `xe_resource_items` as `item` - , `xe_files` as `files` - where (`package`.`status` = \'accepted\' - and `package`.`member_srl` = `member`.`member_srl` - and `item`.`item_srl` = `package`.`latest_item_srl` - and `package`.`update_order` <= 0 - and `files`.`file_srl` = `item`.`file_srl`) - and `package`.`update_order` <= 2100000000 - order by `package`.`update_order` asc - limit 0, 20'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_Syndication_getGrantedModules() { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/syndication.getGrantedModules.xml"; - $argsString = ''; - $expected = 'select `module_srl` - from `xe_module_grants` as `module_grants` - where `name` in (\'access\',\'view\',\'list\') - and (`group_srl` >= 1 or `group_srl` = -1 or `group_srl` = -2) group by `module_srl`'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_Like_Clause() { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/opage.getOpageList.like.xml"; - $argsString = '$args->s_mid = "test";'; - $expected = 'select * - from `xe_modules` as `modules` - where `module` = \'opage\' - and (`mid` like \'%test%\') - order by `module_srl` desc - limit 0, 20'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_NotLike_Clause() { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/opage.getOpageList.notlike.xml"; - $argsString = '$args->s_mid = "test";'; - $expected = 'select * - from `xe_modules` as `modules` - where `module` = \'opage\' - and (`mid` not like \'%test%\') - order by `module_srl` desc - limit 0, 20'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_NotLikeTail_Clause() { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/opage.getOpageList.notliketail.xml"; - $argsString = '$args->s_mid = "test";'; - $expected = 'select * - from `xe_modules` as `modules` - where `module` = \'opage\' - and (`mid` not like \'%test\') - order by `module_srl` desc - limit 0, 20'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_NotLikePrefix_Clause() { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/opage.getOpageList.notlikeprefix.xml"; - $argsString = '$args->s_mid = "test";'; - $expected = 'select * - from `xe_modules` as `modules` - where `module` = \'opage\' - and (`mid` not like \'test%\') - order by `module_srl` desc - limit 0, 20'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_WidgetsNewestDocument_getNewestDocuments() { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/widgets.newest_document.getNewestDocuments.xml"; - $argsString = '$args->module_srl = "566036,3777868";'; - $expected = 'select `modules`.`site_srl` as `site_srl` - , `modules`.`mid` as `mid` - , `documents`.* - from `xe_modules` as `modules` - , `xe_documents` as `documents` - where ( - `documents`.`module_srl` not in (0) - and `documents`.`module_srl` in (566036,3777868) - and `modules`.`module_srl` = `documents`.`module_srl`) - and `documents`.`list_order` <= 2100000000 - order by `documents`.`list_order` asc - limit 20'; - - $this->_test($xml_file, $argsString, $expected); - } - - function test_homepage_getNewestComments() { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/homepage.getNewestComments.xml"; - $argsString = ';'; - $expected = 'select `sites`.`domain` as `domain` - , `comments`.* - from `xe_homepages` as `homepages` - , `xe_sites` as `sites` - , `xe_comments` as `comments` - , `xe_modules` as `modules` - left join `xe_module_grants` as `module_grants` - on `module_grants`.`module_srl` = `modules`.`module_srl` - and `module_grants`.`name` = \'access\' - and `module_grants`.`group_srl` not in (0,-1) - where (`homepages`.`site_srl` = `sites`.`site_srl` - and `homepages`.`site_srl` = `modules`.`site_srl` - and `comments`.`module_srl` = `modules`.`module_srl` - and `module_grants`.`group_srl` is null) - and `comments`.`list_order` <= 2100000000 - order by `comments`.`list_order` asc limit 0, 5'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_distinct_outer_join() { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/distinct_outer_join.xml"; - $argsString = '$args->site_srl = 0;'; - $expected = 'select distinct `modules`.`module_srl` as `module_site_srl` - from `xe_sites` as `sites` - left join `xe_modules` as `modules` on `modules`.`module_srl` = `sites`.`index_module_srl` - where `sites`.`site_srl` = 0'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_getDocumentListWithinComment() { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/document.getDocumentListWithinComment.xml"; - $argsString = '$args->module_srl = 19778968; - $args->s_comment = "dfsds"; - $args->statusList = "PUBLIC, SECRET"; - '; - $expected = 'select `documents`.`document_srl`, `documents`.`list_order` - from `xe_documents` as `documents` - , `xe_comments` as `comments` - where (`documents`.`module_srl` in (19778968) - and `documents`.`document_srl` = `comments`.`document_srl` - and `documents`.`status` in (\'public\',\'secret\') - and `comments`.`content` like \'%dfsds%\') - and `comments`.`list_order` <= 2100000000 - group by `documents`.`document_srl` - order by `comments`.`list_order` asc - limit 0, 20'; - $this->_test($xml_file, $argsString, $expected); - } - - /** - * Issue 2064 - * Queries should support both notin and not_in as valid operations - */ - function test_not_in() { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/document.getNewestDocuments.xml"; - $argsString = '$args->module_srl = "345709,345710,345711,345728,345707,345670,345667,49113,16551,345679,50394,350665,345680,381846,381852,381917,345708,349028,345666,17173,49117,345671,345714,345665,349893,345696,345713,351967,330919,345685,16754,349027,348787,345672,350239,345697,345674,291882,345678,345729,345675,345721,345676,381867,294605,381864,345673,355113,353624,345681,345683,345668,345677,12424,158716,47498,101835,273679,142558,13818,12311,8723,78670,18919,365075,13833,14293,15891,27823,14291,177818,81000,11788,18918,13859,14102,14136,255783,134367,385619,317170,330312"; - $args->sort_index = "documents.list_order"; - $args->order_type = "asc"; - $args->list_count = 10; - '; - $expected = 'select `modules`.`site_srl` as `site_srl`, `modules`.`mid` as `mid`, `documents`.* from `xe_modules` as `modules`, `xe_documents` as `documents` where (`documents`.`module_srl` not in (0) and `documents`.`module_srl` in (345709,345710,345711,345728,345707,345670,345667,49113,16551,345679,50394,350665,345680,381846,381852,381917,345708,349028,345666,17173,49117,345671,345714,345665,349893,345696,345713,351967,330919,345685,16754,349027,348787,345672,350239,345697,345674,291882,345678,345729,345675,345721,345676,381867,294605,381864,345673,355113,353624,345681,345683,345668,345677,12424,158716,47498,101835,273679,142558,13818,12311,8723,78670,18919,365075,13833,14293,15891,27823,14291,177818,81000,11788,18918,13859,14102,14136,255783,134367,385619,317170,330312) and `modules`.`module_srl` = `documents`.`module_srl`) and `documents`.`list_order` <= 2100000000 order by `documents`.`list_order` asc limit 10'; - $this->_test($xml_file, $argsString, $expected); - } - - /** - * Issue 2064 - * Query condition should be ignored if operation is invalid - */ - function test_invalid_condition_operation() { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/document.getNewestDocumentsInvalid.xml"; - $argsString = '$args->module_srl = "345709,345710,345711,345728,345707,345670,345667,49113,16551,345679,50394,350665,345680,381846,381852,381917,345708,349028,345666,17173,49117,345671,345714,345665,349893,345696,345713,351967,330919,345685,16754,349027,348787,345672,350239,345697,345674,291882,345678,345729,345675,345721,345676,381867,294605,381864,345673,355113,353624,345681,345683,345668,345677,12424,158716,47498,101835,273679,142558,13818,12311,8723,78670,18919,365075,13833,14293,15891,27823,14291,177818,81000,11788,18918,13859,14102,14136,255783,134367,385619,317170,330312"; - $args->sort_index = "documents.list_order"; - $args->order_type = "asc"; - $args->list_count = 10; - '; - $expected = 'select `modules`.`site_srl` as `site_srl`, `modules`.`mid` as `mid`, `documents`.* from `xe_modules` as `modules`, `xe_documents` as `documents` where (`documents`.`module_srl` in (345709,345710,345711,345728,345707,345670,345667,49113,16551,345679,50394,350665,345680,381846,381852,381917,345708,349028,345666,17173,49117,345671,345714,345665,349893,345696,345713,351967,330919,345685,16754,349027,348787,345672,350239,345697,345674,291882,345678,345729,345675,345721,345676,381867,294605,381864,345673,355113,353624,345681,345683,345668,345677,12424,158716,47498,101835,273679,142558,13818,12311,8723,78670,18919,365075,13833,14293,15891,27823,14291,177818,81000,11788,18918,13859,14102,14136,255783,134367,385619,317170,330312) and `modules`.`module_srl` = `documents`.`module_srl`) and `documents`.`list_order` <= 2100000000 order by `documents`.`list_order` asc limit 10'; - $this->_test($xml_file, $argsString, $expected); - } - - /** - * Issue 2114 - * 'Null' operation is ignored - */ - function test_null() - { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/page.pageTypeNullCheck.xml"; - $argsString = ' '; - $expected = 'select `m`.`module_srl`, `m`.`mid`, `ev`.`value` - from `xe_modules` as `m` - left join `xe_module_extra_vars` as `ev` - on `ev`.`name` = \'page_type\' - and `m`.`module_srl` = `ev`.`module_srl` - where `m`.`module` = \'page\' - and `ev`.`value` is null - '; - $this->_test($xml_file, $argsString, $expected); - } - - /** - * Issue 2114 - * 'Notnull' operation is ignored - */ - function test_notnull() - { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/page.pageTypeNotNullCheck.xml"; - $argsString = ' '; - $expected = 'select `m`.`module_srl`, `m`.`mid`, `ev`.`value` - from `xe_modules` as `m` - left join `xe_module_extra_vars` as `ev` - on `ev`.`name` = \'page_type\' - and `m`.`module_srl` = `ev`.`module_srl` - where `m`.`module` = \'page\' - and `ev`.`value` is not null - '; - $this->_test($xml_file, $argsString, $expected); - } - - function testLikeWithDot() - { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/likewithdot.xml"; - $argsString = ''; - $expected = 'select * - from `xe_layouts` as `layouts` - where `site_srl` = 0 - and `layout_type` = \'p\' - and `layout` like \'%.%\''; - $this->_test($xml_file, $argsString, $expected); - - } - - - function testFromSubquery() - { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/from_subquery.xml"; - $argsString = ' - '; - $expected = 'SELECT `A`.`member_srl` as `member_srl`, COUNT(`A`.`cnt`) as `count` - FROM ( - SELECT `member_srl` as `member_srl`, count(*) AS `cnt` - FROM `xe_documents` as `documents` - GROUP BY `member_srl` - ) AS `A`'; - $this->_test($xml_file, $argsString, $expected); - } - - - /** - * Like with image extension - */ - function testLikeImageExtension() - { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/like_image_extension.xml"; - $argsString = ''; - $expected = "select `files`.`upload_target_srl` as `document_srl` - from `xe_files` as `files` - , `xe_documents` as `documents` - where ( - `files`.`upload_target_srl` = `documents`.`document_srl` - and (`files`.`source_filename` like '%.jpg' - or `files`.`source_filename` like '%.gif' - or `files`.`source_filename` like '%.png')) - and `documents`.`list_order` <= 2100000000 - group by `files`.`upload_target_srl` - order by `documents`.`list_order` asc - limit 5"; - $this->_test($xml_file, $argsString, $expected); - } - - /** - * Add support for CAST / CONVERT function - */ - function testCast() - { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/cast.xml"; - $argsString = ''; - $expected = "select cast(`document_srl` as unsigned integer) from `xe_documents` as `documents`"; - $this->_test($xml_file, $argsString, $expected); - } - - /** - * Add support for CAST / CONVERT function - */ - function testConvert() - { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/convert.xml"; - $argsString = ''; - $expected = "select convert(`document_srl`, unsigned integer) from `xe_documents` as `documents`"; - $this->_test($xml_file, $argsString, $expected); - } - - /** - * Issue 1431 - xml click count error - */ - function testClickCount() - { - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/click_count.xml"; - $argsString = '$args->incr_expose_count = true;'; - $expected = "select `expose_count` from `xe_modules` as `modules`"; - $this->_test($xml_file, $argsString, $expected); - } -} diff --git a/tests/classes/db/db/xml_query/mysql/MysqlUpdateTest.php b/tests/classes/db/db/xml_query/mysql/MysqlUpdateTest.php deleted file mode 100644 index 5ba5799a8..000000000 --- a/tests/classes/db/db/xml_query/mysql/MysqlUpdateTest.php +++ /dev/null @@ -1,76 +0,0 @@ - */ - - class MysqlUpdateTest extends MysqlTest { - - function _test($xml_file, $argsString, $expected, $columnList = null){ - $this->_testQuery($xml_file, $argsString, $expected, 'getUpdateSql', $columnList); - } - - function test_document_updateDocumentStatus(){ - $xml_file = _XE_PATH_ . "modules/document/queries/updateDocumentStatus.xml"; - $argsString = '$args->is_secret = \'Y\'; - $args->status = \'SECRET\'; - '; - $expected = 'update `xe_documents` as `documents` set `status` = \'secret\' where `is_secret` = \'y\''; - $this->_test($xml_file, $argsString, $expected); - } - - /** - * Issue 388 - Query cache error related table alias - * http://code.google.com/p/xe-core/issues/detail?id=388 - */ - function test_importer_updateDocumentSync(){ - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/importer.updateDocumentSync.xml"; - $argsString = ''; - $expected = 'UPDATE `xe_documents` as `documents`, `xe_member` as `member` - SET `documents`.`member_srl` = `member`.`member_srl` - WHERE `documents`.`user_id` = `member`.`user_id` - '; - $this->_test($xml_file, $argsString, $expected); - } - - function test_document_updateItemDownloadedCount(){ - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/document.updateItemDownloadedCount.xml"; - $argsString = '$args->module_srl = 10; $args->package_srl = 11; $args->item_srl = 12;'; - $expected = 'update `xe_resource_items` as `resource_items` - set `downloaded` = `downloaded` + 1 - where `module_srl` = 10 - and `package_srl` = 11 - and `item_srl` = 12 - '; - $this->_test($xml_file, $argsString, $expected); - } - - function test_menu_updateMenuItemListorder(){ - $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/menu.updateMenuItemListorder.xml"; - $argsString = '$args->menu_srl = 10; $args->parent_srl = 11; $args->listorder = 12;'; - $expected = 'update `xe_menu_item` as `menu_item` - set `listorder` = `listorder` - 1 - where `menu_srl` = 10 - and `parent_srl` = 11 - and `listorder` <= 12'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_communication_setMessageReaded(){ - $xml_file = _XE_PATH_ . "modules/communication/queries/setMessageReaded.xml"; - $argsString = '$args->message_srl = 339321; $args->related_srl = 339321;'; - $expected = 'update `xe_member_message` as `member_message` - set `readed` = \'y\' - , `readed_date` = \'' . date("YmdHis") . '\' - where `message_srl` = 339321 or `related_srl` = 339321'; - $this->_test($xml_file, $argsString, $expected); - } - - function test_session_updateSession(){ - $xml_file = _XE_PATH_ . "modules/session/queries/updateSession.xml"; - $argsString = '$args->session_key = 339321; $args->val = "yuhuu";'; - $expected = 'update `xe_session` as `session` - set `member_srl` = 0, `val` = \'yuhuu\' - , `ipaddress` = \''. $_SERVER['REMOTE_ADDR'] .'\' - , `last_update` = \'' . date("YmdHis") . '\' - where `session_key` = \'339321\''; - $this->_test($xml_file, $argsString, $expected); - } - } diff --git a/tests/classes/db/db/xml_query/mysql/data/cast.xml b/tests/classes/db/db/xml_query/mysql/data/cast.xml deleted file mode 100644 index 9049dbe1b..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/cast.xml +++ /dev/null @@ -1,8 +0,0 @@ - - -
    - - - - - diff --git a/tests/classes/db/db/xml_query/mysql/data/click_count.xml b/tests/classes/db/db/xml_query/mysql/data/click_count.xml deleted file mode 100644 index 3dd210b09..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/click_count.xml +++ /dev/null @@ -1,8 +0,0 @@ - - -
    - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mysql/data/convert.xml b/tests/classes/db/db/xml_query/mysql/data/convert.xml deleted file mode 100644 index 96d982717..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/convert.xml +++ /dev/null @@ -1,8 +0,0 @@ - - -
    - - - - - diff --git a/tests/classes/db/db/xml_query/mysql/data/distinct_outer_join.xml b/tests/classes/db/db/xml_query/mysql/data/distinct_outer_join.xml deleted file mode 100644 index 0c04f8a1a..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/distinct_outer_join.xml +++ /dev/null @@ -1,16 +0,0 @@ - - -
    -
    - - - -
    -
    - - - - - - -
    diff --git a/tests/classes/db/db/xml_query/mysql/data/document.getDocumentListWithinComment.xml b/tests/classes/db/db/xml_query/mysql/data/document.getDocumentListWithinComment.xml deleted file mode 100644 index 28f4a2c62..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/document.getDocumentListWithinComment.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/classes/db/db/xml_query/mysql/data/document.getNewestDocuments.xml b/tests/classes/db/db/xml_query/mysql/data/document.getNewestDocuments.xml deleted file mode 100644 index e6e7ac7e4..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/document.getNewestDocuments.xml +++ /dev/null @@ -1,21 +0,0 @@ - - -
    -
    - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mysql/data/document.getNewestDocumentsInvalid.xml b/tests/classes/db/db/xml_query/mysql/data/document.getNewestDocumentsInvalid.xml deleted file mode 100644 index 5a3ad2aad..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/document.getNewestDocumentsInvalid.xml +++ /dev/null @@ -1,21 +0,0 @@ - - -
    -
    - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mysql/data/document.updateItemDownloadedCount.xml b/tests/classes/db/db/xml_query/mysql/data/document.updateItemDownloadedCount.xml deleted file mode 100644 index bebb488a1..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/document.updateItemDownloadedCount.xml +++ /dev/null @@ -1,13 +0,0 @@ - - -
    - - - - - - - - - - diff --git a/tests/classes/db/db/xml_query/mysql/data/from_subquery.xml b/tests/classes/db/db/xml_query/mysql/data/from_subquery.xml deleted file mode 100644 index f1918bcb3..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/from_subquery.xml +++ /dev/null @@ -1,20 +0,0 @@ - - -
    - -
    - - - - - - - - -
    -
    - - - - -
    \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mysql/data/homepage.getNewestComments.xml b/tests/classes/db/db/xml_query/mysql/data/homepage.getNewestComments.xml deleted file mode 100644 index 9bf58ae90..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/homepage.getNewestComments.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - -
    -
    -
    -
    - - - - - -
    -
    - - - - - - - - - - - - - - - - -
    diff --git a/tests/classes/db/db/xml_query/mysql/data/importer.updateDocumentSync.xml b/tests/classes/db/db/xml_query/mysql/data/importer.updateDocumentSync.xml deleted file mode 100644 index a3351ac5d..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/importer.updateDocumentSync.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - -
    - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mysql/data/index_hint_for_all.xml b/tests/classes/db/db/xml_query/mysql/data/index_hint_for_all.xml deleted file mode 100644 index b0784fa94..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/index_hint_for_all.xml +++ /dev/null @@ -1,11 +0,0 @@ - - -
    - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mysql/data/insert_select.xml b/tests/classes/db/db/xml_query/mysql/data/insert_select.xml deleted file mode 100644 index 4abfd3754..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/insert_select.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
    - - - - - - - - -
    - - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mysql/data/like_image_extension.xml b/tests/classes/db/db/xml_query/mysql/data/like_image_extension.xml deleted file mode 100644 index 2be232bce..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/like_image_extension.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mysql/data/likewithdot.xml b/tests/classes/db/db/xml_query/mysql/data/likewithdot.xml deleted file mode 100644 index 6a40c30a0..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/likewithdot.xml +++ /dev/null @@ -1,12 +0,0 @@ - - -
    - - - - - - - - - diff --git a/tests/classes/db/db/xml_query/mysql/data/member_insert_injection.xml b/tests/classes/db/db/xml_query/mysql/data/member_insert_injection.xml deleted file mode 100644 index ab10e4b99..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/member_insert_injection.xml +++ /dev/null @@ -1,9 +0,0 @@ - - -
    - - - - - - diff --git a/tests/classes/db/db/xml_query/mysql/data/menu.updateMenuItemListorder.xml b/tests/classes/db/db/xml_query/mysql/data/menu.updateMenuItemListorder.xml deleted file mode 100644 index ced0e2640..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/menu.updateMenuItemListorder.xml +++ /dev/null @@ -1,13 +0,0 @@ - - -
    - - - - - - - - - - diff --git a/tests/classes/db/db/xml_query/mysql/data/one_index_hint_one_table.xml b/tests/classes/db/db/xml_query/mysql/data/one_index_hint_one_table.xml deleted file mode 100644 index c74defef5..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/one_index_hint_one_table.xml +++ /dev/null @@ -1,11 +0,0 @@ - - -
    - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mysql/data/opage.getOpageList.like.xml b/tests/classes/db/db/xml_query/mysql/data/opage.getOpageList.like.xml deleted file mode 100644 index 72c5cab1f..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/opage.getOpageList.like.xml +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mysql/data/opage.getOpageList.notlike.xml b/tests/classes/db/db/xml_query/mysql/data/opage.getOpageList.notlike.xml deleted file mode 100644 index 133884d23..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/opage.getOpageList.notlike.xml +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mysql/data/opage.getOpageList.notlikeprefix.xml b/tests/classes/db/db/xml_query/mysql/data/opage.getOpageList.notlikeprefix.xml deleted file mode 100644 index 19c45efb1..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/opage.getOpageList.notlikeprefix.xml +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mysql/data/opage.getOpageList.notliketail.xml b/tests/classes/db/db/xml_query/mysql/data/opage.getOpageList.notliketail.xml deleted file mode 100644 index c32023fee..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/opage.getOpageList.notliketail.xml +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mysql/data/page.pageTypeNotNullCheck.xml b/tests/classes/db/db/xml_query/mysql/data/page.pageTypeNotNullCheck.xml deleted file mode 100644 index bff829baa..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/page.pageTypeNotNullCheck.xml +++ /dev/null @@ -1,20 +0,0 @@ - - -
    -
    - - - - -
    -
    - - - - - - - - - -
    diff --git a/tests/classes/db/db/xml_query/mysql/data/page.pageTypeNullCheck.xml b/tests/classes/db/db/xml_query/mysql/data/page.pageTypeNullCheck.xml deleted file mode 100644 index 0fefc0f27..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/page.pageTypeNullCheck.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - -
    - - - - -
    -
    - - - - - - - - - -
    diff --git a/tests/classes/db/db/xml_query/mysql/data/resource.getLatestItem.xml b/tests/classes/db/db/xml_query/mysql/data/resource.getLatestItem.xml deleted file mode 100644 index f6fa06e83..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/resource.getLatestItem.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/classes/db/db/xml_query/mysql/data/resource.getLatestItemList.xml b/tests/classes/db/db/xml_query/mysql/data/resource.getLatestItemList.xml deleted file mode 100644 index 041e30694..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/resource.getLatestItemList.xml +++ /dev/null @@ -1,60 +0,0 @@ - - -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/classes/db/db/xml_query/mysql/data/substring.xml b/tests/classes/db/db/xml_query/mysql/data/substring.xml deleted file mode 100644 index fef155bec..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/substring.xml +++ /dev/null @@ -1,11 +0,0 @@ - - -
    - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mysql/data/sumInCondition.xml b/tests/classes/db/db/xml_query/mysql/data/sumInCondition.xml deleted file mode 100644 index b5353f374..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/sumInCondition.xml +++ /dev/null @@ -1,11 +0,0 @@ - - -
    - - - - - - - - diff --git a/tests/classes/db/db/xml_query/mysql/data/syndication.getGrantedModules.xml b/tests/classes/db/db/xml_query/mysql/data/syndication.getGrantedModules.xml deleted file mode 100644 index 97d2b4ec9..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/syndication.getGrantedModules.xml +++ /dev/null @@ -1,19 +0,0 @@ - - -
    - - - - - - - - - - - - - - - - diff --git a/tests/classes/db/db/xml_query/mysql/data/three_index_hints_two_tables.xml b/tests/classes/db/db/xml_query/mysql/data/three_index_hints_two_tables.xml deleted file mode 100644 index 0c635583c..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/three_index_hints_two_tables.xml +++ /dev/null @@ -1,14 +0,0 @@ - - -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mysql/data/three_index_hints_two_tables_combined.xml b/tests/classes/db/db/xml_query/mysql/data/three_index_hints_two_tables_combined.xml deleted file mode 100644 index 3981bebee..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/three_index_hints_two_tables_combined.xml +++ /dev/null @@ -1,14 +0,0 @@ - - -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mysql/data/two_index_hints_one_table.xml b/tests/classes/db/db/xml_query/mysql/data/two_index_hints_one_table.xml deleted file mode 100644 index 9dec3a774..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/two_index_hints_one_table.xml +++ /dev/null @@ -1,12 +0,0 @@ - - -
    - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/mysql/data/widgets.newest_document.getNewestDocuments.xml b/tests/classes/db/db/xml_query/mysql/data/widgets.newest_document.getNewestDocuments.xml deleted file mode 100644 index b83244911..000000000 --- a/tests/classes/db/db/xml_query/mysql/data/widgets.newest_document.getNewestDocuments.xml +++ /dev/null @@ -1,21 +0,0 @@ - - -
    -
    - - - - - - - - - - - - - - - - - diff --git a/tests/classes/db/db/xml_query/sqlite/SqliteDeleteTest.php b/tests/classes/db/db/xml_query/sqlite/SqliteDeleteTest.php deleted file mode 100644 index 5bc3830fd..000000000 --- a/tests/classes/db/db/xml_query/sqlite/SqliteDeleteTest.php +++ /dev/null @@ -1,18 +0,0 @@ - */ - - class SqliteDeleteTest extends SqliteTest { - - function _test($xml_file, $argsString, $expected, $columnList = null){ - $this->_testQuery($xml_file, $argsString, $expected, 'getDeleteSql', $columnList); - } - - function testDeleteIsGeneratedWithoutAlias(){ - $xml_file = _TEST_PATH_ . "db/xml_query/sqlite/data/module.deleteModuleConfig.xml"; - $argsString = '$args->module = "comment"; $args->site_srl = 0; '; - $expected = 'delete from "xe_module_config" - where "module" = \'comment\' and "site_srl" = 0'; - $this->_test($xml_file, $argsString, $expected); - } - - } diff --git a/tests/classes/db/db/xml_query/sqlite/SqliteUpdateTest.php b/tests/classes/db/db/xml_query/sqlite/SqliteUpdateTest.php deleted file mode 100644 index 2ab9c149d..000000000 --- a/tests/classes/db/db/xml_query/sqlite/SqliteUpdateTest.php +++ /dev/null @@ -1,22 +0,0 @@ - */ - - class SqliteUpdateTest extends SqliteTest { - - function _test($xml_file, $argsString, $expected, $columnList = null){ - $this->_testQuery($xml_file, $argsString, $expected, 'getUpdateSql', $columnList); - } - - function testUpdateIsGeneratedWithoutAlias(){ - $xml_file = _TEST_PATH_ . "db/xml_query/sqlite/data/member.updateLastLogin.xml"; - $argsString = '$args->member_srl = 4; - $args->last_login = \'20111014184010\'; - '; - $expected = 'UPDATE "xe_member" - SET "member_srl" = 4 - , "last_login" = \'20111014184010\' - WHERE "member_srl" = 4'; - $this->_test($xml_file, $argsString, $expected); - } - - } diff --git a/tests/classes/db/db/xml_query/sqlite/data/member.updateLastLogin.xml b/tests/classes/db/db/xml_query/sqlite/data/member.updateLastLogin.xml deleted file mode 100644 index 3a8fde69d..000000000 --- a/tests/classes/db/db/xml_query/sqlite/data/member.updateLastLogin.xml +++ /dev/null @@ -1,12 +0,0 @@ - - -
    - - - - - - - - - \ No newline at end of file diff --git a/tests/classes/db/db/xml_query/sqlite/data/module.deleteModuleConfig.xml b/tests/classes/db/db/xml_query/sqlite/data/module.deleteModuleConfig.xml deleted file mode 100644 index bdc99660b..000000000 --- a/tests/classes/db/db/xml_query/sqlite/data/module.deleteModuleConfig.xml +++ /dev/null @@ -1,9 +0,0 @@ - - -
    - - - - - - diff --git a/tests/classes/file/FileHandlerTest.php b/tests/classes/file/FileHandlerTest.php deleted file mode 100644 index 793a76fe6..000000000 --- a/tests/classes/file/FileHandlerTest.php +++ /dev/null @@ -1,81 +0,0 @@ - */ - -if(!defined('__XE__')) require dirname(__FILE__).'/../../Bootstrap.php'; - -require_once _XE_PATH_.'classes/file/FileHandler.class.php'; - -class FileHandlerTest extends PHPUnit_Framework_TestCase -{ - public function testGetRealPath() - { - $this->assertEquals(FileHandler::getRealPath(__FILE__), __FILE__); - $this->assertEquals(FileHandler::getRealPath('./tests/classes/file/FileHandlerTest.php'), __FILE__); - } - - public function testFileMethods() - { - $mock = dirname(__FILE__).'/mock.txt'; - $mock2 = dirname(__FILE__).'/mock2.txt'; - touch($mock); - - // copy file - $this->assertTrue(is_readable($mock)); - FileHandler::copyFile($mock, $mock2); - $this->assertTrue(is_readable($mock2)); - - // remove file - $this->assertTrue(FileHandler::removeFile($mock2)); - $this->assertFalse(is_readable($mock2)); - $this->assertFalse(FileHandler::removeFile($mock2)); - - // rename file - $this->assertTrue(FileHandler::rename($mock, $mock2)); - $this->assertFalse(is_readable($mock)); - $this->assertTrue(is_readable($mock2)); - $this->assertFalse(FileHandler::rename($mock, $mock2)); - - // move file - $this->assertTrue(FileHandler::rename($mock2, $mock)); - $this->assertTrue(is_readable($mock)); - $this->assertFalse(is_readable($mock2)); - $this->assertTrue(touch($mock2) && is_readable($mock2)); - $this->assertTrue(FileHandler::moveFile($mock, $mock2)); - $this->assertFalse(is_readable($mock)); - $this->assertTrue(is_readable($mock2)); - - // remove file - $this->assertFalse(FileHandler::removeFile($mock)); - $this->assertTrue(FileHandler::removeFile($mock2)); - $this->assertFalse(is_readable($mock)); - $this->assertFalse(is_readable($mock2)); - } - - public function testFileSize() - { - // file size - $this->assertEquals(FileHandler::filesize(0), '0Byte'); - $this->assertEquals(FileHandler::filesize(1), '1Byte'); - $this->assertEquals(FileHandler::filesize(386), '386Bytes'); - $this->assertEquals(FileHandler::filesize(1023), '1023Bytes'); - $this->assertEquals(FileHandler::filesize(1024), '1.0KB'); - $this->assertEquals(FileHandler::filesize(2480), '2.4KB'); - $this->assertEquals(FileHandler::filesize(1024*1024-1), '1024.0KB'); - $this->assertEquals(FileHandler::filesize(1024*1024), '1.00MB'); - $this->assertEquals(FileHandler::filesize(3*1024*1024+210*1024), '3.21MB'); - - // return bytes - $this->assertEquals(FileHandler::returnBytes('0B'), 0); - $this->assertEquals(FileHandler::returnBytes('1024B'), 1024); - $this->assertEquals(FileHandler::returnBytes('1K'), 1024); - $this->assertEquals(FileHandler::returnBytes('102.48K'), 1024*102.48); - $this->assertEquals(FileHandler::returnBytes('1M'), 1024*1024); - $this->assertEquals(FileHandler::returnBytes('1.12M'), 1024*1024*1.12); - $this->assertEquals(FileHandler::returnBytes('1023.99M'), 1024*1024*1023.99); - $this->assertEquals(FileHandler::returnBytes('1G'), 1024*1024*1024); - $this->assertEquals(FileHandler::returnBytes('12.02G'), 1024*1024*1024*12.02); - } -} - -/* End of file FileHandlerTest.php */ -/* Location: ./tests/classes/file/FileHandlerTest.php */ diff --git a/tests/classes/frontendfile/FrontEndFileHandlerTest.php b/tests/classes/frontendfile/FrontEndFileHandlerTest.php deleted file mode 100644 index 439b11202..000000000 --- a/tests/classes/frontendfile/FrontEndFileHandlerTest.php +++ /dev/null @@ -1,223 +0,0 @@ - */ - -if(!defined('__XE__')) require dirname(__FILE__).'/../../Bootstrap.php'; - -require_once _XE_PATH_.'classes/handler/Handler.class.php'; -require_once _XE_PATH_.'classes/frontendfile/FrontEndFileHandler.class.php'; -require_once _XE_PATH_.'classes/file/FileHandler.class.php'; - - -class FrontEndFileHandlerTest extends PHPUnit_Framework_TestCase -{ - public function testHandler() - { - Context::setUseCdn('Y'); - Context::setRequestUrl('http://test.com'); - - $handler = new FrontEndFileHandler(); - - // js(head) - $handler->loadFile(array('./common/js/jquery.min.js')); - $handler->loadFile(array('./common/js/js_app.js')); - $handler->loadFile(array('./common/js/common.js')); - $handler->loadFile(array('./common/js/xml_handler.js')); - $handler->loadFile(array('./common/js/xml_js_filter.js')); - - $expected[] = array('file' => '/xe/common/js/jquery.js', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/js/js_app.js', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/js/common.js', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/js/xml_handler.js', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/js/xml_js_filter.js', 'targetie' => ''); - $this->assertEquals($handler->getJsFileList(), $expected); - - unset($handler); - unset($expected); - $handler = new FrontEndFileHandler(); - - // js(body) - $handler->loadFile(array('./common/js/jquery.js', 'body')); - $handler->loadFile(array('./common/js/js_app.js', 'body')); - $handler->loadFile(array('./common/js/common.js', 'body')); - $handler->loadFile(array('./common/js/xml_handler.js', 'body')); - $handler->loadFile(array('./common/js/xml_js_filter.js', 'body')); - - $expected[] = array('file' => '/xe/common/js/jquery.js', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/js/js_app.js', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/js/common.js', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/js/xml_handler.js', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/js/xml_js_filter.js', 'targetie' => ''); - $this->assertEquals($handler->getJsFileList('body'), $expected); - - unset($handler); - unset($expected); - $handler = new FrontEndFileHandler(); - - // css - $handler->loadFile(array('./common/css/xe.css')); - $handler->loadFile(array('./common/css/common.css')); - - $expected[] = array('file' => '/xe/common/css/xe.css', 'media' => 'all', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/css/common.css', 'media' => 'all', 'targetie' => ''); - $this->assertEquals($handler->getCssFileList(), $expected); - - unset($handler); - unset($expected); - $handler = new FrontEndFileHandler(); - - // order (duplicate) - $handler->loadFile(array('./common/js/jquery.js', 'head', '', -100000)); - $handler->loadFile(array('./common/js/js_app.js', 'head', '', -100000)); - $handler->loadFile(array('./common/js/common.js', 'head', '', -100000)); - $handler->loadFile(array('./common/js/xml_handler.js', 'head', '', -100000)); - $handler->loadFile(array('./common/js/xml_js_filter.js', 'head', '', -100000)); - $handler->loadFile(array('./common/js/jquery.js', 'head', '', -100000)); - $handler->loadFile(array('./common/js/js_app.js', 'head', '', -100000)); - $handler->loadFile(array('./common/js/common.js', 'head', '', -100000)); - $handler->loadFile(array('./common/js/xml_handler.js', 'head', '', -100000)); - $handler->loadFile(array('./common/js/xml_js_filter.js', 'head', '', -100000)); - - $expected[] = array('file' => '/xe/common/js/jquery.js', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/js/js_app.js', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/js/common.js', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/js/xml_handler.js', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/js/xml_js_filter.js', 'targetie' => ''); - $this->assertEquals($handler->getJsFileList(), $expected); - - // order (redefine) - unset($handler); - unset($expected); - $handler = new FrontEndFileHandler(); - $handler->loadFile(array('./common/js/jquery.js', 'head', '', -100000)); - $handler->loadFile(array('./common/js/js_app.js', 'head', '', -100000)); - $handler->loadFile(array('./common/js/common.js', 'head', '', -100000)); - $handler->loadFile(array('./common/js/xml_handler.js', 'head', '', -100000)); - $handler->loadFile(array('./common/js/xml_js_filter.js', 'head', '', -100000)); - $handler->loadFile(array('./common/js/jquery.js', 'head', '', 1)); - - $expected[] = array('file' => '/xe/common/js/js_app.js', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/js/common.js', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/js/xml_handler.js', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/js/xml_js_filter.js', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/js/jquery.js', 'targetie' => ''); - $this->assertEquals($handler->getJsFileList(), $expected); - - // unload - unset($handler); - unset($expected); - $handler = new FrontEndFileHandler(); - - $handler->loadFile(array('./common/js/jquery.js', 'head', '', -100000)); - $handler->loadFile(array('./common/js/js_app.js', 'head', '', -100000)); - $handler->loadFile(array('./common/js/common.js', 'head', '', -100000)); - $handler->loadFile(array('./common/js/xml_handler.js', 'head', '', -100000)); - $handler->loadFile(array('./common/js/xml_js_filter.js', 'head', '', -100000)); - $handler->unloadFile('./common/js/jquery.js', '', 'all'); - - $expected[] = array('file' => '/xe/common/js/js_app.js', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/js/common.js', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/js/xml_handler.js', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/js/xml_js_filter.js', 'targetie' => ''); - $this->assertEquals($handler->getJsFileList(), $expected); - - // target IE(js) - unset($handler); - unset($expected); - $handler = new FrontEndFileHandler(); - - $handler->loadFile(array('./common/js/jquery.js', 'head', 'ie6')); - $handler->loadFile(array('./common/js/jquery.js', 'head', 'ie7')); - $handler->loadFile(array('./common/js/jquery.js', 'head', 'ie8')); - - $expected[] = array('file' => '/xe/common/js/jquery.js', 'targetie' => 'ie6'); - $expected[] = array('file' => '/xe/common/js/jquery.js', 'targetie' => 'ie7'); - $expected[] = array('file' => '/xe/common/js/jquery.js', 'targetie' => 'ie8'); - $this->assertEquals($handler->getJsFileList(), $expected); - - // target IE(css) - unset($handler); - unset($expected); - $handler = new FrontEndFileHandler(); - - $handler->loadFile(array('./common/css/common.css', null, 'ie6')); - $handler->loadFile(array('./common/css/common.css', null, 'ie7')); - $handler->loadFile(array('./common/css/common.css', null, 'ie8')); - - $expected[] = array('file' => '/xe/common/css/common.css', 'media'=>'all', 'targetie' => 'ie6'); - $expected[] = array('file' => '/xe/common/css/common.css','media'=>'all', 'targetie' => 'ie7'); - $expected[] = array('file' => '/xe/common/css/common.css', 'media'=>'all', 'targetie' => 'ie8'); - $this->assertEquals($handler->getCssFileList(), $expected); - - // media - unset($handler); - unset($expected); - $handler = new FrontEndFileHandler(); - - $handler->loadFile(array('./common/css/common.css', 'all')); - $handler->loadFile(array('./common/css/common.css', 'screen')); - $handler->loadFile(array('./common/css/common.css', 'handled')); - - $expected[] = array('file' => '/xe/common/css/common.css', 'media'=>'all', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/css/common.css','media'=>'screen', 'targetie' => ''); - $expected[] = array('file' => '/xe/common/css/common.css', 'media'=>'handled', 'targetie' => ''); - $this->assertEquals($handler->getCssFileList(), $expected); - - // CDN - unset($handler); - unset($expected); - $handler = new FrontEndFileHandler(); - - $handler->loadFile(array('./common/css/common.css'), true, 'http://static.xpressengine.com/core/', 'v'); - - $expected[] = array('file' => 'http://static.xpressengine.com/core/v/common/css/common.css', 'media'=>'all', 'targetie' => ''); - $this->assertEquals($handler->getCssFileList(), $expected); - - // CDN(no cdn setting) - unset($handler); - unset($expected); - Context::setUseCdn('N'); - $handler = new FrontEndFileHandler(); - - $handler->loadFile(array('./common/css/common.css'), true, 'http://static.xpressengine.com/core/', 'v'); - - $expected[] = array('file' => '/xe/common/css/common.css', 'media'=>'all', 'targetie' => ''); - $this->assertEquals($handler->getCssFileList(), $expected); - - // CDN(use ssl) - unset($handler); - unset($expected); - Context::setUseCdn('Y'); - Context::setRequestUrl('https://test.com'); - $handler = new FrontEndFileHandler(); - - $handler->loadFile(array('./common/css/common.css'), true, 'http://static.xpressengine.com/core/', 'v'); - - $expected[] = array('file' => '/xe/common/css/common.css', 'media'=>'all', 'targetie' => ''); - $this->assertEquals($handler->getCssFileList(), $expected); - - // external file - unset($handler); - unset($expected); - Context::setUseCdn('Y'); - Context::setRequestUrl('http://test.com'); - $handler = new FrontEndFileHandler(); - - $handler->loadFile(array('http://external.com/css/style2.css')); - $handler->loadFile(array('http://external.com/css/style.css'), true, 'http://static.xpressengine.com/core/', 'v'); - - $expected[] = array('file' => 'http://external.com/css/style2.css', 'media'=>'all', 'targetie' => ''); - $expected[] = array('file' => 'http://external.com/css/style.css', 'media'=>'all', 'targetie' => ''); - $this->assertEquals($handler->getCssFileList(), $expected); - - } -} - -if(!class_exists('Context')) -{ - require _XE_PATH_.'/tests/classes/context/Context.mock.php'; -} - -if(!function_exists('debugPrint')) -{ - function debugPrint(){} -} diff --git a/tests/classes/security/SecurityTest.php b/tests/classes/security/SecurityTest.php deleted file mode 100644 index 793bfb903..000000000 --- a/tests/classes/security/SecurityTest.php +++ /dev/null @@ -1,135 +0,0 @@ - */ - -if(!defined('__XE__')) require dirname(__FILE__).'/../../Bootstrap.php'; - -require_once _XE_PATH_.'/classes/security/Security.class.php'; - -error_reporting(E_ALL & ~E_NOTICE); - -class SecurityTest extends PHPUnit_Framework_TestCase -{ - protected function setUp() - { - /** - * Setup mock data - **/ - - // string - Context::set('content1', 'Hello, world'); - Context::set('content2', 'Wow, >_< !'); - - // object - $args = new stdClass; - $args->prop1 = 'Normal string'; - $args->prop2 = 'He said, "Very nice!"'; - $args->prop3 = 'Strong Baby'; - Context::set('object1', $args); - - // array - $arr = array(); - $arr[] = 'First'; - $arr[] = 'Second'; - $arr[] = 'Third'; - Context::set('array1', $arr); - - // associative array - $aarr = array(); - $aarr['elem1'] = 'One 1'; - $aarr['elem2'] = 'Two 2'; - $aarr['elem3'] = 'Three 3'; - Context::set('array2', $aarr); - } - - public function testEncodeHTML_DefaultContext() - { - $security = new Security(); - - // normal string - one - $this->setUp(); - $this->assertEquals('Hello, world', Context::get('content1')); - $security->encodeHTML('content1'); - $this->assertEquals('<strong>Hello, world</strong>', Context::get('content1')); - - // normal string - two - $this->setUp(); - $this->assertEquals('Hello, world', Context::get('content1')); - $this->assertEquals('Wow, >_< !', Context::get('content2')); - $security->encodeHTML('content1','content2'); - $this->assertEquals('<strong>Hello, world</strong>', Context::get('content1')); - $this->assertEquals('Wow, >_< !', Context::get('content2')); - - // array - $this->assertEquals(Context::get('array1'), array('First','Second','Third')); - $security->encodeHTML('array1'); // should ignore this - $this->assertEquals(Context::get('array1'), array('First','Second','Third')); - $security->encodeHTML('array1.0'); // affect only first element - $this->assertEquals(Context::get('array1'), array('<span class="first">F</span>irst','Second','Third')); - $security->encodeHTML('array1.2'); // affects only third element - $this->assertEquals(Context::get('array1'), array('<span class="first">F</span>irst','Second','<b>T</b>hird')); - $this->setUp(); // reset; - $this->assertEquals(Context::get('array1'), array('First','Second','Third')); - $security->encodeHTML('array1.'); // affects all items - $this->assertEquals(Context::get('array1'), array('<span class="first">F</span>irst','<u>S</u>econd','<b>T</b>hird')); - - // associated array - $this->assertEquals(Context::get('array2'), array('elem1'=>'One 1','elem2'=>'Two 2','elem3'=>'Three 3')); - $security->encodeHTML('array2'); // should ignore this - $this->assertEquals(Context::get('array2'), array('elem1'=>'One 1','elem2'=>'Two 2','elem3'=>'Three 3')); - $security->encodeHTML('array2.0'); // should ignore this - $this->assertEquals(Context::get('array2'), array('elem1'=>'One 1','elem2'=>'Two 2','elem3'=>'Three 3')); - $security->encodeHTML('array2.elem2'); // affects only 'elem2' - $this->assertEquals(Context::get('array2'), array('elem1'=>'One 1','elem2'=>'Two <del>2</del>','elem3'=>'Three 3')); - $this->setUp(); // reset; - $this->assertEquals(Context::get('array2'), array('elem1'=>'One 1','elem2'=>'Two 2','elem3'=>'Three 3')); - $security->encodeHTML('array2.'); // affects all items - $this->assertEquals(Context::get('array2'), array('elem1'=>'One <ins>1</ins>','elem2'=>'Two <del>2</del>','elem3'=>'Three <addr>3</addr>')); - - // object - $obj = new stdClass; - $obj->prop1 = 'Normal string'; - $obj->prop2 = 'He said, "Very nice!"'; - $obj->prop3 = 'Strong Baby'; - $this->assertEquals(Context::get('object1'), $obj); - $security->encodeHTML('object1'); // should ignore this - $this->assertEquals(Context::get('object1'), $obj); - $security->encodeHTML('object1.0'); // should ignore this - $this->assertEquals(Context::get('object1'), $obj); - $security->encodeHTML('object1.prop1'); // affects only 'prop1' property - no changes - $this->assertEquals(Context::get('object1'), $obj); - $security->encodeHTML('object1.prop3'); // affects only 'prop3' property - $obj->prop3 = '<strong>Strong</strong> Baby'; - $this->assertEquals(Context::get('object1'), $obj); - $this->setUp(); // reset - $obj->prop3 = 'Strong Baby'; - $this->assertEquals(Context::get('object1'), $obj); - $security->encodeHTML('object1.'); // affects all properties - $obj->prop2 = 'He said, "Very nice!"'; - $obj->prop3 = '<strong>Strong</strong> Baby'; - $this->assertEquals(Context::get('object1'), $obj); - } - - public function testEncodeHTML_CustomContext() - { - $array = array('Hello', 'World', 'Bold is not bald'); - - // array with no nested objects or arrays - $security = new Security($array); - $returned = $security->encodeHTML('.'); - $this->assertEquals($returned, array('Hello', 'World', '<b>Bold</b> is not bald')); - - // associative array - $array = array('first'=>'Hello', 'second'=>'World', '3rd'=>'Bold is not bald'); - $security = new Security($array); - $returned = $security->encodeHTML('first','3rd'); - $this->assertEquals($returned, array('first'=>'Hello', 'second'=>'World', '3rd'=>'<b>Bold</b> is not bald')); - } -} - -if(!class_exists('Context')) -{ - require _XE_PATH_.'/tests/classes/context/Context.mock.php'; -} - -/* End of file SecurityTest.php */ -/* Location: ./tests/classes/security/SecurityTest.php */ diff --git a/tests/classes/template/TemplateHandlerTest.php b/tests/classes/template/TemplateHandlerTest.php deleted file mode 100644 index a377f0eee..000000000 --- a/tests/classes/template/TemplateHandlerTest.php +++ /dev/null @@ -1,268 +0,0 @@ - */ - -if(!defined('__XE__')) require dirname(__FILE__).'/../../Bootstrap.php'; - -require_once _XE_PATH_.'classes/file/FileHandler.class.php'; -require_once _XE_PATH_.'classes/template/TemplateHandler.class.php'; - -class TemplateHandlerTest extends PHPUnit_Framework_TestCase -{ - var $prefix = ''; - - static public function provider() - { - return array( - // pipe cond - array( - 'Link', - 'cond > 10){ ?> class="active">Link' - ), - // cond - array( - 'Link1say, hello', - 'Link1cond){ ?>say, hello' - ), - // cond - array( - 'Link1Link2', - 'Link1v==$__Context->k){ ?>Link2' - ), - // for loop - array( - '', - '
      i=0;$__Context->i<$__Context->len;$__Context->i++){ ?>
    • Link
    ' - ), - // foreach loop - array( - '', - '
      arr&&count($__Context->arr))foreach($__Context->arr as $__Context->key=>$__Context->val){ ?>
    • Link
        arr2&&count($__Context->arr2))foreach($__Context->arr2 as $__Context->key2=>$__Context->val2){ ?>
    ' - ), - // while loop - array( - '', - '
      item=get_loop_item()){ ?>
    • Link
    ' - ), - // ~ - array( - 'LinkHello, world', - 'Linkcond){ ?>Hello, world ' - ), - // ~ - array( - 'LinkHello, {$world}', - 'Linkcond){ ?>Hello, world ?>' - ), - // ~ ~ - array( - 'LinkHello, worldWow', - 'Linkcond){ ?>Hello, worldWow' - ), - // ~ ~ ~ - array( - 'LinkHello, worldHaHaWow', - 'Linkcond){ ?>Hello, worldcond2){ ?>HaHaWow' - ), - // ~ - array( - '
  • Repeat this
  • ', - 'i=0;$__Context->i<$__Context->len;$__Context->i++){ ?>
  • Repeat this
  • ' - ), - // ~ - array( - '
  • item{$key} : {$val}
  • ', - 'arr&&count($__Context->arr))foreach($__Context->arr as $__Context->key=>$__Context->val){ ?>
  • itemkey ?> : val ?>
  • ' - ), - // ~ - array( - '{$v->text}', - 'item=$__Context->list->getItem()){ ?>v->text ?>' - ), - // ~ ~ ~ ~ - array( - ' A BC', - 'var){ ?> ABC' - ), - // invalid block statement - array( - '', - '' - ), - // {@ ...PHP_CODE...} - array( - '{@$list_page = $page_no}', - 'list_page = $__Context->page_no ?>' - ), - // %load_js_plugin - array( - '', - '' - ), - // #include - array( - '
    This is another dummy
    ', - 'compile(\'tests/classes/template\',\'sample.html\') ?>
    This is another dummy
    ' - ), - // - array( - '
    This is another dummy
    ', - 'compile(\'tests/classes\',\'sample.html\') ?>
    This is another dummy
    ' - ), - // - array( - '', - '' - ), - // - array( - '', - '' - ), - // - array( - '', - '' - ), - // - array( - '', - 'compile(); ?>' - ), - // - array( - '', - '' - ), - // - array( - '', - '' - ), - // comment - array( - '', - '' - ), - // self-closing tag - array( - '', - 'foo){ ?>' - ), - // relative path1 - array( - '', - '' - ), - // relative path2 - array( - '', - '' - ), - // error case - array( - 'logo', - 'layout_info->logo_image){ ?>logo' - ), - // error case - ignore stylesheets - array( - '', - '' - ), - // error case - ignore json - array( - '', - '' - ), - // error case - inline javascript - array( - '
    ', - '
    ' - ), - // issue 103 - array( - '', - '' - ), - // issue 135 - array( - '

    {$key}

    Loop block {$val}
    ', - '_m_list_all&&count($__Context->_m_list_all))foreach($__Context->_m_list_all as $__Context->key=>$__Context->val){ ?>

    key ?>

    Loop block val ?>
    ' - ), - // issue 136 - array( - '
    bar', - 'var==\'foo\'){ ?>
    bar' - ), - // issue 188 - array( - '
    Hello, world!
    ', - 'ii < $__Context->nn){ ?>dummy&&count($__Context->dummy))foreach($__Context->dummy as $__Context->k=>$__Context->v){ ?>
    Hello, world!
    ' - ), - // issue 190 - array( - '
    Hello, world!
    ', - 'i >= $__Context->n)){ ?>dummy&&count($__Context->dummy))foreach($__Context->dummy as $__Context->k=>$__Context->v){ ?>
    Hello, world!
    ' - ), - // issue 183 - array( - '
    '."\n".'
    {$vvv}
    CD
    ', - 'vvvls&&count($__Context->vvvls))foreach($__Context->vvvls as $__Context->vvv){ ?>'."\n".'
    vvv ?>
    CD
    ' - ), - // issue 512 - ignores - array( - '
    {$lang->sl_show_topimgtext}
    ', - '
    lang->sl_show_topimgtext ?>
    ' - ), - // issue 584 - array( - 'mobile', - 'oBodex->display_extra_images[\'mobile\'] && $__Context->arr_extra && $__Context->arr_extra->bodex->mobile){ ?>mobile' - ), - // issue 831 - array( - "
  • class=\"on\">", - "
  • act, array(\n'dispNmsAdminGroupList',\n'dispNmsAdminInsertGroup',\n'dispNmsAdminGroupInfo',\n'dispNmsAdminDeleteGroup'))){ ?>class=\"on\">" - ), - // issue 746 - array( - '', - '' - ), - // issue 696 - array( - '{@ eval(\'$val = $document_srl;\')}', - 'val = $__Context->document_srl;\') ?>' - ), - ); - } - - /** - * @dataProvider provider - */ - public function testParse($tpl, $expected) - { - $tmpl = TemplateHandler::getInstance(); - $tmpl->init(dirname(__FILE__), 'sample.html'); - $result = $tmpl->parse($tpl); - - $this->assertEquals($result, $this->prefix.$expected); - } - - public function testParse2() - { - $tmpl = TemplateHandler::getInstance(); - $tmpl->init(dirname(__FILE__), 'no_file.html'); - - $result = $tmpl->parse(); - $this->assertEquals($result, ''); - } - - public function testCompileDirect() - { - $tmpl = TemplateHandler::getInstance(); - $result = $tmpl->compileDirect(dirname(__FILE__), 'sample.html'); - $result = trim($result); - - $this->assertEquals($result, $this->prefix.'has_blog){ ?>Taggon\'s blog'); - } -} diff --git a/tests/classes/template/css/style.css b/tests/classes/template/css/style.css deleted file mode 100644 index af6e2a583..000000000 --- a/tests/classes/template/css/style.css +++ /dev/null @@ -1 +0,0 @@ -/* only for test */ diff --git a/tests/classes/template/sample.html b/tests/classes/template/sample.html deleted file mode 100644 index 949b441ba..000000000 --- a/tests/classes/template/sample.html +++ /dev/null @@ -1 +0,0 @@ -Taggon's blog diff --git a/tests/classes/validator/ValidatorTest.php b/tests/classes/validator/ValidatorTest.php deleted file mode 100644 index c5d7d9bcb..000000000 --- a/tests/classes/validator/ValidatorTest.php +++ /dev/null @@ -1,239 +0,0 @@ - */ - -if(!defined('__XE__')) require dirname(__FILE__).'/../../Bootstrap.php'; -require_once _XE_PATH_.'classes/xml/XmlParser.class.php'; -require_once _XE_PATH_.'classes/handler/Handler.class.php'; -require_once _XE_PATH_.'classes/file/FileHandler.class.php'; -require_once _XE_PATH_.'classes/validator/Validator.class.php'; - -class ValidatorTest extends PHPUnit_Framework_TestCase -{ - protected function setUp() { - global $lang; - - $lang->filter = new stdClass; - $lang->filter->isnull = 'isnull'; - $lang->filter->outofrange = 'outofrange'; - $lang->filter->equalto = 'equalto'; - } - - public function testRequired() { - $vd = new Validator(); - $vd->addFilter('userid', array('required'=>'true')); - - // given data - $this->assertFalse( $vd->validate(array('no-userid'=>'hello')) ); - $this->assertTrue( $vd->validate(array('userid'=>'myuserid')) ); - $this->assertFalse( $vd->validate(array('userid'=>'')) ); - - // context data - $this->assertFalse( $vd->validate() ); - Context::set('userid', '', true); - $this->assertFalse( $vd->validate() ); - Context::set('userid', 'myuserid', true); - $this->assertTrue( $vd->validate() ); - $vd->removeFilter('userid'); - $this->assertTrue( $vd->validate() ); - } - - public function testNamePattern() { - $vd = new Validator(); - $vd->addFilter('^user_', array('length'=>'5:')); - - Context::set('user_123', 'abcd', true); - Context::set('user_456', '123', true); - $this->assertFalse( $vd->validate() ); - - Context::set('user_123', 'abcdefg', true); - $this->assertFalse( $vd->validate() ); - - Context::set('user_456', '123456', true); - $this->assertTrue( $vd->validate() ); - } - - public function testEqualTo() { - $vd = new Validator(); - $vd->addFilter('pass1', array('equalto'=>'pass2')); - - Context::set('pass1', 'MyPassword', true); - $this->assertFalse( $vd->validate() ); - Context::set('pass2', 'WorngPassword', true); - $this->assertFalse( $vd->validate() ); - Context::set('pass2', 'MyPassword', true); - $this->assertTrue( $vd->validate() ); - } - - public function testArrayTrim() { - $vd = new Validator(); - - $arr = array('red'=>'apple', 'yellow'=>'banana ', 'green'=>' papaya '); - $this->assertEquals($vd->arrayTrim($arr), array('red'=>'apple', 'yellow'=>'banana', 'green'=>'papaya')); - $this->assertEquals($vd->arrayTrim(' string '), 'string'); - } - - public function testDefault() { - $vd = new Validator(); - $vd->addFilter('userid', array('default'=>'ididid')); - - // given data - $arr = array('no-userid'=>''); - $vd->validate($arr); - $this->assertEquals( $arr, array('no-userid'=>'') ); - - $arr = array('userid'=>''); - $vd->validate(&$arr); // pass-by-reference - $this->assertEquals( $arr, array('userid'=>'ididid') ); - - $arr = array('userid'=>'ownid'); - $vd->validate(&$arr); - $this->assertEquals( $arr, array('userid'=>'ownid') ); - - if(defined('MOCK_CONTEXT')) { - Context::truncate(); - - // context data - $vd->validate(); - $this->assertEquals( 'ididid', Context::get('userid') ); - - } - - $vd->load(dirname(__FILE__).'/login.xml'); - - Context::set('userid', '', true); - $vd->validate(); - $this->assertEquals( 'idididid', Context::get('userid') ); - } - - public function testLength() { - $vd = new Validator(); - - $vd->addFilter('field1', array('length'=>'3:')); - $this->assertFalse( $vd->validate(array('field1'=>'ab')) ); - $this->assertTrue( $vd->validate(array('field1'=>'abc')) ); - $this->assertTrue( $vd->validate(array('field1'=>'abcd')) ); - } - - public function testCustomRule() { - // regex - $vd = new Validator(); - $customRules['regex_rule']['type'] = 'regex'; - $customRules['regex_rule']['test'] = '/^[a-z]+$/'; - $vd->addRule($customRules); - $vd->addFilter('regex_field', array('rule' => 'regex_rule')); - - $this->assertTrue($vd->validate(array('regex_field' => 'abc'))); - $this->assertFalse($vd->validate(array('regex_field' => 'ABC'))); - - // enum - $vd = new Validator(); - $customRules['enum_rule']['type'] = 'enum'; - $customRules['enum_rule']['test'] = 'a,b,c'; - $vd->addRule($customRules); - $vd->addFilter('enum_field', array('rule' => 'enum_rule')); - - $this->assertTrue($vd->validate(array('enum_field' => 'a'))); - $this->assertFalse($vd->validate(array('enum_field' => 'd'))); - - // enum with custom delimiter - $vd = new Validator(); - $customRules['enum_rule2']['type'] = 'enum'; - $customRules['enum_rule2']['test'] = 'a@b@c'; - $customRules['enum_rule2']['delim'] = '@'; - $vd->addRule($customRules); - $vd->addFilter('enum_field2', array('rule' => 'enum_rule2')); - - $this->assertTrue($vd->validate(array('enum_field2' => 'a'))); - $this->assertFalse($vd->validate(array('enum_field2' => 'd'))); - - // expr - $vd = new Validator(); - $customRules['expr_rule']['type'] = 'expr'; - $customRules['expr_rule']['test'] = '$$ < 10'; - $vd->addRule($customRules); - $vd->addFilter('expr_field', array('rule' => 'expr_rule')); - - $this->assertTrue($vd->validate(array('expr_field' => '5'))); - $this->assertFalse($vd->validate(array('expr_field' => '15'))); - } - - public function testCustomRuleXml() - { - $vd = new Validator(dirname(__FILE__).'/customrule.xml'); - - $this->assertTrue($vd->validate(array('regex_field' => 'abc'))); - $this->assertFalse($vd->validate(array('regex_field' => 'ABC'))); - - $this->assertTrue($vd->validate(array('enum_field' => 'a'))); - $this->assertFalse($vd->validate(array('enum_field' => 'd'))); - - $this->assertTrue($vd->validate(array('enum_field2' => 'a'))); - $this->assertFalse($vd->validate(array('enum_field2' => 'd'))); - - $this->assertTrue($vd->validate(array('expr_field' => '5'))); - $this->assertFalse($vd->validate(array('expr_field' => '15'))); - } - - public function testCondition() { - $vd = new Validator(); - $data = array('greeting1'=>'hello'); - - // No condition - $vd->addFilter('greeting1', array('required'=>'true')); - $this->assertTrue($vd->validate($data)); - - // Now greeting2 being mandatory if greeting1 is 'Hello' - $vd->addFilter('greeting2', array('if'=>array('test'=>'$greeting1 == "Hello"', 'attr'=>'required', 'value'=>'true'))); - - // Because greeting1 is 'hello', including lowercase 'h', greeting2 isn't required yet. - $this->assertTrue($vd->validate($data)); - - // Change the value of greeting1. Greeting2 is required now - $data['greeting1'] = 'Hello'; - $this->assertFalse($vd->validate($data)); - - $data['greeting2'] = 'World'; - $this->assertTrue($vd->validate($data)); - } - - public function testConditionXml() { - - $vd = new Validator(dirname(__FILE__).'/condition.xml'); - $data = array('greeting1'=>'hello'); - - $this->assertTrue($vd->validate($data)); - - // Change the value of greeting1. Greeting2 is required now - $data['greeting1'] = 'Hello'; - $this->assertFalse($vd->validate($data)); - - $data['greeting2'] = 'World'; - $this->assertTrue($vd->validate($data)); - - // javascript - $vd->setCacheDir(dirname(__FILE__)); - $js = $vd->getJsPath(); - $this->assertFileEquals($js, dirname(__FILE__).'/condition.en.js'); - } - - protected function tearDown() - { - // remove cache directory - $cache_dir = dirname(__FILE__).'/ruleset'; - if(is_dir($cache_dir)) { - $files = (array)glob($cache_dir.'/*'); - foreach($files as $file) { - unlink($file); - } - rmdir($cache_dir); - } - } -} - -if(!class_exists('Context')) -{ - require _XE_PATH_.'tests/classes/context/Context.mock.php'; -} - -/* End of file ValidatorTest.php */ -/* Location: ./tests/classes/validator/ValidatorTest.php */ diff --git a/tests/classes/validator/condition.en.js b/tests/classes/validator/condition.en.js deleted file mode 100644 index dd24a54df..000000000 --- a/tests/classes/validator/condition.en.js +++ /dev/null @@ -1,8 +0,0 @@ -(function($,v){ -v=xe.getApp('validator')[0];if(!v)return; - -v.cast('ADD_FILTER',['condition', {'greeting1':{required:true},'greeting2':{'if':[{test:'$greeting1 == \'Hello\'', attr:'required', value:'true'}]}}]); -v.cast('ADD_MESSAGE',['isnull','isnull']); -v.cast('ADD_MESSAGE',['outofrange','outofrange']); -v.cast('ADD_MESSAGE',['equalto','equalto']); -})(jQuery); \ No newline at end of file diff --git a/tests/classes/validator/condition.xml b/tests/classes/validator/condition.xml deleted file mode 100644 index a1fcb91aa..000000000 --- a/tests/classes/validator/condition.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/tests/classes/validator/customrule.xml b/tests/classes/validator/customrule.xml deleted file mode 100644 index 8da1a1e87..000000000 --- a/tests/classes/validator/customrule.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/tests/classes/validator/insertDocument.xml b/tests/classes/validator/insertDocument.xml deleted file mode 100644 index 56d49d7d1..000000000 --- a/tests/classes/validator/insertDocument.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/tests/classes/validator/login.xml b/tests/classes/validator/login.xml deleted file mode 100644 index db50002bf..000000000 --- a/tests/classes/validator/login.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/tests/common/js/index.html b/tests/common/js/index.html deleted file mode 100644 index f4d691853..000000000 --- a/tests/common/js/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - -

    Common JavaScript Test

    -

    -
    -

    -
      -
      - -
      -
      -
      - Legend - - - - - - -
      -
      -
      - - - diff --git a/tests/common/js/js_app.test.js b/tests/common/js/js_app.test.js deleted file mode 100644 index 896a05b44..000000000 --- a/tests/common/js/js_app.test.js +++ /dev/null @@ -1,105 +0,0 @@ -jQuery(function($){ - module('JAF'); - - var App = xe.createApp('App', { - value : 1, - init : function() { - this.value = 2; - }, - API_GET_VALUE : function(sender, params) { - return this.value; - }, - API_SET_VALUE : function(sender, params) { - this.value = params[0]; - } - }); - - var Plugin = xe.createPlugin('Plugin', { - API_BEFORE_GET_VALUE : function(sender, params) { - if (params[0]) return false; - }, - API_BEFORE_SET_VALUE : function(sender, params) { - params[0] = params[0] * 3; - }, - API_METHOD : function(sender, params) { - $('#plugin-test').html(params[0]); - } - }); - - test('Global object - xe', function(){ - equal(xe.getName(), 'Core'); - ok($.isFunction(xe.createApp), 'xe has createApp method'); - ok($.isFunction(xe.createPlugin), 'xe has createPlugin method'); - ok($.isFunction(xe.getApps), 'xe has getApps method'); - ok($.isFunction(xe.getApp), 'xe has getApp method'); - ok($.isFunction(xe.registerApp), 'xe has registerApp method'); - ok($.isFunction(xe.unregisterApp), 'xe has unregisterApp method'); - ok($.isFunction(xe.broadcast), 'xe has broadcast method'); - }); - test('App', function() { - var app1 = new App(); - - equal(app1.getName(), 'App', 'The app1 is an instance of App.'); - ok(xe.getApp('App') == null, 'The app1 is NOT registered yet.'); - - xe.registerApp(app1); - - ok(xe.getApp('App')[0] === app1, 'The app1 is registered successfully.'); - equal(app1.cast('GET_VALUE'), 2); - - xe.unregisterApp(app1); - - ok(xe.getApp('App') == null, 'The app1 is unregistered.'); - }); - test('Plugin', function() { - xe.registerApp(new App()); - - var plugin1 = new Plugin(); - - equal(plugin1.getName(), 'Plugin', 'The plugin1 is an instance of Plugin.'); - - var app1 = xe.getApp('App')[0]; - - app1.registerPlugin(plugin1); - - ok(typeof app1.cast('GET_VALUE', [true]) == 'undefined', 'Stop GET_VALUE action'); - - var val = app1.cast('GET_VALUE'); - equal(app1.cast('GET_VALUE'), val, 'Check current value'); - - app1.cast('SET_VALUE', [3]); - equal(app1.cast('GET_VALUE'), 9, 'Before hooker should change input value 3 into'); - - // original method - var obj = $('#plugin-test'); - equal(obj.html(), '', 'There is no content'); - - app1.cast('METHOD', ['hello']); - equal(obj.html(), 'hello', 'The plugin set the content'); - - obj.hide(); - - xe.unregisterApp(app1); - }); - test('Function : You can register a function as a message handler', function() { - xe.registerApp(new App()); - - function handler(sender, params) { - params[0] = params[0] + ', world!'; - } - - var app1 = xe.getApp('App')[0]; - app1.registerPlugin(new Plugin()); - - var obj = $('#plugin-test'); - app1.cast('METHOD', ['Hello']); - equal(obj.html(), 'Hello', 'The plugin set the content'); - - app1.registerHandler('BEFORE_METHOD', handler); - app1.cast('METHOD', ['Hello']); - equal(obj.html(), 'Hello, world!', 'The handler function changes a passed parameter.'); - - xe.unregisterApp(app1); - }); - -}); diff --git a/tests/common/js/qunit.css b/tests/common/js/qunit.css deleted file mode 100644 index 5da9cb48c..000000000 --- a/tests/common/js/qunit.css +++ /dev/null @@ -1,228 +0,0 @@ -/** - * QUnit - A JavaScript Unit Testing Framework - * - * http://docs.jquery.com/QUnit - * - * Copyright (c) 2011 John Resig, Jörn Zaefferer - * Dual licensed under the MIT (MIT-LICENSE.txt) - * or GPL (GPL-LICENSE.txt) licenses. - * Pulled Live from Git Fri Sep 2 02:15:01 UTC 2011 - * Last Commit: 7f292170fa1109f1355f3e96f8973c32fc553946 - */ - -/** Font Family and Sizes */ - -#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult { - font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; -} - -#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } -#qunit-tests { font-size: smaller; } - - -/** Resets */ - -#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult { - margin: 0; - padding: 0; -} - - -/** Header */ - -#qunit-header { - padding: 0.5em 0 0.5em 1em; - - color: #8699a4; - background-color: #0d3349; - - font-size: 1.5em; - line-height: 1em; - font-weight: normal; - - border-radius: 15px 15px 0 0; - -moz-border-radius: 15px 15px 0 0; - -webkit-border-top-right-radius: 15px; - -webkit-border-top-left-radius: 15px; -} - -#qunit-header a { - text-decoration: none; - color: #c2ccd1; -} - -#qunit-header a:hover, -#qunit-header a:focus { - color: #fff; -} - -#qunit-banner { - height: 5px; -} - -#qunit-testrunner-toolbar { - padding: 0.5em 0 0.5em 2em; - color: #5E740B; - background-color: #eee; -} - -#qunit-userAgent { - padding: 0.5em 0 0.5em 2.5em; - background-color: #2b81af; - color: #fff; - text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; -} - - -/** Tests: Pass/Fail */ - -#qunit-tests { - list-style-position: inside; -} - -#qunit-tests li { - padding: 0.4em 0.5em 0.4em 2.5em; - border-bottom: 1px solid #fff; - list-style-position: inside; -} - -#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running { - display: none; -} - -#qunit-tests li strong { - cursor: pointer; -} - -#qunit-tests li a { - padding: 0.5em; - color: #c2ccd1; - text-decoration: none; -} -#qunit-tests li a:hover, -#qunit-tests li a:focus { - color: #000; -} - -#qunit-tests ol { - margin-top: 0.5em; - padding: 0.5em; - - background-color: #fff; - - border-radius: 15px; - -moz-border-radius: 15px; - -webkit-border-radius: 15px; - - box-shadow: inset 0px 2px 13px #999; - -moz-box-shadow: inset 0px 2px 13px #999; - -webkit-box-shadow: inset 0px 2px 13px #999; -} - -#qunit-tests table { - border-collapse: collapse; - margin-top: .2em; -} - -#qunit-tests th { - text-align: right; - vertical-align: top; - padding: 0 .5em 0 0; -} - -#qunit-tests td { - vertical-align: top; -} - -#qunit-tests pre { - margin: 0; - white-space: pre-wrap; - word-wrap: break-word; -} - -#qunit-tests del { - background-color: #e0f2be; - color: #374e0c; - text-decoration: none; -} - -#qunit-tests ins { - background-color: #ffcaca; - color: #500; - text-decoration: none; -} - -/*** Test Counts */ - -#qunit-tests b.counts { color: black; } -#qunit-tests b.passed { color: #5E740B; } -#qunit-tests b.failed { color: #710909; } - -#qunit-tests li li { - margin: 0.5em; - padding: 0.4em 0.5em 0.4em 0.5em; - background-color: #fff; - border-bottom: none; - list-style-position: inside; -} - -/*** Passing Styles */ - -#qunit-tests li li.pass { - color: #5E740B; - background-color: #fff; - border-left: 26px solid #C6E746; -} - -#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } -#qunit-tests .pass .test-name { color: #366097; } - -#qunit-tests .pass .test-actual, -#qunit-tests .pass .test-expected { color: #999999; } - -#qunit-banner.qunit-pass { background-color: #C6E746; } - -/*** Failing Styles */ - -#qunit-tests li li.fail { - color: #710909; - background-color: #fff; - border-left: 26px solid #EE5757; - white-space: pre; -} - -#qunit-tests > li:last-child { - border-radius: 0 0 15px 15px; - -moz-border-radius: 0 0 15px 15px; - -webkit-border-bottom-right-radius: 15px; - -webkit-border-bottom-left-radius: 15px; -} - -#qunit-tests .fail { color: #000000; background-color: #EE5757; } -#qunit-tests .fail .test-name, -#qunit-tests .fail .module-name { color: #000000; } - -#qunit-tests .fail .test-actual { color: #EE5757; } -#qunit-tests .fail .test-expected { color: green; } - -#qunit-banner.qunit-fail { background-color: #EE5757; } - - -/** Result */ - -#qunit-testresult { - padding: 0.5em 0.5em 0.5em 2.5em; - - color: #2b81af; - background-color: #D2E0E6; - - border-bottom: 1px solid white; -} - -/** Fixture */ - -#qunit-fixture { - position: absolute; - top: -10000px; - left: -10000px; -} diff --git a/tests/common/js/qunit.js b/tests/common/js/qunit.js deleted file mode 100644 index f8d2a6850..000000000 --- a/tests/common/js/qunit.js +++ /dev/null @@ -1,1512 +0,0 @@ -/** - * QUnit - A JavaScript Unit Testing Framework - * - * http://docs.jquery.com/QUnit - * - * Copyright (c) 2011 John Resig, Jörn Zaefferer - * Dual licensed under the MIT (MIT-LICENSE.txt) - * or GPL (GPL-LICENSE.txt) licenses. - * Pulled Live from Git Fri Sep 2 02:15:01 UTC 2011 - * Last Commit: 7f292170fa1109f1355f3e96f8973c32fc553946 - */ - -(function(window) { - -var defined = { - setTimeout: typeof window.setTimeout !== "undefined", - sessionStorage: (function() { - try { - return !!sessionStorage.getItem; - } catch(e) { - return false; - } - })() -}; - -var testId = 0; - -var Test = function(name, testName, expected, testEnvironmentArg, async, callback) { - this.name = name; - this.testName = testName; - this.expected = expected; - this.testEnvironmentArg = testEnvironmentArg; - this.async = async; - this.callback = callback; - this.assertions = []; -}; -Test.prototype = { - init: function() { - var tests = id("qunit-tests"); - if (tests) { - var b = document.createElement("strong"); - b.innerHTML = "Running " + this.name; - var li = document.createElement("li"); - li.appendChild( b ); - li.className = "running"; - li.id = this.id = "test-output" + testId++; - tests.appendChild( li ); - } - }, - setup: function() { - if (this.module != config.previousModule) { - if ( config.previousModule ) { - QUnit.moduleDone( { - name: config.previousModule, - failed: config.moduleStats.bad, - passed: config.moduleStats.all - config.moduleStats.bad, - total: config.moduleStats.all - } ); - } - config.previousModule = this.module; - config.moduleStats = { all: 0, bad: 0 }; - QUnit.moduleStart( { - name: this.module - } ); - } - - config.current = this; - this.testEnvironment = extend({ - setup: function() {}, - teardown: function() {} - }, this.moduleTestEnvironment); - if (this.testEnvironmentArg) { - extend(this.testEnvironment, this.testEnvironmentArg); - } - - QUnit.testStart( { - name: this.testName - } ); - - // allow utility functions to access the current test environment - // TODO why?? - QUnit.current_testEnvironment = this.testEnvironment; - - try { - if ( !config.pollution ) { - saveGlobal(); - } - - this.testEnvironment.setup.call(this.testEnvironment); - } catch(e) { - QUnit.ok( false, "Setup failed on " + this.testName + ": " + e.message ); - } - }, - run: function() { - if ( this.async ) { - QUnit.stop(); - } - - if ( config.notrycatch ) { - this.callback.call(this.testEnvironment); - return; - } - try { - this.callback.call(this.testEnvironment); - } catch(e) { - fail("Test " + this.testName + " died, exception and test follows", e, this.callback); - QUnit.ok( false, "Died on test #" + (this.assertions.length + 1) + ": " + e.message + " - " + QUnit.jsDump.parse(e) ); - // else next test will carry the responsibility - saveGlobal(); - - // Restart the tests if they're blocking - if ( config.blocking ) { - start(); - } - } - }, - teardown: function() { - try { - this.testEnvironment.teardown.call(this.testEnvironment); - checkPollution(); - } catch(e) { - QUnit.ok( false, "Teardown failed on " + this.testName + ": " + e.message ); - } - }, - finish: function() { - if ( this.expected && this.expected != this.assertions.length ) { - QUnit.ok( false, "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run" ); - } - - var good = 0, bad = 0, - tests = id("qunit-tests"); - - config.stats.all += this.assertions.length; - config.moduleStats.all += this.assertions.length; - - if ( tests ) { - var ol = document.createElement("ol"); - - for ( var i = 0; i < this.assertions.length; i++ ) { - var assertion = this.assertions[i]; - - var li = document.createElement("li"); - li.className = assertion.result ? "pass" : "fail"; - li.innerHTML = assertion.message || (assertion.result ? "okay" : "failed"); - ol.appendChild( li ); - - if ( assertion.result ) { - good++; - } else { - bad++; - config.stats.bad++; - config.moduleStats.bad++; - } - } - - // store result when possible - if ( QUnit.config.reorder && defined.sessionStorage ) { - if (bad) { - sessionStorage.setItem("qunit-" + this.module + "-" + this.testName, bad); - } else { - sessionStorage.removeItem("qunit-" + this.module + "-" + this.testName); - } - } - - if (bad == 0) { - ol.style.display = "none"; - } - - var b = document.createElement("strong"); - b.innerHTML = this.name + " (" + bad + ", " + good + ", " + this.assertions.length + ")"; - - var a = document.createElement("a"); - a.innerHTML = "Rerun"; - a.href = QUnit.url({ filter: getText([b]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") }); - - addEvent(b, "click", function() { - var next = b.nextSibling.nextSibling, - display = next.style.display; - next.style.display = display === "none" ? "block" : "none"; - }); - - addEvent(b, "dblclick", function(e) { - var target = e && e.target ? e.target : window.event.srcElement; - if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) { - target = target.parentNode; - } - if ( window.location && target.nodeName.toLowerCase() === "strong" ) { - window.location = QUnit.url({ filter: getText([target]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") }); - } - }); - - var li = id(this.id); - li.className = bad ? "fail" : "pass"; - li.removeChild( li.firstChild ); - li.appendChild( b ); - li.appendChild( a ); - li.appendChild( ol ); - - } else { - for ( var i = 0; i < this.assertions.length; i++ ) { - if ( !this.assertions[i].result ) { - bad++; - config.stats.bad++; - config.moduleStats.bad++; - } - } - } - - try { - QUnit.reset(); - } catch(e) { - fail("reset() failed, following Test " + this.testName + ", exception and reset fn follows", e, QUnit.reset); - } - - QUnit.testDone( { - name: this.testName, - failed: bad, - passed: this.assertions.length - bad, - total: this.assertions.length - } ); - }, - - queue: function() { - var test = this; - synchronize(function() { - test.init(); - }); - function run() { - // each of these can by async - synchronize(function() { - test.setup(); - }); - synchronize(function() { - test.run(); - }); - synchronize(function() { - test.teardown(); - }); - synchronize(function() { - test.finish(); - }); - } - // defer when previous test run passed, if storage is available - var bad = QUnit.config.reorder && defined.sessionStorage && +sessionStorage.getItem("qunit-" + this.module + "-" + this.testName); - if (bad) { - run(); - } else { - synchronize(run); - }; - } - -}; - -var QUnit = { - - // call on start of module test to prepend name to all tests - module: function(name, testEnvironment) { - config.currentModule = name; - config.currentModuleTestEnviroment = testEnvironment; - }, - - asyncTest: function(testName, expected, callback) { - if ( arguments.length === 2 ) { - callback = expected; - expected = 0; - } - - QUnit.test(testName, expected, callback, true); - }, - - test: function(testName, expected, callback, async) { - var name = '' + testName + '', testEnvironmentArg; - - if ( arguments.length === 2 ) { - callback = expected; - expected = null; - } - // is 2nd argument a testEnvironment? - if ( expected && typeof expected === 'object') { - testEnvironmentArg = expected; - expected = null; - } - - if ( config.currentModule ) { - name = '' + config.currentModule + ": " + name; - } - - if ( !validTest(config.currentModule + ": " + testName) ) { - return; - } - - var test = new Test(name, testName, expected, testEnvironmentArg, async, callback); - test.module = config.currentModule; - test.moduleTestEnvironment = config.currentModuleTestEnviroment; - test.queue(); - }, - - /** - * Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through. - */ - expect: function(asserts) { - config.current.expected = asserts; - }, - - /** - * Asserts true. - * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" ); - */ - ok: function(a, msg) { - a = !!a; - var details = { - result: a, - message: msg - }; - msg = escapeHtml(msg); - QUnit.log(details); - config.current.assertions.push({ - result: a, - message: msg - }); - }, - - /** - * Checks that the first two arguments are equal, with an optional message. - * Prints out both actual and expected values. - * - * Prefered to ok( actual == expected, message ) - * - * @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." ); - * - * @param Object actual - * @param Object expected - * @param String message (optional) - */ - equal: function(actual, expected, message) { - QUnit.push(expected == actual, actual, expected, message); - }, - - notEqual: function(actual, expected, message) { - QUnit.push(expected != actual, actual, expected, message); - }, - - deepEqual: function(actual, expected, message) { - QUnit.push(QUnit.equiv(actual, expected), actual, expected, message); - }, - - notDeepEqual: function(actual, expected, message) { - QUnit.push(!QUnit.equiv(actual, expected), actual, expected, message); - }, - - strictEqual: function(actual, expected, message) { - QUnit.push(expected === actual, actual, expected, message); - }, - - notStrictEqual: function(actual, expected, message) { - QUnit.push(expected !== actual, actual, expected, message); - }, - - raises: function(block, expected, message) { - var actual, ok = false; - - if (typeof expected === 'string') { - message = expected; - expected = null; - } - - try { - block(); - } catch (e) { - actual = e; - } - - if (actual) { - // we don't want to validate thrown error - if (!expected) { - ok = true; - // expected is a regexp - } else if (QUnit.objectType(expected) === "regexp") { - ok = expected.test(actual); - // expected is a constructor - } else if (actual instanceof expected) { - ok = true; - // expected is a validation function which returns true is validation passed - } else if (expected.call({}, actual) === true) { - ok = true; - } - } - - QUnit.ok(ok, message); - }, - - start: function() { - config.semaphore--; - if (config.semaphore > 0) { - // don't start until equal number of stop-calls - return; - } - if (config.semaphore < 0) { - // ignore if start is called more often then stop - config.semaphore = 0; - } - // A slight delay, to avoid any current callbacks - if ( defined.setTimeout ) { - window.setTimeout(function() { - if (config.semaphore > 0) { - return; - } - if ( config.timeout ) { - clearTimeout(config.timeout); - } - - config.blocking = false; - process(); - }, 13); - } else { - config.blocking = false; - process(); - } - }, - - stop: function(timeout) { - config.semaphore++; - config.blocking = true; - - if ( timeout && defined.setTimeout ) { - clearTimeout(config.timeout); - config.timeout = window.setTimeout(function() { - QUnit.ok( false, "Test timed out" ); - QUnit.start(); - }, timeout); - } - } -}; - -// Backwards compatibility, deprecated -QUnit.equals = QUnit.equal; -QUnit.same = QUnit.deepEqual; - -// Maintain internal state -var config = { - // The queue of tests to run - queue: [], - - // block until document ready - blocking: true, - - // when enabled, show only failing tests - // gets persisted through sessionStorage and can be changed in UI via checkbox - hidepassed: false, - - // by default, run previously failed tests first - // very useful in combination with "Hide passed tests" checked - reorder: true, - - // by default, modify document.title when suite is done - altertitle: true, - - urlConfig: ['noglobals', 'notrycatch'] -}; - -// Load paramaters -(function() { - var location = window.location || { search: "", protocol: "file:" }, - params = location.search.slice( 1 ).split( "&" ), - length = params.length, - urlParams = {}, - current; - - if ( params[ 0 ] ) { - for ( var i = 0; i < length; i++ ) { - current = params[ i ].split( "=" ); - current[ 0 ] = decodeURIComponent( current[ 0 ] ); - // allow just a key to turn on a flag, e.g., test.html?noglobals - current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true; - urlParams[ current[ 0 ] ] = current[ 1 ]; - } - } - - QUnit.urlParams = urlParams; - config.filter = urlParams.filter; - - // Figure out if we're running the tests from a server or not - QUnit.isLocal = !!(location.protocol === 'file:'); -})(); - -// Expose the API as global variables, unless an 'exports' -// object exists, in that case we assume we're in CommonJS -if ( typeof exports === "undefined" || typeof require === "undefined" ) { - extend(window, QUnit); - window.QUnit = QUnit; -} else { - extend(exports, QUnit); - exports.QUnit = QUnit; -} - -// define these after exposing globals to keep them in these QUnit namespace only -extend(QUnit, { - config: config, - - // Initialize the configuration options - init: function() { - extend(config, { - stats: { all: 0, bad: 0 }, - moduleStats: { all: 0, bad: 0 }, - started: +new Date, - updateRate: 1000, - blocking: false, - autostart: true, - autorun: false, - filter: "", - queue: [], - semaphore: 0 - }); - - var tests = id( "qunit-tests" ), - banner = id( "qunit-banner" ), - result = id( "qunit-testresult" ); - - if ( tests ) { - tests.innerHTML = ""; - } - - if ( banner ) { - banner.className = ""; - } - - if ( result ) { - result.parentNode.removeChild( result ); - } - - if ( tests ) { - result = document.createElement( "p" ); - result.id = "qunit-testresult"; - result.className = "result"; - tests.parentNode.insertBefore( result, tests ); - result.innerHTML = 'Running...
       '; - } - }, - - /** - * Resets the test setup. Useful for tests that modify the DOM. - * - * If jQuery is available, uses jQuery's html(), otherwise just innerHTML. - */ - reset: function() { - if ( window.jQuery ) { - jQuery( "#qunit-fixture" ).html( config.fixture ); - } else { - var main = id( 'qunit-fixture' ); - if ( main ) { - main.innerHTML = config.fixture; - } - } - }, - - /** - * Trigger an event on an element. - * - * @example triggerEvent( document.body, "click" ); - * - * @param DOMElement elem - * @param String type - */ - triggerEvent: function( elem, type, event ) { - if ( document.createEvent ) { - event = document.createEvent("MouseEvents"); - event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView, - 0, 0, 0, 0, 0, false, false, false, false, 0, null); - elem.dispatchEvent( event ); - - } else if ( elem.fireEvent ) { - elem.fireEvent("on"+type); - } - }, - - // Safe object type checking - is: function( type, obj ) { - return QUnit.objectType( obj ) == type; - }, - - objectType: function( obj ) { - if (typeof obj === "undefined") { - return "undefined"; - - // consider: typeof null === object - } - if (obj === null) { - return "null"; - } - - var type = Object.prototype.toString.call( obj ) - .match(/^\[object\s(.*)\]$/)[1] || ''; - - switch (type) { - case 'Number': - if (isNaN(obj)) { - return "nan"; - } else { - return "number"; - } - case 'String': - case 'Boolean': - case 'Array': - case 'Date': - case 'RegExp': - case 'Function': - return type.toLowerCase(); - } - if (typeof obj === "object") { - return "object"; - } - return undefined; - }, - - push: function(result, actual, expected, message) { - var details = { - result: result, - message: message, - actual: actual, - expected: expected - }; - - message = escapeHtml(message) || (result ? "okay" : "failed"); - message = '' + message + ""; - expected = escapeHtml(QUnit.jsDump.parse(expected)); - actual = escapeHtml(QUnit.jsDump.parse(actual)); - var output = message + ''; - if (actual != expected) { - output += ''; - output += ''; - } - if (!result) { - var source = sourceFromStacktrace(); - if (source) { - details.source = source; - output += ''; - } - } - output += "
      Expected:
      ' + expected + '
      Result:
      ' + actual + '
      Diff:
      ' + QUnit.diff(expected, actual) +'
      Source:
      ' + escapeHtml(source) + '
      "; - - QUnit.log(details); - - config.current.assertions.push({ - result: !!result, - message: output - }); - }, - - url: function( params ) { - params = extend( extend( {}, QUnit.urlParams ), params ); - var querystring = "?", - key; - for ( key in params ) { - querystring += encodeURIComponent( key ) + "=" + - encodeURIComponent( params[ key ] ) + "&"; - } - return window.location.pathname + querystring.slice( 0, -1 ); - }, - - extend: extend, - id: id, - addEvent: addEvent, - - // Logging callbacks; all receive a single argument with the listed properties - // run test/logs.html for any related changes - begin: function() {}, - // done: { failed, passed, total, runtime } - done: function() {}, - // log: { result, actual, expected, message } - log: function() {}, - // testStart: { name } - testStart: function() {}, - // testDone: { name, failed, passed, total } - testDone: function() {}, - // moduleStart: { name } - moduleStart: function() {}, - // moduleDone: { name, failed, passed, total } - moduleDone: function() {} -}); - -if ( typeof document === "undefined" || document.readyState === "complete" ) { - config.autorun = true; -} - -QUnit.load = function() { - QUnit.begin({}); - - // Initialize the config, saving the execution queue - var oldconfig = extend({}, config); - QUnit.init(); - extend(config, oldconfig); - - config.blocking = false; - - var urlConfigHtml = '', len = config.urlConfig.length; - for ( var i = 0, val; i < len, val = config.urlConfig[i]; i++ ) { - config[val] = QUnit.urlParams[val]; - urlConfigHtml += ''; - } - - var userAgent = id("qunit-userAgent"); - if ( userAgent ) { - userAgent.innerHTML = navigator.userAgent; - } - var banner = id("qunit-header"); - if ( banner ) { - banner.innerHTML = ' ' + banner.innerHTML + ' ' + urlConfigHtml; - addEvent( banner, "change", function( event ) { - var params = {}; - params[ event.target.name ] = event.target.checked ? true : undefined; - window.location = QUnit.url( params ); - }); - } - - var toolbar = id("qunit-testrunner-toolbar"); - if ( toolbar ) { - var filter = document.createElement("input"); - filter.type = "checkbox"; - filter.id = "qunit-filter-pass"; - addEvent( filter, "click", function() { - var ol = document.getElementById("qunit-tests"); - if ( filter.checked ) { - ol.className = ol.className + " hidepass"; - } else { - var tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " "; - ol.className = tmp.replace(/ hidepass /, " "); - } - if ( defined.sessionStorage ) { - if (filter.checked) { - sessionStorage.setItem("qunit-filter-passed-tests", "true"); - } else { - sessionStorage.removeItem("qunit-filter-passed-tests"); - } - } - }); - if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem("qunit-filter-passed-tests") ) { - filter.checked = true; - var ol = document.getElementById("qunit-tests"); - ol.className = ol.className + " hidepass"; - } - toolbar.appendChild( filter ); - - var label = document.createElement("label"); - label.setAttribute("for", "qunit-filter-pass"); - label.innerHTML = "Hide passed tests"; - toolbar.appendChild( label ); - } - - var main = id('qunit-fixture'); - if ( main ) { - config.fixture = main.innerHTML; - } - - if (config.autostart) { - QUnit.start(); - } -}; - -addEvent(window, "load", QUnit.load); - -function done() { - config.autorun = true; - - // Log the last module results - if ( config.currentModule ) { - QUnit.moduleDone( { - name: config.currentModule, - failed: config.moduleStats.bad, - passed: config.moduleStats.all - config.moduleStats.bad, - total: config.moduleStats.all - } ); - } - - var banner = id("qunit-banner"), - tests = id("qunit-tests"), - runtime = +new Date - config.started, - passed = config.stats.all - config.stats.bad, - html = [ - 'Tests completed in ', - runtime, - ' milliseconds.
      ', - '', - passed, - ' tests of ', - config.stats.all, - ' passed, ', - config.stats.bad, - ' failed.' - ].join(''); - - if ( banner ) { - banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass"); - } - - if ( tests ) { - id( "qunit-testresult" ).innerHTML = html; - } - - if ( config.altertitle && typeof document !== "undefined" && document.title ) { - // show ✖ for good, ✔ for bad suite result in title - // use escape sequences in case file gets loaded with non-utf-8-charset - document.title = [ - (config.stats.bad ? "\u2716" : "\u2714"), - document.title.replace(/^[\u2714\u2716] /i, "") - ].join(" "); - } - - QUnit.done( { - failed: config.stats.bad, - passed: passed, - total: config.stats.all, - runtime: runtime - } ); -} - -function validTest( name ) { - var filter = config.filter, - run = false; - - if ( !filter ) { - return true; - } - - var not = filter.charAt( 0 ) === "!"; - if ( not ) { - filter = filter.slice( 1 ); - } - - if ( name.indexOf( filter ) !== -1 ) { - return !not; - } - - if ( not ) { - run = true; - } - - return run; -} - -// so far supports only Firefox, Chrome and Opera (buggy) -// could be extended in the future to use something like https://github.com/csnover/TraceKit -function sourceFromStacktrace() { - try { - throw new Error(); - } catch ( e ) { - if (e.stacktrace) { - // Opera - return e.stacktrace.split("\n")[6]; - } else if (e.stack) { - // Firefox, Chrome - return e.stack.split("\n")[4]; - } else if (e.sourceURL) { - // Safari, PhantomJS - // TODO sourceURL points at the 'throw new Error' line above, useless - //return e.sourceURL + ":" + e.line; - } - } -} - -function escapeHtml(s) { - if (!s) { - return ""; - } - s = s + ""; - return s.replace(/[\&"<>\\]/g, function(s) { - switch(s) { - case "&": return "&"; - case "\\": return "\\\\"; - case '"': return '\"'; - case "<": return "<"; - case ">": return ">"; - default: return s; - } - }); -} - -function synchronize( callback ) { - config.queue.push( callback ); - - if ( config.autorun && !config.blocking ) { - process(); - } -} - -function process() { - var start = (new Date()).getTime(); - - while ( config.queue.length && !config.blocking ) { - if ( config.updateRate <= 0 || (((new Date()).getTime() - start) < config.updateRate) ) { - config.queue.shift()(); - } else { - window.setTimeout( process, 13 ); - break; - } - } - if (!config.blocking && !config.queue.length) { - done(); - } -} - -function saveGlobal() { - config.pollution = []; - - if ( config.noglobals ) { - for ( var key in window ) { - config.pollution.push( key ); - } - } -} - -function checkPollution( name ) { - var old = config.pollution; - saveGlobal(); - - var newGlobals = diff( config.pollution, old ); - if ( newGlobals.length > 0 ) { - ok( false, "Introduced global variable(s): " + newGlobals.join(", ") ); - } - - var deletedGlobals = diff( old, config.pollution ); - if ( deletedGlobals.length > 0 ) { - ok( false, "Deleted global variable(s): " + deletedGlobals.join(", ") ); - } -} - -// returns a new Array with the elements that are in a but not in b -function diff( a, b ) { - var result = a.slice(); - for ( var i = 0; i < result.length; i++ ) { - for ( var j = 0; j < b.length; j++ ) { - if ( result[i] === b[j] ) { - result.splice(i, 1); - i--; - break; - } - } - } - return result; -} - -function fail(message, exception, callback) { - if ( typeof console !== "undefined" && console.error && console.warn ) { - console.error(message); - console.error(exception); - console.warn(callback.toString()); - - } else if ( window.opera && opera.postError ) { - opera.postError(message, exception, callback.toString); - } -} - -function extend(a, b) { - for ( var prop in b ) { - if ( b[prop] === undefined ) { - delete a[prop]; - } else { - a[prop] = b[prop]; - } - } - - return a; -} - -function addEvent(elem, type, fn) { - if ( elem.addEventListener ) { - elem.addEventListener( type, fn, false ); - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, fn ); - } else { - fn(); - } -} - -function id(name) { - return !!(typeof document !== "undefined" && document && document.getElementById) && - document.getElementById( name ); -} - -// Test for equality any JavaScript type. -// Discussions and reference: http://philrathe.com/articles/equiv -// Test suites: http://philrathe.com/tests/equiv -// Author: Philippe Rathé -QUnit.equiv = function () { - - var innerEquiv; // the real equiv function - var callers = []; // stack to decide between skip/abort functions - var parents = []; // stack to avoiding loops from circular referencing - - // Call the o related callback with the given arguments. - function bindCallbacks(o, callbacks, args) { - var prop = QUnit.objectType(o); - if (prop) { - if (QUnit.objectType(callbacks[prop]) === "function") { - return callbacks[prop].apply(callbacks, args); - } else { - return callbacks[prop]; // or undefined - } - } - } - - var callbacks = function () { - - // for string, boolean, number and null - function useStrictEquality(b, a) { - if (b instanceof a.constructor || a instanceof b.constructor) { - // to catch short annotaion VS 'new' annotation of a - // declaration - // e.g. var i = 1; - // var j = new Number(1); - return a == b; - } else { - return a === b; - } - } - - return { - "string" : useStrictEquality, - "boolean" : useStrictEquality, - "number" : useStrictEquality, - "null" : useStrictEquality, - "undefined" : useStrictEquality, - - "nan" : function(b) { - return isNaN(b); - }, - - "date" : function(b, a) { - return QUnit.objectType(b) === "date" - && a.valueOf() === b.valueOf(); - }, - - "regexp" : function(b, a) { - return QUnit.objectType(b) === "regexp" - && a.source === b.source && // the regex itself - a.global === b.global && // and its modifers - // (gmi) ... - a.ignoreCase === b.ignoreCase - && a.multiline === b.multiline; - }, - - // - skip when the property is a method of an instance (OOP) - // - abort otherwise, - // initial === would have catch identical references anyway - "function" : function() { - var caller = callers[callers.length - 1]; - return caller !== Object && typeof caller !== "undefined"; - }, - - "array" : function(b, a) { - var i, j, loop; - var len; - - // b could be an object literal here - if (!(QUnit.objectType(b) === "array")) { - return false; - } - - len = a.length; - if (len !== b.length) { // safe and faster - return false; - } - - // track reference to avoid circular references - parents.push(a); - for (i = 0; i < len; i++) { - loop = false; - for (j = 0; j < parents.length; j++) { - if (parents[j] === a[i]) { - loop = true;// dont rewalk array - } - } - if (!loop && !innerEquiv(a[i], b[i])) { - parents.pop(); - return false; - } - } - parents.pop(); - return true; - }, - - "object" : function(b, a) { - var i, j, loop; - var eq = true; // unless we can proove it - var aProperties = [], bProperties = []; // collection of - // strings - - // comparing constructors is more strict than using - // instanceof - if (a.constructor !== b.constructor) { - return false; - } - - // stack constructor before traversing properties - callers.push(a.constructor); - // track reference to avoid circular references - parents.push(a); - - for (i in a) { // be strict: don't ensures hasOwnProperty - // and go deep - loop = false; - for (j = 0; j < parents.length; j++) { - if (parents[j] === a[i]) - loop = true; // don't go down the same path - // twice - } - aProperties.push(i); // collect a's properties - - if (!loop && !innerEquiv(a[i], b[i])) { - eq = false; - break; - } - } - - callers.pop(); // unstack, we are done - parents.pop(); - - for (i in b) { - bProperties.push(i); // collect b's properties - } - - // Ensures identical properties name - return eq - && innerEquiv(aProperties.sort(), bProperties - .sort()); - } - }; - }(); - - innerEquiv = function() { // can take multiple arguments - var args = Array.prototype.slice.apply(arguments); - if (args.length < 2) { - return true; // end transition - } - - return (function(a, b) { - if (a === b) { - return true; // catch the most you can - } else if (a === null || b === null || typeof a === "undefined" - || typeof b === "undefined" - || QUnit.objectType(a) !== QUnit.objectType(b)) { - return false; // don't lose time with error prone cases - } else { - return bindCallbacks(a, callbacks, [ b, a ]); - } - - // apply transition with (1..n) arguments - })(args[0], args[1]) - && arguments.callee.apply(this, args.splice(1, - args.length - 1)); - }; - - return innerEquiv; - -}(); - -/** - * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | - * http://flesler.blogspot.com Licensed under BSD - * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008 - * - * @projectDescription Advanced and extensible data dumping for Javascript. - * @version 1.0.0 - * @author Ariel Flesler - * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html} - */ -QUnit.jsDump = (function() { - function quote( str ) { - return '"' + str.toString().replace(/"/g, '\\"') + '"'; - }; - function literal( o ) { - return o + ''; - }; - function join( pre, arr, post ) { - var s = jsDump.separator(), - base = jsDump.indent(), - inner = jsDump.indent(1); - if ( arr.join ) - arr = arr.join( ',' + s + inner ); - if ( !arr ) - return pre + post; - return [ pre, inner + arr, base + post ].join(s); - }; - function array( arr, stack ) { - var i = arr.length, ret = Array(i); - this.up(); - while ( i-- ) - ret[i] = this.parse( arr[i] , undefined , stack); - this.down(); - return join( '[', ret, ']' ); - }; - - var reName = /^function (\w+)/; - - var jsDump = { - parse:function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance - stack = stack || [ ]; - var parser = this.parsers[ type || this.typeOf(obj) ]; - type = typeof parser; - var inStack = inArray(obj, stack); - if (inStack != -1) { - return 'recursion('+(inStack - stack.length)+')'; - } - //else - if (type == 'function') { - stack.push(obj); - var res = parser.call( this, obj, stack ); - stack.pop(); - return res; - } - // else - return (type == 'string') ? parser : this.parsers.error; - }, - typeOf:function( obj ) { - var type; - if ( obj === null ) { - type = "null"; - } else if (typeof obj === "undefined") { - type = "undefined"; - } else if (QUnit.is("RegExp", obj)) { - type = "regexp"; - } else if (QUnit.is("Date", obj)) { - type = "date"; - } else if (QUnit.is("Function", obj)) { - type = "function"; - } else if (typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined") { - type = "window"; - } else if (obj.nodeType === 9) { - type = "document"; - } else if (obj.nodeType) { - type = "node"; - } else if (typeof obj === "object" && typeof obj.length === "number" && obj.length >= 0) { - type = "array"; - } else { - type = typeof obj; - } - return type; - }, - separator:function() { - return this.multiline ? this.HTML ? '
      ' : '\n' : this.HTML ? ' ' : ' '; - }, - indent:function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing - if ( !this.multiline ) - return ''; - var chr = this.indentChar; - if ( this.HTML ) - chr = chr.replace(/\t/g,' ').replace(/ /g,' '); - return Array( this._depth_ + (extra||0) ).join(chr); - }, - up:function( a ) { - this._depth_ += a || 1; - }, - down:function( a ) { - this._depth_ -= a || 1; - }, - setParser:function( name, parser ) { - this.parsers[name] = parser; - }, - // The next 3 are exposed so you can use them - quote:quote, - literal:literal, - join:join, - // - _depth_: 1, - // This is the list of parsers, to modify them, use jsDump.setParser - parsers:{ - window: '[Window]', - document: '[Document]', - error:'[ERROR]', //when no parser is found, shouldn't happen - unknown: '[Unknown]', - 'null':'null', - 'undefined':'undefined', - 'function':function( fn ) { - var ret = 'function', - name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE - if ( name ) - ret += ' ' + name; - ret += '('; - - ret = [ ret, QUnit.jsDump.parse( fn, 'functionArgs' ), '){'].join(''); - return join( ret, QUnit.jsDump.parse(fn,'functionCode'), '}' ); - }, - array: array, - nodelist: array, - arguments: array, - object:function( map, stack ) { - var ret = [ ]; - QUnit.jsDump.up(); - for ( var key in map ) { - var val = map[key]; - ret.push( QUnit.jsDump.parse(key,'key') + ': ' + QUnit.jsDump.parse(val, undefined, stack)); - } - QUnit.jsDump.down(); - return join( '{', ret, '}' ); - }, - node:function( node ) { - var open = QUnit.jsDump.HTML ? '<' : '<', - close = QUnit.jsDump.HTML ? '>' : '>'; - - var tag = node.nodeName.toLowerCase(), - ret = open + tag; - - for ( var a in QUnit.jsDump.DOMAttrs ) { - var val = node[QUnit.jsDump.DOMAttrs[a]]; - if ( val ) - ret += ' ' + a + '=' + QUnit.jsDump.parse( val, 'attribute' ); - } - return ret + close + open + '/' + tag + close; - }, - functionArgs:function( fn ) {//function calls it internally, it's the arguments part of the function - var l = fn.length; - if ( !l ) return ''; - - var args = Array(l); - while ( l-- ) - args[l] = String.fromCharCode(97+l);//97 is 'a' - return ' ' + args.join(', ') + ' '; - }, - key:quote, //object calls it internally, the key part of an item in a map - functionCode:'[code]', //function calls it internally, it's the content of the function - attribute:quote, //node calls it internally, it's an html attribute value - string:quote, - date:quote, - regexp:literal, //regex - number:literal, - 'boolean':literal - }, - DOMAttrs:{//attributes to dump from nodes, name=>realName - id:'id', - name:'name', - 'class':'className' - }, - HTML:false,//if true, entities are escaped ( <, >, \t, space and \n ) - indentChar:' ',//indentation unit - multiline:true //if true, items in a collection, are separated by a \n, else just a space. - }; - - return jsDump; -})(); - -// from Sizzle.js -function getText( elems ) { - var ret = "", elem; - - for ( var i = 0; elems[i]; i++ ) { - elem = elems[i]; - - // Get the text from text nodes and CDATA nodes - if ( elem.nodeType === 3 || elem.nodeType === 4 ) { - ret += elem.nodeValue; - - // Traverse everything else, except comment nodes - } else if ( elem.nodeType !== 8 ) { - ret += getText( elem.childNodes ); - } - } - - return ret; -}; - -//from jquery.js -function inArray( elem, array ) { - if ( array.indexOf ) { - return array.indexOf( elem ); - } - - for ( var i = 0, length = array.length; i < length; i++ ) { - if ( array[ i ] === elem ) { - return i; - } - } - - return -1; -} - -/* - * Javascript Diff Algorithm - * By John Resig (http://ejohn.org/) - * Modified by Chu Alan "sprite" - * - * Released under the MIT license. - * - * More Info: - * http://ejohn.org/projects/javascript-diff-algorithm/ - * - * Usage: QUnit.diff(expected, actual) - * - * QUnit.diff("the quick brown fox jumped over", "the quick fox jumps over") == "the quick brown fox jumped jumps over" - */ -QUnit.diff = (function() { - function diff(o, n) { - var ns = {}; - var os = {}; - - for (var i = 0; i < n.length; i++) { - if (ns[n[i]] == null) - ns[n[i]] = { - rows: [], - o: null - }; - ns[n[i]].rows.push(i); - } - - for (var i = 0; i < o.length; i++) { - if (os[o[i]] == null) - os[o[i]] = { - rows: [], - n: null - }; - os[o[i]].rows.push(i); - } - - for (var i in ns) { - if (ns[i].rows.length == 1 && typeof(os[i]) != "undefined" && os[i].rows.length == 1) { - n[ns[i].rows[0]] = { - text: n[ns[i].rows[0]], - row: os[i].rows[0] - }; - o[os[i].rows[0]] = { - text: o[os[i].rows[0]], - row: ns[i].rows[0] - }; - } - } - - for (var i = 0; i < n.length - 1; i++) { - if (n[i].text != null && n[i + 1].text == null && n[i].row + 1 < o.length && o[n[i].row + 1].text == null && - n[i + 1] == o[n[i].row + 1]) { - n[i + 1] = { - text: n[i + 1], - row: n[i].row + 1 - }; - o[n[i].row + 1] = { - text: o[n[i].row + 1], - row: i + 1 - }; - } - } - - for (var i = n.length - 1; i > 0; i--) { - if (n[i].text != null && n[i - 1].text == null && n[i].row > 0 && o[n[i].row - 1].text == null && - n[i - 1] == o[n[i].row - 1]) { - n[i - 1] = { - text: n[i - 1], - row: n[i].row - 1 - }; - o[n[i].row - 1] = { - text: o[n[i].row - 1], - row: i - 1 - }; - } - } - - return { - o: o, - n: n - }; - } - - return function(o, n) { - o = o.replace(/\s+$/, ''); - n = n.replace(/\s+$/, ''); - var out = diff(o == "" ? [] : o.split(/\s+/), n == "" ? [] : n.split(/\s+/)); - - var str = ""; - - var oSpace = o.match(/\s+/g); - if (oSpace == null) { - oSpace = [" "]; - } - else { - oSpace.push(" "); - } - var nSpace = n.match(/\s+/g); - if (nSpace == null) { - nSpace = [" "]; - } - else { - nSpace.push(" "); - } - - if (out.n.length == 0) { - for (var i = 0; i < out.o.length; i++) { - str += '' + out.o[i] + oSpace[i] + ""; - } - } - else { - if (out.n[0].text == null) { - for (n = 0; n < out.o.length && out.o[n].text == null; n++) { - str += '' + out.o[n] + oSpace[n] + ""; - } - } - - for (var i = 0; i < out.n.length; i++) { - if (out.n[i].text == null) { - str += '' + out.n[i] + nSpace[i] + ""; - } - else { - var pre = ""; - - for (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) { - pre += '' + out.o[n] + oSpace[n] + ""; - } - str += " " + out.n[i].text + nSpace[i] + pre; - } - } - } - - return str; - }; -})(); - -})(this); diff --git a/tests/common/js/xml_js_filter.test.js b/tests/common/js/xml_js_filter.test.js deleted file mode 100644 index 3b38671ab..000000000 --- a/tests/common/js/xml_js_filter.test.js +++ /dev/null @@ -1,52 +0,0 @@ -jQuery(function($){ - module('Validator'); - - var - v = xe.getApp('validator')[0], - $form = $('#validator-test'), - form = $form[0], elems = form.elements; - - var Mute = xe.createPlugin('Mute', { - API_BEFORE_ALERT : function(){ return false } - }); - v.registerPlugin(new Mute()); - - test('Basics', function(){ - ok(v.run(form), 'Default return value is true'); - }); - - test('attr : required?', function(){ - form.reset(); - form.ruleset.value = 'ruleset'; - - v.cast('ADD_FILTER', ['ruleset', {'user_1':{required:true}}]); - ok(!v.run(form), 'The required field should have some value. - test1'); - - elems.user_1.value = 'myname'; - ok(v.run(form), 'The required field should have some value. - test2'); - }); - - test('attr : name pattern', function(){ - form.reset(); - form.ruleset.value = 'ruleset'; - - v.cast( - 'ADD_FILTER', - ['ruleset', - { - '^user_':{required:true} - } - ] - ); - - elems.user_1.value = 'value1'; - ok(!v.run(form), 'This test should be failed. (only one of three fields has value)'); - - elems.user_2.value = 'value2'; - ok(!v.run(form), 'not yet (2 of 3)'); - - elems.user_3.value = 'value3'; - ok(v.run(form), 'ok! you should pass at this time. (3 of 3)'); - }); - -}); diff --git a/tests/logs/junit.xml b/tests/logs/junit.xml deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/modules/admin/admin.Test.php b/tests/modules/admin/admin.Test.php deleted file mode 100644 index 1f36390a4..000000000 --- a/tests/modules/admin/admin.Test.php +++ /dev/null @@ -1,96 +0,0 @@ - */ -error_reporting(0); - -class adminAdminControllerTest extends PHPUnit_Framework_TestCase -{ - private $oAdminAdminController; - - protected function setUp() - { - define('__ZBXE__', TRUE); - define('__XE__', TRUE); - require_once '../../../config/config.inc.php'; - require_once _XE_PATH_.'classes/file/FileHandler.class.php'; - require_once _XE_PATH_.'classes/context/Context.class.php'; - require_once _XE_PATH_.'modules/admin/admin.class.php'; - require_once _XE_PATH_.'modules/admin/admin.admin.controller.php'; - - $logged_info = new stdclass; - $logged_info->member_srl = 4; - $logged_info->user_id = 'admin'; - $logged_info->email_address = 'admin@admin.com'; - $logged_info->password = 'c4ca4238a0b923820dcc509a6f75849b'; - $logged_info->email_id = 'admin'; - $logged_info->email_host = 'admin.com'; - $logged_info->user_name = 'admin'; - $logged_info->nick_name = 'admin'; - $logged_info->find_account_question = 1; - $logged_info->find_account_answer = 'admin@naver.com'; - $logged_info->allow_mailing = 'Y'; - $logged_info->allow_message = 'Y'; - $logged_info->denied = 'N'; - $logged_info->regdate = '20110520142031'; - $logged_info->last_login = '20120905135102'; - $logged_info->change_password_date = '20110520142031'; - $logged_info->is_admin = 'Y'; - $logged_info->list_order = -1; - - $oContext = &Context::getInstance(); - //$oContext->init(); - $oContext->set('is_logged', true); - $oContext->set('logged_info', $logged_info); - $oContext->set('is_admin', 'Y'); - - $this->oAdminAdminController = getAdminController('admin'); - } - - public function testInsertLayout() - { - $args->layout_srl = 62; - $args->module = 'board'; - $args->module_skin = 'xe_board'; - $args->site_srl = 0; - - $args->skin_vars->colorset = 'white'; - $args->skin_vars->colorset = 'red'; - $args->skin_vars->default_style = 'gallery'; - $args->skin_vars->display_login_info = 'N'; - $args->skin_vars->display_setup_button = 'N'; - $args->skin_vars->header_title_format = 'h1'; - $args->skin_vars->document_title_format = 'h1'; - $args->skin_vars->display_number = 'Y'; - $args->skin_vars->display_author = 'Y'; - $args->skin_vars->display_regdate = 'Y'; - $args->skin_vars->display_readed_count = 'Y'; - $args->skin_vars->display_voted_count = 'Y'; - $args->skin_vars->display_blamed_count = 'Y'; - $args->skin_vars->display_ip_address = 'Y'; - $args->skin_vars->display_last_update = 'Y'; - $args->skin_vars->display_sign = 'Y'; - $args->skin_vars->duration_new = '24'; - $args->skin_vars->thumbnail_type = 'crop'; - $args->skin_vars->thumbnail_width = '100'; - $args->skin_vars->thumbnail_height = '100'; - - $oContext = &Context::getInstance(); - //$oContext->init(); - $oContext->set('layout_srl', $args->layout_srl); - $oContext->set('module', $args->module); - $oContext->set('module_skin', $args->module_skin); - $oContext->set('skin_vars', $args->skin_vars); - $oContext->set('site_srl', $args->site_srl); - - $this->oAdminAdminController->updateDefaultDesignInfo($args); - - $file = _XE_PATH_.'files/site_design/design_0.php'; - - $this->assertFileExists($file); - - @include($file); - - $this->assertEquals($designInfo->layout_srl, $args->layout_srl); - $this->assertEquals($designInfo->module->{$args->module}->skin, $args->module_skin); - } -} -?> diff --git a/tests/modules/document/document.Test.php b/tests/modules/document/document.Test.php deleted file mode 100644 index 2c82dea93..000000000 --- a/tests/modules/document/document.Test.php +++ /dev/null @@ -1,124 +0,0 @@ - */ -error_reporting(0); - -class documentModelTest extends PHPUnit_Framework_TestCase -{ - public static $oDB; - private $oDocumentController = null; - private $oDocumentModel = null; - - protected function setUp() - { - define('__ZBXE__', TRUE); - require_once '../../../config/config.inc.php'; - require_once _XE_PATH_.'files/config/db.config.php'; - require_once _XE_PATH_.'classes/context/Context.class.php'; - require_once _XE_PATH_.'classes/db/DB.class.php'; - require_once _XE_PATH_.'classes/db/DBMysql.class.php'; - require_once _XE_PATH_.'modules/document/document.class.php'; - require_once _XE_PATH_.'modules/document/document.controller.php'; - require_once _XE_PATH_.'modules/document/document.model.php'; - - $db_info->master_db['db_database'] = $db_info->master_db['db_database'].'_test'; - if(is_array($db_info->slave_db)) - { - foreach($db_info->slave_db AS $key=>$slave_db) - { - $db_info->slave_db[$key]['db_database'] = $slave_db['db_database'].'_test'; - } - } - - $logged_info = new stdclass; - $logged_info->member_srl = 1; - $logged_info->user_id = 'neosky'; - $logged_info->email_address = 'neosky@naver.com'; - $logged_info->password = '4297f44b13955235245b2497399d7a93'; - $logged_info->email_id = 'neosky'; - $logged_info->email_host = 'naver.com'; - $logged_info->user_name = 'neosky'; - $logged_info->nick_name = 'neosky'; - $logged_info->find_account_question = 1; - $logged_info->find_account_answer = 'ovclas@naver.com'; - $logged_info->allow_mailing = 'Y'; - $logged_info->allow_message = 'Y'; - $logged_info->denied = 'N'; - $logged_info->regdate = '20110520142031'; - $logged_info->last_login = '20120905135102'; - $logged_info->change_password_date = '20110520142031'; - $logged_info->is_admin = 'N'; - $logged_info->list_order = -1; - - $oContext = &Context::getInstance(); - //$oContext->init(); - $oContext->setDBInfo($db_info); - $oContext->set('is_logged', true); - $oContext->set('logged_info', $logged_info); - - self::$oDB = new DBMysql; - - $this->oDocumentController = getController('document'); - $this->oDocumentModel = getModel('document'); - - } - - public function testInsertDocument() - { - $inputObj = new stdclass; - $inputObj->_filter = 'insert'; - $inputObj->error_return_url = '/1.5.0_admin/index.php?mid=freeboard&act=dispBoardWrite'; - $inputObj->act = 'procBoardInsertDocument'; - $inputObj->mid = 'freeboard'; - $inputObj->content = '

      content

      '; - $inputObj->category_srl = 237465; - $inputObj->title = 'title'; - $inputObj->extra_vars2 = 'extra_vars'; - $inputObj->_saved_doc_message = "자동 저장된 글이 있습니다. 복구하시겠습니까?\n글을 다 쓰신 후 저장하면 자동 저장 본은 사라집니다."; - $inputObj->comment_status = 'ALLOW'; - $inputObj->allow_trackback = 'Y'; - $inputObj->status = 'PUBLIC'; - $inputObj->module = 'board'; - $inputObj->module_srl = 57; - $inputObj->is_notice = 'N'; - $inputObj->commentStatus = 'ALLOW'; - - // document insert - $output = $this->oDocumentController->insertDocument($inputObj); - $insertedDocumentSrl = $output->get('document_srl'); - - // get Document - $oDocument = $this->oDocumentModel->getDocument($insertedDocumentSrl); - - $this->assertEquals($inputObj->title, $oDocument->get('title')); - $this->assertEquals($inputObj->content, $oDocument->get('content')); - $this->assertEquals($inputObj->is_notice, $oDocument->get('is_notice')); - $this->assertEquals($inputObj->status, $oDocument->get('status')); - $this->assertEquals($inputObj->comment_status, $oDocument->get('comment_status')); - $this->assertEquals($insertedDocumentSrl, $oDocument->get('document_srl')); - - // update Document - $inputObj->title = 'title2'; - $output = $this->oDocumentController->updateDocument($oDocument, $inputObj); - unset($GLOBALS['XE_DOCUMENT_LIST'][$insertedDocumentSrl]); - $oUpdatedDocument = $this->oDocumentModel->getDocument($insertedDocumentSrl); - - $this->assertEquals($inputObj->title, $oUpdatedDocument->get('title')); - $this->assertNotEquals($oDocument->get('title'), $oUpdatedDocument->get('title')); - - //$output = $oDocumentController->updateVotedCount($insertedDocumentSrl); - //debugPrint($output); - - // delete document - $output = $this->oDocumentController->deleteDocument($insertedDocumentSrl); - $this->assertEquals('success', $output->message); - - unset($oDocument, $GLOBALS['XE_DOCUMENT_LIST'][$insertedDocumentSrl]); - $oDocument = $this->oDocumentModel->getDocument($insertedDocumentSrl); - $this->assertEmpty($oDocument->document_srl); - } - - protected function tearDown() - { - } -} -?> diff --git a/tests/phpunit.xml b/tests/phpunit.xml deleted file mode 100644 index 9265eb265..000000000 --- a/tests/phpunit.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - . - ./classes/context/Context.mock.php - ./classes/db/ - ./classes/frontendfile/FrontEndFileHandlerTest.php - - - - - - - From 6d093aed9141f50d8c7ed35f2b136bf9817d34d8 Mon Sep 17 00:00:00 2001 From: bnu Date: Fri, 10 Apr 2015 14:55:17 +0900 Subject: [PATCH 190/265] =?UTF-8?q?`TemplateHandler::init()`,=20`TemplateH?= =?UTF-8?q?andler::parse()`=20visibility=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/template/TemplateHandler.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/template/TemplateHandler.class.php b/classes/template/TemplateHandler.class.php index e4e242b3b..b2d148759 100644 --- a/classes/template/TemplateHandler.class.php +++ b/classes/template/TemplateHandler.class.php @@ -68,7 +68,7 @@ class TemplateHandler * @param string $tpl_file * @return void */ - private function init($tpl_path, $tpl_filename, $tpl_file = '') + protected function init($tpl_path, $tpl_filename, $tpl_file = '') { // verify arguments if(substr($tpl_path, -1) != '/') @@ -213,7 +213,7 @@ class TemplateHandler * @param string $buff template file * @return string compiled result in case of success or NULL in case of error */ - private function parse($buff = null) + protected function parse($buff = null) { if(is_null($buff)) { From f76b24dea5874445cab9359ddd698686878c50af Mon Sep 17 00:00:00 2001 From: YJSoft Date: Fri, 10 Apr 2015 15:42:48 +0900 Subject: [PATCH 191/265] =?UTF-8?q?=EC=B2=AB=EB=B2=88=EC=A7=B8=20=EC=8A=AC?= =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=8D=94=20=EC=9D=B4=EB=AF=B8=EC=A7=80?= =?UTF-8?q?=EA=B0=80=20=EB=91=90=EB=B2=88=20=EC=B6=9C=EB=A0=A5=EB=90=98?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 강제로 {$layout_info->slide_img1} 를 불러오는 부분이 있어 첫번째 이미지가 무조건 두번 뜨는 현상을 수정하였습니다. --- layouts/xedition/layout.html | 7 ------- 1 file changed, 7 deletions(-) diff --git a/layouts/xedition/layout.html b/layouts/xedition/layout.html index 51d747b5a..792def202 100644 --- a/layouts/xedition/layout.html +++ b/layouts/xedition/layout.html @@ -297,13 +297,6 @@ -
      -
      -
      - 설정되지 않음 -
      -
      -
      From dd667fd578e958ffc08a9a5220179b7c2383bb0d Mon Sep 17 00:00:00 2001 From: bnu Date: Fri, 10 Apr 2015 17:00:57 +0900 Subject: [PATCH 192/265] =?UTF-8?q?codeception=20=EC=B6=94=EA=B0=80=20-=20?= =?UTF-8?q?unit=20test=20=EC=9D=B4=EC=A0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .travis.yml | 3 + codeception.yml | 18 + composer.json | 17 + composer.lock | 1741 +++++++++++++++ tests/_bootstrap.php | 3 + tests/_data/dump.sql | 1 + tests/_support/AcceptanceHelper.php | 10 + tests/_support/FunctionalHelper.php | 10 + tests/_support/UnitHelper.php | 10 + tests/acceptance.suite.yml | 8 + tests/acceptance/AcceptanceTester.php | 1918 +++++++++++++++++ tests/acceptance/_bootstrap.php | 2 + tests/functional.suite.yml | 9 + tests/functional/FunctionalTester.php | 360 ++++ tests/functional/_bootstrap.php | 2 + tests/unit.suite.yml | 6 + tests/unit/FuncIncTest.class.php | 55 + tests/unit/UnitTester.php | 300 +++ tests/unit/_bootstrap.php | 30 + tests/unit/classes/context/ContextTest.php | 90 + tests/unit/classes/file/FileHandlerTest.php | 44 + .../frontendfile/FrontEndFileHandlerTest.php | 158 ++ tests/unit/classes/security/SecurityTest.php | 121 ++ .../classes/template/TemplateHandlerTest.php | 282 +++ tests/unit/classes/template/css/style.css | 1 + tests/unit/classes/template/sample.html | 2 + .../unit/classes/validator/ValidatorTest.php | 208 ++ tests/unit/classes/validator/condition.en.js | 8 + tests/unit/classes/validator/condition.xml | 9 + tests/unit/classes/validator/customrule.xml | 15 + .../unit/classes/validator/insertDocument.xml | 14 + tests/unit/classes/validator/login.xml | 7 + 32 files changed, 5462 insertions(+) create mode 100644 codeception.yml create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 tests/_bootstrap.php create mode 100644 tests/_data/dump.sql create mode 100644 tests/_support/AcceptanceHelper.php create mode 100644 tests/_support/FunctionalHelper.php create mode 100644 tests/_support/UnitHelper.php create mode 100644 tests/acceptance.suite.yml create mode 100644 tests/acceptance/AcceptanceTester.php create mode 100644 tests/acceptance/_bootstrap.php create mode 100644 tests/functional.suite.yml create mode 100644 tests/functional/FunctionalTester.php create mode 100644 tests/functional/_bootstrap.php create mode 100644 tests/unit.suite.yml create mode 100644 tests/unit/FuncIncTest.class.php create mode 100644 tests/unit/UnitTester.php create mode 100644 tests/unit/_bootstrap.php create mode 100644 tests/unit/classes/context/ContextTest.php create mode 100644 tests/unit/classes/file/FileHandlerTest.php create mode 100644 tests/unit/classes/frontendfile/FrontEndFileHandlerTest.php create mode 100644 tests/unit/classes/security/SecurityTest.php create mode 100644 tests/unit/classes/template/TemplateHandlerTest.php create mode 100644 tests/unit/classes/template/css/style.css create mode 100644 tests/unit/classes/template/sample.html create mode 100644 tests/unit/classes/validator/ValidatorTest.php create mode 100644 tests/unit/classes/validator/condition.en.js create mode 100644 tests/unit/classes/validator/condition.xml create mode 100644 tests/unit/classes/validator/customrule.xml create mode 100644 tests/unit/classes/validator/insertDocument.xml create mode 100644 tests/unit/classes/validator/login.xml diff --git a/.travis.yml b/.travis.yml index c2eef4e9c..2b1d69d34 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,10 @@ php: - 5.6 - hhvm before_script: + - travis_retry composer self-update - npm install -g grunt-cli - npm install + - if [ $(phpenv version-name) != "5.3" ]; then composer install; fi script: - grunt lint + - if [ $(phpenv version-name) != "5.3" ]; then ./vendor/bin/codecept run; fi diff --git a/codeception.yml b/codeception.yml new file mode 100644 index 000000000..9355c638c --- /dev/null +++ b/codeception.yml @@ -0,0 +1,18 @@ +actor: Tester +paths: + tests: tests + log: tests/_output + data: tests/_data + helpers: tests/_support +settings: + bootstrap: _bootstrap.php + colors: true + memory_limit: 1024M +modules: + config: + Db: + dsn: '' + user: '' + password: '' + dump: tests/_data/dump.sql +error_level: "E_STRICTE_ALL & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED & ~E_NOTICE" diff --git a/composer.json b/composer.json new file mode 100644 index 000000000..db7528358 --- /dev/null +++ b/composer.json @@ -0,0 +1,17 @@ +{ + "name": "xpressengine/xe-core", + "license": "GNU LGPL", + "authors": [ + { + "name": "NAVER", + "email": "developers@xpressengine.com" + } + ], + "require": { + }, + "require-dev": { + "codeception/codeception": "~2.0", + "codeception/verify": "0.2.*", + "codeception/specify": "0.4.*" + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 000000000..23c595a15 --- /dev/null +++ b/composer.lock @@ -0,0 +1,1741 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "0b13ef2987c06113ab0a920cdb9e4e83", + "packages": [], + "packages-dev": [ + { + "name": "codeception/codeception", + "version": "2.0.12", + "source": { + "type": "git", + "url": "https://github.com/Codeception/Codeception.git", + "reference": "6e29668921182d6b90cd021033002be85382c6f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/6e29668921182d6b90cd021033002be85382c6f9", + "reference": "6e29668921182d6b90cd021033002be85382c6f9", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "facebook/webdriver": "~0.4|~0.5", + "guzzlehttp/guzzle": "~4.0|~5.0", + "php": ">=5.4.0", + "phpunit/phpunit": "~4.5.0", + "symfony/browser-kit": "~2.4", + "symfony/console": "~2.4", + "symfony/css-selector": "~2.4", + "symfony/dom-crawler": "~2.4,!=2.4.5", + "symfony/event-dispatcher": "~2.4", + "symfony/finder": "~2.4", + "symfony/yaml": "~2.4" + }, + "require-dev": { + "codeception/specify": "~0.3", + "facebook/php-sdk": "~3.2", + "flow/jsonpath": "~0.2", + "monolog/monolog": "~1.8", + "pda/pheanstalk": "~2.0", + "videlalvaro/php-amqplib": "~2.4" + }, + "suggest": { + "codeception/phpbuiltinserver": "Extension to start and stop PHP built-in web server for your tests", + "codeception/specify": "BDD-style code blocks", + "codeception/verify": "BDD-style assertions", + "monolog/monolog": "Log test steps", + "phpseclib/phpseclib": "Extension required to use the SFTP option in the FTP Module." + }, + "bin": [ + "codecept" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "psr-0": { + "Codeception": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Bodnarchuk", + "email": "davert@mail.ua", + "homepage": "http://codegyre.com" + } + ], + "description": "BDD-style testing framework", + "homepage": "http://codeception.com/", + "keywords": [ + "BDD", + "TDD", + "acceptance testing", + "functional testing", + "unit testing" + ], + "time": "2015-04-02 23:50:20" + }, + { + "name": "codeception/specify", + "version": "0.4.1", + "source": { + "type": "git", + "url": "https://github.com/Codeception/Specify.git", + "reference": "0c0ae07adfc231115b3b72ade22f44c23c199ded" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/Specify/zipball/0c0ae07adfc231115b3b72ade22f44c23c199ded", + "reference": "0c0ae07adfc231115b3b72ade22f44c23c199ded", + "shasum": "" + }, + "require": { + "myclabs/deep-copy": "~1.1", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Codeception\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "authors": [ + { + "name": "Michael Bodnarchuk", + "email": "davert.php@mailican.com" + } + ], + "description": "BDD code blocks for PHPUnit and Codeception", + "time": "2014-10-17 00:06:51" + }, + { + "name": "codeception/verify", + "version": "0.2.7", + "source": { + "type": "git", + "url": "https://github.com/Codeception/Verify.git", + "reference": "66e5074905f4d9590ddb805d123fe632f4baa488" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/Verify/zipball/66e5074905f4d9590ddb805d123fe632f4baa488", + "reference": "66e5074905f4d9590ddb805d123fe632f4baa488", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "autoload": { + "files": [ + "src/Codeception/function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "authors": [ + { + "name": "Michael Bodnarchuk", + "email": "davert.php@mailican.com", + "homepage": "http://codeception.com" + } + ], + "description": "BDD assertion library for PHPUnit", + "time": "2014-01-22 14:40:33" + }, + { + "name": "doctrine/instantiator", + "version": "1.0.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f976e5de371104877ebc89bd8fecb0019ed9c119", + "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119", + "shasum": "" + }, + "require": { + "php": ">=5.3,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "2.0.*@ALPHA" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Instantiator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2014-10-13 12:58:55" + }, + { + "name": "facebook/webdriver", + "version": "v0.5.1", + "source": { + "type": "git", + "url": "https://github.com/facebook/php-webdriver.git", + "reference": "bbcb697efb394d17bd9ec3d467e7da847cde4509" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/bbcb697efb394d17bd9ec3d467e7da847cde4509", + "reference": "bbcb697efb394d17bd9ec3d467e7da847cde4509", + "shasum": "" + }, + "require": { + "php": ">=5.3.19" + }, + "require-dev": { + "phpdocumentor/phpdocumentor": "2.*", + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "autoload": { + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "A php client for WebDriver", + "homepage": "https://github.com/facebook/php-webdriver", + "keywords": [ + "facebook", + "php", + "selenium", + "webdriver" + ], + "time": "2014-11-05 20:53:09" + }, + { + "name": "guzzlehttp/guzzle", + "version": "5.2.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "475b29ccd411f2fa8a408e64576418728c032cfa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/475b29ccd411f2fa8a408e64576418728c032cfa", + "reference": "475b29ccd411f2fa8a408e64576418728c032cfa", + "shasum": "" + }, + "require": { + "guzzlehttp/ringphp": "~1.0", + "php": ">=5.4.0" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "~4.0", + "psr/log": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2015-01-28 01:03:29" + }, + { + "name": "guzzlehttp/ringphp", + "version": "1.0.7", + "source": { + "type": "git", + "url": "https://github.com/guzzle/RingPHP.git", + "reference": "52d868f13570a9a56e5fce6614e0ec75d0f13ac2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/52d868f13570a9a56e5fce6614e0ec75d0f13ac2", + "reference": "52d868f13570a9a56e5fce6614e0ec75d0f13ac2", + "shasum": "" + }, + "require": { + "guzzlehttp/streams": "~3.0", + "php": ">=5.4.0", + "react/promise": "~2.0" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "~4.0" + }, + "suggest": { + "ext-curl": "Guzzle will use specific adapters if cURL is present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Ring\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Provides a simple API and specification that abstracts away the details of HTTP into a single PHP function.", + "time": "2015-03-30 01:43:20" + }, + { + "name": "guzzlehttp/streams", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/streams.git", + "reference": "47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/streams/zipball/47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5", + "reference": "47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Stream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Provides a simple abstraction over streams of data", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "Guzzle", + "stream" + ], + "time": "2014-10-12 19:18:40" + }, + { + "name": "myclabs/deep-copy", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "96fbdc07635989c35c5a1912379f4c4b2ab15fd5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/96fbdc07635989c35c5a1912379f4c4b2ab15fd5", + "reference": "96fbdc07635989c35c5a1912379f4c4b2ab15fd5", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "doctrine/collections": "1.*", + "phpunit/phpunit": "~4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "homepage": "https://github.com/myclabs/DeepCopy", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2015-03-21 22:40:23" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "suggest": { + "dflydev/markdown": "~1.0", + "erusev/parsedown": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "time": "2015-02-03 12:10:50" + }, + { + "name": "phpspec/prophecy", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "8724cd239f8ef4c046f55a3b18b4d91cc7f3e4c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/8724cd239f8ef4c046f55a3b18b4d91cc7f3e4c5", + "reference": "8724cd239f8ef4c046f55a3b18b4d91cc7f3e4c5", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "phpdocumentor/reflection-docblock": "~2.0", + "sebastian/comparator": "~1.1" + }, + "require-dev": { + "phpspec/phpspec": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2015-03-27 19:31:25" + }, + { + "name": "phpunit/php-code-coverage", + "version": "2.0.15", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "34cc484af1ca149188d0d9e91412191e398e0b67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/34cc484af1ca149188d0d9e91412191e398e0b67", + "reference": "34cc484af1ca149188d0d9e91412191e398e0b67", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.2", + "phpunit/php-token-stream": "~1.3", + "sebastian/environment": "~1.0", + "sebastian/version": "~1.0" + }, + "require-dev": { + "ext-xdebug": ">=2.1.4", + "phpunit/phpunit": "~4" + }, + "suggest": { + "ext-dom": "*", + "ext-xdebug": ">=2.2.1", + "ext-xmlwriter": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2015-01-24 10:06:35" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.3.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb", + "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "File/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2013-10-10 15:34:57" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "Text/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2014-01-30 17:20:04" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c", + "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "PHP/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2013-08-02 07:42:54" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "db32c18eba00b121c145575fcbcd4d4d24e6db74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/db32c18eba00b121c145575fcbcd4d4d24e6db74", + "reference": "db32c18eba00b121c145575fcbcd4d4d24e6db74", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2015-01-17 09:51:32" + }, + { + "name": "phpunit/phpunit", + "version": "4.5.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "d6429b0995b24a2d9dfe5587ee3a7071c1161af4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d6429b0995b24a2d9dfe5587ee3a7071c1161af4", + "reference": "d6429b0995b24a2d9dfe5587ee3a7071c1161af4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=5.3.3", + "phpspec/prophecy": "~1.3,>=1.3.1", + "phpunit/php-code-coverage": "~2.0,>=2.0.11", + "phpunit/php-file-iterator": "~1.3.2", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "~1.0.2", + "phpunit/phpunit-mock-objects": "~2.3", + "sebastian/comparator": "~1.1", + "sebastian/diff": "~1.1", + "sebastian/environment": "~1.2", + "sebastian/exporter": "~1.2", + "sebastian/global-state": "~1.0", + "sebastian/version": "~1.0", + "symfony/yaml": "~2.0" + }, + "suggest": { + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.5.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2015-03-29 09:24:05" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "2.3.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "74ffb87f527f24616f72460e54b595f508dccb5c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/74ffb87f527f24616f72460e54b595f508dccb5c", + "reference": "74ffb87f527f24616f72460e54b595f508dccb5c", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "~1.0,>=1.0.2", + "php": ">=5.3.3", + "phpunit/php-text-template": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2015-04-02 05:36:41" + }, + { + "name": "react/promise", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "365fcee430dfa4ace1fbc75737ca60ceea7eeeef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/365fcee430dfa4ace1fbc75737ca60ceea7eeeef", + "reference": "365fcee430dfa4ace1fbc75737ca60ceea7eeeef", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "React\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@googlemail.com" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "time": "2014-12-30 13:32:42" + }, + { + "name": "sebastian/comparator", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "1dd8869519a225f7f2b9eb663e225298fade819e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dd8869519a225f7f2b9eb663e225298fade819e", + "reference": "1dd8869519a225f7f2b9eb663e225298fade819e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2015-01-29 16:28:08" + }, + { + "name": "sebastian/diff", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3", + "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "http://www.github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2015-02-22 15:13:53" + }, + { + "name": "sebastian/environment", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5a8c7d31914337b69923db26c4221b81ff5a196e", + "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2015-01-01 10:01:08" + }, + { + "name": "sebastian/exporter", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "84839970d05254c73cde183a721c7af13aede943" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/84839970d05254c73cde183a721c7af13aede943", + "reference": "84839970d05254c73cde183a721c7af13aede943", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2015-01-27 07:23:06" + }, + { + "name": "sebastian/global-state", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01", + "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2014-10-06 09:23:50" + }, + { + "name": "sebastian/recursion-context", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "3989662bbb30a29d20d9faa04a846af79b276252" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252", + "reference": "3989662bbb30a29d20d9faa04a846af79b276252", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2015-01-24 09:48:32" + }, + { + "name": "sebastian/version", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/ab931d46cd0d3204a91e1b9a40c4bc13032b58e4", + "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2015-02-24 06:35:25" + }, + { + "name": "symfony/browser-kit", + "version": "v2.6.6", + "target-dir": "Symfony/Component/BrowserKit", + "source": { + "type": "git", + "url": "https://github.com/symfony/BrowserKit.git", + "reference": "f21189b0eccbe56528515858ca1d5089a741692f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/BrowserKit/zipball/f21189b0eccbe56528515858ca1d5089a741692f", + "reference": "f21189b0eccbe56528515858ca1d5089a741692f", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/dom-crawler": "~2.0,>=2.0.5" + }, + "require-dev": { + "symfony/css-selector": "~2.0,>=2.0.5", + "symfony/phpunit-bridge": "~2.7", + "symfony/process": "~2.0,>=2.0.5" + }, + "suggest": { + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\BrowserKit\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony BrowserKit Component", + "homepage": "http://symfony.com", + "time": "2015-03-30 15:54:10" + }, + { + "name": "symfony/console", + "version": "v2.6.6", + "target-dir": "Symfony/Component/Console", + "source": { + "type": "git", + "url": "https://github.com/symfony/Console.git", + "reference": "5b91dc4ed5eb08553f57f6df04c4730a73992667" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Console/zipball/5b91dc4ed5eb08553f57f6df04c4730a73992667", + "reference": "5b91dc4ed5eb08553f57f6df04c4730a73992667", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/event-dispatcher": "~2.1", + "symfony/phpunit-bridge": "~2.7", + "symfony/process": "~2.1" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\Console\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Console Component", + "homepage": "http://symfony.com", + "time": "2015-03-30 15:54:10" + }, + { + "name": "symfony/css-selector", + "version": "v2.6.6", + "target-dir": "Symfony/Component/CssSelector", + "source": { + "type": "git", + "url": "https://github.com/symfony/CssSelector.git", + "reference": "db2c48df9658423a8c168d89f7b971b73d3d74a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/CssSelector/zipball/db2c48df9658423a8c168d89f7b971b73d3d74a4", + "reference": "db2c48df9658423a8c168d89f7b971b73d3d74a4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\CssSelector\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony CssSelector Component", + "homepage": "http://symfony.com", + "time": "2015-03-22 16:55:57" + }, + { + "name": "symfony/dom-crawler", + "version": "v2.6.6", + "target-dir": "Symfony/Component/DomCrawler", + "source": { + "type": "git", + "url": "https://github.com/symfony/DomCrawler.git", + "reference": "8897ebf39c7dfb752a5494fa301845a3fbb9e53d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/DomCrawler/zipball/8897ebf39c7dfb752a5494fa301845a3fbb9e53d", + "reference": "8897ebf39c7dfb752a5494fa301845a3fbb9e53d", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "symfony/css-selector": "~2.3", + "symfony/phpunit-bridge": "~2.7" + }, + "suggest": { + "symfony/css-selector": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\DomCrawler\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony DomCrawler Component", + "homepage": "http://symfony.com", + "time": "2015-03-30 15:54:10" + }, + { + "name": "symfony/event-dispatcher", + "version": "v2.6.6", + "target-dir": "Symfony/Component/EventDispatcher", + "source": { + "type": "git", + "url": "https://github.com/symfony/EventDispatcher.git", + "reference": "70f7c8478739ad21e3deef0d977b38c77f1fb284" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/70f7c8478739ad21e3deef0d977b38c77f1fb284", + "reference": "70f7c8478739ad21e3deef0d977b38c77f1fb284", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.0,>=2.0.5", + "symfony/dependency-injection": "~2.6", + "symfony/expression-language": "~2.6", + "symfony/phpunit-bridge": "~2.7", + "symfony/stopwatch": "~2.3" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "http://symfony.com", + "time": "2015-03-13 17:37:22" + }, + { + "name": "symfony/finder", + "version": "v2.6.6", + "target-dir": "Symfony/Component/Finder", + "source": { + "type": "git", + "url": "https://github.com/symfony/Finder.git", + "reference": "5dbe2e73a580618f5b4880fda93406eed25de251" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Finder/zipball/5dbe2e73a580618f5b4880fda93406eed25de251", + "reference": "5dbe2e73a580618f5b4880fda93406eed25de251", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\Finder\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Finder Component", + "homepage": "http://symfony.com", + "time": "2015-03-30 15:54:10" + }, + { + "name": "symfony/yaml", + "version": "v2.6.6", + "target-dir": "Symfony/Component/Yaml", + "source": { + "type": "git", + "url": "https://github.com/symfony/Yaml.git", + "reference": "174f009ed36379a801109955fc5a71a49fe62dd4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Yaml/zipball/174f009ed36379a801109955fc5a71a49fe62dd4", + "reference": "174f009ed36379a801109955fc5a71a49fe62dd4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\Yaml\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Yaml Component", + "homepage": "http://symfony.com", + "time": "2015-03-30 15:54:10" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/tests/_bootstrap.php b/tests/_bootstrap.php new file mode 100644 index 000000000..e0d603d32 --- /dev/null +++ b/tests/_bootstrap.php @@ -0,0 +1,3 @@ +setHeader('X-Requested-With', 'Codeception'); + * $I->amOnPage('test-headers.php'); + * ?> + * ``` + * + * @param string $name the name of the request header + * @param string $value the value to set it to for subsequent + * requests + * @see \Codeception\Module\PhpBrowser::setHeader() + */ + public function setHeader($name, $value) { + return $this->scenario->runStep(new \Codeception\Step\Action('setHeader', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Deletes the header with the passed name. Subsequent requests + * will not have the deleted header in its request. + * + * Example: + * ```php + * setHeader('X-Requested-With', 'Codeception'); + * $I->amOnPage('test-headers.php'); + * // ... + * $I->deleteHeader('X-Requested-With'); + * $I->amOnPage('some-other-page.php'); + * ?> + * ``` + * + * @param string $name the name of the header to delete. + * @see \Codeception\Module\PhpBrowser::deleteHeader() + */ + public function deleteHeader($name) { + return $this->scenario->runStep(new \Codeception\Step\Action('deleteHeader', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Authenticates user for HTTP_AUTH + * + * @param $username + * @param $password + * @see \Codeception\Module\PhpBrowser::amHttpAuthenticated() + */ + public function amHttpAuthenticated($username, $password) { + return $this->scenario->runStep(new \Codeception\Step\Condition('amHttpAuthenticated', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Opens the page for the given relative URI. + * + * ``` php + * amOnPage('/'); + * // opens /register page + * $I->amOnPage('/register'); + * ?> + * ``` + * + * @param $page + * @see \Codeception\Module\PhpBrowser::amOnPage() + */ + public function amOnPage($page) { + return $this->scenario->runStep(new \Codeception\Step\Condition('amOnPage', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Open web page at the given absolute URL and sets its hostname as the base host. + * + * ``` php + * amOnUrl('http://codeception.com'); + * $I->amOnPage('/quickstart'); // moves to http://codeception.com/quickstart + * ?> + * ``` + * @see \Codeception\Module\PhpBrowser::amOnUrl() + */ + public function amOnUrl($url) { + return $this->scenario->runStep(new \Codeception\Step\Condition('amOnUrl', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Changes the subdomain for the 'url' configuration parameter. + * Does not open a page; use `amOnPage` for that. + * + * ``` php + * amOnSubdomain('user'); + * $I->amOnPage('/'); + * // moves to http://user.mysite.com/ + * ?> + * ``` + * + * @param $subdomain + * + * @return mixed + * @see \Codeception\Module\PhpBrowser::amOnSubdomain() + */ + public function amOnSubdomain($subdomain) { + return $this->scenario->runStep(new \Codeception\Step\Condition('amOnSubdomain', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Low-level API method. + * If Codeception commands are not enough, use [Guzzle HTTP Client](http://guzzlephp.org/) methods directly + * + * Example: + * + * ``` php + * executeInGuzzle(function (\GuzzleHttp\Client $client) { + * $client->get('/get', ['query' => ['foo' => 'bar']]); + * }); + * ?> + * ``` + * + * It is not recommended to use this command on a regular basis. + * If Codeception lacks important Guzzle Client methods, implement them and submit patches. + * + * @param callable $function + * @see \Codeception\Module\PhpBrowser::executeInGuzzle() + */ + public function executeInGuzzle($function) { + return $this->scenario->runStep(new \Codeception\Step\Action('executeInGuzzle', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Perform a click on a link or a button, given by a locator. + * If a fuzzy locator is given, the page will be searched for a button, link, or image matching the locator string. + * For buttons, the "value" attribute, "name" attribute, and inner text are searched. + * For links, the link text is searched. + * For images, the "alt" attribute and inner text of any parent links are searched. + * + * The second parameter is a context (CSS or XPath locator) to narrow the search. + * + * Note that if the locator matches a button of type `submit`, the form will be submitted. + * + * ``` php + * click('Logout'); + * // button of form + * $I->click('Submit'); + * // CSS button + * $I->click('#form input[type=submit]'); + * // XPath + * $I->click('//form/*[@type=submit]'); + * // link in context + * $I->click('Logout', '#nav'); + * // using strict locator + * $I->click(['link' => 'Login']); + * ?> + * ``` + * + * @param $link + * @param $context + * @see \Codeception\Lib\InnerBrowser::click() + */ + public function click($link, $context = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('click', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current page contains the given string. + * Specify a locator as the second parameter to match a specific region. + * + * ``` php + * see('Logout'); // I can suppose user is logged in + * $I->see('Sign Up','h1'); // I can suppose it's a signup page + * $I->see('Sign Up','//body/h1'); // with XPath + * ?> + * ``` + * + * @param $text + * @param null $selector + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::see() + */ + public function canSee($text, $selector = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('see', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current page contains the given string. + * Specify a locator as the second parameter to match a specific region. + * + * ``` php + * see('Logout'); // I can suppose user is logged in + * $I->see('Sign Up','h1'); // I can suppose it's a signup page + * $I->see('Sign Up','//body/h1'); // with XPath + * ?> + * ``` + * + * @param $text + * @param null $selector + * @see \Codeception\Lib\InnerBrowser::see() + */ + public function see($text, $selector = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('see', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current page doesn't contain the text specified. + * Give a locator as the second parameter to match a specific region. + * + * ```php + * dontSee('Login'); // I can suppose user is already logged in + * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page + * $I->dontSee('Sign Up','//body/h1'); // with XPath + * ?> + * ``` + * + * @param $text + * @param null $selector + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSee() + */ + public function cantSee($text, $selector = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSee', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current page doesn't contain the text specified. + * Give a locator as the second parameter to match a specific region. + * + * ```php + * dontSee('Login'); // I can suppose user is already logged in + * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page + * $I->dontSee('Sign Up','//body/h1'); // with XPath + * ?> + * ``` + * + * @param $text + * @param null $selector + * @see \Codeception\Lib\InnerBrowser::dontSee() + */ + public function dontSee($text, $selector = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSee', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there's a link with the specified text. + * Give a full URL as the second parameter to match links with that exact URL. + * + * ``` php + * seeLink('Logout'); // matches Logout + * $I->seeLink('Logout','/logout'); // matches Logout + * ?> + * ``` + * + * @param $text + * @param null $url + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeLink() + */ + public function canSeeLink($text, $url = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeLink', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there's a link with the specified text. + * Give a full URL as the second parameter to match links with that exact URL. + * + * ``` php + * seeLink('Logout'); // matches Logout + * $I->seeLink('Logout','/logout'); // matches Logout + * ?> + * ``` + * + * @param $text + * @param null $url + * @see \Codeception\Lib\InnerBrowser::seeLink() + */ + public function seeLink($text, $url = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeLink', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page doesn't contain a link with the given string. + * If the second parameter is given, only links with a matching "href" attribute will be checked. + * + * ``` php + * dontSeeLink('Logout'); // I suppose user is not logged in + * $I->dontSeeLink('Checkout now', '/store/cart.php'); + * ?> + * ``` + * + * @param $text + * @param null $url + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeLink() + */ + public function cantSeeLink($text, $url = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeLink', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page doesn't contain a link with the given string. + * If the second parameter is given, only links with a matching "href" attribute will be checked. + * + * ``` php + * dontSeeLink('Logout'); // I suppose user is not logged in + * $I->dontSeeLink('Checkout now', '/store/cart.php'); + * ?> + * ``` + * + * @param $text + * @param null $url + * @see \Codeception\Lib\InnerBrowser::dontSeeLink() + */ + public function dontSeeLink($text, $url = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeLink', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that current URI contains the given string. + * + * ``` php + * seeInCurrentUrl('home'); + * // to match: /users/1 + * $I->seeInCurrentUrl('/users/'); + * ?> + * ``` + * + * @param $uri + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeInCurrentUrl() + */ + public function canSeeInCurrentUrl($uri) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInCurrentUrl', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that current URI contains the given string. + * + * ``` php + * seeInCurrentUrl('home'); + * // to match: /users/1 + * $I->seeInCurrentUrl('/users/'); + * ?> + * ``` + * + * @param $uri + * @see \Codeception\Lib\InnerBrowser::seeInCurrentUrl() + */ + public function seeInCurrentUrl($uri) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInCurrentUrl', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URI doesn't contain the given string. + * + * ``` php + * dontSeeInCurrentUrl('/users/'); + * ?> + * ``` + * + * @param $uri + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeInCurrentUrl() + */ + public function cantSeeInCurrentUrl($uri) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInCurrentUrl', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URI doesn't contain the given string. + * + * ``` php + * dontSeeInCurrentUrl('/users/'); + * ?> + * ``` + * + * @param $uri + * @see \Codeception\Lib\InnerBrowser::dontSeeInCurrentUrl() + */ + public function dontSeeInCurrentUrl($uri) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInCurrentUrl', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL is equal to the given string. + * Unlike `seeInCurrentUrl`, this only matches the full URL. + * + * ``` php + * seeCurrentUrlEquals('/'); + * ?> + * ``` + * + * @param $uri + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlEquals() + */ + public function canSeeCurrentUrlEquals($uri) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlEquals', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL is equal to the given string. + * Unlike `seeInCurrentUrl`, this only matches the full URL. + * + * ``` php + * seeCurrentUrlEquals('/'); + * ?> + * ``` + * + * @param $uri + * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlEquals() + */ + public function seeCurrentUrlEquals($uri) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCurrentUrlEquals', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL doesn't equal the given string. + * Unlike `dontSeeInCurrentUrl`, this only matches the full URL. + * + * ``` php + * dontSeeCurrentUrlEquals('/'); + * ?> + * ``` + * + * @param $uri + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlEquals() + */ + public function cantSeeCurrentUrlEquals($uri) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlEquals', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL doesn't equal the given string. + * Unlike `dontSeeInCurrentUrl`, this only matches the full URL. + * + * ``` php + * dontSeeCurrentUrlEquals('/'); + * ?> + * ``` + * + * @param $uri + * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlEquals() + */ + public function dontSeeCurrentUrlEquals($uri) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCurrentUrlEquals', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL matches the given regular expression. + * + * ``` php + * seeCurrentUrlMatches('~$/users/(\d+)~'); + * ?> + * ``` + * + * @param $uri + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlMatches() + */ + public function canSeeCurrentUrlMatches($uri) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlMatches', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL matches the given regular expression. + * + * ``` php + * seeCurrentUrlMatches('~$/users/(\d+)~'); + * ?> + * ``` + * + * @param $uri + * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlMatches() + */ + public function seeCurrentUrlMatches($uri) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCurrentUrlMatches', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that current url doesn't match the given regular expression. + * + * ``` php + * dontSeeCurrentUrlMatches('~$/users/(\d+)~'); + * ?> + * ``` + * + * @param $uri + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlMatches() + */ + public function cantSeeCurrentUrlMatches($uri) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlMatches', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that current url doesn't match the given regular expression. + * + * ``` php + * dontSeeCurrentUrlMatches('~$/users/(\d+)~'); + * ?> + * ``` + * + * @param $uri + * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlMatches() + */ + public function dontSeeCurrentUrlMatches($uri) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCurrentUrlMatches', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Executes the given regular expression against the current URI and returns the first match. + * If no parameters are provided, the full URI is returned. + * + * ``` php + * grabFromCurrentUrl('~$/user/(\d+)/~'); + * $uri = $I->grabFromCurrentUrl(); + * ?> + * ``` + * + * @param null $uri + * + * @internal param $url + * @return mixed + * @see \Codeception\Lib\InnerBrowser::grabFromCurrentUrl() + */ + public function grabFromCurrentUrl($uri = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('grabFromCurrentUrl', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the specified checkbox is checked. + * + * ``` php + * seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms + * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form. + * $I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]'); + * ?> + * ``` + * + * @param $checkbox + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeCheckboxIsChecked() + */ + public function canSeeCheckboxIsChecked($checkbox) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCheckboxIsChecked', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the specified checkbox is checked. + * + * ``` php + * seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms + * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form. + * $I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]'); + * ?> + * ``` + * + * @param $checkbox + * @see \Codeception\Lib\InnerBrowser::seeCheckboxIsChecked() + */ + public function seeCheckboxIsChecked($checkbox) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCheckboxIsChecked', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Check that the specified checkbox is unchecked. + * + * ``` php + * dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms + * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form. + * ?> + * ``` + * + * @param $checkbox + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeCheckboxIsChecked() + */ + public function cantSeeCheckboxIsChecked($checkbox) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCheckboxIsChecked', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Check that the specified checkbox is unchecked. + * + * ``` php + * dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms + * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form. + * ?> + * ``` + * + * @param $checkbox + * @see \Codeception\Lib\InnerBrowser::dontSeeCheckboxIsChecked() + */ + public function dontSeeCheckboxIsChecked($checkbox) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCheckboxIsChecked', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given input field or textarea contains the given value. + * For fuzzy locators, fields are matched by label text, the "name" attribute, CSS, and XPath. + * + * ``` php + * seeInField('Body','Type your comment here'); + * $I->seeInField('form textarea[name=body]','Type your comment here'); + * $I->seeInField('form input[type=hidden]','hidden_value'); + * $I->seeInField('#searchform input','Search'); + * $I->seeInField('//form/*[@name=search]','Search'); + * $I->seeInField(['name' => 'search'], 'Search'); + * ?> + * ``` + * + * @param $field + * @param $value + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeInField() + */ + public function canSeeInField($field, $value) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInField', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given input field or textarea contains the given value. + * For fuzzy locators, fields are matched by label text, the "name" attribute, CSS, and XPath. + * + * ``` php + * seeInField('Body','Type your comment here'); + * $I->seeInField('form textarea[name=body]','Type your comment here'); + * $I->seeInField('form input[type=hidden]','hidden_value'); + * $I->seeInField('#searchform input','Search'); + * $I->seeInField('//form/*[@name=search]','Search'); + * $I->seeInField(['name' => 'search'], 'Search'); + * ?> + * ``` + * + * @param $field + * @param $value + * @see \Codeception\Lib\InnerBrowser::seeInField() + */ + public function seeInField($field, $value) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInField', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that an input field or textarea doesn't contain the given value. + * For fuzzy locators, the field is matched by label text, CSS and XPath. + * + * ``` php + * dontSeeInField('Body','Type your comment here'); + * $I->dontSeeInField('form textarea[name=body]','Type your comment here'); + * $I->dontSeeInField('form input[type=hidden]','hidden_value'); + * $I->dontSeeInField('#searchform input','Search'); + * $I->dontSeeInField('//form/*[@name=search]','Search'); + * $I->dontSeeInField(['name' => 'search'], 'Search'); + * ?> + * ``` + * + * @param $field + * @param $value + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeInField() + */ + public function cantSeeInField($field, $value) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInField', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that an input field or textarea doesn't contain the given value. + * For fuzzy locators, the field is matched by label text, CSS and XPath. + * + * ``` php + * dontSeeInField('Body','Type your comment here'); + * $I->dontSeeInField('form textarea[name=body]','Type your comment here'); + * $I->dontSeeInField('form input[type=hidden]','hidden_value'); + * $I->dontSeeInField('#searchform input','Search'); + * $I->dontSeeInField('//form/*[@name=search]','Search'); + * $I->dontSeeInField(['name' => 'search'], 'Search'); + * ?> + * ``` + * + * @param $field + * @param $value + * @see \Codeception\Lib\InnerBrowser::dontSeeInField() + */ + public function dontSeeInField($field, $value) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInField', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if the array of form parameters (name => value) are set on the form matched with the + * passed selector. + * + * ``` php + * seeInFormFields('form[name=myform]', [ + * 'input1' => 'value', + * 'input2' => 'other value', + * ]); + * ?> + * ``` + * + * For multi-select elements, or to check values of multiple elements with the same name, an + * array may be passed: + * + * ``` php + * seeInFormFields('.form-class', [ + * 'multiselect' => [ + * 'value1', + * 'value2', + * ], + * 'checkbox[]' => [ + * 'a checked value', + * 'another checked value', + * ], + * ]); + * ?> + * ``` + * + * Additionally, checkbox values can be checked with a boolean. + * + * ``` php + * seeInFormFields('#form-id', [ + * 'checkbox1' => true, // passes if checked + * 'checkbox2' => false, // passes if unchecked + * ]); + * ?> + * ``` + * + * Pair this with submitForm for quick testing magic. + * + * ``` php + * 'value', + * 'field2' => 'another value', + * 'checkbox1' => true, + * // ... + * ]; + * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); + * // $I->amOnPage('/path/to/form-page') may be needed + * $I->seeInFormFields('//form[@id=my-form]', $form); + * ?> + * ``` + * + * @param $formSelector + * @param $params + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeInFormFields() + */ + public function canSeeInFormFields($formSelector, $params) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInFormFields', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if the array of form parameters (name => value) are set on the form matched with the + * passed selector. + * + * ``` php + * seeInFormFields('form[name=myform]', [ + * 'input1' => 'value', + * 'input2' => 'other value', + * ]); + * ?> + * ``` + * + * For multi-select elements, or to check values of multiple elements with the same name, an + * array may be passed: + * + * ``` php + * seeInFormFields('.form-class', [ + * 'multiselect' => [ + * 'value1', + * 'value2', + * ], + * 'checkbox[]' => [ + * 'a checked value', + * 'another checked value', + * ], + * ]); + * ?> + * ``` + * + * Additionally, checkbox values can be checked with a boolean. + * + * ``` php + * seeInFormFields('#form-id', [ + * 'checkbox1' => true, // passes if checked + * 'checkbox2' => false, // passes if unchecked + * ]); + * ?> + * ``` + * + * Pair this with submitForm for quick testing magic. + * + * ``` php + * 'value', + * 'field2' => 'another value', + * 'checkbox1' => true, + * // ... + * ]; + * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); + * // $I->amOnPage('/path/to/form-page') may be needed + * $I->seeInFormFields('//form[@id=my-form]', $form); + * ?> + * ``` + * + * @param $formSelector + * @param $params + * @see \Codeception\Lib\InnerBrowser::seeInFormFields() + */ + public function seeInFormFields($formSelector, $params) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInFormFields', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if the array of form parameters (name => value) are not set on the form matched with + * the passed selector. + * + * ``` php + * dontSeeInFormFields('form[name=myform]', [ + * 'input1' => 'non-existent value', + * 'input2' => 'other non-existent value', + * ]); + * ?> + * ``` + * + * To check that an element hasn't been assigned any one of many values, an array can be passed + * as the value: + * + * ``` php + * dontSeeInFormFields('.form-class', [ + * 'fieldName' => [ + * 'This value shouldn\'t be set', + * 'And this value shouldn\'t be set', + * ], + * ]); + * ?> + * ``` + * + * Additionally, checkbox values can be checked with a boolean. + * + * ``` php + * dontSeeInFormFields('#form-id', [ + * 'checkbox1' => true, // fails if checked + * 'checkbox2' => false, // fails if unchecked + * ]); + * ?> + * ``` + * + * @param $formSelector + * @param $params + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeInFormFields() + */ + public function cantSeeInFormFields($formSelector, $params) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInFormFields', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if the array of form parameters (name => value) are not set on the form matched with + * the passed selector. + * + * ``` php + * dontSeeInFormFields('form[name=myform]', [ + * 'input1' => 'non-existent value', + * 'input2' => 'other non-existent value', + * ]); + * ?> + * ``` + * + * To check that an element hasn't been assigned any one of many values, an array can be passed + * as the value: + * + * ``` php + * dontSeeInFormFields('.form-class', [ + * 'fieldName' => [ + * 'This value shouldn\'t be set', + * 'And this value shouldn\'t be set', + * ], + * ]); + * ?> + * ``` + * + * Additionally, checkbox values can be checked with a boolean. + * + * ``` php + * dontSeeInFormFields('#form-id', [ + * 'checkbox1' => true, // fails if checked + * 'checkbox2' => false, // fails if unchecked + * ]); + * ?> + * ``` + * + * @param $formSelector + * @param $params + * @see \Codeception\Lib\InnerBrowser::dontSeeInFormFields() + */ + public function dontSeeInFormFields($formSelector, $params) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInFormFields', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Submits the given form on the page, optionally with the given form values. + * Give the form fields values as an array. + * + * Skipped fields will be filled by their values from the page. + * You don't need to click the 'Submit' button afterwards. + * This command itself triggers the request to form's action. + * + * You can optionally specify what button's value to include + * in the request with the last parameter as an alternative to + * explicitly setting its value in the second parameter, as + * button values are not otherwise included in the request. + * + * Examples: + * + * ``` php + * submitForm('#login', array('login' => 'davert', 'password' => '123456')); + * // or + * $I->submitForm('#login', array('login' => 'davert', 'password' => '123456'), 'submitButtonName'); + * + * ``` + * + * For example, given this sample "Sign Up" form: + * + * ``` html + *
      + * Login:
      + * Password:
      + * Do you agree to out terms?
      + * Select pricing plan + * + *
      + * ``` + * + * You could write the following to submit it: + * + * ``` php + * submitForm('#userForm', array('user' => array('login' => 'Davert', 'password' => '123456', 'agree' => true)), 'submitButton'); + * + * ``` + * Note that "2" will be the submitted value for the "plan" field, as it is the selected option. + * + * You can also emulate a JavaScript submission by not specifying any buttons in the third parameter to submitForm. + * + * ```php + * submitForm('#userForm', array('user' => array('login' => 'Davert', 'password' => '123456', 'agree' => true))); + * + * ``` + * + * Pair this with seeInFormFields for quick testing magic. + * + * ``` php + * 'value', + * 'field2' => 'another value', + * 'checkbox1' => true, + * // ... + * ]; + * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); + * // $I->amOnPage('/path/to/form-page') may be needed + * $I->seeInFormFields('//form[@id=my-form]', $form); + * ?> + * ``` + * + * Parameter values can be set to arrays for multiple input fields + * of the same name, or multi-select combo boxes. For checkboxes, + * either the string value can be used, or boolean values which will + * be replaced by the checkbox's value in the DOM. + * + * ``` php + * submitForm('#my-form', [ + * 'field1' => 'value', + * 'checkbox' => [ + * 'value of first checkbox', + * 'value of second checkbox, + * ], + * 'otherCheckboxes' => [ + * true, + * false, + * false + * ], + * 'multiselect' => [ + * 'first option value', + * 'second option value' + * ] + * ]); + * ?> + * ``` + * + * Mixing string and boolean values for a checkbox's value is not + * supported and may produce unexpected results. + * + * @param $selector + * @param $params + * @param $button + * @see \Codeception\Lib\InnerBrowser::submitForm() + */ + public function submitForm($selector, $params, $button = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('submitForm', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Fills a text field or textarea with the given string. + * + * ``` php + * fillField("//input[@type='text']", "Hello World!"); + * $I->fillField(['name' => 'email'], 'jon@mail.com'); + * ?> + * ``` + * + * @param $field + * @param $value + * @see \Codeception\Lib\InnerBrowser::fillField() + */ + public function fillField($field, $value) { + return $this->scenario->runStep(new \Codeception\Step\Action('fillField', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Selects an option in a select tag or in radio button group. + * + * ``` php + * selectOption('form select[name=account]', 'Premium'); + * $I->selectOption('form input[name=payment]', 'Monthly'); + * $I->selectOption('//form/select[@name=account]', 'Monthly'); + * ?> + * ``` + * + * Provide an array for the second argument to select multiple options: + * + * ``` php + * selectOption('Which OS do you use?', array('Windows','Linux')); + * ?> + * ``` + * + * @param $select + * @param $option + * @see \Codeception\Lib\InnerBrowser::selectOption() + */ + public function selectOption($select, $option) { + return $this->scenario->runStep(new \Codeception\Step\Action('selectOption', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Ticks a checkbox. For radio buttons, use the `selectOption` method instead. + * + * ``` php + * checkOption('#agree'); + * ?> + * ``` + * + * @param $option + * @see \Codeception\Lib\InnerBrowser::checkOption() + */ + public function checkOption($option) { + return $this->scenario->runStep(new \Codeception\Step\Action('checkOption', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Unticks a checkbox. + * + * ``` php + * uncheckOption('#notify'); + * ?> + * ``` + * + * @param $option + * @see \Codeception\Lib\InnerBrowser::uncheckOption() + */ + public function uncheckOption($option) { + return $this->scenario->runStep(new \Codeception\Step\Action('uncheckOption', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Attaches a file relative to the Codeception data directory to the given file upload field. + * + * ``` php + * attachFile('input[@type="file"]', 'prices.xls'); + * ?> + * ``` + * + * @param $field + * @param $filename + * @see \Codeception\Lib\InnerBrowser::attachFile() + */ + public function attachFile($field, $filename) { + return $this->scenario->runStep(new \Codeception\Step\Action('attachFile', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * If your page triggers an ajax request, you can perform it manually. + * This action sends a GET ajax request with specified params. + * + * See ->sendAjaxPostRequest for examples. + * + * @param $uri + * @param $params + * @see \Codeception\Lib\InnerBrowser::sendAjaxGetRequest() + */ + public function sendAjaxGetRequest($uri, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('sendAjaxGetRequest', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * If your page triggers an ajax request, you can perform it manually. + * This action sends a POST ajax request with specified params. + * Additional params can be passed as array. + * + * Example: + * + * Imagine that by clicking checkbox you trigger ajax request which updates user settings. + * We emulate that click by running this ajax request manually. + * + * ``` php + * sendAjaxPostRequest('/updateSettings', array('notifications' => true)); // POST + * $I->sendAjaxGetRequest('/updateSettings', array('notifications' => true)); // GET + * + * ``` + * + * @param $uri + * @param $params + * @see \Codeception\Lib\InnerBrowser::sendAjaxPostRequest() + */ + public function sendAjaxPostRequest($uri, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('sendAjaxPostRequest', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * If your page triggers an ajax request, you can perform it manually. + * This action sends an ajax request with specified method and params. + * + * Example: + * + * You need to perform an ajax request specifying the HTTP method. + * + * ``` php + * sendAjaxRequest('PUT', '/posts/7', array('title' => 'new title')); + * + * ``` + * + * @param $method + * @param $uri + * @param $params + * @see \Codeception\Lib\InnerBrowser::sendAjaxRequest() + */ + public function sendAjaxRequest($method, $uri, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('sendAjaxRequest', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Finds and returns the text contents of the given element. + * If a fuzzy locator is used, the element is found using CSS, XPath, and by matching the full page source by regular expression. + * + * ``` php + * grabTextFrom('h1'); + * $heading = $I->grabTextFrom('descendant-or-self::h1'); + * $value = $I->grabTextFrom('~ + * ``` + * + * @param $cssOrXPathOrRegex + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::grabTextFrom() + */ + public function grabTextFrom($cssOrXPathOrRegex) { + return $this->scenario->runStep(new \Codeception\Step\Action('grabTextFrom', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Grabs the value of the given attribute value from the given element. + * Fails if element is not found. + * + * ``` php + * grabAttributeFrom('#tooltip', 'title'); + * ?> + * ``` + * + * + * @param $cssOrXpath + * @param $attribute + * @internal param $element + * @return mixed + * @see \Codeception\Lib\InnerBrowser::grabAttributeFrom() + */ + public function grabAttributeFrom($cssOrXpath, $attribute) { + return $this->scenario->runStep(new \Codeception\Step\Action('grabAttributeFrom', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * @param $field + * + * @return array|mixed|null|string + * @see \Codeception\Lib\InnerBrowser::grabValueFrom() + */ + public function grabValueFrom($field) { + return $this->scenario->runStep(new \Codeception\Step\Action('grabValueFrom', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Sets a cookie with the given name and value. + * You can set additional cookie params like `domain`, `path`, `expire`, `secure` in array passed as last argument. + * + * ``` php + * setCookie('PHPSESSID', 'el4ukv0kqbvoirg7nkp4dncpk3'); + * ?> + * ``` + * + * @param $name + * @param $val + * @param array $params + * @internal param $cookie + * @internal param $value + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::setCookie() + */ + public function setCookie($name, $val, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('setCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Grabs a cookie value. + * You can set additional cookie params like `domain`, `path` in array passed as last argument. + * + * @param $cookie + * + * @param array $params + * @return mixed + * @see \Codeception\Lib\InnerBrowser::grabCookie() + */ + public function grabCookie($name, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('grabCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that a cookie with the given name is set. + * You can set additional cookie params like `domain`, `path` as array passed in last argument. + * + * ``` php + * seeCookie('PHPSESSID'); + * ?> + * ``` + * + * @param $cookie + * @param array $params + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeCookie() + */ + public function canSeeCookie($name, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCookie', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that a cookie with the given name is set. + * You can set additional cookie params like `domain`, `path` as array passed in last argument. + * + * ``` php + * seeCookie('PHPSESSID'); + * ?> + * ``` + * + * @param $cookie + * @param array $params + * @return mixed + * @see \Codeception\Lib\InnerBrowser::seeCookie() + */ + public function seeCookie($name, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there isn't a cookie with the given name. + * You can set additional cookie params like `domain`, `path` as array passed in last argument. + * + * @param $cookie + * + * @param array $params + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeCookie() + */ + public function cantSeeCookie($name, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCookie', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there isn't a cookie with the given name. + * You can set additional cookie params like `domain`, `path` as array passed in last argument. + * + * @param $cookie + * + * @param array $params + * @return mixed + * @see \Codeception\Lib\InnerBrowser::dontSeeCookie() + */ + public function dontSeeCookie($name, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Unsets cookie with the given name. + * You can set additional cookie params like `domain`, `path` in array passed as last argument. + * + * @param $cookie + * + * @param array $params + * @return mixed + * @see \Codeception\Lib\InnerBrowser::resetCookie() + */ + public function resetCookie($name, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('resetCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given element exists on the page and is visible. + * You can also specify expected attributes of this element. + * + * ``` php + * seeElement('.error'); + * $I->seeElement('//form/input[1]'); + * $I->seeElement('input', ['name' => 'login']); + * $I->seeElement('input', ['value' => '123456']); + * + * // strict locator in first arg, attributes in second + * $I->seeElement(['css' => 'form input'], ['name' => 'login']); + * ?> + * ``` + * + * @param $selector + * @param array $attributes + * @return + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeElement() + */ + public function canSeeElement($selector, $attributes = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeElement', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given element exists on the page and is visible. + * You can also specify expected attributes of this element. + * + * ``` php + * seeElement('.error'); + * $I->seeElement('//form/input[1]'); + * $I->seeElement('input', ['name' => 'login']); + * $I->seeElement('input', ['value' => '123456']); + * + * // strict locator in first arg, attributes in second + * $I->seeElement(['css' => 'form input'], ['name' => 'login']); + * ?> + * ``` + * + * @param $selector + * @param array $attributes + * @return + * @see \Codeception\Lib\InnerBrowser::seeElement() + */ + public function seeElement($selector, $attributes = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeElement', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given element is invisible or not present on the page. + * You can also specify expected attributes of this element. + * + * ``` php + * dontSeeElement('.error'); + * $I->dontSeeElement('//form/input[1]'); + * $I->dontSeeElement('input', ['name' => 'login']); + * $I->dontSeeElement('input', ['value' => '123456']); + * ?> + * ``` + * + * @param $selector + * @param array $attributes + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeElement() + */ + public function cantSeeElement($selector, $attributes = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeElement', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given element is invisible or not present on the page. + * You can also specify expected attributes of this element. + * + * ``` php + * dontSeeElement('.error'); + * $I->dontSeeElement('//form/input[1]'); + * $I->dontSeeElement('input', ['name' => 'login']); + * $I->dontSeeElement('input', ['value' => '123456']); + * ?> + * ``` + * + * @param $selector + * @param array $attributes + * @see \Codeception\Lib\InnerBrowser::dontSeeElement() + */ + public function dontSeeElement($selector, $attributes = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeElement', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there are a certain number of elements matched by the given locator on the page. + * + * ``` php + * seeNumberOfElements('tr', 10); + * $I->seeNumberOfElements('tr', [0,10]); //between 0 and 10 elements + * ?> + * ``` + * @param $selector + * @param mixed $expected: + * - string: strict number + * - array: range of numbers [0,10] + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeNumberOfElements() + */ + public function canSeeNumberOfElements($selector, $expected) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeNumberOfElements', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there are a certain number of elements matched by the given locator on the page. + * + * ``` php + * seeNumberOfElements('tr', 10); + * $I->seeNumberOfElements('tr', [0,10]); //between 0 and 10 elements + * ?> + * ``` + * @param $selector + * @param mixed $expected: + * - string: strict number + * - array: range of numbers [0,10] + * @see \Codeception\Lib\InnerBrowser::seeNumberOfElements() + */ + public function seeNumberOfElements($selector, $expected) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeNumberOfElements', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given option is selected. + * + * ``` php + * seeOptionIsSelected('#form input[name=payment]', 'Visa'); + * ?> + * ``` + * + * @param $selector + * @param $optionText + * + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeOptionIsSelected() + */ + public function canSeeOptionIsSelected($select, $optionText) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeOptionIsSelected', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given option is selected. + * + * ``` php + * seeOptionIsSelected('#form input[name=payment]', 'Visa'); + * ?> + * ``` + * + * @param $selector + * @param $optionText + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::seeOptionIsSelected() + */ + public function seeOptionIsSelected($select, $optionText) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeOptionIsSelected', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given option is not selected. + * + * ``` php + * dontSeeOptionIsSelected('#form input[name=payment]', 'Visa'); + * ?> + * ``` + * + * @param $selector + * @param $optionText + * + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeOptionIsSelected() + */ + public function cantSeeOptionIsSelected($select, $optionText) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeOptionIsSelected', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given option is not selected. + * + * ``` php + * dontSeeOptionIsSelected('#form input[name=payment]', 'Visa'); + * ?> + * ``` + * + * @param $selector + * @param $optionText + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::dontSeeOptionIsSelected() + */ + public function dontSeeOptionIsSelected($select, $optionText) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeOptionIsSelected', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Asserts that current page has 404 response status code. + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seePageNotFound() + */ + public function canSeePageNotFound() { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seePageNotFound', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Asserts that current page has 404 response status code. + * @see \Codeception\Lib\InnerBrowser::seePageNotFound() + */ + public function seePageNotFound() { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seePageNotFound', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that response code is equal to value provided. + * + * @param $code + * + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIs() + */ + public function canSeeResponseCodeIs($code) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeResponseCodeIs', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that response code is equal to value provided. + * + * @param $code + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIs() + */ + public function seeResponseCodeIs($code) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeResponseCodeIs', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page title contains the given string. + * + * ``` php + * seeInTitle('Blog - Post #1'); + * ?> + * ``` + * + * @param $title + * + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeInTitle() + */ + public function canSeeInTitle($title) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInTitle', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page title contains the given string. + * + * ``` php + * seeInTitle('Blog - Post #1'); + * ?> + * ``` + * + * @param $title + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::seeInTitle() + */ + public function seeInTitle($title) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInTitle', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page title does not contain the given string. + * + * @param $title + * + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeInTitle() + */ + public function cantSeeInTitle($title) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInTitle', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page title does not contain the given string. + * + * @param $title + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::dontSeeInTitle() + */ + public function dontSeeInTitle($title) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInTitle', func_get_args())); + } +} diff --git a/tests/acceptance/_bootstrap.php b/tests/acceptance/_bootstrap.php new file mode 100644 index 000000000..8a8855580 --- /dev/null +++ b/tests/acceptance/_bootstrap.php @@ -0,0 +1,2 @@ +scenario->runStep(new \Codeception\Step\Condition('amInPath', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Opens a file and stores it's content. + * + * Usage: + * + * ``` php + * openFile('composer.json'); + * $I->seeInThisFile('codeception/codeception'); + * ?> + * ``` + * + * @param $filename + * @see \Codeception\Module\Filesystem::openFile() + */ + public function openFile($filename) { + return $this->scenario->runStep(new \Codeception\Step\Action('openFile', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Deletes a file + * + * ``` php + * deleteFile('composer.lock'); + * ?> + * ``` + * + * @param $filename + * @see \Codeception\Module\Filesystem::deleteFile() + */ + public function deleteFile($filename) { + return $this->scenario->runStep(new \Codeception\Step\Action('deleteFile', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Deletes directory with all subdirectories + * + * ``` php + * deleteDir('vendor'); + * ?> + * ``` + * + * @param $dirname + * @see \Codeception\Module\Filesystem::deleteDir() + */ + public function deleteDir($dirname) { + return $this->scenario->runStep(new \Codeception\Step\Action('deleteDir', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Copies directory with all contents + * + * ``` php + * copyDir('vendor','old_vendor'); + * ?> + * ``` + * + * @param $src + * @param $dst + * @see \Codeception\Module\Filesystem::copyDir() + */ + public function copyDir($src, $dst) { + return $this->scenario->runStep(new \Codeception\Step\Action('copyDir', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks If opened file has `text` in it. + * + * Usage: + * + * ``` php + * openFile('composer.json'); + * $I->seeInThisFile('codeception/codeception'); + * ?> + * ``` + * + * @param $text + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Module\Filesystem::seeInThisFile() + */ + public function canSeeInThisFile($text) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInThisFile', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks If opened file has `text` in it. + * + * Usage: + * + * ``` php + * openFile('composer.json'); + * $I->seeInThisFile('codeception/codeception'); + * ?> + * ``` + * + * @param $text + * @see \Codeception\Module\Filesystem::seeInThisFile() + */ + public function seeInThisFile($text) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInThisFile', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks the strict matching of file contents. + * Unlike `seeInThisFile` will fail if file has something more than expected lines. + * Better to use with HEREDOC strings. + * Matching is done after removing "\r" chars from file content. + * + * ``` php + * openFile('process.pid'); + * $I->seeFileContentsEqual('3192'); + * ?> + * ``` + * + * @param $text + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Module\Filesystem::seeFileContentsEqual() + */ + public function canSeeFileContentsEqual($text) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeFileContentsEqual', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks the strict matching of file contents. + * Unlike `seeInThisFile` will fail if file has something more than expected lines. + * Better to use with HEREDOC strings. + * Matching is done after removing "\r" chars from file content. + * + * ``` php + * openFile('process.pid'); + * $I->seeFileContentsEqual('3192'); + * ?> + * ``` + * + * @param $text + * @see \Codeception\Module\Filesystem::seeFileContentsEqual() + */ + public function seeFileContentsEqual($text) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeFileContentsEqual', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks If opened file doesn't contain `text` in it + * + * ``` php + * openFile('composer.json'); + * $I->dontSeeInThisFile('codeception/codeception'); + * ?> + * ``` + * + * @param $text + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Module\Filesystem::dontSeeInThisFile() + */ + public function cantSeeInThisFile($text) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInThisFile', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks If opened file doesn't contain `text` in it + * + * ``` php + * openFile('composer.json'); + * $I->dontSeeInThisFile('codeception/codeception'); + * ?> + * ``` + * + * @param $text + * @see \Codeception\Module\Filesystem::dontSeeInThisFile() + */ + public function dontSeeInThisFile($text) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInThisFile', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Deletes a file + * @see \Codeception\Module\Filesystem::deleteThisFile() + */ + public function deleteThisFile() { + return $this->scenario->runStep(new \Codeception\Step\Action('deleteThisFile', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if file exists in path. + * Opens a file when it's exists + * + * ``` php + * seeFileFound('UserModel.php','app/models'); + * ?> + * ``` + * + * @param $filename + * @param string $path + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Module\Filesystem::seeFileFound() + */ + public function canSeeFileFound($filename, $path = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeFileFound', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if file exists in path. + * Opens a file when it's exists + * + * ``` php + * seeFileFound('UserModel.php','app/models'); + * ?> + * ``` + * + * @param $filename + * @param string $path + * @see \Codeception\Module\Filesystem::seeFileFound() + */ + public function seeFileFound($filename, $path = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeFileFound', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if file does not exists in path + * + * @param $filename + * @param string $path + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Module\Filesystem::dontSeeFileFound() + */ + public function cantSeeFileFound($filename, $path = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeFileFound', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if file does not exists in path + * + * @param $filename + * @param string $path + * @see \Codeception\Module\Filesystem::dontSeeFileFound() + */ + public function dontSeeFileFound($filename, $path = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeFileFound', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Erases directory contents + * + * ``` php + * cleanDir('logs'); + * ?> + * ``` + * + * @param $dirname + * @see \Codeception\Module\Filesystem::cleanDir() + */ + public function cleanDir($dirname) { + return $this->scenario->runStep(new \Codeception\Step\Action('cleanDir', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Saves contents to file + * + * @param $filename + * @param $contents + * @see \Codeception\Module\Filesystem::writeToFile() + */ + public function writeToFile($filename, $contents) { + return $this->scenario->runStep(new \Codeception\Step\Action('writeToFile', func_get_args())); + } +} diff --git a/tests/functional/_bootstrap.php b/tests/functional/_bootstrap.php new file mode 100644 index 000000000..8a8855580 --- /dev/null +++ b/tests/functional/_bootstrap.php @@ -0,0 +1,2 @@ +

      IFrame

      ', + '
      <iframe src="path/to/file.html"></iframe>

      IFrame

      ' + ), + // expression + array( + '
      ', + '
      ' + ), + // no quotes and no semicolon - http://ha.ckers.org/xss.html + array( + '', + '' + ), + // embedded encoded tab to break up XSS - http://ha.ckers.org/xss.html + array( + '', + '' + ), + // issue 178 + array( + "", + '' + ), + // issue 534 + array( + '*/" onerror="console.log(\'Yet another XSS\')">', + '*/" onerror="console.log(\'Yet another XSS\')">' + ), + // issue 602 + array( + 'test', + 'test' + ) + ); + } + + /** + * @dataProvider xssProvider + */ + public function testXSS($source, $expected) + { + $result = removeHackTag($source); + $this->assertEquals($result, $expected); + } +} diff --git a/tests/unit/UnitTester.php b/tests/unit/UnitTester.php new file mode 100644 index 000000000..1cec72fc3 --- /dev/null +++ b/tests/unit/UnitTester.php @@ -0,0 +1,300 @@ +scenario->runStep(new \Codeception\Step\Action('assertEquals', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that two variables are not equal + * + * @param $expected + * @param $actual + * @param string $message + * @see \Codeception\Module\Asserts::assertNotEquals() + */ + public function assertNotEquals($expected, $actual, $message = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('assertNotEquals', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that two variables are same + * + * @param $expected + * @param $actual + * @param string $message + * + * @return mixed + * @see \Codeception\Module\Asserts::assertSame() + */ + public function assertSame($expected, $actual, $message = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('assertSame', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that two variables are not same + * + * @param $expected + * @param $actual + * @param string $message + * @see \Codeception\Module\Asserts::assertNotSame() + */ + public function assertNotSame($expected, $actual, $message = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('assertNotSame', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that expected is greater than actual + * + * @param $expected + * @param $actual + * @param string $message + * @see \Codeception\Module\Asserts::assertGreaterThan() + */ + public function assertGreaterThan($expected, $actual, $message = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('assertGreaterThan', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * @deprecated + * @see \Codeception\Module\Asserts::assertGreaterThen() + */ + public function assertGreaterThen($expected, $actual, $message = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('assertGreaterThen', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that expected is greater or equal than actual + * + * @param $expected + * @param $actual + * @param string $message + * @see \Codeception\Module\Asserts::assertGreaterThanOrEqual() + */ + public function assertGreaterThanOrEqual($expected, $actual, $message = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('assertGreaterThanOrEqual', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * @deprecated + * @see \Codeception\Module\Asserts::assertGreaterThenOrEqual() + */ + public function assertGreaterThenOrEqual($expected, $actual, $message = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('assertGreaterThenOrEqual', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that expected is less than actual + * + * @param $expected + * @param $actual + * @param string $message + * @see \Codeception\Module\Asserts::assertLessThan() + */ + public function assertLessThan($expected, $actual, $message = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('assertLessThan', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that expected is less or equal than actual + * + * @param $expected + * @param $actual + * @param string $message + * @see \Codeception\Module\Asserts::assertLessThanOrEqual() + */ + public function assertLessThanOrEqual($expected, $actual, $message = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('assertLessThanOrEqual', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that haystack contains needle + * + * @param $needle + * @param $haystack + * @param string $message + * @see \Codeception\Module\Asserts::assertContains() + */ + public function assertContains($needle, $haystack, $message = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('assertContains', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that haystack doesn't contain needle. + * + * @param $needle + * @param $haystack + * @param string $message + * @see \Codeception\Module\Asserts::assertNotContains() + */ + public function assertNotContains($needle, $haystack, $message = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('assertNotContains', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that variable is empty. + * + * @param $actual + * @param string $message + * @see \Codeception\Module\Asserts::assertEmpty() + */ + public function assertEmpty($actual, $message = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('assertEmpty', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that variable is not empty. + * + * @param $actual + * @param string $message + * @see \Codeception\Module\Asserts::assertNotEmpty() + */ + public function assertNotEmpty($actual, $message = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('assertNotEmpty', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that variable is NULL + * + * @param $actual + * @param string $message + * @see \Codeception\Module\Asserts::assertNull() + */ + public function assertNull($actual, $message = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('assertNull', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that variable is not NULL + * + * @param $actual + * @param string $message + * @see \Codeception\Module\Asserts::assertNotNull() + */ + public function assertNotNull($actual, $message = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('assertNotNull', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that condition is positive. + * + * @param $condition + * @param string $message + * @see \Codeception\Module\Asserts::assertTrue() + */ + public function assertTrue($condition, $message = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('assertTrue', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that condition is negative. + * + * @param $condition + * @param string $message + * @see \Codeception\Module\Asserts::assertFalse() + */ + public function assertFalse($condition, $message = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('assertFalse', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Fails the test with message. + * + * @param $message + * @see \Codeception\Module\Asserts::fail() + */ + public function fail($message) { + return $this->scenario->runStep(new \Codeception\Step\Action('fail', func_get_args())); + } +} diff --git a/tests/unit/_bootstrap.php b/tests/unit/_bootstrap.php new file mode 100644 index 000000000..31b359e8a --- /dev/null +++ b/tests/unit/_bootstrap.php @@ -0,0 +1,30 @@ +assertInstanceOf('Context', Context::getInstance()); + $this->assertSame(Context::getInstance(), Context::getInstance()); + } + + public function testSetGetVars() + { + $this->assertEquals(Context::get('var1'), null); + context::set('var1', 'val1'); + $this->assertEquals(Context::get('var1'), 'val1'); + + Context::set('var2', 'val2'); + $this->assertSame(Context::get('var2'), 'val2'); + + Context::set('var3', 'val3'); + $data = new stdClass(); + $data->var1 = 'val1'; + $data->var2 = 'val2'; + $this->assertEquals(Context::gets('var1','var2'), $data); + $data->var3 = 'val3'; + $this->assertEquals(Context::getAll(), $data); + } + + public function testAddGetBodyClass() + { + $this->assertEquals(Context::getBodyClass(), ''); + Context::addBodyClass('red'); + $this->assertEquals(Context::getBodyClass(), ' class="red"'); + Context::addBodyClass('green'); + $this->assertEquals(Context::getBodyClass(), ' class="red green"'); + Context::addBodyClass('blue'); + $this->assertEquals(Context::getBodyClass(), ' class="red green blue"'); + + // remove duplicated class + Context::addBodyClass('red'); + $this->assertEquals(Context::getBodyClass(), ' class="red green blue"'); + } + + public function testRequsetResponseMethod() + { + $this->assertEquals(Context::getRequestMethod(), 'GET'); + + $_SERVER['REQUEST_METHOD'] = 'POST'; + Context::setRequestMethod(); + $this->assertEquals(Context::getRequestMethod(), 'POST'); + + $GLOBALS['HTTP_RAW_POST_DATA'] = 'abcde'; + Context::setRequestMethod(); + $this->assertEquals(Context::getRequestMethod(), 'XMLRPC'); + + $_SERVER['CONTENT_TYPE'] = 'application/json'; + Context::setRequestMethod(); + $this->assertEquals(Context::getRequestMethod(), 'JSON'); + + Context::setRequestMethod('POST'); + $this->assertEquals(Context::getRequestMethod(), 'POST'); + + $this->assertEquals(Context::getResponseMethod(), 'HTML'); + Context::setRequestMethod('JSON'); + $this->assertEquals(Context::getResponseMethod(), 'JSON'); + + Context::setResponseMethod('WRONG_TYPE'); + $this->assertEquals(Context::getResponseMethod(), 'HTML'); + Context::setResponseMethod('XMLRPC'); + $this->assertEquals(Context::getResponseMethod(), 'XMLRPC'); + Context::setResponseMethod('HTML'); + $this->assertEquals(Context::getResponseMethod(), 'HTML'); + } +} diff --git a/tests/unit/classes/file/FileHandlerTest.php b/tests/unit/classes/file/FileHandlerTest.php new file mode 100644 index 000000000..38e1084d1 --- /dev/null +++ b/tests/unit/classes/file/FileHandlerTest.php @@ -0,0 +1,44 @@ +assertEquals(FileHandler::filesize(0), '0Byte'); + $this->assertEquals(FileHandler::filesize(1), '1Byte'); + $this->assertEquals(FileHandler::filesize(386), '386Bytes'); + $this->assertEquals(FileHandler::filesize(1023), '1023Bytes'); + $this->assertEquals(FileHandler::filesize(1024), '1.0KB'); + $this->assertEquals(FileHandler::filesize(2480), '2.4KB'); + $this->assertEquals(FileHandler::filesize(1024*1024-1), '1024.0KB'); + $this->assertEquals(FileHandler::filesize(1024*1024), '1.00MB'); + $this->assertEquals(FileHandler::filesize(3*1024*1024+210*1024), '3.21MB'); + + // return bytes + $this->assertEquals(FileHandler::returnBytes('0B'), 0); + $this->assertEquals(FileHandler::returnBytes('1024B'), 1024); + $this->assertEquals(FileHandler::returnBytes('1K'), 1024); + $this->assertEquals(FileHandler::returnBytes('102.48K'), round(1024*102.48)); + $this->assertEquals(FileHandler::returnBytes('1M'), 1024*1024); + $this->assertEquals(FileHandler::returnBytes('1.12M'), round(1024*1024*1.12)); + $this->assertEquals(FileHandler::returnBytes('1023.99M'), round(1024*1024*1023.99)); + $this->assertEquals(FileHandler::returnBytes('1G'), 1024*1024*1024); + $this->assertEquals(FileHandler::returnBytes('12.02G'), round(1024*1024*1024*12.02)); + } +} diff --git a/tests/unit/classes/frontendfile/FrontEndFileHandlerTest.php b/tests/unit/classes/frontendfile/FrontEndFileHandlerTest.php new file mode 100644 index 000000000..f0a5a0330 --- /dev/null +++ b/tests/unit/classes/frontendfile/FrontEndFileHandlerTest.php @@ -0,0 +1,158 @@ +specify("js(head)", function() { + $handler = new FrontEndFileHandler(); + $handler->loadFile(array('./common/js/jquery.js')); + $handler->loadFile(array('./common/js/js_app.js', 'head')); + $handler->loadFile(array('./common/js/common.js', 'body')); + $handler->loadFile(array('./common/js/common.js', 'head')); + $handler->loadFile(array('./common/js/xml_js_filter.js', 'body')); + + $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => null); + $expected[] = array('file' => '/xe/common/js/js_app.js' . $this->_filemtime('common/js/js_app.js'), 'targetie' => null); + $expected[] = array('file' => '/xe/common/js/common.js' . $this->_filemtime('common/js/common.js'), 'targetie' => null); + $this->assertEquals($handler->getJsFileList(), $expected); + }); + + $this->specify("js(body)", function() { + $handler = new FrontEndFileHandler(); + $handler->loadFile(array('./common/js/jquery.js', 'body')); + $handler->loadFile(array('./common/js/xml_js_filter.js', 'head')); + + $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => null); + $this->assertEquals($handler->getJsFileList('body'), $expected); + }); + + $this->specify("css", function() { + $handler = new FrontEndFileHandler(); + $handler->loadFile(array('./common/css/xe.css')); + $handler->loadFile(array('./common/css/mobile.css')); + + $expected[] = array('file' => '/xe/common/css/xe.css' . $this->_filemtime('common/css/xe.css'), 'media' => 'all', 'targetie' => null); + $expected[] = array('file' => '/xe/common/css/mobile.css' . $this->_filemtime('common/css/mobile.css'), 'media' => 'all', 'targetie' => null); + $this->assertEquals($handler->getCssFileList(), $expected); + }); + + $this->specify("order (duplicate)", function() { + $handler = new FrontEndFileHandler(); + $handler->loadFile(array('./common/js/jquery.js', 'head', '', -100000)); + $handler->loadFile(array('./common/js/js_app.js', 'head', '', -100000)); + $handler->loadFile(array('./common/js/common.js', 'head', '', -100000)); + $handler->loadFile(array('./common/js/xml_handler.js', 'head', '', -100000)); + $handler->loadFile(array('./common/js/xml_js_filter.js', 'head', '', -100000)); + $handler->loadFile(array('./common/js/jquery.js', 'head', '', -100000)); + $handler->loadFile(array('./common/js/js_app.js', 'head', '', -100000)); + $handler->loadFile(array('./common/js/common.js', 'head', '', -100000)); + $handler->loadFile(array('./common/js/xml_handler.js', 'head', '', -100000)); + $handler->loadFile(array('./common/js/xml_js_filter.js', 'head', '', -100000)); + + $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => null); + $expected[] = array('file' => '/xe/common/js/js_app.js' . $this->_filemtime('common/js/js_app.js'), 'targetie' => null); + $expected[] = array('file' => '/xe/common/js/common.js' . $this->_filemtime('common/js/common.js'), 'targetie' => null); + $expected[] = array('file' => '/xe/common/js/xml_handler.js' . $this->_filemtime('common/js/xml_handler.js'), 'targetie' => null); + $expected[] = array('file' => '/xe/common/js/xml_js_filter.js' . $this->_filemtime('common/js/xml_js_filter.js'), 'targetie' => null); + $this->assertEquals($handler->getJsFileList(), $expected); + }); + + $this->specify("order (redefine)", function() { + $handler = new FrontEndFileHandler(); + $handler->loadFile(array('./common/js/xml_handler.js', 'head', '', 1)); + $handler->loadFile(array('./common/js/jquery.js', 'head', '', -100000)); + $handler->loadFile(array('./common/js/js_app.js', 'head', '', -100000)); + $handler->loadFile(array('./common/js/common.js', 'head', '', -100000)); + $handler->loadFile(array('./common/js/xml_js_filter.js', 'head', '', -100000)); + + $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => null); + $expected[] = array('file' => '/xe/common/js/js_app.js' . $this->_filemtime('common/js/js_app.js'), 'targetie' => null); + $expected[] = array('file' => '/xe/common/js/common.js' . $this->_filemtime('common/js/common.js'), 'targetie' => null); + $expected[] = array('file' => '/xe/common/js/xml_js_filter.js' . $this->_filemtime('common/js/xml_js_filter.js'), 'targetie' => null); + $expected[] = array('file' => '/xe/common/js/xml_handler.js' . $this->_filemtime('common/js/xml_handler.js'), 'targetie' => null); + $this->assertEquals($handler->getJsFileList(), $expected); + }); + + $this->specify("unload", function() { + $handler = new FrontEndFileHandler(); + $handler->loadFile(array('./common/js/jquery.js', 'head', '', -100000)); + $handler->loadFile(array('./common/js/js_app.js', 'head', '', -100000)); + $handler->loadFile(array('./common/js/common.js', 'head', '', -100000)); + $handler->loadFile(array('./common/js/xml_handler.js', 'head', '', -100000)); + $handler->loadFile(array('./common/js/xml_js_filter.js', 'head', '', -100000)); + $handler->unloadFile('./common/js/jquery.js', '', 'all'); + + $expected[] = array('file' => '/xe/common/js/js_app.js' . $this->_filemtime('common/js/js_app.js'), 'targetie' => null); + $expected[] = array('file' => '/xe/common/js/common.js' . $this->_filemtime('common/js/common.js'), 'targetie' => null); + $expected[] = array('file' => '/xe/common/js/xml_handler.js' . $this->_filemtime('common/js/xml_handler.js'), 'targetie' => null); + $expected[] = array('file' => '/xe/common/js/xml_js_filter.js' . $this->_filemtime('common/js/xml_js_filter.js'), 'targetie' => null); + $this->assertEquals($handler->getJsFileList(), $expected); + }); + + $this->specify("target IE(js)", function() { + $handler = new FrontEndFileHandler(); + $handler->loadFile(array('./common/js/jquery.js', 'head', 'ie6')); + $handler->loadFile(array('./common/js/jquery.js', 'head', 'ie7')); + $handler->loadFile(array('./common/js/jquery.js', 'head', 'ie8')); + + $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => 'ie6'); + $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => 'ie7'); + $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => 'ie8'); + $this->assertEquals($handler->getJsFileList(), $expected); + }); + + $this->specify("target IE(css)", function() { + $handler = new FrontEndFileHandler(); + $handler->loadFile(array('./common/css/common.css', null, 'ie6')); + $handler->loadFile(array('./common/css/common.css', null, 'ie7')); + $handler->loadFile(array('./common/css/common.css', null, 'ie8')); + + $expected[] = array('file' => '/xe/common/css/common.css', 'media'=>'all', 'targetie' => 'ie6'); + $expected[] = array('file' => '/xe/common/css/common.css','media'=>'all', 'targetie' => 'ie7'); + $expected[] = array('file' => '/xe/common/css/common.css', 'media'=>'all', 'targetie' => 'ie8'); + $this->assertEquals($handler->getCssFileList(), $expected); + }); + + $this->specify("media", function() { + $handler = new FrontEndFileHandler(); + $handler->loadFile(array('./common/css/common.css', 'all')); + $handler->loadFile(array('./common/css/common.css', 'screen')); + $handler->loadFile(array('./common/css/common.css', 'handled')); + + $expected[] = array('file' => '/xe/common/css/common.css', 'media'=>'all', 'targetie' => null); + $expected[] = array('file' => '/xe/common/css/common.css','media'=>'screen', 'targetie' => null); + $expected[] = array('file' => '/xe/common/css/common.css', 'media'=>'handled', 'targetie' => null); + $this->assertEquals($handler->getCssFileList(), $expected); + }); + + $this->specify("external file", function() { + $handler = new FrontEndFileHandler(); + $handler->loadFile(array('http://external.host/css/style1.css')); + $handler->loadFile(array('https://external.host/css/style2.css')); + + $expected[] = array('file' => 'http://external.host/css/style1.css', 'media'=>'all', 'targetie' => null); + $expected[] = array('file' => 'https://external.host/css/style2.css', 'media'=>'all', 'targetie' => null); + $this->assertEquals($handler->getCssFileList(), $expected); + }); + + $this->specify("external file", function() { + $handler = new FrontEndFileHandler(); + $handler->loadFile(array('//external.host/css/style.css')); + + $expected[] = array('file' => '//external.host/css/style.css', 'media'=>'all', 'targetie' => null); + $this->assertEquals($handler->getCssFileList(), $expected); + }); + + } +} diff --git a/tests/unit/classes/security/SecurityTest.php b/tests/unit/classes/security/SecurityTest.php new file mode 100644 index 000000000..9472b6a31 --- /dev/null +++ b/tests/unit/classes/security/SecurityTest.php @@ -0,0 +1,121 @@ +Hello, world'); + Context::set('content2', 'Wow, >_< !'); + + // object + $args = new stdClass; + $args->prop1 = 'Normal string'; + $args->prop2 = 'He said, "Very nice!"'; + $args->prop3 = 'Strong Baby'; + Context::set('object1', $args); + + // array + $arr = array(); + $arr[] = 'First'; + $arr[] = 'Second'; + $arr[] = 'Third'; + Context::set('array1', $arr); + + // associative array + $aarr = array(); + $aarr['elem1'] = 'One 1'; + $aarr['elem2'] = 'Two 2'; + $aarr['elem3'] = 'Three 3'; + Context::set('array2', $aarr); + } + + public function testEncodeHTML_DefaultContext() + { + $security = new Security(); + + // normal string - one + $this->setUp(); + $this->assertEquals('Hello, world', Context::get('content1')); + $security->encodeHTML('content1'); + $this->assertEquals('<strong>Hello, world</strong>', Context::get('content1')); + + // normal string - two + $this->setUp(); + $this->assertEquals('Hello, world', Context::get('content1')); + $this->assertEquals('Wow, >_< !', Context::get('content2')); + $security->encodeHTML('content1','content2'); + $this->assertEquals('<strong>Hello, world</strong>', Context::get('content1')); + $this->assertEquals('Wow, >_< !', Context::get('content2')); + + // array + $this->assertEquals(Context::get('array1'), array('First','Second','Third')); + $security->encodeHTML('array1'); // should ignore this + $this->assertEquals(Context::get('array1'), array('First','Second','Third')); + $security->encodeHTML('array1.0'); // affect only first element + $this->assertEquals(Context::get('array1'), array('<span class="first">F</span>irst','Second','Third')); + $security->encodeHTML('array1.2'); // affects only third element + $this->assertEquals(Context::get('array1'), array('<span class="first">F</span>irst','Second','<b>T</b>hird')); + $this->setUp(); // reset; + $this->assertEquals(Context::get('array1'), array('First','Second','Third')); + $security->encodeHTML('array1.'); // affects all items + $this->assertEquals(Context::get('array1'), array('<span class="first">F</span>irst','<u>S</u>econd','<b>T</b>hird')); + + // associated array + $this->assertEquals(Context::get('array2'), array('elem1'=>'One 1','elem2'=>'Two 2','elem3'=>'Three 3')); + $security->encodeHTML('array2'); // should ignore this + $this->assertEquals(Context::get('array2'), array('elem1'=>'One 1','elem2'=>'Two 2','elem3'=>'Three 3')); + $security->encodeHTML('array2.0'); // should ignore this + $this->assertEquals(Context::get('array2'), array('elem1'=>'One 1','elem2'=>'Two 2','elem3'=>'Three 3')); + $security->encodeHTML('array2.elem2'); // affects only 'elem2' + $this->assertEquals(Context::get('array2'), array('elem1'=>'One 1','elem2'=>'Two <del>2</del>','elem3'=>'Three 3')); + $this->setUp(); // reset; + $this->assertEquals(Context::get('array2'), array('elem1'=>'One 1','elem2'=>'Two 2','elem3'=>'Three 3')); + $security->encodeHTML('array2.'); // affects all items + $this->assertEquals(Context::get('array2'), array('elem1'=>'One <ins>1</ins>','elem2'=>'Two <del>2</del>','elem3'=>'Three <addr>3</addr>')); + + // object + $obj = new stdClass; + $obj->prop1 = 'Normal string'; + $obj->prop2 = 'He said, "Very nice!"'; + $obj->prop3 = 'Strong Baby'; + $this->assertEquals(Context::get('object1'), $obj); + $security->encodeHTML('object1'); // should ignore this + $this->assertEquals(Context::get('object1'), $obj); + $security->encodeHTML('object1.0'); // should ignore this + $this->assertEquals(Context::get('object1'), $obj); + $security->encodeHTML('object1.prop1'); // affects only 'prop1' property - no changes + $this->assertEquals(Context::get('object1'), $obj); + $security->encodeHTML('object1.prop3'); // affects only 'prop3' property + $obj->prop3 = '<strong>Strong</strong> Baby'; + $this->assertEquals(Context::get('object1'), $obj); + $this->setUp(); // reset + $obj->prop3 = 'Strong Baby'; + $this->assertEquals(Context::get('object1'), $obj); + $security->encodeHTML('object1.'); // affects all properties + $obj->prop2 = 'He said, "Very nice!"'; + $obj->prop3 = '<strong>Strong</strong> Baby'; + $this->assertEquals(Context::get('object1'), $obj); + } + + public function testEncodeHTML_CustomContext() + { + $array = array('Hello', 'World', 'Bold is not bald'); + + // array with no nested objects or arrays + $security = new Security($array); + $returned = $security->encodeHTML('.'); + $this->assertEquals($returned, array('Hello', 'World', '<b>Bold</b> is not bald')); + + // associative array + $array = array('first'=>'Hello', 'second'=>'World', '3rd'=>'Bold is not bald'); + $security = new Security($array); + $returned = $security->encodeHTML('first','3rd'); + $this->assertEquals($returned, array('first'=>'Hello', 'second'=>'World', '3rd'=>'<b>Bold</b> is not bald')); + } +} diff --git a/tests/unit/classes/template/TemplateHandlerTest.php b/tests/unit/classes/template/TemplateHandlerTest.php new file mode 100644 index 000000000..edd2e57ab --- /dev/null +++ b/tests/unit/classes/template/TemplateHandlerTest.php @@ -0,0 +1,282 @@ + 10">Link', + '?>cond > 10){ ?> class="active">Link' + ), + // cond + array( + 'Link1say, hello', + '?>Link1cond){ ?>say, hello' + ), + // cond + array( + 'Link1Link2', + '?>Link1v==$__Context->k){ ?>Link2' + ), + // for loop + array( + '', + '?>
        i=0;$__Context->i<$__Context->len;$__Context->i++){ ?>
      • Link
      ' + ), + // foreach loop + array( + '', + '?>
        arr&&count($__Context->arr))foreach($__Context->arr as $__Context->key=>$__Context->val){ ?>
      • Link
          arr2&&count($__Context->arr2))foreach($__Context->arr2 as $__Context->key2=>$__Context->val2){ ?>
      ' + ), + // while loop + array( + '', + '?>
        item=get_loop_item()){ ?>
      • Link
      ' + ), + // ~ + array( + 'LinkHello, world ', + '?>Linkcond){ ?>Hello, world ' + ), + // ~ + array( + 'LinkHello, {$world}', + '?>Linkcond){ ?>Hello, world ?>' + ), + // ~ ~ + array( + 'LinkHello, worldWow', + '?>Linkcond){ ?>Hello, worldWow' + ), + // ~ ~ ~ + array( + 'LinkHello, worldHaHaWow', + '?>Linkcond){ ?>Hello, worldcond2){ ?>HaHaWow' + ), + // ~ + array( + '
    1. Repeat this
    2. ', + PHP_EOL.'for($__Context->i=0;$__Context->i<$__Context->len;$__Context->i++){ ?>
    3. Repeat this
    4. ' + ), + // ~ + array( + '
    5. item{$key} : {$val}
    6. ', + PHP_EOL . 'if($__Context->arr&&count($__Context->arr))foreach($__Context->arr as $__Context->key=>$__Context->val){ ?>
    7. itemkey ?> : val ?>
    8. ' + ), + // ~ + array( + '{$v->text}', + PHP_EOL.'while($__Context->item=$__Context->list->getItem()){ ?>v->text ?>' + ), + // ~ ~ ~ ~ + array( + ' A BC', + '?>var){;'.PHP_EOL.'case "A": ?> ABC' + ), + // invalid block statement + array( + '', + '?>' + ), + // {@ ...PHP_CODE...} + array( + '{@$list_page = $page_no}', + '?>list_page = $__Context->page_no ?>' + ), + // %load_js_plugin + array( + '', + '?>' + ), + // #include + array( + '
      This is another dummy
      ', + '?>compile(\'tests/unit/classes/template\',\'sample.html\') ?>
      This is another dummy
      ' + ), + // + array( + '
      This is another dummy
      ', + '?>compile(\'tests/unit/classes\',\'sample.html\') ?>
      This is another dummy
      ' + ), + // + array( + '', + '?>' + ), + // + array( + '', + '?>' + ), + // + array( + '', + '?>' + ), + // + array( + '', + '?>compile(); ?>' + ), + // + array( + '', + '?>' + ), + // + array( + '', + '?>' + ), + // comment + array( + '', + '?>' + ), + // self-closing tag + array( + '', + PHP_EOL . 'if($__Context->foo){ ?>' + ), + // relative path1 + array( + '', + '?>' + ), + // relative path2 + array( + '', + '?>' + ), + // error case + array( + 'logo', + PHP_EOL . 'if($__Context->layout_info->logo_image){ ?>logo' + ), + // error case - ignore stylesheets + array( + '', + '?>' + ), + // error case - ignore json + array( + '', + '?>' + ), + // error case - inline javascript + array( + '
      ', + '?>
      ' + ), + // issue 103 + array( + '', + '?>' + ), + // issue 135 + array( + '

      {$key}

      Loop block {$val}
      ', + PHP_EOL . 'if($__Context->_m_list_all&&count($__Context->_m_list_all))foreach($__Context->_m_list_all as $__Context->key=>$__Context->val){ ?>

      key ?>

      Loop block val ?>
      ' + ), + // issue 136 + array( + '
      bar', + PHP_EOL . 'if($__Context->var==\'foo\'){ ?>
      bar' + ), + // issue 188 + array( + '
      Hello, world!
      ', + PHP_EOL . 'if($__Context->ii < $__Context->nn){;'.PHP_EOL.'if($__Context->dummy&&count($__Context->dummy))foreach($__Context->dummy as $__Context->k=>$__Context->v){ ?>
      Hello, world!
      ' + ), + // issue 190 + array( + '
      Hello, world!
      ', + PHP_EOL . 'if(!($__Context->i >= $__Context->n)){;'.PHP_EOL.'if($__Context->dummy&&count($__Context->dummy))foreach($__Context->dummy as $__Context->k=>$__Context->v){ ?>
      Hello, world!
      ' + ), + // issue 183 + array( + ''."\n".'
      {$vvv}
      CD
      ', + '?>vvvls&&count($__Context->vvvls))foreach($__Context->vvvls as $__Context->vvv){ ?>'."\n".'
      vvv ?>
      CD
      ' + ), + // issue 512 - ignores + array( + '
      {$lang->sl_show_topimgtext}
      ', + '?>
      lang->sl_show_topimgtext ?>
      ' + ), + // issue 584 + array( + 'mobile', + PHP_EOL . 'if($__Context->oBodex->display_extra_images[\'mobile\'] && $__Context->arr_extra && $__Context->arr_extra->bodex->mobile){ ?>mobile' + ), + // issue 831 + array( + "
    9. class=\"on\">", + "?>
    10. act, array(\n'dispNmsAdminGroupList',\n'dispNmsAdminInsertGroup',\n'dispNmsAdminGroupInfo',\n'dispNmsAdminDeleteGroup'))){ ?>class=\"on\">" + ), + // issue 746 + array( + '', + '?>' + ), + // issue 696 + array( + '{@ eval(\'$val = $document_srl;\')}', + PHP_EOL . 'eval(\'$__Context->val = $__Context->document_srl;\') ?>' + ), + ); + } + + /** + * @dataProvider provider + */ + public function testParse($tpl, $expected) + { + $tmpl = new TemplateHandlerWrapper; + $tmpl->init(dirname(__FILE__), 'no_file.html'); + $result = $tmpl->parse($tpl); + + $this->assertEquals($result, $this->prefix.$expected); + } + + public function testParse2() + { + $tmpl = new TemplateHandlerWrapper; + $tmpl->init(dirname(__FILE__), 'no_file.html'); + $result = $tmpl->parse($tpl); + + $this->assertEquals($result, ''); + } + + public function testCompileDirect() + { + $tmpl = TemplateHandler::getInstance(); + $result = $tmpl->compileDirect(dirname(__FILE__), 'sample.html'); + $result = trim($result); + + $this->assertEquals($result, $this->prefix.PHP_EOL.'if($__Context->has_blog){ ?>Taggon\'s blog'.PHP_EOL.''); + } +} + + +class TemplateHandlerWrapper extends \TemplateHandler { + private $inst; + + function __construct() { + $this->inst = parent::getInstance(); + } + + public function init($tpl_path, $tpl_filename, $tpl_file = '') { + call_user_method('init', $this->inst, $tpl_path, $tpl_filename, $tpl_file); + } + + public function parse($buff = null) { + return call_user_method('parse', $this->inst, $buff); + } +} diff --git a/tests/unit/classes/template/css/style.css b/tests/unit/classes/template/css/style.css new file mode 100644 index 000000000..af6e2a583 --- /dev/null +++ b/tests/unit/classes/template/css/style.css @@ -0,0 +1 @@ +/* only for test */ diff --git a/tests/unit/classes/template/sample.html b/tests/unit/classes/template/sample.html new file mode 100644 index 000000000..25c9ed90b --- /dev/null +++ b/tests/unit/classes/template/sample.html @@ -0,0 +1,2 @@ +Taggon's blog + diff --git a/tests/unit/classes/validator/ValidatorTest.php b/tests/unit/classes/validator/ValidatorTest.php new file mode 100644 index 000000000..c3045f814 --- /dev/null +++ b/tests/unit/classes/validator/ValidatorTest.php @@ -0,0 +1,208 @@ +filter = new stdClass; + $lang->filter->isnull = 'isnull'; + $lang->filter->outofrange = 'outofrange'; + $lang->filter->equalto = 'equalto'; + } + + public function testRequired() + { + $vd = new Validator(); + $vd->addFilter('userid', array('required'=>'true')); + + // given data + $this->assertFalse( $vd->validate(array('no-userid'=>'hello')) ); + $this->assertTrue( $vd->validate(array('userid'=>'myuserid')) ); + $this->assertFalse( $vd->validate(array('userid'=>'')) ); + + // context data + $this->assertFalse( $vd->validate() ); + Context::set('userid', '', true); + $this->assertFalse( $vd->validate() ); + Context::set('userid', 'myuserid', true); + $this->assertTrue( $vd->validate() ); + $vd->removeFilter('userid'); + $this->assertTrue( $vd->validate() ); + } + + public function testNamePattern() + { + $vd = new Validator(); + $vd->addFilter('^user_', array('length'=>'5:')); + + Context::set('user_123', 'abcd', true); + Context::set('user_456', '123', true); + $this->assertFalse( $vd->validate() ); + + Context::set('user_123', 'abcdefg', true); + $this->assertFalse( $vd->validate() ); + + Context::set('user_456', '123456', true); + $this->assertTrue( $vd->validate() ); + } + + public function testEqualTo() + { + $vd = new Validator(); + $vd->addFilter('pass1', array('equalto'=>'pass2')); + + Context::set('pass1', 'MyPassword', true); + $this->assertFalse( $vd->validate() ); + Context::set('pass2', 'WorngPassword', true); + $this->assertFalse( $vd->validate() ); + Context::set('pass2', 'MyPassword', true); + $this->assertTrue( $vd->validate() ); + } + + public function testArrayTrim() + { + $vd = new Validator(); + + $arr = array('red'=>'apple', 'yellow'=>'banana ', 'green'=>' papaya '); + $this->assertEquals($vd->arrayTrim($arr), array('red'=>'apple', 'yellow'=>'banana', 'green'=>'papaya')); + $this->assertEquals($vd->arrayTrim(' string '), 'string'); + } + + public function testLength() + { + $vd = new Validator(); + + $vd->addFilter('field1', array('length'=>'3:')); + $this->assertFalse( $vd->validate(array('field1'=>'ab')) ); + $this->assertTrue( $vd->validate(array('field1'=>'abc')) ); + $this->assertTrue( $vd->validate(array('field1'=>'abcd')) ); + } + + public function testCustomRule() + { + // regex + $vd = new Validator(); + $customRules['regex_rule']['type'] = 'regex'; + $customRules['regex_rule']['test'] = '/^[a-z]+$/'; + $vd->addRule($customRules); + $vd->addFilter('regex_field', array('rule' => 'regex_rule')); + + $this->assertTrue($vd->validate(array('regex_field' => 'abc'))); + $this->assertFalse($vd->validate(array('regex_field' => 'ABC'))); + + // enum + $vd = new Validator(); + $customRules['enum_rule']['type'] = 'enum'; + $customRules['enum_rule']['test'] = 'a,b,c'; + $vd->addRule($customRules); + $vd->addFilter('enum_field', array('rule' => 'enum_rule')); + + $this->assertTrue($vd->validate(array('enum_field' => 'a'))); + $this->assertFalse($vd->validate(array('enum_field' => 'd'))); + + // enum with custom delimiter + $vd = new Validator(); + $customRules['enum_rule2']['type'] = 'enum'; + $customRules['enum_rule2']['test'] = 'a@b@c'; + $customRules['enum_rule2']['delim'] = '@'; + $vd->addRule($customRules); + $vd->addFilter('enum_field2', array('rule' => 'enum_rule2')); + + $this->assertTrue($vd->validate(array('enum_field2' => 'a'))); + $this->assertFalse($vd->validate(array('enum_field2' => 'd'))); + + // expr + $vd = new Validator(); + $customRules['expr_rule']['type'] = 'expr'; + $customRules['expr_rule']['test'] = '$$ < 10'; + $vd->addRule($customRules); + $vd->addFilter('expr_field', array('rule' => 'expr_rule')); + + $this->assertTrue($vd->validate(array('expr_field' => '5'))); + $this->assertFalse($vd->validate(array('expr_field' => '15'))); + } + + public function testCustomRuleXml() + { + $vd = new Validator(dirname(__FILE__).'/customrule.xml'); + + $this->assertTrue($vd->validate(array('regex_field' => 'abc'))); + $this->assertFalse($vd->validate(array('regex_field' => 'ABC'))); + + $this->assertTrue($vd->validate(array('enum_field' => 'a'))); + $this->assertFalse($vd->validate(array('enum_field' => 'd'))); + + $this->assertTrue($vd->validate(array('enum_field2' => 'a'))); + $this->assertFalse($vd->validate(array('enum_field2' => 'd'))); + + $this->assertTrue($vd->validate(array('expr_field' => '5'))); + $this->assertFalse($vd->validate(array('expr_field' => '15'))); + } + + public function testCondition() + { + $vd = new Validator(); + $data = array('greeting1'=>'hello'); + + // No condition + $vd->addFilter('greeting1', array('required'=>'true')); + $this->assertTrue($vd->validate($data)); + + // Now greeting2 being mandatory if greeting1 is 'Hello' + $vd->addFilter('greeting2', array('if'=>array('test'=>'$greeting1 == "Hello"', 'attr'=>'required', 'value'=>'true'))); + + // Because greeting1 is 'hello', including lowercase 'h', greeting2 isn't required yet. + $this->assertTrue($vd->validate($data)); + + // Change the value of greeting1. Greeting2 is required now + $data['greeting1'] = 'Hello'; + $this->assertFalse($vd->validate($data)); + + $data['greeting2'] = 'World'; + $this->assertTrue($vd->validate($data)); + } + + public function testConditionXml() + { + + $vd = new Validator(dirname(__FILE__).'/condition.xml'); + $data = array('greeting1'=>'hello'); + + $this->assertTrue($vd->validate($data)); + + // Change the value of greeting1. Greeting2 is required now + $data['greeting1'] = 'Hello'; + $this->assertFalse($vd->validate($data)); + + $data['greeting2'] = 'World'; + $this->assertTrue($vd->validate($data)); + + // javascript + $vd->setCacheDir(dirname(__FILE__)); + $js = $vd->getJsPath(); + $this->assertFileEquals($js, dirname(__FILE__).'/condition.en.js'); + } + + protected function tearDown() + { + // remove cache directory + $cache_dir = dirname(__FILE__).'/ruleset'; + if(is_dir($cache_dir)) + { + $files = (array)glob($cache_dir.'/*'); + foreach($files as $file) + { + unlink($file); + } + rmdir($cache_dir); + } + } +} + diff --git a/tests/unit/classes/validator/condition.en.js b/tests/unit/classes/validator/condition.en.js new file mode 100644 index 000000000..dd24a54df --- /dev/null +++ b/tests/unit/classes/validator/condition.en.js @@ -0,0 +1,8 @@ +(function($,v){ +v=xe.getApp('validator')[0];if(!v)return; + +v.cast('ADD_FILTER',['condition', {'greeting1':{required:true},'greeting2':{'if':[{test:'$greeting1 == \'Hello\'', attr:'required', value:'true'}]}}]); +v.cast('ADD_MESSAGE',['isnull','isnull']); +v.cast('ADD_MESSAGE',['outofrange','outofrange']); +v.cast('ADD_MESSAGE',['equalto','equalto']); +})(jQuery); \ No newline at end of file diff --git a/tests/unit/classes/validator/condition.xml b/tests/unit/classes/validator/condition.xml new file mode 100644 index 000000000..a1fcb91aa --- /dev/null +++ b/tests/unit/classes/validator/condition.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/tests/unit/classes/validator/customrule.xml b/tests/unit/classes/validator/customrule.xml new file mode 100644 index 000000000..8da1a1e87 --- /dev/null +++ b/tests/unit/classes/validator/customrule.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/unit/classes/validator/insertDocument.xml b/tests/unit/classes/validator/insertDocument.xml new file mode 100644 index 000000000..56d49d7d1 --- /dev/null +++ b/tests/unit/classes/validator/insertDocument.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/tests/unit/classes/validator/login.xml b/tests/unit/classes/validator/login.xml new file mode 100644 index 000000000..db50002bf --- /dev/null +++ b/tests/unit/classes/validator/login.xml @@ -0,0 +1,7 @@ + + + + + + + From 5e93fe15e338679c99ca237bb33edf0d94ba1ed0 Mon Sep 17 00:00:00 2001 From: bnu Date: Mon, 13 Apr 2015 14:01:28 +0900 Subject: [PATCH 193/265] =?UTF-8?q?#1354=20=EB=A9=94=EB=89=B4=EB=AA=85=20?= =?UTF-8?q?=EC=98=A4=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/install/script/ko.install.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/install/script/ko.install.php b/modules/install/script/ko.install.php index a1b98708e..c2f982fd7 100644 --- a/modules/install/script/ko.install.php +++ b/modules/install/script/ko.install.php @@ -22,24 +22,24 @@ $sitemap = array( 'module_id' => 'board', 'list' => array( array( - 'menu_name' => 'SMAPLE 1', + 'menu_name' => 'SAMPLE 1', 'is_shortcut' => 'Y', 'shortcut_target' => '#', 'list' => array( array( - 'menu_name' => 'SMAPLE 1-1', + 'menu_name' => 'SAMPLE 1-1', 'is_shortcut' => 'Y', 'shortcut_target' => '#' ), ) ), array( - 'menu_name' => 'SMAPLE 2', + 'menu_name' => 'SAMPLE 2', 'is_shortcut' => 'Y', 'shortcut_target' => '#' ), array( - 'menu_name' => 'SMAPLE 3', + 'menu_name' => 'SAMPLE 3', 'is_shortcut' => 'Y', 'shortcut_target' => '#' ), From c15078e2842a7bcafac52f811e7ea221b7600615 Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 14 Apr 2015 14:27:51 +0900 Subject: [PATCH 194/265] =?UTF-8?q?fix=20#1404=20=EC=B2=A8=EB=B6=80=20?= =?UTF-8?q?=ED=97=88=EC=9A=A9=EB=90=9C=20=EC=9A=A9=EB=9F=89=20=EC=9D=B4?= =?UTF-8?q?=EC=83=81=EC=9D=98=20=ED=8C=8C=EC=9D=BC=20=EC=B2=A8=EB=B6=80?= =?UTF-8?q?=EC=8B=9C=20=EC=95=88=EB=82=B4=20=EB=A9=94=EC=8B=9C=EC=A7=80=20?= =?UTF-8?q?=EC=B6=9C=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../js/plugins/jquery.fileupload/js/main.js | 23 +++++++++++++------ .../editor/skins/ckeditor/file_upload.html | 7 +++++- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/common/js/plugins/jquery.fileupload/js/main.js b/common/js/plugins/jquery.fileupload/js/main.js index b43760016..eddd0bfd7 100644 --- a/common/js/plugins/jquery.fileupload/js/main.js +++ b/common/js/plugins/jquery.fileupload/js/main.js @@ -59,6 +59,22 @@ formData: {"editor_sequence": data.editorSequence, "upload_target_srl" : data.uploadTargetSrl, "mid" : window.current_mid}, dropZone: $container, + add: function(e, data) { + var dfd = jQuery.Deferred(); + + $.each(data.files, function(index, file) { + if(self.settings.maxFileSize <= file.size) { + dfd.reject(); + alert(window.xe.msg_exceeds_limit_size); + return false; + } + dfd.resolve(); + }); + + dfd.done(function(){ + data.submit(); + }); + }, done: function(e, res) { var result = res.response().result; @@ -69,7 +85,6 @@ if(!result) return; if(result.error == 0) { - // self.done.call(self, arguments); } else { alert(result.message); } @@ -77,12 +92,6 @@ stop: function() { self.loadFilelist(); }, - drop: function(e, data) { - }, - change: function(e, data) { - }, - always: function() { - }, start: function() { self.settings.progressbarGraph.width(0); self.settings.progressStatus.show(); diff --git a/modules/editor/skins/ckeditor/file_upload.html b/modules/editor/skins/ckeditor/file_upload.html index e7aef9149..59c28b638 100644 --- a/modules/editor/skins/ckeditor/file_upload.html +++ b/modules/editor/skins/ckeditor/file_upload.html @@ -55,7 +55,12 @@ limitMultiFileUploadSize: {$file_config->allowed_filesize} }; var uploader = $('#xefu-container-{$editor_sequence}').xeUploader(setting); - // console.log(uploader); + window.xe.msg_exceeds_limit_size = '{$lang->msg_exceeds_limit_size}'; + window.xe.msg_checked_file_is_deleted = '{$lang->msg_checked_file_is_deleted}'; + window.xe.msg_file_cart_is_null = '{$lang->msg_file_cart_is_null}'; + window.xe.msg_checked_file_is_deleted = '{$lang->msg_checked_file_is_deleted}'; + window.xe.msg_not_allowed_filetype = '{$lang->msg_not_allowed_filetype}'; + window.xe.msg_file_upload_error = '{$lang->msg_file_upload_error}'; }); From 80cfe836971d6cce99cc135f7bbd5259710499e9 Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 14 Apr 2015 15:39:28 +0900 Subject: [PATCH 195/265] MINIFY --- common/js/plugins/jquery.fileupload/js/main.min.js | 2 +- modules/editor/tpl/js/editor.app.min.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common/js/plugins/jquery.fileupload/js/main.min.js b/common/js/plugins/jquery.fileupload/js/main.min.js index 7d3feafa0..ebfbfbc7c 100644 --- a/common/js/plugins/jquery.fileupload/js/main.min.js +++ b/common/js/plugins/jquery.fileupload/js/main.min.js @@ -1 +1 @@ -!function(a){"use strict";var b={autoUpload:!0,dataType:"json",replaceFileInput:!1,dropZone:".xefu-dropzone",fileList:".xefu-list",controll:".xefu-controll",filelist:".xefu-list-files ul",filelistImages:".xefu-list-images ul",progressbar:".xefu-progressbar",progressbarGraph:".xefu-progressbar div",progressStatus:".xefu-progress-status",progressPercent:".xefu-progress-percent",actSelectedInsertContent:".xefu-act-link-selected",actSelectedDeleteFile:".xefu-act-delete-selected",actDeleteFile:".xefu-act-delete",tmplXeUploaderFileitem:'
    11. {{source_filename}}{{disp_file_size}} 선택
    12. ',tmplXeUploaderFileitemImage:'
    13. {{source_filename}}{{disp_file_size}}
    14. '},c=["fileList","actSelectedInsertContent","actSelectedDeleteFile","actDeleteFile","controll","dropZone","filelist","filelistImages","progressbar","progressbarGraph","progressPercent","progressStatus"],d=xe.createApp("XeUploader",{files:{},selected_files:{},settings:{},last_selected_file:null,editor_sequence:null,init:function(){},createInstance:function(d,e){var f=this,g=this.$container=d,h=g.data();this.editor_sequence=h.editorSequence;var i={url:request_uri.setQuery("module","file").setQuery("act","procFileUpload"),formData:{editor_sequence:h.editorSequence,upload_target_srl:h.uploadTargetSrl},dropZone:g,done:function(a,b){var c=b.response().result;c&&(jQuery.isPlainObject(c)||(c=jQuery.parseJSON(c)),c&&(0==c.error||alert(c.message)))},stop:function(){f.loadFilelist()},drop:function(){},change:function(){},always:function(){},start:function(){f.settings.progressbarGraph.width(0),f.settings.progressStatus.show(),f.settings.progressbar.show()},progressall:function(a,b){var c=parseInt(b.loaded/b.total*100,10);f.settings.progressbarGraph.width(c+"%"),f.settings.progressPercent.text(c+"%"),c>=100&&(f.settings.progressbar.delay(3e3).slideUp(),f.settings.progressStatus.delay(3e3).slideUp())}};this.settings=a.extend({},b,i,e||{}),a.each(c,function(a,b){"string"==typeof f.settings[b]&&(f.settings[b]=g.find(f.settings[b]))});g.fileupload(this.settings).prop("disabled",!a.support.fileInput).parent().addClass(a.support.fileInput?void 0:"disabled");g.data("xefu-instance",this),this.loadFilelist(),this.settings.actSelectedInsertContent.on("click",function(){f.insertToContent()}),this.settings.actSelectedDeleteFile.on("click",function(){f.deleteFile()});var j=this.settings.fileList.finderSelect({children:"li"});this.settings.fileList.on("mousedown","img",function(a){a.preventDefault()}),j.finderSelect("addHook","highlight:after",function(a){a.find("input").prop("checked",!0);var b=f.settings.fileList.find("input:checked");f.selected_files=b}),j.finderSelect("addHook","unHighlight:after",function(a){a.find("input").prop("checked",!1);var b=f.settings.fileList.find("input:checked");f.selected_files=b}),j.on("click",":checkbox",function(a){a.preventDefault()}),a(document).bind("dragover",function(a){var b=window.dropZoneTimeout;b?clearTimeout(b):f.settings.dropZone.addClass("in");var c=!1,d=a.target;do{if(d===dropZone[0]){c=!0;break}d=d.parentNode}while(null!=d);c?f.settings.dropZone.addClass("hover"):f.settings.dropZone.removeClass("hover"),window.dropZoneTimeout=setTimeout(function(){window.dropZoneTimeout=null,f.settings.dropZone.removeClass("in hover")},100)})},done:function(){},selectAllFiles:function(){},selectImageFiles:function(){},selectNonImageFiles:function(){},unselectAllFiles:function(){},unselectImageFiles:function(){},unselectNonImageFiles:function(){},insertToContent:function(){var b=this,c="";a.each(this.selected_files,function(d,e){var f=a(e).data().fileSrl,g=b.files[f];g&&(/\.(jpe?g|png|gif)$/i.test(g.download_url)?(c+=''+g.source_filename+'',c+="\r\n


      \r\n"):c+=''+g.source_filename+"\n")}),_getCkeInstance(this.editor_sequence).insertHtml(c,"unfiltered_html")},deleteFile:function(b){var c=this,d=[];b?d.push(b):a.each(c.selected_files,function(b,c){if(c){var e=a(c).data().fileSrl;d.push(e)}}),d=d.join(","),exec_json("file.procFileDelete",{file_srls:d,editor_sequence:this.editor_sequence},function(){d=d.split(","),a.each(d,function(a,b){c.settings.fileList.find("ul").find("li[data-file-srl="+b+"]").remove()}),c.loadFilelist()})},loadFilelist:function(){var b=this,c=this.$container.data();a.exec_json("file.getFileList",{editor_sequence:b.$container.data("editor-sequence")},function(d){c.uploadTargetSrl=d.upload_target_srl,editorRelKeys[b.$container.data("editor-sequence")].primary.value=d.upload_target_srl,c.uploadTargetSrl=d.uploadTargetSrl,a(".allowed_filetypes").text(d.allowed_filetypes),a(".allowed_filesize").text(d.allowed_filesize),a(".allowed_attach_size").text(d.allowed_attach_size),a(".attached_size").text(d.attached_size),a(".file_count").text(d.files.length);var e=b.settings.tmplXeUploaderFileitem,f=b.settings.tmplXeUploaderFileitemImage,g=Handlebars.compile(e),h=Handlebars.compile(f),i=[],j=[];return d.files.length?(a.each(d.files,function(a,c){b.files[c.file_srl]||(b.files[c.file_srl]=c,/\.(jpe?g|png|gif)$/i.test(c.source_filename)?i.push(h(c)):j.push(g(c)))}),b.settings.filelistImages.append(i.join("")),b.settings.filelist.append(j.join("")),b.settings.controll.show(),void b.settings.fileList.show()):(b.settings.fileList.hide(),void b.settings.controll.hide())})}});a.fn.xeUploader=function(a){var b=new d;return b&&(xe.registerApp(b),b.createInstance(this.eq(0),a)),b}}(jQuery); \ No newline at end of file +!function(a){"use strict";var b={autoUpload:!0,dataType:"json",replaceFileInput:!1,dropZone:".xefu-dropzone",fileList:".xefu-list",controll:".xefu-controll",filelist:".xefu-list-files ul",filelistImages:".xefu-list-images ul",progressbar:".xefu-progressbar",progressbarGraph:".xefu-progressbar div",progressStatus:".xefu-progress-status",progressPercent:".xefu-progress-percent",actSelectedInsertContent:".xefu-act-link-selected",actSelectedDeleteFile:".xefu-act-delete-selected",actDeleteFile:".xefu-act-delete",tmplXeUploaderFileitem:'
    15. {{source_filename}}{{disp_file_size}} 선택
    16. ',tmplXeUploaderFileitemImage:'
    17. {{source_filename}}{{disp_file_size}}
    18. '},c=["fileList","actSelectedInsertContent","actSelectedDeleteFile","actDeleteFile","controll","dropZone","filelist","filelistImages","progressbar","progressbarGraph","progressPercent","progressStatus"],d=xe.createApp("XeUploader",{files:{},selected_files:{},settings:{},last_selected_file:null,editor_sequence:null,init:function(){},createInstance:function(d,e){var f=this,g=this.$container=d,h=g.data();this.editor_sequence=h.editorSequence;var i={url:request_uri.setQuery("module","file").setQuery("act","procFileUpload"),formData:{editor_sequence:h.editorSequence,upload_target_srl:h.uploadTargetSrl,mid:window.current_mid},dropZone:g,add:function(b,c){var d=jQuery.Deferred();a.each(c.files,function(a,b){return f.settings.maxFileSize<=b.size?(d.reject(),alert(window.xe.msg_exceeds_limit_size),!1):void d.resolve()}),d.done(function(){c.submit()})},done:function(a,b){var c=b.response().result;c&&(jQuery.isPlainObject(c)||(c=jQuery.parseJSON(c)),c&&(0==c.error||alert(c.message)))},stop:function(){f.loadFilelist()},start:function(){f.settings.progressbarGraph.width(0),f.settings.progressStatus.show(),f.settings.progressbar.show()},progressall:function(a,b){var c=parseInt(b.loaded/b.total*100,10);f.settings.progressbarGraph.width(c+"%"),f.settings.progressPercent.text(c+"%"),c>=100&&(f.settings.progressbar.delay(3e3).slideUp(),f.settings.progressStatus.delay(3e3).slideUp())}};this.settings=a.extend({},b,i,e||{}),a.each(c,function(a,b){"string"==typeof f.settings[b]&&(f.settings[b]=g.find(f.settings[b]))});g.fileupload(this.settings).prop("disabled",!a.support.fileInput).parent().addClass(a.support.fileInput?void 0:"disabled");g.data("xefu-instance",this),this.loadFilelist(),this.settings.actSelectedInsertContent.on("click",function(){f.insertToContent()}),this.settings.actSelectedDeleteFile.on("click",function(){f.deleteFile()});var j=this.settings.fileList.finderSelect({children:"li"});this.settings.fileList.on("mousedown","img",function(a){a.preventDefault()}),j.finderSelect("addHook","highlight:after",function(a){a.find("input").prop("checked",!0);var b=f.settings.fileList.find("input:checked");f.selected_files=b}),j.finderSelect("addHook","unHighlight:after",function(a){a.find("input").prop("checked",!1);var b=f.settings.fileList.find("input:checked");f.selected_files=b}),j.on("click",":checkbox",function(a){a.preventDefault()}),a(document).bind("dragover",function(a){var b=window.dropZoneTimeout;b?clearTimeout(b):f.settings.dropZone.addClass("in");var c=!1,d=a.target;do{if(d===dropZone[0]){c=!0;break}d=d.parentNode}while(null!=d);c?f.settings.dropZone.addClass("hover"):f.settings.dropZone.removeClass("hover"),window.dropZoneTimeout=setTimeout(function(){window.dropZoneTimeout=null,f.settings.dropZone.removeClass("in hover")},100)})},done:function(){},selectAllFiles:function(){},selectImageFiles:function(){},selectNonImageFiles:function(){},unselectAllFiles:function(){},unselectImageFiles:function(){},unselectNonImageFiles:function(){},insertToContent:function(){var b=this,c="";a.each(this.selected_files,function(d,e){var f=a(e).data().fileSrl,g=b.files[f];g&&(/\.(jpe?g|png|gif)$/i.test(g.download_url)?(c+=''+g.source_filename+'',c+="\r\n


      \r\n"):c+=''+g.source_filename+"\n")}),_getCkeInstance(this.editor_sequence).insertHtml(c,"unfiltered_html")},deleteFile:function(b){var c=this,d=[];b?d.push(b):a.each(c.selected_files,function(b,c){if(c){var e=a(c).data().fileSrl;d.push(e)}}),d=d.join(","),exec_json("file.procFileDelete",{file_srls:d,editor_sequence:this.editor_sequence},function(){d=d.split(","),a.each(d,function(a,b){c.settings.fileList.find("ul").find("li[data-file-srl="+b+"]").remove()}),c.loadFilelist()})},loadFilelist:function(){var b=this,c=this.$container.data();a.exec_json("file.getFileList",{editor_sequence:b.$container.data("editor-sequence")},function(d){c.uploadTargetSrl=d.upload_target_srl,editorRelKeys[b.$container.data("editor-sequence")].primary.value=d.upload_target_srl,c.uploadTargetSrl=d.uploadTargetSrl,a(".allowed_filetypes").text(d.allowed_filetypes),a(".allowed_filesize").text(d.allowed_filesize),a(".allowed_attach_size").text(d.allowed_attach_size),a(".attached_size").text(d.attached_size),a(".file_count").text(d.files.length);var e=b.settings.tmplXeUploaderFileitem,f=b.settings.tmplXeUploaderFileitemImage,g=Handlebars.compile(e),h=Handlebars.compile(f),i=[],j=[];return d.files.length?(a.each(d.files,function(a,c){b.files[c.file_srl]||(b.files[c.file_srl]=c,/\.(jpe?g|png|gif)$/i.test(c.source_filename)?i.push(h(c)):j.push(g(c)))}),b.settings.filelistImages.append(i.join("")),b.settings.filelist.append(j.join("")),b.settings.controll.show(),void b.settings.fileList.show()):(b.settings.fileList.hide(),void b.settings.controll.hide())})}});a.fn.xeUploader=function(a){var b=new d;return b&&(xe.registerApp(b),b.createInstance(this.eq(0),a)),b}}(jQuery); \ No newline at end of file diff --git a/modules/editor/tpl/js/editor.app.min.js b/modules/editor/tpl/js/editor.app.min.js index e096b79c2..c11157caa 100644 --- a/modules/editor/tpl/js/editor.app.min.js +++ b/modules/editor/tpl/js/editor.app.min.js @@ -1 +1 @@ -!function(a){"use strict";function b(b){return a.grep(b,function(c,d){return c.length&&a.inArray(c,b)===d})}var c={bodyClass:"xe_content editable",toolbarCanCollapse:!0,toolbarGroups:[{name:"clipboard",groups:["undo","clipboard"]},{name:"editing",groups:["find","selection"]},{name:"links"},{name:"insert"},{name:"tools"},{name:"document",groups:["mode"]},"/",{name:"basicstyles",groups:["basicstyles","cleanup"]},{name:"paragraph",groups:["list","indent","blocks","align","bidi"]},"/",{name:"styles"},{name:"colors"},{name:"xecomponent"},{name:"others"}],allowedContent:!0,removePlugins:"stylescombo,language,bidi,flash,pagebreak",removeButtons:"Save,Preview,Print,Cut,Copy,Paste",uiColor:"#EFF0F0"},d=xe.createApp("XeCkEditor",{ckeconfig:{},editor_sequence:null,init:function(){var a=this;CKEDITOR.on("instanceCreated",function(){a.cast("CKEDITOR_CREATED")}),CKEDITOR.on("ready",function(){a.cast("CKEDITOR_READY")}),CKEDITOR.on("instanceReady",function(){a.cast("CKEDITOR_INSTANCE_READY")}),CKEDITOR.on("instanceLoaded",function(){a.cast("CKEDITOR_LOADED")})},editorInit:function(d,e){{var f=this,g=d,h=g.closest("form"),i=e.content_field,j=g.data();g.data().editorSequence}this.ckeconfig=a.extend({},c,e.ckeconfig||{}),this.editor_sequence=j.editorSequence,h.attr("editor_sequence",j.editorSequence);var k=CKEDITOR.appendTo(g[0],{},i.val());k.on("customConfigLoaded",function(d){if(k.config=a.extend({},d.editor.config,f.ckeconfig),a.isFunction(CKEDITOR.editorConfig)){var g={};CKEDITOR.editorConfig(g),a.each(g,function(a,b){k.config[a]=b})}var h=d.editor.config.bodyClass.split(" ");if(h.push(c.bodyClass),h=b(h),k.config.bodyClass=h.join(" "),e.loadXeComponent){var i=d.editor.config.extraPlugins.split(",");i.push("xe_component"),i=b(i),k.config.extraPlugins=i.join(",")}e.enableToolbar||(k.config.toolbar=[])}),g.data("cke_instance",k),window.editorRelKeys[j.editorSequence]={},window.editorRelKeys[j.editorSequence].primary=h.find("[name="+j.editorPrimaryKeyName+"]")[0],window.editorRelKeys[j.editorSequence].content=h.find("[name="+j.editorContentKeyName+"]")[0],window.editorRelKeys[j.editorSequence].func=function(a){return f.getContent.call(f,a)},window.editorRelKeys[j.editorSequence].pasteHTML=function(a){k.insertHtml(a,"html")}},getContent:function(a){var b=this,c=_getCkeInstance(a).getData();return b.cast("GET_CONTENT",[c]),c},getInstance:function(a){return CKEDITOR.instances[a]},API_EDITOR_CREATED:function(){}});a.fn.XeCkEditor=function(a){var b=new d(this.eq(0),a);return b&&(xe.registerApp(b),b.editorInit(this.eq(0),a)),b},window.xe.XeCkEditor=function(){var a=new d;return a}}(jQuery); \ No newline at end of file +!function(a){"use strict";function b(b){return a.grep(b,function(c,d){return c.length&&a.inArray(c,b)===d})}var c={bodyClass:"xe_content editable",toolbarCanCollapse:!0,toolbarGroups:[{name:"clipboard",groups:["undo","clipboard"]},{name:"editing",groups:["find","selection"]},{name:"links"},{name:"insert"},{name:"tools"},{name:"document",groups:["mode"]},"/",{name:"basicstyles",groups:["basicstyles","cleanup"]},{name:"paragraph",groups:["list","indent","blocks","align","bidi"]},"/",{name:"styles"},{name:"colors"},{name:"xecomponent"},{name:"others"}],allowedContent:!0,removePlugins:"stylescombo,language,bidi,flash,pagebreak",removeButtons:"Save,Preview,Print,Cut,Copy,Paste",uiColor:"#EFF0F0"},d=xe.createApp("XeCkEditor",{ckeconfig:{},editor_sequence:null,init:function(){var a=this;CKEDITOR.on("instanceCreated",function(){a.cast("CKEDITOR_CREATED")}),CKEDITOR.on("ready",function(){a.cast("CKEDITOR_READY")}),CKEDITOR.on("instanceReady",function(){a.cast("CKEDITOR_INSTANCE_READY")}),CKEDITOR.on("instanceLoaded",function(){a.cast("CKEDITOR_LOADED")})},editorInit:function(d,e){{var f=this,g=d,h=g.closest("form"),i=e.content_field,j=g.data();g.data().editorSequence}this.ckeconfig=a.extend({},c,e.ckeconfig||{}),this.editor_sequence=j.editorSequence,h.attr("editor_sequence",j.editorSequence),CKEDITOR.env.mobile&&(CKEDITOR.env.isCompatible=!0);var k=CKEDITOR.appendTo(g[0],{},i.val());k.on("customConfigLoaded",function(d){if(k.config=a.extend({},d.editor.config,f.ckeconfig),a.isFunction(CKEDITOR.editorConfig)){var g={};CKEDITOR.editorConfig(g),a.each(g,function(a,b){k.config[a]=b})}var h=d.editor.config.bodyClass.split(" ");if(h.push(c.bodyClass),h=b(h),k.config.bodyClass=h.join(" "),e.loadXeComponent){var i=d.editor.config.extraPlugins.split(",");i.push("xe_component"),i=b(i),k.config.extraPlugins=i.join(",")}e.enableToolbar||(k.config.toolbar=[])}),g.data("cke_instance",k),window.editorRelKeys[j.editorSequence]={},window.editorRelKeys[j.editorSequence].primary=h.find("[name="+j.editorPrimaryKeyName+"]")[0],window.editorRelKeys[j.editorSequence].content=h.find("[name="+j.editorContentKeyName+"]")[0],window.editorRelKeys[j.editorSequence].func=function(a){return f.getContent.call(f,a)},window.editorRelKeys[j.editorSequence].pasteHTML=function(a){k.insertHtml(a,"html")}},getContent:function(a){var b=this,c=_getCkeInstance(a).getData();return b.cast("GET_CONTENT",[c]),c},getInstance:function(a){return CKEDITOR.instances[a]},API_EDITOR_CREATED:function(){}});a.fn.XeCkEditor=function(a){var b=new d(this.eq(0),a);return b&&(xe.registerApp(b),b.editorInit(this.eq(0),a)),b},window.xe.XeCkEditor=function(){var a=new d;return a}}(jQuery); \ No newline at end of file From 5d5989ee9fee6ff6d78afb2edec74540961f8d8f Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 14 Apr 2015 15:39:50 +0900 Subject: [PATCH 196/265] version up to 1.8.1 --- config/config.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.inc.php b/config/config.inc.php index 3fadda2c5..8fd8a1eff 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -29,7 +29,7 @@ define('__ZBXE__', __XE__); /** * Display XE's full version. */ -define('__XE_VERSION__', '1.8.0'); +define('__XE_VERSION__', '1.8.1'); define('__XE_VERSION_ALPHA__', (stripos(__XE_VERSION__, 'alpha') !== false)); define('__XE_VERSION_BETA__', (stripos(__XE_VERSION__, 'beta') !== false)); define('__XE_VERSION_RC__', (stripos(__XE_VERSION__, 'rc') !== false)); From 5005f1dcd28caa1036fb25ccebb32900825d62b6 Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 14 Apr 2015 16:05:20 +0900 Subject: [PATCH 197/265] =?UTF-8?q?=EC=84=A4=EC=B9=98=20=ED=9B=84=20?= =?UTF-8?q?=EB=8D=B0=EB=AA=A8=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83?= =?UTF-8?q?=EC=97=90=20=EB=A9=94=EB=89=B4=EA=B0=80=20=EC=A0=9C=EB=8C=80?= =?UTF-8?q?=EB=A1=9C=20=EC=A7=80=EC=A0=95=EB=90=98=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=EA=B3=A0=EC=B9=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/install/script/ko.install.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/modules/install/script/ko.install.php b/modules/install/script/ko.install.php index c2f982fd7..92ba4cbb6 100644 --- a/modules/install/script/ko.install.php +++ b/modules/install/script/ko.install.php @@ -175,16 +175,12 @@ foreach($sitemap as $id => &$val) $oMenuAdminController->makeHomemenuCacheFile($val['menu_srl']); } - - // create Layout //extra_vars init $extra_vars = new stdClass(); $extra_vars->GNB = $sitemap['GNB']['menu_srl']; -$extra_vars->UNB = $simtemap['UNB']['menu_srl']; -$extra_vars->FNB = $simtemap['FNB']['menu_srl']; -$extra_vars->menu_name_list = array(); -$extra_vars->menu_name_list[$sitemap['GNB']['menu_srl']] = 'Welcome menu'; +$extra_vars->UNB = $sitemap['UNB']['menu_srl']; +$extra_vars->FNB = $sitemap['FNB']['menu_srl']; $args = new stdClass(); $layout_srl = $args->layout_srl = getNextSequence(); From a480454664b9f4f73a504137a74751fc9a8a9b1e Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 15 Apr 2015 12:40:23 +0900 Subject: [PATCH 198/265] =?UTF-8?q?fix=20#1409=20`FileHandler::getRemoteRe?= =?UTF-8?q?source()`=EC=97=90=EC=84=9C=20timeout=20=EC=84=A4=EC=A0=95?= =?UTF-8?q?=EC=9D=B4=20=EB=B0=98=EC=98=81=EB=90=98=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=EA=B3=A0=EC=B9=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/file/FileHandler.class.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/classes/file/FileHandler.class.php b/classes/file/FileHandler.class.php index 1a022c65e..9dd628ded 100644 --- a/classes/file/FileHandler.class.php +++ b/classes/file/FileHandler.class.php @@ -570,9 +570,8 @@ class FileHandler $oRequest->setMethod($method); if($body) $oRequest->setBody($body); - - $oRequest->_timeout = $timeout; } + $oRequest->setConfig('timeout', $timeout); $oResponse = $oRequest->sendRequest(); From 801827fdbe19510e245ac2676f01c20f686e3745 Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 15 Apr 2015 12:41:06 +0900 Subject: [PATCH 199/265] =?UTF-8?q?fix=20#1410=20=EC=84=A4=EC=B9=98=20?= =?UTF-8?q?=EC=8B=9C=20=EC=9E=98=EB=AA=BB=EB=90=9C=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=EC=9D=98=20=EC=95=A1=EC=85=98=EC=9D=84=20=ED=98=B8=EC=B6=9C?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=EA=B3=A0=EC=B9=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/install/install.controller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/install/install.controller.php b/modules/install/install.controller.php index 99dc1644a..3cadf40a1 100644 --- a/modules/install/install.controller.php +++ b/modules/install/install.controller.php @@ -403,7 +403,7 @@ class installController extends install if(!in_array(Context::getRequestMethod(),array('XMLRPC','JSON'))) { - $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispInstallCheckEnv'); + $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'act', 'dispInstallCheckEnv'); $this->setRedirectUrl($returnUrl); } } From 3e58d680d804a9debd6293c5ec7aa36ea0d1571a Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 15 Apr 2015 12:41:54 +0900 Subject: [PATCH 200/265] =?UTF-8?q?rewrite=20=EC=82=AC=EC=9A=A9=20?= =?UTF-8?q?=ED=99=98=EA=B2=BD=EC=9D=84=20=EC=B2=B4=ED=81=AC=ED=95=A0=20?= =?UTF-8?q?=EB=95=8C=20timeout=20=EC=8B=9C=EA=B0=84=20=EC=A1=B0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/install/install.controller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/install/install.controller.php b/modules/install/install.controller.php index 3cadf40a1..0b0a3d706 100644 --- a/modules/install/install.controller.php +++ b/modules/install/install.controller.php @@ -447,7 +447,7 @@ class installController extends install $requestUrl = sprintf('%s://%s%s%s', $scheme, $hostname, $str_port, $query); $requestConfig = array(); $requestConfig['ssl_verify_peer'] = false; - $buff = FileHandler::getRemoteResource($requestUrl, null, 10, 'GET', null, array(), array(), array(), $requestConfig); + $buff = FileHandler::getRemoteResource($requestUrl, null, 3, 'GET', null, array(), array(), array(), $requestConfig); FileHandler::removeFile(_XE_PATH_.$checkFilePath); From 0ca3a7d91f9b8e8451b3353345a143f2795fa5d6 Mon Sep 17 00:00:00 2001 From: sejin7940 Date: Wed, 15 Apr 2015 21:15:15 +0900 Subject: [PATCH 201/265] Update board.admin.view.php --- modules/board/board.admin.view.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/board/board.admin.view.php b/modules/board/board.admin.view.php index bdf9068da..12383f051 100644 --- a/modules/board/board.admin.view.php +++ b/modules/board/board.admin.view.php @@ -260,8 +260,8 @@ class boardAdminView extends board { * @brief display extra variables **/ function dispBoardAdminExtraVars() { - $oDocumentAdminModel = getModel('document'); - $extra_vars_content = $oDocumentAdminModel->getExtraVarsHTML($this->module_info->module_srl); + $oDocumentModel = getModel('document'); + $extra_vars_content = $oDocumentModel->getExtraVarsHTML($this->module_info->module_srl); Context::set('extra_vars_content', $extra_vars_content); $this->setTemplateFile('extra_vars'); From 0d24de74d38bb28b79ee033bba33cbe998f47647 Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 15 Apr 2015 21:33:45 +0900 Subject: [PATCH 202/265] =?UTF-8?q?=EB=8F=99=EC=9E=91=ED=95=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8D=98=20Unit=20test=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EB=B3=B5=EC=9B=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/_bootstrap.php | 23 +++++ tests/unit/FuncIncTest.class.php | 98 +++++++++---------- tests/unit/FuncIncTest.php | 56 +++++++++++ tests/unit/UnitTester.php | 38 +------ tests/unit/_bootstrap.php | 26 ----- tests/unit/classes/security/SecurityTest.php | 19 ++-- .../unit/classes/validator/ValidatorTest.php | 4 +- 7 files changed, 141 insertions(+), 123 deletions(-) create mode 100644 tests/unit/FuncIncTest.php diff --git a/tests/_bootstrap.php b/tests/_bootstrap.php index e0d603d32..a778b4088 100644 --- a/tests/_bootstrap.php +++ b/tests/_bootstrap.php @@ -1,3 +1,26 @@

      IFrame

      ', - '
      <iframe src="path/to/file.html"></iframe>

      IFrame

      ' - ), - // expression - array( - '
      ', - '
      ' - ), - // no quotes and no semicolon - http://ha.ckers.org/xss.html - array( - '', - '' - ), - // embedded encoded tab to break up XSS - http://ha.ckers.org/xss.html - array( - '', - '' - ), - // issue 178 - array( - "", - '' - ), - // issue 534 - array( - '*/" onerror="console.log(\'Yet another XSS\')">', - '*/" onerror="console.log(\'Yet another XSS\')">' - ), - // issue 602 - array( - 'test', - 'test' - ) - ); - } + static public function provider() + { + return array( + // remove iframe + array( + '', + '
      <iframe src="path/to/file.html"></iframe>

      IFrame

      ' + ), + // expression + array( + '
      ', + '
      ' + ), + // no quotes and no semicolon - http://ha.ckers.org/xss.html + array( + '', + '' + ), + // embedded encoded tab to break up XSS - http://ha.ckers.org/xss.html + array( + '', + '' + ), + // issue 178 + array( + "", + '' + ), + // issue 534 + array( + '*/" onerror="console.log(\'Yet another XSS\')">', + '*/" onerror="console.log(\'Yet another XSS\')">' + ), + // issue 602 + array( + 'test', + 'test' + ) + ); + } - /** - * @dataProvider xssProvider - */ - public function testXSS($source, $expected) - { - $result = removeHackTag($source); - $this->assertEquals($result, $expected); - } + /** + * @dataProvider provider + */ + public function testXss($source, $expected) + { + $result = removeHackTag($source); + $this->assertEquals($result, $expected); + } } diff --git a/tests/unit/FuncIncTest.php b/tests/unit/FuncIncTest.php new file mode 100644 index 000000000..bb7e86fa7 --- /dev/null +++ b/tests/unit/FuncIncTest.php @@ -0,0 +1,56 @@ +

      IFrame

      ', + // '
      <iframe src="path/to/file.html"></iframe>

      IFrame

      ' + '' + ), + // expression + array( + '
      ', + '
      ' + ), + // no quotes and no semicolon - http://ha.ckers.org/xss.html + array( + '', + '' + ), + // embedded encoded tab to break up XSS - http://ha.ckers.org/xss.html + array( + '', + '' + ), + // issue 178 + array( + "", + 'invalid.jpg' + ), + // issue 534 + array( + '*/" onerror="console.log(\'Yet another XSS\')">', + 'as"df dummy=*/" onerror="console.log(\'Yet another XSS\')">' + ), + // issue 602 + array( + 'test', + '' + ) + ); + } + + /** + * @dataProvider provider + */ + public function testXss($source, $expected) + { + $result = removeHackTag($source); + $this->assertEquals($result, $expected); + } +} diff --git a/tests/unit/UnitTester.php b/tests/unit/UnitTester.php index 1cec72fc3..86effba76 100644 --- a/tests/unit/UnitTester.php +++ b/tests/unit/UnitTester.php @@ -1,4 +1,4 @@ -scenario->runStep(new \Codeception\Step\Action('assertSame', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that two variables are not same - * - * @param $expected - * @param $actual - * @param string $message - * @see \Codeception\Module\Asserts::assertNotSame() - */ - public function assertNotSame($expected, $actual, $message = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('assertNotSame', func_get_args())); - } - - /** * [!] Method is generated. Documentation taken from corresponding module. * diff --git a/tests/unit/_bootstrap.php b/tests/unit/_bootstrap.php index 31b359e8a..8ef4ccfd6 100644 --- a/tests/unit/_bootstrap.php +++ b/tests/unit/_bootstrap.php @@ -1,30 +1,4 @@ assertTrue(true); // normal string - one - $this->setUp(); + $this->_before(); $this->assertEquals('Hello, world', Context::get('content1')); $security->encodeHTML('content1'); $this->assertEquals('<strong>Hello, world</strong>', Context::get('content1')); // normal string - two - $this->setUp(); + $this->_before(); $this->assertEquals('Hello, world', Context::get('content1')); $this->assertEquals('Wow, >_< !', Context::get('content2')); $security->encodeHTML('content1','content2'); @@ -61,7 +62,7 @@ class SecurityTest extends \Codeception\TestCase\Test $this->assertEquals(Context::get('array1'), array('<span class="first">F</span>irst','Second','Third')); $security->encodeHTML('array1.2'); // affects only third element $this->assertEquals(Context::get('array1'), array('<span class="first">F</span>irst','Second','<b>T</b>hird')); - $this->setUp(); // reset; + $this->_before(); // reset; $this->assertEquals(Context::get('array1'), array('First','Second','Third')); $security->encodeHTML('array1.'); // affects all items $this->assertEquals(Context::get('array1'), array('<span class="first">F</span>irst','<u>S</u>econd','<b>T</b>hird')); @@ -74,7 +75,7 @@ class SecurityTest extends \Codeception\TestCase\Test $this->assertEquals(Context::get('array2'), array('elem1'=>'One 1','elem2'=>'Two 2','elem3'=>'Three 3')); $security->encodeHTML('array2.elem2'); // affects only 'elem2' $this->assertEquals(Context::get('array2'), array('elem1'=>'One 1','elem2'=>'Two <del>2</del>','elem3'=>'Three 3')); - $this->setUp(); // reset; + $this->_before(); // reset; $this->assertEquals(Context::get('array2'), array('elem1'=>'One 1','elem2'=>'Two 2','elem3'=>'Three 3')); $security->encodeHTML('array2.'); // affects all items $this->assertEquals(Context::get('array2'), array('elem1'=>'One <ins>1</ins>','elem2'=>'Two <del>2</del>','elem3'=>'Three <addr>3</addr>')); @@ -94,7 +95,7 @@ class SecurityTest extends \Codeception\TestCase\Test $security->encodeHTML('object1.prop3'); // affects only 'prop3' property $obj->prop3 = '<strong>Strong</strong> Baby'; $this->assertEquals(Context::get('object1'), $obj); - $this->setUp(); // reset + $this->_before(); // reset $obj->prop3 = 'Strong Baby'; $this->assertEquals(Context::get('object1'), $obj); $security->encodeHTML('object1.'); // affects all properties @@ -103,7 +104,7 @@ class SecurityTest extends \Codeception\TestCase\Test $this->assertEquals(Context::get('object1'), $obj); } - public function testEncodeHTML_CustomContext() + public function testEncodeHtmlCustomContext() { $array = array('Hello', 'World', 'Bold is not bald'); diff --git a/tests/unit/classes/validator/ValidatorTest.php b/tests/unit/classes/validator/ValidatorTest.php index c3045f814..2b2e45f46 100644 --- a/tests/unit/classes/validator/ValidatorTest.php +++ b/tests/unit/classes/validator/ValidatorTest.php @@ -7,11 +7,11 @@ require_once _XE_PATH_.'classes/validator/Validator.class.php'; class ValidatorTest extends \Codeception\TestCase\Test { - protected function setUp() + public function _before() { global $lang; - $lang->filter = new stdClass; + $lang->filter = new stdClass(); $lang->filter->isnull = 'isnull'; $lang->filter->outofrange = 'outofrange'; $lang->filter->equalto = 'equalto'; From b07cd5f596652b97e82f358af017aaaad936697e Mon Sep 17 00:00:00 2001 From: bnu Date: Thu, 16 Apr 2015 15:12:08 +0900 Subject: [PATCH 203/265] =?UTF-8?q?=EC=84=A4=EC=B9=98=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- codeception.yml | 9 +- tests/_support/installHelper.php | 10 + tests/acceptance/AcceptanceTester.php | 2 +- tests/functional/FunctionalTester.php | 2 +- tests/install.suite.yml | 17 + tests/install/InstallTester.php | 1918 +++++++++++++++++++++++++ tests/install/_bootstrap.php | 5 + tests/install/_pages/installPage.php | 41 + tests/install/_steps/AdminSteps.php | 18 + tests/install/installCept.php | 105 ++ tests/unit/UnitTester.php | 38 +- 11 files changed, 2157 insertions(+), 8 deletions(-) create mode 100644 tests/_support/installHelper.php create mode 100644 tests/install.suite.yml create mode 100644 tests/install/InstallTester.php create mode 100644 tests/install/_bootstrap.php create mode 100644 tests/install/_pages/installPage.php create mode 100644 tests/install/_steps/AdminSteps.php create mode 100644 tests/install/installCept.php diff --git a/codeception.yml b/codeception.yml index 9355c638c..7f760718c 100644 --- a/codeception.yml +++ b/codeception.yml @@ -11,8 +11,9 @@ settings: modules: config: Db: - dsn: '' - user: '' - password: '' - dump: tests/_data/dump.sql + dsn: 'mysql:host=127.0.0.1;dbname=xe_test' + user: 'root' + password: 'root' + populate: false + cleanup: false error_level: "E_STRICTE_ALL & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED & ~E_NOTICE" diff --git a/tests/_support/installHelper.php b/tests/_support/installHelper.php new file mode 100644 index 000000000..57dcd339f --- /dev/null +++ b/tests/_support/installHelper.php @@ -0,0 +1,10 @@ +setHeader('X-Requested-With', 'Codeception'); + * $I->amOnPage('test-headers.php'); + * ?> + * ``` + * + * @param string $name the name of the request header + * @param string $value the value to set it to for subsequent + * requests + * @see \Codeception\Module\PhpBrowser::setHeader() + */ + public function setHeader($name, $value) { + return $this->scenario->runStep(new \Codeception\Step\Action('setHeader', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Deletes the header with the passed name. Subsequent requests + * will not have the deleted header in its request. + * + * Example: + * ```php + * setHeader('X-Requested-With', 'Codeception'); + * $I->amOnPage('test-headers.php'); + * // ... + * $I->deleteHeader('X-Requested-With'); + * $I->amOnPage('some-other-page.php'); + * ?> + * ``` + * + * @param string $name the name of the header to delete. + * @see \Codeception\Module\PhpBrowser::deleteHeader() + */ + public function deleteHeader($name) { + return $this->scenario->runStep(new \Codeception\Step\Action('deleteHeader', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Authenticates user for HTTP_AUTH + * + * @param $username + * @param $password + * @see \Codeception\Module\PhpBrowser::amHttpAuthenticated() + */ + public function amHttpAuthenticated($username, $password) { + return $this->scenario->runStep(new \Codeception\Step\Condition('amHttpAuthenticated', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Opens the page for the given relative URI. + * + * ``` php + * amOnPage('/'); + * // opens /register page + * $I->amOnPage('/register'); + * ?> + * ``` + * + * @param $page + * @see \Codeception\Module\PhpBrowser::amOnPage() + */ + public function amOnPage($page) { + return $this->scenario->runStep(new \Codeception\Step\Condition('amOnPage', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Open web page at the given absolute URL and sets its hostname as the base host. + * + * ``` php + * amOnUrl('http://codeception.com'); + * $I->amOnPage('/quickstart'); // moves to http://codeception.com/quickstart + * ?> + * ``` + * @see \Codeception\Module\PhpBrowser::amOnUrl() + */ + public function amOnUrl($url) { + return $this->scenario->runStep(new \Codeception\Step\Condition('amOnUrl', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Changes the subdomain for the 'url' configuration parameter. + * Does not open a page; use `amOnPage` for that. + * + * ``` php + * amOnSubdomain('user'); + * $I->amOnPage('/'); + * // moves to http://user.mysite.com/ + * ?> + * ``` + * + * @param $subdomain + * + * @return mixed + * @see \Codeception\Module\PhpBrowser::amOnSubdomain() + */ + public function amOnSubdomain($subdomain) { + return $this->scenario->runStep(new \Codeception\Step\Condition('amOnSubdomain', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Low-level API method. + * If Codeception commands are not enough, use [Guzzle HTTP Client](http://guzzlephp.org/) methods directly + * + * Example: + * + * ``` php + * executeInGuzzle(function (\GuzzleHttp\Client $client) { + * $client->get('/get', ['query' => ['foo' => 'bar']]); + * }); + * ?> + * ``` + * + * It is not recommended to use this command on a regular basis. + * If Codeception lacks important Guzzle Client methods, implement them and submit patches. + * + * @param callable $function + * @see \Codeception\Module\PhpBrowser::executeInGuzzle() + */ + public function executeInGuzzle($function) { + return $this->scenario->runStep(new \Codeception\Step\Action('executeInGuzzle', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Perform a click on a link or a button, given by a locator. + * If a fuzzy locator is given, the page will be searched for a button, link, or image matching the locator string. + * For buttons, the "value" attribute, "name" attribute, and inner text are searched. + * For links, the link text is searched. + * For images, the "alt" attribute and inner text of any parent links are searched. + * + * The second parameter is a context (CSS or XPath locator) to narrow the search. + * + * Note that if the locator matches a button of type `submit`, the form will be submitted. + * + * ``` php + * click('Logout'); + * // button of form + * $I->click('Submit'); + * // CSS button + * $I->click('#form input[type=submit]'); + * // XPath + * $I->click('//form/*[@type=submit]'); + * // link in context + * $I->click('Logout', '#nav'); + * // using strict locator + * $I->click(['link' => 'Login']); + * ?> + * ``` + * + * @param $link + * @param $context + * @see \Codeception\Lib\InnerBrowser::click() + */ + public function click($link, $context = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('click', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current page contains the given string. + * Specify a locator as the second parameter to match a specific region. + * + * ``` php + * see('Logout'); // I can suppose user is logged in + * $I->see('Sign Up','h1'); // I can suppose it's a signup page + * $I->see('Sign Up','//body/h1'); // with XPath + * ?> + * ``` + * + * @param $text + * @param null $selector + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::see() + */ + public function canSee($text, $selector = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('see', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current page contains the given string. + * Specify a locator as the second parameter to match a specific region. + * + * ``` php + * see('Logout'); // I can suppose user is logged in + * $I->see('Sign Up','h1'); // I can suppose it's a signup page + * $I->see('Sign Up','//body/h1'); // with XPath + * ?> + * ``` + * + * @param $text + * @param null $selector + * @see \Codeception\Lib\InnerBrowser::see() + */ + public function see($text, $selector = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('see', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current page doesn't contain the text specified. + * Give a locator as the second parameter to match a specific region. + * + * ```php + * dontSee('Login'); // I can suppose user is already logged in + * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page + * $I->dontSee('Sign Up','//body/h1'); // with XPath + * ?> + * ``` + * + * @param $text + * @param null $selector + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSee() + */ + public function cantSee($text, $selector = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSee', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current page doesn't contain the text specified. + * Give a locator as the second parameter to match a specific region. + * + * ```php + * dontSee('Login'); // I can suppose user is already logged in + * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page + * $I->dontSee('Sign Up','//body/h1'); // with XPath + * ?> + * ``` + * + * @param $text + * @param null $selector + * @see \Codeception\Lib\InnerBrowser::dontSee() + */ + public function dontSee($text, $selector = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSee', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there's a link with the specified text. + * Give a full URL as the second parameter to match links with that exact URL. + * + * ``` php + * seeLink('Logout'); // matches Logout + * $I->seeLink('Logout','/logout'); // matches Logout + * ?> + * ``` + * + * @param $text + * @param null $url + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeLink() + */ + public function canSeeLink($text, $url = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeLink', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there's a link with the specified text. + * Give a full URL as the second parameter to match links with that exact URL. + * + * ``` php + * seeLink('Logout'); // matches Logout + * $I->seeLink('Logout','/logout'); // matches Logout + * ?> + * ``` + * + * @param $text + * @param null $url + * @see \Codeception\Lib\InnerBrowser::seeLink() + */ + public function seeLink($text, $url = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeLink', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page doesn't contain a link with the given string. + * If the second parameter is given, only links with a matching "href" attribute will be checked. + * + * ``` php + * dontSeeLink('Logout'); // I suppose user is not logged in + * $I->dontSeeLink('Checkout now', '/store/cart.php'); + * ?> + * ``` + * + * @param $text + * @param null $url + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeLink() + */ + public function cantSeeLink($text, $url = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeLink', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page doesn't contain a link with the given string. + * If the second parameter is given, only links with a matching "href" attribute will be checked. + * + * ``` php + * dontSeeLink('Logout'); // I suppose user is not logged in + * $I->dontSeeLink('Checkout now', '/store/cart.php'); + * ?> + * ``` + * + * @param $text + * @param null $url + * @see \Codeception\Lib\InnerBrowser::dontSeeLink() + */ + public function dontSeeLink($text, $url = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeLink', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that current URI contains the given string. + * + * ``` php + * seeInCurrentUrl('home'); + * // to match: /users/1 + * $I->seeInCurrentUrl('/users/'); + * ?> + * ``` + * + * @param $uri + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeInCurrentUrl() + */ + public function canSeeInCurrentUrl($uri) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInCurrentUrl', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that current URI contains the given string. + * + * ``` php + * seeInCurrentUrl('home'); + * // to match: /users/1 + * $I->seeInCurrentUrl('/users/'); + * ?> + * ``` + * + * @param $uri + * @see \Codeception\Lib\InnerBrowser::seeInCurrentUrl() + */ + public function seeInCurrentUrl($uri) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInCurrentUrl', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URI doesn't contain the given string. + * + * ``` php + * dontSeeInCurrentUrl('/users/'); + * ?> + * ``` + * + * @param $uri + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeInCurrentUrl() + */ + public function cantSeeInCurrentUrl($uri) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInCurrentUrl', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URI doesn't contain the given string. + * + * ``` php + * dontSeeInCurrentUrl('/users/'); + * ?> + * ``` + * + * @param $uri + * @see \Codeception\Lib\InnerBrowser::dontSeeInCurrentUrl() + */ + public function dontSeeInCurrentUrl($uri) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInCurrentUrl', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL is equal to the given string. + * Unlike `seeInCurrentUrl`, this only matches the full URL. + * + * ``` php + * seeCurrentUrlEquals('/'); + * ?> + * ``` + * + * @param $uri + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlEquals() + */ + public function canSeeCurrentUrlEquals($uri) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlEquals', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL is equal to the given string. + * Unlike `seeInCurrentUrl`, this only matches the full URL. + * + * ``` php + * seeCurrentUrlEquals('/'); + * ?> + * ``` + * + * @param $uri + * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlEquals() + */ + public function seeCurrentUrlEquals($uri) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCurrentUrlEquals', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL doesn't equal the given string. + * Unlike `dontSeeInCurrentUrl`, this only matches the full URL. + * + * ``` php + * dontSeeCurrentUrlEquals('/'); + * ?> + * ``` + * + * @param $uri + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlEquals() + */ + public function cantSeeCurrentUrlEquals($uri) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlEquals', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL doesn't equal the given string. + * Unlike `dontSeeInCurrentUrl`, this only matches the full URL. + * + * ``` php + * dontSeeCurrentUrlEquals('/'); + * ?> + * ``` + * + * @param $uri + * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlEquals() + */ + public function dontSeeCurrentUrlEquals($uri) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCurrentUrlEquals', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL matches the given regular expression. + * + * ``` php + * seeCurrentUrlMatches('~$/users/(\d+)~'); + * ?> + * ``` + * + * @param $uri + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlMatches() + */ + public function canSeeCurrentUrlMatches($uri) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlMatches', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL matches the given regular expression. + * + * ``` php + * seeCurrentUrlMatches('~$/users/(\d+)~'); + * ?> + * ``` + * + * @param $uri + * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlMatches() + */ + public function seeCurrentUrlMatches($uri) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCurrentUrlMatches', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that current url doesn't match the given regular expression. + * + * ``` php + * dontSeeCurrentUrlMatches('~$/users/(\d+)~'); + * ?> + * ``` + * + * @param $uri + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlMatches() + */ + public function cantSeeCurrentUrlMatches($uri) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlMatches', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that current url doesn't match the given regular expression. + * + * ``` php + * dontSeeCurrentUrlMatches('~$/users/(\d+)~'); + * ?> + * ``` + * + * @param $uri + * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlMatches() + */ + public function dontSeeCurrentUrlMatches($uri) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCurrentUrlMatches', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Executes the given regular expression against the current URI and returns the first match. + * If no parameters are provided, the full URI is returned. + * + * ``` php + * grabFromCurrentUrl('~$/user/(\d+)/~'); + * $uri = $I->grabFromCurrentUrl(); + * ?> + * ``` + * + * @param null $uri + * + * @internal param $url + * @return mixed + * @see \Codeception\Lib\InnerBrowser::grabFromCurrentUrl() + */ + public function grabFromCurrentUrl($uri = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('grabFromCurrentUrl', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the specified checkbox is checked. + * + * ``` php + * seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms + * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form. + * $I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]'); + * ?> + * ``` + * + * @param $checkbox + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeCheckboxIsChecked() + */ + public function canSeeCheckboxIsChecked($checkbox) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCheckboxIsChecked', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the specified checkbox is checked. + * + * ``` php + * seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms + * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form. + * $I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]'); + * ?> + * ``` + * + * @param $checkbox + * @see \Codeception\Lib\InnerBrowser::seeCheckboxIsChecked() + */ + public function seeCheckboxIsChecked($checkbox) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCheckboxIsChecked', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Check that the specified checkbox is unchecked. + * + * ``` php + * dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms + * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form. + * ?> + * ``` + * + * @param $checkbox + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeCheckboxIsChecked() + */ + public function cantSeeCheckboxIsChecked($checkbox) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCheckboxIsChecked', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Check that the specified checkbox is unchecked. + * + * ``` php + * dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms + * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form. + * ?> + * ``` + * + * @param $checkbox + * @see \Codeception\Lib\InnerBrowser::dontSeeCheckboxIsChecked() + */ + public function dontSeeCheckboxIsChecked($checkbox) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCheckboxIsChecked', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given input field or textarea contains the given value. + * For fuzzy locators, fields are matched by label text, the "name" attribute, CSS, and XPath. + * + * ``` php + * seeInField('Body','Type your comment here'); + * $I->seeInField('form textarea[name=body]','Type your comment here'); + * $I->seeInField('form input[type=hidden]','hidden_value'); + * $I->seeInField('#searchform input','Search'); + * $I->seeInField('//form/*[@name=search]','Search'); + * $I->seeInField(['name' => 'search'], 'Search'); + * ?> + * ``` + * + * @param $field + * @param $value + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeInField() + */ + public function canSeeInField($field, $value) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInField', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given input field or textarea contains the given value. + * For fuzzy locators, fields are matched by label text, the "name" attribute, CSS, and XPath. + * + * ``` php + * seeInField('Body','Type your comment here'); + * $I->seeInField('form textarea[name=body]','Type your comment here'); + * $I->seeInField('form input[type=hidden]','hidden_value'); + * $I->seeInField('#searchform input','Search'); + * $I->seeInField('//form/*[@name=search]','Search'); + * $I->seeInField(['name' => 'search'], 'Search'); + * ?> + * ``` + * + * @param $field + * @param $value + * @see \Codeception\Lib\InnerBrowser::seeInField() + */ + public function seeInField($field, $value) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInField', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that an input field or textarea doesn't contain the given value. + * For fuzzy locators, the field is matched by label text, CSS and XPath. + * + * ``` php + * dontSeeInField('Body','Type your comment here'); + * $I->dontSeeInField('form textarea[name=body]','Type your comment here'); + * $I->dontSeeInField('form input[type=hidden]','hidden_value'); + * $I->dontSeeInField('#searchform input','Search'); + * $I->dontSeeInField('//form/*[@name=search]','Search'); + * $I->dontSeeInField(['name' => 'search'], 'Search'); + * ?> + * ``` + * + * @param $field + * @param $value + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeInField() + */ + public function cantSeeInField($field, $value) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInField', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that an input field or textarea doesn't contain the given value. + * For fuzzy locators, the field is matched by label text, CSS and XPath. + * + * ``` php + * dontSeeInField('Body','Type your comment here'); + * $I->dontSeeInField('form textarea[name=body]','Type your comment here'); + * $I->dontSeeInField('form input[type=hidden]','hidden_value'); + * $I->dontSeeInField('#searchform input','Search'); + * $I->dontSeeInField('//form/*[@name=search]','Search'); + * $I->dontSeeInField(['name' => 'search'], 'Search'); + * ?> + * ``` + * + * @param $field + * @param $value + * @see \Codeception\Lib\InnerBrowser::dontSeeInField() + */ + public function dontSeeInField($field, $value) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInField', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if the array of form parameters (name => value) are set on the form matched with the + * passed selector. + * + * ``` php + * seeInFormFields('form[name=myform]', [ + * 'input1' => 'value', + * 'input2' => 'other value', + * ]); + * ?> + * ``` + * + * For multi-select elements, or to check values of multiple elements with the same name, an + * array may be passed: + * + * ``` php + * seeInFormFields('.form-class', [ + * 'multiselect' => [ + * 'value1', + * 'value2', + * ], + * 'checkbox[]' => [ + * 'a checked value', + * 'another checked value', + * ], + * ]); + * ?> + * ``` + * + * Additionally, checkbox values can be checked with a boolean. + * + * ``` php + * seeInFormFields('#form-id', [ + * 'checkbox1' => true, // passes if checked + * 'checkbox2' => false, // passes if unchecked + * ]); + * ?> + * ``` + * + * Pair this with submitForm for quick testing magic. + * + * ``` php + * 'value', + * 'field2' => 'another value', + * 'checkbox1' => true, + * // ... + * ]; + * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); + * // $I->amOnPage('/path/to/form-page') may be needed + * $I->seeInFormFields('//form[@id=my-form]', $form); + * ?> + * ``` + * + * @param $formSelector + * @param $params + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeInFormFields() + */ + public function canSeeInFormFields($formSelector, $params) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInFormFields', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if the array of form parameters (name => value) are set on the form matched with the + * passed selector. + * + * ``` php + * seeInFormFields('form[name=myform]', [ + * 'input1' => 'value', + * 'input2' => 'other value', + * ]); + * ?> + * ``` + * + * For multi-select elements, or to check values of multiple elements with the same name, an + * array may be passed: + * + * ``` php + * seeInFormFields('.form-class', [ + * 'multiselect' => [ + * 'value1', + * 'value2', + * ], + * 'checkbox[]' => [ + * 'a checked value', + * 'another checked value', + * ], + * ]); + * ?> + * ``` + * + * Additionally, checkbox values can be checked with a boolean. + * + * ``` php + * seeInFormFields('#form-id', [ + * 'checkbox1' => true, // passes if checked + * 'checkbox2' => false, // passes if unchecked + * ]); + * ?> + * ``` + * + * Pair this with submitForm for quick testing magic. + * + * ``` php + * 'value', + * 'field2' => 'another value', + * 'checkbox1' => true, + * // ... + * ]; + * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); + * // $I->amOnPage('/path/to/form-page') may be needed + * $I->seeInFormFields('//form[@id=my-form]', $form); + * ?> + * ``` + * + * @param $formSelector + * @param $params + * @see \Codeception\Lib\InnerBrowser::seeInFormFields() + */ + public function seeInFormFields($formSelector, $params) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInFormFields', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if the array of form parameters (name => value) are not set on the form matched with + * the passed selector. + * + * ``` php + * dontSeeInFormFields('form[name=myform]', [ + * 'input1' => 'non-existent value', + * 'input2' => 'other non-existent value', + * ]); + * ?> + * ``` + * + * To check that an element hasn't been assigned any one of many values, an array can be passed + * as the value: + * + * ``` php + * dontSeeInFormFields('.form-class', [ + * 'fieldName' => [ + * 'This value shouldn\'t be set', + * 'And this value shouldn\'t be set', + * ], + * ]); + * ?> + * ``` + * + * Additionally, checkbox values can be checked with a boolean. + * + * ``` php + * dontSeeInFormFields('#form-id', [ + * 'checkbox1' => true, // fails if checked + * 'checkbox2' => false, // fails if unchecked + * ]); + * ?> + * ``` + * + * @param $formSelector + * @param $params + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeInFormFields() + */ + public function cantSeeInFormFields($formSelector, $params) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInFormFields', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if the array of form parameters (name => value) are not set on the form matched with + * the passed selector. + * + * ``` php + * dontSeeInFormFields('form[name=myform]', [ + * 'input1' => 'non-existent value', + * 'input2' => 'other non-existent value', + * ]); + * ?> + * ``` + * + * To check that an element hasn't been assigned any one of many values, an array can be passed + * as the value: + * + * ``` php + * dontSeeInFormFields('.form-class', [ + * 'fieldName' => [ + * 'This value shouldn\'t be set', + * 'And this value shouldn\'t be set', + * ], + * ]); + * ?> + * ``` + * + * Additionally, checkbox values can be checked with a boolean. + * + * ``` php + * dontSeeInFormFields('#form-id', [ + * 'checkbox1' => true, // fails if checked + * 'checkbox2' => false, // fails if unchecked + * ]); + * ?> + * ``` + * + * @param $formSelector + * @param $params + * @see \Codeception\Lib\InnerBrowser::dontSeeInFormFields() + */ + public function dontSeeInFormFields($formSelector, $params) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInFormFields', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Submits the given form on the page, optionally with the given form values. + * Give the form fields values as an array. + * + * Skipped fields will be filled by their values from the page. + * You don't need to click the 'Submit' button afterwards. + * This command itself triggers the request to form's action. + * + * You can optionally specify what button's value to include + * in the request with the last parameter as an alternative to + * explicitly setting its value in the second parameter, as + * button values are not otherwise included in the request. + * + * Examples: + * + * ``` php + * submitForm('#login', array('login' => 'davert', 'password' => '123456')); + * // or + * $I->submitForm('#login', array('login' => 'davert', 'password' => '123456'), 'submitButtonName'); + * + * ``` + * + * For example, given this sample "Sign Up" form: + * + * ``` html + *
      + * Login:
      + * Password:
      + * Do you agree to out terms?
      + * Select pricing plan + * + *
      + * ``` + * + * You could write the following to submit it: + * + * ``` php + * submitForm('#userForm', array('user' => array('login' => 'Davert', 'password' => '123456', 'agree' => true)), 'submitButton'); + * + * ``` + * Note that "2" will be the submitted value for the "plan" field, as it is the selected option. + * + * You can also emulate a JavaScript submission by not specifying any buttons in the third parameter to submitForm. + * + * ```php + * submitForm('#userForm', array('user' => array('login' => 'Davert', 'password' => '123456', 'agree' => true))); + * + * ``` + * + * Pair this with seeInFormFields for quick testing magic. + * + * ``` php + * 'value', + * 'field2' => 'another value', + * 'checkbox1' => true, + * // ... + * ]; + * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); + * // $I->amOnPage('/path/to/form-page') may be needed + * $I->seeInFormFields('//form[@id=my-form]', $form); + * ?> + * ``` + * + * Parameter values can be set to arrays for multiple input fields + * of the same name, or multi-select combo boxes. For checkboxes, + * either the string value can be used, or boolean values which will + * be replaced by the checkbox's value in the DOM. + * + * ``` php + * submitForm('#my-form', [ + * 'field1' => 'value', + * 'checkbox' => [ + * 'value of first checkbox', + * 'value of second checkbox, + * ], + * 'otherCheckboxes' => [ + * true, + * false, + * false + * ], + * 'multiselect' => [ + * 'first option value', + * 'second option value' + * ] + * ]); + * ?> + * ``` + * + * Mixing string and boolean values for a checkbox's value is not + * supported and may produce unexpected results. + * + * @param $selector + * @param $params + * @param $button + * @see \Codeception\Lib\InnerBrowser::submitForm() + */ + public function submitForm($selector, $params, $button = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('submitForm', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Fills a text field or textarea with the given string. + * + * ``` php + * fillField("//input[@type='text']", "Hello World!"); + * $I->fillField(['name' => 'email'], 'jon@mail.com'); + * ?> + * ``` + * + * @param $field + * @param $value + * @see \Codeception\Lib\InnerBrowser::fillField() + */ + public function fillField($field, $value) { + return $this->scenario->runStep(new \Codeception\Step\Action('fillField', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Selects an option in a select tag or in radio button group. + * + * ``` php + * selectOption('form select[name=account]', 'Premium'); + * $I->selectOption('form input[name=payment]', 'Monthly'); + * $I->selectOption('//form/select[@name=account]', 'Monthly'); + * ?> + * ``` + * + * Provide an array for the second argument to select multiple options: + * + * ``` php + * selectOption('Which OS do you use?', array('Windows','Linux')); + * ?> + * ``` + * + * @param $select + * @param $option + * @see \Codeception\Lib\InnerBrowser::selectOption() + */ + public function selectOption($select, $option) { + return $this->scenario->runStep(new \Codeception\Step\Action('selectOption', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Ticks a checkbox. For radio buttons, use the `selectOption` method instead. + * + * ``` php + * checkOption('#agree'); + * ?> + * ``` + * + * @param $option + * @see \Codeception\Lib\InnerBrowser::checkOption() + */ + public function checkOption($option) { + return $this->scenario->runStep(new \Codeception\Step\Action('checkOption', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Unticks a checkbox. + * + * ``` php + * uncheckOption('#notify'); + * ?> + * ``` + * + * @param $option + * @see \Codeception\Lib\InnerBrowser::uncheckOption() + */ + public function uncheckOption($option) { + return $this->scenario->runStep(new \Codeception\Step\Action('uncheckOption', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Attaches a file relative to the Codeception data directory to the given file upload field. + * + * ``` php + * attachFile('input[@type="file"]', 'prices.xls'); + * ?> + * ``` + * + * @param $field + * @param $filename + * @see \Codeception\Lib\InnerBrowser::attachFile() + */ + public function attachFile($field, $filename) { + return $this->scenario->runStep(new \Codeception\Step\Action('attachFile', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * If your page triggers an ajax request, you can perform it manually. + * This action sends a GET ajax request with specified params. + * + * See ->sendAjaxPostRequest for examples. + * + * @param $uri + * @param $params + * @see \Codeception\Lib\InnerBrowser::sendAjaxGetRequest() + */ + public function sendAjaxGetRequest($uri, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('sendAjaxGetRequest', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * If your page triggers an ajax request, you can perform it manually. + * This action sends a POST ajax request with specified params. + * Additional params can be passed as array. + * + * Example: + * + * Imagine that by clicking checkbox you trigger ajax request which updates user settings. + * We emulate that click by running this ajax request manually. + * + * ``` php + * sendAjaxPostRequest('/updateSettings', array('notifications' => true)); // POST + * $I->sendAjaxGetRequest('/updateSettings', array('notifications' => true)); // GET + * + * ``` + * + * @param $uri + * @param $params + * @see \Codeception\Lib\InnerBrowser::sendAjaxPostRequest() + */ + public function sendAjaxPostRequest($uri, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('sendAjaxPostRequest', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * If your page triggers an ajax request, you can perform it manually. + * This action sends an ajax request with specified method and params. + * + * Example: + * + * You need to perform an ajax request specifying the HTTP method. + * + * ``` php + * sendAjaxRequest('PUT', '/posts/7', array('title' => 'new title')); + * + * ``` + * + * @param $method + * @param $uri + * @param $params + * @see \Codeception\Lib\InnerBrowser::sendAjaxRequest() + */ + public function sendAjaxRequest($method, $uri, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('sendAjaxRequest', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Finds and returns the text contents of the given element. + * If a fuzzy locator is used, the element is found using CSS, XPath, and by matching the full page source by regular expression. + * + * ``` php + * grabTextFrom('h1'); + * $heading = $I->grabTextFrom('descendant-or-self::h1'); + * $value = $I->grabTextFrom('~ + * ``` + * + * @param $cssOrXPathOrRegex + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::grabTextFrom() + */ + public function grabTextFrom($cssOrXPathOrRegex) { + return $this->scenario->runStep(new \Codeception\Step\Action('grabTextFrom', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Grabs the value of the given attribute value from the given element. + * Fails if element is not found. + * + * ``` php + * grabAttributeFrom('#tooltip', 'title'); + * ?> + * ``` + * + * + * @param $cssOrXpath + * @param $attribute + * @internal param $element + * @return mixed + * @see \Codeception\Lib\InnerBrowser::grabAttributeFrom() + */ + public function grabAttributeFrom($cssOrXpath, $attribute) { + return $this->scenario->runStep(new \Codeception\Step\Action('grabAttributeFrom', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * @param $field + * + * @return array|mixed|null|string + * @see \Codeception\Lib\InnerBrowser::grabValueFrom() + */ + public function grabValueFrom($field) { + return $this->scenario->runStep(new \Codeception\Step\Action('grabValueFrom', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Sets a cookie with the given name and value. + * You can set additional cookie params like `domain`, `path`, `expire`, `secure` in array passed as last argument. + * + * ``` php + * setCookie('PHPSESSID', 'el4ukv0kqbvoirg7nkp4dncpk3'); + * ?> + * ``` + * + * @param $name + * @param $val + * @param array $params + * @internal param $cookie + * @internal param $value + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::setCookie() + */ + public function setCookie($name, $val, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('setCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Grabs a cookie value. + * You can set additional cookie params like `domain`, `path` in array passed as last argument. + * + * @param $cookie + * + * @param array $params + * @return mixed + * @see \Codeception\Lib\InnerBrowser::grabCookie() + */ + public function grabCookie($name, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('grabCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that a cookie with the given name is set. + * You can set additional cookie params like `domain`, `path` as array passed in last argument. + * + * ``` php + * seeCookie('PHPSESSID'); + * ?> + * ``` + * + * @param $cookie + * @param array $params + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeCookie() + */ + public function canSeeCookie($name, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCookie', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that a cookie with the given name is set. + * You can set additional cookie params like `domain`, `path` as array passed in last argument. + * + * ``` php + * seeCookie('PHPSESSID'); + * ?> + * ``` + * + * @param $cookie + * @param array $params + * @return mixed + * @see \Codeception\Lib\InnerBrowser::seeCookie() + */ + public function seeCookie($name, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there isn't a cookie with the given name. + * You can set additional cookie params like `domain`, `path` as array passed in last argument. + * + * @param $cookie + * + * @param array $params + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeCookie() + */ + public function cantSeeCookie($name, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCookie', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there isn't a cookie with the given name. + * You can set additional cookie params like `domain`, `path` as array passed in last argument. + * + * @param $cookie + * + * @param array $params + * @return mixed + * @see \Codeception\Lib\InnerBrowser::dontSeeCookie() + */ + public function dontSeeCookie($name, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Unsets cookie with the given name. + * You can set additional cookie params like `domain`, `path` in array passed as last argument. + * + * @param $cookie + * + * @param array $params + * @return mixed + * @see \Codeception\Lib\InnerBrowser::resetCookie() + */ + public function resetCookie($name, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('resetCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given element exists on the page and is visible. + * You can also specify expected attributes of this element. + * + * ``` php + * seeElement('.error'); + * $I->seeElement('//form/input[1]'); + * $I->seeElement('input', ['name' => 'login']); + * $I->seeElement('input', ['value' => '123456']); + * + * // strict locator in first arg, attributes in second + * $I->seeElement(['css' => 'form input'], ['name' => 'login']); + * ?> + * ``` + * + * @param $selector + * @param array $attributes + * @return + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeElement() + */ + public function canSeeElement($selector, $attributes = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeElement', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given element exists on the page and is visible. + * You can also specify expected attributes of this element. + * + * ``` php + * seeElement('.error'); + * $I->seeElement('//form/input[1]'); + * $I->seeElement('input', ['name' => 'login']); + * $I->seeElement('input', ['value' => '123456']); + * + * // strict locator in first arg, attributes in second + * $I->seeElement(['css' => 'form input'], ['name' => 'login']); + * ?> + * ``` + * + * @param $selector + * @param array $attributes + * @return + * @see \Codeception\Lib\InnerBrowser::seeElement() + */ + public function seeElement($selector, $attributes = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeElement', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given element is invisible or not present on the page. + * You can also specify expected attributes of this element. + * + * ``` php + * dontSeeElement('.error'); + * $I->dontSeeElement('//form/input[1]'); + * $I->dontSeeElement('input', ['name' => 'login']); + * $I->dontSeeElement('input', ['value' => '123456']); + * ?> + * ``` + * + * @param $selector + * @param array $attributes + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeElement() + */ + public function cantSeeElement($selector, $attributes = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeElement', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given element is invisible or not present on the page. + * You can also specify expected attributes of this element. + * + * ``` php + * dontSeeElement('.error'); + * $I->dontSeeElement('//form/input[1]'); + * $I->dontSeeElement('input', ['name' => 'login']); + * $I->dontSeeElement('input', ['value' => '123456']); + * ?> + * ``` + * + * @param $selector + * @param array $attributes + * @see \Codeception\Lib\InnerBrowser::dontSeeElement() + */ + public function dontSeeElement($selector, $attributes = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeElement', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there are a certain number of elements matched by the given locator on the page. + * + * ``` php + * seeNumberOfElements('tr', 10); + * $I->seeNumberOfElements('tr', [0,10]); //between 0 and 10 elements + * ?> + * ``` + * @param $selector + * @param mixed $expected: + * - string: strict number + * - array: range of numbers [0,10] + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeNumberOfElements() + */ + public function canSeeNumberOfElements($selector, $expected) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeNumberOfElements', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there are a certain number of elements matched by the given locator on the page. + * + * ``` php + * seeNumberOfElements('tr', 10); + * $I->seeNumberOfElements('tr', [0,10]); //between 0 and 10 elements + * ?> + * ``` + * @param $selector + * @param mixed $expected: + * - string: strict number + * - array: range of numbers [0,10] + * @see \Codeception\Lib\InnerBrowser::seeNumberOfElements() + */ + public function seeNumberOfElements($selector, $expected) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeNumberOfElements', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given option is selected. + * + * ``` php + * seeOptionIsSelected('#form input[name=payment]', 'Visa'); + * ?> + * ``` + * + * @param $selector + * @param $optionText + * + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeOptionIsSelected() + */ + public function canSeeOptionIsSelected($select, $optionText) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeOptionIsSelected', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given option is selected. + * + * ``` php + * seeOptionIsSelected('#form input[name=payment]', 'Visa'); + * ?> + * ``` + * + * @param $selector + * @param $optionText + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::seeOptionIsSelected() + */ + public function seeOptionIsSelected($select, $optionText) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeOptionIsSelected', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given option is not selected. + * + * ``` php + * dontSeeOptionIsSelected('#form input[name=payment]', 'Visa'); + * ?> + * ``` + * + * @param $selector + * @param $optionText + * + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeOptionIsSelected() + */ + public function cantSeeOptionIsSelected($select, $optionText) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeOptionIsSelected', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given option is not selected. + * + * ``` php + * dontSeeOptionIsSelected('#form input[name=payment]', 'Visa'); + * ?> + * ``` + * + * @param $selector + * @param $optionText + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::dontSeeOptionIsSelected() + */ + public function dontSeeOptionIsSelected($select, $optionText) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeOptionIsSelected', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Asserts that current page has 404 response status code. + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seePageNotFound() + */ + public function canSeePageNotFound() { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seePageNotFound', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Asserts that current page has 404 response status code. + * @see \Codeception\Lib\InnerBrowser::seePageNotFound() + */ + public function seePageNotFound() { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seePageNotFound', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that response code is equal to value provided. + * + * @param $code + * + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIs() + */ + public function canSeeResponseCodeIs($code) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeResponseCodeIs', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that response code is equal to value provided. + * + * @param $code + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIs() + */ + public function seeResponseCodeIs($code) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeResponseCodeIs', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page title contains the given string. + * + * ``` php + * seeInTitle('Blog - Post #1'); + * ?> + * ``` + * + * @param $title + * + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeInTitle() + */ + public function canSeeInTitle($title) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInTitle', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page title contains the given string. + * + * ``` php + * seeInTitle('Blog - Post #1'); + * ?> + * ``` + * + * @param $title + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::seeInTitle() + */ + public function seeInTitle($title) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInTitle', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page title does not contain the given string. + * + * @param $title + * + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeInTitle() + */ + public function cantSeeInTitle($title) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInTitle', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page title does not contain the given string. + * + * @param $title + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::dontSeeInTitle() + */ + public function dontSeeInTitle($title) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInTitle', func_get_args())); + } +} diff --git a/tests/install/_bootstrap.php b/tests/install/_bootstrap.php new file mode 100644 index 000000000..a33ea900a --- /dev/null +++ b/tests/install/_bootstrap.php @@ -0,0 +1,5 @@ +installTester = $I; + } + + /** + * @return installPage + */ + public static function of(InstallTester $I) + { + return new static($I); + } +} \ No newline at end of file diff --git a/tests/install/_steps/AdminSteps.php b/tests/install/_steps/AdminSteps.php new file mode 100644 index 000000000..191c9ba9c --- /dev/null +++ b/tests/install/_steps/AdminSteps.php @@ -0,0 +1,18 @@ +env) ? Configuration::config() : Configuration::suiteEnvironments('install')[$this->env]; +$db_config = $config['modules']['config']['Db']; + +$dsn = $db_config['dsn']; +$dsn = split('[;:]', $dsn); +$db_type = array_shift($dsn); + +$dbinfo = [ + 'type' => $db_type, + 'user' => $db_config['user'], + 'password' => $db_config['password'], + 'dbname' => 'xe_install', + 'port' => ((isset($db_config['port']) && $db_config['port'])?: 3306), +]; + +foreach($dsn as $piece) { + list($key, $val) = explode('=', $piece); + $dbinfo[$key] = $val; +} + +// Step 1 +$I->wantTo('Install XE Core'); +$I->amOnPage('/index.php?l=ko'); +$I->setCookie('l', 'ko'); +$I->seeElement('//div[@id="progress"]/ul/li[1][@class="active"]'); +$I->seeElement('#content .language'); +$I->seeElement('//ul[@class="language"]/li[2]/strong'); +$I->click('#task-choose-language'); + +// Step 2 : License Agreement +$I->seeInCurrentUrl('act=dispInstallLicenseAgreement'); +$I->seeElement('//div[@id="progress"]/ul/li[2][@class="active"]'); +$I->see('사용권 동의', '#content'); +$I->submitForm('.x_form-horizontal', ['act' => 'procInstallLicenseAggrement', 'license_agreement' => 'Y']); + +// Step 3 : checkenv +$I->seeInCurrentUrl('act=dispInstallCheckEnv'); +$I->seeElement('//div[@id="progress"]/ul/li[3][@class="active"]'); +$I->seeElement('#content .x_icon-ok-sign'); +$I->click('#task-checklist-confirm'); + +// Step 5 : SelectDB +$I->seeInCurrentUrl('act=dispInstallSelectDB'); +$I->seeElement('//div[@id="progress"]/ul/li[5][@class="active"]'); +$I->submitForm('#content form', ['db_type' => 'mysqli', 'act' => 'dispInstallDBForm']); + +// Step 6 : db info +// $I->seeInCurrentUrl('act=dispInstallDBForm'); +$I->seeElement('//div[@id="progress"]/ul/li[6][@class="active"]'); +$I->submitForm('#content form', [ + 'act' => 'procMysqlDBSetting', + 'db_type' => 'mysqli', + 'db_userid' => $dbinfo['user'], + 'db_password' => $dbinfo['password'], + 'db_database' => $dbinfo['dbname'], + 'db_hostname' => $dbinfo['host'], + 'db_port' => $dbinfo['port'], + 'db_table_prefix' => 'xe' +]); + + +// Step 7 : dispInstallConfigForm +$I->seeInCurrentUrl('act=dispInstallConfigForm'); +$I->seeElement('//div[@id="progress"]/ul/li[7][@class="active"]'); +$I->seeElement('select[name=time_zone]'); +$I->submitForm('#content form', ['act' => 'procConfigSetting', 'time_zone' => '+0900']); + + +// Step 8 : dispInstallManagerForm +$I->seeInCurrentUrl('act=dispInstallManagerForm'); +$I->seeElement('//div[@id="progress"]/ul/li[8][@class="active"]'); +$I->fillField('#aMail', 'admin@admin.net'); +$I->submitForm('#content form', [ + 'act' => 'procInstall', + 'db_type' => 'mysqli', + 'email_address' => 'admin@admin.net', + 'password' => 'admin', + 'password2' => 'admin', + 'nick_name' => 'admin', + 'user_id' => 'admin' +]); + +// Step 9 +$I->wantTo('completed'); +$I->dontSeeElement('//div[@id="progress"]/ul/li'); +$I->amOnPage('/index.php?act=dispMemberLoginForm'); + +$I->fillField('user_id', 'admin@admin.net'); +$I->submitForm('.login-body form', [ + 'act' => 'procMemberLogin', + 'user_id' => 'admin@admin.net', + 'password' => 'admin', + 'success_return_url' => '/index.php?module=admin' +]); + +$I->seeInCurrentUrl('module=admin'); +$I->seeElement('#gnbNav'); +$I->seeElement('#content .x_page-header'); +$I->see('설치 환경 수집 동의', 'h2'); + diff --git a/tests/unit/UnitTester.php b/tests/unit/UnitTester.php index 86effba76..c7cd86809 100644 --- a/tests/unit/UnitTester.php +++ b/tests/unit/UnitTester.php @@ -1,4 +1,4 @@ -scenario->runStep(new \Codeception\Step\Action('assertSame', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that two variables are not same + * + * @param $expected + * @param $actual + * @param string $message + * @see \Codeception\Module\Asserts::assertNotSame() + */ + public function assertNotSame($expected, $actual, $message = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('assertNotSame', func_get_args())); + } + + /** * [!] Method is generated. Documentation taken from corresponding module. * From 6b6a477cb012b6ba458c2ece7a85c757e467548b Mon Sep 17 00:00:00 2001 From: bnu Date: Thu, 16 Apr 2015 15:15:02 +0900 Subject: [PATCH 204/265] =?UTF-8?q?travis-ci=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .travis.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 2b1d69d34..d02896f60 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,12 +4,20 @@ php: - 5.4 - 5.5 - 5.6 + - 7 - hhvm +matrix: + allow_failures: + - php: 7 + - php: hhvm 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 script: - grunt lint - - if [ $(phpenv version-name) != "5.3" ]; then ./vendor/bin/codecept run; fi + - if [ $(phpenv version-name) != "5.3" ]; then ./vendor/bin/codecept run --env travis; fi From 799f6f3a67b7c004ae3f5715415b7414daacef05 Mon Sep 17 00:00:00 2001 From: bnu Date: Thu, 16 Apr 2015 15:41:32 +0900 Subject: [PATCH 205/265] =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/unit/classes/template/TemplateHandlerTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/unit/classes/template/TemplateHandlerTest.php b/tests/unit/classes/template/TemplateHandlerTest.php index edd2e57ab..313dcc331 100644 --- a/tests/unit/classes/template/TemplateHandlerTest.php +++ b/tests/unit/classes/template/TemplateHandlerTest.php @@ -273,10 +273,10 @@ class TemplateHandlerWrapper extends \TemplateHandler { } public function init($tpl_path, $tpl_filename, $tpl_file = '') { - call_user_method('init', $this->inst, $tpl_path, $tpl_filename, $tpl_file); + call_user_func(array($this->inst, 'init'), $tpl_path, $tpl_filename, $tpl_file); } public function parse($buff = null) { - return call_user_method('parse', $this->inst, $buff); + return call_user_func(array($this->inst, 'parse'), $buff); } } From 7f9aee3e7191efd17f11811c225fc8ae0023f811 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Sat, 18 Apr 2015 14:19:33 +0900 Subject: [PATCH 206/265] =?UTF-8?q?PHP=205.4=20=EC=9D=B4=EC=83=81=EC=97=90?= =?UTF-8?q?=EC=84=9C=EB=8A=94=20magic=5Fquotes=5Fgpc=20=EC=83=81=ED=83=9C?= =?UTF-8?q?=EB=A5=BC=20=EC=B2=B4=ED=81=AC=ED=95=98=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EC=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/context/Context.class.php | 2 +- classes/db/DBCubrid.class.php | 2 +- classes/db/DBMssql.class.php | 2 +- classes/db/DBMysql.class.php | 2 +- classes/db/DBMysqli.class.php | 2 +- classes/db/DBMysqli_innodb.class.php | 2 +- modules/module/module.admin.controller.php | 2 +- tools/dbxml_validator/connect_wrapper.php | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 257900cac..0cba1e374 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -1380,7 +1380,7 @@ class Context { $result[$k] = $v; - if($do_stripslashes && version_compare(PHP_VERSION, '5.9.0', '<') && get_magic_quotes_gpc()) + if($do_stripslashes && version_compare(PHP_VERSION, '5.4.0', '<') && get_magic_quotes_gpc()) { $result[$k] = stripslashes($result[$k]); } diff --git a/classes/db/DBCubrid.class.php b/classes/db/DBCubrid.class.php index 064ae99ab..fc977d81a 100644 --- a/classes/db/DBCubrid.class.php +++ b/classes/db/DBCubrid.class.php @@ -116,7 +116,7 @@ class DBCubrid extends DB */ function addQuotes($string) { - if(version_compare(PHP_VERSION, "5.9.0", "<") && + if(version_compare(PHP_VERSION, "5.4.0", "<") && get_magic_quotes_gpc()) { $string = stripslashes(str_replace("\\", "\\\\", $string)); diff --git a/classes/db/DBMssql.class.php b/classes/db/DBMssql.class.php index 5a7217735..32adb251c 100644 --- a/classes/db/DBMssql.class.php +++ b/classes/db/DBMssql.class.php @@ -99,7 +99,7 @@ class DBMssql extends DB */ function addQuotes($string) { - if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) + if(version_compare(PHP_VERSION, "5.4.0", "<") && get_magic_quotes_gpc()) { $string = stripslashes(str_replace("\\", "\\\\", $string)); } diff --git a/classes/db/DBMysql.class.php b/classes/db/DBMysql.class.php index 9e60f410e..a969f5d28 100644 --- a/classes/db/DBMysql.class.php +++ b/classes/db/DBMysql.class.php @@ -131,7 +131,7 @@ class DBMysql extends DB */ function addQuotes($string) { - if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) + if(version_compare(PHP_VERSION, "5.4.0", "<") && get_magic_quotes_gpc()) { $string = stripslashes(str_replace("\\", "\\\\", $string)); } diff --git a/classes/db/DBMysqli.class.php b/classes/db/DBMysqli.class.php index 36c04e1d5..58d25c852 100644 --- a/classes/db/DBMysqli.class.php +++ b/classes/db/DBMysqli.class.php @@ -87,7 +87,7 @@ class DBMysqli extends DBMysql */ function addQuotes($string) { - if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) + if(version_compare(PHP_VERSION, "5.4.0", "<") && get_magic_quotes_gpc()) { $string = stripslashes(str_replace("\\", "\\\\", $string)); } diff --git a/classes/db/DBMysqli_innodb.class.php b/classes/db/DBMysqli_innodb.class.php index 9f5ee5671..55422b61f 100644 --- a/classes/db/DBMysqli_innodb.class.php +++ b/classes/db/DBMysqli_innodb.class.php @@ -145,7 +145,7 @@ class DBMysqli_innodb extends DBMysql */ function addQuotes($string) { - if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) + if(version_compare(PHP_VERSION, "5.4.0", "<") && get_magic_quotes_gpc()) { $string = stripslashes(str_replace("\\", "\\\\", $string)); } diff --git a/modules/module/module.admin.controller.php b/modules/module/module.admin.controller.php index 0a1ec1bcb..c12dd10fd 100644 --- a/modules/module/module.admin.controller.php +++ b/modules/module/module.admin.controller.php @@ -685,7 +685,7 @@ class moduleAdminController extends module $args->value = trim(Context::get($key)); // if request method is json, strip slashes - if(Context::getRequestMethod() == 'JSON' && version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) + if(Context::getRequestMethod() == 'JSON' && version_compare(PHP_VERSION, "5.4.0", "<") && get_magic_quotes_gpc()) { $args->value = stripslashes($args->value); } diff --git a/tools/dbxml_validator/connect_wrapper.php b/tools/dbxml_validator/connect_wrapper.php index 0d5afda6d..f9ebacf48 100644 --- a/tools/dbxml_validator/connect_wrapper.php +++ b/tools/dbxml_validator/connect_wrapper.php @@ -347,7 +347,7 @@ class DBMysqliConnectWrapper extends DBMysqli */ public function addQuotes($string) { - if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) + if(version_compare(PHP_VERSION, "5.4.0", "<") && get_magic_quotes_gpc()) { $string = stripslashes(str_replace("\\", "\\\\", $string)); } From d0246aba68fe5e3055d889af102729ce406875b3 Mon Sep 17 00:00:00 2001 From: YJSoft Date: Thu, 23 Apr 2015 02:04:22 +0900 Subject: [PATCH 207/265] =?UTF-8?q?#1433=20=EC=8A=AC=EB=9D=BC=EC=9D=B4?= =?UTF-8?q?=EB=93=9C=20=EC=82=AC=EC=9A=A9=EC=95=88=ED=95=A8=20=EC=86=8D?= =?UTF-8?q?=EC=84=B1=EC=9D=B4=20=EB=B0=98=EC=98=81=EB=90=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit $_enable_slide의 기본값을 false로 하고, 슬라이더 사용시에만 true로 하도록 수정 추가로 사용하지 않고 있는 $layout_info->use_slide 대신 $_enable_slide로 수정(설정하는 부분만 있고 정작 사용하는 부분이 없습니다) --- layouts/xedition/layout.html | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/layouts/xedition/layout.html b/layouts/xedition/layout.html index 792def202..0d07968d3 100644 --- a/layouts/xedition/layout.html +++ b/layouts/xedition/layout.html @@ -15,7 +15,7 @@ {@ $sub_header_title = $module_info->browser_title} - {@ $_enable_slide = true} + {@ $_enable_slide = false} {@ $_enable_unb = false} {@ $_sample_slide = false} {@ $_sample_footer = false} @@ -29,9 +29,13 @@ {@ $layout_info->use_slide = 'Y'} {@ $layout_info->enable_intergration_search = 'Y'} + + {@ $_enable_slide = true} + {@ $_sample_slide = true} - {@ $layout_info->use_slide = 'Y'} + {@ $_enable_slide = false} + {@ $_enable_slide = true} {@ $_sample_slide = true} {@ $_sample_footer = true} From 373c20e79c686664f6dafa643fbb6fa77c99988b Mon Sep 17 00:00:00 2001 From: MinSoo Kim Date: Thu, 23 Apr 2015 11:11:20 +0900 Subject: [PATCH 208/265] Compress images Compress with https://kraken.io/ and https://compressor.io/ For #1420 issue --- admin/help/img/admin/dashboard.PNG | Bin 77855 -> 39493 bytes .../img/admin/easyinstall_for_textyle.PNG | Bin 92987 -> 53653 bytes admin/help/img/admin/ftp_config.PNG | Bin 24916 -> 12105 bytes admin/help/img/admin/installed_module.PNG | Bin 20320 -> 12598 bytes admin/help/img/faq/add_multilingual.PNG | Bin 15794 -> 8003 bytes admin/help/img/faq/admin_ip_band.PNG | Bin 11050 -> 4288 bytes admin/help/img/faq/apply_multilingual.PNG | Bin 2454 -> 1495 bytes admin/help/img/faq/board_basic_setup.PNG | Bin 47366 -> 25029 bytes admin/help/img/faq/comment_publish.PNG | Bin 6399 -> 2665 bytes admin/help/img/faq/defence_login_limit.PNG | Bin 6276 -> 3066 bytes admin/help/img/faq/deny_admin_by_ip.PNG | Bin 7882 -> 4031 bytes admin/help/img/faq/export1.PNG | Bin 9828 -> 4262 bytes admin/help/img/faq/export2.PNG | Bin 12820 -> 6186 bytes admin/help/img/faq/export3.PNG | Bin 14591 -> 5717 bytes admin/help/img/faq/exposure_target.PNG | Bin 5834 -> 3583 bytes admin/help/img/faq/file_status.PNG | Bin 2607 -> 1317 bytes admin/help/img/faq/import1.PNG | Bin 25622 -> 13271 bytes admin/help/img/faq/import2.PNG | Bin 9260 -> 5180 bytes admin/help/img/faq/import_complete.PNG | Bin 7945 -> 3341 bytes admin/help/img/faq/joinform_manage.PNG | Bin 42725 -> 21064 bytes admin/help/img/faq/joinform_type.PNG | Bin 10107 -> 4944 bytes admin/help/img/faq/login_config.PNG | Bin 35242 -> 17258 bytes admin/help/img/faq/menu_name_modify.PNG | Bin 28459 -> 15021 bytes admin/help/img/faq/search_multilingual.PNG | Bin 18198 -> 9490 bytes admin/help/img/faq/use_multilingual.PNG | Bin 29138 -> 16070 bytes admin/help/img/faq/user_defined_joinform.PNG | Bin 22918 -> 10864 bytes admin/help/img/image001.png | Bin 56443 -> 25226 bytes admin/help/img/image002.jpg | Bin 11786 -> 9138 bytes admin/help/img/image003.jpg | Bin 20613 -> 15862 bytes admin/help/img/image004.jpg | Bin 24241 -> 18473 bytes admin/help/img/image005.jpg | Bin 20369 -> 15244 bytes admin/help/img/image006.jpg | Bin 28263 -> 22913 bytes admin/help/img/image007.jpg | Bin 30672 -> 25060 bytes admin/help/img/image008.jpg | Bin 16796 -> 12621 bytes admin/help/img/image009.jpg | Bin 21563 -> 16367 bytes admin/help/img/image010.jpg | Bin 18135 -> 14842 bytes admin/help/img/image011.jpg | Bin 35349 -> 30458 bytes admin/help/img/image012.jpg | Bin 38935 -> 31771 bytes admin/help/img/image013.jpg | Bin 31502 -> 25581 bytes admin/help/img/image014.jpg | Bin 36825 -> 31046 bytes admin/help/img/image015.jpg | Bin 31635 -> 25637 bytes admin/help/img/image016.jpg | Bin 21422 -> 17337 bytes admin/help/img/image017.jpg | Bin 24415 -> 19817 bytes admin/help/img/image018.jpg | Bin 48162 -> 39286 bytes admin/help/img/image019.jpg | Bin 23865 -> 19934 bytes admin/help/img/image020.jpg | Bin 18842 -> 12582 bytes admin/help/img/image021.jpg | Bin 19476 -> 13726 bytes admin/help/img/image022.jpg | Bin 24969 -> 19666 bytes admin/help/img/image023.png | Bin 330 -> 184 bytes admin/help/img/image024.jpg | Bin 26698 -> 21043 bytes admin/help/img/image025.jpg | Bin 36966 -> 29664 bytes admin/help/img/image026.png | Bin 327 -> 180 bytes admin/help/img/image027.jpg | Bin 37331 -> 30739 bytes admin/help/img/image028.png | Bin 229 -> 122 bytes admin/help/img/image029.jpg | Bin 34797 -> 27691 bytes admin/help/img/image030.png | Bin 228 -> 122 bytes admin/help/img/image031.jpg | Bin 32804 -> 26560 bytes admin/help/img/image032.jpg | Bin 32932 -> 25922 bytes admin/help/img/image033.jpg | Bin 28826 -> 23201 bytes admin/help/img/image034.jpg | Bin 383 -> 223 bytes admin/help/img/image035.jpg | Bin 1027 -> 713 bytes admin/help/img/image036.jpg | Bin 22339 -> 17864 bytes admin/help/img/image037.jpg | Bin 44758 -> 36442 bytes admin/help/img/image038.jpg | Bin 35484 -> 28206 bytes admin/help/img/image039.jpg | Bin 29526 -> 23612 bytes admin/help/img/image040.jpg | Bin 29315 -> 24794 bytes admin/help/img/image041.jpg | Bin 23938 -> 19040 bytes admin/help/img/image042.jpg | Bin 25652 -> 20799 bytes admin/help/img/image043.jpg | Bin 30062 -> 24623 bytes admin/help/img/image044.jpg | Bin 28479 -> 23802 bytes admin/help/img/image045.jpg | Bin 24347 -> 20466 bytes admin/help/img/image046.png | Bin 57808 -> 20914 bytes admin/help/img/image047.png | Bin 29038 -> 9508 bytes admin/help/img/image048.jpg | Bin 36833 -> 31254 bytes admin/help/img/image049.jpg | Bin 27960 -> 22227 bytes admin/help/img/image050.jpg | Bin 25034 -> 20237 bytes admin/help/img/image051.jpg | Bin 27778 -> 22959 bytes admin/help/img/image052.png | Bin 815 -> 598 bytes admin/help/img/image053.jpg | Bin 19889 -> 14428 bytes admin/help/img/image054.jpg | Bin 11774 -> 8892 bytes admin/help/img/image055.jpg | Bin 41275 -> 33653 bytes admin/help/img/image056.jpg | Bin 17728 -> 14447 bytes admin/help/img/image057.jpg | Bin 77778 -> 70685 bytes admin/help/img/image058.jpg | Bin 23060 -> 17777 bytes admin/help/img/image059.jpg | Bin 24221 -> 20743 bytes admin/help/img/image060.jpg | Bin 31584 -> 28655 bytes admin/help/img/image061.png | Bin 9679 -> 3633 bytes admin/help/img/image062.png | Bin 4357 -> 2501 bytes admin/help/img/image063.png | Bin 4490 -> 2566 bytes admin/help/img/install/complete_install.PNG | Bin 482078 -> 337139 bytes admin/help/img/install/db_select.PNG | Bin 39596 -> 19314 bytes .../help/img/install/environment_setting.PNG | Bin 23409 -> 12054 bytes admin/help/img/install/insert_admin_info.PNG | Bin 28362 -> 13241 bytes admin/help/img/install/insert_db_info.PNG | Bin 29418 -> 13644 bytes .../img/install/install_condition_check.PNG | Bin 20829 -> 10553 bytes .../install/install_condition_check_error.PNG | Bin 24090 -> 12150 bytes admin/help/img/install/language_select.PNG | Bin 27394 -> 13190 bytes admin/help/img/make_general_site/add_home.PNG | Bin 34965 -> 16830 bytes .../img/make_general_site/board_install.PNG | Bin 21484 -> 11952 bytes .../make_general_site/change_start_page.PNG | Bin 18639 -> 5681 bytes .../default_layout_setting.PNG | Bin 69367 -> 47259 bytes .../img/make_general_site/delete_menu1.PNG | Bin 18836 -> 5274 bytes .../ftp_password_confirm.PNG | Bin 10170 -> 6181 bytes .../help/img/make_general_site/home_page1.PNG | Bin 21938 -> 12675 bytes .../help/img/make_general_site/home_page2.PNG | Bin 26721 -> 15372 bytes .../help/img/make_general_site/home_page3.PNG | Bin 117545 -> 78061 bytes .../help/img/make_general_site/home_page4.PNG | Bin 126132 -> 82341 bytes .../help/img/make_general_site/home_page5.PNG | Bin 143521 -> 90026 bytes .../help/img/make_general_site/home_page6.PNG | Bin 39716 -> 19883 bytes .../help/img/make_general_site/home_page7.PNG | Bin 152345 -> 94570 bytes .../help/img/make_general_site/home_page8.PNG | Bin 144062 -> 90749 bytes .../make_general_site/home_page_completed.PNG | Bin 135861 -> 86755 bytes .../make_general_site/menu_delete_confirm.PNG | Bin 11956 -> 6906 bytes .../img/make_general_site/notice01_add.PNG | Bin 37629 -> 17925 bytes .../other_mentype_install.PNG | Bin 27491 -> 12686 bytes admin/help/img/make_general_site/progress.PNG | Bin 5126 -> 2553 bytes .../ckeditor/plugins/image/images/noimage.png | Bin 2115 -> 2114 bytes .../plugins/link/images/hidpi/anchor.png | Bin 1379 -> 1013 bytes .../skins/moono-dark/images/arrow.png | Bin 261 -> 191 bytes .../skins/moono-dark/images/close.png | Bin 720 -> 433 bytes .../skins/moono-dark/images/hidpi/close.png | Bin 1288 -> 681 bytes .../moono-dark/images/hidpi/lock-open.png | Bin 1107 -> 700 bytes .../skins/moono-dark/images/hidpi/lock.png | Bin 1154 -> 659 bytes .../skins/moono-dark/images/hidpi/refresh.png | Bin 1694 -> 1192 bytes .../skins/moono-dark/images/lock-open.png | Bin 693 -> 325 bytes .../ckeditor/skins/moono-dark/images/lock.png | Bin 723 -> 344 bytes .../skins/moono-dark/images/refresh.png | Bin 886 -> 409 bytes .../ckeditor/skins/moono/images/arrow.png | Bin 191 -> 166 bytes .../ckeditor/skins/moono/images/close.png | Bin 468 -> 272 bytes .../skins/moono/images/hidpi/close.png | Bin 1271 -> 1264 bytes .../skins/moono/images/hidpi/lock-open.png | Bin 1329 -> 1234 bytes .../skins/moono/images/hidpi/lock.png | Bin 1299 -> 1295 bytes .../skins/moono/images/hidpi/refresh.png | Bin 1842 -> 1141 bytes .../ckeditor/skins/moono/images/lock-open.png | Bin 349 -> 313 bytes .../ckeditor/skins/moono/images/lock.png | Bin 475 -> 299 bytes .../plugins/ui.tree/images/arrow_refresh.png | Bin 685 -> 628 bytes common/js/plugins/ui.tree/images/cross.png | Bin 655 -> 598 bytes common/js/plugins/ui.tree/images/disk.png | Bin 620 -> 559 bytes .../js/plugins/ui.tree/images/folder_add.png | Bin 668 -> 610 bytes .../plugins/ui.tree/images/folder_delete.png | Bin 666 -> 604 bytes .../js/plugins/ui.tree/images/folder_edit.png | Bin 733 -> 671 bytes common/js/plugins/ui.tree/images/page_add.png | Bin 739 -> 684 bytes .../js/plugins/ui.tree/images/page_delete.png | Bin 740 -> 684 bytes .../js/plugins/ui.tree/images/page_edit.png | Bin 807 -> 751 bytes common/js/plugins/ui.tree/images/spinner.gif | Bin 1553 -> 1435 bytes layouts/default/siteTitle.png | Bin 7763 -> 1346 bytes layouts/default/slideNav.png | Bin 918 -> 540 bytes layouts/default/thumbnail.png | Bin 22472 -> 7166 bytes layouts/default/visual.main.1.jpg | Bin 11889 -> 11470 bytes layouts/default/visual.main.2.jpg | Bin 8900 -> 8657 bytes layouts/default/visual.main.3.jpg | Bin 9889 -> 9290 bytes layouts/default/visual.sub.jpg | Bin 7846 -> 7772 bytes layouts/xe_official/images/black/bgBody.gif | Bin 1398 -> 1390 bytes .../images/black/bgContentBody.gif | Bin 153 -> 145 bytes layouts/xe_official/images/black/bgGnbOn.gif | Bin 354 -> 346 bytes layouts/xe_official/images/black/bgGnbVr.gif | Bin 97 -> 89 bytes layouts/xe_official/images/black/bgHeader.jpg | Bin 6492 -> 4205 bytes layouts/xe_official/images/black/bgLnbOff.gif | Bin 61 -> 53 bytes layouts/xe_official/images/black/bgSearch.gif | Bin 1474 -> 1466 bytes .../xe_official/images/black/bgSearchOn.gif | Bin 1499 -> 1491 bytes .../xe_official/images/black/buttonSearch.gif | Bin 959 -> 951 bytes layouts/xe_official/images/default/bgBody.gif | Bin 1646 -> 1638 bytes .../images/default/bgContentBody.gif | Bin 101 -> 93 bytes .../xe_official/images/default/bgGnbOn.gif | Bin 354 -> 346 bytes .../xe_official/images/default/bgGnbVr.gif | Bin 97 -> 89 bytes .../xe_official/images/default/bgHeader.jpg | Bin 6515 -> 4328 bytes .../xe_official/images/default/bgLnbOff.gif | Bin 137 -> 129 bytes .../xe_official/images/default/bgSearch.gif | Bin 1566 -> 1558 bytes .../xe_official/images/default/bgSearchOn.gif | Bin 1556 -> 1548 bytes .../images/default/buttonSearch.gif | Bin 976 -> 968 bytes .../images/white/bgContentBody.gif | Bin 101 -> 93 bytes layouts/xe_official/images/white/bgGnbOn.gif | Bin 354 -> 346 bytes layouts/xe_official/images/white/bgGnbVr.gif | Bin 96 -> 88 bytes layouts/xe_official/images/white/bgHeader.png | Bin 18604 -> 7942 bytes layouts/xe_official/images/white/bgLnbOff.gif | Bin 137 -> 129 bytes layouts/xe_official/images/white/bgSearch.gif | Bin 120 -> 112 bytes .../xe_official/images/white/bgSearchOn.gif | Bin 120 -> 112 bytes .../xe_official/images/white/buttonSearch.gif | Bin 133 -> 125 bytes layouts/xe_official/thumbnail.png | Bin 14157 -> 6183 bytes layouts/xedition/img/bg_sitemap.png | Bin 150 -> 110 bytes layouts/xedition/img/bg_stat.jpg | Bin 267070 -> 239725 bytes layouts/xedition/img/btn_close.png | Bin 1130 -> 233 bytes layouts/xedition/img/camera-loader.gif | Bin 9289 -> 4076 bytes layouts/xedition/img/camera_skins.png | Bin 24198 -> 14657 bytes layouts/xedition/img/f_logo.png | Bin 3432 -> 2859 bytes layouts/xedition/img/intro.png | Bin 342516 -> 324577 bytes layouts/xedition/img/logo.png | Bin 16055 -> 727 bytes layouts/xedition/img/m_logo.png | Bin 16760 -> 1465 bytes layouts/xedition/img/s_logo.png | Bin 15997 -> 700 bytes layouts/xedition/img/slider_img.jpg | Bin 242733 -> 188187 bytes layouts/xedition/img/slider_img2.jpg | Bin 254746 -> 180690 bytes layouts/xedition/img/slider_img3.jpg | Bin 286957 -> 240483 bytes layouts/xedition/img/slider_img4.jpg | Bin 279359 -> 246942 bytes layouts/xedition/img/sp_feature.png | Bin 12737 -> 9449 bytes layouts/xedition/img/sub_banner_01.jpg | Bin 116527 -> 104368 bytes layouts/xedition/img/sub_banner_02.jpg | Bin 129764 -> 118105 bytes layouts/xedition/img/sub_banner_xeicon.jpg | Bin 167223 -> 107244 bytes layouts/xedition/thumbnail.png | Bin 29495 -> 9807 bytes m.layouts/colorCode/img/Blue/bg_lang_body.png | Bin 941 -> 92 bytes m.layouts/colorCode/img/Blue/bg_lang_t.png | Bin 1215 -> 242 bytes m.layouts/colorCode/img/Blue/btn_home.png | Bin 3300 -> 1191 bytes m.layouts/colorCode/img/Blue/btn_home_fda.png | Bin 3246 -> 1073 bytes m.layouts/colorCode/img/Blue/btn_lang_off.png | Bin 1558 -> 314 bytes .../colorCode/img/Blue/btn_lang_off_tp.png | Bin 1670 -> 362 bytes m.layouts/colorCode/img/Blue/btn_lang_on.png | Bin 5603 -> 1236 bytes .../colorCode/img/Blue/btn_lang_on_tp.png | Bin 6060 -> 1672 bytes m.layouts/colorCode/img/Blue/btn_menu.png | Bin 2979 -> 1043 bytes m.layouts/colorCode/img/Blue/btn_menu_fda.png | Bin 2943 -> 887 bytes m.layouts/colorCode/img/Gray/bg_lang_body.png | Bin 941 -> 92 bytes m.layouts/colorCode/img/Gray/bg_lang_t.png | Bin 1211 -> 237 bytes m.layouts/colorCode/img/Gray/btn_home.png | Bin 3030 -> 1026 bytes m.layouts/colorCode/img/Gray/btn_home_fda.png | Bin 2914 -> 786 bytes m.layouts/colorCode/img/Gray/btn_lang_off.png | Bin 1446 -> 257 bytes .../colorCode/img/Gray/btn_lang_off_tp.png | Bin 1569 -> 350 bytes m.layouts/colorCode/img/Gray/btn_lang_on.png | Bin 2082 -> 272 bytes .../colorCode/img/Gray/btn_lang_on_tp.png | Bin 2230 -> 453 bytes m.layouts/colorCode/img/Gray/btn_menu.png | Bin 2787 -> 898 bytes m.layouts/colorCode/img/Gray/btn_menu_fda.png | Bin 2649 -> 800 bytes .../colorCode/img/Orange/bg_lang_body.png | Bin 941 -> 92 bytes m.layouts/colorCode/img/Orange/bg_lang_t.png | Bin 1203 -> 238 bytes m.layouts/colorCode/img/Orange/btn_home.png | Bin 3299 -> 1049 bytes .../colorCode/img/Orange/btn_home_fda.png | Bin 3196 -> 940 bytes .../colorCode/img/Orange/btn_lang_off.png | Bin 1545 -> 338 bytes .../colorCode/img/Orange/btn_lang_off_tp.png | Bin 1645 -> 367 bytes .../colorCode/img/Orange/btn_lang_on.png | Bin 4108 -> 1128 bytes .../colorCode/img/Orange/btn_lang_on_tp.png | Bin 4331 -> 1223 bytes m.layouts/colorCode/img/Orange/btn_menu.png | Bin 2904 -> 866 bytes .../colorCode/img/Orange/btn_menu_fda.png | Bin 2827 -> 784 bytes m.layouts/colorCode/img/Red/bg_lang_body.png | Bin 941 -> 92 bytes m.layouts/colorCode/img/Red/bg_lang_t.png | Bin 1202 -> 240 bytes m.layouts/colorCode/img/Red/btn_home.png | Bin 3261 -> 987 bytes m.layouts/colorCode/img/Red/btn_home_fda.png | Bin 3104 -> 918 bytes m.layouts/colorCode/img/Red/btn_lang_off.png | Bin 1464 -> 292 bytes .../colorCode/img/Red/btn_lang_off_tp.png | Bin 1577 -> 368 bytes m.layouts/colorCode/img/Red/btn_lang_on.png | Bin 3150 -> 824 bytes .../colorCode/img/Red/btn_lang_on_tp.png | Bin 3324 -> 996 bytes m.layouts/colorCode/img/Red/btn_menu.png | Bin 2874 -> 889 bytes m.layouts/colorCode/img/Red/btn_menu_fda.png | Bin 2787 -> 766 bytes .../colorCode/img/nGreenA/bg_lang_body.png | Bin 941 -> 92 bytes m.layouts/colorCode/img/nGreenA/bg_lang_t.png | Bin 1203 -> 234 bytes m.layouts/colorCode/img/nGreenA/btn_home.png | Bin 3069 -> 938 bytes .../colorCode/img/nGreenA/btn_home_fda.png | Bin 2954 -> 831 bytes .../colorCode/img/nGreenA/btn_lang_off.png | Bin 1458 -> 275 bytes .../colorCode/img/nGreenA/btn_lang_off_tp.png | Bin 1573 -> 366 bytes .../colorCode/img/nGreenA/btn_lang_on.png | Bin 3177 -> 1289 bytes .../colorCode/img/nGreenA/btn_lang_on_tp.png | Bin 3331 -> 1370 bytes m.layouts/colorCode/img/nGreenA/btn_menu.png | Bin 3060 -> 957 bytes .../colorCode/img/nGreenA/btn_menu_fda.png | Bin 2949 -> 880 bytes .../colorCode/img/nGreenB/bg_lang_body.png | Bin 941 -> 92 bytes m.layouts/colorCode/img/nGreenB/bg_lang_t.png | Bin 1203 -> 234 bytes m.layouts/colorCode/img/nGreenB/btn_home.png | Bin 3290 -> 997 bytes .../colorCode/img/nGreenB/btn_home_fda.png | Bin 3037 -> 918 bytes .../colorCode/img/nGreenB/btn_lang_off.png | Bin 1458 -> 275 bytes .../colorCode/img/nGreenB/btn_lang_off_tp.png | Bin 1573 -> 366 bytes .../colorCode/img/nGreenB/btn_lang_on.png | Bin 3177 -> 1289 bytes .../colorCode/img/nGreenB/btn_lang_on_tp.png | Bin 3331 -> 1370 bytes m.layouts/colorCode/img/nGreenB/btn_menu.png | Bin 2989 -> 903 bytes .../colorCode/img/nGreenB/btn_menu_fda.png | Bin 2763 -> 736 bytes modules/admin/tpl/img/bgFavicon.gif | Bin 2919 -> 2911 bytes modules/admin/tpl/img/bgMobileTop.png | Bin 53770 -> 49230 bytes modules/admin/tpl/img/faviconSample.png | Bin 3534 -> 838 bytes .../tpl/img/glyphicons-halflings-white.png | Bin 8777 -> 8767 bytes .../admin/tpl/img/glyphicons-halflings.png | Bin 12799 -> 12095 bytes modules/admin/tpl/img/mobiconSample.png | Bin 15194 -> 8472 bytes modules/admin/tpl/img/starRating.png | Bin 1055 -> 955 bytes modules/admin/tpl/img/toggleSwitch.png | Bin 2874 -> 2770 bytes modules/admin/tpl/img/xe.h1.png | Bin 4957 -> 1032 bytes modules/autoinstall/tpl/img/btn_search.gif | Bin 605 -> 597 bytes modules/autoinstall/tpl/img/hrE1.gif | Bin 43 -> 35 bytes modules/autoinstall/tpl/img/starRating.png | Bin 1055 -> 531 bytes modules/board/skins/default/profile.gif | Bin 516 -> 508 bytes modules/board/skins/xedition/profile.gif | Bin 989 -> 981 bytes modules/board/skins/xedition/thumbnail.png | Bin 8638 -> 7171 bytes .../m.skins/default/img/member.png | Bin 1043 -> 666 bytes .../m.skins/default/img/read.png | Bin 3714 -> 557 bytes .../m.skins/default/img/unread.png | Bin 1069 -> 511 bytes .../communication/skins/default/img/bgTab.gif | Bin 99 -> 91 bytes .../skins/default/img/iconH3.gif | Bin 326 -> 318 bytes .../skins/default/img/lineVrText.gif | Bin 44 -> 36 bytes modules/counter/tpl/images/buttonLeft.gif | Bin 58 -> 50 bytes modules/counter/tpl/images/buttonRight.gif | Bin 58 -> 50 bytes modules/counter/tpl/images/iconBar.gif | Bin 50 -> 42 bytes modules/document/tpl/icons/file.gif | Bin 188 -> 183 bytes modules/document/tpl/icons/image.gif | Bin 128 -> 127 bytes modules/document/tpl/icons/movie.gif | Bin 138 -> 134 bytes modules/document/tpl/icons/new.gif | Bin 135 -> 126 bytes modules/document/tpl/icons/secret.gif | Bin 124 -> 120 bytes modules/document/tpl/icons/update.gif | Bin 136 -> 128 bytes .../skins/xpresseditor/img/bg_tool.black.gif | Bin 441 -> 90 bytes .../editor/skins/xpresseditor/img/bg_tool.gif | Bin 98 -> 90 bytes .../skins/xpresseditor/img/btn_expand.gif | Bin 63 -> 55 bytes .../img/btn_layer_cell_adjust.gif | Bin 162 -> 154 bytes .../skins/xpresseditor/img/btn_qmark.gif | Bin 1372 -> 1364 bytes .../skins/xpresseditor/img/btn_set.black.gif | Bin 11141 -> 11133 bytes .../editor/skins/xpresseditor/img/btn_set.gif | Bin 11749 -> 11741 bytes .../xpresseditor/img/btn_set_blank.black.gif | Bin 2034 -> 2026 bytes .../skins/xpresseditor/img/btn_set_blank.gif | Bin 2209 -> 2201 bytes .../skins/xpresseditor/img/bx_character.gif | Bin 2092 -> 2084 bytes .../xpresseditor/img/vr_layer_character.gif | Bin 44 -> 36 bytes modules/install/tpl/img/icoStatus.gif | Bin 879 -> 871 bytes modules/install/tpl/img/xe.png | Bin 7058 -> 2987 bytes .../skins/default/images/white/bgTab.gif | Bin 99 -> 91 bytes modules/layout/tpl/images/bgBody.gif | Bin 112 -> 104 bytes modules/layout/tpl/images/bgContainer.gif | Bin 205 -> 197 bytes modules/layout/tpl/images/bgExtension.gif | Bin 72 -> 64 bytes modules/layout/tpl/images/bgSection.gif | Bin 54 -> 46 bytes modules/layout/tpl/images/bgXe.gif | Bin 414 -> 406 bytes modules/layout/tpl/images/buttonControler.png | Bin 2637 -> 1788 bytes modules/layout/tpl/images/faceoff.gif | Bin 10972 -> 10964 bytes .../layout/tpl/img/black/iconWidgetList.gif | Bin 44 -> 36 bytes modules/layout/tpl/img/black/lineTextDiv.gif | Bin 44 -> 36 bytes modules/layout/tpl/img/download.png | Bin 1005 -> 385 bytes modules/layout/tpl/img/noThumbnail.png | Bin 2619 -> 1184 bytes .../layout/tpl/img/white/iconWidgetList.gif | Bin 44 -> 36 bytes modules/layout/tpl/img/white/linePoint.gif | Bin 43 -> 35 bytes modules/layout/tpl/img/white/lineTextDiv.gif | Bin 44 -> 36 bytes .../skins/default/images/openid_login_bg.gif | Bin 237 -> 229 bytes modules/message/skins/xedition/img/error.png | Bin 20317 -> 14796 bytes modules/page/tpl/images/buttonTypeACenter.gif | Bin 188 -> 180 bytes .../poll/skins/default/images/back_bar.png | Bin 159 -> 91 bytes .../poll/skins/default/images/color_bar.png | Bin 328 -> 107 bytes modules/poll/skins/default/images/lb.png | Bin 216 -> 138 bytes modules/poll/skins/default/images/lh.png | Bin 272 -> 146 bytes modules/poll/skins/default/images/pipe.png | Bin 177 -> 88 bytes modules/poll/skins/default/images/rb.png | Bin 211 -> 141 bytes modules/poll/skins/default/images/rh.png | Bin 262 -> 156 bytes modules/poll/skins/default/images/rlb.png | Bin 215 -> 152 bytes modules/poll/skins/default/images/rrb.png | Bin 212 -> 155 bytes modules/poll/skins/default/images/top_bg.png | Bin 299 -> 93 bytes .../skins/default/images/top_title_bg.png | Bin 523 -> 171 bytes .../widget/tpl/images/widgetstyle_none.gif | Bin 1370 -> 1362 bytes .../skins/default/img/black/lineTextDiv.gif | Bin 44 -> 36 bytes .../skins/default/img/white/lineTextDiv.gif | Bin 44 -> 36 bytes .../xe_global/images/black/bulletFF1A00.gif | Bin 44 -> 36 bytes .../skins/xe_global/images/black/vrType1.gif | Bin 44 -> 36 bytes .../skins/xe_global/images/default/bu_v1.gif | Bin 43 -> 35 bytes .../xe_global/images/default/buttonLogin.gif | Bin 1779 -> 1771 bytes .../xe_global/images/default/buttonLogout.gif | Bin 1432 -> 1424 bytes .../skins/xe_global/images/none_ssl.png | Bin 1152 -> 332 bytes .../xe_global/images/openid_login_bg.gif | Bin 237 -> 229 bytes .../login_info/skins/xe_global/images/ssl.png | Bin 1171 -> 386 bytes .../xe_global/images/white/bulletFF1A00.gif | Bin 44 -> 36 bytes .../xe_global/images/white/buttonLogin.gif | Bin 605 -> 597 bytes .../images/white/powerdByZeroboard.gif | Bin 132 -> 124 bytes .../skins/xe_global/images/white/vrType1.gif | Bin 44 -> 36 bytes .../xe_globalTwo/images/default/bg_login.gif | Bin 9508 -> 9500 bytes .../xe_globalTwo/images/default/bu_v1.gif | Bin 43 -> 35 bytes .../images/default/buttonLogin.gif | Bin 1662 -> 1654 bytes .../xe_official/images/black/bulletFF1A00.gif | Bin 44 -> 36 bytes .../xe_official/images/black/vrType1.gif | Bin 44 -> 36 bytes .../images/default/bulletFF1A00.gif | Bin 44 -> 36 bytes .../images/default/buttonLogin.gif | Bin 605 -> 597 bytes .../xe_official/images/default/vrType1.gif | Bin 44 -> 36 bytes .../skins/xe_official/images/none_ssl.png | Bin 1152 -> 332 bytes .../xe_official/images/openid_login_bg.gif | Bin 237 -> 229 bytes .../skins/xe_official/images/ssl.png | Bin 1171 -> 386 bytes .../xe_official/images/white/bulletFF1A00.gif | Bin 44 -> 36 bytes .../xe_official/images/white/buttonLogin.gif | Bin 605 -> 597 bytes .../images/white/powerdByZeroboard.gif | Bin 132 -> 124 bytes .../xe_official/images/white/vrType1.gif | Bin 44 -> 36 bytes .../images/btn_signin.gif | Bin 2115 -> 2107 bytes .../images/btn_signout.gif | Bin 1820 -> 1812 bytes .../images/bullet_input_id.gif | Bin 1294 -> 1286 bytes .../images/bullet_input_pw.gif | Bin 1298 -> 1290 bytes .../images/icon_add.gif | Bin 1726 -> 1718 bytes .../images/icon_article.gif | Bin 1466 -> 1458 bytes .../images/icon_at.gif | Bin 1799 -> 1791 bytes .../images/icon_book.gif | Bin 1781 -> 1773 bytes .../images/icon_check.gif | Bin 1703 -> 1695 bytes .../images/icon_friends.gif | Bin 1743 -> 1735 bytes .../images/icon_graph.gif | Bin 1780 -> 1772 bytes .../images/icon_help.gif | Bin 1576 -> 1568 bytes .../images/icon_mbinfo.gif | Bin 1773 -> 1765 bytes .../images/icon_message.gif | Bin 1674 -> 1666 bytes .../images/icon_money.gif | Bin 1582 -> 1574 bytes .../images/icon_note.gif | Bin 1545 -> 1537 bytes .../images/icon_tool.gif | Bin 2176 -> 2168 bytes .../images/icon_write.gif | Bin 1697 -> 1689 bytes .../images/icon_written.gif | Bin 2218 -> 2210 bytes .../images/minfo_bg_tail.png | Bin 1091 -> 168 bytes .../images/minfo_body_bg.gif | Bin 1105 -> 1097 bytes .../images/signin_bg_tail.png | Bin 1030 -> 176 bytes .../images/signin_bg_tt.png | Bin 1071 -> 214 bytes .../images/signin_body_bg.gif | Bin 1249 -> 1241 bytes .../images/signin_input.gif | Bin 1519 -> 1511 bytes .../images/signin_key_bg.gif | Bin 3672 -> 3664 bytes .../images/signin_key_left.gif | Bin 3576 -> 3568 bytes .../images/signin_key_left_off.gif | Bin 2692 -> 2684 bytes .../images/signin_key_left_on.gif | Bin 2681 -> 2673 bytes .../images/signin_key_right.gif | Bin 2289 -> 2281 bytes .../images/signin_key_right_off.gif | Bin 1943 -> 1935 bytes .../images/signin_key_right_on.gif | Bin 1937 -> 1929 bytes .../images/signin_win_hr.gif | Bin 1349 -> 1341 bytes widgetstyles/simple/preview.gif | Bin 1202 -> 1194 bytes 394 files changed, 0 insertions(+), 0 deletions(-) diff --git a/admin/help/img/admin/dashboard.PNG b/admin/help/img/admin/dashboard.PNG index df44b1f54e5e50e8fbfa1b9cf93f80e334d7b96f..281cc86f23ac4ec51a39ffa05f8c49a003b9ec2a 100644 GIT binary patch literal 39493 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 YPwqQWlA>{Y<^TWy07*qoM6N<$g7xokD*ylh literal 77855 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 ilek{ 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 diff --git a/admin/help/img/admin/easyinstall_for_textyle.PNG b/admin/help/img/admin/easyinstall_for_textyle.PNG index b772f763950055fe33081f2ab496746f0bcc53d1..c73f829fa378b105f1099acfddabdaa0b9292998 100644 GIT binary patch literal 53653 zcmZ_#by$>9^9PJCf^;m6bSNoZ(zTQlF4C#e4bqKLE2*S_fGkLdbcZ4!&C;FH-3{-( z_&m?|_q*Qf<&V8?&VA3EIdjf@X3m^BA782|;$c%_gFqlWWhICP2!u8P0zJ6Hd;qkF z74Kw#KnO!+h>WJ^)bh}n+{7^WX*nB z8z5Z&#%$T|HGc+sHc$~iBufG`)z`@$Ka2K&Dg4F<{+osT*2>%iO8}4GDk|7i3)av; zpg@Oi^?aa3TK%4a0T3z>{19kBKDD+ashz8$0KA#xf8(nPC}zo{fCANqrhJ`!Y%A=i zwX*erZq^^G4jf{-4i5lWitYQU$2IVM27cYDzX=4Z+itxYne~W%Y-ITE|}Ev(x7rK!Z-;I^e7D*ntm32B);~wssG`*#on&-Qg|jPvOirH1s2ceJu>z(s-nukvr_2ajb*UM3kfcj&Vz))q*_$(L)H~!?FU7zl%CnTNDLMq?}l&P-(tn-*+wR zY6BY^LNj(5r$`gJ$*)WM^YnWYIgP^~{TYDtM~qMmSlb$=7CuMAfWd*^pMa1b6b=GyC-tEQj~0PxBK~Ns1+RY% z@YEwy?|TR+Bqus1rp3*kMf^HstD-HgXJ@=8uB~EAs_**C2k=hVdMoKlWn1EuUWT}j zwGk7bLomG1T(9}A`ROX~+H;wbE)Pom|B=;l3FmRnt|`m2s=5j+Mof zQVx9HrxBs+o}#-zX8~M^)j=05Y#^f zv8f>$>|9=q*r3*+Picu8uA*xpzgn&54p>QITxw)tp|*eeU00lZ{9Ri3on0^yWlMiX zRnBLxF=Q*xO;UG0T2ZEWH4Bmhla*3aSy`#eikmIQ9BL)WkkzK+QWxGEw*DnItuO5% z13M&w%yCu>{ux+Of%&qo=H@F#o8qMCLo~#40_f(Z9D0x3tP=a0#HkxZqI%6BFl+?8 z9lL*)j2M_b9v@h!j&#zih`zX9JX9KQ%K za<-ic&5HTb*eVaB6*#@(TdK;)OMIvTwDC8q?EKekOJ{e4h067BUeBz$JMuJ+Ow^y^ zDcv}5Jh#*cGHz&(nu!2&3LC7qgVS!EN|55}$+@O@Kn%QgZpiiE+IOEqt%?Tgg!_85 zw@<_9GTO;hWd)q;62!>hqn4Z74En}!BuuemBKEP@r=3M*NYM2~c%Kpn&8-PQmS6S0 z%bi4v_z!UoaE`bU?vCe&6QaLm&@u4xBxdAq0AqhWy_zi17Xm;i2sR zwf%elzcq43irN0l+GX19Ge& z(94ttR#U)cyu9@MjTZ>y@4q=WlGWsJb#rsGw^#MQwTo!>YOX{ywG9p(36r0FZ&)-_ z_xdE?cG>^Q1E=5Ot~IuO8|s$j$(YK3)F()~E|#=liHtM4wf8FNNhYoFD#BR_ zu{!%WEnZ(q_vGryi#e;&{W|6(@?gNp0n;{qH({! z)7W!~U;UkGhG9DM$!0_|zH(g?&Z{B6y0M0k&fQzB7iyNa1HTYb=khzh>j#vi;?w$y zifn89KR44PcKIXzs>X$yjBak>mGq~?94Y;inl^<4n)%(J@(#XP`4bKvg;ykqURN48 z()tOT;^maZlI>~@SNUzyM`Jv16~rE;AQBTG=a21@D~ijp zO4mxOrCrvusZjncAbuPRX>FjFyVv+BKY6Us*Dj2u4BqWp?@f=sb~@?1qk~(P4m8!g z+w!Cc?Z}nXI6Ll|3oYF9rC$FuGCR%l1V`oQ&y>rl{Z?~^M?u9X!4n9h}BPyP;K*AwT{f?p)?zL{infJ-#!&Ha`2?#{+ z2)_K$ST|)iZjBkTlg)Re@8I2}tKz7?Ba|uIR}F=&mRSztOHh*ILg;#ft?=)IG7zl* zguK(37Y}NX&l^`75swRP8Wg0VBp`7d+mIJ7{|B<$q`_^asaf&_S`uzh>FsAFF-3QLp3 z6!|X65yw(6?v51oKoqKd%T!^c(!LUJF&4JrAc$DQP{M(3+`gD(GcVmcv_0oX`XhRXa{$BU-N^VfnZ;3-?@o2e z#-k~;OoF*>F7l@K?C#%wT(MZ5#z?L2H3^sd;=NRi%k&{t487a3Cua4Cxd@J$2!CVW=v2?KD z*`r_up|DkGgjck5-GV2&un=q|QtA>3c2mk2x-kh-2Q*w?Jb%-G3>Rr{u_(KVZ9||8S;PG#^ zn^BkInBn@aH(D-N;Iz;vj1r7D0jeeh(3q`15!~)%aDVF=K1_t9U`>lI;`cQ*LK1S* zXl$>6w9AFK9ksyP_u!q};?JpS%xfm|d>L8VdueoN2BW!A1<5JH;GLG{??W|rmt=R6 zLs58gmAMR?!!C-Sfz@DVb4CRor-7sPahY&KToOtuIObFQ8K+Eo$I|nXVU#!sTpw)P zRSrx9`uN~~XM?>4J+8nZ>CYJ^;v%yyh}@JIDuSUxYNQ=Eeo+yY*)B<^dWKkOHN)r+Htb%22m1o)tc{bJ|=e z`3iQ3 zwP?Yt|F3{(E_j=W=>J-gyCcAv|NGFBxcsytEiJ9Mq@=lpob1iC#WoTi7NoEdRaI4! zlam)dZwRY*7AarondG~J2k>pa*U~mtj9^~QZLz;}c?9_z~(G9&B%=P2NS&V!!OW*s))h9LWTSx^Z z%~qoJ-XL1qSQ{;19oTr2V;io&80m1F^LU_N3Ml~1dMd-Xo<7widNWN~QugH};jLrN z=SMDXmLd`1bQ^QCuEFbOAy%FuxP6H+Sv)#lxB%=iCW5D_<;G%8kAbhMhFb0d$eQXV zl$c!hHw3ivz-dKbd!f`tj>9tIdHFV15fErU7L3RKaSV(qSZCB%Fx};RXe|1=j0?iT z3~7^MKZ5epfIyAq+e==jr>E?wzZTnHaorueOIi>VG|Uz*o&SLKw!L*b*(a-S;A={5 zq;?DVEf)C!EC^6VN3N>y6%Nk*$2ltDl#x4WSrOP zqgiB|e+b$N$``MR3%JnSc6F07$U+Tfy#odc8kB*h$M3p3oCVyLxZ9w=2S2$FIb}(L zS@SyrkPZQW?QL*cR7t5K|1^01CLm?^^q?w<;Zn%|ON?-}^QU*`KfKFsk~Vy6^P;PD z@pBvjU;(`jrwbH01N-?kHfft!FchTmsEow9D+x?+Eq6-Dt3QHcw^!gI`fMhSvj;8= zt)#cC4-IFk0^)|Eg~^fb5)*pN3n7I)?-GDCJ#tIgS@YYnyvk9q9`p)Xw-Edi&w>wa z&o(-6kTfnrr+h8`Je4Z*77rOK%aTaoLcd$g25BeoLaIm=A8(TksP2RiHD!ZUxyqDf zN7NB+N$N-urD1S&hE16bX9~FyZv>T#K>dkZowG&SXRV?>-zBhCT~zLo`}eIwHm-oQ z`0D9vJaVmPvB6d%m2Z|XFoqLk1;p2qL-Gc)tZy!W1Qtj-d@oRB9DIU#+(!XVjCD^> zdn7fSdmy@qmU?;2P%u)Y>3mZC;U(214YX8-v`E#K3R@m;npV^4lIdIeXD`_1Q*KKF zsIeXZV89^!u%UZ$^CAL}BOUyWh1;$MEU3Nbp|xC8Qm~a!s?at`Da5Ef7mvaFFAelQ zL<(m0riK^DjVGEm3kYvt)Ekp8Ybj(!C$4sYt2!zSqRZH;zUc(`$hwwQ^7dtfSrv-A zTRZfcCawZ-7zmbEmm3k|rR_4&j^AtFh+VE$t7!w1&Qjuajg#akSa?7@xDQl!VYD~p zjDEz%NRSPb2zLzJkc1rJM|GBGI4Y-e30^Gz^|#Vt*c=GB%><1bZ$xi~?#+59WOwoVS5oJ&ceL zz@1}4gYz`6&VYBwkC5BwXSjG4B|0}UYvg|^=feVI!lJ=vwqf+%H5YEzj69Bersj< z{IE<()$+)d1G!rA++glP96BvtOq6o2q-h_kz(!)7Re4A-!8f9?&ur2&q|u_#nT5@z z374Q}kIN=d^G+e@0VtMSl46sMyq`5V0T4#Ixa zk5O!f4LphIr88NqRIrWEi;QeXg??q5{b@@O{Gv2b0wI3;*LPmwt$5btr6oEDr2h!6 zm9^|}=1F2A)pYGCI$-h^mRPbH+Rpg9<7wD>4x`R|K+^^PT@+Hl;C1bJj3!2o2EXx_nqBf8>`5($`|Fb>G8jmN5BI;hA)U{vAVCHf;uT=PpKXNR z;UZRbd}sTS(n*WCG2`{RUv-R8?xXIU{UDeX z$a)@7*YEk*a;_np&t~t2AIQcJ%eqciUz5`TPDsM+PW_>;>@ikcONbRSGJ{x&Y3CvXyNRq&5Bf7-^69 z%Y;?-xNnZ;sM0OOnWAN$Edx|VpU78E|NecS8fU8Khxcq$tV+cy=;%T*uSwu#L>HU*+UIbq@&D}tO=;jj zj{RRIzKnlQ)X1$&c+0Eq`C7k`TjqMcv0!u8K=0pqND=WIl}cALg%b@Je)bKjB<_8D zoNy%uwQ@xPomCt>0MSBVIT~y@h|$qefZO?`cX~3L?emm?xqwZZ+XQFpJGk$`tPtjfAGf~87pInn{qu-)wT79zzj6QcAGU4K2J9~Gyn@M(hqj&j88xS zoB;%E>KPiUJSKYa;)RQgi^K1dDe8Hc&0aj8(PoM?+m1*+d@paFFa1l``0NjwFq^ll z-FpVj`4|kFiut#q5?9yi^B!>@+;}2+B?w2aUFa;A3|{8qU!W*+1KAv&So;}Li)(S9 ze_AEj6x$>ag?4l(Fos8Eq@_&){b=vSm%FS{SwDY7)P8(C7eX67=C}Ckv~!KT$)K1w zE35jv;_P=jJHvBWv^Zp04MGEOLeIG>*skPlkce4*&kaS7qUd6lo9QNF1KkDgpe0aBK8 z&bYsvv`fHaZ|J`xd>Gh80M#lTCsz3S_3Qcbeo0eb?84y?i|Qe-%o7`wN5&OFgLmQl zx>aADdD&xDH$@XO0~!*5P^}VS`J4o)YNMcfqgNHf=$EJLCV(f6BZLd1_N*P1NR5w; z%|sLz7vB!6XQ+BXH8A)#=vN++PVH1WPNkJdrWiC}p#{;+3(lH(&HJ7q9GuN)l5K6s z;MMq{y!Z^10fYHrX-qiK2Aw30QyCceVPIy>*lkz7j%%=E-@`x*3V4^<&{D-qR)N&M zw`EqPK*sJ;y+(UGG@G|V(Y;KkKng84EhYXliZ%ZgMseYwo%|SY@OpOW`g(+54wc~B ziwiPPt%Qc?cy8j((&=}n3x!*wFb$^SczB-JawKBwCrAz zgs;L49ti6#Uh91|K(khM0*3}}pw>OWUYoDLP0h`xep1wB<3MH_NG8nFw5Y7H8!77X zb-?hI@TLv*9taU3C--kf56`^+?;2o6^EMJ+xB(LzvOfJ&7mmwQlG0M@^*I)U_bw6V zPfcb}Hn~#E_GzPv&-;AK0NfvdX1Ev%*eIBwtdXwz%Ps?3hgMvm$akoY$o03uAnLtC zFsnp2#Vb4&S9|)WgzNFy1}v4d2ET(I(uoa#&sU_RLJ$;LS03>c9MHT&k9p@q0BV9+ zftRf<+v8<;(l1G*q05i{JbR1XH1>cJOEeR~o^dKnLe!q*5?b5!aNz{D`-unXmPj9+3iofjn>u02NzdZy`|t#J`5{0u<7;OrkQskVF|VR?_zm z05t%K6wt^#By}X~e@Xw-`XADkvST^Hj$&u7D}GSzM>7O1q2g%K3-M=L7Q27RTVe0Y zJTTa7(B4plu6fe_k?Tc)fFB1g;GyXZk$>5-Lx+pWd|SiL8TxdZWjRCv$zD35C$fQc z6`ap+Y-+X>^M0FA_4(=^q!#(yk(*bIv~SgKG94uyIFYDc zAIfM0N2Q4yU*!-$r@4_KlH_B^RsIv^n4Yf)J4VSpj@+**OJ^&c&O_?5H{KTnsNxOH zLUN&2+nZ%wim)kv6u=i8Lm5(j>h+tSu#~>N>F-edD#VgWoek=jJONl44bazXA7N(CpG|5Jii4!;dJe zESch{iKajd*fp`(7H0+j} zbV@)~@9Ewo+*}?u28Opy*$K^_bRocf1`_;ioqL2v)gt2UEHMGfMq5{?pb|k`#IYco zeG5poQnX=~i=*-n8K;y44uVp)vhr>G-~A1lJ`2yl(eR$t&7rEY9;3i zZh>MUc{}9NFzwt8-|K2$CrYur&r&`~RO~4+KjD{l`fI zD<2FO*MZ$qyFH^;%YC(>%z)j>eY#6gqsofk`b?*1HD7oiPgMSy<)1I8&zj|)xR2rD z>Xmz9YLIv-t2CIqVkH(0{JOjfp_G@OSAW!tn!cgw=N&Ca$i0jK)LrfR=3Tuyr~tFnrDJ(S=E{Rnu4V+}^|!{BH4{!*@xr zTsMB@Sgu{ux`OiQ+j*BdDw`W$@zLRT4Ys2M>J?!zG?h#j-hZw$j+A0?p{l%)x zFQI)+@CA~`GsvU&)Gr92=|tNL=u(F`kCiu4sBuzR+j@en^fdJlUt2% zv%L-++rK=;iXV4@6Bwq#Oov3{>n82>;IRV!F!aKl#haSKzVdY~#zbKe0=f7nkHV}z zUR>c6-)7J&Lt(dxui*@ori!PX>Lp=^#>Ou+V-+wF47D%oGP1iqr`$w}$Fs=B*PQS{ zvbI>#83BbRnCTC|-f{}WCMorPQ!ndMIuU^?Q&Phb5wPwLLD$Rt$t>jJ4d;JrNL26q z_gU{yg zU!p}Gxd1G)a>FnnUT-pnfr&GNb%Ry?E4XmtESEn3!8D6&28;*Ab-^Kn zlr^ig^P1bmb+Peezzh%LBF?QG+G(EOjIY+yvnwYNAU+#E{Qc-d5-AWLD^tLmi|z#x zfy8Cpsd(8sT+Y^CJB-Ucu?{?5lL9RIjZ03p-M+!M*^_xV(C>1yZ5#f0!x!ezvU_skR;CLCl=JhBf(-NE`z4Btr~ooQt49~WOD(M( zAMKjYCQ_xlv}HG*9;5iwl9nU83%q;~AgF)*2!6FP*s?tfA@39Ti+5T%4RcdwUJ6LrudPo5w3No2eXi2mWFi^ZxUPB~ux09;R>3 z_Be`BWB>yOfn+MF#F84@+uO6Um}&&ajjY~_-na>+_;_vVC}h!6@!iBkI8G;2!swqP z%^tMhhK^YMBqS`Hand_5!2R?oNkse4?<^~ZmGw1ZsT>&sj-nfxycatjH|G9f4jbzo zq}F)M@96=@2YOxqVZEax)ZosSd2DQ~VAN*#@Zg=`ZsqjdZodMedn@P6L2OShheW=j zVeM>9tT|6d4*Ue^K|%De)9-^ocvVqR;oUSRQS@h|+4$g~+-12$s=o9?N4r&yFPvd` z{2YEYuoKh7m?Vz{M*}=EP@4ozl{Lcrd~H4J>f2a(=kb2n=y*4ok=zIi{)!sXv%+_; zgVr;2gaZ23)>ewF5t_Z(yB|b&JV#5a8!YSNBj|0r+)rF0A^l$y5PsEro# zr4$3HFvCJ$SxvYphQ_yr-^Qjalk-Cz)(oG|Nyfkvg3y_1A@7!NKKqV@_b zxB+DrV20VGSMp&%#cHgKNDSkPjYxXUl;rYL$I!NJ{Dl2b0$CKssh+&S$A)vxiwr09 z+Q|r%xN@|`#+H6|u3Frp!_;eclk4%bKNoNZQ5b+F#Ko!ELM}f&O4#0RaVZuYP4kV9 z>#O(A+MU^>n@D*9#v9E4=%2F7j34f){mpJGLqo}8OIX&KF z5iHc$w{*#580~e1phAb>?DRF^ft;<>_!ZF49|{O}OM3`0xkyUi>dIh2DK-KmMWdwp z&gbmMBb~p-Y4fwpNnc=!m4f3PjT7q66!75g!aC>v&tN&r^)(~~{KxBY(*t3WOxBJUinh zPd4-A53>&NC?$)ON>8MXsERqT05LJ)o|H10lk_Rh)Ak+8L28l;^C>;c2B6pL^eMDr zBwI4IHn7mrpiru2`_*@L8cB26WvCz-5;R0vDJ-;RY7^u16s%-0;4*-6Juo->mz6O1 z4X8QYMu1WRyOSaPgI~rkypMhTwXZF3YNHZ{bezS*CjGVfo?C_0`FG496Z9hHmd6 z>N)9+VL)=Ox1IV`pDDjH=sEy=16sWOu zYIEuJ)#c9~d>_GU%kgTGM=C) zfcqq$2y~Rm``l);3_u$`qJkkYGRHK*N$&Cj5nmdslUYV=Wd^5w2AJzZ@}%G&P!@7f z&pns7RHs)NWn8~Lt}w6{b_RV|=Y=(gI4Q~q6h{4IQfQJZWKg49%^%@C!7s5McKp^o zaB}P`Qbo{ekFg&=S#`tCEo-sR_^Y^1#98wd+QJYp0{nX(@10^~T%CmKlbD*S*GX0K zP2rTRJ(`gbAGaM>umYzE7Eac3w^L%QPBlfE87a3O;F5Dt{{DkovNo*>oB`6qXoJ>m zF$3rzXID24H4Q=Z-u*nVF_(S4^1n?DA6Q#m00wn~&R6GSGd&s3#l*oMQ5VR4JO+s6 z$wQs5IV6g_(ih?$K9v6$94-A2o)UHH`w$N*^&k`N?0cI()sn{f*u*Co7B<#HGJ&B* z34Z6MSRWCQh{(>6J8pyC^g2s-fxo?V?iK@RLF@L?R$#o`!P(i_prD|58O@dw_qfUG zo5|S#@?FQi(P@X9^`8VZwLpDbtjEFuV^E&)b2sh)TL;gzss4|sApeI5gTQrkgu0A7 z=ZHq$N>{MV2m$>sJt#}lpqA)bFc-$!lg(!Haz>ES)celi!mL|8L&8~4r*g(LM`dd< z7JSerdT(OzEWNj@tE;cCT>#@^rN}cG&D{QR6VJ;^y?A9AUb#@8R_SQHa};`O3|h4> zl1>WLp_S)pe{y?1GFg0JRHFtt!DWsWGFI2tY^$d53}2E9z&4LbMH>fIT~)q$m?oX7-Qb8{|Mv&T@GioE4s%k(Xh7n`n!_u@} zMH|EL5r+(7UaXd!mn1qM8P~iUHpvX4x5uC@z2ksOD!*F-1NPUTk)Fsi>eFO95m&BZ{ukp zii|2MDvbm7c6KvedT5;bcB4v_HYa+Cd{kA^s>bCfMfx-{*#9Dh?-+;zEPX>mI|0f) z7c!X$g)81Sh_{8StE&Z{ZK6u`x+B?SDF65Ao$4TPym)ze*)TIQqKSAWDQR3eQ4kUm zGI&aGWL8(yBbD^wQ1;sTe*}fhR-T@ouCB*MCB~&OYj&AdWm?+csau&@MoUW(6XV^9 zw7L@vorCdvBm%KY!08B^v`|<-uF5tl_i8+)?M8VrhU(jI3@DXs$m#G+?f19Dv(M3; z+ND$#jfT>9ut7wh<{CUX?K3DL#ZVu|9UebL%hU#XcENW2$&apIEb;s=o!{9ZXsTkm z#q33$KuHWR?Ms39!mlw6iK0zUVcMTM0@0unX+8VxYIC`0&_XOUsQ`^LLCHb2l3Q=8 z%fp6ew1lLPopbZ2OB-)qpx@S(H%YNAQ|WMr*_^n)27O9AO_qe|tB>yB+S||VidjxS zAI@QJd!1_|mug7zz$Nti8^#li2(r^!wz{I55Bf z)o&gREnl}V7;o<&b*g6Z=nEJ=XVqB(Bnr;gMym^~n@SIY;~vjA%kQ)Kvd_P76+>b8 z{bJWBd9G-pzG4=2!{O@A{4EKNfNz(u(YD-YN3hl<`)$uYi;8jsH%piU8x8S=5L#ji`b!2`k$mN1 z-~VDg*Ol2jTuRr!(O1PAd@?W7Zav(J;>rN?M_1t&<|yxD-z9^zT?|GmPrs465#qtJ zg(Octq`#t1Y1aEpdj?4w{5t$tweQ6ADQxH;-2)Xl$N8ms%P`>gMG*Tq>=MOag76D( zp(#8l4`b@sOM4@gbffJ}DGn$Z4RI*!y*OR7{_}XcX2$Xk&iuI}9fbFTwqNY8{gay~MfRo+YZP7J58t zY4Q*2VF5l~Sx$!^R*y8$!_~m5`0y?h_`F2}b3k_GU05k(#eW@CPY&_hMpW~K_rKfd zo1t>^1%H2!x-JX$D}hUE{7p12Jv-^+pe)JD!Y(K$(>t!imJzUzveE!YP4FzMRa8MW?BTGrExFaThf&KJtch> zeZg;dNC+iP6I{M}y12Vw2?&}2ax-#>Wks@3U7aD9PUW8qUu{5)e}JeGv`$(q_ir;B z)>JWRKMnhpN88U^xlgc=uvolUOr7l=UyFsEsg7X9N|EIztV7YLZP+en<1EB~L(eq( z@&f+Cgq4X{CEKO-p*%jfB9W7bB7ceu1ck6qW}G!?$L8-CFWt@O=$=IF7vp?=rG+Kt zPs>Xy61z->#aW_DYWgoXK!f7NkLOMh7-0eEdLb*#k99$TRghy!p=dlp=x3EPSAr); z%V7@1upIXRa!zUj$@bd)Eos(I9r?=YTJvyeR- zJ-~$m(oL!+c6|DtE5|cO@>!8X;^X2~uH*)^2D2YJOhivX^l%s}V|_cL%@tW^J;(6D z<>{vctltBa#4?ZOOEzzBPt1>*>PHn}@|sg#&`w9)9oLzH$8^hAZ0+LI zj$;CHla7MSv(e>S<>Q~SpI@UOOSWr50Q|Qnf|5!}3DjKrNmPM~5LxyStJ8AsIGk}T z@Ts!bsbae|KT!Uvb>(7%_Q93$o_ISQ)Dte*41}Xk3uFpj0*a7^P>~{fBGS~>uD^>t z-ZnJs;5ANv!SHcoc@oNrDhnlHVPT=-g0m-=6+M^x8S|&xhJX_JCcQC=&~nj#9H|WC=fQs0+**}WyW>bj2#fa!zo(&r@CMbEst#A9 zejYekIm`wB)z<>5=)j0jh^uFb=z56LWlpIj@p5j=(C6D!YiLlog`=*@i=K&~UB(<5 zeg!{%ZHVhbe0+Q%2O30eF?b-EL9Uq6mZ06A)%?)nbif3idAVru>xYC< z08q)f*q%KCj#yw;&9Kn!3Dq_S#RPkAhOdc26gm^CI`PBwW&vhQo^5k#{8PIN8P@M% z7PadGY;aKvLF3Indxs0MN5-V3jNe|-JuJl3MX@J%$YfC!N#3qo=l8W2<=t%sGSsyS zBqQ3}JpZEIMLP7FNAGhpxt8|*a;{@6psY3R_Vf@-o?OjyoYQ3rj++)M9^4MUl5_9V zuq5v@suU*aay{F-J@wb1hjWzI)YLp;OqsNu>aX7{gXyEP&dhiU4HP&V27I7O>Dhb$ z8l>oBncMzNA@yu&k<qO=b)*3aDM2JI*v46op8dT1x5DY9A*emuH#V~C zmohss>3&@cn`PZU$dwCcr$WyX%>|h$2%{$F=jQ{v!bj4s2a6H`mQrv%M#^h=hE!JQ zoxm4)RA5qT6*cLk|AQSZdy7*~hp)^p{JDZl3qEjr^Fw`8Pq|hge^m7z5{Fg2;7rHE zY_2Y^aEalXMmo5k&sc1I!CxCSxuBf+j@A8tT8l*m`ekRE!+18az?c z4u{P#!8p+3o;UkAmRJPRmK*P2;-KAY(0~ZP&MHKE({_6rkUYx6P`wj zp2~X<886eaOG%MOUO+U8M-1IrKQ3J%$iTmf%Ox^llxgz@0Yn*-4L&6DA9(PWeaIha zs^F3c@VFBlkoi0yC=2@}5>oer(e>NnV{~@(U-03e&l|TMwzHgGNwVSY9bD;j#LxKc z-Fm1bj>CX1%&`!}v2y>?hX1+dK@a&~z1{v#hN&I*u(n04E`+Y2A#kYs5`FEUXQ@Z{ zsv@1NC96h2Es6W50@hP8v$k;`d1Sp#lsCBgDq4@fV zI!dbzS#+1dNoQ2hOOi4lc3JgDFqgRLwAv$WLw2NeQ2CadzA6d}@#SUZtnIk(bWC}L z&%t&8TGH=1MNr^~Y^6s2$kvH_!|dLfx>9sU!J^G?N&(<}@_YoW6*(ze!Jt2rvIrKO z_Ho1t%WFAUA}ag2JR-ylk^7ua>+a|rRWJ_vWDFa#sj{e;+&XDy6rn5(EhGf)Mg{T( zTP@(OwT0w~`H7}K-L9(gE*0^2?0flUs?A*y2V@o3VX)wHJWbP4C&9OPDS(?4cY=k=hpoE}lX+T~@C}jX;I}pL%%Ge{)C%^QH(8j| z1l7fmfHZKRvl6<++Eh^;{w?!6?$bN&6_Z6!eaei`JgCjL|A`gWsOTzj5{|f@2yOK1 z+kb@UN#rHqcsFfQT6CuN?y8ZI{F4w+rd+vWGvCe>0eVaUPk1h$36HbrTt0Am#`?nl z+g|}llm_Z3Fndv7km6zbFc032H%1%q`&v6t7h4xhT+iAO<3oK?lE4o?Il!i<{q8sw ziDm@un2{&Hp2y&*yUWCLFkXfsC*R$#q}3_BS^;wD0tTBVCJ{;w;1gCwn7*+$njJ89Hj+P5`nlp4g*Awms^j_JKT2oNHKTvnEQ4a ztvRJ#zt~HK@W13B(6!lKqHH06%t$Q%_Ev@A-{e4sh`T=9C z_i*vLx$XS1Z&zVF?|XW(|0>|+(47EpPDNtXq0GYdu_=sjL-R@FcyG#CI8fS$%K3bg zS?=k$XHykMkhEi=b}b)c_`QLGT0IC6O;lBO7prr%4E5U=DZQfdm_|%YM5cKYr&D+> zYLJnzFMTu1hdCpoU=JuMVz$tt%VO|-Om6Aa$yAiYzk6qZ)#nz#noFfUOxX+^9mf-e z>i7D? zqh`Mhug~R;PGguWNjaM9cyv}=CeIt_Rll|DaID|;;M@DJ3UnE#sy@G6^vTUFt+sWr z#d<$u)RjV@7Q_5|+flF_mizqgBVJ{QUuId=UGv}dc6YxWha%e+UAM|1?`eict5X!|5)wHt=G6 zwx!*yBBBAl;6q8zO!k0(nBVB zwL=hFQ8eV8-2Lh|DyTOX)?E0jzZ)XcaC@G1bY8FeG^yI#lBJWylAvVrt8=cdzXs-F z+~GAu+n>#}V?)4RYpmRYC0$g~ira_H)Kai;-rt{Mi!yA$alB%b&+LhT10A(Vuz*;4 zwiN8kE?LFIpUIErX_jE%u;&XZzQNBNeQqttXv6cL#2ejWONorZ@{t*M${(nir(SIx z1!rZ*4Hyf@@5B9>$e3<)fB-|y#ou$7o!}^X-J=$`&?ygwCRFX0!&$!1k2;*qjEg^W zOrb+(5EmDrQpvfyo`+~=>&RFBN%i^W^TT7o?a6PeRfg<8-^Fj;ykw>R=}g(xDVK3m zXq5HlmAsnyfc-1TNc#}}=+emVp@ZR%c^#cEh8PQ0zn*%hHr+%+XjCaZqUU9^JE{e*|b6s+-ilT?Rl_{)`<_}qo3exOi$oKI)W-$g!lI> zEuO+1RNbFT41VW$8ZNE<1=b%2t9Pqu+v%)!lik{~ZX0=J4qS^qVu3prI-Ti{4N2LU zM9=3qGsG_!;L2B?$3E8g2>-;W^B3V1a8PV~kaRbuk$Cgt=rlGEFws`?iIl?fwQkDq zFQO2$rN8*$q!3r%@!j6))l2FLY%i)?xp&o%-gQ?SH~Uh_hZ2MnTAz*?ya zkcuvXRLRS9#!c)LPWxNIuZ2^;oHz~~b-2Cd?(czu(Q5j>8JDD6?ZJ}+ zUh>E$hTBGyw=x|1RK=OP#|(iT2@*5|@2>dav3{{FK zS~+_H<&zFOypA{z==-qZ2dFHqO@2frtzKS{ElkNBr}YC>lrtKzjy2HtXX1`Q?Ow~M zo&!=ZNEj=;2p>F)(YmkPkcOp8K~fJ6s(UT!e>CcSvy-oU95fyCsQE?h9sl(d?JG2( z?h<(j0tskBhyVc*sCE-PJ9Pi_->OY);Cexl@73`)deoW%FU0i~Ja~?GmG}3*uYY(ba@Ye|jnK8x4=BEg=$|y_ z<$Q*7GWX~;P*C1vde6h)!B#b*B<9tx=jI`$*iW0S};l0H<39~-@ z8>AJ!uVSFA3eXmpdI9Z(2d@VJDtX5y^}#EhTpoJQXV#3b>&TE@T7SV@&eh^(174q4 zf-5|h;`RxzzWGiQR&X{_yA zGTlr&H8r(iPF!>R+!va6>+YbJ=#@SXoR$C_K}w&uPmjd8do)h(BzdPW5&6aNfaX(n zGn=zz`<2x=o@ZMxuuDSL&2|f(T{U^ZLO(LS*vg2uC4|G%BLF@3KwWXXVZxLJ*3 z@d+tA=^$Vs1hn(%A&0nx^<*XPl(NS$)_+N~zGvV45Pe^~vWA883KKCVSJ^C|=F)-` zA-hLpjbr32B!3|Gidk|mKVXB6Huvnr7p73UrAo&ERa`ppQmEpos{Cs&1aXT9U+E?W zr~*kib*@)ih<1Y4#|avkm--H*!q!cqgFNfO`!@_9tuif|U_+27?NqJcC zLcrL9Xok5Ovd-{QHB8c(NqsN)abpvf;CEUwlnQV`vO(( zdL>(`n6w_)3@P2)G7S#*D4z4)eP!n;*`(#P)Qj7k(Gyo0u?#4j{9SWjhgk@6pk>>9 ze0PI8f zkmqodhQzi&VoH8g?{HRBO0xWgA2Gh_)x+RZrb3(Eh5G8tT`U~5SoUw? zWtRnblc+XQ;K!C0_Tj^aa`hueRIA0**2L@(OCD`i+)%tH*VBQ4aCP=lfZa>-m42&z zs$iY%(Ls9c+(BrOG%yU0t=b3aOMb}&!7S41UH!mTT2GJej`0&8^ItVVZ;@5@pb`M?|h#*T?BFaPlsO z)TMos%~$tXNU!}9$VuID@sJ1snM82|`J@L}V@_{NlBTYXk)8E7=Gyu6HL&@$Uh;`k z3;Ps7VC(V5e+*9eR#f$(pdT~@r9vKDW#PC;P0emYiFfq?M#)Hg)G#AlK~pdS=y_Jq z2D~__bJM+X4vD*JO{$;%TGn>0e%O5)%zEOyN>HdH-yU1O^jKrTIG0;>wydJambG@H zF?^z$9lXzmFp*ti;L+)>KoLVVs1c;N!ffXAh%3M`GBGg$&3h@bK4*9D$4kte+}_Z5 zrGjooJ_zA|Y_;(g`t$NSH*3ePavHpn(%OWIL49>LnPkxiRoXBEu->A`d`bdBr^<)} z)48*=WAKmg^)U5CiMirX7)p_!7#?rFey$BGQdZ2jAgki@iBk1J>X9IW&p^K6m|Zzx zujDK?91?jSZ=!4B?{T=S5>i$u9y_QXJw5yb3b=&9mWUnSFd($diX9e%L)XML?d|Oi z4eE3WgHVaZGN$tj-7`AOx<7w+vjTayVBN?LW=~aOHP0x=@F-ghlgi8c~&-;+JV@R9ZOJ9ry)Cj2p&W)T`Sm9 zh&_Lgu$2BJ1X!E+>^vG=@)0u1v&Wslr_ZL8MP*($`qp`Lqgo{EoLsNyt|k?&Ny;#WJ=?$ zwY8fWNL=gve8bttDfM#gdh4XsX=p|ehesSe!Hp(0V!TN)OYr$q?96g(@wAft7Y-3^ zV|5LUKE8}mCsm}cMv;-55{`U7i_6OyheuZg0vk1!mMYt40%**~`1UO1sa|-g^32&a z<7pGYiSdr_RSY@S^!gJ*mSN@Apk8ajbFV63z0VYoIVaQuh6^3>^o5 zV*^!+ix_PJSK*`*3)hcJx-vK(cpS14QmBz|PMo;P|3K`o`&Gs2vHZ>+2*e!QPR@9e zq-cNhh`w(o*;n5P)@1N@Zf0202A*IN5cT3I0Jtml*u3gI?rye$(<^*(NKr@O1urah zmwSF~WCNe&Z$l{|36Je`B*!}mnlkNQh-4XVkC-V9;#=*Ka1+eC>-d_)w#W?#%9 z-wa`80GUzDt=%(D9L-gtA;DJakZQ_D3bYA9rk?h}%ep)VVLTkZxihb*F>c_o}X5k<7b-65=-YxiFn=5)ZVs z{IjhRIGwnWQrr6#Hex>s9i&ds*f#c>|M;`Y2 zyf7~itGAW;zV<^WrRt>AlnVk6oRb1^aZt8F?I(oxIDA>4tn~fEvC+HgqeKY0mFiPg z2s%h_YLknN*~1Z5P{-L_1Fj?N;m?u80Rcn{s7jxGlGPb)X=@an91cL&@lGvUh514`DBH1$RF(;&>--4SCfa4--ZK@V~#g*^dt04 zMS^ZS^h&&pUJzQW%lXe!A;(z)1yB+ABTXPlc*`aNpKO9 zox|(o8N3Akcb;zvgyEIyIAD)&Y2esu(mvT8ir0X^gmy(JnE3pckWyJ0sP8ENO9 zPT7lTe@W8_83b4Vhw0#?%%2z<=p2fsssqgqvNMYjO)=1%+l@qt_Rv|&!~h({^jBBp ze)ywZXR3X}+8E$}g8<~&Db;(-->wL&>l-_wVeDB9osWRI30dZ9^bV{hSQY!7_ysJAr`xN+5 z`ymk_@7grcn^QjzG+0-o?n?e)XO*Ub48TnJDy+Gd2h_Elg}Wp9QW7}V$|diYBcd5Pz)d~XMzBP ze&)%wW64gFl_cR{R7FZ!3dvXcsTRwL01N4`gcfFpIL=yFqorHH{uN+IHg2WFvSPYt z!C18wfiHO=UCP4*r&M9}Y|G{__qN@Lt$jNl7J7mlNb4(JD*%*E-trO>yy(iz^toZ( zs*3o|MusAaS}{`zNDCREgy4fl;!{%7mccmK*yp_aMQ;h_6YiZNEVo60=grI%5K;lP zh<|5Z2Wa-$u9$toED=8f0J6$* zhkiq~w35v()6@PHr8ylnN=Z=Yz143cS4nZ*9LRjn2W#^v_GVA;J~FCW;LlTJ-U7A? z9Z>csI)>zjMrVYa*`k9*5qVv7J#uK6{h#@SC*7vU1hv^SCibGhMH+`YO>OH2Zzn|3XK9JC=9*lFLXj36e zXMuH^LqW0{zEzOr|IrsqtO8XC=0DFLz~m-biB8hv$K3nq6u9#uTkY>CKCD;d+;p>a zQWvIVbV)jBABZMEu0XcR4G)Y?xL^RYjWI{3EIg*5TADF4J92q zRQMnng*F0aPZawKh+xr(2HWGdt~de(b0q_ft`$6Q3BKQ+Z**&tJto!>{wH}C+2h4l z-?!o>@f58RtRa0P_$7FWd`jW)qWi<|&>*gd18#fd;}Novm{(4|)F9l2VnR9$=7kvt z*-2;6hiYJ*gf{BG6Au3XC$5^vFgYUE_M^gD^ssJw|KV2y*!a8w+$C$qkABZfCnZ*c z8$0>72Zn;~%j=781kK;UK_B1%QEf?JQc}`dhyUwF_lJ~>r~8bEqk*dXzgr!OyZZYRk0y@oB_$@RtE-bZk2l2{kQ(Rwgk6TW|G*Uj4^uxbDh#}M z{Za>3mmU&9r}T$1*66~4(4fm%sW??zWc5;6o1`63^Bx`vT@4TR3eGyD4iL%k>z$4n zhJrlo=|p!3UW`4NZCcXn`-U&AF6p>${3|G+9D z2dwS1L!I)(;G)yh7sL>lhCeg9O$Kqe|G1sdNPwaGK$@E85S@-4)C*hda`y3I=$M|E z05M`Z5z1QjKa>4U4*rd0)Dl6OX;TY|TYY_zMdK(06klF(VVd}yW3OGB9K!aA0{=-W zlC)wca8+RNjO9qR?J4!IeD|hsmw5_=I_Ceh_!{EKy`X#_|+ zi@v+Rdd#bTdO95mg&j+)yRZ0s#?pu+!R=1L=kM$XfTT@bxIoVqjR zw>m(LC;Lx|@s~ z7BpBY%QXH?o&Mqr-XFolx4Ej&U11uo zG|Tg`Z3k6lwLXn{q_2%Bg6OXXH(Kb2^U5r|0Iutu^=c5 zX|6lm@^QpVuzNBsR3x=-vP``4yyUZWbdgN5k_$X9!_MVfvNh^%L*6Q3MFlmn+tw}2 zb)x@vQM)%JEiuxXx0h`^n1%Q$G<-*piqE+)EJpwd=(sDhv2vTo#E$CP53&}@ffcCM zs{V1u-}tlwX3Brh<(Yg!Yx#T^%xObefyu5a4~`M!6a?aM{z>lb?J~~i;BLS`YvdT= zEM@%(*GAFJK=F^v>sg`uH|%aQA@dxBLl2A3IlR>{n{_Oq3T4@e-EOB6FcIU1jT`&vUghT>uLUYUW_M4?#OS!&Ecp9(Y?~9;H2PgkR zTs}J=b?{4mdV!TplMrw#(X~}6lUX?t>H$~H0(_0RBatWed-Ng#k5MPmwf730bD~n9 z>m15f)TT6JH!%RuhG-cmLx26Z%Ycx(388DKrT3(r0xOS3I5eYyFLwQXgMk)!q!hJ# zj5y(Ocnz!i!eH)WrJ z#JHmn(YnzAnyDWa4(h7&;j9!;&1B zwsfK(u4?%`{wC*N>1uCA#uA|4t2P0?=G-oSVd!s*1Zar%U(V(I7w{+Cn7{Eos2D%c zZci-p?P!qKJ@n-ZI^9#a^n7Cnz6FlE14QyzvK^{Q-o2-&YqPOUs#Ts$&1^nS_hV<^ zlT8U7@w$JtuSpp5Ab%JoCWj*3{}U@*R};O~@x_tsoCs+<&d_xrY86~?k)ShIdjC(T z`d1+!;S@8?u+Sw^l<+r4}|>c^RKy9Vp~f3WinsW!WLZko z5K0j~kt0px`R+NxZF_gsW&M)zzrZE@n3(G&L!080(UTu%wfWsichJ@4kD$}| z@u&f75p8h$Y6L8&F_sPY&y~M2lhUQk9~XryWtfxbV?uVgT)f*hef9s>KS>y@ZErky zRPT9r5A7vu&{CaB&tb45(cvove#C(Yy?G;O%mFPFe}y(IT>1%d_ZmN@(I24%5{-hk ztn6UlocBzndUn;~LwlgQIf_oR`Xz23Y2gxP#6~j{ufY-vDvoq8$%FM5W#^mmbhygL z{gkM(93)Jez2G>GRl%ug7FyVS(6WT6H*XxWJTqe@a(j%8IKk~ zdveVsp(BeaCvh-b#ogWx;JNz^>7f>Q5M;uFOOrp$HTd?Qv+47PYgf`a>t>x74LRNj zkGjz~gr$-mrkX#bDtx>Wq6X%xyJ&DG^fR1pq5>e9Aw>@lkz1Oy3Gd(hiK7^>WdAHp z>m57;?Z{!rCk0mbDsmu#>>7)?9%Tb}yVr)ZLx~VT4^LU0hS~L_Z{PS$Xs1!PE|3rH zDErY4T0;vBnu*{+qSrH`)64u35W+X>xik^GS4}+D{d7i94Mv=t8;H6-CJQN?h!+mb zc2dlYO7$Q^(dgGGF~=nPNKF*fN`EeiKnq%s&;AChpp*A+X!_oBnx!-t(4%-e`rH(L z6tVTH5H~uGYKU9qDSvn=lNytvwCJiG7rMqfW$@^2A!TKmCi<)Q_g5krTw7b)U$nn* zfAyk0&uJ_CV}G{`F!K>~(HzYb@b*1htljg|XrT`z zfp6#i0|xZe=FwfiZ8$ecfiYl202DxkKoW2|HiUzN1MvdR>G|=do)VZlVd?Mx8Uzzd zEM#wIXQ#tuScUtUfDiQ@s(2I$d|)t50vsI*j7ZrB(q@aXPc17I00)?RwbRu$Z#x8# z>cZ3A+1bI{{dJ8qxT9-4k~?Ja3HC+`?i);D#sQYh0CKm+QCeq7tEBtUNq;$Yd@&>wQLeh*ld_ zp|=}XLP?VH-;Qlku``p;slD#Yh_DJ?U*B;q{W^C7IMNu)zGZtahhAg9m&RDF_RH0H zsvtL^T{H1Q?bAx#K`^ZZ;P)ar#K($;|Ncm<)j(D(lqX~7)=ZedhiyUSJSL3Js%%i|WbTF1WDN15$JObW!<;8Y8ACcM4_JNgz6~45vSIA8WYnz5d8K z^=R4BN#hb?^E?e(STSUYbDLaLR_j(&SNNfrlzQE@H+w|Oh&3bgrhJ4!00jo`(_=yy z+HFCDZd&1hkoa=)DllM1ObZ8s1Ls3tPTMIYh)Q5iAhRTC#pGS7NV>SX8lxq9$u6E~ z7TFWHo+}v(2M0&?T`GzMJcA91E0K0qihCbdW=#9U(Sa`kybjy`m6sQ6hBX8r93WPo zp%u^gRxK?NgRL06L8gN%3!<4aR}`2h;N>B>TWkeb$P9c9?Lx|?6saH)iT?YW^S z!&BEx%`8@=k19Vjs@RDNrorD#n`!&#6#xkpq+Lm;fsd4#V`{HOq1BDO0iYw(J6bVhs;MX!qgnFhu6Gc`O01O{Q^7!jnfX6B0@DMq-&W@Jczm#FEdRfu7f2Mp|UU*~V@%f1rZGt;esOIwq3 z^Fhj!*i$RphUy*WP;QI822+-$byL!U4-zOvmHW*TBzV#7t3|AXjjhV0gFYr0xs(BZ zlfO-24fMFVx%)TOOB0wNAAwBppvEEhoU+ZU_}6BS>Oad(S35fz?e}+DE^A7P4zI;i z7B4P4Y5sq%A|>S+ahUbm=kANPbr+f@YaSiWI5`@d`ouZ1rE822_ifKu7Hm07NszT9 z_&;S8gsj+)-T$0xOK#%Vw^&}s-PFaG?H~7H+4XMSTp#aGu$h^uzd=h~JZ0w(R`D;a z-j#SBuY#Jcd47Px?q7h`3=(C>Mc!=%L@UV2A*1O)oyW&NZPtykWGDU9`40J2xpNzy7Q;%%UJ}@$_*5u{8OmGP5lU($G^Dn1pW51cx(9a(ZGLkKw= zX$1G2o!{waUfz<9*>|zH#U=RU@MK)UMco_iPkLMBIyWODj3_A4Cnp(187t(uUBA{H zZPKg^9g9kr_-*ly_Ky!Z?;7j2{9P>EnFUGe`TFb>8rL0flAj(QKPV|10w5;pEmJ$y ze9NeN+{ji=eF2oU_xhYk1WtT})GnJMWxR1jILHsSrKg6)eDH^;w}DOT+-q(k*3 zsU?Ta1dT7=xfSh~UUq6D@@1$xFmxz*iE#g7fbj_e2%e`EN3d}%l|a0;qN1X>SSyaA ze-sIaX)k%evPG_+XW~pdIFfiXRXpyj%R|2MwhLdt3c|xxYTSU#neDEJ+_<;ISL;7w3Cxf7U zpHg<;uI6^Cv!TFSgXtqgMMdSONKtchb3s8td;98!<8sR!n6J~?#)h=~0x)EgW|!v= zpwad8^Q=W7m#FW1mu|}55JHmJi`>4W1}#cL!`$eSgyO5Nht~HpFk~A?T>QG2C2RXG zTzT0P6xSBFFN=E}x>k9QHB)JfAbT(K6)zAm(YDkeguE~5tvHI5wQy*>)YhfZ*ZQFR z)2ebfl_*q)xRPI*X&1N8A{`i}4`s3}YADK9{dMf)1L-8ry5L^;Koe)@xB;FY&CuSI zcz#4kIK!V)6bo?=LiYKC*<}n{iraF#O*zxVL4>%t$S`#k6-@LM+eE_bCzB-(E!=z0!rVny~Pe@{ZL8w zDCE7@u-xF(d!cdYat-m#Y8Nle7?3ZVIuNItS~XiPh!&96>ubQ&`4EZmg+yHWht#)q zJPK@!W}#z?t{*&g#hMM%+fSbFncDRj-h}O*`lGE$;5oC)n!Hfes3sxqd)kO8@ED|(gR#u5>@fFi%q_7f*QCG|3Y#m#TIf?HJx#BTviv^x03?@T^*(PZ^em1o< zu@@HIoW6C)s9RD&hZN)1ThEtSj}yCyH{C%ScHy2g1NPV}E|Ef+-x$1aM~(`Ch(@yx zT{)js&*}EtYRa0Y_`}QzTn}1wfiN8WY&`E7M8c`83We;syJaor2}W8|E*SnWuP0pe zURRe#k90qdZ2H}_RN5~u(lB(DXo%5_s`E8#q!E`wl;@{yPA}DZrYmeR&foRU>_)og zGY5$iFhw}~2V3Iyf-u7Zq{W1gCkZaretVP^V>lG(#ccbP07ON7YmAXre%3zP|Z zg8XWHRe9Sic~>O1-X-S_9g@8`3mVv%Jexadj1iaDaSF1En}~rhu^loo(3S z4gu(WkAT1lB>)mgM5hJ!BHmD$;xR+if*>?PA4&1G-|gTiT8aclM9{15w_!m@zN=Mr zP#1$+{Y9*tnyuGNJr7eGv6b=AGg2HYb-mjSd>eFl1RYSQRF;8^kFW)8tLrA(1RW3E zLY8>TUiT-&uMdwZWWI}wvr16W(=ERCk zBE$F*R+HC*t$UeHfE>KqfYwT8OJ!7Vt%SK_K?b}EAQ!LBOEk-Ha|kKgS|?_84*(Zx zT^w}_lcfb!3wumKT@+KGX!J`ZvCFE4_ZGq|<7yB3!}Wi^LeBH|gO_e_LN_^A|U!MSUaQXSQjf;#Z(mu zrcX*^pKJS#=XB8H8-LDdUv-f_tuW9%Lg=zzI<-P!@c^CvTI$# z_;X*5Zg}ng>|Zbt6HU|(Y^P35sWkI>zQH^wJZw&|9_3QCW>_$ELlcBu5dFbjS@zfJ z>3~pKp{)>e?oyen<$lJge4}6;jD`uXtm3pfiFf!_v)h_!7$i3$|2cSHzv;oX@x``q zkZ|S2@sOK|S#~IQX{3>HZZ`Dqg}BP__mgb->?D9k_02+8Yg#7K)nq_6aF;2kY{3*e zF%sqQ=D6a?@A+TJBrM_~af*E*%b5;R5g|+pr}RYG2m?qo9D1@6Ke5-oQjE}ZZV_ZF zvjl9kFK1BvH6IXZ35`1mFf!9&k#Gx^`~Lg0!aif-i^=BdJLLn}UeVy(Uux|kNQKx< zN|&;`o0nuk%kG97sy>GOzO-Sv^RNt)Uvag5j-$ynBvXe1GEyz?_BRg{P6mbst;$UT zr<0YmWqTpzDB>Vh@TxG_E&at2x_9$yM2|j$pD?zzHvMNBkZ%%O0EswBI`vX zz&;+%Ge)PC-W&&$PZeo0%P1Vjq4f%1x2&HDz!Q(OM@S z==_l0sM$c|!jP27GbT+yVrBq(*glcfJj?a|u0Ex)MltR(Obyn=UWMFG+dKRnhdmSU zp{)n@&6WAkPJB=hM#tn(yvlDI`-z0`d1Uk6aU83QNN6f>U;*%(1l?AJ%x_(u2Uo00 z%017Nel`Sxv%Q?nt(-+154TZE&A_d(>-7k+j^q@8fie0hXjDYS20fh^Q*) zbl!&PT^wgvox^HvLS$Zri9Kx%dWX4z5l5O5uF8;g=#Gk$1`PZJiOgtPkaE6@=7~Oc zu6m<^%`^edjVPmy&A-@w3xZ7H!r!KE`DJ-tYh#Di2vA%qHzh^UO(3WjR@A>?8VUFNuN=P4WIJjBZd55oGOTZX{j0sZNM0 zJ!#jrn0kps8bLF%DmNlf_FAR#ydj>iYjr1~-}3%JlXed#GG_?{PrE5BQeEfDG2XFg7lr=pj_6~mJB z%FI9C{{)kBbc@%pBd-L^Dww`b1$}7#}CS5>WYjxl|>%7@sv+%>dwD~G8QK8?&`giLaB%eL$ zl4VpQpq3s%k@z>YTBE!7&06B;F)TDib8;W{2L` zsJgBC5b~4ietITHx`#Q(sq~1HJA9nmS5xh&L;|G>-n*Nujh?21ATXyeo`z4m=3e z2{SLph=d*YZgC+dYvuW0?X=i;Iw?)M@9YCacs!!TS-uCZxPsk$@HExkk6KtTR;wYt$e}e6i3c?;6Gu zCKzQ*@sNEgwfD-g9)A)s^ZUZ!g$Sf4yn0GN66BF({XOicwcN=cYE7s4JTF&1a<# zD6Mfqiiwek_jzCClj&#)Dc-Aj*36x4Yj)LEC_LKqPcoY6G?dymbmS!i(#n^HzE->2 zcQ_F);JtDM%DwN% z7DhADC5*axDI{u)S$!=GlL@i!n9LA4rZd7gm#oZ#rt9HrGp~ZXxi2i`7uPWy4U!lL zGkeMx(+5*CD;Ro(?ak?vwMB*@K^0@3y z7puhI;qZUoyL4R*;6h+$XGd@2stAxrAt2C6k+ZixB$pt^!A^vJtWNM6DLAlv)=b8z z6@}Frt-pzg(-UFjO}Ojm6)uz~Ze$U+K3E&=9*(W0|GXU4u_v9XW`v^cuFUxlVS&o_ z+boCYyMwGh*Zw=)N{3x=j#}XrG~i9|mo7#BOCcO4gZAM$BRq_WMBJmoznC}n>D^@2rBTJIL8$2xyuiYX*?U}tJt|(qd+tF5QX>a@eh#d zJI)gS8?L^^OwY54=!KS>+a(9ZPblY98yAoG_^II4_jBt%H()4?f@-uH3~_(H%U;we zVDyF2wCpP+ZJ@j83^Uzy0tFgBSmuW_^yXsOAREf|E&m63~-qe`DPt4R{q+B&hDZ`4?!&ZHJ9 zxOKg;Urnbb?(y*S^t{{;FxvGdmSu}J>+049c9d{htDzN2R0a98pPX}4h;7D>!~#^yF3%<4 z=%5z!pKhKMfZksT=*%rP)`znD-Y>`pHUC!3`GL5P@bE^wtZ1eczKepKO#382b{T7i zwmODP*_sxJ9;YPpMvP&?P)RjAlDrWfT^wx50<4<~HwQjDTAgY;n|pF~ewtVzWP?bg zP>1BGzlk`LroXuX`g6AVeBhLfk#|Kyd?LVHKh zemxkjx#K*iROQX{*S1~DDo7o0gRAo&^z`&7HQ&f7V(++N9RnE6$;!R3u)(S3%Wo?N zF#(Lc&lEGY{_tg1-PvNvNqc^X-1J555Ix$C@2AiSe(yg1<|?W6{MIPx z>Tk&kkrMC>>EXV_3I1PfnBjf_s)ELOTT#1u)gJ6(+yXFeGBe+b%8C@QrnJtgrG@uI zN4G_p)!GzwvNSF8-9`)F2))#vHg@Q|o<{afXX+Us6U6&B;Jr!|DrRNEIHem@AeT)v z^IKlNn7`g^&$R3J4-`+1&J>AVekv`FS|DCKuxb6y^1gGIhnKV)$M`^A1iF4><~Z0> z8?=fq8N>o+>!&ut^8hvMTyl0v2~GTBU>Z#3O~|&Xqr#fK+p$EW*_X6L2OUBh8G2|C zcpGuiKHV_}PHv~zjW~I%N6q70n?RAY8kxlqb*>s+5Jg|VC6u)VZt*(&z> z1Zzls$!ZeaN!O@*VfkkOA#&fzQX{ow zXZX|i%_AI@sWR*r3(r`5xXyL zC}Np=97zu|2~@6@w!xjdLZb1m3BS{}q--M?0T!W%*qGB0P1`uELL7pkp+Te^^e7&4 zj4mbfOL?Wp_GfKQ96!nQHzR6%PgNw@(h1|4C^r=7ijNXb#2JnB@yj8!Z706M=_UG5 zg@Zd)sQ6n?>@~X(ugrj#)e*}soZx>zzU3h~lCTQrxrdZZV7~16+L?Cu5rpW+W$E74 z`msR7CuKGCA<2K`&th#}?_3snW5=^8+1adK`hYyMFEBIRUl?1-1(%DG<{)uqL%hlEQ^93h*; z1p61;W5zg=%@d}Q7UrvJyHlXM)$ZZpoM}nt0A4%T3K=}%<1$ABIC>>1VXUV(OYu)+ zniLaN-||p!bsGhAlI=|~-Kuls>Wi>xQ^>}&h;L__I`G3Ee` z9TpWE){}B_*RykHKnAOv1quqlsS=#obNodP zOG`_#5~tSieZ6~qCTPUicbX`%T9B08SwF>sMV2 z{Oj_*%;Gike`i zL*cZQ_W|CEpnVQulY!lh?jT9me@0uM_H`iZ(csDLJbLf(BmT9n0PiibWgm`uj!~XB z^hJk)eUL|T;g5|t>HMCTkxWC;?s8GTQ<9&R$moI&a2j%Q-1&e^|DdiGv$~$juO|Kp%M%ke z!U2A6`+@?H(uB~4?j93V7l|e{eh8;|3r98wARbuuR7{+{J`grDa?1!;`)`n|-oOyM z2DP(LB#LD&@n4kv)Egh;2Pp2GzY>Inq9;~at1mWevB|A=2R%4SXE3$SI}y%eRx<`` zWTd91rleF8N$T4`ZNS59%Hv{e$-tM&<9cBI!XikrW5#bgd^6HN;6-X-N+pWm{dJ>; zI<(jVZ;$Hjc0$5Z_c5MoCSjnaZFtLiUoD(3+JWuw<1HX2wv0xBvqs>MR^Wdyk?(Bg zz$~42fdc#ES*^K3-X%a8OhcO>&Ag($Dt}t-6@MGN5|oyvQ!zASD0TRajMQHECR(Dj z;#ZK|l&-EWNen%4S7}9MrA}hVf(12TfK@UZl~LuZwvcMY+h+kcl$!XDq6>{3R{}=g zeIuRbPKy+DF$8&jbHG3R5P(!?6f7nEhZ4yjL7X$DE+OS@rqMi#a4Ib#Q+M&j-EG^M zW+8pvljIx03A#*43WaPbasw=7+AB77i!n<#ACk^i{mJOOfkbn9YnmSjPitywx+ck% zsy$oaw<4rKK8GQrXM%YAm#RN)f*}PlePI zr&a9ab=7I~$dX`mmLHivcPgu|xFzvUn(2m`3DMFh=xMcIzD72JIE#L z9$f7BqS^xYcd>HBP@+eN7PNSF|7>e_vNLyU)Z{JVY8-h~DE`dBB_zP7!+__ki^zI9 zgm|q`f(4UQ*zEb)emDhVetIzF+vzOOhCVVu$Q-f*UtObRRauOS}&2Jpd zda#Wr#kHCw0fI%pAMr{7d0!Af|EJvrxa`{zu?A}*&& z+Yr^$Z}b5zQt-HjR9@2j{UX#gVStq*&y27^j_i)U3K2JFdxL$BHQOr-IaX)rD>kSl zYml8#s$EL(5`Rnhh#A!9D11Mnsr%!vQ8D6hHg^2!<<b^qs>m|K-m{n< ztj;{{n4Y?QjoU9T#P|je0$X!_efM{BG;!p)BK~>DS|akSsMpsl6}nAb+nnOgrtICv z57eKUVd!}+C>tUo>?M!$K(5Ye!MNL^sv%v!+MLn_yg7Aw3UYG7_i_p_t2pG^%sw^ni>(iu#IGf#(s6p)P8zvvR{5V^x zTZX&{F{j@T<(1nPB{w)9tNRzd<8e=2zVgYmbZL{{)?ah-Y}TvRPCQXBS8wadV7PJ; zjaxu1E6^x!^dS7gVH+Dv2|ISiN#xf=xK%oSd~!mXBttoSY78X^RHMsA@S`uVAYW@Ln>smwNK1d|k!4Goqp&1-1aEO? zMS>COnQlm~lNp7(zHLmJ9M}=^zg%}ttyv8-N~G@od6(MVmnEot>q_!%>!+V@>Wq5g z44D1;aUA?y1!sR*6u4F-4E3cZE=IwAR1}s>iQAxlom$&fZS4ikwbl9Ml?6qj-OHiU zQUbmK+fJ#|!iL-1Nb?(#_!UKqB>PGck!YC{lK3T=Q|9uDQ%W@CTp))JzI~Tc_Cdh} zHiUlcvwW?-Llw;jw!}Rub8{huVMeAkrqqP;wxIIu4Sl*KrqrGYwTgPTxC6QNbgo0b z4^1=C+l%Uxb?MP7s1tZ;Ozjh^Eoi({- zT{--nXX~x1MJbJ=@Q{20E{DVs#EykOep75<8ptp!;(}PvC#?cGbP~U9$TkxzfK!S( zi0m0*BMe>?N1Q}bVoc3Cw}tI-&t!P*jr)a?=RicDT(mNq!Nra@!R)f=<5~M&!r*%^ z_JfXRL5ue?14HMjJ=Mq}$}gkA6j= zh*phw(hN#@tc9MpSe9JtU^?#dwX#{~r{a2@tmCs2hck+ynbf{}!yofp=rDd?g;|BE za7d#{33T3l#QFd((yI6oRkKpVSen9|h$O*bP?CHTdg5N2FEd-VH>h4=x-;Ym;)}1` zmQ4h?$f(_sSnNXElqf0U96iXe8Q5cvNQ@TEGvzJ%7wHDg+x%;pp}p^^AbPN5yIban z;^Y}4T)MHIVqEaHYl>#IzeVfpfCdccn|%?GsO#_n$ye9t2Y3_WIA@wFlfFd>o`Ee;Dp<7|>MeL=& zKM0dp3QGw+$0+7T_~M$Z44n}(_^@Z(pO^G_7%${Kmvb=4`7jMOF^FVep7-Q?P)7>` z&CCFt=NXqtvRAiok*2q!@iGeDc8+0ZPJY+2mFSA6E8m^%^=BN4)Xd&-~OK zc36^^T+=V7|3jQPWqi*C6@jn8QAKgz?xru8X8m0cQN%rkd2&Bt`*tl&w)lDg{et)6EUm=Jj+E`R~ zJlb}0Ur~mhkJai&ZBn8l>4%d+5DW{q-_Oe~dG(k*dTO9291fe!#{c2!Eui99n)hK6 zLIihrcefxRzyiTp+zIaPP9VVI!Gpu%?ykX|V8PuXKyZg|$i4Ud{m-}O>>SwXndz>s zuI{O-ejf3Jlwq}$o58Ej#WL^oALw(9h>H>L+bKEj4XXZ_6n{PxtHVJjNHuXcSBC6o z3;*?`TYudij9X`-D#salio+T`IAUs%cP~Aw$k$C|#i3dBl0}>=$^M^pRxv9Ft*P|5*!i8bGB~k~TY({mwv2sxcZk>*xS-I4%?%p7dLL)mA_0A&z{;m+wBCf zg(8{r5iHqL7Rs(J0d~)x?lYd_<%~8T&+~;RTyBgsRb;cYgw86)^bFcF}<$lL_o z#bkG2Z*;Xd2L@y5B_=VYUAiz?--a0fykGy5>{r^$7X8*Lmhv_0RRaNo;NceX0f&V~ zm0d~x3Wg>&VFb%Ffkf|RcyiDU0_uBej1llz%BGZA-Cut_z-Q<^TgsMX)>KsT zE5Y&4{>ARb*1*Y)Z8=KR2km;OO8DK9i`U{^lwHU? z@0Jzaaktcw9Hdun7DMTbO9ATpdF{p{w>EX)DDjEOs z@!6#hV1{zC46D)>|8yB!CS(>@a@`uvOE`Q5>iBh1DGZVftNIpAJR-mh=e!ZcSV7>s zEqn8)Nd&Vf?>rh=gl=AaP>$y#mt&IwcY%a5IB1|NSWW1jwZAjB5LM+h87Sqr%Zi}y zU8JapI?fr~yaRU{Iw4ouNZ$sqzraR9bC5HOorQK8j8-sJ5+8?N?|euOa@D*Q{8xE> zsX6NzKwD+aft@mP^2d)GqfxF$l--$MQ{oS2BQ2XhJjySeS(~_jbB7{Tq#PS_seo_dpi-|uk65B)xZGFvau)ihuU^szz3T5`I)S^*} zBHAu&=!$O?+xN~bAP^I@iB=jm>_MJfE%&}zd;JU)XJGgVsbF%1tL4>CVJpNhSFrBj z)jm?L2*R)r!l<8NT^30XCuDyO%0mSEKjfytN}6_jX5u26e{>)t2Wi}81jWY2X87Fh zJwDvI9xvyn{A=7we=b_f@<$a6r^l;7h8Y*OHB^#|3IrqERj_3-8LMJPC-e}1xen2o z<=g)FR^uoT(lCwDaCWwlZ;KrDzzdjPOCg7VO^3>4jnTn(iFL=fCvFxaOs?k5_PXRB z%?K)d;{pZ%pw`}wyJ#uXD#r3^6~1fU(w7fs z)(E2{LgRjo);MLvwEl791UCSA0_hjhTQ%;)KRUOcUa@$7`(RaNl}SXfCp`v+ji8m+ zoF#jhi$YY74|pl~9`LF{7|E6RH@x5%t3N5^)ognQ4%D*wJY1;xB+QumIFo*RPN!&} z#|48!{NxxN7c-+JV-RtSOcX=uCZLNsc&6I5c=L32M2XE9$wT8*-FYL*uK+t40E*$% zuV-MXSsXFild<;Qvr+gSht=y5@L01%3ki*{Pb$^!i&|pU;rqe&DM{98iw0L;lPYL- zsq|UYWY214qXZ#;a_h)PTA$_Y?I+)7w(R(f7NF^szVuj=5>(e-g06+A(NnjCs%O3y zXBNkk;*w!6+T2y=J3-37r|ZMO+k@St5q1t({-BY%ta;HoB+mpcwHPcF!tA#*mvcXU z^qdShaW?X1r23}H^pmZ+9m~lJg^NRmEXf7|8p$HMQq)oq#6fL`Aa`liop@&wX#~mt zW8TKPhDa(?r-R9xoym(W`tSVFThUl_x_o4cju!3-7#{k3^{oSg!sYY2Ee`u0ob`Ru zrhA~sj9dNWl&UEM+XofNmx$|1(__n_?AHsVV04gZ%d#l1wOqRNEDPDZ%r`}w zuwneP_6FChn};`*2RCw`H7tb?Ih0UPW#N^am6l!dH0HSBvX9Z0lG@-XRTKSNB`5es ze}&=LI5nP{9@rgy6*kzeYrlkyZ|%N&8l~Z=DTvUUa=>Q5Y2P)g6Cl!=&^LcGc>{k{ zO3k1cr;jlHLx2bfws&DdJD}Hy%@fGos7BLuqV=XE8q+wH53;ud=yz}S=e_6IpxR4o zYXHE%?adPOlU|G4$@PgL;v+kd?ql51FS`wFc)0JV_k5c_@>Sg-W3l+BHX3wq{r-9` z>dEVLqaD3Zwi9yx(g(MK$Nr0=$CX`pk&?^tSycl^RDn~k2n0PjOlj&}tP1Mf)N+s* z&nJ85?Yw@ZfxF+*k%6Hk{BFFht2(O2mn~IA z%a>{J_51oV)CZ@U^ykL?Sb@dE(>-KL6-cbG6~X)yk+;BDrjTx5Gje8VY-2)Y%4Y#p@V)JDCQHj-C^C{)2j4b}FpS51GrWGPc z8P<0;)NRd09~2;o;Z>m$4NnRO7O<<6(Yuh$?VlY!yj`~K#9Cwo<>~|$KoQfqO9B)i z4z_EXjb8=Pp}pU&0|u(uhl(hfLYzjb1cvA|BJ@LU=TQ~e3Y$LZ!bp}8bN2Tfy#)(Y zuwST4u8oe37naw}8epQ|E&PNZ&zq`n?{Og_)3m4vhazf1khk|TMU?S=R$kwCY)LKR0z{pO&4+{}x3Q+*v5wI^{dn6?oh2#T({jh^@= zt_J%%l8KhSG>L}Zf-H%-RR=R@Q7SBQUg24-$ONC&3KkQJ&KI?kK`6wc*Or4~3yT=# zbG|zc?3X7NaI>?s>!8;(y51^QE5~)a8DeP%{F<-s=BiC=&X7_t8gB8O1dDw?K|Ip0 z?r$99IFj8>)%cwhgZ^@3ZuE#r#+CgS1&LrBPUr=H<8d85(ohw|A3rTD8HId5t4g5@#WxI2XP>+>09&5LR->TlYOFba=}V$#A&3@s8i|ERgFjKZ4w2{z zGN`cfXtntUJ^ZmC@fW!QWb8K@~1A1-r!4jKbJbr9{{6;jAQjuX^TX#!s}Y zD~pkwNWfxAEvUx*;`aJJKb5qizMLBZhS zL1NY;l%g`!UFUVtNxbc6P4M(YSq1v_em#sOAqcN$Z=xz{2chePP)MXANWWjl*Of{a z3mSU5{&w7a>UliVT|q)$5xvUCHBUBJ#Ys^v3svG1lk5pnL3yl|7ODO63Wvx6-huBD z!7>Rp-;hjdFjrqBy4w(Z%q-vD_63UMiJzy^ak(973DM{A&44n5RJseKw%g< zCD-rlgH+@pFJ4xZB6qQ>>x=k@L<_JrAi%QPNgAgK zuQmf!YE%8dX2ObIS1J!M1Jul*d@w(-0?T6r8Nb(d`aDY(FL)~(B%;6C&B0i5+*J1J z4aEdBTn^pjmRZ`hojTCJpe zyQPGR=N6Pp)CAP~ghy@BT^+BO)-HHnwPnsJW4=EH@WAV(_mC^IqNTa)$q}{`HB|36 zrDezatLkMVz&ypbcoIrOWS=YK=_Ck(=mja_c`e|O$t@Jw-jb%*gyr+AyczmCvN$c? zU_l4t0t+CbcrzZO2m5FB#1DyH`zIYts{w9A?C$0t)kaj}a6k}hob5hA9LQ2Wmc8*6 z+w}d0PKll%e(P|;ry@Reg$9I8dR6TY&QKfAHW2VRD`SN%l zx~yag$eM~Eg-N(zw9p@9>Fw_`WBg)xf~+-Z%(vfU0iHY5sh^}D)r`S8l1BWhsd?m} ztk(0yCD2&WEnZ*Id(k)tQd?Un>MT=&A=rjiKz$WPD%dpJyIpGI-g(y!5Zu za*}<$+d5C1Os}@GHpZT_D0OMc1}C^q;2P{VdQ)uMZnBB31Qz^bH@hsC77p4+6WTBE z9le$pjr7nvX!ebRxn~|h6S&C<*doN03PZ4Aq;E(dXVw(GcP%EVVF6^i8h45~ z;nzN|um(k(zS-df_gUM2AQ4abp3!%`VTkygxP_wtVgJb41e3ng`t*1wwEv^Gnn`^d z4yJdWZn3G(@vsZTjMUxUE~T{jxxtvQjtJg&?h;LhZMd#BB{?SlTkX$wbIm&Q_Yx8u zV+gUFrYSf=qp7UU0o_rjv`l9z2bBS@@^OrXHD`r4zlKPw$KVNLZmHnrPr)eizfU*` z;3<2WVPJU}^L^S`Y9{HEY~o}Tf}j@ZYf_65?J%(0XCp3zISSFeyf-E?VPIi?$O+f- z-J=RjiPP15W4;wcXP~|VWH|yx{vTC5_XK4f;VoFI%~(lhJcQx0{P6Y3c{bRwIMA!3 zB?RW64PF49^SI>#d)7}eB6ic;s@2jn}G|S^wSL2=i;~x3jHLg*E_e-w> z+rNs`1bSrlbIiD0`_)+|QfXZZ-cQbWULE;fTm;x2Kb;h_j>yZpKAG9K*dfb@$L5;8 z!Q0zVIy2iN9yv@R65!Jrmhm;Y33fDmG7I`BsEd29=0cL?;o$b?>FKIn?Qvs8*L`or z*5}Ux=Md7Qb99A@V13I*qcPvwu$>%|ss5c?W8H3bEQAq=VgcW z#RWWQU3<48l+)gQxPe< zGXrXVDXsK{A?3qK!>)`T)>!r%Lnyl`$WF>p+pKgakR*uE~%k>)VEUx!IOQadJ zXV)eon1q}g*#_s$p?sWbU}~m+jWIPXC|FL!MO42J)5f$=G(pga^>%rAnI^;QbXnQ;*W2+2xc-;KL}WawwQ@b@h8^T z|FM1(R1cT@vMTi&m;Uk6_;REI;hIPm0Z*TcQAiG9V@vPn>{}aM>#qLpg;6R@D3z$A z@Z-+ems|`#6#e&Ehkbq0Gw|#*qlhd{8{Nnl{2xhr9cgqM_J+41^22r}5(q3B4V462 z2^oy3kdvAOoY;W3<4t?q@TGe#jP96&m}E^Af?Zp5Avim5mYB|#$JovrUpG-3>}}qJ z97=>YZ=p+Q{&JkuoBc9Ei)^ zWO>iMS76;I%3$cQf^*TR8Cs49Rr2k?9pIx-90Gp92B#B6ZC*wQ=dGc-yQ)kH@pWeTZn?q-oi zYHUIRjG_mKp=w8+t11sQ%2Mg{Pxe&kL|{gezW(d?t(p3&6Si~6nWY5$^w`WgnT;u& zK^bGM!{PAaJDR#jLGc)IKH6G7``zv;^%K>1EfEmi8--z_iw(}V)x5zQ@VrMWO#ZtK=x7}isLTg1LOQP_Oh(b;#Y<02 zB%cz}!!BI-vqq16-qk5M2x9LSR)`?$g9JVO2}d3UHZ%O6fd|$a=YjCLZ;0z*-wn>d zq6EFlltb$J#!}k-`QyvhWH@&ePzx@45R!gWfp%3DBZ80~nFA?0icc!5fZ7yekP%gD ztrvjM9t!=W6tH*j>k3xLfW5^62_So+8Jds0|LS9k8`y3o>ZoQ=4lK(}`M%&$BmVIA zGN_3aDTO&{wCmgm9P)3-OT@J?;N1(sOVb=*8$Qen7k|@7oo_bN7|SSlI<#lI& zy_|CHE5z2!MRqUPSmXgEa{a|)`eyDEmF}*Ya6(Y?;2~=q$OA;B+hlP9OyQWus8AB$ z`^uY#k4hhxb<4@hE8EX>*X~*2eH*{h=2H27J3UXeUl%J(!8}ZrXNfpdQT*l7YymcR z%VFT4{apa0Ku8xgl(aUS#w1Ttsb&A#6URESX?`!w&w)9ofszI#6zuO`YkBWk$0uqQ zNn>v(0z=34z&V+B@y%iMUC8tF3aqRDc^~pMIo9=DsQbZ+_*DD&8_OCEb7_a0wh2iC zIg&{FR}$ZlGNq+FBja0C#JykoNxOG1_4`8)V(wQHql_mWt1l?rNYYy5qG~`TYdGoxp+enS%poyL#zr=u%Yh1+&i0 z9*f#Shf~w(&7s5Hg@GeZp2oDhedW6_0+wlRu@u&Yplz2FU31awoQf-y7s_hd$8X#( zCx30^3?)4X*Wb!JXSO;@)C&71Kk?PCW#*kV9ZsKrS|XYb@@Y9f_LPEMwL^8z=0gRo z{l)_CMLC^TaE?_o2xIb&kQVXgShQ*}I_rw6|0-)tcH<(Fm#2LdWKN9b{Oyj+M8))IL{ z_)oy_5`xkSkzav%2|yQPeLadh@1Px=XrSZT+DsqqK|NAut+b5xgNAd`BDF12wlz^y z>#B)_!_}Ux3vO^7Vs+JCpS5<0|GkTvRY0dQJhV1LSt<)YS6DOIgCwuiVUL>~9=Z{2 z(u=DUAHn9HUtkVIzYi|9%c{GW+3c5%rhO9Q^i{?3S{l!In$=BPXwT3wjBAN2PCIK! z#5K@zsF}1_tWws zef-s-=16bW7FK>GS024W-`n(ZLK6+U)_n^7xS2-pgD*0c}sWA ztQ>(v$Y9m7qxE8ETr3w1BlsFiAw_bP!D$^9W~YjXP#sln_>a0eH#q%WLZIu z+!uDd5I!ZMw@`I2)Q9Vn4U1a(Aw{t(BbF4iYaSk+W0TA0r2OX))H z7Z1X56CcfC{urP-=K;!8c};o?xYxtN!Z>Aja>K)E40$IyxV&Wj^9)|DYGbGIjPK!y z5vkT^l??!a5(nwiBE6!=fL*A*fvPr?L#pN7P(S1$-EZfCA45 z($FVY0H+BRM27?;H#e8`G9^}4lmhZhaZU=L1wJah0zY#nKhu5!yzO9Bg1=Wk|MT~B zX>L$$0#MdX7m%wPFt)6BFDC0TU^osKJuOfQ=zohQDp6nM0beVfLHOE;EsWjv(vi??bHL*3FQjk%o_r}|8kuk$ zEBxm!P}$+7a=Kj!6s8Fjct-GJukex%>lc_r+iDZcGm^^jVQRW;`Ej8wlU0mp(KrTl zxyN_Nej7sqEV))!cnil49EU2fAM=SG>jKCIQ&7at_CA$zmG_$`e}Lg_8$LVyK!M@I zkF0_Ob8q=ZH15iF9AZ{FO~L`wr|fH09%RFy%mp(%zg9?u2zIFyQ-ZO>9;%mdn}+%5 zVe?%4?$v6zGAztqBXAyoRnzTzMr!N$-vLGx(^vIX$8ssmXUO^)6HH6*=?FGl2dZ&C zL(MNfMA4NiBAC8JcU`H*m18vhu$P}9Rg+jAjoQ8T;SempjWCGJ#qi}KG^(%b?^SvU z#&|*cgnd|kj*YtIxpA77AY3R6F7)@o^iMCN^syl|m{F=~K@6YtonOhKU>KmzoFEG5 zK@*lA$KcnDyu#XT1xy&x^RQO_>yT{tRo=%p?hJWvp5CzNdYT*DqqL;dsCu3n)P%f2 z>3zjAAHYWc76H);{~ba~$twXrm>7f5H(%{$znvs{?^&Ao%z1MhG7eO&$a5ba8Ezl8 zy}wAQ7k$R9w4nvDu&~^?FvIwv!T}(1&!CTgsUSKIk-$sTQb3V^7%l!q2qU`DYq7Gi zdE~BWX-PGn+n@SrP`g>-qVq~8ln^KhK;glM^MkNHpPiinj1aD_t^g@SIbAlD<(g(2 zvp=&KGI00jNA(gx9UUD9E4sS60GkAqe##3^C<(N@0pRVMFyF)c14@SL3fb2xoJUs< z5A+@EznFS^Fx^?}_5XXAb1abm)yDlg{}Ne}NqcC<)ybLel<#(CMqab^s_p(JO}^cB zGpmqOKSN99#XtA0=Lc0YPL{^p#uRxlrqkxqG)AeRjWL~`w7h(R;Wlk8r2JZtP#%^k z9X*p}rYy+)=vFl~lrM5OK0N#|m+kRpDr3smjnmWjkE^KVclW7LJv_D?M2dTZ=C=&HMRH8J@FPSV*?4DNjt+lm!0akt6sNi8`Gc) z_omO_aO*;4vNic&Rcby};|u9CDuTcI-FKR2w#+Ec1u$^CNsRcnBjyuA;0Uxvo z%Xzg%P-Ux2=fy?Oi%YYGswP(NhMuqiGK2lr?#P0`T{p!k5z`6LDK!l9no^S2qN1GX z(BjF@kbUO|B5=kBO)V`Y|K9C5Aatr*p8un#r>C^E)Tcco02s1Qy{brvMUV@)@x4-Xm-MB}(jio?ko4|rXY0|t1;G?9xqGNyXB-mUvB zb?duUZe0f3Jtho3gCKHg{|=SRVT_MTq$ zGa||@`d<7@n8}f!x}#K}GzNrrdsi3mj9BTu7!3}P{Uj3poH>i&0$q=yzAxv3Q2WeY z76yEukx(xuV^VR*VD;plQ}YsQTXl68fEEsbev*a0Lk6Fy*1Y5_RIM?P`Qvmx@70R( z%M0Su>L}pVb#{_*^T}7J4z(5=FPSyn-Um9e=lNY%Q}NE*5Pe?b9Vm<;Bzvz_ zQY$LhOlC29JZ%|Gwn9nqTsL8c7`m{qaN>%&=L25)ko>Q(DT4|)aiNNWpo^*>sMAA0 z{Mz^abVtpK{^%T4mf3g(MyL z^_pS9-D?(P`#c7Dwi{OG?Y5G^1w_9s;4D2PrV2iFJwV?-njS~0WJ91Zi0v_B`dP<@ zdjyb914AlWRcwnjc*|U?jNau=14(^?&dqOu($qqYJGu=+M@COkm?;CJ1B^e`O^=)r z!9YM6%)|@|J7wCh+|IINnpB8dnl!*1tiJ1v#DrE##4!t%SdfKYWS0u}V+_4GUwSEm zDVxYcFn*1i`?v!+y4(boI5 zc|RSGNn5>GT0!ffo*2^0I72mV+yZVYJs&qS5HkbIJi-)a!1j(zGqR?K{4DJn95T|6 zmPV$jMX2*gcrm(UQ;!C{derG_`^j51XSJRm`)}nv%x#QkX!ZUG%1S$u4M=ON-}+CA z2bG4RpsU`EqJ80v@6}mcW&~$0U@vn+oxk+ zv#&q)*wilw6>i-T0RRe--6z+3l%mQpz&FY|%1p%;!W}gT>s-WV1=-dca0F$vTtiUP zYLOMGQAE-q&30Z^@0tsRKzAf7>{0dK(QN5v!g%b+%gf&b5D#R7Ctus)kWVIuwazcw zc4Y`FMUciNpKpzT1ZFO@W@$~x;C_7wdYHU^&F2Jhh@yRXc-ZiP6cOxS7m&eIWyT6Z zuSsLb=q1@f&OT#kOohK{XfW&u@!q{12X?LpMyycW{=QJl+4d{nv2Bx$F@i_|9h-LM z2*Qi#t`?Uqo-!Ht)Xx@is%_*2LCSn|W&SOK2OVy&A$}uci7>v5K!62Ro0%Dh%IkUK z#b>h7zwVuV)(^=TvLeTKa*8#sAnC78>N zk53qhO&MMX?am@F01pNV44}qG5<>esHD^vpS7Kk89z>tum_Vf1K~%t5CkJWAMoZ4m zdS(Y4nz*_5I&(GmouRk1iQE4bASWACDY+?=qu(+3bj6uIMzH1trk_?0ole-R<>b!X`$4gZn(l0LE&wvuZG$pNe5 zc3KziHEVmzv1bsuR7<6Va(aQbQ`ByYW7A3R^({cz@E46=Ebd#>>IKs&v9xv0r2={G zJX+d`Ynqgg;co!4T>%8pSOA9`fStbgov|YQw}uQa?!z^xCkQ7s0subGf}o2$A5PKE zAr|AR!v;Ybezt@6nzTud_JUCVt9`Vs1FgmWsVQYcLqi*zvN@|ZpNA&%%2mx_KX+Dw zZRNLQe_`A)!Rvv7(Bt%0%=3#24MuDkE)E_9oHUFV6NOI7XF5Nui?uRM>pWsv0wHy^ zweIp>5)yp?KZWekYeyFs7y7TLe^J##Y4y#I{Eh2#b8~6BwZrV8r49R6i9h#@CPCZKxMl%lvrC^JL};k@K`3(MA?_&F6wovMH3$6h&$f9t6#r> z^*`zU5rk@@sVsZNO{~WlO0-+sTBf9@i#s#3L&MynXzgxThFgUUVo(+-G}Y9C1&Hg? ziK6nC&(ED=J5;!B>-i}bY%@4;pRlHC*0V;*HNxw}6Ca@e^-IW3SOMi3U5)iG;lb(R zq4xXzYWWWjizhcPN%}^QmYRY53pOsn(mk~JcQkg<^0SPTMkXe&`Ckgyh6r1I@t{S` zXAP*4n0g=&?fY@+pd~8m?e6~mQjoW;uy7zJm~Dx@U^Z+jfV`RAOp=FB@LZT-^pjzY zfaj&m{|U=AVcSBjPnMI?X8GK?`$`BTAtok~cFVS}>|``GPVwc%a(cT{{+VmIrnpW@vDw&PrnWsQN@@)s;W5Xb&1JZRu|XY zDJ~PREf=2b>tASoK>3A1a2|V7-;6#Xe!!lZTsq4i#Qk7cFxulG_9vkck5O%tFC+(h zCKm^jI^^Z}>guZZ-6a(zB_bkX!GQd%iMsl1nNG8!l9Hu`1vEPw2(yHV{)vDU5^4wb z(#gunh1w`acr{f^oIBgHly#;}P5)XCvOF2NAxha#-p^OHJU-AJgWxPSIS=JX2scmY zvW{hq+sR)jwBi!6v$JFVPgUH!q6+Ryv-WF#c7g(4NMl4qMuy^kH`S4~HUb%OfTq6a zhUMi*C>v?BabP+D((}ChO-D=X7kGJfl_BWqvee}KQ?6wh){;V)f2K_5;NSp3Z>il^ zC}(PAg(Na`6;7%Ah<>C;i8KZhuM+>WQL|47E1a|*QcaAFGBGhB?WoB3m#brBkkRl}? z-wzSd-W1A878Vw!y%H1K1yV!mZCBDWGNN!HyT3}cX3F*SR8?P}b!X$A<7#C-X2K;- zJI@p~UN_1{M9?CN!=sV-J@occhkF_cRK-yXDwr+YlWI7HZ`VTKs$KjXB{vU8HmTP5 ze{?Xk;G+>^IVE+Fm#bH1xo_tS;vi}oYAgBDU3_ax^E79F8cNK;PI}W7@mXrCH~jl; z_#sNOFL$YISV&1>G=2h5haHh3A|lMXEf6W4RFBimfja92QmC6Roz3Ur5L9r4P;)z{ znjf4GJw1JKQITEjJ~l-G+i-C! zu3BPhwSMU;F^8cYKcaU^nW9ZmaecI#n9r>uw^0LYC^9mVfX5~$CkGQ78(M*Fx%N4l z?A(2Oa}%(IYrg^SNAxTxcn?s^hr25@_nlE9P-u?>S%O>e8}^J8ZtG44(F$y|GXHY& zj}TfHg=Pfdh^Q!eDJc>C3Tbht5DySs1L2i|hDP8b;}NPBW7b!+a8KP9uW4bz`LjH*!}uZtGrQ!^?{*H^QhXZN2(9G&MgZ; z6-iMAwRkBgI5^vxgPEC`n)-DR20s2X7;}xi&1}UBWPg9H@0$rsTA6}BKh19MP3EHz z^1`4c+hLue4@9sYTdV&lYfynGaH?t;Q%^^O8W0-;1A>NZ z!O)*ScAr0!CgAvIcCrDr4?3hl8p`D2bw&nrFOi&{%P-!mWS1Dp)+<;x$zw(U2+64jcLS1i|0QC|OTVH5^&s>k(Ne49(W)jk1iu_0Y| zd$D%eCE2_D6;Pcs;io z%;VzZRMCY|Yi45;37K&FJRpRi^Kj=!O)Nbs|j`d$B!TJ@mL~u-zi@xdO5qh<0Vnj;f!tGVk5JOaM94v z;K@YVczW`01P2Eb;N$Nf8~`(>uQ9B^<^FWB_Vt%Adgv3%y%GgRO11Sr&wQ9ROv|#kC!h*L+NraXlzc??Q z80T2Wp&qiF4F_7VygZ6Mco!P2UFNhY|;7jXwG(q!LdpEDS|Ag81iDAiCs9sY9XS9CU&di4l=BQ>Nytgh}q}QtH8{$cv02R(0>ceCfg^#tP;m#v$$$+ zW(N86+lAZ$qzu9Yqdn`BE-zX{d#>)|ckItR)C4!YGG-34qOa)>KMvUve2df4W*CGwI%H;KRA5J&F_sEi z%l*PEzFmt2{!eG;kbdbN2n_gwSMo&OKONkYSeDd{?x6X6Lc~x55uHfV zL&#Mn)39|>;EWOFq!r?r_Zee|(!Dh8{m~dW5GsvWBb;)hffvaPI>7CAPs=1DLv+E^ zE};zcub47GS_qCF{4^p<5qFG6Q^Kxip<5_*khC&ZQ+ZN<_OHh0+>Qbb}cq`$?olS?Hv$_&3~5lhn@ z+}u*s_dxgNK!9cvt5O03<=N7ZH}BkHpQF%#=qRAG6fq$@+uQNK(PSxFz3A6c!@s`b zI2n8O-h6EaO;gp75B&4m=reZ2-nwB}hM}E6tORyenAoqOKNaNv6EGDyJet6I>?f1W zZ!Bc5(ARR%a=VE!ki|geYg{jN-b>Pw55lCzYJ>z<$-PWT@ulj-%aUE?JVXtNxO&;z zF~&v>yGTL*zq(O!;gCalDZfZD+B-@bIz^+O$sl65v?>+RM_difrd*y}`ssu_1D|<|a>P8hy3p*4EY6$I=@h>S z(C^zU9~@dHSJa8Gc{bnF|0L?Uhl;!F=eS|q-(!y(vAYDz_GHg;k-;CKd7q1#P-Tp} z$t9$bS!NHg)}0~_SR6D;VER3T{)8(N!cO2W_kH=-b^9Z?(H`>nXlupWmzV5bm&B7e zFW2eQz=`wmEx47LcA@2w>>oci*)1)6C%&k1a0AEVbloBaJZVLHBk+n-I0I*#Li5*| zj*kIV^>98JOIR*&v%|1kQbZng&TjcPJfOmK>_DLh^g1b3PtjxIoAJBS>CO z?kHBUJcsG2OF zOoba6pX6mrOvR;C#N41Q<`)D(StEGXWrni^|b=% zdCL)K(2t@b=fD~-&V&_r)4i>-GD|H&qV2@3L~6=XKuJ+cJj2JMG0r%xv{dz%kLj7m z(&6q>TILJ^81E3)_8NwGNlmH(fHc}EsZofCqetlps?vs^eNOFMq) z4cb-kI*62~LJC3-gtpzJeh;m(tIzHvOhj0w6*#3Plo@i0$%^_% zao$6@K1fUnaX(mn5W)QTb{z2Pm9Km5t23Fe5)~*Y%ZyG;@IbSadn}ZK%|6epTVxtO zx${@KM{&#l4JO$|6+Ez*E`M~^QoA>_T=~9?4(-q*fqHs+!k!2|#C{RYYM9jZaCWBo z@_?o7oX1o#8Xj5YjsU)!%Ko=CvhT*fnVP@A>;AH1YEAepBqI4dn_^TC2Kg;`mB!OG zaY7uk*WL|mlkaIyqa!g%i$2k<-Lr`K?W5wWc?&69_&CnEbNM&qpJ?8HhBF;K(|*V6 zunha!cT}xi)QLOAI`Y3 z0Lor1Wr8D{e-v8)(=5#9HYxzC4Lv=fmT*oZ$CE>h#%u1hq;LTrEA*?)dgBv7-N-_( zAl!Na7R}V$@P?vdO7 zac$w`Cz;MU?K5uL66ykh;ku7FK45fOTV3Tw2JeTOn}8~a7rTWsiA|_$w_1piMI}Gy z97U^)3vFIvX1dC)uDT8f0(+>?DO@O=`Mjo|*oxBjdlUwAsDd?Q`$zTA)~Vwg<2em4 z@&5dT=LSyHqY_2+nOC&fW|D#s461lR8E2adr|8Uxy{i?se_;|nG{xA#-Iai`M zW788nAeKl9+S7+bif3PVq|pfG^%V(P$DF7YtJE2wobPf}yr*kgvWc}2;-^9wtx7p? z2&9D(i6j1N2@emg)6Zw`=`h-h$A?pXaQJYOX;r@Qn1SAK$&Wwm$1(B_eNZm=uU^Q( zXE*mpN6c&q7y&}`vC$lEy<^ly43{4>2#LFwgoCx-0VDG7tw%;=C!z1Dz7Hu0sZdjx z{>c-;3F{$V8VL)#Jk{5%#{No`4glFKvenP*Obc*Ib;`*&IVU5ybI>R=7u~BMaRCon? z^(C{w&sR*&D(2UDz^eBXa^#7-Dk1%FuZDj870i}}E2~|~5!4wlH-*kUO?l=o` zUsg7gahu5knuu;a&db6wRMl{Y+~G)nl$;S%r0{%6z1j7Pk6PWzYR`pYTwpVum7hff zgwmgbQb0`i|Nj@|mdh2!V}g)=9-K^P@1Yzp{7J4?u~;w#36V7tnDnOI1dgumY@e)H zab>7ux1>WaFp6n^#b7^7A~gUJzsWtEiJyB;9|V=X{K})aQ%1N`WUJEvz4=47{>QU@ z#kPK-sAxYC6K(p?W#tiw5vsN4R52Q2^=O7-shll9f!-G5yyqc4^!gz2te0abT!hFw zXE%pgp-}Zw)yix`eqez4RJwAv%4&mgAKBo{jMlxvF|0mi=~N&2zod>M`4KalK=Js( zVDhCTD}u`$mJGR3Gy2c7EM**{VmD8N@@Q7vZLm*d)$limXPGo#n+v zUfQU!G&VB+cx3OZqcrv1HY{*)`P3DI8x|SMU`_!GK!BxMsLTy~B!5m>a6xtpmGXVw zVz#hco^B2K`oAuhY!M@GAN}jO{(7zlB12(iivy@s$J?x^b-|e6;|{MsI6|(Blp5am zylp6Pv9fmTm&d4n#;Y?)e_fK_h~6hk0~EQJIv{txnM6pZ?>;3bxd*$MTq-ZwYg}IS zpnE>0XWu)j2vAB9plLOFBX-`Lne_d;x~}dr;tTcH|4`}jQ$epS1IR7h_1R5lzNDq( zK$@)oRv~nE8EZVGoQjwryhkTFG9oGys%9EVBJ{Z46V@&Qlki3Guj?Lgk>Y1UOr+ob z^OPr7G{NoBYqOl#HFa%|Jn4%GCkZQqCUq8_@%f$w?%Ruf8S-ei$NL*`TWpSm826vc z$r_8h2>;c_Qwp@QUH%~PSX!r&aI~mV3AD*!UCnwTEGS`;ZbGS7Wd-^ z%n^p}e!v*NI!k08X)lj0BTu&589cs_8*B`lfIVQ8bM4k`P^q)cR%`gqkgZof+Pz`# zRc2L+gDOVJ#FLUq8o`8i$PJxSI(v}-pfUiG>eodDKaB?TTBecqIx)F6a^+1_9EKGT z_aCM}=x>+s;&m1XpZQvyFvc5DdTDm>i|7CcL*24EHq#tiAtk!d&S2nFM@NTzHR^Z+ zheQ-{Pw=hsl15`v4WHy_iE?pK3c)sH-eA6JbgZRNMKAzhuzl_!bZoT1rVfK{Z<*ke zV}bcBHHy8N8x<|RhMm;6$JvmCs{XJ`B~T@!C`h#C{r5MHgNu+%$ZK*aYHxAWfzS9C z%<*!Jar?3Gh}1Nug~rW#ks_EwtK$(&>jh?$AV%|#J~hmwqt^44l>iW6S@TQjxbT8M zq_8LtO25&_lXXk*P8c{O8Dh=POFdr?Wj=>v$SBp(R4m7HQm=Do9CH>hz}Bpe-8U`Gh#L>R7y~Om_$&)oZrBifVjiDij~J} zs-OLXZlvXA>i% z&4E~&3>|mphg7(g64k92VzoRR--aA#^teEra6?v~s5?)U626v-D#hnTk`Gqpoo49# zV5fxw`uz5t2xtT&x#2Pa+dge{|A=rz#S~i~ULEv+alh@xpCgTi^bwR>^8LN+A!h)W zs&VZ!xxPR}vlu8?X8;>beHhWpF%uz}V*GN}Z1c~TBSb`GehyB~uf`>OXM2-0l0N<{ z@Ph_XS4ybEERb>5?oSuXaa_)0W_r&5(<4AG@@91{6FB_$733TX`LH6?&?Z(44Y#*E z5^w5sUkD@Etgw}}|7-hP7z%@;wZp+tp3zZ; z!o(rA1Q+XubTAkcf%I-``#bVrFcusmls4s4@FhMh*Y?D{z@sn+zgQg4|F^bTN>X1P zb}>9Rk$&B}rTt(9@HUb=4<0D+d{}IJ!NW82(S*0JrB6QTy{@rk(_&x2T#0AX0tEtP zZnbvQec^!=s*1mVhe%a;!JAc2d=yUd(M332g7l=+KQ_*ukc-D5>X{ zL-bnCOH013+!$oYmgV*vLM{*~;s<;d)Gp+(#G<^ivatgZbU&6#<0?a!S%f3CIB*tW#}e@lj6*Rx3% z&vkoP`_FNk=etAf{omzp+JFs=Um7lxy(UI!)fa8~r+90n`1Ou7`PLNzwF2=nx26iz z1|GUSd!681&5zH@I_`a{S$r`fI@(%OaqSLMdu!|cQ`wJB3whdZZh7|S-V;}p-18@; zf1WjYcB(nBO&5^a@ohhs^Ok=tFO>N%nylC@a97hsI#gO#7I<8&t=>Y7^Cy~fYfu1gW&tjN|6=3fzS_*l2zUfuQOLQ%+gsxwuaMp(4Qv&?2<-s2R}{5ecKsr##(gzCuh~95_^bTwcdA%!|Ffz5Z7Y zA35T(IOt}hjN85Nti;5`>gwGy&Vjspb$RjTD<@Vq09W(L7sN~2OS(#W+fDbj_sSEU zuC-*}DqD$pWh+jWh%I7p@Shg%+HH2b?$BM++g+)vFE6xdYEJZB7Am`JGcb;;mX8P5OnK&CS^{C5Yo9>J>CSwGI!$#MW&p9~B?_nRGRUA0PZ?W$E- zF2HFtFd=nu)v8rs!fgwX1tv&PaS3WT$EWRbiH(~$1c41*2jGANgb)C&B?S{Mpr$ZL f5=?+qB(T_aF1h)P^DFQQWd;UMS3j3^P6K{?7fbiLPjVv z`}-32`}e--{rUZMSNH3@p6hyE*W-FzkLwkp`cRetj{*+^1A{5>b0N6X z#7Y9z5o+J{a@8%osBXTW=XKx9d1h~)?;2Wf>I!NL3JV-GCJ&M68=Xo!Z=E03yVMqJ z4u4PGSW8GuY<`cI{Okb+Ced>Y5FN%Pu=v0J*ateAY}|Ll^4;4xKAINxCD%kiAdqON zIBh0jFV4c{%}aY2-p}t}_^aH)<)waYZSC3aG-0QmRU-n!*ruhWf(>R|?Em$Xvlsd; zd5aq*$J^aP%CGJn9|PJ@qx^<8msdwV+`F1Gy$PQ{vSt@HPYSk3F}@V`A?#H^}oXn0+@ z%3+!rm1)2Ce5FcJQ8D61MK(d(@RA02>o3Qy`YI(QHbuZe$i~$*0pvfib7|b9a;>|k zM_9c#l%HYr-rK+YsMi)V;O$$sq}0^7kPzIPw6rWJx*c!v{eo@1l{y|Cp6qPjs4?jDtAm?Tl#QG3GmlvB{Q3vu)#BDKce?Pt?LqzhPZ?4%m5pX$;gbd;j2o zCMHE&-bd-g#6-QHnQwF0s4gCv-yJ`RQr+vE26d8Hg@NL7B{6pPiB@@AWHX)hdYFVop_EBtoHvw~lQ%8+=ieH<>mnfA;0@;RLw0k@2wj5Nh`HAYDm?ay+RcMC38W1sUc zz`aS9!axNA>*QPP(DE#;Y|kIFQ<^GE7QwftW+Ss3eFIISbXl)$)qz;Btlbs77z=E0 z>Ch)OS23NCFc(HHGZf@k9P5%xs!)DFL(_e;>NV2HW@EpjjUB}vkiKfbGw)_M`Y4y- z{01%P{&5y(7tM0s_A2rNm4%*E;=Go7ybfx(U<3N>acy{6AJEU*1@$X3BA4uGpAKpz+V)lyj8Rzh#Da zd3YF;c^y)tC?*V}Bv2Xr9huQKvTmF03H9ub+wBQc)J_!=2wbh@nYLxbkCO%T_g=Pd6L@pqnRl3o z>CC+b>-$=yj!5zffRqWSBdFu4>+8$D<(tH;MDODta$oPT(;~BsvUQJpW&}b1FvVof z=3srT&xnpu;kt`iB!LK+)1R=-dhCuv(+}qNO&3{p;1`-be|!A4nN?o_j=#dj!(%Mu zp<*nr!_yjBLzGKS*%aeLP)fsEXa(a8G8~pjK)4#a*t=hAv=+hGu&0U83X{VhS;MWl z!r9NwXtH;th0g&>5pEez2J>fp>8Pld&;+IEXdftK4Lz&?Bexr_^m&{+pA{9lSg7am z{xsLll&1q=2X@4;+^pBcaQoTlEp>ERRrZ86ii|v(pZT&k7^!crO;hy%QIrNPbPu+! z6hzw!yk?_GQEoE*FC{q^Y9-H~jDF$6jua12i5iQfBzsn#D8b-|^^qWO}fjX)*3n%v{i@#qP2iCab=%|i;@PdDt!x-0M z%zBFSRS9)2AXce32L-X406x8|vz?hxkRvSldd+i8@{2)J+!^;eGcz-jeZTuqS3F?VlBHUgvN9P~*qU0lo>NzFlchwLIyFuA-Gr zGWq34xs=%Op#V>jn-aaIdW1L6!EK_{!v;}VAL_Y|nh&|f@rwK4oqa?3dgAMO`s}>$ zaOzv3P`gzNct8C)Xh|0W*l&W%Riw3_W}G*nlvLstEdEV4D1~ukxWmlMqRoOT<;StP zUYQmiGOBvC{1(%fC34}`Qm;EOE>yy%OGU;TQke#?o1c=6qB4z9%!#gTpDC7x_K0CN z`-E55@ z6U54troFZG0uSRB(y~)5mHsOs?uZxeND{n=`XO}%@r7W7aY+%d#Qlup4PTjVl;wBx zjh^N__j0^EG<`O%dIuMpVa{mc7r(m0eT8kUHWMj?#r!LkG5>IU{mmDWovHWk%mUvkV<=FtYM~fU4MqxQYRouR-}O z#lCk+hMu{Q<^IsArb>0(q9KM6@NJ5;hP z%Jt~Lo&JAA__S%9cZom<1VRu2*-EOo@G+?U?);5`za}Biw=aPxO^b?}ld1cYTfj){ zeW6hQ3n5jU?mGx?q{M{$4?LtpJNX1=xnI~5zuR;GI=F+Zgi0e^PWPRWJNNyafQ*%F6OZi!(vA2|M*`-q~Vy5dRh1?}T-1AcK~)7&QIGAMF$8>mlB1 z?jKGcd+#pDiY*<$Qq3vj?L|{8?)d+voE&Bp9hXVr+Qk-7e6*4I)=HIs2NtVV60Yx? zr3z+d$!IUXzRy#u?9nvt={tT{fR?pae3qh`qTj^y(a|=LsKP{$0X?=hD;ajtD$*n} znNjnJcI;@|1lX-dbCF+#*o8f+TBi`zxZvE(=fbtGbv)dtws865_339wqtryp?0IiH zb+(q@bF6d=yN>+9xAh|)QZGE4Kk_*#U`X8e2IWF*Lt0Dy_NO0_j|)wer6)S!*0_>~ zSc|kyVP%aaw>$66Y5w>&p^hNDx}`XS^5*_l`8G!0N~WD2Ei|Y3$>$>U9ZM9qM3LPZ z`7_0MI&>$-`^dnVM@XSSbOyG9;cV|C{X3lOhI1*>2x2<3;h#4y<= ziz|ex|??`UmdYB+0P;z zxsTOXk?QeYXVteL8Cpn&nvZoEl1hozSr!nv{U+V1IVrZ2s80dK&zh3j6aJEtWYo9O zN3p@d?ZTw2+ZFoMfEEXHN~}Gsc5Tdg1X`z9v=ZDyLGS7B1nG}|+vY`|1MBy$qEUdnyBGG3aPi*2@wb>rQ_~1bf zu|EG8hY%ccqc2|cYdiRzr_w&JdRJid;*&lEbc3OlKVOfB=Pg7@B{X)D*qEYJo9#*^ z#IN<9%6e`j)Hz^kuch*#%9u^AStMoN<2Wi}*cIZgF1^6Oi&iI;3e3wAORI7wYrEV$ zX|BD{m@)S=Hox4XflQUpS~6a5pOy95J|3kw95x8GEsT?Iv9K~}V!$!Z(J?gOb5g<@ zMt@tLOSfnIB`Ni05(`h8JkMXEuN21Km}l{b@A_RU#&0iQIxp=6CTPFITLQ}outTaN zS4A92U4-l%my`MNxir1fopfRAzdBTSQxAQ(r7Ax5X#SwN;QZ-YKzJl1Br&&kvBozy zE6}sPjUMhF%d~WUdqL&2=fl)fP41$Mu@*;#epG%#@ZgNonABPJTy4cBNva%gsPZfi z;q+8`NH&S2b)AO_{}_+Veq~ztUfXB`$F6Z-o>S(j?XU}LC}ishsg(b-44GQ;t~m?)+W|u zLo)+#@9UMC&FucwQ8qJTFa1+6yOZTOb^Gm? z0ii-L@)_>+v5c9X_C1{R*wNNj)GKcR_evv*U*zv(u?!AW(NIkj`=+}+PRio|{`j9; zvW#W$HEQr#+jSPt19;Jrb;r*KMMU1X*9tDd?RVzkB0miUJ-Dh>^mdG}3^r}wnqBtJ zdQ=WZ-rjv!p7NI)SMf^x0ZUL%%u^TDl!Ni+`ixwdKnY6{cSQ#t@`sDX_>Q9rB0SO) zz^k@qPkb%OrOB+mEe*ZbBD1=uOSLK7=n$T^=$3{$p>34I{beY3q{nw(6~`d5rO$`uCdv$Gp&h2?^oxeH{t!T|pNVxRS(_

      W)3_I!ytf+t4jf6B#6>knVyFG|zfMpP63<T_B+fGJadXS8MAwvQ6XdVr<(kcpvU`cER0xH&?>d2=8IFc z&}$I`qWv(Q@ei5F5`W4R-c4@-jdiZ1vCX~M|diPc=sphsN zBCv-|{mrZ1l<7LRs9-u9fd$2i;^MWAmjtZ!ZgZ`kt6!pHVsw%8j_1Z+-=DdMN%=VW zeNjsT6-ezAQMI#vKMGwy&!~4%`5{rlqfJ2P3x8XV1h&{T4z`N>=+c7QWssR9Dda&S z;VrH9w}mMOPVv3e;wyI_k4u&8>(I4bHXgrI<&3QOC8Tj2dft3I0D7>D`PX zmcPF*eqX+Zbfca*ZK9X*((sM+ZKc?#s;c_-&0tUAWAODA=1VMGVk09XsDi8LExc#r zJO*pT<$|p>#&-6IaO^1?_JccrCR{2Dcb;z}YzCGKF=$!(1b8f+U(}N3?^J8#vx`Zg z?hrgqCV?tYb9CY?*5!uEwDYWpRD8>L{iw}!_#$nsZ=*hWJkELM%l2o1dkK->gC0%! zp~dJ;Xw9&CZ)T|RSTc#3E$5lG_7FM@cle#8p_P@+-un8Ztl?E$$>_R|D+@TcGpx*2 z)o|E2)=BKv*SfqaSMv-4_?Bb4oW^YvsI<1pGfcKMI6tZurTuFn2cj@OKIuE!BO3dwdCyz*30K~11HoeJ z60>9~tKvw{kr&u_^LwF?zFaWgoD;2`E>L)+_)cWiA4jZ}1}K)-JKc$c5Au<88%!Ep z7uwM|DJAN~Q0CG+E2uGbs>#y3y{x*<9&D_$uk7R{Mw$2UQn&T@*B`JhM+>CeU@_fQ zj>1MxPEKejhS|ySv46|#)YMc^Y^Rsh0JcOUvVt?>;v#~}8oSAro%M@O={>eEVGUiA z?oK|uFv*c@`H5O=V)NKvsVDsG&hekUem#LybJL2aVqiTYNKhl&bL;AH1Se^;rO(4skMTSzm`~65xs7&+4P7TE@mnQrwKzD)u|GEwF@JjHjrlpgZK|2nz+eQCD?%*>Z%fEzNDt~=B=LhL40M(Z1fD^f}p??2X zOl!e>a7Dp7=c4D5nm0*@M1J;d!4ysSAQ+nJiYHp1H@$jQKk*z#oI?#Kp~1{Ij-!7< z=y&sF@qV(Os|6LIN}uhUFo4*eZX!}r>j!66PGn?cOql6ZlYmGfN@ij* z4mE@+r`*mXlJ=eNW701$#wdVHMeXjz4R*X3>*?xfthY-0e9vdYh?q{XA7W~2k4QTf zP5&{-(TV*@gav1}H^&aa_CIi{*bAs(K>Yh~u=*hY@(mh=0Xd8%!U16y$`D423;E4* zixA8J@T71SvHt7J0VX6n!UX{$Hs^2nAQYlNG6{f)uJu(o)tX&~F=k-7@!7_G0Z6cS z*Sosf+Q_t&m&|_|McS7IGYuwi>8@{V{0R!?r;ftfefSW}KWuDr3JZI;yv?uV;9$l; z(QgVzjc-sHkR7>0#A(|;dg7{=cLJ0z*LaBZ@G~lNqg{By7#QATiWjpySaMd2l2%lq zm>#x$)h0^&%Hhm}x{+QpQ%}V64*fZjj5eDltrhs(QTX$fWr((i4CBSW$Br-lta&v; z(w73|PO#ZT6of>cqZ4uO&;Xr>;MaBu7!ET$1b`qhZcgIRs`meDK;i%IYdGG@!IQcG zzw2}V;K{97xr(VP^_h+Edv8V8mll>w_BU1v2O+hZ4020hiGummFh?UXku6U+(mAq? zJ#}zt@K-+1qo^NzhHO-i&)zktBlMN!Jk=4k`D9w2l%=GE=rW3EN}VA!M8;iR#Hl&5 zzw68NGS8#YZ{PbAKNP7`s71@e91jM`2Tz@rdU#FD&>?^t!3yyL@)q(gE|MkHnnr6{ z`k5KJ5|2?2k+j3}xj**J;-|iIHdVwp!wRg2hz(sv8C~;m;hG(;33su_rl76>$Xk|4 z&g>$*u@e|;8>tA=Qy(>WI4ne_a;$tqpGAb=^wuM~S%EK}M=J?X-kZC{QH&UHi>*JHaMR9>%$@)Ae zUR_Epos)6Fa=DDp7j`z1eE zyQZ$M9&;&Frvwz?gSMuCh{o@Ef>9$`PNS7?AbIDGsk!+DHtFz=g^p}%X8Pkjbs@SrQy=do7Br(2sR>b@lak^i^?rS>X_y*>A>khYc{E`xU}>w zDK)$`nn6Gg_9Y_tie8Qcc?nqZkKd6KrIV9Zlr;A=l7Nn@pGA+|-U5NS>3%bc zFiz14!JapF8-ZMlD-1=>B+jH-=MQ_3{xvJKP&K?rYShIMi_i4VT9>RWH5dF=S(|)Wz$j~5 zemFqR1}AzT_H<;b_08(a${`8>{dX8nu|af9%v!xwy#XDudltDmS;Ck&(ECdm88B%l?w4;v+gg(G!Hy zyjF-H+EN^JO&VaIsK>tl`S>L-7hG}%9xf?>u9+2`{SaVz^r!6 zVDGQJxBcBNnGyFC5HLvcUFaYIei6}$clMg5L zb6c1GR_LxD{6U~*xRh_e1Np_3&@jpIK5Pl5X2Sk1Gjl(oe|HVZLml-}3FEK7FMB*_ zo5=A_*^VO=4U?HRRu(sO+Q9HV(7lySk zoa}Na*4Lk8gAt(sgp}|m0)znn{+mq%Jy?z+HrxG5zyf+W7A?6J9}^x0Djs8s9*TwM zV5>CqJc`MGB!--DjvD+O#9C6qzabC;3wI;<*V#(&@fRnKH|+SGezDJ^npIp+i1tb4 z+Gl<1B&xaj2w%@~vog1~|2%^t`*0`-mG0xHR8QVXkN)`3WiVxOk*9>az;N-BiM*+F z*ytI7p|y^QPZB9P>Yt-kKuH7f-$z2fuKacUfoNz*!dOZv*Qj;H$*iu_>`sd#7xtbI zMwu1s&p1@Fhuy21*A3La%p^n8NQUr&&(4A!Y!8#-fG*Lc!$Ys&;OjbEmrn0=^1*b8 zhcm<7-Dgcc!4_6l7M7Mlr%!Lw{qge@ZER_&O3e<-PbsHHam~0J%BF`fTKHBA3Z>>A zpj2K^EOfdvdsk5#+_qyT)Av%+2_&V1rOv36C-qeMeY$h5V5|s+$5j}YCyYh2p zW@~e^ti1e*i_7Iz$dic=R8u+OP>Sj0#olQy=%W83qevV* z_auJ8J-h;3^e>2*oPJZcOdn@726(4h0;Px|2v!{-A2gVuy~wf*@0>q*Qx!rD zP53mhIviYxtt=D?#46vtM}9Iti{(yPn8XIpJ#dS2pP4Vt$EN62I1>=b_KrsL*8m~I z@=s{!eh5@M%*qE_Cp#v1t0t@)Z}|HP7z6GFe?)d-NUv!x9NGaoJByGq52hXx(;Y&YwDndT$#m|3Z-I88m}` z>8}5?7mF*q8ho1aTcio80~rpr_JH{9sG8 zCcNyhxVh=#nVgr$7N9oCc>mv$`_`@X%?LkyVxO?!nnqxR90AQrY1yK3^mT4B>+~O~ z-s?>a#r$+YwIU<(L~94_^e*`G`MG}`8WxO&ygQw*j_&eFqoYKrLXc@}Vw-V*S-^-# z5OO3cc_D7kS7rmgX&XUD2CkmS9&z6t3t8NzdS5p%SPvNou%~i#GiraDPu{xm4H`E= z5f*kho|;p&ruH1y3(h7=B_!E@9cwm(;bglDan3m1f0ispjJQ=2wbgfsMPFMB_c0kh z6H3!0My{ijW_L1{?-Clp(C8^vYcebGk66#u! zz=RPF8yYsU;Ey=;RZKBSL4PI4JiQw|TAJ78|G<(XD%G-yLld#)_pJn~9FR|oYNN(e zLy}=;pB(|V>!PW5lHr9Y*=;2<3Qi%HGs2#;4!i>Yt>kQHOA z1%U-ir^m!CmNIMj!miaof%oCj)1PDSJfl#a?^dS-C>;p*4F|2FfdwrMB;E$OE!x>j zHkGj*gM^`cV^tW(EAH?u4{r~!QsW(!HTZxQB?4#h&mKDhKKHO!lhc-XecUz~7NxGZ zG-iiqPb8omdM(|UQv+|5@GA9qJgnH-i;o&h&HcK8tEbMOb+%QgUH13tdnH6eOk-SA zB8>Bsjeq~}uCr_+A6f%pyM~87It>ct*)pxxvR3~xU6i!LXI9-GWnb>9TChmJ!9;)M z{;jHsrv~dqe!x`@{(fP`xvbsWFk&&cR5;^mw6@1?nq5i(Uc7qn{s>qfcP+La zV7DYuD3tu`|<-yuBvQ=A>KlK|G z3ZIq0orV@1>BG)5=+u5;%meT5_FoZq068R>p-*qacbJv~0|@rrxZoST#EX(QtSOk` zcwL=g$v3d7)rQ352CJN#`oj1=g4gB-qd~}R2ZIa*OyC{S^jaGiouMRjr8Dzy-pX+Y z=`dt_N|iBiGC;8qW@rscxdOiWHZMMPXXo^&B9p?bY#{MNffeGq2h9H~InyvKL)dna5+ulufvO34Q=E-t{v*XHJCM@PrP!os(2@gP!R zm-ArUOr%&3ky#1cyN@^v>OTp6yQPw(9ammak*>dP`KhiBtY$`^5SSTa!f--HMD82f z-+PwEqS^ms-YA1>APK-slOIAkcsI1R>V(C_#H87!@+l)AsALwG{ycp9nv7uwJ3(!fFuxwZ zKXFd^3E;@@w3Wwo6)99|A+yF&&i8+%8<|h z(JfxHPjVv~B%qQ;EH5Xwl*-8Or2Thg1VT-l5m8YD=C00SbYPJPYT;8lXbC{gUlaJR ztP4dADw`2G!gXe;Wv%t)np5Pj!7O7h+QD#cQZu}T?meP^PHCTFvt^kwB10#z^9qTD zgoHq`r$h37{r>&?^78WN=ynf2XF{Zx$V-6P8{H?!#loV5XR#o)sZVhl#UJ)m87NnKdu+kd9Ql5~{(@&d&LH8`LmbgT2IH@U9~r z6w95U=L6aOCV&Q>0lav2XB)|5-Q$~oD0s{Ue`SI2&Ohy)oh+*%dudaDvZQ^8)3~Eb z>5o0rK!!FYQ<0#0ny-1iE5s`fqf?|LBxT3JbX9qF`+0wRbI+*ZLj*_vl3$4TiuA)) z?yiH~3{OW+(98am0WM^&HPC-0#HpbK1+~Y2F3dKb)Z9PYr#nIPj2k_gd2udevieT` z7U4_a!-o%VVq)r=ek&CIEuyQ0l^(tbtH*Rb8guS@jT{tPr`SiwWY$%8;SenMIaS^`engbt*;EgS{t=;*M=o0TW4vZoFWX&0-y=Mcki zAZVx(9?ss+sLSo5f!wG|9W`vx5+qoN>6#pU)M&99-emm_mLbfkUKZ8|m4D(Ce~#J- zqbGo*dsE4e88qds>xqXY|y0SA*Eb+DAI2g+X811>a+8qBF;AwakWLd`sZ zBVJ2%e0+TJyzT8o0U=_WO6x@~a_u_flDN{?#S}Zww)@T6m!!4nqUeE$h=@l@H&GU? zppS+RMXuc{TBe@4$~AsICMadBr+p)!OI>to3~YtyC#I+vvdU45?r&HQDdfTWcT_&AxWr%Ne_Joos6FI1DgS(L8vgdWD&lKj>nJ1I5yFMEm;2{M@?^EwLsY2OhP zcpeY@L080c8kE5udfolY%Vw~5b^G>hQBlKUBgcmipJf|jk0nA-qn(1C_@F|&po_Xu z`47y@;`M{PAAp;srFIOJks)ULXd;H1IfAwY>7M7_`xEJIctyo#9*oC8 zo^{UBmU5G;=z9fwT&wJIi6cl+gNIo5n0rj06t%m$6cX_quoO)ykH2;MmkYc%c`@QT zeAjWd^zAlrrss-rG_}G3)G(;How%43MS&NFW`4copX4ILXf5(5NdCqMrto?+2qdK8 zy~I~dVS6EVqIA(8ut(RtzV~`H&1k9xTw#DlA+{Nv97E9aKpiitd%+AL?3Xd}0`fNp zVNG2>dElQVzn`~6{)qeUV(hl(ePyPEO}LA5Zmv1498fnEOqp^W363L*=rf9G0gvhs~gAJeFVl@(6?^F7bqNx1!;Pd(y>6fYrI`{qaa?TB-6467bf2 z=N%7vzjC7|1i?ACSnYT>SwnP{mJ3;pc&3DpC{Qos@O$jm^#8zc==k8eKl=GD{#XfZ z&i!*uqTTo2?*<5O4OLt_k`c7RBDQGy(BaAAnwM18FvhRDMVCe|cvY$FiLmWjYRt+F zgsBJX;#EZRbxm2rRtVGv=FS(%n%ep9sO1+S%hJK7Z4p_W@HVjjoNkC$5%JXp?G(xi zX@>B2o8kB9R4KE+F+wo%u2%Phs18BPD7ms0vmYa1IJ1@r)tx4%;J|R)vrDHr_at@K zQ9exOR3R!f{9G|le6Ko543R$s!H29VQ_GNbXQggX@KsRx6 z{5!4$<^auSw*KAL)7%V;rvox+r2PlfT6@D9K|(XEZLc4i$l-wfT(Hrj#()a@6civ` zL-ab6A$E0(0Q*yfW4Gjw*9U1^{;J3Det|#|unl!usR`N%=avw?DTc(pJ9AKq1+%7f zoV>;r{LSSk7z9B(qQmEWLT@1E%a=vlpQ4F9A34dI=5c0c%H7KQ&%Jt({m=E|+RPDa zpVL@Drl4=%g7w4|_XYTH?7dno{9G9$BS}W62|j`W4Nez9%y4Vf6J5_${Bvns;;x7_ zt7dmMr##3D5>1K{rI8UHZo+Fo*~jmCamh-|UaZ*dx_!PO-36iYAKOViG=tp61;bKK z7=}|{T)z~7?2R^5so0SiPOpIbrDNVr%YF8~QoJ2Qj(JEh&JvNKbQH663LC%7KZWf^ zw0s+u+K;x}nFjXAT^X zzwmf3?)f^R5&~pIGoe3J0xoKAWgOpkank_fASSv`cs6gKq4Ubl`rQq+59|eY?X+gC{EJq zjR`H@%Km;e?eb|s4~~tE?Mcva1Ox`YD}0xc@eB-bJuIo;RT`B_9-9A2 zttMeQtB)5mCPlrrD0?zVYWlSLQ5(Lom3k@J+SD#qJw1S%<^A#EU_F*yj$5G^UL}-`Udsjm=sFkyTPi;;@Vh1F**x@Ao z3C@ZL^ubqTQeuz?PXHhl~d7^dG0y{dg2Wdcs(vCRJvp!v-MG;eFFOAXW*ez+wOZod~MYUWOLwGmP> z9I5jamX*8yM=UlZYTD;@PvoD+Gd*fkl2k&mM+>Bi%^XCIBfZm&Bei#;NWTa&y>kCe!%|BBAf z7jQtJQ_H;+zJAK7u)Oc`xtv8ZAa-o%sLl(Dr9e{fw2=0Wl1+h3zni{ZK%z*O=tx05}9&+nYNj8=WN)eRz_^@`Zgp*(LOKet{{`M~$jK@9MpzLQ( z-JB>~r0#+hw$eZ&umER}r%xXb(Ht=UV3vUdP+dv`3W&$`-VHsKU&$e8mt0_77EX2o zEGPwK0<3GSsom9(E6n1sVS*)P7 zH{MP2|8LFspMcb<{!ftlPlJD+?FP@qRS~T#!d1kAr&|gAVttD|tszy%O(&nZk=7rI zFI7^;31B!^l|DF|>+k5`m^m*w{VnrG-Xu9I7ZYRN5OWhDL+uH$M7^%h=FO09U zv-+a>m2g|#45$5sGw2vK8G#7C3szOe|+ZbJ>fpbug zbmlcwR6}6n=#2zVJ!AI@w=D~Z)b5IN(Hdh;ML*!Dwn?lai+2C5X^)U>TM~&p{+?CY zLTW80o8o|w8pEB?c_b2Wzy^nol6>rY3O?`aySOW&!B!)8gllT@noKH`(D78-PQB?> zf%DXx$dFs$6Xf}Wvc;giNUJ7o=M;e`{n&4*D4;svgOkQqrUyj}Yd=6b2to2RsNUy< z6MY8DSi~$>U0=9ki&e~UWY3njbo!9NZA@1_c#5iA^jF%M$w*h7HJ!-@!X?VKoE72@kQO^cJOqGodEq+gco>0|V% zMd~o1*ed@t#@wDWbueWwI1bI6%4d(D^(Ro1^ZXzPr~UZIbcrc*&C6dO z(KO>)Yo;0i4Mg9DFAEksQM6#!eRYr8iw(pXZRo4Wj@QBjsc#Xi#7l@puJ(AgnA=xt zsubkYLq!p8Zfd>asd%}vm^h?bKd5P?7|#u6GFR4LCB>cZWbHggEXVL%D5gYk z`K-lm~`$`c?$O)CB#T5Qmgv z|C18`J9ozT_2_R=`L9g*X1LxAOst+FBY_YhVk8E0*v;_|u_l-t{jcuOulWB%Z2xap zrxi~h@@NQ@B7a%L3J+1vrOOlI4^r|JO3VgO%MKzyEf)pO?s0NGYY7$@`t&6b7!A4_03f^)Re zQ>tRxquyFjF!xX=N9`wmGHU+$Mj7!m^vGXUj*G5tddo#za|{NqAchToo6{{89rC;1 zUPRI_e<-L;cRLb{K)V3axuho0Z9u}fdrQjXWI%T*;;{N+KLan!C@NJn@CgO;cjr!%=4!aS_b(mOlcQSNldX^fy1VS-F z$>5pa#I)(_w9MVfl&z_-FezNISB9zN*g8`zk?kSi?rWw1{AZUDU`G6B&!i@WpB}X@ zT@zTnYY$-{oIu}Dgs7|i7ezZ8+ka8~iX(%Qg8ONYcatSQb@0t?LqmhG3m7Tov**sV zuRO-Gug=pipVlqz-ANxRDLDsQfa9;D;63&~$>G260-t}Xh&6`t;1TMk4X^4a>a%bz zCbuhCV;OD&xsoPb+M)Ak-JYpN`)8KHPqg?+;lE9QeViWRa3-*lQnM7E6dUrA((W{6 zM(m!4MrK<`z_YLn%d|#$5YB3j^_{*laz6QsPw%`x?gFKmLZWpxX&Uc?SZ3bx*aUpP z+lw^NrTz(Ovk+LDVyrythMm?>Yo>^i>$V>2;{o||!{qH+A=ZuKi|Zr! zY0mx9=cs=CPz(?@iNc9cQJeA8 zS6jqd4Hj0WrcRhvQ!_J9d;qU)@)-eT_+)!M+sub9TCJrOrQ@m|Wjk*lc4!Y4E-tP} zD0dgw5jFFqt5fxU;^tN-fOr%XbY* zJYBF;*hiDIJN+`Sf-g3kB6MUpAdSe;(%cR+LF2;Ss<-uF#82>{MAWUkf8?EsX(wW1 z2C(Dyba#IBO{MwqWYD(x{LZ9S+0nc(Cf1TaPTtA#4lP`Efl+9%$v$&(a#9j}Cv`XL z^%>Pg8jnOcugupZF011c;9C~DPuHCU=e{~-9?e-#PtX3ohoqsVrY6{r7V9Z(3_LXo z5;+z4E#O!$LwhQ9?x&B_34)XXvDU^(FIY0E71%>u*~K__4!Z&l*9S&Vr>fn#FTa3GTIE$0&SAz&!$&@~|(A%F1wuYytI6eAXo^dG_q6+cu~n|@S!?tU>Dlxw?XjBv z3-`d>EQPku&oRilqKPz^U&YVfCJzmXqgi1-?>U|#%^jiXg3Gv6B)&cE=_-BniRUFp zIlV%ifVPYC+N?mNudJRq{^1XJ$7x%dw|~me)(UU>P4 zd$%gNO#`FTIvy?4yfODct-JPCZ*CnvqBpP5)p6gLuGFMwL6fT3Bhj+lR&Y`XHSION zUTo4m1os80fE5-1XNR{yJ^SpLrjFQp7o0zh)8O(Sr;(!8&w`RO1om#1eRTG|!<8N{ z(J&UH1kkhoc6>`XDG9@%c_{$#+ljUk zrqP)b$&&-~(C56+JpbeROREvRoyOi7>mVuzmQ*=P%tdCraAsBtLf7}!c+lWK%lK*{ z->}=31~6d-2i2<^@^e|Qo;@?3GIHRCedU(j47hPo#Z3wIx5|Vo1^4HK4C~M{5ya z^5(hBT5^yCFF1KZ{Lm3KB+IKlsHmjm88@oe^Lb>+pQ>p-zM@3IyAPFPNhY|7Q_3Z#OF$=zC&&$M+g_U!Mz>0rbkxr0e=LJ$v4Wm3E!XaBLH6 z4-_mx>-_a#sQcuEiYlC`k&%%Rp@SJw%H;PO_(_gs3z@#X%1SSVabgD;Erq($NZVH5 z`kq_EB4(HW^_#o!Deph`+LV|K@Sf4If1qg=zSkN5j1HT2u1fa>P$K=1`iyS-S4~L; zY~>aurk(s>MWCKcldOLPUniyEQ*g#|aDJ)D^J z^MdiK=L6;e(EciBx8rIWj-E|$9LEDN z)_Z9FAGrSQ3(AZ~bK9Ei=dO9#_eGTuRG$1lFwwvPAyWT#PApJEG02!uJB1E4^bd`x zO0SiDsrlt}?o0VcZfFnVKO(#(;d*Jwv<7d$N81p-u`2OttkiLC+l4$Y5G}9Ln~K2v z_sRq*9>0n1Qh#$1VfWn#A01emqdTqoSJ$3@&X3v@;7{ANI2nfrvzZ_NqT+z_+dgGC ze6Ep4Ek$0Vq_N%-^sjZSf|L_N|BLvG) zq`W+hmeQWc#XW~%AfBU`DJQKlo9a2H98)JV`Zq@^b;4Ga1Uc7h*D9y)_vz&Q=}&2e zUIdyE{8iZCSgFZQ7~;J?1ixBM(AH?^8v2(C-f7>oxe_t*3J^&nWVGtSQ_|esoL9q6 z7+BuMQ;Op(^5c1&iT#g_xJXRuG@VtokfH5AJ_yWOfaY-2`?cz$EgC%XYw+3;8VG+p z$I^bY&6VCCYS6Ij5t#MMJBm*I9UV$}F)lrv$3fDmGZxzls${$@#~`9xG@qCWZ9n*s~V*L^zno$oX3 z#YWdwYMCG^^G@ANnR)15^TFYo;qXD_Kw<^9pS~_a#39y5LqLWw*w@#$vKWBetN{0W zmvjb00MBfc^lmy_s5hXE9&SjX`yQo>@Y$IiqJZiTWJvpHjlS@$CwY$=^gOfl@b*6b zQEo1(jhWH|SrW&_Q^OM9=`!RoWP@MoiRhB52;4!@Gca_w(w^iPsO3wgJ|?dhn^a{I zU+X$3M3JLb{c2vZyn0l*D270U2s!l;TfLNbphpK9q9J{P=arINneq;)=UeiwRDzWF zroVp8$teEDUuoNDtmk7aMymU=2*olq$dw2DX;@Pu_$KD_9ub+fLRHw4`7s_LkGPy&$u4`J>oyZ`_I literal 28459 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 Vt_SSIBtzhzy0X^gB1H@T{{iiqWKaMA diff --git a/admin/help/img/faq/search_multilingual.PNG b/admin/help/img/faq/search_multilingual.PNG index 36e478ab60ce25fe5983e4847a52f04858d91170..abd8c1d1a809faa2c30308f627eed5ac805cd7a9 100644 GIT binary patch literal 9490 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 Z^Rw0?w(m${CX@pJu%fy`v7E`<{{=C`u&e+8 literal 18198 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 literal 29138 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 I<<7(Z0it-Ey8r+H diff --git a/admin/help/img/faq/user_defined_joinform.PNG b/admin/help/img/faq/user_defined_joinform.PNG index b670b91da681254d7214d0be2d57e1e1821e5c3b..167e9292bdbfe9aa178adfce1fc72e4f5974105c 100644 GIT binary patch literal 10864 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 by63txrPwCLC?~im8FKdYxl`#%IIsT!eAp23 diff --git a/admin/help/img/image001.png b/admin/help/img/image001.png index 733a0ded143f71b243fab86ccf82a179e9e32a64..78b32a669bce1c08de3a647f4ffc561729a5aaab 100644 GIT binary patch literal 25226 zcmbSxXEW`GXweChXh{Tlv|#k!88XJqAUZ*U5N$$4 z8KOsL^xpZr@89p=yMCRsuXEPg=Un&N>%Q0Ckx&Ee8-RNN3JQuFIuH#Q1qBtHf`VF? zf%V^WUhtRydygWOJKDpdKJm0-~ z^7P{1_+sbqd~54`VdZpp_k4f#E~+uA?JSFdmEpOZJvHnz{ayu23XPbcS2 z-Z>6!@1A3^*xo;TE1PElZbLIOr#n06KRb71Wn}H_9rg4KMrV#k#t(P*&%1u@7FMml zu(kiyyEiv`y0CUy{dME_;K9-Hg_E-@dF`~QapTY6{>;kBT z?X%Kvo6TK&1_sczy|cP+o0#%76BDzs$wO!OP*>l6+n+s5>00Zry{gvj$(iE@;?B_E zF|KZ7W##Pm$YJ-$!T8uoecMh?Pj6+_{@l_@-^AhK=IO}rNoDhPL-STg_wKijT`5T^ z%-8j@=FREpQzIkz(9}_L+x7ryzxnrWYx_=q@#??1LrUv2$3sG&;YeYz>Fo>*zd+k56oBYHs*` zP+neCzrVjfIXN}6crZ7+^ZWPM zyNeYT3JPmY9Sv2)yRo&FpsW0#_z!)Kzm5N&tN)|f`2JJ*-&eaXYgh>XcLRJlj2rJ@ zp|$akPrK;T`8KZbKtHS?JC8=;qBr7K{1s zIc6_o&b3{&TRqRug~uy-8c(*SUJFM4f8XO>agCxU%K^&c2SAsW#lfxDT(2mZspIL)pN{^^i`h{$0# zx^iP5*5wSS5XY$?(4dHT@Xjuc(QLm_*$A!=Br5pxGWHS5T@HgYuHYBHK^et}}vvuY992 znjlCN%#v*RD>TAZ^hXy@-IR}*Y^59?8}Wp0&94d`lP_@V;={YJ4Z*DNb}Saypf;;CwL*)Q-$2hq}1#)`s>3(On`5ioZbSRxXFhD~p zAwSR7)<{{}NfpPZc6`DF_ZNg77koeINP?MZ77y%qqRl7LU86I%&-4b_I+F=mu)C|T zbjaiXJq%AaGLXt5>+Jl+>>=6@p2wDdDv?pbWDABB$HCRrJL>|$Sn z*^yXcy;xz%1w(`U+MqLW;S)C1J5?e>jvxq6Rl-X=DqOprbNR8EJT>Ty{Jj7JGGE;K zaU#yAl{iq)8UcXo#_≶i3urDaM+JsIMB%v03>%3sGYc9gA#pbvLQ?GkhRmJ#g-c z{D({wK=Z~EhwS2DFp3xGAcP;xg2jmQWh@Hi8d|lyAig6dwWxn6+f&64DKE15K;gA{ z_~J1Sz7mqFCfsQXVJst+o!o<)trQelaH{CveQ!A%iZxGiU9~VkEL{rcz43ulXZ`w$ z@N2l47IwcVn*&0gf0&}d#}kJ0hP^3#J+oBHrPXsK1vEP;LH_+uXjC4hI z=Zt&Qjj`wH`!sn|$jV4#C3JM1hHALs_fkZ`QG>}^z{O<5!c$m|R93x&2I*ra(Sq=D z^W?-l34Bi{(impwN_6yrkC(=w8vDHL!^9mX5!SF_X8d_znH}*q@&u!mDHm|MU=X^m z4PRLP{EPrk~X8&ce~Bcos(>C%J|u%eqIVJ~e+#>gj9@ zS0A^O=okGMc#~WC`_F7oo|`Wg`f?7lvz|RBlU=!`^E4KccK8KSNSJ~@$tYR;#@ne8 zqsfc4^+1T@oW}?#V{wpvb2II$vZ0WOn^IPFdNmHk`eD+43;_W@R+>`zB-D$mg#8Kz#?>g&JxRJ!ieyRRUG7`NPl&jx(lozmWy&iDvF?AG{rW_oEup8D&J1}WCI}oN``8p(bl#s z+zF05rzwWx%122dP@Q250t@p8zWL*^`H?3|pmeUSZSM1KbLh*% z@%51A`ohn1ZF8y5hhpMl<6ic~#*NdfB0jcx#J-J-i!-o)IXP9$L>#)%IrX=`#T*-( zH}lkXW=)iS-44J(xLC|Q>|0nhGF2MAjN+UdoSRd3>y_FLDdXa<8~Yd~=F?O=yw*On zXTg+s#_)rW5}#srlSBcl(g5gHyei@WSNxUr*DCBcL}&iEZV*=7T&?%tNv>?89dW)X z#}XG3W}@9_Rl`tx*f><7d~>l2^DzSo@cBb_!yXd>ex9{tS+p%(AQ&h2v7wN%Q3+H+)k&J z;x^_@P3D$a7t$s2>Nc+?5O)#jv^y?PVaeIl@U#1;`wKPAEL{~sdYNd-uhrGn8(K;x zkU#!PYq#f;lXIAp;Q9=R=Kq|LHUKD(^(C$71?XPRdH&9kVtL{@P=(S5zV=3yz~TkUiR=x`%xX)^q4nQ%I@;*;WL24*P+ zW;?jFxEwM~?#Zd_0JFTmdm893dpwmuHU6kOlbAw?0VD+LUxWQDQ^BBrZkyo6q-OZ^ zN@wYMvqQk8TZacD0Mb$@7^d~^;CGmn+brhD+SPGg#Hzqap}q1QF7o?EOHPK}sD=J2 z^0ZxkOn3d|s;v2`*uLy-4Nty&ZXEsVt2Iot4QIbL#)M9p)&FS(5E;fQEFM}<6e_@;>GcQPz708j z+wtkXwULe<2zk3M(dl9(kA{E{xoFxeT3PqNZlFXwNnY;G-R8hbCKCS1TGmMnTN$ty z{LsZcGc{1JJF&~3cR|Nxb@OzlGhAvz>Z0M+xvyU~VOU7>`NvoCS!AUHQOwNv1wf1xv+1V)43KNDL1 zuH-;u^SPmS-m0Pe4SJ0EiLV@8i`O~XJTqH$B-a^W7aFHgOx~p;1OrUr-ErFMQCuRg zk3&`bxK4);-lo}*`*`42i95gkX{gpk_H`7`>&>szY)z9vlQHhHdS{I8a%)L>pT{z^ z%_b~~K(=^uD%f)kl%Dtw2vHx8f5QFs{^Jh-7~y#x1u#$n(frNlrLAeviB;c#iE1=H zE}OSPH|VRyI3m7(;B=dyr8Llre(bpUF^+TEqqRAMf0+zHoEa`2m;R)5&3(sd2Z}ZJF~7Si7?4U<>;3 z;_JN2$v}kA%sAKHSTEbCn3>^;rqTmimL${LY4|gkgWbzlFR2ghA3Ug;jhO9#LBvSE z_d153ztzW|lrac(G35Dt#d33fmSo(oTWI&92UFE|t&1Ob53sjaE6j_y z6>mHZ0?9UsCS{<$uea20-6oG-$xE;Ef3H}ZCRNKO6;=*w{3OFT-g8#`OV1n}tJWk? zVs0LD!boOQ@&_gnv7kAasvp^roEjH!d(x_f{laVRzK4C;213D(eK+axlv-`{8S_btb>{MV;odno*&h{3kWD>A}Z8i8=6J z&r)(q=|4PQ{f#Af?wWS)8S!TTU@6@=8t^d>A{XSEV)9Yl;w<0`Vpl3>b z$y@^W@^BA(HF7i(K>4o0J6g1asR501y4Gpr-hQ46i`DdQfo{AXr!Uu+^B>*5yeA>c zjX!G)3l{{J%Qnp$(sm)M3AMHKw%~&VdaPz@Uf_tw3$eDD{`%Q_m%jAhec=z&{i>;> zU0>VncO}<>qK25_$JFmqss(=0V*yDxVCfo~=shU~&&1Xe1et-n5BzmK!MTBk0XW)7xK+sMkb{S{8;rC=D6>(onIOv2K?9;nz~%r%NzFMR$RcyjpqnmeJm?KOX0^+x;{53Cv_u`me2 zKeX7jKN>BOphXMAyS{{i3IPVRSh`?huJB{@ukXzA)d7blR-(>|y^Sa1+P?15K##y% zwK+A`)m&ntnKOK8Zo`bf18X>H?}N+J?8(!ok`6XU=N`|7+%l=hzca!cEj(67-=u()(RqXmLQ;oXLZD2QeIN0H{ja93V_wS|meq$MTc zAkO!yQY<}H->i0QB(cxe6 zDrCxpF$x%CfW52cY7P@#=R>E}DF||A{st?-daT0k?ppr~i`@wxN>wKqA+eaJg>9o{nK{e~a>t(vQMdm)Q;&yz zwmo`?$e<)L__;ReZsa*#kQy&ExpVo%3&-d=#ko8+ZCA};FMDu_8UI6ejIwmZyy+ak zcL~O@c_9%tJh%$4=B+X9?crj#+5a#tZ}TR|LDyXu3~%kYspS*-)=5&lh!%~}i-WxLY{y0G^FmsO8<2flRI)c_l*o7AvOGXI5D`_^vA?jHm_F7> z126LH`BQtGzNn&SB)YG%Ua=wYKnjUt12Mr(vMP^{r>Ip?T&$s>`sJjoPH&KFMB`71 zg3STw=s)f58t%aV277|lq)b)M*F9~$_Sf%7WsOf^45&qeoaC(pm;VkPzF9}`D2Nw1 zG%j?z4J%2PiiS}7%ubzeN50W@kws#@PV5ykmEIkjn@&?#lA5+1hw{IwwSIXDZAwLU z@GWZ)^s>lmu3r#A&%~9r4}a^Lo#-bh-eOf@m*)PGwY4z)*i6nL5{7HVxKct`z_*45 zp$c-<=)q^XyJ>$j$K150|0wwMT9%#;ph}b+q+*03rDIM_ZyeMZWI28J(_hflAOH{z z4f^^dq36sk$?C4(OZ0kOzr#C|nP^E10xMl=`9}Ieuv~%|-aKA{L<1n>CHL(}<_hYP zdWDb25HDy~WH+x5Vj1t&o0QG`jbQqIVkzg_448DbOUm+k@k55F%#|oqBw?6x{oz&uPBL+Jn2XfM-e>V`||q zUJwX&ad1t*Mk)XyeWE&+<=T^+ik>AD#w7cy=KYe~kxJJGMkGIe$N+<2r9(lE%fZPA zxxrx6y$2_JxA1P69_U$gvp5{;_1Je)eA0r*v}`x;#WqzDYcrf5t%A9Ego%q1TliEZ zI#}3ZC#=bR4Gut7!tdf1ZyUp}f8^>_3heQ#H~a98WzTi_PC`@l2s_)JR#?eDt-SSr zv%K7v04eVmx=weo&sgvx*nzvh(z2J|#+4H_aO4D7Z(q19$@Fu=6>*Vnr;XnF8h z;unJoDntXM(?41Aj?rHn7o40yW=5Lm@_jzvs(gR)O{E>xdWXOwu9-#jO7uFQ`=SkA z&QJp;#HIPO9uF1We6SjfkU^>v^jPwqBKxhSj`05_5ucLIzJD+`;+7{Z^ICt2?J{|D z?Zo2IPRj6P{HGj6b_LONTM12!;4egcE)57*W@J_bO8||r`>>pEOg0wHyjnv%^pkkZ z=563*aM`V|d3{+TJxAa~C8&HZ$j|}iJL6b!11U~q&&URyfx9OK``&WEC%%LP z9?dMUj9#$Em*a_eIs?WlHe+&Cj{YPEf!(uUo_<(_+i$HLqPW9=_n}Orr(W;r*4vki zBth0aR<^xQe}}y1Gvkiyt3ad%-@igImVz&;tq5hpw@M=7>HB!kLcQL2P>`zyw!s%8 z!aFTzXa2(x4*#||-uAWlCjQ3nh9FgQFNwNxL3hj=v?(xB&cW{rSAuY;3h)IZX*r%3 zZVRuV2_RbTt|NxIV9%4Q@F$fDMszUDor5phJcu7J(L^f^WqrIF2o50i+##&S`rjQJ z8qf@8Qff7TGvSH9ts>an2)QGpTew{QunrbA&EvbFd#FChE51_&OFvv3oUj_@Z?0{c zMl(qf{JgWLPbk`70|f+!BRpVOk&vH-vyJ)*c;S3<8UcP=HU-arXQfN{9xz``G;F(l zx`r2NBVA*az!5N5J2-Sd!F-wpbMPNKueHt+NoJ6W@2xPz{Yz+x@z5NHL(Ie{Izl?! zh(Z^AZ@RGl0MNj{TpKHv^Xi{3<3^jsgPJ;ZjIlRaLQM);4KXV?F_L&1Oa-*=h8Wcz z+;!6JaKIbk;W6?}7S=9=p8{bg7Ywz7?5?nPa(VMhAHFFM3ReBSrhl>$mK0I&g$jwC zPKFaUe1#$dq0FDn(Tic=EvZjn%h5NTkUzzqy-wVe5+>&1;z;7E{LKhk$98*N$KaHI zY1z5V+hXe@;-qQ(1R>h$bUzpcG1^Up)7lk+bM6Pt#V$-$;2-LhCD%nD+IR|+95P|8bfHS5RL~W_GT$ z15Io^s13^w(o&jVA|~hkMpz{}5& z_5Gbi#B`%h6#FB|S7LK&eFnPNl8wx7!Z8Vw0n>LsHM_mSZK-8|jSWqK@39OdE)yf} z5v4(30%u9|~hzPlw~wf}pE{Rhiv(tBgs0IfLJvMz#IVh}6^YM(Pr zuoR@PQC7qO&^BR=Ua{n%y(cNBG{zIj%bj3*_eJ-^cB6v(AbHgLcQ{-i!oiw3MI5{e z>%g&tAqCT4(YZT6Rmwqk1Hw9`(!1!>?`gP(K*V=gKn^IyA_dqj>b{{rafE%AFVhRt ztJ&a=6{8P@~A^&!`_}RN2Wj7RLMyXN>&j48v z0D|f-il$W){@i9P&P9lukQWdcU*VIw(%>%nlqv!@_Q34<1pAY{&GVY}_VAi}<>nS2 zx~E@Sxw}#OBF37yg+=Jzb$`iJ)o`lOBoyXJR{jaklK72H|FF~w@S{6CzDag0Ud^_9 z69?g`OVqh__sq1tpf#O-C9l#p;_K}keG0y*0A6^h*%#_I&l%(C94hwwtKZ&p{V%+sn_-{;(Vq9e4|?zAmfW4M$`^+$lj! zu5YCmc0k6Q(Kl6!6pRbl8*e-umxx9dDpbGJ?!GFPiuoR1V^+1EHG2GLv*_Kb) zs(?rn!JR_dQ1A8<6rz1etJ6>hahK3|-~t0v1J!aZ&LZJAm{MR0>~N_zc9QvoudLrM zx7~7Xcul4g5x1hiY*_49Pv@$gWVm7h-)D6rn0vx!!>*moyE$+{cy>x3DvxxT3>OhK zsHcjE_*i?+H|5BU z&HVcSGGyk&AurE?eEdVRi8J1uzzR|#Pir*k+SN9NdgO6vkkt=f&-COBG`fO?T>wVy zFFC|qHUGn^cEptUfVc5a5y@e?8Rjv78gJ?p!=b8&cBq+aTh42PTMo#A+pm*)y@BDr3@K(IA=W$ABx06|%;r;}@$p@MRi~LartjFk8MSED- zl)>O=Jl?(t(2!qXbPb+ceD}u3TztQJ;qMTN8ob_i4+q{b=fRGm#oC?|fj;&z$Bi=O zi~{`ymaC>wLRVd|C(uScxM`mPa<#@tzWq(5$aaWbeCq1Rqya3G+%odjSbl6H?%tLM zONsFSRn{2#fcu6R>odi*H1Fc*3dyL1S4ll?nVgoou$d(L9~Mz*uXBpU95}K*m*Xu0 z3uE6ImyJ`&IhA-MKYKqm6swL(C~GylwTk`pU!7MMW8gBZ={?N`>M5OA>qe7}F1rsn z4#B^HASS#1xR)XaoLglmK|#1sW?Z>JAa@Hm-LOS&m;@=)&0K!fT6+Z3jdqe^#oj#L z5h^4nYBa^;ZLb0UDA*QgyY@N2*QO#%v7)n6_LL9Dx!^oTNA-clw#J3{YV$NOhaq0D z)GPr6bI2%IoP%x;Pq*mZFhF{7WHUU^xt>R+$nAC9wP$m#$$r)y!f#kBA9;9sBJNpVySXz$JROXllTh{_d0jD85xEKwraRMc?; za_Wh2y#LYQKc@s;UjnTh$$_Gqsg1qf`Iwgb^v=9=o5l4f-;;ky3qRt3T4U3v;so

      Xhkx1f`6px;HI6$kHi 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 E0I(QA;{X5v literal 56443 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 diff --git a/admin/help/img/image002.jpg b/admin/help/img/image002.jpg index c0ac026ab9e0877869d59200f5e44a2543004617..4fe8521ff4037a62542d172de3a199b9b3959e42 100644 GIT binary patch literal 9138 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 literal 20613 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 diff --git a/admin/help/img/image004.jpg b/admin/help/img/image004.jpg index 16c08f779150fe3466d3abe95b1f0369861dbea7..6424676f2c4a8ed16cfb3eaebbdb4e7647e7c2c5 100644 GIT binary patch literal 18473 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 literal 20369 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 DueevrCivMZ5 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%0Amu_z0#U;VxgRl#;7 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 E2Zg#SPyhe` literal 28263 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 Rxqqoh0NY;R=)U~_n*h&cLn{CP diff --git a/admin/help/img/image007.jpg b/admin/help/img/image007.jpg index 29be2bd5c3879eb98d80457a052a98f616ab4581..d2a6f416309b2ded844d6966d7ae00be7b1c8488 100644 GIT binary patch literal 25060 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 GpZPZd=lC!H literal 30672 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 diff --git a/admin/help/img/image009.jpg b/admin/help/img/image009.jpg index 1e74d8cc441614b44c57c0288ebab7890105255d..ee8bdbcacef29bd26d5bd05e7b1f24df8355ef61 100644 GIT binary patch literal 16367 zcmdUW1za7?lJ6WixVyV+a1HM68X!nWaJL}A-Q7L7gy0e!0t5+e!4n|3TY|hp@_qN- z-QV52cHi55HGNvD{#{kmHa#@+F#oUypvz0kNdq7d2r!0Rz{3|H2!Mx$g@c8Ghl7Jd zK!8U?#zsL#LP93M#6rU+AtWOuAtWXyr)H%ir(~ugCZ^|QU}j_I;^HEs;}_!Nc*@Gj z#Q{PpQ2nPiGl|WF? zuyA0QheZJXH~(nuPod75(5m#O5x>XsHNl&4fa$no_ci;sfylY@E&zZgi(KAr)Ngq{ zLIkG-_vsM@056`-;GIJ!LO&@)g`59)V_y=!?!(`d+3#CWE$=ZS{4sX_%e*dk6~ewMSH{Br9?6>A@;b_6tSKatDauVMbSt6cv00+ z6^T&Il^UH}1E4@>(r~A-=%t7D&550#n4g#=2(_hf%`1u8Ec*c##B1Rgl(cjk*6-!} z+@jqNEd-VpFRyIxz0WAEW0)H%>Mnste*m=bs@deQAFtnxm4(=Qd0jC=X@Tn8e#g;1?~Lkdd&R`x_%BRLN7FX+tPzPi}T2yc|aOIOL8MCO~Yml zgmERP9os{LVV&-#f~%rj3Faleg!soF&Vo?c*JEi>&&2c7=bh#^dd2lPm{ZY(p8&9Z zyCxYfsVHwHN9NUFl@&4b3^oyN;b+H+hw#-(rgoc*2|)Y+WKo*Y@~2T+8)pn%d1;po z7Spor@SSKJ{1DPl+8n-eWBkOE(*f{50DQDLmfGU9rYz6h1iu`*MQg+>IpG7ysVJH6 z{7~SsVslIVKtgDUo$mEt&-?(8uPkIFRB_0Js>ZE;aTl3Rx%UH-V%Ln9-(sBM)QW8nY{s0+?KA*9PGj3G?5Kfr|xKQocEe2l4 zf$+j&+ZJ77P}nU7Ic@HdbE*`Q`3a74`o`} zRY&YQsjL>^`(C|}nK?gL|IxVGC*%N`bG=no{MM-FwHkN(OPbu-$5}#(2I*Z;?*7di zSpXo-tp?alAMXYLo@4>ywBpq8vKZu)qCtKDJY?n?_Xqfx;5*d*0KeuiyBHh@s9gAn z>}XL^K@Kp5k`>rdkOyH=Q$N71G@ZNCuA_ zAd2(Fi!=-lDM}9AU*&fR7czy+W&;)qPhZbm`2FI+7cr%h)HQZx>~B|wzpbJ0JtG8wN(4fN{%DE*7%Hw1BniX8C!CBW&&i&}%M zr}&Un|8e2}8v;Q?fqyNgQ0NdYiEG+pYy<$9D{YQLkUa0mT-~5Pq!-AA2w|lBfY)bm zg`$8w>da;zX*3`UQxGdGdTs$tpO9e*oNb{=`*D6tI;t@K4Fk}Gjn5&&6SO@-c>dUv z5QP9>I}Qvh!I1Z|d2#{xu7zpI%a3STkgj`SIL@33q>3d6WyTUm9vFJ!3pGwvZv@~B z`aTJ06Iw7LZ4Ht}BZ!*JrV77kQqJ-2ekTeo+)Az?{7dtHG5$1Ay}|@hI8J*?7c6Rk^4*)M&VkImJyJ z9RGM&g5ZG%pnGL$ek-3-&7LrYb{UsMs`g!6$WXZGcfH2TGaG54{wiuH(0zf2cCbad zkI?i8f1vu$QxIBqZ&CN#APG^)05k0Z}GuRAA$21E2VhK&rIJD_o1?|));8hyJsm;O)La<`W#F3<}DV(P7^7c zg)GC;|6^>#J9TlJHF3BjsU$CU7Ko);{xyZU?64RdAI@6_jv ziYk6lDe?=MxHIaJq}PtHLLH$zBoqL?rgiGOAFF{npk%8dNTNYL{l+WkLlGz6eD;&M&TiLjW8PIvah`ysCcpB*XAq zja1nZ)_7$@%B*6BTGcM*caz_q$#JT_sq*J&1b>>xVlr0zd)cX*4 z>ig~Rt;y+0I~G?*>%6U8KQTOl#yPQ35hyBz8l5A15r5}RM=u{T#Ou_@EwW=remPE`=yX zeNqJk{!|_+4FfT2g{5urA%n1JnBYTDf2?z?$5=f#e5|wn5;7C)1F+lr0E~@`qzvD! zVlQMR3;9o`%Qs?h*g2Ee^d-SEks&h2hZBrpacl_^&ejq;$c8Nl%BQiK8O>8vug8!g zR8h>)5;WNmD};yJ5RPvdky2qA%;9p6)~T6gtr}HX3JUYZm#$VS_M=a<&-_4IrE~T6OM+j;i9z;bg@lXivq+?=Ok!n~!#_q~gly zp^~G(KLD`JxD4SBcof4(Wyz#&_qCEE-YfGh-l|*=^?S{=qn{HhFne0#DOv4Q6t`VW z<+OUMoeU0;5oZlvZ9{w|j{#kN~0lu9j<#AW*lOVZf^q=S+wg$3dc)ixcTI($>boj50*S>25FFv-w zM^k=fH}yxw!!_)I(JU`WF%E1aY%q$&Amn4xc7bcWI-v?eWN+gyOG>=4r_6; zIeQ69X%W$pg`^&Bb8^+aAIYhHuc6YS54WZsrZ?27##pM-v9&*-o4?YzmaiA3whpOQ zxA#5cNDV!EG>^7Zev{=Xr$kLr){lQo7-!^26t|^&V3~)oPkO z0D4Ipj>w#D>7o8EQ;A|i$uqZ|M$c=bWT3=1I_8kW4AwBh_i5k^FHarG-Nr>y6?|5) z9)N-32LOz^r*%72fMGrn6ooS!&|;kTIZeRSE{qX}M`fbaWt;O^x~_OOl@Ovf*S%#H0yuc@$B$A_g;wi8c%F_wkVj; zWby;6w4)PeWPFxE(8f19JPN+3$5e-cuLYrxnvNL~zo28yq!NH|%G49t$|v7>d*NL* z?Qj8t^r4I5&ZM$Ux%-7UYgZe&UrhN&X#^;&2Mu0PEJ0<-k}gBvcy}(JD9y`FE%6Vq z+O9j>8+$uYV*}x()>YS=$FXm#v^J_c)kwNb#8}|)7lD(+C z;*Sn3#O{Rzhc~XV&I1%2bvw0xpgbjo!ZL#zrf*9~$h{%UEWm@j*9IWpK=V67+}Y!Gp-S&ZFT=ZAZ{iU$|2` z#y7tsUUPdp|J&9-Tj@$i4{RgeuM6ppdLMTkogba%hQG;zY`Cc7DEtBVI^~;cZX7x= z`RoC}_Z{QW&11QE^XW+xahicl+jlqZ%kRIC5zq|!4oZQMgwqp|qPlJrAoEx!RomE; z*cT)VFSI_jB`;NP9vVG{S4{kR!ID)#`K zyS<&RIseA*-ghCO=b6piuAE|2qVPncD79>IczVZt*QNHqBv5xfM{H0BN8*-Dvz?C; z%;0y_$-UEiJ6AbrJ!{Fm$CYuBq2xJA+x{}qs7@~bD|0>%T>mu?rxN8<#p7@iqc_)7 z$#L2Gx1fJr+wvWzc>|3d4hPxNi6Z}`%i4TZ*czLcDgOuy#aLKRvt!_jzGPPip9sD` z2lC4f+Ly#eSRnL*Fjk<~!-3q}{b$GnP|59|Fx2!{L_=2QlrPl;T+t4?phFxk>f$zwj!- zg9AXWS%E8}48i?lVE#*9nqDHV52*(H{Xvzh2V$Se6E@bZEe7~@cL1F*KS8+<#Dq0? z$|3BQD8^4bD56=9Flvl@ymhNe)%Kr!o=6puHn<~jJ~#i@Syi*CtsFgO6A1%)>tGaz z{Az6OJp7NlJ5Ive5d==>!%z>v^6IkJA*;eEeOjs&%}pleJ(=x4Jsf{e2G)`zktV3v-kkHVjKsx6P0CGjk!^j9oWCQFzMdQ&Wa-YQGD6qVGuw7(gH+AB z{S?~R=z|FL?vU5rXKbgG9D{QV9!X3t@6Bg- z(s5>YUc*3s*w!u|n1k(7)2X$0JmP}w(htO&6yLX0O;$5AxeN>3*`+TKZZdAVwwebQ zu&?)nFnbPA!OIp$!fA)B3C9A4sS*VKq^4OI5o-R_EhBoAk94ARr$#&Tq}Ch>BUsBx=ThO z^8mQV^B_?ySZttHmBiAIlaKVS5A0yiOfpow)zFbGu8vnSq|9iQ;&zF!`cJUMN`@5r zFv#ydWA$(D1WSfoJ;gmPKwp!19w=^23576ivW$`!k_nb^3iNBgj)LyQCEV!Mmlt}H z*KO0FteuOcs7a}|Hp#&LsFsm0+2Mm&_nO@;d0Zv)IC$@1_WSj3N})E{3l@{g)g=#r%7zDVJGU^= z^HYj?q8KElcipy!4Md^^>;>JrIAINO#<;pj34x-vDNt(_V1SGy)qKJ24AQi`?h}Qb zEG0KOdy^SXX;xSr)t3FcTUkc`FxlzfJ%m7Z8h$1JxPtfzVst5E&CaB+bKjW-c2_Ps z+x+%%b7eDpGtyEkviAFU(KuFT2@}~?Qp=hb2CV$AX@-YbjpUq86;cxnJ|t{@OMOD! z@)xG;@DTR4!41)uM%Mj$3o0FrAtR=H3=H5W_G~BVW_2H3z#AmPxF6<}wcu~~?|e)p zRT_?qx2eC*-6SIBD+gVVAZN!%%f}dAl|;ft5VnQc;J6!6~Xf2Z+&E{>G}W!V^IA_SliqNO`n5ImOv9mIaL|#pzhg z!r*P|Ce2*vwJ1>dZ~$ztj1WC;dqbzDL&W9(ahog z>@(0a#*G227GIy9P&LLz1r0A^ZLRbk1QC8$V#wpt73%NAQAI(ud|oT^jl zm%lKRf+VhR`h$=Uk9I!E)seZc?QN%mf?Mf;vg3QEFeeaPA{s?zEeJmd543(WtTl{v z_4LJ6*B{ib=Fq+Zeq-P_I*-Vk{gdpD0;kvwK8PySU z4}95imo?aa&=X}-AFNfcfBV65ezDl`;d-*6E!|VpXZK0^QY>Y#ybviuv*l;6zet5b^!ijWN$(ymP67w&1gL)+V%7eO= z3s8d5{K}m^Efg=fHhC!#rjmZT5jth3`n0IjCKM}76?RY~E!_#goi6ycX%tNT+G8b_ zXb(+Qyx5tkb=h4IaJ9)6XjIOAMyFi$UlC~LBo)Xi^=71KA-WW)YYr>#|F_ir)w8%M zY|j^8UcSBmW|_vZhQBN?<;s9F{Z>ak-td1qtI4pSI{{7M(`#+;Q?zv`wH80#(YO*P zphg?9TbBvuznC?-G9cVS-!UTEc>gXwXpRS~7k}QiKUdKNy~iE#tSc@*{g6uHKJi#{ zfK5>t%qa{lk@G4Cm1Bd?>$+3y29fFIh)#+mMxBYB#=IL|P3Hvq)1L6&SA4|dfxE1) zngzVs6`bM1%6vC=)f&_4QcodYE0faAz5uEXt@Mm*(bMA?G+no>B-hWMV zZ${-DVGew`^1aG_{0(9xUXXs&5atFWRxGDYfFaq^Wg}RF5LfvOqRR|E`0W@5xKBB) zp(_x*&yw~2-Fw)t=z<2AZBJf47rPcVtZYwb?RxhBus;1fC<%QQ_8z|Bt!_h=MV)Vj zmvhKv$q@fO&>NtK-GU$kD`{m@mx&SjT?9rd$TTI1#y?=t?%Q2gi30!8&{)vvysZtt zBdTBl8r3NV#?1h>q#g9(>_{AOewhFL(e8#wD9UGPw^0~pGu|2=V?6efM?Fy#xIs51 zJV>Uf#_%SCVo-t<2hW#hLoTpfM5{@k{ zZ6x?owE6^L+bQfd-6;1}qoXla<^se#rrp%DAFaDeBy4zVoOqBec19imRRoWx@a7#d zYo#^W==CvRF;FF1z!hJ7ck~P6kK}<}zR29-sccKcYBvZyX3+};d_l+I8KXhI7H<&4 zvBf`by?|E=lU!r1wb5>F7q(%qavy&q&b}U+LP1Jk;`z0=nQSpPAX4n6+fUD79%UB! zJ-mdm9o5KfkokIAdOl3Fbw*Sr$5!rvO1GLx`(|?*8XIBHkVka7*@QpF1nV{jD_gHg zw=-4C_TX(W`Uw2}YzITCS1hjCouIGhqoIb)An6cYBe2B_D3Nx^NHB~Iqr_n4V-1na z1VThQAROkd7=2{jOVtf&myfI%g?#@gBiP(w4UnxkrSeTF9Z(oX>27qq*D{w3I z-&_3?lk7m4<$cLsAc2jyj#A9I@^iB+8GpmenM`e4y?U;U?D7|OTVQ>}bbLATGdSQ1NFO#13=KaA#ZH$YVwK$f5{f>%e#K^z;oCh4ao znR@yOO7t~~w75nDz)X3`D3G|N;Kqv#*%wcDUPs(-vRHbOchKkX^9*`y9ITyc&nS&!dDCQn zL+f{!kunE8qs97Z*=;dk#Qro9`uPWFErho^UQP5$C@XGBBdTCiXi0J4vMg<3Y)0`T z-H*q3%&pvtO|YY7u`DbWCbmLRT$-dqs1Poq-uOg2ij;98uwS3eqe2=D$D(_q3je9r z|0IV+6iHkvi6JL}X0jY#`S+}W$bSqL#LQ~-sYXoZbe;w)^@K?T zx)DXMkzMS>)?C%|9iUrBi;^VaUsQ<04!0AH;q*>xexuNbR%hkv^sOtCwvlPhE|_wq zXWQ^_A%x?D@=W^bCMA<1Q1Z-9d;ZM2dYXinytL?{A)!;kkD zJOg14!-LSJSc*PI9cf8Vz%4V_mN=)DbFMyCo;cE6B=gVT2ww<->(LQ*%S!aK?BWF9uZo)Q(s*;TK}6}!x0luz&<#7;sLeVgY5LjxVhKu_#1D@ys}&d^65i$bWL zy!N0x>*?!jy;oWyNX)w>>*m>-x6F0rxxp!}8ppL`mU|1aEn?45J|Rxoh<@o}&RfI& zCM;2&6*}mu5qE=H?nFj0qb%`Fplr}P^!X1;ru?wCA!@-h#e57+-`b>jZc{CaR}&7f zznmHtWWG_T*RUUQi?F?6olxqeS^WPR(wj@r6^G1=6v7+7?Zf*sfHK=6!nFiid0LFb zvM1YB8E!Ub@#-efH$sN2ON5oKciVHrE8r(PzJk{*YYQK4pE-)a_xF~07y033>PI1N zDoGkD!Bu@Qmt~#~)iVt9VNl6s@P1-N?vyA*`oaFTgMLizIN}!e1(cz#Sblol6+m| zaZ=D4{@kUmY|1cQ>J{b5(j7_|IE#zz7&?dsu_+8vu56mkgcIocd<9>k?eHpLH(jUc z*P8sdKm~Z@)yh^Z8;u_M2TDrxq=+9dWb*rf9F0$}RTws(mLzS+1co2qtSa5FU+sh( ztF8Z-mL}cETA^@KfUAZ6|pvW!N96K@$Z@UZAHM4vt zn)pB&!&rgt&n>#--wwsF&0Cz1p-S)NDUi5QAQ%wwTJ!mxrdqd@eS@SuW&x^c?gP;3 zxGgo%(hYZl*rv5QjxGj97bQo3079|W&zf!fuE1X^rbB4Mys+%Ld6HU?y>P5Fl$fT2 zH<3b3u@~_RnmlTrJ_!Qfm8(ZcJOFdw-on}s$s(^N#1VATyo&6+c_S~j&`I+$aTWV} z<+w=8sX7bU(hY;ENZYA84%a}>ZIa*U4Ff3iR2`c4TjjAY1VE94F%4%|e@Pn|+-ENa ze(H8qWEFBgNzdeIYb}3C;a6IH@qsp>^RcrWzJwnlK}8QD9_eT_n5s$6Cii10pW7E8 zwRmY`>tZ`dnZ};Btvof6G9T?ru%I5W;dmw%egKk__MMW5sxfnmQk{~hh2^5qNBi2f6YO#BnObn< zaRNnxxzC)Q5z1jYd#npzBxI!>Rl9%@Bk0?Y_GY!BOt)6G5^9czI}<(i+Hjekg4lHUC&PaZO?q}pn}(SMORf(LvNz`PGQ*7O z!g}iQr=OByQ#9Xt*A`K2CNq#Rm;D`~m0)jVX+$_GGxTFVrW;uv zCD`%|y>BN3&c1B_S}7b^Ass~YZeKNeIRb;U2zjbS;wct9PSpeO+F~sO*a5DJn*z8l zTqejc0#Zv~Mvw@64g)d$?pohwpCufl01TNUvQ)?<=*Yb5Ju;^F3fgR+7 zAEa^pSciGOhkz!TTD^HqD`U*vs&dx3P3vV{_F@Hh*5Qm^<+fY-=qtenZEODJ@;be- zga0{D(_efVaVsDBZ~9b5+Y>b|>fszcK&*0)mg4P;Yyg<~6*0`MR5ss4Ya4iftY8&3 z(@G^{FCUIgn=v04v8w&L#jWRfM)*$xc0;zxUcxj`_sp)-oJFtsMO2as`$H%(P+>F;kJiNpCwd4Gn#;fH`Ub@Rh^9M2F3!g z!W3Z%m`Uu*5N>$6NWYB_N0?@<9;(Kp!?Q(%LIgJp6bCUId{WKq?$nalJkV~7D|wXz z(s*TYvLHluhJN>buCW4ag~Ol~E${=8KL0uF@h-F?RxjaPpQUqemNx+kl%M)3k;1Wx zr8WLjtPcdP#B4MTcroxIFS)e)!>(=SaqySqO7zpMDQDS&5h}@5LtzhvF z?~3B}$8T_DsON02uT><(etdVwSj=ned`r(<;uO^79vzp@6NpAl&kWtd9UU^EzOjTo zf_NXBkl{aks-epNM&1hU$&ixh<_$wBaVHHobn3U_Jg3{FY1HR`g;3MSK)r=MT+6RZ zqPN*ZB;pqj8B>K6Xt~JXFpotJ&N{MG97KyNaV$c8h7nz#)Q4>9=fUgFKr3$=*tPiN z_`f+{O~5-WfX$pGisP!09s`cmct#e}4|S8Sl4 zshHnjRnYgNQX1mN`MCjd>(s66E z0dty&=)1FDL#;}1I>5cvY4@KZTslzD(Am87Af5hH@}ad+};iw$~qFyy&Y$6w+7j zKD@BC2*P-^I(d@-c#3h6wG2mi!Yn&OcY}&AP9%eN&;M8tyNQ|#mp$nk&+SxLOxy;^ zwJ+Ep6H2ixbk2Pynd5Bk!dy|Z_^5)>{QN#$<4HbQie~TL9Y^tV<#(`% zK1iGbJxtOU6|#4LY&b(BZ$_`kh;MQ_@uox&z6T9fR=F9CuXj}lYtXbZ{k=%wQSjf1 z{+`lD9s|FJ3O;{a##A4gfNbH0u@{spP&9L(tGzc>>RzH#+a5`VynM0bi6Ue<+SwrV zLE}rm_>qL1~$1LH9EZ6Y&>;3$J=n;7obOi$~|k8eVHx>SgNO z?VxgkWiU?=YL*yL*AOmCC#o#Jh?50I8MD=WS9D)=HrN|cb&q<|abeRqo06JhL*P+> z5V9o!jvIgy9xtor%L^b8@}Vp%HH6H(YrcE;p8@5i9i@qqN|v+Xt!!7=YTuV)n7|IA zj2?Gyo)o{q8lNwQ_tKM9TIA+4)I#*7ezW=iHbS+L@iJI5l>pU475}&yS9*?l(z@o~ zQ)*YXFMT#&T@W%D?O1BvMIkFnllK7hAW9pc&YQ>%Z^F<#Ny1L*P*qpI5tCE+cZ;kd zjZbB$+!op%fU@roKw9XL4(YUo^=uQOY5Vu=6?#@{QeshHHhX7$*lmOTFv4!WPg|6aBS3_dA<%zLuH(APRZmy*5q(|zZ2&Q>keBXJ z-tHNN$(re0>evtaD=ze~y_|44Ox>OAP9hT}X!6boSc znsOtrrnMs?)#QSnt=Bza5$K2zGSf6~3HZT_-Vv=bjW0#pi1y5k24@>wynGG1KLmT1BNEd z4^TMRyIQ>!nCXry!Jdgq4}kT1o`8^4MmX&s!3)pg+75*umyE5tl|T<#iA^O7RtswN zZ}jNp=Q1D2(c!^R5!VizdH6@@d1>#7K~Pb~#S@*uns;s`eK}L)co@329)jFe-g!vw zOk(eT&;?;13)1xaVYym?ss`TBgRxYJ(aE}nk3-IRDSR~S=#86t|J)O2?>#Odef_W6 zIojvSQYhwhd1g_?y{ z|4EpseAlr_TsAVV^$=d>XRC%+tE9+nd96>EI4(cKX@K;5S&E4Cm!o&7u1h*2=pxE* z6Wi*^?LU5Fg)T#COW9`?yGvLmvY*>T|zoVjSCd4Vx}J-!zU1&-MkBp-Vr@+oZSqh(TA8T!ipTbD!5x>XY{H@ z-jt8pnO$gGJCl{yJxjaO%2*oMt(@Hw(R$g${^Oqvl5Hfmcv2DIriwJ^P`iQ5GS)9o!o*r`HC0fB>&@``~~z6?nI6U`(*%h;F2BRhWEa< z#A2_-WVsz0pN7Nhp3J~8>?Kl%;KL+qo;L4TC?n&CZCVyd`~yp9?FyfP-hm*cd6{0Gp#@Z)zh{ zy>fpM^8nx-jPGAf0M9fo-;ukOI;45}zq{!S2v%FH^ntZ*1ero>>&Yn-|?T9%lJ0@z9|dpFYSSjCKDcnjv_o%a7jbeK9;oLp2Q1#~|PGE{}K~x8-`f&enGM zmn_P(o!i&g)1qiqGCrad4Ya!ja!|>F4*=4=s=P5xUjV2lJT+q6b%G1eRz0;CQ6T9= z%KA%ywLR}@fN`N8H*9@tDb!YEu%prfchOVrCEmH(auN$AQ9grAbvUB(G<~t62Oz|_ z6pE_wm4)L;X`@?vc{W@hJR&xTBp-lNz2)@zL|$4A6^8g+p0xg$XNg3WO&N@6YxbIy zp-7NjWN}5#Ofr#9-@G|&o-{P_6@=}oKZUBswMb_cAMir*M*nshM;{>H|aWyv0cab=-W)s7CfDlZ4sJq?d)gwEjx$Ng?DkSanoyifJ?Csj?tuNzpZ zmhy}Th<2^#D5B+6g1*RH(4O8L2t{@Sw*@Xjg$k{^Ib9PHj(aNDd?d^AOspTz*DNe7 zC(!{n+K4M!uB)JN%lY7Ya_%Z?O~ZPD=s}}(@n8`5EnEDvat!Q6*1}AEO%$xMI(bAl zHNJ`IWj}lv?ENN33+|4xX|$>@l)Lc-ZZk^O%Bku((_5j?Mm@RmlZ7o(?NZG%lHA}G z&(2SD3A@vm=eZT!R|es%VD);fg?kgRx$BxL4a<595SJp?!eW&dWANx|v<3p|?(#<4 zC!E%7*$iHy=%M*__l+*>*{SmI=(hJ`xSZyPGk$cr>l?-ykM~4AGfxsXzG~~OfKR&wxVL)MGsX?QYvvW|e ziK?1ViuwKiAPxi)0rr%5QNuJux->LOy7rPWt|wzs+Oa=908*bJmt50Y!*|HFccG`L;-(nz)r-Od<)bfTBy< z4*R6p+X1;hidji-?@FV;?Vvo@-t{Q8$#^bKS_)n&|Ygv zO-<$4qGNjZIEVBA}$OPMDxoGx8fX5TWVRklP7r&V@L smP1-X`NbZ2%*5H&%a^o`h^j^KV%+qlZG^93<&K$u%}KIKh%*cS2VAcnQ~&?~ literal 21563 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 diff --git a/admin/help/img/image010.jpg b/admin/help/img/image010.jpg index f4f283915301839f67d029a6cf7a1bee9e68769b..160404ba75f06133cacbcecf16cd8295fe90d90f 100644 GIT binary patch literal 14842 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

      Y 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 literal 18135 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�%R-mNop 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 literal 24916 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 Nte`Gm1$+MT-v9++gd_j} literal 15794 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 diff --git a/admin/help/img/faq/apply_multilingual.PNG b/admin/help/img/faq/apply_multilingual.PNG index 9d397d1b1fb8e3b85d3cc2731eb858e9d2167027..5649282590a03ead274e81115c5e5b8281fe960d 100644 GIT binary patch literal 1495 zcmYk+3pA8j902f_YS^7?2VX)tE5J!j9^-?@+ToqPZH-tV4!Z=!?!DK*s{st5!^ z&DO@s5!5iqCpIX9vZR8w3xQCA9I(#T;1jdT3xgqHyeJqF(bu@QUJvp$HXJB96KmOr|!@Q#l+e2QDiwuYA@}{h=DDsi~>0t*xu8tFN!8lW}x1 zkq*ExgTZKMXlQI~Y-(y^UQc6^Fib$9_yn+Lo12?iELKZPODoXb+1k_H*4EbE-rmvC z(Fyc+clPymb+vZ^P+vE|g?f5=dI2t%&F*Eh*?oO|{Qz$O0!D^7R3Znab6}Xu9pH|R z3;=_JJRWawaByg7Xn0I8GBU#F^GAV+aUsP^D5MC1$w{F?F+M##0nE;Ru{ik!fF+Z_ z+}zaE)HLvQer9H777&SGIvM6rVHo@$mN2ZfiH2;qz)i~vV z%>wfnm3vc`s+vw7zdSJ@kn|tg<+P;?h=z(czy^18_v21e(MMpmOSlp;%KI{s=IG-4 z^ICjOybQ(vcqwJVaU1@nei@rpLce9WnD9LI*0wNjCk+(RILzBw0~HY%yUXt!ec7{Aa@G^1O*PYQF}8x)kSWEd30 z@Zp)G!b*MI(`Gf2Fj)_gNG%P`2*~}(*6|Ac5VR?-krcZ?z4KRU@{)E%MMe3+-_WX3Pa&6>!ym>rF+fD7I&VyK;i}f*LSpfy|H3~T!Dw#6t5c2SL^YqNE+O&w> z-+W5D?Fl;Cg$vkqIf0MH%GQSQhO=`lvLc{qPbqPiW>ILA%G+S((O})o14*|x-K@=U zr?&>Gl*JZ(x?s|O7-CH=L_#PpL5<;1p7Rh;8#VC6`}5F?4}uQbmC$dXW!Xe znUD)*RUX41%%HTHK_p%y?65Kv_6KdVQCx4T5Mr;k{rsis(hbXR%N?_BR8tadZwWe82bks8yqU_-zASd@ZZ%c+b>hz_jI$X U;xjiKywC_+YkR9QORqcs0C8naX8-^I literal 2454 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 UsF8G-yZ`_I07*qoM6N<$f&w#%CIA2c diff --git a/admin/help/img/faq/board_basic_setup.PNG b/admin/help/img/faq/board_basic_setup.PNG index cfe7918e516475a07588b91db9cc1346b4fcf250..078e5c592aef798dc45dd022311b50405bd26b49 100644 GIT binary patch literal 25029 zcmb5WcUV(hvj++&f^?(_2q-8Zy(3*kEcD(XQbeRm4JCj`?;-*sO+};$p@W13rHVAA z7a=6{nuHqq-2vbC`_8%Nk9&Qdu#>&lnzh!G&cEc zPVzD&hCi;PSHijOHxajPh})g4TbHj6@_$JA*sbl6$D6?GR2(C8pZ(41tn%*u>`v!e z4~6g_{1K6-=ek!8L$m*_Bt2m=U__$l#P4yWgfCJE!e1gs2r=RE3s0C2QT+#;lAN5J zqN3uhTcc$4g@b!K`TE6l5*giNV`jbKuYtDDm$pmi!oB5>n29tE)d~s<t&jEqK}-Lju6EfB&2{1z^!)$);lj5t4o3A|zrJ>z@ABb+0J3~0qV)6uZ ziiIxFq#8|EQxBzEVl3MUEE5Cs&x>PkJZ#LF!#Rx|{iozAv`hRh zzs``G{+UO|Hy7I0KU1 zF%eYAKl-`JT&Xm;@{7t{Eh3`ZV;+u>yc_zvl9O+@UW;^x<~P5>-OpR;S$!}T+`bsZ z-l3+iy*)j`q5bn*Tt4wKZ>tl<9IKLgyquwKZgR)WUjN|ucrmYuvGK?0fVjNLNtMH$ zpB~zk&XBy`;Ad!CdcGl)VVnTJYbGv`t;&LVf88^T|H*%!T1%iCzP@&T# z9%7j=uyXsj`OtQnHu2ZOn>3=nA7uTbK}Q?GX0P6mF{{XCBx{EEQ@OU=vHlz+^FG?& zhJi7|gM))3BRbmJ#eEt*AegVKqvIlV{X~0KlLf1p7$5WfhD{PtI~u{So>?0AbDqt4 zB0m@f zt>5C6hKGlX)4+ayw>XnZbOhKE5)%`BeSM2N*=60T>*}CT=!0*iwYviq{vqiSm2@$O zatGH{s1AKzk0;y$)PskHIiPrh4AC%dP7&$=r;^#e^5CLm{RsufV*$njfyag^Q(xtv zKI{`uvYI@EUf)8Cn9%}EQu1DmJcbJVMRs58H4&GKux6;y74!kN9to*GQpJgc69 z^wwc_ucc;RNYkxSML>P+BnBOQ+io3NFW9srzj}4d;0l9H5=MrH&CSgRS-#1-Pi-x_ zO*Z5!FNxKU4o_^A+#dN_uvsyvJ<4j*dvY`5{qI)}Rb~RD0<`}6ovkBVrLOK`9~Qm6~jgxJg9xLZT7zWCpfm|4F;a_Q=|&ZvW-{m;4w_ zjB917z0A{8EjOl~D_d3{n;PHs^;o(b2|W3ppaSCnU?rJh)s#uSr|GNaR~BLxepUw^Ru(C`qWcT+dlzmr8M`0yn{ zpy$`^sPWGfv%FJs0zy;mg_PFqxa!-YgK+P%(M-T_ov{(BvY6q~fzaR`@UBzNBb$%t zw7G#gzlpT`$ce(tGWR^!clM1f`xtrm#5b-A%hvl0R`G){wF3xZXlSUgtgOt<$w~dF z>WA}l*j&cH#L*zZo&A zn3&pW(uiw~fQ>!u=siMI`?T2*?IMd`u*dh3kf2Mb%k#oQ?^1GXmHK@7#`~-J{s(&> z?%Vq2rtyYm*+o?qHp5eaTDF%G#ACo8KkMh+XebeXwj<4V#nWqjZZRVEQ4Vc?yVp82 zZPSnQF5SE52h4HqKaF2F*>5L&bcwa6Ek3BqMBt2NxH)V_tx;jVicm2A#%4XzU zx|}*@)A2Qdu|w1eAn zPS)g|!TIU`8YNi|ob`A-ASQDz2}2LQdgG~jqN0S*1tFnUt%QMaPoDWWiC2nNLyxYR z-=#ReO2f@bd#tJWghZJda4F#vb*2y|_OdCb(4PD~QR#(~^w&orAh=5DU{UT{ zL`W*4X-UsX^AIm5*wSv?y>EH^asT?NUa`*W-U{EKmK#$^8JFwthM8R8b>Zw;Eum0* zUn~$b|DmKrBlLodoZ>^yo<+<^I^&aPM{wm$$5&K30+)Q-Op?(W!&?VlJThTP{SPUMAy?h+nY$LBlb-^U)Dxla7lZZBS$@oLe?@tvRb!<}_B{>$UlS9zq zqFk&=EJirVoCo1r9ygk85ttkkN@Gk{JJW0sy*nd27q$_i4+3!om4O`{AC}TnU3m7X zpdiY@$k7rCp(P{BjR0>KnllZ7Tly}LaqU|_(ykFi6rZ=K9EoIr6d4UGGU;!WYTWoN z-JSHf#6UBY+S-oPxZrDa8u*8!CEYo_j?+0 zO$Gh#VyU4&qmaR4yXxGgQla-3N;5PM4@o(Kp8k}|8M7POg(0N?mhk=oSOQz5ns~#7 zf5LD~_647_^6@aDh3rG-#+|PZucJ5j_74u4Wb)|Q3dYnNANjU{^=#!7jEYj$zl*->i~Up{4vTK9Gw12>-rSO?_DnMrzYS4e(G@> zvU3l|n2^zL>MwAF-+o7uCamqN;CrE&z-ujiNIKCs3LP45z@hx&2dGdG8T)zC0Z8M; z{cAT7;zZ@mDPcc=rcxA-a0%yLFy&mi2iWlUdJkhU5=5q`&N~GB!WQuf&-*{O)e99!KzzB?C~(k?}Pe#`{ak)y2id+k24o*Q#Uo0Yuq+)0yOq^mIQP z7Z<1m82n}x0Kn=dvb77STlmjO!SeF*va_=vi`|lyO_!JfMxHj%Wz5&*e?u%nY#v*E zwTmcS)eT%_D3G;+H%#ziMC$V2v$$mxDsemR!#;aln-F0ov7+zsB$oELe3d%SHr>zl z<(`M~w%w8O>F>l#IT3yb$Xv>(l+E_d5SoscWX={H-uCmLNgLeu9%RY8f$G=m%CRp` z0RG&@kuri_P>LW11Gcl1N-VhY0>m4wDe_~@E304e_dv7G&$NBh{|#mOJT<%Yqiya@ z3tB-!;w4w>uS#ug?f;s|b6oyzK+$%Y3uDXDrIJQ>5GxTA*7p%+yZ{#&LBR0!)93?vr}Eu^A^T(j(V(6V?Lv&U^NpRk5sKg&Iu8=b zZ21vH{D>E5%9ARvyTY^c9z^Y2KNl7isxiNJJ|;Zk`W6Tms}N_pLrH!ikDKvR+%m~; z8EdIeO9@IpJk1@%k6PZw*xzNem5M{AUtG8Gtv`BFd5;9aXpCRK0w#mXT2g`B3vaTD zTKB|(2ee;#zJdJwg*~dbB1YW%mi|JN9-Cj@ENig-!y3A|<^VGpEQukW(cjX^@t3eSfC0_%ytEec)MQFK zmOc}Rix2YEISKdALt_ z>|dJKqA<&4=|X!&m9Ik#ui3#?3la^R_1F_*(;#~8pMJ&6vmMqa{IgUyd@vN8vR6`S z%VV^)^~%n_$fW)L2iC5@-(l_kaA8RvnDn&9dB{Zq`zUTes!~C_Sy$xnH#b88e%~NG zy7>ls6f{@5ery_@9bzgM*tCi;D{iz>41zEId}XIJB|O6XktIEW=06-{LQD-kF^JqP z7&@GAJ6iEpY?|0QO4PT?hp-+6WA@FLi2q&7w_SQvW^Qg~;8%Spv@t6)voFaqFxuyV z$fBE-3{rj%z47KyT*E9w^wmw-B-74P6r))jK@)(PNeN=5d!?RvYSV%O^;#Y|Q_D$q zWh(5xfNB|MC~+e8V@W{=-Ht5yzfyB_KneaFh@w3YVu$Xq&9^Fk=;Pfpo-v<3SUm?w z{uyr<72*1n3jux_FHeJTAi==qXGpen-t_Vpw6qjUP3d|)ENoQ5fg{>6k|{I z4sAsC@oDXh!qG?GgF2UillmUx68Ma>!{X2w?mt8hqOn64vSkA0;P0rBzi;lRsaYl1 z3T9A32&~TM3x^=Yd+vm@r=Hs>BYcZ?)*fd0y=M+&0# zE-DXOQ~oUbPeq}bzXX1~ZVf)=ft6ma$*GtwNhMJI9kR1N8fimE{(ez+EF?^-zAE3l z?j@zHr6W(58igwNREd=*n(`VC#AAq9@iER7Zw(_yrf|}l7Fwb*uR`b%S0M+Hn7vjL zJU8&8erme-Tr)V40lA|$f(?Rf2uh+Tn^{nlb}b_!G=wj}$C-sM0*X}wI^4m(#7aw$ zgTh70L398m0yV-tHQ+;v>he~x6#yBNYbCd2G$n_^5`MZSD=4GZ5(UoFkHq#84h*VM&RAA<0mbM5iQ(i3pP*A`JK6 zUvJ|n08&I(ArU}d;Au0<)N1x`^_km@kwJVQThL=n5czjLtQ)afjYUiv^LK8N;uq=g zO(#;)5Bx%;0@2(*r1kEK?wJypGU(}5uca}M2|k)rwHDpx_uBNTciMb2~fM>5ZY z#C2009EVV^FwM(jNX-3f4vaw++RCdEkyaieF|S`s-Z@v_(6GFF;LI?nn;t6)crqp= zy4B=$=I!Q#@8}YS6KiRUM0#X9c4MP|&DX@lL{?U|Nk>=Jic~tB5Lvj2h=_*PP0%uf ztR59S$-2^)uKT>TZf7e%DZ@=6;w9T%LKK1ysdED%KgsB;jvBdurWZi;n4z#q+cX!# zJ{<@U6QUNkA#u#eub24{pDQ>uwoEG%@a35z>rKw$=m{zs8k%uVQsA7Xkgfg4hy+au zxNUrzE>4)Fgben=K@Gxwn^A2Z_K1^<%Z|_Z@AKh%kb&~S4|1!ktDo9TfUw6Z1|wK@ zzLf=7Ax`)XWT@*~%yRr*(auU*!tBqa04pHUCb z5<7K2zvU80LrYteo*^S02Ll>@sBDD86FO$%;^Mf7@;^plcXo_v?SZ8{EilFPa2muH zyAMpcPmGS1*G7)^QWeL4*`1%CUs_sXxm~n)ZP597xFrV z6FDwIAWvdqbF&Ijy}|z8aEoqPud%U_iYVHBs4ZO@AvV^m+2yZ5ke3d#>h^D)?n^Ym zph$r)4ZrgW$s_=Y5arUhvM5L3i$|G>1YU5e@ga(!q}vBaz!9ycMp}B1nkZV72u=9{ ze>c0;Bz4-Yt|UFO#z?zlsK2Desj%dIB+2PhlB)<^THM-pfP_^bxLGFIP*;_h2uBJm zoTxpJa0| z8ssZ%3=uX>#OKr@*h)8V`GPAyIg}^fFio4Yw<~(*v^3kRvxdzJb^@!2{6=|Ix>E>T zL+CM@d6?w357x?!L(DY-OR2h@&W10%(^eO&!J$c^r8AU~lcF@;He!2R$-JoqyEtIW zSL6GrWkGXfWy^K^OVQyUj~{#p7!0-scByGuS}Ibjt*iSxuVf$4*fSAaO_c)^2t+Jm z41r$?@DKz+;IMJmSr(Am>R;n`Tx789|UEpr#6))A3hL2Wpg8OK2rwRYY^j8*S0QDGhaI9z3Q@_X#~?JFI) zpvIt3L=5!Tgmv0SLprrP0^C=p6z47mFtiR#wULPxY(0oP#x>p0P2ivNBM- z3BKHZ(MNH50`4L)%+c!WLk=lz8vK66GW)(X8EB^9amEGEfw2TcN#|(9R)gbR6tqdB z-~W%rImGd<>vCx~jZe{4+xGNmR?vPiD@ei2DhOX&mjqqv585e&55!~YbQuwkRNP8v zK__7QjFxlXWcxNBgSrMwG)Mu*NP-w_XG8wTz+2NJLzI3bO*B#@B>%SJAbGqZ>O)7z zliI>P`J_F44qnHxwDk@&VNh;sJzW+;tpRu5?hkjwr~T^N*oaiH)Xeq8C$wYW}lQ*yYT z1+Pzh=G`ts3_`+(e+NO}Dgz}=*%>A!7&p=K#~J6aH%QM~M3LjiGkB4IK6fn20Ua*^ z-WM1ufEHw-H_fp78pRG;rV9~+3SA)F1}19MLil?Mvd)0r8V#iCd)HOLt&Wx1Jn|q- zYaiX2`)TW!g%uz26tMsj9&*~w)8z6dKLa}?h=lJWE>4PY7RbyuAKKx`Q1_4q09o!G z9vuZqu^kBwkZ~-368Q@%U%2yNw;K|gWjO|?hK%w;-J#|}%&*t+x!(GJA%e!YIt^^i z>H*Vo4O!LThX;aJl#67$DlHD2h|X}-MZ63(GW}H;v}gKrH)@}~*h!Ymv8ugJ)>S66 zLbTB!SSB+bvhKO%W zPY~mI8T?;Wl&C`AX%}2TPV_Ep2Ed2?|3is+x+L#mZ^w!3)Vwbl>qN$O>7<*iNZ>)H z@S%}B^go39eH}PEcjPjLgHbJ4?YNN2zKWb3h&A65cz1P?*{wmMGw^!}>v|l5o1gBY z6e>jTy0)NxDX(0b$T(HK^MEXs9{J}e9849O{L2^?e7`}yaCdbU*!VN8{A_C5DbPN$ zsiV=p9BD%o8=y%0$)hsvekXtF`|806Zn1niKMeDO&Ynd|q=btH9fE)a$UzoanOG*^ zdWI;Hj5wgj8TOzD+3R>0fzm!p&|QtV8cnU+ySJfsB;a*%h96i#9Ll0)^v7|d^}ZK=c!KvY zqrx%z_?>yBByRVyW!>?{5l(|m8kH3+e;l(5hq?}g7*(_Lc6mi0YMV@kY1?9{{_Lmbiv746wk)8gcY#tE~ z`->d^ir_zDKa<>RF)Wn|kC5Z4p`s4OrqITa|_meIXqngHwxU~9Q~7p9|Fk*hPr{e7 zofY!OMWif;I92B4s2<>d(b7zpNmQqi0S!WuRP3_^Rl< z8fMuH%(+?Z_4UNzxIWlJ9+sH0umCzX!moe1c8av=5m-JH`%vJ{_D;*{&ZHR|q}Ogg zS07`?IS`!7MLn=NrIo*}q%Cuyzygj-=uPlC<+Si^d~*X<$)zuI=8Ie>x%}f76eSsGHY)DR z4cUx`Wd5AY^jzU=28T^zoOUDiUAOgLHJxqOaCdsptgDuO;Omb5I`N-&iBWqcHp~WV z1ubsH-c?Qu=;IdfQ5pDX3jB3Fp`g%`{jV~)Jj1)WnZbX z+^a)|s#%v&jWsFsa+KBO2)#?PP!GiH`OZ*uR^sSwCXa~tf9%MAA9mDEPakKqI8$?A zn3bFVoR}z^&yH6FQ?uXozt2hkYCAy_{#gk*=wCYjF+_ZdZAq?^eM!i)H9zXCgLjg! z5=O7~5#qn=%f5opxPi))SqnzcA-+DWCfp}%2sOMiI>9|L_F-v@ESVb8xQ<|HPd68) z#~qULaj8FGKR=&_72E!gi3)1&aNV9jUU%dAvi9CoI9YC6trT}A2X4sIDEDQr_oPc; zltsyc{aSd^#9!-;yod^Pt-<&esfxqdg*{;jqeK5pE$CMn%}mlnaMOq{fZYGi_vk5} zSHa+81kTrCCY8ZezkOn92RGL<#gTQDN|pGsZzIj@t?ayyEO+kQ)1#{xp}CgR|M9C| z;8lv(`iP`o)XfJMZ=4B(9I1~|pgezbKd?Lius{T9cg?ndJ^WTD-jv9OfY)A)?8vy3 z1zDG9AhQg-)VpSaR{0RQVbbf1d*-JHUxG~T;1d_QkmYJKj}rvKn%=pKVzTP`k!u>^u&oqChO8UOcxMEP(+^3~`2B}&k|*s1$J7xm{ExUF+|R&01? zn7&%0;mV|EBcc?pLj>(HD2t~(0#<+3Cn6MO;R?&ZuOE!I{@pyA&2^Qs+yVP#*dUI8 zJUVM~YC!lr(3B90dQpj>rl7R=^0UOBac zyH#%UADexd1tHxv8NIrY?0Q`YkO^Tsh=rgnLIWR79(?{M>d-um{hyoue{7-VT^-a4 z^S_%u4j}%YO>gr5+Vp42`#(43|GA$JwwO=8JwN5sZpYNuLqm@?k3%kr-#^+D1ns;( zm=6`Vv#`aPBbn)Lep5ToSg#nyR#bZJ{#ttkWnN^NA;ZIqp`^qQGqD1gUG~tWs0>Xn zPcL+Yg`2xZQ|?<-cZQdPNar*JKc_%;4L4+9Nge}zg{O#t(p>^wyN=jTrU$M#rn_jt z@K%$vXaD|eeG9U@j<}01DX1s3#xY$2op!#4OC?ay9lQf{0G=HE_}?9sr`{Kay~5w$ zy*V{8VPR?67`VIMlPT*yT5dD&S<9l`g<6Qh-G1MF&ihR zZ}`9S!zFyc^YZe#{izqHBL`B~@rj8*kRce4MGco)czAeN)VV1=pZ+$I{BpZ;vd*1L z9UgSB^YJ4$A60hW%-1g(hnw0@r6E6Ky7sCMBVtfxHmtTBRcX)Fl|hRSe8rodoG$4a zqYvFBJO@1vhkM$aWwRf{z*kTAWV$O| zR3Z6so!!7?VYGAcjgGsYh64m5GwfDhI$6uaM_aUwAf=Nsg8;4q{CfzAXa$$%qB}b~ zql?C>>g(&PtL=BLs03%dcD;MI8Q{bvh+~UC3)_4dc&jlgVDwFNGnVH$G^qTrY z`1O^L8WV_C(k%ZGb5TuU(UbU~>Q<9e(qFV1@8|(?O(?_f?C!cx)b_+pi3kZ{d88B+ z4n}<4+-NS&>w0-fsv)bM_64t~Ii2Gd`xcKYZ29L%upToD&(YJQC4Mn9qB)DybyS#6OVMXuqS{&tCTKp?M()^<@*AW#g$k(r5KNedw z!*q9d&(6*QB5G}I-P)4sBnx<a!^m3)3Upc=F0a}?V?pXn zHR|HFEk65=w~eey?`qz#4!XhXJAx+tjsx71doCGh!!dXq5TpS$>^YYHoI&_Ixyh*1MbJc;+aw%)R4edV1 z9C)zfs^hBzyV|phK`x|B_q_3o5%)t|n3#<8_rFd}jadDBVDI1%u(NvaHlwwhq&mF) ze2C`xAxF&hYw1R6XG%xVXW2A#T+r~y$iU*tN{fda6LsyPsDlEeBFu3Z z+pEQTua_CIne@|^_XfUlA`SaTU z{qKQ+7NV(8p4?ZNnVB;$=QnJxbSb}DnOg+(`r)m|op=%L?n}=g0o`wJiIzbYdb6+O zHa041zocm5KJQ|s(LK%zQ+bTrwYzBEtBDpIW@u!oI6TRrJ0YoO`g)B65V4^BGE1Eh#DKDtAr9g(PAbM+ye{Q^6 zF5VfAtWER#K4YxW2+uD&Xir7pGZa*L%ua*y8cc}qQGH9WT|TE0QL9^lmFTUQpI!wb zAVnk{Y}}H|x%fc5Y=J9KkbT7#w{NQI`USCL-iWBJt6KZ+w=t8h$s8_9M2-YSL91?^ zhWC5X1b}>+5lEsUx)O}1(Q?&R>iB7n5?+}zyPuV2mhi?Fnp9~4g0G)wLchnI%C|8{kE-v#Wqj7)89?bIJ8w{RHhJN6BBj-PS}R$u>C zyP!&U`Q*E?iHYig!yWu_S(uMS7Pcqk_V0u6mT}SPXrU3 zPXu4$q|&(vO02|6TL`57Y(|+Lym^E;l0TA=R&GjtJ3%vpN-6z4wjC&$$uq!iL#5+N zt?fpo`K8HPBVtF3Hw6%OM3j4ss82Kv@+eGRcOW9teLY9ShyObh4Oy{l^26C$chjqo zz4j@N)oPDck1HYkIe8s_1`2*KJYQi_OQyTRqu2i;8K~yGbjL%hki(KJ)LHK)$)$@P z&tCVBJI@@aeF&i*E>tx!n}9)@*wkPFoa(BQz3?HwzD z#|cL>!FiH?lbnNzm#D?jPfD7G7F}0^(bSK=$tpmCplpz;H4U*B<{p;&q6sfY=buDE zm40#}E9x2>4`+P?$|v1KMMN45w1^OfLik}W74q$R<@ha|wcmL)w7xE)*xp0A<0@J= z_1wITPc_y>yNjQYhe1~{@*C@%`QCm*{SSu@27)O-!spHbS!=m3`1?OeKwiFue^Ab^ zN8H<@CfbpQhmHOt7&N*$!<6BLC=)rt<{d=~CnTuH;e}}ZX;u+q*djY?*79VlFJ;D< z%mC`pP}=+r+$}65bRHE5SmWyIPaV?4c>TR;=cFf5?tafQ@{#)arEs?tRro+Uc(Rb= zdhUoKf z8%EjLUx!)>_*8v1wou*OF49sRJ=lf#-Z}<&|NOzz<0}eT)5c^ylGy;BegN6a?Yw=GL3I%~&TX=+j?dQ1oHv1d88hg;@D6J!c4qJ{x(S>6!$^ zjpfD!b)~pjf3C5v`{S&-oC=;ah3-xgXj%~AH+oz@HB6SdgFx^A3VfO+T%g=>1v+R> zYKlv}%hUNuS;sZg9a3@*3&&uOmRH8;@yql;s1!_ra(+uCG(!UNteJ3iU9f7@CX=5N zjO$9YCNl*W=J7))t2#zJ%czxIZVgrRhz~~Em9!jbfDErKA(YvE)VsOVT}og{Xw7~X z^tI$1G3cW$8KkS}yA5Mi9+u-~yq$`b)Ok=-Bg%QarscAgPnlWhQ7i>{s#BL* zz^w>hA!34Z9WoYN1A^&qJ{(T7i_##c>Rs(K5~xdKX&R1+)qk)e0<80U=!Sjms;%#2&U`YeD`g zqo$K9r9;QFz+MG%03=9>b=*)Zo)csYDZ(mEd>yP~=t3;rDo<_(!&4J$98Ua|{1GE1 zgY^V1a!*r2mQ)CtexO9-G-fU3k9QkBsKo3*V}gBDEdtf1SbFZM9$Yz(dt|EB+3~K&p>BfX(wxDxZ%1ogQ04aoaMK7tGRTuqZdZKkoOlRj4e zHKB3^>)Lo!T!*XP1aE#Bzcu1l?_*rl#K6nxlI8eixc8@ycG~dNQOGE2UgnI>r6kEb z8?EJ_psnMkmfg~km>1G)eKVy`;R(LY$4s|ShFu$-FgG{E;U&W3ZQduTI_@+Hrj?;?>7t&J{&xF z$`k6I-zyk*5g!b*W_F(xKpghJQ5Y&YuoF4>oE`OJZpf)-eqkYGsepQo1jKe9zb`@E zGO|&VIYq@12{mKeBLV6&zU|6q7z>*XlR5jT6Cs8aV!%hP(;5PUdwY98dK{0(14k_A zQS}Eaj==}t((ltCE|@jloy`@3Bo@BX%)64G4|hve-4aUU{8PB*8!?Hj3y?XFR9Oa? zIUTsB30`^<4O)o{_zJU%7?Q4Lo&bNuexQ=K| zm)J#`DzKJwq;6p)tX6!|16?1&D_^qrQnLX&!@V6lWb~)vjhkzadw`XwGvpDeAamTj zRnyFj-BVk@i@w3+)9{+nB90{@J-`2O;oHpJqe~2&+_-?`3O>9^3gRFJwro`tw5V>p zX|~INV^Q#3P7Y1;?&2bVobH^uxt!^Px&D>QE*#KoAv$pFoP=sv{7NK4%Ta0Bg!I9N zAsGq6?Ayq_5+#Om1S&}SGWG^jv7vw*{uq)$$b^+${FWX`i74tS)4Pn2`7J6uxg|j! z28CKpE0AEd#ztyyJSIqYLb12|wF~tZ-pRpiXJUK<&$o2tiR0tr!J)MD^lc$YrNQn~ zu4KW#aZ?$!tUV<`@T6I*yU12&fP=P!+056tZ-UU34@Ip30Q8#|t?)SE^O3~q!#}h(x{IsGWB?bC=gzE8Qi0U9V$bG=+7vA`z>CTaJLCHzOhkQ6U=4h=fa#)TW zu{*3Fcv9XD&<(Q3BwD19&k!Z*O-ez5OE2%8W`Sl40RV@Pq25~rX)Zs=wa&7X(Jt#3rkP=<>12lP zw41vdx?|8QE;4bHok#;=F%fvPW-0KA(>E*fE$E%FHUopz-c4^NMHelPJ}GjxwEs!8J%50NM;0?pl|HL z=5y;mG4Pryik@4^nlVI?zjFFPdQX&xFX-49-F4N4HWN!;djL^BBdo~yx9<)tb1MVg+opU zC1`u-h=QV`CXF3X{sqvOFi;HYxMptxsUjOQvJphM6q^cthG$B1CZ+Hu0tI12;qL3G zOp%!jC=E^^TsRzwag-`HF7Z(21yOZq?Rh^r+NIBItabXdPr4qMSO@{v=`^*1)LfCTp80lUzL zllI@)*nqZkt-0f7*FIDed-X|?Wf3@a36T9D>smj4c^!oPoqho=ZurC zYF=A&?FxDV*R#h-tMY!?MWfOC`}={IdwCVdkLoe4m+gcQtk-Lzy-j7|O6?jM8B5U` zewqtGC+VZnlk@d$BUBj=VN-wpwDMfQ1n{vXeD3S*~uE4)TF&NO?y$yPT zxFf};^?>Z`$?3>S(eBqle9(JRt~lv-Q%De#EHfw$T7hS?iwD*c2UU@9NN(M=4>WVh zmFg&?8MbAZ9(mw$Xs%HIPORAQTFhl9LE5^K>^Z)B^t;rcUu?boi#{a`AG;RvT?^I4 zV|LHwXvk5tlXaveEg)6AMV53q8%A5|T;6%^4!UekpjS%j#hH=*w$)XY_r7rX#MvYc zr>7bF-tWcBq#Mdpu-%tn3lx$SvY{}DchXb1iWpS6_xlUK6N@FO?S|bCrAYqpz+oH3 zXGDw!2bPSC;>+iL$Y!OgQ@kz>FjQ)!#9P)wCn7LZW;i2y_?^9hys&^f7LXz0I4Bei zEOtQ?@}wLRoyu&>|IlW;ZP#z5N5yy-TK{;ZJ`KNY{_`FFA`(Z#mxa>0EQ=xcvkV2&4JxHd$L4S@f;SE$uJ#paC6LGS z=4z-zD#9p?4t!eE^XmC?aclbdJ7R2Yb#e~4ZKFSz<1jC^e0~uVWt*fr>KJeqM~hmN z%Y1mBgRi|5A|x+_;L{qF#3cyplFQIH{91YPtD~sREZQUpDd% zeIftEudSY^t|K=w86X{R7v=Rx$LFy?w7US3()ClyR+j4gl)(8`6VdX&t6cvDu}rh8 zwWBho*9t5YLi}8HuC{ znG;u~i&&<6T*u!TLyVlg;?IkFWa>9(U(&aDFP6h7=otRu@avm4BLy+<=jDAxG>YFk z@A>R$kO9tdW!sP}4l2$JN_n-^@Ua`+Wj!%t7}Z#vO#2~TfYDRWQ~O6C%F`jXCq~rV zU8AciLvLuHOCDkQ)L+r;km+LT{1fpyH%~ynI1{Lao(=~^P~_O=fEL4&f21wwPa|E| z-P~Zu;%-N#kc0}nh+@PNESB|H9%0@@Jg>AB;>8}ZFvEOV*yt@FbL zwYBf!Yuds%DyYzh?C`CTz!#*s)Upqx`BZ!lPcGSWrb|wY9u4giECWuujj4A--2w#h zj}4oi>lQ);DSZ{TdAr>zo2$lrl8GagE#t*4-{tY6RWcN%U`4WA0zI7be9VEHyRqp< z&G53##G)5(4oPSm0gN9r-*Mq&;RV`kX*t$DC(?^S3Zwa_IbFdwJ z(shKwO``ZtS#3ZIT$;w}>{9Q4Br5xPfrvO=#7pI zK`>-j3F1|h>COvTkwYo4vaqo9_4TdAnZ{c*rw93lgm9@8*PLAEk-;?y87E?k9-&>&rU zH76}QYld26`6_L@e0x)~DrXe3Wv`5n0-opK`h{@Oz?GR9p8l$p29N>^ZNh^NGDjld zsEq9yzH*$9;?x1oY6z2uc=^@SGqfGR{8LrCBvA?%gOGIBzyBT(jBIS627 z_X>~Ktc;6g?LHAek|Q@ON=gL(613oZUhEsl<6Z?ep+H`~+3LM#A2KS#K}$>P>f(o! z4Z8(Q9|-mWQO+aJyVo6$Ok6!GrV`z?O|-H{TKG`UgN}URFqm_0>k9(PfJIK=j@dLNupa$Unayh<}BM}{!D;NBlzZveCX+(~Fdm7Vra z!1kQi8p}aaA%FV)Q9ulM1MjjzAc~ni`-l*W*p&MCw)*WSmISC~r3A4NMfykgE13iL z6`>bT3(eD8xCyJK0DX3Qipp#OUWO(7%S~!#Sp{(5{}o0i6oW*F9@=0M^~cGZi4sAd zM02k3Em13~gA^a;D&Dm?Fr@e{aQ6-c;*EZo`VG35MkSA2qC_C|cxj=fdV%9$p?b3i zZ;7vmM2eFD5o$vH8xeN4WdwGHLZ{jY1qP?_>85|+=;<`h5as_hqtmXjsP@O@2sw4@ zg8P{(Vc*-u5IaKiuVR*FRjR}fVU0K90^hg2VQmYl{CN4CVih(B7KmGVjPNQSRenp| zB=mFJBLrs?Vq8|*w<#OA2@b3(oy;YS#ndc&S4iTE8-CrT3FCRR&izw{nf|9!aU>=# z9ok^2G0(CYUFez=V*)fL#Mw1^s5|me6J-<2DA@j6DYngW(LTW_3<@+YyQ8syv%5G3V=0J_|q z-fN#+t7d3}m=0xbl>_zXRGEFe!D>eG?^mLYIcpCF?Q38+plL{wylA}Z(aNOO- zCM-O|%b4Xn45;+!{UD8DLmfbug-wd4N=iVJzK|mic0vzNX#eM+dP#%_!|o$|S$*qU zn>h~T=KziQsj{hgfuX>lpdn$1n(!%cFiBMO6r!c>Ytpi7!jjm^TXkdjc1zvZimUpr z+jj3l)d@KgVqkG4?DS|*wEuy|)qxrC=*2#VcAf_E}iJExT!-3AYL_iFwSGYK1l znF<--n#uGUBtByxX;-axAfAkQ?_!j_=JCZRlQZSP`1XrY)dB8qZsw>7X{VVx$9-}{ zrzMX1yLOPg%6)R=){`g>@D;mCNT7s_%7tbA2)#+#&$ z_FTG$A|jf1Sy4+-F)@9lZlxyc@>Sf-;hRUvPh%|AVm01$KasCj4emE6us64Qcku4X zy6kQ?Q3oZ;)PTO_HTHNKvG|~WWZ(T;2H)v`JfG_ye%+#Tmy?NJ?ZL7oouB-H-2W3p zPn&YpmXnOT{thG~cQ9VcHht!6$_U>o(ogD!D!pWyr>Mppm4j@hl7 z$FP@{S}vJ*iQ|uWeJ0(jULLPZMfpr5%u%>lXJ)7De?$Fyuf7HpYPu0DQ8Khe&hb2ob->;R%6Yxbzhf66qoPH6oe@`a{+Y)qdk?*TF(x+| z>9sqr%b1k8Ct&GgK$C3^yK)F?7SZ{ZQ0Qeo`{Co+aQ_0NJMX)t0o;Kya%N>^)o%J* z%wGZhGTY_76VGf)7a+U2OZX~}!CJC;E5&GLSlYH<1oDx5sjDb< zL3d0htnilb3(?ye-Md5K8t3N1MDM7eIkEKX?ykz_&(2R`Vj6b~@rrVxOQ?8Ui({~y zTs0y5eTkm_G(4`t3YZo`ge)c+QId$JfmY|u>~FQ4zRPK)>SS0ll$x4qaARQ>K)Nztzi41-D@NoyHGJyM&Nd8|dmfo5C`{F&o?ls0lRt@6KEl$9 z5%MWzVd z*VBQ1Lq77^wiQ1>R5V^Hq z3&f|dZM+cG^Oao;4_n)2^LPCLd#A!_l*BDjlrzgy>Sod^p9;FGrk`@eE}XC*66$=z0q)O!|4_t5wQJ`*8bJC zC{tOU-l=-r%6whM#@6V=j}=Rv&o3eF1Oz;FK6_n4p90c1f%6&nNiX>Fg9J3W_<6>E zT0?dH!Ux~SP!lr9WDWd#M)233?{(Q9qQCOUR)1e{phC=D{pBMxqkS3tTaPsB;Y1LFKbh2sP75GPTf-hc9uPF~$Yf+E2jRvW=`I({b~1c! z?B^?AZ&$uLKShQ&YBtWEwH!>XKA$G-=vF-S(L+5cUIAn3I$Wp=|4$WP9th?4zD<3! zAu3CWkfM@(PnJ@OLQ#ZaqO21Wi7>W^BucU`m5^;rmLc1WJ^K0ft&!vS!swh;*_7lrek9)U7SCU4o(MwNhtHDbL;6}ANl+Gyg*|o1*%R?gpw6tF*AxG_ zOWKo+6CHC#kBwEnOWV4CerQ7Kaz!LWlGNm<;95nW<)i!8R^=TnY3igIwwI>I9xAS| z)2aq2Ge&Y1aFL8Fx}#85m6sRVU6pASdpl|0Zd4K{zCLCh7%ji9!{1VEonsajC>hI1 zZF7lSxnw+?Lpk4N@9{y8J~M?(Jlrz*UU1QCJ=`@V^|^A`MqO&pqC}~@)P~X@26^J3 z6Z@`S&IQaNc~1rNvDt)<%5&WhD=)ko%rbzcj%yrCUa(jeFh)(!J5IK?YWaxF{z~-F zi2mKzX-D+FqAr9 zJDp+uh2d&&IE}b=ZpVk+MV{8*Tp9+0_IX{oLi#aFajcz47W?S64+F12Z``#bQ~KEm z&zsRJf2`GEfyQUiekcq0sL=df{5HxvWq-H_NS$3@oEwBoG?5}AxJIiIUC`%)Nu%D0 zelg*tLtm9>&Ot&iWQT@)D(%Fdq6V6`j??{fkn<=GRv^F{7>~ z^(b@_#WU}~fBxT{LT$R|JuC1xCdlNmpV=^-S&H_8b#{fSx{oEud@aM=gXSb@qll5` zW4_CU)(ctjZIgkdfVmN@bBHWU4Urn~QCcN!ZAW9{1@1MYFGuqtHIkcFGxp@{_9u+- zbc@ysi@snW#sdyw1mzHPgE+Du2C}B^KcOlV@+FHLX+A^E)nUDN#Y^2t7S+2u#iMeXqxjg9_Mh6HKHaI z4eGo!*ZI|kevzzTAjPvInD14j46+!}( ztq|17zf2xRqpRScYx(VYJxdgJ%d9xEw$%1P-x>Fl=JG}PN=xnS-=rT0nJ?4|3*D66 z!F`T~@a9%q=n^IqpBUDf?SSq@oFwzo^v5KFQ1%Ms*qZI1*f0la`w)!3gHS60D%U^7 z4CYl<{Rh7NhZ&P3-*&=3^i^+Nw#E|n4*d2(Mnv>3FUKSpPJ01uHn%t-jI)k{d;T0ZrH&u!?ef3%OCx*#@Gn+0s}3xPuFmjlgI;%-pRZw?H8*HiL%G0 zKMW@)=bgu<7?IZ2Y-N9TUPxgJnCOg&(b#Patds$U-8NPE&qW6ibsrnUFN|h@qhc{& zBI-5<@qnh-F*~5KIL<=i>okh^QdXjG*@mk5-1&x7%3AKu(_n=B2sX@_yrZ@`)L%Y2 zNk8z4YzQw;jM{64FKW%k@{H@t_)T*1HBI1<@Gfgq?3g9e|FHJYw<`=v~b`$AsrrA&FtEQ}0Wy8Rh1A8uh`;l6yLUWA*@`GwT#g8F*r zeC0ylW7Z@v}h=GJCyk?z)KZ!40Sy1&oj zqzLzgo0e1AA3HV&>ILhrKNc07TNQPiYQMx9sVQW*3uFaZ>*6he22LG6_{ah>eE^ck z0&cKCstdpjnZJr4_Cgt#T7l$~pg2FvD0!q`AZI%871t|9!I#ropH@${D ztJ2()JH+R~TPlK(bG=pFXuAk9TwJowR4R2JVLCc@V0O}db!J9C539-SLC#R{Yk6g5 z9?qHbZXaaeHmy|Gpe)$`==~mWPoqt<9m!T$k?&$ZU#C5vC){km$FV+m+Is}>zGw$A zEX0V#eNbE|SBN;Gnp>9G=DM38!L*miUS&yBz9=U?B1EO(!e0+-CAGqq`8H3@*)C7dUU1YB)95PjOGe6qh=y{^Z@8+ynatCHVwBxI7 zAwW}PW@Z9}WNa)ir$@G4>e7X6JHUVspF!Yj9j!_a-0<>DF<>(nOwdD5^J01&$1e_0 zGrUUug)oaxAeogzr68S$#loAC`c4an$S|BPf(ZIhS2onO>Ulps`PW+*>gK+Iosqhy z4{Y#bl2nMk1#U)B6W_^bb-@ReIQ^3f-j5#L8;;lD`d6D+N6ir)cx*6W5g-2ZlDfmZ z(hD<{yQL~AxAT&`y5_&cUl;E^fUy`y!>Xs6%7K!j8fw}Zq+KvA!bXJUv|KY`?4+d+ zq5~aOWT2s`-Vt2lMINTFEJy$GN;lE+*H;fDF)It*5A&RN#(XoNw3V0!cMQ&$Lx`4r zUp@^GD=`>XelG_H2Ou8NHd%zpw%TQ1wv%{`wu7;x-~B@N6V%S+p8dYS9nQ;}Z&i@b z^R{BKI9H8+tK^;Pjb(=v_I32$j)&L!==GnDsC|C zT={fxSwtY=ed@>=4@iKjUD6lZ{k)hdE1?pL{2IR}I_FXs_7DJi6vq#w7)llZ_SDf~ zrOb7E!qM7B@pBmmp0OVOomRyPZy0@1LE`i<8F|8W`x<1G@J#xQEhNEl?UUX9Og)3b z>snzK_wc)tL>8pU^?6hCDfm$0>1qV!nBi zx?Z1eTKVyb;S+Z@xUM{dXBvC=h{>!(HG~NM**a}j$Q`@#E;VoVEX^h)erwqnnRNe{ zJ(@q!=5)HQ?4X#A5MZ*@Q;8H8qW1^7qIK(EcGfXo44O6likOYqecuB2O6&s{$%0$6 z2OfQEY4coZDst67J$h$0`--|uL0ZPGqcdg1qh+s74V6JTny#sVlma7IsQXw)UA`Ng zk#ptaP3uHx_+@;bm}E)U{pZ4K{`G!`Wa12M5!nD)r zVeK3ou51&xjw5V9++efs0UWN9Y(Pw&-X7WHUNue4DAeax8|OOeMuwHOb(574GfXh* z00MyktXBD2UV}(?O_!FI9zP$pyu7@JV44>zww-24dr2EOHt*}{7O&H86>D*;?%hSW!s~vi5N47F1l(2HX`}=l%THpPf5^_Z`80 zI+D6?vhNm=VNKOI)JrFcT$4_ksX|BWcTN@1uKAo4g2H75Mg__RiX$`zQ0fjlLj};e z1wzj)D9F7|{hJT&;O6hr1a7aoarKVagu+!H$DT4bt}Z%Ak2|~So`+3mgSid7xIY}N z$Q%YC3}u3?{qat+_+4?-ojV%UW0#OaF>Y)H&QSCf^^V(xlBi1Ex*~IZi^>xL;KI7K z^LE7pmw1;WYvR{R^SjvSCLhEklYn?_zjNs!eEIgS#4=V%#&!9HHS=QR)l748_d?MQ z*EAmmIALr|l!Pm42KR$Ebz0Okfv+CV~`SwLDMHR8mM&;<>L&O}VXy})Ws ztolp#vkxlql$Xp>sJa0kVYOXqpSLjmFgyTJXpw zm&Jx5y8X1I=|c0U=A6*d>+hu0sme4M>h~*!VU29&b0z~ObDSo^u3r*oSzzgV+wvs5 zVnn@Fr3YJYs{ltj4EMA@n;ZEqw`V(`;l_Lvz$~Wc*jEpVU3+6@n%fsWYSlLA+|uBs z(fcNq-SQ+e016>xhm!0!E2vL&GPj=8`(Kgzh0m_2I1XzuCeroh>nDCV3kXh zpY0InFP^@jv=}=R`y=)wD%=Ui&!AFxm^Xxu&==kKmw>!1> z2ldCrm1brZ-jEGF%;xbv*4EddGoV}`Nw%*6Ci#mRLwM*U{Y$}rIpcBpj}Kx~?p7R7 zmyL!^ZyhUon$|VeuI5a533C8r-@@Qm=51+)Vb^M3XgYUj2YVlbBt=YciX~VN7oBF(DyyAXVK%7P6Ff?pcD2+<9qspM7x&lD-yJ+QO+5 z8JFqfM>J8oGuGvzJzEEKt3xk}0wF0?0gO6b3*Ei=AVZe_^iYh$>P^%G`Sp6?Gr6#5 zBmR1$D^d=7q3?N#l22>LYHNdlRF&X90(Bbf=Sf6R%H^$=!+upuzP= zG=DAWD5(H}rRg-xrmSj`|H>H!*`n2lC!}H=e2sLAb!HaI>P{2c6%{~WU9-h}#Q#rB zEwvp^Z%5!>{49Z;F?xwEK+{;MaUl8+-(99t*u z(5FSWBl*CrP&hV=qhScU=}c>lW=_!>aMM2N{=(AaSi_K3nRwXWqR-%{tdR(%q=J!S z1xQPj-_OL`750-K7AwMHF}kD`=7OwkQeSq(WT8R8#i(qvc>$-1NZX<*1r%>8mF12I z6m{bh_pOOy`5yq4$MW)hnm(^p<3v7E#vzrn%|+VXz1y!|f9y zMc~qE>TP@Ui*@ypR#d)rej_!@RQSoX1XA~nbN1MO*W=t!7 z8y|<^Np=SklYtT@kRD^y2{k48PD`j1I_TuP=5{?Dw?`i%L z5zQk&f|CcFmTaXk_bjTXFHio?U!KMOj@}a2yqB!aGpkCoaM`jHNy7pP) z7lq6ft9jDoUdU(zO*E1IarIoBi_977zN~~tYj0*KB7RN-aR=Sk3*ZkT*AFA2skL*1 z=1vs1CY~)%!+{Hnsc$ad*FBA40f~jcI}xPMre#$>RUg^WuX>NWK3q2;@E|^6=7--% zX?pm?%qVIZ@*or2aMt?kHh4YrOZExl>^H!Se2%7B56lRWMyg_sHCilE-tEWJi?Szo zQ}k{igbC+w7df;)SeScq1A&dce80d1!O9SgE94`IlUv?!nx!S2O|Y$v)d?aUK9oI$fubp{8~^$!Gs{z{@^qIth2h*CJWjuC zT;2C}V1$p7Wc3@SN-wa`r)3>>aVXOGo({q5~Ve+`|?L1A?a=DLNqe^l|R<9Gg zM`miO5W^qDMrx6%hV}HL)$tdoI}peS9*@?JKOL*TwE78zPTdd$5XtU4i4+9YGbU|^ zWH3z$h>su?1xFKSv~!RHzNJO490KUBtGZ1IYd=C>aM1J|bv;0> zSnwty8BS!IM3hz?^2mBC=J0MF;^&gFqaRKXu_ zEC2)`0$vW8+RI1&0+CixP!Q`q*=vKe10kPx1A#k?9O$zpcb9b$F8ji>o+^QG?! zFFD8om5;T7yx&vV_RUPCu+OnH*0d>KJ{FdPN5G>L5Hi`UhxXT|@PHyLdY26^6JTHd|)x4(VHJ!71E$GCs7bgebl)8_O1o-*?osdeQjH9Iv43CYo` zYAU)UBuB6$BxKK^6ySf1l|y#GA5vG{E0;)$Iyq;-KOiWCCW3^dB$8(D7CHDgkENQf zCJBkR00~K82nh)R{8!)%35okT5|X)_BqXwlBqXf&Qmb|3Nk}R~uBssP@0%~~8%J?Y zdtqp{0y;MWoI58UA5Pua^JEfd3Qk#32`kvKYT;@S2^UEzcNf-;x_w%soL?us+-B`M zDoI3eP{tR~N7-tDM`4i43skVe#?NreE0%WXqZc;)Y}P}!CQ=NHGaQ0uI~nH%o(g*zqh;TV0_~St>47N@psNKhjPuNE`gjplz;vC#0mA$nmvn^ zb{dU+$||M{UX3~u&iRT?l!k^TD7sZVWL)s@VbqZc5*gwh@aJ3Hk;Tq43giYT1<@Oo z@E}rfm56BBft_d~4A~N>4Fa7=WUoXLHIDg3HtTXqXH7aV}S(`p{j`;O1 z&Wpa=uiD$&w>w|B(2i}l9P`GTS%X}PA8)!ji|K-(NdDZQ@W-gb9znK1ucb?Of zwM0HP+LI(M{l&%h& zWTNUY^{WQ6v$M}4l}Z%&#{4eV+rA!HTM@jo`+9%+Zp%umQMjzPqNuigWI5h#YCQal z(!q}?ofGj&qDfS?1uNjn<7@no_&52O0vVVIQaeLY z1Tl%Pf5A9yP=E5!dQoXTu&N^`eRS3oKQqp~RWLms8R@+=KConTpt&o5ivDhf;>PO* zx4mK66Zs>9{+;L710&}3R@XZTyN8>{GD@VHocft=*CKB0$Y0#L+3Tl@K(mXezFggI z+NilB=Mkb1+S`!Qx$L|>9$1sn@BDUtyT|3mC&h9ZsV}<|RZfq_?Jq=(bkPtrX#bcO zk2+llORrvz)>UMc+mPSR*H`OF?+AefxJ`>8=H7UMYQU)m3)bQKTSjK@{oHx?{C2vr zWnvJ$=0nW-Osd-(PAI=lyY*bk{3ZbE!x0V$3hIZ<&POMWiJsM>kuo=d4l+rPg(| zR^l4??X?%}bC<1L*&HIVsiXB1w%XbR;j8;|ZHv3QPUGDDX_Dn-TGuk7(;_lVo66SC zXdq3M%CrPB250vQHtTu6ZLCxUWY|iWKh2>S8}(U^QzE=nvW<1}UrU)fzP0d`Da|MK zdWkluw36d;ghv7bP%{d?ZZrtk?Cs^);$i$O=4JdEvSx#gO*W2DkiWU4rS81GThpC^} z1g>)Xtv^!{;nVhg$J{wOxjPw#JG8^G^=d2PUS`z~T>C0vea>RdCcoaP>qs$fvCZkA z$p2E6#=KXdR4}0>=g!0N>3%7HyR=8iyD}PuP8qQ|9{1}G18WWO_2p)3TakldMnj)s z2uk}sN^xBQ2Wu{Pzpa*phCM5<$vC6-`I8%KUA|Kit9xr*SFE`u4ehxV8lHA7JffxF zesEk0M6=S0#5;%?v9l!g8wc0~R)1 z^LBV_#v?~he?y-`j#ZO7#jRz*`EdvHlwGTx@WMqgzgdm!#G)HjpMAq3pX44`S#Her ztv2&TCT8sKWE@t>uYXc@+5RzhSNsvXM0xRXe2>fQ)N6aTy>#DYAH2k=zUD1DrVNtyf8d8tpMn84OP*e)^f|6yULJ76ao?(UBQerNgHoqgFrQ`~vG-yG~q5pK0+m4r0Zd%yR)u_`Be-O~N_VIRJ^g{FdiK=i^yzxy?+t~1}o zWiAQN94`a;!}hFIwXtK3yZ2YphY*-Q2 zC(E$^73_2VTrdg8^ z3D`*puu)gpKCbeZb;vMb{!G>VwZK|y^;`pgUeoO2)~{;#9r}(wlEw63_V^V_rS1EE zxreFk9mWGro6QME18cnmzJV@Pg?jo!0gEzgdG14avf}a8i#Nk}g1LK(9}ZYP=6$1j zx!-wqE8qv>rCGx`Is)e*oM%@0sZ#!Jl*9b}0Z06+f-e!4tbZcc1Rv#R1!8<`X}L;e zYB*w%@BvX*(!Jbf$^B*1fuTIbWz=9R_iSEnVR6;joWaep;3h>wQ(gJ{*NRe02VY;E z&D=*#-#6SZbj_YTFzD<`5sWck=8(W{h+ly8vBxal8GM?-kLgEs$*+a^F1cpJP;&bs zPxx<-g<=jS1eKogU5N;ZKzzAgVzyl?DwZ$dV&z@7_l~*OqIqhT!{wHcEZAj7-xqr< zd|LjIIV@l7cah)wBDO=yzraJ-W-X2It>n;lcf8-|j=}gB#-)qM`EjADhI)eKm+jz0 zcVY2Jjg2Jz`R#9hH(qTPx8%x1tV#Fj+64&jez9B)>W;vR^V15JKTgj$7tHocCQ%-A znVv+m5!6bJIyad`pt8pQD7aDOQs#f#tD*MJqLW$$Sc6@QiR-Oy9z_~n4y?i>+( zaf^-iGKN!9rTnYW(BoOE-LCQ#`yKy9SqV#g%T>FilEN-kJP;3VpMB9wM9{Go)jK9` zE_X!(S-5q=XF>dHLqNcIw&WH*prOF5roVPmgf^g@Dk0}ysWZEUSl2~sWX7|N@opIk zDqEhlge9l;i=DFd?*%7P32DchV)axTY#Sc=q%aAZM;BK%G=*ELJQ|0OANSO<6&a3o zT^cv9TTGd@_2t|@U*VT4P~k1y%|18O*Jxhsx%nh@^c8>XW6j=Sw@kW_-+QaA7#CqQKY&q`8N@EzFWSF4$m=@a ztNp{)$;ABv_q48DfV^FAxBYjHlZK`Bt85C6hhNzvOAeO@cK72;mV2#| za7!$ECChD7-e$%9#Rxx_*X8)$N#ibK^XU}n$%3Z)i<}||+-MJOlt5nMkFW78ma!vz z)(|8ALH~q4gL3-bF*b*I3ncTMJY4U4t-j&w;Gw;y zqiKY4;l@Cy+}VVjyhP71nIF5b?Eq2QTWWvf%%~hrwJjp{^IRG}v)KBkuES1AEaR1v z4?G(+_t|SXaKU$W*-rYZ_ji#Df_ZdR|^l9C;2^<`W19**kX#Z zQj+42i0r=}7%=fH#N+rMg!^Yy4qtEG`WQ5L-JGyH7;cn)zpdj|n(zG9dKo^(sc`Kk z^SRLmLVg3Ih`)VPV`KYdeZXE*z;Jv3(s#So@4zso%bRVl({n-&Z!EB!UVEB*N#gk8 zE>bkz*C;+|nZA_}xLlWJ8ii54Eq~9+@^VP0ij;ZyF}kAVp*O7aWyKQb{V*)^M|zlW z(~9HKb%**0>b4T9?i7* zh_r9qqqB@Xiq(t*S!B~U^=gcw<0FU(zFkz zFHKp4QAMrKher=%?y6)>>5VEY2G7hg<{;+1@Q1I$UhFYIe zyVttwh~+BP8vRWUQ>Bbr-3G;mD@%u7_Z!F9bOry3*j{orfBVbimq$e&Gix9N_R6*W z`X5h3PA;mZIJHG~@Yh?!7(Cm(Ros=obZ@*AveD#JQ&BTbzfy5Ei7qsriTg+BJnts^%% zf5;L8or2G%+Q~`j4YpqHhIu`_)0_lWDc+OAp?(O~i&t4{x>}W|$L-nK`r$-z_51Mo zpAU}uUozjf{-mkDzIG@~-!MB8KZ^6befynnSXj->F2U>M0$&+TQ)vC$t3>MgCR?uV z_xBf@d5V=tatnK3>C{pgJF#~0)duP_N9BisZU2C=gcJB~la!d?jP+WIjhLzT$;GW# z>k~Nfe{gXi=iLba{`=T!Ra#r@rqrwCrUiWGD5#Mb_cil9;=2_qFw8OXo#bAK7wDeMGYmGVDw zY!Vq*?2+f>1_?=j=kWjLnTanypooRAbj*g;)hy_wo zXovs?FTP*20?I(2`S0y~wlTgDb{LSnw5)g~OawbVKAxRA_xLPvVOfa2{>F~MEjj@Y zp`}HcP<=tv@!S{^w7M#s#}AZ%2w^s)Wa@BoJ&T?M);qo~h;r`qIQq@bW}k71)y^U| zFS~{K+N$w#`!D_){gIu`pOzh4>`a|nOJ^DZ5*mM_&^1U3Z|Apf=*VnGzkneLmFslr#GCvlD*t|5JOWs{r)nW zQaw*iglOyLC4?95uInNV_u_j3p;JFEVWsP*7(w|)a5zCt+$ii{EdhrL^Ug0LQ z@-+i3JeM@Y-Cj#-vDRkQ2i5cpIUW1l8oBY^&>R*Bcc*fz{*Yj)=I)v^$A_Z8&9S}N zE+ejsNRs0D#N122*>%BMt0_YC(UaWx?jvj2vGq8+5*;^+jm0#O*5Xp$n@NRYq8-3e zJfsjw7y}3V4N=~=|0(Y`$p}BsJuQc;%PWNF(crc7wz1j)C3xl@O-q_mXZz7Tqo@4X zeEeV+txzt66naXT1fdzqhtrQFL7UViN_=0S;=z8E$oXi?_zGg+^e9sz$MQ;YS&mSS zp^nT5G65tujJ>S*;fEMQ3HRfYkZ8d`j6hc`dp?2$QK*{AX5|UqADPsi@8i8ml{cDe zl(6ooWZ#Zq|0tT%-{rJmt3H>_g|kCuSVUqB1x=5if#?bZVzOxy=QK1(5F!qD*{(-G zd9X6n6lP~6Ni~og;^(U~2Tc0yuFmf6+P3*FMiWBCgR7mdEVAoEaJ{o{zwtzg0AZMp zzBW7ojLz$Ji`pt!sl&;B#<&W49bN6XUhY+4UK2LAoD#kop`km#;kjaF5zyZLWW&e! zyJ=DE%?q%Z6QmHF&w@?W7YMBPc2ndiYcLQ;*v0O)?@X^C?u*NgDUr{*QE7RZa}B0+ z!pZ1rn?rPMeT`I1-eJ**xS;aOiuSjB*pFSLsw6?fFgVhciCR|o9H8ednW`tvRlwPu zFEehWRM*jjA(4uXrWS0b<5wdlJ&|RO$Rr)a$jw@%*C>R!M3J(e`)+ChSE0ztWhBjU zw`$s;T1Gf>jh&4U=Lwb@IQRmRd-R3vZ;I9jcjXU+oti_f%Hj$W|-nunJ$PYMsr0DN$-Y@9uhP_|zE`X_g%9 z^m(vibN9>TkyC*fj~GPR*Ev|Rdf_J5JnM>(Y=d2pA{jkmjHVjr`WFa1JVi}_n0387G)47Yq>;0 zdaPGux9fu~p^skc=@R!;YH3qG`Bub{BS%VP-)VtuAp;GON&Ir9RXmf^8O5B&1V_rD z)Q-ZSfLjWN@2b@TZLQ{aYmy8s8niLWz9|)HRYLItaAP+hX=sW%T3k%r_D4UN~dgwUX zRyi9xj?|v4a59TaO5!;0Go9Vu+1b3e$Mv#3*~-~jYiTsiiP;)CUWU?!!rxpbLGbhQ zz`)L9kL2({@K6IgrWPrG0QV(}WA1%+z+ZZ2RwyaigkK{;_}Kvi&9_JE91UV-lE*Tz z_;kMg(mO4>&PEQKAMf@E59Tx;=#|>$u9%m(uIy$yq--1?cYWPm-4se~uj((qm^{QqhM;B&D@3SE$?|qg5rr;Xdi_`=X zk{s{EmVx$wbz4e*o(5(eZA%r~8q05=OPz-gLp{ZKxA!OOI#Aur$HRyrT=yts z5O$LyZaok#1rZX!A_g!XWD4!HdHnY}<}d11U5$QHv2U&BfI^CtIMxN}xgjoJlWXDG zoD`P;5#&4A$K%nKO3)DCGDA@x<6$!)B)INyj*0^9dghEI#AGTJM)xfG;Z(dO~nhI~t5r57PE zeLZAw!lw7g(JyRMmFT&xyD2lCD{=AsZ5t;DRC(js*Kjo)L);}jvcZF*B@DgaeHYh; z^dOQACC^biz!6W$DXxoJ0B(Ih29LtuXadE}!P*F=Mu#=qLg|L$ukoZ`lpYMK6-g@3 zu5jwFea%eoG7tA=wTMj8%P%uW&qeo4WousDVAjvz5CRX-iCzU7jlrmK836xaC_Wb^ zV@D>u(vf^|(IAd!ZJH`Q484KOtM}<_9U_x4vZ%Ww($aJ16oQw&&+GYJKrFtBT%aQb z-dLR-&I7!(Rf?JxFFLwI0lu=&XtQ{Zoi zESmf?kOSvH&-3r22@jT>mfb8AZVdLZRk-lDdI~TKsatao1EFYj7B~+Fpj#@{hMWur z1>yN9>0?cvZ-|?q=j1ZqFY*Pn|IRReT2AyIxQ`$qn+3A!nbcSWUK9degIu?#CglhM z9g!ALbi3o>!6FLoP(#*hB*n#f31;Kuq|i(dXEhVVaLOcP3?ODR+$=c*v4<>;*4d?B zTpp=0a;p*pupC}0gTagJN6dPLvqE^HM1d^K>U-%(p(+6Ss0Mz_{@p*sgg~gzVwaeV z{gp(|1tQE{c@|2T5JxqhEdK5!!eywK4UuhZbgJY*w!ppTa|Ni<|7>590PA-FEzRbm z;1kl%F?@d(J_`h1bTdZ>INhf}&gQ>6pMMq!x&i!z>oGdnBfpnB4|HoCkxIc!LaIat z6{-U0_~(mxngH#1?6E08T!0hrFt|8F`@4SUH7WEyL$fXtC*rpv#@T$No|2RDBHcaCZx`P<^ML$2 zQR15|_1wLT_4T71zM)ygo=5?XOaZG`6-E>(P9e8u8p6A^oKji^D1EYWa+-|o_q)4> z7V*Z@UpUCRp$qs13&Ub_5p9KySmSk+pID1gJUaPKLoR^Uzxu$yzw)!_D=Uty4)mZ- z=X%?)pz})Ynsd&)XH;wIY?QZ5JdZ>>v= z2s~y*CqpjJ{aTTP>?1$Y5#f-;)uDxaxa-~iwd+T8?xn(g*C&z^*pK@zaaq%#+j_yu z?dHulWizO1O-A7Bsh;%y5%&|Kq4_>`(mc0#+t{?#G{Lg?MiOVNdD^0TM|o(%(02hI zg)V7Qvv>3SIq%=Ur!($zh`zq`6nHc48Lr=oQA;8Ee~-GHX-RA~VZdDzYnODd=2#8R zZ(rrLqQv0I57pX>)kYP~C$Tm;N*k06_d%OS9;NBt@c1#6amnq=;>IRT_N;;6~@6svQlD3gx<4Z@e|iIZ64#^CZ=C@meG6r^{44fLy@@Rw9OkI;`#%O zhkDdLFyx<|{t~KKQzV~~b@qvCTWcCe(ou6MWY0JA6(X`X9P4oWZ* zoB71sWrqZrsHNgj^krAWc3+AhTTNpzyjlraVD(H7d-J_fF)NrE1MiY}jwFD3~`5#s#A*_;|s%NzqZ$Sabl5z~0*bvr_ z)BA0I*psAbBULVwPl(1kH8ph_wDK7{N%tLRJ?()DG?4#r&Ki10odmI1jp_eB;(he2 zOY*FAP$L=Dj77wTte)TNFqVB|yvFJSjKI~H>O2*A!p0ocg*N(pX7|Qq{=XKw)?il) ze6$-C2)jL2>O|*x4LHwh_ZAGj$hP^m{hC83){pWJo84W62i9`$X8cnECx#w! z7#7lN;GX9il=foFx+%-h{fhmBAu&Uv_c$hpvk*ykvGPzjC)pyT&s(aJKPM(8CR{+& zy!K0!VVr*aZsYSVMT3)XXl>(ObX@0+as?cA9*Lb^!a-4H%p$z*TM9_z{I1+$882oO zEqij`gQ^^79AlLO7ktcw(2N#vN4!aa%OP+|(H-9F$^K$pX>uq->qFnWccCAE7(k>G zngtHyrx+%R`1JDQWv#Uq%dk@mcSIq57EjhrVlCU2p7|`<#9LV!V!N6@1-E6cfbCYw;55i|9rO&=h1ZMYp}9QBkpBQq;<`Sp;^aH#q!O=x4fQ<2X(#G@0`H) zx+PO$b^v|N)cf`=qDgpmJW|PVbj3VFr(hs$FyWxIT{@s7>&gx>%Q|~voq{Y5U@Jq} zy|kl>tmr)D({qe?!!cbQd+Gu?`M2nPW}WH!19YA{;kB2w+6nt+=R!q2twkdDdH;qUR2~ zew?(}t@C&vWN0U|CKA^$=!B9T%&L|^Y!o$oHF<@p@YT6ManR^=?X>5%mr+Af-`(0Y z4A`ROmyrR4o{T4*nTq@CJrP~&jaPxylLi2leEo+?%J@X7+#hA^B$-|8siWvyQ`Ho} z8J2WBz)+}Ophug`->KxU|H#x^VpVv_fnFmggEBPnsI0&zEn?-a_axRZxIZj!qu8+x zxPa5oG1c04cJ?dZkWhGa1ihlX1(6iawRJ>2N#D=DGG*pAUzTxe`MceSj&yg*sU4B| zjmoF@)IHaa`o)}Tx|X+}+;I_YD{{--eAmVbwa#CUQ!uqwbeAb;YPYP`@MTIz^oeiZ zxMIrfhRQHni;CL82A`0yY+#6P#dfCKmeAz6AIWN$(+-B6hLKt$X_$qpse?)Z7->5( zM%To8F_?W!wCXXn?Za{Pn_EcqTzy2(iq9fJdpA7lb1em~WcZ8n;5+I({<4m&Hd5)U zPuz~$9!EHc&1}9ZM;WI`IyMk0_NS>bVFn>Qpt@LARu)mSQH|0v&~pD*JAR^^Z>$(m zNdHz_F9yM13$XF0W;f_Hud+T9|sPT4Lm=qBq26#^v`>C*w-XAdnBb) zV!XRJD?Hv-nwHE{Xm>iu?#owL419JMRznt&YG1qd$Q+gDxw5}e93a9W?a1sG3D6rX z0>IS>CR5PI`Du96VrkVS zCKJ;%;70KB^;lqwgI`C4n}`ho%&0|lU4IOOxtI@{H`C(!t}B;jqt@to0XVpC^55PP0N++9|-kszm`&S!l#VBOuurZBL=-mA9j)B zlo~(`FaZMu27p13u#rGqK%uKc^YoK}XXWTQ&$5$drE-kU1&h{5T;8fYWgmoTeJ1A7 zy4zZ2da#L|33=bR*UOEqL4~c}kqu1Jwdu{b=o3#YV0cWIG40r1_`*b{1DvuO^35((RFz-0+WC1c7>Sxhb1IgS-IU~DyY61E8r7AXcDy2zI< zH+R2-2cNP^c;6rf8}V_~VqWC0ka3>pQx(Sg)79ia_*;+_kkj*wh|vPPaPIkwm$1`H z;A&6YI%F0ouV+lX5cUd~Z3`vzjxr`0Ejuiz;P;+l?AGi&S8NN#JQz1xjC(u9A^!4a z?@$k)LilIYYvzqCzsF@3y&hjqfWY-%0VRNbr!?pC7{PbcyR8dGfCKb+D!*tL4u4GE zC-PV*%zaG54Ea9u88z1Iww=*d;FS8EV)VBzR?+nx+OI6v@VKdk7x8R^q^5WR0w0 zI%Fc(G}WcMkKwi}~zcjcNSA!Zik88(0DI%#gwH zn^N3tmd%+Ddm9G>T#()yIv3K*@}RbH4T)ZCyYs~jqp;p4?tmKwFZRodv~fi`egAIB zNf!O4GPU>e*4gRQ5jC^y%T)pNDdLNp`E9v}l7&#)>+SXlCxVn8(s`K&S6g?muQ5mv zD%s|j>i@0SKA;B$3hKKM9Z2MnGCIUjl@An2upiYrpC!8F$6*7f9HTOW5l9KDGvTpO zpllN+jJh#n{dZ3bWq|E*b) zpr2q2CAZi-Rmcd}+3Gs=xkX+Q^P^~AUhLJ+nMFe2Bl*k@je{aUmKDuCj(t!7A@f=U z7*Njd0@-=aT#)pu{pV5`8`$j<6k4uvz+w%h)@eD(c0m7RN=#rKdmQY5+aDgAvw#wU z$-;K`?sq`NQ>L@t)Ip!YTN>QADH4IfOY*)K2VH% z2ISO;Jud)djs;hr-gGY(0Xfy2Ad^Ls0=`{;;Xm1vk_mq`bYv zg9lf>O%F#WK@OCR|MID96|B?7q@fz^1io26uDr~HJOi$>-gVq$0?tDK8k5KK4TKtg zNuDTTS%jnWHAogh03Hkt{2&1P0WP9h{?R@ITfOB76wV_JJ~SMHj$jT0%)JWi9=QbW z(6C9#n!(AkSbD(>92gsRj;|l{P9#98SL+*et#|HCPO(&5EZ_W6 zsBGA3O+-o%9Q^Hz{3;?O7UFcv&IDhGrii~a83E5F@6#MQ6Il38W_UW4-;rCN`9FqJ4SF9|Qb_urFGCSa>>nd} z`DW+<<8s3`I1@mw?Z=dEk4R$KQ_;?r70$E<3OR{o@s5Z-ywAtO6PF7miWZ9y4#TM} z%K}%!{VxP}G2)l}81Bk&gO`0j1er4vyL7dQ-Q)j20F%dhn^&NG*v_msI!@8OGtsR! z+WEA6*k{3wbo@lK6~@pCN&pF1V{NcR8>6Poc#cvhR(8FnhZ|p_hNU&BlM#zIkanKb zoAp!25FHn`Y=j>Y#Y^!(^cbj6nmjt!-GT<@O>+WXZE>6|i&g(nEd*d$(K5gHg+sdv zQr2IlWw6<)0ki@OyUhEuvJ$Wq#8*@Hp!~*DpT0B zrrELOyEHn_Mu0_T|5-eOdDWaL97r-mN+ia7acGE~<v#!qg<2Kp=K7l%M_zE}0WC+GC{fsfh?i}!(`Ug|!85BHHbCq>0@wCoHy?}1kOUO~ z5{;i_a{(_0LOwC9^Lzsu<`*YM6KiA->KY9U2~ra;P%QgbRTZc$?|ao88e&Yo`Dx}n zq!pBqMC|Uc84UuyUQ_8QfkuD^9h~PZV8Srdh7uItfea{4-aZ1o51i;#T4<(rAlu)u zC>B0T?p|4JL?Kv*RuJ}6@H@{bOAj2XbnE8xv)0OB$U+NHcI;pKAR+A2r>-SuKkdIy z)!V#}`!?!)^CpkSl|7Fze(Za{&pp$IMi9xBZ%AIq4ahsrYYR1ZoN0O0V5dPh0teN3 z5qTMe9u@`kdc$dm{<#fFKQBb1AnTpoG2@+^%VD+B=4Y1|lAl#HIwnnaa8+2%cvei{ z3Z*B%tQS<_lO*)KSbI;*&aRwQlz0KP)mcsOk0*wT(!len?Lfdu&$FLX1G%5&^bJiv z1N!*?Wh$dAjN2m0>SoLh9?T?#Afv!B5osjNObv+C8yI7>)?$@7q)uA(e?!3ixc=Yw}97-MF zBfsm3!^D0F8QCn+{QoxUtYf`1V})H&gG;0N(L<@umys_etmvUCAWEo?f9!|70-Bp3 zgM0>tk=>QZ!h&NNN3ur)vEZCr#Klg4z98h|H^Z6oq0F>64 zj}mmP$&RHX!i7?GD#Tm|&q+Zui327N&*I|2h>pp@afx?JfSwxeBi_iPV1vwD(n4Z^1&vV=emuc`o!su@QV_y z6TqZeB(hYYl|;t^fs}$MV*NhJ5cnV%_yR2I3xw_GF~=zyNJXgVq5hvl7|lKgSJz7cOSh-U8OhX^xMG5IfsZw_f&;6MgHsyKZb` zRv@CpOO}S6bpWdkhU9XC9xG@)MI8enz|?kItI1azbCYS zhxvcpXe80_Z6Sr;AvVFDTv!A(j36L3xQaaqsWxEeF_E2f!GBL?0RsL7(`^Nf{bjwcflzFivi+g2J|u7k!VSTb1!_HXpx_1EJTYm6{Q$C#K2Ai+ z545(8fqKDrf;eGIw$-b1x;ROtE|-*@$tcE zc&G6V2rdMFE|mE(h;&q}9Lhg2?LYG-QiOv?%M&&YWWp42qal{C;@`yWAY z7HjX1yS2qvaTf0f&%e(_&zAXKH=?BMctp3g@yPF(^QXCZ)XVx8v>pmN1(uWI=4$a z-GO@h!WH0G6%g!WE3MkKZH%WiM%=hK!sWYley@c`o`y3ES3Z%ywuxW7mV|UK6 z0gIIg(bW5uEz4Vy0ob2*Ec~FL=Tl@-_syiT=VOi^?zHC4cT09&y*}V-D4|7>91M=p z0-7U87Fmhr)!W>?d=favr_3S*lRIR`V7>QNj|)7q>AII~7LX`jdK6L((8r>H-=OHP zQL4+p3$gI)u9waHH-U}CYOS8U%zm(p$7vxsLAr6uYCM8t>XT6c{_L&JGd{KODo@Vi z$JG*1>ukLqTz3Vd2uZF2l7sDq#% z^Ag7dkS>V6W0i|bQ$yY_UtCA$NvpYtjr3(TIK;1cxh4ky^ zqkTbWS>xjNrVLUC`Z#;cks^iYMG%Sl}hnin?&yoSdp*em5%u0;&l(-o#Bz4S8QwSNe(B5>^dW2K{;wSTix7qq1f{ z!wa@c2*OIO3i#wH(Nk{NOo)(puzXmj`_%#DU4B8|!HM^Lc=<+V! zcdN?>23GVvXXObo6J)#_`qiBbR7>@=d_L6r>KAiM`a7!Irr041?F{F4Q`-EiC~)&F z>Xfb8;Ijc?Y`0{=>u#00XCVs!$*htB@Nv2rlk8%XLN4jmZ>?$fZcY%pkz}wNebX9Q z)}m^XD-ZZvJwp=s6Koy*GuND;MN6 zhZa*+}XcT+dr6?I=Hq^)=;*q5>~6wO`P^1f)e3+#2Nq z_J4<&+6?k4RV-+pj8EP8Zui7qSxe+fp_0-ugoq76qM()tHdz=5dc-*}os*Z9o?ZjI zx~$LmJOdl}){6&!Yj!3PWar|Sgs}hBzX9D-DWcg!8HeB)ORz{2G#B#%$mt11`YjYl z=sK9C!wtae>;l_R+vDo?M}i`N^0@di(NDmZKFfYTH0=x^TyOY-;VrUbEWOlM(w-~x z2 z|C+%hfm{M_DZ_6wLGOc$t27{A1Q7cFJpF|skS%1O)dRQ-l_&%rj28%tm#2gZA`dPy z$^YQ~|9cn;^g(x3;_;C*v^S#$zz;lBUPiu;zAXp62&8=n@`obiT?D@`fPFiF(#fZ1 z_*#ETE0;J6Gq{3U|H^QBf!5aJ(OnQpnx6piAF~-e1M1W`dj>1{-({9CprG@rapDLJ zV6hiX5#i_w3NC{iuup%=EdTiR3ZiGA{1cHdkWsH`t};j+te5AKFI~_bKupWMOcoF= zh$UY#Sni8xu&jD$8bXj*{DPk9gY)o$JC}HJDac?mKWp_^A|6V1M)iJWyh-ub;JO)j z#@({3nK$ZJ$)B3&Gt@9M*3W?;9?)^8iTx^|!cNP9*B2P9eQm%l=sBrTXLahE`R6u9 z{CU+R@ncDFE6B#e*Rs`^j6D^_{aNj{fW62=or95vUC&kSgZBYZhwB*!G3%R~tpU4E zhnfcy+6SjfUTpYHNn|`zI$TpqDE8mTF9mJ0D&HNKXRZ(Gm3iC&d2^3!FuzK+S%5fA z^0RT5c*KdtxcYjpCfLrL5(4A2k2FE@@i zn!_Gl0;Q$D+Oyx803=WEA)CINEW4rv8Tvs0kY(HFmAm)px-~K2j zpc^l0CS*bQoX{@2T(@Q3T|XndI8eWd+h(BoqBr@9_jPLs}^#jtZ`Fo%#|j` zlcU2Aw2Wc5O)X4zEA%hzIK4ddfSRLCn0$IZjueBD8Mnt3pR!q)h3G)ud^G&YQQmJv zv;+GSbpjbr<1hz3O8YTq9xV-g|NdgQ&ZlB>pZK!_Q})xuA06090muH=Eb?cTP3l+U ziW5H)Mh?<(8Mtsj|%l*@1Q>a9Mt*n3w? z)g#@oqq!#AlX18=y$YsnbPvGK8+>KfFT66}|(lwNBjlw^)v8)%maY8Cggw;Y+Qa?ks~-X__{D`|fz+X)q3_T3%&k<*8}H?r5FQ zWD+W!Ax&l<><7v+#kyNDEPl&GoxQ*OHBs|usw8fJ*^5H52-9CI;(oPkOA^aPomWL` z?BqRB)TAgkbTDX)K)#F^UEPpYfhB~{y z#CcrRHQpd$t$zKphP8sXL*CNinnQ`;O-(JOxLa z(d;NNII7jBInoyKQfy_T>bcJNd|#@9Br1;U(n2aiGsI%7q5mTn!0y9ey4RLKc&};8 z=>L75X^Se>5J@}^oGg)5?PkP%#&z~H|IWH;Ibip zAVGA+fC~KVM3w#-gSWjYXC3hMBdG|pdf%$5MP+)0JDv4&s}^-~#iM&O9n$yLNGl5;pZNR^3wdP;KW09mGbh zaqPZ;7U<$Ny?US3$gjlX=5rr3yZPX|zb7Wt0PQC)Kdom;B5qx9`cXPzVooDrGhNnQ zecdZ(DZss|xZZQBoz2y>t|VHtVL#(=EkHdWput#QWg}a|yUC(%O5Xy+8>xhiyy3jq zybp7h4(ni&%^0-Y`L}%VyXG%X6wdGB59^I9p3Kj0%o~_8VMhvXQc8p_LU5Wal+-zP z7Q36XVpWqe*vpC}Rl5)3>u_papFOiCT34NF^i(}>pg}0E`kIlGdFDy*6B~PPgd-I;6OHvxZCut+=B7hoWZ!^X}rninc>mCcnL^cnYX%WwMaY&IO=UDg`iGwvr`LH20hCAPM| z;y~S}DLKCNGW_t9_e3+p8htKtrgVY|jKqqKd|qY;M=^QKh)&_7)b_;t)pqR@adH(- z$&v9oG78`r=*t-&Z&q_Nvc0rrd3$rgyvWDhN&5Nn2ixN>F7x*=c5&~|T$%C_O6{NS zZ|L{glwC&^ZV773iz@9LR7@-m7?nS^-{Y@$=*gl1g|F=5{!T{xIvZ+$?5{$K5NlA4 z=W?=OC*h%?*^&lvR@a_5tJ`4t>x2NN7o9hgzB8u0`jmVBWvZ;#4VJ0ti9F|y8Lx3~ zy}GIOL0tZMC22uQ`V$vEu8lox;L}#z$<*<;Rh(Z(DfyJXf8l=oBX&7AV_!erYt`9n z>2W|bzF^zAS|`inckA8Z*IYhN6bw{$@?1# z7++wes~=+-z&ya;bMoNmmk=+OdSW;Qqa7X9x{pvR*U(JIR4vV;e9d3(+WyN*v z)tIJwLGAr*@tvdI*R!Oh4Uwe>K5 zDR8Ex6-2eOtS%I^zmFSmLWKCRAGiRr1p{1?hvF|D{+ZVYRT$f3w_FY~*du^B!$Y2i z|C#ch1&%k1=FAZ^+!?^gkKtSjf9BS&!ob1CzuOuJRr<~ptNFJNOvFcrZiuC9iZp*( zA~#l&5}dCXIhSHl;$Ivh1J2^k75Fp-1qGdIRN(?p96?1qYxl5GJQEX?J@lKPH=x|2 zZu^h=$bWOl;jhRI9{cM>qyyQ5WBOZYM2`U1}vj&}}3S=(^N=aUS&My3K9u?UGs+yqqMFrsRXI=wqCf4wc#xN4UCCuYW z*2mmCrZ_vxA$5~p!(th8P3o0)>rJO(S}FV^=BS^;87yUKgBnW9;ig`h=^yOGY!6>J za$7nx0Vz7@{QW`v=yxWj=#Y4g>0G-Ay$+KOko6n6`R zE$WAb31#&;8M9JXYhk^oPU~JdMukm1q2R3##`g0r`Zm%A^-^II(-r*&WA%wc@70i2 z5v)krOE0G0&9_`jG>IJsq~)1IjLTC0i@Z0Fhw^XVhd(rAX|aTmJ!IcPwwP=ojI|Id zTUpD_SVC#Buh~rzV{D1BZ$3$OlYj0^d4}7a+6;S&&>p3NkPHS27i;N97zP?laq5N zx@biptmJXkmCW#~x1*PzSxpCciwH~mH1gt#pz2Z%Es0Y0t%1uWZSQ@Yl>&X-)J%pw zbwbrUfixPvz4QXZNDmmT-C&hTm`u=L1ob%?{x8n_TH6Wa%L=g3WdahrO)vAXB=Roy zN)ty(Y3ZeKJ)l&Wt_BnXipMMG0w41)P7{DK4JA-NcpT%aU z83^?brN4_Jxf7RPee)#FsXF_D1Z7k9K9m%?yt(-5$APKGG*zd8&hl=3{ga$q1#i~M z?1$&Ue?~L!-;9x~h?*&|*lCj4`4(d#OpP}L$nw)4UWN`aQptGEA!V73-4Bl`8{eu>3=lN_Q>Z z7k}pwex=c+`f&2oOthGS+506%Ca8?a#j}#_y(0n=&|K^E^KQprygW02bAZ~C{#4E= z^_VydiWpgLeEGH0_}xB?m5TPknGfwRdWVAZx8Ox< zU%h!){jjFKRV>Ib*~8LXijDV-Q>~5DP{Xc!*I-iYw{j1Z_g*zcvgf^bj=2$kKEu3E zd$RB_f-t&&8R$2L8W@L5R%FrES=}ZzaiXD{^s>V{*plFFx@CHqcMhxFsTb2?zEPOU z16H+1ZnbASVo!i6k2v$Dj7n&7`5*KhA%$CP5lkXFXZ=|$Lv0jCYfd(_?5_!Z$(I$S zdpIhDEm7Gwv%EcVVWmLG2b4vG+(#8}jpy^pD8WupzWz#oLDIQtgAOBV(;pWW*WK8D z%Wda)0CUz4*?JtB7J3376_aEHbYQp*tVt~GY69oPo)k;_({b`RXY^92#b{SN;cz^S z>gX!Z3sN+nRCwwAhN4SqJ3(AQ(xir^2Ra#ez4%RGW?}<%8?ZR2UK0^PYN-^;KtR@C zfGGBx*uQ|e2W-shMwxo6#FzA;)|(tz=!E{}%~TJOF50f~B|6{82MYZ&M%k zTU}ug$z!pEjfxb7((0<&+HARZ%$4tyw9j#<2zE;aEo^0GNEe%=CNzN+mdV%ZZX>RK zO*^WMWMQ2Z5f;_`wrXX%s=V#ywC-CBH~m5+ss@OhC?W3wLgC4WUA|8!nuM?zkol}h1_;8wUfehm|}!3alHc(SU%R9 z@X3}aP5qoqp8V;OdhyTvU^m&ViIre{Z3L4&_;lDHigbnc?T`bSTx4EM0yyeQ5!Ti2 z*5yuDXv$>N1K%b-MRtJ5nGs5V0b$!6f)kaXgf(PX62qn7DSWnC&2M}Rts^K?D1n9%ZD6rX&(O&MUq2A z6?(M@`b;b;*&A6TKXH&fm%CH9Z4{cwI-iqeteTsur$MinuQvL@%#!tvr4ErZh_052 zn54iquL5$!sC0we@|@|a?ZyuG@vtVB_6Nws^BzmRj(pjlhP}n_E*?CtAaOgN*X2KS zS1Osv`k8v66oi81Gdt2=#ic3hB{!gk!MXk9Zh`Rah^9)E4yZor43D_zk)tvthh9B_ zoC{8>%VEjHjO7Ml!`3pdD2&7{9nlZOBE+G&qnpUlLe;bp39Kn>7~SnD{`vF$cL2d< zc?aw+Y-QekHgMkFWH3|es$#~ z8KM^qFiea`%Z6rzHdGS!mHYIC@^qZCn=PgEZo4r%`kIhvDi)})Ms1(-_$Lf^br+D} zV%2lDfh2yFxau0?Yp?B2C&Ip24%I`Eq^o8dS&fD2g)b}H5i=r|n*1A@HiG3v4dChFKV&L6?WItD0tR8 zb;)IHNpVM;;lns+`=f*|QKBY?l95=qMw%NcqCqTgx8L}ee{eT#?E>VV_R_;mQF)jt zQ`HMZq%2v}bFd7^?LWWw zK@?YeQ9y!hJ17JZ$o|Qd>>-$S%|t{`z}68sS+7qv$Km&p#9I7yw;15V0hXyKLmtM^ z2fVXgvo@kAmah)0oQ?cWNU+e?FN0OuoE6dipkw+#u^7>zj1hMj7+!-C7&>cG2qHtnnQ zyXo2HdrV?_Ut|qC?yMMhALpb**5zJVAZvLJ3`;`(3Q}je!}f3i!v)AV$hP+O4>*Rp z-{Y3~`QA*$V;v>nzN~}9PL3HTnaAf9d-^!!afBXx9igs)x=O=6v!k|V*%&ml2&{QrgBqpM*sp=K?| zECV<*>S27M^0ffBVh85ce>ZZGtf*6uB%!`sK1_v=b2I9E7WDq$YmV1D2c^Kq)wtYZ zuG|sI&)qa-XUQ4bi1A{2qh?oIBIYaJ|1ekANB`urH2 zYc#N?PY^ix{(;42aR_eKYCAl1URTH?93td{vNT=E*4 zyb0RYFXoHuNZ)Tg);h)2_r`H=#a$id;tDEpW=et?(iF%dga%-}087@U(i1qAe4Yq_<%$7A5A2@|?%=*svhmS#(CmM&OT6U*yRb4bCvW~o*m8}Z-4ncFh z(V+A3ANsh|7A`$UajOKe=X3_RsE&jiJ;Ug8SqG!(acdHmsSem`Fl(qwQyP1OjC!*( zNjk}WvjwSqAml5%y1I`?C^(@xH`)Ap9Q z@=3nzKvY*nu~!c&zKBI>05bK^SGBO~CyC9oYlp00dbi-8B=8o!1dxX)PNqo#!vB_k z_@zTcJ19)09A<-aQxX03{X&%4k)E2hj-R;+V}&?zN5Tazs%y-TfEHzyV*KuWVSDk* z0(Wd#Jr>@)`p`7&mUb|LBPCxqPUxTVcgqWR5_nGgT_iw{nr8qd%jxHN)3qj8L_g#k z^pSCcVgAQbMtv)@cy&H?lbJ`%o{c6Of!7-sK~!~rgsfTLdE2>nz~4YDv|ZfCl2A0P zJ6#jUGutCVl}Qf>9W1aT+Yqr^K_5!3Atpa_hy&Yu_pa&Z-0J>z`)?9)=1_!~ec)7i z!{ro2zolaG{?MzxM5GM+M%so;w;lO{i3L?x7Cc;q#=js`cu~NHIjYjhd+P5BQIB_2h1kH8n#G!#fd%YOc?MX<_?INT(P1llC<$i~6HAPLt`V49A5@SJH*dnt}0B!ajcF z-c|nu&nx%;!cPH}@)Cq0NYpM>*}eMK@9s!rT5Vv#@pZ(h6HSHLnC)zB6{xYbPx}>% zHy!G+hesonW-?nnPnX%=*0esfSF!Fg_6q4Qg=(8mEp^fQiMx%6J$2syqNqiTZrR_T zQEa8Jm|<8oifl2nl$`7s1J$a(plD)ibul}U%#0jEai#U@nIZ;TK%q%z9iEA({kx*d z8~qPO)qPGRU#F<3C1;}-kT6cpI=PMQ@n)6;4>gJBDQ;2dR&`*CM`%D&)Z%J4;tJi0 z)U7B&<**`+NvTfXi~~eu^jfg?ewx{))#RS`GdW3fOf30cwFe(66|on@<8S!IL0=`% z=YMtssMUlWxEJ}JL8-Aatn4B-Rx0fL*pPbdjnZN8{}NoSU%0ua&yN$8AYh7=O>_Qq zn5(Js2qH+Oee`CVNavM$(HHa=xkv$LnHI{laUJo_KS4QeGYbQ$g!J)cosrPfQiQ1` zQ=a1Y1%o!;*j5_w6iAx9=e4LImR45Yt25a+_p;xv5?YG*&7`QcQkqnHT8R`>IuAnh z!TMc05w8Qi;LBz!(Y58>!|%6h{jItOd)DaKyT*)Cz5~q0T4%fg*B5Fv=y*p<7bd=J8jf}A zlxi7ba1y@k+4|&@Tdt=>-Sa~5Rm;vKYJfTYqA$5at~>|@+$ogu=Mp3P){05ejP!(0 z;o9&chp~K%`{tB3rE1`L`28{s0NEVy)l~I=+w7o#-45DQ z$g2Jm2sx+)EH{Dh1FZj8v7%GFIN3$ZMENKEipQgjJ>vA?4qJWXnJ90 zerQKiLN2zwVBMJKcGLVrJaF}Y_sFSDk%3dd86ORKzx5$l6rr4DxtD$x!m@0 zik-E=Bj{FbH8;xX1cI7a}n6fg7QV>9KkpU0~ z6t(95tK-c(@~$W=nMY&5nYauR0Zby92QPH3#`-jFRx})0TmYc6&zrS%wUK~Ou*v4k z6PaKZEF-i0*D&Rb zIk0a*40YexBtu>S^Jap$_UrNeAb$~x{vw(Jqn?m@tBdkC8ryXm+`KrlmjiOF!uah` za_mm_OfCh!X9H3aIL_InY*?9hn`eb{KfsoPKJ1TV)d4Ca)MkHplOGu)ou~(3gGW z*AaA>v&z2P@;{jKY&1BMqE6yb!PF$HAbm`9fIjqkAj9j(fK#CItH1Q_RMh%XVQ0(w zbZa|qqu7hLkE-WUgQ~x&`J3Ghb2zUb2??t66l&HsTQm{14^~J9Bbw@IZA%P~I&I(V zIXKn9jS`g!;7kIIko@g11WstW7F^W-9Vi^nmdA1h#JZX=y=!)E+b$!YXrO$qV!iwI#Q!U29KQu( z6rTwIL5qziT6@OsWlB|rseazVnmQ0I0FMrS{cg{kMV(w5U6)}E5PoJt2AO`(j&q5) zLvS=C9BftvQLn}_H9vQ~mIv3$Gbn8Est>+u-%wtd{~H|r`%{A;*fUVW3YL5FEwxnf zCL{ife-jxeE5ay=X=8N5Yey^GEUc|n8yXueK)0AO-k}oUvGrm*2DmHWW_~SD_$_b* zAlB{t9tYGeE!j>gT{r23>PY}gBX^)3hNXvcQ-JN|k3&vu>l^Rh3g7JXCmHO4_lk$CRK+y8V@%`Hs(10jf*? zs-@%hmUK$kd9_UrZHGtCF@dM`TLJthbj9}vAVqu!a0Hc;zey-ZzZecox2zBET?=D| z8Gug~@}0F(7h#srQS^7G^|DUU)^%g*9Fg}cucv#yiIUVAw@y1*Dpr{9$}djcX!7pN zfnR4dq;a*0=o)TZ(rmKdx9{(%5m}sKp|=UD5S{tFcK=4w+WSV(WFY9gK!6&23~yQS zc`nVx9rrD_S@+)B6re@pMI zyO5fk+8{26q-V38N-))!A9ox2f%l=kj&IR&Ol*%bM!70eN%qz7lJFQ4xg@#nzFWDE z*8>&GVJ5rVyCWadJL+^`>Qi}f?nnxj7FHp+8L!?B!KFJiF5rxVb z@)aMko`V*sWwoGQ)i*4?DKokVJ#Bl*1KJm*JPUcY0l6H^JGkR!>ku_P)Me|E$%nj( zPw)C7UzC*Q^5HfMX+=^whr;&TDzt%+fCq78O6^5Q+s~mjtM0jjidfrQi`z;+VuxeH zr7ZWCTBC+v7@T9={-QvmYqQ<$)H6h3j}5l1U?0f!MLZDSrGRf`0 z(dJXALLEOddxuMr_D3q7%tr(H~LWFRC%49`2Fa&H2QO z`0JCced*7uQPf*ytKI$fA{<+3f;yV(FY2`^~64{ zrxx;NL?aoo0PjvMG#&5P?~>M#HiDo>*Q<%J^+Wr*PR6rsc8eaBHd$8QCw{ECx2jjH zl_WPin_?G43JtRBH2W*9)`v>y?@E}%zSH^Yc3tgXa0zny8eEiY^X`8AmoG33D6ItU zUUP#Jiq?z9-#wfQpW>}dlhLHz3agOu^|FGs=fl6**w;M~3L6IMuwW8ze>p`E7*d_~ zQmQ*s&2jnq{a4Q$t-pA#ChmJWM6E=QU-3tYq=)ELrU;{Y%5Oy8o})K_8EJf7YTfeJ z{Hp#a=v}>dHKKnyYcx3FnS$65sZ_v_>)?GmTIa>!Sa`GL2I(vr3Q>MKw1Rc)B6nK8 zD}MWv=cyg$9&2d6zB7ehMYO48yNR_;Nm%neQyqrIv!`B=qR`Q@BiiF~T26f3`3HQQ zpOvieuy;#Nzo?Kgg>LQDsVr(wHE5e*nVj((!{x@DD_$ORXG_|yet>XzGy@+bN#KLT zRU9PGd<&M0RvNvkks3L~`5qC<7X@D`Osn=^xJ@|nz;{Cc`3Mxe>J>*Z-rfdZDaPHw zc{!4lk$mYEXFDV3Saa$ehZoJb7%`0+QhJe;wuY=ZRl1Wb#MLRPoOO=7l+a zqQJ{KIHtIj&Y4MGpEXzzx5po ziFB-H%ubDYkiCLbQz?G%Ggg(r@)pqE-C-apGGvG@$w`5*pA_hyVysB$+ey?(ivn*QeXJrAzW*v?q`T=m*PL= zEx)YTJn6c227Vf~LATH^tr4pnbXO`5n#U*WrjjbJ9V8xLD5dbkcj;vbu$1Ch*=l@# z$>5xWktX!?_p9|bJYjI5fR{<>{G4siV;z((Ti>W-{7#0W-Q)rL1WJsCAA6B6FH{|A zhvMS&Q+QgM^!z*(ghaWP0^^caVzKB)Kr3@))#D(`B&z(uxc{kTlkhDwr}sYeSOlwU zlZ*tJFyQgf{^Idy;D5=3E?*Uep!bCkM{Oh5HEMx0T>Bso3YkuaJoS8__qe}skE@G>oWKYz}vLq))N^o)}Oh25(Ly& z%nrX?S`}DM`&$Np6NK`6-nD|sSgNFvSld}T=jU|M8tq)pvLi%$Tyt18Q`e;z=v?l7 zMNxmYLH|rqln#%k3q2&}$9?858GK;9843DiHG$+|N0Pkj{kHl|lly-{a~`A^)V4#T z{8M)^rbGvdCe4!PKd@9-T*b0slFBRysZ>^~FD_D;h9$llAIlrrpVU>%9_R)UdZ zR!D)@UonnDe~&7p{Z;iQyT{z?XH!6@a5*froX_8|A|ZigWp$h^c0Wl>GD8Or_ZCi^pfVTI6_5fjl)pFxw8 zlxNTbA3(8n_3N{XhvwG)pgTqWJ26ea4!lW*?B{b`GL0wAD_k1TyQT5>{TIaLXKKu` zkFcg{R~BqS7{pyw4V2!rW%-zH1a*nV<*f z$R7@+BgLf}M1uB$Q1&3;cGT3?lk5I)E*RAt;Ap!Y@KTOY#iZnF&5y(V>FWIz5hk9r zu*mL34fLGRdt3`%d9GT{|_?@1!T! zAFty5kj*5KfsKq@_b5(q5`3?5W+_tg^5u)Yy}i{H6@bf7aOLi>mDF$W z3zq`R!6KqC(@$s>E$`GZ&b&{8o*w2b{xj{#nm}3hCAf(xxdl)R4iEgf4u1h!xb7}w zx>FZjB<>Q%&|?1E1Asm9=+rshc>ewds3cU3HR7NagrdKg z*|+3;M=yEJ!YDg zswS;g^JM-IXqC1egs%?bW+R+zN=U-VS6}w$dirX$0fxg?@snKo_ zM~-7M!PR+%9q)AW8g298Dn#w?A9z8{m(9y}=db&2gq;Q6{omOFqDcMeWC{m>d(q>^KpCfc^=~k8IuyYl2Ngk9 z7p4soTSp_Z+6ZfkR<{i%^r0^OciUq5vxsf={r9?+8$WUD=tMd0ZK_B(S*muVrp5-* zbT-HE&`b}Zc^oGjM0EhO_cOAP00#ou1Kvml1Kto|Cewkr9LeGaX?t6VHn_GgtXWXy zz`wjs&0X=;yFFP`24H%3{RJkk?`X^Kf&@g}|Ma-XZ<$967mFw?O+>cS)Fx2)g z%ZIiD#Sj89Xr*q}j#xN9d|S@ObSPo^lyyaX?~jeAKXh;!A^Q?4Ouvn)!32G@rWf#~ zmt*DwV{d4lMFXe{Kv)_Q9L%82c4w5g$+g|W_*#3sE)&#ltE4~i%-cs%>C9h>Kq>B_ zhuyfNOx9{hq_jPq1@96%b|=Bwp(X;RDz4JQUIBGP`J)^qrQn?1w7Q^?!w^l_OB~(_ zZ2Bqwyy2MD>+0`@Mhe7GhzyW_xfZ5vCvu`GG2fv1Dy7Dig$Yn}o`fDb+SCbEW289k zY;P|n1P$qYA#((sG6S1W(NpZj03;U%)MZQmc%?TKUk$4lQ>fay)gzY*-dq!S z+VYBiIg4?~PBIihqT74nZNVU$5?6R{uIuo8ianE*bb}a}NSxo7dD-Yv<%sbzgX1G3`2+=Ymvft8+^H>dkiZ%j(g3w_@|?nx`a?E3~>hY*r)Pww%b6 zus*FmXW6s;=934!138wk+={KCw;&KeIhL1}#tn!fq2s3*MJN@Xcj6wQ2v-YZ0sLNj z9NrIHq_QZ#8ZRtLnJp+`lPkXMwI>-?ZP4h>qSHINOPQo5Q#lNXt-IcvsA;T@RW0%$ zq0K9NNx4|+;e0jqNy$ls&${beu20Xu?a@_j&r$0CmqOT?ntkCrlK3gF| ziH+OGUVcc}SNHCQ!C8;Gv>ZU%Nz$n@0xUd3P;s8t_4p=pQuLBV6#+WA>11Ei?9nm! z55i16wAO6b{<_wNr>;6(p$!xpU4DYD$orcOtV)NS2ij+&;V@F#?;ahTn#3W1T(*MI zhp|m0f+kGh_2RVQ5fKF^0GEdvj3eKBjFBro^dqevET~q^N};ah0jIwqgnAPf70AVd z_ha#r!_4ou$LlH`-i~_2$M0k44i3ya5^GE(tXKDECj%~U#OORx>jU4r4CeJ^6Wh~A zzleK=7Mz=ikpk^m2nkL>{qXCY+0A!}$I8*Dj6?dL{ikU6MN$Um9tA zeh4nZ-(`iV4`&?=7dX7)5ZH9%( zFd6;$))V~TPIcL#99gM%)feQX&=2HidaLQVJ+^C)5ye01v^36&JCouwfLS92X<7lZ z#u0%1Q@6A!AxRKck{H!Y`MK{q;+hD)M?Fz?VFt+UZX%HrLrPSmtX7mkGpFnope`YG zTuR*MyWLSm_f0>lM!e3f+3wSIrb1;D;(v-(pV8Y;2Gk(iM zM+N4O>mSOKBs7DUTSe?R8(bocXA6?Vi-KJ)pRn1=zREMr)5Iv^Q_Nm{TH?|5NUa^m z;U0^$)K>aMD{uEAh06ZCWD7eb-s}7mB-Rz|V=S>h`afBD7$Xzw9)*dAB0R&mR$eJQ z?cxup-nE>$znEh=@ZDB6U}#EvF=*dyXHNR?-4}rV9ZD@S`rZy*I_W13Ufjlcsy&F` zu~WdP5Z(?t@(}ylvpv+H-H75QWxQc>>~)W%TUgES%bYXzaC_uHJq+({j>CZ#_FKi7Dxuk-D0QDOF&O;L)!%3$M1jwm9P)4BS64_?#bz&p&Gzyqa z%@|&)xb${3LO0qtfjDWQOvg|1dW*OP-r^`$t#q3oB#<9kqeaA2>=6 z-KM9zr=K^yQYpk}KzXlpOa1$5*KiJ7hbZz3{BxN_Yoy`+DThTf%O#g5&7H0yNS`nk z$4wDtj&1hg&|-WDdaI+2JdbmgOrk;_VFaGlJ|fc?1ae>pP}P=0h~O_r|o6& zsH?qgW6W!GUzC`aZ&br))e;9A!q!Q>5vwpeJ)j`VOcnw-njthsAP+r0 zmZ+G!c2#`#4Wu1df$c0{RwHz`4Oea_$$j^>EN+*g zdzNHu&*?nh{&k;kZL5MZZ#>x6=3)g4^7VQ%I-pUGZtGRDIh+L?&%gs9;QGo6 zA`2R_xnQ}jHnr~?*zI-78M+!I8>s*?*?4?#=_bg2v7@&F2+!-mjLf?ySJ3>APQCQK z0zCs(W}>Xc`LLa}YD*D3Kl{2;<7(%~R7G+OVsp}o2xqKin0_C4%0&Zr2gCKhM5Mtu z_CWk0l7~z%?vR)d@(AbuCoWDLK~#%7s&P&&DT0OUpt0TC6K#({4Df1n}K|1C%R6PL_@#ncwj%M8*2u(a95|NPJYj!h!R zXbIB`-1=1WkooL4#-DwcaMD6Q+t3qtJN&`aj2-}d5?}=+f{eeD@kdn{ZUhb_dwKar zW|$24v~{oJ`ENqQKQgKRB_ZeEQ_(*U^Z)iS!QBJLRowN?h2R(oimek9_gG#6e~ec& zke47bZeX#$oLK$BvCq#W0{H$CnIX!@i5#PREAXnaaa z?9-b;OAPAs+15+=u12p|%doJF8B{?kFw5{C+Hpx0vo` zIg@d_!WGJIdX*y^I&0=rG(SW6N8M*FnS(Jj;V%_R?D}UnoObu=u2u| z=+r&sYygl72DQ+n!N5IUdm7Yn4FT*jF^-L|y5B0xX(r%^49mo~IIFlbMMT7>`g3hE zyi96*n#uZuwj7~(CNcsy^OCYjm$-Cvw?rijjIQOYSqAAkXRUt!F5T+2>wgZ2@eSi( z-C9J^$G(@&AZVX|__p7X{GEp9Q3KhT_G~c;yO&w)nXmZO=|ytXp)y|XiCjo-xFUBf z;(c4m?cLim-5}HtD1s zYA`pPMS*VBSjBaVABP7SFgB#IiWFT45JiOGg&2c<>E}c7+2pbvsF^oM_V>u%3wBQ* z|K9dp0%M~J2muQu6#)i6v<*b5Q0o}+YcL(<8zO@BIS4Bn^j%j10@bj zAWr_C+d~GrLMSE{Tw|UEW0-XE(#|M-gpa)HE0m}w(E>nX7_SWrh(2>6wLWlr^;e?H zVzwg8&d$h10wCi6i5TJJWN55XV+0zY$HAc2V9Md;pC#qU?iC&|RN zWtsR|ztUS=6X`eh;)7Os?-wg@WjyEK^_K{+9`B^Um<1*+>~kk_zv*B9QdZW!UbW}5 z7jFdHsuDctYJ{;M-`<$-IYV;PSNA;RCD;=AOxnuF&4$}7j9GihFbQo#me9I3M0qS} z2_}MB`p6AW&+zB3k7Z%`)7l$bl3XkEvDq4$Od|11BW2x5P=LSar#mj)-09PIIN$0K zHn5#6kud@6)337DxvZfr6;~^Fki0^cxA^?@px#q5W*L10tJTV5BGZ>|m;&MxIi|WdB2;(4 z48_!wEEXj3iMQq26!%FMgf?h1W77>CQLFPVncQ!=^Y>QEoS2G<7TOcVLzFR3cuGPm znRjSg;o|h-`r03EJC3WyBUj=3bE-}+R*5G?Vzgt_vrP_mtCVA#ylW);$+Qj*BJP@P z_YY_i^i_LT90CFTjalupEqi%+^i_ODXL+0EK6n(`%9O%*8sLeG7QNL3v_nIet-s{)-gF_{DK$1hj z2r>ZdVPfg|S&-(uz!0)lavl&!k#mkFRNC-@6u33tGGKr$>bbzZ4MdRQ_9KFfI+VBV zHIPaDc`V?C+Z1Mv$GDwV5uNUf(~~hwCDv;$TF70_E<`C$6AZg#aU*AZ!cHX$(`PUN zzXnS}bm9x;;eS95)7jYlK;?dI39|-gy+vcMNg``?jodv+qlwm2*1PNByx}|Xj8UC!8@_va88h_xOa6hmnJ{6ZoH@^+&^hPA_C~% zo>dDN%ootuZDj(!wa{1l=HC7Ghb9%Sxdl~+IjIIeQ07Cj*z$3o(&BU9;vU^Jb=uzi z;?`CkSW}@;y`Lv!Be_;NVpBOg)|qcQWMv_`DN*L>3&bN=DJL?+SJM~$m{Wz;b` z-seK9w^zK!&tX9GLkM+@B2|-(!{QCpj!0tr4wKJt^v&Fjg}#9I6F^u+)3&HKK31eGjsgUEl}U??jRZ;v}WmX0%!4;!+#M5P6j z$v0CcWAsm8zJcQA!;_is8|=N3&!*fEOn)g^j9?2eQ(p(QWTGoerj?W$v`68q-X>@0 z98oSN-iuQ2>%V!wxtfhyf6!jEkdw`h#Gc6lq7|_lrev5a78tHKpXP83?GsM_H-<3x~#nZ{zHc1Yv`I&0jcwe(PLXTQTJqcU*5wb*VL^i@f} zRFwl@ZWV(6eEMEjg$dj)y)$wrYvUgA0-pTkfCU}$K3bg^Z6{fInBM(>?cPphWo2?q zp818420+1YU~lvRz{~`ghxHNKcNIZoK}CGIZt1z4w!i1$caKT_+GHB48!;L&oq}5i z!q$8Trz^%+eRiZE=(M)GvpL{cGN8eZm&K0v^Mfv)P-$1rLrpBE7=01knRAfF~Ltx7St2V0L`Lm}de>`1H5lo-|+U@S$4 z#dOePG5pjb4>!wk_)*K#Bs_WMV@uX)T%X$2Z(S8$WZ>C5lO)&_xqxKvjoX?cY$GCI zll1}s?k;c^15EMQ;QMzIhL4a)3e5cc1FmbkU+d0>G)@IK6__>NfL6hG>^~}Gox%Uz z+v>60zxVx!1Mg>VCecBayhUoY(oA||D}3!+l7YdkTXL`fohN*bK!MY)!aPR^VP^J6 zL=yawWhgRpL93i*L)Vrt@gp?Lvm+x(T$#6h4Rdb`?A<3n!Ybqu$M^-VsU*%ok}4Yf z9;(#>jr=~1zU5ss6+K-=pg#1{l^&XV|1+%^WF5Fmx0~tC>EIw!#pe{>OJZOE^sLx| zV7jWgJ$BngXMxqsuP)}nyl$RNUFh~f)?g_I1ys5yU5Vb6({9+#;*qeueenhO%8^Xt?RPR zeXyy&u2Y`n`HlY`W5T8;U|xEJoH}Ts1b?g9jSwLFimM3V%w~=&0>Ar8{6>VCform; zu&^rtmwP~#pP?A**$O~rKKK(_Qws2yz)s}kA0NrT{BSPd;Rv8eW*qG1VOu_xYOG0lykh(x(mcZ})>Ph#<+I{&q zWbu!~8CMS=vL0k>`xXhT1CMzBe_XtYo`4uC5c0{A>>-XwO$>ZQx}wIOJ}vuv+Pk>a zeXZ!LaZpGY0}C0@i_+0i(F6S8xGRPQd##ES&TBpLB1k7X+D4*nu>4KatyT(eH$Fb) zlJGrblYqPS@LF{w3AS!-K9X>;zGgpCYU?_=IiCguoOrMKiN2A&tIl>7<@d_T41>v+TX1<9+Bc2a-aE~6wY7iw zftAh;=2z~+ue6@Z;B|+7EpSpK`rqbXWkA+;Jx{Rh*t`v#KfhX3NrQJLZNH?)hYM*t zl2A!wl^%T@nd(C5sm-3Z56lA5T*zl<9pquzF~Y&c|6K}2jY|(+ZHZZF*xa*@Nr+A< zj?tNMH1%E{E}@0y>bD3E@q-s%0ZFk0zm20T$!UY9NWZSF8IQ{%J*%?dD*5b4Q3;vp zOR*d8!x_k3+rLS4Kx29EwLdqk0j;_-cIm-zaeK(1P6aN^M|qxLSA#V+j4A#5 z?LMZ(b-q>sw-CjuB4crs7$$qVH0ZKpxXX)f29abPcvm1+M#_kxd`|v?#UmgWbfP4Y z1ihdH1AtcOxU)Ly=sB$va@nhZO+jlG|H^9?5tTj^bkJ~} z8yIkSR-x=WPg$cKpLV-~#X4ksSOf~X17P8$p8%bObf=5V=1xn%~%%u z#u3%2)`uOdT6Ky_w|;vnZJ7e>@M@nQP~#uFQ$JV6wQUE=3>pWkZNOe8ngi20rNM(i zLfEpcI7JCIS!>2bqyTmSB}l^z*f2f8^xGWJb}A!I0$zHdj506NW2M@H^W;HWV)$f( zg@p5c3|YJSd%NNP5POxmEYkT8vG}?^`-eY;(CO%C9AXqgUzQ}Sk>1!&%ZTgwyy=KY ze?}fi@LMwvW)?8C`iU{&YJdM1Ln|WdnWhJ10H_70RwVsTY!gRq7{YD6jj7%8%s0WO z+fM^Jeiae{_Rt27i+Hw7D3RRH>Hqs%zk9rwv4AEQxHdt5kh7cMwv0b$q=8vX0~Tr} z*oA-nXWxGjj@d#sJ?adpX=q5bat;@205EkCY$_3N6ir!Rj^I=CiMFrWYzR&Sj&}#5 zkQN}J;R3y;wcGsG)*f+PlW_lvxS^@p`thSbSO0&3wGfUtYrirO>;g0^1g8gldZE;F z3&nM~9p5bdLt09T2gFB?I3vUc96|@;6r7_tCxjbVE9AnxpX+lv>T;KLsPBe&57{HDr^|&!F2KSaFzn{9wh98Tdwxd1pJ8|;H zYbBV7>bZpZUw++SOd`Q{!J!!Gi2?=cT*G==2XP`?7Xl`3?ZFz~nzD~?k`W7H!1pos z$b=Q6qZtp>bd}8iR1=Z`JryoAfijbTE<{_Nt4NEDG#pfAx%)AQlNEcn*yH<6$8qnP z$Vu|OcMjuMO`&~~rhjj3Z_ygtjMM9-0<+H>C0_{qc)?3B=*i#%(~}QOA&B4crcD5X zHC||6#jX;chMtidGJtsa1G*Osw=qmP_yduf; zw!|3rz%lNoC5aOHMiVv%j2TP-2u|@w6~5h$*I~$GR0Au(Ds<#u@dkrfnp0|__;x3@Mhh__wM!;zeFS{B#nBH+pg zkzYY*fKp>_`%tg(%wMyWml7}9_mP30YXsofBWBcEq0C~F) zHts>LT25aI7jmoO+d^B8>V250>+;Yv7t#isXGe}nJ>1NEBa)>ldr&kfQuT;J;D2t{ zbIadzYeA2g8@MuyeCjr|UKCZc_Rbid-`}FSndJ8s|PnraS3vHiNN| z&G#{AJh|iat5Y|%qK#7D-p!I}g8$TO4eakH$mS?;Pj|bF6*?VGlF|6yWPFFwXE^5< z;9=Ik1;Cg=tr#7+5f=O?!B+Uf6#?;totqbCo^i@JrnGvuJ}yx9Lv`u!9+?RM#h2njXMuM%b0@S$hpS$xBNgRtDz zv3|5X&(s(^^;JNF74+a8=)I2gRK8o1UOuh+uZti27U-~q^Qj>~>JsD8fF}|#F24v> zobIX`*=`7No2pO)^Wgl%!eLti9y)e;Vb#Pgjsm_)A~Cm7hP?__@lG-n9e71Zh{ZEG zYwXhww&oCRJ5s8(DPux5M+iayddve#a3)@?J%wwfgoB-awI&0D1k|%Hbn;BR)fi3I z-&I<)`FJkpJ7(R>{;}8R`-ua2cmJK;aIqXTzdQ0`}iPrB8um4}X>e z(lx<`LQ2DbJ;`ypg+m7>PFtAzXdCOz3zfO^+;%`x35Ppu_6AT>fY{=wo#Iu|hdAmZb~$4X6f!kl{GaPQP<> zPL?=~^WVy!=ZCz+?WdsPbX}_jgNdFq_9DmJn>Or&gP2$5#CchWBaZ8)B{--0n&>Ew zx*)+So&OGYH?5F>?GEt*@Z3K4+UwhwXKz~JVGL51Bnu!kB2`LS(Z{v^>1z_PCz=A? zrV{E9U2m_Ebx~@@U_eaJJzb46GMb;RO?0T{QoOWUxe=(d?Ak*o{i z#=mzU{8?!Pz5%lMSyS`83!n&RZfVJ}qqv`S(C6cHz%_sSpJB;SfiLr2VPu+S|4`%Vc!yr0Q6gL%bHda3Rg?<+d_@k;~Evu||>Tgah&`z24;j-l6J z#$QBsZgntxVZKQQm@9?I7WHXhn!bsB{z0C(1gw>jz`#%tc^v)bXE4sXiFfe0L7z1r zz?rEHQwPDhGuU*0`c3`(GhBNiSHg49Brc=%)zERB_c|_op@l)vB0fu?2%nCdra!GBjxG=mT7;rS5Jc8i-v@wO?{!=Y zUw%{TV@F=*yWq&Tk^^*%Zw2Cj1;`Ix-v4Rr%EO`V+J8l%Y)NI0to6v6H1@HTXiQ0^ zqGd#lt+K>eCaOuY6;ZNG%aaL_WhiUvk+p0SA=DFL7*h-~migV^G(FGtyWaP@UjO)K z=FBYM@L$wU4sU-41Mb6i$0JLS6V)n$~tv=~zFh zQ#QWZ_H*%iU%-(Pvc16ohadx+?JFT(y3`Jd)OW+RBJktJzz88#_{8>*q^VWl$k=0r zl*_q;l2r_koVxC_^P4BcG=AV7x@E_Uz+)`! zpxui5E2%CV1Y}Zu&RNRMfU1!~?Rv|mrtcW>T#p$gv~;VxGg4?@1s`Vuh-yyl#7Q41 zAQYB03{atrTKhD1@T}1xoa<9RDxyJ)`rh}I&{gDvCjFv-tYVP5*l@3*+=MzE*D2p? zC@d)WSCe1>wDLEYA>oS&CRX8eqyg?%#vy*k>;T#;kluF5!@=LJ&>!_wqn4U9VsN#v zII-lkK;8?b=PFNJBD%w@q1@8P2S^ape-1vj3+v1yd>p8^Y;{{Th0t>Ld|ufV7P!w^ zq`9#!+^W#Ct3-{-yr7&*fzOj9ZP#7)46{aQ-@8`4-4fVsvW92Ig17z{p&pRwjf=c>CCq7s~p@2a$TIjxF#Qxi4wj*j`BJYps*(9H; zb7t)0M)LM~D2+N;je?>A?r z(x1j%JL`+vJm~iNf0v={HS~zP8{}RKK$|^kZBo1q;10L>cuGnx z<=f;$@X+sGbz5UiKbW@PLCG4Ho-kSG*f<;>V@9BSb?>RQ^xS|%-tC6}i;f}|Kz4=$9R^+W@1**y*(YWPz}=fJD}8~~yL zVXoK0?nWH$Ne@K|!9pnwCQu-sv3QDzTje--pyt4hN}mN!0s0M}aSN>Bjn&9;@cX49 zcw>ZaIPL1w7&0BM*=+Lu0XcO{aLB%+`@|66Nj9mHLo?LXkh5SrLM-X}FL9|?vwzfD zvE27;U)At5Gqc!!;m>C6_sJ&KZ;rH$CLNe#Zq4=?j;6rvpkyb|sA53${EJai=D zbSzN&E*Z#A2hb{N*;L031h{lBO0R+NMWb?bH14ibewe0h$m|11^y|Sm6F%?W#?@0- z%M*b+yQ39!bNb2?aSNy4l5-b&y(YDF*f|c_AC#x2dM8iarW$^AJ;O?J;)zJvH{LGD zn}ysrm?uht*8h^iH&uv(0DW`ECe??xN&(-}bBEi0D&>)Pca^+!^vtzs^*Rp#v&!xn za%G(Hx~>_qCjbuR>uZM(U^9ZpQ4p=!=a?SgdVM&W;1b*|^m#N&%L;v`lz4 z3bEnfjCUPLwy>b}jzTD?xl>>F>3Q$nPx{0G{WnM3O8#=I@F4s|v&@LBIiKEAM@W$Qu>Trzg%}pyTfni)Nv~p8 zpKV1Louy`+y+eQUI7Yr-8vsdg1N!GFvVUf}gNY!xBOr9IUYVm_YOVe~5_av1t#^`h zd*hS)4Y%0mrN!4Clug=o{G)0=A*?DSxW;9+bNyV?gQ}y0H#dqjw0p!h){N@%etRjOP=J-;=7;Uh%37EJK+I$Me8H?6i!8l+-P#y4B9AL*rX&Upqf<6ui3` zG_5P(@YVmQJAdJlj67f6@(c2FGEi(~@B;>pGsKN<#Ft-9ZSEu>qx>AqtjiaIsO}MC zAq(;cxLjSltUgDKkB*a3MZS#;QqT-${UO$jsnDVa7CO!6xtMST#hr?ou#91VU6G72 zp-8lb?(^ZJ6}BvZVEMrC0oTi&0X0H0K>*b>a|2aTyIO~madg=wBV9^A!Tl6mH~m(xk?QsVSyUaY@0 zB)s9lnd8)EgD=w7`=K10*4M7}YajMtl77t}*@Q9~>=1&0IJqa-B1Oa_`bUBRgckb9Oa8Bfn^-jFh_Ji3Gf3^$o?_ z56NRgzyWdgT_~{p=d)ddW)|40v;6cDA?VoCX6Hm?;rJUQlYVUIUk3#2rARq*-1HHd z2bHmI4R=xGc@+7AJ|vyS$Mt!qI6HW$yK9CEr)ANMhO_X(f-D7&d4jX6u3lJMg)5VZ z1Rf#uLa+sv(2Fg8}+@6>eGMkP1>axvC>>Z*>P=pu)O)EXcI-s`*Xb3 z0^zxk+)Yky+Mp`(SHzNfT#`{E3UB9~$|jK)A1YkC-zXqioS`je)cSGeI!-5O`VOmf zl+BhJnf=4U{ON?hdvIv5CFyu{3*W9j#hf8?hM%4c zbL6uS=4p&%ee~G<)!1av_Kh7~WHbVwH_8-5EzCOA3NXGk#~3WWq2yIM_di#lRIP5m z#@=C_v6hD4x#Hm!vrb4sW@kliB=DU=bN4yXlus&xP^CaAE#L7>Ccb*o3$uPkTK9=5 zWldH^?r}_1>b<1CH^J7%LzXI?#FjJd;GA5= z%`O(5j~Q7$vJkC6<~(&V(LHr6f#AgUrc$$woV4As`IdSm`vZw60A|6l$5wnwF39a$3$rHAjuEpv1rF5TE(Uf1l5xN;c zzYyA|@5WCzi!?brCkZy0{h2>n?5BtOI%KMjk&9f(RYmL~qKd{a6gqEI(22EbHxVG< zIs!jNA9613A1dz|?g4|Hh-Y~8A}h{KD+V8u1sT;g4)IFrm?(~Gr}Cz#7Ezk1F7MPN ziFH+-VDYdxPxec?|6Q@trZU+{6&q8L{%dlGUFgY#?=vTRfZfi|U#qF-$^Yqz5ntMn zf!OUj3#`AJ?)8ag0EEwsxu+CFJH48&D?r7uB*7J*H3V1u-;KUVfkHePi4z;lphwX6 zC2yg`NjHX=jyo)J-n4ys7ODk$aq#t831!|=xT=5KOgx-wB>Hb(gRDV^cdA(sKHk+rC5Z z{F&-^li)g`N#IyzNSA{hi9~Ykeom@p))3G1&WQ+3Kl^>SMP=}8rR<88xtY$v^W*ar zC{|moGpI}h68RX*04R10s#8-_Svj82ZF>P4d7v|;Zr<|lDj3|89~c1-xw*Lwz)e?r z?Q&xiUV*HBZKYxPnxPtw$ZZKR3$EsnCuJb$AimSk&tdefZ<}=b@?CSK8mFwaGqYoyUzrj%l$aht0CqIq+aB-W6nv@6 z$0D${9W9R3;7kRd7yNAcqkNvv-n7nYX`;#^Gg;=l#~%HDNX`Z5u`Ahxmo3+sAXV) zZx}(y(!N}lQ=NB_v8YpyRprJj%TO&r!jwlx9%Sie1!*268lo~;;s=aJXwnKJHWbWz z@4oV`@~?J2(dIyYg{?q_l;dLsl54MO>F@a>vA@FT^9Qr0`lZkYHihgA^hB8~pzx#3 z&IYx5)YE8FP81vtSKvE@K`N=M2QP&&r{?lN!g9ms6~=Dh_-kz!n}3@$jA7<0KZZJe z6fG1i))2rA=ecRkvTzKNn~1p*e@BJCBK6%@UUGO2MPEbhqxNiE27fkI7|UGq6A}Lh D-finu diff --git a/admin/help/img/faq/comment_publish.PNG b/admin/help/img/faq/comment_publish.PNG index 9a49136f1c4a8bfaf57415d62ad27b09460ec68a..50f23817387a88567826444a0e29b09ab43d449b 100644 GIT binary patch literal 2665 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 a3{B&HnySrB6oUVu01Qr==oD*_ZvG9TyK1KZ diff --git a/admin/help/img/faq/defence_login_limit.PNG b/admin/help/img/faq/defence_login_limit.PNG index 44550138df610ee8d2464c5a89baf73eb663f7a0..a2045dcd775c0aa06172b76be82d8db5c45342d5 100644 GIT binary patch literal 3066 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 diff --git a/admin/help/img/faq/deny_admin_by_ip.PNG b/admin/help/img/faq/deny_admin_by_ip.PNG index e890693b8d8e53b9d2c8945d1837415dd181cb82..f890c2444b56fd09a735bf474b60cc0ffb4a359a 100644 GIT binary patch literal 4031 zcmY+H2{=^k-^ZsAk!p%4qcCXmsHY)&MHowAtZ9+#X3|(nO1395wqcOcf`^#FpfH~7 z(pYDZbsEbIV`ngyF=NYndfxx_{;&6Q-RGS9+~;@B?|Xgk`*&a0iLtVPi;JER1%W`~ zrY45gAkdy1pkFN_0GxL#_e6p~duOa}*cyQ_R1k&+!Z1L18VElLs+@=Y#v2BUg~8%r zuml*Y5QZYcF!ivQ23Xv8SR5G^*940PS~D!61(wiigrOQ?7)E%S5q{FBl3`RiZ$#mE z{08UYLG-}kJaA+WBHbGn>+OyA_9l4ae|i%Jk+3)*!d?V{XjzR{H2#7<$i1b||lV4g| zN+OXeDk{DLR8qfI(!O%Jm6erMRaMp1)ipIWwY9Z%b#?Xi_1`$0#+8-taj@^JtK>Ks z8RtPJdXVX4GMi3j?~>Ps$ZKm&aj+%;F1KlYy*VD%48Y^HB*0o)T3P`%Hd;3~+uGXN z+uJD=3YALj?Ck97>iY5HM|XF3Pft&8Z*N~;Uw?o9K%UnCg*E`NxH!P&3~;%$JTDr+ z($Y@=4u_8SrV~BrbRr#Kd6~Y;rtj_!61)co2Z!>JLjY@Q!vI|F2*CO}1Axb45>ZS5 zK7Vv{bZl&l#bS+*k55cYOwwqR037br)YSC!^vul6?Ck8^+}!;9Ji9KMO~$e5L^i3BfM^78UZW9-TxVP$1y^?TgvQ2y%b z>KZw2Z76?j4R8q1wZx5JK=L}TIiANT zxC=u{-V`F1;6L55Fb8~ZRYioOZduM0o*RNl@bmA_X zyt@ln0!ZFe=Tgj2#te=yvEpnD+`^&&_pgz9kBi3 z{ia3sEr>Ei;)~#p4xgms#qY~^2n;VIyvRQ1q;O}hjZc#NfTfQ9U3B^F9^BnogOW?$ zB>h*PmCrlfGJn^MU=IyEFqLt`OkAX_yN;W%jh&u(JdtsW?T1NPvP~LsHLipxEJ+Ak zI^`8N8L93^`~0b_PjV?bhp1Ime@04YfpBu;b^6xm85DN$eLf#S!#OYlFF@Qox@(8p zU9Mlk4zCR8jQxJfxE(mHb`;bN~gpi?)2;bzFrv2t>fltRCB*c#qN94Q1zjBeqBwu9xy@|a z;O1*((@;%|H536$K%AKFJWcmwXnchK`C~j?E4wOnZ@Q_#l};X%B-d_R=GU4VjjYs< z%ZlAOpwe7|WKBzz$lkSsclJIifSuW$@>7%Oy%kI(fKBwUl z(i5#oo?E#6=^-VOb_LqDO)O?)4D>ajw|Q3Z$@7R0F?p@H3X24P_~rq3<3fCS6w9RA z_5?S2Oe-7w!^WJOrhIYf{fXKdjE29P+Vs=uI&5C}hr`=WS6Ua3_i2#Q6J?G!rW}{K-SriE z^tz#wR9Z;#-(~Op$YZ=Gf=p2{Dy}noB$i40B6i9jvOHpX;mF6j1PXN0gqPaDjZnR{|dKW3yKD;EO%r`L1 zkV0MSIw>m}!orNeJ_n-3Jw#LhqFC`u}!$e zi%sC7*Aj|E`9*@9N5u0Z&QY@`vpl(Z9J%MRXN5CQx)!LZyl8Zaht?%i+Z-zResIBi zdcj`quI7$xt9?-~c7`<-x~?8st&`K^`65%2!M9ayP5Jg)dL2;mdSH z7fs?+-Ui=f#O6oe#u?`yzdT`GK-E<&dHBWXIa<4MDY0kI?@bOI4%OW2+xH5p`4-H!#rt{eobfF7|fOx9z12-_#6+ z;OE~#Z!7Njrlw_28P}_Wwuj#Rp=s8J7;m4t_O)~m{A~A)JQ;xp+7UTx5GCO1-H0&5 z&b=8Bjv(yAS_eEf^^v=~7e1?1rRgNNq*@QJt4&FP=w6+6(KPGoHbT7l$6->9Ib1{0 zS0u)NIBC>~)BK8>c=)9%q-IVS><5PAPR}%cHkY7DoH|*ae(=g>@9YEqRI4M22Oo%9 zQkBv|muv>8Y>YZ6wD`&c!Cu#|MdDbsFBjj2eby4O(9^`SV4+8ANOvb9pC%BGZlH;q z4@~fn!gC~KH^^;T9U71D<+NSj=-u}EU$Xpf@0o|3wn(k}6>3lI{3%M1hUCu7>@A^~ zNB=sF74)01VPORx@tmCeVy8DsLc5sDl;NHf-TTqEW`fB=fLl4MBdQlS_idzthklvQ#$eLBpUaLl4<*n}8W!`$8xN?mDN}fQZF* zo|RFhfSFY;zw|3vL3Pu%?TJfIU!U7-O|;zJLQ__?gn`s*c5_z6RTijBul>6s+=JFmzqvDTy)sj~ z-@hqT<)6fUcfH?}No6UVaWH2YMW))7o7q*nNQ!$lBA#O{f_=dfMcF}T9XGQSu?O(q zfU$wj1Cb=()OR^<3l$NckJX>I?CS1oE)sAam#7O!K2~Jxw^A?QT#8wGlsiR8?_+r- z#-R4s38ZI#GPY*ACL14RDm6b{S^nn_{?IYd|6B3E&F>W-{+~JlYT-ZkpR2K#BW^@! zZn`uhK$nF6uO$8r*z@1Q`nQZSNv@C1`$XzPm=#l!>~FeJK0X;)!uPK!kp{0A>g$s- zL~yY|y)rnt2eu6@&1GMh079hN1HLTKKgiCC`U;HO5N~V*B$ROKD$qTMb#A z1g%o2783BVH|2RscX=%CW9fEfKYjMlQ-;pFJf*YLd5NO*(Ok!y)mMvHteL>OH7DwW zV%!)q_yxMi4XcB_XCHRKQ|30~iy~u;Grs+>&xF2eJc#Ye#1^Vwi5OlsKl)f1yT}p= zOM(%t_rdr%5bgaBKc0rFU^{<`NeL8IFJe-WhGtP^XWytsh(*he_09y4yJcnlnr98L z9Fr}!*ya?par7eliDx4E4jf`0le0$_CnI4wDuQ@z!{$S>JeB%|ijwYghPJ@kXG&)O z$fb!-VFEUeoi_{lYu(G=B6%*#1m&7D{5iZmAQP%fDlzs-@XB)VcohNhi+y$?TuxFu ztWM~rXvV3Y>zQ=i%M+DtxST(EOiqI8xA9k0hJYrkZ^iY;2P=C`!>r8mb5ZwsRfdOO z-47L2J|ftL@SRT4-V}g)9>U`qe}Ipw6d(U3Xmr*A zBF=8@w$^ox#(sdSg-{UaQKMdd13&B42 zleh|hzVHrOri^u&ZLRTtOkW;5a{jRE!7Q7Kn$v96IL6=$;+z)W;PdvoX zxGQh`_S8Y_y!}k;<@TmYC8ngy%lh)WDl!#Jclb!!2m!Lt!H)a%b9CC1hdn1={bZ6r zv;Y279#-az$-On2saivkc)YEPlzu29{tbXwdL`O_I0sG6dqB9oTby(J9s zD=SQk4IY|5Pl*#-4KRqLUQkgjA)=Qg&Fzp+B62D`k4x6R9cp_>EGm9+M8VDdi4SyD z$)WH3t4Wdo+$->pf4ptYqN9cvJJ+YCJd80SiebT?8V;H&cJX;b28B>K64}5XQ7drY zAp|9LEs24XyG}_YuKD+S4StpRJN_rQ>R!v!4&&PA)>l+#??;Jro3~7+AZs5~h6;bg zLJ;!$)|9f2seD99e}O?{AM(j~x%Z%xSge)t#F?bNN6(6V(miZ2620XQX(*B-SW8rq zTP5qY62d&HAS5bB=v}}m1d@|ebDg9zuHC^LIPzm*JyrgU^|s(OioDnO@pCf3k2%QH M$ilGL!1=HL0s7Bn?f?J) literal 7882 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 LK)dj&?eqTtDd@ix literal 9828 zcmdsdXIN8Flx>KpAc%yH27yQs>7ZcfEp$VZq97nuQHr4{(gmpkp(8=0_l^M!Rq0g} zq)8DXNSEGWZa|!G=I?vo_ukAO;M{x9zUS<-_F8-IOOPf~>EeaU7eFA;MHOWQZ4d|y z2mYQTIS2fd8N1sA{33GHR+0l1c0*@@0kO609a#{lB%Eyj;aOnJVy>)x2Ly8C0D-*y zK%iaVlJ{>A$XNg|VhRF@#e+cf4w#Qx5+D%!q>6&<-RH)ONgeY%EzT{Rhv&=JyiC8` zpJ(}ENBNwQ{Qlz<1h|1RKBiukZj3F0l8gJZMO3`S3>zi1RDfDpj%C7txP!HKinGIQ zjC;1$X`|BZ?#GW=nR&VM&vKcCMP&H2feQ`WLDm{@-o z^#?yBkLK1KaQX*5a*2j7jUBHd7nOzs>fK0LQ10Vn3;mmwGS8k#ersg@-*RY+XKX#b0;Y_=M5I6goB34sEKrkC+qL~+kr5v1qSx0HJbZiEzHy`` zAc?l*8FouTP#1>DbmF&_2Z2LaDe2&cqTI`qRCU)Ao}I6qz4%e)?B?OTfSMF1C*8TN zw3|!u3n6wJUPZ;_cXoIvSLf#GU#`G+Q-qC!ynM$irwpk@IFtB)p+<5GVl?`Pa$Eg+ zRrhuGQogvfxHdU=Ai{*-wGJ){jqVHogyw3M8_KiR;ZcFwSk>mA@8}a82O&uDj2<^* z!U?7mr=p==vSJUmtI2A;O1c&c=0p>mz4tYjz`XgMN@3R1P>$i)5KOx= zw-}W{XVO|dZLIwC7m z`oh)?fB4OeE5$I%29eR%2lp!Io+{yqQ|Y_t-Cma1+Cq5W`rBGr>+&1x>@)?2E`bwi zNt@4q3e=b6&n<;bLju2k^suE5N^7m;zSlpsl)G-mOnXUkT2q_Gvd*6-kP6+ZlFa@K zow9IG34r=UFiE;2YTrIQV6!`Isi0(Ra^7e{q9n2=;;Q6?Nqv&r10stM=-%Y-yK6A{ zLate|=XE0HWsgBcu)4k!^5yOrC$@S>2*S`}Npz*#?DG0vMD<(sQ6j7>wj$CH>q(p% z-nv3uDgO9cxax1w01MBct`RW0jIpw&Pq<|!xNw}D7EIYn*~)RXrFO#^1*ZDBKKxpl zhRxDM$fnQF5>r4wp0b+gec#W{OhB-Ehsx;Tx9LCpK2xXg zaBVwQdEke;b_v@`vdx#PbqFi-2 zYvf8J=q~E6+KORGl!%eGPUDNYwYI7X$nYO$b4*gTF834$9&>v2 z7`G_VQ{M}w5l{0}=LYK6uW+E6YjL@^GTBG=5B8}sV!gc>>b6HzxJD-J3Jj9 zWw$=7$PAEPsT{vZY&66Q5IUZ;5rI@7S72784`d+sLWc1aWv+4KdvS#y+dk%CFi{6? zK1-vS`y+XQ0~VeM+i#I=?n{4Fi2y?DK+oinF~#MMCJk##m^@uPc~} zB$ug*{t%Cw>#^$#?x}z#0jCW?N4Xs;&XvhTmToyc7_uD`neID7G@5)aP?D2#W4<{x zi><};0_!S%B2sYronB&SESyZ`6TdOdjl=YxgGn;rl7ttND;y>9=jh=-CliZCdN!@j zZ5E6y!{K3_E1ogpx3b!&HLq7ywOI15v8^s?$T!BPciSIL`(LekBKca8mPE!>lGqo< z$yh+D@bqg>Cs&oN1O>J%{;Z$UAty%|eH&i*<=63499eLBSEnB-AHyh_n|+-hcGzvS ziRylYMcsoKD!8m5D-C@0qa_x1mAgRP2w!P<+jr!Pzhic+U6Od^uJM-(Fk}g@gch3( z=85vSmi8q;ZTWomM|C@xuEbser;YENyZ=|S_W>=MUQYW-2SdFUPCt8m)c^{J>!i{5 z&!!5+0|8XFGo|4t3#zc8BNTG1)e_)9XeRNg z%;&Lrx8BPzWCVikM7jf^(QzGtusHO1M)5Q&{T`!{z2!2;laQycI48^D?9&FcLRy;H`weQ$H#$UOcnWD&?U2onFAvhp&T+Lw*?;zzsO{DXu>##$26 zph&6|7_9@<$n`US^E@)2&{lYM5);wTQvVy#)z5ZmE&;-ml|y+2*vEdzfM7C}b;Nx| zn7dhYK%ZpV%`G{7`=?wM5%NG~6MqI93r)0NzfjzLTXc0Su zK-%qb;X90&q(wRU75P5t+^A>UQ6$48$CIBd{P!Ieev~izZDs4TRNn7;`gtlaNUDXC z;#P(3UZM>q;K8*}w_uFXp*qh6AuA_^(we(BPz#I#nFTf0bhHFg1j2)!BVw@d0!hM~ zu*veGZWmq7-L#IYh&!Ax3tPtoH{(575lI9R`6Irzn-%3`;)!RcA6i*dvo&Nz@ww~u zN*+gCr?1TBQm&mvCao9~+MHPVkBhBN&)DYb*>8gPqvXEn;FTX|5&K%;R7)+{KV;a$ z6_6&VzE{T)e+$wYjQM7&(HkoQ*5N>fdM8x0ay_#%5oFEb2mLCjNpXDsEX8`@)JAhx z*+o13p`iMb#wii4N{z`9f9c8xv|$uG$SW{DIck}&#<|AG?Df&zxhDhnIpI^j$4i@M zix?{`#b&?t|JIREB3)rev`oS@gUoK_#echi z?K>_GiWR}D7)-Asf5^ws?@0p@3dQREuFAjD7iOQFhh_1@=K#qAikY`0MoF#rqShG5 zPMPZ&Kx|g$Pe*xd4n*iO)iCnEhy(c~0BqRV$r}F`y59A-ftqE?AsyiS6UbXBg3!Xk z0j3nEHl`?L@S&g4dVfJk8P5n1Zzt3jep1B{k%Y2~#V;q_88&^k0iC z0u;cE+t9~nPkj3SY7stpH1NbOMSqG{cfB}X__sIB4Id2I?)?fF{GMf(ANFE=M)Up{ z^E@R5m)&kzMAvKkPW_w}ziF9Plg#Bo%*tLwCodt(2HfrdF70=JE?s8dU|gL^3C}qz zQ1Lv@{T($sdsqZ2BJeYYrE|kFBqkoD78Gf;2T!58Vy>#tG#ovsJ;~WFM=&814}#6K zX57UOlG)BBy76gKhL9^GwCv2{!nirJcNI~p2xNA0yloDN9@1}nlATjV6$a12q7Lx; z?K8)YkKim;MmrAL_PKcJgfCgu=_Zc;y#4jna1u7vrM)__<;zp&#@d2_xfZ&ful~H{ zk22}DBb&5f?^O|MDo0ceH0D?5Td)<4MeLrlIwG8t?uL7)=+FeAW7}USD=S-fCSG0Y zi_(zFsof~B&uL-yGOF2M?EsHI5==vc?o`Bz+tk@Mg^MlpS>cMtVrqc=P*ozDC*s2y zsvYSJGHd0#+c2wEvqWlz={1IxXkIE=4#=GhbZm5ddywJFYW77I2cW9YAfSqz-QgK} z?T2FzT%}$^V#V)~x-)SW6$wYGj=xhMmQHFq1JR?$bVjO8M5i~JHC0C2RUI7_f+C09 zfn|jnT<6GEr`JwNFxNIiDK|2TqdcMC!l)9t$N(r#yd^a4deuSSV?+ILt=8 zVKvB8K*HkiV&es+P; zo*GrGHbpdnbBbxe^z?B4+U?Y9sCOQl_aNd)ab+XAhT0s=S=4QiThufc<^2@wMpB&& z6{#*>h#?JvkfOPo`5;1qf)UgnDOh=5PTB(QMftCuHl6YeYVOL6$FcW_1X!y3!N$N` zMx3#>hV((X+u_bk|L1^9Yqh<;ncWp773tL&sL$^<(#Uw$j9&8D@4*V>_z67r&g;G+ zPIWw^d`bZ{XFIa5E2u^g24`Q`CqcFu$>H%2g$&roI3dj6R<&EIXmgZ>WCc8V= z3ExZs>=W7&8T*e*AOJIjVtly%afuSZC0Et%A2TR{OB4xQf;yM^k4vrsGoJH2COzd6 zMgpO=GRA|C)d&dA=LAA4NoW5@XbOPIYu2V0{t?>$KZ_{+_SLFPYq!{B+WzQ(w5!tK zo7FxSh13-sGBEK)kNwE<)a7mC&JrhrUYoK48>5D|8(YX9h4Xz9efeQ@p|4>u<7jND z|4v``l@H@~{f86%iI0qCt-`T)n_oB6o2QOI)7({Qa)M2}xG03=7v8%hDtnAr*B+@J zMC6WFEFx=CcvR0LUJ!g0$Ligh5QwXLzXu6^-wI!tYw|P)IuNyq2YR;Vd1Vk;5Bhq+ z7JJfCK?Sv(>#D(+e1lFON+3NDuIlMwMV%{az3AIRP}|N|Aec2wI$9A$AHMutn({PpA?)3wq@>moxGuWn z;IaEvGU;HKT^t0COZsVnaE?Sn6LBn&G#hC%b!nQAoi2K$65Vi%qQn!{2R&)Kv`F{15P-DFXSj%RS8<$;Z1L>?XVyGUHkdw8<{9Acz*1Uf4f z`o@tO&gnV!e7wpgrPC-TT2|d8$*mnRTBLSc~HZ)`HJaKdQbiybMjuH`$%N44lgQS zkgX!`X$r%`-(+Zuug^_aRSpamMAce{MEV!E4ecS!8cu~@2x07#L&AdMfQfIq=xX8( z-~vp~@I1br$Z)5JJqQ%fb1ZNFNEsEJ3pqg7wz7ZM{=s6{iwC4=$==6uWrUFBU4I_g*S}5l%qV@L^PZzdXE>C0w7(Ulw)oL&Y2m1Z$Ayr-hg0ta*f%_ zkNUBRSO`lnstJ?aOcLeD5!wGiyN7+@RV@gy7%1s|J-4?Q;OPDdGmQK41NU7$Of@R2 zv|`ETiF>j1s6QR#wTkg7E|0?M4^i)3vLdRwq;{7k_1j!x_$g8inzulgf<=J9ND8Lr zT~-L>d$UzI+#2hZzk~|<>?xfV!zm;fOZNCYAq7|F%*wwGhllFX@tj zecr(J&Z`3F2qI5taCW=9`>_8bH)Vi{VCrxGk((5-&$X4avH!>o2FwT)ILLGxeQ+y9 z^5(@8POIb~z`6RtJ_gFqy5aQ1ez|e#kL@V+#W<_K*=^Z1;2c`nEv4s8C4CG=rX+3Z z26*u`O}z>-1OyQp)(%z#Bi{4~RJGFLlc*n@Bmq~?#S88aW*($Z?aI0?ejA_T+!isk zSvs@AA$M}T06xlq9<{n3P8sj?^bbs&sW(dWBdv-e%aB~#-ivd*fvR50LiS+xzkE)A z3AIluWhQ&dau$YOsUwDRVKbU>W?{HJW zJ*C3proIJ2k8*Glwyvo;r;oA{9<8TWLWO;riWZt0(q%(cLzCU+ZS-wb5}NrBzMZ2M z%sLK3pf7g^@NlpDbt*WcPud+PYV^ z0fu8?1>9Tc2XNj}*mR1g;}+%SNph|ZK*VZ}q4VEyGXSS6;Mqrj8KHJE%>*n8JCj=- zKTg12C}4y^+U9TZ$s(WwY&}8jT-m8yG7xg}Q05PRPn|NJ3$Uop^y=Oz!pH#}FgAw| zpN>1D0gIVo4Lqk}_!`hY@+l?T)3KE*U{R;VlQdbSz9b(j0Sv(=R4I z4}nF0-qr#d_`tU5)F<+aYVTfR{-LwA?3ukZT2+%fwYg`X!_JJAF88|nW3O^EW;0>^ zgED$8z-y-`_{_P#{RIIhiazj6_ukxj>D{2+?k&%3k-D0xc-B|;UR!53UV5#XZ?qkZ z%=OYItK15^pWg}zkMKR&l@ExBH^RwDh72>l(_oV0wbL~3@RrL*-)^kPWBpV3;gT2( zF1&H(#H;mkBn;@ZYqtZA-0pa+b%{dDEdMzFO4FZzWY`v>j3nhfNyqDLfUiPnj*{zi z{R1Xmy38gX8R7hJtLBLge&!qv=_-@GT)clPR|?_;X9gFEsM~tUX3~_xbEiTk&C7;} z=Nrc~Hqd!#(p#76YK*RUG-uC8Z;BTdB=Hxi%7Yb$-#u-nHn6;gJVd2atPW=GlS!e#~nFJ*`RblbbDl6JLe`F z19eN;>=;`1mlFMDo}4i^=)s6Kt*|Bwh&aeu%>D7)(Y$}-Kq#_Ax&1d*dIw+l@#V}J z=lL2@2z(xXz(9J8K6RCPI=EHJ0GZ9wmyopxp_1Jymp7U!8%#FW2JGy3b{$RFcAU)) zUN^?%aDSL@cqKm9-Ljl_X$*l^eb{7^&?b42pA@MaY!ks4aa|{%TM~{?vf0bJSN(Z0zDLed zdn4T?WB1Mw=83em;nJGXUQW;Q_)#_$d|3}Rb5Wt&Z|2OM9PJ(e6FU#LR{b-b5eNda;WyE;2h7l-{)_9XuZbF)9 zl$iMj*Ds8csy=XGM;Tv>EX$;hC^;6UdMDziXmkE-H?0^boQU=DXTG$Ns6Leq?ws+8 z&cOrKmX}!{J@z*X#QW;pV&D@Y|dVk8|*J0kRT%QmRPdPbO4umeF(Rj#t%E1VLauJo+ z|C!JRI68KcYr*fYkh~8B!Lmr`{Z9=VTmWQ2Tf#r-gfNLnXaLry`I#zkYETVG_3s5| z6;q$21|T08AT%%|!e^QjI^Y7{sJ24ma@?x`E@}cbl#XA>r&EJG{xX_)iM3AQ|0Hxm zGnwZF1u>%gr-LR`;H0yBO!lU2j^2y88I3>wPu>UU7}vW`$WtE$11<=5&|)~Jij1*>Z9wh;v2{9lO;-qqlZ}{4VQuqlIn`F zFLC;!Gs`<*$+7GMm%L3i#s%$}zOxc)afGe&Axsgl8K8*z1A9?6{<^6rBU^2^W+-p5 zp9D%8Q5Dm>W}7AV*3B-~>=NKepC{}l4l_^$zR-Y_j*JDq(Mj)AQ z-wpEU8u!Qj&Fx#GIZu=f=ImScGJDLudP`$kobZ_?DO958arPrgEhG)KHY0;C=XAWL z6}_Aio4a+mhxv52wu@|CmRA%Ip-laMV9*b|N`i5#T9A%reXG#LL9=CU+ATF*rSSR2 zPTF?`J>@dRe!kb{zS^cw`z`KZ`3JHZs`9w6+TO-YW3e>}*DhW$?Bn5Cbt=%m-3+9i zMz?%`;)gEK#ix}1$PHag_j^EZgg_ zzfg|CO?C`TMk;7j^QPy&>0P-AE4Y?@lg}%0uKd>550bOjSk+o6)Uun$G~QHUACUQ8 zTMn!I;Gx$Qu2Y^%_f)j2?YdnWw|3W%QIAQ>%o~}Yp3zJbNox;5ySF7RUpr@8H-GDz zXfsFKE_xNDuVf%Qj*ptw;KI2$cNvN+@0^D(gE42xePl_8$FPq&0!waP%} zSMTrp5AfLZVy=EOQX+mM@XlLcJ~+9VdBjG`7NOOyRO_ue@>l`EN*)ER`q8Fcc zAigM^=%I4u!=h(x47HY%nfNI0ohP2#j;&j-_C#UUQgMPjgq9~I2PFjFvIw^JxXs6r zVlnvb_(aG5?|!9L@f3HoBE_4ik598+Q6=@ROkt(EL3a7&wa)9i67eFgSLFQaUq zkGysn&q^V#dTsk?akVP$u#5fNaVShHvhbk5WVi=N|r%_U7rIxBnX zF^leWdwNW6<003fd!sE&okCduNcHn!oIIUi(gJ6TPt+`2%(TVih&xVrj!jSH{PL*b zicvGB^#q85OHHH*EKBG5$FvZR8M|x~@$)Tv5|?@3j&OxZ5@Mq;PR0P=2MOK;kK@~+ zM}_=L-z%Jp@(<~13)0|Ssb({`ov?XxA8n}$aElW`5L~|Xt7K_B-$xg_X2E+yU6<{M z6?jN*SH-hGU8f%=uPE1igp$T!BBH~^Lfo5?9Rp$U7i*U7;k%wC@ZGjX&#(x|EOkkf z_w2)uutQ+iKDg8qKf9V=v8%GB%M^?RPn)Vxr6P8{G zSSFd@GoR&P;{Tl>wN`Uz%1Bs`3MsKdcMSX8W~>ND(>ptfL{N>d_{&t+*as1~^7;3H z(R!Is;5i}^%o`aQJTXeH+o~HbE;e>ws^$DgOaFmYcf7*4e8bM3*%iTEvqT&6;Bq2> z^(G{U_0}7w)<9|Wrz9CG3kV6h^h5SzbAXon1GMg6fBhtR1d3Q8f{^^=%>O4O5rB|T zGBll%q`^5rNQCzNVorIV1}K|oz-hNn4R){qLh?GfnCg^=<-kXmxc18yqK7&k0sjUD NQUSi17s{FX{s&>2kLv&c diff --git a/admin/help/img/faq/export2.PNG b/admin/help/img/faq/export2.PNG index 1a2bb94e284680cdcf2181c04da62779bb95b6c7..91f999f76c64f33990ffe2a41d5b01fc5b78426f 100644 GIT binary patch literal 6186 zcma)Ac|25Y*ghdjmL%CG$~N{TY8=_4AtKvreUlW~nmT05T8b>g*q4!zWM9Twm_m)6 z>@PyhP}V40WBJa!{d&Le&+m`>ocnh_*L^?t^E}se&hMOO*No7t%zVrM0I=%o>6iil zofrTdQa(ZlN2XKDoB@D)O}kJ}icJr!Es( zRp>2eVvjuBOFK?KV&74p^{i0AM>%_X_KLZ4jx=*ktzJQNtVs_^UZikdf)w0Pibuqi zO}XCC+ok7Tg1q^D3`*w+qs`x-yrc^xkUZ4I9-2OmPa*v*SQO4zwJ=TX7jU)^d#;z7`aX}5kZ5;3wbHqO^DG;lQoOUIOnIGV zfA{n%v@4_LpFI0{^JWJJF$-bnHE9SIpeBb31zgr+6mb2+pD*-93WZ%<`DSJm=!IZ3 zvy!XX_W^q@?GHbYK*wPEg*HBPIVPDQTbl?7yrQmWg#2~31lg8rmB7^ zF!j4N|1uKtzP`wFGJ|NM5iIM~(1;04$(UsEu=JYgEd`Zq? z_q)qIQE5rlwPr@w857hX>gWXb3mrzoNZxD1E7RzWh=|)>wZnC*~D?A0v3JKOtplFge<@ zxjX@CzOm#cQ4_ap`>7J6U0%BRSI3%r6{BL6>K(M^!6KsKpxLH=`uQF)@ZG$f^TO)U z#gY%`O@gJ{>YF?sCQ3w=+jAGW2C-e%i|3j0EsUhKzijPnr|VYN6%olZa1pMKaIXS!^ljFVSdKV$_6Nh~pGO(&bKW*-S&D`np`+8*VyJ}X?H8_0yphs7%*Bu$ zVZ(BmBRldggPHD?vsPzM^j{dZaa3&!Uwg!L3Op9ky2& zAi5KqRcNC^gN+$9HoLsAawu?T~;6f%EN!)SAFHFRzK(&p9)P~3q$ScnTq_1mqV z8?qrT6Sr$J)yrRPO86z^4iJ&N(MP_iAx|CXKjq!)*^E7GVs_A4fG6{w)M4v50m^z6 zR&To@)J|yA-%pGbKt3&+4iF-#gDU2h;WyP~5)gE`RFL0Mrh@h81P z%41VqEWc{h!F|!#D8ZJZVfp2 z*TvQvb<6Naw99T-xY>x5lp8f5HL@C3`mFXwg-QE(n-kjK+_7pc>!Co)(QW%>xec$t z31ig=d`_i3J)fLp5*wpqLs2_1%Vg1|4D#|Pi?63KX5354O|+X;SFvE*=63@CAtpeR z4AU022$-!j!_fn0UC4`3%R@~6T=WlSiqA40DC1~z1r z;`Gk}sqt+%ke}C>KOIG-E*s5H&n%<+^HZYvxGv4MV$MRqi!hw9)ZttEVu`5maE+|S z9q~ZzPcsCxk&>nw0$#2eCs?U|b@*7=`rOyABa>R_Up$3)ug4g35RgBN8*r^Yb?TIp zv-AAi+`@+cx+Hoy|H=B?_V(7VIpjCT^v?S~m2s@_zC;Ru1_lNuSuc&&>k-!Mr#mw4 zZuRC}jLnOEj`%YAT{QX><1p~z1x`^zLvW+JtLvprh1gja(; ztiVYrC^;o1x9Lh={6ZkOzRz#XzC7Pu&tJ3>2-bw24}K8xh9|V`(D&HJx6U5tm|FmR z)|qXl;^fGcN48q1_wTjr@K2=o=~4{YWM}#qIX*Fu3B5U@9rg7%vkbGgmez5Dq@Zi% z1`#&~Lf8>c-W7pYf0!D0{%v-2HORBa@7DyPug#@)yxK;lbg*#9wPA6|fvVYci4?(zE`an8Y7bTD^duKd2jl#&-= z4QVscVGR*-1$2z+bqAAzzwU*`oChLbQ^j+7hFMP%D@0f|IUY1csAQl%lels8XP^$r zoSs_0NCcoeD9UZZZPxmMFGOfzJ?gcT+TOAL)UaN zC2}U!aP&8BdI)+KQ}Rc4rNrNrqm8WnTc15U53`%b=6|m@MxP-79W2}wj?k++IC59r zUj;>MsNCJ%(B2s4)Exwb@^^(6q);o}T^Ihcv>YBGdfY9|lgX0fTP+)Yb<%`B0)H;* zb(CL1O+XXgexYKR&@W1`e(^oG(lx|EItNRwN<`VCnz{ml0@k{pFd1y2YKCn}oZNRB zf~eLt5&jsQ9`IyMsSRKl^M{S@_>wa|{rM;4M3MB>l*0&K<{54!U6wleCBFRBHuZx2@F z`d|mS#e^~5-eYBxK^$7tKR9o-&G*m3P2h3~H) zkYZPde)#xM&oIFlUR>_1uPPs#594DQj@!=Yi*jYbzpBJA9*rp|)Rc#NgNiCboG=wU zaDgnHNFGMLb>SGF*CAg_!lis>;_}*!d)wqQq(?y_uQG#d_C8aB5115EN!w4Z#`JuKZAQLR$8;JKnuly;^1k%zZlDsZ>??e7Mmah#J#2T2JHDCd{YK-Z~Xp6ZkvgAaL6y#3r- zx=V)>4n=qg#Svsj6a5@dxtL$Qfxgt!-`|*QT%1;T2DvJZ#_`3?N=sW{dtYE|6m)m- z4ysUdXQzq=In0+4e4Wu|az9GmJ7Kw~#g_8F$*J{Aj>xW4nv{UAV5VgZjmuM|d(%n*hA za0%BdPStc6A5#+LS(A4fq!0!SRhc9Eo}594a5yoK_n;0#Rin9Tm~?nG8^*EKNUNm&tb`%oKJu7W4dq{odzwM!{N`AJE2nTiROt74j0UuWruFbdzGs zn3~qe?IqlD0(TaBlh2^r9YoAOWYncOjIByY_Tw{@28Z{1f*0jil%S_?g?H}VQyM$) z_j*ywg9zq7Ef|YTz$CO+?EaYFvL}i;QBVLVtGo0PZ+-fNEcEDw;86_!sLLi^Q8SC~ zf&9m19qiNyNf^m89E+D{CEtkFVr$da#**zOHOcagPZbzJ4mZ%jDTv(KyUvAnu{q}4 zx;)XoHABca1j&E=8;!kne`+lkq1(d_eyNU6IOXX#NgV~--t+j-fkzK+BhQks^^(H@ zjIH^i6E&vloNhdhahyN*pEn;fi9wH{sVxdUS$d?KqWpuD_?F3^G8Z-7*{E%y@RnaKR^Un7? zwSr(aCmLikIJaEc@)SiY5Q(VSXytKaf%eON8*~WYBoijAzPgV7@g#tPbO{5TT zY5LIIY(giK2vZ!MGu~`KY#tg@+yOm&ab7D^!8;*TXgZvX58lzVV;MFc*Xx;%thSq> zx;P}_%iBV1wGOrO!d38dp(p`gdOa-3pH2@;2F`#0?e^P^r#}P6(}&Qae_TDb5V9T{ zK#Tryg+U-5Hd^$L`(FiGp#Xv<6YY-*pt)ZbBcJUGb{5dgrUxptF|z2iHX4GG&1hDQ zrLW*=g&3Seq zDICx1x+;C(LV=KwcfMI05N7T>YgqsN$QeM@`#d6ow zP29B?WeVA7FIe20b+oaOygC+-@1E0zrn4HUwjO-Zv+|Qg-`N_DVcuU_<5S)8y13qU zakRj9>7>@Rumbm%<_jcEF;7RrLrkuR)R!8AY`F^t-H2McX!@+6Yf`|#ySkfv8)U|t%Z;)ECZpmq9LAzr?q<*)Dx&d< z2)3s!`z3}Yse#;t_Y>Mdj#NI<-%Gu35PtG{4>nbn#b_eCB9cF~dKFn=SYq{QbM8~n zXwG??dlTw}@1m}Xk^ASm%li>qmC*2#geuAZ_2a^QC4 zZ71&wcNMb67+ye1Nsc|&4455dAB!bRbn@}0;Z4SQ^eH(T8-HSQtru z+lVLT%Rjljm&oC%(AjlwUOFmal)d4^zvJdu@KSzW9I3c!XyPn*hw+`ajTh27%dBRHEzf1vMKqqNU!x;CBOzpQjWSLga;zhA?=N&uWO`Js(s_p{{RJCude_A literal 12820 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 wf#hwvw&M2le%Jm=e)|mZ``^jwr?juP?7^m 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 diff --git a/admin/help/img/faq/exposure_target.PNG b/admin/help/img/faq/exposure_target.PNG index 887fec8aab597a1ddb731f3eef2d2b84a2f15662..a9a929d97d79ac96d61c06ce8329cb7b78dc6348 100644 GIT binary patch literal 3583 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 literal 5834 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 Jl;}C%{x85UOt=65 diff --git a/admin/help/img/faq/import2.PNG b/admin/help/img/faq/import2.PNG index 18ae9e9bdc1b49671fd2ab13a5d72fb7a26e6924..c187e68d462c05b0935b6e6af6d677d2b9d6d4fa 100644 GIT binary patch literal 5180 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 literal 9260 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 diff --git a/admin/help/img/faq/import_complete.PNG b/admin/help/img/faq/import_complete.PNG index bf7a5ca55cf18a535c11991b989c912242ca6203..9c6955e1ac92db9ea7f205d06039622124df44e5 100644 GIT binary patch literal 3341 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 QEzW-p5@rV_Te&Cv4{|komH+?% literal 7945 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 diff --git a/admin/help/img/faq/joinform_manage.PNG b/admin/help/img/faq/joinform_manage.PNG index 1ea39ea8e3ed8afaf222c74b1d625e761950b1a7..35e42fa5529845806a850f33e2a2f98a1814aa41 100644 GIT binary patch literal 21064 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 literal 42725 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 P@K07s>E^o|_y78D_O`_f diff --git a/admin/help/img/faq/joinform_type.PNG b/admin/help/img/faq/joinform_type.PNG index 5b850f0eb8f916cf9cc2a5f5052b22872158f179..5f48e9dad6f4c1363572fe44b3c0508226bd4b8e 100644 GIT binary patch literal 4944 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 literal 10107 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 O5;bM*houiJU;Q6y@#|dx literal 35242 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

      From 38744d708805ac4a0692825f536867b759e39628 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Tue, 19 May 2015 15:02:03 +0900 Subject: [PATCH 223/265] =?UTF-8?q?Fix=20#1477=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=86=A0=EC=BD=9C=20=EC=83=81=EB=8C=80=EC=A3=BC=EC=86=8C=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/frontendfile/FrontEndFileHandler.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/frontendfile/FrontEndFileHandler.class.php b/classes/frontendfile/FrontEndFileHandler.class.php index cbff623ac..a1e3b5f6f 100644 --- a/classes/frontendfile/FrontEndFileHandler.class.php +++ b/classes/frontendfile/FrontEndFileHandler.class.php @@ -347,7 +347,7 @@ class FrontEndFileHandler extends Handler } elseif(!strncmp($path, '//', 2)) { - return $path; + return preg_replace('#^//+#', '//', $path); } $path = preg_replace('@/\./|(? Date: Tue, 19 May 2015 15:13:20 +0900 Subject: [PATCH 224/265] MINIFY --- common/js/plugins/jquery.fileupload/js/main.min.js | 2 +- modules/editor/components/image_gallery/tpl/popup.min.js | 2 +- modules/editor/tpl/js/editor.app.min.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/common/js/plugins/jquery.fileupload/js/main.min.js b/common/js/plugins/jquery.fileupload/js/main.min.js index ebfbfbc7c..6f34bfd2e 100644 --- a/common/js/plugins/jquery.fileupload/js/main.min.js +++ b/common/js/plugins/jquery.fileupload/js/main.min.js @@ -1 +1 @@ -!function(a){"use strict";var b={autoUpload:!0,dataType:"json",replaceFileInput:!1,dropZone:".xefu-dropzone",fileList:".xefu-list",controll:".xefu-controll",filelist:".xefu-list-files ul",filelistImages:".xefu-list-images ul",progressbar:".xefu-progressbar",progressbarGraph:".xefu-progressbar div",progressStatus:".xefu-progress-status",progressPercent:".xefu-progress-percent",actSelectedInsertContent:".xefu-act-link-selected",actSelectedDeleteFile:".xefu-act-delete-selected",actDeleteFile:".xefu-act-delete",tmplXeUploaderFileitem:'
    19. {{source_filename}}{{disp_file_size}} 선택
    20. ',tmplXeUploaderFileitemImage:'
    21. {{source_filename}}{{disp_file_size}}
    22. '},c=["fileList","actSelectedInsertContent","actSelectedDeleteFile","actDeleteFile","controll","dropZone","filelist","filelistImages","progressbar","progressbarGraph","progressPercent","progressStatus"],d=xe.createApp("XeUploader",{files:{},selected_files:{},settings:{},last_selected_file:null,editor_sequence:null,init:function(){},createInstance:function(d,e){var f=this,g=this.$container=d,h=g.data();this.editor_sequence=h.editorSequence;var i={url:request_uri.setQuery("module","file").setQuery("act","procFileUpload"),formData:{editor_sequence:h.editorSequence,upload_target_srl:h.uploadTargetSrl,mid:window.current_mid},dropZone:g,add:function(b,c){var d=jQuery.Deferred();a.each(c.files,function(a,b){return f.settings.maxFileSize<=b.size?(d.reject(),alert(window.xe.msg_exceeds_limit_size),!1):void d.resolve()}),d.done(function(){c.submit()})},done:function(a,b){var c=b.response().result;c&&(jQuery.isPlainObject(c)||(c=jQuery.parseJSON(c)),c&&(0==c.error||alert(c.message)))},stop:function(){f.loadFilelist()},start:function(){f.settings.progressbarGraph.width(0),f.settings.progressStatus.show(),f.settings.progressbar.show()},progressall:function(a,b){var c=parseInt(b.loaded/b.total*100,10);f.settings.progressbarGraph.width(c+"%"),f.settings.progressPercent.text(c+"%"),c>=100&&(f.settings.progressbar.delay(3e3).slideUp(),f.settings.progressStatus.delay(3e3).slideUp())}};this.settings=a.extend({},b,i,e||{}),a.each(c,function(a,b){"string"==typeof f.settings[b]&&(f.settings[b]=g.find(f.settings[b]))});g.fileupload(this.settings).prop("disabled",!a.support.fileInput).parent().addClass(a.support.fileInput?void 0:"disabled");g.data("xefu-instance",this),this.loadFilelist(),this.settings.actSelectedInsertContent.on("click",function(){f.insertToContent()}),this.settings.actSelectedDeleteFile.on("click",function(){f.deleteFile()});var j=this.settings.fileList.finderSelect({children:"li"});this.settings.fileList.on("mousedown","img",function(a){a.preventDefault()}),j.finderSelect("addHook","highlight:after",function(a){a.find("input").prop("checked",!0);var b=f.settings.fileList.find("input:checked");f.selected_files=b}),j.finderSelect("addHook","unHighlight:after",function(a){a.find("input").prop("checked",!1);var b=f.settings.fileList.find("input:checked");f.selected_files=b}),j.on("click",":checkbox",function(a){a.preventDefault()}),a(document).bind("dragover",function(a){var b=window.dropZoneTimeout;b?clearTimeout(b):f.settings.dropZone.addClass("in");var c=!1,d=a.target;do{if(d===dropZone[0]){c=!0;break}d=d.parentNode}while(null!=d);c?f.settings.dropZone.addClass("hover"):f.settings.dropZone.removeClass("hover"),window.dropZoneTimeout=setTimeout(function(){window.dropZoneTimeout=null,f.settings.dropZone.removeClass("in hover")},100)})},done:function(){},selectAllFiles:function(){},selectImageFiles:function(){},selectNonImageFiles:function(){},unselectAllFiles:function(){},unselectImageFiles:function(){},unselectNonImageFiles:function(){},insertToContent:function(){var b=this,c="";a.each(this.selected_files,function(d,e){var f=a(e).data().fileSrl,g=b.files[f];g&&(/\.(jpe?g|png|gif)$/i.test(g.download_url)?(c+=''+g.source_filename+'',c+="\r\n


      \r\n"):c+='
      '+g.source_filename+"\n")}),_getCkeInstance(this.editor_sequence).insertHtml(c,"unfiltered_html")},deleteFile:function(b){var c=this,d=[];b?d.push(b):a.each(c.selected_files,function(b,c){if(c){var e=a(c).data().fileSrl;d.push(e)}}),d=d.join(","),exec_json("file.procFileDelete",{file_srls:d,editor_sequence:this.editor_sequence},function(){d=d.split(","),a.each(d,function(a,b){c.settings.fileList.find("ul").find("li[data-file-srl="+b+"]").remove()}),c.loadFilelist()})},loadFilelist:function(){var b=this,c=this.$container.data();a.exec_json("file.getFileList",{editor_sequence:b.$container.data("editor-sequence")},function(d){c.uploadTargetSrl=d.upload_target_srl,editorRelKeys[b.$container.data("editor-sequence")].primary.value=d.upload_target_srl,c.uploadTargetSrl=d.uploadTargetSrl,a(".allowed_filetypes").text(d.allowed_filetypes),a(".allowed_filesize").text(d.allowed_filesize),a(".allowed_attach_size").text(d.allowed_attach_size),a(".attached_size").text(d.attached_size),a(".file_count").text(d.files.length);var e=b.settings.tmplXeUploaderFileitem,f=b.settings.tmplXeUploaderFileitemImage,g=Handlebars.compile(e),h=Handlebars.compile(f),i=[],j=[];return d.files.length?(a.each(d.files,function(a,c){b.files[c.file_srl]||(b.files[c.file_srl]=c,/\.(jpe?g|png|gif)$/i.test(c.source_filename)?i.push(h(c)):j.push(g(c)))}),b.settings.filelistImages.append(i.join("")),b.settings.filelist.append(j.join("")),b.settings.controll.show(),void b.settings.fileList.show()):(b.settings.fileList.hide(),void b.settings.controll.hide())})}});a.fn.xeUploader=function(a){var b=new d;return b&&(xe.registerApp(b),b.createInstance(this.eq(0),a)),b}}(jQuery); \ No newline at end of file +!function(a){"use strict";var b={autoUpload:!0,dataType:"json",sequentialUploads:!0,dropZone:".xefu-dropzone",fileList:".xefu-list",controll:".xefu-controll",filelist:".xefu-list-files ul",filelistImages:".xefu-list-images ul",progressbar:".xefu-progressbar",progressbarGraph:".xefu-progressbar div",progressStatus:".xefu-progress-status",progressPercent:".xefu-progress-percent",actSelectedInsertContent:".xefu-act-link-selected",actSelectedDeleteFile:".xefu-act-delete-selected",actDeleteFile:".xefu-act-delete",tmplXeUploaderFileitem:'
    23. {{source_filename}}{{disp_file_size}} 선택
    24. ',tmplXeUploaderFileitemImage:'
    25. {{source_filename}}{{disp_file_size}}
    26. '},c=["fileList","actSelectedInsertContent","actSelectedDeleteFile","actDeleteFile","controll","dropZone","filelist","filelistImages","progressbar","progressbarGraph","progressPercent","progressStatus"],d=xe.createApp("XeUploader",{files:{},selected_files:{},settings:{},last_selected_file:null,editor_sequence:null,init:function(){},createInstance:function(d,e){var f=this,g=this.$container=d,h=g.data();this.editor_sequence=h.editorSequence;var i={url:request_uri.setQuery("module","file").setQuery("act","procFileUpload"),formData:{editor_sequence:h.editorSequence,upload_target_srl:h.uploadTargetSrl,mid:window.current_mid},dropZone:g,add:function(b,c){var d=jQuery.Deferred();a.each(c.files,function(a,b){return f.settings.maxFileSize<=b.size?(d.reject(),alert(window.xe.msg_exceeds_limit_size),!1):void d.resolve()}),d.done(function(){c.submit()})},done:function(a,b){var c=b.response().result;c&&(jQuery.isPlainObject(c)||(c=jQuery.parseJSON(c)),c&&(0==c.error||alert(c.message)))},stop:function(){f.loadFilelist()},start:function(){f.settings.progressbarGraph.width(0),f.settings.progressStatus.show(),f.settings.progressbar.show()},progressall:function(a,b){var c=parseInt(b.loaded/b.total*100,10);f.settings.progressbarGraph.width(c+"%"),f.settings.progressPercent.text(c+"%"),c>=100&&(f.settings.progressbar.delay(3e3).slideUp(),f.settings.progressStatus.delay(3e3).slideUp())}};this.settings=a.extend({},b,i,e||{}),a.each(c,function(a,b){"string"==typeof f.settings[b]&&(f.settings[b]=g.find(f.settings[b]))});g.fileupload(this.settings).prop("disabled",!a.support.fileInput).parent().addClass(a.support.fileInput?void 0:"disabled");g.data("xefu-instance",this),this.loadFilelist(),this.settings.actSelectedInsertContent.on("click",function(){f.insertToContent()}),this.settings.actSelectedDeleteFile.on("click",function(){f.deleteFile()});var j=this.settings.fileList.finderSelect({children:"li"});this.settings.fileList.on("mousedown","img",function(a){a.preventDefault()}),j.finderSelect("addHook","highlight:after",function(a){a.find("input").prop("checked",!0);var b=f.settings.fileList.find("input:checked");f.selected_files=b}),j.finderSelect("addHook","unHighlight:after",function(a){a.find("input").prop("checked",!1);var b=f.settings.fileList.find("input:checked");f.selected_files=b}),j.on("click",":checkbox",function(a){a.preventDefault()}),a(document).bind("dragover",function(a){var b=window.dropZoneTimeout;b?clearTimeout(b):f.settings.dropZone.addClass("in");var c=!1,d=a.target;do{if(d===dropZone[0]){c=!0;break}d=d.parentNode}while(null!=d);c?f.settings.dropZone.addClass("hover"):f.settings.dropZone.removeClass("hover"),window.dropZoneTimeout=setTimeout(function(){window.dropZoneTimeout=null,f.settings.dropZone.removeClass("in hover")},100)})},done:function(){},selectAllFiles:function(){},selectImageFiles:function(){},selectNonImageFiles:function(){},unselectAllFiles:function(){},unselectImageFiles:function(){},unselectNonImageFiles:function(){},insertToContent:function(){var b=this,c="";a.each(this.selected_files,function(d,e){var f=a(e).data().fileSrl,g=b.files[f];g&&(/\.(jpe?g|png|gif)$/i.test(g.download_url)?(c+=''+g.source_filename+'',c+="\r\n


      \r\n"):c+=''+g.source_filename+"\n")}),_getCkeInstance(this.editor_sequence).insertHtml(c,"unfiltered_html")},deleteFile:function(b){var c=this,d=[];b?d.push(b):a.each(c.selected_files,function(b,c){if(c){var e=a(c).data().fileSrl;d.push(e)}}),d=d.join(","),exec_json("file.procFileDelete",{file_srls:d,editor_sequence:this.editor_sequence},function(){d=d.split(","),a.each(d,function(a,b){c.settings.fileList.find("ul").find("li[data-file-srl="+b+"]").remove()}),c.loadFilelist()})},loadFilelist:function(){var b=this,c=this.$container.data(),d={};d.mid=window.current_mid,d.editor_sequence=b.$container.data("editor-sequence"),a.exec_json("file.getFileList",d,function(d){c.uploadTargetSrl=d.upload_target_srl,editorRelKeys[b.$container.data("editor-sequence")].primary.value=d.upload_target_srl,c.uploadTargetSrl=d.uploadTargetSrl,a(".allowed_filetypes").text(d.allowed_filetypes),a(".allowed_filesize").text(d.allowed_filesize),a(".allowed_attach_size").text(d.allowed_attach_size),a(".attached_size").text(d.attached_size),a(".file_count").text(d.files.length);var e=b.settings.tmplXeUploaderFileitem,f=b.settings.tmplXeUploaderFileitemImage,g=Handlebars.compile(e),h=Handlebars.compile(f),i=[],j=[];return d.files.length?(a.each(d.files,function(a,c){b.files[c.file_srl]||(b.files[c.file_srl]=c,/\.(jpe?g|png|gif)$/i.test(c.source_filename)?i.push(h(c)):j.push(g(c)))}),b.settings.filelistImages.append(i.join("")),b.settings.filelist.append(j.join("")),b.settings.controll.show(),void b.settings.fileList.show()):(b.settings.fileList.hide(),void b.settings.controll.hide())})}});a.fn.xeUploader=function(a){var b=new d;return b&&(xe.registerApp(b),b.createInstance(this.eq(0),a)),b}}(jQuery); \ No newline at end of file diff --git a/modules/editor/components/image_gallery/tpl/popup.min.js b/modules/editor/components/image_gallery/tpl/popup.min.js index 3695635eb..8eac8184f 100644 --- a/modules/editor/components/image_gallery/tpl/popup.min.js +++ b/modules/editor/components/image_gallery/tpl/popup.min.js @@ -1 +1 @@ -function getSlideShow(){var a,b,c,d,e,f,g,h,i="";if("undefined"!=typeof opener){a=opener.editorPrevNode,b=jQuery(a),b.is("img")&&(selected_node=a,c=b.width(),d=b.attr("gallery_style"),e=b.attr("gallery_align")||"center",f=b.attr("border_color"),g=b.attr("bg_color"),h=b.attr("border_thickness")||1,get_by_id("width").value=c,get_by_id("gallery_style").selectedIndex="list"==d?1:0,get_by_id("gallery_align").selectedIndex="left"==e?1:"right"==e?2:0,get_by_id("border_thickness").value=h,get_by_id("border_color_input").value=f,get_by_id("bg_color_input").value=g,i=b.attr("images_list"));var j=get_by_id("fo"),k=j.editor_sequence.value,l=opener.get_by_id("uploaded_file_list_"+k);if(l)for(var m=get_by_id("image_list"),n=0;n';opener.editorFocus(opener.editorPrevSrl);var p=opener.editorGetIFrame(opener.editorPrevSrl);opener.editorReplaceHTML(p,o)}opener.editorFocus(opener.editorPrevSrl),window.close()}}function select_color(a,b){get_by_id(a+"_preview_color").style.backgroundColor="#"+b,get_by_id(a+"_color_input").value=b}var selected_node=null;jQuery(function(){getSlideShow()}); \ No newline at end of file +function getSlideShow(){var a,b,c,d,e,f,g,h,i="";if("undefined"!=typeof opener){a=opener.editorPrevNode,b=jQuery(a),b.is("img")&&(selected_node=a,c=b.width(),d=b.attr("gallery_style"),e=b.attr("gallery_align")||"center",f=b.attr("border_color"),g=b.attr("bg_color"),h=b.attr("border_thickness")||1,get_by_id("width").value=c,get_by_id("gallery_style").selectedIndex="list"==d?1:0,get_by_id("gallery_align").selectedIndex="left"==e?1:"right"==e?2:0,get_by_id("border_thickness").value=h,get_by_id("border_color_input").value=f,get_by_id("bg_color_input").value=g,i=b.attr("images_list"));var j=get_by_id("fo"),k=j.editor_sequence.value,l=get_by_id("image_list");jQuery.exec_json("file.getFileList",{editor_sequence:k},function(a){jQuery.each(a.files,function(a,b){var c=b.file_srl;if(c){var d=b.source_filename;if(/\.(jpe?g|png|gif)$/i.test(d)){var e=!1;-1!=i.indexOf(d)&&(e=!0);var f=new Option(b.source_filename,c,!1,e);l.options.add(f),files[b.file_srl]=b}}})})}}function insertSlideShow(){if("undefined"!=typeof opener){for(var a=new Array,b=get_by_id("image_list"),c=0;c';opener.editorFocus(opener.editorPrevSrl);var p=opener.editorGetIFrame(opener.editorPrevSrl);opener.editorReplaceHTML(p,o)}opener.editorFocus(opener.editorPrevSrl),window.close()}}function select_color(a,b){get_by_id(a+"_preview_color").style.backgroundColor="#"+b,get_by_id(a+"_color_input").value=b}var selected_node=null,files=[];jQuery(function(){getSlideShow()}); \ No newline at end of file diff --git a/modules/editor/tpl/js/editor.app.min.js b/modules/editor/tpl/js/editor.app.min.js index c11157caa..b323f1598 100644 --- a/modules/editor/tpl/js/editor.app.min.js +++ b/modules/editor/tpl/js/editor.app.min.js @@ -1 +1 @@ -!function(a){"use strict";function b(b){return a.grep(b,function(c,d){return c.length&&a.inArray(c,b)===d})}var c={bodyClass:"xe_content editable",toolbarCanCollapse:!0,toolbarGroups:[{name:"clipboard",groups:["undo","clipboard"]},{name:"editing",groups:["find","selection"]},{name:"links"},{name:"insert"},{name:"tools"},{name:"document",groups:["mode"]},"/",{name:"basicstyles",groups:["basicstyles","cleanup"]},{name:"paragraph",groups:["list","indent","blocks","align","bidi"]},"/",{name:"styles"},{name:"colors"},{name:"xecomponent"},{name:"others"}],allowedContent:!0,removePlugins:"stylescombo,language,bidi,flash,pagebreak",removeButtons:"Save,Preview,Print,Cut,Copy,Paste",uiColor:"#EFF0F0"},d=xe.createApp("XeCkEditor",{ckeconfig:{},editor_sequence:null,init:function(){var a=this;CKEDITOR.on("instanceCreated",function(){a.cast("CKEDITOR_CREATED")}),CKEDITOR.on("ready",function(){a.cast("CKEDITOR_READY")}),CKEDITOR.on("instanceReady",function(){a.cast("CKEDITOR_INSTANCE_READY")}),CKEDITOR.on("instanceLoaded",function(){a.cast("CKEDITOR_LOADED")})},editorInit:function(d,e){{var f=this,g=d,h=g.closest("form"),i=e.content_field,j=g.data();g.data().editorSequence}this.ckeconfig=a.extend({},c,e.ckeconfig||{}),this.editor_sequence=j.editorSequence,h.attr("editor_sequence",j.editorSequence),CKEDITOR.env.mobile&&(CKEDITOR.env.isCompatible=!0);var k=CKEDITOR.appendTo(g[0],{},i.val());k.on("customConfigLoaded",function(d){if(k.config=a.extend({},d.editor.config,f.ckeconfig),a.isFunction(CKEDITOR.editorConfig)){var g={};CKEDITOR.editorConfig(g),a.each(g,function(a,b){k.config[a]=b})}var h=d.editor.config.bodyClass.split(" ");if(h.push(c.bodyClass),h=b(h),k.config.bodyClass=h.join(" "),e.loadXeComponent){var i=d.editor.config.extraPlugins.split(",");i.push("xe_component"),i=b(i),k.config.extraPlugins=i.join(",")}e.enableToolbar||(k.config.toolbar=[])}),g.data("cke_instance",k),window.editorRelKeys[j.editorSequence]={},window.editorRelKeys[j.editorSequence].primary=h.find("[name="+j.editorPrimaryKeyName+"]")[0],window.editorRelKeys[j.editorSequence].content=h.find("[name="+j.editorContentKeyName+"]")[0],window.editorRelKeys[j.editorSequence].func=function(a){return f.getContent.call(f,a)},window.editorRelKeys[j.editorSequence].pasteHTML=function(a){k.insertHtml(a,"html")}},getContent:function(a){var b=this,c=_getCkeInstance(a).getData();return b.cast("GET_CONTENT",[c]),c},getInstance:function(a){return CKEDITOR.instances[a]},API_EDITOR_CREATED:function(){}});a.fn.XeCkEditor=function(a){var b=new d(this.eq(0),a);return b&&(xe.registerApp(b),b.editorInit(this.eq(0),a)),b},window.xe.XeCkEditor=function(){var a=new d;return a}}(jQuery); \ No newline at end of file +!function(a){"use strict";function b(b){return a.grep(b,function(c,d){return c.length&&a.inArray(c,b)===d})}var c={bodyClass:"xe_content editable",toolbarCanCollapse:!0,toolbarGroups:[{name:"clipboard",groups:["undo","clipboard"]},{name:"editing",groups:["find","selection"]},{name:"links"},{name:"insert"},{name:"tools"},{name:"document",groups:["mode"]},"/",{name:"basicstyles",groups:["basicstyles","cleanup"]},{name:"paragraph",groups:["list","indent","blocks","align","bidi"]},"/",{name:"styles"},{name:"colors"},{name:"xecomponent"},{name:"others"}],allowedContent:!0,removePlugins:"stylescombo,language,bidi,flash,pagebreak",removeButtons:"Save,Preview,Print,Cut,Copy,Paste",uiColor:"#EFF0F0"},d=xe.createApp("XeCkEditor",{ckeconfig:{},editor_sequence:null,init:function(){var a=this;CKEDITOR.on("instanceCreated",function(){a.cast("CKEDITOR_CREATED")}),CKEDITOR.on("ready",function(){a.cast("CKEDITOR_READY")}),CKEDITOR.on("instanceReady",function(){a.cast("CKEDITOR_INSTANCE_READY")}),CKEDITOR.on("instanceLoaded",function(){a.cast("CKEDITOR_LOADED")})},editorInit:function(d,e){{var f=this,g=d,h=g.closest("form"),i=h.find(e.content_field),j=g.data();g.data().editorSequence}this.ckeconfig=a.extend({},c,e.ckeconfig||{}),this.editor_sequence=j.editorSequence,h.attr("editor_sequence",j.editorSequence),CKEDITOR.env.mobile&&(CKEDITOR.env.isCompatible=!0);var k=CKEDITOR.appendTo(g[0],{},i.val());k.on("customConfigLoaded",function(d){if(k.config=a.extend({},d.editor.config,f.ckeconfig),a.isFunction(CKEDITOR.editorConfig)){var g={};CKEDITOR.editorConfig(g),a.each(g,function(a,b){k.config[a]=b})}var h=d.editor.config.bodyClass.split(" ");if(h.push(c.bodyClass),h=b(h),k.config.bodyClass=h.join(" "),e.loadXeComponent){var i=d.editor.config.extraPlugins.split(",");i.push("xe_component"),i=b(i),k.config.extraPlugins=i.join(",")}e.enableToolbar||(k.config.toolbar=[])}),g.data("cke_instance",k),window.editorRelKeys[j.editorSequence]={},window.editorRelKeys[j.editorSequence].primary=h.find("[name="+j.editorPrimaryKeyName+"]")[0],window.editorRelKeys[j.editorSequence].content=h.find("[name="+j.editorContentKeyName+"]")[0],window.editorRelKeys[j.editorSequence].func=function(a){return f.getContent.call(f,a)},window.editorRelKeys[j.editorSequence].pasteHTML=function(a){k.insertHtml(a,"html")}},getContent:function(a){var b=this,c=_getCkeInstance(a).getData();return b.cast("GET_CONTENT",[c]),c},getInstance:function(a){return CKEDITOR.instances[a]},API_EDITOR_CREATED:function(){}});a.fn.XeCkEditor=function(a){var b=new d(this.eq(0),a);return b&&(xe.registerApp(b),b.editorInit(this.eq(0),a)),b},window.xe.XeCkEditor=function(){var a=new d;return a}}(jQuery); \ No newline at end of file From e42e1fdd932b2167e85ee3ac85cb881531883b50 Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 19 May 2015 15:13:57 +0900 Subject: [PATCH 225/265] update version to 1.8.2 --- config/config.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.inc.php b/config/config.inc.php index 8fd8a1eff..4b5c1df20 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -29,7 +29,7 @@ define('__ZBXE__', __XE__); /** * Display XE's full version. */ -define('__XE_VERSION__', '1.8.1'); +define('__XE_VERSION__', '1.8.2'); define('__XE_VERSION_ALPHA__', (stripos(__XE_VERSION__, 'alpha') !== false)); define('__XE_VERSION_BETA__', (stripos(__XE_VERSION__, 'beta') !== false)); define('__XE_VERSION_RC__', (stripos(__XE_VERSION__, 'rc') !== false)); From 91497fd77bfaa05d9d1e76b187e512a534b647e0 Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 20 May 2015 15:50:12 +0900 Subject: [PATCH 226/265] =?UTF-8?q?fix=20#1480=20=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=95=84=EC=9B=83=20=EC=84=A4=EC=A0=95=20=EB=93=B1=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=ED=8C=8C=EC=9D=BC=20=EC=97=85=EB=A1=9C=EB=93=9C?= =?UTF-8?q?=EC=97=90=20=EC=8B=A4=ED=8C=A8=ED=95=98=EB=8A=94=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=20=EA=B3=A0=EC=B9=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/context/Context.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 80d48a687..b3c34bcbe 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -1417,7 +1417,7 @@ class Context */ function _setUploadedArgument() { - if($_SERVER['REQUEST_METHOD'] != 'POST' || !$_FILES || stripos($_SERVER['CONTENT_TYPE'], 'multipart/form-data') === FALSE || stripos($_SERVER['HTTP_CONTENT_TYPE'], 'multipart/form-data') === FALSE) + if($_SERVER['REQUEST_METHOD'] != 'POST' || !$_FILES || (stripos($_SERVER['CONTENT_TYPE'], 'multipart/form-data') === FALSE && stripos($_SERVER['HTTP_CONTENT_TYPE'], 'multipart/form-data') === FALSE)) { return; } From b1e730d17ef3ab2d8b323c494b23f1e3638c9b9f Mon Sep 17 00:00:00 2001 From: bnu Date: Fri, 22 May 2015 16:50:11 +0900 Subject: [PATCH 227/265] =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../js/plugins/jquery.fileupload/js/main.js | 6 + ...stall.suite.yml => Install.suite.dist.yml} | 13 +- tests/_support/AcceptanceHelper.php | 10 - tests/_support/DbDropTablesHelper.php | 24 + tests/_support/FunctionalHelper.php | 10 - tests/acceptance.suite.yml | 8 - tests/acceptance/AcceptanceTester.php | 1918 ----------------- tests/acceptance/_bootstrap.php | 2 - tests/functional.suite.yml | 9 - tests/functional/FunctionalTester.php | 360 ---- tests/functional/_bootstrap.php | 2 - tests/install/InstallTester.php | 183 +- tests/install/_bootstrap.php | 3 - tests/install/_pages/installPage.php | 41 - tests/install/_steps/AdminSteps.php | 18 - tests/install/installCept.php | 5 +- 16 files changed, 224 insertions(+), 2388 deletions(-) rename tests/{install.suite.yml => Install.suite.dist.yml} (50%) delete mode 100644 tests/_support/AcceptanceHelper.php create mode 100644 tests/_support/DbDropTablesHelper.php delete mode 100644 tests/_support/FunctionalHelper.php delete mode 100644 tests/acceptance.suite.yml delete mode 100644 tests/acceptance/AcceptanceTester.php delete mode 100644 tests/acceptance/_bootstrap.php delete mode 100644 tests/functional.suite.yml delete mode 100644 tests/functional/FunctionalTester.php delete mode 100644 tests/functional/_bootstrap.php delete mode 100644 tests/install/_pages/installPage.php delete mode 100644 tests/install/_steps/AdminSteps.php diff --git a/common/js/plugins/jquery.fileupload/js/main.js b/common/js/plugins/jquery.fileupload/js/main.js index 7686367a8..aa8f5f74a 100644 --- a/common/js/plugins/jquery.fileupload/js/main.js +++ b/common/js/plugins/jquery.fileupload/js/main.js @@ -48,6 +48,9 @@ editor_sequence: null, init : function() { }, + deactivate: function() { + console.log(this); + }, createInstance: function(containerEl, opt) { var self = this; var $container = this.$container = containerEl; @@ -315,6 +318,9 @@ return u; }; + + xe.unregisterApp(); + // Shortcut function in XE // xe.createXeUploader = function(browseButton, opts) { // var u = new XeUploader(browseButton, opts); diff --git a/tests/install.suite.yml b/tests/Install.suite.dist.yml similarity index 50% rename from tests/install.suite.yml rename to tests/Install.suite.dist.yml index f011860f3..62cd77e15 100644 --- a/tests/install.suite.yml +++ b/tests/Install.suite.dist.yml @@ -1,11 +1,18 @@ class_name: InstallTester modules: - enabled: - - PhpBrowser - - installHelper + enabled: [Db, PhpBrowser, DbDropTablesHelper, InstallHelper] config: PhpBrowser: url: 'http://localhost:8000/' + DbDropTablesHelper: + dsn: 'mysql:host=127.0.0.1;dbname=xe_test' + user: 'root' + password: 'root' + Db: + dsn: 'mysql:host=127.0.0.1;dbname=xe_test' + user: 'root' + password: 'root' + cleanup: true env: travis: modules: diff --git a/tests/_support/AcceptanceHelper.php b/tests/_support/AcceptanceHelper.php deleted file mode 100644 index ed5f2393d..000000000 --- a/tests/_support/AcceptanceHelper.php +++ /dev/null @@ -1,10 +0,0 @@ -driver->getDbh(); + if (!$dbh) { + throw new ModuleConfigException( + __CLASS__, + "No connection to database. Remove this module from config if you don't need database repopulation" + ); + } + + try { + $this->driver->cleanup(); + } catch (\Exception $e) { + throw new ModuleException(__CLASS__, $e->getMessage()); + } + } +} diff --git a/tests/_support/FunctionalHelper.php b/tests/_support/FunctionalHelper.php deleted file mode 100644 index 00207a24b..000000000 --- a/tests/_support/FunctionalHelper.php +++ /dev/null @@ -1,10 +0,0 @@ -setHeader('X-Requested-With', 'Codeception'); - * $I->amOnPage('test-headers.php'); - * ?> - * ``` - * - * @param string $name the name of the request header - * @param string $value the value to set it to for subsequent - * requests - * @see \Codeception\Module\PhpBrowser::setHeader() - */ - public function setHeader($name, $value) { - return $this->scenario->runStep(new \Codeception\Step\Action('setHeader', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Deletes the header with the passed name. Subsequent requests - * will not have the deleted header in its request. - * - * Example: - * ```php - * setHeader('X-Requested-With', 'Codeception'); - * $I->amOnPage('test-headers.php'); - * // ... - * $I->deleteHeader('X-Requested-With'); - * $I->amOnPage('some-other-page.php'); - * ?> - * ``` - * - * @param string $name the name of the header to delete. - * @see \Codeception\Module\PhpBrowser::deleteHeader() - */ - public function deleteHeader($name) { - return $this->scenario->runStep(new \Codeception\Step\Action('deleteHeader', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Authenticates user for HTTP_AUTH - * - * @param $username - * @param $password - * @see \Codeception\Module\PhpBrowser::amHttpAuthenticated() - */ - public function amHttpAuthenticated($username, $password) { - return $this->scenario->runStep(new \Codeception\Step\Condition('amHttpAuthenticated', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Opens the page for the given relative URI. - * - * ``` php - * amOnPage('/'); - * // opens /register page - * $I->amOnPage('/register'); - * ?> - * ``` - * - * @param $page - * @see \Codeception\Module\PhpBrowser::amOnPage() - */ - public function amOnPage($page) { - return $this->scenario->runStep(new \Codeception\Step\Condition('amOnPage', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Open web page at the given absolute URL and sets its hostname as the base host. - * - * ``` php - * amOnUrl('http://codeception.com'); - * $I->amOnPage('/quickstart'); // moves to http://codeception.com/quickstart - * ?> - * ``` - * @see \Codeception\Module\PhpBrowser::amOnUrl() - */ - public function amOnUrl($url) { - return $this->scenario->runStep(new \Codeception\Step\Condition('amOnUrl', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Changes the subdomain for the 'url' configuration parameter. - * Does not open a page; use `amOnPage` for that. - * - * ``` php - * amOnSubdomain('user'); - * $I->amOnPage('/'); - * // moves to http://user.mysite.com/ - * ?> - * ``` - * - * @param $subdomain - * - * @return mixed - * @see \Codeception\Module\PhpBrowser::amOnSubdomain() - */ - public function amOnSubdomain($subdomain) { - return $this->scenario->runStep(new \Codeception\Step\Condition('amOnSubdomain', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Low-level API method. - * If Codeception commands are not enough, use [Guzzle HTTP Client](http://guzzlephp.org/) methods directly - * - * Example: - * - * ``` php - * executeInGuzzle(function (\GuzzleHttp\Client $client) { - * $client->get('/get', ['query' => ['foo' => 'bar']]); - * }); - * ?> - * ``` - * - * It is not recommended to use this command on a regular basis. - * If Codeception lacks important Guzzle Client methods, implement them and submit patches. - * - * @param callable $function - * @see \Codeception\Module\PhpBrowser::executeInGuzzle() - */ - public function executeInGuzzle($function) { - return $this->scenario->runStep(new \Codeception\Step\Action('executeInGuzzle', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Perform a click on a link or a button, given by a locator. - * If a fuzzy locator is given, the page will be searched for a button, link, or image matching the locator string. - * For buttons, the "value" attribute, "name" attribute, and inner text are searched. - * For links, the link text is searched. - * For images, the "alt" attribute and inner text of any parent links are searched. - * - * The second parameter is a context (CSS or XPath locator) to narrow the search. - * - * Note that if the locator matches a button of type `submit`, the form will be submitted. - * - * ``` php - * click('Logout'); - * // button of form - * $I->click('Submit'); - * // CSS button - * $I->click('#form input[type=submit]'); - * // XPath - * $I->click('//form/*[@type=submit]'); - * // link in context - * $I->click('Logout', '#nav'); - * // using strict locator - * $I->click(['link' => 'Login']); - * ?> - * ``` - * - * @param $link - * @param $context - * @see \Codeception\Lib\InnerBrowser::click() - */ - public function click($link, $context = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('click', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current page contains the given string. - * Specify a locator as the second parameter to match a specific region. - * - * ``` php - * see('Logout'); // I can suppose user is logged in - * $I->see('Sign Up','h1'); // I can suppose it's a signup page - * $I->see('Sign Up','//body/h1'); // with XPath - * ?> - * ``` - * - * @param $text - * @param null $selector - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::see() - */ - public function canSee($text, $selector = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('see', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current page contains the given string. - * Specify a locator as the second parameter to match a specific region. - * - * ``` php - * see('Logout'); // I can suppose user is logged in - * $I->see('Sign Up','h1'); // I can suppose it's a signup page - * $I->see('Sign Up','//body/h1'); // with XPath - * ?> - * ``` - * - * @param $text - * @param null $selector - * @see \Codeception\Lib\InnerBrowser::see() - */ - public function see($text, $selector = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('see', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current page doesn't contain the text specified. - * Give a locator as the second parameter to match a specific region. - * - * ```php - * dontSee('Login'); // I can suppose user is already logged in - * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page - * $I->dontSee('Sign Up','//body/h1'); // with XPath - * ?> - * ``` - * - * @param $text - * @param null $selector - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSee() - */ - public function cantSee($text, $selector = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSee', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current page doesn't contain the text specified. - * Give a locator as the second parameter to match a specific region. - * - * ```php - * dontSee('Login'); // I can suppose user is already logged in - * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page - * $I->dontSee('Sign Up','//body/h1'); // with XPath - * ?> - * ``` - * - * @param $text - * @param null $selector - * @see \Codeception\Lib\InnerBrowser::dontSee() - */ - public function dontSee($text, $selector = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSee', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that there's a link with the specified text. - * Give a full URL as the second parameter to match links with that exact URL. - * - * ``` php - * seeLink('Logout'); // matches Logout - * $I->seeLink('Logout','/logout'); // matches Logout - * ?> - * ``` - * - * @param $text - * @param null $url - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeLink() - */ - public function canSeeLink($text, $url = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeLink', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that there's a link with the specified text. - * Give a full URL as the second parameter to match links with that exact URL. - * - * ``` php - * seeLink('Logout'); // matches Logout - * $I->seeLink('Logout','/logout'); // matches Logout - * ?> - * ``` - * - * @param $text - * @param null $url - * @see \Codeception\Lib\InnerBrowser::seeLink() - */ - public function seeLink($text, $url = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeLink', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page doesn't contain a link with the given string. - * If the second parameter is given, only links with a matching "href" attribute will be checked. - * - * ``` php - * dontSeeLink('Logout'); // I suppose user is not logged in - * $I->dontSeeLink('Checkout now', '/store/cart.php'); - * ?> - * ``` - * - * @param $text - * @param null $url - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeLink() - */ - public function cantSeeLink($text, $url = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeLink', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page doesn't contain a link with the given string. - * If the second parameter is given, only links with a matching "href" attribute will be checked. - * - * ``` php - * dontSeeLink('Logout'); // I suppose user is not logged in - * $I->dontSeeLink('Checkout now', '/store/cart.php'); - * ?> - * ``` - * - * @param $text - * @param null $url - * @see \Codeception\Lib\InnerBrowser::dontSeeLink() - */ - public function dontSeeLink($text, $url = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeLink', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that current URI contains the given string. - * - * ``` php - * seeInCurrentUrl('home'); - * // to match: /users/1 - * $I->seeInCurrentUrl('/users/'); - * ?> - * ``` - * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeInCurrentUrl() - */ - public function canSeeInCurrentUrl($uri) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInCurrentUrl', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that current URI contains the given string. - * - * ``` php - * seeInCurrentUrl('home'); - * // to match: /users/1 - * $I->seeInCurrentUrl('/users/'); - * ?> - * ``` - * - * @param $uri - * @see \Codeception\Lib\InnerBrowser::seeInCurrentUrl() - */ - public function seeInCurrentUrl($uri) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInCurrentUrl', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URI doesn't contain the given string. - * - * ``` php - * dontSeeInCurrentUrl('/users/'); - * ?> - * ``` - * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeInCurrentUrl() - */ - public function cantSeeInCurrentUrl($uri) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInCurrentUrl', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URI doesn't contain the given string. - * - * ``` php - * dontSeeInCurrentUrl('/users/'); - * ?> - * ``` - * - * @param $uri - * @see \Codeception\Lib\InnerBrowser::dontSeeInCurrentUrl() - */ - public function dontSeeInCurrentUrl($uri) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInCurrentUrl', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URL is equal to the given string. - * Unlike `seeInCurrentUrl`, this only matches the full URL. - * - * ``` php - * seeCurrentUrlEquals('/'); - * ?> - * ``` - * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlEquals() - */ - public function canSeeCurrentUrlEquals($uri) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlEquals', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URL is equal to the given string. - * Unlike `seeInCurrentUrl`, this only matches the full URL. - * - * ``` php - * seeCurrentUrlEquals('/'); - * ?> - * ``` - * - * @param $uri - * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlEquals() - */ - public function seeCurrentUrlEquals($uri) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCurrentUrlEquals', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URL doesn't equal the given string. - * Unlike `dontSeeInCurrentUrl`, this only matches the full URL. - * - * ``` php - * dontSeeCurrentUrlEquals('/'); - * ?> - * ``` - * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlEquals() - */ - public function cantSeeCurrentUrlEquals($uri) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlEquals', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URL doesn't equal the given string. - * Unlike `dontSeeInCurrentUrl`, this only matches the full URL. - * - * ``` php - * dontSeeCurrentUrlEquals('/'); - * ?> - * ``` - * - * @param $uri - * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlEquals() - */ - public function dontSeeCurrentUrlEquals($uri) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCurrentUrlEquals', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URL matches the given regular expression. - * - * ``` php - * seeCurrentUrlMatches('~$/users/(\d+)~'); - * ?> - * ``` - * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlMatches() - */ - public function canSeeCurrentUrlMatches($uri) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlMatches', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URL matches the given regular expression. - * - * ``` php - * seeCurrentUrlMatches('~$/users/(\d+)~'); - * ?> - * ``` - * - * @param $uri - * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlMatches() - */ - public function seeCurrentUrlMatches($uri) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCurrentUrlMatches', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that current url doesn't match the given regular expression. - * - * ``` php - * dontSeeCurrentUrlMatches('~$/users/(\d+)~'); - * ?> - * ``` - * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlMatches() - */ - public function cantSeeCurrentUrlMatches($uri) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlMatches', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that current url doesn't match the given regular expression. - * - * ``` php - * dontSeeCurrentUrlMatches('~$/users/(\d+)~'); - * ?> - * ``` - * - * @param $uri - * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlMatches() - */ - public function dontSeeCurrentUrlMatches($uri) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCurrentUrlMatches', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Executes the given regular expression against the current URI and returns the first match. - * If no parameters are provided, the full URI is returned. - * - * ``` php - * grabFromCurrentUrl('~$/user/(\d+)/~'); - * $uri = $I->grabFromCurrentUrl(); - * ?> - * ``` - * - * @param null $uri - * - * @internal param $url - * @return mixed - * @see \Codeception\Lib\InnerBrowser::grabFromCurrentUrl() - */ - public function grabFromCurrentUrl($uri = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('grabFromCurrentUrl', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the specified checkbox is checked. - * - * ``` php - * seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms - * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form. - * $I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]'); - * ?> - * ``` - * - * @param $checkbox - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeCheckboxIsChecked() - */ - public function canSeeCheckboxIsChecked($checkbox) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCheckboxIsChecked', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the specified checkbox is checked. - * - * ``` php - * seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms - * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form. - * $I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]'); - * ?> - * ``` - * - * @param $checkbox - * @see \Codeception\Lib\InnerBrowser::seeCheckboxIsChecked() - */ - public function seeCheckboxIsChecked($checkbox) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCheckboxIsChecked', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Check that the specified checkbox is unchecked. - * - * ``` php - * dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms - * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form. - * ?> - * ``` - * - * @param $checkbox - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeCheckboxIsChecked() - */ - public function cantSeeCheckboxIsChecked($checkbox) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCheckboxIsChecked', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Check that the specified checkbox is unchecked. - * - * ``` php - * dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms - * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form. - * ?> - * ``` - * - * @param $checkbox - * @see \Codeception\Lib\InnerBrowser::dontSeeCheckboxIsChecked() - */ - public function dontSeeCheckboxIsChecked($checkbox) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCheckboxIsChecked', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given input field or textarea contains the given value. - * For fuzzy locators, fields are matched by label text, the "name" attribute, CSS, and XPath. - * - * ``` php - * seeInField('Body','Type your comment here'); - * $I->seeInField('form textarea[name=body]','Type your comment here'); - * $I->seeInField('form input[type=hidden]','hidden_value'); - * $I->seeInField('#searchform input','Search'); - * $I->seeInField('//form/*[@name=search]','Search'); - * $I->seeInField(['name' => 'search'], 'Search'); - * ?> - * ``` - * - * @param $field - * @param $value - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeInField() - */ - public function canSeeInField($field, $value) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInField', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given input field or textarea contains the given value. - * For fuzzy locators, fields are matched by label text, the "name" attribute, CSS, and XPath. - * - * ``` php - * seeInField('Body','Type your comment here'); - * $I->seeInField('form textarea[name=body]','Type your comment here'); - * $I->seeInField('form input[type=hidden]','hidden_value'); - * $I->seeInField('#searchform input','Search'); - * $I->seeInField('//form/*[@name=search]','Search'); - * $I->seeInField(['name' => 'search'], 'Search'); - * ?> - * ``` - * - * @param $field - * @param $value - * @see \Codeception\Lib\InnerBrowser::seeInField() - */ - public function seeInField($field, $value) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInField', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that an input field or textarea doesn't contain the given value. - * For fuzzy locators, the field is matched by label text, CSS and XPath. - * - * ``` php - * dontSeeInField('Body','Type your comment here'); - * $I->dontSeeInField('form textarea[name=body]','Type your comment here'); - * $I->dontSeeInField('form input[type=hidden]','hidden_value'); - * $I->dontSeeInField('#searchform input','Search'); - * $I->dontSeeInField('//form/*[@name=search]','Search'); - * $I->dontSeeInField(['name' => 'search'], 'Search'); - * ?> - * ``` - * - * @param $field - * @param $value - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeInField() - */ - public function cantSeeInField($field, $value) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInField', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that an input field or textarea doesn't contain the given value. - * For fuzzy locators, the field is matched by label text, CSS and XPath. - * - * ``` php - * dontSeeInField('Body','Type your comment here'); - * $I->dontSeeInField('form textarea[name=body]','Type your comment here'); - * $I->dontSeeInField('form input[type=hidden]','hidden_value'); - * $I->dontSeeInField('#searchform input','Search'); - * $I->dontSeeInField('//form/*[@name=search]','Search'); - * $I->dontSeeInField(['name' => 'search'], 'Search'); - * ?> - * ``` - * - * @param $field - * @param $value - * @see \Codeception\Lib\InnerBrowser::dontSeeInField() - */ - public function dontSeeInField($field, $value) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInField', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks if the array of form parameters (name => value) are set on the form matched with the - * passed selector. - * - * ``` php - * seeInFormFields('form[name=myform]', [ - * 'input1' => 'value', - * 'input2' => 'other value', - * ]); - * ?> - * ``` - * - * For multi-select elements, or to check values of multiple elements with the same name, an - * array may be passed: - * - * ``` php - * seeInFormFields('.form-class', [ - * 'multiselect' => [ - * 'value1', - * 'value2', - * ], - * 'checkbox[]' => [ - * 'a checked value', - * 'another checked value', - * ], - * ]); - * ?> - * ``` - * - * Additionally, checkbox values can be checked with a boolean. - * - * ``` php - * seeInFormFields('#form-id', [ - * 'checkbox1' => true, // passes if checked - * 'checkbox2' => false, // passes if unchecked - * ]); - * ?> - * ``` - * - * Pair this with submitForm for quick testing magic. - * - * ``` php - * 'value', - * 'field2' => 'another value', - * 'checkbox1' => true, - * // ... - * ]; - * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); - * // $I->amOnPage('/path/to/form-page') may be needed - * $I->seeInFormFields('//form[@id=my-form]', $form); - * ?> - * ``` - * - * @param $formSelector - * @param $params - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeInFormFields() - */ - public function canSeeInFormFields($formSelector, $params) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInFormFields', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks if the array of form parameters (name => value) are set on the form matched with the - * passed selector. - * - * ``` php - * seeInFormFields('form[name=myform]', [ - * 'input1' => 'value', - * 'input2' => 'other value', - * ]); - * ?> - * ``` - * - * For multi-select elements, or to check values of multiple elements with the same name, an - * array may be passed: - * - * ``` php - * seeInFormFields('.form-class', [ - * 'multiselect' => [ - * 'value1', - * 'value2', - * ], - * 'checkbox[]' => [ - * 'a checked value', - * 'another checked value', - * ], - * ]); - * ?> - * ``` - * - * Additionally, checkbox values can be checked with a boolean. - * - * ``` php - * seeInFormFields('#form-id', [ - * 'checkbox1' => true, // passes if checked - * 'checkbox2' => false, // passes if unchecked - * ]); - * ?> - * ``` - * - * Pair this with submitForm for quick testing magic. - * - * ``` php - * 'value', - * 'field2' => 'another value', - * 'checkbox1' => true, - * // ... - * ]; - * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); - * // $I->amOnPage('/path/to/form-page') may be needed - * $I->seeInFormFields('//form[@id=my-form]', $form); - * ?> - * ``` - * - * @param $formSelector - * @param $params - * @see \Codeception\Lib\InnerBrowser::seeInFormFields() - */ - public function seeInFormFields($formSelector, $params) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInFormFields', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks if the array of form parameters (name => value) are not set on the form matched with - * the passed selector. - * - * ``` php - * dontSeeInFormFields('form[name=myform]', [ - * 'input1' => 'non-existent value', - * 'input2' => 'other non-existent value', - * ]); - * ?> - * ``` - * - * To check that an element hasn't been assigned any one of many values, an array can be passed - * as the value: - * - * ``` php - * dontSeeInFormFields('.form-class', [ - * 'fieldName' => [ - * 'This value shouldn\'t be set', - * 'And this value shouldn\'t be set', - * ], - * ]); - * ?> - * ``` - * - * Additionally, checkbox values can be checked with a boolean. - * - * ``` php - * dontSeeInFormFields('#form-id', [ - * 'checkbox1' => true, // fails if checked - * 'checkbox2' => false, // fails if unchecked - * ]); - * ?> - * ``` - * - * @param $formSelector - * @param $params - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeInFormFields() - */ - public function cantSeeInFormFields($formSelector, $params) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInFormFields', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks if the array of form parameters (name => value) are not set on the form matched with - * the passed selector. - * - * ``` php - * dontSeeInFormFields('form[name=myform]', [ - * 'input1' => 'non-existent value', - * 'input2' => 'other non-existent value', - * ]); - * ?> - * ``` - * - * To check that an element hasn't been assigned any one of many values, an array can be passed - * as the value: - * - * ``` php - * dontSeeInFormFields('.form-class', [ - * 'fieldName' => [ - * 'This value shouldn\'t be set', - * 'And this value shouldn\'t be set', - * ], - * ]); - * ?> - * ``` - * - * Additionally, checkbox values can be checked with a boolean. - * - * ``` php - * dontSeeInFormFields('#form-id', [ - * 'checkbox1' => true, // fails if checked - * 'checkbox2' => false, // fails if unchecked - * ]); - * ?> - * ``` - * - * @param $formSelector - * @param $params - * @see \Codeception\Lib\InnerBrowser::dontSeeInFormFields() - */ - public function dontSeeInFormFields($formSelector, $params) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInFormFields', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Submits the given form on the page, optionally with the given form values. - * Give the form fields values as an array. - * - * Skipped fields will be filled by their values from the page. - * You don't need to click the 'Submit' button afterwards. - * This command itself triggers the request to form's action. - * - * You can optionally specify what button's value to include - * in the request with the last parameter as an alternative to - * explicitly setting its value in the second parameter, as - * button values are not otherwise included in the request. - * - * Examples: - * - * ``` php - * submitForm('#login', array('login' => 'davert', 'password' => '123456')); - * // or - * $I->submitForm('#login', array('login' => 'davert', 'password' => '123456'), 'submitButtonName'); - * - * ``` - * - * For example, given this sample "Sign Up" form: - * - * ``` html - *
      - * Login:
      - * Password:
      - * Do you agree to out terms?
      - * Select pricing plan - * - *
      - * ``` - * - * You could write the following to submit it: - * - * ``` php - * submitForm('#userForm', array('user' => array('login' => 'Davert', 'password' => '123456', 'agree' => true)), 'submitButton'); - * - * ``` - * Note that "2" will be the submitted value for the "plan" field, as it is the selected option. - * - * You can also emulate a JavaScript submission by not specifying any buttons in the third parameter to submitForm. - * - * ```php - * submitForm('#userForm', array('user' => array('login' => 'Davert', 'password' => '123456', 'agree' => true))); - * - * ``` - * - * Pair this with seeInFormFields for quick testing magic. - * - * ``` php - * 'value', - * 'field2' => 'another value', - * 'checkbox1' => true, - * // ... - * ]; - * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); - * // $I->amOnPage('/path/to/form-page') may be needed - * $I->seeInFormFields('//form[@id=my-form]', $form); - * ?> - * ``` - * - * Parameter values can be set to arrays for multiple input fields - * of the same name, or multi-select combo boxes. For checkboxes, - * either the string value can be used, or boolean values which will - * be replaced by the checkbox's value in the DOM. - * - * ``` php - * submitForm('#my-form', [ - * 'field1' => 'value', - * 'checkbox' => [ - * 'value of first checkbox', - * 'value of second checkbox, - * ], - * 'otherCheckboxes' => [ - * true, - * false, - * false - * ], - * 'multiselect' => [ - * 'first option value', - * 'second option value' - * ] - * ]); - * ?> - * ``` - * - * Mixing string and boolean values for a checkbox's value is not - * supported and may produce unexpected results. - * - * @param $selector - * @param $params - * @param $button - * @see \Codeception\Lib\InnerBrowser::submitForm() - */ - public function submitForm($selector, $params, $button = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('submitForm', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Fills a text field or textarea with the given string. - * - * ``` php - * fillField("//input[@type='text']", "Hello World!"); - * $I->fillField(['name' => 'email'], 'jon@mail.com'); - * ?> - * ``` - * - * @param $field - * @param $value - * @see \Codeception\Lib\InnerBrowser::fillField() - */ - public function fillField($field, $value) { - return $this->scenario->runStep(new \Codeception\Step\Action('fillField', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Selects an option in a select tag or in radio button group. - * - * ``` php - * selectOption('form select[name=account]', 'Premium'); - * $I->selectOption('form input[name=payment]', 'Monthly'); - * $I->selectOption('//form/select[@name=account]', 'Monthly'); - * ?> - * ``` - * - * Provide an array for the second argument to select multiple options: - * - * ``` php - * selectOption('Which OS do you use?', array('Windows','Linux')); - * ?> - * ``` - * - * @param $select - * @param $option - * @see \Codeception\Lib\InnerBrowser::selectOption() - */ - public function selectOption($select, $option) { - return $this->scenario->runStep(new \Codeception\Step\Action('selectOption', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Ticks a checkbox. For radio buttons, use the `selectOption` method instead. - * - * ``` php - * checkOption('#agree'); - * ?> - * ``` - * - * @param $option - * @see \Codeception\Lib\InnerBrowser::checkOption() - */ - public function checkOption($option) { - return $this->scenario->runStep(new \Codeception\Step\Action('checkOption', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Unticks a checkbox. - * - * ``` php - * uncheckOption('#notify'); - * ?> - * ``` - * - * @param $option - * @see \Codeception\Lib\InnerBrowser::uncheckOption() - */ - public function uncheckOption($option) { - return $this->scenario->runStep(new \Codeception\Step\Action('uncheckOption', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Attaches a file relative to the Codeception data directory to the given file upload field. - * - * ``` php - * attachFile('input[@type="file"]', 'prices.xls'); - * ?> - * ``` - * - * @param $field - * @param $filename - * @see \Codeception\Lib\InnerBrowser::attachFile() - */ - public function attachFile($field, $filename) { - return $this->scenario->runStep(new \Codeception\Step\Action('attachFile', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * If your page triggers an ajax request, you can perform it manually. - * This action sends a GET ajax request with specified params. - * - * See ->sendAjaxPostRequest for examples. - * - * @param $uri - * @param $params - * @see \Codeception\Lib\InnerBrowser::sendAjaxGetRequest() - */ - public function sendAjaxGetRequest($uri, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('sendAjaxGetRequest', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * If your page triggers an ajax request, you can perform it manually. - * This action sends a POST ajax request with specified params. - * Additional params can be passed as array. - * - * Example: - * - * Imagine that by clicking checkbox you trigger ajax request which updates user settings. - * We emulate that click by running this ajax request manually. - * - * ``` php - * sendAjaxPostRequest('/updateSettings', array('notifications' => true)); // POST - * $I->sendAjaxGetRequest('/updateSettings', array('notifications' => true)); // GET - * - * ``` - * - * @param $uri - * @param $params - * @see \Codeception\Lib\InnerBrowser::sendAjaxPostRequest() - */ - public function sendAjaxPostRequest($uri, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('sendAjaxPostRequest', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * If your page triggers an ajax request, you can perform it manually. - * This action sends an ajax request with specified method and params. - * - * Example: - * - * You need to perform an ajax request specifying the HTTP method. - * - * ``` php - * sendAjaxRequest('PUT', '/posts/7', array('title' => 'new title')); - * - * ``` - * - * @param $method - * @param $uri - * @param $params - * @see \Codeception\Lib\InnerBrowser::sendAjaxRequest() - */ - public function sendAjaxRequest($method, $uri, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('sendAjaxRequest', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Finds and returns the text contents of the given element. - * If a fuzzy locator is used, the element is found using CSS, XPath, and by matching the full page source by regular expression. - * - * ``` php - * grabTextFrom('h1'); - * $heading = $I->grabTextFrom('descendant-or-self::h1'); - * $value = $I->grabTextFrom('~ - * ``` - * - * @param $cssOrXPathOrRegex - * - * @return mixed - * @see \Codeception\Lib\InnerBrowser::grabTextFrom() - */ - public function grabTextFrom($cssOrXPathOrRegex) { - return $this->scenario->runStep(new \Codeception\Step\Action('grabTextFrom', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Grabs the value of the given attribute value from the given element. - * Fails if element is not found. - * - * ``` php - * grabAttributeFrom('#tooltip', 'title'); - * ?> - * ``` - * - * - * @param $cssOrXpath - * @param $attribute - * @internal param $element - * @return mixed - * @see \Codeception\Lib\InnerBrowser::grabAttributeFrom() - */ - public function grabAttributeFrom($cssOrXpath, $attribute) { - return $this->scenario->runStep(new \Codeception\Step\Action('grabAttributeFrom', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * @param $field - * - * @return array|mixed|null|string - * @see \Codeception\Lib\InnerBrowser::grabValueFrom() - */ - public function grabValueFrom($field) { - return $this->scenario->runStep(new \Codeception\Step\Action('grabValueFrom', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Sets a cookie with the given name and value. - * You can set additional cookie params like `domain`, `path`, `expire`, `secure` in array passed as last argument. - * - * ``` php - * setCookie('PHPSESSID', 'el4ukv0kqbvoirg7nkp4dncpk3'); - * ?> - * ``` - * - * @param $name - * @param $val - * @param array $params - * @internal param $cookie - * @internal param $value - * - * @return mixed - * @see \Codeception\Lib\InnerBrowser::setCookie() - */ - public function setCookie($name, $val, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('setCookie', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Grabs a cookie value. - * You can set additional cookie params like `domain`, `path` in array passed as last argument. - * - * @param $cookie - * - * @param array $params - * @return mixed - * @see \Codeception\Lib\InnerBrowser::grabCookie() - */ - public function grabCookie($name, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('grabCookie', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that a cookie with the given name is set. - * You can set additional cookie params like `domain`, `path` as array passed in last argument. - * - * ``` php - * seeCookie('PHPSESSID'); - * ?> - * ``` - * - * @param $cookie - * @param array $params - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeCookie() - */ - public function canSeeCookie($name, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCookie', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that a cookie with the given name is set. - * You can set additional cookie params like `domain`, `path` as array passed in last argument. - * - * ``` php - * seeCookie('PHPSESSID'); - * ?> - * ``` - * - * @param $cookie - * @param array $params - * @return mixed - * @see \Codeception\Lib\InnerBrowser::seeCookie() - */ - public function seeCookie($name, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCookie', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that there isn't a cookie with the given name. - * You can set additional cookie params like `domain`, `path` as array passed in last argument. - * - * @param $cookie - * - * @param array $params - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeCookie() - */ - public function cantSeeCookie($name, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCookie', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that there isn't a cookie with the given name. - * You can set additional cookie params like `domain`, `path` as array passed in last argument. - * - * @param $cookie - * - * @param array $params - * @return mixed - * @see \Codeception\Lib\InnerBrowser::dontSeeCookie() - */ - public function dontSeeCookie($name, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCookie', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Unsets cookie with the given name. - * You can set additional cookie params like `domain`, `path` in array passed as last argument. - * - * @param $cookie - * - * @param array $params - * @return mixed - * @see \Codeception\Lib\InnerBrowser::resetCookie() - */ - public function resetCookie($name, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('resetCookie', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given element exists on the page and is visible. - * You can also specify expected attributes of this element. - * - * ``` php - * seeElement('.error'); - * $I->seeElement('//form/input[1]'); - * $I->seeElement('input', ['name' => 'login']); - * $I->seeElement('input', ['value' => '123456']); - * - * // strict locator in first arg, attributes in second - * $I->seeElement(['css' => 'form input'], ['name' => 'login']); - * ?> - * ``` - * - * @param $selector - * @param array $attributes - * @return - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeElement() - */ - public function canSeeElement($selector, $attributes = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeElement', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given element exists on the page and is visible. - * You can also specify expected attributes of this element. - * - * ``` php - * seeElement('.error'); - * $I->seeElement('//form/input[1]'); - * $I->seeElement('input', ['name' => 'login']); - * $I->seeElement('input', ['value' => '123456']); - * - * // strict locator in first arg, attributes in second - * $I->seeElement(['css' => 'form input'], ['name' => 'login']); - * ?> - * ``` - * - * @param $selector - * @param array $attributes - * @return - * @see \Codeception\Lib\InnerBrowser::seeElement() - */ - public function seeElement($selector, $attributes = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeElement', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given element is invisible or not present on the page. - * You can also specify expected attributes of this element. - * - * ``` php - * dontSeeElement('.error'); - * $I->dontSeeElement('//form/input[1]'); - * $I->dontSeeElement('input', ['name' => 'login']); - * $I->dontSeeElement('input', ['value' => '123456']); - * ?> - * ``` - * - * @param $selector - * @param array $attributes - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeElement() - */ - public function cantSeeElement($selector, $attributes = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeElement', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given element is invisible or not present on the page. - * You can also specify expected attributes of this element. - * - * ``` php - * dontSeeElement('.error'); - * $I->dontSeeElement('//form/input[1]'); - * $I->dontSeeElement('input', ['name' => 'login']); - * $I->dontSeeElement('input', ['value' => '123456']); - * ?> - * ``` - * - * @param $selector - * @param array $attributes - * @see \Codeception\Lib\InnerBrowser::dontSeeElement() - */ - public function dontSeeElement($selector, $attributes = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeElement', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that there are a certain number of elements matched by the given locator on the page. - * - * ``` php - * seeNumberOfElements('tr', 10); - * $I->seeNumberOfElements('tr', [0,10]); //between 0 and 10 elements - * ?> - * ``` - * @param $selector - * @param mixed $expected: - * - string: strict number - * - array: range of numbers [0,10] - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeNumberOfElements() - */ - public function canSeeNumberOfElements($selector, $expected) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeNumberOfElements', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that there are a certain number of elements matched by the given locator on the page. - * - * ``` php - * seeNumberOfElements('tr', 10); - * $I->seeNumberOfElements('tr', [0,10]); //between 0 and 10 elements - * ?> - * ``` - * @param $selector - * @param mixed $expected: - * - string: strict number - * - array: range of numbers [0,10] - * @see \Codeception\Lib\InnerBrowser::seeNumberOfElements() - */ - public function seeNumberOfElements($selector, $expected) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeNumberOfElements', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given option is selected. - * - * ``` php - * seeOptionIsSelected('#form input[name=payment]', 'Visa'); - * ?> - * ``` - * - * @param $selector - * @param $optionText - * - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeOptionIsSelected() - */ - public function canSeeOptionIsSelected($select, $optionText) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeOptionIsSelected', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given option is selected. - * - * ``` php - * seeOptionIsSelected('#form input[name=payment]', 'Visa'); - * ?> - * ``` - * - * @param $selector - * @param $optionText - * - * @return mixed - * @see \Codeception\Lib\InnerBrowser::seeOptionIsSelected() - */ - public function seeOptionIsSelected($select, $optionText) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeOptionIsSelected', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given option is not selected. - * - * ``` php - * dontSeeOptionIsSelected('#form input[name=payment]', 'Visa'); - * ?> - * ``` - * - * @param $selector - * @param $optionText - * - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeOptionIsSelected() - */ - public function cantSeeOptionIsSelected($select, $optionText) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeOptionIsSelected', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given option is not selected. - * - * ``` php - * dontSeeOptionIsSelected('#form input[name=payment]', 'Visa'); - * ?> - * ``` - * - * @param $selector - * @param $optionText - * - * @return mixed - * @see \Codeception\Lib\InnerBrowser::dontSeeOptionIsSelected() - */ - public function dontSeeOptionIsSelected($select, $optionText) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeOptionIsSelected', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Asserts that current page has 404 response status code. - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seePageNotFound() - */ - public function canSeePageNotFound() { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seePageNotFound', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Asserts that current page has 404 response status code. - * @see \Codeception\Lib\InnerBrowser::seePageNotFound() - */ - public function seePageNotFound() { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seePageNotFound', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that response code is equal to value provided. - * - * @param $code - * - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIs() - */ - public function canSeeResponseCodeIs($code) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeResponseCodeIs', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that response code is equal to value provided. - * - * @param $code - * - * @return mixed - * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIs() - */ - public function seeResponseCodeIs($code) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeResponseCodeIs', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page title contains the given string. - * - * ``` php - * seeInTitle('Blog - Post #1'); - * ?> - * ``` - * - * @param $title - * - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeInTitle() - */ - public function canSeeInTitle($title) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInTitle', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page title contains the given string. - * - * ``` php - * seeInTitle('Blog - Post #1'); - * ?> - * ``` - * - * @param $title - * - * @return mixed - * @see \Codeception\Lib\InnerBrowser::seeInTitle() - */ - public function seeInTitle($title) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInTitle', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page title does not contain the given string. - * - * @param $title - * - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeInTitle() - */ - public function cantSeeInTitle($title) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInTitle', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page title does not contain the given string. - * - * @param $title - * - * @return mixed - * @see \Codeception\Lib\InnerBrowser::dontSeeInTitle() - */ - public function dontSeeInTitle($title) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInTitle', func_get_args())); - } -} diff --git a/tests/acceptance/_bootstrap.php b/tests/acceptance/_bootstrap.php deleted file mode 100644 index 8a8855580..000000000 --- a/tests/acceptance/_bootstrap.php +++ /dev/null @@ -1,2 +0,0 @@ -scenario->runStep(new \Codeception\Step\Condition('amInPath', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Opens a file and stores it's content. - * - * Usage: - * - * ``` php - * openFile('composer.json'); - * $I->seeInThisFile('codeception/codeception'); - * ?> - * ``` - * - * @param $filename - * @see \Codeception\Module\Filesystem::openFile() - */ - public function openFile($filename) { - return $this->scenario->runStep(new \Codeception\Step\Action('openFile', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Deletes a file - * - * ``` php - * deleteFile('composer.lock'); - * ?> - * ``` - * - * @param $filename - * @see \Codeception\Module\Filesystem::deleteFile() - */ - public function deleteFile($filename) { - return $this->scenario->runStep(new \Codeception\Step\Action('deleteFile', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Deletes directory with all subdirectories - * - * ``` php - * deleteDir('vendor'); - * ?> - * ``` - * - * @param $dirname - * @see \Codeception\Module\Filesystem::deleteDir() - */ - public function deleteDir($dirname) { - return $this->scenario->runStep(new \Codeception\Step\Action('deleteDir', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Copies directory with all contents - * - * ``` php - * copyDir('vendor','old_vendor'); - * ?> - * ``` - * - * @param $src - * @param $dst - * @see \Codeception\Module\Filesystem::copyDir() - */ - public function copyDir($src, $dst) { - return $this->scenario->runStep(new \Codeception\Step\Action('copyDir', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks If opened file has `text` in it. - * - * Usage: - * - * ``` php - * openFile('composer.json'); - * $I->seeInThisFile('codeception/codeception'); - * ?> - * ``` - * - * @param $text - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\Filesystem::seeInThisFile() - */ - public function canSeeInThisFile($text) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInThisFile', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks If opened file has `text` in it. - * - * Usage: - * - * ``` php - * openFile('composer.json'); - * $I->seeInThisFile('codeception/codeception'); - * ?> - * ``` - * - * @param $text - * @see \Codeception\Module\Filesystem::seeInThisFile() - */ - public function seeInThisFile($text) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInThisFile', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks the strict matching of file contents. - * Unlike `seeInThisFile` will fail if file has something more than expected lines. - * Better to use with HEREDOC strings. - * Matching is done after removing "\r" chars from file content. - * - * ``` php - * openFile('process.pid'); - * $I->seeFileContentsEqual('3192'); - * ?> - * ``` - * - * @param $text - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\Filesystem::seeFileContentsEqual() - */ - public function canSeeFileContentsEqual($text) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeFileContentsEqual', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks the strict matching of file contents. - * Unlike `seeInThisFile` will fail if file has something more than expected lines. - * Better to use with HEREDOC strings. - * Matching is done after removing "\r" chars from file content. - * - * ``` php - * openFile('process.pid'); - * $I->seeFileContentsEqual('3192'); - * ?> - * ``` - * - * @param $text - * @see \Codeception\Module\Filesystem::seeFileContentsEqual() - */ - public function seeFileContentsEqual($text) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeFileContentsEqual', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks If opened file doesn't contain `text` in it - * - * ``` php - * openFile('composer.json'); - * $I->dontSeeInThisFile('codeception/codeception'); - * ?> - * ``` - * - * @param $text - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\Filesystem::dontSeeInThisFile() - */ - public function cantSeeInThisFile($text) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInThisFile', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks If opened file doesn't contain `text` in it - * - * ``` php - * openFile('composer.json'); - * $I->dontSeeInThisFile('codeception/codeception'); - * ?> - * ``` - * - * @param $text - * @see \Codeception\Module\Filesystem::dontSeeInThisFile() - */ - public function dontSeeInThisFile($text) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInThisFile', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Deletes a file - * @see \Codeception\Module\Filesystem::deleteThisFile() - */ - public function deleteThisFile() { - return $this->scenario->runStep(new \Codeception\Step\Action('deleteThisFile', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks if file exists in path. - * Opens a file when it's exists - * - * ``` php - * seeFileFound('UserModel.php','app/models'); - * ?> - * ``` - * - * @param $filename - * @param string $path - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\Filesystem::seeFileFound() - */ - public function canSeeFileFound($filename, $path = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeFileFound', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks if file exists in path. - * Opens a file when it's exists - * - * ``` php - * seeFileFound('UserModel.php','app/models'); - * ?> - * ``` - * - * @param $filename - * @param string $path - * @see \Codeception\Module\Filesystem::seeFileFound() - */ - public function seeFileFound($filename, $path = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeFileFound', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks if file does not exists in path - * - * @param $filename - * @param string $path - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\Filesystem::dontSeeFileFound() - */ - public function cantSeeFileFound($filename, $path = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeFileFound', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks if file does not exists in path - * - * @param $filename - * @param string $path - * @see \Codeception\Module\Filesystem::dontSeeFileFound() - */ - public function dontSeeFileFound($filename, $path = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeFileFound', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Erases directory contents - * - * ``` php - * cleanDir('logs'); - * ?> - * ``` - * - * @param $dirname - * @see \Codeception\Module\Filesystem::cleanDir() - */ - public function cleanDir($dirname) { - return $this->scenario->runStep(new \Codeception\Step\Action('cleanDir', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Saves contents to file - * - * @param $filename - * @param $contents - * @see \Codeception\Module\Filesystem::writeToFile() - */ - public function writeToFile($filename, $contents) { - return $this->scenario->runStep(new \Codeception\Step\Action('writeToFile', func_get_args())); - } -} diff --git a/tests/functional/_bootstrap.php b/tests/functional/_bootstrap.php deleted file mode 100644 index 8a8855580..000000000 --- a/tests/functional/_bootstrap.php +++ /dev/null @@ -1,2 +0,0 @@ -haveInDatabase('users', array('name' => 'miles', 'email' => 'miles@davis.com')); + * ?> + * ``` + * + * @param $table + * @param array $data + * + * @return integer $id + * @see \Codeception\Module\Db::haveInDatabase() + */ + public function haveInDatabase($table, $data) { + return $this->scenario->runStep(new \Codeception\Step\Action('haveInDatabase', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if a row with given column values exists. + * Provide table name and column values. + * + * Example: + * + * ``` php + * seeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com')); + * + * ``` + * Will generate: + * + * ``` sql + * SELECT COUNT(*) FROM `users` WHERE `name` = 'Davert' AND `email` = 'davert@mail.com' + * ``` + * Fails if no such user found. + * + * @param $table + * @param array $criteria + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Module\Db::seeInDatabase() + */ + public function canSeeInDatabase($table, $criteria = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInDatabase', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if a row with given column values exists. + * Provide table name and column values. + * + * Example: + * + * ``` php + * seeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com')); + * + * ``` + * Will generate: + * + * ``` sql + * SELECT COUNT(*) FROM `users` WHERE `name` = 'Davert' AND `email` = 'davert@mail.com' + * ``` + * Fails if no such user found. + * + * @param $table + * @param array $criteria + * @see \Codeception\Module\Db::seeInDatabase() + */ + public function seeInDatabase($table, $criteria = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInDatabase', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Effect is opposite to ->seeInDatabase + * + * Checks if there is no record with such column values in database. + * Provide table name and column values. + * + * Example: + * + * ``` php + * dontSeeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com')); + * + * ``` + * Will generate: + * + * ``` sql + * SELECT COUNT(*) FROM `users` WHERE `name` = 'Davert' AND `email` = 'davert@mail.com' + * ``` + * Fails if such user was found. + * + * @param $table + * @param array $criteria + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Module\Db::dontSeeInDatabase() + */ + public function cantSeeInDatabase($table, $criteria = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInDatabase', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Effect is opposite to ->seeInDatabase + * + * Checks if there is no record with such column values in database. + * Provide table name and column values. + * + * Example: + * + * ``` php + * dontSeeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com')); + * + * ``` + * Will generate: + * + * ``` sql + * SELECT COUNT(*) FROM `users` WHERE `name` = 'Davert' AND `email` = 'davert@mail.com' + * ``` + * Fails if such user was found. + * + * @param $table + * @param array $criteria + * @see \Codeception\Module\Db::dontSeeInDatabase() + */ + public function dontSeeInDatabase($table, $criteria = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInDatabase', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Fetches a single column value from a database. + * Provide table name, desired column and criteria. + * + * Example: + * + * ``` php + * grabFromDatabase('users', 'email', array('name' => 'Davert')); + * + * ``` + * + * @version 1.1 + * + * @param $table + * @param $column + * @param array $criteria + * + * @return mixed + * @see \Codeception\Module\Db::grabFromDatabase() + */ + public function grabFromDatabase($table, $column, $criteria = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('grabFromDatabase', func_get_args())); + } + + /** * [!] Method is generated. Documentation taken from corresponding module. * @@ -1915,4 +2085,15 @@ class InstallTester extends \Codeception\Actor public function dontSeeInTitle($title) { return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInTitle', func_get_args())); } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\DbDropTablesHelper::cleanup() + */ + public function cleanup() { + return $this->scenario->runStep(new \Codeception\Step\Action('cleanup', func_get_args())); + } } diff --git a/tests/install/_bootstrap.php b/tests/install/_bootstrap.php index a33ea900a..8a8855580 100644 --- a/tests/install/_bootstrap.php +++ b/tests/install/_bootstrap.php @@ -1,5 +1,2 @@ installTester = $I; - } - - /** - * @return installPage - */ - public static function of(InstallTester $I) - { - return new static($I); - } -} \ No newline at end of file diff --git a/tests/install/_steps/AdminSteps.php b/tests/install/_steps/AdminSteps.php deleted file mode 100644 index 191c9ba9c..000000000 --- a/tests/install/_steps/AdminSteps.php +++ /dev/null @@ -1,18 +0,0 @@ -env) ? Configuration::config() : Configuration::suiteEnvironments('install')[$this->env]; +$config = (!$this->env) ? Configuration::suiteSettings('Install', Configuration::config()) : Configuration::suiteEnvironments('Install')[$this->env]; + $db_config = $config['modules']['config']['Db']; $dsn = $db_config['dsn']; $dsn = split('[;:]', $dsn); $db_type = array_shift($dsn); - $dbinfo = [ 'type' => $db_type, 'user' => $db_config['user'], @@ -17,7 +17,6 @@ $dbinfo = [ 'dbname' => 'xe_install', 'port' => ((isset($db_config['port']) && $db_config['port'])?: 3306), ]; - foreach($dsn as $piece) { list($key, $val) = explode('=', $piece); $dbinfo[$key] = $val; From 070807eff6e2f90ea844e25b56a011b8b81aeed6 Mon Sep 17 00:00:00 2001 From: bnu Date: Fri, 22 May 2015 16:53:15 +0900 Subject: [PATCH 228/265] =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/_support/installHelper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/_support/installHelper.php b/tests/_support/installHelper.php index 57dcd339f..ba92cf656 100644 --- a/tests/_support/installHelper.php +++ b/tests/_support/installHelper.php @@ -1,7 +1,7 @@ Date: Fri, 22 May 2015 16:59:06 +0900 Subject: [PATCH 229/265] =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/install/InstallTester.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/install/InstallTester.php b/tests/install/InstallTester.php index ca7dfa6f2..5d2e8626a 100644 --- a/tests/install/InstallTester.php +++ b/tests/install/InstallTester.php @@ -8,7 +8,7 @@ use Codeception\Module\Db; use Codeception\Module\PhpBrowser; use Codeception\Module\DbDropTablesHelper; -use Codeception\Module\installHelper; +use Codeception\Module\InstallHelper; /** * Inherited Methods From 3fa042c2fb65410efd3874b83ad165cb90b8e55d Mon Sep 17 00:00:00 2001 From: bnu Date: Fri, 22 May 2015 17:04:37 +0900 Subject: [PATCH 230/265] =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/Install.suite.dist.yml | 24 - tests/_support/installHelper.php | 10 - tests/install/InstallTester.php | 2099 ------------------------------ tests/install/_bootstrap.php | 2 - tests/install/installCept.php | 104 -- 5 files changed, 2239 deletions(-) delete mode 100644 tests/Install.suite.dist.yml delete mode 100644 tests/_support/installHelper.php delete mode 100644 tests/install/InstallTester.php delete mode 100644 tests/install/_bootstrap.php delete mode 100644 tests/install/installCept.php diff --git a/tests/Install.suite.dist.yml b/tests/Install.suite.dist.yml deleted file mode 100644 index 62cd77e15..000000000 --- a/tests/Install.suite.dist.yml +++ /dev/null @@ -1,24 +0,0 @@ -class_name: InstallTester -modules: - enabled: [Db, PhpBrowser, DbDropTablesHelper, InstallHelper] - config: - PhpBrowser: - url: 'http://localhost:8000/' - DbDropTablesHelper: - dsn: 'mysql:host=127.0.0.1;dbname=xe_test' - user: 'root' - password: 'root' - Db: - dsn: 'mysql:host=127.0.0.1;dbname=xe_test' - user: 'root' - password: 'root' - cleanup: true -env: - travis: - modules: - config: - Db: - dsn: 'mysql:host=127.0.0.1;dbname=xe_test' - user: 'travis' - password: 'travis' - cleanup: true diff --git a/tests/_support/installHelper.php b/tests/_support/installHelper.php deleted file mode 100644 index ba92cf656..000000000 --- a/tests/_support/installHelper.php +++ /dev/null @@ -1,10 +0,0 @@ -haveInDatabase('users', array('name' => 'miles', 'email' => 'miles@davis.com')); - * ?> - * ``` - * - * @param $table - * @param array $data - * - * @return integer $id - * @see \Codeception\Module\Db::haveInDatabase() - */ - public function haveInDatabase($table, $data) { - return $this->scenario->runStep(new \Codeception\Step\Action('haveInDatabase', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks if a row with given column values exists. - * Provide table name and column values. - * - * Example: - * - * ``` php - * seeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com')); - * - * ``` - * Will generate: - * - * ``` sql - * SELECT COUNT(*) FROM `users` WHERE `name` = 'Davert' AND `email` = 'davert@mail.com' - * ``` - * Fails if no such user found. - * - * @param $table - * @param array $criteria - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\Db::seeInDatabase() - */ - public function canSeeInDatabase($table, $criteria = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInDatabase', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks if a row with given column values exists. - * Provide table name and column values. - * - * Example: - * - * ``` php - * seeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com')); - * - * ``` - * Will generate: - * - * ``` sql - * SELECT COUNT(*) FROM `users` WHERE `name` = 'Davert' AND `email` = 'davert@mail.com' - * ``` - * Fails if no such user found. - * - * @param $table - * @param array $criteria - * @see \Codeception\Module\Db::seeInDatabase() - */ - public function seeInDatabase($table, $criteria = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInDatabase', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Effect is opposite to ->seeInDatabase - * - * Checks if there is no record with such column values in database. - * Provide table name and column values. - * - * Example: - * - * ``` php - * dontSeeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com')); - * - * ``` - * Will generate: - * - * ``` sql - * SELECT COUNT(*) FROM `users` WHERE `name` = 'Davert' AND `email` = 'davert@mail.com' - * ``` - * Fails if such user was found. - * - * @param $table - * @param array $criteria - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\Db::dontSeeInDatabase() - */ - public function cantSeeInDatabase($table, $criteria = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInDatabase', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Effect is opposite to ->seeInDatabase - * - * Checks if there is no record with such column values in database. - * Provide table name and column values. - * - * Example: - * - * ``` php - * dontSeeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com')); - * - * ``` - * Will generate: - * - * ``` sql - * SELECT COUNT(*) FROM `users` WHERE `name` = 'Davert' AND `email` = 'davert@mail.com' - * ``` - * Fails if such user was found. - * - * @param $table - * @param array $criteria - * @see \Codeception\Module\Db::dontSeeInDatabase() - */ - public function dontSeeInDatabase($table, $criteria = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInDatabase', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Fetches a single column value from a database. - * Provide table name, desired column and criteria. - * - * Example: - * - * ``` php - * grabFromDatabase('users', 'email', array('name' => 'Davert')); - * - * ``` - * - * @version 1.1 - * - * @param $table - * @param $column - * @param array $criteria - * - * @return mixed - * @see \Codeception\Module\Db::grabFromDatabase() - */ - public function grabFromDatabase($table, $column, $criteria = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('grabFromDatabase', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Sets the HTTP header to the passed value - which is used on - * subsequent HTTP requests through PhpBrowser. - * - * Example: - * ```php - * setHeader('X-Requested-With', 'Codeception'); - * $I->amOnPage('test-headers.php'); - * ?> - * ``` - * - * @param string $name the name of the request header - * @param string $value the value to set it to for subsequent - * requests - * @see \Codeception\Module\PhpBrowser::setHeader() - */ - public function setHeader($name, $value) { - return $this->scenario->runStep(new \Codeception\Step\Action('setHeader', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Deletes the header with the passed name. Subsequent requests - * will not have the deleted header in its request. - * - * Example: - * ```php - * setHeader('X-Requested-With', 'Codeception'); - * $I->amOnPage('test-headers.php'); - * // ... - * $I->deleteHeader('X-Requested-With'); - * $I->amOnPage('some-other-page.php'); - * ?> - * ``` - * - * @param string $name the name of the header to delete. - * @see \Codeception\Module\PhpBrowser::deleteHeader() - */ - public function deleteHeader($name) { - return $this->scenario->runStep(new \Codeception\Step\Action('deleteHeader', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Authenticates user for HTTP_AUTH - * - * @param $username - * @param $password - * @see \Codeception\Module\PhpBrowser::amHttpAuthenticated() - */ - public function amHttpAuthenticated($username, $password) { - return $this->scenario->runStep(new \Codeception\Step\Condition('amHttpAuthenticated', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Opens the page for the given relative URI. - * - * ``` php - * amOnPage('/'); - * // opens /register page - * $I->amOnPage('/register'); - * ?> - * ``` - * - * @param $page - * @see \Codeception\Module\PhpBrowser::amOnPage() - */ - public function amOnPage($page) { - return $this->scenario->runStep(new \Codeception\Step\Condition('amOnPage', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Open web page at the given absolute URL and sets its hostname as the base host. - * - * ``` php - * amOnUrl('http://codeception.com'); - * $I->amOnPage('/quickstart'); // moves to http://codeception.com/quickstart - * ?> - * ``` - * @see \Codeception\Module\PhpBrowser::amOnUrl() - */ - public function amOnUrl($url) { - return $this->scenario->runStep(new \Codeception\Step\Condition('amOnUrl', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Changes the subdomain for the 'url' configuration parameter. - * Does not open a page; use `amOnPage` for that. - * - * ``` php - * amOnSubdomain('user'); - * $I->amOnPage('/'); - * // moves to http://user.mysite.com/ - * ?> - * ``` - * - * @param $subdomain - * - * @return mixed - * @see \Codeception\Module\PhpBrowser::amOnSubdomain() - */ - public function amOnSubdomain($subdomain) { - return $this->scenario->runStep(new \Codeception\Step\Condition('amOnSubdomain', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Low-level API method. - * If Codeception commands are not enough, use [Guzzle HTTP Client](http://guzzlephp.org/) methods directly - * - * Example: - * - * ``` php - * executeInGuzzle(function (\GuzzleHttp\Client $client) { - * $client->get('/get', ['query' => ['foo' => 'bar']]); - * }); - * ?> - * ``` - * - * It is not recommended to use this command on a regular basis. - * If Codeception lacks important Guzzle Client methods, implement them and submit patches. - * - * @param callable $function - * @see \Codeception\Module\PhpBrowser::executeInGuzzle() - */ - public function executeInGuzzle($function) { - return $this->scenario->runStep(new \Codeception\Step\Action('executeInGuzzle', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Perform a click on a link or a button, given by a locator. - * If a fuzzy locator is given, the page will be searched for a button, link, or image matching the locator string. - * For buttons, the "value" attribute, "name" attribute, and inner text are searched. - * For links, the link text is searched. - * For images, the "alt" attribute and inner text of any parent links are searched. - * - * The second parameter is a context (CSS or XPath locator) to narrow the search. - * - * Note that if the locator matches a button of type `submit`, the form will be submitted. - * - * ``` php - * click('Logout'); - * // button of form - * $I->click('Submit'); - * // CSS button - * $I->click('#form input[type=submit]'); - * // XPath - * $I->click('//form/*[@type=submit]'); - * // link in context - * $I->click('Logout', '#nav'); - * // using strict locator - * $I->click(['link' => 'Login']); - * ?> - * ``` - * - * @param $link - * @param $context - * @see \Codeception\Lib\InnerBrowser::click() - */ - public function click($link, $context = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('click', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current page contains the given string. - * Specify a locator as the second parameter to match a specific region. - * - * ``` php - * see('Logout'); // I can suppose user is logged in - * $I->see('Sign Up','h1'); // I can suppose it's a signup page - * $I->see('Sign Up','//body/h1'); // with XPath - * ?> - * ``` - * - * @param $text - * @param null $selector - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::see() - */ - public function canSee($text, $selector = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('see', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current page contains the given string. - * Specify a locator as the second parameter to match a specific region. - * - * ``` php - * see('Logout'); // I can suppose user is logged in - * $I->see('Sign Up','h1'); // I can suppose it's a signup page - * $I->see('Sign Up','//body/h1'); // with XPath - * ?> - * ``` - * - * @param $text - * @param null $selector - * @see \Codeception\Lib\InnerBrowser::see() - */ - public function see($text, $selector = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('see', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current page doesn't contain the text specified. - * Give a locator as the second parameter to match a specific region. - * - * ```php - * dontSee('Login'); // I can suppose user is already logged in - * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page - * $I->dontSee('Sign Up','//body/h1'); // with XPath - * ?> - * ``` - * - * @param $text - * @param null $selector - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSee() - */ - public function cantSee($text, $selector = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSee', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current page doesn't contain the text specified. - * Give a locator as the second parameter to match a specific region. - * - * ```php - * dontSee('Login'); // I can suppose user is already logged in - * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page - * $I->dontSee('Sign Up','//body/h1'); // with XPath - * ?> - * ``` - * - * @param $text - * @param null $selector - * @see \Codeception\Lib\InnerBrowser::dontSee() - */ - public function dontSee($text, $selector = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSee', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that there's a link with the specified text. - * Give a full URL as the second parameter to match links with that exact URL. - * - * ``` php - * seeLink('Logout'); // matches Logout - * $I->seeLink('Logout','/logout'); // matches Logout - * ?> - * ``` - * - * @param $text - * @param null $url - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeLink() - */ - public function canSeeLink($text, $url = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeLink', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that there's a link with the specified text. - * Give a full URL as the second parameter to match links with that exact URL. - * - * ``` php - * seeLink('Logout'); // matches Logout - * $I->seeLink('Logout','/logout'); // matches Logout - * ?> - * ``` - * - * @param $text - * @param null $url - * @see \Codeception\Lib\InnerBrowser::seeLink() - */ - public function seeLink($text, $url = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeLink', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page doesn't contain a link with the given string. - * If the second parameter is given, only links with a matching "href" attribute will be checked. - * - * ``` php - * dontSeeLink('Logout'); // I suppose user is not logged in - * $I->dontSeeLink('Checkout now', '/store/cart.php'); - * ?> - * ``` - * - * @param $text - * @param null $url - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeLink() - */ - public function cantSeeLink($text, $url = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeLink', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page doesn't contain a link with the given string. - * If the second parameter is given, only links with a matching "href" attribute will be checked. - * - * ``` php - * dontSeeLink('Logout'); // I suppose user is not logged in - * $I->dontSeeLink('Checkout now', '/store/cart.php'); - * ?> - * ``` - * - * @param $text - * @param null $url - * @see \Codeception\Lib\InnerBrowser::dontSeeLink() - */ - public function dontSeeLink($text, $url = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeLink', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that current URI contains the given string. - * - * ``` php - * seeInCurrentUrl('home'); - * // to match: /users/1 - * $I->seeInCurrentUrl('/users/'); - * ?> - * ``` - * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeInCurrentUrl() - */ - public function canSeeInCurrentUrl($uri) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInCurrentUrl', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that current URI contains the given string. - * - * ``` php - * seeInCurrentUrl('home'); - * // to match: /users/1 - * $I->seeInCurrentUrl('/users/'); - * ?> - * ``` - * - * @param $uri - * @see \Codeception\Lib\InnerBrowser::seeInCurrentUrl() - */ - public function seeInCurrentUrl($uri) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInCurrentUrl', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URI doesn't contain the given string. - * - * ``` php - * dontSeeInCurrentUrl('/users/'); - * ?> - * ``` - * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeInCurrentUrl() - */ - public function cantSeeInCurrentUrl($uri) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInCurrentUrl', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URI doesn't contain the given string. - * - * ``` php - * dontSeeInCurrentUrl('/users/'); - * ?> - * ``` - * - * @param $uri - * @see \Codeception\Lib\InnerBrowser::dontSeeInCurrentUrl() - */ - public function dontSeeInCurrentUrl($uri) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInCurrentUrl', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URL is equal to the given string. - * Unlike `seeInCurrentUrl`, this only matches the full URL. - * - * ``` php - * seeCurrentUrlEquals('/'); - * ?> - * ``` - * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlEquals() - */ - public function canSeeCurrentUrlEquals($uri) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlEquals', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URL is equal to the given string. - * Unlike `seeInCurrentUrl`, this only matches the full URL. - * - * ``` php - * seeCurrentUrlEquals('/'); - * ?> - * ``` - * - * @param $uri - * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlEquals() - */ - public function seeCurrentUrlEquals($uri) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCurrentUrlEquals', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URL doesn't equal the given string. - * Unlike `dontSeeInCurrentUrl`, this only matches the full URL. - * - * ``` php - * dontSeeCurrentUrlEquals('/'); - * ?> - * ``` - * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlEquals() - */ - public function cantSeeCurrentUrlEquals($uri) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlEquals', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URL doesn't equal the given string. - * Unlike `dontSeeInCurrentUrl`, this only matches the full URL. - * - * ``` php - * dontSeeCurrentUrlEquals('/'); - * ?> - * ``` - * - * @param $uri - * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlEquals() - */ - public function dontSeeCurrentUrlEquals($uri) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCurrentUrlEquals', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URL matches the given regular expression. - * - * ``` php - * seeCurrentUrlMatches('~$/users/(\d+)~'); - * ?> - * ``` - * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlMatches() - */ - public function canSeeCurrentUrlMatches($uri) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlMatches', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URL matches the given regular expression. - * - * ``` php - * seeCurrentUrlMatches('~$/users/(\d+)~'); - * ?> - * ``` - * - * @param $uri - * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlMatches() - */ - public function seeCurrentUrlMatches($uri) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCurrentUrlMatches', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that current url doesn't match the given regular expression. - * - * ``` php - * dontSeeCurrentUrlMatches('~$/users/(\d+)~'); - * ?> - * ``` - * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlMatches() - */ - public function cantSeeCurrentUrlMatches($uri) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlMatches', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that current url doesn't match the given regular expression. - * - * ``` php - * dontSeeCurrentUrlMatches('~$/users/(\d+)~'); - * ?> - * ``` - * - * @param $uri - * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlMatches() - */ - public function dontSeeCurrentUrlMatches($uri) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCurrentUrlMatches', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Executes the given regular expression against the current URI and returns the first match. - * If no parameters are provided, the full URI is returned. - * - * ``` php - * grabFromCurrentUrl('~$/user/(\d+)/~'); - * $uri = $I->grabFromCurrentUrl(); - * ?> - * ``` - * - * @param null $uri - * - * @internal param $url - * @return mixed - * @see \Codeception\Lib\InnerBrowser::grabFromCurrentUrl() - */ - public function grabFromCurrentUrl($uri = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('grabFromCurrentUrl', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the specified checkbox is checked. - * - * ``` php - * seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms - * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form. - * $I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]'); - * ?> - * ``` - * - * @param $checkbox - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeCheckboxIsChecked() - */ - public function canSeeCheckboxIsChecked($checkbox) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCheckboxIsChecked', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the specified checkbox is checked. - * - * ``` php - * seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms - * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form. - * $I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]'); - * ?> - * ``` - * - * @param $checkbox - * @see \Codeception\Lib\InnerBrowser::seeCheckboxIsChecked() - */ - public function seeCheckboxIsChecked($checkbox) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCheckboxIsChecked', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Check that the specified checkbox is unchecked. - * - * ``` php - * dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms - * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form. - * ?> - * ``` - * - * @param $checkbox - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeCheckboxIsChecked() - */ - public function cantSeeCheckboxIsChecked($checkbox) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCheckboxIsChecked', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Check that the specified checkbox is unchecked. - * - * ``` php - * dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms - * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form. - * ?> - * ``` - * - * @param $checkbox - * @see \Codeception\Lib\InnerBrowser::dontSeeCheckboxIsChecked() - */ - public function dontSeeCheckboxIsChecked($checkbox) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCheckboxIsChecked', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given input field or textarea contains the given value. - * For fuzzy locators, fields are matched by label text, the "name" attribute, CSS, and XPath. - * - * ``` php - * seeInField('Body','Type your comment here'); - * $I->seeInField('form textarea[name=body]','Type your comment here'); - * $I->seeInField('form input[type=hidden]','hidden_value'); - * $I->seeInField('#searchform input','Search'); - * $I->seeInField('//form/*[@name=search]','Search'); - * $I->seeInField(['name' => 'search'], 'Search'); - * ?> - * ``` - * - * @param $field - * @param $value - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeInField() - */ - public function canSeeInField($field, $value) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInField', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given input field or textarea contains the given value. - * For fuzzy locators, fields are matched by label text, the "name" attribute, CSS, and XPath. - * - * ``` php - * seeInField('Body','Type your comment here'); - * $I->seeInField('form textarea[name=body]','Type your comment here'); - * $I->seeInField('form input[type=hidden]','hidden_value'); - * $I->seeInField('#searchform input','Search'); - * $I->seeInField('//form/*[@name=search]','Search'); - * $I->seeInField(['name' => 'search'], 'Search'); - * ?> - * ``` - * - * @param $field - * @param $value - * @see \Codeception\Lib\InnerBrowser::seeInField() - */ - public function seeInField($field, $value) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInField', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that an input field or textarea doesn't contain the given value. - * For fuzzy locators, the field is matched by label text, CSS and XPath. - * - * ``` php - * dontSeeInField('Body','Type your comment here'); - * $I->dontSeeInField('form textarea[name=body]','Type your comment here'); - * $I->dontSeeInField('form input[type=hidden]','hidden_value'); - * $I->dontSeeInField('#searchform input','Search'); - * $I->dontSeeInField('//form/*[@name=search]','Search'); - * $I->dontSeeInField(['name' => 'search'], 'Search'); - * ?> - * ``` - * - * @param $field - * @param $value - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeInField() - */ - public function cantSeeInField($field, $value) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInField', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that an input field or textarea doesn't contain the given value. - * For fuzzy locators, the field is matched by label text, CSS and XPath. - * - * ``` php - * dontSeeInField('Body','Type your comment here'); - * $I->dontSeeInField('form textarea[name=body]','Type your comment here'); - * $I->dontSeeInField('form input[type=hidden]','hidden_value'); - * $I->dontSeeInField('#searchform input','Search'); - * $I->dontSeeInField('//form/*[@name=search]','Search'); - * $I->dontSeeInField(['name' => 'search'], 'Search'); - * ?> - * ``` - * - * @param $field - * @param $value - * @see \Codeception\Lib\InnerBrowser::dontSeeInField() - */ - public function dontSeeInField($field, $value) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInField', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks if the array of form parameters (name => value) are set on the form matched with the - * passed selector. - * - * ``` php - * seeInFormFields('form[name=myform]', [ - * 'input1' => 'value', - * 'input2' => 'other value', - * ]); - * ?> - * ``` - * - * For multi-select elements, or to check values of multiple elements with the same name, an - * array may be passed: - * - * ``` php - * seeInFormFields('.form-class', [ - * 'multiselect' => [ - * 'value1', - * 'value2', - * ], - * 'checkbox[]' => [ - * 'a checked value', - * 'another checked value', - * ], - * ]); - * ?> - * ``` - * - * Additionally, checkbox values can be checked with a boolean. - * - * ``` php - * seeInFormFields('#form-id', [ - * 'checkbox1' => true, // passes if checked - * 'checkbox2' => false, // passes if unchecked - * ]); - * ?> - * ``` - * - * Pair this with submitForm for quick testing magic. - * - * ``` php - * 'value', - * 'field2' => 'another value', - * 'checkbox1' => true, - * // ... - * ]; - * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); - * // $I->amOnPage('/path/to/form-page') may be needed - * $I->seeInFormFields('//form[@id=my-form]', $form); - * ?> - * ``` - * - * @param $formSelector - * @param $params - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeInFormFields() - */ - public function canSeeInFormFields($formSelector, $params) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInFormFields', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks if the array of form parameters (name => value) are set on the form matched with the - * passed selector. - * - * ``` php - * seeInFormFields('form[name=myform]', [ - * 'input1' => 'value', - * 'input2' => 'other value', - * ]); - * ?> - * ``` - * - * For multi-select elements, or to check values of multiple elements with the same name, an - * array may be passed: - * - * ``` php - * seeInFormFields('.form-class', [ - * 'multiselect' => [ - * 'value1', - * 'value2', - * ], - * 'checkbox[]' => [ - * 'a checked value', - * 'another checked value', - * ], - * ]); - * ?> - * ``` - * - * Additionally, checkbox values can be checked with a boolean. - * - * ``` php - * seeInFormFields('#form-id', [ - * 'checkbox1' => true, // passes if checked - * 'checkbox2' => false, // passes if unchecked - * ]); - * ?> - * ``` - * - * Pair this with submitForm for quick testing magic. - * - * ``` php - * 'value', - * 'field2' => 'another value', - * 'checkbox1' => true, - * // ... - * ]; - * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); - * // $I->amOnPage('/path/to/form-page') may be needed - * $I->seeInFormFields('//form[@id=my-form]', $form); - * ?> - * ``` - * - * @param $formSelector - * @param $params - * @see \Codeception\Lib\InnerBrowser::seeInFormFields() - */ - public function seeInFormFields($formSelector, $params) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInFormFields', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks if the array of form parameters (name => value) are not set on the form matched with - * the passed selector. - * - * ``` php - * dontSeeInFormFields('form[name=myform]', [ - * 'input1' => 'non-existent value', - * 'input2' => 'other non-existent value', - * ]); - * ?> - * ``` - * - * To check that an element hasn't been assigned any one of many values, an array can be passed - * as the value: - * - * ``` php - * dontSeeInFormFields('.form-class', [ - * 'fieldName' => [ - * 'This value shouldn\'t be set', - * 'And this value shouldn\'t be set', - * ], - * ]); - * ?> - * ``` - * - * Additionally, checkbox values can be checked with a boolean. - * - * ``` php - * dontSeeInFormFields('#form-id', [ - * 'checkbox1' => true, // fails if checked - * 'checkbox2' => false, // fails if unchecked - * ]); - * ?> - * ``` - * - * @param $formSelector - * @param $params - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeInFormFields() - */ - public function cantSeeInFormFields($formSelector, $params) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInFormFields', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks if the array of form parameters (name => value) are not set on the form matched with - * the passed selector. - * - * ``` php - * dontSeeInFormFields('form[name=myform]', [ - * 'input1' => 'non-existent value', - * 'input2' => 'other non-existent value', - * ]); - * ?> - * ``` - * - * To check that an element hasn't been assigned any one of many values, an array can be passed - * as the value: - * - * ``` php - * dontSeeInFormFields('.form-class', [ - * 'fieldName' => [ - * 'This value shouldn\'t be set', - * 'And this value shouldn\'t be set', - * ], - * ]); - * ?> - * ``` - * - * Additionally, checkbox values can be checked with a boolean. - * - * ``` php - * dontSeeInFormFields('#form-id', [ - * 'checkbox1' => true, // fails if checked - * 'checkbox2' => false, // fails if unchecked - * ]); - * ?> - * ``` - * - * @param $formSelector - * @param $params - * @see \Codeception\Lib\InnerBrowser::dontSeeInFormFields() - */ - public function dontSeeInFormFields($formSelector, $params) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInFormFields', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Submits the given form on the page, optionally with the given form values. - * Give the form fields values as an array. - * - * Skipped fields will be filled by their values from the page. - * You don't need to click the 'Submit' button afterwards. - * This command itself triggers the request to form's action. - * - * You can optionally specify what button's value to include - * in the request with the last parameter as an alternative to - * explicitly setting its value in the second parameter, as - * button values are not otherwise included in the request. - * - * Examples: - * - * ``` php - * submitForm('#login', array('login' => 'davert', 'password' => '123456')); - * // or - * $I->submitForm('#login', array('login' => 'davert', 'password' => '123456'), 'submitButtonName'); - * - * ``` - * - * For example, given this sample "Sign Up" form: - * - * ``` html - *
      - * Login:
      - * Password:
      - * Do you agree to out terms?
      - * Select pricing plan - * - *
      - * ``` - * - * You could write the following to submit it: - * - * ``` php - * submitForm('#userForm', array('user' => array('login' => 'Davert', 'password' => '123456', 'agree' => true)), 'submitButton'); - * - * ``` - * Note that "2" will be the submitted value for the "plan" field, as it is the selected option. - * - * You can also emulate a JavaScript submission by not specifying any buttons in the third parameter to submitForm. - * - * ```php - * submitForm('#userForm', array('user' => array('login' => 'Davert', 'password' => '123456', 'agree' => true))); - * - * ``` - * - * Pair this with seeInFormFields for quick testing magic. - * - * ``` php - * 'value', - * 'field2' => 'another value', - * 'checkbox1' => true, - * // ... - * ]; - * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); - * // $I->amOnPage('/path/to/form-page') may be needed - * $I->seeInFormFields('//form[@id=my-form]', $form); - * ?> - * ``` - * - * Parameter values can be set to arrays for multiple input fields - * of the same name, or multi-select combo boxes. For checkboxes, - * either the string value can be used, or boolean values which will - * be replaced by the checkbox's value in the DOM. - * - * ``` php - * submitForm('#my-form', [ - * 'field1' => 'value', - * 'checkbox' => [ - * 'value of first checkbox', - * 'value of second checkbox, - * ], - * 'otherCheckboxes' => [ - * true, - * false, - * false - * ], - * 'multiselect' => [ - * 'first option value', - * 'second option value' - * ] - * ]); - * ?> - * ``` - * - * Mixing string and boolean values for a checkbox's value is not - * supported and may produce unexpected results. - * - * @param $selector - * @param $params - * @param $button - * @see \Codeception\Lib\InnerBrowser::submitForm() - */ - public function submitForm($selector, $params, $button = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('submitForm', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Fills a text field or textarea with the given string. - * - * ``` php - * fillField("//input[@type='text']", "Hello World!"); - * $I->fillField(['name' => 'email'], 'jon@mail.com'); - * ?> - * ``` - * - * @param $field - * @param $value - * @see \Codeception\Lib\InnerBrowser::fillField() - */ - public function fillField($field, $value) { - return $this->scenario->runStep(new \Codeception\Step\Action('fillField', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Selects an option in a select tag or in radio button group. - * - * ``` php - * selectOption('form select[name=account]', 'Premium'); - * $I->selectOption('form input[name=payment]', 'Monthly'); - * $I->selectOption('//form/select[@name=account]', 'Monthly'); - * ?> - * ``` - * - * Provide an array for the second argument to select multiple options: - * - * ``` php - * selectOption('Which OS do you use?', array('Windows','Linux')); - * ?> - * ``` - * - * @param $select - * @param $option - * @see \Codeception\Lib\InnerBrowser::selectOption() - */ - public function selectOption($select, $option) { - return $this->scenario->runStep(new \Codeception\Step\Action('selectOption', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Ticks a checkbox. For radio buttons, use the `selectOption` method instead. - * - * ``` php - * checkOption('#agree'); - * ?> - * ``` - * - * @param $option - * @see \Codeception\Lib\InnerBrowser::checkOption() - */ - public function checkOption($option) { - return $this->scenario->runStep(new \Codeception\Step\Action('checkOption', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Unticks a checkbox. - * - * ``` php - * uncheckOption('#notify'); - * ?> - * ``` - * - * @param $option - * @see \Codeception\Lib\InnerBrowser::uncheckOption() - */ - public function uncheckOption($option) { - return $this->scenario->runStep(new \Codeception\Step\Action('uncheckOption', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Attaches a file relative to the Codeception data directory to the given file upload field. - * - * ``` php - * attachFile('input[@type="file"]', 'prices.xls'); - * ?> - * ``` - * - * @param $field - * @param $filename - * @see \Codeception\Lib\InnerBrowser::attachFile() - */ - public function attachFile($field, $filename) { - return $this->scenario->runStep(new \Codeception\Step\Action('attachFile', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * If your page triggers an ajax request, you can perform it manually. - * This action sends a GET ajax request with specified params. - * - * See ->sendAjaxPostRequest for examples. - * - * @param $uri - * @param $params - * @see \Codeception\Lib\InnerBrowser::sendAjaxGetRequest() - */ - public function sendAjaxGetRequest($uri, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('sendAjaxGetRequest', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * If your page triggers an ajax request, you can perform it manually. - * This action sends a POST ajax request with specified params. - * Additional params can be passed as array. - * - * Example: - * - * Imagine that by clicking checkbox you trigger ajax request which updates user settings. - * We emulate that click by running this ajax request manually. - * - * ``` php - * sendAjaxPostRequest('/updateSettings', array('notifications' => true)); // POST - * $I->sendAjaxGetRequest('/updateSettings', array('notifications' => true)); // GET - * - * ``` - * - * @param $uri - * @param $params - * @see \Codeception\Lib\InnerBrowser::sendAjaxPostRequest() - */ - public function sendAjaxPostRequest($uri, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('sendAjaxPostRequest', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * If your page triggers an ajax request, you can perform it manually. - * This action sends an ajax request with specified method and params. - * - * Example: - * - * You need to perform an ajax request specifying the HTTP method. - * - * ``` php - * sendAjaxRequest('PUT', '/posts/7', array('title' => 'new title')); - * - * ``` - * - * @param $method - * @param $uri - * @param $params - * @see \Codeception\Lib\InnerBrowser::sendAjaxRequest() - */ - public function sendAjaxRequest($method, $uri, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('sendAjaxRequest', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Finds and returns the text contents of the given element. - * If a fuzzy locator is used, the element is found using CSS, XPath, and by matching the full page source by regular expression. - * - * ``` php - * grabTextFrom('h1'); - * $heading = $I->grabTextFrom('descendant-or-self::h1'); - * $value = $I->grabTextFrom('~ - * ``` - * - * @param $cssOrXPathOrRegex - * - * @return mixed - * @see \Codeception\Lib\InnerBrowser::grabTextFrom() - */ - public function grabTextFrom($cssOrXPathOrRegex) { - return $this->scenario->runStep(new \Codeception\Step\Action('grabTextFrom', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Grabs the value of the given attribute value from the given element. - * Fails if element is not found. - * - * ``` php - * grabAttributeFrom('#tooltip', 'title'); - * ?> - * ``` - * - * - * @param $cssOrXpath - * @param $attribute - * @internal param $element - * @return mixed - * @see \Codeception\Lib\InnerBrowser::grabAttributeFrom() - */ - public function grabAttributeFrom($cssOrXpath, $attribute) { - return $this->scenario->runStep(new \Codeception\Step\Action('grabAttributeFrom', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * @param $field - * - * @return array|mixed|null|string - * @see \Codeception\Lib\InnerBrowser::grabValueFrom() - */ - public function grabValueFrom($field) { - return $this->scenario->runStep(new \Codeception\Step\Action('grabValueFrom', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Sets a cookie with the given name and value. - * You can set additional cookie params like `domain`, `path`, `expire`, `secure` in array passed as last argument. - * - * ``` php - * setCookie('PHPSESSID', 'el4ukv0kqbvoirg7nkp4dncpk3'); - * ?> - * ``` - * - * @param $name - * @param $val - * @param array $params - * @internal param $cookie - * @internal param $value - * - * @return mixed - * @see \Codeception\Lib\InnerBrowser::setCookie() - */ - public function setCookie($name, $val, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('setCookie', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Grabs a cookie value. - * You can set additional cookie params like `domain`, `path` in array passed as last argument. - * - * @param $cookie - * - * @param array $params - * @return mixed - * @see \Codeception\Lib\InnerBrowser::grabCookie() - */ - public function grabCookie($name, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('grabCookie', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that a cookie with the given name is set. - * You can set additional cookie params like `domain`, `path` as array passed in last argument. - * - * ``` php - * seeCookie('PHPSESSID'); - * ?> - * ``` - * - * @param $cookie - * @param array $params - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeCookie() - */ - public function canSeeCookie($name, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCookie', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that a cookie with the given name is set. - * You can set additional cookie params like `domain`, `path` as array passed in last argument. - * - * ``` php - * seeCookie('PHPSESSID'); - * ?> - * ``` - * - * @param $cookie - * @param array $params - * @return mixed - * @see \Codeception\Lib\InnerBrowser::seeCookie() - */ - public function seeCookie($name, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCookie', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that there isn't a cookie with the given name. - * You can set additional cookie params like `domain`, `path` as array passed in last argument. - * - * @param $cookie - * - * @param array $params - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeCookie() - */ - public function cantSeeCookie($name, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCookie', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that there isn't a cookie with the given name. - * You can set additional cookie params like `domain`, `path` as array passed in last argument. - * - * @param $cookie - * - * @param array $params - * @return mixed - * @see \Codeception\Lib\InnerBrowser::dontSeeCookie() - */ - public function dontSeeCookie($name, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCookie', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Unsets cookie with the given name. - * You can set additional cookie params like `domain`, `path` in array passed as last argument. - * - * @param $cookie - * - * @param array $params - * @return mixed - * @see \Codeception\Lib\InnerBrowser::resetCookie() - */ - public function resetCookie($name, $params = null) { - return $this->scenario->runStep(new \Codeception\Step\Action('resetCookie', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given element exists on the page and is visible. - * You can also specify expected attributes of this element. - * - * ``` php - * seeElement('.error'); - * $I->seeElement('//form/input[1]'); - * $I->seeElement('input', ['name' => 'login']); - * $I->seeElement('input', ['value' => '123456']); - * - * // strict locator in first arg, attributes in second - * $I->seeElement(['css' => 'form input'], ['name' => 'login']); - * ?> - * ``` - * - * @param $selector - * @param array $attributes - * @return - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeElement() - */ - public function canSeeElement($selector, $attributes = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeElement', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given element exists on the page and is visible. - * You can also specify expected attributes of this element. - * - * ``` php - * seeElement('.error'); - * $I->seeElement('//form/input[1]'); - * $I->seeElement('input', ['name' => 'login']); - * $I->seeElement('input', ['value' => '123456']); - * - * // strict locator in first arg, attributes in second - * $I->seeElement(['css' => 'form input'], ['name' => 'login']); - * ?> - * ``` - * - * @param $selector - * @param array $attributes - * @return - * @see \Codeception\Lib\InnerBrowser::seeElement() - */ - public function seeElement($selector, $attributes = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeElement', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given element is invisible or not present on the page. - * You can also specify expected attributes of this element. - * - * ``` php - * dontSeeElement('.error'); - * $I->dontSeeElement('//form/input[1]'); - * $I->dontSeeElement('input', ['name' => 'login']); - * $I->dontSeeElement('input', ['value' => '123456']); - * ?> - * ``` - * - * @param $selector - * @param array $attributes - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeElement() - */ - public function cantSeeElement($selector, $attributes = null) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeElement', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given element is invisible or not present on the page. - * You can also specify expected attributes of this element. - * - * ``` php - * dontSeeElement('.error'); - * $I->dontSeeElement('//form/input[1]'); - * $I->dontSeeElement('input', ['name' => 'login']); - * $I->dontSeeElement('input', ['value' => '123456']); - * ?> - * ``` - * - * @param $selector - * @param array $attributes - * @see \Codeception\Lib\InnerBrowser::dontSeeElement() - */ - public function dontSeeElement($selector, $attributes = null) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeElement', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that there are a certain number of elements matched by the given locator on the page. - * - * ``` php - * seeNumberOfElements('tr', 10); - * $I->seeNumberOfElements('tr', [0,10]); //between 0 and 10 elements - * ?> - * ``` - * @param $selector - * @param mixed $expected: - * - string: strict number - * - array: range of numbers [0,10] - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeNumberOfElements() - */ - public function canSeeNumberOfElements($selector, $expected) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeNumberOfElements', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that there are a certain number of elements matched by the given locator on the page. - * - * ``` php - * seeNumberOfElements('tr', 10); - * $I->seeNumberOfElements('tr', [0,10]); //between 0 and 10 elements - * ?> - * ``` - * @param $selector - * @param mixed $expected: - * - string: strict number - * - array: range of numbers [0,10] - * @see \Codeception\Lib\InnerBrowser::seeNumberOfElements() - */ - public function seeNumberOfElements($selector, $expected) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeNumberOfElements', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given option is selected. - * - * ``` php - * seeOptionIsSelected('#form input[name=payment]', 'Visa'); - * ?> - * ``` - * - * @param $selector - * @param $optionText - * - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeOptionIsSelected() - */ - public function canSeeOptionIsSelected($select, $optionText) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeOptionIsSelected', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given option is selected. - * - * ``` php - * seeOptionIsSelected('#form input[name=payment]', 'Visa'); - * ?> - * ``` - * - * @param $selector - * @param $optionText - * - * @return mixed - * @see \Codeception\Lib\InnerBrowser::seeOptionIsSelected() - */ - public function seeOptionIsSelected($select, $optionText) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeOptionIsSelected', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given option is not selected. - * - * ``` php - * dontSeeOptionIsSelected('#form input[name=payment]', 'Visa'); - * ?> - * ``` - * - * @param $selector - * @param $optionText - * - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeOptionIsSelected() - */ - public function cantSeeOptionIsSelected($select, $optionText) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeOptionIsSelected', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given option is not selected. - * - * ``` php - * dontSeeOptionIsSelected('#form input[name=payment]', 'Visa'); - * ?> - * ``` - * - * @param $selector - * @param $optionText - * - * @return mixed - * @see \Codeception\Lib\InnerBrowser::dontSeeOptionIsSelected() - */ - public function dontSeeOptionIsSelected($select, $optionText) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeOptionIsSelected', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Asserts that current page has 404 response status code. - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seePageNotFound() - */ - public function canSeePageNotFound() { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seePageNotFound', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Asserts that current page has 404 response status code. - * @see \Codeception\Lib\InnerBrowser::seePageNotFound() - */ - public function seePageNotFound() { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seePageNotFound', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that response code is equal to value provided. - * - * @param $code - * - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIs() - */ - public function canSeeResponseCodeIs($code) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeResponseCodeIs', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that response code is equal to value provided. - * - * @param $code - * - * @return mixed - * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIs() - */ - public function seeResponseCodeIs($code) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeResponseCodeIs', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page title contains the given string. - * - * ``` php - * seeInTitle('Blog - Post #1'); - * ?> - * ``` - * - * @param $title - * - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::seeInTitle() - */ - public function canSeeInTitle($title) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInTitle', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page title contains the given string. - * - * ``` php - * seeInTitle('Blog - Post #1'); - * ?> - * ``` - * - * @param $title - * - * @return mixed - * @see \Codeception\Lib\InnerBrowser::seeInTitle() - */ - public function seeInTitle($title) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInTitle', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page title does not contain the given string. - * - * @param $title - * - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Lib\InnerBrowser::dontSeeInTitle() - */ - public function cantSeeInTitle($title) { - return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInTitle', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page title does not contain the given string. - * - * @param $title - * - * @return mixed - * @see \Codeception\Lib\InnerBrowser::dontSeeInTitle() - */ - public function dontSeeInTitle($title) { - return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInTitle', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * - * @see \Codeception\Module\DbDropTablesHelper::cleanup() - */ - public function cleanup() { - return $this->scenario->runStep(new \Codeception\Step\Action('cleanup', func_get_args())); - } -} diff --git a/tests/install/_bootstrap.php b/tests/install/_bootstrap.php deleted file mode 100644 index 8a8855580..000000000 --- a/tests/install/_bootstrap.php +++ /dev/null @@ -1,2 +0,0 @@ -env) ? Configuration::suiteSettings('Install', Configuration::config()) : Configuration::suiteEnvironments('Install')[$this->env]; - -$db_config = $config['modules']['config']['Db']; - -$dsn = $db_config['dsn']; -$dsn = split('[;:]', $dsn); -$db_type = array_shift($dsn); -$dbinfo = [ - 'type' => $db_type, - 'user' => $db_config['user'], - 'password' => $db_config['password'], - 'dbname' => 'xe_install', - 'port' => ((isset($db_config['port']) && $db_config['port'])?: 3306), -]; -foreach($dsn as $piece) { - list($key, $val) = explode('=', $piece); - $dbinfo[$key] = $val; -} - -// Step 1 -$I->wantTo('Install XE Core'); -$I->amOnPage('/index.php?l=ko'); -$I->setCookie('l', 'ko'); -$I->seeElement('//div[@id="progress"]/ul/li[1][@class="active"]'); -$I->seeElement('#content .language'); -$I->seeElement('//ul[@class="language"]/li[2]/strong'); -$I->click('#task-choose-language'); - -// Step 2 : License Agreement -$I->seeInCurrentUrl('act=dispInstallLicenseAgreement'); -$I->seeElement('//div[@id="progress"]/ul/li[2][@class="active"]'); -$I->see('사용권 동의', '#content'); -$I->submitForm('.x_form-horizontal', ['act' => 'procInstallLicenseAggrement', 'license_agreement' => 'Y']); - -// Step 3 : checkenv -$I->seeInCurrentUrl('act=dispInstallCheckEnv'); -$I->seeElement('//div[@id="progress"]/ul/li[3][@class="active"]'); -$I->seeElement('#content .x_icon-ok-sign'); -$I->click('#task-checklist-confirm'); - -// Step 5 : SelectDB -$I->seeInCurrentUrl('act=dispInstallSelectDB'); -$I->seeElement('//div[@id="progress"]/ul/li[5][@class="active"]'); -$I->submitForm('#content form', ['db_type' => 'mysqli', 'act' => 'dispInstallDBForm']); - -// Step 6 : db info -// $I->seeInCurrentUrl('act=dispInstallDBForm'); -$I->seeElement('//div[@id="progress"]/ul/li[6][@class="active"]'); -$I->submitForm('#content form', [ - 'act' => 'procMysqlDBSetting', - 'db_type' => 'mysqli', - 'db_userid' => $dbinfo['user'], - 'db_password' => $dbinfo['password'], - 'db_database' => $dbinfo['dbname'], - 'db_hostname' => $dbinfo['host'], - 'db_port' => $dbinfo['port'], - 'db_table_prefix' => 'xe' -]); - - -// Step 7 : dispInstallConfigForm -$I->seeInCurrentUrl('act=dispInstallConfigForm'); -$I->seeElement('//div[@id="progress"]/ul/li[7][@class="active"]'); -$I->seeElement('select[name=time_zone]'); -$I->submitForm('#content form', ['act' => 'procConfigSetting', 'time_zone' => '+0900']); - - -// Step 8 : dispInstallManagerForm -$I->seeInCurrentUrl('act=dispInstallManagerForm'); -$I->seeElement('//div[@id="progress"]/ul/li[8][@class="active"]'); -$I->fillField('#aMail', 'admin@admin.net'); -$I->submitForm('#content form', [ - 'act' => 'procInstall', - 'db_type' => 'mysqli', - 'email_address' => 'admin@admin.net', - 'password' => 'admin', - 'password2' => 'admin', - 'nick_name' => 'admin', - 'user_id' => 'admin' -]); - -// Step 9 -$I->wantTo('completed'); -$I->dontSeeElement('//div[@id="progress"]/ul/li'); -$I->amOnPage('/index.php?act=dispMemberLoginForm'); - -$I->fillField('user_id', 'admin@admin.net'); -$I->submitForm('.login-body form', [ - 'act' => 'procMemberLogin', - 'user_id' => 'admin@admin.net', - 'password' => 'admin', - 'success_return_url' => '/index.php?module=admin' -]); - -$I->seeInCurrentUrl('module=admin'); -$I->seeElement('#gnbNav'); -$I->seeElement('#content .x_page-header'); -$I->see('설치 환경 수집 동의', 'h2'); - From 2792590e4a806f221463965ac76fb0cd3bf00dd2 Mon Sep 17 00:00:00 2001 From: bnu Date: Fri, 22 May 2015 17:04:50 +0900 Subject: [PATCH 231/265] =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/Install.suite.dist.yml | 24 + tests/Install.suite.yml | 15 + tests/Install/InstallCept.php | 104 ++ tests/Install/InstallTester.php | 2099 ++++++++++++++++++++++++++++++ tests/Install/_bootstrap.php | 2 + tests/_support/InstallHelper.php | 10 + 6 files changed, 2254 insertions(+) create mode 100644 tests/Install.suite.dist.yml create mode 100644 tests/Install.suite.yml create mode 100644 tests/Install/InstallCept.php create mode 100644 tests/Install/InstallTester.php create mode 100644 tests/Install/_bootstrap.php create mode 100644 tests/_support/InstallHelper.php diff --git a/tests/Install.suite.dist.yml b/tests/Install.suite.dist.yml new file mode 100644 index 000000000..62cd77e15 --- /dev/null +++ b/tests/Install.suite.dist.yml @@ -0,0 +1,24 @@ +class_name: InstallTester +modules: + enabled: [Db, PhpBrowser, DbDropTablesHelper, InstallHelper] + config: + PhpBrowser: + url: 'http://localhost:8000/' + DbDropTablesHelper: + dsn: 'mysql:host=127.0.0.1;dbname=xe_test' + user: 'root' + password: 'root' + Db: + dsn: 'mysql:host=127.0.0.1;dbname=xe_test' + user: 'root' + password: 'root' + cleanup: true +env: + travis: + modules: + config: + Db: + dsn: 'mysql:host=127.0.0.1;dbname=xe_test' + user: 'travis' + password: 'travis' + cleanup: true diff --git a/tests/Install.suite.yml b/tests/Install.suite.yml new file mode 100644 index 000000000..19cbbb135 --- /dev/null +++ b/tests/Install.suite.yml @@ -0,0 +1,15 @@ +class_name: InstallTester +modules: + enabled: [Db, PhpBrowser, DbDropTablesHelper, InstallHelper] + config: + PhpBrowser: + url: 'http://coretest.udada.kr/' + DbDropTablesHelper: + dsn: 'mysql:host=127.0.0.1;dbname=xecore_test' + user: 'root' + password: 'root' + Db: + dsn: 'mysql:host=127.0.0.1;dbname=xecore_test' + user: 'root' + password: 'root' + cleanup: true diff --git a/tests/Install/InstallCept.php b/tests/Install/InstallCept.php new file mode 100644 index 000000000..4a0621535 --- /dev/null +++ b/tests/Install/InstallCept.php @@ -0,0 +1,104 @@ +env) ? Configuration::suiteSettings('Install', Configuration::config()) : Configuration::suiteEnvironments('Install')[$this->env]; + +$db_config = $config['modules']['config']['Db']; + +$dsn = $db_config['dsn']; +$dsn = split('[;:]', $dsn); +$db_type = array_shift($dsn); +$dbinfo = [ + 'type' => $db_type, + 'user' => $db_config['user'], + 'password' => $db_config['password'], + 'dbname' => 'xe_install', + 'port' => ((isset($db_config['port']) && $db_config['port'])?: 3306), +]; +foreach($dsn as $piece) { + list($key, $val) = explode('=', $piece); + $dbinfo[$key] = $val; +} + +// Step 1 +$I->wantTo('Install XE Core'); +$I->amOnPage('/index.php?l=ko'); +$I->setCookie('l', 'ko'); +$I->seeElement('//div[@id="progress"]/ul/li[1][@class="active"]'); +$I->seeElement('#content .language'); +$I->seeElement('//ul[@class="language"]/li[2]/strong'); +$I->click('#task-choose-language'); + +// Step 2 : License Agreement +$I->seeInCurrentUrl('act=dispInstallLicenseAgreement'); +$I->seeElement('//div[@id="progress"]/ul/li[2][@class="active"]'); +$I->see('사용권 동의', '#content'); +$I->submitForm('.x_form-horizontal', ['act' => 'procInstallLicenseAggrement', 'license_agreement' => 'Y']); + +// Step 3 : checkenv +$I->seeInCurrentUrl('act=dispInstallCheckEnv'); +$I->seeElement('//div[@id="progress"]/ul/li[3][@class="active"]'); +$I->seeElement('#content .x_icon-ok-sign'); +$I->click('#task-checklist-confirm'); + +// Step 5 : SelectDB +$I->seeInCurrentUrl('act=dispInstallSelectDB'); +$I->seeElement('//div[@id="progress"]/ul/li[5][@class="active"]'); +$I->submitForm('#content form', ['db_type' => 'mysqli', 'act' => 'dispInstallDBForm']); + +// Step 6 : db info +// $I->seeInCurrentUrl('act=dispInstallDBForm'); +$I->seeElement('//div[@id="progress"]/ul/li[6][@class="active"]'); +$I->submitForm('#content form', [ + 'act' => 'procMysqlDBSetting', + 'db_type' => 'mysqli', + 'db_userid' => $dbinfo['user'], + 'db_password' => $dbinfo['password'], + 'db_database' => $dbinfo['dbname'], + 'db_hostname' => $dbinfo['host'], + 'db_port' => $dbinfo['port'], + 'db_table_prefix' => 'xe' +]); + + +// Step 7 : dispInstallConfigForm +$I->seeInCurrentUrl('act=dispInstallConfigForm'); +$I->seeElement('//div[@id="progress"]/ul/li[7][@class="active"]'); +$I->seeElement('select[name=time_zone]'); +$I->submitForm('#content form', ['act' => 'procConfigSetting', 'time_zone' => '+0900']); + + +// Step 8 : dispInstallManagerForm +$I->seeInCurrentUrl('act=dispInstallManagerForm'); +$I->seeElement('//div[@id="progress"]/ul/li[8][@class="active"]'); +$I->fillField('#aMail', 'admin@admin.net'); +$I->submitForm('#content form', [ + 'act' => 'procInstall', + 'db_type' => 'mysqli', + 'email_address' => 'admin@admin.net', + 'password' => 'admin', + 'password2' => 'admin', + 'nick_name' => 'admin', + 'user_id' => 'admin' +]); + +// Step 9 +$I->wantTo('completed'); +$I->dontSeeElement('//div[@id="progress"]/ul/li'); +$I->amOnPage('/index.php?act=dispMemberLoginForm'); + +$I->fillField('user_id', 'admin@admin.net'); +$I->submitForm('.login-body form', [ + 'act' => 'procMemberLogin', + 'user_id' => 'admin@admin.net', + 'password' => 'admin', + 'success_return_url' => '/index.php?module=admin' +]); + +$I->seeInCurrentUrl('module=admin'); +$I->seeElement('#gnbNav'); +$I->seeElement('#content .x_page-header'); +$I->see('설치 환경 수집 동의', 'h2'); + diff --git a/tests/Install/InstallTester.php b/tests/Install/InstallTester.php new file mode 100644 index 000000000..5d2e8626a --- /dev/null +++ b/tests/Install/InstallTester.php @@ -0,0 +1,2099 @@ +haveInDatabase('users', array('name' => 'miles', 'email' => 'miles@davis.com')); + * ?> + * ``` + * + * @param $table + * @param array $data + * + * @return integer $id + * @see \Codeception\Module\Db::haveInDatabase() + */ + public function haveInDatabase($table, $data) { + return $this->scenario->runStep(new \Codeception\Step\Action('haveInDatabase', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if a row with given column values exists. + * Provide table name and column values. + * + * Example: + * + * ``` php + * seeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com')); + * + * ``` + * Will generate: + * + * ``` sql + * SELECT COUNT(*) FROM `users` WHERE `name` = 'Davert' AND `email` = 'davert@mail.com' + * ``` + * Fails if no such user found. + * + * @param $table + * @param array $criteria + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Module\Db::seeInDatabase() + */ + public function canSeeInDatabase($table, $criteria = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInDatabase', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if a row with given column values exists. + * Provide table name and column values. + * + * Example: + * + * ``` php + * seeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com')); + * + * ``` + * Will generate: + * + * ``` sql + * SELECT COUNT(*) FROM `users` WHERE `name` = 'Davert' AND `email` = 'davert@mail.com' + * ``` + * Fails if no such user found. + * + * @param $table + * @param array $criteria + * @see \Codeception\Module\Db::seeInDatabase() + */ + public function seeInDatabase($table, $criteria = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInDatabase', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Effect is opposite to ->seeInDatabase + * + * Checks if there is no record with such column values in database. + * Provide table name and column values. + * + * Example: + * + * ``` php + * dontSeeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com')); + * + * ``` + * Will generate: + * + * ``` sql + * SELECT COUNT(*) FROM `users` WHERE `name` = 'Davert' AND `email` = 'davert@mail.com' + * ``` + * Fails if such user was found. + * + * @param $table + * @param array $criteria + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Module\Db::dontSeeInDatabase() + */ + public function cantSeeInDatabase($table, $criteria = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInDatabase', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Effect is opposite to ->seeInDatabase + * + * Checks if there is no record with such column values in database. + * Provide table name and column values. + * + * Example: + * + * ``` php + * dontSeeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com')); + * + * ``` + * Will generate: + * + * ``` sql + * SELECT COUNT(*) FROM `users` WHERE `name` = 'Davert' AND `email` = 'davert@mail.com' + * ``` + * Fails if such user was found. + * + * @param $table + * @param array $criteria + * @see \Codeception\Module\Db::dontSeeInDatabase() + */ + public function dontSeeInDatabase($table, $criteria = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInDatabase', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Fetches a single column value from a database. + * Provide table name, desired column and criteria. + * + * Example: + * + * ``` php + * grabFromDatabase('users', 'email', array('name' => 'Davert')); + * + * ``` + * + * @version 1.1 + * + * @param $table + * @param $column + * @param array $criteria + * + * @return mixed + * @see \Codeception\Module\Db::grabFromDatabase() + */ + public function grabFromDatabase($table, $column, $criteria = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('grabFromDatabase', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Sets the HTTP header to the passed value - which is used on + * subsequent HTTP requests through PhpBrowser. + * + * Example: + * ```php + * setHeader('X-Requested-With', 'Codeception'); + * $I->amOnPage('test-headers.php'); + * ?> + * ``` + * + * @param string $name the name of the request header + * @param string $value the value to set it to for subsequent + * requests + * @see \Codeception\Module\PhpBrowser::setHeader() + */ + public function setHeader($name, $value) { + return $this->scenario->runStep(new \Codeception\Step\Action('setHeader', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Deletes the header with the passed name. Subsequent requests + * will not have the deleted header in its request. + * + * Example: + * ```php + * setHeader('X-Requested-With', 'Codeception'); + * $I->amOnPage('test-headers.php'); + * // ... + * $I->deleteHeader('X-Requested-With'); + * $I->amOnPage('some-other-page.php'); + * ?> + * ``` + * + * @param string $name the name of the header to delete. + * @see \Codeception\Module\PhpBrowser::deleteHeader() + */ + public function deleteHeader($name) { + return $this->scenario->runStep(new \Codeception\Step\Action('deleteHeader', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Authenticates user for HTTP_AUTH + * + * @param $username + * @param $password + * @see \Codeception\Module\PhpBrowser::amHttpAuthenticated() + */ + public function amHttpAuthenticated($username, $password) { + return $this->scenario->runStep(new \Codeception\Step\Condition('amHttpAuthenticated', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Opens the page for the given relative URI. + * + * ``` php + * amOnPage('/'); + * // opens /register page + * $I->amOnPage('/register'); + * ?> + * ``` + * + * @param $page + * @see \Codeception\Module\PhpBrowser::amOnPage() + */ + public function amOnPage($page) { + return $this->scenario->runStep(new \Codeception\Step\Condition('amOnPage', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Open web page at the given absolute URL and sets its hostname as the base host. + * + * ``` php + * amOnUrl('http://codeception.com'); + * $I->amOnPage('/quickstart'); // moves to http://codeception.com/quickstart + * ?> + * ``` + * @see \Codeception\Module\PhpBrowser::amOnUrl() + */ + public function amOnUrl($url) { + return $this->scenario->runStep(new \Codeception\Step\Condition('amOnUrl', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Changes the subdomain for the 'url' configuration parameter. + * Does not open a page; use `amOnPage` for that. + * + * ``` php + * amOnSubdomain('user'); + * $I->amOnPage('/'); + * // moves to http://user.mysite.com/ + * ?> + * ``` + * + * @param $subdomain + * + * @return mixed + * @see \Codeception\Module\PhpBrowser::amOnSubdomain() + */ + public function amOnSubdomain($subdomain) { + return $this->scenario->runStep(new \Codeception\Step\Condition('amOnSubdomain', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Low-level API method. + * If Codeception commands are not enough, use [Guzzle HTTP Client](http://guzzlephp.org/) methods directly + * + * Example: + * + * ``` php + * executeInGuzzle(function (\GuzzleHttp\Client $client) { + * $client->get('/get', ['query' => ['foo' => 'bar']]); + * }); + * ?> + * ``` + * + * It is not recommended to use this command on a regular basis. + * If Codeception lacks important Guzzle Client methods, implement them and submit patches. + * + * @param callable $function + * @see \Codeception\Module\PhpBrowser::executeInGuzzle() + */ + public function executeInGuzzle($function) { + return $this->scenario->runStep(new \Codeception\Step\Action('executeInGuzzle', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Perform a click on a link or a button, given by a locator. + * If a fuzzy locator is given, the page will be searched for a button, link, or image matching the locator string. + * For buttons, the "value" attribute, "name" attribute, and inner text are searched. + * For links, the link text is searched. + * For images, the "alt" attribute and inner text of any parent links are searched. + * + * The second parameter is a context (CSS or XPath locator) to narrow the search. + * + * Note that if the locator matches a button of type `submit`, the form will be submitted. + * + * ``` php + * click('Logout'); + * // button of form + * $I->click('Submit'); + * // CSS button + * $I->click('#form input[type=submit]'); + * // XPath + * $I->click('//form/*[@type=submit]'); + * // link in context + * $I->click('Logout', '#nav'); + * // using strict locator + * $I->click(['link' => 'Login']); + * ?> + * ``` + * + * @param $link + * @param $context + * @see \Codeception\Lib\InnerBrowser::click() + */ + public function click($link, $context = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('click', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current page contains the given string. + * Specify a locator as the second parameter to match a specific region. + * + * ``` php + * see('Logout'); // I can suppose user is logged in + * $I->see('Sign Up','h1'); // I can suppose it's a signup page + * $I->see('Sign Up','//body/h1'); // with XPath + * ?> + * ``` + * + * @param $text + * @param null $selector + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::see() + */ + public function canSee($text, $selector = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('see', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current page contains the given string. + * Specify a locator as the second parameter to match a specific region. + * + * ``` php + * see('Logout'); // I can suppose user is logged in + * $I->see('Sign Up','h1'); // I can suppose it's a signup page + * $I->see('Sign Up','//body/h1'); // with XPath + * ?> + * ``` + * + * @param $text + * @param null $selector + * @see \Codeception\Lib\InnerBrowser::see() + */ + public function see($text, $selector = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('see', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current page doesn't contain the text specified. + * Give a locator as the second parameter to match a specific region. + * + * ```php + * dontSee('Login'); // I can suppose user is already logged in + * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page + * $I->dontSee('Sign Up','//body/h1'); // with XPath + * ?> + * ``` + * + * @param $text + * @param null $selector + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSee() + */ + public function cantSee($text, $selector = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSee', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current page doesn't contain the text specified. + * Give a locator as the second parameter to match a specific region. + * + * ```php + * dontSee('Login'); // I can suppose user is already logged in + * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page + * $I->dontSee('Sign Up','//body/h1'); // with XPath + * ?> + * ``` + * + * @param $text + * @param null $selector + * @see \Codeception\Lib\InnerBrowser::dontSee() + */ + public function dontSee($text, $selector = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSee', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there's a link with the specified text. + * Give a full URL as the second parameter to match links with that exact URL. + * + * ``` php + * seeLink('Logout'); // matches Logout + * $I->seeLink('Logout','/logout'); // matches Logout + * ?> + * ``` + * + * @param $text + * @param null $url + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeLink() + */ + public function canSeeLink($text, $url = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeLink', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there's a link with the specified text. + * Give a full URL as the second parameter to match links with that exact URL. + * + * ``` php + * seeLink('Logout'); // matches Logout + * $I->seeLink('Logout','/logout'); // matches Logout + * ?> + * ``` + * + * @param $text + * @param null $url + * @see \Codeception\Lib\InnerBrowser::seeLink() + */ + public function seeLink($text, $url = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeLink', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page doesn't contain a link with the given string. + * If the second parameter is given, only links with a matching "href" attribute will be checked. + * + * ``` php + * dontSeeLink('Logout'); // I suppose user is not logged in + * $I->dontSeeLink('Checkout now', '/store/cart.php'); + * ?> + * ``` + * + * @param $text + * @param null $url + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeLink() + */ + public function cantSeeLink($text, $url = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeLink', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page doesn't contain a link with the given string. + * If the second parameter is given, only links with a matching "href" attribute will be checked. + * + * ``` php + * dontSeeLink('Logout'); // I suppose user is not logged in + * $I->dontSeeLink('Checkout now', '/store/cart.php'); + * ?> + * ``` + * + * @param $text + * @param null $url + * @see \Codeception\Lib\InnerBrowser::dontSeeLink() + */ + public function dontSeeLink($text, $url = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeLink', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that current URI contains the given string. + * + * ``` php + * seeInCurrentUrl('home'); + * // to match: /users/1 + * $I->seeInCurrentUrl('/users/'); + * ?> + * ``` + * + * @param $uri + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeInCurrentUrl() + */ + public function canSeeInCurrentUrl($uri) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInCurrentUrl', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that current URI contains the given string. + * + * ``` php + * seeInCurrentUrl('home'); + * // to match: /users/1 + * $I->seeInCurrentUrl('/users/'); + * ?> + * ``` + * + * @param $uri + * @see \Codeception\Lib\InnerBrowser::seeInCurrentUrl() + */ + public function seeInCurrentUrl($uri) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInCurrentUrl', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URI doesn't contain the given string. + * + * ``` php + * dontSeeInCurrentUrl('/users/'); + * ?> + * ``` + * + * @param $uri + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeInCurrentUrl() + */ + public function cantSeeInCurrentUrl($uri) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInCurrentUrl', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URI doesn't contain the given string. + * + * ``` php + * dontSeeInCurrentUrl('/users/'); + * ?> + * ``` + * + * @param $uri + * @see \Codeception\Lib\InnerBrowser::dontSeeInCurrentUrl() + */ + public function dontSeeInCurrentUrl($uri) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInCurrentUrl', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL is equal to the given string. + * Unlike `seeInCurrentUrl`, this only matches the full URL. + * + * ``` php + * seeCurrentUrlEquals('/'); + * ?> + * ``` + * + * @param $uri + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlEquals() + */ + public function canSeeCurrentUrlEquals($uri) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlEquals', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL is equal to the given string. + * Unlike `seeInCurrentUrl`, this only matches the full URL. + * + * ``` php + * seeCurrentUrlEquals('/'); + * ?> + * ``` + * + * @param $uri + * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlEquals() + */ + public function seeCurrentUrlEquals($uri) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCurrentUrlEquals', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL doesn't equal the given string. + * Unlike `dontSeeInCurrentUrl`, this only matches the full URL. + * + * ``` php + * dontSeeCurrentUrlEquals('/'); + * ?> + * ``` + * + * @param $uri + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlEquals() + */ + public function cantSeeCurrentUrlEquals($uri) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlEquals', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL doesn't equal the given string. + * Unlike `dontSeeInCurrentUrl`, this only matches the full URL. + * + * ``` php + * dontSeeCurrentUrlEquals('/'); + * ?> + * ``` + * + * @param $uri + * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlEquals() + */ + public function dontSeeCurrentUrlEquals($uri) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCurrentUrlEquals', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL matches the given regular expression. + * + * ``` php + * seeCurrentUrlMatches('~$/users/(\d+)~'); + * ?> + * ``` + * + * @param $uri + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlMatches() + */ + public function canSeeCurrentUrlMatches($uri) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlMatches', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the current URL matches the given regular expression. + * + * ``` php + * seeCurrentUrlMatches('~$/users/(\d+)~'); + * ?> + * ``` + * + * @param $uri + * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlMatches() + */ + public function seeCurrentUrlMatches($uri) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCurrentUrlMatches', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that current url doesn't match the given regular expression. + * + * ``` php + * dontSeeCurrentUrlMatches('~$/users/(\d+)~'); + * ?> + * ``` + * + * @param $uri + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlMatches() + */ + public function cantSeeCurrentUrlMatches($uri) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlMatches', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that current url doesn't match the given regular expression. + * + * ``` php + * dontSeeCurrentUrlMatches('~$/users/(\d+)~'); + * ?> + * ``` + * + * @param $uri + * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlMatches() + */ + public function dontSeeCurrentUrlMatches($uri) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCurrentUrlMatches', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Executes the given regular expression against the current URI and returns the first match. + * If no parameters are provided, the full URI is returned. + * + * ``` php + * grabFromCurrentUrl('~$/user/(\d+)/~'); + * $uri = $I->grabFromCurrentUrl(); + * ?> + * ``` + * + * @param null $uri + * + * @internal param $url + * @return mixed + * @see \Codeception\Lib\InnerBrowser::grabFromCurrentUrl() + */ + public function grabFromCurrentUrl($uri = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('grabFromCurrentUrl', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the specified checkbox is checked. + * + * ``` php + * seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms + * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form. + * $I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]'); + * ?> + * ``` + * + * @param $checkbox + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeCheckboxIsChecked() + */ + public function canSeeCheckboxIsChecked($checkbox) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCheckboxIsChecked', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the specified checkbox is checked. + * + * ``` php + * seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms + * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form. + * $I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]'); + * ?> + * ``` + * + * @param $checkbox + * @see \Codeception\Lib\InnerBrowser::seeCheckboxIsChecked() + */ + public function seeCheckboxIsChecked($checkbox) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCheckboxIsChecked', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Check that the specified checkbox is unchecked. + * + * ``` php + * dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms + * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form. + * ?> + * ``` + * + * @param $checkbox + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeCheckboxIsChecked() + */ + public function cantSeeCheckboxIsChecked($checkbox) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCheckboxIsChecked', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Check that the specified checkbox is unchecked. + * + * ``` php + * dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms + * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form. + * ?> + * ``` + * + * @param $checkbox + * @see \Codeception\Lib\InnerBrowser::dontSeeCheckboxIsChecked() + */ + public function dontSeeCheckboxIsChecked($checkbox) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCheckboxIsChecked', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given input field or textarea contains the given value. + * For fuzzy locators, fields are matched by label text, the "name" attribute, CSS, and XPath. + * + * ``` php + * seeInField('Body','Type your comment here'); + * $I->seeInField('form textarea[name=body]','Type your comment here'); + * $I->seeInField('form input[type=hidden]','hidden_value'); + * $I->seeInField('#searchform input','Search'); + * $I->seeInField('//form/*[@name=search]','Search'); + * $I->seeInField(['name' => 'search'], 'Search'); + * ?> + * ``` + * + * @param $field + * @param $value + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeInField() + */ + public function canSeeInField($field, $value) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInField', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given input field or textarea contains the given value. + * For fuzzy locators, fields are matched by label text, the "name" attribute, CSS, and XPath. + * + * ``` php + * seeInField('Body','Type your comment here'); + * $I->seeInField('form textarea[name=body]','Type your comment here'); + * $I->seeInField('form input[type=hidden]','hidden_value'); + * $I->seeInField('#searchform input','Search'); + * $I->seeInField('//form/*[@name=search]','Search'); + * $I->seeInField(['name' => 'search'], 'Search'); + * ?> + * ``` + * + * @param $field + * @param $value + * @see \Codeception\Lib\InnerBrowser::seeInField() + */ + public function seeInField($field, $value) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInField', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that an input field or textarea doesn't contain the given value. + * For fuzzy locators, the field is matched by label text, CSS and XPath. + * + * ``` php + * dontSeeInField('Body','Type your comment here'); + * $I->dontSeeInField('form textarea[name=body]','Type your comment here'); + * $I->dontSeeInField('form input[type=hidden]','hidden_value'); + * $I->dontSeeInField('#searchform input','Search'); + * $I->dontSeeInField('//form/*[@name=search]','Search'); + * $I->dontSeeInField(['name' => 'search'], 'Search'); + * ?> + * ``` + * + * @param $field + * @param $value + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeInField() + */ + public function cantSeeInField($field, $value) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInField', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that an input field or textarea doesn't contain the given value. + * For fuzzy locators, the field is matched by label text, CSS and XPath. + * + * ``` php + * dontSeeInField('Body','Type your comment here'); + * $I->dontSeeInField('form textarea[name=body]','Type your comment here'); + * $I->dontSeeInField('form input[type=hidden]','hidden_value'); + * $I->dontSeeInField('#searchform input','Search'); + * $I->dontSeeInField('//form/*[@name=search]','Search'); + * $I->dontSeeInField(['name' => 'search'], 'Search'); + * ?> + * ``` + * + * @param $field + * @param $value + * @see \Codeception\Lib\InnerBrowser::dontSeeInField() + */ + public function dontSeeInField($field, $value) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInField', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if the array of form parameters (name => value) are set on the form matched with the + * passed selector. + * + * ``` php + * seeInFormFields('form[name=myform]', [ + * 'input1' => 'value', + * 'input2' => 'other value', + * ]); + * ?> + * ``` + * + * For multi-select elements, or to check values of multiple elements with the same name, an + * array may be passed: + * + * ``` php + * seeInFormFields('.form-class', [ + * 'multiselect' => [ + * 'value1', + * 'value2', + * ], + * 'checkbox[]' => [ + * 'a checked value', + * 'another checked value', + * ], + * ]); + * ?> + * ``` + * + * Additionally, checkbox values can be checked with a boolean. + * + * ``` php + * seeInFormFields('#form-id', [ + * 'checkbox1' => true, // passes if checked + * 'checkbox2' => false, // passes if unchecked + * ]); + * ?> + * ``` + * + * Pair this with submitForm for quick testing magic. + * + * ``` php + * 'value', + * 'field2' => 'another value', + * 'checkbox1' => true, + * // ... + * ]; + * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); + * // $I->amOnPage('/path/to/form-page') may be needed + * $I->seeInFormFields('//form[@id=my-form]', $form); + * ?> + * ``` + * + * @param $formSelector + * @param $params + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeInFormFields() + */ + public function canSeeInFormFields($formSelector, $params) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInFormFields', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if the array of form parameters (name => value) are set on the form matched with the + * passed selector. + * + * ``` php + * seeInFormFields('form[name=myform]', [ + * 'input1' => 'value', + * 'input2' => 'other value', + * ]); + * ?> + * ``` + * + * For multi-select elements, or to check values of multiple elements with the same name, an + * array may be passed: + * + * ``` php + * seeInFormFields('.form-class', [ + * 'multiselect' => [ + * 'value1', + * 'value2', + * ], + * 'checkbox[]' => [ + * 'a checked value', + * 'another checked value', + * ], + * ]); + * ?> + * ``` + * + * Additionally, checkbox values can be checked with a boolean. + * + * ``` php + * seeInFormFields('#form-id', [ + * 'checkbox1' => true, // passes if checked + * 'checkbox2' => false, // passes if unchecked + * ]); + * ?> + * ``` + * + * Pair this with submitForm for quick testing magic. + * + * ``` php + * 'value', + * 'field2' => 'another value', + * 'checkbox1' => true, + * // ... + * ]; + * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); + * // $I->amOnPage('/path/to/form-page') may be needed + * $I->seeInFormFields('//form[@id=my-form]', $form); + * ?> + * ``` + * + * @param $formSelector + * @param $params + * @see \Codeception\Lib\InnerBrowser::seeInFormFields() + */ + public function seeInFormFields($formSelector, $params) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInFormFields', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if the array of form parameters (name => value) are not set on the form matched with + * the passed selector. + * + * ``` php + * dontSeeInFormFields('form[name=myform]', [ + * 'input1' => 'non-existent value', + * 'input2' => 'other non-existent value', + * ]); + * ?> + * ``` + * + * To check that an element hasn't been assigned any one of many values, an array can be passed + * as the value: + * + * ``` php + * dontSeeInFormFields('.form-class', [ + * 'fieldName' => [ + * 'This value shouldn\'t be set', + * 'And this value shouldn\'t be set', + * ], + * ]); + * ?> + * ``` + * + * Additionally, checkbox values can be checked with a boolean. + * + * ``` php + * dontSeeInFormFields('#form-id', [ + * 'checkbox1' => true, // fails if checked + * 'checkbox2' => false, // fails if unchecked + * ]); + * ?> + * ``` + * + * @param $formSelector + * @param $params + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeInFormFields() + */ + public function cantSeeInFormFields($formSelector, $params) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInFormFields', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if the array of form parameters (name => value) are not set on the form matched with + * the passed selector. + * + * ``` php + * dontSeeInFormFields('form[name=myform]', [ + * 'input1' => 'non-existent value', + * 'input2' => 'other non-existent value', + * ]); + * ?> + * ``` + * + * To check that an element hasn't been assigned any one of many values, an array can be passed + * as the value: + * + * ``` php + * dontSeeInFormFields('.form-class', [ + * 'fieldName' => [ + * 'This value shouldn\'t be set', + * 'And this value shouldn\'t be set', + * ], + * ]); + * ?> + * ``` + * + * Additionally, checkbox values can be checked with a boolean. + * + * ``` php + * dontSeeInFormFields('#form-id', [ + * 'checkbox1' => true, // fails if checked + * 'checkbox2' => false, // fails if unchecked + * ]); + * ?> + * ``` + * + * @param $formSelector + * @param $params + * @see \Codeception\Lib\InnerBrowser::dontSeeInFormFields() + */ + public function dontSeeInFormFields($formSelector, $params) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInFormFields', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Submits the given form on the page, optionally with the given form values. + * Give the form fields values as an array. + * + * Skipped fields will be filled by their values from the page. + * You don't need to click the 'Submit' button afterwards. + * This command itself triggers the request to form's action. + * + * You can optionally specify what button's value to include + * in the request with the last parameter as an alternative to + * explicitly setting its value in the second parameter, as + * button values are not otherwise included in the request. + * + * Examples: + * + * ``` php + * submitForm('#login', array('login' => 'davert', 'password' => '123456')); + * // or + * $I->submitForm('#login', array('login' => 'davert', 'password' => '123456'), 'submitButtonName'); + * + * ``` + * + * For example, given this sample "Sign Up" form: + * + * ``` html + *
      + * Login:
      + * Password:
      + * Do you agree to out terms?
      + * Select pricing plan + * + *
      + * ``` + * + * You could write the following to submit it: + * + * ``` php + * submitForm('#userForm', array('user' => array('login' => 'Davert', 'password' => '123456', 'agree' => true)), 'submitButton'); + * + * ``` + * Note that "2" will be the submitted value for the "plan" field, as it is the selected option. + * + * You can also emulate a JavaScript submission by not specifying any buttons in the third parameter to submitForm. + * + * ```php + * submitForm('#userForm', array('user' => array('login' => 'Davert', 'password' => '123456', 'agree' => true))); + * + * ``` + * + * Pair this with seeInFormFields for quick testing magic. + * + * ``` php + * 'value', + * 'field2' => 'another value', + * 'checkbox1' => true, + * // ... + * ]; + * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); + * // $I->amOnPage('/path/to/form-page') may be needed + * $I->seeInFormFields('//form[@id=my-form]', $form); + * ?> + * ``` + * + * Parameter values can be set to arrays for multiple input fields + * of the same name, or multi-select combo boxes. For checkboxes, + * either the string value can be used, or boolean values which will + * be replaced by the checkbox's value in the DOM. + * + * ``` php + * submitForm('#my-form', [ + * 'field1' => 'value', + * 'checkbox' => [ + * 'value of first checkbox', + * 'value of second checkbox, + * ], + * 'otherCheckboxes' => [ + * true, + * false, + * false + * ], + * 'multiselect' => [ + * 'first option value', + * 'second option value' + * ] + * ]); + * ?> + * ``` + * + * Mixing string and boolean values for a checkbox's value is not + * supported and may produce unexpected results. + * + * @param $selector + * @param $params + * @param $button + * @see \Codeception\Lib\InnerBrowser::submitForm() + */ + public function submitForm($selector, $params, $button = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('submitForm', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Fills a text field or textarea with the given string. + * + * ``` php + * fillField("//input[@type='text']", "Hello World!"); + * $I->fillField(['name' => 'email'], 'jon@mail.com'); + * ?> + * ``` + * + * @param $field + * @param $value + * @see \Codeception\Lib\InnerBrowser::fillField() + */ + public function fillField($field, $value) { + return $this->scenario->runStep(new \Codeception\Step\Action('fillField', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Selects an option in a select tag or in radio button group. + * + * ``` php + * selectOption('form select[name=account]', 'Premium'); + * $I->selectOption('form input[name=payment]', 'Monthly'); + * $I->selectOption('//form/select[@name=account]', 'Monthly'); + * ?> + * ``` + * + * Provide an array for the second argument to select multiple options: + * + * ``` php + * selectOption('Which OS do you use?', array('Windows','Linux')); + * ?> + * ``` + * + * @param $select + * @param $option + * @see \Codeception\Lib\InnerBrowser::selectOption() + */ + public function selectOption($select, $option) { + return $this->scenario->runStep(new \Codeception\Step\Action('selectOption', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Ticks a checkbox. For radio buttons, use the `selectOption` method instead. + * + * ``` php + * checkOption('#agree'); + * ?> + * ``` + * + * @param $option + * @see \Codeception\Lib\InnerBrowser::checkOption() + */ + public function checkOption($option) { + return $this->scenario->runStep(new \Codeception\Step\Action('checkOption', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Unticks a checkbox. + * + * ``` php + * uncheckOption('#notify'); + * ?> + * ``` + * + * @param $option + * @see \Codeception\Lib\InnerBrowser::uncheckOption() + */ + public function uncheckOption($option) { + return $this->scenario->runStep(new \Codeception\Step\Action('uncheckOption', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Attaches a file relative to the Codeception data directory to the given file upload field. + * + * ``` php + * attachFile('input[@type="file"]', 'prices.xls'); + * ?> + * ``` + * + * @param $field + * @param $filename + * @see \Codeception\Lib\InnerBrowser::attachFile() + */ + public function attachFile($field, $filename) { + return $this->scenario->runStep(new \Codeception\Step\Action('attachFile', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * If your page triggers an ajax request, you can perform it manually. + * This action sends a GET ajax request with specified params. + * + * See ->sendAjaxPostRequest for examples. + * + * @param $uri + * @param $params + * @see \Codeception\Lib\InnerBrowser::sendAjaxGetRequest() + */ + public function sendAjaxGetRequest($uri, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('sendAjaxGetRequest', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * If your page triggers an ajax request, you can perform it manually. + * This action sends a POST ajax request with specified params. + * Additional params can be passed as array. + * + * Example: + * + * Imagine that by clicking checkbox you trigger ajax request which updates user settings. + * We emulate that click by running this ajax request manually. + * + * ``` php + * sendAjaxPostRequest('/updateSettings', array('notifications' => true)); // POST + * $I->sendAjaxGetRequest('/updateSettings', array('notifications' => true)); // GET + * + * ``` + * + * @param $uri + * @param $params + * @see \Codeception\Lib\InnerBrowser::sendAjaxPostRequest() + */ + public function sendAjaxPostRequest($uri, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('sendAjaxPostRequest', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * If your page triggers an ajax request, you can perform it manually. + * This action sends an ajax request with specified method and params. + * + * Example: + * + * You need to perform an ajax request specifying the HTTP method. + * + * ``` php + * sendAjaxRequest('PUT', '/posts/7', array('title' => 'new title')); + * + * ``` + * + * @param $method + * @param $uri + * @param $params + * @see \Codeception\Lib\InnerBrowser::sendAjaxRequest() + */ + public function sendAjaxRequest($method, $uri, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('sendAjaxRequest', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Finds and returns the text contents of the given element. + * If a fuzzy locator is used, the element is found using CSS, XPath, and by matching the full page source by regular expression. + * + * ``` php + * grabTextFrom('h1'); + * $heading = $I->grabTextFrom('descendant-or-self::h1'); + * $value = $I->grabTextFrom('~ + * ``` + * + * @param $cssOrXPathOrRegex + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::grabTextFrom() + */ + public function grabTextFrom($cssOrXPathOrRegex) { + return $this->scenario->runStep(new \Codeception\Step\Action('grabTextFrom', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Grabs the value of the given attribute value from the given element. + * Fails if element is not found. + * + * ``` php + * grabAttributeFrom('#tooltip', 'title'); + * ?> + * ``` + * + * + * @param $cssOrXpath + * @param $attribute + * @internal param $element + * @return mixed + * @see \Codeception\Lib\InnerBrowser::grabAttributeFrom() + */ + public function grabAttributeFrom($cssOrXpath, $attribute) { + return $this->scenario->runStep(new \Codeception\Step\Action('grabAttributeFrom', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * @param $field + * + * @return array|mixed|null|string + * @see \Codeception\Lib\InnerBrowser::grabValueFrom() + */ + public function grabValueFrom($field) { + return $this->scenario->runStep(new \Codeception\Step\Action('grabValueFrom', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Sets a cookie with the given name and value. + * You can set additional cookie params like `domain`, `path`, `expire`, `secure` in array passed as last argument. + * + * ``` php + * setCookie('PHPSESSID', 'el4ukv0kqbvoirg7nkp4dncpk3'); + * ?> + * ``` + * + * @param $name + * @param $val + * @param array $params + * @internal param $cookie + * @internal param $value + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::setCookie() + */ + public function setCookie($name, $val, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('setCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Grabs a cookie value. + * You can set additional cookie params like `domain`, `path` in array passed as last argument. + * + * @param $cookie + * + * @param array $params + * @return mixed + * @see \Codeception\Lib\InnerBrowser::grabCookie() + */ + public function grabCookie($name, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('grabCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that a cookie with the given name is set. + * You can set additional cookie params like `domain`, `path` as array passed in last argument. + * + * ``` php + * seeCookie('PHPSESSID'); + * ?> + * ``` + * + * @param $cookie + * @param array $params + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeCookie() + */ + public function canSeeCookie($name, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeCookie', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that a cookie with the given name is set. + * You can set additional cookie params like `domain`, `path` as array passed in last argument. + * + * ``` php + * seeCookie('PHPSESSID'); + * ?> + * ``` + * + * @param $cookie + * @param array $params + * @return mixed + * @see \Codeception\Lib\InnerBrowser::seeCookie() + */ + public function seeCookie($name, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there isn't a cookie with the given name. + * You can set additional cookie params like `domain`, `path` as array passed in last argument. + * + * @param $cookie + * + * @param array $params + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeCookie() + */ + public function cantSeeCookie($name, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCookie', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there isn't a cookie with the given name. + * You can set additional cookie params like `domain`, `path` as array passed in last argument. + * + * @param $cookie + * + * @param array $params + * @return mixed + * @see \Codeception\Lib\InnerBrowser::dontSeeCookie() + */ + public function dontSeeCookie($name, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Unsets cookie with the given name. + * You can set additional cookie params like `domain`, `path` in array passed as last argument. + * + * @param $cookie + * + * @param array $params + * @return mixed + * @see \Codeception\Lib\InnerBrowser::resetCookie() + */ + public function resetCookie($name, $params = null) { + return $this->scenario->runStep(new \Codeception\Step\Action('resetCookie', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given element exists on the page and is visible. + * You can also specify expected attributes of this element. + * + * ``` php + * seeElement('.error'); + * $I->seeElement('//form/input[1]'); + * $I->seeElement('input', ['name' => 'login']); + * $I->seeElement('input', ['value' => '123456']); + * + * // strict locator in first arg, attributes in second + * $I->seeElement(['css' => 'form input'], ['name' => 'login']); + * ?> + * ``` + * + * @param $selector + * @param array $attributes + * @return + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeElement() + */ + public function canSeeElement($selector, $attributes = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeElement', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given element exists on the page and is visible. + * You can also specify expected attributes of this element. + * + * ``` php + * seeElement('.error'); + * $I->seeElement('//form/input[1]'); + * $I->seeElement('input', ['name' => 'login']); + * $I->seeElement('input', ['value' => '123456']); + * + * // strict locator in first arg, attributes in second + * $I->seeElement(['css' => 'form input'], ['name' => 'login']); + * ?> + * ``` + * + * @param $selector + * @param array $attributes + * @return + * @see \Codeception\Lib\InnerBrowser::seeElement() + */ + public function seeElement($selector, $attributes = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeElement', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given element is invisible or not present on the page. + * You can also specify expected attributes of this element. + * + * ``` php + * dontSeeElement('.error'); + * $I->dontSeeElement('//form/input[1]'); + * $I->dontSeeElement('input', ['name' => 'login']); + * $I->dontSeeElement('input', ['value' => '123456']); + * ?> + * ``` + * + * @param $selector + * @param array $attributes + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeElement() + */ + public function cantSeeElement($selector, $attributes = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeElement', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given element is invisible or not present on the page. + * You can also specify expected attributes of this element. + * + * ``` php + * dontSeeElement('.error'); + * $I->dontSeeElement('//form/input[1]'); + * $I->dontSeeElement('input', ['name' => 'login']); + * $I->dontSeeElement('input', ['value' => '123456']); + * ?> + * ``` + * + * @param $selector + * @param array $attributes + * @see \Codeception\Lib\InnerBrowser::dontSeeElement() + */ + public function dontSeeElement($selector, $attributes = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeElement', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there are a certain number of elements matched by the given locator on the page. + * + * ``` php + * seeNumberOfElements('tr', 10); + * $I->seeNumberOfElements('tr', [0,10]); //between 0 and 10 elements + * ?> + * ``` + * @param $selector + * @param mixed $expected: + * - string: strict number + * - array: range of numbers [0,10] + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeNumberOfElements() + */ + public function canSeeNumberOfElements($selector, $expected) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeNumberOfElements', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that there are a certain number of elements matched by the given locator on the page. + * + * ``` php + * seeNumberOfElements('tr', 10); + * $I->seeNumberOfElements('tr', [0,10]); //between 0 and 10 elements + * ?> + * ``` + * @param $selector + * @param mixed $expected: + * - string: strict number + * - array: range of numbers [0,10] + * @see \Codeception\Lib\InnerBrowser::seeNumberOfElements() + */ + public function seeNumberOfElements($selector, $expected) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeNumberOfElements', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given option is selected. + * + * ``` php + * seeOptionIsSelected('#form input[name=payment]', 'Visa'); + * ?> + * ``` + * + * @param $selector + * @param $optionText + * + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeOptionIsSelected() + */ + public function canSeeOptionIsSelected($select, $optionText) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeOptionIsSelected', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given option is selected. + * + * ``` php + * seeOptionIsSelected('#form input[name=payment]', 'Visa'); + * ?> + * ``` + * + * @param $selector + * @param $optionText + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::seeOptionIsSelected() + */ + public function seeOptionIsSelected($select, $optionText) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeOptionIsSelected', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given option is not selected. + * + * ``` php + * dontSeeOptionIsSelected('#form input[name=payment]', 'Visa'); + * ?> + * ``` + * + * @param $selector + * @param $optionText + * + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeOptionIsSelected() + */ + public function cantSeeOptionIsSelected($select, $optionText) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeOptionIsSelected', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the given option is not selected. + * + * ``` php + * dontSeeOptionIsSelected('#form input[name=payment]', 'Visa'); + * ?> + * ``` + * + * @param $selector + * @param $optionText + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::dontSeeOptionIsSelected() + */ + public function dontSeeOptionIsSelected($select, $optionText) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeOptionIsSelected', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Asserts that current page has 404 response status code. + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seePageNotFound() + */ + public function canSeePageNotFound() { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seePageNotFound', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Asserts that current page has 404 response status code. + * @see \Codeception\Lib\InnerBrowser::seePageNotFound() + */ + public function seePageNotFound() { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seePageNotFound', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that response code is equal to value provided. + * + * @param $code + * + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIs() + */ + public function canSeeResponseCodeIs($code) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeResponseCodeIs', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that response code is equal to value provided. + * + * @param $code + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIs() + */ + public function seeResponseCodeIs($code) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeResponseCodeIs', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page title contains the given string. + * + * ``` php + * seeInTitle('Blog - Post #1'); + * ?> + * ``` + * + * @param $title + * + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::seeInTitle() + */ + public function canSeeInTitle($title) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInTitle', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page title contains the given string. + * + * ``` php + * seeInTitle('Blog - Post #1'); + * ?> + * ``` + * + * @param $title + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::seeInTitle() + */ + public function seeInTitle($title) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInTitle', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page title does not contain the given string. + * + * @param $title + * + * @return mixed + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Lib\InnerBrowser::dontSeeInTitle() + */ + public function cantSeeInTitle($title) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInTitle', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the page title does not contain the given string. + * + * @param $title + * + * @return mixed + * @see \Codeception\Lib\InnerBrowser::dontSeeInTitle() + */ + public function dontSeeInTitle($title) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInTitle', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\DbDropTablesHelper::cleanup() + */ + public function cleanup() { + return $this->scenario->runStep(new \Codeception\Step\Action('cleanup', func_get_args())); + } +} diff --git a/tests/Install/_bootstrap.php b/tests/Install/_bootstrap.php new file mode 100644 index 000000000..8a8855580 --- /dev/null +++ b/tests/Install/_bootstrap.php @@ -0,0 +1,2 @@ + Date: Fri, 22 May 2015 17:10:19 +0900 Subject: [PATCH 232/265] =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/Install.suite.dist.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/Install.suite.dist.yml b/tests/Install.suite.dist.yml index 62cd77e15..c24bfbd37 100644 --- a/tests/Install.suite.dist.yml +++ b/tests/Install.suite.dist.yml @@ -22,3 +22,7 @@ env: user: 'travis' password: 'travis' cleanup: true + DbDropTablesHelper: + dsn: 'mysql:host=127.0.0.1;dbname=xe_test' + user: 'travis' + password: 'travis' From c6b4dc866c8c9e891b9be3679b11445c41781316 Mon Sep 17 00:00:00 2001 From: bnu Date: Fri, 22 May 2015 17:20:35 +0900 Subject: [PATCH 233/265] =?UTF-8?q?tests/install.suite.yml=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/Install.suite.yml | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 tests/Install.suite.yml diff --git a/tests/Install.suite.yml b/tests/Install.suite.yml deleted file mode 100644 index 19cbbb135..000000000 --- a/tests/Install.suite.yml +++ /dev/null @@ -1,15 +0,0 @@ -class_name: InstallTester -modules: - enabled: [Db, PhpBrowser, DbDropTablesHelper, InstallHelper] - config: - PhpBrowser: - url: 'http://coretest.udada.kr/' - DbDropTablesHelper: - dsn: 'mysql:host=127.0.0.1;dbname=xecore_test' - user: 'root' - password: 'root' - Db: - dsn: 'mysql:host=127.0.0.1;dbname=xecore_test' - user: 'root' - password: 'root' - cleanup: true From 759033951e651e4c8e17a8fd6532345bb11eccb1 Mon Sep 17 00:00:00 2001 From: YJSoft Date: Sat, 23 May 2015 17:26:56 +0900 Subject: [PATCH 234/265] =?UTF-8?q?=EB=94=94=EB=B2=84=EA=B7=B8=EC=9A=A9=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit debugPrint 삭제 --- modules/trash/tpl/trash_list.html | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/trash/tpl/trash_list.html b/modules/trash/tpl/trash_list.html index b937b1085..802f5b69e 100644 --- a/modules/trash/tpl/trash_list.html +++ b/modules/trash/tpl/trash_list.html @@ -40,7 +40,6 @@ var no_text_comment = '{$lang->no_text_comment}'; - {debugPrint($oTrashVO->unserializedObject)} {$lang->document}{$lang->comment} {$lang->no_text_comment} From e2928534c576b0347b0f7dd94244b7220688a1ed Mon Sep 17 00:00:00 2001 From: Changwan Jun Date: Tue, 26 May 2015 14:57:42 +0900 Subject: [PATCH 235/265] ob_start * bug fix. --- classes/template/TemplateHandler.class.php | 8 +++++++- modules/page/page.view.php | 9 +++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/classes/template/TemplateHandler.class.php b/classes/template/TemplateHandler.class.php index b2d148759..d774a2633 100644 --- a/classes/template/TemplateHandler.class.php +++ b/classes/template/TemplateHandler.class.php @@ -362,6 +362,7 @@ class TemplateHandler $__Context->logged_info = Context::get('logged_info'); } + $level = ob_get_level(); ob_start(); if(substr($buff, 0, 7) == 'file://') { @@ -395,7 +396,12 @@ class TemplateHandler } } - return ob_get_clean(); + $contents = ''; + while (ob_get_level() - $level > 0) { + $contents .= ob_get_contents(); + ob_end_clean(); + } + return $contents; } /** diff --git a/modules/page/page.view.php b/modules/page/page.view.php index c07a50124..4ecf25774 100644 --- a/modules/page/page.view.php +++ b/modules/page/page.view.php @@ -179,6 +179,7 @@ class pageView extends page $filepath = preg_replace('/'.$filename."$/i","",$cache_file); $cache_file = FileHandler::getRealPath($cache_file); + $level = ob_get_level(); // Verify cache if($caching_interval <1 || !file_exists($cache_file) || filemtime($cache_file) + $caching_interval*60 <= $_SERVER['REQUEST_TIME'] || filemtime($cache_file) 0) { + $contents .= ob_get_contents(); + ob_end_clean(); + } + return $contents; } function _replacePath($matches) From f4e518cd3fa9267f045976f119563205c7369add Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 26 May 2015 16:10:34 +0900 Subject: [PATCH 236/265] rename codeception.yml --- codeception.dist.yml | 11 +++++++++++ codeception.yml | 19 ------------------- 2 files changed, 11 insertions(+), 19 deletions(-) create mode 100644 codeception.dist.yml delete mode 100644 codeception.yml diff --git a/codeception.dist.yml b/codeception.dist.yml new file mode 100644 index 000000000..8ea80dc2b --- /dev/null +++ b/codeception.dist.yml @@ -0,0 +1,11 @@ +actor: Tester +paths: + tests: tests + log: tests/_output + data: tests/_data + helpers: tests/_support +settings: + bootstrap: _bootstrap.php + colors: true + memory_limit: 1024M +error_level: "E_ALL & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED & ~E_NOTICE" diff --git a/codeception.yml b/codeception.yml deleted file mode 100644 index 7f760718c..000000000 --- a/codeception.yml +++ /dev/null @@ -1,19 +0,0 @@ -actor: Tester -paths: - tests: tests - log: tests/_output - data: tests/_data - helpers: tests/_support -settings: - bootstrap: _bootstrap.php - colors: true - memory_limit: 1024M -modules: - config: - Db: - dsn: 'mysql:host=127.0.0.1;dbname=xe_test' - user: 'root' - password: 'root' - populate: false - cleanup: false -error_level: "E_STRICTE_ALL & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED & ~E_NOTICE" From b4d66641ace1b0edb1a7536a0d01a1d690d4b9f1 Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 26 May 2015 16:13:28 +0900 Subject: [PATCH 237/265] =?UTF-8?q?fix=20#1498=20git=20ignore=20-=20PHPSto?= =?UTF-8?q?rm=20=EB=B0=8F=20SublimeText,=20codeception=20=EA=B4=80?= =?UTF-8?q?=EB=A0=A8=20=ED=8C=8C=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 5d06e0e6b..8fed4847f 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,9 @@ Thumbs.db /build/ /node_modules/ /vendor/ -tests/_output/* +.idea +*.sublime-workspace +*.sublime-project +.codeintel +/tests/_output/ +/tests/*.suite.yml From 467f7a9c98abff7dfa41c2bcb5407d20a3d7347b Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 26 May 2015 16:25:46 +0900 Subject: [PATCH 238/265] =?UTF-8?q?fix=20#1498=20git=20ignore=20-=20codece?= =?UTF-8?q?ption=20=EA=B4=80=EB=A0=A8=20=ED=8C=8C=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 8fed4847f..23a7e7b6a 100644 --- a/.gitignore +++ b/.gitignore @@ -9,5 +9,6 @@ Thumbs.db *.sublime-workspace *.sublime-project .codeintel +codeception.yml /tests/_output/ /tests/*.suite.yml From f4fb37fc845acf5f4e2b12dac6b502743d8df16e Mon Sep 17 00:00:00 2001 From: sejin7940 Date: Tue, 26 May 2015 20:22:55 +0900 Subject: [PATCH 239/265] Update popup.html --- modules/editor/components/poll_maker/tpl/popup.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/editor/components/poll_maker/tpl/popup.html b/modules/editor/components/poll_maker/tpl/popup.html index dfc62009e..05bfe1ed8 100644 --- a/modules/editor/components/poll_maker/tpl/popup.html +++ b/modules/editor/components/poll_maker/tpl/popup.html @@ -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()+60*60*24*30)}") + ,minDate: new Date("{date('Y-m-d',time())}") }; $.extend(option,$.datepicker.regional['{$lang_type}']); $(".inputDate").datepicker(option); From d1916d744fc3c2c36e2ef6834191403af76fd49c Mon Sep 17 00:00:00 2001 From: bnu Date: Thu, 28 May 2015 14:10:25 +0900 Subject: [PATCH 240/265] =?UTF-8?q?CI=20codeception=20error=5Flevel=20?= =?UTF-8?q?=EC=9E=98=EB=AA=BB=EB=90=9C=20=EC=84=A4=EC=A0=95=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- codeception.dist.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codeception.dist.yml b/codeception.dist.yml index 8ea80dc2b..db57ec19b 100644 --- a/codeception.dist.yml +++ b/codeception.dist.yml @@ -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_WARNING & ~E_STRICT & ~E_DEPRECATED & ~E_NOTICE" From 5cc8f55a6427789db29dff5d9db2f915a4c62fb2 Mon Sep 17 00:00:00 2001 From: bnu Date: Thu, 28 May 2015 14:15:00 +0900 Subject: [PATCH 241/265] =?UTF-8?q?CI=20codeception=20=EC=9E=90=EB=8F=99?= =?UTF-8?q?=EC=84=A4=EC=B9=98=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/Install.suite.dist.yml | 2 +- tests/Install/AutoinstallCept.php | 64 ++++++ tests/Install/InstallCept.php | 5 +- tests/Install/InstallTester.php | 336 +++++++++++++++++++++++++++++- tests/_bootstrap.php | 2 +- tests/_support/InstallHelper.php | 6 +- tests/unit/UnitTester.php | 2 +- 7 files changed, 410 insertions(+), 7 deletions(-) create mode 100644 tests/Install/AutoinstallCept.php diff --git a/tests/Install.suite.dist.yml b/tests/Install.suite.dist.yml index c24bfbd37..b217a1c35 100644 --- a/tests/Install.suite.dist.yml +++ b/tests/Install.suite.dist.yml @@ -1,6 +1,6 @@ class_name: InstallTester modules: - enabled: [Db, PhpBrowser, DbDropTablesHelper, InstallHelper] + enabled: [Db, PhpBrowser, DbDropTablesHelper, InstallHelper, Filesystem] config: PhpBrowser: url: 'http://localhost:8000/' diff --git a/tests/Install/AutoinstallCept.php b/tests/Install/AutoinstallCept.php new file mode 100644 index 000000000..a5cd05bd2 --- /dev/null +++ b/tests/Install/AutoinstallCept.php @@ -0,0 +1,64 @@ +env) ? Configuration::suiteSettings('Install', Configuration::config()) : Configuration::suiteEnvironments('Install')[$this->env]; + +$db_config = $config['modules']['config']['Db']; + +$dsn = $db_config['dsn']; +$dsn = split('[;:]', $dsn); +$db_type = array_shift($dsn); +$dbinfo = [ + 'type' => $db_type, + 'user' => $db_config['user'], + 'password' => $db_config['password'], + 'port' => ((isset($db_config['port']) && $db_config['port'])?: 3306), +]; +foreach($dsn as $piece) { + list($key, $val) = explode('=', $piece); + $dbinfo[$key] = $val; +} + +$install_config = array( + 'db_type' => $dbinfo['type'], + 'db_port' => $dbinfo['port'], + 'db_hostname' => $dbinfo['host'], + 'db_userid' => $dbinfo['user'], + 'db_password' => $dbinfo['password'], + 'db_database' => $dbinfo['dbname'], + 'db_table_prefix' =>'xe_', + 'use_rewrite' =>'N', + 'time_zone' =>'0900', + 'email_address' =>'admin@admin.net', + 'password' =>'admin', + 'password2' =>'admin', + 'nick_name' =>'admin', + 'user_id' =>'admin', + 'lang_type' => 'ko', +); + +$install_config = '<' . '?php $install_config = ' . var_export($install_config, true) . ';'; + +$I->wantTo('auto install'); +$I->writeToFile(_XE_PATH_ . 'config/install.config.php', $install_config); +$I->amOnPage('/'); + +$I->wantTo('completed'); +$I->dontSeeElement('//div[@id="progress"]/ul/li'); +$I->amOnPage('/index.php?act=dispMemberLoginForm'); + +$I->fillField('user_id', 'admin@admin.net'); +$I->submitForm('.login-body form', [ + 'act' => 'procMemberLogin', + 'user_id' => 'admin@admin.net', + 'password' => 'admin', + 'success_return_url' => '/index.php?module=admin' +]); + +$I->seeInCurrentUrl('module=admin'); +$I->seeElement('#gnbNav'); +$I->seeElement('#content .x_page-header'); +$I->see('설치 환경 수집 동의', 'h2'); + diff --git a/tests/Install/InstallCept.php b/tests/Install/InstallCept.php index 4a0621535..a3e5750b7 100644 --- a/tests/Install/InstallCept.php +++ b/tests/Install/InstallCept.php @@ -22,6 +22,10 @@ foreach($dsn as $piece) { $dbinfo[$key] = $val; } +if(\Filehandler::exists(_XE_PATH_ . 'config/install.config.php')) { + $I->deleteFile(_XE_PATH_ . 'config/install.config.php'); +} + // Step 1 $I->wantTo('Install XE Core'); $I->amOnPage('/index.php?l=ko'); @@ -85,7 +89,6 @@ $I->submitForm('#content form', [ ]); // Step 9 -$I->wantTo('completed'); $I->dontSeeElement('//div[@id="progress"]/ul/li'); $I->amOnPage('/index.php?act=dispMemberLoginForm'); diff --git a/tests/Install/InstallTester.php b/tests/Install/InstallTester.php index 5d2e8626a..1e1aef6fa 100644 --- a/tests/Install/InstallTester.php +++ b/tests/Install/InstallTester.php @@ -1,4 +1,4 @@ -scenario->runStep(new \Codeception\Step\Action('cleanup', func_get_args())); } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Enters a directory In local filesystem. + * Project root directory is used by default + * + * @param $path + * @see \Codeception\Module\Filesystem::amInPath() + */ + public function amInPath($path) { + return $this->scenario->runStep(new \Codeception\Step\Condition('amInPath', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Opens a file and stores it's content. + * + * Usage: + * + * ``` php + * openFile('composer.json'); + * $I->seeInThisFile('codeception/codeception'); + * ?> + * ``` + * + * @param $filename + * @see \Codeception\Module\Filesystem::openFile() + */ + public function openFile($filename) { + return $this->scenario->runStep(new \Codeception\Step\Action('openFile', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Deletes a file + * + * ``` php + * deleteFile('composer.lock'); + * ?> + * ``` + * + * @param $filename + * @see \Codeception\Module\Filesystem::deleteFile() + */ + public function deleteFile($filename) { + return $this->scenario->runStep(new \Codeception\Step\Action('deleteFile', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Deletes directory with all subdirectories + * + * ``` php + * deleteDir('vendor'); + * ?> + * ``` + * + * @param $dirname + * @see \Codeception\Module\Filesystem::deleteDir() + */ + public function deleteDir($dirname) { + return $this->scenario->runStep(new \Codeception\Step\Action('deleteDir', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Copies directory with all contents + * + * ``` php + * copyDir('vendor','old_vendor'); + * ?> + * ``` + * + * @param $src + * @param $dst + * @see \Codeception\Module\Filesystem::copyDir() + */ + public function copyDir($src, $dst) { + return $this->scenario->runStep(new \Codeception\Step\Action('copyDir', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks If opened file has `text` in it. + * + * Usage: + * + * ``` php + * openFile('composer.json'); + * $I->seeInThisFile('codeception/codeception'); + * ?> + * ``` + * + * @param $text + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Module\Filesystem::seeInThisFile() + */ + public function canSeeInThisFile($text) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeInThisFile', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks If opened file has `text` in it. + * + * Usage: + * + * ``` php + * openFile('composer.json'); + * $I->seeInThisFile('codeception/codeception'); + * ?> + * ``` + * + * @param $text + * @see \Codeception\Module\Filesystem::seeInThisFile() + */ + public function seeInThisFile($text) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeInThisFile', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks the strict matching of file contents. + * Unlike `seeInThisFile` will fail if file has something more than expected lines. + * Better to use with HEREDOC strings. + * Matching is done after removing "\r" chars from file content. + * + * ``` php + * openFile('process.pid'); + * $I->seeFileContentsEqual('3192'); + * ?> + * ``` + * + * @param $text + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Module\Filesystem::seeFileContentsEqual() + */ + public function canSeeFileContentsEqual($text) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeFileContentsEqual', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks the strict matching of file contents. + * Unlike `seeInThisFile` will fail if file has something more than expected lines. + * Better to use with HEREDOC strings. + * Matching is done after removing "\r" chars from file content. + * + * ``` php + * openFile('process.pid'); + * $I->seeFileContentsEqual('3192'); + * ?> + * ``` + * + * @param $text + * @see \Codeception\Module\Filesystem::seeFileContentsEqual() + */ + public function seeFileContentsEqual($text) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeFileContentsEqual', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks If opened file doesn't contain `text` in it + * + * ``` php + * openFile('composer.json'); + * $I->dontSeeInThisFile('codeception/codeception'); + * ?> + * ``` + * + * @param $text + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Module\Filesystem::dontSeeInThisFile() + */ + public function cantSeeInThisFile($text) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInThisFile', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks If opened file doesn't contain `text` in it + * + * ``` php + * openFile('composer.json'); + * $I->dontSeeInThisFile('codeception/codeception'); + * ?> + * ``` + * + * @param $text + * @see \Codeception\Module\Filesystem::dontSeeInThisFile() + */ + public function dontSeeInThisFile($text) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeInThisFile', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Deletes a file + * @see \Codeception\Module\Filesystem::deleteThisFile() + */ + public function deleteThisFile() { + return $this->scenario->runStep(new \Codeception\Step\Action('deleteThisFile', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if file exists in path. + * Opens a file when it's exists + * + * ``` php + * seeFileFound('UserModel.php','app/models'); + * ?> + * ``` + * + * @param $filename + * @param string $path + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Module\Filesystem::seeFileFound() + */ + public function canSeeFileFound($filename, $path = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('seeFileFound', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if file exists in path. + * Opens a file when it's exists + * + * ``` php + * seeFileFound('UserModel.php','app/models'); + * ?> + * ``` + * + * @param $filename + * @param string $path + * @see \Codeception\Module\Filesystem::seeFileFound() + */ + public function seeFileFound($filename, $path = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('seeFileFound', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if file does not exists in path + * + * @param $filename + * @param string $path + * Conditional Assertion: Test won't be stopped on fail + * @see \Codeception\Module\Filesystem::dontSeeFileFound() + */ + public function cantSeeFileFound($filename, $path = null) { + return $this->scenario->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeFileFound', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks if file does not exists in path + * + * @param $filename + * @param string $path + * @see \Codeception\Module\Filesystem::dontSeeFileFound() + */ + public function dontSeeFileFound($filename, $path = null) { + return $this->scenario->runStep(new \Codeception\Step\Assertion('dontSeeFileFound', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Erases directory contents + * + * ``` php + * cleanDir('logs'); + * ?> + * ``` + * + * @param $dirname + * @see \Codeception\Module\Filesystem::cleanDir() + */ + public function cleanDir($dirname) { + return $this->scenario->runStep(new \Codeception\Step\Action('cleanDir', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Saves contents to file + * + * @param $filename + * @param $contents + * @see \Codeception\Module\Filesystem::writeToFile() + */ + public function writeToFile($filename, $contents) { + return $this->scenario->runStep(new \Codeception\Step\Action('writeToFile', func_get_args())); + } } diff --git a/tests/_bootstrap.php b/tests/_bootstrap.php index a778b4088..21bf1735c 100644 --- a/tests/_bootstrap.php +++ b/tests/_bootstrap.php @@ -2,7 +2,7 @@ // This is global bootstrap for autoloading if(!defined('__XE__')) define('__XE__', true); if(!defined('_XE_PATH_')) define('_XE_PATH_', realpath(dirname(__FILE__).'/../').'/'); -error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED ^ E_WARNING ^ E_STRICT); +require_once _XE_PATH_.'config/config.inc.php'; function _debug() { $args = func_get_args(); diff --git a/tests/_support/InstallHelper.php b/tests/_support/InstallHelper.php index ba92cf656..77cd8f985 100644 --- a/tests/_support/InstallHelper.php +++ b/tests/_support/InstallHelper.php @@ -1,10 +1,12 @@ Date: Thu, 28 May 2015 15:41:00 +0900 Subject: [PATCH 242/265] =?UTF-8?q?#1374=20autoload=20=EA=B0=9C=EC=84=A0?= =?UTF-8?q?=20-=20composer=20autoload=20=EC=B6=94=EA=B0=80=20-=20load=20ti?= =?UTF-8?q?me=20=EC=B8=A1=EC=A0=95=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20-=20=EB=8C=80=EB=AC=B8=EC=9E=90=EB=A5=BC=20?= =?UTF-8?q?=ED=8F=AC=ED=95=A8=ED=95=9C=20=EB=AA=A8=EB=93=88=EB=AA=85?= =?UTF-8?q?=EC=97=90=20=EB=8C=80=ED=95=9C=20=ED=98=B8=ED=99=98=EC=84=B1=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.inc.php | 44 ++++++++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/config/config.inc.php b/config/config.inc.php index 575a89863..0925141f6 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -287,14 +287,15 @@ if(!defined('__XE_LOADED_CLASS__')) // Require a function-defined-file for simple use require(_XE_PATH_ . 'config/func.inc.php'); - if(__DEBUG__) + if(__DEBUG__) { define('__StartTime__', getMicroTime()); + } - // include the class files - if(__DEBUG__) - define('__ClassLoadStartTime__', getMicroTime()); + if(__DEBUG__) { + $GLOBALS['__elapsed_class_load__'] = 0; + } - $__xe_autoload_file_map = array_change_key_case(array( + $GLOBALS['__xe_autoload_file_map'] = array_change_key_case(array( 'CacheHandler' => 'classes/cache/CacheHandler.class.php', 'Context' => 'classes/context/Context.class.php', 'DB' => 'classes/db/DB.class.php', @@ -389,24 +390,41 @@ if(!defined('__XE_LOADED_CLASS__')) function __xe_autoload($class_name) { - $class_name = strtolower($class_name); - if(isset($GLOBALS['__xe_autoload_file_map'][$class_name])) - { - require _XE_PATH_ . $GLOBALS['__xe_autoload_file_map'][$class_name]; + if(__DEBUG__) { + $time_at = getMicroTime(); } - elseif(preg_match('/^([a-z0-9_]+?)(admin)?(view|controller|model|api|wap|mobile)?$/i', $class_name, $matches)) + + if(isset($GLOBALS['__xe_autoload_file_map'][strtolower($class_name)])) { - $candidate_filename = 'modules/' . $matches[1] . '/' . $matches[1] . ($matches[2] ? '.admin' : '') . ($matches[3] ? ('.' . $matches[3]) : '.class') . '.php'; + require _XE_PATH_ . $GLOBALS['__xe_autoload_file_map'][strtolower($class_name)]; + } + elseif(preg_match('/^([a-zA-Z0-9_]+?)(Admin)?(View|Controller|Model|Api|Wap|Mobile)?$/', $class_name, $matches)) + { + $candidate_filename = array(); + $candidate_filename[] = 'modules/' . $matches[1] . '/' . $matches[1]; + if(isset($matches[2]) && $matches[2]) $candidate_filename[] = 'admin'; + $candidate_filename[] = (isset($matches[3]) && $matches[3]) ? strtolower($matches[3]) : 'class'; + $candidate_filename[] = 'php'; + + $candidate_filename = implode('.', $candidate_filename); + if(file_exists(_XE_PATH_ . $candidate_filename)) { require _XE_PATH_ . $candidate_filename; } } + + if(__DEBUG__) { + $GLOBALS['__elapsed_class_load__'] += getMicroTime() - $time_at; + } } spl_autoload_register('__xe_autoload'); - if(__DEBUG__) - $GLOBALS['__elapsed_class_load__'] = getMicroTime() - __ClassLoadStartTime__; + if(file_exists(_XE_PATH_ . '/vendor/autoload.php')) { + require _XE_PATH_ . '/vendor/autoload.php'; + } + + } /* End of file config.inc.php */ /* Location: ./config/config.inc.php */ From 6bec907f83984180ca8b89e48663af94688de9a8 Mon Sep 17 00:00:00 2001 From: bnu Date: Thu, 28 May 2015 15:47:54 +0900 Subject: [PATCH 243/265] =?UTF-8?q?CI=20codeception=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/Install/AutoinstallCept.php | 3 +-- tests/{unit.suite.yml => unit.suite.dist.yml} | 0 2 files changed, 1 insertion(+), 2 deletions(-) rename tests/{unit.suite.yml => unit.suite.dist.yml} (100%) diff --git a/tests/Install/AutoinstallCept.php b/tests/Install/AutoinstallCept.php index a5cd05bd2..91b244ff2 100644 --- a/tests/Install/AutoinstallCept.php +++ b/tests/Install/AutoinstallCept.php @@ -41,11 +41,10 @@ $install_config = array( $install_config = '<' . '?php $install_config = ' . var_export($install_config, true) . ';'; -$I->wantTo('auto install'); +$I->wantTo('Auto install'); $I->writeToFile(_XE_PATH_ . 'config/install.config.php', $install_config); $I->amOnPage('/'); -$I->wantTo('completed'); $I->dontSeeElement('//div[@id="progress"]/ul/li'); $I->amOnPage('/index.php?act=dispMemberLoginForm'); diff --git a/tests/unit.suite.yml b/tests/unit.suite.dist.yml similarity index 100% rename from tests/unit.suite.yml rename to tests/unit.suite.dist.yml From eb8a02c155994161ca1ccbbac26a882760f329ea Mon Sep 17 00:00:00 2001 From: bnu Date: Thu, 28 May 2015 17:06:11 +0900 Subject: [PATCH 244/265] travis-ci --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index fc815f346..b479ff7c4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,7 +23,7 @@ before_script: script: - grunt lint - grunt minify -- if [ $(phpenv version-name) != "5.3" ]; then ./vendor/bin/codecept run --env travis; +- if [ $(phpenv version-name) != "5.3" ]; then ./vendor/bin/codecept run -d --env travis; fi notifications: slack: From 93902811f0fa42a94eaacf5d991089a67a5c0de6 Mon Sep 17 00:00:00 2001 From: bnu Date: Thu, 28 May 2015 17:37:13 +0900 Subject: [PATCH 245/265] =?UTF-8?q?CI=20fatal=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/install/install.controller.php | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/install/install.controller.php b/modules/install/install.controller.php index 0b0a3d706..aac53791b 100644 --- a/modules/install/install.controller.php +++ b/modules/install/install.controller.php @@ -206,6 +206,7 @@ class installController extends install $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl(''); header('location:'.$returnUrl); return; + return new Object(); } } From c27b0bb5d5a5109883d2d0649af812b8657a4465 Mon Sep 17 00:00:00 2001 From: bnu Date: Thu, 28 May 2015 17:57:06 +0900 Subject: [PATCH 246/265] =?UTF-8?q?CI=20fatal=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/install/install.controller.php | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/install/install.controller.php b/modules/install/install.controller.php index aac53791b..178c5a56a 100644 --- a/modules/install/install.controller.php +++ b/modules/install/install.controller.php @@ -205,7 +205,6 @@ class installController extends install { $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl(''); header('location:'.$returnUrl); - return; return new Object(); } } From f1b7d9124a776b032017b1cc8e8ddd1075e0fca4 Mon Sep 17 00:00:00 2001 From: bnu Date: Thu, 28 May 2015 20:50:13 +0900 Subject: [PATCH 247/265] =?UTF-8?q?codeception=20-=20FrontEndFileHandler?= =?UTF-8?q?=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=88=98=EC=A0=95=20=EB=B0=8F?= =?UTF-8?q?=20=EB=B3=B4=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/unit/_bootstrap.php | 2 - .../frontendfile/FrontEndFileHandlerTest.php | 89 ++++++++++++++++--- 2 files changed, 79 insertions(+), 12 deletions(-) diff --git a/tests/unit/_bootstrap.php b/tests/unit/_bootstrap.php index 8ef4ccfd6..cd676ee17 100644 --- a/tests/unit/_bootstrap.php +++ b/tests/unit/_bootstrap.php @@ -1,4 +1,2 @@ loadFile(array('./common/js/common.js', 'head')); $handler->loadFile(array('./common/js/xml_js_filter.js', 'body')); - $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => null); + if(__DEBUG__ || !__XE_VERSION_STABLE__) + { + $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => null); + } else { + $expected[] = array('file' => '/xe/common/js/jquery.min.js' . $this->_filemtime('common/js/jquery.min.js'), 'targetie' => null); + } $expected[] = array('file' => '/xe/common/js/js_app.js' . $this->_filemtime('common/js/js_app.js'), 'targetie' => null); $expected[] = array('file' => '/xe/common/js/common.js' . $this->_filemtime('common/js/common.js'), 'targetie' => null); $this->assertEquals($handler->getJsFileList(), $expected); @@ -33,7 +38,14 @@ class FrontEndFileHandlerTest extends \Codeception\TestCase\Test $handler->loadFile(array('./common/js/jquery.js', 'body')); $handler->loadFile(array('./common/js/xml_js_filter.js', 'head')); - $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => null); + if(__DEBUG__ || !__XE_VERSION_STABLE__) + { + $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => null); + } + else + { + $expected[] = array('file' => '/xe/common/js/jquery.min.js' . $this->_filemtime('common/js/jquery.min.js'), 'targetie' => null); + } $this->assertEquals($handler->getJsFileList('body'), $expected); }); @@ -42,8 +54,16 @@ class FrontEndFileHandlerTest extends \Codeception\TestCase\Test $handler->loadFile(array('./common/css/xe.css')); $handler->loadFile(array('./common/css/mobile.css')); - $expected[] = array('file' => '/xe/common/css/xe.css' . $this->_filemtime('common/css/xe.css'), 'media' => 'all', 'targetie' => null); - $expected[] = array('file' => '/xe/common/css/mobile.css' . $this->_filemtime('common/css/mobile.css'), 'media' => 'all', 'targetie' => null); + if(__DEBUG__ || !__XE_VERSION_STABLE__) + { + $expected[] = array('file' => '/xe/common/css/xe.css' . $this->_filemtime('common/css/xe.css'), 'media' => 'all', 'targetie' => null); + $expected[] = array('file' => '/xe/common/css/mobile.css' . $this->_filemtime('common/css/mobile.css'), 'media' => 'all', 'targetie' => null); + } + else + { + $expected[] = array('file' => '/xe/common/css/xe.min.css' . $this->_filemtime('common/css/xe.min.css'), 'media' => 'all', 'targetie' => null); + $expected[] = array('file' => '/xe/common/css/mobile.min.css' . $this->_filemtime('common/css/mobile.min.css'), 'media' => 'all', 'targetie' => null); + } $this->assertEquals($handler->getCssFileList(), $expected); }); @@ -60,7 +80,14 @@ class FrontEndFileHandlerTest extends \Codeception\TestCase\Test $handler->loadFile(array('./common/js/xml_handler.js', 'head', '', -100000)); $handler->loadFile(array('./common/js/xml_js_filter.js', 'head', '', -100000)); - $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => null); + if(__DEBUG__ || !__XE_VERSION_STABLE__) + { + $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => null); + } + else + { + $expected[] = array('file' => '/xe/common/js/jquery.min.js' . $this->_filemtime('common/js/jquery.min.js'), 'targetie' => null); + } $expected[] = array('file' => '/xe/common/js/js_app.js' . $this->_filemtime('common/js/js_app.js'), 'targetie' => null); $expected[] = array('file' => '/xe/common/js/common.js' . $this->_filemtime('common/js/common.js'), 'targetie' => null); $expected[] = array('file' => '/xe/common/js/xml_handler.js' . $this->_filemtime('common/js/xml_handler.js'), 'targetie' => null); @@ -76,7 +103,14 @@ class FrontEndFileHandlerTest extends \Codeception\TestCase\Test $handler->loadFile(array('./common/js/common.js', 'head', '', -100000)); $handler->loadFile(array('./common/js/xml_js_filter.js', 'head', '', -100000)); - $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => null); + if(__DEBUG__ || !__XE_VERSION_STABLE__) + { + $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => null); + } + else + { + $expected[] = array('file' => '/xe/common/js/jquery.min.js' . $this->_filemtime('common/js/jquery.min.js'), 'targetie' => null); + } $expected[] = array('file' => '/xe/common/js/js_app.js' . $this->_filemtime('common/js/js_app.js'), 'targetie' => null); $expected[] = array('file' => '/xe/common/js/common.js' . $this->_filemtime('common/js/common.js'), 'targetie' => null); $expected[] = array('file' => '/xe/common/js/xml_js_filter.js' . $this->_filemtime('common/js/xml_js_filter.js'), 'targetie' => null); @@ -106,9 +140,41 @@ class FrontEndFileHandlerTest extends \Codeception\TestCase\Test $handler->loadFile(array('./common/js/jquery.js', 'head', 'ie7')); $handler->loadFile(array('./common/js/jquery.js', 'head', 'ie8')); - $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => 'ie6'); - $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => 'ie7'); - $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => 'ie8'); + if(__DEBUG__ || !__XE_VERSION_STABLE__) + { + $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => 'ie6'); + $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => 'ie7'); + $expected[] = array('file' => '/xe/common/js/jquery.js' . $this->_filemtime('common/js/jquery.js'), 'targetie' => 'ie8'); + } + else + { + $expected[] = array('file' => '/xe/common/js/jquery.min.js' . $this->_filemtime('common/js/jquery.min.js'), 'targetie' => 'ie6'); + $expected[] = array('file' => '/xe/common/js/jquery.min.js' . $this->_filemtime('common/js/jquery.min.js'), 'targetie' => 'ie7'); + $expected[] = array('file' => '/xe/common/js/jquery.min.js' . $this->_filemtime('common/js/jquery.min.js'), 'targetie' => 'ie8'); + } + $this->assertEquals($handler->getJsFileList(), $expected); + }); + + $this->specify("external file - schemaless", function() { + $handler = new FrontEndFileHandler(); + $handler->loadFile(array('http://external.host/js/script.js')); + $handler->loadFile(array('https://external.host/js/script.js')); + $handler->loadFile(array('//external.host/js/script1.js')); + $handler->loadFile(array('///external.host/js/script2.js')); + + $expected[] = array('file' => 'http://external.host/js/script.js', 'targetie' => null); + $expected[] = array('file' => 'https://external.host/js/script.js', 'targetie' => null); + $expected[] = array('file' => '//external.host/js/script1.js', 'targetie' => null); + $expected[] = array('file' => '//external.host/js/script2.js', 'targetie' => null); + $this->assertEquals($handler->getJsFileList(), $expected); + }); + + $this->specify("external file - schemaless", function() { + $handler = new FrontEndFileHandler(); + $handler->loadFile(array('//external.host/js/script.js')); + $handler->loadFile(array('///external.host/js/script.js')); + + $expected[] = array('file' => '//external.host/js/script.js', 'targetie' => null); $this->assertEquals($handler->getJsFileList(), $expected); }); @@ -146,13 +212,16 @@ class FrontEndFileHandlerTest extends \Codeception\TestCase\Test $this->assertEquals($handler->getCssFileList(), $expected); }); - $this->specify("external file", function() { + $this->specify("external file - schemaless", function() { $handler = new FrontEndFileHandler(); $handler->loadFile(array('//external.host/css/style.css')); + $handler->loadFile(array('///external.host/css2/style2.css')); $expected[] = array('file' => '//external.host/css/style.css', 'media'=>'all', 'targetie' => null); + $expected[] = array('file' => '//external.host/css2/style2.css', 'media'=>'all', 'targetie' => null); $this->assertEquals($handler->getCssFileList(), $expected); }); + } } From bfea31d6eb03d5d7568eb6911237f47c4c96bd3d Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Tue, 2 Jun 2015 09:49:44 +0900 Subject: [PATCH 248/265] =?UTF-8?q?autoloader=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EB=88=84=EB=9D=BD=EB=90=9C=20=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.inc.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/config.inc.php b/config/config.inc.php index 0925141f6..76789d09c 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -296,6 +296,7 @@ if(!defined('__XE_LOADED_CLASS__')) } $GLOBALS['__xe_autoload_file_map'] = array_change_key_case(array( + 'CacheBase' => 'classes/cache/CacheHandler.class.php', 'CacheHandler' => 'classes/cache/CacheHandler.class.php', 'Context' => 'classes/context/Context.class.php', 'DB' => 'classes/db/DB.class.php', @@ -330,6 +331,7 @@ if(!defined('__XE_LOADED_CLASS__')) 'XMLDisplayHandler' => 'classes/display/XMLDisplayHandler.php', 'EditorHandler' => 'classes/editor/EditorHandler.class.php', 'ExtraVar' => 'classes/extravar/Extravar.class.php', + 'ExtraItem' => 'classes/extravar/Extravar.class.php', 'FileHandler' => 'classes/file/FileHandler.class.php', 'FileObject' => 'classes/file/FileObject.class.php', 'FrontEndFileHandler' => 'classes/frontendfile/FrontEndFileHandler.class.php', From f0b0608fd588db71c426206fb5ebf8fcfe6015b3 Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 2 Jun 2015 10:44:52 +0900 Subject: [PATCH 249/265] =?UTF-8?q?composer.lock=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- composer.lock | 1741 ------------------------------------------------- 1 file changed, 1741 deletions(-) delete mode 100644 composer.lock diff --git a/composer.lock b/composer.lock deleted file mode 100644 index 23c595a15..000000000 --- a/composer.lock +++ /dev/null @@ -1,1741 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", - "This file is @generated automatically" - ], - "hash": "0b13ef2987c06113ab0a920cdb9e4e83", - "packages": [], - "packages-dev": [ - { - "name": "codeception/codeception", - "version": "2.0.12", - "source": { - "type": "git", - "url": "https://github.com/Codeception/Codeception.git", - "reference": "6e29668921182d6b90cd021033002be85382c6f9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/6e29668921182d6b90cd021033002be85382c6f9", - "reference": "6e29668921182d6b90cd021033002be85382c6f9", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "facebook/webdriver": "~0.4|~0.5", - "guzzlehttp/guzzle": "~4.0|~5.0", - "php": ">=5.4.0", - "phpunit/phpunit": "~4.5.0", - "symfony/browser-kit": "~2.4", - "symfony/console": "~2.4", - "symfony/css-selector": "~2.4", - "symfony/dom-crawler": "~2.4,!=2.4.5", - "symfony/event-dispatcher": "~2.4", - "symfony/finder": "~2.4", - "symfony/yaml": "~2.4" - }, - "require-dev": { - "codeception/specify": "~0.3", - "facebook/php-sdk": "~3.2", - "flow/jsonpath": "~0.2", - "monolog/monolog": "~1.8", - "pda/pheanstalk": "~2.0", - "videlalvaro/php-amqplib": "~2.4" - }, - "suggest": { - "codeception/phpbuiltinserver": "Extension to start and stop PHP built-in web server for your tests", - "codeception/specify": "BDD-style code blocks", - "codeception/verify": "BDD-style assertions", - "monolog/monolog": "Log test steps", - "phpseclib/phpseclib": "Extension required to use the SFTP option in the FTP Module." - }, - "bin": [ - "codecept" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-0": { - "Codeception": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Bodnarchuk", - "email": "davert@mail.ua", - "homepage": "http://codegyre.com" - } - ], - "description": "BDD-style testing framework", - "homepage": "http://codeception.com/", - "keywords": [ - "BDD", - "TDD", - "acceptance testing", - "functional testing", - "unit testing" - ], - "time": "2015-04-02 23:50:20" - }, - { - "name": "codeception/specify", - "version": "0.4.1", - "source": { - "type": "git", - "url": "https://github.com/Codeception/Specify.git", - "reference": "0c0ae07adfc231115b3b72ade22f44c23c199ded" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Codeception/Specify/zipball/0c0ae07adfc231115b3b72ade22f44c23c199ded", - "reference": "0c0ae07adfc231115b3b72ade22f44c23c199ded", - "shasum": "" - }, - "require": { - "myclabs/deep-copy": "~1.1", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "autoload": { - "psr-0": { - "Codeception\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "authors": [ - { - "name": "Michael Bodnarchuk", - "email": "davert.php@mailican.com" - } - ], - "description": "BDD code blocks for PHPUnit and Codeception", - "time": "2014-10-17 00:06:51" - }, - { - "name": "codeception/verify", - "version": "0.2.7", - "source": { - "type": "git", - "url": "https://github.com/Codeception/Verify.git", - "reference": "66e5074905f4d9590ddb805d123fe632f4baa488" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Codeception/Verify/zipball/66e5074905f4d9590ddb805d123fe632f4baa488", - "reference": "66e5074905f4d9590ddb805d123fe632f4baa488", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "3.7.*" - }, - "type": "library", - "autoload": { - "files": [ - "src/Codeception/function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "authors": [ - { - "name": "Michael Bodnarchuk", - "email": "davert.php@mailican.com", - "homepage": "http://codeception.com" - } - ], - "description": "BDD assertion library for PHPUnit", - "time": "2014-01-22 14:40:33" - }, - { - "name": "doctrine/instantiator", - "version": "1.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f976e5de371104877ebc89bd8fecb0019ed9c119", - "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119", - "shasum": "" - }, - "require": { - "php": ">=5.3,<8.0-DEV" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "2.0.*@ALPHA" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "Doctrine\\Instantiator\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", - "keywords": [ - "constructor", - "instantiate" - ], - "time": "2014-10-13 12:58:55" - }, - { - "name": "facebook/webdriver", - "version": "v0.5.1", - "source": { - "type": "git", - "url": "https://github.com/facebook/php-webdriver.git", - "reference": "bbcb697efb394d17bd9ec3d467e7da847cde4509" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/bbcb697efb394d17bd9ec3d467e7da847cde4509", - "reference": "bbcb697efb394d17bd9ec3d467e7da847cde4509", - "shasum": "" - }, - "require": { - "php": ">=5.3.19" - }, - "require-dev": { - "phpdocumentor/phpdocumentor": "2.*", - "phpunit/phpunit": "3.7.*" - }, - "type": "library", - "autoload": { - "classmap": [ - "lib/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "description": "A php client for WebDriver", - "homepage": "https://github.com/facebook/php-webdriver", - "keywords": [ - "facebook", - "php", - "selenium", - "webdriver" - ], - "time": "2014-11-05 20:53:09" - }, - { - "name": "guzzlehttp/guzzle", - "version": "5.2.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "475b29ccd411f2fa8a408e64576418728c032cfa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/475b29ccd411f2fa8a408e64576418728c032cfa", - "reference": "475b29ccd411f2fa8a408e64576418728c032cfa", - "shasum": "" - }, - "require": { - "guzzlehttp/ringphp": "~1.0", - "php": ">=5.4.0" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "~4.0", - "psr/log": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "time": "2015-01-28 01:03:29" - }, - { - "name": "guzzlehttp/ringphp", - "version": "1.0.7", - "source": { - "type": "git", - "url": "https://github.com/guzzle/RingPHP.git", - "reference": "52d868f13570a9a56e5fce6614e0ec75d0f13ac2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/52d868f13570a9a56e5fce6614e0ec75d0f13ac2", - "reference": "52d868f13570a9a56e5fce6614e0ec75d0f13ac2", - "shasum": "" - }, - "require": { - "guzzlehttp/streams": "~3.0", - "php": ">=5.4.0", - "react/promise": "~2.0" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "~4.0" - }, - "suggest": { - "ext-curl": "Guzzle will use specific adapters if cURL is present" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Ring\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Provides a simple API and specification that abstracts away the details of HTTP into a single PHP function.", - "time": "2015-03-30 01:43:20" - }, - { - "name": "guzzlehttp/streams", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/streams.git", - "reference": "47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/streams/zipball/47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5", - "reference": "47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Stream\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Provides a simple abstraction over streams of data", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "Guzzle", - "stream" - ], - "time": "2014-10-12 19:18:40" - }, - { - "name": "myclabs/deep-copy", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "96fbdc07635989c35c5a1912379f4c4b2ab15fd5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/96fbdc07635989c35c5a1912379f4c4b2ab15fd5", - "reference": "96fbdc07635989c35c5a1912379f4c4b2ab15fd5", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "doctrine/collections": "1.*", - "phpunit/phpunit": "~4.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "homepage": "https://github.com/myclabs/DeepCopy", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "time": "2015-03-21 22:40:23" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", - "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "suggest": { - "dflydev/markdown": "~1.0", - "erusev/parsedown": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "phpDocumentor": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" - } - ], - "time": "2015-02-03 12:10:50" - }, - { - "name": "phpspec/prophecy", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "8724cd239f8ef4c046f55a3b18b4d91cc7f3e4c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/8724cd239f8ef4c046f55a3b18b4d91cc7f3e4c5", - "reference": "8724cd239f8ef4c046f55a3b18b4d91cc7f3e4c5", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "phpdocumentor/reflection-docblock": "~2.0", - "sebastian/comparator": "~1.1" - }, - "require-dev": { - "phpspec/phpspec": "~2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Prophecy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "time": "2015-03-27 19:31:25" - }, - { - "name": "phpunit/php-code-coverage", - "version": "2.0.15", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "34cc484af1ca149188d0d9e91412191e398e0b67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/34cc484af1ca149188d0d9e91412191e398e0b67", - "reference": "34cc484af1ca149188d0d9e91412191e398e0b67", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "phpunit/php-file-iterator": "~1.3", - "phpunit/php-text-template": "~1.2", - "phpunit/php-token-stream": "~1.3", - "sebastian/environment": "~1.0", - "sebastian/version": "~1.0" - }, - "require-dev": { - "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "~4" - }, - "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.2.1", - "ext-xmlwriter": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "time": "2015-01-24 10:06:35" - }, - { - "name": "phpunit/php-file-iterator", - "version": "1.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb", - "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "File/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "time": "2013-10-10 15:34:57" - }, - { - "name": "phpunit/php-text-template", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", - "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "Text/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "time": "2014-01-30 17:20:04" - }, - { - "name": "phpunit/php-timer", - "version": "1.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c", - "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "PHP/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "time": "2013-08-02 07:42:54" - }, - { - "name": "phpunit/php-token-stream", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "db32c18eba00b121c145575fcbcd4d4d24e6db74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/db32c18eba00b121c145575fcbcd4d4d24e6db74", - "reference": "db32c18eba00b121c145575fcbcd4d4d24e6db74", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2015-01-17 09:51:32" - }, - { - "name": "phpunit/phpunit", - "version": "4.5.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "d6429b0995b24a2d9dfe5587ee3a7071c1161af4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d6429b0995b24a2d9dfe5587ee3a7071c1161af4", - "reference": "d6429b0995b24a2d9dfe5587ee3a7071c1161af4", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=5.3.3", - "phpspec/prophecy": "~1.3,>=1.3.1", - "phpunit/php-code-coverage": "~2.0,>=2.0.11", - "phpunit/php-file-iterator": "~1.3.2", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "~1.0.2", - "phpunit/phpunit-mock-objects": "~2.3", - "sebastian/comparator": "~1.1", - "sebastian/diff": "~1.1", - "sebastian/environment": "~1.2", - "sebastian/exporter": "~1.2", - "sebastian/global-state": "~1.0", - "sebastian/version": "~1.0", - "symfony/yaml": "~2.0" - }, - "suggest": { - "phpunit/php-invoker": "~1.1" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.5.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2015-03-29 09:24:05" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "2.3.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "74ffb87f527f24616f72460e54b595f508dccb5c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/74ffb87f527f24616f72460e54b595f508dccb5c", - "reference": "74ffb87f527f24616f72460e54b595f508dccb5c", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "~1.0,>=1.0.2", - "php": ">=5.3.3", - "phpunit/php-text-template": "~1.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2015-04-02 05:36:41" - }, - { - "name": "react/promise", - "version": "v2.2.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise.git", - "reference": "365fcee430dfa4ace1fbc75737ca60ceea7eeeef" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/365fcee430dfa4ace1fbc75737ca60ceea7eeeef", - "reference": "365fcee430dfa4ace1fbc75737ca60ceea7eeeef", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "psr-4": { - "React\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jan Sorgalla", - "email": "jsorgalla@googlemail.com" - } - ], - "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "time": "2014-12-30 13:32:42" - }, - { - "name": "sebastian/comparator", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "1dd8869519a225f7f2b9eb663e225298fade819e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dd8869519a225f7f2b9eb663e225298fade819e", - "reference": "1dd8869519a225f7f2b9eb663e225298fade819e", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "time": "2015-01-29 16:28:08" - }, - { - "name": "sebastian/diff", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3", - "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "http://www.github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ], - "time": "2015-02-22 15:13:53" - }, - { - "name": "sebastian/environment", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5a8c7d31914337b69923db26c4221b81ff5a196e", - "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "time": "2015-01-01 10:01:08" - }, - { - "name": "sebastian/exporter", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "84839970d05254c73cde183a721c7af13aede943" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/84839970d05254c73cde183a721c7af13aede943", - "reference": "84839970d05254c73cde183a721c7af13aede943", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~1.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "time": "2015-01-27 07:23:06" - }, - { - "name": "sebastian/global-state", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01", - "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "time": "2014-10-06 09:23:50" - }, - { - "name": "sebastian/recursion-context", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "3989662bbb30a29d20d9faa04a846af79b276252" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252", - "reference": "3989662bbb30a29d20d9faa04a846af79b276252", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2015-01-24 09:48:32" - }, - { - "name": "sebastian/version", - "version": "1.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/ab931d46cd0d3204a91e1b9a40c4bc13032b58e4", - "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4", - "shasum": "" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "time": "2015-02-24 06:35:25" - }, - { - "name": "symfony/browser-kit", - "version": "v2.6.6", - "target-dir": "Symfony/Component/BrowserKit", - "source": { - "type": "git", - "url": "https://github.com/symfony/BrowserKit.git", - "reference": "f21189b0eccbe56528515858ca1d5089a741692f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/BrowserKit/zipball/f21189b0eccbe56528515858ca1d5089a741692f", - "reference": "f21189b0eccbe56528515858ca1d5089a741692f", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/dom-crawler": "~2.0,>=2.0.5" - }, - "require-dev": { - "symfony/css-selector": "~2.0,>=2.0.5", - "symfony/phpunit-bridge": "~2.7", - "symfony/process": "~2.0,>=2.0.5" - }, - "suggest": { - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\BrowserKit\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony BrowserKit Component", - "homepage": "http://symfony.com", - "time": "2015-03-30 15:54:10" - }, - { - "name": "symfony/console", - "version": "v2.6.6", - "target-dir": "Symfony/Component/Console", - "source": { - "type": "git", - "url": "https://github.com/symfony/Console.git", - "reference": "5b91dc4ed5eb08553f57f6df04c4730a73992667" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Console/zipball/5b91dc4ed5eb08553f57f6df04c4730a73992667", - "reference": "5b91dc4ed5eb08553f57f6df04c4730a73992667", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/event-dispatcher": "~2.1", - "symfony/phpunit-bridge": "~2.7", - "symfony/process": "~2.1" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\Console\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony Console Component", - "homepage": "http://symfony.com", - "time": "2015-03-30 15:54:10" - }, - { - "name": "symfony/css-selector", - "version": "v2.6.6", - "target-dir": "Symfony/Component/CssSelector", - "source": { - "type": "git", - "url": "https://github.com/symfony/CssSelector.git", - "reference": "db2c48df9658423a8c168d89f7b971b73d3d74a4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/CssSelector/zipball/db2c48df9658423a8c168d89f7b971b73d3d74a4", - "reference": "db2c48df9658423a8c168d89f7b971b73d3d74a4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\CssSelector\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony CssSelector Component", - "homepage": "http://symfony.com", - "time": "2015-03-22 16:55:57" - }, - { - "name": "symfony/dom-crawler", - "version": "v2.6.6", - "target-dir": "Symfony/Component/DomCrawler", - "source": { - "type": "git", - "url": "https://github.com/symfony/DomCrawler.git", - "reference": "8897ebf39c7dfb752a5494fa301845a3fbb9e53d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/DomCrawler/zipball/8897ebf39c7dfb752a5494fa301845a3fbb9e53d", - "reference": "8897ebf39c7dfb752a5494fa301845a3fbb9e53d", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/css-selector": "~2.3", - "symfony/phpunit-bridge": "~2.7" - }, - "suggest": { - "symfony/css-selector": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\DomCrawler\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony DomCrawler Component", - "homepage": "http://symfony.com", - "time": "2015-03-30 15:54:10" - }, - { - "name": "symfony/event-dispatcher", - "version": "v2.6.6", - "target-dir": "Symfony/Component/EventDispatcher", - "source": { - "type": "git", - "url": "https://github.com/symfony/EventDispatcher.git", - "reference": "70f7c8478739ad21e3deef0d977b38c77f1fb284" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/70f7c8478739ad21e3deef0d977b38c77f1fb284", - "reference": "70f7c8478739ad21e3deef0d977b38c77f1fb284", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.0,>=2.0.5", - "symfony/dependency-injection": "~2.6", - "symfony/expression-language": "~2.6", - "symfony/phpunit-bridge": "~2.7", - "symfony/stopwatch": "~2.3" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "http://symfony.com", - "time": "2015-03-13 17:37:22" - }, - { - "name": "symfony/finder", - "version": "v2.6.6", - "target-dir": "Symfony/Component/Finder", - "source": { - "type": "git", - "url": "https://github.com/symfony/Finder.git", - "reference": "5dbe2e73a580618f5b4880fda93406eed25de251" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Finder/zipball/5dbe2e73a580618f5b4880fda93406eed25de251", - "reference": "5dbe2e73a580618f5b4880fda93406eed25de251", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\Finder\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony Finder Component", - "homepage": "http://symfony.com", - "time": "2015-03-30 15:54:10" - }, - { - "name": "symfony/yaml", - "version": "v2.6.6", - "target-dir": "Symfony/Component/Yaml", - "source": { - "type": "git", - "url": "https://github.com/symfony/Yaml.git", - "reference": "174f009ed36379a801109955fc5a71a49fe62dd4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Yaml/zipball/174f009ed36379a801109955fc5a71a49fe62dd4", - "reference": "174f009ed36379a801109955fc5a71a49fe62dd4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\Yaml\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony Yaml Component", - "homepage": "http://symfony.com", - "time": "2015-03-30 15:54:10" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": [], - "platform-dev": [] -} From ee6fc131302be5ea19a9fe79e7bec6aac41d8d78 Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 2 Jun 2015 10:46:03 +0900 Subject: [PATCH 250/265] gitignore - /bower_components/ - composer.phar - composer.lock --- .gitignore | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 23a7e7b6a..f7ac9d6a7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,22 @@ -config.user.inc.php .DS_Store Thumbs.db + +config.user.inc.php /files/ /build/ + +codeception.yml +/tests/_output/ +/tests/*.suite.yml + /node_modules/ +/bower_components/ /vendor/ +composer.phar +composer.lock + .idea *.sublime-workspace *.sublime-project .codeintel -codeception.yml -/tests/_output/ -/tests/*.suite.yml + From 29fc2138a0b7c05602ff7d20b386e5e74e836e53 Mon Sep 17 00:00:00 2001 From: UPGLE Date: Wed, 3 Jun 2015 14:36:52 +0900 Subject: [PATCH 251/265] =?UTF-8?q?dropZone=EC=9D=B4=20=EC=A0=95=EC=9D=98?= =?UTF-8?q?=EB=90=98=EC=A7=80=20=EC=95=8A=EC=95=84=20=EB=B0=9C=EC=83=9D?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/js/plugins/jquery.fileupload/js/main.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/common/js/plugins/jquery.fileupload/js/main.js b/common/js/plugins/jquery.fileupload/js/main.js index aa8f5f74a..15b034569 100644 --- a/common/js/plugins/jquery.fileupload/js/main.js +++ b/common/js/plugins/jquery.fileupload/js/main.js @@ -155,9 +155,10 @@ }); $(document).bind('dragover', function (e) { - var timeout = window.dropZoneTimeout; + var timeout = window.dropZoneTimeout, + dropZone = self.settings.dropZone; if (!timeout) { - self.settings.dropZone.addClass('in'); + dropZone.addClass('in'); } else { clearTimeout(timeout); } @@ -171,13 +172,13 @@ node = node.parentNode; } while (node != null); if (found) { - self.settings.dropZone.addClass('hover'); + dropZone.addClass('hover'); } else { - self.settings.dropZone.removeClass('hover'); + dropZone.removeClass('hover'); } window.dropZoneTimeout = setTimeout(function () { window.dropZoneTimeout = null; - self.settings.dropZone.removeClass('in hover'); + dropZone.removeClass('in hover'); }, 100); }); }, From a211f3d0d0141516cdd2fc88b6882bb7ec0fd1e2 Mon Sep 17 00:00:00 2001 From: UPGLE Date: Wed, 3 Jun 2015 14:39:36 +0900 Subject: [PATCH 252/265] =?UTF-8?q?=EC=BD=94=EB=94=A9=20=EC=BB=A8=EB=B2=A4?= =?UTF-8?q?=EC=85=98=20=EC=88=98=EC=A0=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/js/plugins/jquery.fileupload/js/main.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/common/js/plugins/jquery.fileupload/js/main.js b/common/js/plugins/jquery.fileupload/js/main.js index 15b034569..afa7377ab 100644 --- a/common/js/plugins/jquery.fileupload/js/main.js +++ b/common/js/plugins/jquery.fileupload/js/main.js @@ -156,9 +156,9 @@ $(document).bind('dragover', function (e) { var timeout = window.dropZoneTimeout, - dropZone = self.settings.dropZone; + dropZone = self.settings.dropZone; if (!timeout) { - dropZone.addClass('in'); + dropZone.addClass('in'); } else { clearTimeout(timeout); } @@ -172,13 +172,13 @@ node = node.parentNode; } while (node != null); if (found) { - dropZone.addClass('hover'); + dropZone.addClass('hover'); } else { - dropZone.removeClass('hover'); + dropZone.removeClass('hover'); } window.dropZoneTimeout = setTimeout(function () { window.dropZoneTimeout = null; - dropZone.removeClass('in hover'); + dropZone.removeClass('in hover'); }, 100); }); }, From 98cc32a2ce17b12a54013ac7c579a1492b4fcdac Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 3 Jun 2015 17:29:40 +0900 Subject: [PATCH 253/265] =?UTF-8?q?fix=20#1516=20=EA=B8=B0=EB=B3=B8=20?= =?UTF-8?q?=EC=A2=85=EB=A3=8C=EC=9D=BC=EC=9D=84=207=EC=9D=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/editor/components/poll_maker/tpl/popup.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/editor/components/poll_maker/tpl/popup.html b/modules/editor/components/poll_maker/tpl/popup.html index 05bfe1ed8..605235f0e 100644 --- a/modules/editor/components/poll_maker/tpl/popup.html +++ b/modules/editor/components/poll_maker/tpl/popup.html @@ -18,8 +18,8 @@
      - - + + From 82d607e14d0a2dcdb76a1dce151cfc57910af098 Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 9 Jun 2015 14:58:35 +0900 Subject: [PATCH 260/265] =?UTF-8?q?fix=20#1525=20'=EC=9E=91=EC=84=B1=20?= =?UTF-8?q?=EA=B8=80=20=EB=B3=B4=EA=B8=B0'=ED=8E=98=EC=9D=B4=EC=A7=80?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EC=A0=9C=EB=AA=A9=EC=97=90=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=EB=90=9C=20=ED=83=9C=EA=B7=B8=EA=B0=80=20=EB=8F=99?= =?UTF-8?q?=EC=9E=91=ED=95=98=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=EA=B3=A0?= =?UTF-8?q?=EC=B9=A8=20-=20MemberView:)dispMemberOwnDocument()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/member/member.view.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/member/member.view.php b/modules/member/member.view.php index b70722a67..eaf6f1ec6 100644 --- a/modules/member/member.view.php +++ b/modules/member/member.view.php @@ -343,6 +343,9 @@ class memberView extends member $oDocumentAdminView = getAdminView('document'); $oDocumentAdminView->dispDocumentAdminList(); + $oSecurity = new Security(); + $oSecurity->encodeHTML('document_list...title', 'search_target', 'search_keyword'); + Context::set('module_srl', $module_srl); $this->setTemplateFile('document_list'); } From 769ee1872af63813fa04ddee4b38ce29d5def4df Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 9 Jun 2015 15:04:18 +0900 Subject: [PATCH 261/265] =?UTF-8?q?fix=20#1522=20=ED=86=B5=ED=95=A9?= =?UTF-8?q?=EA=B2=80=EC=83=89=20=EC=84=A4=EC=A0=95=EC=9D=B4=20'=EC=84=A0?= =?UTF-8?q?=ED=83=9D=EB=90=9C=20=EB=8C=80=EC=83=81'=EC=9D=BC=20=EB=95=8C?= =?UTF-8?q?=EB=A7=8C=20=EB=8C=80=EC=83=81=20=EC=84=A0=ED=83=9D=20=EC=97=AC?= =?UTF-8?q?=EB=B6=80=EB=A5=BC=20=ED=99=95=EC=9D=B8=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/integration_search/integration_search.view.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/integration_search/integration_search.view.php b/modules/integration_search/integration_search.view.php index 950d33fe8..3686725d3 100644 --- a/modules/integration_search/integration_search.view.php +++ b/modules/integration_search/integration_search.view.php @@ -74,7 +74,7 @@ class integration_searchView extends integration_search else $module_srl_list = explode(',',$config->target_module_srl); - if(!count($module_srl_list)) return new Object(-1, ($logged_info->is_admin === 'Y') ? 'msg_admin_not_enabled' : 'msg_not_enabled'); + if($target === 'include' && !count($module_srl_list)) return new Object(-1, ($logged_info->is_admin === 'Y') ? 'msg_admin_not_enabled' : 'msg_not_enabled'); // Set a variable for search keyword $is_keyword = Context::get('is_keyword'); From 2b8954cb96473155614f085a1adb96f4e05d087d Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 9 Jun 2015 15:20:17 +0900 Subject: [PATCH 262/265] =?UTF-8?q?fix=20#1522=20=EA=B2=80=EC=83=89=20?= =?UTF-8?q?=EC=A0=9C=ED=95=9C=20=EB=A9=94=EC=8B=9C=EC=A7=80=EB=A5=BC=20mes?= =?UTF-8?q?sage=EB=AA=A8=EB=93=88=EC=9D=84=20=EC=9D=B4=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../integration_search/integration_search.view.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/integration_search/integration_search.view.php b/modules/integration_search/integration_search.view.php index 3686725d3..79d3c6933 100644 --- a/modules/integration_search/integration_search.view.php +++ b/modules/integration_search/integration_search.view.php @@ -74,7 +74,18 @@ class integration_searchView extends integration_search else $module_srl_list = explode(',',$config->target_module_srl); - if($target === 'include' && !count($module_srl_list)) return new Object(-1, ($logged_info->is_admin === 'Y') ? 'msg_admin_not_enabled' : 'msg_not_enabled'); + // https://github.com/xpressengine/xe-core/issues/1522 + // 검색 대상을 지정하지 않았을 때 검색 제한 + if($target === 'include' && !count($module_srl_list)) + { + $oMessageObject = ModuleHandler::getModuleInstance('message'); + $oMessageObject->setError(-1); + $oMessageObject->setMessage('msg_not_enabled'); + $oMessageObject->dispMessage(); + $this->setTemplatePath($oMessageObject->getTemplatePath()); + $this->setTemplateFile($oMessageObject->getTemplateFile()); + return; + } // Set a variable for search keyword $is_keyword = Context::get('is_keyword'); From 58d9cba7870d616ec5e85c8c8fae05f9ef5c4c3b Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 9 Jun 2015 16:41:56 +0900 Subject: [PATCH 263/265] update version to 1.8.3 --- config/config.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.inc.php b/config/config.inc.php index 76789d09c..155b9f2b2 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -29,7 +29,7 @@ define('__ZBXE__', __XE__); /** * Display XE's full version. */ -define('__XE_VERSION__', '1.8.2'); +define('__XE_VERSION__', '1.8.3'); define('__XE_VERSION_ALPHA__', (stripos(__XE_VERSION__, 'alpha') !== false)); define('__XE_VERSION_BETA__', (stripos(__XE_VERSION__, 'beta') !== false)); define('__XE_VERSION_RC__', (stripos(__XE_VERSION__, 'rc') !== false)); From 8c32ebaae96db31bbd47b54b10f105053ca21472 Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 9 Jun 2015 16:58:59 +0900 Subject: [PATCH 264/265] MINIFY --- common/js/plugins/jquery.fileupload/js/main.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/js/plugins/jquery.fileupload/js/main.min.js b/common/js/plugins/jquery.fileupload/js/main.min.js index 6f34bfd2e..0465ce74d 100644 --- a/common/js/plugins/jquery.fileupload/js/main.min.js +++ b/common/js/plugins/jquery.fileupload/js/main.min.js @@ -1 +1 @@ -!function(a){"use strict";var b={autoUpload:!0,dataType:"json",sequentialUploads:!0,dropZone:".xefu-dropzone",fileList:".xefu-list",controll:".xefu-controll",filelist:".xefu-list-files ul",filelistImages:".xefu-list-images ul",progressbar:".xefu-progressbar",progressbarGraph:".xefu-progressbar div",progressStatus:".xefu-progress-status",progressPercent:".xefu-progress-percent",actSelectedInsertContent:".xefu-act-link-selected",actSelectedDeleteFile:".xefu-act-delete-selected",actDeleteFile:".xefu-act-delete",tmplXeUploaderFileitem:'
    27. {{source_filename}}{{disp_file_size}} 선택
    28. ',tmplXeUploaderFileitemImage:'
    29. {{source_filename}}{{disp_file_size}}
    30. '},c=["fileList","actSelectedInsertContent","actSelectedDeleteFile","actDeleteFile","controll","dropZone","filelist","filelistImages","progressbar","progressbarGraph","progressPercent","progressStatus"],d=xe.createApp("XeUploader",{files:{},selected_files:{},settings:{},last_selected_file:null,editor_sequence:null,init:function(){},createInstance:function(d,e){var f=this,g=this.$container=d,h=g.data();this.editor_sequence=h.editorSequence;var i={url:request_uri.setQuery("module","file").setQuery("act","procFileUpload"),formData:{editor_sequence:h.editorSequence,upload_target_srl:h.uploadTargetSrl,mid:window.current_mid},dropZone:g,add:function(b,c){var d=jQuery.Deferred();a.each(c.files,function(a,b){return f.settings.maxFileSize<=b.size?(d.reject(),alert(window.xe.msg_exceeds_limit_size),!1):void d.resolve()}),d.done(function(){c.submit()})},done:function(a,b){var c=b.response().result;c&&(jQuery.isPlainObject(c)||(c=jQuery.parseJSON(c)),c&&(0==c.error||alert(c.message)))},stop:function(){f.loadFilelist()},start:function(){f.settings.progressbarGraph.width(0),f.settings.progressStatus.show(),f.settings.progressbar.show()},progressall:function(a,b){var c=parseInt(b.loaded/b.total*100,10);f.settings.progressbarGraph.width(c+"%"),f.settings.progressPercent.text(c+"%"),c>=100&&(f.settings.progressbar.delay(3e3).slideUp(),f.settings.progressStatus.delay(3e3).slideUp())}};this.settings=a.extend({},b,i,e||{}),a.each(c,function(a,b){"string"==typeof f.settings[b]&&(f.settings[b]=g.find(f.settings[b]))});g.fileupload(this.settings).prop("disabled",!a.support.fileInput).parent().addClass(a.support.fileInput?void 0:"disabled");g.data("xefu-instance",this),this.loadFilelist(),this.settings.actSelectedInsertContent.on("click",function(){f.insertToContent()}),this.settings.actSelectedDeleteFile.on("click",function(){f.deleteFile()});var j=this.settings.fileList.finderSelect({children:"li"});this.settings.fileList.on("mousedown","img",function(a){a.preventDefault()}),j.finderSelect("addHook","highlight:after",function(a){a.find("input").prop("checked",!0);var b=f.settings.fileList.find("input:checked");f.selected_files=b}),j.finderSelect("addHook","unHighlight:after",function(a){a.find("input").prop("checked",!1);var b=f.settings.fileList.find("input:checked");f.selected_files=b}),j.on("click",":checkbox",function(a){a.preventDefault()}),a(document).bind("dragover",function(a){var b=window.dropZoneTimeout;b?clearTimeout(b):f.settings.dropZone.addClass("in");var c=!1,d=a.target;do{if(d===dropZone[0]){c=!0;break}d=d.parentNode}while(null!=d);c?f.settings.dropZone.addClass("hover"):f.settings.dropZone.removeClass("hover"),window.dropZoneTimeout=setTimeout(function(){window.dropZoneTimeout=null,f.settings.dropZone.removeClass("in hover")},100)})},done:function(){},selectAllFiles:function(){},selectImageFiles:function(){},selectNonImageFiles:function(){},unselectAllFiles:function(){},unselectImageFiles:function(){},unselectNonImageFiles:function(){},insertToContent:function(){var b=this,c="";a.each(this.selected_files,function(d,e){var f=a(e).data().fileSrl,g=b.files[f];g&&(/\.(jpe?g|png|gif)$/i.test(g.download_url)?(c+=''+g.source_filename+'',c+="\r\n


      \r\n"):c+=''+g.source_filename+"\n")}),_getCkeInstance(this.editor_sequence).insertHtml(c,"unfiltered_html")},deleteFile:function(b){var c=this,d=[];b?d.push(b):a.each(c.selected_files,function(b,c){if(c){var e=a(c).data().fileSrl;d.push(e)}}),d=d.join(","),exec_json("file.procFileDelete",{file_srls:d,editor_sequence:this.editor_sequence},function(){d=d.split(","),a.each(d,function(a,b){c.settings.fileList.find("ul").find("li[data-file-srl="+b+"]").remove()}),c.loadFilelist()})},loadFilelist:function(){var b=this,c=this.$container.data(),d={};d.mid=window.current_mid,d.editor_sequence=b.$container.data("editor-sequence"),a.exec_json("file.getFileList",d,function(d){c.uploadTargetSrl=d.upload_target_srl,editorRelKeys[b.$container.data("editor-sequence")].primary.value=d.upload_target_srl,c.uploadTargetSrl=d.uploadTargetSrl,a(".allowed_filetypes").text(d.allowed_filetypes),a(".allowed_filesize").text(d.allowed_filesize),a(".allowed_attach_size").text(d.allowed_attach_size),a(".attached_size").text(d.attached_size),a(".file_count").text(d.files.length);var e=b.settings.tmplXeUploaderFileitem,f=b.settings.tmplXeUploaderFileitemImage,g=Handlebars.compile(e),h=Handlebars.compile(f),i=[],j=[];return d.files.length?(a.each(d.files,function(a,c){b.files[c.file_srl]||(b.files[c.file_srl]=c,/\.(jpe?g|png|gif)$/i.test(c.source_filename)?i.push(h(c)):j.push(g(c)))}),b.settings.filelistImages.append(i.join("")),b.settings.filelist.append(j.join("")),b.settings.controll.show(),void b.settings.fileList.show()):(b.settings.fileList.hide(),void b.settings.controll.hide())})}});a.fn.xeUploader=function(a){var b=new d;return b&&(xe.registerApp(b),b.createInstance(this.eq(0),a)),b}}(jQuery); \ No newline at end of file +!function(a){"use strict";var b={autoUpload:!0,dataType:"json",sequentialUploads:!0,dropZone:".xefu-dropzone",fileList:".xefu-list",controll:".xefu-controll",filelist:".xefu-list-files ul",filelistImages:".xefu-list-images ul",progressbar:".xefu-progressbar",progressbarGraph:".xefu-progressbar div",progressStatus:".xefu-progress-status",progressPercent:".xefu-progress-percent",actSelectedInsertContent:".xefu-act-link-selected",actSelectedDeleteFile:".xefu-act-delete-selected",actDeleteFile:".xefu-act-delete",tmplXeUploaderFileitem:'
    31. {{source_filename}}{{disp_file_size}} 선택
    32. ',tmplXeUploaderFileitemImage:'
    33. {{source_filename}}{{disp_file_size}}
    34. '},c=["fileList","actSelectedInsertContent","actSelectedDeleteFile","actDeleteFile","controll","dropZone","filelist","filelistImages","progressbar","progressbarGraph","progressPercent","progressStatus"],d=xe.createApp("XeUploader",{files:{},selected_files:{},settings:{},last_selected_file:null,editor_sequence:null,init:function(){},deactivate:function(){console.log(this)},createInstance:function(d,e){var f=this,g=this.$container=d,h=g.data();this.editor_sequence=h.editorSequence;var i={url:request_uri.setQuery("module","file").setQuery("act","procFileUpload"),formData:{editor_sequence:h.editorSequence,upload_target_srl:h.uploadTargetSrl,mid:window.current_mid},dropZone:g,add:function(b,c){var d=jQuery.Deferred();a.each(c.files,function(a,b){return f.settings.maxFileSize<=b.size?(d.reject(),alert(window.xe.msg_exceeds_limit_size),!1):void d.resolve()}),d.done(function(){c.submit()})},done:function(a,b){var c=b.response().result;c&&(jQuery.isPlainObject(c)||(c=jQuery.parseJSON(c)),c&&(0==c.error||alert(c.message)))},stop:function(){f.loadFilelist()},start:function(){f.settings.progressbarGraph.width(0),f.settings.progressStatus.show(),f.settings.progressbar.show()},progressall:function(a,b){var c=parseInt(b.loaded/b.total*100,10);f.settings.progressbarGraph.width(c+"%"),f.settings.progressPercent.text(c+"%"),c>=100&&(f.settings.progressbar.delay(3e3).slideUp(),f.settings.progressStatus.delay(3e3).slideUp())}};this.settings=a.extend({},b,i,e||{}),a.each(c,function(a,b){"string"==typeof f.settings[b]&&(f.settings[b]=g.find(f.settings[b]))});g.fileupload(this.settings).prop("disabled",!a.support.fileInput).parent().addClass(a.support.fileInput?void 0:"disabled");g.data("xefu-instance",this),this.loadFilelist(),this.settings.actSelectedInsertContent.on("click",function(){f.insertToContent()}),this.settings.actSelectedDeleteFile.on("click",function(){f.deleteFile()});var j=this.settings.fileList.finderSelect({children:"li"});this.settings.fileList.on("mousedown","img",function(a){a.preventDefault()}),j.finderSelect("addHook","highlight:after",function(a){a.find("input").prop("checked",!0);var b=f.settings.fileList.find("input:checked");f.selected_files=b}),j.finderSelect("addHook","unHighlight:after",function(a){a.find("input").prop("checked",!1);var b=f.settings.fileList.find("input:checked");f.selected_files=b}),j.on("click",":checkbox",function(a){a.preventDefault()}),a(document).bind("dragover",function(a){var b=window.dropZoneTimeout,c=f.settings.dropZone;b?clearTimeout(b):c.addClass("in");var d=!1,e=a.target;do{if(e===c[0]){d=!0;break}e=e.parentNode}while(null!=e);d?c.addClass("hover"):c.removeClass("hover"),window.dropZoneTimeout=setTimeout(function(){window.dropZoneTimeout=null,c.removeClass("in hover")},100)})},done:function(){},selectAllFiles:function(){},selectImageFiles:function(){},selectNonImageFiles:function(){},unselectAllFiles:function(){},unselectImageFiles:function(){},unselectNonImageFiles:function(){},insertToContent:function(){var b=this,c="";a.each(this.selected_files,function(d,e){var f=a(e).data().fileSrl,g=b.files[f];g&&(/\.(jpe?g|png|gif)$/i.test(g.download_url)?(c+=''+g.source_filename+'',c+="\r\n


      \r\n"):c+=''+g.source_filename+"\n")}),_getCkeInstance(this.editor_sequence).insertHtml(c,"unfiltered_html")},deleteFile:function(b){var c=this,d=[];b?d.push(b):a.each(c.selected_files,function(b,c){if(c){var e=a(c).data().fileSrl;d.push(e)}}),d=d.join(","),exec_json("file.procFileDelete",{file_srls:d,editor_sequence:this.editor_sequence},function(){d=d.split(","),a.each(d,function(a,b){c.settings.fileList.find("ul").find("li[data-file-srl="+b+"]").remove()}),c.loadFilelist()})},loadFilelist:function(){var b=this,c=this.$container.data(),d={};d.mid=window.current_mid,d.editor_sequence=b.$container.data("editor-sequence"),a.exec_json("file.getFileList",d,function(d){c.uploadTargetSrl=d.upload_target_srl,editorRelKeys[b.$container.data("editor-sequence")].primary.value=d.upload_target_srl,c.uploadTargetSrl=d.uploadTargetSrl,a(".allowed_filetypes").text(d.allowed_filetypes),a(".allowed_filesize").text(d.allowed_filesize),a(".allowed_attach_size").text(d.allowed_attach_size),a(".attached_size").text(d.attached_size),a(".file_count").text(d.files.length);var e=b.settings.tmplXeUploaderFileitem,f=b.settings.tmplXeUploaderFileitemImage,g=Handlebars.compile(e),h=Handlebars.compile(f),i=[],j=[];return d.files.length?(a.each(d.files,function(a,c){b.files[c.file_srl]||(b.files[c.file_srl]=c,/\.(jpe?g|png|gif)$/i.test(c.source_filename)?i.push(h(c)):j.push(g(c)))}),b.settings.filelistImages.append(i.join("")),b.settings.filelist.append(j.join("")),b.settings.controll.show(),void b.settings.fileList.show()):(b.settings.fileList.hide(),void b.settings.controll.hide())})}});a.fn.xeUploader=function(a){var b=new d;return b&&(xe.registerApp(b),b.createInstance(this.eq(0),a)),b},xe.unregisterApp()}(jQuery); \ No newline at end of file From e49f1b1cbb1da30b83261125c3d7dbe574ab0d35 Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 10 Jun 2015 13:54:57 +0900 Subject: [PATCH 265/265] =?UTF-8?q?composer.json=EC=97=90=20PHP=20?= =?UTF-8?q?=EB=B2=84=EC=A0=84=20=EB=AA=85=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- composer.json | 1 + 1 file changed, 1 insertion(+) diff --git a/composer.json b/composer.json index db7528358..94cc491b3 100644 --- a/composer.json +++ b/composer.json @@ -8,6 +8,7 @@ } ], "require": { + "php": ">=5.4.0" }, "require-dev": { "codeception/codeception": "~2.0",
      +
      +

      Beautiful iconic font & CSS toolkit

      +

      + XEIcon은 웹사이트 제작에 최적화된 백터 그래픽 아이콘 툴킷입니다.
      + 한국 웹서비스 문화에 적합한 디자인과 카테고리를 고려하여 제작되었습니다.
      + XEIcon으로 아름답고 직관적인 웹페이지를 만들어보세요!
      +

      +
      +
      +

      FEATURE

      +
        +
      • +
        사이트 제목 바꾸기
        +

        한개의 폰트, 680개의 아이콘

        +

        웹 콘텐츠의 목적에 맞는 아이콘을 다양한 구성에서 찾아볼 수 있습니다.
        라이브러리에서 필요한 아이콘을 찾아보세요!

        +
      • +
      • +
        메뉴 구조 구성하기
        +

        호환성

        +

        XEIcon은 자바스크립트 없이 구현됩니다.
        또한 다양한 브라우저에서도 동일한 뷰로 웹 페이지를 노출합니다.

        +
      • +
      • +
        레이아웃 디자인 바꾸기
        +

        최적화

        +

        XpressEngine 뿐 아니라, 다양한 프레임워크에서 동일하게 구현됩니다. 다양한 프레임워크에서 자유롭게 이용해 보세요!

        +
      • +
      • +
        초기화면 바꾸기
        +

        확장성

        +

        백터 아이콘으로 만들어진 XEIcon은 어떤 크기로도 확장이 가능하며 높은 해상도의 화면에서도 선명한 형태를 유지합니다.

        +
      • +
      • +
        기능과 디자인 추가하기
        +

        자유로운 변형

        +

        CSS를 통해 아이콘의 색상, 크기, 그림자 등을 손쉽게 변형할 수 있습니다. LESS, SASS로 추가된 기능으로 더 넓어진 활용범위를 확인하세요!

        +
      • +
      • +
        레이아웃 꾸미기
        +

        오픈소스

        +

        XEIcon은 OFL 라이선스를 따르는 오픈소스입니다.
        모든 사용자에게 무료로 제공됩니다. 라이선스를 확인해 보세요!

        +
      • +
      +
      +
      +
      +

      GET STARTED

      +

      XEIcon 사용과 설치 방법은 매우 간단합니다. 자세한 사용방법을 XEIcon 공식사이트에서 확인해보세요!

      +
        +
      • +

        최신버전 다운로드

        +

        가장 최신 버전 구성을 압축파일로
        다운로드 받아볼 수 있습니다.

        + Download +
      • +
      • +

        Git 저장소 복제

        +

        Github에서 로컬 저장소로 복제하여 사용할 수 있습니다.

        + check out +
      • +
      • +

        CDN by jsDelivr

        +

        한줄의 코드만 작성하면 다운로드 없이 XEIcon을 사용할 수 있습니다.

        + check out +
      • +
      • +

        Install with Bower

        +

        Bower 서비스에서 XEIcon 패키지를 바로 설치할 수 있습니다.

        + check out +
      • +
      +
      +
      +
      +

      CONTRIBUTION

      +

      새로운 아이콘 요청이나 XEICON에 대한 제안이 있다면 자유롭게 이야기해주세요!
      앞으로의 이야기들을 함께 만들어갈 third party 참여 또한 환영합니다.

      + github +
      +