minimedit.git
5 years agonieuws: create article urls with dash separators v3.1
Mischa POSLAWSKY [Sat, 16 Jun 2018 03:43:12 +0000 (05:43 +0200)]
nieuws: create article urls with dash separators

Prompt for "link" to clarify purpose, and replace spaces (as most sites do).

5 years agonieuws: ignore non-numeric month requests
Mischa POSLAWSKY [Fri, 15 Jun 2018 11:26:17 +0000 (13:26 +0200)]
nieuws: ignore non-numeric month requests

Minor code cleanup to prevent PHP warnings.

5 years agoedit: omit type input from link dialog
Mischa POSLAWSKY [Fri, 15 Jun 2018 11:20:16 +0000 (13:20 +0200)]
edit: omit type input from link dialog

Simplify common usage by hiding unneeded options; specifically email
(prefer forms) and page references (rare).
Can still be entered manually if needed, but should not be advertised.

5 years agoedit: optional target upload directory
Mischa POSLAWSKY [Thu, 14 Jun 2018 16:14:07 +0000 (18:14 +0200)]
edit: optional target upload directory

Prepare for categorisation, for example supplying user paths.

5 years agoedit: prefer enhanced image plugin with alignment classes
Mischa POSLAWSKY [Thu, 14 Jun 2018 20:41:37 +0000 (22:41 +0200)]
edit: prefer enhanced image plugin with alignment classes

5 years agoedit: support ckeditor uploadUrl protocol
Mischa POSLAWSKY [Thu, 14 Jun 2018 16:33:58 +0000 (18:33 +0200)]
edit: support ckeditor uploadUrl protocol

5 years agoedit: catch upload errors
Mischa POSLAWSKY [Thu, 14 Jun 2018 16:43:22 +0000 (18:43 +0200)]
edit: catch upload errors

Prepare for messages to be included in response.

5 years agoedit: create missing image upload directories
Mischa POSLAWSKY [Thu, 14 Jun 2018 16:06:44 +0000 (18:06 +0200)]
edit: create missing image upload directories

5 years agopage: prefer dutch time zone for all users
Mischa POSLAWSKY [Thu, 14 Jun 2018 15:36:20 +0000 (17:36 +0200)]
page: prefer dutch time zone for all users

Local times [in user overviews] on foreign servers [Xenat].

5 years agologin/pass: encrypt user input in profile data
Mischa POSLAWSKY [Thu, 14 Jun 2018 15:00:15 +0000 (17:00 +0200)]
login/pass: encrypt user input in profile data

Left cleartext for debugging, but prefer at least blowfish hashing.
Assume PHP v5.5 to generate salts.

5 years agologin/members: user overview for admins
Mischa POSLAWSKY [Thu, 14 Jun 2018 10:08:57 +0000 (12:08 +0200)]
login/members: user overview for admins

Like login/visits but ordered by name, and with create link.

5 years agologin/visits: indicate admin users
Mischa POSLAWSKY [Thu, 14 Jun 2018 09:59:07 +0000 (11:59 +0200)]
login/visits: indicate admin users

5 years agologin/edit: create missing user profiles
Mischa POSLAWSKY [Thu, 14 Jun 2018 09:24:18 +0000 (11:24 +0200)]
login/edit: create missing user profiles

5 years agopage: silence php warning of undefined user
Mischa POSLAWSKY [Thu, 14 Jun 2018 09:13:42 +0000 (11:13 +0200)]
page: silence php warning of undefined user

Broken since commit v2.6-18-g297195ea7c (2018-06-09)
[page: set placeholder after page script].

5 years agologin/pass: require new password value to be confirmed
Mischa POSLAWSKY [Sat, 9 Jun 2018 07:18:58 +0000 (09:18 +0200)]
login/pass: require new password value to be confirmed

5 years agologin/edit: optional fields to change password
Mischa POSLAWSKY [Sat, 9 Jun 2018 06:41:34 +0000 (08:41 +0200)]
login/edit: optional fields to change password

Inline login/pass page.

5 years agologin/pass: separate include to parse user input
Mischa POSLAWSKY [Sat, 9 Jun 2018 06:35:51 +0000 (08:35 +0200)]
login/pass: separate include to parse user input

