Files
@ r38:fa115af9c367
Branch filter:
Location: public/ws-vacation/doc/index.txt
r38:fa115af9c367
13.7 KiB
text/plain
README.txt: minor fix
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 | .. -*- coding: utf-8 -*-
.. \||<-snip->|| start
.. Copyright (C) 2012, Wolfgang Scherer, <Wolfgang.Scherer at gmx.de>
.. Sponsored by WIEDENMANN SEILE GMBH, http://www.wiedenmannseile.de
..
.. This file is part of Wiedenmann Vacation.
..
.. Permission is granted to copy, distribute and/or modify this
.. document under the terms of the GNU Free Documentation License,
.. Version 1.3 or any later version published by the Free Software
.. Foundation; with no Invariant Sections, no Front-Cover Texts, and
.. no Back-Cover Texts. A copy of the license is included in the main
.. documentation of Wiedenmann Vacation.
.. (progn (forward-line 1)(snip-insert-mode "rst_t.inline-comments" t))
.. inline comments (with ws_docutils)
.. role:: rem(span)
:format: ''
.. role:: html(span)
:format: html
:raw:
.. role:: ihtml(span)
:format: html
.. role:: nhtml(span)
:format: !html
##################################################
:rem:`|||:sec:|||`\ Wiedenmann Vacation
##################################################
Web Front-End to Manage vacation(1) Settings
##################################################
.. \||<-snap->|| skip
:Author: `Wolfgang Scherer`_
.. contents::
.. \||<-snap->|| skip
.. \||<-snap->|| include ^index-header.snip$
==================================================
:rem:`|||:sec:|||`\ Purpose
==================================================
This program is a front end written in PHP to manage the vacation(1)
auto reply command.
The content of the message file $HOME/.virtual.msg can be edited in a
browser.
It is also possible to appoint another user to receive a copy of all
emails, when the vacation(1) filter is active.
The auto reply history from vacation(1) is also shown and can be
deleted.
==================================================
:rem:`|||:sec:|||`\ Screenshot
==================================================
============== =======================================================
|imageuser|_ Regular user interface:
- the user cannot be changed
- the link to the manual is omitted
|imageadmin|_ Administrator interface.
- the user can be selected
- a link to the administrator manual is shown
|imageexpert|_ *Expert Mode* active.
- *Automatic Conversion* mode no longer available
- Use **Clear** to load default message and enable
\ *Automatic Conversion* mode.
============== =======================================================
==================================================
:rem:`|||:sec:|||`\ Features
==================================================
- In *Automatic Conversion* mode the edited message is converted to a
message file using
- Content-Type: text/plain; charset="utf-8"
- Content-Transfer-Encoding: quoted-printable
Therefore international characters do not pose a problem.
- In *Expert Mode*, a preformatted mail can be used.
- If the filter is activated, file $HOME/.forward is created from the
settings, otherwise the .forward file is deleted.
- The program comes with a preconfigured sudoers(5) configuration file,
which allows the www server user to execute the vacation(1) command on
behalf of a system user.
- There is also an apache2(8) configuration file included.
==================================================
:rem:`|||:sec:|||`\ Expert Mode
==================================================
In *Expert Mode*, a preformatted mail can be used.
You can, e.g., compose a multipart/alternative mail that contains both
plain text and HTML in your favorite mail client. (Thunderbird does an
excellent job). Make sure to use character set UTF-8!
- Save the mail in a file or view the source code.
- Copy and paste the mail source into the expert text area.
- Save the mail.
- Since a standard set of inapplicable email headers is removed upon
saving, you can edit the result to clean up the rest.
.. note:: Once a mail is saved in *Expert Mode*, *Automatic
Conversion* mode is no longer available. Use the **Clear** button
to go back to the internal defaults, which also restores *Automatic
Conversion* mode.
The configuraton setting `$EXPERT_ENABLED` in `lib/config.php` allows
to globally disable *Expert Mode*.
==================================================
:rem:`|||:sec:|||`\ Source Code and Installation
==================================================
The source code is available in a mercurial repository at
`ws-vacation`_.
Clone the repository with::
$ hg clone https://bitbucket.org/wolfmanx/ws-vacation
See the `Administrator Manual`_ for installation instructions.
.. ==================================================
.. :rem:`|||:sec:|||`\ Footnotes
.. ==================================================
:html:`<hr>`
.. \[#]
.. ==================================================
.. :rem:`|||:sec:|||`\ References
.. ==================================================
.. |imageuser| image:: ws-vacation-user-t.jpg
.. _imageuser: ws-vacation-user.jpg
.. |imageadmin| image:: ws-vacation-t.jpg
.. _imageadmin: ws-vacation.jpg
.. |imageexpert| image:: ws-vacation-expert-t.jpg
.. _imageexpert: ws-vacation-expert.jpg
.. _`Administrator Manual`: README.html
.. _`ws-vacation`: https://bitbucket.org/wolfmanx/ws-vacation
.. _`full size`: http://bitbucket.org/wolfmanx/ws-vacation/raw/e60cce377e32/doc/ws-vacation.jpg
.. \||<-snap->|| include ^index-footer.snip$
:rem:`|||:sec:|||`\ **Copyright**
Copyright (C) 2012, Wolfgang Scherer, <sw@wiedenmann-seile.de>.
Sponsored by `Wiedenmann-Seile GmbH`_.
.. div::
:format: html
See section |GFDL| for license conditions for the documentation.
See section |GPL| for license conditions for the program.
.. div::
:format: !html
See *GNU Free Documentation License* in file `GFDL.txt` for license
conditions for the documentation.
See *GNU General Public License* in file `COPYING` for license
conditions for the program.
.. |GFDL| replace:: `GNU Free Documentation License`_
.. |GPL| replace:: `GNU General Public License`_
.. _`GNU Free Documentation License`: README-GFDL.html
.. _`GNU General Public License`: README-COPYING.html
.. _`Wiedenmann-Seile GmbH`: http://www.wiedenmannseile.de
.. _`Wolfgang Scherer`: sw@wiedenmann-seile.de
.. \||<-snip->|| stop
.. ==================================================
.. :rem:`|||:sec:|||`\ END
.. ==================================================
..
.. :ide-menu: Emacs IDE Main Menu - Buffer @BUFFER@
.. . M-x `eIDE-menu' ()(eIDE-menu "z")
.. :ide: DELIM: SNIPPETS (ABOUT) |q|<- SYM ->||, ||<- SYM ->||, @| SYM @
.. . (let nil (symbol-tag-normalize-delimiter (cons (cons nil "||<-") (cons "->||" nil)) t) (symbol-tag-switch-delimiter-sets) (symbol-tag-normalize-delimiter (cons (cons nil "||<-") (cons "->||" nil)) t) (setq symbol-tag-match-rx "sn[i]p") (setq symbol-tag-enclose-delimiter-set (symbol-tag-normalize-delimiter (cons (cons nil "@|") (cons "@" nil)))))
.. :ide: DELIM: SNIPPETS (DOC) ||<- SYM ->||, |: SYM :|, ` SYM `
.. . (let nil (symbol-tag-normalize-delimiter (cons (cons nil "|:") (cons ":|" nil)) t) (symbol-tag-switch-delimiter-sets) (symbol-tag-normalize-delimiter (cons (cons nil "||<-") (cons "->||" nil)) t) (setq symbol-tag-match-rx "sn[i]p") (setq symbol-tag-enclose-delimiter-set (symbol-tag-normalize-delimiter (cons (cons "\\(\\`\\|[^\\]\\)" "`") (cons "`" nil)))))
.. :ide: DELIM: SNIPPETS (SNIP DOC) ||<- SYM ->||, |: SYM :|, @ SYM @
.. . (let nil (symbol-tag-normalize-delimiter (cons (cons nil "|:") (cons ":|" nil)) t) (symbol-tag-switch-delimiter-sets) (symbol-tag-normalize-delimiter (cons (cons nil "||<-") (cons "->||" nil)) t) (setq symbol-tag-match-rx "sn[i]p") (setq symbol-tag-enclose-delimiter-set (symbol-tag-normalize-delimiter (cons (cons nil "@") (cons "@" nil)))))
.. :ide: DELIM: SNIPPETS (FILLME) ||<- SYM ->||, :: SYM ::, @ SYM @
.. . (let nil (symbol-tag-normalize-delimiter (cons (cons nil "::") (cons "::" nil)) t) (symbol-tag-switch-delimiter-sets) (symbol-tag-normalize-delimiter (cons (cons nil "||<-") (cons "->||" nil)) t) (setq symbol-tag-match-rx "sn[i]p") (setq symbol-tag-enclose-delimiter-set (symbol-tag-normalize-delimiter (cons (cons nil "@") (cons "@" nil)))))
.. :ide: DELIM: SNIPPETS (SUBST) ||<- SYM ->||, @ SYM @, @ SYM @
.. . (let nil (symbol-tag-normalize-delimiter (cons (cons nil "@") (cons "@" nil)) t) (symbol-tag-switch-delimiter-sets) (symbol-tag-normalize-delimiter (cons (cons nil "||<-") (cons "->||" nil)) t) (setq symbol-tag-match-rx "sn[i]p") (setq symbol-tag-enclose-delimiter-set (symbol-tag-normalize-delimiter (cons (cons "[^\\]" "`") (cons "`" nil)))))
.. :ide: +#-
.. . Snippet Delimiter Sets ()
.. :ide: DELIM: ReST (links) ` SYM `_, .. _` SYM `, ` SYM `
.. . (let nil (symbol-tag-normalize-delimiter (cons (cons "[^\\]" "`") (cons "`_" nil)) t) (symbol-tag-switch-delimiter-sets) (symbol-tag-normalize-delimiter (cons (cons nil ".. _`") (cons "`:" nil)) t) (setq symbol-tag-enclose-delimiter-set (symbol-tag-normalize-delimiter (cons (cons "\\(\\`\\|[^\\]\\)" "`") (cons "`" nil)))))
.. :ide: DELIM: STANDARD (GNU quoting) |: SYM :|, :: SYM ::, ` SYM '
.. . (let nil (symbol-tag-normalize-delimiter (cons (cons nil "::") (cons "::" nil)) t) (symbol-tag-switch-delimiter-sets) (symbol-tag-normalize-delimiter (cons (cons nil "|:") (cons ":|" nil)) t) (setq symbol-tag-enclose-delimiter-set (symbol-tag-normalize-delimiter (cons (cons nil "`") (cons "'" nil)))))
.. :ide: DELIM: STANDARD (ReST quoting) |: SYM :|, :: SYM ::, ` SYM `
.. . (let nil (symbol-tag-normalize-delimiter (cons (cons nil "::") (cons "::" nil)) t) (symbol-tag-switch-delimiter-sets) (symbol-tag-normalize-delimiter (cons (cons nil "|:") (cons ":|" nil)) t) (setq symbol-tag-enclose-delimiter-set (symbol-tag-normalize-delimiter (cons (cons "[^\\]" "`") (cons "`" nil)))))
.. :ide: +#-
.. . Delimiter Sets ()
.. :ide: COMPILE: render reST as LaTeX
.. . (let* ((fp (buffer-file-name)) (fn (file-name-nondirectory fp))) (save-match-data (if (string-match-t "[.][^.]*$" fn) (setq fn (replace-match "" nil t fn)))) (let ((args (concat " " fp " | ws_rst2latex.py --traceback | tee " fn ".tex"))) (save-buffer) (compile (concat "PATH=\".:$PATH\"; cat " args))))
.. :ide: COMPILE: render reST as MAN
.. . (let* ((fp (buffer-file-name)) (fn (file-name-nondirectory fp))) (save-match-data (if (string-match-t "[.][^.]*$" fn) (setq fn (replace-match "" nil t fn)))) (let ((args (concat " " fp " | ws_rst2man.py --traceback "))) (save-buffer) (compile (concat "PATH=\".:$PATH\"; cat " args))))
.. :ide: COMPILE: render reST as TXT (via MAN)
.. . (let* ((fp (buffer-file-name)) (fn (file-name-nondirectory fp))) (save-match-data (if (string-match-t "[.][^.]*$" fn) (setq fn (replace-match "" nil t fn)))) (let ((args (concat " " fp " | ws_rst2man.py --traceback | man -l -"))) (save-buffer) (compile (concat "PATH=\".:$PATH\"; cat " args))))
.. :ide: COMPILE: render reST as ODT --strip-comments
.. . (let* ((fp (buffer-file-name)) (fn (file-name-nondirectory fp))) (save-match-data (if (string-match-t "[.][^.]*$" fn) (setq fn (replace-match "" nil t fn)))) (let ((args (concat " " fp " | ws_rst2odt.py --traceback --strip-comments | cat >" fn ".odt "))) (save-buffer) (compile (concat "PATH=\".:$PATH\"; cat " args))))
.. :ide: COMPILE: render reST as LaTeX, compile PDF and view with gv
.. . (let* ((fp (buffer-file-name)) (fn (file-name-nondirectory fp))) (save-match-data (if (string-match-t "[.][^.]*$" fn) (setq fn (replace-match "" nil t fn)))) (let ((args (concat " " fp " | ws_rst2latex.py --traceback | tee " fn ".tex && pdflatex '\\nonstopmode\\input " fn ".tex' && gv " fn ".pdf"))) (save-buffer) (compile (concat "PATH=\".:$PATH\"; cat " args))))
.. :ide: COMPILE: render reST as PDF
.. . (let* ((fp (buffer-file-name)) (fn (file-name-nondirectory fp))) (save-match-data (if (string-match-t "[.][^.]*$" fn) (setq fn (replace-match "" nil t fn)))) (let ((args (concat " " fp " | ws_rst2pdf -e ws_docutils.raw_role >" fn ".pdf"))) (save-buffer) (compile (concat "PATH=\".:$PATH\"; cat " args))))
.. :ide: COMPILE: render reST as HTML
.. . (let* ((fp (buffer-file-name)) (fn (file-name-nondirectory fp))) (save-match-data (if (string-match-t "[.][^.]*$" fn) (setq fn (replace-match "" nil t fn)))) (let ((args (concat " " fp " | ws_rst2html.py --traceback --cloak-email-addresses | tee " fn ".html "))) (save-buffer) (compile (concat "PATH=\".:$PATH\"; cat " args))))
.. :ide: COMPILE: render reST as pseudoXML
.. . (let* ((fp (buffer-file-name)) (fn (file-name-nondirectory fp))) (save-match-data (if (string-match-t "[.][^.]*$" fn) (setq fn (replace-match "" nil t fn)))) (let ((args (concat " --traceback " fp " 2>&1 #| tee " fn ".pxml"))) (save-buffer) (compile (concat "PATH=\".:$PATH\"; ws_rst2pseudoxml.py " args))))
.. :ide: +#-
.. . Process ()
.. :ide: QUO: ~~ Subsubsection ~~
.. . (insert "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\:rem\:`|\:sec\:|`\\ ::fillme\::\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" )
.. :ide: QUO: -- Subsection --
.. . (insert "--------------------------------------------------\n\:rem\:`||\:sec\:||`\\ ::fillme\::\n--------------------------------------------------\n" )
.. :ide: QUO: == Section ==
.. . (insert "==================================================\n\:rem\:`|||\:sec\:|||`\\ ::fillme\::\n==================================================\n" )
.. :ide: +#-
.. . Sections ()
.. :ide: MENU-OUTLINE: `|||:section:|||' (default)
.. . (x-eIDE-menu-outline "sec" '("|:" ":|") (cons (cons "^" ".. ") (cons nil nil)) "\\(_`[^`\n]+`\\|\\[[^]\n]+\\]\\|[|][^|\n]+[|]\\|[^:\n]+::\\)")
..
.. Local Variables:
.. mode: rst
.. snip-mode: rst
.. truncate-lines: t
.. symbol-tag-symbol-regexp: "[-0-9A-Za-z_#]\\([-0-9A-Za-z_. ]*[-0-9A-Za-z_]\\|\\)"
.. symbol-tag-auto-comment-mode: nil
.. symbol-tag-srx-is-safe-with-nil-delimiters: nil
.. End:
|