minimedit.git
5 years agologin/emulate: request page as different user v3.6
Mischa POSLAWSKY [Thu, 9 Aug 2018 16:12:42 +0000 (18:12 +0200)]
login/emulate: request page as different user

Admin feature to download user-customised texts
(in particular the welcoming letter to be sent to everyone).

5 years agologin: strip logout parameter on form post
Mischa POSLAWSKY [Sat, 11 Aug 2018 07:44:40 +0000 (09:44 +0200)]
login: strip logout parameter on form post

Fix lingering request after relogin.

5 years agologin/edit: silence code warning on missing values
Mischa POSLAWSKY [Sat, 11 Aug 2018 07:43:10 +0000 (09:43 +0200)]
login/edit: silence code warning on missing values

Ignore empty email/name.

5 years agonieuws: include contact form at replyable overview
Mischa POSLAWSKY [Sat, 11 Aug 2018 03:56:26 +0000 (05:56 +0200)]
nieuws: include contact form at replyable overview

5 years agonieuws: user reply form on melding page
Mischa POSLAWSKY [Fri, 10 Aug 2018 19:40:45 +0000 (21:40 +0200)]
nieuws: user reply form on melding page

5 years agonieuws: generic date formatting function
Mischa POSLAWSKY [Fri, 10 Aug 2018 23:13:53 +0000 (01:13 +0200)]
nieuws: generic date formatting function

5 years agoedit/page: omit link target options except for _blank
Mischa POSLAWSKY [Fri, 10 Aug 2018 23:19:47 +0000 (01:19 +0200)]
edit/page: omit link target options except for _blank

Prevent user from selecting unwanted values.

5 years agoedit/page: hide type input on link dialog
Mischa POSLAWSKY [Thu, 9 Aug 2018 12:29:18 +0000 (14:29 +0200)]
edit/page: hide type input on link dialog

Improved implementation of commit v3.0-24-g48ed0c2512 (2018-06-16)
[edit: omit type input from link dialog] without breaking url saves.

5 years agonieuws: create new articles relative to page root
Mischa POSLAWSKY [Sun, 5 Aug 2018 00:28:01 +0000 (02:28 +0200)]
nieuws: create new articles relative to page root

Support different categories, assuming link is run from index.

5 years agopage: http redirect to html symlinks
Mischa POSLAWSKY [Tue, 31 Jul 2018 18:17:20 +0000 (20:17 +0200)]
page: http redirect to html symlinks

Feature to set up shorthands and replacements.

5 years agopage: predetermine static html include
Mischa POSLAWSKY [Tue, 31 Jul 2018 18:16:39 +0000 (20:16 +0200)]
page: predetermine static html include

5 years agologin/edit: column visibility option to restrict to admins
Mischa POSLAWSKY [Tue, 17 Jul 2018 20:11:22 +0000 (22:11 +0200)]
login/edit: column visibility option to restrict to admins

Read-only tags become invisible, and now configurable per site.

5 years agologin/edit: hide empty tags column (empty groups)
Mischa POSLAWSKY [Tue, 17 Jul 2018 20:08:43 +0000 (22:08 +0200)]
login/edit: hide empty tags column (empty groups)

5 years agocontact: fix login indicator, omit unresolved host names
Mischa POSLAWSKY [Tue, 7 Aug 2018 14:22:12 +0000 (16:22 +0200)]
contact: fix login indicator, omit unresolved host names

5 years agocontact: exceptional parsing and delivery for bbq
Mischa POSLAWSKY [Tue, 7 Aug 2018 14:09:16 +0000 (16:09 +0200)]
contact: exceptional parsing and delivery for bbq

5 years agonieuws: replace placeholders in article contents
Mischa POSLAWSKY [Tue, 7 Aug 2018 01:26:56 +0000 (03:26 +0200)]
nieuws: replace placeholders in article contents

Support contact form include.

5 years agocontact: ignore email validation for bbq form
Mischa POSLAWSKY [Tue, 7 Aug 2018 01:26:10 +0000 (03:26 +0200)]
contact: ignore email validation for bbq form

5 years agoedit/page: editor notification of save results
Mischa POSLAWSKY [Tue, 7 Aug 2018 01:43:58 +0000 (03:43 +0200)]
edit/page: editor notification of save results

Unobtrusive indication of success.