Allow reuse with different form input.

5 years agologin/edit: labeled fields with login and full name
Mischa POSLAWSKY [Sat, 9 Jun 2018 03:09:06 +0000 (05:09 +0200)]
login/edit: labeled fields with login and full name

5 years agologin/edit: target user data distinct from login
Mischa POSLAWSKY [Thu, 14 Jun 2018 08:59:49 +0000 (10:59 +0200)]
login/edit: target user data distinct from login

Prepare for admin control.

5 years agologin/edit: admins can access other users
Mischa POSLAWSKY [Sat, 9 Jun 2018 00:48:01 +0000 (02:48 +0200)]
login/edit: admins can access other users

5 years agologin/edit: generic column configuration
Mischa POSLAWSKY [Sat, 9 Jun 2018 02:15:01 +0000 (04:15 +0200)]
login/edit: generic column configuration

Support other fields besides email.

5 years agologin/edit: initial code cleanup to prepare for other columns
Mischa POSLAWSKY [Sat, 9 Jun 2018 01:06:14 +0000 (03:06 +0200)]
login/edit: initial code cleanup to prepare for other columns

5 years agologin/edit: rename setmail include for generic profile editor
Mischa POSLAWSKY [Sat, 9 Jun 2018 03:08:15 +0000 (05:08 +0200)]
login/edit: rename setmail include for generic profile editor

5 years agologin/visits: read and prefer configured user names
Mischa POSLAWSKY [Sat, 9 Jun 2018 00:07:48 +0000 (02:07 +0200)]
login/visits: read and prefer configured user names

5 years agologin/visits: store user data in extensible hash
Mischa POSLAWSKY [Fri, 8 Jun 2018 23:59:19 +0000 (01:59 +0200)]
login/visits: store user data in extensible hash

Prepare for other user details.

5 years agologin/visits: list users without log entry
Mischa POSLAWSKY [Sat, 9 Jun 2018 00:17:17 +0000 (02:17 +0200)]
login/visits: list users without log entry

Show unseen users as well.

5 years agopage: set placeholder after page script v3.0
Mischa POSLAWSKY [Fri, 8 Jun 2018 22:50:33 +0000 (00:50 +0200)]
page: set placeholder after page script

User may be set or changed by login.

5 years agonieuws: archive pages by year only
Mischa POSLAWSKY [Fri, 8 Jun 2018 22:05:43 +0000 (00:05 +0200)]
nieuws: archive pages by year only

5 years agonieuws: placeholder script to show articles
Mischa POSLAWSKY [Wed, 2 May 2018 15:05:18 +0000 (17:05 +0200)]
nieuws: placeholder script to show articles

Can replace homepage controller to inline latest news.

5 years agologin: replace page controllers by placeholders
Mischa POSLAWSKY [Sat, 5 May 2018 16:24:04 +0000 (18:24 +0200)]
login: replace page controllers by placeholders

5 years agopage: placeholder options
Mischa POSLAWSKY [Wed, 2 May 2018 15:23:19 +0000 (17:23 +0200)]
page: placeholder options

Target name can be followed by whitespace for additional configuration.
Syntax "name=value" will be applied to global GET (overriding user input).
Otherwise a /subpath will be appended to local page Args.

5 years agopage: include scripts from placeholders
Mischa POSLAWSKY [Wed, 2 May 2018 12:52:16 +0000 (14:52 +0200)]
page: include scripts from placeholders

5 years agopage: apply placeholder replacement to all page output
Mischa POSLAWSKY [Fri, 8 Jun 2018 16:47:55 +0000 (18:47 +0200)]
page: apply placeholder replacement to all page output

5 years agopage: include controllers from index.php
Mischa POSLAWSKY [Fri, 8 Jun 2018 15:59:51 +0000 (17:59 +0200)]
page: include controllers from index.php

Replace page code by directory handlers.  Essentially the same,
preparing for upcoming placeholder includes.

5 years agonieuws: treat years before 2000 as single page
Mischa POSLAWSKY [Fri, 20 Apr 2018 06:46:09 +0000 (08:46 +0200)]
nieuws: treat years before 2000 as single page

