banned-page.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import moment from "moment"
  2. import React from "react"
  3. export default class extends React.Component {
  4. getReasonMessage() {
  5. if (this.props.message.html) {
  6. return (
  7. <div
  8. className="lead"
  9. dangerouslySetInnerHTML={{
  10. __html: this.props.message.html,
  11. }}
  12. />
  13. )
  14. } else {
  15. return <p className="lead">{this.props.message.plain}</p>
  16. }
  17. }
  18. getExpirationMessage() {
  19. if (this.props.expires) {
  20. if (this.props.expires.isAfter(moment())) {
  21. let title = interpolate(
  22. gettext("This ban expires on %(expires_on)s."),
  23. {
  24. expires_on: this.props.expires.format("LL, LT"),
  25. },
  26. true
  27. )
  28. let message = interpolate(
  29. gettext("This ban expires %(expires_on)s."),
  30. {
  31. expires_on: this.props.expires.fromNow(),
  32. },
  33. true
  34. )
  35. return <abbr title={title}>{message}</abbr>
  36. } else {
  37. return gettext("This ban has expired.")
  38. }
  39. } else {
  40. return gettext("This ban is permanent.")
  41. }
  42. }
  43. render() {
  44. return (
  45. <div className="page page-error page-error-banned">
  46. <div className="container">
  47. <div className="message-panel">
  48. <div className="message-icon">
  49. <span className="material-icon">highlight_off</span>
  50. </div>
  51. <div className="message-body">
  52. {this.getReasonMessage()}
  53. <p className="message-footnote">{this.getExpirationMessage()}</p>
  54. </div>
  55. </div>
  56. </div>
  57. </div>
  58. )
  59. }
  60. }