From bca3da1cda39dbea5e7832cee5080cdbf401a8c1 Mon Sep 17 00:00:00 2001 From: Nic Ferier Date: Wed, 8 Aug 2012 00:59:13 +0100 Subject: [PATCH] improved default pages and config --- default-webserver-image.png | Bin 0 -> 8133 bytes default-webserver-test.html | 9 ++- default-wiki-index.creole | 106 ++++++++++++++++++++++++++++++++++++ elnode.el | 18 +++++- 4 files changed, 130 insertions(+), 3 deletions(-) create mode 100644 default-webserver-image.png diff --git a/default-webserver-image.png b/default-webserver-image.png new file mode 100644 index 0000000000000000000000000000000000000000..403b89475c595494e46ec6c7ac73845653f02429 GIT binary patch literal 8133 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 Ac>n+a literal 0 HcmV?d00001 diff --git a/default-webserver-test.html b/default-webserver-test.html index d0271f5..93f629b 100644 --- a/default-webserver-test.html +++ b/default-webserver-test.html @@ -3,13 +3,18 @@

This is Elnode's Test HTML file

If you are reading this then most likely Elnode is working ok.

-

This file is normally stored in the package directory which can be found in

+

This file is normally stored in the user's directory. It can +normally be found in:

-~/.emacs.d/elpa
+~/.emacs.d/elnode
 

To learn more about Elnode visit the website.

+

Just to show that Elnode will serve anything, here's a png:

+ + + diff --git a/default-wiki-index.creole b/default-wiki-index.creole index 2d48aef..ebfe96b 100644 --- a/default-wiki-index.creole +++ b/default-wiki-index.creole @@ -3,3 +3,109 @@ This is Elnode's Wiki. It is based on the {{{creole}}} wiki language and is written completely in EmacsLisp. +== What does it do? == + +It does syntax coloring: + +{{{ +##! emacs-lisp +(defun elnode-wiki-handler (httpcon wikiroot) + "A low level handler for Wiki operations. + +Send the Wiki page requested, which must be a file existing under +the WIKIROOT, back to the HTTPCON. + +Update operations are protected by authentication." + (elnode-method httpcon + (GET + (elnode-docroot-for wikiroot + with target-path + on httpcon + do + (if (equal target-path (expand-file-name (concat wikiroot "/"))) + (elnode-wiki-page httpcon (concat wikiroot "/index.creole")) + (elnode-wiki-page httpcon target-path)))) + (POST + (elnode-with-auth httpcon 'elnode-wiki-auth + (let* ((path (elnode-http-pathinfo httpcon)) + (text (elnode-wiki--text-param httpcon))) + (if (not (elnode-http-param httpcon "preview")) + ;; A save request in which case save the new text and then + ;; send the wiki text. + (elnode-wiki--save-request httpcon wikiroot path text) + ;; Might be a preview request in which case send back the WIKI + ;; text that's been sent. + (with-temp-file "/tmp/preview" + (insert text)) + (elnode-wiki-send httpcon "/tmp/preview" path))))))) +}}} + +It does links, for example to +[[http://github.com/nicferrier/elwikicreole|Emacs Creole]] which is +the Wiki render engine used to display pages. + +It does all the normal Wiki things like headings and lists. + +You can also do some special Emacs things, like org-mode tables: + +| Date | Amount | Description | +|------------+--------+---------------------| +| 2011-11-15 | 100.15 | Expensive lunch out | +| 2011-11-18 | 7.30 | Dry cleaning | +| 2011-11-21 | 22.50 | Takeaway curry | +|------------+--------+---------------------| +| | 129.95 | | +#+TBLFM: @5$2=vsum(@I..@II) + +and lisp callouts: + +<<( + (mapconcat + (lambda (s) + (format "* %s" s)) + '("which" "eval" "lisp" "and" "render" "the" "results") + "\n") +)>> + + +== Authentication == + +By default, the Wiki uses an authentication database in the Emacs +instance running Elnode and the Wiki server. + +If you want to add a user to the Wiki so you can edit pages you can do this in Emacs: + +{{{ +M-x elnode-auth-user-add +}}} + +and it will ask you for a username and a password. The user will be +stored in a persistent database. + + +== Where the Wiki pages are == + +By default the Elnode Wiki stores files in your {{{~/.emacs.d}}} +directory which is actually defined by the variable +{{{user-emacs-directory}}} in Emacs. + +There is normally a directory {{{elnode}}} in that directory which +contains directories for the Web server document root and the Wiki. + +The location of the Wiki files can be configured though, try: + +{{{ +M-x customize-variable [RET] elnode-wikiserver-wikiroot +}}} + +== More customization == + +There are many other things in Elnode's Wiki that can be customized, +including the header and footer. Use: + +{{{ +M-x customize-group [RET] elnode-wikiserver [RET] +}}} + +There is more to do with the Elnode Wiki server because there is so +much that Emacs can do. diff --git a/elnode.el b/elnode.el index f40f1f5..c75ca51 100644 --- a/elnode.el +++ b/elnode.el @@ -76,6 +76,18 @@ This is an alist of proc->server-process: (port . process)") +;;;###autoload +(defconst elnode-config-directory + (expand-file-name (concat user-emacs-directory "elnode/")) + "The config directory for elnode to store peripheral files. + +This is used as a base for other constant directory or file +names (the elnode auth database is a file in this directory, the +elnode webserver has a docroot directory in this directory). + +It is based on the `user-emacs-directory' which always seems to +be set, even when emacs is started with -Q.") + ;; Error log handling @@ -2333,7 +2345,11 @@ off the standard webserver indexing in elnode's webserver." (elnode--dir-setup elnode-webserver-docroot elnode-webserver-docroot-default "default-webserver-test.html" - "test.html")) + "test.html") + (elnode--dir-setup elnode-webserver-docroot + elnode-webserver-docroot-default + "default-webserver-image.png" + "emacs.png")) (defun elnode-url-encode-path (path) "Return a url encoded version of PATH.