5 years agonieuws: support zero month for unknown dates
Mischa POSLAWSKY [Fri, 20 Apr 2018 06:30:47 +0000 (08:30 +0200)]
nieuws: support zero month for unknown dates

5 years agonieuws: parse date using single regexp
Mischa POSLAWSKY [Thu, 19 Apr 2018 16:03:33 +0000 (18:03 +0200)]
nieuws: parse date using single regexp

Equivalent but easier to maintain.

5 years agonieuws: drop prompt for article (back)date
Mischa POSLAWSKY [Thu, 19 Apr 2018 16:03:33 +0000 (18:03 +0200)]
nieuws: drop prompt for article (back)date

Much easier to use.  In rare cases where custom dates are wanted,
pages can still be created manually.

Requested-by: Arie van Marion
5 years agonieuws: port excelsior toc and year filtering
Mischa POSLAWSKY [Thu, 19 Apr 2018 16:03:33 +0000 (18:03 +0200)]
nieuws: port excelsior toc and year filtering

5 years agonieuws: dynamic article system
Mischa POSLAWSKY [Wed, 4 Oct 2017 23:04:11 +0000 (01:04 +0200)]
nieuws: dynamic article system

Copied from lijtweg site v2.4-25-g7cfaa2f8d4 (2017-10-05).
Simple js to create pages in /nieuws/year/month/day-title.html
and overview to concatenate them chronologically.

5 years agologin/visits: user details moved to /profile
Mischa POSLAWSKY [Fri, 8 Jun 2018 16:18:06 +0000 (18:18 +0200)]
login/visits: user details moved to /profile

Broken since commit v2.5-5-g6236e7cb8d (2018-04-25)
[login: store user data in /profile directory].

5 years agopage: replace missing placeholders by warning
Mischa POSLAWSKY [Wed, 2 May 2018 12:39:52 +0000 (14:39 +0200)]
page: replace missing placeholders by warning

5 years agopage: replace placeholders dynamically
Mischa POSLAWSKY [Thu, 26 Apr 2018 21:05:19 +0000 (23:05 +0200)]
page: replace placeholders dynamically

Instead of substituting known variables, search contents for placeholders
for identical results but allowing for additional options.

5 years agopage: provide abort function from edit
Mischa POSLAWSKY [Wed, 25 Apr 2018 12:02:25 +0000 (14:02 +0200)]
page: provide abort function from edit

Move to allow reuse on other pages.

5 years agologin: match posted input in user name value
Mischa POSLAWSKY [Wed, 25 Apr 2018 12:03:06 +0000 (14:03 +0200)]
login: match posted input in user name value

Cookie value could still be shown after post, due to partial fix in commit
v2.5-1-g4c8b6c0ab0 (2018-04-20) [exclude cookie data from user name default].

5 years agopage: prefer named template in parent directory v2.6
Mischa POSLAWSKY [Tue, 24 Apr 2018 23:01:21 +0000 (01:01 +0200)]
page: prefer named template in parent directory

Temporary hack to support local override of login page
outside of common symlink.

5 years agologin: link to form to send password reset mail
Mischa POSLAWSKY [Sat, 21 Apr 2018 13:09:21 +0000 (15:09 +0200)]
login: link to form to send password reset mail

5 years agologin/pass: allow token instead of login
Mischa POSLAWSKY [Tue, 24 Apr 2018 22:07:18 +0000 (00:07 +0200)]
login/pass: allow token instead of login

Only on this page a code can be used instead of valid user
in case password was forgotten.

5 years agologin: move admin pages into /login
Mischa POSLAWSKY [Tue, 24 Apr 2018 22:27:40 +0000 (00:27 +0200)]
login: move admin pages into /login

Permissions should be checked per page, and can make more distinctions than
boolean admin.  Also one dir less to symlink.

5 years agologin: store user data in /profile directory
Mischa POSLAWSKY [Tue, 24 Apr 2018 22:21:59 +0000 (00:21 +0200)]
login: store user data in /profile directory

Dedicate /login to related pages, avoiding conflicts with user names.

