Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

WelcomePage.web.js 4.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. import React, { Component } from 'react';
  2. /**
  3. * The web container rendering the welcome page.
  4. */
  5. export default class WelcomePage extends Component {
  6. /**
  7. * Implements React's {@link Component#render()}.
  8. *
  9. * @inheritdoc
  10. * @returns {ReactElement|null}
  11. */
  12. render() {
  13. return (
  14. <div id = 'welcome_page'>
  15. {
  16. this._renderHeader()
  17. }
  18. {
  19. this._renderMain()
  20. }
  21. </div>
  22. );
  23. }
  24. /**
  25. * Renders a feature with a specific index.
  26. *
  27. * @param {number} index - The index of the feature to render.
  28. * @private
  29. * @returns {ReactElement}
  30. */
  31. _renderFeature(index) {
  32. return (
  33. <div className = 'feature_holder'>
  34. <div
  35. className = 'feature_icon'
  36. data-i18n = { `welcomepage.feature${index}.title` } />
  37. <div
  38. className = 'feature_description'
  39. data-i18n = { `welcomepage.feature${index}.content` }
  40. data-i18n-options = { JSON.stringify({
  41. postProcess: 'resolveAppName'
  42. }) } />
  43. </div>
  44. );
  45. }
  46. /**
  47. * Renders a row of features.
  48. *
  49. * @param {number} beginIndex - The inclusive feature index to begin the row
  50. * with.
  51. * @param {number} endIndex - The exclusive feature index to end the row
  52. * with.
  53. * @private
  54. * @returns {ReactElement}
  55. */
  56. _renderFeatureRow(beginIndex, endIndex) {
  57. const features = [];
  58. for (let index = beginIndex; index < endIndex; ++index) {
  59. features.push(this._renderFeature(index));
  60. }
  61. return (
  62. <div className = 'feature_row'>
  63. {
  64. features
  65. }
  66. </div>
  67. );
  68. }
  69. /**
  70. * Renders the header part of this WelcomePage.
  71. *
  72. * @private
  73. * @returns {ReactElement|null}
  74. */
  75. _renderHeader() {
  76. return (
  77. <div id = 'welcome_page_header'>
  78. <a target = '_new'>
  79. <div className = 'watermark leftwatermark' />
  80. </a>
  81. <a target = '_new'>
  82. <div className = 'watermark rightwatermark' />
  83. </a>
  84. <a
  85. className = 'poweredby'
  86. href = 'http://jitsi.org'
  87. target = '_new'>
  88. <span data-i18n = 'poweredby' /> jitsi.org
  89. </a>
  90. <div id = 'enter_room_container'>
  91. <div id = 'enter_room_form'>
  92. <div id = 'domain_name' />
  93. <div id = 'enter_room'>
  94. <input
  95. autoFocus = { true }
  96. id = 'enter_room_field'
  97. type = 'text' />
  98. <div
  99. className = 'icon-reload'
  100. id = 'reload_roomname' />
  101. <input
  102. data-i18n = '[value]welcomepage.go'
  103. id = 'enter_room_button'
  104. type = 'button'
  105. value = 'GO' />
  106. </div>
  107. </div>
  108. </div>
  109. <div id = 'brand_header' />
  110. <input
  111. id = 'disable_welcome'
  112. name = 'checkbox'
  113. type = 'checkbox' />
  114. <label
  115. className = 'disable_welcome_position'
  116. data-i18n = 'welcomepage.disable'
  117. htmlFor = 'disable_welcome' />
  118. <div id = 'header_text' />
  119. </div>
  120. );
  121. }
  122. /**
  123. * Renders the main part of this WelcomePage.
  124. *
  125. * @private
  126. * @returns {ReactElement|null}
  127. */
  128. _renderMain() {
  129. return (
  130. <div id = 'welcome_page_main'>
  131. <div id = 'features'>
  132. {
  133. this._renderFeatureRow(1, 5)
  134. }
  135. {
  136. this._renderFeatureRow(5, 9)
  137. }
  138. </div>
  139. </div>
  140. );
  141. }
  142. }