You are here: Home / Przedsięwzięcia/Projects / Projekt nowego portalu GUSTu / Edytowanie dokumentów Zope/Plone w Emacsie

Edytowanie dokumentów Zope/Plone w Emacsie

W dokumencie opisano w jaki sposób można edytować dokumenty przechowywane w systemie CMS Plone za pomocą edytora Emacs, wykorzystując protokół WebDav, do obsługi którego wykorzystywany jest program nd (BTW: nie udało mi się znaleźć binarnej wersji nd dla systemu MS Windows, nie wiem też czy opisany niżej sposób jest do zastosowania w środowisku MS Windows).

Emacs umożliwia redagowanie dokumentów na odległym serwerze przy wykorzystaniu protokołu WebDav. W tym celu należy zainstalować pakiet eldav (eldav wymaga zainstalowania pakietu apel oraz korzysta z niewielkiego programu użytkowego nd).

Instalowanie eldav i konfigurowanie Plone

Instalowanie eldav to prosta sprawa: należy rozpakować archiwa zawierająca pakiety apel oraz eldav oraz dopisać do pliku startowego, np.:

(add-to-list 'load-path "~/.emacs-local/apel-10.7/")
(add-to-list 'load-path "~/.emacs-local/eldav-0.8.1/")
(require 'eldav)

W konfiguracji Plone (etc/zope.conf), udostępniamy port ,,źródłowy'', standardowo jest to port 1980:

<webdav-source-server>
  # valid keys are "address" and "force-connection-close"
  address 1980
  force-connection-close off
</webdav-source-server>

Pliki z Plona pobieramy uruchamiając standardowe polecenie find-file (C-x-C-f) i poprzedzając dwukropkiem adres URL, np.:

:http://www.gust.org.pl:1980/doc

Należy koniecznie podać numer portu ,,źródłowego'' (w przykładzie wyżej 1980). W przeciwnym wypadku otrzymamy nienadający się do redagowania ,,prezentacyjny'' plik HTML przetworzony przez Plone. Więcej informacji na ten temat znajduje się w następnym punkcie.

Redagowanie dokumentów HTML/Plone

Aby umożliwić wyświetlanie tego samego dokumentu w różny sposób, Plone przechowuje ,,dokument źródłowy'', który podlega transformacji do ,,dokumentu prezentacyjnego'' w chwili gdy ten dokument będzie komuś potrzebny. Dokumenty źródłowe mogą być przechowywane w różnych formatach: tekst, HTML, struktured text (STX) oraz restructured text (RST). Dwa ostatnie formaty są używane, np. do dokumentowania programów w języku Python.

Edytowanie źródeł przy wykorzystaniu formatu RST (STX odrzucam od razu jako zbyt prymitywny/trudny do zastosowania) nie wydaje się sensowne: prawie nikt tego nie robi, podobno konwertery RST na HTML nie są wolne od błędów, IMHO niewiele ten format wnosi, np. w porównaniu do HTML.

Reasumując zakładam, że formatem dokumentów źródłowych jest HTML. W celu zwiększenia wygody pracy stosuję do redagowania dokumentów HTML (formalnie XHTML, ale to nie ma znaczenia) pakiet nxml. Pakiet nxsml wykorzystuje standard RNC/RNG i do walidowania dokumentu nie potrzebuje obecności deklaracji DOCTYPE (,,dokument źródłowy'' Plone akurat lepiej żeby tej deklaracji nie posiadał). Aby tryb nxml był aktywowany w momencie jego umieszczenia w buforze Emacsa na dole dokumentu, ale przed kończącymi znacznikami <body> oraz <html>, jest dodawany następującego komentarz:

<!--
Local variables:
mode: nxml
End:
  -->  
 </body>
</html>

Uwaga: komentarz trzeba umieścić przed a nie po parze znaczników zamykających body/html bo inaczej zostanie on usunięty przez Plone. Rysunek 1, “Edytowanie dokumentu XHTML w Emacsie w trybie nxml” przedstawia okno edytora Emacs zawierające przykładowy dokument.

Rysunek 1. Edytowanie dokumentu XHTML w Emacsie w trybie nxml

Edytowanie dokumentu XHTML w Emacsie w trybie nxml

Wykorzystanie Emacsa pozwala także np. na sprawdzenie poprawności gramatycznej przy wykorzystaniu pakietu flyspell. Przykładowo rysunek 1, “Edytowanie dokumentu XHTML w Emacsie w trybie nxml”, przedstawia okno edytora Emacs po wykonaniu polecenia flyspell-buffer (zwróć uwagę na podkreślony błędnie wpisany wyraz ,,wyświetlonej'').

Różne usprawnienia

Pewnym kłopotem jest umieszczanie przez Emacsa plików backup (pliki z tyldą) w tym samym katalogu co plik redagowany. Plik taki nie dość, że niepotrzebnie zajmuje miejsce, to jeszcze jest widoczny jako osobny zasób. Rozwiązaniem tego problemu może być umieszczanie plików z tyldą w oddzielnym katalogu. Aby tak było, należy umieścić w pliku konfiguracyjnym .emacs następujące polecenia:

(defun make-backup-file-name (file)
(concat "~/.emacs-backups/" 
  (file-name-nondirectory file) "~")) 

Document Actions