%1$s foi removido por causa de troca de associação"
- ],
- "%1$s has been removed for not being a member": [
- null,
- "%1$s foi removido por não ser um membro"
- ],
- "The reason given is: \"": [
- null,
- ""
- ],
- "You are not on the member list of this room": [
- null,
- "Você não é membro dessa sala"
- ],
- "No nickname was specified": [
- null,
- "Você não escolheu um apelido "
- ],
- "You are not allowed to create new rooms": [
- null,
- "Você não tem permitição de criar novas salas"
- ],
- "Your nickname doesn't conform to this room's policies": [
- null,
- "Seu apelido não está de acordo com as regras da sala"
- ],
- "Your nickname is already taken": [
- null,
- "Seu apelido já foi escolhido"
- ],
- "This room does not (yet) exist": [
- null,
- "A sala não existe (ainda)"
- ],
- "This room has reached it's maximum number of occupants": [
- null,
- "A sala atingiu o número máximo de ocupantes"
- ],
- "Topic set by %1$s to: %2$s": [
- null,
- "Topico definido por %1$s para: %2$s"
- ],
- "%1$s has invited you to join a chat room: %2$s": [
- null,
- ""
- ],
- "%1$s has invited you to join a chat room: %2$s, and left the following reason: \"%3$s\"": [
- null,
- ""
- ],
- "Minimized": [
- null,
- "Minimizado"
- ],
- "Click to remove this contact": [
- null,
- "Clique para remover o contato"
- ],
- "Click to chat with this contact": [
- null,
- "Clique para conversar com o contato"
- ],
- "Type to filter": [
- null,
- ""
- ],
- "I am %1$s": [
- null,
- "Estou %1$s"
- ],
- "Click here to write a custom status message": [
- null,
- "Clique aqui para customizar a mensagem de status"
- ],
- "Click to change your chat status": [
- null,
- "Clique para mudar seu status no chat"
- ],
- "Custom status": [
- null,
- "Status customizado"
- ],
- "online": [
- null,
- "online"
- ],
- "busy": [
- null,
- "ocupado"
- ],
- "away for long": [
- null,
- "ausente a bastante tempo"
- ],
- "away": [
- null,
- "ausente"
- ],
- "Your XMPP provider's domain name:": [
- null,
- ""
- ],
- "Fetch registration form": [
- null,
- ""
- ],
- "Tip: A list of public XMPP providers is available": [
- null,
- ""
- ],
- "here": [
- null,
- ""
- ],
- "Register": [
- null,
- ""
- ],
- "Sorry, the given provider does not support in band account registration. Please try with a different provider.": [
- null,
- ""
- ],
- "Requesting a registration form from the XMPP server": [
- null,
- ""
- ],
- "Something went wrong while establishing a connection with \"%1$s\". Are you sure it exists?": [
- null,
- ""
- ],
- "Now logging you in": [
- null,
- ""
- ],
- "Registered successfully": [
- null,
- ""
- ],
- "Return": [
- null,
- ""
- ],
- "The provider rejected your registration attempt. ": [
- null,
- ""
- ],
- "Password:": [
- null,
- "Senha:"
- ],
- "Log In": [
- null,
- "Entrar"
- ],
- "Sign in": [
- null,
- "Conectar-se"
- ],
- "Toggle chat": [
- null,
- "Alternar bate-papo"
- ]
- }
- }
-};
-locales["ru"] = {
- "domain": "converse",
- "locale_data": {
- "converse": {
- "": {
- "domain": "converse",
- "lang": "ru"
- },
- "unencrypted": [
- null,
- "не зашифровано"
- ],
- "unverified": [
- null,
- "непроверено"
- ],
- "verified": [
- null,
- "проверено"
- ],
- "finished": [
- null,
- "закончено"
- ],
- "This contact is busy": [
- null,
- "Занят"
- ],
- "This contact is online": [
- null,
- "В сети"
- ],
- "This contact is offline": [
- null,
- "Не в сети"
- ],
- "This contact is unavailable": [
- null,
- "Не доступен"
- ],
- "This contact is away for an extended period": [
- null,
- "На долго отошёл"
- ],
- "This contact is away": [
- null,
- "Отошёл"
- ],
- "My contacts": [
- null,
- "Контакты"
- ],
- "Pending contacts": [
- null,
- "Собеседники ожидающие авторизации"
- ],
- "Contact requests": [
- null,
- "Запросы на авторизацию"
- ],
- "Ungrouped": [
- null,
- ""
- ],
- "Contacts": [
- null,
- "Контакты"
- ],
- "Groups": [
- null,
- ""
- ],
- "Error": [
- null,
- "Ошибка"
- ],
- "Connecting": [
- null,
- "Соединение"
- ],
- "Authenticating": [
- null,
- "Авторизация"
- ],
- "Authentication Failed": [
- null,
- "Не удалось авторизоваться"
- ],
- "Online Contacts": [
- null,
- "Cписок собеседников"
- ],
- "Re-establishing encrypted session": [
- null,
- ""
- ],
- "Generating private key.": [
- null,
- ""
- ],
- "Your browser might become unresponsive.": [
- null,
- ""
- ],
- "Authentication request from %1$s\n\nYour chat contact is attempting to verify your identity, by asking you the question below.\n\n%2$s": [
- null,
- ""
- ],
- "Could not verify this user's identify.": [
- null,
- ""
- ],
- "Exchanging private key with contact.": [
- null,
- ""
- ],
- "Personal message": [
- null,
- "Введите сообщение"
- ],
- "me": [
- null,
- "Я"
- ],
- "is typing": [
- null,
- ""
- ],
- "has stopped typing": [
- null,
- ""
- ],
- "Show this menu": [
- null,
- "Показать это меню"
- ],
- "Write in the third person": [
- null,
- ""
- ],
- "Remove messages": [
- null,
- "Удалить сообщения"
- ],
- "Are you sure you want to clear the messages from this chat box?": [
- null,
- ""
- ],
- "Your message could not be sent": [
- null,
- "Ваше сообщение не послано"
- ],
- "We received an unencrypted message": [
- null,
- ""
- ],
- "We received an unreadable encrypted message": [
- null,
- ""
- ],
- "This user has requested an encrypted session.": [
- null,
- ""
- ],
- "Here are the fingerprints, please confirm them with %1$s, outside of this chat.\n\nFingerprint for you, %2$s: %3$s\n\nFingerprint for %1$s: %4$s\n\nIf you have confirmed that the fingerprints match, click OK, otherwise click Cancel.": [
- null,
- ""
- ],
- "You will be prompted to provide a security question and then an answer to that question.\n\nYour contact will then be prompted the same question and if they type the exact same answer (case sensitive), their identity will be verified.": [
- null,
- ""
- ],
- "What is your security question?": [
- null,
- ""
- ],
- "What is the answer to the security question?": [
- null,
- ""
- ],
- "Invalid authentication scheme provided": [
- null,
- ""
- ],
- "Your messages are not encrypted anymore": [
- null,
- "Ваши сообщения больше не шифруются"
- ],
- "Your contact has ended encryption on their end, you should do the same.": [
- null,
- ""
- ],
- "Your messages are not encrypted. Click here to enable OTR encryption.": [
- null,
- "Ваши сообщения не шифруются. Нажмите здесь чтобы настроить шифрование."
- ],
- "Your contact has closed their end of the private session, you should do the same": [
- null,
- ""
- ],
- "End encrypted conversation": [
- null,
- ""
- ],
- "Hide the list of participants": [
- null,
- ""
- ],
- "Refresh encrypted conversation": [
- null,
- ""
- ],
- "Start a call": [
- null,
- ""
- ],
- "Start encrypted conversation": [
- null,
- ""
- ],
- "Verify with fingerprints": [
- null,
- ""
- ],
- "Verify with SMP": [
- null,
- ""
- ],
- "What's this?": [
- null,
- "Что это?"
- ],
- "Online": [
- null,
- "В сети"
- ],
- "Busy": [
- null,
- "Занят"
- ],
- "Away": [
- null,
- "Отошёл"
- ],
- "Offline": [
- null,
- "Не в сети"
- ],
- "Contact name": [
- null,
- "Имя контакта"
- ],
- "Search": [
- null,
- "Поиск"
- ],
- "Contact username": [
- null,
- "Имя пользователя"
- ],
- "Add": [
- null,
- "Добавить"
- ],
- "Click to add new chat contacts": [
- null,
- "Добавить новую конференцию"
- ],
- "Add a contact": [
- null,
- "Добавть контакт"
- ],
- "No users found": [
- null,
- "Пользователи не найдены"
- ],
- "Click to add as a chat contact": [
- null,
- "Добавить контакт"
- ],
- "Room name": [
- null,
- "Имя конференции"
- ],
- "Nickname": [
- null,
- "Псевдоним"
- ],
- "Server": [
- null,
- "Сервер"
- ],
- "Join": [
- null,
- "Подключиться"
- ],
- "Show rooms": [
- null,
- "Обновить"
- ],
- "Rooms": [
- null,
- "Конфер."
- ],
- "No rooms on %1$s": [
- null,
- "Нет доступных конференций %1$s"
- ],
- "Rooms on %1$s": [
- null,
- "Конференции %1$s:"
- ],
- "Click to open this room": [
- null,
- "Зайти в конференцию"
- ],
- "Show more information on this room": [
- null,
- "Показать больше информации об этой конференции"
- ],
- "Description:": [
- null,
- "Описание:"
- ],
- "Occupants:": [
- null,
- "Участники:"
- ],
- "Features:": [
- null,
- "Свойства:"
- ],
- "Requires authentication": [
- null,
- "Требуется авторизация"
- ],
- "Hidden": [
- null,
- "Скрыто"
- ],
- "Requires an invitation": [
- null,
- "Требуется приглашение"
- ],
- "Moderated": [
- null,
- "Модерируемая"
- ],
- "Non-anonymous": [
- null,
- "Не анонимная"
- ],
- "Open room": [
- null,
- "Открыть конференцию"
- ],
- "Permanent room": [
- null,
- "Перманентная конференция"
- ],
- "Public": [
- null,
- "Публичный"
- ],
- "Semi-anonymous": [
- null,
- "Частично анонимная"
- ],
- "Temporary room": [
- null,
- "Временная конференция"
- ],
- "Unmoderated": [
- null,
- "Немодерируемая"
- ],
- "This user is a moderator": [
- null,
- "Модератор"
- ],
- "This user can send messages in this room": [
- null,
- "Собеседник"
- ],
- "This user can NOT send messages in this room": [
- null,
- "Пользователь не может посылать сообщения в эту комнату"
- ],
- "Invite...": [
- null,
- ""
- ],
- "You are about to invite %1$s to the chat room \"%2$s\". ": [
- null,
- ""
- ],
- "You may optionally include a message, explaining the reason for the invitation.": [
- null,
- ""
- ],
- "Message": [
- null,
- "Сообщение"
- ],
- "Error: could not execute the command": [
- null,
- ""
- ],
- "Write in 3rd person": [
- null,
- ""
- ],
- "Remove user's ability to post messages": [
- null,
- ""
- ],
- "Change your nickname": [
- null,
- ""
- ],
- "Allow muted user to post messages": [
- null,
- ""
- ],
- "Save": [
- null,
- "Сохранить"
- ],
- "Cancel": [
- null,
- "Отменить"
- ],
- "An error occurred while trying to save the form.": [
- null,
- "При сохранение формы произошла ошибка."
- ],
- "This chatroom requires a password": [
- null,
- "Для доступа в конфер. необходим пароль."
- ],
- "Password: ": [
- null,
- "Пароль: "
- ],
- "Submit": [
- null,
- "Отправить"
- ],
- "This room is not anonymous": [
- null,
- "Эта комната не анонимная"
- ],
- "This room now shows unavailable members": [
- null,
- "Эта комната показывает доступных собеседников"
- ],
- "This room does not show unavailable members": [
- null,
- "Эта комната не показывает недоступных собеседников"
- ],
- "Non-privacy-related room configuration has changed": [
- null,
- ""
- ],
- "Room logging is now enabled": [
- null,
- ""
- ],
- "Room logging is now disabled": [
- null,
- ""
- ],
- "This room is now non-anonymous": [
- null,
- "Эта комната не анонимная"
- ],
- "This room is now semi-anonymous": [
- null,
- "Эта комната частично анонимная"
- ],
- "This room is now fully-anonymous": [
- null,
- "Эта комната стала полностью анонимной"
- ],
- "A new room has been created": [
- null,
- "Новая комната была создана"
- ],
- "You have been banned from this room": [
- null,
- "Вам запрещено подключатся к этой конференции"
- ],
- "You have been kicked from this room": [
- null,
- "Вам запрещено подключатся к этой конференции"
- ],
- "You have been removed from this room because of an affiliation change": [
- null,
- "%1$s удалён потому что изменились права"
- ],
- "You have been removed from this room because the room has changed to members-only and you're not a member": [
- null,
- "Вы отключены от этой конференции потому что режим изменился: только-участники"
- ],
- "You have been removed from this room because the MUC (Multi-user chat) service is being shut down.": [
- null,
- "Вы отключены от этой конференции потому что сервись конференций выключен."
- ],
- "%1$s has been banned": [
- null,
- "%1$s забанен"
- ],
- "%1$s has been kicked out": [
- null,
- "%1$s выдворен"
- ],
- "%1$s has been removed because of an affiliation change": [
- null,
- "%1$s has been removed because of an affiliation change"
- ],
- "%1$s has been removed for not being a member": [
- null,
- "%1$s удалён потому что не участник"
- ],
- "The reason given is: \"": [
- null,
- ""
- ],
- "You are not on the member list of this room": [
- null,
- "Вас нет в списке этой конференции"
- ],
- "No nickname was specified": [
- null,
- "Вы не указали псевдоним"
- ],
- "You are not allowed to create new rooms": [
- null,
- "Вы не имеете права создавать конфер."
- ],
- "Your nickname doesn't conform to this room's policies": [
- null,
- "Псевдоним не согласуется с правилами конфер."
- ],
- "Your nickname is already taken": [
- null,
- "Ваш ник уже используется другим пользователем"
- ],
- "This room does not (yet) exist": [
- null,
- "Эта комната не существует"
- ],
- "This room has reached it's maximum number of occupants": [
- null,
- "Конференция достигла максимального количества участников"
- ],
- "Topic set by %1$s to: %2$s": [
- null,
- "Тема %2$s устатновлена %1$s"
- ],
- "%1$s has invited you to join a chat room: %2$s": [
- null,
- ""
- ],
- "%1$s has invited you to join a chat room: %2$s, and left the following reason: \"%3$s\"": [
- null,
- ""
- ],
- "Minimized": [
- null,
- ""
- ],
- "Click to remove this contact": [
- null,
- "Удалить контакт"
- ],
- "Click to chat with this contact": [
- null,
- "Начать общение"
- ],
- "Type to filter": [
- null,
- ""
- ],
- "I am %1$s": [
- null,
- "%1$s"
- ],
- "Click here to write a custom status message": [
- null,
- "Редактировать произвольный статус"
- ],
- "Click to change your chat status": [
- null,
- "Изменить ваш статус"
- ],
- "Custom status": [
- null,
- "Произвольный статус"
- ],
- "online": [
- null,
- "на связи"
- ],
- "busy": [
- null,
- "занят"
- ],
- "away for long": [
- null,
- "отошёл на долго"
- ],
- "away": [
- null,
- "отошёл"
- ],
- "Your XMPP provider's domain name:": [
- null,
- ""
- ],
- "Fetch registration form": [
- null,
- ""
- ],
- "Tip: A list of public XMPP providers is available": [
- null,
- ""
- ],
- "here": [
- null,
- ""
- ],
- "Register": [
- null,
- ""
- ],
- "Sorry, the given provider does not support in band account registration. Please try with a different provider.": [
- null,
- ""
- ],
- "Requesting a registration form from the XMPP server": [
- null,
- ""
- ],
- "Something went wrong while establishing a connection with \"%1$s\". Are you sure it exists?": [
- null,
- ""
- ],
- "Now logging you in": [
- null,
- ""
- ],
- "Registered successfully": [
- null,
- ""
- ],
- "Return": [
- null,
- ""
- ],
- "The provider rejected your registration attempt. ": [
- null,
- ""
- ],
- "Password:": [
- null,
- "Пароль:"
- ],
- "Log In": [
- null,
- "Войти"
- ],
- "Sign in": [
- null,
- "Подписать"
- ],
- "Toggle chat": [
- null,
- ""
- ]
- }
- }
-};
-locales["zh"] = {
- "domain": "converse",
- "locale_data": {
- "converse": {
- "": {
- "domain": "converse",
- "lang": "zh"
- },
- "unencrypted": [
- null,
- "未加密"
- ],
- "unverified": [
- null,
- "未验证"
- ],
- "verified": [
- null,
- "已验证"
- ],
- "finished": [
- null,
- "结束了"
- ],
- "This contact is busy": [
- null,
- "对方忙碌中"
- ],
- "This contact is online": [
- null,
- "对方在线中"
- ],
- "This contact is offline": [
- null,
- "对方已下线"
- ],
- "This contact is unavailable": [
- null,
- "对方免打扰"
- ],
- "This contact is away for an extended period": [
- null,
- "对方暂时离开"
- ],
- "This contact is away": [
- null,
- "对方离开"
- ],
- "My contacts": [
- null,
- "我的好友列表"
- ],
- "Pending contacts": [
- null,
- "保留中的联系人"
- ],
- "Contact requests": [
- null,
- "来自好友的请求"
- ],
- "Ungrouped": [
- null,
- ""
- ],
- "Contacts": [
- null,
- "联系人"
- ],
- "Groups": [
- null,
- ""
- ],
- "Error": [
- null,
- "错误"
- ],
- "Connecting": [
- null,
- "连接中"
- ],
- "Authenticating": [
- null,
- "验证中"
- ],
- "Authentication Failed": [
- null,
- "验证失败"
- ],
- "Online Contacts": [
- null,
- "在线好友"
- ],
- "Re-establishing encrypted session": [
- null,
- "重新建立加密会话"
- ],
- "Generating private key.": [
- null,
- "正在生成私钥"
- ],
- "Your browser might become unresponsive.": [
- null,
- "您的浏览器可能会暂时无响应"
- ],
- "Could not verify this user's identify.": [
- null,
- "无法验证对方信息。"
- ],
- "Personal message": [
- null,
- "私信"
- ],
- "me": [
- null,
- "我"
- ],
- "is typing": [
- null,
- ""
- ],
- "has stopped typing": [
- null,
- ""
- ],
- "Show this menu": [
- null,
- "显示此项菜单"
- ],
- "Write in the third person": [
- null,
- "以第三者身份写"
- ],
- "Remove messages": [
- null,
- "移除消息"
- ],
- "Are you sure you want to clear the messages from this chat box?": [
- null,
- "你确定清除此次的聊天记录吗?"
- ],
- "Your message could not be sent": [
- null,
- "您的消息无法送出"
- ],
- "We received an unencrypted message": [
- null,
- "我们收到了一条未加密的信息"
- ],
- "We received an unreadable encrypted message": [
- null,
- "我们收到一条无法读取的信息"
- ],
- "This user has requested an encrypted session.": [
- null,
- "此用户请求了一个加密会话。"
- ],
- "Here are the fingerprints, please confirm them with %1$s, outside of this chat.\n\nFingerprint for you, %2$s: %3$s\n\nFingerprint for %1$s: %4$s\n\nIf you have confirmed that the fingerprints match, click OK, otherwise click Cancel.": [
- null,
- "这里是指纹。请与 %1$s 确认。\n\n您的 %2$s 指纹: %3$s\n\n%1$s 的指纹: %4$s\n\n如果确认符合,请点击OK,否则点击取消"
- ],
- "What is your security question?": [
- null,
- "您的安全问题是?"
- ],
- "What is the answer to the security question?": [
- null,
- "此安全问题的答案是?"
- ],
- "Invalid authentication scheme provided": [
- null,
- "非法的认证方式"
- ],
- "Your messages are not encrypted anymore": [
- null,
- "您的消息将不再被加密"
- ],
- "Your messages are not encrypted. Click here to enable OTR encryption.": [
- null,
- "您的消息未加密。点击这里来启用OTR加密"
- ],
- "End encrypted conversation": [
- null,
- "结束加密的会话"
- ],
- "Hide the list of participants": [
- null,
- ""
- ],
- "Refresh encrypted conversation": [
- null,
- "刷新加密的会话"
- ],
- "Start a call": [
- null,
- ""
- ],
- "Start encrypted conversation": [
- null,
- "开始加密的会话"
- ],
- "Verify with fingerprints": [
- null,
- "验证指纹"
- ],
- "Verify with SMP": [
- null,
- "验证SMP"
- ],
- "What's this?": [
- null,
- "这是什么?"
- ],
- "Online": [
- null,
- "在线"
- ],
- "Busy": [
- null,
- "忙碌中"
- ],
- "Away": [
- null,
- "离开"
- ],
- "Offline": [
- null,
- "离线"
- ],
- "Contact name": [
- null,
- "联系人名称"
- ],
- "Search": [
- null,
- "搜索"
- ],
- "Contact username": [
- null,
- "联系人姓名"
- ],
- "Add": [
- null,
- "添加"
- ],
- "Click to add new chat contacts": [
- null,
- "点击添加新联系人"
- ],
- "Add a contact": [
- null,
- "添加联系人"
- ],
- "No users found": [
- null,
- "未找到用户"
- ],
- "Click to add as a chat contact": [
- null,
- "点击添加为好友"
- ],
- "Room name": [
- null,
- "聊天室名称"
- ],
- "Nickname": [
- null,
- "昵称"
- ],
- "Server": [
- null,
- "服务器"
- ],
- "Join": [
- null,
- "加入"
- ],
- "Show rooms": [
- null,
- "显示所有聊天室"
- ],
- "Rooms": [
- null,
- "聊天室"
- ],
- "No rooms on %1$s": [
- null,
- "%1$s 上没有聊天室"
- ],
- "Rooms on %1$s": [
- null,
- "%1$s 上的聊天室"
- ],
- "Click to open this room": [
- null,
- "打开聊天室"
- ],
- "Show more information on this room": [
- null,
- "显示次聊天室的更多信息"
- ],
- "Description:": [
- null,
- "描述: "
- ],
- "Occupants:": [
- null,
- "成员:"
- ],
- "Features:": [
- null,
- "特性:"
- ],
- "Requires authentication": [
- null,
- "需要验证"
- ],
- "Hidden": [
- null,
- "隐藏的"
- ],
- "Requires an invitation": [
- null,
- "需要被邀请"
- ],
- "Moderated": [
- null,
- "发言受限"
- ],
- "Non-anonymous": [
- null,
- "非匿名"
- ],
- "Open room": [
- null,
- "打开聊天室"
- ],
- "Permanent room": [
- null,
- "永久聊天室"
- ],
- "Public": [
- null,
- "公开的"
- ],
- "Semi-anonymous": [
- null,
- "半匿名"
- ],
- "Temporary room": [
- null,
- "临时聊天室"
- ],
- "Unmoderated": [
- null,
- "无发言限制"
- ],
- "This user is a moderator": [
- null,
- "此用户是主持人"
- ],
- "This user can send messages in this room": [
- null,
- "此用户在这房间里可发消息"
- ],
- "This user can NOT send messages in this room": [
- null,
- "此用户不可在此房间发消息"
- ],
- "Invite...": [
- null,
- ""
- ],
- "You are about to invite %1$s to the chat room \"%2$s\". ": [
- null,
- ""
- ],
- "You may optionally include a message, explaining the reason for the invitation.": [
- null,
- ""
- ],
- "Message": [
- null,
- "信息"
- ],
- "Error: could not execute the command": [
- null,
- ""
- ],
- "Remove user's ability to post messages": [
- null,
- ""
- ],
- "Change your nickname": [
- null,
- ""
- ],
- "Allow muted user to post messages": [
- null,
- ""
- ],
- "Save": [
- null,
- "保存"
- ],
- "Cancel": [
- null,
- "取消"
- ],
- "An error occurred while trying to save the form.": [
- null,
- "保存表单是出错。"
- ],
- "This chatroom requires a password": [
- null,
- "此聊天室需要密码"
- ],
- "Password: ": [
- null,
- "密码:"
- ],
- "Submit": [
- null,
- "发送"
- ],
- "This room is not anonymous": [
- null,
- "此为非匿名聊天室"
- ],
- "This room now shows unavailable members": [
- null,
- "此聊天室显示不可用用户"
- ],
- "This room does not show unavailable members": [
- null,
- "此聊天室不显示不可用用户"
- ],
- "Non-privacy-related room configuration has changed": [
- null,
- "此聊天室设置(非私密性)已改变"
- ],
- "Room logging is now enabled": [
- null,
- "聊天室聊天记录已启用"
- ],
- "Room logging is now disabled": [
- null,
- "聊天室聊天记录已禁用"
- ],
- "This room is now non-anonymous": [
- null,
- "此聊天室非匿名"
- ],
- "This room is now semi-anonymous": [
- null,
- "此聊天室半匿名"
- ],
- "This room is now fully-anonymous": [
- null,
- "此聊天室完全匿名"
- ],
- "A new room has been created": [
- null,
- "新聊天室已创建"
- ],
- "You have been banned from this room": [
- null,
- "您已被此聊天室禁止入内"
- ],
- "You have been kicked from this room": [
- null,
- "您已被踢出次房间"
- ],
- "You have been removed from this room because of an affiliation change": [
- null,
- "由于关系变化,您已被移除此房间"
- ],
- "You have been removed from this room because the room has changed to members-only and you're not a member": [
- null,
- "您已被移除此房间因为此房间更改为只允许成员加入,而您非成员"
- ],
- "You have been removed from this room because the MUC (Multi-user chat) service is being shut down.": [
- null,
- "由于服务不可用,您已被移除此房间。"
- ],
- "%1$s has been banned": [
- null,
- "%1$s 已被禁止"
- ],
- "%1$s has been kicked out": [
- null,
- "%1$s 已被踢出"
- ],
- "%1$s has been removed because of an affiliation change": [
- null,
- "由于关系解除、%1$s 已被移除"
- ],
- "%1$s has been removed for not being a member": [
- null,
- "由于不是成员、%1$s 已被移除"
- ],
- "The reason given is: \"": [
- null,
- ""
- ],
- "You are not on the member list of this room": [
- null,
- "您并非此房间成员"
- ],
- "No nickname was specified": [
- null,
- "未指定昵称"
- ],
- "You are not allowed to create new rooms": [
- null,
- "您可此创建新房间了"
- ],
- "Your nickname doesn't conform to this room's policies": [
- null,
- "您的昵称不符合此房间标准"
- ],
- "Your nickname is already taken": [
- null,
- "您的昵称已被占用"
- ],
- "This room does not (yet) exist": [
- null,
- "此房间不存在"
- ],
- "This room has reached it's maximum number of occupants": [
- null,
- "此房间人数已达上线"
- ],
- "Topic set by %1$s to: %2$s": [
- null,
- "%1$s 设置话题为: %2$s"
- ],
- "%1$s has invited you to join a chat room: %2$s": [
- null,
- ""
- ],
- "%1$s has invited you to join a chat room: %2$s, and left the following reason: \"%3$s\"": [
- null,
- ""
- ],
- "Minimized": [
- null,
- "最小化的"
- ],
- "Click to remove this contact": [
- null,
- "点击移除联系人"
- ],
- "Click to chat with this contact": [
- null,
- "点击与对方交谈"
- ],
- "Type to filter": [
- null,
- ""
- ],
- "I am %1$s": [
- null,
- "我现在%1$s"
- ],
- "Click here to write a custom status message": [
- null,
- "点击这里,填写状态信息"
- ],
- "Click to change your chat status": [
- null,
- "点击这里改变聊天状态"
- ],
- "Custom status": [
- null,
- "DIY状态"
- ],
- "online": [
- null,
- "在线"
- ],
- "busy": [
- null,
- "忙碌"
- ],
- "away for long": [
- null,
- "长时间离开"
- ],
- "away": [
- null,
- "离开"
- ],
- "Your XMPP provider's domain name:": [
- null,
- ""
- ],
- "Fetch registration form": [
- null,
- ""
- ],
- "Tip: A list of public XMPP providers is available": [
- null,
- ""
- ],
- "here": [
- null,
- ""
- ],
- "Register": [
- null,
- ""
- ],
- "Sorry, the given provider does not support in band account registration. Please try with a different provider.": [
- null,
- ""
- ],
- "Requesting a registration form from the XMPP server": [
- null,
- ""
- ],
- "Something went wrong while establishing a connection with \"%1$s\". Are you sure it exists?": [
- null,
- ""
- ],
- "Now logging you in": [
- null,
- ""
- ],
- "Registered successfully": [
- null,
- ""
- ],
- "Return": [
- null,
- ""
- ],
- "The provider rejected your registration attempt. ": [
- null,
- ""
- ],
- "Password:": [
- null,
- "密码:"
- ],
- "Log In": [
- null,
- "登录"
- ],
- "Sign in": [
- null,
- "登录"
- ],
- "Toggle chat": [
- null,
- "折叠聊天窗口"
- ]
- }
- }
-};
\ No newline at end of file
diff --git a/client/js/libs/conversejs/builds/templates.js b/client/js/libs/conversejs/builds/templates.js
deleted file mode 100644
index 5f63379dc..000000000
--- a/client/js/libs/conversejs/builds/templates.js
+++ /dev/null
@@ -1,1118 +0,0 @@
-this["templates"] = this["templates"] || {};
-
-this["templates"]["action"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n';
-
-}
-return __p
-};
-
-this["templates"]["add_contact_dropdown"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n - \n \n ' +
-((__t = (label_add_contact)) == null ? '' : __t) +
-'\n
\n \n
\n';
-
-}
-return __p
-};
-
-this["templates"]["add_contact_form"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n \n\n';
-
-}
-return __p
-};
-
-this["templates"]["change_status_message"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n';
-
-}
-return __p
-};
-
-this["templates"]["chat_status"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n';
-
-}
-return __p
-};
-
-this["templates"]["chatarea"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '\n';
-
-}
-return __p
-};
-
-this["templates"]["chatbox"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '\n
\n
\n
\n
\n
\n
\n
\n';
-
-}
-return __p
-};
-
-this["templates"]["chatroom"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '\n
\n
\n
\n
\n
\n
' +
-((__t = ( name.replace("private, ", "") )) == null ? '' : __t) +
-'
\n
\n
\n
\n
\n';
-
-}
-return __p
-};
-
-this["templates"]["chatroom_password_form"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n
\n\n';
-
-}
-return __p
-};
-
-this["templates"]["chatroom_sidebar"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n\n\n\n';
-
-}
-return __p
-};
-
-this["templates"]["chatrooms_tab"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '' +
-((__t = (label_rooms)) == null ? '' : __t) +
-'\n';
-
-}
-return __p
-};
-
-this["templates"]["chats_panel"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n';
-
-}
-return __p
-};
-
-this["templates"]["choose_status"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n \n \n
\n';
-
-}
-return __p
-};
-
-this["templates"]["contacts_panel"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '\n';
-
-}
-return __p
-};
-
-this["templates"]["contacts_tab"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '' +
-((__t = (label_contacts)) == null ? '' : __t) +
-'\n';
-
-}
-return __p
-};
-
-this["templates"]["controlbox"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n';
-
-}
-return __p
-};
-
-this["templates"]["controlbox_toggle"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '' +
-((__t = (label_toggle)) == null ? '' : __t) +
-'\n(0)\n';
-
-}
-return __p
-};
-
-this["templates"]["field"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '';
- if (_.isArray(value)) { ;
-__p += '\n ';
- _.each(value,function(arrayValue) { ;
-__p += '' +
-((__t = (arrayValue)) == null ? '' : __t) +
-'';
- }); ;
-__p += '\n';
- } else { ;
-__p += '\n ' +
-((__t = (value)) == null ? '' : __t) +
-'\n';
- } ;
-__p += '\n';
-
-}
-return __p
-};
-
-this["templates"]["form_captcha"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-
- if (label) { ;
-__p += '\n\n';
- } ;
-__p += '\n
\n\n\n\n';
-
-}
-return __p
-};
-
-this["templates"]["form_checkbox"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n\n';
-
-}
-return __p
-};
-
-this["templates"]["form_input"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-
- if (label) { ;
-__p += '\n\n';
- } ;
-__p += '\n\n';
-
-}
-return __p
-};
-
-this["templates"]["form_select"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '\n\n';
-
-}
-return __p
-};
-
-this["templates"]["form_textarea"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n\n';
-
-}
-return __p
-};
-
-this["templates"]["form_username"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-
- if (label) { ;
-__p += '\n\n';
- } ;
-__p += '\n\n \n ' +
-((__t = (domain)) == null ? '' : __t) +
-'\n
\n';
-
-}
-return __p
-};
-
-this["templates"]["group_header"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '' +
-((__t = (label_group)) == null ? '' : __t) +
-'\n';
-
-}
-return __p
-};
-
-this["templates"]["info"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '' +
-((__t = (message)) == null ? '' : __t) +
-'
\n';
-
-}
-return __p
-};
-
-this["templates"]["login_panel"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '\n';
-
-}
-return __p
-};
-
-this["templates"]["login_tab"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '' +
-((__t = (label_sign_in)) == null ? '' : __t) +
-'\n';
-
-}
-return __p
-};
-
-this["templates"]["message"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n';
-
-}
-return __p
-};
-
-this["templates"]["new_day"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n';
-
-}
-return __p
-};
-
-this["templates"]["occupant"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '' +
-((__t = (nick)) == null ? '' : __t) +
-'\n';
-
-}
-return __p
-};
-
-this["templates"]["pending_contact"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-
- if (allow_chat_pending_contacts) { ;
-__p += '\n\n';
- } ;
-__p += '\n' +
-((__t = (fullname)) == null ? '' : __t) +
-' \n';
- if (allow_chat_pending_contacts) { ;
-__p += '\n\n';
- } ;
-__p += '\n\n';
-
-}
-return __p
-};
-
-this["templates"]["pending_contacts"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '' +
-((__t = (label_pending_contacts)) == null ? '' : __t) +
-'\n';
-
-}
-return __p
-};
-
-this["templates"]["register_panel"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n';
-
-}
-return __p
-};
-
-this["templates"]["register_tab"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '' +
-((__t = (label_register)) == null ? '' : __t) +
-'\n';
-
-}
-return __p
-};
-
-this["templates"]["registration_form"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '' +
-((__t = (domain)) == null ? '' : __t) +
-'
\n\n
\n\n' +
-((__t = (title)) == null ? '' : __t) +
-'
\n' +
-((__t = (instructions)) == null ? '' : __t) +
-'
\n';
-
-}
-return __p
-};
-
-this["templates"]["registration_request"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n' +
-((__t = (info_message)) == null ? '' : __t) +
-'
\n\n';
-
-}
-return __p
-};
-
-this["templates"]["requesting_contact"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-
- if (allow_chat_pending_contacts) { ;
-__p += '\n\n';
- } ;
-__p += '\n' +
-((__t = (fullname)) == null ? '' : __t) +
-'\n';
- if (allow_chat_pending_contacts) { ;
-__p += '\n\n';
- } ;
-__p += '\n\n \n \n\n';
-
-}
-return __p
-};
-
-this["templates"]["requesting_contacts"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '' +
-((__t = (label_contact_requests)) == null ? '' : __t) +
-'\n';
-
-}
-return __p
-};
-
-this["templates"]["room_description"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '\n\n
' +
-((__t = (label_desc)) == null ? '' : __t) +
-' ' +
-((__t = (desc)) == null ? '' : __t) +
-'
\n
' +
-((__t = (label_occ)) == null ? '' : __t) +
-' ' +
-((__t = (occ)) == null ? '' : __t) +
-'
\n
' +
-((__t = (label_features)) == null ? '' : __t) +
-'\n
\n ';
- if (passwordprotected) { ;
-__p += '\n - ' +
-((__t = (label_requires_auth)) == null ? '' : __t) +
-'
\n ';
- } ;
-__p += '\n ';
- if (hidden) { ;
-__p += '\n - ' +
-((__t = (label_hidden)) == null ? '' : __t) +
-'
\n ';
- } ;
-__p += '\n ';
- if (membersonly) { ;
-__p += '\n - ' +
-((__t = (label_requires_invite)) == null ? '' : __t) +
-'
\n ';
- } ;
-__p += '\n ';
- if (moderated) { ;
-__p += '\n - ' +
-((__t = (label_moderated)) == null ? '' : __t) +
-'
\n ';
- } ;
-__p += '\n ';
- if (nonanonymous) { ;
-__p += '\n - ' +
-((__t = (label_non_anon)) == null ? '' : __t) +
-'
\n ';
- } ;
-__p += '\n ';
- if (open) { ;
-__p += '\n - ' +
-((__t = (label_open_room)) == null ? '' : __t) +
-'
\n ';
- } ;
-__p += '\n ';
- if (persistent) { ;
-__p += '\n - ' +
-((__t = (label_permanent_room)) == null ? '' : __t) +
-'
\n ';
- } ;
-__p += '\n ';
- if (publicroom) { ;
-__p += '\n - ' +
-((__t = (label_public)) == null ? '' : __t) +
-'
\n ';
- } ;
-__p += '\n ';
- if (semianonymous) { ;
-__p += '\n - ' +
-((__t = (label_semi_anon)) == null ? '' : __t) +
-'
\n ';
- } ;
-__p += '\n ';
- if (temporary) { ;
-__p += '\n - ' +
-((__t = (label_temp_room)) == null ? '' : __t) +
-'
\n ';
- } ;
-__p += '\n ';
- if (unmoderated) { ;
-__p += '\n - ' +
-((__t = (label_unmoderated)) == null ? '' : __t) +
-'
\n ';
- } ;
-__p += '\n
\n\n
\n';
-
-}
-return __p
-};
-
-this["templates"]["room_item"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n' +
-((__t = (name)) == null ? '' : __t) +
-'\n\n';
-
-}
-return __p
-};
-
-this["templates"]["room_panel"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '\n
\n';
-
-}
-return __p
-};
-
-this["templates"]["roster"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n \n \n\n';
-
-}
-return __p
-};
-
-this["templates"]["roster_item"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '' +
-((__t = (fullname)) == null ? '' : __t) +
-'\n';
- if (allow_contact_removal) { ;
-__p += '\n\n';
- } ;
-__p += '\n';
-
-}
-return __p
-};
-
-this["templates"]["search_contact"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n \n\n';
-
-}
-return __p
-};
-
-this["templates"]["select_option"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '\n';
-
-}
-return __p
-};
-
-this["templates"]["status_option"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape;
-with (obj) {
-__p += '\n \n \n ' +
-((__t = ( text )) == null ? '' : __t) +
-'\n \n\n';
-
-}
-return __p
-};
-
-this["templates"]["toggle_chats"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p +=
-((__t = (Minimized)) == null ? '' : __t) +
-' (' +
-((__t = (num_minimized)) == null ? '' : __t) +
-')\n' +
-((__t = (num_unread)) == null ? '' : __t) +
-'\n';
-
-}
-return __p
-};
-
-this["templates"]["toolbar"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-
- if (show_emoticons) { ;
-__p += '\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n';
- } ;
-__p += '\n';
- if (show_call_button) { ;
-__p += '\n\n';
- } ;
-__p += '\n';
- if (show_participants_toggle) { ;
-__p += '\n\n';
- } ;
-__p += '\n';
- if (show_clear_button) { ;
-__p += '\n\n';
- } ;
-__p += '\n';
- if (allow_otr) { ;
-__p += '\n \n ' +
-((__t = (otr_translated_status)) == null ? '' : __t) +
-'\n ';
- if (otr_status == UNENCRYPTED) { ;
-__p += '\n \n ';
- } ;
-__p += '\n ';
- if (otr_status == UNVERIFIED) { ;
-__p += '\n \n ';
- } ;
-__p += '\n ';
- if (otr_status == VERIFIED) { ;
-__p += '\n \n ';
- } ;
-__p += '\n ';
- if (otr_status == FINISHED) { ;
-__p += '\n \n ';
- } ;
-__p += '\n \n \n';
- } ;
-__p += '\n';
-
-}
-return __p
-};
-
-this["templates"]["trimmed_chat"] = function(obj) {
-obj || (obj = {});
-var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
-function print() { __p += __j.call(arguments, '') }
-with (obj) {
-__p += '\n' +
-((__t = (num_unread)) == null ? '' : __t) +
-'\n\n ' +
-((__t = ( title )) == null ? '' : __t) +
-'\n\n';
-
-}
-return __p
-};
\ No newline at end of file
diff --git a/client/js/libs/conversejs/components/backbone.browserStorage/backbone.browserStorage.js b/client/js/libs/conversejs/components/backbone.browserStorage/backbone.browserStorage.js
deleted file mode 100644
index 09ed68fa4..000000000
--- a/client/js/libs/conversejs/components/backbone.browserStorage/backbone.browserStorage.js
+++ /dev/null
@@ -1,274 +0,0 @@
-/**
- * Backbone localStorage and sessionStorage Adapter
- * Version 0.0.1
- *
- * https://github.com/jcbrand/Backbone.browserStorage
- */
-(function (root, factory) {
- if (typeof exports === 'object' && typeof require === 'function') {
- module.exports = factory(require("backbone"), require('underscore'));
- } else if (typeof define === "function" && define.amd) {
- // AMD. Register as an anonymous module.
- define(["backbone", "underscore"], function(Backbone, _) {
- // Use global variables if the locals are undefined.
- return factory(Backbone || root.Backbone, _ || root._);
- });
- } else {
- factory(Backbone, _);
- }
-}(this, function(Backbone, _) {
-// A simple module to replace `Backbone.sync` with *browser storage*-based
-// persistence. Models are given GUIDS, and saved into a JSON object. Simple
-// as that.
-
-// Hold reference to Underscore.js and Backbone.js in the closure in order
-// to make things work even if they are removed from the global namespace
-
-// Generate four random hex digits.
-function S4() {
- return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
-}
-
-// Generate a pseudo-GUID by concatenating random hexadecimal.
-function guid() {
- return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
-}
-
-function contains(array, item) {
- var i = array.length;
- while (i--) if (array[i] === item) return true;
- return false;
-}
-
-function extend(obj, props) {
- for (var key in props) { obj[key] = props[key]; }
- return obj;
-}
-
-function _browserStorage (name, serializer, type) {
- var _store;
- if (type === 'local' && !window.localStorage ) {
- throw "Backbone.browserStorage: Environment does not support localStorage.";
- } else if (type === 'session' && !window.sessionStorage ) {
- throw "Backbone.browserStorage: Environment does not support sessionStorage.";
- }
- this.name = name;
- this.serializer = serializer || {
- serialize: function(item) {
- return _.isObject(item) ? JSON.stringify(item) : item;
- },
- // fix for "illegal access" error on Android when JSON.parse is passed null
- deserialize: function (data) {
- return data && JSON.parse(data);
- }
- };
-
- if (type === 'session') {
- this.store = window.sessionStorage;
- } else if (type === 'local') {
- this.store = window.localStorage;
- } else {
- throw "Backbone.browserStorage: No storage type was specified";
- }
- _store = this.store.getItem(this.name);
- this.records = (_store && _store.split(",")) || [];
-}
-
-// Our Store is represented by a single JS object in *localStorage* or *sessionStorage*.
-// Create it with a meaningful name, like the name you'd give a table.
-Backbone.BrowserStorage = {
- local: function (name, serializer) {
- return _browserStorage.bind(this, name, serializer, 'local')();
- },
- session: function (name, serializer) {
- return _browserStorage.bind(this, name, serializer, 'session')();
- }
-};
-
-// The browser's local and session stores will be extended with this obj.
-var _extension = {
-
- // Save the current state of the **Store**
- save: function() {
- this.store.setItem(this.name, this.records.join(","));
- },
-
- // Add a model, giving it a (hopefully)-unique GUID, if it doesn't already
- // have an id of it's own.
- create: function(model) {
- if (!model.id) {
- model.id = guid();
- model.set(model.idAttribute, model.id);
- }
- this.store.setItem(this._itemName(model.id), this.serializer.serialize(model));
- this.records.push(model.id.toString());
- this.save();
- return this.find(model) !== false;
- },
-
- // Update a model by replacing its copy in `this.data`.
- update: function(model) {
- this.store.setItem(this._itemName(model.id), this.serializer.serialize(model));
- var modelId = model.id.toString();
- if (!contains(this.records, modelId)) {
- this.records.push(modelId);
- this.save();
- }
- return this.find(model) !== false;
- },
-
- // Retrieve a model from `this.data` by id.
- find: function(model) {
- return this.serializer.deserialize(this.store.getItem(this._itemName(model.id)));
- },
-
- // Return the array of all models currently in storage.
- findAll: function() {
- var result = [];
- for (var i = 0, id, data; i < this.records.length; i++) {
- id = this.records[i];
- data = this.serializer.deserialize(this.store.getItem(this._itemName(id)));
- if (data !== null) result.push(data);
- }
- return result;
- },
-
- // Delete a model from `this.data`, returning it.
- destroy: function(model) {
- this.store.removeItem(this._itemName(model.id));
- var modelId = model.id.toString();
- for (var i = 0, id; i < this.records.length; i++) {
- if (this.records[i] === modelId) {
- this.records.splice(i, 1);
- }
- }
- this.save();
- return model;
- },
-
- browserStorage: function() {
- return {
- session: sessionStorage,
- local: localStorage
- };
- },
-
- // Clear browserStorage for specific collection.
- _clear: function() {
- var local = this.store,
- itemRe = new RegExp("^" + this.name + "-");
-
- // Remove id-tracking item (e.g., "foo").
- local.removeItem(this.name);
-
- // Match all data items (e.g., "foo-ID") and remove.
- for (var k in local) {
- if (itemRe.test(k)) {
- local.removeItem(k);
- }
- }
-
- this.records.length = 0;
- },
-
- // Size of browserStorage.
- _storageSize: function() {
- return this.store.length;
- },
-
- _itemName: function(id) {
- return this.name+"-"+id;
- }
-
-};
-
-extend(Backbone.BrowserStorage.session.prototype, _extension);
-extend(Backbone.BrowserStorage.local.prototype, _extension);
-
-// localSync delegate to the model or collection's
-// *browserStorage* property, which should be an instance of `Store`.
-// window.Store.sync and Backbone.localSync is deprecated, use Backbone.BrowserStorage.sync instead
-Backbone.BrowserStorage.sync = Backbone.localSync = function(method, model, options) {
- var store = model.browserStorage || model.collection.browserStorage;
-
- var resp, errorMessage;
- //If $ is having Deferred - use it.
- var syncDfd = Backbone.$ ?
- (Backbone.$.Deferred && Backbone.$.Deferred()) :
- (Backbone.Deferred && Backbone.Deferred());
-
- try {
-
- switch (method) {
- case "read":
- resp = model.id !== undefined ? store.find(model) : store.findAll();
- break;
- case "create":
- resp = store.create(model);
- break;
- case "update":
- resp = store.update(model);
- break;
- case "delete":
- resp = store.destroy(model);
- break;
- }
-
- } catch(error) {
- if (error.code === 22 && store._storageSize() === 0)
- errorMessage = "Private browsing is unsupported";
- else
- errorMessage = error.message;
- }
-
- if (resp) {
- if (options && options.success) {
- if (Backbone.VERSION === "0.9.10") {
- options.success(model, resp, options);
- } else {
- options.success(resp);
- }
- }
- if (syncDfd) {
- syncDfd.resolve(resp);
- }
-
- } else {
- errorMessage = errorMessage ? errorMessage
- : "Record Not Found";
-
- if (options && options.error)
- if (Backbone.VERSION === "0.9.10") {
- options.error(model, errorMessage, options);
- } else {
- options.error(errorMessage);
- }
-
- if (syncDfd)
- syncDfd.reject(errorMessage);
- }
-
- // add compatibility with $.ajax
- // always execute callback for success and error
- if (options && options.complete) options.complete(resp);
-
- return syncDfd && syncDfd.promise();
-};
-
-Backbone.ajaxSync = Backbone.sync;
-
-Backbone.getSyncMethod = function(model) {
- if(model.browserStorage || (model.collection && model.collection.browserStorage)) {
- return Backbone.localSync;
- }
- return Backbone.ajaxSync;
-};
-
-// Override 'Backbone.sync' to default to localSync,
-// the original 'Backbone.sync' is still available in 'Backbone.ajaxSync'
-Backbone.sync = function(method, model, options) {
- return Backbone.getSyncMethod(model).apply(this, [method, model, options]);
-};
-
-return Backbone.BrowserStorage;
-}));
diff --git a/client/js/libs/conversejs/components/backbone.overview/backbone.overview.js b/client/js/libs/conversejs/components/backbone.overview/backbone.overview.js
deleted file mode 100644
index b721d98c5..000000000
--- a/client/js/libs/conversejs/components/backbone.overview/backbone.overview.js
+++ /dev/null
@@ -1,63 +0,0 @@
-/*!
- * Backbone.Overview
- *
- * Copyright (c) 2014, JC Brand
- * Licensed under the Mozilla Public License (MPL)
- */
-(function (root, factory) {
- if (typeof define === 'function' && define.amd) {
- define(["underscore", "backbone"], factory);
- } else {
- // RequireJS isn't being used.
- // Assume underscore and backbone are loaded in