5 years agoedit/page: restore link widgets to fix relative locations
Mischa POSLAWSKY [Wed, 1 Aug 2018 21:03:57 +0000 (23:03 +0200)]
edit/page: restore link widgets to fix relative locations

Apparently hiding the link type causes internal references to be silently
rejected.

5 years agologin/members: order by full name
Mischa POSLAWSKY [Thu, 2 Aug 2018 03:41:25 +0000 (05:41 +0200)]
login/members: order by full name

Login may not match in which case visible results appear random.
Support sort by any ?order column, assuming anything besides seen date
is alphanumeric.

5 years agologin/name: placeholder script to address users
Mischa POSLAWSKY [Tue, 31 Jul 2018 03:36:16 +0000 (05:36 +0200)]
login/name: placeholder script to address users

Useful in email template.

5 years agonieuws: article lists in left layout with images
Mischa POSLAWSKY [Tue, 31 Jul 2018 22:41:05 +0000 (00:41 +0200)]
nieuws: article lists in left layout with images

5 years agonieuws: find article image to append on page
Mischa POSLAWSKY [Tue, 31 Jul 2018 22:36:57 +0000 (00:36 +0200)]
nieuws: find article image to append on page

5 years agonieuws: consistent url input to article parser
Mischa POSLAWSKY [Tue, 31 Jul 2018 21:39:26 +0000 (23:39 +0200)]
nieuws: consistent url input to article parser

Should be valid even if currently unused.

5 years agopage: do not redirect slash to directory requests
Mischa POSLAWSKY [Thu, 12 Jul 2018 19:54:42 +0000 (21:54 +0200)]
page: do not redirect slash to directory requests

Fix pathless requests to upcoming edit pages.

5 years agoedit: build rules for ckeditor
Mischa POSLAWSKY [Sat, 14 Jul 2018 14:05:02 +0000 (16:05 +0200)]
edit: build rules for ckeditor

Document installation with combined language include to minimise deferred
loads.  Local build is equivalent to online download.

5 years agoedit: restyle to upstream ckeditor configuration
Mischa POSLAWSKY [Sat, 14 Jul 2018 13:49:06 +0000 (15:49 +0200)]
edit: restyle to upstream ckeditor configuration

Same results but minimising differences from tracked v4.10.0.

5 years agoedit: track ckeditor configuration
Mischa POSLAWSKY [Fri, 13 Jul 2018 19:00:28 +0000 (21:00 +0200)]
edit: track ckeditor configuration

Generated by online CKEditor builder containing only used features.

5 years agoedit: move fotocover page to foto/ subdirectory
Mischa POSLAWSKY [Thu, 12 Jul 2018 19:42:30 +0000 (21:42 +0200)]
edit: move fotocover page to foto/ subdirectory

Share base path with upcoming related features.

5 years agoedit: move contents editor to subdirectory
Mischa POSLAWSKY [Thu, 12 Jul 2018 19:46:01 +0000 (21:46 +0200)]
edit: move contents editor to subdirectory

Clear /edit root to allow for other pages without path conflicts.

5 years agoedit: optionally load ckeditor from local install
Mischa POSLAWSKY [Fri, 13 Jul 2018 19:28:40 +0000 (21:28 +0200)]
edit: optionally load ckeditor from local install

Custom build can include used plugins and languages, saving deferred loads.

5 years agopage: stable include path (site then minimedit root) v3.5
Mischa POSLAWSKY [Wed, 11 Jul 2018 19:46:34 +0000 (21:46 +0200)]
page: stable include path (site then minimedit root)

Uniform behaviour, preferring site-specific overrides and falling back
to shared files (without requiring symlinks).

5 years agoedit: disable ckeditor config.js include
Mischa POSLAWSKY [Fri, 13 Jul 2018 19:25:30 +0000 (21:25 +0200)]
edit: disable ckeditor config.js include

Save an unneeded load, since settings are declared with page.js setup.

5 years agoedit: close button to hide toolbar
Mischa POSLAWSKY [Fri, 13 Jul 2018 19:24:53 +0000 (21:24 +0200)]
edit: close button to hide toolbar

Significantly increases visibility on small (phone) screens.
Inline equivalent to toolbarCanCollapse option.

5 years agoedit: inline styling buttons before block inserts
Mischa POSLAWSKY [Wed, 11 Jul 2018 19:45:26 +0000 (21:45 +0200)]
edit: inline styling buttons before block inserts

