Commit Graph
100 Commits
Author SHA1 Message Date
Aaron 02b43035f3 AccountSettings: allow users to change their personal details 2023-03-11 15:32:07 +01:00
Aaron 87df775c51 MainNavBar: re-introduce the space invader 2023-03-11 15:27:15 +01:00
Aaron c6902150f0 PhotoPage: move edit button from old admin bar to widget 2023-03-11 15:17:36 +01:00
Aaron 277611e0ac Introduce new menu classes and navigation templates 2023-03-11 15:14:05 +01:00
Aaron b1378a3b59 DummyBox: fix SubTemplate inheritance 2023-03-11 14:38:49 +01:00
Aaron 5bb8c020bd EditAssetForm: replace widget class with generic content box 2023-03-11 14:31:44 +01:00
Aaron a6fd8d2764 Admin controllers: apply new column classes 2023-03-11 14:24:17 +01:00
Aaron b9bd2bf499 AlbumHeaderBox: apply some border radius to tag headers 2023-03-11 14:17:38 +01:00
Aaron 812c7a4f20 PhotoPage: change previous/next icons 2023-03-11 14:13:29 +01:00
Aaron 021df2df93 Pagination: use larger page indices on photo and album index pages 2023-03-11 14:12:56 +01:00
Aaron a9a2c64d81 PhotoPage: replace custom sub-photo boxes with generic equivalents 2023-03-11 13:57:57 +01:00
Aaron cf31f0af07 Replace more custom button classes with Bootstrap counterparts 2023-03-11 13:51:12 +01:00
Aaron 2d1a299fe0 Replace login and password reset templates 2023-03-11 13:44:36 +01:00
Aaron 307d34430a SubTemplate: use SubTemplates for boxed content only 2023-03-11 13:37:59 +01:00
Aaron 0366df9b5f Alerts: replace 'error' class with 'danger' 2023-03-11 13:30:02 +01:00
Aaron f9eefe7b41 Replace generic alert, form and table templates with new Bootstrap equivalents 2023-03-11 13:20:59 +01:00
Aaron daf6b6b264 MainTemplate: clean up HTML head; remove unused inline CSS function 2023-03-11 13:12:12 +01:00
Aaron 07bc784859 Add bootstrap as a dependency 2023-03-11 12:58:30 +01:00
Aaron 09f498695d Router: split off from Dispatcher 2023-01-01 19:48:19 +01:00
Aaron 6b028aac41 AlbumIndex: enable rendering of more double-density thumbnails 2023-01-01 19:37:22 +01:00
Aaron 2ef1289628 PhotosIndex: enable rendering of more double-density thumbnails 2023-01-01 19:37:07 +01:00
Aaron 4d05cebc40 PhotoMosaic: address deprecation notice in usort call 2022-12-25 14:06:54 +01:00
Aaron ce909ccfe5 default.css: fix overflow declarations 2022-12-25 13:56:42 +01:00
Aaron 1314cfdd30 composer.json: include dependent PHP extensions 2022-12-25 13:56:42 +01:00
Aaron 7897172256 Address dynamic class property deprecation warnings 2022-12-25 13:56:42 +01:00
Aaron 49390c372d Use triple-equals in a few more places 2022-12-25 13:50:03 +01:00
Aaron 2174e1d08b PhotoPage: show software used to edit photo 2022-12-25 13:44:19 +01:00
Aaron d66f071aab Merge pull request 'Add double-density support to photo thumbnails' (#28) from improve_thumbs into master
Reviewed-on: #28
2022-11-27 14:38:21 +01:00
Aaron 7d82a4a924 Merge pull request 'Complete date-ordered orderings' (#29) from electricdusk/pics:assets-complete-ordering into master
Reviewed-on: #29
2022-11-22 21:09:10 +01:00
Aaron 3de87809bb GenericTable: prevent passing NULL to strtotime 2022-07-14 16:45:32 +02:00
Aaron c763967463 Prevent current page from being 0 if no items are present 2022-07-14 16:45:17 +02:00
Aaron 6369187eb7 Add double-density thumbnails to albums and photo pages 2022-07-08 23:53:28 +02:00
Aaron b3808144ca Address deprecation notices for certain function signatures 2022-07-08 23:52:03 +02:00
Aaron d8858c78bb Thumbnails: crop from original size if 2x is unavailable 2022-07-07 14:54:00 +02:00
Aaron c0d69f7205 Do not delete thumbnail queue when replacing an asset
Thumbnails are normally created on demand, e.g. when processing the format codes in a post's body text.
Normally, the temporary URL is only used once to generate thumbnails ad-hoc. However, when cache is
enabled, a reference to the asset may be used in a cached version of a formatted body text, skipping
the normal thumbnail generation routine.

When an asset is replaced, currently, all thumbnails are removed and references to them are removed
from the database. In case the asset is still referenced in a cached formatted body text, this could lead
to an error when requesting the thumbnail, as the thumbnail request is no longer present in the system.

As we do not know what posts use particular assets at this point in the code, it is best to work around this
issue by unsetting the thumbnail filenames rather than deleting the entries outright. This effectively
generates them again on the next request.

In the future, we should aim to keep track of what posts make use of assets, so cache may be invalidated
in a more targeted way.
2022-07-07 14:22:22 +02:00
Aaron b5edf09a69 Don't try to generate double-density thumbs for small images 2022-07-07 14:05:33 +02:00
Aaron 54fb7ab410 Write new thumbnail filenames to parent Image object as well 2022-07-07 13:55:55 +02:00
Aaron 086102d007 Thumbnail class: minor refactor of generate method 2022-07-07 13:51:03 +02:00
Aaron 56b60b74bc Thumbnail class: refactor getUrl method 2022-07-07 13:33:40 +02:00
Aaron fc59708914 Split Image::getImageUrls from Image::getInlineImage 2022-07-05 12:01:02 +02:00
Aaron 1c02cbea93 Rewrite Image::getInlineImage to support double density displays 2022-07-05 11:41:40 +02:00
Aaron 52420b8715 Add Image::getInlineImage method 2022-06-30 15:22:08 +02:00
Aaron 0ec0de4414 Replace deprecated strftime calls 2022-05-07 13:25:19 +02:00
Aaron 3bf69fd21f Prevent XSS in error log viewer. 2021-03-10 17:40:06 +01:00
Aaron 237f4005bd Apply htmlspecialchars to basic values. 2021-02-17 22:44:26 +01:00
Aaron 4bf4641428 Minor refactor of generateColumnHeaders function 2021-02-17 20:45:58 +01:00
Aaron ff808ba18d Refactor processing of raw rows and their cell data. 2021-02-17 20:45:22 +01:00
Aaron 6c662481bc Remove a few obscure, unused features.
* Removed support for row classification. Use of CSS is preferred.
* Removed support for disabling/enabling columns via a property. Unset as needed.
* Removed support for passing and inheriting a cell width by column. Header width suffices.
2021-02-17 20:45:22 +01:00
Aaron af73f00701 Restrict access to GenericTable, Pagination class members. 2021-02-17 20:45:21 +01:00
Aaron 681af07985 Pass builder function for custom pagination link generation.
This makes pagination for GenericTables work properly again.
2021-02-17 20:43:30 +01:00
Aaron cba42a9129 Refactor GenericTable to use PageIndex rather than inherit from it
This has on my todo list for years... I'm glad to finally get around to it.
2021-02-17 20:43:30 +01:00
Aaron 96937b6952 Use null-coalescing operator where appropriate 2021-02-17 20:43:29 +01:00
Aaron 5c55e45c3c Use splat operator instead of call_user_func_array 2021-02-17 20:43:29 +01:00
Aaron 70e6001c85 Replace event.keyCode with event.key equivalents. 2021-02-16 15:26:57 +01:00
Aaron 4402521051 Highlight matching string in autosuggest entries. 2021-02-15 12:14:24 +01:00
Aaron 889302cd36 Modernise AutoSuggest and TagAutoSuggest classes. 2021-02-15 12:14:23 +01:00
Aaron cae5c6e5cf Merge pull request 'Add readme and license files' (#24) from readme into master
Reviewed-on: #24
2020-12-30 20:09:04 +01:00
Aaron 162d14b35f Merge pull request 'Refactor work for Thumbnail class' (#23) from thumbnail-refactor into master
Reviewed-on: #23
2020-12-30 20:08:02 +01:00
Aaron 555c61937b Minor Thumbnail refactors from upstream Kabuki. 2020-12-30 20:09:10 +01:00
Aaron d069ddca18 Merge pull request 'Make crop editor usable' (#22) from crop-editor into master
Reviewed-on: #22
2020-12-30 20:06:15 +01:00
Aaron 71b71f8a03 Merge pull request 'Set JPEG compression to 80 for thumbnails' (#21) from thumbnail-quality into master
Reviewed-on: #21
2020-12-30 20:05:46 +01:00
Aaron 2885e24456 Merge pull request 'Prevent blank pages on session errors' (#20) from session-errors into master
Reviewed-on: #20
2020-12-30 20:05:27 +01:00
Aaron c72e24c0c7 EditAsset: refactor common expression into its own variable. 2020-12-30 15:36:30 +01:00
Aaron b8191bf554 EditAsset: handle case where suffix is null. 2020-12-30 15:36:27 +01:00
Aaron 3594b3d021 Add BSD 3-clause license. 2020-12-30 13:55:30 +01:00
Aaron 936d3d20db Add a readme file to the repo. 2020-12-30 13:55:16 +01:00
Aaron 5c4a075231 Constrain aspect ratio conservation to image boundaries as well. 2020-12-30 13:26:31 +01:00
Aaron 6ddf518294 Grow image and its container with document height. 2020-12-30 13:26:31 +01:00
Aaron 66a411973a Constrain crop proportions by default, with checkbox to disable. 2020-12-30 13:26:31 +01:00
Aaron a83b938f8a Reposition crop boundary when window resizes. 2020-12-30 13:26:31 +01:00
Aaron 5344378333 Crop editor: interpret 'cs' as centre-sliced crop.
At some point, I started using 'cs' instead of 'cc'. Let's just support both.
2020-12-30 13:26:31 +01:00
Aaron 8147e2b97d Crop editor: do not allow selections starting outside image bounds. 2020-12-30 13:26:31 +01:00
Aaron d562c70667 Improve styling of form elements. 2020-12-30 13:06:44 +01:00
Aaron 5599ff8d9b Crop editor: use numeric input boxes with appropriate constraints. 2020-12-30 13:05:23 +01:00
Aaron e7490e40dd Clean up and force a rebuild of thumbnails when customising a crop region. 2020-12-30 13:05:23 +01:00
Aaron 6fcc2eb59f EditAsset: generate any pending thumbnails here as well. 2020-12-30 13:05:23 +01:00
Aaron b793e05980 Re-assign thumbnail suffix for CROP_MODE_BOUNDARY.
This crop mode was intended to get the '_ce' suffix,
but was inadvertently getting '_c' instead.
2020-12-30 13:05:22 +01:00
Aaron 340ed84272 Show first available thumbnail instead of a potentially hidden one. 2020-12-30 13:05:22 +01:00
Aaron 93884e2e93 Fix initial slicing dimensions in CropEditor.setDefaultCrop.
Subtle bug. This has been in for years... :)
2020-12-30 13:05:22 +01:00
Aaron 2a740d8cef Constrain boundary movement to image canvas. 2020-12-30 13:05:22 +01:00
Aaron 5e0d4df2f7 Allow moving/dragging the crop boundary.
Currently unconstrained.
2020-12-30 13:05:22 +01:00
Aaron e84c4f2b43 Constrain crop selection to image dimensions. 2020-12-30 13:05:22 +01:00
Aaron 893d31af52 Proper dragging of the crop bounding rectangle/area. 2020-12-30 13:05:22 +01:00
Aaron 5895f4faa6 Rewrite CropEditor.positionBoundary 2020-12-30 13:05:22 +01:00
Aaron 8e7a09f3f3 Initial version of crop boundary dragging. 2020-12-30 13:05:22 +01:00
Aaron 837c92db44 CropEditor: split setDefaultCrop from setInputValues and rename. 2020-12-30 13:05:22 +01:00
Aaron c392105814 Refactor crop editor DOM functions. 2020-12-30 13:05:22 +01:00
Aaron 9d95df81fe WIP: finally implement drag events. 2020-12-30 13:05:22 +01:00
Aaron d4cc72304e Use flexbox for crop editor box sizing. 2020-12-30 13:05:21 +01:00
Aaron 2c68b6a798 Improve crop editor styling. 2020-12-30 13:05:21 +01:00
Aaron fd84e1c9f8 Refactor crop editor into a proper class. 2020-12-30 13:05:21 +01:00
Aaron 8d02662eb3 Set JPEG compression to 80 for thumbnails.
This saves both disk space and bandwidth by compromising a little on quality.
Only thumbnails are affected; full-size images are still saved in full detail.
2020-03-22 22:56:53 +01:00
Aaron 31f4edc996 Register ErrorHandler before Session start. 2020-03-11 22:38:17 +01:00
Aaron a208c0482f Invoke Dispatcher::kickGuest from Session for invalid sessions.
Previously, a NotAllowedException would be thrown if an invalid session
was encountered. However, these exceptions were not caught, and hence
would yield a fatal uncaught exception error.

At this point in Kabuki, the ErrorHandler class has not been registered yet
for error handling purposes. This error is therefore not visible if the PHP
ini directive 'display_errors' is set to 'Off'. As this is the default
production value, the script would fail with a blank page in such cases.
2020-03-11 22:38:15 +01:00
Aaron bd1ca8d18c Use $_SESSION['current_export'] to prevent simultaneous exports. 2020-03-11 18:57:31 +01:00
Aaron c7d3b9c3d1 Disable output buffering so we can enjoy more than ~62MB of photos. 2020-03-11 12:32:44 +01:00
Aaron 5a51778a6a Clean up tar process handling; make stdout non-blocking. 2020-03-11 12:32:44 +01:00
Aaron 2bb29d7224 Minor optimisation to Download::getChildAlbumIds. 2020-03-11 12:32:44 +01:00
Aaron 1b7e83e11e Let tar change working directory to assets directory.
This prevents edge cases where files are not found, while ensuring
the archive does not contain the system directory hierarchy.
2020-03-11 12:32:34 +01:00
Aaron 354e54a0af Limit album/tag downloading on a user basis.
This removes the limit of downloading albums only; tags are fine, too.

Now using UserFacingException for certain exceptions, as these are
displayed to the user.

Removing the inheritance of HTMLController, as we intend to output binary
data only.
2020-03-11 11:55:17 +01:00