5 years agologin: elongate logout message
Mischa POSLAWSKY [Sat, 21 Apr 2018 12:45:35 +0000 (14:45 +0200)]
login: elongate logout message

5 years agologin: templating support for warning message
Mischa POSLAWSKY [Sat, 21 Apr 2018 12:37:27 +0000 (14:37 +0200)]
login: templating support for warning message

6 years agoadmin/commits: test for popen availability
Mischa POSLAWSKY [Fri, 20 Apr 2018 13:59:43 +0000 (15:59 +0200)]
admin/commits: test for popen availability

System calls can be disabled in PHP ini.

6 years agologin: exclude cookie data from user name default
Mischa POSLAWSKY [Fri, 20 Apr 2018 13:44:50 +0000 (15:44 +0200)]
login: exclude cookie data from user name default

Apparently included in $_REQUEST in Xenat's PHP environment.

6 years agoadmin/visits: list entries of last logins v2.5
Mischa POSLAWSKY [Tue, 12 Dec 2017 21:49:42 +0000 (22:49 +0100)]
admin/visits: list entries of last logins

6 years agologin: include form to set email address
Mischa POSLAWSKY [Fri, 22 Dec 2017 23:57:49 +0000 (00:57 +0100)]
login: include form to set email address

6 years agologin: prevent admin contents on profile subpages
Mischa POSLAWSKY [Fri, 22 Dec 2017 23:16:11 +0000 (00:16 +0100)]
login: prevent admin contents on profile subpages

6 years agologin: move logged in message to static contents
Mischa POSLAWSKY [Fri, 22 Dec 2017 23:02:32 +0000 (00:02 +0100)]
login: move logged in message to static contents

Allow site customisation.

6 years agoadmin/pass: form to change current password
Mischa POSLAWSKY [Fri, 22 Dec 2017 22:49:13 +0000 (23:49 +0100)]
admin/pass: form to change current password

6 years agoauth: reusable functions for password verification
Mischa POSLAWSKY [Fri, 22 Dec 2017 22:37:30 +0000 (23:37 +0100)]
auth: reusable functions for password verification

Page to change passwords will need to run the same code.

6 years agoadmin: disallow access to unauthorised visitors
Mischa POSLAWSKY [Tue, 12 Dec 2017 22:06:58 +0000 (23:06 +0100)]
admin: disallow access to unauthorised visitors

Regardless of login include, this page can now be retrieved separately
so needs its own user check.

6 years agologin: move admin contents to separate page
Mischa POSLAWSKY [Tue, 12 Dec 2017 22:03:30 +0000 (23:03 +0100)]
login: move admin contents to separate page

Separates text from code and makes it more manageable.

6 years agologin: introduction for admin users
Mischa POSLAWSKY [Tue, 12 Dec 2017 21:35:52 +0000 (22:35 +0100)]
login: introduction for admin users

6 years agoadmin/commits: smaller page size on login
Mischa POSLAWSKY [Tue, 12 Dec 2017 20:56:28 +0000 (21:56 +0100)]
admin/commits: smaller page size on login

Option ?pagesize to customise. Prefer later page number on change.

6 years agoadmin/commits: link dedicated page if included elsewhere
Mischa POSLAWSKY [Tue, 12 Dec 2017 20:53:55 +0000 (21:53 +0100)]
admin/commits: link dedicated page if included elsewhere

First page only at login overview.

6 years agologin: include commits page for admins
Mischa POSLAWSKY [Tue, 12 Dec 2017 21:02:12 +0000 (22:02 +0100)]
login: include commits page for admins

6 years agoadmin/commits: order navigation links chronologically
Mischa POSLAWSKY [Tue, 12 Dec 2017 20:40:56 +0000 (21:40 +0100)]
admin/commits: order navigation links chronologically

Start with reoccurring link back to keep consistent placement.

6 years agoadmin/commits: page indication and navigation
Mischa POSLAWSKY [Tue, 12 Dec 2017 20:09:11 +0000 (21:09 +0100)]
admin/commits: page indication and navigation

6 years agoadmin/commits: page to list last git log messages
Mischa POSLAWSKY [Tue, 12 Dec 2017 19:36:59 +0000 (20:36 +0100)]
admin/commits: page to list last git log messages

