Mischa POSLAWSKY [Wed, 9 Dec 2020 09:38:31 +0000 (10:38 +0100)]
foto: fix colon separator after empty root title
Mischa POSLAWSKY [Thu, 3 Dec 2020 19:26:59 +0000 (20:26 +0100)]
foto: replace deprecated <strike> element by <s>
Identical results conforming to the HTML5 standard.
Obsolete HTML 3 spelling is not recognised by ckeditor
so cannot be used in static html.
Mischa POSLAWSKY [Thu, 3 Dec 2020 19:00:01 +0000 (20:00 +0100)]
edit/page: update remote ckeditor to version 4.15.1
Over 3 years since original implementation.
No notable config incompatibilities.
Mischa POSLAWSKY [Sat, 28 Nov 2020 23:48:38 +0000 (00:48 +0100)]
mail: primitive maildir message reader
Minimal admin interface to access site emails;
formatted similarly to issue page.
Mischa POSLAWSKY [Thu, 3 Dec 2020 18:59:27 +0000 (19:59 +0100)]
edit/page: empty target argument for index
Fix saving of /index broken by parameter fix in commit
v4.0-30-ga66a71bc45
(2019-11-09) [keep page named after existing directory].
Dropping argument requirement fail-safe seems only a slight regression
in case of future bugs.
Mischa POSLAWSKY [Thu, 3 Dec 2020 02:49:20 +0000 (03:49 +0100)]
nieuws/feed: prefer article dates from metadata
Frequently available since the previous commit.
Mischa POSLAWSKY [Wed, 2 Dec 2020 22:46:30 +0000 (23:46 +0100)]
page: record creation time in template meta tag
Another https://ogp.me/#no_vertical object for availability start.
May be distinct from chosen (eg historic) dates shown for news articles.
Values may be reconstructed for existing files from Git history:
perl -i -pE '
close ARGV if eof; # reset line number
$. == 1 or next; # ignore consecutive lines
my $first = qx{git log --follow --pretty=%ai -- "$ARGV" | tail -n1}
or next; # find earliest commit time
chomp $first;
print qq{<meta property="article:published_time" content="$first" />};
say "" unless /^<meta/;
' **/*.html
Mischa POSLAWSKY [Sun, 7 Jun 2020 05:26:53 +0000 (07:26 +0200)]
page: record author metadata on creation
Alter initial template html to include a link to the current admin,
retained by ckeditor and available in meta for optional crediting of
different sources.
Named according to https://ogp.me/#no_vertical specification, except target
does not contain the required Open Graph profile tags yet.
Mischa POSLAWSKY [Wed, 2 Dec 2020 22:39:34 +0000 (23:39 +0100)]
page: extract metadata after reading template
Retain headers in edit if any; prepare for common modification.
Mischa POSLAWSKY [Wed, 2 Dec 2020 22:38:17 +0000 (23:38 +0100)]
page: editable meta tags without xml closure
Match ckeditor output, just in case save doesn't reformat.
Mischa POSLAWSKY [Mon, 7 Jan 2019 15:29:58 +0000 (16:29 +0100)]
edit/page: load ckeditor dependency from script include
Adapted from poslawsky.nl change, but retaining variable source.
Mischa POSLAWSKY [Tue, 1 Dec 2020 02:54:24 +0000 (03:54 +0100)]
edit/page: input replacement of breaking space after abbreviations
Clean up rule to prevent line breaks after common name titles.
Mischa POSLAWSKY [Mon, 31 Dec 2018 14:40:59 +0000 (15:40 +0100)]
edit/page: clean up trailing whitespace after save
Strip invisible trash commonly left by less precise users.
First implemented on and copied from poslawsky.nl/bio/.
Mischa POSLAWSKY [Wed, 1 Jan 2020 09:38:44 +0000 (10:38 +0100)]
foto: lock characters from icon font
Match style override to page icons introduced in the previous commit.
Mischa POSLAWSKY [Mon, 30 Dec 2019 11:25:06 +0000 (12:25 +0100)]
head: icons to abbreviate user and edit
Elect literal representation instead of CSS hacks to replace texts,
with Unicode emoji characters BUST IN SILHOUETTE and WRITING HAND
hopefully good enough for screen readers.
Assume preferred site style is obtained by an installed font.
Mischa POSLAWSKY [Sun, 29 Nov 2020 03:07:33 +0000 (04:07 +0100)]
page: ignore asides in article body (cq title, teaser)
Prepare significant page contents in body attribute, regardless of raw.
Assume it will be used for summary text, without stripped parts in preface.
Fixes preceding aside becoming page metadata on lijtweg.nl/doc/regels.
Mischa POSLAWSKY [Sun, 17 May 2020 04:23:23 +0000 (06:23 +0200)]
head: title as og:name property, clean up description
Satisfy automated SEO warnings about missing title (wanting an explicit tag)
and recommended summary length (fitting some long paragraphs by omitting
inconsequential spaces).
Mischa POSLAWSKY [Wed, 1 Jan 2020 07:53:32 +0000 (08:53 +0100)]
nieuws: fix block replacement of variable contents
Restored as empty [[]] placeholders since previous commit.
Mischa POSLAWSKY [Thu, 21 Nov 2019 00:20:31 +0000 (01:20 +0100)]
edit/page: indicate edit replacements in data-dyn attributes
Clean up hack of html comments by a proper dom integration.
Does require placeholders to be wrapped in a single outer element.
Mischa POSLAWSKY [Mon, 16 Nov 2020 23:23:20 +0000 (00:23 +0100)]
thumb: apply exif orientation
Match expected results (and modern browser rendering of originals)
for common rotation on phone submissions.
May not match photoswipe rendering, which depends on browser support.
Best to apply rotation without tags for now (exifautotran).
Mischa POSLAWSKY [Sun, 17 May 2020 03:50:17 +0000 (05:50 +0200)]
sitemap: strip images from teaser
Fix duplicate display of early images.
Mischa POSLAWSKY [Sun, 17 May 2020 13:48:29 +0000 (15:48 +0200)]
sitemap: fix html syntax of list items
Restore closing tag accidentally removed in commit
v4.0-7-g5e246b86aa
(2019-10-17) [linkref part to format a single page].
Mischa POSLAWSKY [Fri, 20 Nov 2020 01:16:47 +0000 (02:16 +0100)]
contact: silence warning checking missing client headers
Same behaviour but avoiding definedness error in logs.
Mischa POSLAWSKY [Fri, 1 May 2020 18:10:52 +0000 (20:10 +0200)]
login: status 403 for initial unauthorised redirects
Appropriate error code for original requests.
Mischa POSLAWSKY [Mon, 30 Nov 2020 21:43:11 +0000 (22:43 +0100)]
page: ignore failed user setup during errors
Report auth.inc.php exceptions without breaking on attempted usage of
$User->login in output, or missing ArchiveArticle class.
Mischa POSLAWSKY [Fri, 6 Dec 2019 22:05:18 +0000 (23:05 +0100)]
auth: create user object regardless of login
Simplify code not having to check for object existence.
Mischa POSLAWSKY [Sun, 19 Jan 2020 13:14:53 +0000 (14:14 +0100)]
nieuws/feed: optional site icon
Used by some readers in feed overviews.
Mischa POSLAWSKY [Tue, 4 Feb 2020 20:23:45 +0000 (21:23 +0100)]
issue/feed: include reply count as thread metadata
Possibly useful values for derived layouts.
Might be shown in overviews of some RSS readers.
Mischa POSLAWSKY [Wed, 18 Nov 2020 15:06:52 +0000 (16:06 +0100)]
foto: fix admin indication of unrestricted access
Misdetected since variable is defined false since commit
v4.3-3-ged38c6a767
(2020-02-04) [page: article method to find handler code].
Mischa POSLAWSKY [Tue, 18 Aug 2020 20:06:11 +0000 (22:06 +0200)]
nieuws/feed: header to allow js access from any domain
Data is meant to be readable.
Mischa POSLAWSKY [Sun, 17 May 2020 03:42:58 +0000 (05:42 +0200)]
nieuws: navigation links in common aside container
Mischa POSLAWSKY [Sun, 17 May 2020 03:06:19 +0000 (05:06 +0200)]
issue: metadata list in aside container
Better semantics, benefits from common aside styling.
Mischa POSLAWSKY [Sun, 17 May 2020 03:39:59 +0000 (05:39 +0200)]
article: ignore placeholders before teaser paragraph
Mischa POSLAWSKY [Sun, 17 May 2020 03:17:38 +0000 (05:17 +0200)]
article: find teaser paragraph from variable offset
Simplify matching by starting at optional first </h2>.
No longer ignores (short) preceding titles such as on Lijtweg home;
more reliable otherwise.
Mischa POSLAWSKY [Sun, 17 May 2020 00:40:31 +0000 (02:40 +0200)]
page: restrict security policy of base-src
Mischa POSLAWSKY [Sat, 16 May 2020 23:50:32 +0000 (01:50 +0200)]
head: indicate explicit og:type of website
Include just to allow page overrides, such as "article" for nieuws pages
(might affect Facebook, but seems a minor and mostly useless distinction).
At least silences Dareboost warnings about required Open Graph properties.
Mischa POSLAWSKY [Sun, 17 May 2020 00:03:52 +0000 (02:03 +0200)]
head: include canonical location in og:url
Does not (yet) account for all aliases, but at least provides a good
reference to the requested page.
Mischa POSLAWSKY [Sat, 16 May 2020 23:33:36 +0000 (01:33 +0200)]
page: extend teaser range of fallback paragraph
Arbitrarily increase allowed separation to 512 bytes, as Lijtweg index page
introduction recently moved beyond 256 because of longer image paths.
Mischa POSLAWSKY [Sat, 16 May 2020 23:05:27 +0000 (01:05 +0200)]
page: declare minimal security policy header
Define current data usage to provide some protection from XSS attacks.
Allow for remaining scripts and images (editor script, gallery, some onclick
actions in user forms, inline svg) to be improved at a later time.
Mischa POSLAWSKY [Sat, 16 May 2020 22:17:23 +0000 (00:17 +0200)]
page: disallow frame ancestors to prevent clickjacking
Security policy recommended by Dareboost, to stop potential malicious page
embedding. Support should be decent (enough), so do not bother with an
equivalent X-Frame-Options directive for compatibility.
Mischa POSLAWSKY [Sat, 18 Jan 2020 14:57:10 +0000 (15:57 +0100)]
thumb: strip metadata and chroma
Decreased colour quality recommended by Google PageSpeed:
<https://developers.google.com/speed/docs/insights/OptimizeImages>
Mischa POSLAWSKY [Sat, 18 Jan 2020 14:57:10 +0000 (15:57 +0100)]
thumb: decrease preferred quality to 85%
Better trade-off, also recommended by PageSpeed.
Mischa POSLAWSKY [Sat, 18 Jan 2020 14:14:10 +0000 (15:14 +0100)]
thumb: prefer progressive jpeg encoding
Intermediate rendering for faster results, and overall smaller file sizes
similar (if not identical) to jpegtran -optimize or PageSpeed.
Mischa POSLAWSKY [Wed, 18 Mar 2020 16:28:59 +0000 (17:28 +0100)]
page: reenclose template contents in static container
Fix editing of new pages since
v4.2-24-ged38c6a767 (2020-02-04)
[page: article method to find handler code].
Mischa POSLAWSKY [Tue, 4 Feb 2020 21:36:11 +0000 (22:36 +0100)]
issue: match image replies for metadata
Database paragraphs not cleaned by editor lack preceding newline.
Mischa POSLAWSKY [Tue, 4 Feb 2020 21:20:18 +0000 (22:20 +0100)]
login: target page in description and image metadata
Mischa POSLAWSKY [Tue, 4 Feb 2020 20:22:56 +0000 (21:22 +0100)]
login: run handler of pending melding page
Run script to get dynamic page metadata. Most wanted for issues (otherwise
inaccessible since move to database), considered mostly safe to execute.
Not a generic solution for other code which could exit.
Mischa POSLAWSKY [Tue, 4 Feb 2020 20:19:29 +0000 (21:19 +0100)]
login: redirection message if pending page
Assume ?goto page required authorisation.
Mischa POSLAWSKY [Tue, 4 Feb 2020 19:52:00 +0000 (20:52 +0100)]
page: article method to find handler code
Mischa POSLAWSKY [Mon, 30 Dec 2019 06:42:11 +0000 (07:42 +0100)]
page: separate method to load page contents
Mischa POSLAWSKY [Wed, 15 Jan 2020 13:43:39 +0000 (14:43 +0100)]
reply: ignore empty image uploads
Fix invalid image appended for UPLOAD_ERR_NO_FILE.
Mischa POSLAWSKY [Sun, 5 Jan 2020 21:23:56 +0000 (22:23 +0100)]
reply: accept html input from admins
Forgo html formatting if text starts with an element such as <p>.
Restricted for safety since it's not validated. Intermediate solution to
support rich contents (wysiwyg editor can be added later for accessibility).
Mischa POSLAWSKY [Sun, 5 Jan 2020 21:21:25 +0000 (22:21 +0100)]
reply: accept image uploads with messages
Mischa POSLAWSKY [Sun, 5 Jan 2020 21:18:06 +0000 (22:18 +0100)]
issue: move photo icon before replies
Most common parts last for more stable appearance.
Mischa POSLAWSKY [Sun, 5 Jan 2020 19:56:37 +0000 (20:56 +0100)]
login/post: require user to access
Redirect to login to avoid incomprehensible error message.
Reported-by: Heleen Terlouw <heleen.terlouw.2910@gmail.com>
Mischa POSLAWSKY [Wed, 1 Jan 2020 11:06:15 +0000 (12:06 +0100)]
issue: derive page metadata from row data
Mischa POSLAWSKY [Wed, 1 Jan 2020 05:44:40 +0000 (06:44 +0100)]
page: fix titleless article teaser fallback
Broken since commit
v4.0-28-gb3aec6cf1c (2019-11-09)
[page: replace output caching by article object].
Mischa POSLAWSKY [Sat, 30 Nov 2019 21:13:07 +0000 (22:13 +0100)]
thumb: delete subsequent animation frames
Convert animated GIFs and accidental video to still frame.
Mischa POSLAWSKY [Mon, 30 Dec 2019 06:43:03 +0000 (07:43 +0100)]
page: fix variable dependencies in error headers
Editor checks broken in page.inc.php being called from fail() function.
Mischa POSLAWSKY [Mon, 30 Dec 2019 08:54:02 +0000 (09:54 +0100)]
issue: common icon glyphs for improved fallback
Irrelevant after styling, but improves compatibility if unstyled:
- RIGHT SPEECH BUBBLE is a common emoji available on at least android;
- CAMERA is more specific for the expected usage, and similar to other
popular sites such as Twitter.
Mischa POSLAWSKY [Mon, 30 Dec 2019 08:24:38 +0000 (09:24 +0100)]
issue: unicode characters of indicator icons
Replace ASCII placeholders by semantic equivalents, which can be styled by
custom fonts to maintain full client compatibility.
Mischa POSLAWSKY [Mon, 30 Dec 2019 08:30:29 +0000 (09:30 +0100)]
issue: code cleanup breaking up row attributes
Identical results using separate, more maintainable statements.
Mischa POSLAWSKY [Sun, 1 Dec 2019 22:14:15 +0000 (23:14 +0100)]
issue: indicate image presence in overview
Advertise uploads as they are proverbially worth more than text replies.
Mischa POSLAWSKY [Sat, 30 Nov 2019 23:12:46 +0000 (00:12 +0100)]
reply: convert CR in line breaks
Store submitted network/dos newlines as expected unix LF.
Mischa POSLAWSKY [Sat, 30 Nov 2019 23:05:19 +0000 (00:05 +0100)]
issue: do not immediately close inserted rows
Database fix applied earlier.
Mischa POSLAWSKY [Sat, 30 Nov 2019 23:00:15 +0000 (00:00 +0100)]
page: convert error messages to html strings
Exception objects need to be converted to strings for usage as placeholders,
and while at it, xml characters should be escaped for proper display.
Mischa POSLAWSKY [Sat, 30 Nov 2019 22:57:20 +0000 (23:57 +0100)]
page: reload error page within fail handler
Catch errors during display (such as an invalid placeholder value fixed in
the next commit) instead of ignoring subsequent displays causing empty
output.
Mischa POSLAWSKY [Sat, 30 Nov 2019 22:51:38 +0000 (23:51 +0100)]
page: capture multiline titles in article contents
Fix recent page (doc/alv/2019-11-26/cv) containing subtitle.
Mischa POSLAWSKY [Fri, 29 Nov 2019 22:09:15 +0000 (23:09 +0100)]
doclist: background width to end line at last item
Assuming stylesheet draws a line by background-image, calculate its size to
target the earliest item.
Mischa POSLAWSKY [Mon, 18 Nov 2019 15:12:26 +0000 (16:12 +0100)]
doclist: sublists of multiple dates grouped by year
Mischa POSLAWSKY [Fri, 29 Nov 2019 21:19:34 +0000 (22:19 +0100)]
doclist: code cleanup and preparation
Mischa POSLAWSKY [Sat, 16 Nov 2019 20:47:53 +0000 (21:47 +0100)]
doclist: timeline styling to position links by age
Calculate absolute "left" position based on average date lengths,
to be optionally used by the site's stylesheet.
Mischa POSLAWSKY [Tue, 26 Nov 2019 16:24:05 +0000 (17:24 +0100)]
issue: populate ticket data before reply include
Reorder in commit
v4.1-34-gc83e7f0379 (2019-11-25) [issue: include replies
before issue retrieval] breaks admin features due to missing $Issue.
Update row data on update instead.
Mischa POSLAWSKY [Tue, 26 Nov 2019 23:13:19 +0000 (00:13 +0100)]
page: filter login/logout classes on any html element
Needed on <ul>, but extend to cover any future usage.
Mischa POSLAWSKY [Mon, 25 Nov 2019 15:20:32 +0000 (16:20 +0100)]
issue: include replies before issue retrieval
Load reply data before row query to reflect changes directly.
Mischa POSLAWSKY [Mon, 25 Nov 2019 15:15:18 +0000 (16:15 +0100)]
issue: wrap items to allow containment
Fix contents from appearing in next <li> with lower screen width.
Similar to column lists in commit
v3.4-0-g72d8db8c87 (2018-07-08)
[login/list: wrap each item to allow containment].
Mischa POSLAWSKY [Mon, 25 Nov 2019 14:45:54 +0000 (15:45 +0100)]
issue: metadata in sidebar container
Separate list of global summary information, allowing a more hidden (aside)
styling keeping focus on discussion and clarifying repetitions (most items
are also represented as changes).
Mischa POSLAWSKY [Mon, 25 Nov 2019 20:14:28 +0000 (21:14 +0100)]
upload: replace double line breaks by paragraphs in text input
Mischa POSLAWSKY [Mon, 25 Nov 2019 20:12:33 +0000 (21:12 +0100)]
upload: common function to parse user text input
Move duplicate code from issue and reply pages.
Mischa POSLAWSKY [Fri, 8 Nov 2019 01:29:05 +0000 (02:29 +0100)]
reply: omit empty messages like issue page
Copy recent update in formatting.
Mischa POSLAWSKY [Wed, 20 Nov 2019 23:31:27 +0000 (00:31 +0100)]
page: restore meta tags for editors
Mischa POSLAWSKY [Wed, 20 Nov 2019 23:19:01 +0000 (00:19 +0100)]
auth: append login to formatted user names
Mischa POSLAWSKY [Thu, 24 Oct 2019 05:08:27 +0000 (07:08 +0200)]
foto: increase thumbnail height for exceptional rows
Even with the configured maximum of 200*1.25=250px, resulting sizes appear
to regularly exceed that, with anything up to 262px being quite common and
easily reproducible (in Lijtweg historisch).
Mischa POSLAWSKY [Thu, 24 Oct 2019 04:58:04 +0000 (06:58 +0200)]
foto: keep static images of height 250
Drop dynamic source replacement to match actual client sizes, as the quality
loss from downsizing a _larger_ image is minimal.
Originally introduced in lijtweg commit
v2.5-7-gcd93e774e6 (2017-10-11)
[foto: replace justified thumbnails by height-optimised versions]
with visible improvements probably due to using the target size of 200px
without adjusting for up to 1.25x enlargement to fit.
Testing originals of 250px on modern browsers with (bilinear) rescaling
is hard to distinguish (not significantly more blurry) and depends on only
a single thumbnail resolution to be created for significantly reduced
resource requirements. May be slightly larger on average, but likely much
smaller without reloads and considering caching opportunities.
Mischa POSLAWSKY [Wed, 20 Nov 2019 12:57:01 +0000 (13:57 +0100)]
issue: styling class on closed rows
Link tag does not cover metadata. Keep strike-through for compatibility,
but with equivalent <s> as <strike> has been deprecated in HTML5.
Mischa POSLAWSKY [Fri, 8 Nov 2019 00:02:50 +0000 (01:02 +0100)]
issue: feed subpage for atom xml formatting
Feature of news articles lost during database transition.
Include adapted from nieuws/feed/index.php for different object structure
(to be merged again later if possible).
Mischa POSLAWSKY [Mon, 18 Nov 2019 21:20:45 +0000 (22:20 +0100)]
login/commits: escape html characters in commit messages
Mischa POSLAWSKY [Sun, 17 Nov 2019 13:51:08 +0000 (14:51 +0100)]
widget/contact: accept non-word characters in sender email addresses
Allow any remotely valid address, including <hans.verlinden@planet.nl>.
Mischa POSLAWSKY [Fri, 8 Nov 2019 01:23:18 +0000 (02:23 +0100)]
reply: list attribute changes for each row
Mischa POSLAWSKY [Fri, 8 Nov 2019 01:22:31 +0000 (02:22 +0100)]
reply: identify textual journal columns
Mischa POSLAWSKY [Fri, 8 Nov 2019 00:21:45 +0000 (01:21 +0100)]
issue: count number of replies in overview
Mischa POSLAWSKY [Thu, 7 Nov 2019 16:50:05 +0000 (17:50 +0100)]
reply: omit header from mandatory output
Can be prepended manually if wanted.
Mischa POSLAWSKY [Thu, 7 Nov 2019 16:49:58 +0000 (17:49 +0100)]
issue: inline ticket body like replies
Mischa POSLAWSKY [Thu, 7 Nov 2019 05:13:53 +0000 (06:13 +0100)]
issue: display assignments in overview
Mischa POSLAWSKY [Thu, 7 Nov 2019 05:13:34 +0000 (06:13 +0100)]
issue: resolve author logins to full names
Mischa POSLAWSKY [Thu, 7 Nov 2019 04:56:00 +0000 (05:56 +0100)]
issue: select restricted by current page
Allow setup of multiple distinct categories.
Mischa POSLAWSKY [Thu, 7 Nov 2019 04:51:30 +0000 (05:51 +0100)]
issue: record row changes in journal
Mischa POSLAWSKY [Thu, 7 Nov 2019 04:23:30 +0000 (05:23 +0100)]
issue: admin option to close or reopen
Mischa POSLAWSKY [Thu, 7 Nov 2019 04:04:59 +0000 (05:04 +0100)]
issue: assignment text field for admins
Mischa POSLAWSKY [Thu, 7 Nov 2019 04:04:09 +0000 (05:04 +0100)]
reply: share parent data from issue page
Provide easy access to selected metadata.