Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

SettingsMenu.js 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /*
  2. * Copyright @ 2015 Atlassian Pty Ltd
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. var Avatar = require("../../avatar/Avatar");
  17. var Settings = require("./../../../settings/Settings");
  18. var UIUtil = require("../../util/UIUtil");
  19. var languages = require("../../../../service/translation/languages");
  20. function generateLanguagesSelectBox()
  21. {
  22. var currentLang = APP.translation.getCurrentLanguage();
  23. var html = "<select id=\"languages_selectbox\">";
  24. var langArray = languages.getLanguages();
  25. for(var i = 0; i < langArray.length; i++)
  26. {
  27. var lang = langArray[i];
  28. html += "<option ";
  29. if(lang === currentLang)
  30. html += "selected ";
  31. html += "value=\"" + lang + "\" data-i18n='languages:" + lang + "'>";
  32. html += "</option>";
  33. }
  34. return html + "</select>";
  35. }
  36. var SettingsMenu = {
  37. init: function () {
  38. $("#startMutedOptions").before(generateLanguagesSelectBox());
  39. APP.translation.translateElement($("#languages_selectbox"));
  40. $('#settingsmenu>input').keyup(function(event){
  41. if(event.keyCode === 13) {//enter
  42. SettingsMenu.update();
  43. }
  44. });
  45. if(APP.xmpp.isModerator())
  46. {
  47. $("#startMutedOptions").css("display", "block");
  48. }
  49. else
  50. {
  51. $("#startMutedOptions").css("display", "none");
  52. }
  53. $("#updateSettings").click(function () {
  54. SettingsMenu.update();
  55. });
  56. },
  57. onRoleChanged: function () {
  58. if(APP.xmpp.isModerator())
  59. {
  60. $("#startMutedOptions").css("display", "block");
  61. }
  62. else
  63. {
  64. $("#startMutedOptions").css("display", "none");
  65. }
  66. },
  67. setStartMuted: function (audio, video) {
  68. $("#startAudioMuted").attr("checked", audio);
  69. $("#startVideoMuted").attr("checked", video);
  70. },
  71. update: function() {
  72. var newDisplayName = UIUtil.escapeHtml($('#setDisplayName').get(0).value);
  73. var newEmail = UIUtil.escapeHtml($('#setEmail').get(0).value);
  74. if(newDisplayName) {
  75. var displayName = Settings.setDisplayName(newDisplayName);
  76. APP.xmpp.addToPresence("displayName", displayName, true);
  77. }
  78. var language = $("#languages_selectbox").val();
  79. APP.translation.setLanguage(language);
  80. Settings.setLanguage(language);
  81. APP.xmpp.addToPresence("email", newEmail);
  82. var email = Settings.setEmail(newEmail);
  83. var startAudioMuted = ($("#startAudioMuted").is(":checked"));
  84. var startVideoMuted = ($("#startVideoMuted").is(":checked"));
  85. APP.xmpp.addToPresence("startMuted",
  86. [startAudioMuted, startVideoMuted]);
  87. Avatar.setUserAvatar(APP.xmpp.myJid(), email);
  88. },
  89. isVisible: function() {
  90. return $('#settingsmenu').is(':visible');
  91. },
  92. setDisplayName: function(newDisplayName) {
  93. var displayName = Settings.setDisplayName(newDisplayName);
  94. $('#setDisplayName').get(0).value = displayName;
  95. },
  96. onDisplayNameChange: function(peerJid, newDisplayName) {
  97. if(peerJid === 'localVideoContainer' ||
  98. peerJid === APP.xmpp.myJid()) {
  99. this.setDisplayName(newDisplayName);
  100. }
  101. }
  102. };
  103. module.exports = SettingsMenu;