Mischa POSLAWSKY [Mon, 28 Dec 2020 02:40:37 +0000 (03:40 +0100)]
issue: drop report template of activity widget
Page container to be implemented at sites.
Mischa POSLAWSKY [Tue, 29 Dec 2020 00:53:49 +0000 (01:53 +0100)]
page: call handler through index method
Mischa POSLAWSKY [Mon, 28 Dec 2020 02:33:21 +0000 (03:33 +0100)]
page: only html body on application/xml requests
Mischa POSLAWSKY [Sun, 27 Dec 2020 18:46:06 +0000 (19:46 +0100)]
page: text/plain request triggers api mode
Mischa POSLAWSKY [Sun, 27 Dec 2020 02:46:55 +0000 (03:46 +0100)]
progress: disable submit button while posting
Prevent duplicates from unavoidable double clicks.
Mischa POSLAWSKY [Sun, 27 Dec 2020 01:32:00 +0000 (02:32 +0100)]
widget/reply: redirect to created comment
Undo initial design of continuous uploads, rather have normal form behaviour
of showing feedback/results.
Mischa POSLAWSKY [Thu, 9 Jan 2020 10:04:07 +0000 (11:04 +0100)]
widget/reply: load file upload progress indicator
Extend image upload script for any user form, with global support for
text/plain post interface (copied from Lijtweg upload controller designed
in
v2.6-167-gd6338eb73e (2018-11-04) [hijack file input to show progress]).
Mischa POSLAWSKY [Sun, 4 Nov 2018 15:29:29 +0000 (16:29 +0100)]
progress: javascript to post image uploads
Track code written for contact form at Lijtweg commit
v2.6-167-gd6338eb73e
(2018-11-04) [upload: hijack file input to show progress] with updates until
v2.6-171-gb68eaa5bbd (2018-11-05) [upload: support multiple files]
in preparation of general reuse.
Mischa POSLAWSKY [Sun, 27 Dec 2020 18:33:48 +0000 (19:33 +0100)]
page: api attribute indicate index requests
Replaces userless calls for better fault tolerance and permission support.
Mischa POSLAWSKY [Fri, 26 Oct 2018 18:48:48 +0000 (20:48 +0200)]
edit/foto/cover: replace fatal exceptions by abort()
Code cleanup, identical behaviour.
Mischa POSLAWSKY [Sun, 27 Dec 2020 18:44:33 +0000 (19:44 +0100)]
page: redirect location option in abort()
Mischa POSLAWSKY [Tue, 29 Dec 2020 00:08:11 +0000 (01:08 +0100)]
thumb: append .jpg extension to match file type
Rename example.png paths to example.png.jpg so its name corresponds to mime
type as warned by Dareboost.
Mischa POSLAWSKY [Tue, 29 Dec 2020 00:22:18 +0000 (01:22 +0100)]
thumb: content-length http header
Match [Apache] server output for cached files.
Still lacks ETag because PHP cannot calculate this (needs μs mtime).
Mischa POSLAWSKY [Sun, 27 Dec 2020 02:58:32 +0000 (03:58 +0100)]
thumb: only shrink larger images
Support smaller user uploads unscaled (with smaller file sizes), expecting
browser upscaling if necessary (lower quality should not be a problem).
Mischa POSLAWSKY [Sun, 27 Dec 2020 01:36:04 +0000 (02:36 +0100)]
thumb: validate path before extracting missing parts
Silence PHP warning about undefined offset on invalid requests.
Mischa POSLAWSKY [Sun, 27 Dec 2020 01:35:14 +0000 (02:35 +0100)]
edit/page: ignore missing edit target
Silence javascript warning on uneditable pages.
Mischa POSLAWSKY [Sun, 27 Dec 2020 01:39:12 +0000 (02:39 +0100)]
edit/page: describe hotkey letter in save plugin
Minor code cleanup of a magic value.
Mischa POSLAWSKY [Sun, 17 May 2020 00:40:31 +0000 (02:40 +0200)]
edit/page: allow image uploads through easyimage
Fix local files shown as blobs in testing.
Mischa POSLAWSKY [Tue, 22 Dec 2020 23:20:13 +0000 (00:20 +0100)]
edit/page: disable pdf plugin for ckeditor
Imposed in Full release since version 4.15.1, causing license warning
despite being unused and unwanted.
Mischa POSLAWSKY [Tue, 22 Dec 2020 23:35:42 +0000 (00:35 +0100)]
edit/page: ckeditor image upload to user dir, returned as thumb
Mischa POSLAWSKY [Tue, 22 Dec 2020 12:33:24 +0000 (13:33 +0100)]
edit/page: disable image size attributes in editor
Disallow width and height, with Advanced Content Filtering enabled following
<https://ckeditor.com/docs/ckeditor4/latest/guide/dev_disallowed_content.html
#how-to-allow-everything-except>.
Mischa POSLAWSKY [Tue, 22 Dec 2020 12:11:54 +0000 (13:11 +0100)]
edit/page: fix ckeditor [json] upload response
One incompatibility in commit
v4.4-28-gdd363674c2 (2020-12-05)
[update remote ckeditor to version 4.15.1] after all, according to
https://ckeditor.com/docs/ckeditor4/latest/guide/dev_file_browser_api.html:
> Since CKEditor 4.9 all file uploads, including those initiated by the File
> Browser plugin, expect a JSON response
Mischa POSLAWSKY [Tue, 22 Dec 2020 18:34:53 +0000 (19:34 +0100)]
edit/page: include admin stylesheet in editor ui
Fix dialog style separated in the previous commit.
Mischa POSLAWSKY [Sun, 20 Dec 2020 15:55:24 +0000 (16:55 +0100)]
edit/head: optional admin stylesheet for editor overrides
Fix logout hiding if logged out.
Mischa POSLAWSKY [Sun, 20 Dec 2020 01:16:19 +0000 (02:16 +0100)]
edit/head: ckeditor script url in data attribute
Mischa POSLAWSKY [Sun, 20 Dec 2020 00:58:13 +0000 (01:58 +0100)]
edit/head: check original file request for writability
Mischa POSLAWSKY [Sun, 20 Dec 2020 00:56:50 +0000 (01:56 +0100)]
page: rename page method to file
More descriptive of requested file name, avoiding duplicate $Page->page.
Mischa POSLAWSKY [Sat, 19 Dec 2020 14:40:52 +0000 (15:40 +0100)]
edit/page: add edit button in javascript
Mischa POSLAWSKY [Sat, 19 Dec 2020 14:29:03 +0000 (15:29 +0100)]
edit/head: move admin preparation to separate include
Mischa POSLAWSKY [Fri, 3 Jan 2020 08:46:05 +0000 (09:46 +0100)]
issue/report: activity widget to list latest messages
Mischa POSLAWSKY [Wed, 16 Dec 2020 13:05:11 +0000 (14:05 +0100)]
edit/page: enforce relative links to local domain
Replace <a href> and <img src> urls on save to fix common user mistake
breaking site deployment on a different [dev] domain.
Mischa POSLAWSKY [Wed, 16 Dec 2020 12:54:24 +0000 (13:54 +0100)]
edit/page: replace format selection by style options
Save one button (fitting in 2 rows on 420px width) by getting rid of the
arbitrary distinction between formatting and styles, the latter having
equally semantic elements and capable of toggling headers.
Mischa POSLAWSKY [Wed, 16 Dec 2020 12:52:45 +0000 (13:52 +0100)]
edit/page: rename and append editor style options
Support previously manual elements on Lijtweg: p.nav, s, span.right.
Prepare options to be displayed in 2 columns (frontend style).
Mischa POSLAWSKY [Wed, 16 Dec 2020 12:49:14 +0000 (13:49 +0100)]
page: retain conditional login elements in editor
Fix losing logout parts on save.
Mischa POSLAWSKY [Sat, 12 Dec 2020 16:23:42 +0000 (17:23 +0100)]
page: quote link name fallback
Match title from page html.
Mischa POSLAWSKY [Sat, 12 Dec 2020 15:02:35 +0000 (16:02 +0100)]
sitemap: nested index of handler subpages results
Mischa POSLAWSKY [Sat, 12 Dec 2020 14:41:39 +0000 (15:41 +0100)]
page: search results as article objects
Wanted to determine page link, but also afterwards in sitemap
and likely most other uses.
Mischa POSLAWSKY [Sat, 12 Dec 2020 14:29:24 +0000 (15:29 +0100)]
page: index method to call metadata handler
Clean up duplicate code on login and sitemap.
Mischa POSLAWSKY [Sat, 12 Dec 2020 14:16:29 +0000 (15:16 +0100)]
nieuws: article index on sitemap request
Restore subpages ignored since previous commit.
Mischa POSLAWSKY [Wed, 9 Dec 2020 09:38:06 +0000 (10:38 +0100)]
page: skip directory handlers in search
Code can alter file behaviour, so should be omitted from sitemap results
(to be replaced by custom index in following commit).
Removes wanted nieuws articles, but also random foto descriptions and
some accidental html files.
Mischa POSLAWSKY [Wed, 9 Dec 2020 08:01:49 +0000 (09:01 +0100)]
page: retain thumb subhandlers over invalid resize
Ignore non-static files such as /thumb/qr on Lijtweg.
Mischa POSLAWSKY [Wed, 9 Dec 2020 07:56:42 +0000 (08:56 +0100)]
sitemap: apply link metadata from handler call
Execute generic index code introduced in commit
v4.5-23-gb9757db578
(2020-12-19) [login: userless handler call to obtain metadata].
Mischa POSLAWSKY [Wed, 9 Dec 2020 09:38:56 +0000 (10:38 +0100)]
mail: support invalid and repeated requests
Fix random sitemap pages.
Mischa POSLAWSKY [Wed, 9 Dec 2020 07:55:48 +0000 (08:55 +0100)]
login: userless handler call to obtain metadata
Generic solution (previously hardcoded to only /melding) to run code of any
forwarding request, returning at least custom title, teaser, and image,
without having to construct full html.
Mischa POSLAWSKY [Sun, 6 Dec 2020 08:18:16 +0000 (09:18 +0100)]
nieuws: fix relative image paths in toc
Current path does not apply with trailing /.
Mischa POSLAWSKY [Sun, 6 Dec 2020 08:08:38 +0000 (09:08 +0100)]
widget: unnamed options as placeholders instead of path
Mischa POSLAWSKY [Sun, 6 Dec 2020 07:40:32 +0000 (08:40 +0100)]
mail: navigation links to earlier files
Mischa POSLAWSKY [Sun, 6 Dec 2020 07:28:11 +0000 (08:28 +0100)]
login/commits: nav widget for common pagination links
Mischa POSLAWSKY [Sun, 6 Dec 2020 06:33:51 +0000 (07:33 +0100)]
mail: lay out sender and date as subheader
Similar to the GMail interface.
Mischa POSLAWSKY [Sun, 6 Dec 2020 06:31:32 +0000 (07:31 +0100)]
mail: imap function to parse sender addresses
Require built-in imap module instead of the mailparse extension.
Either can be installed on Debian (or enabled on Vimexx servers)
so prefer the more complete solution.
Mischa POSLAWSKY [Sun, 6 Dec 2020 06:11:06 +0000 (07:11 +0100)]
mail: ignore unreadable files
Incorrect installation should be obvious without fatal errors.
Mischa POSLAWSKY [Sat, 9 Sep 2017 00:08:33 +0000 (02:08 +0200)]
page: showsize() to format file sizes
Copied from Lijtweg [doclist precursor] introduced in commit
v2.0-12-g040c5406df (2017-09-18) [com/bewoners: group file types by date];
unaltered since but no longer used. Could prove useful later, so move here
to merge identically named files and share with other projects.
Mischa POSLAWSKY [Sat, 5 Dec 2020 08:15:51 +0000 (09:15 +0100)]
page: move showdate() into formatting include
Do not enforce presentation style in articles. Separate from class,
allowing site override if wanted.
Mischa POSLAWSKY [Sat, 5 Dec 2020 07:57:52 +0000 (08:57 +0100)]
page: delay loading user code until after page
Improved presentation on failure.
Mischa POSLAWSKY [Sat, 5 Dec 2020 07:56:52 +0000 (08:56 +0100)]
page: move custom error handling to include
Mischa POSLAWSKY [Sat, 5 Dec 2020 03:15:09 +0000 (04:15 +0100)]
login: preview teaser metadata of goto target
Assume the introduction paragraph does not contain restricted contents
(also included in public sitemap) and wanted as contents for social media
links instead of unrelated login description.
Mischa POSLAWSKY [Mon, 7 Dec 2020 14:25:29 +0000 (15:25 +0100)]
edit/page: common retrieval of contents element
Mischa POSLAWSKY [Fri, 10 Jan 2020 21:16:11 +0000 (22:16 +0100)]
edit/page: copy static contents before dynamic alterations
Revert javascript alterations before starting edits, preventing them being
saved on lijtweg.nl/doc/splitsing and various Excelsior pages.
Mischa POSLAWSKY [Mon, 7 Dec 2020 14:23:49 +0000 (15:23 +0100)]
head: load edit script before body
Introduce $Page->head for html head output.
Allows editor setup before running other javascript.
Mischa POSLAWSKY [Fri, 4 Dec 2020 22:50:39 +0000 (23:50 +0100)]
page: prepend 404 contents to admin template
Preview actual output on edit.
Mischa POSLAWSKY [Fri, 4 Dec 2020 00:30:17 +0000 (01:30 +0100)]
page: ignore output buffer in article render
Operate on object property [raw] only.
Stops preliminary output (such as in nieuws code) being injected inside the
html body, probably something to restore later for improved behaviour of
errors and broken code.
Mischa POSLAWSKY [Thu, 3 Dec 2020 21:57:06 +0000 (22:57 +0100)]
widget/page: apply nested placeholders
Similar to article rendering added in commit
v3.5-16-g9e9882d6f2
(2018-08-07) [nieuws: replace placeholders in article contents].
Mischa POSLAWSKY [Thu, 3 Dec 2020 21:22:28 +0000 (22:22 +0100)]
page: store placeholder values in $Page object
Mischa POSLAWSKY [Thu, 3 Dec 2020 20:22:27 +0000 (21:22 +0100)]
page: move getoutput() to render method
Mischa POSLAWSKY [Thu, 3 Dec 2020 21:28:09 +0000 (22:28 +0100)]
page: move placeholder_include() to widget method
Mischa POSLAWSKY [Thu, 3 Dec 2020 19:59:58 +0000 (20:59 +0100)]
page: replace global variables by $Page object
Former $Article is sufficient to provide all derived values:
$Page = $Page->handler
$Args = $Page->path
$PageAccess = $Page->restricted
$Article = $Page
Swap with more appropriate (and short) $Page name and replace any usage.
Major incompatible cleanup before other upcoming behavioural changes.
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.