Match toolbars of common word processors.

5 years agoedit: drop source button
Mischa POSLAWSKY [Wed, 11 Jul 2018 19:26:59 +0000 (21:26 +0200)]
edit: drop source button

Originally added in case of missing or broken features (unwarranted).
Redistribution allows fit in 2 lines on standard mobile phone width.

5 years agoedit: implement filename storage in upload include
Mischa POSLAWSKY [Wed, 11 Jul 2018 19:12:12 +0000 (21:12 +0200)]
edit: implement filename storage in upload include

5 years agologin/edit: move upload handling code into include
Mischa POSLAWSKY [Wed, 11 Jul 2018 19:09:21 +0000 (21:09 +0200)]
login/edit: move upload handling code into include

5 years agologin/edit: separate columns declaration
Mischa POSLAWSKY [Tue, 10 Jul 2018 21:36:41 +0000 (23:36 +0200)]
login/edit: separate columns declaration

Move configuration unchanged into edit.inc.php to allow site customisation.

5 years agologin/edit: generic multi-values declaration
Mischa POSLAWSKY [Tue, 10 Jul 2018 21:58:20 +0000 (23:58 +0200)]
login/edit: generic multi-values declaration

Move tags setup code into common loop so placement can be configured.

5 years agologin/edit: declare column file storage
Mischa POSLAWSKY [Tue, 10 Jul 2018 21:36:59 +0000 (23:36 +0200)]
login/edit: declare column file storage

Allow other columns to be declared before initialisation.

5 years agologin/edit: keep login data of named self
Mischa POSLAWSKY [Tue, 10 Jul 2018 21:58:52 +0000 (23:58 +0200)]
login/edit: keep login data of named self

Support passwords for admins editing themselves with parameter.

5 years agopage: catch exceptions in placeholder scripts
Mischa POSLAWSKY [Mon, 9 Jul 2018 23:08:53 +0000 (01:08 +0200)]
page: catch exceptions in placeholder scripts

Inline error (similar to missing) instead of global breakage.

5 years agoedit: support dashes in placeholder parameters
Mischa POSLAWSKY [Mon, 9 Jul 2018 22:53:35 +0000 (00:53 +0200)]
edit: support dashes in placeholder parameters

Fix date input.

5 years agoedit: no semantic newlines after semicolons
Mischa POSLAWSKY [Mon, 9 Jul 2018 20:32:22 +0000 (22:32 +0200)]
edit: no semantic newlines after semicolons

Not a good break point as it's mostly used in html entities such as &.

5 years agothumb: optional width restriction in size parameter
Mischa POSLAWSKY [Mon, 9 Jul 2018 18:13:07 +0000 (20:13 +0200)]
thumb: optional width restriction in size parameter

Support a width prefix (+x) in addition to or instead of height only.
Maximum WxH can be specified, or falls back to 4x the other resolution:
"100" is equivalent to "400x100", and "640x" will bound to "640x160".

5 years agologin/commits: navigation styling of page links
Mischa POSLAWSKY [Sun, 8 Jul 2018 02:40:27 +0000 (04:40 +0200)]
login/commits: navigation styling of page links

5 years agologin/edit: text input width to fit longer names
Mischa POSLAWSKY [Sun, 8 Jul 2018 15:26:46 +0000 (17:26 +0200)]
login/edit: text input width to fit longer names

5 years agologin/list: join multiple names by ampersands
Mischa POSLAWSKY [Sun, 8 Jul 2018 15:25:38 +0000 (17:25 +0200)]
login/list: join multiple names by ampersands

Encoded newlines are invisible in html.

5 years agologin/edit: filter to replace newlines in input values
Mischa POSLAWSKY [Sun, 8 Jul 2018 15:18:23 +0000 (17:18 +0200)]
login/edit: filter to replace newlines in input values

Multiple names on Lijtweg.

5 years agofoto: fix javascript warning in test for ?blur option
Mischa POSLAWSKY [Sun, 8 Jul 2018 02:24:25 +0000 (04:24 +0200)]
foto: fix javascript warning in test for ?blur option

Careless mistake broke js in commit v3.2-6-gee09c737f2 (2018-06-19)
[foto: ?blur option to disable thumbnail resizing].

5 years agothumb: output results of existing target
Mischa POSLAWSKY [Sun, 8 Jul 2018 01:46:03 +0000 (03:46 +0200)]
thumb: output results of existing target

