Org-ehtml export Org-mode files as editable web pages DESCRIPTION Org-ehtml allows for interactively viewing and editing Org-mode files through a web browser. The Emacs web server [1] serves Org-mode files as editable HTML exported with a special ox-ehtml backend which extends the standard Org-mode HTML export. [1] https://github.com/eschulte/emacs-web-server REQUIREMENTS Emacs 24.3 or later and the Emacs web server [1]. USAGE 1. Install from melpa [2] or source. [2] http://melpa.milkbox.net/ 2. Optionally run the tests suite. (require 'test-org-ehtml) (ert "org-ehtml") 3. Configure Org-ehtml to serve a directory of Org-mode files on your machine (e.g., "~/public_org"), and set all fields to be editable. ;; NOTE: the org-ehtml-docroot value should be fully expanded (setq org-ehtml-docroot (expand-file-name "~/public_org")) (setq org-ehtml-everything-editable t) 4. Start up the web server. (require 'org-ehtml) (ws-start org-ehtml-handler 8888) 5. Point your browser to [3] select a page, and move your mouse over the page. Editable portions of the page will be highlighted, click on these to edit. [3] http://localhost:8888 EXTENSIONS Integration with Version Control (require 'vc) (add-hook 'org-ehtml-after-save-hook (lambda (request) (let ((file (buffer-file-name (current-buffer)))) (vc-checkin (list file) (vc-backend file) nil "edit through org-ehtml")))) Authentication NOTE: This uses HTTP BASIC authentication which is only secure when used over a secure (HTTPS) connection. Use the `ws-with-authentication' function to protect org-ehtml functionality with credentials. For example, the following requires all edits require a user supplies the username "admin" and the password "password". (setf (cdr (assoc '(:POST . ".*") org-ehtml-handler)) (ws-with-authentication 'org-ehtml-edit-handler '(("admin" . "password")))) Agenda View Org-ehtml supports viewing the Agenda buffer. It can be enabled by setting org-ehtml-allow-agenda to a non-nil value. The agenda can be viewed by adding /agenda/CMD to the url with CMD being one of the following. day, week, fortnight, month, year: Show org-agenda-list in that range. For example [4] will show the agenda for the specified day. An additional argument can be provided to set the start date. [4] http://localhost:8888/agenda/day/2013-11-11 any natural number: Show org-agenda-list for that many days. Similar to using day, week, etc. todo: Show org-todo-list. tags: Show org-tags-view. It requires an additional argument (separated by a /) specifying the tag. Using todo as first argument will limit the search to TODO entries. For example [5] will show all headlines tagged :work: and [6] will only show headlines tagged :work: and marked TODO. [5] http://localhost:8888/agenda/tags/work [6] http://localhost:8888/agenda/tags/todo/work