summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
11 daysUpdate CLAUDE.md: document auto_flow image sizing fixHEADmasterLester Caine1-0/+16
Natural aspect ratio fix via .fisheye-flow img.thumb scoping; explains specificity reasoning and no-aspect-ratio constraint. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
11 daysReplace float+clear grid with flexbox in auto_flow galleryLester Caine1-12/+5
Float+clear can't produce equal-height rows — variable-height thumbnails caused items to misalign regardless of where clears fired. Switch the container to .fisheye-flow (flex, flex-wrap:wrap): Bootstrap col-* widths still control breakpoints, flex rows are automatically equal-height. Removed counter, clear divs, and redundant col-xs-12 from inner elements. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
11 daysFix auto_flow counter: assign="imageCount" in loop so modulo checks workLester Caine1-1/+1
{counter} without assign= never updated $imageCount — it stayed at 0, making 0%2, 0%3, 0%4 all permanently true, inserting all three clear divs after every item. Gallery never formed a grid. Adding assign= makes the variable track the actual item count. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
11 daysFix auto_flow row clear logic for variable-height thumbnailsLester Caine1-6/+3
The nested if/else suppressed sm-breakpoint clears after items 4, 8, 12... (multiples of 4 took the lg branch). Replace with three independent checks — one per breakpoint — using Bootstrap 3 visible-*-block so each grid size gets its own clear on its own row boundary. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
13 daysAdd CLAUDE.md documenting gallery views, header pattern, pdfjs search, ↵Lester Caine1-0/+89
cols_per_page Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
13 daysRemove spurious caption from simple_list tableLester Caine1-1/+0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
13 daysRework all gallery view headers to blue header pattern; tidy gallery viewsLester Caine13-368/+217
- New gallery_breadcrumb_inc.tpl (small breadcrumb trail from gallery_nav) - gallery_nav.tpl stripped to prev/next navigation only - view_image.tpl: semantic <header> with floaticons + breadcrumb - All gallery view styles (galleriffic 1/2/5, auto_flow, fixed_grid, matteo, position_number, simple_list): <header> with gallery_icons_inc + breadcrumb, remove separate gallery_nav include, section.body for description - fixed_grid: drop inc2/inc3, rewrite inc.tpl with cols_per_page from mInfo, img-responsive center-block, width:100% table, pagination at bottom - simple_list: Bootstrap table-striped/hover, img-thumbnail, pagination, unconditional data block below title, 100px image column, 15% actions - auto_flow/position_number: remove duplicate data block from body div - Replace network-receive/transmit with go-down/go-up; Add Comment icon; various data|escape and getParsedData fixes Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
13 daysReplace network-transmit/receive icons with go-up/go-down for upload/downloadLester Caine4-5/+5
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07Remove duplicate ipackage attributes from biticon callsLester Caine3-9/+9
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05Switch icons: document-properties → edit, text-x-generic → view-list-textLester Caine5-7/+7
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05Switch delete icon from edit-delete to user-trash (dustbin)Lester Caine4-4/+4
user-trash updated to a proper dustbin SVG. All templates across all packages updated to use user-trash instead of edit-delete. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04Switch iconset to SVG-only — drop small/medium/large PNG directoriesLester Caine2-2/+2
All iconset icons (ipackage=icons) now served from scalable/ as SVGs. ipath (/small/, /medium/, /large/) is preserved only for cache key differentiation and SVG width/height calculation. Four icons remapped to SVG equivalents in tango/scalable/: dialog-cancel -> process-stop (newsletters: unsubscribed) emblem-downloads -> network-receive (fisheye: download file) emblem-shared -> emblem-symbolic-link (boards: moved topic/thread) mail-mark-important -> emblem-important (messages: flagged) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04Convert {booticon} to {biticon} — freedesktop/tango icon names throughoutLester Caine17-52/+52
Replace all {booticon iname="icon-*"} and {booticon iname="fa-*"} calls with {biticon ipackage="icons" iname="<freedesktop-name>"} using the tango iconset. Mapping covers ~70 distinct old names to tango equivalents (edit-delete, document-properties, go-next, lock, internet-mail, etc.). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02PDF edit: protect text layer, add read-only view and reload optionLester Caine2-0/+41
- Preserve liberty_content.data on save: copy existing data into edit before store() so the format verify plugin does not wipe it with null when the textarea is absent from a PDF form submission - Re-extract text layer on demand: reload_pdf checkbox calls mime_pdf_text_extract() via mStorage source_file, mirrors the existing generate_thumbnails pattern in edit_image.php - Template: show extracted text in a read-only scrollable textarea for PDFs (no name attr so not submitted); separate Re-extract checkbox; editable description textarea shown only for non-PDF attachments Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01Route PDF thumbnail regeneration through mime_pdf_thumbnail() via ImagickLester Caine1-0/+3
liberty_generate_thumbnails() has no PDF path without liberty_rasterize_pdf; mime_pdf_thumbnail() handles PDFs correctly via Imagick. Also pass attachment_id into fileHash so the sub-call to liberty_generate_thumbnails has context. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01Guard null type in substr() call — PHP 8.x deprecationLester Caine1-1/+1
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25edit_image: hide rotate/resize controls for non-image filesLester Caine1-0/+2
Rotate Image and Reduce Original Size are only meaningful for images. Wrap both in mime_type check so they are hidden for video, audio, PDF etc. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25Fisheye: fix video thumbnail regeneration and gateway timeoutLester Caine2-5/+11
- FisheyeImage::renderThumbnails: route video/* mime types through mime_video_create_thumbnail() instead of liberty_generate_thumbnails() which only handles images — fixes regeneration of existing stored videos - edit.php: send redirect before generateGalleryThumbnails() using fastcgi_finish_request() so the browser is released immediately and bulk thumbnail generation runs in background without nginx timeout Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25Galleriffic: fix fancyzoom interference, add regenerate-thumbnails UILester Caine6-7/+17
- Add rel="nozoom" to all galleriffic thumb <a> links so FancyZoom's loading animation doesn't fire when selecting images in galleriffic - Add "Regenerate All Thumbnails" checkbox to edit_gallery.tpl (only shown for existing galleries) - Fix edit.php calling non-existent generateThumbnails() on a gallery object — corrected to generateGalleryThumbnails() - Add set_time_limit(0) inside generateGalleryThumbnails() so large galleries don't time out during thumbnail regeneration Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24Videos tab: inline player with list/player split layoutLester Caine1-23/+60
Replaces the simple table with a two-column layout — scrollable video list on the left, HTML5 player on the right. Clicking a list item loads and plays the video in-page. Full-page link and title shown below player. Thumbnails display in the list when available (post-ffmpeg). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24Fix jstab compile error in inc_2: always open jstabs, conditionalise Videos ↵Lester Caine1-3/+4
tab only Smarty validates block tag pairs at compile time so {jstab} cannot be wrapped in {if}. jstabs/Pictures tab are always present; Videos jstab is conditional inside the already-open jstabs block. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24Save galleriffic_style as a preference on gallery editLester Caine1-0/+1
The style field was read from preferences but never written back — storePreference call was missing alongside galleriffic_num_thumbs. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24Add galleriffic style 2: Pictures/Videos tabs for mixed galleriesLester Caine2-1/+223
fisheye_galleriffic_inc.tpl now dynamically loads the inc file matching the gallery's galleriffic_style preference (defaults to 1). inc_2.tpl adds a pre-scan for video items and wraps the galleriffic slideshow in a Pictures tab, with a Videos simple-list tab alongside. Items without thumbnails are skipped from the Pictures tab; when ffmpeg generates thumbnails they appear in both tabs automatically. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24Skip thumbnailless items in galleriffic to prevent broken displayLester Caine2-0/+4
Items without a thumbnail (e.g. videos when ffmpeg is unavailable) are excluded from the slideshow list rather than producing empty src/href attributes that break galleriffic's JS. Once thumbnails are generated they appear automatically. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24Guard updatePosition() call against non-Fisheye gallery itemsLester Caine1-1/+3
Wiki pages embedded in galleries don't extend FisheyeBase so lack updatePosition() — method_exists() check prevents fatal error on reorder. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24Ignore Sony DSC placeholder in EXIF ImageDescriptionLester Caine1-6/+9
Sony cameras write 'SONY DSC' (padded with spaces) into ImageDescription, which was being copied as the image title. Trim and skip this value so filename-derived titles are used instead. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24Add per-gallery show_description preference to all active gallery viewsLester Caine10-2/+45
Galleries can now suppress their description text via a checkbox in the edit form (defaults to shown). All active view templates (galleriffic, fixed_grid, auto_flow, position_number, simple_list) respect the preference. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21Inherit parent gallery protector role when creating sub-galleries and ↵Lester Caine2-0/+18
uploading images New sub-galleries and uploaded images now inherit the protector role_id from their first parent gallery, matching the behaviour of comment inheritance in protector_comment_store(). Only applies when no explicit role is chosen (-1). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21Remove unused ajax_scroller gallery viewLester Caine1-10/+0
Never wired up — no PHP or template references, incomplete stub only. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21Fix prev/next image navigation: call loadCurrentImage and use getAll not ↵Lester Caine2-1/+4
getAssoc image_lookup_inc.php was never calling loadCurrentImage() so previous/next image IDs were never populated. Also fixed loadCurrentImage to use getAll() instead of getAssoc() — getAssoc keys by first column so numeric $rows[$i] indexing always failed to find the current image. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21Fix breadcrumb depth: remove premature gallery_path assignment that bypassed ↵Lester Caine1-3/+0
ancestor walk gallery_lookup_inc.php was setting gallery_path to just the immediate parent via getParentGalleries() before getBreadcrumbLinks() ran, causing it to skip the full iterative ancestor loop and only ever show one level. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21Replace getParentGalleries loop with direct getRow ancestor walkLester Caine1-25/+15
Drop all dependency on getParentGalleries result parsing (fg.* column casing, associative key detection). Use a single simple getRow per level with explicit lowercase aliases (gid, cid, gtitle) so Firebird column name casing can't interfere. Walks up to 10 levels and builds $ret directly. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21Fix ancestor walk: use is_numeric key check and direct content_id lookupLester Caine1-2/+5
Replaced isset($galleryData['content_id']) with is_numeric($galleryId) to identify parent gallery entries regardless of column name casing in the getAssoc result. content_id is now fetched via a direct query so the loop reliably advances up the hierarchy to the root. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21Fix breadcrumb hierarchy walk: populate ret directly, skip cross-join verifyLester Caine1-1/+11
When gallery_path is not in the URL (pretty_urls), the fallback now builds $ret directly from per-gallery title lookups instead of relying on the complex multi-table cross-join verify query, which fails silently for paths longer than one level. The complex query is still used when gallery_path arrives via URL. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21Fix breadcrumb depth and dedup nav across gallery viewsLester Caine6-49/+36
getBreadcrumbLinks now walks the full gallery hierarchy recursively instead of only one level up, so deep paths like Projects > Cadogan Gardens > Source Material appear in full. Inline nav blocks in galleriffic, simple_list and auto_flow replaced with gallery_nav.tpl include (matching fixed_grid). User/Galleries editor link in gallery_nav.tpl now guarded by hasUpdatePermission. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21Fix broken parent gallery breadcrumb links; remove undefined changePhotoDrawerLester Caine4-4/+4
changePhotoDrawer() was never defined — clicking a parent gallery in the breadcrumb threw a JS error, return false never ran, and href="#" left the user on the same page ("links to self"). Replace with direct pretty URL navigation. Also fix double-slash in gallery_nav.tpl (FISHEYE_PKG_URL already ends with /). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21Fix galleriffic numThumbs: break out of literal block for Smarty expressionLester Caine2-2/+2
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21Separate pagination counts per gallery style; make galleriffic numThumbs ↵Lester Caine5-29/+28
configurable - rows_per_page/cols_per_page (DB) used only by fixed_grid - total_per_page preference used by auto_flow, simple_list, matteo — shown as one shared field with the style-appropriate label; falls back to old rows_per_page for migration - galleriffic_num_thumbs preference replaces hardcoded numThumbs:30 in JS templates - JS disables hidden style-div inputs on load and switch so only the active style submits Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21Fix images_per_page for galleriffic pagination to match JS numThumbs:30Lester Caine1-1/+4
Galleriffic JS hardcodes numThumbs:30 in both gallery templates, so the images_per_page used for image_order.tpl page-break dividers must also be 30 rather than cols_per_page * rows_per_page. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21Add addHit() to view_image_details.phpLester Caine1-0/+1
Called via AJAX when an image is selected in the galleriffic gallery view — this is a genuine image view and should increment the hit counter. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21Tidy automatic generation of sitemapLester Caine1-0/+48
2026-05-21Show proper 404 error for invalid gallery ID instead of blank pageLester Caine1-1/+5
2026-05-18fisheye is no longer reliant on mochikit so just removed commented out lineLester Caine1-1/+0
2026-05-16Restore the pop-up edit functionLester Caine1-3/+26
2026-05-16Missing defaults, and remap popup editLester Caine1-3/+3
2026-05-15Namespace fixesLester Caine1-1/+2
2026-05-15bitweaver.js is loaded but the framework so should not need to be loaded hereLester Caine1-1/+0
2026-05-14php-cs-fixer tidies to php8.5 standardsLester Caine101-203/+238
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08Add detail to the confirmDialogV5-php84lsces1-0/+2
2026-05-08isLocked should not apply to fisheye objects but liberty generic handling ↵lsces1-0/+11
hits it so we need to handle it