mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 22:57:21 +01:00
Remove email addresses from translatable strings (#8448)
* Fix User > Profile showing {getProgressDisplay()}
* Remove bad nextRewardAt check
* 1st iteration of issue #8385 - more pending
* #8385 config and jade fixes, tests pending
* #8385 fixing lint errors
* Fix faqs string and test
* Fix faq.jade and add workaround for faq.js
* Fixing accidental checking for faq.js
* fix emails in faq.js
* fetch emails once in auth.js
* Fixing community manager email in auth.js
This commit is contained in:
committed by
Matteo Pagliazzi
parent
5eadf9e486
commit
842fbe42a8
@@ -92,5 +92,10 @@
|
|||||||
"FLAGGING_FOOTER_LINK": "https://habitrpg.github.io/flag-o-rama/",
|
"FLAGGING_FOOTER_LINK": "https://habitrpg.github.io/flag-o-rama/",
|
||||||
"SUBSCRIPTIONS_URL": "https://hooks.slack.com/services/id/id/id"
|
"SUBSCRIPTIONS_URL": "https://hooks.slack.com/services/id/id/id"
|
||||||
},
|
},
|
||||||
"ITUNES_SHARED_SECRET": "aaaabbbbccccddddeeeeffff00001111"
|
"ITUNES_SHARED_SECRET": "aaaabbbbccccddddeeeeffff00001111",
|
||||||
|
"EMAILS" : {
|
||||||
|
"COMMUNITY_MANAGER_EMAIL" : "community@example.com",
|
||||||
|
"TECH_ASSISTANCE_EMAIL" : "tech@example.com",
|
||||||
|
"PRESS_ENQUIRY_EMAIL" : "press@example.com"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ import {
|
|||||||
sha1Encrypt as sha1EncryptPassword,
|
sha1Encrypt as sha1EncryptPassword,
|
||||||
} from '../../../../../../website/server/libs/password';
|
} from '../../../../../../website/server/libs/password';
|
||||||
|
|
||||||
|
import nconf from 'nconf';
|
||||||
|
|
||||||
describe('POST /user/auth/local/login', () => {
|
describe('POST /user/auth/local/login', () => {
|
||||||
let api;
|
let api;
|
||||||
let user;
|
let user;
|
||||||
@@ -43,7 +45,7 @@ describe('POST /user/auth/local/login', () => {
|
|||||||
})).to.eventually.be.rejected.and.eql({
|
})).to.eventually.be.rejected.and.eql({
|
||||||
code: 401,
|
code: 401,
|
||||||
error: 'NotAuthorized',
|
error: 'NotAuthorized',
|
||||||
message: t('accountSuspended', { userId: user._id }),
|
message: t('accountSuspended', { communityManagerEmail: nconf.get('EMAILS:COMMUNITY_MANAGER_EMAIL'), userId: user._id }),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import {
|
|||||||
sha1Encrypt as sha1EncryptPassword,
|
sha1Encrypt as sha1EncryptPassword,
|
||||||
} from '../../../../../../website/server/libs/password';
|
} from '../../../../../../website/server/libs/password';
|
||||||
|
|
||||||
|
import nconf from 'nconf';
|
||||||
|
|
||||||
const ENDPOINT = '/user/auth/update-email';
|
const ENDPOINT = '/user/auth/update-email';
|
||||||
|
|
||||||
describe('PUT /user/auth/update-email', () => {
|
describe('PUT /user/auth/update-email', () => {
|
||||||
@@ -68,7 +70,7 @@ describe('PUT /user/auth/update-email', () => {
|
|||||||
})).to.eventually.be.rejected.and.eql({
|
})).to.eventually.be.rejected.and.eql({
|
||||||
code: 401,
|
code: 401,
|
||||||
error: 'NotAuthorized',
|
error: 'NotAuthorized',
|
||||||
message: t('cannotFulfillReq'),
|
message: t('cannotFulfillReq', { techAssistanceEmail: nconf.get('EMAILS:TECH_ASSISTANCE_EMAIL') }),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"communityGuidelinesWarning": "Please keep in mind that your Display Name, profile photo, and blurb must comply with the <a href='https://habitica.com/static/community-guidelines' target='_blank'>Community Guidelines</a> (e.g. no profanity, no adult topics, no insults, etc). If you have any questions about whether or not something is appropriate, feel free to email <a href='mailto:leslie@habitica.com' target='blank'>leslie@habitica.com</a>!",
|
"communityGuidelinesWarning": "Please keep in mind that your Display Name, profile photo, and blurb must comply with the <a href='https://habitica.com/static/community-guidelines' target='_blank'>Community Guidelines</a> (e.g. no profanity, no adult topics, no insults, etc). If you have any questions about whether or not something is appropriate, feel free to email <%= hrefBlankCommunityManagerEmail %>!",
|
||||||
"profile": "Profile",
|
"profile": "Profile",
|
||||||
"avatar": "Customize Avatar",
|
"avatar": "Customize Avatar",
|
||||||
"other": "Other",
|
"other": "Other",
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
"commGuidePara011b": "on GitHub/Wikia",
|
"commGuidePara011b": "on GitHub/Wikia",
|
||||||
"commGuidePara011c": "on Wikia",
|
"commGuidePara011c": "on Wikia",
|
||||||
"commGuidePara011d": "on GitHub",
|
"commGuidePara011d": "on GitHub",
|
||||||
"commGuidePara012": "If you have an issue or concern about a particular Mod, please send an email to Lemoness (<a href=\"mailto:leslie@habitica.com\">leslie@habitica.com</a>).",
|
"commGuidePara012": "If you have an issue or concern about a particular Mod, please send an email to Lemoness (<%= hrefCommunityManagerEmail %>).",
|
||||||
"commGuidePara013": "In a community as big as Habitica, users come and go, and sometimes a moderator needs to lay down their noble mantle and relax. The following are Moderators Emeritus. They no longer act with the power of a Moderator, but we would still like to honor their work!",
|
"commGuidePara013": "In a community as big as Habitica, users come and go, and sometimes a moderator needs to lay down their noble mantle and relax. The following are Moderators Emeritus. They no longer act with the power of a Moderator, but we would still like to honor their work!",
|
||||||
"commGuidePara014": "Moderators Emeritus:",
|
"commGuidePara014": "Moderators Emeritus:",
|
||||||
"commGuideHeadingPublicSpaces": "Public Spaces In Habitica",
|
"commGuideHeadingPublicSpaces": "Public Spaces In Habitica",
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
"commGuideList02E": "<strong>Avoid extended discussions of divisive topics outside of the Back Corner.</strong> If you feel that someone has said something rude or hurtful, do not engage them. A single, polite comment, such as \"That joke makes me feel uncomfortable,\" is fine, but being harsh or unkind in response to harsh or unkind comments heightens tensions and makes Habitica a more negative space. Kindness and politeness helps others understand where you are coming from.",
|
"commGuideList02E": "<strong>Avoid extended discussions of divisive topics outside of the Back Corner.</strong> If you feel that someone has said something rude or hurtful, do not engage them. A single, polite comment, such as \"That joke makes me feel uncomfortable,\" is fine, but being harsh or unkind in response to harsh or unkind comments heightens tensions and makes Habitica a more negative space. Kindness and politeness helps others understand where you are coming from.",
|
||||||
"commGuideList02F": "<strong>Comply immediately with any Mod request</strong> to cease a discussion or move it to the Back Corner. Last words, parting shots and conclusive zingers should all be delivered (courteously) at your \"table\" in the Back Corner, if allowed.",
|
"commGuideList02F": "<strong>Comply immediately with any Mod request</strong> to cease a discussion or move it to the Back Corner. Last words, parting shots and conclusive zingers should all be delivered (courteously) at your \"table\" in the Back Corner, if allowed.",
|
||||||
"commGuideList02G": "<strong>Take time to reflect instead of responding in anger</strong> if someone tells you that something you said or did made them uncomfortable. There is great strength in being able to sincerely apologize to someone. If you feel that the way they responded to you was inappropriate, contact a mod rather than calling them out on it publicly.",
|
"commGuideList02G": "<strong>Take time to reflect instead of responding in anger</strong> if someone tells you that something you said or did made them uncomfortable. There is great strength in being able to sincerely apologize to someone. If you feel that the way they responded to you was inappropriate, contact a mod rather than calling them out on it publicly.",
|
||||||
"commGuideList02H": "<strong>Divisive/contentious conversations should be reported to mods.</strong> If you feel that a conversation is getting heated, overly emotional, or hurtful, cease to engage. Instead, email <a href=\"mailto:leslie@habitica.com\">leslie@habitica.com</a> to let us know about it. It's our job to keep you safe.",
|
"commGuideList02H": "<strong>Divisive/contentious conversations should be reported to mods.</strong> If you feel that a conversation is getting heated, overly emotional, or hurtful, cease to engage. Instead, email <%= hrefCommunityManagerEmail %> to let us know about it. It's our job to keep you safe.",
|
||||||
"commGuideList02I": "<strong>Do not spam.</strong> Spamming may include, but is not limited to: posting the same comment or query in multiple places, posting links without explanation or context, posting nonsensical messages, or posting many messages in a row. Asking for gems or a subscription in any of the chat spaces or via Private Message is also considered spamming.",
|
"commGuideList02I": "<strong>Do not spam.</strong> Spamming may include, but is not limited to: posting the same comment or query in multiple places, posting links without explanation or context, posting nonsensical messages, or posting many messages in a row. Asking for gems or a subscription in any of the chat spaces or via Private Message is also considered spamming.",
|
||||||
|
|
||||||
"commGuidePara019": "<strong>In private spaces,</strong> users have more freedom to discuss whatever topics they would like, but they still may not violate the Terms and Conditions, including posting any discriminatory, violent, or threatening content. Note that, because Challenge names appear in the winner's public profile, ALL Challenge names must obey the public space guidelines, even if they appear in a private space.",
|
"commGuidePara019": "<strong>In private spaces,</strong> users have more freedom to discuss whatever topics they would like, but they still may not violate the Terms and Conditions, including posting any discriminatory, violent, or threatening content. Note that, because Challenge names appear in the winner's public profile, ALL Challenge names must obey the public space guidelines, even if they appear in a private space.",
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
"commGuideHeadingPublicGuilds": "Public Guilds",
|
"commGuideHeadingPublicGuilds": "Public Guilds",
|
||||||
"commGuidePara029": "<strong>Public guilds are much like the Tavern, except that instead of being centered around general conversation, they have a focused theme.</strong> Public guild chat should focus on this theme. For example, members of the Wordsmiths guild might be cross if they found the conversation suddenly focusing on gardening instead of writing, and a Dragon-Fanciers guild might not have any interest in deciphering ancient runes. Some guilds are more lax about this than others, but in general, <strong>try to stay on topic!</strong>",
|
"commGuidePara029": "<strong>Public guilds are much like the Tavern, except that instead of being centered around general conversation, they have a focused theme.</strong> Public guild chat should focus on this theme. For example, members of the Wordsmiths guild might be cross if they found the conversation suddenly focusing on gardening instead of writing, and a Dragon-Fanciers guild might not have any interest in deciphering ancient runes. Some guilds are more lax about this than others, but in general, <strong>try to stay on topic!</strong>",
|
||||||
"commGuidePara031": "<strong>Some public guilds will contain sensitive topics such as depression, religion, politics, etc.</strong> This is fine as long as the conversations therein do not violate any of the Terms and Conditions or Public Space Rules, and as long as they stay on topic.",
|
"commGuidePara031": "<strong>Some public guilds will contain sensitive topics such as depression, religion, politics, etc.</strong> This is fine as long as the conversations therein do not violate any of the Terms and Conditions or Public Space Rules, and as long as they stay on topic.",
|
||||||
"commGuidePara033": "<strong>Public Guilds may NOT contain 18+ content. If they plan to regularly discuss sensitive content, they should say so in the Guild title.</strong> This is to keep Habitica safe and comfortable for everyone. If the guild in question has different kinds of sensitive issues, it is respectful to your fellow Habiticans to place your comment behind a warning (ex. \"Warning: references self-harm\"). Additionally, the sensitive material should be topical -- bringing up self-harm in a guild focused on fighting depression may make sense, but may be less appropriate in a music guild. If you see someone who is repeatedly violating this guideline, even after several requests, please email <a href=\"mailto:leslie@habitica.com\">leslie@habitica.com</a> with screenshots.",
|
"commGuidePara033": "<strong>Public Guilds may NOT contain 18+ content. If they plan to regularly discuss sensitive content, they should say so in the Guild title.</strong> This is to keep Habitica safe and comfortable for everyone. If the guild in question has different kinds of sensitive issues, it is respectful to your fellow Habiticans to place your comment behind a warning (ex. \"Warning: references self-harm\"). Additionally, the sensitive material should be topical -- bringing up self-harm in a guild focused on fighting depression may make sense, but may be less appropriate in a music guild. If you see someone who is repeatedly violating this guideline, even after several requests, please email <%= hrefCommunityManagerEmail %> with screenshots.",
|
||||||
"commGuidePara035": "<strong>No Guilds, Public or Private, should be created for the purpose of attacking any group or individual. Creating such a Guild is grounds for an instant ban.</strong> Fight bad habits, not your fellow adventurers!",
|
"commGuidePara035": "<strong>No Guilds, Public or Private, should be created for the purpose of attacking any group or individual. Creating such a Guild is grounds for an instant ban.</strong> Fight bad habits, not your fellow adventurers!",
|
||||||
"commGuidePara037": "All Tavern Challenges and Public Guild Challenges must comply with these rules as well.",
|
"commGuidePara037": "All Tavern Challenges and Public Guild Challenges must comply with these rules as well.",
|
||||||
"commGuideHeadingBackCorner": "The Back Corner",
|
"commGuideHeadingBackCorner": "The Back Corner",
|
||||||
@@ -108,7 +108,7 @@
|
|||||||
"commGuideHeadingModerateInfractions": "Moderate Infractions",
|
"commGuideHeadingModerateInfractions": "Moderate Infractions",
|
||||||
"commGuidePara054": "Moderate infractions do not make our community unsafe, but they do make it unpleasant. These infractions will have moderate consequences. When in conjunction with multiple infractions, the consequences may grow more severe.",
|
"commGuidePara054": "Moderate infractions do not make our community unsafe, but they do make it unpleasant. These infractions will have moderate consequences. When in conjunction with multiple infractions, the consequences may grow more severe.",
|
||||||
"commGuidePara055": "The following are some examples of Moderate Infractions. This is not a comprehensive list.",
|
"commGuidePara055": "The following are some examples of Moderate Infractions. This is not a comprehensive list.",
|
||||||
"commGuideList06A": "Ignoring or Disrespecting a Mod. This includes publicly complaining about moderators or other users/publicly glorifying or defending banned users. If you are concerned about one of the rules or Mods, please contact Lemoness via email (<a href=\"mailto:leslie@habitica.com\">leslie@habitica.com</a>).",
|
"commGuideList06A": "Ignoring or Disrespecting a Mod. This includes publicly complaining about moderators or other users/publicly glorifying or defending banned users. If you are concerned about one of the rules or Mods, please contact Lemoness via email (<%= hrefCommunityManagerEmail %>).",
|
||||||
"commGuideList06B": "Backseat Modding. To quickly clarify a relevant point: A friendly mention of the rules is fine. Backseat modding consists of telling, demanding, and/or strongly implying that someone must take an action that you describe to correct a mistake. You can alert someone to the fact that they have committed a transgression, but please do not demand an action-for example, saying, \"Just so you know, profanity is discouraged in the Tavern, so you may want to delete that,\" would be better than saying, \"I'm going to have to ask you to delete that post.\"",
|
"commGuideList06B": "Backseat Modding. To quickly clarify a relevant point: A friendly mention of the rules is fine. Backseat modding consists of telling, demanding, and/or strongly implying that someone must take an action that you describe to correct a mistake. You can alert someone to the fact that they have committed a transgression, but please do not demand an action-for example, saying, \"Just so you know, profanity is discouraged in the Tavern, so you may want to delete that,\" would be better than saying, \"I'm going to have to ask you to delete that post.\"",
|
||||||
"commGuideList06C": "Repeated Violation of Public Space Guidelines",
|
"commGuideList06C": "Repeated Violation of Public Space Guidelines",
|
||||||
"commGuideList06D": "Repeated Minor Infractions",
|
"commGuideList06D": "Repeated Minor Infractions",
|
||||||
@@ -161,7 +161,7 @@
|
|||||||
"commGuideList13C": "<strong>Tiers don't \"start over\" in each field.</strong> When scaling the difficulty, we look at all your contributions, so that people who do a little bit of art, then fix a small bug, then dabble a bit in the wiki, do not proceed faster than people who are working hard at a single task. This helps keep things fair!",
|
"commGuideList13C": "<strong>Tiers don't \"start over\" in each field.</strong> When scaling the difficulty, we look at all your contributions, so that people who do a little bit of art, then fix a small bug, then dabble a bit in the wiki, do not proceed faster than people who are working hard at a single task. This helps keep things fair!",
|
||||||
"commGuideList13D": "<strong>Users on probation cannot be promoted to the next tier.</strong> Mods have the right to freeze user advancement due to infractions. If this happens, the user will always be informed of the decision, and how to correct it. Tiers may also be removed as a result of infractions or probation.",
|
"commGuideList13D": "<strong>Users on probation cannot be promoted to the next tier.</strong> Mods have the right to freeze user advancement due to infractions. If this happens, the user will always be informed of the decision, and how to correct it. Tiers may also be removed as a result of infractions or probation.",
|
||||||
"commGuideHeadingFinal": "The Final Section",
|
"commGuideHeadingFinal": "The Final Section",
|
||||||
"commGuidePara067": "So there you have it, brave Habitican -- the Community Guidelines! Wipe that sweat off of your brow and give yourself some XP for reading it all. If you have any questions or concerns about these Community Guidelines, please email Lemoness (<a href=\"mailto:leslie@habitica.com\">leslie@habitica.com</a>) and she will be happy to help clarify things.",
|
"commGuidePara067": "So there you have it, brave Habitican -- the Community Guidelines! Wipe that sweat off of your brow and give yourself some XP for reading it all. If you have any questions or concerns about these Community Guidelines, please email Lemoness (<%= hrefCommunityManagerEmail %>) and she will be happy to help clarify things.",
|
||||||
"commGuidePara068": "Now go forth, brave adventurer, and slay some Dailies!",
|
"commGuidePara068": "Now go forth, brave adventurer, and slay some Dailies!",
|
||||||
"commGuideHeadingLinks": "Useful Links",
|
"commGuideHeadingLinks": "Useful Links",
|
||||||
"commGuidePara069": "The following talented artists contributed to these illustrations:",
|
"commGuidePara069": "The following talented artists contributed to these illustrations:",
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
"surveysMultiple": "Helped Habitica grow on <%= count %> occasions, either by filling out a survey or helping with a major testing effort. Thank you!",
|
"surveysMultiple": "Helped Habitica grow on <%= count %> occasions, either by filling out a survey or helping with a major testing effort. Thank you!",
|
||||||
"currentSurvey": "Current Survey",
|
"currentSurvey": "Current Survey",
|
||||||
"surveyWhen": "The badge will be awarded to all participants when surveys have been processed, in late March.",
|
"surveyWhen": "The badge will be awarded to all participants when surveys have been processed, in late March.",
|
||||||
"blurbInbox": "This is where your private messages are stored! You can send someone a message by clicking on the envelope icon next to their name in Tavern, Party, or Guild Chat. If you've received an inappropriate PM, you should email a screenshot of it to Lemoness (<a href=\"mailto:leslie@habitica.com\">leslie@habitica.com</a>)",
|
"blurbInbox": "This is where your private messages are stored! You can send someone a message by clicking on the envelope icon next to their name in Tavern, Party, or Guild Chat. If you've received an inappropriate PM, you should email a screenshot of it to Lemoness (<%= hrefCommunityManagerEmail %>)",
|
||||||
"blurbGuildsPage": "Guilds are common-interest chat groups created by the players, for players. Browse through the list and join the Guilds that interest you!",
|
"blurbGuildsPage": "Guilds are common-interest chat groups created by the players, for players. Browse through the list and join the Guilds that interest you!",
|
||||||
"blurbChallenges": "Challenges are created by your fellow players. Joining a Challenge will add its tasks to your task dashboard, and winning a Challenge will give you an achievement and often a gem prize!",
|
"blurbChallenges": "Challenges are created by your fellow players. Joining a Challenge will add its tasks to your task dashboard, and winning a Challenge will give you an achievement and often a gem prize!",
|
||||||
"blurbHallPatrons": "This is the Hall of Patrons, where we honor the noble adventurers who backed Habitica's original Kickstarter. We thank them for helping us bring Habitica to life!",
|
"blurbHallPatrons": "This is the Hall of Patrons, where we honor the noble adventurers who backed Habitica's original Kickstarter. We thank them for helping us bring Habitica to life!",
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
"faqQuestion11": "How do I report a bug or request a feature?",
|
"faqQuestion11": "How do I report a bug or request a feature?",
|
||||||
"iosFaqAnswer11": "You can report a bug, request a feature, or send feedback under Menu > Report a Bug and Menu > Send Feedback! We'll do everything we can to assist you.",
|
"iosFaqAnswer11": "You can report a bug, request a feature, or send feedback under Menu > Report a Bug and Menu > Send Feedback! We'll do everything we can to assist you.",
|
||||||
"androidFaqAnswer11": "You can report a bug, request a feature, or send feedback under About > Report a Bug and About > Send us Feedback! We'll do everything we can to assist you.",
|
"androidFaqAnswer11": "You can report a bug, request a feature, or send feedback under About > Report a Bug and About > Send us Feedback! We'll do everything we can to assist you.",
|
||||||
"webFaqAnswer11": "To report a bug, go to [Help > Report a Bug](https://habitica.com/#/options/groups/guilds/a29da26b-37de-4a71-b0c6-48e72a900dac) and read the points above the chat box. If you're unable to log in to Habitica, send your login details (not your password!) to [admin@habitica.com](mailto:admin@habitica.com). Don't worry, we'll get you fixed up soon!\n<br><br>\n Feature requests are collected on Trello. Go to [Help > Request a Feature](https://trello.com/c/odmhIqyW/440-read-first-table-of-contents) and follow the instructions. Ta-da!",
|
"webFaqAnswer11": "To report a bug, go to [Help > Report a Bug](https://habitica.com/#/options/groups/guilds/a29da26b-37de-4a71-b0c6-48e72a900dac) and read the points above the chat box. If you're unable to log in to Habitica, send your login details (not your password!) to [<%= techAssistanceEmail %>](<%= wikiTechAssistanceEmail %>). Don't worry, we'll get you fixed up soon!\n<br><br>\n Feature requests are collected on Trello. Go to [Help > Request a Feature](https://trello.com/c/odmhIqyW/440-read-first-table-of-contents) and follow the instructions. Ta-da!",
|
||||||
|
|
||||||
"faqQuestion12": "How do I battle a World Boss?",
|
"faqQuestion12": "How do I battle a World Boss?",
|
||||||
"iosFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and skills will damage the Boss as usual.\n\n You can also be in a normal Quest at the same time. Your tasks and skills will count towards both the World Boss and the Boss/Collection Quest in your party.\n\n A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change.\n\n You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.",
|
"iosFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and skills will damage the Boss as usual.\n\n You can also be in a normal Quest at the same time. Your tasks and skills will count towards both the World Boss and the Boss/Collection Quest in your party.\n\n A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change.\n\n You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.",
|
||||||
|
|||||||
@@ -134,7 +134,7 @@
|
|||||||
"playButtonFull": "Enter Habitica",
|
"playButtonFull": "Enter Habitica",
|
||||||
"presskit": "Press Kit",
|
"presskit": "Press Kit",
|
||||||
"presskitDownload": "Download all images:",
|
"presskitDownload": "Download all images:",
|
||||||
"presskitText": "Thanks for your interest in Habitica! The following images can be used for articles or videos about Habitica. For more information, please contact Siena Leslie at leslie@habitica.com.",
|
"presskitText": "Thanks for your interest in Habitica! The following images can be used for articles or videos about Habitica. For more information, please contact Siena Leslie at <%= pressEnquiryEmail %>.",
|
||||||
"pkVideo": "Video",
|
"pkVideo": "Video",
|
||||||
"pkPromo": "Promos",
|
"pkPromo": "Promos",
|
||||||
"pkLogo": "Logos",
|
"pkLogo": "Logos",
|
||||||
@@ -259,7 +259,7 @@
|
|||||||
"passwordResetEmailHtml": "If you requested a password reset for <strong><%= username %></strong> on Habitica, <a href=\"<%= passwordResetLink %>\">click here</a> to set a new one. The link will expire after 24 hours.<br/><br>If you haven't requested a password reset, please ignore this email.",
|
"passwordResetEmailHtml": "If you requested a password reset for <strong><%= username %></strong> on Habitica, <a href=\"<%= passwordResetLink %>\">click here</a> to set a new one. The link will expire after 24 hours.<br/><br>If you haven't requested a password reset, please ignore this email.",
|
||||||
"invalidLoginCredentialsLong": "Uh-oh - your username or password is incorrect.\n- Make sure your username or email is typed correctly.\n- You may have signed up with Facebook, not email. Double-check by trying Facebook login.\n- If you forgot your password, click \"Forgot Password\".",
|
"invalidLoginCredentialsLong": "Uh-oh - your username or password is incorrect.\n- Make sure your username or email is typed correctly.\n- You may have signed up with Facebook, not email. Double-check by trying Facebook login.\n- If you forgot your password, click \"Forgot Password\".",
|
||||||
"invalidCredentials": "There is no account that uses those credentials.",
|
"invalidCredentials": "There is no account that uses those credentials.",
|
||||||
"accountSuspended": "Account has been suspended, please contact leslie@habitica.com with your User ID \"<%= userId %>\" for assistance.",
|
"accountSuspended": "Account has been suspended, please contact <%= communityManagerEmail %> with your User ID \"<%= userId %>\" for assistance.",
|
||||||
"unsupportedNetwork": "This network is not currently supported.",
|
"unsupportedNetwork": "This network is not currently supported.",
|
||||||
"cantDetachSocial": "Account lacks another authentication method; can't detach this authentication method.",
|
"cantDetachSocial": "Account lacks another authentication method; can't detach this authentication method.",
|
||||||
"onlySocialAttachLocal": "Local authentication can be added to only a social account.",
|
"onlySocialAttachLocal": "Local authentication can be added to only a social account.",
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
"maintenanceInfoTechDetails": "Want more details on the technical side of the process? Visit <a href='http://devs.habitica.com/' target='_blank'>The Forge, our dev blog</a>.",
|
"maintenanceInfoTechDetails": "Want more details on the technical side of the process? Visit <a href='http://devs.habitica.com/' target='_blank'>The Forge, our dev blog</a>.",
|
||||||
"maintenanceInfoMore": "More Information",
|
"maintenanceInfoMore": "More Information",
|
||||||
"maintenanceInfoAccountChanges": "What changes will I see to my account after the rewrite is complete?",
|
"maintenanceInfoAccountChanges": "What changes will I see to my account after the rewrite is complete?",
|
||||||
"maintenanceInfoAccountChangesText": "At first, there won’t be any notable changes aside from performance improvements for features such as Challenges. If you notice any changes that shouldn’t be there, email us at <a href='mailto:admin@habitica.com'>admin@habitica.com</a> and we will investigate them for you!",
|
"maintenanceInfoAccountChangesText": "At first, there won’t be any notable changes aside from performance improvements for features such as Challenges. If you notice any changes that shouldn’t be there, email us at <%= hrefTechAssistanceEmail %> and we will investigate them for you!",
|
||||||
"maintenanceInfoAddFeatures": "What kind of features will this allow Habitica to add?",
|
"maintenanceInfoAddFeatures": "What kind of features will this allow Habitica to add?",
|
||||||
"maintenanceInfoAddFeaturesText": "Completing this rewrite will allow us to start building out improved chat and Guilds, plans for organizations and families, and additional productivity features like Monthlies and the ability to record yesterday’s activity! Those are all involved features on their own, so it will take time to build them, but until we were finished with this rewrite, there was no way we could start them.",
|
"maintenanceInfoAddFeaturesText": "Completing this rewrite will allow us to start building out improved chat and Guilds, plans for organizations and families, and additional productivity features like Monthlies and the ability to record yesterday’s activity! Those are all involved features on their own, so it will take time to build them, but until we were finished with this rewrite, there was no way we could start them.",
|
||||||
"maintenanceInfoHowLong": "How long will the maintenance take?",
|
"maintenanceInfoHowLong": "How long will the maintenance take?",
|
||||||
|
|||||||
@@ -68,7 +68,7 @@
|
|||||||
"APIv3": "API v3",
|
"APIv3": "API v3",
|
||||||
"APIText": "Copy these for use in third party applications. However, think of your API Token like a password, and do not share it publicly. You may occasionally be asked for your User ID, but never post your API Token where others can see it, including on Github.",
|
"APIText": "Copy these for use in third party applications. However, think of your API Token like a password, and do not share it publicly. You may occasionally be asked for your User ID, but never post your API Token where others can see it, including on Github.",
|
||||||
"APIToken": "API Token (this is a password - see warning above!)",
|
"APIToken": "API Token (this is a password - see warning above!)",
|
||||||
"APITokenWarning": "If you need a new API Token (e.g., if you accidentally shared it), email <a href='mailto:admin@habitica.com'>admin@habitica.com</a> with your User ID and current Token. Once it is reset you will need to re-authorize everything by logging out of the website and mobile app and by providing the new Token to any other Habitica tools that you use.",
|
"APITokenWarning": "If you need a new API Token (e.g., if you accidentally shared it), email <%= hrefTechAssistanceEmail %> with your User ID and current Token. Once it is reset you will need to re-authorize everything by logging out of the website and mobile app and by providing the new Token to any other Habitica tools that you use.",
|
||||||
"thirdPartyApps": "Third Party Apps",
|
"thirdPartyApps": "Third Party Apps",
|
||||||
"dataToolDesc": "A webpage that shows you certain information from your Habitica account, such as statistics about your tasks, equipment, and skills.",
|
"dataToolDesc": "A webpage that shows you certain information from your Habitica account, such as statistics about your tasks, equipment, and skills.",
|
||||||
"beeminder": "Beeminder",
|
"beeminder": "Beeminder",
|
||||||
|
|||||||
@@ -14,7 +14,11 @@ for (let i = 0; i <= NUMBER_OF_QUESTIONS; i++) {
|
|||||||
let question = {
|
let question = {
|
||||||
question: t(`faqQuestion${i}`),
|
question: t(`faqQuestion${i}`),
|
||||||
ios: t(`iosFaqAnswer${i}`),
|
ios: t(`iosFaqAnswer${i}`),
|
||||||
web: t(`webFaqAnswer${i}`),
|
web: t(`webFaqAnswer${i}`, {
|
||||||
|
// TODO: Need to pull these values from nconf
|
||||||
|
techAssistanceEmail: 'admin@habitica.com',
|
||||||
|
wikiTechAssistanceEmail: 'mailto:admin@habitica.com',
|
||||||
|
}),
|
||||||
};
|
};
|
||||||
|
|
||||||
faq.questions.push(question);
|
faq.questions.push(question);
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ import pusher from '../../libs/pusher';
|
|||||||
import common from '../../../common';
|
import common from '../../../common';
|
||||||
|
|
||||||
const BASE_URL = nconf.get('BASE_URL');
|
const BASE_URL = nconf.get('BASE_URL');
|
||||||
|
const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS:TECH_ASSISTANCE_EMAIL');
|
||||||
|
const COMMUNITY_MANAGER_EMAIL = nconf.get('EMAILS:COMMUNITY_MANAGER_EMAIL');
|
||||||
|
|
||||||
let api = {};
|
let api = {};
|
||||||
|
|
||||||
@@ -183,7 +185,7 @@ api.registerLocal = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function _loginRes (user, req, res) {
|
function _loginRes (user, req, res) {
|
||||||
if (user.auth.blocked) throw new NotAuthorized(res.t('accountSuspended', {userId: user._id}));
|
if (user.auth.blocked) throw new NotAuthorized(res.t('accountSuspended', {communityManagerEmail: COMMUNITY_MANAGER_EMAIL, userId: user._id}));
|
||||||
return res.respond(200, {id: user._id, apiToken: user.apiToken, newUser: user.newUser || false});
|
return res.respond(200, {id: user._id, apiToken: user.apiToken, newUser: user.newUser || false});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -610,7 +612,7 @@ api.updateEmail = {
|
|||||||
'auth.local.email': req.body.newEmail,
|
'auth.local.email': req.body.newEmail,
|
||||||
}).select({_id: 1}).lean().exec();
|
}).select({_id: 1}).lean().exec();
|
||||||
|
|
||||||
if (emailAlreadyInUse) throw new NotAuthorized(res.t('cannotFulfillReq'));
|
if (emailAlreadyInUse) throw new NotAuthorized(res.t('cannotFulfillReq', { techAssistanceEmail: TECH_ASSISTANCE_EMAIL }));
|
||||||
|
|
||||||
let password = req.body.password;
|
let password = req.body.password;
|
||||||
let isValidPassword = await passwordUtils.compare(user, password);
|
let isValidPassword = await passwordUtils.compare(user, password);
|
||||||
|
|||||||
@@ -4,6 +4,9 @@ import {
|
|||||||
import {
|
import {
|
||||||
model as User,
|
model as User,
|
||||||
} from '../models/user';
|
} from '../models/user';
|
||||||
|
import nconf from 'nconf';
|
||||||
|
|
||||||
|
const COMMUNITY_MANAGER_EMAIL = nconf.get('EMAILS:COMMUNITY_MANAGER_EMAIL');
|
||||||
|
|
||||||
// Strins won't be translated here because getUserLanguage has not run yet
|
// Strins won't be translated here because getUserLanguage has not run yet
|
||||||
|
|
||||||
@@ -26,7 +29,7 @@ export function authWithHeaders (optional = false) {
|
|||||||
.exec()
|
.exec()
|
||||||
.then((user) => {
|
.then((user) => {
|
||||||
if (!user) throw new NotAuthorized(res.t('invalidCredentials'));
|
if (!user) throw new NotAuthorized(res.t('invalidCredentials'));
|
||||||
if (user.auth.blocked) throw new NotAuthorized(res.t('accountSuspended', {userId: user._id}));
|
if (user.auth.blocked) throw new NotAuthorized(res.t('accountSuspended', {communityManagerEmail: COMMUNITY_MANAGER_EMAIL, userId: user._id}));
|
||||||
|
|
||||||
res.locals.user = user;
|
res.locals.user = user;
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,11 @@ let env = {
|
|||||||
SELLER_ID: nconf.get('AMAZON_PAYMENTS:SELLER_ID'),
|
SELLER_ID: nconf.get('AMAZON_PAYMENTS:SELLER_ID'),
|
||||||
CLIENT_ID: nconf.get('AMAZON_PAYMENTS:CLIENT_ID'),
|
CLIENT_ID: nconf.get('AMAZON_PAYMENTS:CLIENT_ID'),
|
||||||
},
|
},
|
||||||
|
EMAILS: {
|
||||||
|
COMMUNITY_MANAGER_EMAIL: nconf.get('EMAILS:COMMUNITY_MANAGER_EMAIL'),
|
||||||
|
TECH_ASSISTANCE_EMAIL: nconf.get('EMAILS:TECH_ASSISTANCE_EMAIL'),
|
||||||
|
PRESS_ENQUIRY_EMAIL: nconf.get('EMAILS:PRESS_ENQUIRY_EMAIL'),
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
'NODE_ENV BASE_URL GA_ID STRIPE_PUB_KEY FACEBOOK_KEY GOOGLE_CLIENT_ID AMPLITUDE_KEY PUSHER:KEY PUSHER:ENABLED'
|
'NODE_ENV BASE_URL GA_ID STRIPE_PUB_KEY FACEBOOK_KEY GOOGLE_CLIENT_ID AMPLITUDE_KEY PUSHER:KEY PUSHER:ENABLED'
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ include ./groups/create-group
|
|||||||
|
|
||||||
script(type='text/ng-template', id='partials/options.social.inbox.html')
|
script(type='text/ng-template', id='partials/options.social.inbox.html')
|
||||||
.options-blurbmenu
|
.options-blurbmenu
|
||||||
small.muted!=env.t('blurbInbox')
|
small.muted!=env.t('blurbInbox', { hrefCommunityManagerEmail : '<a href="mailto:' + env.EMAILS.COMMUNITY_MANAGER_EMAIL + '">' + env.EMAILS.COMMUNITY_MANAGER_EMAIL + '</a>' })
|
||||||
|
|
||||||
.container-fluid
|
.container-fluid
|
||||||
.row
|
.row
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ block content
|
|||||||
strong Megan
|
strong Megan
|
||||||
li
|
li
|
||||||
strong Daniel the Bard
|
strong Daniel the Bard
|
||||||
p!=env.t('commGuidePara012')
|
p!=env.t('commGuidePara012', { hrefCommunityManagerEmail : '<a href="mailto:' + env.EMAILS.COMMUNITY_MANAGER_EMAIL + '">' + env.EMAILS.COMMUNITY_MANAGER_EMAIL + '</a>' })
|
||||||
p=env.t('commGuidePara013')
|
p=env.t('commGuidePara013')
|
||||||
p=env.t('commGuidePara014')
|
p=env.t('commGuidePara014')
|
||||||
|
|
|
|
||||||
@@ -127,7 +127,7 @@ block content
|
|||||||
li!=env.t('commGuideList02E')
|
li!=env.t('commGuideList02E')
|
||||||
li!=env.t('commGuideList02F')
|
li!=env.t('commGuideList02F')
|
||||||
li!=env.t('commGuideList02G')
|
li!=env.t('commGuideList02G')
|
||||||
li!=env.t('commGuideList02H')
|
li!=env.t('commGuideList02H', { hrefCommunityManagerEmail : '<a href="mailto:' + env.EMAILS.COMMUNITY_MANAGER_EMAIL + '">' + env.EMAILS.COMMUNITY_MANAGER_EMAIL +'</a>' })
|
||||||
li!=env.t('commGuideList02I')
|
li!=env.t('commGuideList02I')
|
||||||
p!=env.t('commGuidePara019')
|
p!=env.t('commGuidePara019')
|
||||||
p=env.t('commGuidePara020')
|
p=env.t('commGuidePara020')
|
||||||
@@ -148,7 +148,7 @@ block content
|
|||||||
img.pull-right(src='/community-guidelines-images/publicGuilds.png', alt='')
|
img.pull-right(src='/community-guidelines-images/publicGuilds.png', alt='')
|
||||||
p!=env.t('commGuidePara029')
|
p!=env.t('commGuidePara029')
|
||||||
p!=env.t('commGuidePara031')
|
p!=env.t('commGuidePara031')
|
||||||
p!=env.t('commGuidePara033')
|
p!=env.t('commGuidePara033', { hrefCommunityManagerEmail : '<a href="mailto:' + env.EMAILS.COMMUNITY_MANAGER_EMAIL + '">' + env.EMAILS.COMMUNITY_MANAGER_EMAIL + '</a>' })
|
||||||
p!=env.t('commGuidePara035')
|
p!=env.t('commGuidePara035')
|
||||||
p
|
p
|
||||||
strong=env.t('commGuidePara037')
|
strong=env.t('commGuidePara037')
|
||||||
@@ -251,7 +251,7 @@ block content
|
|||||||
p=env.t('commGuidePara054')
|
p=env.t('commGuidePara054')
|
||||||
p=env.t('commGuidePara055')
|
p=env.t('commGuidePara055')
|
||||||
ul
|
ul
|
||||||
li!=env.t('commGuideList06A')
|
li!=env.t('commGuideList06A', { hrefCommunityManagerEmail : '<a href="mailto:' + env.EMAILS.COMMUNITY_MANAGER_EMAIL + '">' + env.EMAILS.COMMUNITY_MANAGER_EMAIL + '</a>' })
|
||||||
li=env.t('commGuideList06B')
|
li=env.t('commGuideList06B')
|
||||||
li=env.t('commGuideList06C')
|
li=env.t('commGuideList06C')
|
||||||
li=env.t('commGuideList06D')
|
li=env.t('commGuideList06D')
|
||||||
@@ -322,7 +322,7 @@ block content
|
|||||||
li!=env.t('commGuideList13D')
|
li!=env.t('commGuideList13D')
|
||||||
|
|
||||||
h2#final=env.t('commGuideHeadingFinal')
|
h2#final=env.t('commGuideHeadingFinal')
|
||||||
p!=env.t('commGuidePara067')
|
p!=env.t('commGuidePara067', { hrefCommunityManagerEmail : '<a href="mailto:' + env.EMAILS.COMMUNITY_MANAGER_EMAIL + '">' + env.EMAILS.COMMUNITY_MANAGER_EMAIL + '</a>' })
|
||||||
p=env.t('commGuidePara068')
|
p=env.t('commGuidePara068')
|
||||||
|
|
||||||
h2#links=env.t('commGuideHeadingLinks')
|
h2#links=env.t('commGuideHeadingLinks')
|
||||||
|
|||||||
@@ -19,10 +19,11 @@ block content
|
|||||||
| 5, 2016
|
| 5, 2016
|
||||||
|
|
||||||
- var headings = ['overview', 'set-up-tasks', 'sample-tasks', 'task-color', 'health', 'party-with-friends', 'pets-mounts', 'character-classes', 'blue-mana-bar', 'monsters-quests', 'gems', 'bugs-features', 'world-boss']
|
- var headings = ['overview', 'set-up-tasks', 'sample-tasks', 'task-color', 'health', 'party-with-friends', 'pets-mounts', 'character-classes', 'blue-mana-bar', 'monsters-quests', 'gems', 'bugs-features', 'world-boss']
|
||||||
|
- var replacements = { techAssistanceEmail: env.EMAILS.TECH_ASSISTANCE_EMAIL, wikiTechAssistanceEmail: `mailto:${env.EMAILS.TECH_ASSISTANCE_EMAIL}`,}
|
||||||
- for heading, index in headings
|
- for heading, index in headings
|
||||||
a.h2.accordion.collapsed(ng-href='#' + heading, data-toggle='collapse')=env.t('faqQuestion' + index)
|
a.h2.accordion.collapsed(ng-href='#' + heading, data-toggle='collapse')=env.t('faqQuestion' + index)
|
||||||
.clearfix.collapse(id=heading)
|
.clearfix.collapse(id=heading)
|
||||||
!=md.unsafeHTMLRender(env.t('webFaqAnswer' + index))
|
!=md.unsafeHTMLRender(env.t('webFaqAnswer' + index, replacements))
|
||||||
|
|
||||||
hr
|
hr
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ body
|
|||||||
p!=t('maintenanceInfoTechDetails')
|
p!=t('maintenanceInfoTechDetails')
|
||||||
h2=t('maintenanceInfoMore')
|
h2=t('maintenanceInfoMore')
|
||||||
h3=t('maintenanceInfoAccountChanges')
|
h3=t('maintenanceInfoAccountChanges')
|
||||||
p!=t('maintenanceInfoAccountChangesText')
|
p!=t('maintenanceInfoAccountChangesText', { hrefTechAssistanceEmail : '<a href="mailto:' + env.EMAILS.TECH_ASSISTANCE_EMAIL + '">' + env.EMAILS.TECH_ASSISTANCE_EMAIL + '</a>'})
|
||||||
h3=t('maintenanceInfoAddFeatures')
|
h3=t('maintenanceInfoAddFeatures')
|
||||||
p=t('maintenanceInfoAddFeaturesText')
|
p=t('maintenanceInfoAddFeaturesText')
|
||||||
h3=t('maintenanceInfoHowLong')
|
h3=t('maintenanceInfoHowLong')
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ block extraHead
|
|||||||
block content
|
block content
|
||||||
div.jumbotron
|
div.jumbotron
|
||||||
h1= env.t('presskit')
|
h1= env.t('presskit')
|
||||||
p= env.t('presskitText')
|
p= env.t('presskitText', { pressEnquiryEmail : env.EMAILS.PRESS_ENQUIRY_EMAIL })
|
||||||
p
|
p
|
||||||
a.btn.btn-lg.btn-success(href='/presskit/presskit.zip') presskit.zip
|
a.btn.btn-lg.btn-success(href='/presskit/presskit.zip') presskit.zip
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user