FCKEditor 是我早期一直用到現在的編輯器,該官網出了新產品 CKEditor 頗久,但一直沒時間摸,最近打算開始使用新玩具,寫下一些筆記來使用。
CKEditor 基本框架
我在 config 裡面定義了自己的 toolbar 叫 chan
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<script src="ckeditor/ckeditor.js" type="text/javascript"></script>
<script src="ckeditor/config.js" type="text/javascript"></script>
</head>
<body>
<textarea id="editor" name="editor" rows="10" cols="30"></textarea>
<script type="text/javascript">
CKEDITOR.replace('editor');
</script>
</body>
</html>
jQuery 導入
ckeditor 有整合 jQuery 的插件,可以利用 jQuery 導入。
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<script src="js/jquery-1.6.2.min" type="text/javascript"></script>
<script src="ckeditor/ckeditor.js" type="text/javascript"></script>
<script src="ckeditor/adapters/jquery.js" type="text/javascript"></script>
<script src="ckeditor/config.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$('#editor').ckeditor();
});
</script>
</head>
<body>
<textarea id="editor" name="editor" rows="10" cols="30"></textarea>
</body>
</html>
config 基本定義
CKEditor 不像 FCKEditor 是修改他預設的 js 檔案,而是自己定義一個檔案並且透過 api 決定你要使用的內容,我定義了我認為比較用的到跟客戶比較不會出錯的按鈕,並且將 enter 的預設模式改為 br,還有加上開啟圖片上傳的功能。
/*
Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.editorConfig = function( config )
{
config.toolbar = 'chan';
config.toolbar_chan =
[
{name:'document', items:['Source','-','Preview','Print']},
{name:'clipboard', items:['Cut','Copy','Paste','PasteText','PasteFromWord','-','Undo','Redo']},
{name:'editing', items:['Find','Replace','-','SelectAll','-','SpellChecker', 'Scayt']},
{name:'basicstyles', items:['Bold','Italic','Underline','Strike','Subscript','Superscript','-','RemoveFormat']},
'/',
{name:'paragraph', items:['NumberedList','BulletedList','-','Outdent','Indent','-','Blockquote','CreateDiv','- ','JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock','-','BidiLtr','BidiRtl']},
{name:'links', items:['Link','Unlink','Anchor']},
{name:'insert', items:['Image','Table','HorizontalRule','SpecialChar','PageBreak']},
'/',
{name:'styles', items:['Format','Font','FontSize']},
{name:'colors', items:['TextColor','BGColor']},
{name:'tools', items:['Maximize']}
];
config.enterMode = CKEDITOR.ENTER_BR;
config.filebrowserImageUploadUrl = 'upload.php';
// 如果你要更換外觀,只要設定 skin 即可
// 官方有 v2、office2003 以及 kama 三種預設的 skin
config.skin = 'v2';
};
toolbar 名稱翻譯,來自阿忠伺服器
Source:原始碼 Save:儲存 NewPage:開新檔案 Preview:預覽 Templates:樣版 Cut:剪下 Copy:複製 Paste:貼上 PasteText:貼為文字格式 PasteFromWord:自 word 貼上 Print:列印 SpellChecker:拼字檢查 Scayt:即時拼寫檢查 Undo:復原(上一步) Redo:重複(下一步) Find:尋找 Replace:取代 SelectAll:全選 RemoveFormat:清除格式 Form:表單 Checkbox:核取方塊 Radio:選項按鈕 TextField:文字方塊 Textarea:文字區域 Select:選單 Button:按鈕 ImageButton:影像按鈕 HiddenField:隱藏欄位 Bold:粗體 Italic:斜體 Underline:底線 Strike:刪除線 Subscript:下標 Superscript:上標 NumberedList:編號清單 BulletedList:項目清單 Outdent:減少縮排 Indent:增加縮排 Blockquote:引用文字 JustifyLeft:靠左對齊 JustifyCenter:置中 JustifyRight:靠右對齊 JustifyBlock:左右對齊 Link:插入/編輯超連結 Unlink:移除超連結 Anchor:插入/編輯錨點 Image:插入影像 Flash:插入Flash Table:插入表格 HorizontalRule:插入水平線 Smiley:插入表情 SpecialChar:插入特殊符號 PageBreak:插入分頁符號 Styles:樣式 Format:格式 Font:字體 FontSize:大小 TextColor:文字顏色 BGColor:背景顏色 Maximize:最大化 ShowBlocks:顯示區塊 About:關於 CKEditor
圖片上傳
CKEditor 的圖片上傳需要自己定義跟撰寫,個人覺得這樣比較好,提供比較大的彈性,下方是 CKEditor 上傳用 PHP 的基本架構。
// Required: anonymous function reference number as explained above. $funcNum = $_GET['CKEditorFuncNum'] ; // Optional: instance name (might be used to load a specific configuration file or anything else). $CKEditor = $_GET['CKEditor'] ; // Optional: might be used to provide localized messages. $langCode = $_GET['langCode'] ; // Check the $_FILES array and save the file. Assign the correct path to a variable ($url). $url = '/path/to/uploaded/file.ext'; // Usually you will only assign something here if the file could not be uploaded. $message = ''; echo "";
我使用了 class.upload.php 當作我的上傳套件,下方是我修改的結果。
// Required: anonymous function reference number as explained above.
$funcNum = $_GET['CKEditorFuncNum'] ;
// Optional: instance name (might be used to load a specific configuration file or anything else).
$CKEditor = $_GET['CKEditor'] ;
// Optional: might be used to provide localized messages.
$langCode = $_GET['langCode'] ;
// Usually you will only assign something here if the file could not be uploaded.
$message = '';
$url = '';
$newName = date('YmdHis'); // 新檔案名稱
$dir = 'uploads/editor/'; // 預設目錄
$width = 600; // 定義寬度
include_once 'libs/class.upload.php'; // 使用 upload class
$foo = new Upload($_FILES['upload']);
if ($foo->uploaded) {
$foo->file_new_name_body = $newName;
$foo->image_resize = true;
$foo->convert = 'jpg'; // 轉換為 jpg
$foo->jpeg_quality = 100;
$foo->image_x = $width;
$foo->image_ratio_y = true;
$foo->process($dir);
if ($foo->processed) {
$url = $dir.$newName.'.jpg';
} else {
$message = $foo->error;
}
}
echo "";
沒有留言:
張貼留言