Commit 338abc5c authored by platyhouse's avatar platyhouse

- encrypted

parent fdaaac84
......@@ -32,6 +32,7 @@ namespace platyFramework;
<?= $form->getInput("테마명", "themeName"); ?>
<?= $form->getInput("name", "name"); ?>
<?= $form->getInput("parentName", "parentName"); ?>
<?= $form->getSelect("position", "position", [
"초기화" => "init",
"상단" => "header",
......@@ -43,10 +44,15 @@ namespace platyFramework;
<?= $form->getInput("노출순서", "priority"); ?>
<?= $form->getSelect("classType", "classType",
[
"Activity" => "Activity",
"Fragment" => "Fragment",
"메뉴바 A (ConstructTitleBarA)" => "ConstructTitleBarA",
"메뉴바 B (ConstructTitleBarB)" => "ConstructTitleBarB",
"페이징 탭 A (ConstructPagerA)" => "ConstructPagerA",
"페이징 탭 A (ConstructPagerB)" => "ConstructPagerB",
"-----1" => "-----------------------",
"목록 A (ConstructItemsA)" => "ConstructItemsA",
"상품목록 A (ConstructShopItemsA)" => "ConstructShopItemsA",
"-----2" => "-----------------------",
"에드몹 배너 A (ConstructAdmobBannerA)" => "ConstructAdmobBannerA",
"-----3" => "-----------------------",
......@@ -56,6 +62,11 @@ namespace platyFramework;
"글 댓글 내용 A (ConstructBoardCommentsA)" => "ConstructBoardCommentsA",
"글 상태 바 A (ConstructBoardStatusBarA)" => "ConstructBoardStatusBarA",
"글 댓글 쓰기 (ConstructBoardCommentWriteA)" => "ConstructBoardCommentWriteA",
"-----3.1" => "-----------------------",
"상품Item 읽기 초기화 (ConstructShopItemInitA)" => "ConstructShopItemInitA",
"상품Item 본문 A (ConstructShopItemA)" => "ConstructShopItemA",
"상품Item 주문 A (ConstructShopOrderA)" => "ConstructShopOrderA",
"-----4" => "-----------------------",
"유튜브 재생 본문 A (ConstructYoutubeBoardItemA)" => "ConstructYoutubeBoardItemA",
"유튜브 컨르롤러 A (ConstructYoutubeControllerA)" => "ConstructYoutubeControllerA",
......@@ -68,6 +79,7 @@ namespace platyFramework;
"검색바 노출 (ConstructSearchBarA)" => "ConstructSearchBarA",
"-----6" => "-----------------------",
"설정 메뉴 (ConstructSettingA)" => "ConstructSettingA",
"설정 메뉴 (쇼핑) (ConstructSettingShopA)" => "ConstructSettingShopA",
"회원 로그인 (ConstructSignInA)" => "ConstructSignInA",
"회원 정보 수정 (ConstructUserProfileEditA)" => "ConstructUserProfileEditA",
"-----7" => "-----------------------",
......
......@@ -3,7 +3,7 @@
<div class="pull-right hidden-xs">
<b>Version</b> 1.0.0
</div>
<strong>Copyright &copy; 2018.</strong> All rights
<strong>Copyright &copy; 2016 ~ 2021</strong> Makerslean All rights
reserved.
</footer>
......
<?php
namespace platyFramework;
/** @var ptyFormModel $form */
/** @var ptyItemModel $item */
/** @var string $postUrl */
/** @var string $title */
/** @var string $title_desc */
?>
<script src="<?= $this->request->moduleUrl ?>/ptyadmin/resources/AdminLTE-2.4.5/bower_components/ckeditor/ckeditor.js"></script>
<!--<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>-->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.32/angular.min.js"></script>
<div ng-app="myApp" ng-controller="MyCtrl">
<section class="content-header">
<h1>
<?= $title ?>
<small><?= $title_desc ?></small>
</h1>
<ol class="breadcrumb">
<li><a href="<?= $this->request->appUrl ?>"><i class="fa fa-dashboard"></i> Home</a>
</li>
</ol>
</section>
<?php // ptyDebug($item);
?>
<section class="content">
<div class="row">
<div class="col-md-12">
<!-- Horizontal Form -->
<div class="box box-info">
<form class="form-horizontal" method="post" action="<?= $postUrl ?>" enctype="multipart/form-data">
<input type="hidden" name="id" value="<?= $item->id ?>">
<div class="box-body">
<div class='col-md-12'>
<? if ($this->request->functionName == "edit") { ?>
<?= $form->getDateTime("등록일", "regDateTime", "required placeholder='2018-01-01 00:00:00'"); ?>
<? } ?>
<?= $form->getSelect("노출여부", "enabled", array("활성화" => "1", "비활성화" => 0)); ?>
<?= $form->getSelect("배너 종류", "type", ptybannerItemModel::$_goodsShareType, "ng-model='ptybannerType' ng-dropdown placeholder='배너 종류를 선택하세요'") ?>
<div class="form-group" ng-if="ptybannerType == 'appQuitPopupBanner' || ptybannerType == 'shopHomePopupBanner'">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-10">
<p class=""><b>팝업 배너 예시</b><br>
<img width=150 src="/modules/ptybanner/resources/sample_appQuitPopupBanner.jpeg">
이미지 크기 : 4:6 의 비율, 400x600, 800x1200 (권장)
</p>
</div>
</div>
<div class="form-group" ng-if="ptybannerType == 'shopHomeTopBanner' ">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-10">
<p class=""><b>배너 예시</b><br>
<img width=150 src="/modules/ptybanner/resources/sample_1080x432.jpg">
이미지 크기 : 6:2.4 의 비율, 540x216, 1080x432 (권장)
</p>
</div>
</div>
<?= $form->getInput("제목", "title"); ?>
<?= $form->getFile("이미지", "imageUrl", 0, " onchange='checkUpload(this, 1);'", "모든 파일 첨부는 최대 " . ini_get("post_max_size") . " 까지 가능합니다"); ?>
<?= $form->getInput("동작설정", "action", "", "https:// 또는 shopItemId://1234 shopProductId://1234 "); ?>
<?= $form->getTextEdit("메모", "note"); ?>
</div>
<div class="box-footer">
<button type="submit" class="btn btn-primary">저장</button>
<button type="button" class="btn btn-default ptyGoBack pull-right">취소</button>
</div>
</form>
</div>
</div>
</div>
</section>
</div>
<script>
var myApp = angular.module('myApp', []);
function MyCtrl($scope) {
$scope.ptybannerType = '<?=$form->items->type?>';
// console.log($scope.ptybannerType);
$scope.changeme = function () {
alert('here');
}
}
</script>
\ No newline at end of file
......@@ -78,6 +78,22 @@ namespace platyFramework;
<? } ?>
</div>
</div>
<div class="box box-info">
<div class="box-header with-border">
<h3 class="box-title">이미지 배경화면 설정 기능</h3>
</div>
<div class="box-body">
<div class='col-md-12'>
<?= $form->getInput("문구", "wallpaperTitle", "", "'배경으로 지정' 등의 문구를 입력하세요"); ?>
<?= $form->getFile("배경 이미지", "wallpaperImageUrl", "0", "", ""); ?>
</div>
</div>
<div class="box-footer">
<button type="submit" class="btn btn-primary">저장</button>
<button type="button" class="btn btn-default ptyGoBack pull-right">취소</button>
</div>
</div>
<div class="box box-info">
<div class="box-header with-border">
<h3 class="box-title">잠금화면 내용</h3>
......@@ -88,6 +104,7 @@ namespace platyFramework;
<?= $form->getFile("배경 이미지", "backgroundImageUrl", "0", "", "제목 영역에 배경으로 DIM 처리 됩니다"); ?>
</div>
</div>
</div>
</form>
</div>
......
......@@ -125,6 +125,30 @@ namespace platyFramework;
</div>
</div>
<? } ?>
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">메인 메뉴 설정</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i>
</button>
</div>
</div>
<div class="box-body pad">
<div class='form-group'>
<label class="col-sm-2 control-label">앱 종료 > 팝업 배너 설정</label>
<div class='col-sm-10'>
<?= $form->getSelect("", "quitBannerType", array("에드몹 광고 노출형" => "admobBanner", "자체 광고 노출형 (광고가 없으면 단순 종료 팝업이 뜨게 됩니다)" => "appBanner", "단순 종료 안내 팝업" => "defaultPopup"), "", ""); ?>
<button type=button class="btn btn-primary" onclick="location.href='<?= $this->request->appUrl ?>/ptyadvertise/config/'">에드몹 광고 ID 설정하기</button>
<button type=button class="btn btn-primary" onclick="location.href='<?= $this->request->appUrl ?>/ptybanner/items/?sec_type=appQuitPopupBanner'">자체 광고 노출 배너 설정하기</button>
</div>
</div>
</div>
<div class="box-footer">
<button type="button" class="btn btn-default ptyGoBack pull-right">취소</button>
<button type="submit" class="btn btn-info pull-left">저장</button>
</div>
</div>
</section>
</form>
<script src="<?= $this->request->moduleUrl ?>/ptyadmin/resources/AdminLTE-2.4.5/bower_components/ckeditor/ckeditor.js"></script>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
/*
할인중독
*/
/* 체크박스 이미지 */
.chkbx input+*{background-image:url(/modules/ptyshop/resources/check_n.svg); background-repeat: no-repeat;}
.chkbx input:checked+*{background-image: url(/modules/ptyshop/resources/check_p.svg);}
/*
옵션선택 웹뷰 페이지
*/
/* 장바구니/구매하기 버튼 컬러 */
#purchase cart .btns ul li a{border:1px solid #f60e00;}
#purchase cart .btns ul li.oncart a{color: #f60e00;}
#purchase cart .btns ul li.onorder a{background-color: #f60e00;}
/* 총금액 컬러 */
#purchase cart .result .total span{color:#f60e00;}
/* 옵션 */
.container-option .btn_area .cart_btn .btn{border:1px solid #f60e00; color:#f60e00;}
.container-option .btn_area .pay_btn .btn{border:1px solid #f60e00; background-color: #f60e00;}
.container-option .result .total{color: #f60e00;}
.container-option .result .total span{color: #f60e00;}
/*
주문작성폼 페이지
*/
#app.order .order_title:before{background-color: #f60e00;}
#app.order .order_form.order_result .order_total td:before{color:#f60e00;}
#app.order .order_form.order_result .order_total td input{color:#f60e00;}
#app.order .order_submit .onpay{background-color: #f60e00;}
#app.order .order_form.tab.set #addr_form .addr_form_area .btn a {background-color:#f60e00;}
/* 결제완료 */
.complete_payment .button_area .buttom_order {border:1px solid #f60e00; color:#f60e00;}
/* 장바구니 */
.checkbox input[type="checkbox"] + label:before {background: url(/modules/ptyshop/resources/checkbox_n.svg) no-repeat;}
.checkbox input[type="checkbox"]:checked + label:before {background: url(/modules/ptyshop/resources/checkbox_p.svg) no-repeat;}
.my_cart .sold_out .option .name {color:#ff0000;}
.my_cart .total_price .prearranged strong,
.my_cart .total_price .prearranged span {color:#f60e00;}
.my_cart .button_area .buttom_order {background-color:#f60e00; border:1px solid #f60e00;}
.my_cart .total_price .result .total,
.my_cart .total_price .result .total span {color:#f60e00;}
/* 주문/결제 */
.my_order .date_search .button_list li.active button {border:1px solid #f60e00; color:#f60e00;}
.my_order .list .order_product .state .text {color:#f60e00;}
.my_order .complete .order_product .product .product_info .calc .price_goods .price strong,
.my_order .complete .order_product .product .product_info .calc .price_goods .price span {color:#f60e00;}
.my_order .order_info .individual .expire_text {color:#f60e00;}
.my_order .delivery_info .delivery_list .point_color {color:#f60e00;}
.layer_notification .layer_button_area .button.confirm {color:#f60e00;}
.layer_notification .notification_inner.customer .layer_button_area .button {background-color:#f60e00;}
/* 선물하기 */
.container-option .btn_area .gift_btn .btn {border: 1px solid #f60e00;color: #f60e00;}
.container-option .btns.gift .gift_btn .btn {background: #f60e00;}
/*.container-option .btn_area .gift_btn.new .btn:after {*/
/* background: url(/static/img/sale09/icon/tag_pd_gift.svg) no-repeat;*/
/*}*/
.container-option .btn_area .gift_btn.new .btn:before {
background: url(/static/img/sale09/icon/ico_pd_gift.svg) no-repeat;
}
.container-option .btns.gift .gift_btn .btn:before{
background: url(/static/img/sale09/icon/ico_pd_gift_p.svg) no-repeat;
}
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" id="check_n" width="22" height="22" viewBox="0 0 22 22">
<defs>
<style>
.cls-1,.cls-2,.cls-4{fill:none}.cls-1,.cls-2{stroke:#cdcdcd}.cls-2{stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6px}.cls-3{stroke:none}
</style>
</defs>
<g id="check_n-2" data-name="check_n">
<g id="타원_1" class="cls-1" data-name="타원 1">
<circle cx="11" cy="11" r="11" class="cls-3"/>
<circle cx="11" cy="11" r="10.5" class="cls-4"/>
</g>
<path id="패스_1" d="M-129.764 3557.034l4 3.823 6-5.621" class="cls-2" data-name="패스 1" transform="translate(136.092 -3546.107)"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" id="check_p" width="22" height="22" viewBox="0 0 22 22">
<defs>
<style>
.cls-1{fill:#f60e00;stroke:#f60e00}.cls-2,.cls-4{fill:none}.cls-2{stroke:#fff;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6px}.cls-3{stroke:none}
</style>
</defs>
<g id="타원_1" class="cls-1" data-name="타원 1">
<circle cx="11" cy="11" r="11" class="cls-3"/>
<circle cx="11" cy="11" r="10.5" class="cls-4"/>
</g>
<path id="패스_1" d="M-129.764 3557.034l4 3.823 6-5.621" class="cls-2" data-name="패스 1" transform="translate(136.092 -3546.107)"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<defs>
<style>
.cls-1{fill:#fff;stroke:#cdcdcd}.cls-2{stroke:none}.cls-3{fill:none}
</style>
</defs>
<g id="checkbox__n" transform="translate(-20 -104)">
<g id="사각형_697" class="cls-1" data-name="사각형 697" transform="translate(20 104)">
<rect width="24" height="24" class="cls-2" rx="3"/>
<rect width="23" height="23" x=".5" y=".5" class="cls-3" rx="2.5"/>
</g>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<defs>
<style>
.cls-1{fill:#f60e00}.cls-2{fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6px}
</style>
</defs>
<g id="checkbox_p" transform="translate(-20 -106)">
<rect id="bg" width="24" height="24" class="cls-1" rx="3" transform="translate(20 106)"/>
<g id="check_n" transform="translate(18.522 104.211)">
<path id="패스_1" d="M-129.764 3557.361l4.725 4.518 7.093-6.644" class="cls-2" data-name="패스 1" transform="translate(137.242 -3544.447)"/>
</g>
</g>
</svg>
This diff is collapsed.
function $number(num) {
return num.toFixed(0).replace(/(\d)(?=(\d{3})+$)/g, "$1,");
}
function numberMaxLength(e){
if(e.value.length > e.maxLength){
e.value = e.value.slice(0, e.maxLength);
}
}
function isPhoneNumber(_mNumber) {
var mNumber = _mNumber && _mNumber.split('-').join('');
var regPhone = /^((01[1|6|7|8|9])[1-9]+[0-9]{6,7})|(010[1-9][0-9]{7})$/;
return regPhone.test(mNumber);
}
$(".numberOnly").on('keyup', function () {
var _this = $(this);
_this.val(_this.val().replace(/[^0-9]/g,""));
});
function dateCheck(obj) {
if( !obj.start || !obj.end ) {
// 12자리 맞춤 년월일시
console.log( '시작일 혹은 종료일 누락: ', obj.start, " / ", obj.end);
return false;
}
var startdate = obj.start,
enddate = obj.end;
var now = new Date();
var year = now.getFullYear().toString(),
month = parseInt(now.getMonth()+1).toString(),
date = now.getDate().toString(),
hour = now.getHours().toString(),
min = now.getMinutes().toString(),
sec = now.getSeconds().toString(),
today;
month = month.length < 2 ? "0"+month : month;
date = date.length < 2 ? "0"+date : date;
hour = hour.length < 2 ? "0"+hour : hour;
min = min.length < 2 ? "0"+min : min;
sec = sec.length < 2 ? "0"+sec : sec;
today = year + month + date + hour + min + sec;
return (eval(today) >= eval(startdate)) && ((eval(today) <= eval(enddate)))
}
\ No newline at end of file
/**
* Common Library
* CL_PAY Common Lib PAY
*/
;(function (root, factory, undefined) {
'use strict';
if (typeof define === 'function' && define.amd) {
// AMD
define(['jquery'], function (jquery) {
return (root.CL_PAY = factory(jquery));
});
} else if (typeof exports === 'object' && module.exports) {
// CommonJS
module.exports = factory(require('jquery'));
} else {
root.CL_PAY = factory(root.jQuery);
}
}(this, function ($, undefined) {
'use strict';
/*
// Todo native bridge
*/
var pushMessage = function (obj) {
if (Object.keys(obj).length === 0) return;
if (obj.code) {
setAuthAutofill(obj);
}
if (obj.name || obj.phone ) {
// 하이픈 제거
obj.phone = obj.phone.split("-").join("");
setUserInfoAutofill(obj);
}
}
var setAuthAutofill = function (obj) {
$(".individual #bnum").val(obj.code).hide().fadeIn('slow');
}
var setUserInfoAutofill = function (obj) {
$("#dname").fadeOut('fast').fadeIn('slow').val(obj.name);
$("#dtel").fadeOut('fast').fadeIn('slow').val(obj.phone);
}
return {
pushMessage: pushMessage,
setAuthAutofill: setAuthAutofill,
setUserInfoAutofill: setUserInfoAutofill
};
}));
/**
* CL Common Library
*/
;(function (root, factory, undefined) {
'use strict';
if (typeof define === 'function' && define.amd) {
// AMD
define(['jquery'], function (jquery) {
return (root.CL = factory(jquery));
});
} else if (typeof exports === 'object' && module.exports) {
// CommonJS
module.exports = factory(require('jquery'));
} else {
root.CL = factory(root.jQuery);
}
}(this, function ($, undefined) {
'use strict';
//--
// util
//--
/**
* get QueryString parameters
* @param string url - full url
* @param string q_mark - optional question mark
*/
var queryParams = function(url, q_mark) {
url = '' + url;
var hashes = url.slice(url.indexOf((q_mark) ? q_mark : '?') + 1).split('&');
var len = hashes.length;
var pair = '';
var params = {};
for (var i = 0; i < len; i++) {
pair = hashes[i].split('=');
var key = decodeURIComponent(pair[0]); // key
if (key === url) break; // no param
var val = decodeURIComponent(pair[1]); // val
if (key) {
if (key.indexOf('[]') === -1) {
params[key] = val;
continue;
}
var arr = (Array.isArray(params[key])) ? params[key] : [];
arr.push(val);
params[key] = arr;
}
}
return params;
}
/**
* Native bridge
* @param type int - native call case
* 1001: 주소검색
* 1002: 본인인증
* 1003: 쿠폰 팝업 닫기
* 1004: 장바구니 수 갱신
* 1005: 프로모션 웹뷰 닫기
* 1006: 본인인증 타계정 존재
* 1007: 본인인증 미완료 안내
* 1008: 애드브릭스
* 1009: 점유인증 진행중
* 1010: 점유인증 만료
* 1011: 연락처 호출
* @param msg str - data
*/
function callNative(type, data, AGENT) {
var NATIVE_NS = 'Native'; // native name space
var FUNC_NAME = 'onJsResponse'; // only UIWebview
var type = (type) ? Number(type) : 0; // cast int
var msg = '';
try {
if (typeof data === 'object') msg = JSON.stringify(data);
else if (typeof data === 'undefined') msg = '';
else msg = ('' + data);
if (AGENT === 'ios') {
// window.webkit.messageHandlers.Native.postMessage({'type': type, 'msg': msg});
window.webkit.messageHandlers[NATIVE_NS].postMessage({'type': type, 'msg': msg});
} else if (AGENT === 'android') {
//window.Native.onJsResponse(type, msg);
window[NATIVE_NS][FUNC_NAME](type, msg);
} else if (AGENT === 'web') {
// WEBVIEW
console.log('callNative: ', type, data, AGENT);
}
} catch (e) {
console.log(e);
}
return true;
}
//--
// public(closure)
//--
return {
// util
queryParams: queryParams,
callNative: callNative,
};
}));
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment