檢視 Etherpad/外掛 的原始碼
←
Etherpad/外掛
跳轉到:
導覽
、
搜尋
根據以下的原因,您並無權限去做編輯這個頁面:
您剛才的請求只有這個使用者組的使用者才能使用:
使用者
你可以檢視並複製本頁面的原始碼。
[[分類:網路服務]] 可參考以下影片 <videoflash>-pCNSqZF1dw</videoflash> [https://www.youtube.com/watch?v=-pCNSqZF1dw 寫出第一個Etherpad外掛] ===步驟=== *可將 setting.json 中 "minify" 的設定由 true 改成 false ,方便 debug *創造 plugins 資料夾(舉例 ep_previewimages) *在資料夾中新增 packages.json ,裡面打此外掛的基本資訊(名字 作者 版本 描述 貢獻者 運行引擎),無涉外掛運用([https://etherpad.org/doc/latest/#index_plugins 範例(搜尋Package definition)])<br/> 其中 name 為外掛的名字, version 為外掛版本, description 為外掛介紹, author 為外掛作者, contributors 為貢獻者名單, dependencies 為寫程式所依賴的工具包, engines 為運行引擎。 <pre>{ "name": "ep_PLUGINNAME", "version": "0.0.1", "description": "DESCRIPTION", "author": "USERNAME (REAL NAME) <MAIL@EXAMPLE.COM>", "contributors": [], "dependencies": {"MODULE": "0.3.20"}, "engines": {"node": ">=12.13.0"} }</pre> :以 ep_previewimages 中的 packages.json 為例: <pre>{ "name":"ep_previewimages", "description":"Image previewer, paste the URL of an image or upload an image using ep_fileupload", "version":"0.0.13", "author":"johnyma22 (John McLear) <john@mclear.co.uk>", "contributors":[], "dependencies":{}, "repository":{"type":"git","url":"https://github.com/JohnMcLear/ep_previewimages.git"}, "engines":{"node":"*"} }</pre> *在資料夾中新增 ep.json ,裡面打外掛的函式介紹([https://etherpad.org/doc/latest/#index_plugins 範例(搜尋Plugin definition)]) <br/>其中 name 為外掛名字, hook 及 client hook 中會寫出外掛使用的函式及位置。 <pre>{ "parts":[ { "name":"nameThisPartHoweverYouWant", "hooks":{ "authenticate":"ep_<plugin>/<file>:functionName1", "expressCreateServer":ep_<plugin>/<file>:functionName2" }, "client_hooks":{"acePopulateDOMLine":"ep_<plugin>/<file>:functionName3"} } ] }</pre> :以 ep_previewimages 中的 ep.json 為例: <pre>{ "parts":[ { "name":"ep_previewimages", "client_hooks":{ "aceGetFilterStack":"ep_previewimages/static/js/index:aceGetFilterStack", "aceCreateDomLine":"ep_previewimages/static/js/index:aceCreateDomLine" } } ] }</pre> *最後寫出 index.js 裡面使用 javascript 語法寫出所需要的函式。 :以 ep_previewimages/static/js 中的 index.js 為例,以下為程式碼與註解: <pre>exports.aceGetFilterStack = function(name, context){ return [ // 傳回一個陣列,該陣列包含一個正則過濾器,用於將圖像URL替換為圖像 context.linestylefilter.getRegexpFilter( // 創建一個正則表達式,用於匹配圖像URL new RegExp("http.+((.[pP][nN][gG])|(.[jJ][pP][gG])|(.[gG][iI][fF])|(.[jJ][pP][eE][gG])|(.[bB][mM][pP])|(.[sS][vV][gG]))", "g"), 'image') ]; } exports.aceCreateDomLine = function(name, args){ // 如果是圖像 if (args.cls.indexOf('image') > -1) { var src; // 將class字串中的'image:圖像URL'格式替換為'image image_圖像URL' cls = args.cls.replace(/(^| )image:(\S+)/g, function(x0, space, image) { src = image; return space + "image image_" + image; }); // 使用span包裝圖像,以防止在圖像URL後輸入文本而出現錯誤 return [{ cls: cls, extraOpenTags: '<span style="display:block;"><img src="' + src + '" style="max-width:100%" /></span>', extraCloseTags:'' }]; } }</pre>
返回到
Etherpad/外掛
。
導航
個人工具
登入
名字空間
頁面
討論
變換
檢視
閱讀
檢視原始碼
檢視歷史
動作
搜尋
導覽
首頁
近期變動
隨機頁面
使用說明
工具箱
連入頁面
相關頁面修訂記錄
特殊頁面
頁面資訊