檢視 Etherpad 的原始碼
←
Etherpad
跳轉到:
導覽
、
搜尋
根據以下的原因,您並無權限去做編輯這個頁面:
您剛才的請求只有這個使用者組的使用者才能使用:
使用者
你可以檢視並複製本頁面的原始碼。
[[分類:Etherpad]] ===一、安裝=== 前置準備: #一個 OS 專用於 etherpad 的帳號,如 adminNas # root 權限 安裝步驟 #先在 DS720+ 安裝 git server ,使得可以使用 git clone … 指令。 #進 OS 取得 root 權限 #cd 到 web 服務的根目錄 #git clone https://github.com/ether/etherpad-lite.git 安裝資料夾<br/>省略安裝資料夾則會安裝到 etherpad-lite 資料夾<br/>(士賢:從etherpad官網下載,再解壓縮再將資料夾上傳到伺服器)<br/>會建立安裝資料夾 #chown -R adminNas:administrators ./etherpad-lite #檢查 etherpad-lite 路徑是否沒有任何可操作之權限,若是:chmod -R 777 ./etherpad-lite #回復到 adminNas 的帳號身份 #cd etherpad-lite #bin/run.sh<br/>(士賢:src/bin/run.sh) 納入排程: #去「DSM/控制台/任務排程表/新增」 #任務名稱:可取「run etherpad」(無法用英文) #使用者帳號:adminNas #「排程/在以下日期執行/不重複」 #任務設定:「bash /volume1/web/etherpad-lite/bin/run.sh」 #回到「控制台/任務排程表」挑選剛才新增的任務,按「執行」按鈕 額外的安裝布驟: #bin/run.sh --root #export NODE_ENV=production ====debug==== 若是安裝啟動後,首頁及頁面CSS顯示出問題(跟預設不同) *可以更改setting.json的下面這行(大約在295行),將true改成false *:: "minify": true, ----->> "minify": false, *(如果為 true,則所有 css 和 js 在傳送到客戶端之前都會被縮小。) ===二、使用=== #http://網址:9001 #http://網址:9001/p/頁名 // 進入某頁 #http://網址:9001/admin // 安裝 Plugin 或編輯設定檔<br/>設定要可更改,須先「chmod 777 setting.json」 #*重新啟動:http://網址:9001/admin/settings 中有「存設定」與「重啟 Etherpad」的按鈕 #*#「存設定」按了也不會存入新的設定 #*#「重啟 Etherpad」按鈕按了可以關停 Etherpad ,但不會重新啟動。 #*管理外掛:http://網址:9001/admin/plugins #*運行資訊:http://網址:9001/admin/plugins/info #重新啟動 Etherpad : #*先利用「http://網址:9001/admin/settings」的「重啟 Etherpad」按鈕,會關停 Etherpad ,但重啟會失敗。 #*再執行「DSM / 控制台 / 任務排程表 / run2.sh」使新設定生效。 ====刪除一篇便箋(pad)==== http://網址:9001/api/1/deletePad?padID=便箋名&apikey=.......<br/>apikey 去 APIKEY.txt 中查閱 ===三、有用外掛=== ====(一)插入圖照==== :名稱:previewimages :用法:直接在便箋文中插入圖照連結,會自動調大小顯示圖照。 :補充: :#使用維基共享資源圖照時,可利用各種尺寸的縮圖 :#同一行可以插入兩個圖照連結 ====(二)插入影片==== :名稱:embedmedia :用法:安裝完會在工具列出現「Embed Media」圖示,按此圖示,輸入影片連結,可嵌入影片。 ====(三)設定字的大小==== :名稱:font_size :用法:安裝完會在工具列出現「字級尺寸」圖示,是下拉選單。先選定字串,再設定字級。 ====(四)列出所有的 pad(便箋)==== :名稱:padlist2 :用法:網址列輸入「http://網址:9001/list 」,會列出所有便箋,並可以蒐尋字串找出「便箋名」含蒐尋字串的便箋。 ====(五)可以 wiki 格式匯出單一 pad(便箋)的內容==== :名稱:mediawiki :用法:安裝完會在匯出功能中,多一個 MediaWiki。 :補充:多層文字的完整度不如預設的 Plain text ,多媒體完整度要靠預設的 Etherpad 格式(json 語法) :#多層列表只會表現出單層 :#換行不會產生空白行 :#沒有段落功能(等號) :#影片與圖照都轉成單層中括號 :#加粗轉為三個單引號 ===四、進階設定=== 編輯 settings.json ====(一)使用 MySQL 在資料==== 用多行註解註解掉: <pre>"dbType": "dirty", "dbSettings": { "filename": "var/dirty.db" },</pre> 改成: <pre>"dbType" : "mysql", "dbSettings" : { "user": "某使用者", "host": "localhost", "port": 3306, "password": "密碼", "database": "etherpad", "charset": "utf8mb4" },</pre> 在重新開etherpad前,請先去設定的MySQL資料庫(例如使用 adminer),在資料表已有其他字集內容之前,將資料表的校對字集設定(Collation)與上面"charset"相符,否則 etherpad 會無法開啟。 ====(二)須登入才能使用 Etherpad==== #"requireAuthentication": true, #"requireAuthorization": false, #"users":{} // 諸帳號 ===三、圖示=== 圖示是被做成字型使用,並且套用「Font_Awesome_5」 *由主介面看原始碼,查 button 標籤的 class 屬性,查到諸圖示類別有: *#buttonicon-bold *#buttonicon-italic *#buttonicon-underline *#buttonicon-strikethrough *#buttonicon-insertorderedlist *#buttonicon-insertunorderedlist *#buttonicon-indent *#buttonicon-outdent *#buttonicon-undo *#buttonicon-redo *#buttonicon-clearauthorship *#buttonicon-import_export *#buttonicon-history *#buttonicon-savedRevision *#buttonicon-settings *#buttonicon-embed *#buttonicon-showusers *#btn-primary *#btn-default *#chatloadmessages *由 src/static/css/pad/icons.css 中查到上述各類別的字形編碼 *由 src/static/font/fontawesome-etherpad.svg 中的各 glyph 標籤 unicode 屬性,查出其向量繪圖資料 ===四、檔案列表=== <pre>ep_<plugin>/ ├ .github/ │ └ workflows/ │ └ npmpublish.yml ◄─ GitHub workflow to auto-publish on push ├ static/ │ ├ css/ ◄─ static .css files │ ├ images/ ◄─ static image files │ ├ js/ │ │ └ index.js ◄─ static client-side code │ └ tests/ │ ├ backend/ │ │ └ specs/ ◄─ backend (server) tests │ └ frontend/ │ └ specs/ ◄─ frontend (client) tests ├ templates/ ◄─ EJS templates (.html, .js, .css, etc.) ├ locales/ │ ├ en.json ◄─ English (US) strings │ └ qqq.json ◄─ optional hints for translators ├ .travis.yml ◄─ Travis CI config ├ LICENSE ├ README.md ├ ep.json ◄─ Etherpad plugin definition ├ index.js ◄─ server-side code ├ package.json └ package-lock.json </pre> ===五、啟動解說=== <pre>#!/bin/sh MY_DIR=$(cd "${0%/*}" && pwd -P) || exit 1 cd "${MY_DIR}/../.." || exit 1 . src/bin/functions.sh exec node $(compute_node_args) src/node/server.js "$@"</pre> 這是一個 shell 腳本,它使用 Node.js 執行一個 JavaScript 文件。讓我們逐行解析: # #!/bin/sh (如何執行)<br>這是一個 shebang 行,它告訴系統用哪個解釋器來執行腳本。在這個例子中,它指定用 /bin/sh,即 Bourne shell 或其相容的 shell。 # MY_DIR=$(cd "${0%/*}" && pwd -P) || exit 1 (執行路徑設定)<br> 這行命令首先通過 ${0%/*} 獲取腳本所在的目錄,$0 表示腳本本身的路徑,${0%/*} 則是去掉文件名,只保留目錄路徑。<br> 然後使用 cd 切換到該目錄,並使用 pwd -P 獲取實際的絕對路徑,將其賦值給變量 MY_DIR。<br>如果操作失敗,則使用 exit 1 終止腳本執行並返回錯誤碼 1。 # cd "${MY_DIR}/../.." || exit 1 (切換執行路徑)<br> 切換到 MY_DIR 變量所指向的目錄的上兩級目錄。<br>如果操作失敗,則使用 exit 1 終止腳本執行並返回錯誤碼 1。 # . src/bin/functions.sh (常數參數設定)<br>使用點命令(.)來源(source)src/bin/functions.sh 文件。<br>這將執行該文件中的所有命令,並將其中定義的函數和變量導入當前腳本的環境。<br>可以使腳本中的函數(如 compute_node_args)在當前腳本中可用。 # exec node $(compute_node_args) src/node/server.js "$@" (執行伺服器)<br>這行命令與之前解釋的命令相同。<br>它在當前 shell 進程中使用 Node.js 執行 src/node/server.j 文件,並將 compute_node_args 腳本的輸出作為額外的命令行參數,再把所有其他傳遞給當前腳本的參數傳遞給 server.js 文件。 *<mwdetails><summary>第五行程式碼更詳細解說</summary>這條命令是在 Bash 環境下運行的,用於使用 Node.js 執行一個 JavaScript 文件。讓我們逐步解析這條命令: *#exec<br>exec 是一個 shell 內建命令,它用於在當前進程中執行指定的命令,而不是創建一個新的進程。<br>這意味著當你使用 exec 執行一個命令時,該命令會替換當前 shell 進程,而不是在新的子進程中運行。當命令執行完畢後,進程將終止,而不是返回到原始的 shell 進程。 *#node<br>node 是 Node.js 的命令行工具,用於執行 JavaScript 文件。<br>Node.js 是一個用於開發伺服器端應用程式的 JavaScript 運行環境。 *#$(compute_node_args)<br>這是一個命令替換(command substitution)表達式。<br>它將會執行 compute_node_args 腳本(假設它是一個可執行腳本),並將其輸出插入到當前位置。<br>這個腳本可能會計算並生成一些 Node.js 需要的參數,例如指定的 Node.js 版本、記憶體限制等。 *#src/node/server.js<br>這是要執行的 JavaScript 文件的路徑。<br>在這個例子中,這是一個 Node.js 伺服器應用程式的入口點。 *#"$@"<br>這是一個特殊的 shell 參數,代表所有傳遞給當前腳本或函數的參數。<br>在這裡,它將會把所有參數傳遞給 server.js 文件。<br>綜上所述,這條命令的功能是在當前 shell 進程中使用 Node.js 執行 src/node/server.js 文件,並將 compute_node_args 腳本的輸出作為額外的命令行參數,再把所有其他傳遞給當前腳本的參數傳遞給 server.js 文件。 </mwdetails> 總結一下,這個腳本的目的是確保在正確的目錄下執行 Node.js 伺服器應用程式,並在需要時使用額外的命令行參數。在執行過程中,它還導入了一些函數和變量,可能對腳本的後續操作有用。 ===六、參考外掛=== [https://static.etherpad.org/index.html 外掛列表]: #[https://www.npmjs.com/package/ep_embedmedia ep_embedmedia]:嵌入媒體 (youtube、vimeo 等)。 #[https://www.npmjs.com/package/ep_image_insert ep_image_insert]:可插入圖像並調整圖像大小的功能。 #[https://www.npmjs.com/package/ep_webrtc ep_webrtc]:WebRTC的音頻/視頻聊天的功能。 #[https://www.npmjs.com/package/ep_mathjax ep_mathjax]:支持 LaTeX STylee 數學公式。 #[https://www.npmjs.com/package/ep_mediawiki ep_mediawiki]:在 Etherpad 中編輯並導出為 mediawiki #[https://www.npmjs.com/package/ep_real_time_chat ep_real_time_chat]:即時聊天更新。 #[https://www.npmjs.com/package/ep_inline_voting?activeTab=readme ep_inline_voting]:添加選項以對部分文本進行投票 #[https://www.npmjs.com/package/ep_catalog_plugin ep_catalog_plugin]:etherpad目錄插件 #[https://www.npmjs.com/package/ep_align ep_align]:用於設置段落的左對齊、居中對齊、右對齊或完全對齊的功能。 #[https://www.npmjs.com/package/ep_markdown ep_markdown]:可應用 Markdown 編輯和導出。 #[https://www.npmjs.com/package/ep_font_size ep_font_size]:可改變文字大小的功能。 #[https://www.npmjs.com/package/ep_font_color ep_font_color]:可改變文字顏色的功能。 #[https://www.npmjs.com/package/ep_print_preview_pdf ep_print_preview_pdf]:列印及預覽 PDF #[https://www.npmjs.com/package/ep_print ep_print]:列印功能。 #[https://www.npmjs.com/package/ep_desktop_notifications ep_desktop_notifications]:接收聊天桌面通知。 #[https://www.npmjs.com/package/ep_themes ep_themes]:改變 theme 的不同部分的主題、樣式和顏色。 #[https://www.npmjs.com/package/ep_guest ep_guest]:限制未登錄的使用者有限的訪問許可。 #[https://www.npmjs.com/package/ep_openid_connect ep_openid_connect]:限制特定的登錄者帳號密碼 #[https://www.npmjs.com/package/ep_table_of_contents ep_table_of_contents]:表格相關] #[https://www.npmjs.com/package/ep_private_pad ep_private_pad]: 用戶註冊和登錄以管理私人pad (安裝會導致 EtherPad 無法開啟) #[https://www.npmjs.com/package/ep_tableau ep_tableau]: 出現表格選單,可以新增表格、刪除表格 ===七、參考文件=== #https://benson82208.pixnet.net/blog/post/44426446-線上多人共同編輯-etherpad-安裝 #https://docs.gandi.net/zh-hant/cloud/tutorials/etherpad_lite.html #https://gis90.github.io/articles/7544/ #http://www.unixlinux.online/unixlinux/gdliunx/linuxj/201703/96960.html #[https://cn.compozi.com/etherpad-real-time-web-based-online-collaborative-document-editor 以太墊的安裝與使用] ===附錄、DS218上共筆頁列表=== SQL 指令:SELECT `key` FROM store WHERE `key` LIKE 'pad:%' AND `key` NOT LIKE '%:revs:%' AND `key` NOT LIKE '%:chat:%' 資料表中,key 可以有如下涵意 #pad:頁名:該頁當前版本內容 #pad:頁名:revs:數字:版本 #pad:頁名:chat:數字:聊天 ====一些頁面說明:==== '''當前諸頁列表:''' <sqltbl> dbname=etherpad sql=SELECT if(char_length(`key`)>20,concat('pad:<br/>',substring(`key`,5)),`key`),caption FROM store a left join pageCaption b on a.`key`=b.page WHERE `key` LIKE 'pad:%' AND `key` NOT LIKE '%:revs:%' AND `key` NOT LIKE '%:chat:%' </sqltbl> <sqltbl> dbname=etherpad sql=SELECT page,caption,b.`key` FROM pageCaption a left join store b on a.page=b.`key` where b.`key` is null </sqltbl>
返回到
Etherpad
。
導航
個人工具
登入
名字空間
頁面
討論
變換
檢視
閱讀
檢視原始碼
檢視歷史
動作
搜尋
導覽
首頁
近期變動
隨機頁面
使用說明
工具箱
連入頁面
相關頁面修訂記錄
特殊頁面
頁面資訊