포럼
[시니시즘] '내용을 입력해주세요' 무시하기 팁
2011.05.13 11:24
게시판 스킨을 만들다보면 content 항목 자체가 필요 없을 때가 있습니다. (지금껏 없으셨더라도 언젠간 있으실 겁니다...;)
그런데 내용을 입력하지 않고 등록을 누르면 '내용을 입력해주세요'라고 경고창이 뜨게 되죠.
그걸 간단히 무시해버리는 팁을 오늘 알려드릴게용 ㅋ
XE에서 내용을 입력하는 부분은 editor로 처리되게 됩니다.
이런식으로 말이죠.
<div class="editor">{$oDocument->getEditor()}</div>
보통은 이걸 지워버리고 input으로 content 값을 삽입해주면 경고창이 안뜰거라고 생각하죠.
<input name="content" value="내용입니다">
그런데 이렇게 해도 '내용을 입력해주세요'라는 창은 뜹니다ㅡㅡ^
이 경고 메세지를 원천적으로 봉쇄하는 방법은 필터 파일을 수정하는 겁니다.
아래처럼요.
/modules/board/tpl/filter/insert.xml
content 부분을 수정해주면 됩니다.
<filter name="insert" module="pxeboard" act="procBoardInsertDocument"> <form> <node target="nick_name" required="true" maxlength="20"/> <node target="password" required="true" /> <node target="email_address" maxlength="250" /> <node target="homepage" maxlength="250"/> <node target="title" required="true" minlength="1" maxlength="250" /> <node target="content" required="true" /> <node target="category_srl" required="true" /> <node target="attach_file" /> <node target="attach_screenshot" /> </form> <response callback_func="completeDocumentInserted"> <tag name="error" /> <tag name="message" /> <tag name="mid" /> <tag name="document_srl" /> <tag name="category_srl" /> </response> </filter>
요렇게 수정해주면 됩니다.
<filter name="insert" module="pxeboard" act="procBoardInsertDocument"> <form> <node target="nick_name" required="true" maxlength="20"/> <node target="password" required="true" /> <node target="email_address" maxlength="250" /> <node target="homepage" maxlength="250"/> <node target="title" required="true" minlength="1" maxlength="250" /> <node target="content" /> <node target="category_srl" required="true" /> <node target="attach_file" /> <node target="attach_screenshot" /> </form> <response callback_func="completeDocumentInserted"> <tag name="error" /> <tag name="message" /> <tag name="mid" /> <tag name="document_srl" /> <tag name="category_srl" /> </response> </filter>
그런데 이렇게 해버리면 스킨을 독립적으로 구동할 수 없습니다.
스킨을 깔 때마다 해당 부분을 수정해줘야 되죠ㅠ
그리고 가능하면 XE의 원본 파일들을 건드리지 않는걸 지향하기 때문에
(예전에 제 마음대로 XE 파일들을 튜닝한 웹사이트가 있는데 아직까지 새 버전으로 업그레이드를 못하고 있다는 ㅡㅡㅋ)
최종적인 해결책은 아래처럼 해결하면 됩니다.
아래 파일을 수정해주세용.
/modules/board/skins/해당스킨/write_form.html
js 파일을 import하는 코드 아래 부분에 넣어주세용.
이런 소스들 아래에 넣어주세용.
<!--#include("_header.html")-->
<!--%import("../../tpl/js/write_form.js")-->
<!--%import("../../tpl/js/labelbox.js")-->
아래 소스를 넣어주시면 됩니당 ㅋ
<script language="JavaScript"> (function($){ $("html").ready(function(){ jQuery('#xpress-editor-1').val("안녕하세요 내용입니다"); }); })(jQuery); </script>
끝 ㅋ
댓글 6
-
앙까?
2011.05.14 16:20
-
시니시즘
2011.05.15 19:55
오 저보다 고수신데요!!
앙까님 방법이 가장 깔끔해 보입니다^^ -
앙까?
2011.05.15 23:47
ㅎㅎ 예전에 form 입력변수들 validation 처리때문에 이것저것 하다보니 알게 된 방법입니다. ^^
수강신청접수 같은경우 외부페이지로 만들어야 했는데 그때는 filter가 안먹더군요.
그래서 아래의 방법으로 처리했었죠.
filter script를 보고 따라 만들었는데 잘 작동 하더군요.
<form id="fo_insert_membership" action="./" method="get" onsubmit="return false;" style="margin-bottom:50px;">...</form><script type="text/javascript">(function($){$(function(){$('#fo_insert_membership').submit(function () {// 입력값 체크...// 입력값 검사 통과후var params={}, responses=[], data=jQuery(this).serializeArray();jQuery.each(data, function(i, field){var val = field.value.trim();if(!val) return true;if(/\[\]$/.test(field.name)) field.name = field.name.replace(/\[\]$/, '+ '');if(params[field.name]) params[field.name] += '|@|'+val;else params[field.name] = field.value;});responses = ['error','message','mid','member_srl'];if(confirm('수강신청 하시겠습니까?')){exec_xml('membership','procMembershipSignUp', params, completeMembershipSignUp, responses, params, this);return true;}else{$(':disabled').attr('disabled','');return false;}});});})(jQuery);</script> -
시니시즘
2011.05.16 11:21
유용한 소스 공유해주셔서 감사합니다^^
다음에 기회가 있으면 참고해서 적용해보도록 할게요! -
피비햄
2011.05.16 15:28
앙까?님 방법으로 해보니 '내용을 입력해주세요' 메세지는 안나오는데.....
글이 목록에 없네요...ㅠㅠ 등록이 안되는건가????
-
앙까?
2011.05.16 17:55
myInsert.xml 파일을 해당 스킨 디렌토리의 filter 디렉토리에 올리셨나요?
그리고 제가 제시한 방식은 board 모듈에 해당하는 방식입니다.
boardex나 pxeboard의 경우는 그에 해당하는 module명과 action을 사용하셔야 합니다.
글쓴이 | 제목 | 최종 글 |
---|---|---|
씨지 | 모듈확장시 queries xml 파일도 확장(override)시킬 수 있는건가요? [2] | 2011.04.22 by 씨지 |
Treasurej | 앱에서 글쓰기 됐으면 좋겠네요.^^ | |
토비코비 | XE 강의도 있었으면 합니다. [1] | 2011.04.27 by 마일드^^ |
푸름빠 | 제로보드xe로 동시접속자 300명까지 감당이 될까요? [4] | 2011.04.27 by 마일드^^ |
정찬명 | 지금 사용하는 게시판에 만족하시나요? [31] [1] | 2011.05.18 by 오신사 |
NetCabin | 신문법 쿼리 unload 사용 되시는분들 있나요? [8] | 2011.04.29 by Cody |
obok | 버그 신고 | |
Cody | [질문] XpressEditor에서의 <P>태그 처리하기... | |
착한악마 | 글작성 완료 페이지는 도대체 어디에? [4] | 2011.05.02 by 착한악마 |
SMaker | 1.5.0 브랜치 업데이트 좀 해주세요~ | |
Cody | 이슈트래커 세션타임아웃 시 로그아웃 되는 현상 | |
ForHanbi | XE 사이트 게시판 오류 [1] | 2011.05.03 by 인간a |
burster | 축하해 주십시요~~~!!! 난다날아님 회원확장모듈... [3] | 2011.05.03 by 인간a |
Garon | 여러 모듈등, 버그를 잡기 위한 엔진....아이디어(?) [3] | 2011.05.04 by Cody |
정찬명 | XE 코어 1.5 배포 일정이 변경된 이유. [14] | 2011.05.07 by 토비코비 |
정찬명 | fsfsdas님의 궁금증에 개인 의견으로 답변드립니다. [9] | 2011.05.08 by 쏭바강 |
Thejeon | 처음으로 모듈을 만들어보는데.. [5] | 2011.05.13 by 라르게덴 |
앙까? | "XE 프로젝트 호스팅 이전 및 종료 공지"를 보고 [6] | 2011.05.16 by Garon |
시니시즘 | [시니시즘] '내용을 입력해주세요' 무시하기 팁 [6] | 2011.05.16 by 앙까? |
정찬명 | XE 공식 웹 사이트에 수록할 '쇼케이스'를 추천 받습니다. [44] | 2020.03.14 by XE Developers |
제가 아는 코어 소스를 건드리지 않는 방법중 또 하나의 방법은
filter파일 자체를 변경하는 것도 추천드립니다. ^^
board모듈 같은 경우 function dispBoardWrite() 멤버함수에서
Context::addJsFilter($this->module_path.'tpl/filter', 'insert.xml');
형식으로 filter 스크립트를 적용시키는데요.
스킨에서도 직접 적용할 수 있습니다.
초기버전에서 이렇게 사용했었죠. ^^
modules/board/skins/나의스킨/filter/myInsert,xml
procFilter호출시 자신의 filter를 호출하도록 하면 됩니다. ^^
<!-- 게시물 작성 폼 -->