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.