Added MkDocs files

This commit is contained in:
Stefan Ritt 2025-10-02 10:36:57 +02:00
parent 1272bc14f7
commit a17089c1c7
75 changed files with 13644 additions and 0 deletions

442
mkdocs/docs/adminguide.md Normal file
View File

@ -0,0 +1,442 @@
# ELOG Administrator's Guide  
*How to set up and run your very own ELOG server*
---
## Installing and running on Linux  
### Installation from the RPM file
Since version 2.0, ELOG contains a RPM file which eases the
installation. Get the file
**`elog-x.x.x-x.i386.rpm`** from the `[download](http://elog.psi.ch/elog/download/RPMS/)` section and execute as root **`"rpm -i elog-x.x.x-x.i386.rpm"`**. This will install the `**elogd**` daemon in **`/usr/local/sbin`** and the **`elog`** and **`elconv`** programs in **`/usr/local/bin`**. The sample configuration file **`elogd.cfg`** together with the sample logbook will be installed under **`/usr/local/elog`** and the documentation goes to **`/usr/share/doc`**. The elogd startup script will be installed at **`/etc/rc.d/init.d/elogd`**. To start the daemon, enter `
- `/etc/rc.d/init.d/elogd start`
It will listen under the port specified in
**`/usr/local/elog/elogd.cfg`** which is 8080 by default. So one can
connect using any browser with the URL:
- `http://localhost:8080`
To start the daemon automatically, enter:
- `chkconfig --add elogd`
`chkconfig --level 345 elogd on`
which will start the daemon on run levels 3,4 and 5 after the next
reboot.
Note that the RPM installation creates a user and group **`elog`**,
under which the daemon runs.
To start the daemon on non-RedHat systems, like SuSE or Solaris, a more
generic startup scrips has been provided by Steve Jones in the
[Contributions](http://elog.psi.ch/elogs/Contributions/9) section.
### Installation from the tarball
[Download](http://elog.psi.ch/elog/download/) the latest
**`elog-x.x.x.tar.gz`** package.`
Make sure you have the **libssl-dev** package installed. Consult your
distribution for details.
Expand the compressed TAR file with
**`tar -xzvf elog-x.x.x.tar.gz`**. This creates a subdirectory **`elog-x.x.x`** where x.x.x is the version number. In that directory execute **`make`**, which creates the executables **`elogd`**, **`elog`** and **`elconv`**. On some systems like OpenBSD you have to execut **`gmake`**. These executables can then be copied to a convenient place like **`/usr/local/bin`** or **`~/bin`**. Alternatively, a **`"make install"`** will copy the daemon **`elogd`** to **`SDESTDIR`** (by default **`/usr/local/sbin`**) and the other files to **`DESTDIR`** (by default **`/usr/local/bin`**). These directories can be changed in the Makefile. The **`elogd`** executable can be started manually for testing with : `
`elogd -p 8080`
where the **-p** flag specifies the port. Without the **-p** flag, the
server uses the standard WWW port 80. Note that ports below 1024 can
only be used if **`elogd`** is started under root, or the "*sticky
bit*" is set on the executable.
When **`elogd`** is started under root, it attaches to the specified
port and tries to fall-back to a non-root account. This is necessary to
avoid security problems. It looks in the configuration file for the
statements **`Usr`** and **`Grp.`**. If found, **`elogd`** uses that
user and goupe name to run under. The names must of course be present on
the system (usually **`/etc/passwd` and **`/etc/group`). If the
statements **`Usr`** and **`Grp.`** are not present, **`elogd`** tries
user and group **`elog`**, then the default user and group (normally
**`nogroup`** and **`nobody`**). Care has to be taken that **`elogd`**,
when running under the specific user and group account, has read and
write access to the configuration file and logbook directories. Note
that the RPM installation automatically creates a user and group
**`elog`**.
If the program complains with something like "*cannot bind to
port*...", it could be that the network is not started on the Linux
box. This can be checked with the **`/sbin/ifconfig`** program, which
must show that **`eth0`** is up and running.
The distribution contains a sample configuration file **`elogd.cfg`**
and a demo logbook in the *demo* subdirectory. If the **`elogd`** server
is started in the *elogd-x.x.x* directory, the demo logbook can be
directly accessed with a browser by specifying the URL
**http://localhost:8080** (or whatever port you started the elog daemon
on). If the **`elogd`** server is started in some other directory, you
must specify the full path of the **`elogd`** file with the **"-c"**
flag and change the **Data dir =** option in the configuration file to a
full path like **/usr/local/elog**.
Once testing is complete, **`elogd`** will typically be started with the
**`-D`** flag to run as a *daemon* in the background, like this :
`elogd -p 8080 -c /usr/local/elog/elogd.cfg -D`
*Note that it is mandatory to specify the full path for the **`elogd`**
file when started as a daemon.*
To test the daemon, connect to your host via :
`http://your.host:8080/`
If port 80 is used, the port can be omitted in the URL. If several
logbooks are defined on a host, they can be specified in the URL :
`http://your.host/<logbook>`
where `<logbook>` is the name of the logbook.
The contents of the all-important configuration file **`elogd.cfg`** are
described in [Config](config.md).
## Notes for various platforms
This section contains notes for installing and running elog under various operating systems.
### Mac OS X
Under Mac OSX, **ELOG** must be compiled from the source code. The OSX
command line tools (compiler & Co) must be available, which can be done
thought he free Xcode package which can be obtained though the App
Store. Once Xcode is installed, you can do a `xcode-select --install` to
install the command line tools. After that, a simple `make` in in the
elog directory does the job of compiling ELOG. If SSL support is needed
(access via https://\...), you have to install OpenSSL and turn on SSL
support in the Makefile by setting `USE_SSL = 1`. You can install
OpenSSL for example through the [MacPorts](https://www.macports.org)
project. After having installed MacPorts, you do a
`sudo port install openssl`.
After successful compilation, you do a `sudo make install` to install
all required files under the installation directory, which is by default
`/usr/local/`. A subdirectory `/usr/local/elog` is created which
contains a simple example logbook. The ELOG server can now be started
either manually with
`/usr/local/sbin/elogd`
or through the daemon servics with
``` text
sudo launchctl enable system/ch.psi.elogd
sudo launchctl bootstrap system /Library/LaunchDaemons/ch.psi.elogd.plist
```
To stop the service, use
``` text
sudo launchctl bootout system /Library/LauchDaemons/ch.psi.elogd.plist
sudo launchctl disable system/ch.psi.elogd
```
### Debian
A Debian package is available under <https://tracker.debian.org/pkg/elog>.
### Solaris
[Martin Huber](mailto:huber@secaron.de) reports that under Solaris 7 the
following command line is needed to compile elog:
`gcc -L/usr/lib/ -ldl -lresolv -lm -ldl -lnsl -lsocket elogd.c -o elogd`
With some combinations of Solaris servers and client-side browsers there
have also been problems with **ELOG**'s *keep-alive* feature. In such a
case you need to add the "**-k**" flag to the **`elogd`** command line
to turn keep-alives off.
### FreeBSD
[David Otto](mailto:ottodavid@gmx.net) maintains the [ELOG port for
FreeBSD](http://www.freshports.org/www/elog). To install ELOG on a
FreeBSD system, you can simply type
``` text
cd /usr/ports/www/elog
make install clean
```
## Running elogd under Apache  
For cases where **`elogd`** should run under port 80 in parallel to an
Apache server, Apache can be configured to run Elog in a subdirectory of
Apache. Start **`elogd`** normally under port 8080 (or similarly) as
noted above and make sure it's working there. Then put following
redirection into the Apache configuration file:
``` text
Redirect permanent /elog http://your.host.domain/elog/
ProxyPass /elog/ http://your.host.domain:8080/
```
Make sure that the Apache modules mod_proxy.c and mod_alias.c are
activated. Justin Dieters \<enderak@yahoo.com\> reports that
mod_proxy_http.c is also required. The *Redirect* statement is necessary
to automatically append a "/" to a request like
**`http://your.host.domain/elog`**. Apache then works as a proxy and forwards all requests staring with **`/elog`** to the elogd daemon.
**Note**: Do not put `"ProxyRequests On"` into your configuration file.
This option is not necessary and can be misused for spamming and proxy
forwarding of otherwise blocked sites.
Because **`elogd`** uses links to itself (for example in the email
notification and the redirection after a submit), it has to know under
which URL it is running. If you run it under a proxy, you have to add
the line:
`URL = http://your.proxy.host/subdir/`
into elogd.cfg.
## Using apache authentication
It is also possible to login via an apache-auth module.
In elogd.cfg you should use the keyword "Webserver" for
Authentication:
`Authentication = Webserver`
This triggers elogd to use the environment variable "X-Forwarded-User"
as the logged in user.
A simple example of a apache configuration (including the proxy) is :
``` text
# this required to pass on the generated env-variable X-Forwarded-User to the proxy
ProxyPassInterpolateEnv On
ProxyPass /elog/ http://your.host.domain:8080/
<Location "/elog">
Order allow,deny
Allow from all
AuthType Basic
AuthName "elog-server"
AuthUserFile "/opt/elog/htpasswd"
require valid-user
RequestHeader unset Authorization
RequestHeader add X-Forwarded-User %{REMOTE_USER}s
# elog doesn't like the '@', so we need to cut it
RequestHeader edit X-Forwarded-User "@(.*)$" ""
</Location>
```
## Installing ImageMagick  
When images are attached to ELOG entries, thumbnails can be created for
quick preview. This works also for PDF and PostScript files. ELOG
forwards any image operation to the ImageMagic and GhostScript packages,
which must be installed for this to work. While these packages are
installed on most Linux systems, windows users have to download and
install these pagages manually. ImageMagick can be obtained from
[www.imagemagick.org](http://www.imagemagick.org/) and GhostScript can
be obtained from <http://pages.cs.wisc.edu/~ghost/>. After the
installation, it has to be made sure that both packages are in the path.
This can be checked to open a command prompt and typing
**`identify -version`**. This command should return someting like:
``` text
C:\>identify -version
Version: ImageMagick 6.3.8 01/25/08 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2008 ImageMagick Studio LLC
```
When ELOG is started interactively, it checks for the ImageMagick
installation and shows a note if it is found:
``` text
C:\Program Files\ELOG>elogd
elogd 2.7.2 built Feb 21 2008, 20:00:42 revision 2051
ImageMagick detected
Indexing logbooks ... done
Server listening on port 8080 ...
```
If ImageMagick is not installed, the thumbnail functions are simply
disabled, but ELOG can otherwise run normally.
## Installing and running in Windows  
**ELOG** is distributed in binary (executable) form for Windows
platforms. It will run happily in *console mode* (or "*DOS box*")
under Windows 9x and ME. Under Windows NT and 2000 it is also possible
to run it as a *service* (the Windows equivalent of a UNIX *daemon*).
[Download](http://elog.psi.ch/elog/download/windows) the latest
**`elogxxx.exe`** file and execute it. The installer puts the **ELOG**
system into a directory you specify and adds some menu shortcuts. With
these shortcuts, the daemon `elogd.exe` can be started directly and the
demo logbook can be accessed with the browser. Alternatively, the
`elogd.exe` daemon can be registered as a service under Windows
NT/2000/XP, so it gets started automatically when windows boots. This
can be selected during installation or be done manually with the start
menu shortcuts.
While the pre-2.5.3 methods of installing elogd.exe as a daemon (namely
FireDaemon and srvany.exe) are still possible, they are not recommended
any more.
Under Windows, the ports below 1024 can be used without restriction. So
if no web server is running on the same PC the **ELOG** daemon can be
started under the standard Web port 80. This is achieved by changing the
**`port=8080`** option in `elogd.cfg` to
**`port=80`**` and restarting elogd.`
## Server Configuration  
[The **ELOG** daemon **`elogd`** can be executed with the following
options :]{#config}
``` text
elogd [-p port] [-n hostname/IP] [-C] [-m] [-M] [-D] [-c file] [-s dir] [-d dir] [-v] [-k] [-f file] [-x]
with :
`-p <port>`  TCP port number to use for the http server (if other than 80)
`-n <hostname or IP address>` in the case of a "multihomed" server, host name or IP address of the interface ELOG should run on
`-C <url>`  clone remote elogd configuration 
`-m`  synchronize logbook(s) with remote server
`-M`  synchronize with removing deleted entries
`-l <logbook>`  optionally specify logbook for -m and -M commands
`-D`   become a daemon (Unix only)
`-c <file>`  specify the configuration file (full path mandatory if -D is used)
`-s <dir>` specify resource directory (themes, icons, \...)
`-d <dir>` specify logbook root directory
`-v  ` verbose output for debugging
`-k  ` do not use TCP keep-alive
`-f <file>` specify PID file where elogd process ID is written when server is started
`-x  `enables execution of shell commands
```
The appearance, functionality and behaviour of the various logbooks on
an **ELOG** server are determined by the single **`elogd.cfg`** file in
the **ELOG** installation directory.
This file may be edited directly from the file system, or from a form in
the **ELOG** Web interface (when the *Config* menu item is available).
In this case, changes are applied dynamically without having to restart
the server. Instead of restarting the server, under Unix one can send a
HUP signal like **`"killall -HUP elogd"`** to tell the server to re-read
its configuration.
The many options of this unique but very important file are documented
on the separate **[elogd.cfg syntax page](config.md)**.
To better control appearance and layout of the logbooks, **`elogd.cfg`**
may optionally specify the use of additional files containing HTML code,
and/or custom "*themes*" configurations. These need to be edited
directly from the file system right now.
The meaning of the directory flags **`-s` and **`-d` is explained in the
section covering the configuration options **`Resource dir` and
**` Logbook dir` in the **[elogd.cfg
description](config.md)**.********
## Secure Connections HOWTO  
### Using elogd itself
Starting from version 2.7.3 on, the **`elogd`** program supports secure
connections over the Secure Socker Layer (SSL) directly. **It is
recommented to run elog only through secure HTTPS connections if
passwords are used. Otherwise the passwords are send over the network in
clear text and exposed to sniffing attacks**. To use SSL, put
**`SSL = 1`** into the config file. If the **`URL =`** directive is
used, make sure to use
**`https://...`** instead of **`http://...`** there. The ELOG distribution contains a simple self-signed certificate in the `**ssl**` subdirectory. One can replace this certificate and key with a real ceritficate to avoid browser pop-up windows warning about the self-signed certificate. `
### Using Apache
Another possibility is to use the [Apache](http://httpd.apache.org) web
server as a proxy server allowing secure connections. To do so, Apache
has to be configured accordingly and a certificate has to be generated.
See some [instructions](http://slacksite.com/apache/certificate.html) on
how to create a certificate, and see *Running elogd under Apache* before
on this page on how to run elogd under Apache. Once configured
correctly, elogd can be accessed via *http://your.host* and via
*https://your.host* simultaneously.
The redirection statement has to be changed to
``` text
Redirect permanent /elog https://your.host.domain/elog/
ProxyPass /elog/ http://your.host.domain:8080/
```
and following has to be added to the section *"VirtualHOst \...:443* in
/etc/httpd/conf.d/ssl.conf:
``` text
# Proxy setup for Elog
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /elog/ http://host.where.elogd.is.running:8080/
ProxyPassReverse /elog/ http://host.where.elogd.is.running:8080/
```
Then, following URL statement has to be written to elogd.cfg:
`URL = https://your.host.domain/elog`
There is a more detailed step-by-step instructions at the [contributions
section](http://elog.psi.ch/elogs/contributions/11).
### Using ssh
**`elogd`** can be accessed through a a SSH tunnel. To do so, open an
SSH tunnel like:
`ssh -L 1234:your.server.name:8080 your.server.name`
This opens a secure tunnel from your local host, port 1234, to the
server host where the **`elogd`** daemon is running on port 8080. Now
you can access **`http://localhost:1234`** from your browser and reach
**`elogd`** in a secure way.
## How It All Works  
For the technically curious:
The concept of **ELOG** is very simple. The logbook functionality is
implemented by a single daemon program, **`elogd`**, which is written in
C. It contains an integrated Web server, which does not serve files like
standard Web servers, but reads logbook entries from its database and
formats them into HTML. Since only forms and tables are used, no Java or
Javascript is necessary, which makes the logbook display very fast. The
system does not use any images on purpose to reduce the amount of data
to be transferred. Since the **ELOG** daemon contains its own *http*
server, no additional server like Apache is required.
The "*database*" in which **ELOG** saves its entries is in plain ASCII
format. One file is created for each day in the form **`YYMMDDa.log`**
(where YY is the year, MM the month and DD the day). For ELOG versions
1.x.x, the format was **`YYMMDD.log`**. Messages are separated
internally by the string **`$@MID@$`**. If this string is entered in a
message (main body text or attribute), it gets converted automatically
in order not to invalidate the database structure.
If attachments are submitted, they are saved as separate files named
**`YYMMDD_HHMMSS_name`** - where in addition to the date the time is
specified and **`name`** is the original file name of the attachment. To
copy the database to another computer, only the \*.log files and the
attachment files need to be copied. To copy for example all files from
March 2001, just select them with **`0103??a.log`** and **`0103??_*`**.

2419
mkdocs/docs/config.md Normal file

File diff suppressed because it is too large Load Diff

4
mkdocs/docs/contrib.md Normal file
View File

@ -0,0 +1,4 @@
# ELOG Contributions
ELOG contributions can now be found in a [separate logbook](http://elog.psi.ch/elogs/Contributions)

3
mkdocs/docs/demo.md Normal file
View File

@ -0,0 +1,3 @@
# Demo
A dedicated [Demo Logbook](https://elog.psi.ch/elogs/Linux+Demo) is available as a playground.

48
mkdocs/docs/download.md Normal file
View File

@ -0,0 +1,48 @@
# ELOG download page  
---
ELOG is distributed both as source code and as precompiled binaries for
various platforms. In addition to major versions, minor releases are
made containing bug fixes or some new and not yet completely debugged
code. This is usually the case if some user asks for some new features,
which are then implemented and sent to the user for testing. The minor
releases are named **`x.y.z-r`** where **`r`** is the release number. A
[web access](https://bitbucket.org/ritt/elog) to the source code
contains the complete development history of ELOG, plus the newest fixes
and features which might yet be in a release. To check out the GIT
repository, use:
`git clone https://bitbucket.org/ritt/elog --recursive`
No tags are used, so it is recommended to always use the newest release
from the \"master\" branch.
Building elogd requires the CMake system and is done in the traditional
way:
``` text
$ cd elog
$ mkdir build
$ cd build
$ cmake ..
$ make
```
This will put the executables **`elogd`** and **`elog`** into the build
directory, from where they can be moved to a system directory like
**`/usr/local/sbin/elogd`**
News for each version can be seen in the
[changelog](http://elog.psi.ch/elog/download/ChangeLog)
## Windows Binaries
The windows binaries are distributed with an automatic
[installer](http://elog.psi.ch/elog/download/windows/elog-latest.exe).
Execute the installer to install ELOG and to register the elogd server
as a windows service. Previous windows versions can be found
[here](http://elog.psi.ch/elog/download/windows/).
Note that the windows binaries are very much outdated and will be
updated once the develop gets access again to a Windows PC.

388
mkdocs/docs/faq.md Normal file
View File

@ -0,0 +1,388 @@
# ELOG FAQ  
**Frequently Asked Questions about usage and configuration**
Please check also the [ELOG Forum](http://elog.psi.ch/elogs/Forum).
------------------------------------------------------------------------
## How does one configure elog to display the last message by default
One can use the **`Start page`** option for that. The entry:
` Start page = 0?cmd=last `
shows the last message entry by default. To have the described behaviour
for all logbooks, the above statements can be placed in the
**`[global]`** section.
## Are there any plans to implement a MySQL back end?
No. The idea behind **ELOG** is that it is a *simple to use, simple to
install* application. Many people use **ELOG** under Windows, and they
even don't know what MySQL means. Other people like the flat file
database format, because it's simple, easily accessible from other
programs, and it's easy to backup certain days or months of the
database (since the filenames contain the date). Since **ELOG** should
be independent of any other package, some "switchable" backend between
native **ELOG** format and MySQL would be needed, which is lots of work
and not planned right now.
However, there are several contributions from other people who wrote
scripts to put ELOG entries into a MySQL database. One is available at
<http://elog.psi.ch/elogs/Forum/387>.
## Can I run the ELOG daemon from inside Apache or any other Web server?
No. The **ELOG** daemon was designed as a standalone server and it will
stay like that in the future. The reason for that is that **`elogd`**
should not rely on any other software. This is for example important for
many people running **`elogd`** under Windows, and they have no clue how
to install Apache for Windows. The installation and maintenance for
**`elogd`** therefore becomes much simpler. To run **`elogd`** in
parallel to an Apache server on port 80, use Apache as a proxy,
following the instruction on the installation page ("Running elogd
under Apache").
## I can access my logbook without any password, isn't that a security problem?
By default, no password is used in **ELOG**. This can be useful for
public directories etc. that anybody should be able to read. To add
password security, read the documentation under [Access
control](config.md#access-control). The recommended setup is password file
security with guest access.
Note that passwords are transferred over the network in plain text and
therefore not secure. If this is a problem, a
[secure](adminguide.md#secure-connections-howto) network connection should be used.
## I want a bookmark pointing to the last page where an attribute has a certain value
Use the URL:
`http://<your.host>/<logbook>/?cmd=Last&<attribute>=<value>`
This executes the "*Last*" command using a filter with
**`<attribute>=<value>`**. The following command displays the same page,
but also locks the attribute (checks the box next to `<attribute>`) so
that browsing (next, previous, first, last) only shows pages with that
attribute value.
`http://<your.host>/<logbook>/?cmd=Last&<attribute>=<value>&l<attribute>=1`
Note the `"l"` before the second attribute, as in `"*lAuthor=1*"`.
## I want a logbook with public read access (no password), but restricted write access
In an old version of the FAQ it has been stated here that one has to use
two logbooks pointing to the same data directory. From Version 2.0.6 on,
this can be accomplished much easier by the usage of the **"Guest menu
command"**. Use a logbook with user level access (password file), and
add menu lists like in the following example to the configuration file:
``` text
Menu commands = New, Edit, Reply, Find, Last 10, Change password, Logout, Help
Guest menu commands = Find, Last 10, Login, Help
```
If users access the logbook without supplying a user name, they are
treated like "guests" and see the "Guest menu commands", with which
one cannot submit or edit logbook entries. If one hits the "login"
button, a user can login with a user name/password and sees the normal
menu commands, with which one can submit new logbook entries.
An optional self registration is possible by specifying
` Self register = 1 `
in the configuration file. New users can then create their own accounts.
## I have many loogbooks with password files, so if I add a user or want to change a password I have to do this for all logbooks which is painful.
You can have several logbooks point to the same password file. So if you
change a user or password in that file, it becomes automatically
available in all logbooks which use that file.
## How can I configure ELOG such that it displays something else than the message list by default?
There is a simple trick. You use the **"*Start page*"** option in the
**`elogd`** file to redirect the start page to something else. Here are
some examples:
``` text
?npp=5 for the last 5 messages
?last=7 show last 7 days (week)
?cmd=New show the new message entry form
?cmd=Find Show the "find" page
?cmd=Search&<attrib>=<value> for a search with <attrib>=<value>
```
The various URLs can be copied from the browser's address bar when
doint various things there.
## I want to have additional commands specific to my lookbook
New commands can be added for example with the
**`"Bottom text = bottom.html"`** option. To display all messages from
last week and month of with "category = info", one can put following
HTML code in bottom.html:
```
<center>
<a href="?last=7&Category=Info">Info from last week</a> |
<a href="?last=31&Category=Info">Info from last month</a> |
</center>
```
Note that the parameters **`"last=7&Category=Info"`** applies a filter on
the display. You can learn how to make these filters by looking at the
URL in your browser when you submit a find command with certain
options.
## How does one configure elog to disable editing of existing messages? I want a logbook where one can enter messages but not change them afterwards.
This works with the option **`Menu commands`**. By default, the menu
commands **` Back, New, Edit, Delete, Reply, Find, Config, Help`** are
dispalyed and allowed. To avoid editing (and deleting) of existing
messages, one removes the two commands and puts following statement into
**`elogd.cfg`:**
`Menu commands = Back, New, Reply, Find, Config, Help`
This prohibits the execution of the commands "Edit" and "Delete".
## How can I track various revisions of a message using the "edit" command?
There are two ways:
- Add an attribute which keeps the revision dates and names as follows:
``` text
Attributes = Author, ..., Revisions
Locked attributes = Revisions
Subst on Edit Revisions = $Revisions<br>$date by $long_name
```
The "Revisions" attribute cannot be modified manually (since it's
locked). On each edit, the date and the current author is appedned to
the previous revisions. The "\<br\>" puts a line break between the
entries.
- Create a thread for each entry. In addition of having the date and
author of different revisions, the message content is kept. To revise
and entry, one hits "Reply" instead of "Edit" (one can disable the
"Edit" command for example). If one puts following option into the
configuration file:
`Reply string = ""`
then the reply contains the original message without the usual "\> "
at the beginning of each line. One can then edit the message and
submit it. In the threaded message list display, one sees then the
different revisions as a message thread.
## How can I enter a date which is different from current one?
Usually, the current date/time is recorded when you add a new entry. It
might be, however, that one wants to enter "old" entries, or some
entries with a date in the future (like a to-do list with a due date).
To do that, on can add a new attribute (let's call it *Record date*, to
be different from the pre-defined *Date*:
``` text
Attributes = Author, ..., Record date
Type Record date = date
Preset Record date = $date
Date format = %Y %m %d
List Display = Record date, Author, ...
Start page = ?rsort=Record date
```
The *Preset Record date* statement sets the record date to the current
date, but this can then of course edited during the message entry. The
*List Display* and *Start page* statements show the record date as the
first column in the summary display and also sort by that. Note the
*Date format* showing first year, then month and day. This is necessary
since sorting is done only lexically. Please note that the *List
Display* was renamed recently. Prior to version 2.3.10, it was called
*Display Search*.
## I cannot pass the login page, it's always redisplayed even if I put in the right password?
This can happen if you change the login policy, for example move the
**`Password file =`** entry in the configuration file from a logbook
section to the \[global\] section or back. In that case some old cookies
could be stored in your browser, which confuse the system. Please delete
your cookies in the browser to resolve this problem. Read your browser
documentation on how to do that.
## How can I change an attribute for an entire thread? We have an attribute "open problem/fixed" which should be changed for the whole thread if that problem has been fixed.
This is a typical request of a bug-tracking set-up. Someone enters a
request, opening a new thread. The expert(s) reply to the the request,
and after a while, the request gets satisfied or the problem gets fixed.
If an attribute like "status", having the options "open" and
"fixed" could get changed for the whole thread, on could very easily
search for all "open" problems.
Since this functionality is not implemented, an alternative strategy is
recommended: Implement two (or more) logbooks. The first logbook has
open issues, the second one has fixed ones. When an entry changes state,
it simply has to be copied to the second logbook. This can be done by
defining the menu command "move" in the config file, like:
`Menu commands = Back, New, Edit, Delete, Reply, Find, Move to, Config, Help`
Note the additional ***Move to***. This solution is even more elegant
than having attributes changed in whole threads, since one has two
separate logbooks, and can treat the second one more like an archive,
make separate back-ups, or deleting some entries after some time, while
keeping the open issues untouched.
## Can I use RSS feeds with password protected logbooks?
RSS feeds normally only work for logbooks which have at least public
read access (via the guest menu commands). There is however a way to
allow only restricted read access and still use RSS feeds. This is done
by adding an additional read password via the
**`elogd -r <pwd> -l <logbook>`** command. This password (username may
be any) can then be used in an RSS reader for restricted access. One
reader which has been successfully used with this kind of authentication
is [RSSReader](http://www.rssreader.com).
## How can I make a whole thread open or closed?
Sometime people want to mark a whole thread in a way. An example is a
to-do list, where they want a special icon on high priority things, and
have this icon disappear one the task is finished. This can be easily
done with icons. The configuration could look like this:
``` text
Attributes = Author, Status, Subject
IOptions Status = icon1.gif, icon2.gif, icon4.gif
Preset Status = icon4.gif
Preset on reply status = icon2.gif
Icon comment icon1.gif = Closed entry
Icon comment icon4.gif = Open entry
Thread display = $Author $Subject
Thread icon = Status
```
New entries get an exclamation mark icon for example ("Preset status =
..."). Replies to this entry get a reply icon. Once the thread should
be closed, one simple edits the top entry in that thread and changes the
icon. The icon1.gif from the distribution is maybe not ideally suited
for that, but one could make a green check mark icon for example for
that. The "Thread display" and "Thread icon" make this icon appear
at the left side of the threaded display.
An alternative approach would be to use two logbooks. The first one
receive all new entries ("open items"). Once an entry (with its
replies) gets closed, it must be moved manually to the second logbook
("closed items"). This can be done with the "Move To" command (see
"menu commands" in config file). This way one nicely separates open
and closed items in two separate logbooks. One can still search both
logbooks at the same time if one checks "Search all logbooks" in the
find page.
Starting from elog version 2.7.7, there now even a third way to do this.
With an additional line in the configuration file: Collapse tn last = 1
(in fact the default, but to be explicit), then when the thread is ready
to be marked as closed, select the "closed entry" icon when writing
the last entry. When the entries are viewed in "threaded" mode, then
the closed entry icon appears on the last entry; and when in "threaded,
collapsed" mode, then the closed entry icon appears in the one line
that represents that whole thread.
## Does elog have a spell checker?
No, but you can use any spell checker which works with your browser.
Examples are [IESpell](http://www.iespellc.com) for Internet Explorer
and [SpellBound](http://spellbound.sourceforge.net) for Mozilla-based
browsers.
## Why are entries with large attachments submitted so slowly?
If email notifications are used, the ELOG program has to pass these
attachments to the email server, which might take quite some time. Some
email servers even don't allow to forward attachments if they are
larger than a few mega bytes. In that one can simply turn off the
forwarding of email attachments with
`Email format = 111`
this causes only the attachment names being forwarded, not the
attachments themselves.
## The elgod daemon crashes from time to time, what can I do?
Bugs are constantly fixed inside elogd so a upgrade to the current
version is recommended as a first measrue. If that does not help, the
key will be the reproducibility of the crash. I only can fix problems if
I can reproduce them. Sometimes it's related to strange logbook entries
which cause elogd to crash when they are edited. So if there is a way to
reproducible trigger the problem, I need the files and confiration
related with it. If I can reproduce it in my local installation, I can
fix it pretty soon.
If that is not possible, an alternative is to run elgod under a
debugger, and do a stack trace if the program dies. Under linux, this
can be done using the gdb debugger, which might look like this:
``` text
[~/elog]$ gdb ./elogd
GNU gdb Red Hat Linux (6.5-25.el5rh)
...
(gdb) run
Starting program: /afs/psi.ch/user/r/ritt/elog/elogd
elogd 2.7.5 built Dec 2 2008, 10:47:09 revision 2147
ImageMagick detected
Indexing logbooks ... test
Program received signal SIGSEGV, Segmentation fault.
0x08054beb in el_index_logbooks () at src/elogd.c:3892
3892 *p = (char)1;
(gdb) where
#0 0x08054beb in el_index_logbooks () at src/elogd.c:3892
#1 0x080b8774 in server_loop () at src/elogd.c:27565
#2 0x080bbdd5 in main (argc=1, argv=0xbfee5b54) at src/elogd.c:28923
(gdb)
```
So the basic command is to make a stack trace with "where" after a
segmentation fault. This tells me where in the code something wrong
happened (in this case it was inside the function el_index_logbooks() at
line 3892. Please send me this information and I will try then to figure
out what was wrong.
## How can I create an ELOG entry automatically from a script?
The [User's
Guide](userguide.md#elog-command-line-client) describes the standalone "elog"
utility, which can be used from a script or from another program to
submit an automatic email entry. This works locally or remotely, with
optional attachments. Enter "elog -h" for a full list of options. The
elog utility is part of the distribution and resides in the same
directory as the elogd daemon.
## I want to notify different people for different things, how do I set up this?
Assume you want to send an email notification to person A for a problem
report, to person B for problem fix and so on. The simplest way is to
use the `Email <attribute> <value> = <email address>` syntax. So you
could set-up following configuration:
``` text
Attributes = Author, Type
Options Type = Problem Report, Problem Fix
Email Type Problem Report = person.a@elog.com
Email Type Problem Fix = person.b@elog.com
```
If you want to select email addresses directly from a list, you can do
the set-up as following: Attributes = Author, Notify MOptions Notify =
Person A, Person B Email Notify Person A = person.a@elog.com Email
Notify Person B = person.b@elog.com This way you can for each entry
select one or more people to be notified from the pre-defined list.

3
mkdocs/docs/forum.md Normal file
View File

@ -0,0 +1,3 @@
# Forum
A dedicated [discussion forum](https://elog.psi.ch/elogs/Forum) running elog itself is used for various feedback and questions around elog.

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
mkdocs/docs/img/elog.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
mkdocs/docs/img/hierarchy.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 KiB

BIN
mkdocs/docs/img/rss.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

BIN
mkdocs/docs/img/sync.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
mkdocs/docs/img/tabs.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
mkdocs/docs/img/theme1.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
mkdocs/docs/img/theme2.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

144
mkdocs/docs/index.md Normal file
View File

@ -0,0 +1,144 @@
# The ELOG Home Page  
Home of the *Electronic Logbook* package by [Stefan
Ritt](mailto:Stefan.Ritt@psi.ch)
*Current version: 3.1.4*
---
## What is ELOG ?  
**ELOG** is part of a family of applications known as **weblog*s* .
Their general purpose is :
1. to make it easy for people to put information online in a
chronological fashion, in the form of short, time-stamped text
messages ("entries") with optional HTML markup for presentation,
and optional file attachments (images, archives, etc.)
2. to make it easy for other people to access this information through
a Web interface, browse entries, search, download files, and
optionally add, update, delete or comment on entries.
**ELOG** is a remarkable implementation of a *weblog* in at least two
respects :
- its simplicity of use : you don't need to be a seasoned server
operator and/or an experimented database administrator to run **ELOG**
; one executable file (under Unix or Windows), a simple configuration
text file, and it works. No Web server or relational database
required. It is also easy to translate the interface to the
appropriate language for your users.
- its versatility : through its single configuration file, **ELOG** can
be made to display an infinity of variants of the *weblog* concept.
There are options for what to display, how to display it, what
commands are available and to whom, access control, etc. Moreover, a
single server can host several **weblog*s*, and each *weblog* can be
totally different from the rest.
## Screen shots  
<a href="elog/elog.gif" target="_blank">
<img src="img/elog_thumb.gif" alt="thumb" style="float:left; margin:0 1em 1em 0; width:200px;">
</a>
On the left upper panel is a typical logbook page displayed by Netscape Navigator. Each
logbook page can contain attachments in a similar way to emails. This makes it possible
to store images or text files and retrieve them easily. You could for example attach a sample
configuration file which can later be copied to the local machine with the "*Save As\...*"
function of the Web browser.
Several logbooks can be served though a single **ELOG** server. Each logbook can use different
attributes for its entries. The logbook can then be searched using these attributes. The
right pane on the left image shows a search for all entries with attribute "*Type*" equal to
"*Configuration*", and the lower pane shows the search result. It is also possible to use
full-text search in attributes and the entry body.
While logbook entries are usually displayed one entry per page, they can also be listed
consecutively which makes it easy to produce a paper printout of a logbook.
Logbook pages can be edited or deleted. This feature can be turned off in the configuration
file so that a logbook entries cannot be changed after being submitted.
An additional feature is the automatic generation of a notification email messages
based on a certain type or category of a logbook entry.
Also try out the **[online demo](http://elog.psi.ch/elogs/Linux%20Demo/)**
## Use cases  
The features of **ELOG** make it useful for several applications:
- **Personal Logbooks**. Personal notes can be written into **ELOG** and
can then be retrieved from anywhere with a Web browser. This makes it
handy for PC supporters who have to go around in companies or
laboratories and don\'t want to carry their paper logbook with them.
The same holds true for people traveling around a lot. The logbook
database consists of plain ASCII files which can copied easily between
different computers to have local access, for example on a notebook
with no network connection.
- **Shared Logbooks**. Logbooks can be shared by several people, for
reading and optionally for writing. This way workgroups can share and
exchange information like in a (simplified) news group. This is
supported by the *Reply* command in **ELOG** which creates
"*threads*" of entries. Users can be notified by email when new
entries are added to the logbook. Compared to that of a news server,
the installation of **ELOG** is much simpler.
- **Small Databases**. Since arbitrary attributes can be defined for a
logbook, it can be used as a small database with search facilities.
- **Problem collections**. A system can consist of two logbooks, in one
of which users enter bugs or problems. If someone adds a problem, an
email is automatically sent to the administrator, who can then copy
the entry to the second logbook and add the solution to the problem.
Users can then look up all fixed problems.
- **Shift Logbooks**. If the *Allow delete* and *Allow edit* flags are
off, an entry cannot be modified once it\'s been entered. This can be
useful for shift logbooks for example in accelerator control rooms
where each entry becomes a "*document*" with a time and author
stamp. **ELOG** was originally developed as a shift logbook for the
[PiBeta](http://pibeta.psi.ch) and [Muegamma](http://meg.psi.ch)
particle experiments at [PSI](http://www.psi.ch).
- **File collections**. Since files can be attached to **ELOG** entries,
the system can be used to store and retrieve files. This can be used
to store configuration files, which need to be accessible by several
people over the web, or to store images. Since **ELOG** features an
elaborate query facility, entries can be searched for by specifying
several categories.
## License  
**ELOG** is released under the [GNU Public
License](http://www.gnu.org/copyleft/gpl.html) .
## Credits  
The author would like to give credits to following people:
- [Fred Pacquier](mailto:fredp@dial.oleane.com) for this Web site and
the French translation
- [Recai Oktas](mailto:roktas@omu.edu.tr) and [Roger
Kalt](mailto:roger.kalt@psi.ch) for the Debian package
- [djek](mailto:djek@xs4all.nl) for the Dutch translation
- [Heiko Scheit](mailto:Heiko.Scheit@mpi-hd.mpg.de) for many bug fixes
and fruitful discussions
- [Julio Calvo](mailto:jhcalvo@arnet.com.ar) for the Spanish translation
- [Emiliano 'AlberT' Gabrielli](mailto:AlberT@SuperAlberT.it)
for his idea of scaling attached images
- [Andreas Luedeke](mailto:andreas.luedeke@psi.ch)
for continuing user support and deployment of ELOG at PSI
## Talks and presentations  
Here are some talks and presentations given at various occasions:
- Seminar at KIT, Karlsruhe, Jan. 2015. [Introduction
talk](https://elog.psi.ch/elog/talks/2015_1_intro.pptx) by Stefan
Ritt.
- Seminar at KIT, Karlsruhe, Jan. 2015. [Application of
ELOG](http://elog.psi.ch/elog/talks/2015_1_accel.pptx) for accelerator
operation at PSI by [Andreas Luedeke](mailto:andreas.luedeke@psi.ch).
---
*Content by [Stefan Ritt](https://www.psi.ch/en/ltp-muon-physics/people/stefan-ritt), Web pages
by [Fred Pacquier](mailto:fredp@mygale.org)*

270
mkdocs/docs/strftime.txt Normal file
View File

@ -0,0 +1,270 @@
NAME
strftime - convert date and time to a string
SYNOPSIS
#include <time.h>
size_t strftime(char *restrict s, size_t maxsize,
const char *restrict format, const struct tm *restrict
timeptr);
DESCRIPTION
The strftime() function shall place bytes into the array pointed to by
s as controlled by the string pointed to by format. The format is a
character string, beginning and ending in its initial shift state, if
any. The format string consists of zero or more conversion specifica-
tions and ordinary characters. A conversion specification consists of
a â%â character, possibly followed by an E or O modifier, and a termi-
nating conversion specifier character that determines the conversion
specificationâs behavior. All ordinary characters (including the ter-
minating null byte) are copied unchanged into the array. If copying
takes place between objects that overlap, the behavior is undefined.
No more than maxsize bytes are placed into the array. Each conversion
specifier is replaced by appropriate characters as described in the
following list. The appropriate characters are determined using the
LC_TIME category of the current locale and by the values of zero or
more members of the broken-down time structure pointed to by timeptr,
as specified in brackets in the description. If any of the specified
values are outside the normal range, the characters stored are unspec-
ified.
Local timezone information is used as though strftime() called
tzset().
The following conversion specifications are supported:
%a Replaced by the localeâs abbreviated weekday name. [ tm_wday]
%A Replaced by the localeâs full weekday name. [ tm_wday]
%b Replaced by the localeâs abbreviated month name. [ tm_mon]
%B Replaced by the localeâs full month name. [ tm_mon]
%c Replaced by the localeâs appropriate date and time representa-
tion. (See the Base Definitions volume of
IEEE Std 1003.1-2001, <time.h>.)
%C Replaced by the year divided by 100 and truncated to an inte-
ger, as a decimal number [00,99]. [ tm_year]
%d Replaced by the day of the month as a decimal number [01,31]. [
tm_mday]
%D Equivalent to %m / %d / %y . [ tm_mon, tm_mday, tm_year]
%e Replaced by the day of the month as a decimal number [1,31]; a
single digit is preceded by a space. [ tm_mday]
%F Equivalent to %Y - %m - %d (the ISO 8601:2000 standard date
format). [ tm_year, tm_mon, tm_mday]
%g Replaced by the last 2 digits of the week-based year (see
below) as a decimal number [00,99]. [ tm_year, tm_wday,
tm_yday]
%G Replaced by the week-based year (see below) as a decimal number
(for example, 1977). [ tm_year, tm_wday, tm_yday]
%h Equivalent to %b . [ tm_mon]
%H Replaced by the hour (24-hour clock) as a decimal number
[00,23]. [ tm_hour]
%I Replaced by the hour (12-hour clock) as a decimal number
[01,12]. [ tm_hour]
%j Replaced by the day of the year as a decimal number [001,366].
[ tm_yday]
%m Replaced by the month as a decimal number [01,12]. [ tm_mon]
%M Replaced by the minute as a decimal number [00,59]. [ tm_min]
%n Replaced by a <newline>.
%p Replaced by the localeâs equivalent of either a.m. or p.m. [
tm_hour]
%r Replaced by the time in a.m. and p.m. notation; in the POSIX
locale this shall be equivalent to %I : %M : %S %p . [
tm_hour, tm_min, tm_sec]
%R Replaced by the time in 24-hour notation ( %H : %M ). [
tm_hour, tm_min]
%S Replaced by the second as a decimal number [00,60]. [ tm_sec]
%t Replaced by a <tab>.
%T Replaced by the time ( %H : %M : %S ). [ tm_hour, tm_min,
tm_sec]
%u Replaced by the weekday as a decimal number [1,7], with 1 rep-
resenting Monday. [ tm_wday]
%U Replaced by the week number of the year as a decimal number
[00,53]. The first Sunday of January is the first day of week
1; days in the new year before this are in week 0. [ tm_year,
tm_wday, tm_yday]
%V Replaced by the week number of the year (Monday as the first
day of the week) as a decimal number [01,53]. If the week con-
taining 1 January has four or more days in the new year, then
it is considered week 1. Otherwise, it is the last week of the
previous year, and the next week is week 1. Both January 4th
and the first Thursday of January are always in week 1. [
tm_year, tm_wday, tm_yday]
%w Replaced by the weekday as a decimal number [0,6], with 0 rep-
resenting Sunday. [ tm_wday]
%W Replaced by the week number of the year as a decimal number
[00,53]. The first Monday of January is the first day of week
1; days in the new year before this are in week 0. [ tm_year,
tm_wday, tm_yday]
%x Replaced by the localeâs appropriate date representation. (See
the Base Definitions volume of IEEE Std 1003.1-2001, <time.h>.)
%X Replaced by the localeâs appropriate time representation. (See
the Base Definitions volume of IEEE Std 1003.1-2001, <time.h>.)
%y Replaced by the last two digits of the year as a decimal number
[00,99]. [ tm_year]
%Y Replaced by the year as a decimal number (for example, 1997). [
tm_year]
%z Replaced by the offset from UTC in the ISO 8601:2000 standard
format ( +hhmm or -hhmm ), or by no characters if no timezone
is determinable. For example, "-0430" means 4 hours 30 minutes
behind UTC (west of Greenwich). If tm_isdst is zero, the
standard time offset is used. If tm_isdst is greater than zero,
the daylight savings time offset is used. If tm_isdst is nega-
tive, no characters are returned. [ tm_isdst]
%Z Replaced by the timezone name or abbreviation, or by no bytes
if no timezone information exists. [ tm_isdst]
%% Replaced by % .
If a conversion specification does not correspond to any of the above,
the behavior is undefined.
If a struct tm broken-down time structure is created by localtime() or
localtime_r(), or modified by mktime(), and the value of TZ is subse-
quently modified, the results of the %Z and %z strftime() conversion
specifiers are undefined, when strftime() is called with such a bro-
ken-down time structure.
If a struct tm broken-down time structure is created or modified by
gmtime() or gmtime_r(), it is unspecified whether the result of the %Z
and %z conversion specifiers shall refer to UTC or the current local
timezone, when strftime() is called with such a broken-down time
structure.
Modified Conversion Specifiers
Some conversion specifiers can be modified by the E or O modifier
characters to indicate that an alternative format or specification
should be used rather than the one normally used by the unmodified
conversion specifier. If the alternative format or specification does
not exist for the current locale (see ERA in the Base Definitions vol-
ume of IEEE Std 1003.1-2001, Section 7.3.5, LC_TIME), the behavior
shall be as if the unmodified conversion specification were used.
%Ec Replaced by the localeâs alternative appropriate date and time
representation.
%EC Replaced by the name of the base year (period) in the localeâs
alternative representation.
%Ex Replaced by the localeâs alternative date representation.
%EX Replaced by the localeâs alternative time representation.
%Ey Replaced by the offset from %EC (year only) in the localeâs
alternative representation.
%EY Replaced by the full alternative year representation.
%Od Replaced by the day of the month, using the localeâs alterna-
tive numeric symbols, filled as needed with leading zeros if
there is any alternative symbol for zero; otherwise, with lead-
ing spaces.
%Oe Replaced by the day of the month, using the localeâs alterna-
tive numeric symbols, filled as needed with leading spaces.
%OH Replaced by the hour (24-hour clock) using the localeâs alter-
native numeric symbols.
%OI Replaced by the hour (12-hour clock) using the localeâs alter-
native numeric symbols.
%Om Replaced by the month using the localeâs alternative numeric
symbols.
%OM Replaced by the minutes using the localeâs alternative numeric
symbols.
%OS Replaced by the seconds using the localeâs alternative numeric
symbols.
%Ou Replaced by the weekday as a number in the localeâs alternative
representation (Monday=1).
%OU Replaced by the week number of the year (Sunday as the first
day of the week, rules corresponding to %U ) using the localeâs
alternative numeric symbols.
%OV Replaced by the week number of the year (Monday as the first
day of the week, rules corresponding to %V ) using the localeâs
alternative numeric symbols.
%Ow Replaced by the number of the weekday (Sunday=0) using the
localeâs alternative numeric symbols.
%OW Replaced by the week number of the year (Monday as the first
day of the week) using the localeâs alternative numeric sym-
bols.
%Oy Replaced by the year (offset from %C ) using the localeâs
alternative numeric symbols.
%g , %G , and %V give values according to the ISO 8601:2000 standard
week-based year. In this system, weeks begin on a Monday and week 1 of
the year is the week that includes January 4th, which is also the week
that includes the first Thursday of the year, and is also the first
week that contains at least four days in the year. If the first Monday
of January is the 2nd, 3rd, or 4th, the preceding days are part of the
last week of the preceding year; thus, for Saturday 2nd January 1999,
%G is replaced by 1998 and %V is replaced by 53. If December 29th,
30th, or 31st is a Monday, it and any following days are part of week
1 of the following year. Thus, for Tuesday 30th December 1997, %G is
replaced by 1998 and %V is replaced by 01.
If a conversion specifier is not one of the above, the behavior is
undefined.
RETURN VALUE
If the total number of resulting bytes including the terminating null
byte is not more than maxsize, strftime() shall return the number of
bytes placed into the array pointed to by s, not including the termi-
nating null byte. Otherwise, 0 shall be returned and the contents of
the array are unspecified.
ERRORS
No errors are defined.
COPYRIGHT
Portions of this text are reprinted and reproduced in electronic form
from IEEE Std 1003.1, 2003 Edition, Standard for Information Technol-
ogy -- Portable Operating System Interface (POSIX), The Open Group
Base Specifications Issue 6, Copyright (C) 2001-2003 by the Institute
of Electrical and Electronics Engineers, Inc and The Open Group. In
the event of any discrepancy between this version and the original
IEEE and The Open Group Standard, the original IEEE and The Open Group
Standard is the referee document. The original Standard can be
obtained online at http://www.opengroup.org/unix/online.html .

407
mkdocs/docs/userguide.md Normal file
View File

@ -0,0 +1,407 @@
# ELOG User's Guide  
*How to get the most from your ELOG server*
------------------------------------------------------------------------
## A Quick Intro 
**ELOG** is part of a family of applications known as *weblogs*. Their
general purpose is :
1. to make it easy for people to put information online in a
chronological fashion, in the form of short, time-stamped text
messages ("*entries*") with optional HTML markup for presentation,
and optional file attachments (images, archives, etc.)
2. to make it easy for other people to access this information through
a Web interface, browse entries, search, download files, and
optionally add, update, delete or comment on entries.
**ELOG** is a remarkable implementation of a *weblog* in at least two
respects :
- its simplicity of use : you don\'t need to be a seasoned server
operator and/or an experimented database administrator to run **ELOG**
; one executable file (under Unix or Windows), a simple configuration
text file, and it works. No Web server or relational database
required. It is also easy to translate the interface to the
appropriate language for your users.
- its versatility : through its single configuration file, **ELOG** can
be made to display an infinity of variants of the *weblog* concept.
There are options for what to display, how to display it, what
commands are available and to whom, access control, etc. Moreover, a
single server can host several **weblog*s*, and each *weblog* can be
totally different from the rest.
This is actually a problem when writing a User's Guide, because
**ELOG** servers, and individual **weblogs** on one server, can vary
wildly in appearance and functionality\... This guide only attempts to
cover the main concepts of importance for **ELOG** users, describing
the default "*out-of-the-box*" setup and how that behaviour may have
been modified by the server administrator.
## What Words Mean Here 
Just to be clear, some definitions of terms that will be used throughout
the guide :
- **ELOG server** : the machine on which the **ELOG** server is run. Its
operating system (Windows/Unix/Linux) and status (server/desktop) are
not important, and of course it will probably do many other things
besides.
- **ELOG administrator** : the person who has the authority to modify
the **ELOG** configuration file on the server. May be an actual system
administrator, a normal user of a server, or just the owner of a
Windows PC.
- **logbook** : a *weblog* made available by the **ELOG** server. There
may be many distinct such logbooks on one server.
- **entry** : the individual piece of information in a logbook. Can be
as basic as a text message with a time-stamp, or carry much more
information : attributes (see below), HTML markup, links, attached
files\...
## Accessing an ELOG server and its logbook(s) 
To access a logbook, point your Web browser at the appropriate URL. The
default for a local Elog is **`http://localhost:8080/logbookname`**.
Logbook files are stored in directory **`logbookname`** which is a
sub-directory of the logbook root directory, defined by the
administrator. See the administrator guide on how to create a new
logbook.
If several logbooks are defined on the server, the entry page may be a
list of all logbooks, with their descriptions, number of entries, and
links to enter the logbook you want to use.
Alternatively, you may be taken directly to a specific logbook. By
default you will see a list of entries, but the administrator may have
defined a different "*default view*" for the logbook, like the list of
the day\'s entries, or directly display the last entry, etc. (depending
on what is most convenient for that logbook\'s purpose).
Each entry in a logbook is identified by an unique ID, which is last
part of the URL when that message is displayed. This ID might be used to
create a bookmark in a browser pointing directly to a specific entry.
There are four ways through which access to a logbook may be controlled:
it may be open for all to read ; it may require a common "*read*"
password for all users ; it may require each user to have an individual
user account (login name) and password ; finally, access may be granted
or not depending on the address of the workstation you are using.
## Viewing information in ELOG 
There are two main viewing modes in a logbook :
- the "**entry**" view : this is when only one entry is displayed on
screen (like the latest entry when you first enter a logbook, or if
you click on one in a list). Here are the various parts of the display
:
- if there are several logbooks on the **ELOG** server you will see a
row of "*tabs*" at the top with the names of all the logbooks.
These are link that allow to switch quickly between logbooks (*this
may be disabled*).
- below is a title bar with the name of the current logbook at the
left, and the **ELOG** logo at the right. If you are logged in,
there will be a "`Logged in as <username>`" reminder in between.
- next is the "*menu bar*" : on the left is a series of links or
buttons for **ELOG** commands available to you. These are explored
in the sections below (*Note: different users may see different
menus*). On the right is a "*VCR-like*" set of buttons for
browsing, also explained later (*this may be disabled*).
- after these comes the actual entry information. It always starts
with the entry time-stamp, and may be followed by up to twenty
"*attributes*". These are like fields in a database and have been
defined specifically for the current logbook. Each attribute has a
checkbox besides it, explained below (*this may be disabled*).
- the full-width box below holds the textual content (message) of the
entry. This can be plain-text or HTML code. Note that for some
special applications (say, a photo album or an event log) the
attributes and/or the attached files may be enough information, so
this field may not always be present.
- last and optionally, one or more attached files (that were uploaded
to the server when the entry was created) are offered as clickable
links for download or viewing, along with the file name and size. If
these are images they may be displayed directly on the page.
At the bottom of every page is a common "*footer*" for the
logbook. By default this is just a link to the **ELOG** home page in
Switzerland, but may be customized locally (typically to provide a
navigation bar and links for integration with other Web sites).
- the "**search result**" views : these are basically lists of
entries, resulting either from a "*Search*" command or from
shortcuts such as "*Last X days*" and "*Last X entries*" commands
(more on this below). This mode has many options, including :
- a "*summary*" view : one entry per row in a table. Some attributes
may not be displayed. If the entry text is displayed (or its first
few lines), it goes into the rightmost column. Attachments are not
displayed.
- a "*classical weblog*" view : entries appear beneath one another,
with attributes on one line and the text (and attachments, if
present) below. Images may be displayed or just linked to.
- entries may appear most recent first, or in reverse.
- menus on list views are different from the entry view menu. By
default they only have two or three commands, but they may have been
customized by the administrator to add more.
All these lists have a number to the left of each listed entry, that
is a link to the corresponding entry view.
## Browsing around and finding things 
There are several interesting ways to peruse the information in a
logbook :
- **weblogs**" are often used for applications where chronology (time) is
relevant, so a very common approach is to see "*what happened
last*". In **ELOG** there are two commands for this. They are
actually shortcuts for searches, to display the last day\'s (24 hrs)
entries, or the last 10 entries (regardless of age). Note that the
menus on the "*search result*" views of these commands are a bit
special : they have the same command that created them, but with the
search "*interval*" doubled. From the "*last day*" list you can
get the "*last 2 days*" list, from that one the "*last 4 days*",
etc., and similarly for "*last 10*", "*last 20*", etc., making it
easy to quickly go back in time.
- another useful method, very specific to **ELOG**, is "*filtered
browsing*" - again, shortcuts for specific searches. On the entry
view, the "*VCR*" buttons normally let you see the previous, next,
first or last entry in the logbook. However, if on the current entry
you check one (or more) of the checkboxes in front of the attributes,
only entries having the same value for the checked attribute(s) will
be displayed by the browse buttons. Thus you can quickly flip through
all the entries you submitted yourself, or of a certain type/category,
depending on what attributes have been defined.
- for custom searches there is the query form given by the "*Find*"
command. This lets you look for entries between two dates, with
particular values for any attribute, or containing specific text. If
you fill in several fields, only entries that meet **ALL** criteria
will be selected. Possible options include sort order and summary view
for results, printer-friendly formatting, displaying attachments or
not, and searching through all logbooks on the **ELOG** server (if
applicable).
## Adding stuff to a logbook 
If you have "*write access*" to a logbook (by one of the same four
methods as for read access), then you may use the "*New*", "*Edit*",
"*Reply*" and "*Delete*" commands.
For the quality of the information committed to the logbook, you need
understand and use these as well as possible. Here are some of the
important features for each commmand :
- **New** :
- you will not be able to save your entry if all attributes marked
with a red star (\*) are not filled in.
- some attributes may be pre-filled from system variables (like your
user name). Pre-filled attributes may be still editable or read-only
(like the entry creation date).
- attributes may be text fields (limited to 100 characters),
list-boxes (max. 100 values), or check-boxes. There is also a
special type of attribute where several values are listed on a line
with check-boxes, and you can check as many values as needed.
- a nice touch : URLs in attributes (http://\..., ftp://\...,
mailto:\...) are automatically converted to links.
- in addition to the above URLs, one can enter a tag **elog:\<id\>**
which references another logbook entry. The tag
**elog:\<logbook\>/\<id\>** references a message in another logbook
on the same server. The tag **elog:\<id\>/\<n\>** references
attachment number **n** in a logbook entry. To reference an
attachment in the current message, one uses **elog:/\<n\>**. An
anchor inside an entry can be referenced with
**elog:\<id\>#\<anchor\>**.
- the Text multi-line field, if present, may be pre-filled with a
template if entries need to have a common, consistent format across
the logbook (especially for HTML). There may also be a comment
inserted before it to explain local rules and conventions, upload
rules, etc.
- check the "*Submit as HTML*" box if the entry contains HTML
markup.
- a logbook may be configured to send a notification e-mail to various
recipients each time an entry is submitted. This may be the default
behaviour, and you should check "*Suppress notification*"" if it is
not wanted. Or it may be checked by default, and you need to
explicitely uncheck it to send the mail. Then again, you may not
have a choice\... (note that notifiation recipients may or may not
be disclosed).
- if the logbook allows attachments, there will be a number of fields
with "*Browse*" buttons at the bottom of the form. Use these to
pick one or more files on your local computer, they will be uploaded
to the **ELOG** server as you submit the form. IMPORTANT : there is
an upper limit on the size of individual attached files. By default
it is about 1 MB but can be changed by the administrator.
- **Edit** :
- normally the Edit form will have all the values of the existing
entry in its fields for modification. However, sometimes you may see
fields that have been blanked if this makes sense for a particular
logbook application (e.g. a "*Last modified by*" field).
- the "*Submit as new entry*" checkbox only appears on Edit forms.
If it is unchecked, the modified entry keeps its original creation
time-stamp. If it is checked, the modified entry becomes the latest
in the logbook, as if it had just been created. Again, it is
possible that this is checked by default, or disabled altogether on
some logbooks.
- managing attachments through this form is easy. If all you want to
change is the attributes or text, don\'t touch the fields at the
bottom and the original attachments will be preserved. If you want
to add an additional attachment, use an empty field. If you want to
update an existing file, use the "*Browse*" button below that
file\'s name to specify the new one. Lastly, if you want to delete
an attachment without upoading a new one in its place, you must type
the magic word "`<delete>`" in the field below its name.
- **Reply** :
- this command creates a new entry, but with the current entry\'s text
"*quoted*" (with \'\>\') in the compose form, much like when
replying to e-mail.
- the new entry has a special "*In reply to*" attribute with a link
to the original entry ; the latter also acquires a "*Reply*"
attribute with a link to the new entry. Unfortunately these links
cannot be trusted in the present **ELOG** storage system, and the
whole scheme gets somewhat confusing when there are several replies.
- **Delete** :
- nothing much to say about this one, except that there is no
"*Recycle bin*" or whatever : once you have confirmed the deletion
of an entry, it\'s gone for good, so be careful ! (same holds for
the replacement or deletion of an attached file).
## Misc. tips & tricks, things to be aware of\... 
- you can link directly to a specific entry by its URL, using the
message ID (from another entry or an external Web page). It is also
possible to link to a search result this way: use the "*Search*"
form to compose a query that will result in exactly what you want
(either a single entry or a list of entries). Copy the URL for that
result page from your browser, and use that as the target for your
link.
- right now you cannot search entries for attachments by their file
name.
- right now attributes that consist of just a checkbox ("*boolean*")
can only be searched by "*checked*" state in the "*Search*" form.
However, if you start from an entry where that attribute is unchecked,
you can use "*filtered browsing*" to flip through all other entries
where it is also unchecked.
- as mentioned above, the "*Reply*" command only provides a basic
comment/chat facility - a full-blown discussion board is not
**ELOG**'s purpose. If a logbook has a very specific purpose and
format (picture gallery, event log, file library etc.) it might be a
good idea to disable that command there and move all
chat/comments/discussions to a separate, dedicated logbook to avoid
"*visual pollution*".
- it is important to understand that currently the **ELOG** server
application is "*single-process*" and "*non-streaming*". In normal
terms this means that :
- only one request is processed at any one time by the server.
- uploading or downloading an attachement file is a single request,
and causes the entire file to be loaded in server memory while the
request is being processed.
This is not normally a problem for the sort of short, text-mode
entries **ELOG** is designed to support. However, if a user starts
to upload or download a large attachment file (or image) over a slow
link, all other users on that **ELOG** server will have to wait for
that transfert to finish before they can access any logbook on that
server. This is why there is a low limit on the size of attachments,
and why **ELOG** should not be used to distribute large files under
intensive multi-user conditions.
- It is possible to use bookmarks to pre-populate various attributes
when submitting an **ELOG** entry. This can be useful if the same
person often creates similar entries from the same PC. For example,
with a bookmark of the form:
http://your.host/your_logbook/?cmd=New&pauthor=joe&ptype=Info
\...a new entry is created, with the "*author*" field pre-populated
with "*joe*" and the "*Info*" value preselected for the "*type*"
field. The same is possible for any attribute defined in the logbook
(note the leading "p"). Thus you can define a set of bookmarks for
various types of logbook entries.
## elog command line client
In addition to submission of logbook entries through the Web interface, the standalone "*client*" program **`elog`** can be used.
The parameters are:
``` text
elog <parameters>
-h <hostname> Hostname where elogd is running
[-p port] Port where elogd is running
[-d subdir] URL Directoy where elogd is running
-l logbook Name of logbook
-s Use SSL for communication
[-v] For verbose output
[-w password] Write password defined on server
[-u username password] User name and password
[-f <attachment>] Up to 50 attachments
-a <attribute>=<value> Up to 50 attributes
[-r <id>] Reply to existing message
[-q] Quote original text on reply
[-e <id>] Edit existing message
[-x] Suppress email notification
[-n 0|1|2] Encoding: 0:ELcode,1:plain,2:HTML
-m <textfile>] | <text>
```
Arguments with blanks must be enclosed in quotes. The elog message can
either be submitted on the command line, piped in like
`cat text | elog -h ... -l ... -a ...`
or in a file with the -m flag. Multiple attributes and attachments can
be supplied. If attributes with multiple possible values are defined
in a logbook (via the *"MOptions"* keyword), they can be separated
with a "\|", like **`-a "<attribute>=<value1> | <value2>"`**. The
message text can be supplied directly at the command line or submitted
from a file with the **`-m`** flag.
The **`elog`** program makes it possible to submit logbook entries
automatically by the system or from scripts. In some shift logbooks
this feature is used to enter alarm messages automatically into the
logbook.
## RSS Feed
RSS (RDF Site Summrary or Really Simple Syntication) is a web feed
format to publish frequently new or updated ELOG entries. This is a bit
like the email notifications present in ELOG, but the RSS system does
not go through an email reader, but through a dedicated RSS reader. This
helps to seperate ELOG updates form other email or spam. An RSS
"channel" can be subscribed to, so one gets notified whenever a new or
updated entry exists. One can either use a dedicated RSS reader or
aggregator, or use the RSS functionality of a web browser, such as
Firefox or Google Reader.
To obtain the RSS feed, one simply has to request the file
**`elog.rdf`** from a logbook. For the ELOG forum, one can enter the URL
[`https://elog.psi.ch/elogs/Forum/elog.rdf`](https://elog.psi.ch/elogs/Forum/elog.rdf)
The browser then offers the possiblity to subscribe to that logbook:
![](img/rss.png)
In case of "Live Bookmarks" in Firefox, new logbook entries
automatically appear in the bookmark list:
![](img/live_bookmarks.png)
Standalone RSS reader can also notify the user of new entries with
dialog boxes and sounds. For a list of availabel RSS aggregators, see
[here](http://en.wikipedia.org/wiki/Comparison_of_feed_aggregators).

35
mkdocs/docs/wishlist.md Normal file
View File

@ -0,0 +1,35 @@
# ELOG Wishlist  
Here are some "*wishlist*" items requested by users. I will work down
the list as time permits, starting at the items with the most votes. You
can vote for a feature, or suggest one, by sending me an email.
---
Feature| Votes
-------|-------
Implement groups of users| 8
Password expiration| 2
Account expiration|1
Make attributes which whould be displayd selectable in \"Find\" page|1
Convert elog text files into XML files and comma separated files with elconv|1
Implement multi-line attributes|8
Derive attribute options from list of entries of another logbook|1
Specify date format explicitly for substitutions, like $entry date{%Y}|2
Change attributes of whole thread, like mark a thread "open" or "closed"|4
Automatic unlocking of entries after a specific time period|1
Implement PAM authentification under Linux (Which includes LDAP & AFS & Kerberos & ...)|13
Implement attributes which are math results from others, like *att3=att1+att2*|3
Show sums of numeric attributes|2
Let each user choose its language separately|1
Implement multiple selection boxes|1
Boolean operators for queries, like "attrib1=a AND not attrib2=b"|1
Implement "sybolik-link" logbooks such that a (virtual) logbook can "point" to a "real" logbook.<br>This is useful to have people always submit to the same logbook, when the real logbook<br>changes from time to time.|1
Select individual columns for display and printing|2
"Incremental" options. Have fixed set of global options, and in each<br>logbook add or remove some of those with<br>**+Options = ...** or **-Options = ...**|1
"Include" statement for config file.|2
Use different styles (colors) depending on an attribute|1
Add native IPv6 support|1
Copy new elog entries automatically to other logbooks|1
Extend the search facility to (text) attachments|1

169
mkdocs/index.md Normal file
View File

@ -0,0 +1,169 @@
# The ELOG Home Page  
Home of the *Electronic Logbook* package by [Stefan
Ritt](mailto:Stefan.Ritt@psi.ch)
*Current version: 3.1.4*
---
## What is ELOG ?  
**ELOG** is part of a family of applications known as **weblog*s* .
Their general purpose is :
1. to make it easy for people to put information online in a
chronological fashion, in the form of short, time-stamped text
messages (\"entries\") with optional HTML markup for presentation,
and optional file attachments (images, archives, etc.)
2. to make it easy for other people to access this information through
a Web interface, browse entries, search, download files, and
optionally add, update, delete or comment on entries.
**ELOG** is a remarkable implementation of a *weblog* in at least two
respects :
- its simplicity of use : you don\'t need to be a seasoned server
operator and/or an experimented database administrator to run **ELOG**
; one executable file (under Unix or Windows), a simple configuration
text file, and it works. No Web server or relational database
required. It is also easy to translate the interface to the
appropriate language for your users.
- its versatility : through its single configuration file, **ELOG** can
be made to display an infinity of variants of the *weblog* concept.
There are options for what to display, how to display it, what
commands are available and to whom, access control, etc. Moreover, a
single server can host several **weblog*s*, and each *weblog* can be
totally different from the rest.
------------------------------------------------------------------------
## Screen shots  
|-----------------------------------------|-------------------------------------------------|
| [![elog.gif](elog_thumb.gif){border="0" | On the left upper panel is a typical logbook |
| align="top"}](elog.gif) | page displayed by Netscape Navigator. Each |
| | logbook page can contain attachments in a |
| | similar way to emails. This makes it possible |
| | to store images or text files and retrieve them |
| | easily. You could for example attach a sample |
| | configuration file which can later be copied to |
| | the local machine with the \"*Save As\...*\" |
| | function of the Web browser. |
| | |
| | Several logbooks can be served though a single |
| | **ELOG** server. Each logbook can use different |
| | attributes for its entries. The logbook can |
| | then be searched using these attributes. The |
| | right pane on the left image shows a search for |
| | all entries with attribute \"*Type*\" equal to |
| | \"*Configuration* \", and the lower pane shows |
| | the search result. It is also possible to use |
| | full-text search in attributes and the entry |
| | body. |
| | |
| | While logbook entries are usually displayed one |
| | entry per page, they can also be listed |
| | consecutively which makes it easy to produce a |
| | paper printout of a logbook. |
| | |
| | Logbook pages can be edited or deleted. This |
| | feature can be turned off in the configuration |
| | file so that a logbook entries cannot be |
| | changed after being submitted. |
| | |
| | An additional feature is the automatic |
| | generation of a notification email messages |
| | based on a certain type or category of a |
| | logbook entry. |
| | |
| | Also try out the **[online |
| | demo](http://elog.psi.ch/elogs/Linux%20Demo/)** |
| | ! |
|-----------------------------------------|-------------------------------------------------|
------------------------------------------------------------------------
## Use cases  
The features of **ELOG** make it useful for several applications:
- **Personal Logbooks**. Personal notes can be written into **ELOG** and
can then be retrieved from anywhere with a Web browser. This makes it
handy for PC supporters who have to go around in companies or
laboratories and don\'t want to carry their paper logbook with them.
The same holds true for people traveling around a lot. The logbook
database consists of plain ASCII files which can copied easily between
different computers to have local access, for example on a notebook
with no network connection.
- **Shared Logbooks**. Logbooks can be shared by several people, for
reading and optionally for writing. This way workgroups can share and
exchange information like in a (simplified) news group. This is
supported by the *Reply* command in **ELOG** which creates
\"*threads*\" of entries. Users can be notified by email when new
entries are added to the logbook. Compared to that of a news server,
the installation of **ELOG** is much simpler.
- **Small Databases**. Since arbitrary attributes can be defined for a
logbook, it can be used as a small database with search facilities.
- **Problem collections**. A system can consist of two logbooks, in one
of which users enter bugs or problems. If someone adds a problem, an
email is automatically sent to the administrator, who can then copy
the entry to the second logbook and add the solution to the problem.
Users can then look up all fixed problems.
- **Shift Logbooks**. If the *Allow delete* and *Allow edit* flags are
off, an entry cannot be modified once it\'s been entered. This can be
useful for shift logbooks for example in accelerator control rooms
where each entry becomes a \"*document*\" with a time and author
stamp. **ELOG** was originally developed as a shift logbook for the
[PiBeta](http://pibeta.psi.ch) and [Muegamma](http://meg.psi.ch)
particle experiments at [PSI](http://www.psi.ch).
- **File collections**. Since files can be attached to **ELOG** entries,
the system can be used to store and retrieve files. This can be used
to store configuration files, which need to be accessible by several
people over the web, or to store images. Since **ELOG** features an
elaborate query facility, entries can be searched for by specifying
several categories.
------------------------------------------------------------------------
## License  
**ELOG** is released under the [GNU Public
License](http://www.gnu.org/copyleft/gpl.html) .
------------------------------------------------------------------------
## Credits  
The author would like to give credits to following people:
- [Fred Pacquier](mailto:fredp@dial.oleane.com) for this Web site and
the French translation
- [Recai Oktas](mailto:roktas@omu.edu.tr) and [Roger
Kalt](mailto:roger.kalt@psi.ch) for the Debian package
- [djek](mailto:djek@xs4all.nl) for the Dutch translation
- [Heiko Scheit](mailto:Heiko.Scheit@mpi-hd.mpg.de) for many bug fixes
and fruitful discussions
- [Julio Calvo](mailto:jhcalvo@arnet.com.ar) for the Spanish translation
- [Emiliano \'AlberT\' Gabrielli](mailto:AlberT@SuperAlberT.it)
for his idea of scaling attached images
- [Andreas Luedeke](mailto:andreas.luedeke@psi.ch)
for continuing user support and deployment of ELOG at PSI
------------------------------------------------------------------------
## Talks and presentations  
Here are some talks and presentations given at various occasions:
- Seminar at KIT, Karlsruhe, Jan. 2015. [Introduction
talk](https://elog.psi.ch/elog/talks/2015_1_intro.pptx) by Stefan
Ritt.
- Seminar at KIT, Karlsruhe, Jan. 2015. [Application of
ELOG](http://elog.psi.ch/elog/talks/2015_1_accel.pptx) for accelerator
operation at PSI by [Andreas Luedeke](mailto:andreas.luedeke@psi.ch).
------------------------------------------------------------------------
*Content by [Stefan Ritt](https://www.psi.ch/en/ltp-muon-physics/people/stefan-ritt), Web pages
by [Fred Pacquier](mailto:fredp@mygale.org)*

17
mkdocs/mkdocs.yml Normal file
View File

@ -0,0 +1,17 @@
site_name: ELOG Electronic Logbook
# site_url: ""
# use_directory_urls: false
nav:
- Home: index.md
- User guide: userguide.md
- Admin guide: adminguide.md
- Config file: config.md
- FAQ: faq.md
- Forum: forum.md
- Wishlist: wishlist.md
- Contributions: contrib.md
- Demo: demo.md
- Download: download.md
theme: readthedocs

141
mkdocs/site/404.html Normal file
View File

@ -0,0 +1,141 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="shortcut icon" href="/img/favicon.ico" />
<title>ELOG Electronic Logbook</title>
<link rel="stylesheet" href="/css/theme.css" />
<link rel="stylesheet" href="/css/theme_extra.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
<!--[if lt IE 9]>
<script src="/js/html5shiv.min.js"></script>
<![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="/." class="icon icon-home"> ELOG Electronic Logbook
</a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="//search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="/.">Home</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="/userguide/">User guide</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="/adminguide/">Admin guide</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="/config/">Config file</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="/faq/">FAQ</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="/forum/">Forum</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="/wishlist/">Wishlist</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="/contrib/">Contributions</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="/demo/">Demo</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="/download/">Download</a>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="/.">ELOG Electronic Logbook</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="/." class="icon icon-home" aria-label="Docs"></a></li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div class="section" itemprop="articleBody">
<h1 id="404-page-not-found">404</h1>
<p><strong>Page not found</strong></p>
</div>
</div><footer>
<hr/>
<div role="contentinfo">
<!-- Copyright etc -->
</div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
</span>
</div>
<script src="/js/jquery-3.6.0.min.js"></script>
<script>var base_url = "/";</script>
<script src="/js/theme_extra.js"></script>
<script src="/js/theme.js"></script>
<script src="/search/main.js"></script>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

13
mkdocs/site/css/theme.css Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,197 @@
/*
* Wrap inline code samples otherwise they shoot of the side and
* can't be read at all.
*
* https://github.com/mkdocs/mkdocs/issues/313
* https://github.com/mkdocs/mkdocs/issues/233
* https://github.com/mkdocs/mkdocs/issues/834
*/
.rst-content code {
white-space: pre-wrap;
word-wrap: break-word;
padding: 2px 5px;
}
/**
* Make code blocks display as blocks and give them the appropriate
* font size and padding.
*
* https://github.com/mkdocs/mkdocs/issues/855
* https://github.com/mkdocs/mkdocs/issues/834
* https://github.com/mkdocs/mkdocs/issues/233
*/
.rst-content pre code {
white-space: pre;
word-wrap: normal;
display: block;
padding: 12px;
font-size: 12px;
}
/**
* Fix code colors
*
* https://github.com/mkdocs/mkdocs/issues/2027
*/
.rst-content code {
color: #E74C3C;
}
.rst-content pre code {
color: #000;
background: #f8f8f8;
}
/*
* Fix link colors when the link text is inline code.
*
* https://github.com/mkdocs/mkdocs/issues/718
*/
a code {
color: #2980B9;
}
a:hover code {
color: #3091d1;
}
a:visited code {
color: #9B59B6;
}
/*
* The CSS classes from highlight.js seem to clash with the
* ReadTheDocs theme causing some code to be incorrectly made
* bold and italic.
*
* https://github.com/mkdocs/mkdocs/issues/411
*/
pre .cs, pre .c {
font-weight: inherit;
font-style: inherit;
}
/*
* Fix some issues with the theme and non-highlighted code
* samples. Without and highlighting styles attached the
* formatting is broken.
*
* https://github.com/mkdocs/mkdocs/issues/319
*/
.rst-content .no-highlight {
display: block;
padding: 0.5em;
color: #333;
}
/*
* Additions specific to the search functionality provided by MkDocs
*/
.search-results {
margin-top: 23px;
}
.search-results article {
border-top: 1px solid #E1E4E5;
padding-top: 24px;
}
.search-results article:first-child {
border-top: none;
}
form .search-query {
width: 100%;
border-radius: 50px;
padding: 6px 12px;
border-color: #D1D4D5;
}
/*
* Improve inline code blocks within admonitions.
*
* https://github.com/mkdocs/mkdocs/issues/656
*/
.rst-content .admonition code {
color: #404040;
border: 1px solid #c7c9cb;
border: 1px solid rgba(0, 0, 0, 0.2);
background: #f8fbfd;
background: rgba(255, 255, 255, 0.7);
}
/*
* Account for wide tables which go off the side.
* Override borders to avoid weirdness on narrow tables.
*
* https://github.com/mkdocs/mkdocs/issues/834
* https://github.com/mkdocs/mkdocs/pull/1034
*/
.rst-content .section .docutils {
width: 100%;
overflow: auto;
display: block;
border: none;
}
td, th {
border: 1px solid #e1e4e5 !important;
border-collapse: collapse;
}
/*
* Without the following amendments, the navigation in the theme will be
* slightly cut off. This is due to the fact that the .wy-nav-side has a
* padding-bottom of 2em, which must not necessarily align with the font-size of
* 90 % on the .rst-current-version container, combined with the padding of 12px
* above and below. These amendments fix this in two steps: First, make sure the
* .rst-current-version container has a fixed height of 40px, achieved using
* line-height, and then applying a padding-bottom of 40px to this container. In
* a second step, the items within that container are re-aligned using flexbox.
*
* https://github.com/mkdocs/mkdocs/issues/2012
*/
.wy-nav-side {
padding-bottom: 40px;
}
/* For section-index only */
.wy-menu-vertical .current-section p {
background-color: #e3e3e3;
color: #404040;
}
/*
* The second step of above amendment: Here we make sure the items are aligned
* correctly within the .rst-current-version container. Using flexbox, we
* achieve it in such a way that it will look like the following:
*
* [No repo_name]
* Next >> // On the first page
* << Previous Next >> // On all subsequent pages
*
* [With repo_name]
* <repo_name> Next >> // On the first page
* <repo_name> << Previous Next >> // On all subsequent pages
*
* https://github.com/mkdocs/mkdocs/issues/2012
*/
.rst-versions .rst-current-version {
padding: 0 12px;
display: flex;
font-size: initial;
justify-content: space-between;
align-items: center;
line-height: 40px;
}
/*
* Please note that this amendment also involves removing certain inline-styles
* from the file ./mkdocs/themes/readthedocs/versions.html.
*
* https://github.com/mkdocs/mkdocs/issues/2012
*/
.rst-current-version span {
flex: 1;
text-align: center;
}

156
mkdocs/site/demo/index.html Normal file
View File

@ -0,0 +1,156 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="shortcut icon" href="../img/favicon.ico" />
<title>Demo - ELOG Electronic Logbook</title>
<link rel="stylesheet" href="../css/theme.css" />
<link rel="stylesheet" href="../css/theme_extra.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
<script>
// Current page data
var mkdocs_page_name = "Demo";
var mkdocs_page_input_path = "demo.md";
var mkdocs_page_url = null;
</script>
<!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script>
<![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href=".." class="icon icon-home"> ELOG Electronic Logbook
</a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="..">Home</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../userguide/">User guide</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../adminguide/">Admin guide</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../config/">Config file</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../faq/">FAQ</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../forum/">Forum</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../wishlist/">Wishlist</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../contrib/">Contributions</a>
</li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal current" href="#">Demo</a>
<ul class="current">
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../download/">Download</a>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">ELOG Electronic Logbook</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a></li>
<li class="breadcrumb-item active">Demo</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div class="section" itemprop="articleBody">
<h1 id="demo">Demo</h1>
<p>A dedicated <a href="https://elog.psi.ch/elogs/Linux+Demo">Demo Logbook</a> is available as a playground.</p>
</div>
</div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
<a href="../contrib/" class="btn btn-neutral float-left" title="Contributions"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../download/" class="btn btn-neutral float-right" title="Download">Next <span class="icon icon-circle-arrow-right"></span></a>
</div>
<hr/>
<div role="contentinfo">
<!-- Copyright etc -->
</div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span><a href="../contrib/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../download/" style="color: #fcfcfc">Next &raquo;</a></span>
</span>
</div>
<script src="../js/jquery-3.6.0.min.js"></script>
<script>var base_url = "..";</script>
<script src="../js/theme_extra.js"></script>
<script src="../js/theme.js"></script>
<script src="../search/main.js"></script>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@ -0,0 +1,189 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="shortcut icon" href="../img/favicon.ico" />
<title>Download - ELOG Electronic Logbook</title>
<link rel="stylesheet" href="../css/theme.css" />
<link rel="stylesheet" href="../css/theme_extra.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
<script>
// Current page data
var mkdocs_page_name = "Download";
var mkdocs_page_input_path = "download.md";
var mkdocs_page_url = null;
</script>
<!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script>
<![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href=".." class="icon icon-home"> ELOG Electronic Logbook
</a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="..">Home</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../userguide/">User guide</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../adminguide/">Admin guide</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../config/">Config file</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../faq/">FAQ</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../forum/">Forum</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../wishlist/">Wishlist</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../contrib/">Contributions</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../demo/">Demo</a>
</li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal current" href="#">Download</a>
<ul class="current">
<li class="toctree-l2"><a class="reference internal" href="#windows-binaries">Windows Binaries</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">ELOG Electronic Logbook</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a></li>
<li class="breadcrumb-item active">Download</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div class="section" itemprop="articleBody">
<h1 id="elog-download-page">ELOG download page</h1>
<hr />
<p>ELOG is distributed both as source code and as precompiled binaries for
various platforms. In addition to major versions, minor releases are
made containing bug fixes or some new and not yet completely debugged
code. This is usually the case if some user asks for some new features,
which are then implemented and sent to the user for testing. The minor
releases are named <strong><code>x.y.z-r</code></strong> where <strong><code>r</code></strong> is the release number. A
<a href="https://bitbucket.org/ritt/elog">web access</a> to the source code
contains the complete development history of ELOG, plus the newest fixes
and features which might yet be in a release. To check out the GIT
repository, use:</p>
<p><code>git clone https://bitbucket.org/ritt/elog --recursive</code></p>
<p>No tags are used, so it is recommended to always use the newest release
from the \"master\" branch.</p>
<p>Building elogd requires the CMake system and is done in the traditional
way:</p>
<pre><code class="language-text">$ cd elog
$ mkdir build
$ cd build
$ cmake ..
$ make
</code></pre>
<p>This will put the executables <strong><code>elogd</code></strong> and <strong><code>elog</code></strong> into the build
directory, from where they can be moved to a system directory like
<strong><code>/usr/local/sbin/elogd</code></strong></p>
<p>News for each version can be seen in the
<a href="http://elog.psi.ch/elog/download/ChangeLog">changelog</a></p>
<h2 id="windows-binaries">Windows Binaries</h2>
<p>The windows binaries are distributed with an automatic
<a href="http://elog.psi.ch/elog/download/windows/elog-latest.exe">installer</a>.
Execute the installer to install ELOG and to register the elogd server
as a windows service. Previous windows versions can be found
<a href="http://elog.psi.ch/elog/download/windows/">here</a>.</p>
<p>Note that the windows binaries are very much outdated and will be
updated once the develop gets access again to a Windows PC.</p>
</div>
</div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
<a href="../demo/" class="btn btn-neutral float-left" title="Demo"><span class="icon icon-circle-arrow-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<!-- Copyright etc -->
</div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span><a href="../demo/" style="color: #fcfcfc">&laquo; Previous</a></span>
</span>
</div>
<script src="../js/jquery-3.6.0.min.js"></script>
<script>var base_url = "..";</script>
<script src="../js/theme_extra.js"></script>
<script src="../js/theme.js"></script>
<script src="../search/main.js"></script>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

495
mkdocs/site/faq/index.html Normal file
View File

@ -0,0 +1,495 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="shortcut icon" href="../img/favicon.ico" />
<title>FAQ - ELOG Electronic Logbook</title>
<link rel="stylesheet" href="../css/theme.css" />
<link rel="stylesheet" href="../css/theme_extra.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
<script>
// Current page data
var mkdocs_page_name = "FAQ";
var mkdocs_page_input_path = "faq.md";
var mkdocs_page_url = null;
</script>
<!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script>
<![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href=".." class="icon icon-home"> ELOG Electronic Logbook
</a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="..">Home</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../userguide/">User guide</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../adminguide/">Admin guide</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../config/">Config file</a>
</li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal current" href="#">FAQ</a>
<ul class="current">
<li class="toctree-l2"><a class="reference internal" href="#how-does-one-configure-elog-to-display-the-last-message-by-default">How does one configure elog to display the last message by default</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#are-there-any-plans-to-implement-a-mysql-back-end">Are there any plans to implement a MySQL back end?</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#can-i-run-the-elog-daemon-from-inside-apache-or-any-other-web-server">Can I run the ELOG daemon from inside Apache or any other Web server?</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#i-can-access-my-logbook-without-any-password-isnt-that-a-security-problem">I can access my logbook without any password, isn't that a security problem?</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#i-want-a-bookmark-pointing-to-the-last-page-where-an-attribute-has-a-certain-value">I want a bookmark pointing to the last page where an attribute has a certain value</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#i-want-a-logbook-with-public-read-access-no-password-but-restricted-write-access">I want a logbook with public read access (no password), but restricted write access</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#i-have-many-loogbooks-with-password-files-so-if-i-add-a-user-or-want-to-change-a-password-i-have-to-do-this-for-all-logbooks-which-is-painful">I have many loogbooks with password files, so if I add a user or want to change a password I have to do this for all logbooks which is painful.</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#how-can-i-configure-elog-such-that-it-displays-something-else-than-the-message-list-by-default">How can I configure ELOG such that it displays something else than the message list by default?</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#i-want-to-have-additional-commands-specific-to-my-lookbook">I want to have additional commands specific to my lookbook</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#how-does-one-configure-elog-to-disable-editing-of-existing-messages-i-want-a-logbook-where-one-can-enter-messages-but-not-change-them-afterwards">How does one configure elog to disable editing of existing messages? I want a logbook where one can enter messages but not change them afterwards.</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#how-can-i-track-various-revisions-of-a-message-using-the-edit-command">How can I track various revisions of a message using the "edit" command?</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#how-can-i-enter-a-date-which-is-different-from-current-one">How can I enter a date which is different from current one?</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#i-cannot-pass-the-login-page-its-always-redisplayed-even-if-i-put-in-the-right-password">I cannot pass the login page, it's always redisplayed even if I put in the right password?</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#how-can-i-change-an-attribute-for-an-entire-thread-we-have-an-attribute-open-problemfixed-which-should-be-changed-for-the-whole-thread-if-that-problem-has-been-fixed">How can I change an attribute for an entire thread? We have an attribute "open problem/fixed" which should be changed for the whole thread if that problem has been fixed.</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#can-i-use-rss-feeds-with-password-protected-logbooks">Can I use RSS feeds with password protected logbooks?</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#how-can-i-make-a-whole-thread-open-or-closed">How can I make a whole thread open or closed?</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#does-elog-have-a-spell-checker">Does elog have a spell checker?</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#why-are-entries-with-large-attachments-submitted-so-slowly">Why are entries with large attachments submitted so slowly?</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#the-elgod-daemon-crashes-from-time-to-time-what-can-i-do">The elgod daemon crashes from time to time, what can I do?</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#how-can-i-create-an-elog-entry-automatically-from-a-script">How can I create an ELOG entry automatically from a script?</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#i-want-to-notify-different-people-for-different-things-how-do-i-set-up-this">I want to notify different people for different things, how do I set up this?</a>
</li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../forum/">Forum</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../wishlist/">Wishlist</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../contrib/">Contributions</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../demo/">Demo</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../download/">Download</a>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">ELOG Electronic Logbook</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a></li>
<li class="breadcrumb-item active">FAQ</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div class="section" itemprop="articleBody">
<h1 id="elog-faq">ELOG FAQ</h1>
<p><strong>Frequently Asked Questions about usage and configuration</strong></p>
<p>Please check also the <a href="http://elog.psi.ch/elogs/Forum">ELOG Forum</a>.</p>
<hr />
<h2 id="how-does-one-configure-elog-to-display-the-last-message-by-default">How does one configure elog to display the last message by default</h2>
<p>One can use the <strong><code>Start page</code></strong> option for that. The entry:</p>
<p><code>Start page = 0?cmd=last</code></p>
<p>shows the last message entry by default. To have the described behaviour
for all logbooks, the above statements can be placed in the
<strong><code>[global]</code></strong> section.</p>
<h2 id="are-there-any-plans-to-implement-a-mysql-back-end">Are there any plans to implement a MySQL back end?</h2>
<p>No. The idea behind <strong>ELOG</strong> is that it is a <em>simple to use, simple to
install</em> application. Many people use <strong>ELOG</strong> under Windows, and they
even don't know what MySQL means. Other people like the flat file
database format, because it's simple, easily accessible from other
programs, and it's easy to backup certain days or months of the
database (since the filenames contain the date). Since <strong>ELOG</strong> should
be independent of any other package, some "switchable" backend between
native <strong>ELOG</strong> format and MySQL would be needed, which is lots of work
and not planned right now.</p>
<p>However, there are several contributions from other people who wrote
scripts to put ELOG entries into a MySQL database. One is available at
<a href="http://elog.psi.ch/elogs/Forum/387">http://elog.psi.ch/elogs/Forum/387</a>.</p>
<h2 id="can-i-run-the-elog-daemon-from-inside-apache-or-any-other-web-server">Can I run the ELOG daemon from inside Apache or any other Web server?</h2>
<p>No. The <strong>ELOG</strong> daemon was designed as a standalone server and it will
stay like that in the future. The reason for that is that <strong><code>elogd</code></strong>
should not rely on any other software. This is for example important for
many people running <strong><code>elogd</code></strong> under Windows, and they have no clue how
to install Apache for Windows. The installation and maintenance for
<strong><code>elogd</code></strong> therefore becomes much simpler. To run <strong><code>elogd</code></strong> in
parallel to an Apache server on port 80, use Apache as a proxy,
following the instruction on the installation page ("Running elogd
under Apache").</p>
<h2 id="i-can-access-my-logbook-without-any-password-isnt-that-a-security-problem">I can access my logbook without any password, isn't that a security problem?</h2>
<p>By default, no password is used in <strong>ELOG</strong>. This can be useful for
public directories etc. that anybody should be able to read. To add
password security, read the documentation under <a href="../config/#access-control">Access
control</a>. The recommended setup is password file
security with guest access.</p>
<p>Note that passwords are transferred over the network in plain text and
therefore not secure. If this is a problem, a
<a href="../adminguide/#secure-connections-howto">secure</a> network connection should be used.</p>
<h2 id="i-want-a-bookmark-pointing-to-the-last-page-where-an-attribute-has-a-certain-value">I want a bookmark pointing to the last page where an attribute has a certain value</h2>
<p>Use the URL:</p>
<p><code>http://&lt;your.host&gt;/&lt;logbook&gt;/?cmd=Last&amp;&lt;attribute&gt;=&lt;value&gt;</code></p>
<p>This executes the "<em>Last</em>" command using a filter with
<strong><code>&lt;attribute&gt;=&lt;value&gt;</code></strong>. The following command displays the same page,
but also locks the attribute (checks the box next to <code>&lt;attribute&gt;</code>) so
that browsing (next, previous, first, last) only shows pages with that
attribute value.</p>
<p><code>http://&lt;your.host&gt;/&lt;logbook&gt;/?cmd=Last&amp;&lt;attribute&gt;=&lt;value&gt;&amp;l&lt;attribute&gt;=1</code></p>
<p>Note the <code>"l"</code> before the second attribute, as in <code>"*lAuthor=1*"</code>.</p>
<h2 id="i-want-a-logbook-with-public-read-access-no-password-but-restricted-write-access">I want a logbook with public read access (no password), but restricted write access</h2>
<p>In an old version of the FAQ it has been stated here that one has to use
two logbooks pointing to the same data directory. From Version 2.0.6 on,
this can be accomplished much easier by the usage of the <strong>"Guest menu
command"</strong>. Use a logbook with user level access (password file), and
add menu lists like in the following example to the configuration file:</p>
<pre><code class="language-text">Menu commands = New, Edit, Reply, Find, Last 10, Change password, Logout, Help
Guest menu commands = Find, Last 10, Login, Help
</code></pre>
<p>If users access the logbook without supplying a user name, they are
treated like "guests" and see the "Guest menu commands", with which
one cannot submit or edit logbook entries. If one hits the "login"
button, a user can login with a user name/password and sees the normal
menu commands, with which one can submit new logbook entries.</p>
<p>An optional self registration is possible by specifying</p>
<p><code>Self register = 1</code></p>
<p>in the configuration file. New users can then create their own accounts.</p>
<h2 id="i-have-many-loogbooks-with-password-files-so-if-i-add-a-user-or-want-to-change-a-password-i-have-to-do-this-for-all-logbooks-which-is-painful">I have many loogbooks with password files, so if I add a user or want to change a password I have to do this for all logbooks which is painful.</h2>
<p>You can have several logbooks point to the same password file. So if you
change a user or password in that file, it becomes automatically
available in all logbooks which use that file.</p>
<h2 id="how-can-i-configure-elog-such-that-it-displays-something-else-than-the-message-list-by-default">How can I configure ELOG such that it displays something else than the message list by default?</h2>
<p>There is a simple trick. You use the <strong>"<em>Start page</em>"</strong> option in the
<strong><code>elogd</code></strong> file to redirect the start page to something else. Here are
some examples:</p>
<pre><code class="language-text">?npp=5 for the last 5 messages
?last=7 show last 7 days (week)
?cmd=New show the new message entry form
?cmd=Find Show the &quot;find&quot; page
?cmd=Search&amp;&lt;attrib&gt;=&lt;value&gt; for a search with &lt;attrib&gt;=&lt;value&gt;
</code></pre>
<p>The various URLs can be copied from the browser's address bar when
doint various things there.</p>
<h2 id="i-want-to-have-additional-commands-specific-to-my-lookbook">I want to have additional commands specific to my lookbook</h2>
<p>New commands can be added for example with the
<strong><code>"Bottom text = bottom.html"</code></strong> option. To display all messages from
last week and month of with "category = info", one can put following
HTML code in bottom.html:</p>
<pre><code>&lt;center&gt;
&lt;a href=&quot;?last=7&amp;Category=Info&quot;&gt;Info from last week&lt;/a&gt; |
&lt;a href=&quot;?last=31&amp;Category=Info&quot;&gt;Info from last month&lt;/a&gt; |
&lt;/center&gt;
</code></pre>
<p>Note that the parameters <strong><code>"last=7&amp;Category=Info"</code></strong> applies a filter on
the display. You can learn how to make these filters by looking at the
URL in your browser when you submit a find command with certain
options.</p>
<h2 id="how-does-one-configure-elog-to-disable-editing-of-existing-messages-i-want-a-logbook-where-one-can-enter-messages-but-not-change-them-afterwards">How does one configure elog to disable editing of existing messages? I want a logbook where one can enter messages but not change them afterwards.</h2>
<p>This works with the option <strong><code>Menu commands</code></strong>. By default, the menu
commands <strong><code>Back, New, Edit, Delete, Reply, Find, Config, Help</code></strong> are
dispalyed and allowed. To avoid editing (and deleting) of existing
messages, one removes the two commands and puts following statement into
<strong><code>elogd.cfg</code>:</strong></p>
<p><code>Menu commands = Back, New, Reply, Find, Config, Help</code></p>
<p>This prohibits the execution of the commands "Edit" and "Delete".</p>
<h2 id="how-can-i-track-various-revisions-of-a-message-using-the-edit-command">How can I track various revisions of a message using the "edit" command?</h2>
<p>There are two ways:</p>
<ul>
<li>Add an attribute which keeps the revision dates and names as follows:</li>
</ul>
<pre><code class="language-text">Attributes = Author, ..., Revisions
Locked attributes = Revisions
Subst on Edit Revisions = $Revisions&lt;br&gt;$date by $long_name
</code></pre>
<p>The "Revisions" attribute cannot be modified manually (since it's
locked). On each edit, the date and the current author is appedned to
the previous revisions. The "\&lt;br&gt;" puts a line break between the
entries.</p>
<ul>
<li>
<p>Create a thread for each entry. In addition of having the date and
author of different revisions, the message content is kept. To revise
and entry, one hits "Reply" instead of "Edit" (one can disable the
"Edit" command for example). If one puts following option into the
configuration file:</p>
<p><code>Reply string = ""</code></p>
</li>
</ul>
<p>then the reply contains the original message without the usual "&gt; "
at the beginning of each line. One can then edit the message and
submit it. In the threaded message list display, one sees then the
different revisions as a message thread.</p>
<h2 id="how-can-i-enter-a-date-which-is-different-from-current-one">How can I enter a date which is different from current one?</h2>
<p>Usually, the current date/time is recorded when you add a new entry. It
might be, however, that one wants to enter "old" entries, or some
entries with a date in the future (like a to-do list with a due date).
To do that, on can add a new attribute (let's call it <em>Record date</em>, to
be different from the pre-defined <em>Date</em>:</p>
<pre><code class="language-text">Attributes = Author, ..., Record date
Type Record date = date
Preset Record date = $date
Date format = %Y %m %d
List Display = Record date, Author, ...
Start page = ?rsort=Record date
</code></pre>
<p>The <em>Preset Record date</em> statement sets the record date to the current
date, but this can then of course edited during the message entry. The
<em>List Display</em> and <em>Start page</em> statements show the record date as the
first column in the summary display and also sort by that. Note the
<em>Date format</em> showing first year, then month and day. This is necessary
since sorting is done only lexically. Please note that the <em>List
Display</em> was renamed recently. Prior to version 2.3.10, it was called
<em>Display Search</em>.</p>
<h2 id="i-cannot-pass-the-login-page-its-always-redisplayed-even-if-i-put-in-the-right-password">I cannot pass the login page, it's always redisplayed even if I put in the right password?</h2>
<p>This can happen if you change the login policy, for example move the
<strong><code>Password file =</code></strong> entry in the configuration file from a logbook
section to the [global] section or back. In that case some old cookies
could be stored in your browser, which confuse the system. Please delete
your cookies in the browser to resolve this problem. Read your browser
documentation on how to do that.</p>
<h2 id="how-can-i-change-an-attribute-for-an-entire-thread-we-have-an-attribute-open-problemfixed-which-should-be-changed-for-the-whole-thread-if-that-problem-has-been-fixed">How can I change an attribute for an entire thread? We have an attribute "open problem/fixed" which should be changed for the whole thread if that problem has been fixed.</h2>
<p>This is a typical request of a bug-tracking set-up. Someone enters a
request, opening a new thread. The expert(s) reply to the the request,
and after a while, the request gets satisfied or the problem gets fixed.
If an attribute like "status", having the options "open" and
"fixed" could get changed for the whole thread, on could very easily
search for all "open" problems.</p>
<p>Since this functionality is not implemented, an alternative strategy is
recommended: Implement two (or more) logbooks. The first logbook has
open issues, the second one has fixed ones. When an entry changes state,
it simply has to be copied to the second logbook. This can be done by
defining the menu command "move" in the config file, like:</p>
<p><code>Menu commands = Back, New, Edit, Delete, Reply, Find, Move to, Config, Help</code></p>
<p>Note the additional <strong><em>Move to</em></strong>. This solution is even more elegant
than having attributes changed in whole threads, since one has two
separate logbooks, and can treat the second one more like an archive,
make separate back-ups, or deleting some entries after some time, while
keeping the open issues untouched.</p>
<h2 id="can-i-use-rss-feeds-with-password-protected-logbooks">Can I use RSS feeds with password protected logbooks?</h2>
<p>RSS feeds normally only work for logbooks which have at least public
read access (via the guest menu commands). There is however a way to
allow only restricted read access and still use RSS feeds. This is done
by adding an additional read password via the
<strong><code>elogd -r &lt;pwd&gt; -l &lt;logbook&gt;</code></strong> command. This password (username may
be any) can then be used in an RSS reader for restricted access. One
reader which has been successfully used with this kind of authentication
is <a href="http://www.rssreader.com">RSSReader</a>.</p>
<h2 id="how-can-i-make-a-whole-thread-open-or-closed">How can I make a whole thread open or closed?</h2>
<p>Sometime people want to mark a whole thread in a way. An example is a
to-do list, where they want a special icon on high priority things, and
have this icon disappear one the task is finished. This can be easily
done with icons. The configuration could look like this:</p>
<pre><code class="language-text">Attributes = Author, Status, Subject
IOptions Status = icon1.gif, icon2.gif, icon4.gif
Preset Status = icon4.gif
Preset on reply status = icon2.gif
Icon comment icon1.gif = Closed entry
Icon comment icon4.gif = Open entry
Thread display = $Author $Subject
Thread icon = Status
</code></pre>
<p>New entries get an exclamation mark icon for example ("Preset status =
..."). Replies to this entry get a reply icon. Once the thread should
be closed, one simple edits the top entry in that thread and changes the
icon. The icon1.gif from the distribution is maybe not ideally suited
for that, but one could make a green check mark icon for example for
that. The "Thread display" and "Thread icon" make this icon appear
at the left side of the threaded display.</p>
<p>An alternative approach would be to use two logbooks. The first one
receive all new entries ("open items"). Once an entry (with its
replies) gets closed, it must be moved manually to the second logbook
("closed items"). This can be done with the "Move To" command (see
"menu commands" in config file). This way one nicely separates open
and closed items in two separate logbooks. One can still search both
logbooks at the same time if one checks "Search all logbooks" in the
find page.</p>
<p>Starting from elog version 2.7.7, there now even a third way to do this.
With an additional line in the configuration file: Collapse tn last = 1
(in fact the default, but to be explicit), then when the thread is ready
to be marked as closed, select the "closed entry" icon when writing
the last entry. When the entries are viewed in "threaded" mode, then
the closed entry icon appears on the last entry; and when in "threaded,
collapsed" mode, then the closed entry icon appears in the one line
that represents that whole thread.</p>
<h2 id="does-elog-have-a-spell-checker">Does elog have a spell checker?</h2>
<p>No, but you can use any spell checker which works with your browser.
Examples are <a href="http://www.iespellc.com">IESpell</a> for Internet Explorer
and <a href="http://spellbound.sourceforge.net">SpellBound</a> for Mozilla-based
browsers.</p>
<h2 id="why-are-entries-with-large-attachments-submitted-so-slowly">Why are entries with large attachments submitted so slowly?</h2>
<p>If email notifications are used, the ELOG program has to pass these
attachments to the email server, which might take quite some time. Some
email servers even don't allow to forward attachments if they are
larger than a few mega bytes. In that one can simply turn off the
forwarding of email attachments with</p>
<p><code>Email format = 111</code></p>
<p>this causes only the attachment names being forwarded, not the
attachments themselves.</p>
<h2 id="the-elgod-daemon-crashes-from-time-to-time-what-can-i-do">The elgod daemon crashes from time to time, what can I do?</h2>
<p>Bugs are constantly fixed inside elogd so a upgrade to the current
version is recommended as a first measrue. If that does not help, the
key will be the reproducibility of the crash. I only can fix problems if
I can reproduce them. Sometimes it's related to strange logbook entries
which cause elogd to crash when they are edited. So if there is a way to
reproducible trigger the problem, I need the files and confiration
related with it. If I can reproduce it in my local installation, I can
fix it pretty soon.</p>
<p>If that is not possible, an alternative is to run elgod under a
debugger, and do a stack trace if the program dies. Under linux, this
can be done using the gdb debugger, which might look like this:</p>
<pre><code class="language-text">[~/elog]$ gdb ./elogd
GNU gdb Red Hat Linux (6.5-25.el5rh)
...
(gdb) run
Starting program: /afs/psi.ch/user/r/ritt/elog/elogd
elogd 2.7.5 built Dec 2 2008, 10:47:09 revision 2147
ImageMagick detected
Indexing logbooks ... test
Program received signal SIGSEGV, Segmentation fault.
0x08054beb in el_index_logbooks () at src/elogd.c:3892
3892 *p = (char)1;
(gdb) where
#0 0x08054beb in el_index_logbooks () at src/elogd.c:3892
#1 0x080b8774 in server_loop () at src/elogd.c:27565
#2 0x080bbdd5 in main (argc=1, argv=0xbfee5b54) at src/elogd.c:28923
(gdb)
</code></pre>
<p>So the basic command is to make a stack trace with "where" after a
segmentation fault. This tells me where in the code something wrong
happened (in this case it was inside the function el_index_logbooks() at
line 3892. Please send me this information and I will try then to figure
out what was wrong.</p>
<h2 id="how-can-i-create-an-elog-entry-automatically-from-a-script">How can I create an ELOG entry automatically from a script?</h2>
<p>The <a href="../userguide/#elog-command-line-client">User's
Guide</a> describes the standalone "elog"
utility, which can be used from a script or from another program to
submit an automatic email entry. This works locally or remotely, with
optional attachments. Enter "elog -h" for a full list of options. The
elog utility is part of the distribution and resides in the same
directory as the elogd daemon.</p>
<h2 id="i-want-to-notify-different-people-for-different-things-how-do-i-set-up-this">I want to notify different people for different things, how do I set up this?</h2>
<p>Assume you want to send an email notification to person A for a problem
report, to person B for problem fix and so on. The simplest way is to
use the <code>Email &lt;attribute&gt; &lt;value&gt; = &lt;email address&gt;</code> syntax. So you
could set-up following configuration:</p>
<pre><code class="language-text">Attributes = Author, Type
Options Type = Problem Report, Problem Fix
Email Type Problem Report = person.a@elog.com
Email Type Problem Fix = person.b@elog.com
</code></pre>
<p>If you want to select email addresses directly from a list, you can do
the set-up as following: Attributes = Author, Notify MOptions Notify =
Person A, Person B Email Notify Person A = person.a@elog.com Email
Notify Person B = person.b@elog.com This way you can for each entry
select one or more people to be notified from the pre-defined list.</p>
</div>
</div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
<a href="../config/" class="btn btn-neutral float-left" title="Config file"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../forum/" class="btn btn-neutral float-right" title="Forum">Next <span class="icon icon-circle-arrow-right"></span></a>
</div>
<hr/>
<div role="contentinfo">
<!-- Copyright etc -->
</div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span><a href="../config/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../forum/" style="color: #fcfcfc">Next &raquo;</a></span>
</span>
</div>
<script src="../js/jquery-3.6.0.min.js"></script>
<script>var base_url = "..";</script>
<script src="../js/theme_extra.js"></script>
<script src="../js/theme.js"></script>
<script src="../search/main.js"></script>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@ -0,0 +1,156 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="shortcut icon" href="../img/favicon.ico" />
<title>Forum - ELOG Electronic Logbook</title>
<link rel="stylesheet" href="../css/theme.css" />
<link rel="stylesheet" href="../css/theme_extra.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
<script>
// Current page data
var mkdocs_page_name = "Forum";
var mkdocs_page_input_path = "forum.md";
var mkdocs_page_url = null;
</script>
<!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script>
<![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href=".." class="icon icon-home"> ELOG Electronic Logbook
</a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="..">Home</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../userguide/">User guide</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../adminguide/">Admin guide</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../config/">Config file</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../faq/">FAQ</a>
</li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal current" href="#">Forum</a>
<ul class="current">
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../wishlist/">Wishlist</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../contrib/">Contributions</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../demo/">Demo</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../download/">Download</a>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">ELOG Electronic Logbook</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a></li>
<li class="breadcrumb-item active">Forum</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div class="section" itemprop="articleBody">
<h1 id="forum">Forum</h1>
<p>A dedicated <a href="https://elog.psi.ch/elogs/Forum">discussion forum</a> running elog itself is used for various feedback and questions around elog.</p>
</div>
</div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
<a href="../faq/" class="btn btn-neutral float-left" title="FAQ"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../wishlist/" class="btn btn-neutral float-right" title="Wishlist">Next <span class="icon icon-circle-arrow-right"></span></a>
</div>
<hr/>
<div role="contentinfo">
<!-- Copyright etc -->
</div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span><a href="../faq/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../wishlist/" style="color: #fcfcfc">Next &raquo;</a></span>
</span>
</div>
<script src="../js/jquery-3.6.0.min.js"></script>
<script>var base_url = "..";</script>
<script src="../js/theme_extra.js"></script>
<script src="../js/theme.js"></script>
<script src="../search/main.js"></script>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
mkdocs/site/img/elog.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
mkdocs/site/img/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 KiB

BIN
mkdocs/site/img/rss.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

BIN
mkdocs/site/img/sync.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
mkdocs/site/img/tabs.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
mkdocs/site/img/theme1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
mkdocs/site/img/theme2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

293
mkdocs/site/index.html Normal file
View File

@ -0,0 +1,293 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="description" content="None" />
<link rel="shortcut icon" href="img/favicon.ico" />
<title>ELOG Electronic Logbook</title>
<link rel="stylesheet" href="css/theme.css" />
<link rel="stylesheet" href="css/theme_extra.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
<script>
// Current page data
var mkdocs_page_name = "Home";
var mkdocs_page_input_path = "index.md";
var mkdocs_page_url = null;
</script>
<!--[if lt IE 9]>
<script src="js/html5shiv.min.js"></script>
<![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="." class="icon icon-home"> ELOG Electronic Logbook
</a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="./search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal current" href="#">Home</a>
<ul class="current">
<li class="toctree-l2"><a class="reference internal" href="#what-is-elog">What is ELOG ?</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#screen-shots">Screen shots</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#use-cases">Use cases</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#license">License</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#credits">Credits</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#talks-and-presentations">Talks and presentations</a>
</li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="userguide/">User guide</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="adminguide/">Admin guide</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="config/">Config file</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="faq/">FAQ</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="forum/">Forum</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="wishlist/">Wishlist</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="contrib/">Contributions</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="demo/">Demo</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="download/">Download</a>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href=".">ELOG Electronic Logbook</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="." class="icon icon-home" aria-label="Docs"></a></li>
<li class="breadcrumb-item active">Home</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div class="section" itemprop="articleBody">
<h1 id="the-elog-home-page">The ELOG Home Page</h1>
<p>Home of the <em>Electronic Logbook</em> package by <a href="mailto:Stefan.Ritt@psi.ch">Stefan
Ritt</a></p>
<p><em>Current version: 3.1.4</em></p>
<hr />
<h2 id="what-is-elog">What is ELOG ?</h2>
<p><strong>ELOG</strong> is part of a family of applications known as <em><em>weblog</em>s</em> .
Their general purpose is :</p>
<ol>
<li>to make it easy for people to put information online in a
chronological fashion, in the form of short, time-stamped text
messages ("entries") with optional HTML markup for presentation,
and optional file attachments (images, archives, etc.)</li>
<li>to make it easy for other people to access this information through
a Web interface, browse entries, search, download files, and
optionally add, update, delete or comment on entries.</li>
</ol>
<p><strong>ELOG</strong> is a remarkable implementation of a <em>weblog</em> in at least two
respects :</p>
<ul>
<li>its simplicity of use : you don't need to be a seasoned server
operator and/or an experimented database administrator to run <strong>ELOG</strong>
; one executable file (under Unix or Windows), a simple configuration
text file, and it works. No Web server or relational database
required. It is also easy to translate the interface to the
appropriate language for your users.</li>
<li>its versatility : through its single configuration file, <strong>ELOG</strong> can
be made to display an infinity of variants of the <em>weblog</em> concept.
There are options for what to display, how to display it, what
commands are available and to whom, access control, etc. Moreover, a
single server can host several <em><em>weblog</em>s</em>, and each <em>weblog</em> can be
totally different from the rest.</li>
</ul>
<h2 id="screen-shots">Screen shots</h2>
<p><a href="elog/elog.gif" target="_blank">
<img src="img/elog_thumb.gif" alt="thumb" style="float:left; margin:0 1em 1em 0; width:200px;">
</a></p>
<p>On the left upper panel is a typical logbook page displayed by Netscape Navigator. Each
logbook page can contain attachments in a similar way to emails. This makes it possible
to store images or text files and retrieve them easily. You could for example attach a sample
configuration file which can later be copied to the local machine with the "<em>Save As...</em>"
function of the Web browser.</p>
<p>Several logbooks can be served though a single <strong>ELOG</strong> server. Each logbook can use different
attributes for its entries. The logbook can then be searched using these attributes. The
right pane on the left image shows a search for all entries with attribute "<em>Type</em>" equal to<br />
"<em>Configuration</em>", and the lower pane shows the search result. It is also possible to use <br />
full-text search in attributes and the entry body. </p>
<p>While logbook entries are usually displayed one entry per page, they can also be listed <br />
consecutively which makes it easy to produce a paper printout of a logbook. </p>
<p>Logbook pages can be edited or deleted. This feature can be turned off in the configuration
file so that a logbook entries cannot be changed after being submitted. </p>
<p>An additional feature is the automatic generation of a notification email messages <br />
based on a certain type or category of a logbook entry. </p>
<p>Also try out the <strong><a href="http://elog.psi.ch/elogs/Linux%20Demo/">online demo</a></strong></p>
<h2 id="use-cases">Use cases</h2>
<p>The features of <strong>ELOG</strong> make it useful for several applications:</p>
<ul>
<li><strong>Personal Logbooks</strong>. Personal notes can be written into <strong>ELOG</strong> and
can then be retrieved from anywhere with a Web browser. This makes it
handy for PC supporters who have to go around in companies or
laboratories and don\'t want to carry their paper logbook with them.
The same holds true for people traveling around a lot. The logbook
database consists of plain ASCII files which can copied easily between
different computers to have local access, for example on a notebook
with no network connection.</li>
<li><strong>Shared Logbooks</strong>. Logbooks can be shared by several people, for
reading and optionally for writing. This way workgroups can share and
exchange information like in a (simplified) news group. This is
supported by the <em>Reply</em> command in <strong>ELOG</strong> which creates
"<em>threads</em>" of entries. Users can be notified by email when new
entries are added to the logbook. Compared to that of a news server,
the installation of <strong>ELOG</strong> is much simpler.</li>
<li><strong>Small Databases</strong>. Since arbitrary attributes can be defined for a
logbook, it can be used as a small database with search facilities.</li>
<li><strong>Problem collections</strong>. A system can consist of two logbooks, in one
of which users enter bugs or problems. If someone adds a problem, an
email is automatically sent to the administrator, who can then copy
the entry to the second logbook and add the solution to the problem.
Users can then look up all fixed problems.</li>
<li><strong>Shift Logbooks</strong>. If the <em>Allow delete</em> and <em>Allow edit</em> flags are
off, an entry cannot be modified once it\'s been entered. This can be
useful for shift logbooks for example in accelerator control rooms
where each entry becomes a "<em>document</em>" with a time and author
stamp. <strong>ELOG</strong> was originally developed as a shift logbook for the
<a href="http://pibeta.psi.ch">PiBeta</a> and <a href="http://meg.psi.ch">Muegamma</a>
particle experiments at <a href="http://www.psi.ch">PSI</a>.</li>
<li><strong>File collections</strong>. Since files can be attached to <strong>ELOG</strong> entries,
the system can be used to store and retrieve files. This can be used
to store configuration files, which need to be accessible by several
people over the web, or to store images. Since <strong>ELOG</strong> features an
elaborate query facility, entries can be searched for by specifying
several categories.</li>
</ul>
<h2 id="license">License</h2>
<p><strong>ELOG</strong> is released under the <a href="http://www.gnu.org/copyleft/gpl.html">GNU Public
License</a> .</p>
<h2 id="credits">Credits</h2>
<p>The author would like to give credits to following people:</p>
<ul>
<li><a href="mailto:fredp@dial.oleane.com">Fred Pacquier</a> for this Web site and
the French translation</li>
<li><a href="mailto:roktas@omu.edu.tr">Recai Oktas</a> and <a href="mailto:roger.kalt@psi.ch">Roger
Kalt</a> for the Debian package</li>
<li><a href="mailto:djek@xs4all.nl">djek</a> for the Dutch translation</li>
<li><a href="mailto:Heiko.Scheit@mpi-hd.mpg.de">Heiko Scheit</a> for many bug fixes
and fruitful discussions</li>
<li><a href="mailto:jhcalvo@arnet.com.ar">Julio Calvo</a> for the Spanish translation</li>
<li><a href="mailto:AlberT@SuperAlberT.it">Emiliano 'AlberT' Gabrielli</a>
for his idea of scaling attached images</li>
<li><a href="mailto:andreas.luedeke@psi.ch">Andreas Luedeke</a>
for continuing user support and deployment of ELOG at PSI</li>
</ul>
<h2 id="talks-and-presentations">Talks and presentations</h2>
<p>Here are some talks and presentations given at various occasions:</p>
<ul>
<li>Seminar at KIT, Karlsruhe, Jan. 2015. <a href="https://elog.psi.ch/elog/talks/2015_1_intro.pptx">Introduction
talk</a> by Stefan
Ritt.</li>
<li>Seminar at KIT, Karlsruhe, Jan. 2015. <a href="http://elog.psi.ch/elog/talks/2015_1_accel.pptx">Application of
ELOG</a> for accelerator
operation at PSI by <a href="mailto:andreas.luedeke@psi.ch">Andreas Luedeke</a>.</li>
</ul>
<hr />
<p><em>Content by <a href="https://www.psi.ch/en/ltp-muon-physics/people/stefan-ritt">Stefan Ritt</a>, Web pages
by <a href="mailto:fredp@mygale.org">Fred Pacquier</a></em></p>
</div>
</div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
<a href="userguide/" class="btn btn-neutral float-right" title="User guide">Next <span class="icon icon-circle-arrow-right"></span></a>
</div>
<hr/>
<div role="contentinfo">
<!-- Copyright etc -->
</div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span><a href="userguide/" style="color: #fcfcfc">Next &raquo;</a></span>
</span>
</div>
<script src="js/jquery-3.6.0.min.js"></script>
<script>var base_url = ".";</script>
<script src="js/theme_extra.js"></script>
<script src="js/theme.js"></script>
<script src="search/main.js"></script>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
<!--
MkDocs version : 1.6.1
Build Date UTC : 2025-10-02 08:35:21.979466+00:00
-->

4
mkdocs/site/js/html5shiv.min.js vendored Normal file
View File

@ -0,0 +1,4 @@
/**
* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document);

2
mkdocs/site/js/jquery-3.6.0.min.js vendored Normal file

File diff suppressed because one or more lines are too long

2
mkdocs/site/js/theme.js Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,8 @@
/*
* Assign 'docutils' class to tables so styling and
* JavaScript behavior is applied.
*
* https://github.com/mkdocs/mkdocs/issues/2028
*/
$('div.rst-content table').addClass('docutils');

148
mkdocs/site/search.html Normal file
View File

@ -0,0 +1,148 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="shortcut icon" href="./img/favicon.ico" />
<title>ELOG Electronic Logbook</title>
<link rel="stylesheet" href="./css/theme.css" />
<link rel="stylesheet" href="./css/theme_extra.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
<!--[if lt IE 9]>
<script src="./js/html5shiv.min.js"></script>
<![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="./." class="icon icon-home"> ELOG Electronic Logbook
</a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="./search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="./.">Home</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="./userguide/">User guide</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="./adminguide/">Admin guide</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="./config/">Config file</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="./faq/">FAQ</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="./forum/">Forum</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="./wishlist/">Wishlist</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="./contrib/">Contributions</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="./demo/">Demo</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="./download/">Download</a>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="./.">ELOG Electronic Logbook</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="./." class="icon icon-home" aria-label="Docs"></a></li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div class="section" itemprop="articleBody">
<h1 id="search">Search Results</h1>
<form id="content_search" action="search.html">
<span role="status" aria-live="polite" class="ui-helper-hidden-accessible"></span>
<input name="q" id="mkdocs-search-query" type="text" class="search_input search-query ui-autocomplete-input" placeholder="Search the Docs" aria-label="Search the Docs" autocomplete="off" autofocus title="Type search term here">
</form>
<div id="mkdocs-search-results" class="search-results" data-no-results-text="No results found">
Searching...
</div>
</div>
</div><footer>
<hr/>
<div role="contentinfo">
<!-- Copyright etc -->
</div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
</span>
</div>
<script src="./js/jquery-3.6.0.min.js"></script>
<script>var base_url = ".";</script>
<script src="./js/theme_extra.js"></script>
<script src="./js/theme.js"></script>
<script src="./search/main.js"></script>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

3475
mkdocs/site/search/lunr.js Normal file

File diff suppressed because it is too large Load Diff

109
mkdocs/site/search/main.js Normal file
View File

@ -0,0 +1,109 @@
function getSearchTermFromLocation() {
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++) {
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == 'q') {
return decodeURIComponent(sParameterName[1].replace(/\+/g, '%20'));
}
}
}
function joinUrl (base, path) {
if (path.substring(0, 1) === "/") {
// path starts with `/`. Thus it is absolute.
return path;
}
if (base.substring(base.length-1) === "/") {
// base ends with `/`
return base + path;
}
return base + "/" + path;
}
function escapeHtml (value) {
return value.replace(/&/g, '&amp;')
.replace(/"/g, '&quot;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;');
}
function formatResult (location, title, summary) {
return '<article><h3><a href="' + joinUrl(base_url, location) + '">'+ escapeHtml(title) + '</a></h3><p>' + escapeHtml(summary) +'</p></article>';
}
function displayResults (results) {
var search_results = document.getElementById("mkdocs-search-results");
while (search_results.firstChild) {
search_results.removeChild(search_results.firstChild);
}
if (results.length > 0){
for (var i=0; i < results.length; i++){
var result = results[i];
var html = formatResult(result.location, result.title, result.summary);
search_results.insertAdjacentHTML('beforeend', html);
}
} else {
var noResultsText = search_results.getAttribute('data-no-results-text');
if (!noResultsText) {
noResultsText = "No results found";
}
search_results.insertAdjacentHTML('beforeend', '<p>' + noResultsText + '</p>');
}
}
function doSearch () {
var query = document.getElementById('mkdocs-search-query').value;
if (query.length > min_search_length) {
if (!window.Worker) {
displayResults(search(query));
} else {
searchWorker.postMessage({query: query});
}
} else {
// Clear results for short queries
displayResults([]);
}
}
function initSearch () {
var search_input = document.getElementById('mkdocs-search-query');
if (search_input) {
search_input.addEventListener("keyup", doSearch);
}
var term = getSearchTermFromLocation();
if (term) {
search_input.value = term;
doSearch();
}
}
function onWorkerMessage (e) {
if (e.data.allowSearch) {
initSearch();
} else if (e.data.results) {
var results = e.data.results;
displayResults(results);
} else if (e.data.config) {
min_search_length = e.data.config.min_search_length-1;
}
}
if (!window.Worker) {
console.log('Web Worker API not supported');
// load index in main thread
$.getScript(joinUrl(base_url, "search/worker.js")).done(function () {
console.log('Loaded worker');
init();
window.postMessage = function (msg) {
onWorkerMessage({data: msg});
};
}).fail(function (jqxhr, settings, exception) {
console.error('Could not load worker.js');
});
} else {
// Wrap search in a web worker
var searchWorker = new Worker(joinUrl(base_url, "search/worker.js"));
searchWorker.postMessage({init: true});
searchWorker.onmessage = onWorkerMessage;
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,133 @@
var base_path = 'function' === typeof importScripts ? '.' : '/search/';
var allowSearch = false;
var index;
var documents = {};
var lang = ['en'];
var data;
function getScript(script, callback) {
console.log('Loading script: ' + script);
$.getScript(base_path + script).done(function () {
callback();
}).fail(function (jqxhr, settings, exception) {
console.log('Error: ' + exception);
});
}
function getScriptsInOrder(scripts, callback) {
if (scripts.length === 0) {
callback();
return;
}
getScript(scripts[0], function() {
getScriptsInOrder(scripts.slice(1), callback);
});
}
function loadScripts(urls, callback) {
if( 'function' === typeof importScripts ) {
importScripts.apply(null, urls);
callback();
} else {
getScriptsInOrder(urls, callback);
}
}
function onJSONLoaded () {
data = JSON.parse(this.responseText);
var scriptsToLoad = ['lunr.js'];
if (data.config && data.config.lang && data.config.lang.length) {
lang = data.config.lang;
}
if (lang.length > 1 || lang[0] !== "en") {
scriptsToLoad.push('lunr.stemmer.support.js');
if (lang.length > 1) {
scriptsToLoad.push('lunr.multi.js');
}
if (lang.includes("ja") || lang.includes("jp")) {
scriptsToLoad.push('tinyseg.js');
}
for (var i=0; i < lang.length; i++) {
if (lang[i] != 'en') {
scriptsToLoad.push(['lunr', lang[i], 'js'].join('.'));
}
}
}
loadScripts(scriptsToLoad, onScriptsLoaded);
}
function onScriptsLoaded () {
console.log('All search scripts loaded, building Lunr index...');
if (data.config && data.config.separator && data.config.separator.length) {
lunr.tokenizer.separator = new RegExp(data.config.separator);
}
if (data.index) {
index = lunr.Index.load(data.index);
data.docs.forEach(function (doc) {
documents[doc.location] = doc;
});
console.log('Lunr pre-built index loaded, search ready');
} else {
index = lunr(function () {
if (lang.length === 1 && lang[0] !== "en" && lunr[lang[0]]) {
this.use(lunr[lang[0]]);
} else if (lang.length > 1) {
this.use(lunr.multiLanguage.apply(null, lang)); // spread operator not supported in all browsers: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator#Browser_compatibility
}
this.field('title');
this.field('text');
this.ref('location');
for (var i=0; i < data.docs.length; i++) {
var doc = data.docs[i];
this.add(doc);
documents[doc.location] = doc;
}
});
console.log('Lunr index built, search ready');
}
allowSearch = true;
postMessage({config: data.config});
postMessage({allowSearch: allowSearch});
}
function init () {
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", onJSONLoaded);
var index_path = base_path + '/search_index.json';
if( 'function' === typeof importScripts ){
index_path = 'search_index.json';
}
oReq.open("GET", index_path);
oReq.send();
}
function search (query) {
if (!allowSearch) {
console.error('Assets for search still loading');
return;
}
var resultDocuments = [];
var results = index.search(query);
for (var i=0; i < results.length; i++){
var result = results[i];
doc = documents[result.ref];
doc.summary = doc.text.substring(0, 200);
resultDocuments.push(doc);
}
return resultDocuments;
}
if( 'function' === typeof importScripts ) {
onmessage = function (e) {
if (e.data.init) {
init();
} else if (e.data.query) {
postMessage({ results: search(e.data.query) });
} else {
console.error("Worker - Unrecognized message: " + e);
}
};
}

3
mkdocs/site/sitemap.xml Normal file
View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
</urlset>

BIN
mkdocs/site/sitemap.xml.gz Normal file

Binary file not shown.

270
mkdocs/site/strftime.txt Normal file
View File

@ -0,0 +1,270 @@
NAME
strftime - convert date and time to a string
SYNOPSIS
#include <time.h>
size_t strftime(char *restrict s, size_t maxsize,
const char *restrict format, const struct tm *restrict
timeptr);
DESCRIPTION
The strftime() function shall place bytes into the array pointed to by
s as controlled by the string pointed to by format. The format is a
character string, beginning and ending in its initial shift state, if
any. The format string consists of zero or more conversion specifica-
tions and ordinary characters. A conversion specification consists of
a â%â character, possibly followed by an E or O modifier, and a termi-
nating conversion specifier character that determines the conversion
specificationâs behavior. All ordinary characters (including the ter-
minating null byte) are copied unchanged into the array. If copying
takes place between objects that overlap, the behavior is undefined.
No more than maxsize bytes are placed into the array. Each conversion
specifier is replaced by appropriate characters as described in the
following list. The appropriate characters are determined using the
LC_TIME category of the current locale and by the values of zero or
more members of the broken-down time structure pointed to by timeptr,
as specified in brackets in the description. If any of the specified
values are outside the normal range, the characters stored are unspec-
ified.
Local timezone information is used as though strftime() called
tzset().
The following conversion specifications are supported:
%a Replaced by the localeâs abbreviated weekday name. [ tm_wday]
%A Replaced by the localeâs full weekday name. [ tm_wday]
%b Replaced by the localeâs abbreviated month name. [ tm_mon]
%B Replaced by the localeâs full month name. [ tm_mon]
%c Replaced by the localeâs appropriate date and time representa-
tion. (See the Base Definitions volume of
IEEE Std 1003.1-2001, <time.h>.)
%C Replaced by the year divided by 100 and truncated to an inte-
ger, as a decimal number [00,99]. [ tm_year]
%d Replaced by the day of the month as a decimal number [01,31]. [
tm_mday]
%D Equivalent to %m / %d / %y . [ tm_mon, tm_mday, tm_year]
%e Replaced by the day of the month as a decimal number [1,31]; a
single digit is preceded by a space. [ tm_mday]
%F Equivalent to %Y - %m - %d (the ISO 8601:2000 standard date
format). [ tm_year, tm_mon, tm_mday]
%g Replaced by the last 2 digits of the week-based year (see
below) as a decimal number [00,99]. [ tm_year, tm_wday,
tm_yday]
%G Replaced by the week-based year (see below) as a decimal number
(for example, 1977). [ tm_year, tm_wday, tm_yday]
%h Equivalent to %b . [ tm_mon]
%H Replaced by the hour (24-hour clock) as a decimal number
[00,23]. [ tm_hour]
%I Replaced by the hour (12-hour clock) as a decimal number
[01,12]. [ tm_hour]
%j Replaced by the day of the year as a decimal number [001,366].
[ tm_yday]
%m Replaced by the month as a decimal number [01,12]. [ tm_mon]
%M Replaced by the minute as a decimal number [00,59]. [ tm_min]
%n Replaced by a <newline>.
%p Replaced by the localeâs equivalent of either a.m. or p.m. [
tm_hour]
%r Replaced by the time in a.m. and p.m. notation; in the POSIX
locale this shall be equivalent to %I : %M : %S %p . [
tm_hour, tm_min, tm_sec]
%R Replaced by the time in 24-hour notation ( %H : %M ). [
tm_hour, tm_min]
%S Replaced by the second as a decimal number [00,60]. [ tm_sec]
%t Replaced by a <tab>.
%T Replaced by the time ( %H : %M : %S ). [ tm_hour, tm_min,
tm_sec]
%u Replaced by the weekday as a decimal number [1,7], with 1 rep-
resenting Monday. [ tm_wday]
%U Replaced by the week number of the year as a decimal number
[00,53]. The first Sunday of January is the first day of week
1; days in the new year before this are in week 0. [ tm_year,
tm_wday, tm_yday]
%V Replaced by the week number of the year (Monday as the first
day of the week) as a decimal number [01,53]. If the week con-
taining 1 January has four or more days in the new year, then
it is considered week 1. Otherwise, it is the last week of the
previous year, and the next week is week 1. Both January 4th
and the first Thursday of January are always in week 1. [
tm_year, tm_wday, tm_yday]
%w Replaced by the weekday as a decimal number [0,6], with 0 rep-
resenting Sunday. [ tm_wday]
%W Replaced by the week number of the year as a decimal number
[00,53]. The first Monday of January is the first day of week
1; days in the new year before this are in week 0. [ tm_year,
tm_wday, tm_yday]
%x Replaced by the localeâs appropriate date representation. (See
the Base Definitions volume of IEEE Std 1003.1-2001, <time.h>.)
%X Replaced by the localeâs appropriate time representation. (See
the Base Definitions volume of IEEE Std 1003.1-2001, <time.h>.)
%y Replaced by the last two digits of the year as a decimal number
[00,99]. [ tm_year]
%Y Replaced by the year as a decimal number (for example, 1997). [
tm_year]
%z Replaced by the offset from UTC in the ISO 8601:2000 standard
format ( +hhmm or -hhmm ), or by no characters if no timezone
is determinable. For example, "-0430" means 4 hours 30 minutes
behind UTC (west of Greenwich). If tm_isdst is zero, the
standard time offset is used. If tm_isdst is greater than zero,
the daylight savings time offset is used. If tm_isdst is nega-
tive, no characters are returned. [ tm_isdst]
%Z Replaced by the timezone name or abbreviation, or by no bytes
if no timezone information exists. [ tm_isdst]
%% Replaced by % .
If a conversion specification does not correspond to any of the above,
the behavior is undefined.
If a struct tm broken-down time structure is created by localtime() or
localtime_r(), or modified by mktime(), and the value of TZ is subse-
quently modified, the results of the %Z and %z strftime() conversion
specifiers are undefined, when strftime() is called with such a bro-
ken-down time structure.
If a struct tm broken-down time structure is created or modified by
gmtime() or gmtime_r(), it is unspecified whether the result of the %Z
and %z conversion specifiers shall refer to UTC or the current local
timezone, when strftime() is called with such a broken-down time
structure.
Modified Conversion Specifiers
Some conversion specifiers can be modified by the E or O modifier
characters to indicate that an alternative format or specification
should be used rather than the one normally used by the unmodified
conversion specifier. If the alternative format or specification does
not exist for the current locale (see ERA in the Base Definitions vol-
ume of IEEE Std 1003.1-2001, Section 7.3.5, LC_TIME), the behavior
shall be as if the unmodified conversion specification were used.
%Ec Replaced by the localeâs alternative appropriate date and time
representation.
%EC Replaced by the name of the base year (period) in the localeâs
alternative representation.
%Ex Replaced by the localeâs alternative date representation.
%EX Replaced by the localeâs alternative time representation.
%Ey Replaced by the offset from %EC (year only) in the localeâs
alternative representation.
%EY Replaced by the full alternative year representation.
%Od Replaced by the day of the month, using the localeâs alterna-
tive numeric symbols, filled as needed with leading zeros if
there is any alternative symbol for zero; otherwise, with lead-
ing spaces.
%Oe Replaced by the day of the month, using the localeâs alterna-
tive numeric symbols, filled as needed with leading spaces.
%OH Replaced by the hour (24-hour clock) using the localeâs alter-
native numeric symbols.
%OI Replaced by the hour (12-hour clock) using the localeâs alter-
native numeric symbols.
%Om Replaced by the month using the localeâs alternative numeric
symbols.
%OM Replaced by the minutes using the localeâs alternative numeric
symbols.
%OS Replaced by the seconds using the localeâs alternative numeric
symbols.
%Ou Replaced by the weekday as a number in the localeâs alternative
representation (Monday=1).
%OU Replaced by the week number of the year (Sunday as the first
day of the week, rules corresponding to %U ) using the localeâs
alternative numeric symbols.
%OV Replaced by the week number of the year (Monday as the first
day of the week, rules corresponding to %V ) using the localeâs
alternative numeric symbols.
%Ow Replaced by the number of the weekday (Sunday=0) using the
localeâs alternative numeric symbols.
%OW Replaced by the week number of the year (Monday as the first
day of the week) using the localeâs alternative numeric sym-
bols.
%Oy Replaced by the year (offset from %C ) using the localeâs
alternative numeric symbols.
%g , %G , and %V give values according to the ISO 8601:2000 standard
week-based year. In this system, weeks begin on a Monday and week 1 of
the year is the week that includes January 4th, which is also the week
that includes the first Thursday of the year, and is also the first
week that contains at least four days in the year. If the first Monday
of January is the 2nd, 3rd, or 4th, the preceding days are part of the
last week of the preceding year; thus, for Saturday 2nd January 1999,
%G is replaced by 1998 and %V is replaced by 53. If December 29th,
30th, or 31st is a Monday, it and any following days are part of week
1 of the following year. Thus, for Tuesday 30th December 1997, %G is
replaced by 1998 and %V is replaced by 01.
If a conversion specifier is not one of the above, the behavior is
undefined.
RETURN VALUE
If the total number of resulting bytes including the terminating null
byte is not more than maxsize, strftime() shall return the number of
bytes placed into the array pointed to by s, not including the termi-
nating null byte. Otherwise, 0 shall be returned and the contents of
the array are unspecified.
ERRORS
No errors are defined.
COPYRIGHT
Portions of this text are reprinted and reproduced in electronic form
from IEEE Std 1003.1, 2003 Edition, Standard for Information Technol-
ogy -- Portable Operating System Interface (POSIX), The Open Group
Base Specifications Issue 6, Copyright (C) 2001-2003 by the Institute
of Electrical and Electronics Engineers, Inc and The Open Group. In
the event of any discrepancy between this version and the original
IEEE and The Open Group Standard, the original IEEE and The Open Group
Standard is the referee document. The original Standard can be
obtained online at http://www.opengroup.org/unix/online.html .

View File

@ -0,0 +1,564 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="shortcut icon" href="../img/favicon.ico" />
<title>User guide - ELOG Electronic Logbook</title>
<link rel="stylesheet" href="../css/theme.css" />
<link rel="stylesheet" href="../css/theme_extra.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
<script>
// Current page data
var mkdocs_page_name = "User guide";
var mkdocs_page_input_path = "userguide.md";
var mkdocs_page_url = null;
</script>
<!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script>
<![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href=".." class="icon icon-home"> ELOG Electronic Logbook
</a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="..">Home</a>
</li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal current" href="#">User guide</a>
<ul class="current">
<li class="toctree-l2"><a class="reference internal" href="#a-quick-intro">A Quick Intro</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#what-words-mean-here">What Words Mean Here</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#accessing-an-elog-server-and-its-logbooks">Accessing an ELOG server and its logbook(s)</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#viewing-information-in-elog">Viewing information in ELOG</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#browsing-around-and-finding-things">Browsing around and finding things</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#adding-stuff-to-a-logbook">Adding stuff to a logbook</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#misc-tips-tricks-things-to-be-aware-of">Misc. tips &amp; tricks, things to be aware of...</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#elog-command-line-client">elog command line client</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#rss-feed">RSS Feed</a>
</li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../adminguide/">Admin guide</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../config/">Config file</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../faq/">FAQ</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../forum/">Forum</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../wishlist/">Wishlist</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../contrib/">Contributions</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../demo/">Demo</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../download/">Download</a>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">ELOG Electronic Logbook</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a></li>
<li class="breadcrumb-item active">User guide</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div class="section" itemprop="articleBody">
<h1 id="elog-users-guide">ELOG User's Guide</h1>
<p><em>How to get the most from your ELOG server</em></p>
<hr />
<h2 id="a-quick-intro">A Quick Intro</h2>
<p><strong>ELOG</strong> is part of a family of applications known as <em>weblogs</em>. Their
general purpose is :</p>
<ol>
<li>to make it easy for people to put information online in a
chronological fashion, in the form of short, time-stamped text
messages ("<em>entries</em>") with optional HTML markup for presentation,
and optional file attachments (images, archives, etc.)</li>
<li>to make it easy for other people to access this information through
a Web interface, browse entries, search, download files, and
optionally add, update, delete or comment on entries.</li>
</ol>
<p><strong>ELOG</strong> is a remarkable implementation of a <em>weblog</em> in at least two
respects :</p>
<ul>
<li>
<p>its simplicity of use : you don\'t need to be a seasoned server
operator and/or an experimented database administrator to run <strong>ELOG</strong>
; one executable file (under Unix or Windows), a simple configuration
text file, and it works. No Web server or relational database
required. It is also easy to translate the interface to the
appropriate language for your users.</p>
</li>
<li>
<p>its versatility : through its single configuration file, <strong>ELOG</strong> can
be made to display an infinity of variants of the <em>weblog</em> concept.
There are options for what to display, how to display it, what
commands are available and to whom, access control, etc. Moreover, a
single server can host several <em><em>weblog</em>s</em>, and each <em>weblog</em> can be
totally different from the rest.</p>
</li>
</ul>
<p>This is actually a problem when writing a User's Guide, because
<strong>ELOG</strong> servers, and individual <strong>weblogs</strong> on one server, can vary
wildly in appearance and functionality... This guide only attempts to
cover the main concepts of importance for <strong>ELOG</strong> users, describing
the default "<em>out-of-the-box</em>" setup and how that behaviour may have
been modified by the server administrator.</p>
<h2 id="what-words-mean-here">What Words Mean Here</h2>
<p>Just to be clear, some definitions of terms that will be used throughout
the guide :</p>
<ul>
<li><strong>ELOG server</strong> : the machine on which the <strong>ELOG</strong> server is run. Its
operating system (Windows/Unix/Linux) and status (server/desktop) are
not important, and of course it will probably do many other things
besides.</li>
<li><strong>ELOG administrator</strong> : the person who has the authority to modify
the <strong>ELOG</strong> configuration file on the server. May be an actual system
administrator, a normal user of a server, or just the owner of a
Windows PC.</li>
<li><strong>logbook</strong> : a <em>weblog</em> made available by the <strong>ELOG</strong> server. There
may be many distinct such logbooks on one server.</li>
<li><strong>entry</strong> : the individual piece of information in a logbook. Can be
as basic as a text message with a time-stamp, or carry much more
information : attributes (see below), HTML markup, links, attached
files...</li>
</ul>
<h2 id="accessing-an-elog-server-and-its-logbooks">Accessing an ELOG server and its logbook(s)</h2>
<p>To access a logbook, point your Web browser at the appropriate URL. The
default for a local Elog is <strong><code>http://localhost:8080/logbookname</code></strong>.
Logbook files are stored in directory <strong><code>logbookname</code></strong> which is a
sub-directory of the logbook root directory, defined by the
administrator. See the administrator guide on how to create a new
logbook.</p>
<p>If several logbooks are defined on the server, the entry page may be a
list of all logbooks, with their descriptions, number of entries, and
links to enter the logbook you want to use.</p>
<p>Alternatively, you may be taken directly to a specific logbook. By
default you will see a list of entries, but the administrator may have
defined a different "<em>default view</em>" for the logbook, like the list of
the day\'s entries, or directly display the last entry, etc. (depending
on what is most convenient for that logbook\'s purpose).</p>
<p>Each entry in a logbook is identified by an unique ID, which is last
part of the URL when that message is displayed. This ID might be used to
create a bookmark in a browser pointing directly to a specific entry.</p>
<p>There are four ways through which access to a logbook may be controlled:
it may be open for all to read ; it may require a common "<em>read</em>"
password for all users ; it may require each user to have an individual
user account (login name) and password ; finally, access may be granted
or not depending on the address of the workstation you are using.</p>
<h2 id="viewing-information-in-elog">Viewing information in ELOG</h2>
<p>There are two main viewing modes in a logbook :</p>
<ul>
<li>the "<strong>entry</strong>" view : this is when only one entry is displayed on
screen (like the latest entry when you first enter a logbook, or if
you click on one in a list). Here are the various parts of the display
:</li>
<li>
<p>if there are several logbooks on the <strong>ELOG</strong> server you will see a
row of "<em>tabs</em>" at the top with the names of all the logbooks.
These are link that allow to switch quickly between logbooks (<em>this
may be disabled</em>).</p>
</li>
<li>
<p>below is a title bar with the name of the current logbook at the
left, and the <strong>ELOG</strong> logo at the right. If you are logged in,
there will be a "<code>Logged in as &lt;username&gt;</code>" reminder in between.</p>
</li>
<li>
<p>next is the "<em>menu bar</em>" : on the left is a series of links or
buttons for <strong>ELOG</strong> commands available to you. These are explored
in the sections below (<em>Note: different users may see different
menus</em>). On the right is a "<em>VCR-like</em>" set of buttons for
browsing, also explained later (<em>this may be disabled</em>).</p>
</li>
<li>
<p>after these comes the actual entry information. It always starts
with the entry time-stamp, and may be followed by up to twenty
"<em>attributes</em>". These are like fields in a database and have been
defined specifically for the current logbook. Each attribute has a
checkbox besides it, explained below (<em>this may be disabled</em>).</p>
</li>
<li>
<p>the full-width box below holds the textual content (message) of the
entry. This can be plain-text or HTML code. Note that for some
special applications (say, a photo album or an event log) the
attributes and/or the attached files may be enough information, so
this field may not always be present.</p>
</li>
<li>
<p>last and optionally, one or more attached files (that were uploaded
to the server when the entry was created) are offered as clickable
links for download or viewing, along with the file name and size. If
these are images they may be displayed directly on the page.</p>
<p>At the bottom of every page is a common "<em>footer</em>" for the
logbook. By default this is just a link to the <strong>ELOG</strong> home page in
Switzerland, but may be customized locally (typically to provide a
navigation bar and links for integration with other Web sites).
- the "<strong>search result</strong>" views : these are basically lists of
entries, resulting either from a "<em>Search</em>" command or from
shortcuts such as "<em>Last X days</em>" and "<em>Last X entries</em>" commands
(more on this below). This mode has many options, including :
- a "<em>summary</em>" view : one entry per row in a table. Some attributes
may not be displayed. If the entry text is displayed (or its first
few lines), it goes into the rightmost column. Attachments are not
displayed.</p>
</li>
<li>
<p>a "<em>classical weblog</em>" view : entries appear beneath one another,
with attributes on one line and the text (and attachments, if
present) below. Images may be displayed or just linked to.</p>
</li>
<li>
<p>entries may appear most recent first, or in reverse.</p>
</li>
<li>
<p>menus on list views are different from the entry view menu. By
default they only have two or three commands, but they may have been
customized by the administrator to add more.</p>
<p>All these lists have a number to the left of each listed entry, that
is a link to the corresponding entry view.</p>
</li>
</ul>
<h2 id="browsing-around-and-finding-things">Browsing around and finding things</h2>
<p>There are several interesting ways to peruse the information in a
logbook :</p>
<ul>
<li><strong>weblogs</strong>" are often used for applications where chronology (time) is
relevant, so a very common approach is to see "<em>what happened
last</em>". In <strong>ELOG</strong> there are two commands for this. They are
actually shortcuts for searches, to display the last day\'s (24 hrs)
entries, or the last 10 entries (regardless of age). Note that the
menus on the "<em>search result</em>" views of these commands are a bit
special : they have the same command that created them, but with the
search "<em>interval</em>" doubled. From the "<em>last day</em>" list you can
get the "<em>last 2 days</em>" list, from that one the "<em>last 4 days</em>",
etc., and similarly for "<em>last 10</em>", "<em>last 20</em>", etc., making it
easy to quickly go back in time.</li>
<li>another useful method, very specific to <strong>ELOG</strong>, is "<em>filtered
browsing</em>" - again, shortcuts for specific searches. On the entry
view, the "<em>VCR</em>" buttons normally let you see the previous, next,
first or last entry in the logbook. However, if on the current entry
you check one (or more) of the checkboxes in front of the attributes,
only entries having the same value for the checked attribute(s) will
be displayed by the browse buttons. Thus you can quickly flip through
all the entries you submitted yourself, or of a certain type/category,
depending on what attributes have been defined.</li>
<li>for custom searches there is the query form given by the "<em>Find</em>"
command. This lets you look for entries between two dates, with
particular values for any attribute, or containing specific text. If
you fill in several fields, only entries that meet <strong>ALL</strong> criteria
will be selected. Possible options include sort order and summary view
for results, printer-friendly formatting, displaying attachments or
not, and searching through all logbooks on the <strong>ELOG</strong> server (if
applicable).</li>
</ul>
<h2 id="adding-stuff-to-a-logbook">Adding stuff to a logbook</h2>
<p>If you have "<em>write access</em>" to a logbook (by one of the same four
methods as for read access), then you may use the "<em>New</em>", "<em>Edit</em>",
"<em>Reply</em>" and "<em>Delete</em>" commands.</p>
<p>For the quality of the information committed to the logbook, you need
understand and use these as well as possible. Here are some of the
important features for each commmand :</p>
<ul>
<li><strong>New</strong> :</li>
<li>you will not be able to save your entry if all attributes marked
with a red star (*) are not filled in.</li>
<li>some attributes may be pre-filled from system variables (like your
user name). Pre-filled attributes may be still editable or read-only
(like the entry creation date).</li>
<li>attributes may be text fields (limited to 100 characters),
list-boxes (max. 100 values), or check-boxes. There is also a
special type of attribute where several values are listed on a line
with check-boxes, and you can check as many values as needed.</li>
<li>a nice touch : URLs in attributes (http://..., ftp://...,
mailto:...) are automatically converted to links.</li>
<li>in addition to the above URLs, one can enter a tag <strong>elog:\&lt;id&gt;</strong>
which references another logbook entry. The tag
<strong>elog:\&lt;logbook&gt;/\&lt;id&gt;</strong> references a message in another logbook
on the same server. The tag <strong>elog:\&lt;id&gt;/\&lt;n&gt;</strong> references
attachment number <strong>n</strong> in a logbook entry. To reference an
attachment in the current message, one uses <strong>elog:/\&lt;n&gt;</strong>. An
anchor inside an entry can be referenced with
<strong>elog:\&lt;id&gt;#\&lt;anchor&gt;</strong>.</li>
<li>the Text multi-line field, if present, may be pre-filled with a
template if entries need to have a common, consistent format across
the logbook (especially for HTML). There may also be a comment
inserted before it to explain local rules and conventions, upload
rules, etc.</li>
<li>check the "<em>Submit as HTML</em>" box if the entry contains HTML
markup.</li>
<li>a logbook may be configured to send a notification e-mail to various
recipients each time an entry is submitted. This may be the default
behaviour, and you should check "<em>Suppress notification</em>"" if it is
not wanted. Or it may be checked by default, and you need to
explicitely uncheck it to send the mail. Then again, you may not
have a choice... (note that notifiation recipients may or may not
be disclosed).</li>
<li>if the logbook allows attachments, there will be a number of fields
with "<em>Browse</em>" buttons at the bottom of the form. Use these to
pick one or more files on your local computer, they will be uploaded
to the <strong>ELOG</strong> server as you submit the form. IMPORTANT : there is
an upper limit on the size of individual attached files. By default
it is about 1 MB but can be changed by the administrator.</li>
<li><strong>Edit</strong> :</li>
<li>normally the Edit form will have all the values of the existing
entry in its fields for modification. However, sometimes you may see
fields that have been blanked if this makes sense for a particular
logbook application (e.g. a "<em>Last modified by</em>" field).</li>
<li>the "<em>Submit as new entry</em>" checkbox only appears on Edit forms.
If it is unchecked, the modified entry keeps its original creation
time-stamp. If it is checked, the modified entry becomes the latest
in the logbook, as if it had just been created. Again, it is
possible that this is checked by default, or disabled altogether on
some logbooks.</li>
<li>managing attachments through this form is easy. If all you want to
change is the attributes or text, don\'t touch the fields at the
bottom and the original attachments will be preserved. If you want
to add an additional attachment, use an empty field. If you want to
update an existing file, use the "<em>Browse</em>" button below that
file\'s name to specify the new one. Lastly, if you want to delete
an attachment without upoading a new one in its place, you must type
the magic word "<code>&lt;delete&gt;</code>" in the field below its name.</li>
<li><strong>Reply</strong> :</li>
<li>this command creates a new entry, but with the current entry\'s text
"<em>quoted</em>" (with \'&gt;\') in the compose form, much like when
replying to e-mail.</li>
<li>the new entry has a special "<em>In reply to</em>" attribute with a link
to the original entry ; the latter also acquires a "<em>Reply</em>"
attribute with a link to the new entry. Unfortunately these links
cannot be trusted in the present <strong>ELOG</strong> storage system, and the
whole scheme gets somewhat confusing when there are several replies.</li>
<li><strong>Delete</strong> :</li>
<li>nothing much to say about this one, except that there is no
"<em>Recycle bin</em>" or whatever : once you have confirmed the deletion
of an entry, it\'s gone for good, so be careful ! (same holds for
the replacement or deletion of an attached file).</li>
</ul>
<h2 id="misc-tips-tricks-things-to-be-aware-of">Misc. tips &amp; tricks, things to be aware of...</h2>
<ul>
<li>
<p>you can link directly to a specific entry by its URL, using the
message ID (from another entry or an external Web page). It is also
possible to link to a search result this way: use the "<em>Search</em>"
form to compose a query that will result in exactly what you want
(either a single entry or a list of entries). Copy the URL for that
result page from your browser, and use that as the target for your
link.</p>
</li>
<li>
<p>right now you cannot search entries for attachments by their file
name.</p>
</li>
<li>
<p>right now attributes that consist of just a checkbox ("<em>boolean</em>")
can only be searched by "<em>checked</em>" state in the "<em>Search</em>" form.
However, if you start from an entry where that attribute is unchecked,
you can use "<em>filtered browsing</em>" to flip through all other entries
where it is also unchecked.</p>
</li>
<li>
<p>as mentioned above, the "<em>Reply</em>" command only provides a basic
comment/chat facility - a full-blown discussion board is not
<strong>ELOG</strong>'s purpose. If a logbook has a very specific purpose and
format (picture gallery, event log, file library etc.) it might be a
good idea to disable that command there and move all
chat/comments/discussions to a separate, dedicated logbook to avoid
"<em>visual pollution</em>".</p>
</li>
<li>
<p>it is important to understand that currently the <strong>ELOG</strong> server
application is "<em>single-process</em>" and "<em>non-streaming</em>". In normal
terms this means that :</p>
</li>
<li>
<p>only one request is processed at any one time by the server.</p>
</li>
<li>
<p>uploading or downloading an attachement file is a single request,
and causes the entire file to be loaded in server memory while the
request is being processed.</p>
<p>This is not normally a problem for the sort of short, text-mode
entries <strong>ELOG</strong> is designed to support. However, if a user starts
to upload or download a large attachment file (or image) over a slow
link, all other users on that <strong>ELOG</strong> server will have to wait for
that transfert to finish before they can access any logbook on that
server. This is why there is a low limit on the size of attachments,
and why <strong>ELOG</strong> should not be used to distribute large files under
intensive multi-user conditions.</p>
</li>
<li>
<p>It is possible to use bookmarks to pre-populate various attributes
when submitting an <strong>ELOG</strong> entry. This can be useful if the same
person often creates similar entries from the same PC. For example,
with a bookmark of the form:</p>
<p>http://your.host/your_logbook/?cmd=New&amp;pauthor=joe&amp;ptype=Info</p>
</li>
</ul>
<p>...a new entry is created, with the "<em>author</em>" field pre-populated
with "<em>joe</em>" and the "<em>Info</em>" value preselected for the "<em>type</em>"
field. The same is possible for any attribute defined in the logbook
(note the leading "p"). Thus you can define a set of bookmarks for
various types of logbook entries.</p>
<h2 id="elog-command-line-client">elog command line client</h2>
<p>In addition to submission of logbook entries through the Web interface, the standalone "<em>client</em>" program <strong><code>elog</code></strong> can be used.</p>
<p>The parameters are:</p>
<pre><code class="language-text">elog &lt;parameters&gt;
-h &lt;hostname&gt; Hostname where elogd is running
[-p port] Port where elogd is running
[-d subdir] URL Directoy where elogd is running
-l logbook Name of logbook
-s Use SSL for communication
[-v] For verbose output
[-w password] Write password defined on server
[-u username password] User name and password
[-f &lt;attachment&gt;] Up to 50 attachments
-a &lt;attribute&gt;=&lt;value&gt; Up to 50 attributes
[-r &lt;id&gt;] Reply to existing message
[-q] Quote original text on reply
[-e &lt;id&gt;] Edit existing message
[-x] Suppress email notification
[-n 0|1|2] Encoding: 0:ELcode,1:plain,2:HTML
-m &lt;textfile&gt;] | &lt;text&gt;
</code></pre>
<p>Arguments with blanks must be enclosed in quotes. The elog message can
either be submitted on the command line, piped in like</p>
<p><code>cat text | elog -h ... -l ... -a ...</code></p>
<p>or in a file with the -m flag. Multiple attributes and attachments can
be supplied. If attributes with multiple possible values are defined
in a logbook (via the <em>"MOptions"</em> keyword), they can be separated
with a "|", like <strong><code>-a "&lt;attribute&gt;=&lt;value1&gt; | &lt;value2&gt;"</code></strong>. The
message text can be supplied directly at the command line or submitted
from a file with the <strong><code>-m</code></strong> flag.</p>
<p>The <strong><code>elog</code></strong> program makes it possible to submit logbook entries
automatically by the system or from scripts. In some shift logbooks
this feature is used to enter alarm messages automatically into the
logbook.</p>
<h2 id="rss-feed">RSS Feed</h2>
<p>RSS (RDF Site Summrary or Really Simple Syntication) is a web feed
format to publish frequently new or updated ELOG entries. This is a bit
like the email notifications present in ELOG, but the RSS system does
not go through an email reader, but through a dedicated RSS reader. This
helps to seperate ELOG updates form other email or spam. An RSS
"channel" can be subscribed to, so one gets notified whenever a new or
updated entry exists. One can either use a dedicated RSS reader or
aggregator, or use the RSS functionality of a web browser, such as
Firefox or Google Reader.</p>
<p>To obtain the RSS feed, one simply has to request the file
<strong><code>elog.rdf</code></strong> from a logbook. For the ELOG forum, one can enter the URL</p>
<p><a href="https://elog.psi.ch/elogs/Forum/elog.rdf"><code>https://elog.psi.ch/elogs/Forum/elog.rdf</code></a></p>
<p>The browser then offers the possiblity to subscribe to that logbook:</p>
<p><img alt="" src="../img/rss.png" /></p>
<p>In case of "Live Bookmarks" in Firefox, new logbook entries
automatically appear in the bookmark list:</p>
<p><img alt="" src="../img/live_bookmarks.png" /></p>
<p>Standalone RSS reader can also notify the user of new entries with
dialog boxes and sounds. For a list of availabel RSS aggregators, see
<a href="http://en.wikipedia.org/wiki/Comparison_of_feed_aggregators">here</a>.</p>
</div>
</div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
<a href=".." class="btn btn-neutral float-left" title="Home"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../adminguide/" class="btn btn-neutral float-right" title="Admin guide">Next <span class="icon icon-circle-arrow-right"></span></a>
</div>
<hr/>
<div role="contentinfo">
<!-- Copyright etc -->
</div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span><a href=".." style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../adminguide/" style="color: #fcfcfc">Next &raquo;</a></span>
</span>
</div>
<script src="../js/jquery-3.6.0.min.js"></script>
<script>var base_url = "..";</script>
<script src="../js/theme_extra.js"></script>
<script src="../js/theme.js"></script>
<script src="../search/main.js"></script>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@ -0,0 +1,265 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="shortcut icon" href="../img/favicon.ico" />
<title>Wishlist - ELOG Electronic Logbook</title>
<link rel="stylesheet" href="../css/theme.css" />
<link rel="stylesheet" href="../css/theme_extra.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
<script>
// Current page data
var mkdocs_page_name = "Wishlist";
var mkdocs_page_input_path = "wishlist.md";
var mkdocs_page_url = null;
</script>
<!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script>
<![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href=".." class="icon icon-home"> ELOG Electronic Logbook
</a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="..">Home</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../userguide/">User guide</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../adminguide/">Admin guide</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../config/">Config file</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../faq/">FAQ</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../forum/">Forum</a>
</li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal current" href="#">Wishlist</a>
<ul class="current">
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../contrib/">Contributions</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../demo/">Demo</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../download/">Download</a>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">ELOG Electronic Logbook</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a></li>
<li class="breadcrumb-item active">Wishlist</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div class="section" itemprop="articleBody">
<h1 id="elog-wishlist">ELOG Wishlist</h1>
<p>Here are some "<em>wishlist</em>" items requested by users. I will work down
the list as time permits, starting at the items with the most votes. You
can vote for a feature, or suggest one, by sending me an email.</p>
<hr />
<table>
<thead>
<tr>
<th>Feature</th>
<th>Votes</th>
</tr>
</thead>
<tbody>
<tr>
<td>Implement groups of users</td>
<td>8</td>
</tr>
<tr>
<td>Password expiration</td>
<td>2</td>
</tr>
<tr>
<td>Account expiration</td>
<td>1</td>
</tr>
<tr>
<td>Make attributes which whould be displayd selectable in \"Find\" page</td>
<td>1</td>
</tr>
<tr>
<td>Convert elog text files into XML files and comma separated files with elconv</td>
<td>1</td>
</tr>
<tr>
<td>Implement multi-line attributes</td>
<td>8</td>
</tr>
<tr>
<td>Derive attribute options from list of entries of another logbook</td>
<td>1</td>
</tr>
<tr>
<td>Specify date format explicitly for substitutions, like $entry date{%Y}</td>
<td>2</td>
</tr>
<tr>
<td>Change attributes of whole thread, like mark a thread "open" or "closed"</td>
<td>4</td>
</tr>
<tr>
<td>Automatic unlocking of entries after a specific time period</td>
<td>1</td>
</tr>
<tr>
<td>Implement PAM authentification under Linux (Which includes LDAP &amp; AFS &amp; Kerberos &amp; ...)</td>
<td>13</td>
</tr>
<tr>
<td>Implement attributes which are math results from others, like <em>att3=att1+att2</em></td>
<td>3</td>
</tr>
<tr>
<td>Show sums of numeric attributes</td>
<td>2</td>
</tr>
<tr>
<td>Let each user choose its language separately</td>
<td>1</td>
</tr>
<tr>
<td>Implement multiple selection boxes</td>
<td>1</td>
</tr>
<tr>
<td>Boolean operators for queries, like "attrib1=a AND not attrib2=b"</td>
<td>1</td>
</tr>
<tr>
<td>Implement "sybolik-link" logbooks such that a (virtual) logbook can "point" to a "real" logbook.<br>This is useful to have people always submit to the same logbook, when the real logbook<br>changes from time to time.</td>
<td>1</td>
</tr>
<tr>
<td>Select individual columns for display and printing</td>
<td>2</td>
</tr>
<tr>
<td>"Incremental" options. Have fixed set of global options, and in each<br>logbook add or remove some of those with<br><strong>+Options = ...</strong> or <strong>-Options = ...</strong></td>
<td>1</td>
</tr>
<tr>
<td>"Include" statement for config file.</td>
<td>2</td>
</tr>
<tr>
<td>Use different styles (colors) depending on an attribute</td>
<td>1</td>
</tr>
<tr>
<td>Add native IPv6 support</td>
<td>1</td>
</tr>
<tr>
<td>Copy new elog entries automatically to other logbooks</td>
<td>1</td>
</tr>
<tr>
<td>Extend the search facility to (text) attachments</td>
<td>1</td>
</tr>
</tbody>
</table>
</div>
</div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
<a href="../forum/" class="btn btn-neutral float-left" title="Forum"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../contrib/" class="btn btn-neutral float-right" title="Contributions">Next <span class="icon icon-circle-arrow-right"></span></a>
</div>
<hr/>
<div role="contentinfo">
<!-- Copyright etc -->
</div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span><a href="../forum/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../contrib/" style="color: #fcfcfc">Next &raquo;</a></span>
</span>
</div>
<script src="../js/jquery-3.6.0.min.js"></script>
<script>var base_url = "..";</script>
<script src="../js/theme_extra.js"></script>
<script src="../js/theme.js"></script>
<script src="../search/main.js"></script>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>