플러그인 mc 카테고리 문의 드립니다.
본문
플러그인 mc 카테고리 문의 드립니다.
이온프리님 플러그인 계층형 카테고리를 사용중인데요
게시판 관리 메뉴에서 스킨을 선택하고, 일괄저장을 클릭하면
올바른 방법으로 이용해 주십시오. 멘트가 뜨고
확인을 클릭하면, 토큰정보가 올바르지 않습니다 라고 뜨는데 왜그럴까요 ?
답변 3
form에 token이 없어서 발생하는 문제로 보입니다
form에
<input type="hidden" name="token" value="">을 추가해주시고
ajax부분에서 var form = $(evt.target); 밑에
var token = get_ajax_token();
form.find("input[name=token]").val(token);
이렇게 한번 추가해보세요
제가 소스가없어서그런데 일괄저장부분 form과 javascript부분을 볼수있을까요? 알수있을것같긴한데..
form
<?php if (empty($board)):
$s = 0;
?>
<form class="mc-ajax-form" autocomplete="off" id="mc-board-list-f">
<div class="tbl_head01 tbl_wrap">
<input type="hidden" name="mode" value="board_config"/>
<table border="1">
<colgroup>
<col width="100"/>
<col width="150"/>
<col width="70"/>
<col width="70"/>
<col width="70"/>
<col/>
<col width="60"/>
</colgroup>
<thead>
<tr>
<th>bo_table</th>
<th>게시판명</th>
<th>리스트<br/>카테고리스킨</th>
<th>글쓰기<br/>카테고리스킨</th>
<th>내용보기<br/>카테고리스킨</th>
<th>설정된컬럼</th>
<th>설정</th>
</tr>
</thead>
<tbody>
<?php foreach ($boards as $row): ?>
<tr>
<td>
<a href="config.php?bo_table=<?= $row['bo_table']; ?>"><?= $row['bo_table']; ?></a>
</td>
<td><?= $row['bo_subject']; ?></td>
<td>
<input type="hidden" name="data[<?= $row['bo_table']; ?>][bo_table]"
value="<?= $row['bo_table']; ?>"/>
<?= mc_board($row['bo_table'])->getSelectbox('list', 'data[' . $row['bo_table'] . '][list_skin]', null, '<option value="">사용안함</option>'); ?>
</td>
<td><?= mc_board($row['bo_table'])->getSelectbox('write', 'data[' . $row['bo_table'] . '][write_skin]', null, '<option value="">사용안함</option>'); ?></td>
<td><?= mc_board($row['bo_table'])->getSelectbox('view', 'data[' . $row['bo_table'] . '][view_skin]', null, '<option value="">사용안함</option>'); ?></td>
<td>
<?php
if ($_mc = mc_board($row['bo_table'])) {
$_config = $_mc->getConfig();
echo join(', ', array_keys($_config['columns']));
} ?>
</td>
<td>
<button type="button" class="btn_frmline"
onclick="location.href='config.php?bo_table=<?= $row['bo_table']; ?>'">설정
</button>
<?php $c = &mc_board($row['bo_table'])->getConfig();
if (empty($c['bo_table']) && $s === 0) {
echo '<script>$(function(){$("#mc-board-list-f").trigger("submit");});</script>';
$s = 1;
}
?>
</td>
</tr>
<?php endforeach; ?></tbody>
</table>
</div>
<div class="btn_confirm01 btn_confirm">
<input type="submit" value="일괄저장" class="btn_submit">
</div>
</form>
<?php else: ?>
비동기식 같아서 자바스크립트가 많은 거 같아요 ㅠㅠ 훔
mc.admin.js
(function ($, window) {
var api = {};
var parser = function (data) {
if (data) {
if (data.alert) {
alert(data.alert);
}
if (data.reload) {
location.reload();
}
}
};
var exec = function (mode, data) {
data.mode = mode;
$.ajax({
url: 'ajax.php',
type: 'post',
data: data,
dataType: 'json',
success: function (data) {
parser(data);
}
})
};
api.remove = function (mc) {
if (confirm("삭제하시겠습니까?")) exec('remove', {mc: mc});
};
api.moveUp = function (mc) {
if (mc > 1) exec('moveUp', {mc: mc});
};
api.moveDown = function (mc) {
if (mc > 1) exec('moveDown', {mc: mc});
};
api.removeConfigColumn = function (bo_table, column) {
if (confirm("삭제하시겠습니까?")) {
exec('removeConfigColumn', {bo_table: bo_table, column: column});
}
}
api.handleSubmit = function (evt) {
evt.preventDefault();
if (evt.target.tagName !== 'FORM') {
alert('올바른 요청이 아닙니다.');
return;
}
var form = $(evt.target);
form.find("button[type=submit]").prop('disabled', true);
var data = form.serialize();
console.log(data);
$.ajax({
url: 'ajax.php',
type: 'post',
data: data,
dataType: 'json',
success: function (data) {
parser(data);
if (data) {
if (!data.reload) {
form.find("button[type=submit]").prop('disabled', false);
}
}
}
});
};
$(function () {
$("form.mc-ajax-form").on("submit", api.handleSubmit);
});
if (window.mcApi) {
$.extend(window.mcApi, api);
} else {
window.mcApi = api;
}
})(jQuery, window);
맞는지 모르겠네요