In case the script gets called instead of httpd/file cache, the found target
should still be returned.  Broken since commit v3.2-15-gf08646f0f4 (2018-07-07)
[thumb: decide on cache location in mkthumb()].

5 years agoedit: avoid js warning if link not found
Mischa POSLAWSKY [Sun, 8 Jul 2018 02:25:15 +0000 (04:25 +0200)]
edit: avoid js warning if link not found

Expect optional results.

5 years agoedit: leave standalone placeholders as is
Mischa POSLAWSKY [Sun, 8 Jul 2018 00:08:01 +0000 (02:08 +0200)]
edit: leave standalone placeholders as is

As described, fix unwanted <p> containers being added, causing accumulative
empty paragraphs on successive edits.

5 years agologin/edit: admin override as template parameter
Mischa POSLAWSKY [Sat, 7 Jul 2018 23:56:01 +0000 (01:56 +0200)]
login/edit: admin override as template parameter

Fixes user argument being ignored due to recent changes.

5 years agologin: avoid editor conflict with login post
Mischa POSLAWSKY [Sat, 7 Jul 2018 23:23:00 +0000 (01:23 +0200)]
login: avoid editor conflict with login post

Rename username variable to avoid triggering [index] authentication.
With this form element, the welcome message is now superfluous.

5 years agologin/list: wrap each item to allow containment v3.4
Mischa POSLAWSKY [Sat, 7 Jul 2018 19:25:30 +0000 (21:25 +0200)]
login/list: wrap each item to allow containment

Hack to set CSS overflow fixing right-aligned date from bleading over.

5 years agologin/list: mark admins by a wrench pictograph
Mischa POSLAWSKY [Sat, 7 Jul 2018 19:23:29 +0000 (21:23 +0200)]
login/list: mark admins by a wrench pictograph

Prevent line-wraps by saving at least 5em.

5 years agologin/list: hide unvisited if ordered by seen
Mischa POSLAWSKY [Sat, 7 Jul 2018 19:27:56 +0000 (21:27 +0200)]
login/list: hide unvisited if ordered by seen

Filter out empty values which are not relevant to the requested view.

5 years agologin/admin: recent visitors summary
Mischa POSLAWSKY [Sat, 7 Jul 2018 21:03:40 +0000 (23:03 +0200)]
login/admin: recent visitors summary

Include login/list with limit and without columns.
Also links overview pages previously only mentioned privately.

5 years agologin/visits: replace login/visits script by common list
Mischa POSLAWSKY [Sat, 7 Jul 2018 21:02:02 +0000 (23:02 +0200)]
login/visits: replace login/visits script by common list

Completely subsumed.

5 years agologin/list: visit view to emulate login/visits
Mischa POSLAWSKY [Sat, 7 Jul 2018 20:48:15 +0000 (22:48 +0200)]
login/list: visit view to emulate login/visits

Identical styling.

5 years agologin/list: option to order by seen date
Mischa POSLAWSKY [Sat, 7 Jul 2018 20:50:59 +0000 (22:50 +0200)]
login/list: option to order by seen date

Feature parity with login/visits.

5 years agologin/list: indicate admins by suffix description
Mischa POSLAWSKY [Sat, 7 Jul 2018 20:37:39 +0000 (22:37 +0200)]
login/list: indicate admins by suffix description

Like login/visits.

5 years agologin/list: avatar styling requires view parameter
Mischa POSLAWSKY [Sat, 7 Jul 2018 20:41:57 +0000 (22:41 +0200)]
login/list: avatar styling requires view parameter

Default to a flat list of names.

5 years agologin/list: link users to edit page for admins
Mischa POSLAWSKY [Sat, 7 Jul 2018 20:34:38 +0000 (22:34 +0200)]
login/list: link users to edit page for admins

Similar to login/visits.

5 years agologin/list: retrieve optional user data on demand
Mischa POSLAWSKY [Sat, 7 Jul 2018 20:27:19 +0000 (22:27 +0200)]
login/list: retrieve optional user data on demand

Generic interface to run methods for missing variables.
Provides delay and caching to prevent unnecessary disk access.

5 years agologin/list: profile class to access user data
Mischa POSLAWSKY [Sat, 7 Jul 2018 19:55:04 +0000 (21:55 +0200)]
login/list: profile class to access user data