6 years agoauth: support unhashed passwords
Mischa POSLAWSKY [Mon, 27 Nov 2017 23:38:16 +0000 (00:38 +0100)]
auth: support unhashed passwords

String comparison for anything not starting with dollar (which identifies
all modern crypts) to keep originals for later resend (deliberate user
friendliness over security).

6 years agopage: show edit link for new pages v2.4
Mischa POSLAWSKY [Sat, 21 Oct 2017 00:05:26 +0000 (02:05 +0200)]
page: show edit link for new pages

Only existing files can be writable.  Otherwise parent directory should be
checked (recursively), but just assume unrestricted permissions for now.

6 years agoedit: recursively create missing directories
Mischa POSLAWSKY [Sat, 21 Oct 2017 00:05:49 +0000 (02:05 +0200)]
edit: recursively create missing directories

6 years agologin: preserve input value after failure
Mischa POSLAWSKY [Fri, 6 Oct 2017 11:48:53 +0000 (13:48 +0200)]
login: preserve input value after failure

6 years agoconsistently use empty() to check user existence
Mischa POSLAWSKY [Wed, 4 Oct 2017 22:58:16 +0000 (00:58 +0200)]
consistently use empty() to check user existence

Succinct without causing PHP notices even for array access.

6 years agologin: save user access details to last.log
Mischa POSLAWSKY [Wed, 4 Oct 2017 22:43:30 +0000 (00:43 +0200)]
login: save user access details to last.log

Mainly to check time of last successful login, with ip address and browser
to help debugging client issues (matching earlier data in forum columns
users.lastontime, users.lastip, users.useragent).

6 years agologin: derive user permissions from .admin file
Mischa POSLAWSKY [Wed, 4 Oct 2017 22:34:11 +0000 (00:34 +0200)]
login: derive user permissions from .admin file

Replaces site-specific name exceptions.

6 years agoedit: save changes as git commit
Mischa POSLAWSKY [Tue, 3 Oct 2017 01:41:10 +0000 (03:41 +0200)]
edit: save changes as git commit

Assume direct access to repository if .git is writable, which is preferable
to daily crons to save authors and reedits.

6 years agologin: log authenticated user in apache note
Mischa POSLAWSKY [Wed, 4 Oct 2017 22:24:38 +0000 (00:24 +0200)]
login: log authenticated user in apache note

Allows user names to be logged instead of %u using LogFormat "%{user}n".

6 years agopage: link user name in header bar to login page v2.3
Mischa POSLAWSKY [Mon, 2 Oct 2017 20:45:09 +0000 (22:45 +0200)]
page: link user name in header bar to login page

Feature logout option.

6 years agologin: separate include for unauthorised form
Mischa POSLAWSKY [Mon, 2 Oct 2017 20:38:19 +0000 (22:38 +0200)]
login: separate include for unauthorised form

Static page for user contents to match edit.

6 years agologin: store passwords in separate user files
Mischa POSLAWSKY [Mon, 2 Oct 2017 20:24:53 +0000 (22:24 +0200)]
login: store passwords in separate user files

Instead of unneeded .htpasswd compatibility, move password hashes into
simple login/$username/.passwd files.

6 years agologin: show user after login; explicit option for logout
Mischa POSLAWSKY [Sun, 17 Sep 2017 00:46:13 +0000 (02:46 +0200)]
login: show user after login; explicit option for logout

6 years agologin: move title to static page
Mischa POSLAWSKY [Mon, 2 Oct 2017 19:59:12 +0000 (21:59 +0200)]
login: move title to static page

Allows custom introduction.

6 years agopage: override request by given script path
Mischa POSLAWSKY [Mon, 2 Oct 2017 00:12:00 +0000 (02:12 +0200)]
page: override request by given script path

Support direct requests of page.php/path for internal redirects.

6 years agoedit: enable image uploads in ckeditor
Mischa POSLAWSKY [Fri, 29 Sep 2017 12:11:11 +0000 (14:11 +0200)]
edit: enable image uploads in ckeditor

