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;
}