Common object currently identical to array setup, but allowing for more complex
features such as delayed setup.

5 years agologin/list: prepare user data before display
Mischa POSLAWSKY [Sat, 7 Jul 2018 19:47:58 +0000 (21:47 +0200)]
login/list: prepare user data before display

Similar to login/visits; abstraction for upcoming options.

5 years agologin/list: rename from avatars for generic reuse
Mischa POSLAWSKY [Sat, 7 Jul 2018 21:04:54 +0000 (23:04 +0200)]
login/list: rename from avatars for generic reuse

Target to provide login/visits features.

5 years agopage: localise page variables within template includes
Mischa POSLAWSKY [Thu, 28 Jun 2018 22:03:05 +0000 (00:03 +0200)]
page: localise page variables within template includes

Clean up parameter interface:

- $Page provides containing page instead of parent script;
- $Args reserved for placeholder arguments;
- $Place inherited and joined with placeholder options.

The latter replaces GET overrides without bleeding into subsequent includes.

5 years agologin/edit: silence alter error for custom input v3.3
Mischa POSLAWSKY [Sat, 7 Jul 2018 13:04:14 +0000 (15:04 +0200)]
login/edit: silence alter error for custom input

Assume untargeted columns are handled later if input is set.
Fixes irrelevant password warning.

5 years agologin/edit: label references of tags descriptions
Mischa POSLAWSKY [Sat, 7 Jul 2018 15:53:44 +0000 (17:53 +0200)]
login/edit: label references of tags descriptions

Clickable.

5 years agologin/edit: generate checkbox input after post handling
Mischa POSLAWSKY [Sat, 7 Jul 2018 14:03:27 +0000 (16:03 +0200)]
login/edit: generate checkbox input after post handling

Generic handling of "values" attribute so form output can be updated.

5 years agologin/edit: apply tags input to target links
Mischa POSLAWSKY [Sat, 7 Jul 2018 13:30:19 +0000 (15:30 +0200)]
login/edit: apply tags input to target links

Allow admins to change user presence in listed tags.

5 years agologin/edit: list user existence in tags
Mischa POSLAWSKY [Sat, 7 Jul 2018 13:01:46 +0000 (15:01 +0200)]
login/edit: list user existence in tags

Grouping for avatars page.

5 years agoavatars: parameter selects user tags
Mischa POSLAWSKY [Thu, 28 Jun 2018 22:37:28 +0000 (00:37 +0200)]
avatars: parameter selects user tags

Users can be linked in profile/.tags/* groups.

5 years agoavatars: gallery of user images
Mischa POSLAWSKY [Thu, 28 Jun 2018 21:23:46 +0000 (23:23 +0200)]
avatars: gallery of user images

5 years agoavatars: template script to list users
Mischa POSLAWSKY [Thu, 28 Jun 2018 21:23:46 +0000 (23:23 +0200)]
avatars: template script to list users

5 years agopage: ignore undeclared placeholders in errors
Mischa POSLAWSKY [Fri, 6 Jul 2018 22:18:32 +0000 (00:18 +0200)]
page: ignore undeclared placeholders in errors

Does not yet exist pre-page called from error handlers.

5 years agothumb: catch php errors during (gd) resize
Mischa POSLAWSKY [Fri, 6 Jul 2018 22:16:26 +0000 (00:16 +0200)]
thumb: catch php errors during (gd) resize

Image response if GD fails on PHP 7, making it behave identical to exec.
Incompatible with PHP 5, where it will show a generic html error page,
regressing for convert exceptions.

5 years agothumb: prefer native GD over external convert
Mischa POSLAWSKY [Tue, 19 Jun 2018 22:17:48 +0000 (00:17 +0200)]
thumb: prefer native GD over external convert

Commonly available unlike executed command which may be disallowed
(at Xenat) or missing (at Vimexx) on shared hosting servers.

5 years agothumb: decide on cache location in mkthumb()
Mischa POSLAWSKY [Sat, 7 Jul 2018 11:28:08 +0000 (13:28 +0200)]
thumb: decide on cache location in mkthumb()

5 years agothumb: force reload with specified ?backend
Mischa POSLAWSKY [Thu, 5 Jul 2018 13:32:01 +0000 (15:32 +0200)]
thumb: force reload with specified ?backend

Option indicates development, in which case cached results should be ignored
as well.

5 years agothumb: ?backend option to override resize callback
Mischa POSLAWSKY [Thu, 5 Jul 2018 13:29:41 +0000 (15:29 +0200)]
thumb: ?backend option to override resize callback

Prepare to implement and test different mkthumb options.

5 years agothumb: show 404.png for missing requests
Mischa POSLAWSKY [Wed, 4 Jul 2018 16:56:08 +0000 (18:56 +0200)]
thumb: show 404.png for missing requests

5 years agothumb: error image also on unexpected exceptions
Mischa POSLAWSKY [Wed, 4 Jul 2018 16:53:30 +0000 (18:53 +0200)]
thumb: error image also on unexpected exceptions

Output is expected to be an image so avoid HTML responses.
Replace 501 placeholder by a common 500.png on any resize error.
Preserve message in X-Error header for debugging.

5 years agothumb: move imagemagick execution to separate function
Mischa POSLAWSKY [Wed, 4 Jul 2018 16:45:59 +0000 (18:45 +0200)]
thumb: move imagemagick execution to separate function

Code cleanup to prepare for different resizing backends.

5 years agologin/visits: styling classes for list and seen dates
Mischa POSLAWSKY [Tue, 19 Jun 2018 17:13:03 +0000 (19:13 +0200)]
login/visits: styling classes for list and seen dates

5 years agologin/edit: prepare input restriction for user names
Mischa POSLAWSKY [Tue, 19 Jun 2018 17:02:52 +0000 (19:02 +0200)]
login/edit: prepare input restriction for user names

Indicate validity even though it cannot be altered yet.

5 years agologin: replace unsupported characters in user names
Mischa POSLAWSKY [Tue, 19 Jun 2018 16:54:43 +0000 (18:54 +0200)]
login: replace unsupported characters in user names

5 years agofoto: ?blur option to disable thumbnail resizing
Mischa POSLAWSKY [Tue, 19 Jun 2018 11:10:26 +0000 (13:10 +0200)]
foto: ?blur option to disable thumbnail resizing

5 years agoedit/foto: admin option to set image as album cover
Mischa POSLAWSKY [Mon, 18 Sep 2017 16:55:37 +0000 (18:55 +0200)]
edit/foto: admin option to set image as album cover

Copied from editcover at Lijtweg commit v2.5-20-g93cfc0a122 (2017-10-13).

5 years agofoto: image album browser and control
Mischa POSLAWSKY [Mon, 18 Sep 2017 16:54:42 +0000 (18:54 +0200)]
foto: image album browser and control

Original foto.php controller and related assets copied from Lijtweg at
commit v2.5-24-ga5399c5d03 (2017-10-22).

Requires image files at data/ symlinked into albums at foto/ with prefixed
resolution attributes.  Depends on external javascript libraries [PhotoSwipe
and Flickr's Justified-Layout] at lib/ (changed from import/ at lijtweg)
installed by make rules.

5 years agothumb: return 501 image if resize is unavailable
Mischa POSLAWSKY [Mon, 18 Jun 2018 19:36:17 +0000 (21:36 +0200)]
thumb: return 501 image if resize is unavailable

Missing feature on Xenat servers causes PHP error messages resulting in
an invalid image.  Substitute a user-friendly placeholder instead.

5 years agologin/commits: increase size of subsequent pages
Mischa POSLAWSKY [Mon, 18 Jun 2018 19:11:00 +0000 (21:11 +0200)]
login/commits: increase size of subsequent pages

5 years agologin/edit: column descriptions; explain name visibility
Mischa POSLAWSKY [Mon, 18 Jun 2018 19:09:13 +0000 (21:09 +0200)]
login/edit: column descriptions; explain name visibility

5 years agoedit: button to create div containers v3.2
Mischa POSLAWSKY [Mon, 18 Jun 2018 16:54:37 +0000 (18:54 +0200)]
edit: button to create div containers

Commonly used for columns and right-aligned blocks.

5 years agocontact: generic replies for use on other sites
Mischa POSLAWSKY [Mon, 18 Jun 2018 13:04:33 +0000 (15:04 +0200)]
contact: generic replies for use on other sites

Apply updates from Lijtweg at commit v2.5-41-gdf1b219c9d (2017-11-27).

5 years agocontact: code cleanup (mailform function)
Mischa POSLAWSKY [Mon, 18 Jun 2018 13:27:56 +0000 (15:27 +0200)]
contact: code cleanup (mailform function)