http://codeigniter-kr.org codeigniter 한국사용자포럼에 정리해서 올렸던 내용을 제 블로그로 꺼꾸로 가져옵니다.
ckeditor 3.X버전을 codeigniter에서 사용할 수 있도록 수정한 내용입니다.
원본 http://codeigniter-kr.org/source/view/322/page/1
| fckeditor가 2.X대 버전으로 끝나고 3.X버전으로 오면서 ckeditor로 바뀌면서 상당히 많은 변화가 있었네요. 기능들을 코어와 플러그인으로 분리, 엄청난(?) 로딩속도 향상(http://hbuilder.kiissoft.com/admin/test), ajax 적용용이 등등.. 파일, 이미지 업로드를 사용하기 위해서는(업로더가 2.X버전에서는 fckeditor안에 포함되어 있었음) ckfinder도 같이 설치를 해야합니다. ci forum에서 검색해보니 ckeditor용 헬퍼를 만들어놓은게 있어서 적용하여 사용중에 툴바선택할 수 있는 부분을 추가했습니다. (fckeditor는 라이브러리로 만들어 사용) 사용하기 위해서 ckeditor(http://ckeditor.com/download)와 ckfinder(http://ckfinder.com/download)(이미지 업로더를 따로 만든다면 필요가 없습니다)를 다운로드합니다. 1. 압축을 풀고 (저는 include 디렉토리 아래에 풀었습니다.) include – ckeditor – ckfinder 2. 설정을 합니다. – ckeditor는 config.js 파일이 설정파일인데 헬퍼에서 설정을 해서 따로 설정할 것이 없습니다. – ckfinder는 config.php 파일을 수정해야 합니다. 01.function CheckAuthentication() 02.{ 03. return true; 04.} 05.//true로 수정 06.//권한체크용으로 만들어진 함수인데 수정하지 않으면 파일업로드가 안됩니다. 07. 08.$baseUrl = ‘/data/upload’; 09.//업로드된 파일이 저장될 디렉토리 10.//upload 디렉토리 하위에 파일형식에 따라서 이미지(images), 파일(files), 플래시(flash) 디렉토리가 자동생성됩니다. 11.//쓰기권한 필수 12. 13.$config[‘ResourceType’][] = Array( 14. ‘name’ => ‘Images’, 15. ‘url’ => $baseUrl . ‘ck_images’, 16. ‘directory’ => $baseDir . ‘ck_images’, 17. ‘maxSize’ => ‘2M’, 18. ‘allowedExtensions’ => ‘bmp,gif,jpeg,jpg,png’, 19. ‘deniedExtensions’ => ”); 20.// maxSize가 처음에는 0으로 되어있는데 제한사이즈로 수정 21.// $config[‘ResourceType’][] 3군데 모두 수정 22. 23.// 그외에는 각자 입맛(?)에 맞게 수정하시면 됩니다.01.<?php 02.if(!defined(‘BASEPATH’)) exit(‘No direct script access allowed’); 03. 04.function form_ckeditor($data) 05.{ 06. //툴바 선택사용 07. switch($data[‘toolbar’]){ 08. case (‘reply’): 09. $tool_bar = ‘ 10. [ 11. [“Font”,“FontSize”], [“TextColor”,“BGColor”], 12. [“Bold”,“Italic”,“Underline”], 13. [“JustifyLeft”,“JustifyCenter”,“JustifyRight”,“JustifyBlock”], 14. [“Link”,“Unlink”], 15. [“Image”,“Flash”,“Table”,“HorizontalRule”,“Smiley”,“SpecialChar”], 16. [“Preview”,“Source”,“Maximize”] 17. ] 18. ‘; 19. break; 20. case (‘basic’): 21. $tool_bar = ‘ 22. [ 23. [“Source”,“-“,“Preview”], 24. [“Bold”,“Italic”,“Underline”], 25. [“Link”,“Unlink”] 26. ] 27. ‘; 28. break; 29. //디폴트는 FUll입니다. 30. default: 31. $tool_bar = ‘ 32. [ 33. [“Source”,“-“,“Save”,“NewPage”,“Preview”,“-“,“Templates”], 34. [“Cut”,“Copy”,“Paste”,“PasteText”,“PasteFromWord”,“-“,“Print”, “SpellChecker”, “Scayt”], 35. [“Undo”,“Redo”,“-“,“Find”,“Replace”,“-“,“SelectAll”,“RemoveFormat”], 36. [“Form”, “Checkbox”, “Radio”, “TextField”, “Textarea”, “Select”, “Button”, “ImageButton”, “HiddenField”], 37. “/”, 38. [“Bold”,“Italic”,“Underline”,“Strike”,“-“,“Subscript”,“Superscript”], 39. [“NumberedList”,“BulletedList”,“-“,“Outdent”,“Indent”,“Blockquote”], 40. [“JustifyLeft”,“JustifyCenter”,“JustifyRight”,“JustifyBlock”], 41. [“Link”,“Unlink”,“Anchor”], 42. [“Image”,“Flash”,“Table”,“HorizontalRule”,“Smiley”,“SpecialChar”,“PageBreak”], 43. “/”, 44. [“Styles”,“Format”,“Font”,“FontSize”], 45. [“TextColor”,“BGColor”], 46. [“Maximize”, “ShowBlocks”,“-“,“About”] 47. ] 48. ‘; 49. break; 50. } 51. 52. 53. $data[‘language’] = isset($data[‘language’]) ? $data[‘language’] : ‘ko’; 54. 55. $size = isset($data[‘width’]) ? ‘width: “‘.$data[‘width’].‘”, ‘ : ”; 56. $size .= isset($data[‘height’]) ? ‘height: “‘.$data[‘height’].‘”, ‘ : ”; 57. 58. $options = ‘{‘. 59. $size. 60. ‘language: “‘.$data[‘language’].'”, 61. //각종 설정값 (자세한내용은 ckeditor 레퍼런스참고) 62. startupOutlineBlocks: false, 63. entities: false, 64. entities_latin: false, 65. entities_greek: false, 66. forcePasteAsPlainText: false, 67. 68.//파일업로드 프로그램의 주소입니다. 69.//ckfinder의 주소를 적으면 됩니다. 70.//사용자 업로더를 사용한다면 그 주소를 써주면 됩니다. filebrowserUploadUrl : “/include/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files”, 71. filebrowserImageUploadUrl : “/include/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images”, 72. filebrowserFlashUploadUrl : “/include/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash”, 73. 74. toolbar : ‘.$tool_bar.’75. 76. }’; 77. //ckeditor 선언부 78. return79. // fix: move to <HEAD… 80. ‘<script type=”text/javascript” src=”‘.INCLUDE_DIR.‘/ckeditor/ckeditor.js”></script>’ . 81. 82. // put the CKEditor 83. ‘<script type=”text/javascript”>CKEDITOR.replace(“‘.$data[‘id’].‘”, ‘ . $options . ‘);</script>’; 84.} 85.?>4. 사용 – 컨트롤러 01.<?php 02. 03.class Test extends Controller { 04. 05. function Test() 06. { 07. parent::Controller(); 08. } 09. 10. function index() { 11. //헬퍼 선언 12. $this->load->helper(‘ckeditor’); 13. if (@$_POST[‘mode’] == ‘edit’) { 14. $data[‘textarea_value’] = stripcslashes($_POST[‘textarea_id’]); 15. } else { 16. $data[‘textarea_value’] = ”; 17. } 18. $this->load->view(‘admin/test’, $data); 19. } 20.} 21.?>– 뷰 01.<input onclick=“ExecuteCommand(‘image’);” type=“button” value=“파일업로드”/> 02.<form action=“” method=“post”> 03.<input type=“hidden” name=“mode” value=“edit” /> 04.<!– 05.textarea name과 하단 form_ckeditor의 id변수 동일해야 06.textarea를 ckeditor로 대체해줍니다. 07.기존값이 있다면 <textarea></textarea>사이에 선언 08.–> 09.<textarea name=“textarea_id”><?=(@$textarea_value)?@$textarea_value:”?></textarea> 10.<input type=“submit” value=“등록” /> 11.</form> 12.<? 13.//툴바, textarea name, 에디터 폭, 에디터 높이 14.//툴바를 빈칸으로 하면 FULL 툴바가 나옵니다. 15.//현재 선언해놓은 것은 reply와 basic인데 입맛에 맞게 선언하여 사용하면 됩니다. 16.echo form_ckeditor(array( 17. ‘toolbar’ => ‘reply’, 18. ‘id’ => ‘textarea_id’, 19. ‘width’ => ‘500’, 20. ‘height’ => ‘300’21.)); 22.?> 23.<!– 24.툴바의 버튼을 외부로 뺄수도 있습니다. 25.맨 윗라인의 이미지 업로더를 버튼을 에디터 외부에 위치시키는 팁입니다. 26.–> 27.<script> 28.function ExecuteCommand( commandName ) 29.{ 30. // Get the editor instance that we want to interact with. 31. var oEditor = CKEDITOR.instances.textarea_id ; 32. 33. // Check the active editing mode. 34. if (oEditor.mode == ‘wysiwyg’ ) 35. { 36. // Execute the command. 37. oEditor.execCommand( commandName ) ; 38. } 39. else40. alert( ‘You must be on WYSIWYG mode!’ ) ; 41.} 42.</script>5. 끝 위 내용 데모는 http://hbuilder.kiissoft.com/admin/test 에서 보실 수 있습니다. |