filter xml 을 걷어내봅시다
찾아보니 작년 7월에 물어본 건데 그 때도 하다 말았군요. 이 참에 정리해둡니다.
https://rhymix.org/qna/1831410
이런 일이 일년에 한번 있을까 말까 하니 늘 하는 작업들이긴 해도 케이스에 따라 수정방법이 다르기 때문에
일일이 기억하기 어렵군요. ㅠㅠ
템플릿 문법 v2에서는 과거의 이런 filter를 못 사용합니다.
@unload('filters/cancel_charge.xml') @unload('filters/approve_charge.xml')
unload 해주거나 해당 줄을 삭제하면 됩니다.
오래된 모듈 중에 하나인 pointcharge 모듈을 수정하고 있는데요.
코드를 역추적하는 시스템입니다. 순서는 1,2,3으로 썼지만, 3,2,1 순으로 추적해서 찾아가는 식입니다.
기존 방식
1. modules/pointcharge/pointcharge.admin.view.php
class pointchargeAdminView extends pointcharge {
Context::addJsFile($this->module_path.'tpl/js/pointcharge_admin.js');
}
pointcharge.admin.view.php에서 충전승인 js 코드 불러옴
2. pointcharge_admin.js
/* 충전승인*/
function doApproveCharge(charge_srl) {
console.log('충전승인');
var fo_obj = xGetElementById('fo_charge');
fo_obj.charge_srl.value = charge_srl;
procFilter(fo_obj, approve_charge);
}
/* 충전취소*/
function doCancelCharge(charge_srl) {
var fo_obj = xGetElementById('fo_charge');
fo_obj.charge_srl.value = charge_srl;
procFilter(fo_obj, cancel_charge);
}
설명 : procFilter()를 사용하고 있음. 이 방식은 구 방식이므로 변경해야함
3. modules/pointcharge/tpl/standby_list.html
<a href="#" onclick="doApproveCharge('{$val->charge_srl}');return false;" title="{$lang->approve_charge}">{$lang->approve_charge}</a>
<a href="#" onclick="doCancelCharge('{$val->charge_srl}');return false;" title="{$lang->charge_cancel}">{$lang->charge_cancel}</a>
관리자 충전승인/승인취소화면에서 doApproveCharge(), doCancelCharge() 함수를 실행하고 있음.
이제 분석은 끝났으니 필요한 pointcharge_admin.js 의 해당 코드를 수정하면 됩니다.
```
/* 충전승인 */
function doApproveCharge(charge_srl) {
$.ajax({
url: './',
type: 'POST',
data: {
act: 'procPointchargeAdminApproveCharge',
charge_srl: charge_srl
},
success: function(response) {
alert('충전승인');
if (response.error == 0) {
location.reload();
}
},
error: function() {
alert('Error occurred while approving charge.');
}
});
}
/* 충전취소 */
function doCancelCharge(charge_srl) {
$.ajax({
url: './',
type: 'POST',
data: {
act: 'procPointchargeAdminCancelCharge',
charge_srl: charge_srl
},
success: function(response) {
alert('충전취소');
if (response.error == 0) {
location.reload();
}
},
error: function() {
alert('Error occurred while canceling charge.');
}
});
}
```
좀 더 코드를 디벨롭해보면 아래와 같이 수정 가능합니다.
jQuery(function($) {
function sendChargeRequest(action, charge_srl) {
if (!charge_srl || isNaN(charge_srl)) {
alert('올바른 충전 번호를 입력하세요.');
return;
}
let confirmMessage = (action === 'approve') ? '정말 승인하시겠습니까?' : '정말 취소하시겠습니까?';
if (!confirm(confirmMessage)) return;
$.post(
"./", // Rhymix는 기본적으로 현재 모듈 URL을 처리하므로 "./" 사용 가능
{
act: (action === 'approve') ? 'procPointchargeAdminApproveCharge' : 'procPointchargeAdminCancelCharge',
charge_srl: charge_srl
},
function(response) {
if (response.error) {
alert(response.message);
} else {
alert((action === 'approve') ? '충전이 승인되었습니다.' : '충전이 취소되었습니다.');
location.reload(); // 새로고침하여 변경사항 반영
}
},
'json'
);
}
window.doApproveCharge = function(charge_srl) {
sendChargeRequest('approve', charge_srl);
};
window.doCancelCharge = function(charge_srl) {
sendChargeRequest('cancel', charge_srl);
};
});
저도 인터넷에서 코딩 배웠어요. 더 좋은 방법은 언제나 감사합니다. (__)/

댓글 0