kboard_content_update 로 Ajax 사용시 권한 없음이 나옵니다.

https://www.cosmosfarm.com/threads/document/16990 글을 토대로 적용하였습니다.

하나의 필드는 셀럭트로, 하나의 필드는 인풋으로 처리 하였습니다.

셀렉트 박스는 정상작동 하는데 , 인풋 필드로 저장하는 값은 권한이 없다고 나오네요

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    올려주신 내용만으로는 원인을 파악하기 어렵습니다.

    실제 적용하신 코드를 모두 올려주시겠어요?

    코드를 올려주실 땐 반드시 "코드 스니펫 삽입"기능을 이용해주세요.

    고맙습니다.

  • <pre>

                $('.master_status').change(function(){
                    kboard_content_update($('.master_status').data('idx'), {kboard_option_master_status:$('.master_status').val()}, function(res){
                        if(res.result == 'success'){
                            alert('수정되었습니다.');
                        }
                        else{
                            alert(res.message);
                        }
                    });
                });

                $(".master_confirm").keydown(function(key) {
                    if (key.keyCode == 13 && $(this).val() != '') {
                        kboard_content_update($('.master_confirm').data('idx'), {kboard_option_master_confirm:$('.master_confirm').val()}, function(res){
                            if(res.result == 'success'){
                                alert('수정되었습니다.');
                            }
                            else{
                                alert(res.message);
                            }
                        });
                    }else if (key.keyCode == 13){
                        alert('날짜를 "YYYY-MM-DD"형식으로 입력해 주세요.');
                    }
                });

    </pre>

     

    위와같이 작성하였습니다.

  • 워드프레스에서 jQuery를 사용할 때 "$" 변수는 사용하실 수 없습니다.

    "$" 변수 대신 "jQuery" 변수로 사용하셔야 합니다.

    $('.master_status').change 대신 jQuery('.master_status').change 이런 식으로 적용해주셔야 합니다.

    다른 부분의 코드 모두 "$" 변수 대신 "jQuery" 변수로 교체해보세요.

     

    올려주신 코드만으로는 저희 쪽에서 직접 테스트해볼 수 없기 때문에

    어느 부분이 문제인지 명확하게 답변을 드리기 어렵습니다.

    HTML 코드도 올려주시겠어요?
     

    그리고 코드를 올려주실 땐 반드시 "코드 스니펫 삽입" 기능을 이용해주세요. (에디터의 이미지 아이콘 오른쪽에 있습니다.)

    그렇지 않으면 코드가 이상해져서 에러 나는 코드로 바뀌거나,

    질의응답 시 의사소통에 오해와 문제가 생길 수도 있습니다.

    고맙습니다.

  • <div id="kboard-default-list">
    	
    	<!-- 게시판 정보 시작 -->
    	<div class="kboard-list-header">
    	<?php
    	/*
    		<?php if(!$board->isPrivate()):?>
    			<div class="kboard-total-count">
    				<?php echo __('Total', 'kboard')?> <?php echo number_format($board->getListTotal())?>
    			</div>
    		<?php endif?>
    		
    		<div class="kboard-sort">
    			<form id="kboard-sort-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
    				<?php echo $url->set('pageid', '1')->set('category1', '')->set('category2', '')->set('target', '')->set('keyword', '')->set('mod', 'list')->set('kboard_list_sort_remember', $board->id)->toInput()?>
    				
    				<select name="kboard_list_sort" onchange="jQuery('#kboard-sort-form-<?php echo $board->id?>').submit();">
    					<option value="newest"<?php if($list->getSorting() == 'newest'):?> selected<?php endif?>><?php echo __('Newest', 'kboard')?></option>
    					<option value="best"<?php if($list->getSorting() == 'best'):?> selected<?php endif?>><?php echo __('Best', 'kboard')?></option>
    					<option value="viewed"<?php if($list->getSorting() == 'viewed'):?> selected<?php endif?>><?php echo __('Viewed', 'kboard')?></option>
    					<option value="updated"<?php if($list->getSorting() == 'updated'):?> selected<?php endif?>><?php echo __('Updated', 'kboard')?></option>
    				</select>
    			</form>
    		</div>
    	*/
    	?>
    		<div class="kboard-search default-notice">
    			<form id="kboard-search-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
    				<?php echo $url->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->toInput()?>		
    	<?php
    	/*				
    				<select name="target">
    					<option value=""><?php echo __('All', 'kboard')?></option>
    					<option value="title"<?php if(kboard_target() == 'title'):?> selected<?php endif?>><?php echo __('Title', 'kboard')?></option>
    					<option value="content"<?php if(kboard_target() == 'content'):?> selected<?php endif?>><?php echo __('Content', 'kboard')?></option>
    					<option value="member_display"<?php if(kboard_target() == 'member_display'):?> selected<?php endif?>><?php echo __('Author', 'kboard')?></option>
    				</select>
    	*/
    	?>
    				<input type="text" name="keyword" value="<?php echo kboard_keyword()?>">
    				<button type="submit" class="kboard-default-button-small" title="<?php echo __('Search', 'kboard')?>"><i class="fas fa-search"></i></button>
    			</form>
    		</div>
    	</div>
    	<!-- 게시판 정보 끝 -->
    	
    	<!-- 카테고리 시작 -->
    	<?php
    	if($board->use_category == 'yes'){
    		if($board->isTreeCategoryActive()){
    			$category_type = 'tree-select';
    		}
    		else{
    			$category_type = 'default';
    		}
    		$category_type = apply_filters('kboard_skin_category_type', $category_type, $board, $boardBuilder);
    		echo $skin->load($board->skin, "list-category-{$category_type}.php", $vars);
    	}
    	?>
    	<!-- 카테고리 끝 -->
    	
    	<!-- 리스트 시작 -->
    	<div class="kboard-list">
    		<table>
    			<thead>
    				<tr>
    					<td class="kboard-list-uid"><?php echo __('Number', 'kboard')?></td>
    					<td class="kboard-list-title"><?php echo __('Title', 'kboard')?></td>
    					<td class="kboard-list-status"><?php echo __('심사결과', 'kboard')?></td>
    					<td class="kboard-list-confirm"><?php echo __('심사완료일', 'kboard')?></td>
    					<td class="kboard-list-user"><?php echo __('Author', 'kboard')?></td>
    					<td class="kboard-list-date"><?php echo __('Date', 'kboard')?></td>
    					<td class="kboard-list-vote"><?php echo __('Votes', 'kboard')?></td>
    					<td class="kboard-list-view"><?php echo __('Views', 'kboard')?></td>
    				</tr>
    			</thead>
    			<tbody>
    				<?php while($content = $list->hasNextNotice()):?>
    				<tr class="kboard-list-notice<?php if($content->uid == kboard_uid()):?> kboard-list-selected<?php endif?>">
    					<td class="kboard-list-uid"><?php echo __('Notice', 'kboard')?></td>
    					<td class="kboard-list-title" colspan="3">
    						<a href="<?php echo $url->getDocumentURLWithUID($content->uid)?>">
    							<div class="kboard-default-cut-strings">
    								<?php if($content->isNew()):?><span class="kboard-default-new-notify">New</span><?php endif?>
    								<?php if($content->secret):?><img src="<?php echo $skin_path?>/images/icon-lock.png" alt="<?php echo __('Secret', 'kboard')?>"><?php endif?>
    								<?php echo $content->title?>
    								<span class="kboard-comments-count"><?php echo $content->getCommentsCount()?></span>
    							</div>
    						</a>
    						<div class="kboard-mobile-contents">
    							<span class="contents-item kboard-user"><?php echo apply_filters('kboard_user_display', $content->member_display, $content->member_uid, $content->member_display, 'kboard', $boardBuilder)?></span>
    							<span class="contents-separator kboard-date">|</span>
    							<span class="contents-item kboard-date"><?php echo $content->getDate()?></span>
    							<span class="contents-separator kboard-vote">|</span>
    							<span class="contents-item kboard-vote"><?php echo __('Votes', 'kboard')?> <?php echo $content->vote?></span>
    							<span class="contents-separator kboard-view">|</span>
    							<span class="contents-item kboard-view"><?php echo __('Views', 'kboard')?> <?php echo $content->view?></span>
    						</div>
    					</td>
    					<td class="kboard-list-user"><?php echo apply_filters('kboard_user_display', $content->member_display, $content->member_uid, $content->member_display, 'kboard', $boardBuilder)?></td>
    					<td class="kboard-list-date"><?php echo $content->getDate()?></td>
    					<td class="kboard-list-vote"><?php echo $content->vote?></td>
    					<td class="kboard-list-view"><?php echo $content->view?></td>
    				</tr>
    				<?php endwhile?>
    				<?php while($content = $list->hasNext()):?>
    				<tr class="<?php if($content->uid == kboard_uid()):?>kboard-list-selected<?php endif?>">
    					<td class="kboard-list-uid"><?php echo $list->index()?></td>
    					<td class="kboard-list-title">
    						<a href="<?php echo $url->getDocumentURLWithUID($content->uid)?>">
    							<div class="kboard-default-cut-strings">
    								<?php if($content->isNew()):?><span class="kboard-default-new-notify">New</span><?php endif?>
    								<?php if($content->secret):?><img src="<?php echo $skin_path?>/images/icon-lock.png" alt="<?php echo __('Secret', 'kboard')?>"><?php endif?>
    								<?php echo $content->option->master_application_type?> / <?php echo $content->title?>
    								<span class="kboard-comments-count"><?php echo $content->getCommentsCount()?></span>
    							</div>
    						</a>
    						<div class="kboard-mobile-contents">
    							<span class="contents-item kboard-user"><?php echo apply_filters('kboard_user_display', $content->member_display, $content->member_uid, $content->member_display, 'kboard', $boardBuilder)?></span>
    							<span class="contents-separator kboard-date">|</span>
    							<span class="contents-item kboard-date"><?php echo $content->getDate()?></span>
    							<span class="contents-separator kboard-vote">|</span>
    							<span class="contents-item kboard-vote"><?php echo __('Votes', 'kboard')?> <?php echo $content->vote?></span>
    							<span class="contents-separator kboard-view">|</span>
    							<span class="contents-item kboard-view"><?php echo __('Views', 'kboard')?> <?php echo $content->view?></span>
    						</div>
    					</td>
    					<?php if($board->isAdmin()){ ?>
    					<td>
    						<select class="master_status" name="master_status" data-idx="<?=$content->uid?>" >
    							<option value="진행중" <?=$content->option->master_status == '진행중' ? 'selected':''?>>진행중</option>
    							<option value="승인" <?=$content->option->master_status == '승인' ? 'selected':''?>>승인</option>
    							<option value="미승인" <?=$content->option->master_status == '미승인' ? 'selected':''?>>미승인</option>
    						</select>
    					</td>
    					<td>
    						<input type="text" class="master_confirm" name="master_confirm" value="<?=$content->option->master_confirm?>">
    					</td>
    					<?php }else{ ?>
    					<td><?=$content->option->master_status?></td>
    					<td><?=$content->option->master_confirm?></td>
    					<?php } ?>
    					<td class="kboard-list-user"><?php echo apply_filters('kboard_user_display', $content->member_display, $content->member_uid, $content->member_display, 'kboard', $boardBuilder)?></td>
    					<td class="kboard-list-date"><?php echo $content->getDate()?></td>
    					<td class="kboard-list-vote"><?php echo $content->vote?></td>
    					<td class="kboard-list-view"><?php echo $content->view?></td>
    				</tr>
    				<?php $boardBuilder->builderReply($content->uid)?>
    				<?php endwhile?>
    			</tbody>
    		</table>
    	</div>
    	<!-- 리스트 끝 -->
    	
    	<!-- 페이징 시작 -->
    	<div class="kboard-pagination">
    		<ul class="kboard-pagination-pages">
    			<?php echo kboard_pagination($list->page, $list->total, $list->rpp)?>
    		</ul>
    	</div>
    	<!-- 페이징 끝 -->
    	
    	<!-- 검색폼 시작 -->
    	<?php
    	/*
    	<div class="kboard-search">
    		<form id="kboard-search-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
    			<?php echo $url->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->toInput()?>
    			
    			<select name="target">
    				<option value=""><?php echo __('All', 'kboard')?></option>
    				<option value="title"<?php if(kboard_target() == 'title'):?> selected<?php endif?>><?php echo __('Title', 'kboard')?></option>
    				<option value="content"<?php if(kboard_target() == 'content'):?> selected<?php endif?>><?php echo __('Content', 'kboard')?></option>
    				<option value="member_display"<?php if(kboard_target() == 'member_display'):?> selected<?php endif?>><?php echo __('Author', 'kboard')?></option>
    			</select>
    			<input type="text" name="keyword" value="<?php echo kboard_keyword()?>">
    			<button type="submit" class="kboard-default-button-small"><?php echo __('Search', 'kboard')?></button>
    		</form>
    	</div>
    	*/
    	?>
    	<!-- 검색폼 끝 -->
    	
    	<?php if($board->isWriter()):?>
    	<!-- 버튼 시작 -->
    	<div class="kboard-control">
    		<a href="<?php echo $url->getContentEditor()?>" class="kboard-default-button-small"><?php echo __('New', 'kboard')?></a>
    	</div>
    	<!-- 버튼 끝 -->
    	<?php endif?>
    	
    	<?php if($board->contribution()):?>
    	<div class="kboard-default-poweredby">
    		<a href="http://www.cosmosfarm.com/products/kboard" onclick="window.open(this.href);return false;" title="<?php echo __('KBoard is the best community software available for WordPress', 'kboard')?>">Powered by KBoard</a>
    	</div>
    	<?php endif?>
    </div>
    
    <script>
    	(function($){
    		$(document).ready(function(){
    			$('.master_status').change(function(){
    				kboard_content_update($('.master_status').data('idx'), {kboard_option_master_status:$('.master_status').val()}, function(res){
    					if(res.result == 'success'){
    						alert('수정되었습니다.');
    					}
    					else{
    						alert(res.message);
    					}
    				});
    			});
    
    			$(".master_confirm").keydown(function(key) {
                    if (key.keyCode == 13 && $(this).val() != '') {
                        kboard_content_update($('.master_confirm').data('idx'), {kboard_option_master_confirm:$('.master_confirm').val()}, function(res){
    						if(res.result == 'success'){
    							alert('수정되었습니다.');
    						}
    						else{
    							alert(res.message);
    						}
    					});
                    }else if (key.keyCode == 13){
    					alert('날짜를 "YYYY-MM-DD"형식으로 입력해 주세요.');
    				}
                });
    		});
    	})(jQuery);
    </script>

    $변수 처리는 하였습니다. 그리고 셀렉트로 상태값 변경은 잘 됩니다. 날짜를 입력 받으려고 하는데 권한이 없다고 나오네요

     

    ps. 그리고 추가 질문은 사용 중인 게시판에 필드를 추가하고 위 사항을 적용하면 리턴은 성공이지만 실제로는 수정이 안되더라구요

    필드 추가 이후 작성한 글은 잘 작동 합니다.

  • 올려주신 코드를 확인해보니

    "권한이 없습니다." alert 창이 표시되는 건 게시글 uid가 없어서 표시되고 있습니다.

    올려주신 코드 중에서

    아래의 코드를 찾아서

    <input type="text" class="master_confirm" name="master_confirm" value="<?=$content->option->master_confirm?>">

    아래의 코드로 교체해보세요.

    <input type="text" class="master_confirm" name="master_confirm" value="<?=$content->option->master_confirm?>" data-idx="<?php echo $content->uid?>">

     

    스크립트 코드도 아래의 코드로 교체해보시겠어요?

    <script>
    jQuery(document).ready(function($){
    	$('.master_status').change(function(){
    		kboard_content_update($(this).data('idx'), {kboard_option_master_status:$(this).val()}, function(res){
    			if(res.result == 'success'){
    				alert('수정되었습니다.');
    			}
    			else{
    				alert(res.message);
    			}
    		});
    	});
    
    	$(".master_confirm").keydown(function(key) {
    		if (key.keyCode == 13 && $(this).val() != '') {
    			kboard_content_update($(this).data('idx'), {kboard_option_master_confirm:$(this).val()}, function(res){
    				if(res.result == 'success'){
    					alert('수정되었습니다.');
    				}
    				else{
    					alert(res.message);
    				}
    			});
    		}else if (key.keyCode == 13){
    			alert('날짜를 "YYYY-MM-DD"형식으로 입력해 주세요.');
    		}
    	});
    });
    </script>

    올려주신 코드 또는 위의 코드처럼 적용하시면 "jQuery" 대신 "$"로도 사용하실 수 있습니다.

    수정 시 원하는 대로 수정되지 않는 이유는 change 이벤트 또는 keydown 이벤트 발생 시

    이벤트가 발생한 게시글의 uid를 인식하도록 설정되어 있지 않기 때문입니다.

    고맙습니다.

  • 안녕하세요

    알려 주신 부분 수정하고 나니 리스트의 가장 최신글은 잘 적용이 됩니다.

    하지만 게시글이 10개라면 10번째 글은 수정이 되고 그 아래 글들은 수정이 완료되었다고 나오지만

    페이지를 새로 고침하면 해당 값이 DB에 저장되어 있지 않습니다.

    이부분은 어딜 확인하면 될까요?

    그리고 kboard에 달력 필드는 없나요?

  • 안녕하세요.

    저희 쪽 테스트 서버에서는 안내해드린 코드를 적용할 경우

    가장 최신글 이외에도 다른 게시글도 정상적으로 수정되고 있습니다.

    실제 적용하신 javascript 코드를 확인해보셔야 할 듯합니다.

     

    현재 KBoard 플러그인 입력 필드 설정에 달력 필드는 기본으로 제공하고 있지 않습니다.

    jQuery datepicker와 KBoard kboard_get_template_field_html 필터를 활용하면 가능할 듯합니다.

    KBoard 플러그인에서 새로운 필드를 추가하는 방법은

    아래의 링크를 참고해보세요.

    KBoard(케이보드) 게시판에 새로운 필드 추가하기

    고맙습니다.

  • 제가 멍청하게 소스코드를 처리했네요 마음만 급해서 -0- ㅎㅎ

    뭐가 원인인지 다 찾아서 해결했습니다. 감사합니다. ㅎ

    datepicker 적용은 아래 링크로 간단히 해결했습니다.

    https://stackoverflow.com/questions/27462984/use-jquery-datepicker-in-wordpress

    감사합니다

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요