Aaron
58b7204fbf
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-08 23:49:20 +02:00
Aaron
36a2779381
Don't try to generate double-density thumbs for small images
2022-07-08 23:49:13 +02:00
Aaron
44bb501d13
Write new thumbnail filenames to parent Image object as well
2022-07-08 23:48:53 +02:00
Aaron
9010123d18
Thumbnail class: minor refactor of generate method
2022-07-08 23:48:45 +02:00
Aaron
e3b67c4022
Thumbnail class: refactor getUrl method
2022-07-08 23:48:38 +02:00
Aaron
2bcdc5fe6e
Split Image::getImageUrls from Image::getInlineImage
2022-07-08 23:48:30 +02:00
Aaron
edfad992cc
Rewrite Image::getInlineImage to support double density displays
2022-07-08 23:48:19 +02:00
Aaron
357d95f6ff
Add Image::getInlineImage method
2022-07-08 23:47:55 +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
Aaron
17859b70e9
Fix tag suggestions.
2020-02-25 13:31:30 +01:00
Aaron
6a7defcdc9
Allow going back to photo directly from Edit Asset screen.
2020-02-25 13:31:12 +01:00
Aaron
f193b614b7
Port basic asset management page from Kabuki.
2020-02-25 13:31:12 +01:00
Aaron
12ea378b02
Photo uploader: reduce client memory usage.
...
To create inline thumbnails locally, the previous version of the photo uploader
used base64 representations of the local files to be uploaded. While this is
effective, it is a little wasteful. When uploading several photos at once, this
could even lead to the page becoming less responsive.
This commit changes the process such that the photos are actually resized on a
canvas, only using the local original as a buffer. Hence, only the resized
photo is retained in memory.
2020-02-08 20:35:26 +01:00
Aaron
62900e7f81
Correct JSON media type.
2019-09-29 15:00:28 +02:00
Aaron
c48ba786c1
Refactor leftover old-style arrays into new-style arrays.
2019-09-29 14:47:56 +02:00
Aaron
3694819d13
Refactor out DummyBox objects from EditUser controller.
2019-09-29 14:38:42 +02:00
Aaron
d7b68995e8
Fix recounting not working on non-album tags.
2019-09-29 14:20:59 +02:00
Aaron
5df7ea8371
Remove unused 'best color' algorithm.
...
This code is used to efficiently determine the most saturated colour in an image,
Kabuki uses this as the highlight colour on a page, but this styling has always
been disabled in HashRU Pics. Hence, we can safely remove the code, freeing up
some CPU cycles in the process. ;-)
2019-09-29 14:18:59 +02:00
Aaron
7d3ab166c7
Simplify template logic for photo index.
2019-09-29 14:12:30 +02:00
Aaron
ed6054e6b6
Fix buttons appearing when they shouldn't.
...
This bug went unnoticed because people who aren't logged in can't actually see this page.
2019-09-29 14:05:45 +02:00
Aaron
8ec6c227d5
Remove leftover debug statements.
2019-03-09 13:58:37 +01:00
Aaron
42e5c7fe37
Allow regular users to unlink tags from photos.
2019-03-09 13:48:18 +01:00
Aaron
05c48be785
Link tags after adding them through autosuggest.
2019-03-09 13:22:32 +01:00
Aaron
d3cb750874
Default to centre cropping for portrait layout.
2019-03-09 12:50:16 +01:00
Aaron
bcbb74a680
Allow setting URL slug through admin panel.
2018-02-22 20:07:06 +01:00
Aaron
c6c249787f
Pass DIY slug when uploading photos.
2018-02-22 20:02:02 +01:00
Aaron
068d1dad3e
Allow capitals in tag slugs.
2018-02-19 11:55:39 +01:00
Aaron
f1408ad2ee
Allow capitals and slashes in album slugs.
2018-02-19 11:55:39 +01:00
Aaron
ee304dd7b9
When generating thumbnails, infer width properly when null is passed.
2018-02-03 20:14:40 +01:00
Aaron
1def1484cb
Backport asynchronous thumbnail generation from Kabuki.
2017-12-20 14:51:23 +01:00
Aaron
981b652e25
Fix album title box on mobile.
2017-11-22 11:22:38 +01:00
Aaron
cda7f3115c
Fix crop editor.
2017-11-09 17:00:36 +01:00
Aaron
e439a074a6
Increase tile height for album thumbnails, making them 4:3.
2017-11-09 17:00:36 +01:00
Aaron
ee9bdd45c0
Leave out labels on photo index pages.
...
They were pretty much only displaying filenames, so not adding much.
2017-11-09 17:00:36 +01:00
Aaron
9fe8acc747
Change colour palette into something more befitting #RU.
2017-11-09 17:00:36 +01:00
Aaron
096cea078c
Support 'quick create subalbums' style, too.
2017-11-09 17:00:36 +01:00
Aaron
2a25434862
Implement basic tag management.
2017-11-09 17:00:36 +01:00
Aaron
943297900c
Implement basic album management.
2017-11-09 17:00:36 +01:00
Aaron
95e289d82d
Introduce an overview of all albums for admins.
2017-11-09 17:00:36 +01:00
Aaron
1a15e347f2
Merges from upstream Kabuki.
2017-11-09 17:00:36 +01:00
Aaron
31e1357b47
Show only Person tags in tag management screen.
2017-11-09 17:00:36 +01:00
Aaron
08cc6b1c77
Updated TODO
2017-11-09 17:00:36 +01:00
Aaron
1623a430e5
Sort People tags descending; Albums ascending.
2017-11-09 17:00:35 +01:00