6 years agoedit: store file uploads to data/$year/
Mischa POSLAWSKY [Fri, 29 Sep 2017 12:08:26 +0000 (14:08 +0200)]
edit: store file uploads to data/$year/

6 years agoedit: extend abort() to output success messages
Mischa POSLAWSKY [Fri, 29 Sep 2017 12:02:14 +0000 (14:02 +0200)]
edit: extend abort() to output success messages

6 years agoedit: replace double linebreaks by paragraphs
Mischa POSLAWSKY [Fri, 29 Sep 2017 11:11:10 +0000 (13:11 +0200)]
edit: replace double linebreaks by paragraphs

Works within lists, so currently the only workaround in CKEditor to create
multiple paragraphs for a list item.

6 years agoedit: paste limited html, enforce filter on all events
Mischa POSLAWSKY [Fri, 29 Sep 2017 11:06:04 +0000 (13:06 +0200)]
edit: paste limited html, enforce filter on all events

Recent feature for more advanced restrictions, allowing rich text without
unwanted styling attributes.  Unfortunately, the filter is not applied for
"internal" sources which apparently includes Word in Linux, so manually
execute for any contaminated contents.

6 years agoedit: replace save confirmation by page close protection
Mischa POSLAWSKY [Thu, 28 Sep 2017 01:40:05 +0000 (03:40 +0200)]
edit: replace save confirmation by page close protection

Warn about exceptional unsaved changes (save pending or forgotten),
not about common save results.

6 years agoedit: drop underline/strike from ckeditor toolbar
Mischa POSLAWSKY [Thu, 28 Sep 2017 02:01:34 +0000 (04:01 +0200)]
edit: drop underline/strike from ckeditor toolbar

Should be used to mark insertions and deletions, but probably too technical
to warrant an accessible spot.

6 years agoedit: drop rare options from ckeditor toolbar
Mischa POSLAWSKY [Thu, 28 Sep 2017 01:16:07 +0000 (03:16 +0200)]
edit: drop rare options from ckeditor toolbar

- ShowBlocks not really interesting for simple structures; would be useful
  for floating sections but these aren't supported.
- Anchor once used for article links, replaced by proper pages.
- RemoveFormat now done automatically on paste.
- Sourcedialog reordered at end since it's a last resort.

6 years agoedit: copy page stylesheet for ckeditor contents
Mischa POSLAWSKY [Thu, 28 Sep 2017 00:47:51 +0000 (02:47 +0200)]
edit: copy page stylesheet for ckeditor contents

Replace hardcoded link specific to Excelsior by a generic solution.

6 years agopage: omit edit link if unwritable
Mischa POSLAWSKY [Tue, 19 Sep 2017 00:49:16 +0000 (02:49 +0200)]
page: omit edit link if unwritable

6 years agopage: redirect to login on access denial
Mischa POSLAWSKY [Wed, 27 Sep 2017 22:59:28 +0000 (00:59 +0200)]
page: redirect to login on access denial

6 years agologin: optionally redirect to ?goto
Mischa POSLAWSKY [Tue, 19 Sep 2017 00:43:19 +0000 (02:43 +0200)]
login: optionally redirect to ?goto

Upcoming feature to continue from forbidden requests.

6 years agoedit: static edit link v2.2
Mischa POSLAWSKY [Mon, 18 Sep 2017 23:41:36 +0000 (01:41 +0200)]
edit: static edit link

Replace existing html instead of delayed append.

6 years agopage: replace login placeholder by precomposed paragraph
Mischa POSLAWSKY [Mon, 18 Sep 2017 23:33:35 +0000 (01:33 +0200)]
page: replace login placeholder by precomposed paragraph

Prepare for more elaborate user details.

6 years agopage: save granted access for admin options
Mischa POSLAWSKY [Sat, 16 Sep 2017 16:08:39 +0000 (18:08 +0200)]
page: save granted access for admin options

Page code will want to show encountered restrictions.

6 years agopage: restore error display in page includes
Mischa POSLAWSKY [Sat, 16 Sep 2017 15:41:40 +0000 (17:41 +0200)]
page: restore error display in page includes

Successful executions should not be silenced.