diff --git a/frontend/src/components/gallery/GalleryLayout.tsx b/frontend/src/components/gallery/GalleryLayout.tsx index 38dd25a8..be708d27 100644 --- a/frontend/src/components/gallery/GalleryLayout.tsx +++ b/frontend/src/components/gallery/GalleryLayout.tsx @@ -444,7 +444,7 @@ export const GalleryLayout: React.FC = ({

)}

- {brandingSettings?.footer_text || '© 2024 Your Company. All rights reserved.'} + {brandingSettings?.footer_text || `© ${new Date().getFullYear()}${brandingSettings?.company_name ? ` ${brandingSettings.company_name}` : ''}. All rights reserved.`} {!brandingSettings?.hide_powered_by && ( <> | Powered by PicPeak )} diff --git a/frontend/src/components/gallery/GalleryView.tsx b/frontend/src/components/gallery/GalleryView.tsx index 333f2d08..76e1f53b 100644 --- a/frontend/src/components/gallery/GalleryView.tsx +++ b/frontend/src/components/gallery/GalleryView.tsx @@ -203,7 +203,7 @@ export const GalleryView: React.FC = ({ slug, event }) => { company_name: settingsData.branding_company_name || '', company_tagline: settingsData.branding_company_tagline || '', support_email: settingsData.branding_support_email || '', - footer_text: settingsData.branding_footer_text || '© 2024 Your Company. All rights reserved.', + footer_text: settingsData.branding_footer_text || '', watermark_enabled: settingsData.branding_watermark_enabled || false, logo_url: settingsData.branding_logo_url || null, logo_size: settingsData.branding_logo_size || 'medium', @@ -385,7 +385,7 @@ export const GalleryView: React.FC = ({ slug, event }) => { if (watermarkEnabled) { photos = photos.map(photo => ({ ...photo, - url: `/gallery/${slug}/photo/${photo.id}` + url: `/api/gallery/${slug}/photo/${photo.id}` })); } diff --git a/frontend/src/i18n/locales/de.json b/frontend/src/i18n/locales/de.json index 63f4c16a..dbf23b3f 100644 --- a/frontend/src/i18n/locales/de.json +++ b/frontend/src/i18n/locales/de.json @@ -1255,7 +1255,31 @@ "customizeTheme": "Design anpassen", "saveTheme": "Design speichern", "previewLayout": "Vorschau-Layout", - "livePreview": "Live-Vorschau" + "livePreview": "Live-Vorschau", + "whiteLabel": "White Label", + "hidePoweredBy": "\"Powered by PicPeak\" Branding ausblenden", + "hidePoweredByHelp": "Entfernen Sie die PicPeak-Kennzeichnung aus Galerie-Fußzeilen für ein vollständig personalisiertes Erscheinungsbild", + "logoCustomization": "Logo-Anpassung", + "changeLogo": "Logo ändern", + "logoSizeSmall": "Klein (32px)", + "logoSizeMedium": "Mittel (48px)", + "logoSizeLarge": "Groß (64px)", + "logoSizeXLarge": "Extra Groß (96px)", + "logoSizeCustom": "Benutzerdefiniert", + "logoMaxHeight": "Maximale Höhe (Pixel)", + "logoMaxHeightHelp": "Legen Sie eine benutzerdefinierte maximale Höhe für das Logo fest (20-200 Pixel)", + "logoPosition": "Logo-Position im Header", + "positionLeft": "Links", + "positionCenter": "Mitte", + "positionRight": "Rechts", + "logoDisplayMode": "Anzeigemodus", + "logoOnly": "Nur Logo", + "textOnly": "Nur Firmenname", + "logoAndText": "Logo und Firmenname", + "showLogoInHeader": "Logo im Galerie-Header anzeigen", + "showLogoInHeaderHelp": "Logo in der Hauptkopfzeile anzeigen", + "showLogoInHero": "Logo im Hero-Bereich anzeigen", + "showLogoInHeroHelp": "Logo in Hero-Bereichen anzeigen (für Nicht-Raster-Layouts)" }, "admin": { "title": "Admin-Panel", diff --git a/frontend/src/i18n/locales/en.json b/frontend/src/i18n/locales/en.json index 080206a6..6ecb989b 100644 --- a/frontend/src/i18n/locales/en.json +++ b/frontend/src/i18n/locales/en.json @@ -1018,7 +1018,31 @@ "customizeTheme": "Customize Theme", "saveTheme": "Save Theme", "previewLayout": "Preview Layout", - "livePreview": "Live Preview" + "livePreview": "Live Preview", + "whiteLabel": "White Label", + "hidePoweredBy": "Hide \"Powered by PicPeak\" branding", + "hidePoweredByHelp": "Remove the PicPeak attribution from gallery footers for a fully white-labeled experience", + "logoCustomization": "Logo Customization", + "changeLogo": "Change Logo", + "logoSizeSmall": "Small (32px)", + "logoSizeMedium": "Medium (48px)", + "logoSizeLarge": "Large (64px)", + "logoSizeXLarge": "Extra Large (96px)", + "logoSizeCustom": "Custom", + "logoMaxHeight": "Maximum Height (pixels)", + "logoMaxHeightHelp": "Set a custom maximum height for the logo (20-200 pixels)", + "logoPosition": "Logo Position in Header", + "positionLeft": "Left", + "positionCenter": "Center", + "positionRight": "Right", + "logoDisplayMode": "Display Mode", + "logoOnly": "Logo Only", + "textOnly": "Company Name Only", + "logoAndText": "Logo and Company Name", + "showLogoInHeader": "Show logo in gallery header", + "showLogoInHeaderHelp": "Display the logo in the main header bar", + "showLogoInHero": "Show logo in hero section", + "showLogoInHeroHelp": "Display the logo in hero sections (for non-grid layouts)" }, "admin": { "title": "Admin Panel", diff --git a/frontend/src/pages/admin/BrandingPage.tsx b/frontend/src/pages/admin/BrandingPage.tsx index 4108ac90..8693e059 100644 --- a/frontend/src/pages/admin/BrandingPage.tsx +++ b/frontend/src/pages/admin/BrandingPage.tsx @@ -15,7 +15,7 @@ export const BrandingPage: React.FC = () => { const [brandingSettings, setBrandingSettings] = useState({ company_name: '', company_tagline: '', - footer_text: '© 2024 Your Company. All rights reserved.', + footer_text: '', support_email: '', watermark_enabled: false, watermark_position: 'bottom-right', @@ -307,7 +307,7 @@ export const BrandingPage: React.FC = () => { onChange={(e) => handleBrandingChange('footer_text', e.target.value)} className="w-full px-3 py-2 border border-neutral-300 rounded-lg focus:ring-2 focus:ring-primary-500" rows={2} - placeholder="© 2024 Your Company. All rights reserved." + placeholder={`© ${new Date().getFullYear()} Your Company. All rights reserved.`} /> diff --git a/frontend/src/pages/public/LegalPage.tsx b/frontend/src/pages/public/LegalPage.tsx index 0b4ab625..327db3ef 100644 --- a/frontend/src/pages/public/LegalPage.tsx +++ b/frontend/src/pages/public/LegalPage.tsx @@ -144,7 +144,7 @@ export const LegalPage: React.FC = () => {

- © 2024 PicPeak. All rights reserved. + © {new Date().getFullYear()} PicPeak. All rights reserved.

diff --git a/frontend/src/utils/photoUrl.ts b/frontend/src/utils/photoUrl.ts index 2bce36b2..f0916f21 100644 --- a/frontend/src/utils/photoUrl.ts +++ b/frontend/src/utils/photoUrl.ts @@ -12,10 +12,10 @@ interface PhotoUrlOptions { */ export function getPhotoUrl({ slug, photo, watermarkEnabled = false, token }: PhotoUrlOptions): string { if (watermarkEnabled && token) { - // Use the watermarked photo endpoint - return `/gallery/${slug}/photo/${photo.id}`; + // Use the watermarked photo endpoint (needs /api prefix) + return `/api/gallery/${slug}/photo/${photo.id}`; } - + // Use the static photo URL return photo.url; }