diff --git a/README.md b/README.md
index 1d6d2f7..93c202b 100644
--- a/README.md
+++ b/README.md
@@ -105,10 +105,21 @@ TABLE=true
SMILE=true
# Allow Markdown in item notes. Does not work with TABLE=false. Defaults to false.
MARKDOWN=false
+
+## Custom HTML Snippets
+# These are inserted into specific locations in the relevant page
+# HTML is not escaped. Don't put untrusted data here.
+# CUSTOM_HTML_LOGIN=
Some custom text for the Login page
+# CUSTOM_HTML_WISHLISTS=
+
+# Custom CSS stylesheet
+# If you wish to include a custom stylesheet you can add the filename in the variable here.
+# Remember to add the stylesheet to the filesystem at `static/css/custom.css`. In docker, mount `/usr/src/app/src/static/css/custom.css`.
+# CUSTOM_CSS=custom.css
```
## Default Profile Pictures
-To replace the default snowman profile pictures, replace the files in `static/img/default-pfps`. In docker, mount `/usr/src/app/static/img/default-pfps`.
+To replace the default snowman profile pictures, replace the files in `static/img/default-pfps`. In docker, mount `/usr/src/app/src/static/img/default-pfps`.
## Startup
```sh
diff --git a/docker-compose.yml b/docker-compose.yml
index 38878c8..fb67f56 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -6,5 +6,8 @@ services:
build: .
environment:
NODE_ENV: production
+ BULMASWATCH: Cosmo
+ MARKDOWN: true
+ SITE_TITLE: Christmas 2023
ports:
- - 80:80
\ No newline at end of file
+ - 80:80
diff --git a/package.json b/package.json
index fd95d4f..7b97059 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "christmas-community",
- "version": "1.30.3",
+ "version": "1.32.0",
"description": "Christmas lists for communities",
"main": "src/index.js",
"scripts": {
diff --git a/src/config/index.js b/src/config/index.js
index 75f22bc..1ee79e9 100644
--- a/src/config/index.js
+++ b/src/config/index.js
@@ -16,7 +16,12 @@ module.exports = {
bulmaswatch: (process.env.BULMASWATCH || 'default').toLowerCase(),
pfp: process.env.PFP !== 'false',
language: process.env.LANGUAGE?.toLowerCase() || 'en-us',
- guestPassword: process.env.GUEST_PASSWORD
+ guestPassword: process.env.GUEST_PASSWORD,
+ customHtml: {
+ wishlists: process.env.CUSTOM_HTML_WISHLISTS,
+ login: process.env.CUSTOM_HTML_LOGIN
+ },
+ customCSS: process.env.CUSTOM_CSS || null
}
if (module.exports.guestPassword) module.exports.wishlist.public = false
diff --git a/src/languages/cs-cz.js b/src/languages/cs-cz.js
index 1b4abd7..f967765 100644
--- a/src/languages/cs-cz.js
+++ b/src/languages/cs-cz.js
@@ -173,7 +173,7 @@ module.exports.strings = {
WISHLIST_UNPLEDGE_MISSING: 'Položka nenalezena',
WISHLIST_UNPLEDGE_SUCCESS: 'Rezervace zrušena!',
WISHLIST_UNPLEDGE: 'Zrušit rezervaci',
- WISHLIST_URL_LABEL: 'Jméno položky nebo odkaz na ni (odkazy na CZ obchody nefunkční) (Podporované obchody)',
+ WISHLIST_URL_LABEL: `Jméno položky nebo odkaz na ni (odkazy na CZ obchody nefunkční) (Podporované obchody)`,
WISHLIST_URL_PLACEHOLDER: 'https://www.amazon.com/dp/B00ZV9RDKK',
WISHLIST_URL_REQUIRED: 'Nevyplněna položka nebo odkaz na ni.',
WISHLISTS_COUNTS_SELF: name => `${name}: ???/???`,
diff --git a/src/languages/da-dk.js b/src/languages/da-dk.js
new file mode 100644
index 0000000..6fa5265
--- /dev/null
+++ b/src/languages/da-dk.js
@@ -0,0 +1,187 @@
+module.exports.momentLocale = 'da'
+
+module.exports.strings = {
+ _NOT_LOCALIZED: key => `${key} er ikke blevet oversat til dansk endnu.`,
+ ADMIN_CLEAR_WISHLISTS_BUTTON: 'Slet alle ønskelister',
+ ADMIN_CLEAR_WISHLISTS_DESCRIPTION: 'Advarsel: Dette vil slette alt data! Foretag venligst backup inden du fortsætter.',
+ ADMIN_CLEAR_WISHLISTS_HEADER: 'Slet ønskelister',
+ ADMIN_SETTINGS_CLEARDB_BUTTON: 'Slet ønskelister',
+ ADMIN_SETTINGS_CLEARDB_DESCRIPTION: 'Advarsel: Dette vil slette alt data! Foretag venligst backup inden du fortsætter.',
+ ADMIN_SETTINGS_CLEARDB_HEADER: 'Slet data',
+ ADMIN_SETTINGS_CLEARDB_SUCCESS: 'Slet alle ønskelister',
+ ADMIN_SETTINGS_HEADER: 'Administration',
+ ADMIN_SETTINGS_USERS_ADD_BUTTON: 'Tilføj bruger',
+ ADMIN_SETTINGS_USERS_ADD_HEADER: 'Tilføj bruger',
+ ADMIN_SETTINGS_USERS_ADD_PLACEHOLDER: 'john',
+ ADMIN_SETTINGS_USERS_ADD_USERNAME: 'Brugernavn',
+ ADMIN_SETTINGS_USERS_ADD_ERROR_USERNAME_EMPTY: 'Brugernavn er påkrævet',
+ ADMIN_SETTINGS_USERS_EDIT_DELETE_FAIL_ADMIN: 'Brugeren er administrator',
+ ADMIN_SETTINGS_USERS_EDIT_DELETE_SUCCESS: name => `Brugeren blev fjernet - ${name}`,
+ ADMIN_SETTINGS_USERS_EDIT_DEMOTE_NOT_ADMIN: 'Bruger er ikke administrator',
+ ADMIN_SETTINGS_USERS_EDIT_DEMOTE_SELF: 'Du kan ikke degradere dig selv.',
+ ADMIN_SETTINGS_USERS_EDIT_DEMOTE_SUCCESS: name => `${name} er ikke længere administrator.`,
+ ADMIN_SETTINGS_USERS_EDIT_IMPERSONATE_SUCCESS: name => `Du er nu logget ind som ${name}.`,
+ ADMIN_SETTINGS_USERS_EDIT_NO_USERNAME_PROVIDED: 'Brugernavn er påkrævet',
+ ADMIN_SETTINGS_USERS_EDIT_PROMOTE_ALREADY_ADMIN: 'Brugeren er allerede administrator',
+ ADMIN_SETTINGS_USERS_EDIT_PROMOTE_DEMOTE_NOT_FOUND: 'Brugeren blev ikke fundet',
+ ADMIN_SETTINGS_USERS_EDIT_PROMOTE_SUCCESS: name => `${name} er nu administrator.`,
+ ADMIN_SETTINGS_USERS_EDIT_RENAMED_USER: 'Omdøb bruger',
+ ADMIN_SETTINGS_USERS_EDIT_SAME_NAME: 'Brugernavnet er optaget.',
+ ADMIN_SETTINGS_USERS_EDIT: 'Redigér',
+ ADMIN_SETTINGS_USERS_HEADER: 'Brugere',
+ ADMIN_SETTINGS_VERSION_INFO: 'Version',
+ ADMIN_USER_EDIT_ACCOUNT_UNCONFIRMED: "Kontoen er ikke bekræftet.",
+ ADMIN_USER_EDIT_ADMIN_ISADMIN: name => `${name} er administrator.`,
+ ADMIN_USER_EDIT_ADMIN_NOTADMIN: name => `${name} er ikke administrator.`,
+ ADMIN_USER_EDIT_ADMIN: 'Administrator',
+ ADMIN_USER_EDIT_CHANGE_NAME: 'Ændre navn',
+ ADMIN_USER_EDIT_CHANGE_USERNAME: 'Ændre brugernavn',
+ ADMIN_USER_EDIT_CONFIRMATION_LINK: 'Bekræftelseslink',
+ ADMIN_USER_EDIT_DELETE_ADMIN: 'Brugeren er administrator',
+ ADMIN_USER_EDIT_DELETE_HEADER: 'Permanent sletning',
+ ADMIN_USER_EDIT_DELETE_USER: name => `Slet bruger - ${name}`,
+ ADMIN_USER_EDIT_DEMOTE_SELF: 'Du kan ikke degradere dig selv',
+ ADMIN_USER_EDIT_DEMOTE: name => `Degradér ${name}`,
+ ADMIN_USER_EDIT_EDITING_USER: name => `Rediger bruger - "${name}"`,
+ ADMIN_USER_EDIT_GENERATE_NEW_LINK: 'Generér nyt link',
+ ADMIN_USER_EDIT_IMPERSONATE_BUTTON: name => `Log ind som ${name}`,
+ ADMIN_USER_EDIT_IMPERSONATE_HEADER: 'Log ind som bruger',
+ ADMIN_USER_EDIT_LINK_EXPIRY_FUTURE: fromNow => `Linket udløbet ${fromNow}`, // fromNow is localized by moment
+ ADMIN_USER_EDIT_LINK_EXPIRY_PAST: fromNow => `Linket udløb ${fromNow}`,
+ ADMIN_USER_EDIT_PROMOTE: name => `Forfrem ${name}`,
+ ADMIN_USER_EDIT_RESET_PASSWORD_HASLINK_EXPIRY_FUTURE: fromNow => `Udløber ${fromNow}`,
+ ADMIN_USER_EDIT_RESET_PASSWORD_HASLINK_EXPIRY_PAST: fromNow => `Udløb ${fromNow}`,
+ ADMIN_USER_EDIT_RESET_PASSWORD_HASLINK: 'Der eksistere ikke et gendannelseslink for denne bruger',
+ ADMIN_USER_EDIT_RESET_PASSWORD_HEADER: 'Gendan adgangskode',
+ ADMIN_USER_EDIT_RESET_PASSWORD_LINK_CANCEL: 'Annullér gendannelseslink',
+ ADMIN_USER_EDIT_RESET_PASSWORD_LINK_CREATE: 'Opret gendannelseslink',
+ ADMIN_USER_EDIT_RESET_PASSWORD_LINK_REFRESH: 'Opdatér gendannelseslink',
+ ADMIN_USER_EDIT_USERNAME: 'Brugernavn',
+ BACK_BUTTON: 'Tilbage',
+ CONFIRM_ACCOUNT_EXPIRED: 'Dit bekræftelseslink er udløbet. Kontakt venligst administoren for et nyt.',
+ CONFIRM_ACCOUNT_HEADER_INVALID: `${_CC.config.siteTitle} | Bekræftelseslink er ugyldigt`,
+ CONFIRM_ACCOUNT_HEADER_VALID: `${_CC.config.siteTitle} | Bekræft konto`,
+ CONFIRM_ACCOUNT_INVALID: "Bekræftelseslinket er ikke gyldigt - kontrollér venligst at linket er komplet.",
+ CONFIRM_ACCOUNT_SET_PW_BUTTON: `Opret bruger`,
+ CONFIRM_ACCOUNT_SET_PW_PLACEHOLDER: 'pa$$word!',
+ CONFIRM_ACCOUNT_SET_PW_TEXT: name => `Hej ${name}! Vælg venligst din adgangskode her.`,
+ CONFIRM_ACCOUNT_SUCCESS: `Velkommen til ${_CC.config.siteTitle}!`,
+ LOGIN_BUTTON: 'Log ind',
+ LOGIN_PASSWORD_PLACEHOLDER: 'pa$$word!',
+ LOGIN_PASSWORD: 'Adgangskode',
+ LOGIN_USERNAME_PLACEHOLDER: 'john',
+ LOGIN_USERNAME: 'Brugernavn',
+ LOGOUT_BUTTON: 'Log ud',
+ NAVBAR_ADMIN: 'Adminstration',
+ NAVBAR_LOGIN: 'Log ind',
+ NAVBAR_LOGOUT: 'Log ud',
+ NAVBAR_PROFILE: 'Profil',
+ NAVBAR_WISHLIST: 'Min ønskeliste',
+ NOTE_BACK: name => `Tilbage til ${name}'s ønskeliste`,
+ NOTE_GET_PRODUCT_DATA: 'Hent produktdata',
+ NOTE_GUARD: 'Forkert bruger',
+ NOTE_IMAGE_URL: 'Billedlink',
+ NOTE_MISSING_PROP: prop => `Mangler feltet ${prop}`, // not really possible to localize this unfortunately
+ NOTE_NAME: 'Navn',
+ NOTE_NOTE: 'Note',
+ NOTE_PRICE: 'Pris',
+ NOTE_REFRESH_DATA: 'Genindlæs data',
+ NOTE_REMOVE_GUARD: 'Forkert bruger',
+ NOTE_REMOVE_MISSING: 'Ingen note er tilføjet',
+ NOTE_REMOVE_SUCCESS: 'Noten er slettet',
+ NOTE_SAVE_BUTTON: 'Gem note',
+ NOTE_SUCCESS: 'Noten er gemt',
+ NOTE_URL: 'Link',
+ PROFILE_HEADER: 'Profil',
+ PROFILE_PASSWORD_BUTTON: 'Gem',
+ PROFILE_PASSWORD_NEW: 'Ny adgangskode',
+ PROFILE_PASSWORD_OLD_MISMATCH: 'Nuværende adgangskode er forkert',
+ PROFILE_PASSWORD_OLD: 'Nuværende adgangskode',
+ PROFILE_PASSWORD_PLACEHOLDER: 'pa$$word!',
+ PROFILE_PASSWORD_REQUIRED_NEW: 'Ny adgangskode er påkrævet',
+ PROFILE_PASSWORD_REQUIRED_OLD: 'Nuværende adgangskode er påkrævet',
+ PROFILE_PASSWORD_SUCCESS: 'Ændringerne er gemt.',
+ PROFILE_PASSWORD_TITLE: name => `Profilindstillinger - Adgangskode - ${name}`,
+ PROFILE_PFP_IMAGE_URL: 'Billedlink',
+ PROFILE_SAVE_PFP_DISABLED: 'Profilbilleder er deaktiveret',
+ PROFILE_SAVE_PFP_SUCCESS: 'Profilbilledet er gemt.',
+ PROFILE_SECURITY_CHANGE_PASSWORD: 'Ændre adgangskode',
+ PROFILE_SECURITY: 'Sikkerhedsindstillinger',
+ PROFILE_TITLE: name => `Kontoindstillinger - ${name}`,
+ RESET_PASSWORD_BUTTON: 'Gendan adgangskode',
+ RESET_PASSWORD_GREETING_EXPIRED: 'Gendannelseslinket er udløbet. Kontakt administrator for at få et nyt.',
+ RESET_PASSWORD_GREETING_INVALID: "Ugyldigt gendannelseslink - kontrollér venligst at linket er komplet.",
+ RESET_PASSWORD_GREETING_VALID: name => `Hej ${name}! Vælg din nye adgangskode her.`,
+ RESET_PASSWORD_HEADER_INVALID: `${_CC.config.siteTitle} | Ugyldigt link`,
+ RESET_PASSWORD_HEADER_VALID: `${_CC.config.siteTitle} | Gendan adgangskode`,
+ RESET_PASSWORD_PASSWORD_PLACEHOLDER: 'pa$$word!',
+ RESET_PASSWORD_PASSWORD: 'Adgangskode',
+ RESET_PASSWORD_SUCCESS: 'Adgangskoden er blevet ændret',
+ SETUP_ADMIN_USER: 'Admin bruger',
+ SETUP_BUTTON: 'Installér',
+ SETUP_HEADER: 'Installation',
+ SETUP_PASSWORD_PLACEHOLDER: 'pa$$word!',
+ SETUP_PASSWORD: 'Adgangskode',
+ SETUP_USERNAME_PLACEHOLDER: 'john',
+ SETUP_USERNAME: 'Brugernavn',
+ SUPPORTED_SITES_HEADER: 'Supporterede hjemmesider',
+ SUPPORTED_SITES_TEXT: 'Is a site missing or broken? Open an issue here! :)',
+ UPDATE_NOTICE: (current, latest) => `
+
+ Christmas Community is out of date. There may be new features or bug fixes. Consider updating! :)
+
+
+ (you can turn this off with UPDATE_CHECK=false
)
+
+ Current: ${current}
+
+ Latest: ${latest}
+ This message is only visible to admins`,
+ WISHLIST_ADD: 'Tilføj ønske',
+ WISHLIST_ADDED_BY_USER: addedBy => `Tilføjet af: ${addedBy}`,
+ WISHLIST_ADDED_BY: 'Tilføjet af',
+ WISHLIST_ADDED_ITEM_TO_OWN_WISHLIST: 'Ønsket er tilføjet.',
+ WISHLIST_CONFLICT: 'Gaver tilføjet for hurtigt. Prøv igen om lidt.',
+ WISHLIST_DELETE: 'Slet',
+ WISHLIST_EDIT_ITEM: 'Ændre ønske',
+ WISHLIST_FETCH_FAIL: 'Ønskelisten blev ikke fundet',
+ WISHLIST_IMAGE: 'Billede',
+ WISHLIST_ITEM_MISSING: 'Gaven blev ikke fundet',
+ WISHLIST_MOVE_DOWN: 'Flyt ned',
+ WISHLIST_MOVE_GUARD: 'Forkert bruger',
+ WISHLIST_MOVE_INVALID: 'Ukendt retning',
+ WISHLIST_MOVE_ITEM_DOWN: 'Flyt ned',
+ WISHLIST_MOVE_ITEM_TOP: 'Flyt til toppen',
+ WISHLIST_MOVE_ITEM_UP: 'Flyt op',
+ WISHLIST_MOVE_SUCCESS: 'Gaven er flyttet',
+ WISHLIST_MOVE_TOP: 'Flyt til toppen',
+ WISHLIST_MOVE_UNKNOWN_DIRECTION: 'Ukendt retning',
+ WISHLIST_MOVE_UP: 'Flyt op',
+ WISHLIST_NAME: 'Titel',
+ WISHLIST_NOTE: 'Beskrivelse',
+ WISHLIST_OPTIONAL: 'Frivilligt',
+ WISHLIST_PLEDGE_DUPLICATE: 'Gaven er allerede reserveret',
+ WISHLIST_PLEDGE_ITEM: 'Reservér gave',
+ WISHLIST_PLEDGE_SUCCESS: 'Gaven er nu reserveret',
+ WISHLIST_PLEDGE: 'Reservér',
+ WISHLIST_PLEDGED: pledgedBy => `Reserveret af ${pledgedBy}`,
+ WISHLIST_PLEDGED_GUEST: 'Reserveret af en gæst',
+ WISHLIST_PLEDGED_ITEM_FOR_USER: user => `Reserveret gave for ${user}.`,
+ WISHLIST_PRICE: 'Pris',
+ WISHLIST_REFRESH_GUARD: 'Forkert bruger',
+ WISHLIST_REFRESH_NO_URL: 'Mangler link',
+ WISHLIST_REFRESH_SUCCESS: 'Gavedata er genindlæst',
+ WISHLIST_REMOVE_GUARD: 'Forkert bruger',
+ WISHLIST_REMOVE_SUCCESS: 'Gaven er fjernet fra ønskelisten',
+ WISHLIST_SUGGEST: 'Foreslå gave',
+ WISHLIST_TITLE: name => `Ønskeliste - ${name}`,
+ WISHLIST_UNPLEDGE_GUARD: 'Fejl - du har ikke reserveret denne gave', // should never happen unless someone makes their own http requests
+ WISHLIST_UNPLEDGE_SUCCESS: 'Reservationen er nu fjernet',
+ WISHLIST_UNPLEDGE: 'Fjern reservation',
+ WISHLIST_URL_LABEL: `Link eller titel (Supporterede hjemmesider)`,
+ WISHLIST_URL_PLACEHOLDER: 'https://www.amazon.com/dp/B00ZV9RDKK',
+ WISHLIST_URL_REQUIRED: 'Link eller titel er påkrævet',
+ WISHLISTS_COUNTS_SELF: name => `${name}: ???/???`,
+ WISHLISTS_COUNTS: (name, pledged, total) => `${name}: ${pledged}/${total}`,
+ WISHLISTS_TITLE: `Ønskelister`
+}
diff --git a/src/languages/de-de.js b/src/languages/de-de.js
index d1c70d3..8414d2d 100644
--- a/src/languages/de-de.js
+++ b/src/languages/de-de.js
@@ -39,7 +39,7 @@ module.exports.strings = {
ADMIN_USER_EDIT_CONFIRMATION_LINK: 'Bestätigungslink',
ADMIN_USER_EDIT_DELETE_ADMIN: 'Nutzer ist Admin',
ADMIN_USER_EDIT_DELETE_HEADER: 'Unwiderrufliche Löschung',
- ADMIN_USER_EDIT_DELETE_USER: name => `Benutzer ${name} löschen`,
+ ADMIN_USER_EDIT_DELETE_USER: name => `Nutzer ${name} löschen`,
ADMIN_USER_EDIT_DEMOTE_SELF: 'Du kannst Dir nicht selbst den Admin-Status entziehen.',
ADMIN_USER_EDIT_DEMOTE: name => `${name} den Admin-Status entziehen`,
ADMIN_USER_EDIT_EDITING_USER: name => `Nutzer "${name}" wird bearbeitet`,
@@ -140,10 +140,13 @@ module.exports.strings = {
WISHLIST_ADD: 'Eintrag zur Wunschliste hinzufügen',
WISHLIST_ADDED_BY_USER: addedBy => `Hinzugefügt von: ${addedBy}`,
WISHLIST_ADDED_BY: 'Hinzugefügt von',
+ WISHLIST_ADDED_ITEM_TO_OWN_WISHLIST: 'Eintrag wurde zur Wunschliste hinzugefügt.',
WISHLIST_CONFLICT: 'Einträge werden zu schnell hinzugefügt. Bitte probier es nocheinmal.',
WISHLIST_DELETE: 'Löschen',
WISHLIST_EDIT_ITEM: 'Eintrag bearbeiten',
+ WISHLIST_FETCH_FAIL: 'Die Wunschliste konnte nicht abgerufen werden -- existiert der Nutzer?',
WISHLIST_IMAGE: 'Bild',
+ WISHLIST_ITEM_MISSING: 'Eintrag konnte nicht gefunden werden',
WISHLIST_MOVE_DOWN: 'Runterschieben',
WISHLIST_MOVE_GUARD: 'Falscher Nutzer',
WISHLIST_MOVE_INVALID: 'Ungültige Verschiebung',
@@ -152,6 +155,7 @@ module.exports.strings = {
WISHLIST_MOVE_ITEM_UP: 'Einstrag hochschieben',
WISHLIST_MOVE_SUCCESS: 'Eintrag erfolgreich verschoben!',
WISHLIST_MOVE_TOP: 'An den Anfang setzen',
+ WISHLIST_MOVE_UNKNOWN_DIRECTION: 'Unbekannte Richtung',
WISHLIST_MOVE_UP: 'Hochschieben',
WISHLIST_NAME: 'Name',
WISHLIST_NOTE: 'Bemerkung',
@@ -161,21 +165,20 @@ module.exports.strings = {
WISHLIST_PLEDGE_SUCCESS: 'Eintrag erfolgreich reserviert!',
WISHLIST_PLEDGE: 'Reservieren',
WISHLIST_PLEDGED: pledgedBy => `Reserviert von ${pledgedBy}`,
- WISHLIST_PLEDGED_GUEST: 'Reserviert von einem Gast Benutzer',
+ WISHLIST_PLEDGED_GUEST: 'Reserviert von einem Gastnutzer',
+ WISHLIST_PLEDGED_ITEM_FOR_USER: user => `Eintrag reserviert für ${user}.`,
WISHLIST_PRICE: 'Preis',
WISHLIST_REFRESH_GUARD: 'Ungültiger Nutzer',
WISHLIST_REFRESH_NO_URL: 'Eintrag hat keine URL.',
WISHLIST_REFRESH_SUCCESS: 'Daten erfolgreich erneuert!',
WISHLIST_REMOVE_GUARD: 'Falscher Nutzer',
- WISHLIST_REMOVE_MISSING: 'Eintrag nicht gefunden',
WISHLIST_REMOVE_SUCCESS: 'Erfolgreich von der Wunschliste entfernt',
WISHLIST_SUGGEST: 'Eintrag vorschlagen',
WISHLIST_TITLE: name => `${_CC.config.siteTitle} - Wunschliste - ${name}`,
WISHLIST_UNPLEDGE_GUARD: 'Du hast das nicht reserviert', // should never happen unless someone makes their own http requests
- WISHLIST_UNPLEDGE_MISSING: 'Eintrag nicht gefunden',
WISHLIST_UNPLEDGE_SUCCESS: 'Reservierung erfolgreich aufgehoben!',
WISHLIST_UNPLEDGE: 'Reservierung aufheben',
- WISHLIST_URL_LABEL: 'URL oder Name (Unterstützte Seiten)',
+ WISHLIST_URL_LABEL: `URL oder Name (Unterstützte Seiten)`,
WISHLIST_URL_PLACEHOLDER: 'https://www.amazon.com/dp/B00ZV9RDKK',
WISHLIST_URL_REQUIRED: 'URL oder Name wird benötigt',
WISHLISTS_COUNTS_SELF: name => `${name}: ???/???`,
diff --git a/src/languages/en-us.js b/src/languages/en-us.js
index 6353daa..232f169 100644
--- a/src/languages/en-us.js
+++ b/src/languages/en-us.js
@@ -2,13 +2,13 @@ module.exports.momentLocale = 'en'
module.exports.strings = {
_NOT_LOCALIZED: key => `${key} hasn't been translated to English yet.`,
- ADMIN_CLEAR_WISHLISTS_BUTTON: 'Clear all wishlists',
- ADMIN_CLEAR_WISHLISTS_DESCRIPTION: 'This will instantly irreversibly delete all wishlists! Consider making a backup of the database before using this.',
- ADMIN_CLEAR_WISHLISTS_HEADER: 'Wishlist Deletion',
- ADMIN_SETTINGS_CLEARDB_BUTTON: 'Clear Wishlists',
+ ADMIN_CLEAR_WISHLISTS_BUTTON: 'Clear all lists',
+ ADMIN_CLEAR_WISHLISTS_DESCRIPTION: 'This will instantly irreversibly delete all lists! Consider making a backup of the database before using this.',
+ ADMIN_CLEAR_WISHLISTS_HEADER: 'List Deletion',
+ ADMIN_SETTINGS_CLEARDB_BUTTON: 'Clear lists',
ADMIN_SETTINGS_CLEARDB_DESCRIPTION: 'Warning: These options destroy data! You may want to back up the database before using these options.',
ADMIN_SETTINGS_CLEARDB_HEADER: 'Data Destruction',
- ADMIN_SETTINGS_CLEARDB_SUCCESS: 'Cleared all wishlists.',
+ ADMIN_SETTINGS_CLEARDB_SUCCESS: 'Cleared all lists.',
ADMIN_SETTINGS_HEADER: 'Admin Settings',
ADMIN_SETTINGS_USERS_ADD_BUTTON: 'Add User',
ADMIN_SETTINGS_USERS_ADD_HEADER: 'Add user',
@@ -72,11 +72,11 @@ module.exports.strings = {
LOGIN_USERNAME_PLACEHOLDER: 'john',
LOGIN_USERNAME: 'Username',
LOGOUT_BUTTON: 'Log Out',
- NAVBAR_ADMIN: 'Admin Settings',
+ NAVBAR_ADMIN: 'Admin Panel',
NAVBAR_LOGIN: 'Log In',
NAVBAR_LOGOUT: 'Log Out',
- NAVBAR_PROFILE: 'Profile',
- NAVBAR_WISHLIST: 'My Wishlist',
+ NAVBAR_PROFILE: 'Settings',
+ NAVBAR_WISHLIST: 'My List',
NOTE_BACK: name => `Back to ${name}'s wishlist`,
NOTE_GET_PRODUCT_DATA: 'Get Product Data',
NOTE_GUARD: 'Invalid user',
@@ -124,8 +124,8 @@ module.exports.strings = {
SETUP_PASSWORD: 'Password',
SETUP_USERNAME_PLACEHOLDER: 'john',
SETUP_USERNAME: 'Username',
- SUPPORTED_SITES_HEADER: 'Supported Sites',
- SUPPORTED_SITES_TEXT: 'Is a site missing or broken? Open an issue here! :)',
+ SUPPORTED_SITES_HEADER: 'Working Sites',
+ SUPPORTED_SITES_TEXT: 'You can still add items from other sites, but it can\'t autopopulate the information, so do that yourself.',
UPDATE_NOTICE: (current, latest) => `
Christmas Community is out of date. There may be new features or bug fixes. Consider updating! :)
@@ -138,13 +138,13 @@ module.exports.strings = {
Latest: ${latest}
This message is only visible to admins`,
WISHLIST_ADD: 'Add item to wishlist',
- WISHLIST_ADDED_BY_USER: addedBy => `Added by: ${addedBy}`,
- WISHLIST_ADDED_BY: 'Added By',
- WISHLIST_ADDED_ITEM_TO_OWN_WISHLIST: 'Added item to wishlist.',
+ WISHLIST_ADDED_BY_USER: addedBy => `Suggested by: ${addedBy}`,
+ WISHLIST_ADDED_BY: 'Suggested by',
+ WISHLIST_ADDED_ITEM_TO_OWN_WISHLIST: 'Added item to your list.',
WISHLIST_CONFLICT: 'Items are being added too quickly. Please try again.',
WISHLIST_DELETE: 'Delete',
WISHLIST_EDIT_ITEM: 'Edit Item',
- WISHLIST_FETCH_FAIL: 'Failed to fetch the wishlist -- does the user exist?',
+ WISHLIST_FETCH_FAIL: 'Failed to fetch the list -- does the user exist?',
WISHLIST_IMAGE: 'Image',
WISHLIST_ITEM_MISSING: 'Failed to find item',
WISHLIST_MOVE_DOWN: 'Move Down',
@@ -161,27 +161,27 @@ module.exports.strings = {
WISHLIST_NOTE: 'Note',
WISHLIST_OPTIONAL: 'Optional',
WISHLIST_PLEDGE_DUPLICATE: 'Item already pledged for',
- WISHLIST_PLEDGE_ITEM: 'Pledge item',
- WISHLIST_PLEDGE_SUCCESS: 'Successfully pledged for item!',
+ WISHLIST_PLEDGE_ITEM: 'Get this',
+ WISHLIST_PLEDGE_SUCCESS: 'You pledged for something! Good job!',
WISHLIST_PLEDGE: 'Pledge',
- WISHLIST_PLEDGED: pledgedBy => `Pledged for by ${pledgedBy}`,
- WISHLIST_PLEDGED_GUEST: 'Pledged for by a guest user',
+ WISHLIST_PLEDGED: pledgedBy => `${pledgedBy} is getting this`,
+ WISHLIST_PLEDGED_GUEST: 'Someone is getting this',
WISHLIST_PLEDGED_ITEM_FOR_USER: user => `Pledged item for ${user}.`,
WISHLIST_PRICE: 'Price',
WISHLIST_REFRESH_GUARD: 'Invalid user',
- WISHLIST_REFRESH_NO_URL: 'Item has no URL.',
- WISHLIST_REFRESH_SUCCESS: 'Successfully refreshed data!',
+ WISHLIST_REFRESH_NO_URL: 'Item has no URL. Fix that, probably.',
+ WISHLIST_REFRESH_SUCCESS: 'Refreshed data!',
WISHLIST_REMOVE_GUARD: 'Not correct user',
- WISHLIST_REMOVE_SUCCESS: 'Successfully removed from wishlist',
+ WISHLIST_REMOVE_SUCCESS: 'Removed from your list',
WISHLIST_SUGGEST: 'Suggest item',
- WISHLIST_TITLE: name => `${_CC.config.siteTitle} - Wishlist - ${name}`,
- WISHLIST_UNPLEDGE_GUARD: 'You did not pledge for this', // should never happen unless someone makes their own http requests
- WISHLIST_UNPLEDGE_SUCCESS: 'Successfully unpledged for item!',
- WISHLIST_UNPLEDGE: 'Unpledge',
- WISHLIST_URL_LABEL: 'Item URL or Name (Supported Sites)',
+ WISHLIST_TITLE: name => `${_CC.config.siteTitle}: ${name}`,
+ WISHLIST_UNPLEDGE_GUARD: 'You didn\'t pledge for this', // should never happen unless someone makes their own http requests
+ WISHLIST_UNPLEDGE_SUCCESS: 'Unpledged!',
+ WISHLIST_UNPLEDGE: 'Not getting this anymore',
+ WISHLIST_URL_LABEL: `Item URL or Name (List of sites that auto-populate from a URL)`,
WISHLIST_URL_PLACEHOLDER: 'https://www.amazon.com/dp/B00ZV9RDKK',
- WISHLIST_URL_REQUIRED: 'Item URL or Name is required',
- WISHLISTS_COUNTS_SELF: name => `${name}: ???/???`,
- WISHLISTS_COUNTS: (name, pledged, total) => `${name}: ${pledged}/${total}`,
- WISHLISTS_TITLE: `${_CC.config.siteTitle} - Wishlists`
+ WISHLIST_URL_REQUIRED: 'Item URL or at least a name is required',
+ WISHLISTS_COUNTS_SELF: name => `${name}
You don't get to see how many of your items have been pledged for. Where's the fun in that?`,
+ WISHLISTS_COUNTS: (name, pledged, total) => `${name}
${pledged}/${total}`,
+ WISHLISTS_TITLE: `${_CC.config.siteTitle}`
}
diff --git a/src/languages/es-es.js b/src/languages/es-es.js
index 3d2c5d1..bb3a22d 100644
--- a/src/languages/es-es.js
+++ b/src/languages/es-es.js
@@ -175,7 +175,7 @@ module.exports.strings = {
WISHLIST_UNPLEDGE_MISSING: 'No se pudo encontrar producto',
WISHLIST_UNPLEDGE_SUCCESS: '¡Comprometido para producto eliminado!',
WISHLIST_UNPLEDGE: 'Eliminar comprometido',
- WISHLIST_URL_LABEL: 'Nombre de producto o URL (Sitios web compatibles)',
+ WISHLIST_URL_LABEL: `Nombre de producto o URL (Sitios web compatibles)`,
WISHLIST_URL_PLACEHOLDER: 'https://www.amazon.com/dp/B00ZV9RDKK',
WISHLIST_URL_REQUIRED: 'Necesita un nombre de producto o URL',
WISHLISTS_COUNTS_SELF: name => `${name}: ???/???`,
diff --git a/src/languages/fr-ca.js b/src/languages/fr-ca.js
index 7bf9dea..d499dd1 100644
--- a/src/languages/fr-ca.js
+++ b/src/languages/fr-ca.js
@@ -174,7 +174,7 @@ module.exports.strings = {
WISHLIST_UNPLEDGE_MISSING: 'Impossible de trouver l\'article',
WISHLIST_UNPLEDGE_SUCCESS: 'L\'article a été annulé avec succès',
WISHLIST_UNPLEDGE: 'Se désengager',
- WISHLIST_URL_LABEL: 'URL ou nom de l\'article (Sites supportés)',
+ WISHLIST_URL_LABEL: 'URL ou nom de l\`article (Sites supportés)`,
WISHLIST_URL_PLACEHOLDER: 'https://www.amazon.com/dp/B00ZV9RDKK',
WISHLIST_URL_REQUIRED: "L'URL ou le nom de l'article est requis",
WISHLISTS_COUNTS_SELF: name => `${name}: ???/???`,
diff --git a/src/languages/fr-fr.js b/src/languages/fr-fr.js
index 28088c5..8a5a822 100644
--- a/src/languages/fr-fr.js
+++ b/src/languages/fr-fr.js
@@ -174,7 +174,7 @@ module.exports.strings = {
WISHLIST_UNPLEDGE_MISSING: "Impossible de trouver l'article",
WISHLIST_UNPLEDGE_SUCCESS: "L'article a été annulé avec succès !",
WISHLIST_UNPLEDGE: 'Se désengager',
- WISHLIST_URL_LABEL: 'URL ou nom de l\'article (Sites supportés)',
+ WISHLIST_URL_LABEL: 'URL ou nom de l\`article (Sites supportés)`,
WISHLIST_URL_PLACEHOLDER: 'https://www.amazon.com/dp/B00ZV9RDKK',
WISHLIST_URL_REQUIRED: "L'URL ou le nom de l'article est requis",
WISHLISTS_COUNTS_SELF: name => `${name}: ???/???`,
diff --git a/src/languages/nl-nl.js b/src/languages/nl-nl.js
index a7123d4..3c9f4ac 100644
--- a/src/languages/nl-nl.js
+++ b/src/languages/nl-nl.js
@@ -178,7 +178,7 @@ module.exports.strings = {
WISHLIST_UNPLEDGE_GUARD: 'Dit heb jij niet beloofd', // should never happen unless someone makes their own http requests
WISHLIST_UNPLEDGE_SUCCESS: 'Belofte voor item verwijderd!',
WISHLIST_UNPLEDGE: 'Verwijder belofte',
- WISHLIST_URL_LABEL: 'Item URL of naam (Ondersteunde websites)',
+ WISHLIST_URL_LABEL: `Item URL of naam (Ondersteunde websites)`,
WISHLIST_URL_PLACEHOLDER: 'https://www.bol.com/nl/nl/p/mens-erger-je-niet-dobbelautomaat-bordspel/1004004000017412/',
WISHLIST_URL_REQUIRED: 'Item URL of naam is verplicht',
WISHLISTS_COUNTS_SELF: name => `${name}: ???/???`,
diff --git a/src/languages/ro-ro.js b/src/languages/ro-ro.js
index 018a837..b3a5a4b 100644
--- a/src/languages/ro-ro.js
+++ b/src/languages/ro-ro.js
@@ -175,7 +175,7 @@ module.exports.strings = {
WISHLIST_UNPLEDGE_MISSING: 'Nu s-a putut găsi produsul',
WISHLIST_UNPLEDGE_SUCCESS: 'Ați anulat cu succes rezervarea cadoului!',
WISHLIST_UNPLEDGE: 'Anulați rezervarea',
- WISHLIST_URL_LABEL: 'URL-ul sau numele articolului (Site-uri Suportate)',
+ WISHLIST_URL_LABEL: `URL-ul sau numele articolului (Site-uri Suportate)`,
WISHLIST_URL_PLACEHOLDER: 'https://www.amazon.com/dp/B00ZV9RDKK',
WISHLIST_URL_REQUIRED: 'URL-ul sau numele articolului trebuie completat',
WISHLISTS_COUNTS_SELF: name => `${name}: ???/???`,
diff --git a/src/static/img/logo.png b/src/static/img/logo.png
index 09366a2..23bb47f 100644
Binary files a/src/static/img/logo.png and b/src/static/img/logo.png differ
diff --git a/src/static/img/logo.transparent.png b/src/static/img/logo.transparent.png
deleted file mode 100644
index 91b5717..0000000
Binary files a/src/static/img/logo.transparent.png and /dev/null differ
diff --git a/src/views/includes/navbar.pug b/src/views/includes/navbar.pug
index af148d5..463365b 100644
--- a/src/views/includes/navbar.pug
+++ b/src/views/includes/navbar.pug
@@ -4,36 +4,33 @@ mixin navBarLink(href, title)
else
a.navbar-item(href=href)= title
-nav.navbar.is-fixed-top(role='navigation', aria-label='main navigation',style='box-shadow: 0px 0px 7px rgb(14, 15, 17);')
+nav.navbar.is-fixed-top(role='navigation', aria-label='main navigation', style='box-shadow: 0px 0px 7px rgb(14, 15, 17);')
.navbar-brand
if _CC.config.base === req.path
a.is-active.navbar-item(href=_CC.config.base)
- img(src=`${_CC.config.base}img/logo.png`, alt='')
- span #{config.siteTitle}
+ img(src=`${_CC.config.base}img/logo.png`, alt='Castro Christmas')
else
a.navbar-item(href=_CC.config.base)
- img(src=`${_CC.config.base}img/logo.png`, alt='')
- span #{config.siteTitle}
+ img(src=`${_CC.config.base}img/logo.png`, alt='Castro Christmas')
a.navbar-burger#navBarBurger(role='button', aria-label='menu', aria-expanded='false')
span(aria-hidden='true')
span(aria-hidden='true')
span(aria-hidden='true')
.navbar-menu#navBarMenu
- .navbar-start
+ .navbar-end
if req.isAuthenticated()
if req.user._id === '_CCUNKNOWN'
.navbar-item
- a.button.is-primary(href='/login')= lang('NAVBAR_LOGIN')
+ a.button.is-primary(href=`${_CC.config.base}login`)= lang('NAVBAR_LOGIN')
else
- .navbar-item.has-dropdown.is-hoverable
- a.navbar-link= req.user._id
- .navbar-dropdown
- +navBarLink(`${_CC.config.base}wishlist/${req.user._id}`, lang('NAVBAR_WISHLIST'))
- +navBarLink(`${_CC.config.base}profile`, lang('NAVBAR_PROFILE'))
- if req.user.admin
- +navBarLink(`${_CC.config.base}admin-settings`, lang('NAVBAR_ADMIN'))
- hr.navbar-divider
- .navbar-item
- form#logoutForm(action=`${_CC.config.base}logout`, method='POST')
- button.button.is-warning(type='submit')= lang('NAVBAR_LOGOUT')
- script(src=`${_CC.config.base}js/nav.js`)
+ .navbar-item
+ +navBarLink(`${_CC.config.base}wishlist/${req.user._id}`, lang('NAVBAR_WISHLIST'))
+ .navbar-item
+ +navBarLink(`${_CC.config.base}profile`, lang('NAVBAR_PROFILE'))
+ if req.user.admin
+ .navbar-item
+ +navBarLink(`${_CC.config.base}admin-settings`, lang('NAVBAR_ADMIN'))
+ .navbar-item
+ +navBarLink(`${_CC.config.base}logout`, lang('NAVBAR_LOGOUT'))
+
+script(src=`${_CC.config.base}js/nav.js`)
diff --git a/src/views/layout.pug b/src/views/layout.pug
index daaa23b..94dfc5f 100644
--- a/src/views/layout.pug
+++ b/src/views/layout.pug
@@ -15,6 +15,8 @@ html(lang='en')
link(rel='stylesheet', href=`${_CC.config.base}libraries/fontawesome/css/all.css`)
link(rel='stylesheet', href=`${_CC.config.base}libraries/animate.min.css`)
link(rel='stylesheet', href=`${_CC.config.base}css/main.css`)
+ if _CC.config.customCSS
+ link(rel='stylesheet', href=`${_CC.config.base}css/${_CC.config.customCSS}`)
body
.print
.content
diff --git a/src/views/login.pug b/src/views/login.pug
index 5c3fc5b..f672210 100644
--- a/src/views/login.pug
+++ b/src/views/login.pug
@@ -17,4 +17,5 @@ block content
.field
.control
input.button.is-primary(type='submit' value=lang('LOGIN_BUTTON'))
-
+ if _CC.config.customHtml.login
+ div!= _CC.config.customHtml.login
\ No newline at end of file
diff --git a/src/views/wishlists.pug b/src/views/wishlists.pug
index 732910b..7a632bf 100644
--- a/src/views/wishlists.pug
+++ b/src/views/wishlists.pug
@@ -44,6 +44,9 @@ block content
display: inline-block;
}
+ if _CC.config.customHtml.wishlists
+ div!= _CC.config.customHtml.wishlists
+
ul.noStyle.noLeftMargin
if req.user._id !== '_CCUNKNOWN'
li
@@ -56,8 +59,7 @@ block content
img.is-rounded.is-fullwidth(src=req.user.pfp, style='object-fit: cover;')
.column
span
- span=lang('WISHLISTS_COUNTS_SELF', req.user._id)
- progress.progress(value=1, max=1)
+ span!=lang('WISHLISTS_COUNTS_SELF', req.user._id)
+wishlistDetails(req.user.wishlist, req.user._id)
each user in users
if req.user._id !== user.id
@@ -70,7 +72,7 @@ block content
figure.image.is-square.is-fullwidth.is-marginless(style='display: inline-block;')
img.is-rounded.is-fullwidth(src=user.doc.pfp, style='object-fit: cover;')
.column
- span= lang('WISHLISTS_COUNTS', user.id, totals(user.doc.wishlist).pledged, user.doc.wishlist.length)
+ span!= lang('WISHLISTS_COUNTS', user.id, totals(user.doc.wishlist).pledged, user.doc.wishlist.length)
progress.progress.is-info(value=totals(user.doc.wishlist).pledged, max=user.doc.wishlist.length)
+wishlistDetails(user.doc.wishlist)
script.