You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

SettingsMenu.js 3.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. var Avatar = require("../../avatar/Avatar");
  2. var Settings = require("./../../../settings/Settings");
  3. var UIUtil = require("../../util/UIUtil");
  4. var languages = require("../../../../service/translation/languages");
  5. function generateLanguagesSelectBox()
  6. {
  7. var currentLang = APP.translation.getCurrentLanguage();
  8. var html = "<select id=\"languages_selectbox\">";
  9. var langArray = languages.getLanguages();
  10. for(var i = 0; i < langArray.length; i++)
  11. {
  12. var lang = langArray[i];
  13. html += "<option ";
  14. if(lang === currentLang)
  15. html += "selected ";
  16. html += "value=\"" + lang + "\" data-i18n='languages:" + lang + "'>";
  17. html += "</option>";
  18. }
  19. return html + "</select>";
  20. }
  21. var SettingsMenu = {
  22. init: function () {
  23. $("#startMutedOptions").before(generateLanguagesSelectBox());
  24. APP.translation.translateElement($("#languages_selectbox"));
  25. $('#settingsmenu>input').keyup(function(event){
  26. if(event.keyCode === 13) {//enter
  27. SettingsMenu.update();
  28. }
  29. });
  30. if(APP.xmpp.isModerator())
  31. {
  32. $("#startMutedOptions").css("display", "block");
  33. }
  34. else
  35. {
  36. $("#startMutedOptions").css("display", "none");
  37. }
  38. $("#updateSettings").click(function () {
  39. SettingsMenu.update();
  40. });
  41. },
  42. onRoleChanged: function () {
  43. if(APP.xmpp.isModerator())
  44. {
  45. $("#startMutedOptions").css("display", "block");
  46. }
  47. else
  48. {
  49. $("#startMutedOptions").css("display", "none");
  50. }
  51. },
  52. setStartMuted: function (audio, video) {
  53. $("#startAudioMuted").attr("checked", audio);
  54. $("#startVideoMuted").attr("checked", video);
  55. },
  56. update: function() {
  57. var newDisplayName = UIUtil.escapeHtml($('#setDisplayName').get(0).value);
  58. var newEmail = UIUtil.escapeHtml($('#setEmail').get(0).value);
  59. if(newDisplayName) {
  60. var displayName = Settings.setDisplayName(newDisplayName);
  61. APP.xmpp.addToPresence("displayName", displayName, true);
  62. }
  63. var language = $("#languages_selectbox").val();
  64. APP.translation.setLanguage(language);
  65. Settings.setLanguage(language);
  66. APP.xmpp.addToPresence("email", newEmail);
  67. var email = Settings.setEmail(newEmail);
  68. var startAudioMuted = ($("#startAudioMuted").is(":checked"));
  69. var startVideoMuted = ($("#startVideoMuted").is(":checked"));
  70. APP.xmpp.addToPresence("startMuted",
  71. [startAudioMuted, startVideoMuted]);
  72. Avatar.setUserAvatar(APP.xmpp.myJid(), email);
  73. },
  74. isVisible: function() {
  75. return $('#settingsmenu').is(':visible');
  76. },
  77. setDisplayName: function(newDisplayName) {
  78. var displayName = Settings.setDisplayName(newDisplayName);
  79. $('#setDisplayName').get(0).value = displayName;
  80. },
  81. onDisplayNameChange: function(peerJid, newDisplayName) {
  82. if(peerJid === 'localVideoContainer' ||
  83. peerJid === APP.xmpp.myJid()) {
  84. this.setDisplayName(newDisplayName);
  85. }
  86. },
  87. changeAvatar: function (thumbUrl) {
  88. $('#avatar').get(0).src = thumbUrl;
  89. }
  90. };
  91. module.exports = SettingsMenu;