Merge branch 'develop' into set-moderator-stream

# Conflicts:
#	i18n/en.i18n.json
pull/1889/head
Marcelo Schmidt 10 years ago
commit 907dd0396a
  1. 8
      .meteor/versions
  2. 14
      README.md
  3. 3
      i18n/ar.i18n.json
  4. 1
      i18n/de.i18n.json
  5. 20
      i18n/en.i18n.json
  6. 23
      i18n/fi.i18n.json
  7. 46
      i18n/he.i18n.json
  8. 1
      i18n/hr.i18n.json
  9. 1
      i18n/ko.i18n.json
  10. 1
      i18n/nl.i18n.json
  11. 25
      i18n/pl.i18n.json
  12. 4
      i18n/pt.i18n.json
  13. 16
      i18n/ro.i18n.json
  14. 75
      packages/rocketchat-api/server/routes.coffee
  15. 8
      packages/rocketchat-assets/.npm/package/npm-shrinkwrap.json
  16. 3
      packages/rocketchat-assets/package.js
  17. 27
      packages/rocketchat-assets/server/assets.coffee
  18. 1
      packages/rocketchat-authorization/i18n/ar.i18n.json
  19. 1
      packages/rocketchat-authorization/i18n/de.i18n.json
  20. 1
      packages/rocketchat-authorization/i18n/en.i18n.json
  21. 1
      packages/rocketchat-authorization/i18n/fi.i18n.json
  22. 1
      packages/rocketchat-authorization/i18n/hr.i18n.json
  23. 1
      packages/rocketchat-authorization/i18n/ko.i18n.json
  24. 1
      packages/rocketchat-authorization/i18n/nl.i18n.json
  25. 3
      packages/rocketchat-authorization/i18n/pl.i18n.json
  26. 1
      packages/rocketchat-authorization/i18n/pt.i18n.json
  27. 1
      packages/rocketchat-authorization/i18n/ro.i18n.json
  28. 5
      packages/rocketchat-channel-settings-mail-messages/i18n/pl.i18n.json
  29. 2
      packages/rocketchat-channel-settings-mail-messages/server/methods/mailMessages.coffee
  30. 7
      packages/rocketchat-channel-settings/i18n/pl.i18n.json
  31. 3
      packages/rocketchat-integrations/package.js
  32. 99
      packages/rocketchat-integrations/server/api/api.coffee
  33. 102
      packages/rocketchat-integrations/server/processWebhookMessage.js
  34. 21
      packages/rocketchat-integrations/server/triggers.coffee
  35. 2
      packages/rocketchat-lib/client/lib/settings.coffee
  36. 7
      packages/rocketchat-lib/server/startup/settingsOnLoadSMTP.coffee
  37. 4
      packages/rocketchat-livechat/app/i18n/pl.i18n.json
  38. 6
      packages/rocketchat-livechat/i18n/pl.i18n.json
  39. 1
      packages/rocketchat-mailer/i18n/pl.i18n.json
  40. 5
      packages/rocketchat-mentions-flextab/i18n/pl.i18n.json
  41. 14
      packages/rocketchat-oauth2-server-config/oauth/client/oauth2-client.coffee
  42. 32
      packages/rocketchat-oauth2-server-config/oauth/client/oauth2-client.html
  43. 60
      packages/rocketchat-oauth2-server-config/oauth/client/stylesheets/oauth2.less
  44. 9
      packages/rocketchat-oauth2-server-config/oauth/server/oauth2-server.coffee
  45. 5
      packages/rocketchat-theme/i18n/fi.i18n.json
  46. 6
      packages/rocketchat-ui-account/account/accountProfile.coffee
  47. 3
      packages/rocketchat-ui-account/account/accountProfile.html
  48. 10
      packages/rocketchat-ui-admin/admin/admin.coffee
  49. 13
      packages/rocketchat-ui-flextab/flex-tab/tabs/messageSearch.coffee
  50. 1
      packages/rocketchat-ui-message/message/message.coffee
  51. 27
      packages/rocketchat-ui/lib/RoomManager.coffee
  52. 4
      packages/rocketchat-ui/lib/notification.coffee
  53. 1
      packages/rocketchat-ui/views/app/privateHistory.html
  54. 8
      packages/rocketchat-ui/views/app/videoCall/videoButtons.html
  55. 4
      server/lib/accounts.coffee
  56. 19
      server/startup/cron.coffee

@ -38,7 +38,7 @@ ecmascript@0.1.6
ecmascript-runtime@0.2.6
ejson@1.0.7
email@1.0.8
emojione:emojione@2.0.0
emojione:emojione@2.0.1
facebook@1.2.2
fastclick@1.0.7
francocatena:status@1.5.0
@ -74,7 +74,7 @@ livedata@1.0.15
localstorage@1.0.5
logging@1.0.8
matb33:collection-hooks@0.8.1
mdg:validation-error@0.2.0
mdg:validation-error@0.3.0
meteor@1.1.10
meteor-base@1.0.1
meteor-developer@1.1.5
@ -85,7 +85,7 @@ mizzao:autocomplete@0.5.1
mizzao:timesync@0.3.4
mobile-experience@1.0.1
mobile-status-bar@1.0.6
momentjs:moment@2.11.0
momentjs:moment@2.11.1
monbro:mongodb-mapreduce-aggregation@1.0.1
mongo@1.1.3
mongo-id@1.0.1
@ -105,7 +105,7 @@ ostrio:cookies@2.0.1
pauli:accounts-linkedin@1.2.0
pauli:linkedin@1.2.0
perak:codemirror@1.2.8
percolate:migrations@0.9.7
percolate:migrations@0.9.8
percolate:synced-cron@1.3.0
pntbr:js-yaml-client@0.0.1
promise@0.5.1

@ -24,7 +24,7 @@ The Ultimate Open Source WebChat Platform
* [Documentation](#documentation)
* [License](#license)
* [Development](#development)
* [Installation](#installation)
* [Quick Start](#quick-start-for-code-developers)
* [Branching Model](#branching-model)
* [Translations](#translations)
* [Community](#community)
@ -71,7 +71,7 @@ Deploy your own Rocket.Chat server instantly on [Scalingo](https://scalingo.com)
## Sandstorm.io
[![Rocket.Chat on Sandstorm.io](https://raw.githubusercontent.com/Sing-Li/bbug/master/images/sandstorm.jpg)](https://apps.sandstorm.io/app/vfnwptfn02ty21w715snyyczw0nqxkv3jvawcah10c6z7hj1hnu0)
_*Grab*_ the [Sandstorm SPK for the latest Rocket.Chat release](https://github.com/RocketChat/Rocket.Chat/releases/latest) for testing on your own server.
_*Grab*_ the [Sandstorm SPK for the latest Rocket.Chat release](https://rocket.chat/releases/latest/spk) for testing on your own server.
## Sloppy.io
Host your docker container at [sloppy.io](http://sloppy.io). Get an account and use the [quickstarter](https://github.com/sloppyio/quickstarters/tree/master/rocketchat)
@ -252,7 +252,7 @@ Note that Rocket.Chat is distributed under the [MIT License](http://opensource.o
# Development
## Installation
## Quick start for code developers
Prerequisites:
* [Git](http://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
@ -266,13 +266,7 @@ cd Rocket.Chat
meteor
```
or use docker:
```
git clone https://github.com/RocketChat/Rocket.Chat.git
cd Rocket.Chat
docker run -it -p 3000:3000 -v "$(pwd)":/app danieldent/meteor
```
If you are not a developer and just want to run the server - see [deployment methods](https://github.com/RocketChat/Rocket.Chat/wiki#deployment).
## Branching Model

@ -224,6 +224,7 @@
"Remove" : "إزالة",
"Remove_Admin" : "إزالة مدير",
"Remove_from_room" : "إزالة من الغرفة",
"Removed" : "تمت اﻹزالة",
"Reset" : "إعادة التعيين",
"Reset_password" : "إعادة تعيين كلمة السر",
"Restart" : "إعادة التشغيل",
@ -290,7 +291,7 @@
"Submit" : "تقديم",
"The_channel_name_is_required" : "اسم القناة مطلوب",
"The_field_is_required" : "هذا الحقل %s مطلوب.",
"The_server_will_restart_in_s_seconds" : "سيتم إعادة تشغيل السيرفر في ٪s ثانية",
"The_server_will_restart_in_s_seconds" : "سيتم إعادة تشغيل الخادم في %s ثانية",
"True" : "نعم",
"Type_your_new_password" : "اكتب كلمة المرور الجديدة",
"Unmute_user" : "إلغاء اسكات المستخدم",

@ -401,6 +401,7 @@
"Remove_Admin" : "Admin entfernen",
"Remove_custom_oauth" : "OAuth-Konto entfernen",
"Remove_from_room" : "Aus dem Raum entfernen",
"Removed" : "Entfernt",
"Reset" : "Zurücksetzen",
"Reset_password" : "Passwort zurücksetzen",
"Restart" : "Neustart",

@ -88,6 +88,7 @@
"are_typing" : "are typing",
"Are_you_sure" : "Are you sure?",
"Authorization_URL" : "Authorization URL",
"Authorize" : "Authorize",
"Auto_Load_Images" : "Auto Load Images",
"Avatar_changed_successfully" : "Avatar changed successfully",
"Avatar_URL" : "Avatar URL",
@ -231,7 +232,9 @@
"is_typing_male" : "is typing",
"italics" : "italics",
"join" : "Join",
"Join_audio_call" : "Join audio call",
"Join_the_Community" : "Join the Community",
"Join_video_call" : "Join video call",
"Jump_to_first_unread" : "Jump to first unread",
"Jump_to_message" : "Jump to message",
"Jump_to_recent_messages" : "Jump to recent messages",
@ -274,6 +277,8 @@
"Login_with" : "Login with %s",
"login_with" : "Or login directly with",
"Logout" : "Logout",
"Logout_Others" : "Logout From Other Logged In Locations",
"Logged_out_of_other_clients_successfully" : "Logged out of other clients successfully",
"Make_Admin" : "Make Admin",
"Mark_as_read" : "Mark as read",
"Markdown_Headers" : "Markdown Headers",
@ -314,8 +319,8 @@
"More_unreads" : "More unreads",
"Msgs" : "Msgs",
"multi" : "multi",
"Muted" : "Muted",
"Mute_user" : "Mute user",
"Muted" : "Muted",
"My_Account" : "My Account",
"n_messages" : "%s messages",
"Name" : "Name",
@ -399,12 +404,12 @@
"Registration_Succeeded" : "Registration Succeeded",
"Remember_me" : "Remember me",
"Remove" : "Remove",
"Removed" : "Removed",
"Remove_Admin" : "Remove Admin",
"Remove_as_moderator" : "Remove as moderator",
"Remove_as_owner" : "Remove as owner",
"Remove_custom_oauth" : "Remove custom oauth",
"Remove_from_room" : "Remove from room",
"Removed" : "Removed",
"Reset" : "Reset",
"Reset_password" : "Reset password",
"Restart" : "Restart",
@ -452,6 +457,7 @@
"Send_invitation_email_warning" : "In order to send invitation e-mails, you must first configure SMTP settings.",
"Send_Message" : "Send Message",
"Send_your_JSON_payloads_to_this_URL" : "Send your JSON payloads to this URL.",
"Set_as_moderator" : "Set as moderator",
"Settings" : "Settings",
"Settings_updated" : "Settings updated",
"Set_as_moderator" : "Set as moderator",
@ -473,7 +479,9 @@
"SMTP_Test_Button" : "Test SMTP Settings",
"SMTP_Username" : "SMTP Username",
"Sound" : "Sound",
"Start_audio_call" : "Start audio call",
"Start_of_conversation" : "Start of conversation",
"Start_video_call" : "Start video call",
"Start_with_s_for_user_or_s_for_channel_Eg_s_or_s" : "Start with <code class=\"inline\">%s</code> for user or <code class=\"inline\">%s</code> for channel. Eg: <code class=\"inline\">%s</code> or <code class=\"inline\">%s</code>",
"Statistics" : "Statistics",
"Stats_Active_Users" : "Active Users",
@ -510,8 +518,8 @@
"The_redirectUri_is_required" : "The redirectUri is required",
"The_server_will_restart_in_s_seconds" : "The server will restart in %s seconds",
"The_setting_s_is_configured_to_s_and_you_are_accessing_from_s" : "The setting <strong>%s</strong> is configured to <strong>%s</strong> and you are accessing from <strong>%s</strong>!",
"The_user_wont_be_able_to_type_in_s" : "The user won't be able to type in %s",
"The_user_will_be_removed_from_s" : "The user will be removed from %s",
"The_user_wont_be_able_to_type_in_s" : "The user won't be able to type in %s",
"There_are_no_integrations" : "There are no integrations",
"This_is_a_push_test_messsage" : "This is a push test messsage",
"True" : "True",
@ -530,6 +538,10 @@
"Use_this_username" : "Use this username",
"Use_uploaded_avatar" : "Use uploaded avatar",
"Use_url_for_avatar" : "Use url for avatar",
"User__username__is_now_a_moderator_of__room_name_" : "User __username__ is now a moderator of __room_name__",
"User__username__removed_from__room_name__moderators" : "User __username__ removed from __room_name__ moderators",
"User__username__was_added_as_a_moderator_by__user_by_" : "User <em>__username__</em> was added as a moderator by <em>__user_by__</em>",
"User__username__was_removed_as_a_moderator_by__user_by_" : "User <em>__username__</em> was removed as a moderator by <em>__user_by__</em>",
"User_added_by" : "User <em>__user_added__</em> added by <em>__user_by__</em>.",
"User_Channels" : "User Channels",
"User_has_been_activated" : "User has been activated",
@ -583,6 +595,7 @@
"We_have_sent_registration_email" : "We have sent you an e-mail to confirm your registration. If you do not receive an e-mail shortly, please come back and try again.",
"Welcome" : "Welcome <em>%s</em>.",
"Welcome_to_the" : "Welcome to the",
"will_be_able_to" : "will be able to",
"With_whom" : "With whom",
"Yes" : "Yes",
"Yes_clear_all" : "Yes, clear all!",
@ -590,6 +603,7 @@
"Yes_mute_user" : "Yes, mute user!",
"Yes_remove_user" : "Yes, remove user!",
"you_are_in_preview_mode_of" : "You are in preview mode of channel #<strong>__room_name__</strong>",
"You_are_logged_in_as" : "You are logged in as",
"You_can_change_a_different_avatar_too" : "You can override the avatar used to post from this integration.",
"You_can_use_an_emoji_as_avatar" : "You can also use an emoji as an avatar.",
"You_have_been_muted" : "You have been muted and cannot speak in this room",

@ -88,6 +88,7 @@
"are_typing" : "kirjoittavat",
"Are_you_sure" : "Oletko varma?",
"Authorization_URL" : "Valtuutus URL",
"Authorize" : "Valtuuta",
"Auto_Load_Images" : "Lataa kuvat automaattisesti\n",
"Avatar_changed_successfully" : "Avatar vaihdettu onnistuneesti",
"Avatar_URL" : "Avatarin URL",
@ -231,7 +232,9 @@
"is_typing_male" : "kirjoittaa",
"italics" : "kursivoitu",
"join" : "Liity",
"Join_audio_call" : "Liity äänipuheluun",
"Join_the_Community" : "Liity yhteisöön",
"Join_video_call" : "Liity videopuheluun",
"Jump_to_first_unread" : "Siirry ensimmäiseen lukemattomaan",
"Jump_to_message" : "Siirry viestiin",
"Jump_to_recent_messages" : "Siirry viimeisimpiin viestiin",
@ -274,6 +277,8 @@
"Login_with" : "Kirjaudu käyttäen %s",
"login_with" : "tai kirjaudu suoraan",
"Logout" : "Kirjaudu ulos",
"Logout_Others" : "Kirjaa ulos muut sessiot",
"Logged_out_of_other_clients_successfully" : "Muut sessiot kirjattu ulos onnistuneesti",
"Make_Admin" : "Tee ylläpitäjäksi",
"Mark_as_read" : "Merkitse luetuksi",
"Markdown_Headers" : "Markdown otsikot",
@ -315,6 +320,7 @@
"Msgs" : "Viestit",
"multi" : "monta",
"Mute_user" : "Mykistä käyttäjä",
"Muted" : "Mykistetty",
"My_Account" : "Käyttäjätilini",
"n_messages" : "%s viestiä",
"Name" : "Nimi",
@ -399,8 +405,10 @@
"Remember_me" : "Muista minut",
"Remove" : "Poista",
"Remove_Admin" : "Poista ylläpitäjyys",
"Remove_as_moderator" : "Poista moderaattoristatus",
"Remove_custom_oauth" : "Poista mukautettu oauth",
"Remove_from_room" : "Poista huoneesta",
"Removed" : "Poistettu",
"Reset" : "Nollaa",
"Reset_password" : "Nollaa salasana",
"Restart" : "Käynnistä uudelleen",
@ -448,6 +456,7 @@
"Send_invitation_email_warning" : "Lähettääksesi sähköpostikutsuja, sinun täytyy ensin tehdä SMTP asetukset.",
"Send_Message" : "Lähetä viesti",
"Send_your_JSON_payloads_to_this_URL" : "Lähetä JSON payload tähän URL-osoitteeseen",
"Set_as_moderator" : "Aseta moderaattoriksi",
"Settings" : "Asetukset",
"Settings_updated" : "Asetukset päivitetty",
"Should_be_a_URL_of_an_image" : "Kuvan URL-osoite",
@ -467,7 +476,9 @@
"SMTP_Test_Button" : "Testaa SMTP-asetukset",
"SMTP_Username" : "SMTP Käyttäjätunnus",
"Sound" : "Ääni",
"Start_audio_call" : "Aloita äänipuhelu",
"Start_of_conversation" : "Keskustelun alku",
"Start_video_call" : "Aloita videopuhelu",
"Start_with_s_for_user_or_s_for_channel_Eg_s_or_s" : "Aloita <code class=\"inline\">%s</code> käyttäjänä or <code class=\"inline\">%s</code> kanavana. Esim: <code class=\"inline\">%s</code> tai <code class=\"inline\">%s</code>",
"Statistics" : "Tilastot",
"Stats_Active_Users" : "Aktiivisia käyttäjiä",
@ -504,6 +515,8 @@
"The_redirectUri_is_required" : "Ohjaus URI on pakollinen",
"The_server_will_restart_in_s_seconds" : "Palvelin käynnistyy %s sekunnin kuluttua",
"The_setting_s_is_configured_to_s_and_you_are_accessing_from_s" : "Asetus <strong>%s</strong> on määritelty arvoon <strong>%s</strong> yrität käyttää tätä lähteenä <strong>%s</strong>!",
"The_user_will_be_removed_from_s" : "Käyttäjä poistetaan %s",
"The_user_wont_be_able_to_type_in_s" : "Käyttäjä ei pysty kirjoittamaan %s",
"There_are_no_integrations" : "Ei integraatioita",
"This_is_a_push_test_messsage" : "Tämä on testi-pushviesti",
"True" : "Kyllä",
@ -522,11 +535,17 @@
"Use_this_username" : "Käytä tätä käyttäjänimieä",
"Use_uploaded_avatar" : "Käytä ladattua avataria",
"Use_url_for_avatar" : "Käytä avatar-URLia",
"User__username__is_now_a_moderator_of__room_name_" : "Käyttäjä __username__ on nyt __room_name__ moderaattori",
"User__username__removed_from__room_name__moderators" : "Käyttäjän __username__ moderaattoristatus __room_name__  on poistettu",
"User__username__was_added_as_a_moderator_by__user_by_" : "Käyttäjä <em>__username__</em> on lisätty moderaattoriksi <em>__user_by__</em> toimesta",
"User__username__was_removed_as_a_moderator_by__user_by_" : "Käyttäjän <em>__username__</em> moderaattoristatus poistettu käyttäjän  <em>__user_by__</em> toimesta",
"User_added_by" : "Käyttäjä <em>__user_added__</em> lisätty <em>__user_by__</em> toimesta.",
"User_Channels" : "Käyttäjän kanavat",
"User_has_been_activated" : "Käyttäjä on aktivoitu",
"User_has_been_deactivated" : "Käyttäjä on deaktivoitu",
"User_has_been_deleted" : "Käyttäjä on poistettu",
"User_has_been_muted_in_s" : "Käyttäjä on mykistetty %s",
"User_has_been_removed_from_s" : "Käyttäjä on poistettu %s",
"User_Info" : "Käyttäjän tiedot",
"User_is_no_longer_an_admin" : "Käyttäjä ei ole enää ylläpitäjä",
"User_is_not_activated" : "Käyttäjää ei ole aktivoitu",
@ -565,11 +584,15 @@
"We_have_sent_registration_email" : "Lähetimme rekisteröitymisvahvistuksen sähköpostiisi. Mikäli et saanut sähköpostia, yritä uudelleen.",
"Welcome" : "Tervetuloa <em>%s</em>.",
"Welcome_to_the" : "Tervetuloa",
"will_be_able_to" : "mahdollistaa",
"With_whom" : "kanssa",
"Yes" : "Kyllä",
"Yes_clear_all" : "Jep, tyhjennä kaikki!",
"Yes_delete_it" : "Kyllä, poista!",
"Yes_mute_user" : "Kyllä, mykistä käyttäjä!",
"Yes_remove_user" : "Kyllä, poista käyttäjä!",
"you_are_in_preview_mode_of" : "Tämä on kanavan #<strong>__room_name__</strong> esikatselutila",
"You_are_logged_in_as" : "Olet kirjautunut sisään käyttäjänä",
"You_can_change_a_different_avatar_too" : "Voit vaihtaa tähän eri avatarin tätä integraatiota varten",
"You_can_use_an_emoji_as_avatar" : "Voit käyttää myös emojia avatarina.",
"You_have_been_muted" : "Olet mykistetty, et voi puhua tässä huoneessa.",

@ -4,14 +4,33 @@
"Access_Online_Demo" : "צפייה בגרסת ההדגמה",
"Accounts" : "חשבונות",
"Accounts_EmailVerification" : "אימות דוא״ל",
"Accounts_OAuth_Custom_Authorize_Path" : "נתיב אימות",
"Accounts_OAuth_Custom_Button_Color" : "צבע הכפתור",
"Accounts_OAuth_Custom_Button_Label_Color" : "צבע טקסט הכפתור",
"Accounts_OAuth_Custom_Button_Label_Text" : "טקסט הכפתור",
"Accounts_OAuth_Custom_Enable" : "הפעלה",
"Accounts_OAuth_Custom_Identity_Path" : "נתיב הזהות",
"Accounts_OAuth_Custom_Secret" : "סוד",
"Accounts_OAuth_Custom_Token_Path" : "נתיב האסימון",
"Accounts_OAuth_Custom_URL" : "כתובת",
"Accounts_OAuth_Facebook" : "כניסה לפייסבוק",
"Accounts_OAuth_Facebook_id" : "מזהה יישומון פייסבוק",
"Accounts_OAuth_Facebook_secret" : "סוד פייסבוק",
"Accounts_OAuth_Github_id" : "מזהה לקוח",
"Accounts_OAuth_Github_secret" : "סוד לקוח",
"Accounts_OAuth_Google" : "כניסה לגוגל",
"Accounts_OAuth_Google_id" : "מזהה בגוגל",
"Accounts_OAuth_Google_secret" : "סוד גוגל",
"Accounts_OAuth_Linkedin" : "כניסה ל־LinkedIn",
"Accounts_OAuth_Linkedin_id" : "מזהה LinkedIn",
"Accounts_OAuth_Linkedin_secret" : "סוד LinkedIn",
"Accounts_PasswordReset" : "איפוס ססמה",
"Accounts_RegistrationForm" : "טופס הרשמה",
"Accounts_RegistrationForm_Secret_URL" : "כתובת סודית",
"Accounts_RegistrationRequired" : "נדרשת הרשמה",
"Add_Members" : "הוספת חברים",
"Add_users" : "הוספת משתמשים",
"Administration" : "ניהול",
"All_channels" : "כל הערוצים",
"and" : "ו",
"API_Embed" : "הטמעה",
@ -45,6 +64,7 @@
"Confirm_password" : "אימות הססמה",
"Contact" : "יצירת קשר",
"Conversation" : "שיחה",
"Convert_Ascii_Emojis" : "המרת ASCII לאימוג׳י",
"COPY_TO_CLIPBOARD" : "העתקה ללוח הגזירים",
"Create_new" : "יצירת חדש",
"Create_new_direct_message_room" : "יצירת חדר הודעה ישירה חדש",
@ -54,6 +74,8 @@
"days" : "ימים",
"Deleted" : "נמחק!",
"Direct_Messages" : "הודעות ישירות",
"Disable_New_Message_Notification" : "נטרול התרעת הודעה חדשה",
"Disable_New_Room_Notification" : "נטרול התרעת חדר חדש",
"Drop_to_upload_file" : "יש להשליך לכאן כדי להעלות קובץ",
"Duplicate_channel_name" : "כבר קיים ערוץ בשם ‚%s‘",
"Duplicate_private_group_name" : "כבר קיימת קבוצה פרטית בשם ‚%s‘",
@ -75,6 +97,7 @@
"General" : "כללי",
"Get_to_know_the_team" : "היכרות עם הצוות שמאחורי Rocket.Chat",
"github_no_public_email" : "אין לך אף כתובת דוא״ל פומבית בחשבון ה־GitHub שלך",
"Has_more" : "יש עוד",
"Have_your_own_chat" : "קח את העניינים לידיים. האפליקציה Rocket.Chat, ש",
"Hide_room" : "להסתיר את החדר",
"History" : "היסטוריה",
@ -101,8 +124,13 @@
"Jump_to_recent_messages" : "מעבר להודעות האחרונות",
"Language" : "שפה",
"Language_Version" : "גרסה אנגלית",
"Last_login" : "כניסה אחרונה",
"Last_message" : "ההודעה האחרונה",
"Layout" : "פריסה",
"Layout_Home_Body" : "גוף עמוד הבית",
"Layout_Home_Title" : "כותרת עמוד הבית",
"Layout_Login_Header" : "כותרת כניסה",
"Layout_Login_Terms" : "תנאי כניסה",
"Layout_Privacy_Policy" : "מדיניות פרטיות",
"Layout_Terms_of_Service" : "תנאי השירות",
"LDAP" : "LDAP",
@ -112,18 +140,23 @@
"Leave_room" : "לעזוב את החדר",
"line" : "שורה",
"Load_more" : "טעינת נוספים",
"Loading..." : "בטעינה…",
"Loading_more_from_history" : "הודעות נוספות נטענות מההיסטוריה",
"Loading_suggestion" : "ההצעות נטענות…",
"Login" : "התחברות",
"Login_with" : "כניסה עם %s",
"login_with" : "או להיכנס ישירות עם",
"Logout" : "יציאה",
"Mark_as_read" : "סימון כנקרא",
"Members" : "חברים",
"Members_List" : "רשימת חברים",
"Members_placeholder" : "חברים",
"Message" : "הודעה",
"Message_AllowDeleting" : "לאפשר מחיקת הודעות",
"Message_AllowEditing" : "לאפשר עריכת הודעות",
"Message_KeepHistory" : "שמירה על היסטוריית הודעות",
"Message_MaxAllowedSize" : "גודל ההודעה המרבי המותר",
"Message_removed" : "ההודעה הוסרה",
"Message_ShowDeletedStatus" : "הצגת מצב מחיקה",
"Message_ShowEditedStatus" : "הצגת מצב ערוך",
"Meta_language" : "שפה",
@ -152,6 +185,7 @@
"Notify_all_in_this_room" : "להודיע לכל מי שבחדר",
"Online" : "מחובר",
"Oops!" : "אופס",
"Opt_out_statistics" : "לא לשלוח את הסטטיסטיקה שלי ל־Rocket.Chat",
"others" : "אחרים",
"Password" : "ססמה",
"Password_changed_successfully" : "הססמה הוחלפה בהצלחה",
@ -167,6 +201,7 @@
"Profile_saved_successfully" : "הפרופיל נשמר בהצלחה",
"Proudly_developed" : "פותח בגאווה עם Meteor",
"Push" : "דחיפה",
"Push_debug" : "ניפוי שגיאות",
"Push_enable_gateway" : "הפעלת שער גישה",
"Push_gateway" : "שער גישה",
"Push_test_push" : "בדיקה",
@ -183,6 +218,7 @@
"Room" : "חדר",
"Room_name_changed" : "שם החדר שונה ל: <em>__room_name__</em> על ידי המשתמש <em>__user_by__</em>",
"Room_name_changed_successfully" : "שם החדר שונה בהצלחה",
"room_user_count" : "משתמשי %s",
"Rooms" : "חדרים",
"SAML" : "SAML",
"Save_changes" : "שמירת השינויים",
@ -201,21 +237,29 @@
"Send_confirmation_email" : "שליחת דוא״ל אימות",
"Send_Message" : "שליחת הודעה",
"Settings" : "הגדרות",
"Settings_updated" : "ההגדרות עודכנו",
"Showing_online_users" : "מציג <b>__total_online__</b> מתוך __total__ משתמשים",
"Showing_results" : "<p>מוצגות <b>%s</b> תוצאות</p>",
"Silence" : "השתקה",
"since_creation" : "מאז %s",
"Site_Name" : "שם האתר",
"SMTP" : "SMTP",
"SMTP_Host" : "מארח ",
"SMTP_Password" : "ססמה ל־",
"SMTP_Port" : "פתחת SMTP",
"SMTP_Username" : "שם משתמש ב־SMTP",
"Sound" : "שמע",
"Start_of_conversation" : "התחלת השיחה",
"Statistics" : "סטטיסטיקה",
"Stats_Away_Users" : "משתמשים שאינם נמצאים",
"Stats_Total_Messages" : "סך כל ההודעות",
"strike" : "מחוק",
"Submit" : "שליחה",
"Success" : "הצליח",
"The_channel_name_is_required" : "שם הערוץ נדרש",
"The_field_is_required" : "השדה %s הוא חובה.",
"The_server_will_restart_in_s_seconds" : "השרת יפעיל את עצמו מחדש בעוד ",
"Upload_file_question" : "להעלות קובץ?",
"Use_Emojis" : "שימוש באימוג׳י",
"Use_initials_avatar" : "שימוש בראשי התיבות של שם המשתמש שלך",
"use_menu" : "ניתן להשתמש בתפריט הצד כדי לגשת לחדרים ולצ׳אטים שלך.",
@ -223,6 +267,8 @@
"Use_this_username" : "יש להשתמש בשם המשתמש הזה",
"Use_uploaded_avatar" : "שימוש בתמונה שהועלתה",
"User_added_by" : "המשתמש <em>__user_added__</em> נוסף על ידי <em>__user_by__</em>",
"User_has_been_activated" : "המשתמש הופעל",
"User_has_been_deactivated" : "המשתמש נוטרל",
"User_joined_channel" : "הצטרף לערוץ.",
"User_joined_channel_female" : "הצטרפה לערוץ.",
"User_joined_channel_male" : "הצטרף לערוץ.",

@ -230,6 +230,7 @@
"Remove" : "Makni",
"Remove_Admin" : "Makni Administratora",
"Remove_from_room" : "Uklonite iz sobe",
"Removed" : "Uklonjeno",
"Reset_password" : "Resetiraj lozinku",
"Room" : "Soba",
"Room_archived" : "Soba je arhivirana",

@ -326,6 +326,7 @@
"Remove" : "삭제",
"Remove_Admin" : "관리자 권한 제거",
"Remove_custom_oauth" : "사용자 정의 OAuth 제거",
"Removed" : "제거됨",
"Reset_password" : "암호 재설정",
"Restart" : "재시작",
"Room" : "방",

@ -334,6 +334,7 @@
"Remove_Admin" : "Verwijder Admin",
"Remove_custom_oauth" : "Verwijder aangepaste OAuth",
"Remove_from_room" : "Verwijderen uit de kamer",
"Removed" : "Verwijderd",
"Reset" : "Reset",
"Reset_password" : "Reset Wachtwoord",
"Restart" : "Herstart",

@ -59,7 +59,7 @@
"Accounts_RegistrationForm_SecretURL" : "Sekretny adres URL formularza rejestracyjnego",
"Accounts_RegistrationRequired" : "Musisz się zarejestrować",
"Accounts_RequireNameForSignUp" : "Wymagaj podana nazwy podczas rejestracji",
"Accounts_ShowFormLogin" : "Pokaż Formularz logowania",
"Accounts_ShowFormLogin" : "Pokaż formularz logowania",
"Activate" : "Aktywuj",
"Add_custom_oauth" : "Dodaj własne OAuth",
"Add_Members" : "Dodaj członków",
@ -74,6 +74,7 @@
"API_Embed" : "Osadź",
"API_EmbedDisabledFor" : "Wyłącz osadzanie dla użytkowników",
"API_EmbedDisabledFor_Description" : "Lista użytkowników oddzielonych przecinkami",
"Archive" : "Archiwizuj",
"are_also_typing" : "również piszą",
"are_typing" : "piszą",
"Are_you_sure" : "Jesteś pewny?",
@ -86,6 +87,7 @@
"Away_female" : "Zaraz wracam",
"away_male" : "zaraz wracam",
"Away_male" : "Zaraz wracam",
"Back_to_integrations" : "Powrót do integracji",
"Back_to_login" : "Wróć do strony logowania",
"bold" : "pogrubienie",
"busy" : "zajęty",
@ -110,6 +112,7 @@
"Contact" : "Kontakt",
"Conversation" : "Rozmowa",
"Convert_Ascii_Emojis" : "Konwertuj ASCII do Emoji",
"COPY_TO_CLIPBOARD" : "SKOPIUJ DO SCHOWKA",
"Create_new" : "Utwórz",
"Create_new_direct_message_room" : "Nowa prywatna rozmowa",
"Create_new_private_group" : "Utwórz prywatną grupę",
@ -141,6 +144,7 @@
"Enable_Desktop_Notifications" : "Włącz powiadomienia na pulpicie",
"Enter_info" : "Podaj swoje dane",
"Enter_to" : "Naciśnij Enter: ",
"Error" : "Błąd",
"Error_changing_password" : "Błąd zmiany hasła",
"Error_too_many_requests" : "Błąd, zbyt wiele żądań. Proszę zwolnij. Musisz poczekać %s sekund zanim spróbujesz ponownie",
"Esc_to" : "Naciśnij Esc: ",
@ -166,13 +170,18 @@
"hours" : "godzin",
"Incorrect_Password" : "Hasło jest nieprawidłowe",
"inline_code" : "kod",
"Install_Extension" : "Zainstaluj rozszerzenie",
"Install_FxOs" : "Zainstaluj Rocket.Chat w Firefoksie",
"Install_FxOs_done" : "Świetnie! Możesz teraz włączać Rocket.Chat poprzez ikonę na ekranie głównym. Życzymy miłego korzystania z Rocket.Chat!",
"Install_FxOs_error" : "Niestety, coś nie zadziałało! Wystąpił następujący błąd:",
"Install_FxOs_follow_instructions" : "Potwierdź instalowanie aplikacji na twoim urządzeniu (gdy wyskoczy pytanie naciśnij przycisk \"Zainstaluj\").",
"Integration_New" : "Nowy Integracja",
"Integrations" : "Integracje",
"Invalid_confirm_pass" : "Podane hasła nie są jednakowe",
"Invalid_email" : "E-mail jest nieprawidłowy",
"Invalid_file_height" : "Nieprawidłowa wysokość pliku",
"Invalid_file_type" : "Nieprawidłowy typ pliku",
"Invalid_file_width" : "Nieprawidłowa szerokość pliku",
"Invalid_name" : "Nazwa nie może być pusta",
"Invalid_pass" : "Hasło nie może być puste",
"Invalid_room_name" : "<strong>%s</strong> nie jest poprawną nazwą pokoju, <br / >użyj tylko liter, cyfr i myślników",
@ -191,6 +200,8 @@
"italics" : "kursywa",
"join" : "Dołącz",
"Join_the_Community" : "Dołącz do społeczności",
"Jump_to_first_unread" : "Przejdź do pierwszej nieprzeczytanej",
"Jump_to_recent_messages" : "Przejdź do ostatnich wiadomości",
"Language" : "Język",
"Language_Version" : "Wersja angielska",
"Last_login" : "Ostatnie logowanie",
@ -270,6 +281,7 @@
"Name" : "Nazwa",
"Name_cant_be_empty" : "Nazwa nie może być pusta",
"Name_optional" : "Nazwa (opcjonalnie)",
"New_integration" : "Nowa integracja",
"New_messages" : "Nowe wiadomości",
"New_password" : "Nowe hasło",
"No_channel_with_name_%s_was_found" : "Nie odnaleziono kanału o nazwie <strong>\"%s\"</strong>!",
@ -293,6 +305,7 @@
"Oops!" : "Ups",
"Opt_out_statistics" : "Nie wysyłaj statystyk do autorów Rocket.Chat",
"Opt_out_statistics_warning" : "Przesyłając swoje statystyki pomagasz nam określić jak instalacji Rocket.Chat jest w użyciu i jak dobrze sprawuje się nasza aplikacja, co pozwala nam ją wciąż ulepszać. Nie przesyłamy żadnych informacji o użytkownikach, a wszystkie otrzymane informacje są traktowane jako poufne. Jeśli chcesz nadal przesyłać nam statystyki, odznacz powyższe pole. Dziękujemy.",
"optional" : "opcjonalne",
"others" : "inni",
"Password" : "Hasło",
"Password_Change_Disabled" : "Administrator czatu wyłączył możliwość zmiany haseł",
@ -329,14 +342,19 @@
"quote" : "cytat",
"Recents" : "Najnowsze",
"Record" : "Nagrywaj",
"Refresh_your_page_after_install_to_enable_screen_sharing" : "Odśwież stronę po instalacji, aby umożliwić dzielenie ekranu",
"Register" : "Zarejestruj nowe konto",
"Registration_Succeeded" : "Rejestracja zakończona",
"Remember_me" : "Zapamiętaj mnie",
"Remove" : "Usuń",
"Remove_Admin" : "Zabierz Admina",
"Remove_custom_oauth" : "Usuń własne OAuth",
"Removed" : "Usunięto",
"Reset_password" : "Zresetuj hasło",
"Restart" : "Uruchom ponownie",
"Restart_the_server" : "Uruchom serwer ponownie",
"Room" : "Pokój",
"Room_archived" : "Pokój zarchiwizowany",
"Room_name_changed" : "Nazwa pokoju zmieniona na: <em>__room_name__</em>przez <em>__user_by__</em>",
"Room_name_changed_successfully" : "Nazwa pokoju zmieniona",
"Room_not_found" : "Nie odnaleziono pokoju",
@ -353,6 +371,7 @@
"SAML_Custom_Provider" : "Własny dostawca (provider)",
"Save_changes" : "Zapisz zmiany",
"Save_Mobile_Bandwidth" : "Oszczędzaj przepustowość",
"Screen_Share" : "Współdzielenie ekranu",
"Search" : "Szukaj",
"Search_Messages" : "Przeszukaj wiadomości",
"Search_settings" : "Przeszukaj ustawienia",
@ -414,8 +433,11 @@
"Stop_Recording" : "Zatrzymaj nagrywanie",
"strike" : "przekreślenie",
"Submit" : "Prześlij",
"Success" : "Sukces",
"The_field_is_required" : "Pole %s jest wymagane.",
"The_server_will_restart_in_s_seconds" : "Serwer zostanie ponownie uruchomiony za %s sekund",
"True" : "Tak",
"Type_your_new_password" : "Wprowadź nowe hasło",
"Unnamed" : "Anonimowy",
"Unread_Rooms" : "Nieprzeczytane pokoje",
"Unread_Rooms_Mode" : "Tryb nieprzeczytanych pokoi",
@ -468,6 +490,7 @@
"Yes_delete_it" : "Tak, usuń to!",
"you_are_in_preview_mode_of" : "Jesteś w trybie podglądu kanału # <strong>__room_name__</strong>",
"You_need_confirm_email" : "Aby się zalogować musisz potwierdzić swój adres e-mail!",
"You_need_install_an_extension_to_allow_screen_sharing" : "Musisz zainstalować rozszerzenie, aby umożliwić dzielenie ekranu",
"You_will_not_be_able_to_recover" : "Nie będziesz w stanie odzyskać tej wiadomości!",
"Your_entry_has_been_deleted" : "Twój wpis został usunięty.",
"Your_Open_Source_solution" : "Twój własny czat Open Source"

@ -66,6 +66,7 @@
"are_also_typing" : "também estão digitando",
"are_typing" : "estão digitando",
"Are_you_sure" : "Você tem certeza?",
"Authorize" : "Autorizar",
"Auto_Load_Images" : "Auto Carregar Imagens",
"Avatar_changed_successfully" : "Avatar alterado com sucesso",
"Avatar_url_invalid_or_error" : "A URL fornecida é inválida ou não acessível. Por favor tente novamente, mas com uma url diferente.",
@ -317,6 +318,7 @@
"Remove" : "Remover",
"Remove_Admin" : "Remover Administrador",
"Remove_custom_oauth" : "Remover oauth customizado",
"Removed" : "Removido",
"Reset_password" : "Resetar senha",
"Restart" : "Reiniciar",
"Restart_the_server" : "Reiniciar o servidor",
@ -448,11 +450,13 @@
"We_have_sent_registration_email" : "Nós lhe enviamos um e-mail para confirmar o seu registro. Se você não receber um e-mail em breve, por favor retorne e tente novamente.",
"Welcome" : "Seja bem-vindo <em>%s</em>.",
"Welcome_to_the" : "Bem-vindo ao",
"will_be_able_to" : "poderá",
"With_whom" : "Com quem",
"Yes" : "Sim",
"Yes_clear_all" : "Sim, limpar tudo!",
"Yes_delete_it" : "Sim, exclua!",
"you_are_in_preview_mode_of" : "Esta é uma prévia do canal #<strong>__room_name__</strong>",
"You_are_logged_in_as" : "Vocês está logado como",
"You_need_confirm_email" : "Você precisa confirmar seu email para logar!",
"You_will_not_be_able_to_recover" : "Você não será capaz de desfazer!",
"Your_entry_has_been_deleted" : "Sua mensagem foi excluída.",

@ -2,6 +2,7 @@
"Access_not_authorized" : "Acces neautorizat",
"Access_online_demo" : "Accesați demo on-line",
"Access_Online_Demo" : "Accesati Demo Online",
"Access_Token_URL" : "Acces Token URL",
"Accounts" : "Conturi",
"Accounts_AllowedDomainsList" : "Listă domenii permise",
"Accounts_AllowedDomainsList_Description" : "Lista separată cu virgule a domeniilor acceptate",
@ -86,6 +87,7 @@
"are_also_typing" : "tastează",
"are_typing" : "tastează",
"Are_you_sure" : "Sigur doriți asta?",
"Authorization_URL" : "URL de autorizare",
"Auto_Load_Images" : "Auto-încarcă imagini",
"Avatar_changed_successfully" : "Avatar schimbat cu succes",
"Avatar_URL" : "URL Avatar ",
@ -313,6 +315,7 @@
"Msgs" : "Mesaje",
"multi" : "multi",
"Mute_user" : "Blochează mesajele utilizatorului",
"Muted" : "Silențios",
"My_Account" : "Contul meu",
"n_messages" : "%s mesaje",
"Name" : "Nume",
@ -397,8 +400,10 @@
"Remember_me" : "Ține-mă minte",
"Remove" : "Elimină",
"Remove_Admin" : "Eliminați utilizator de tip Admin",
"Remove_as_moderator" : "Eliminați ca moderator",
"Remove_custom_oauth" : "Eliminați OAuth personalizat",
"Remove_from_room" : "Eliminați din cameră",
"Removed" : "Eliminat",
"Reset" : "Reset",
"Reset_password" : "Resetează parola",
"Restart" : "Repornire",
@ -446,6 +451,7 @@
"Send_invitation_email_warning" : "Pentru a trimite invitații e-mail, trebuie să configurați mai întâi setările SMTP.",
"Send_Message" : "Trimite mesaj",
"Send_your_JSON_payloads_to_this_URL" : "Trimiteți JSON către această adresă URL.",
"Set_as_moderator" : "Setați ca moderator",
"Settings" : "Setări",
"Settings_updated" : "Setări actualizare",
"Should_be_a_URL_of_an_image" : "Ar trebui să fie o adresă URL a unei imagini.",
@ -502,6 +508,8 @@
"The_redirectUri_is_required" : "URI de redirectare este necesar",
"The_server_will_restart_in_s_seconds" : "Serverul va reporni în %s secunde",
"The_setting_s_is_configured_to_s_and_you_are_accessing_from_s" : "Setarea <strong>%s</strong> e configurată să <strong>%s</strong> iar dumneavoastră accesați din <strong>%s</strong>!",
"The_user_will_be_removed_from_s" : "Utilizatorul va fi eliminat din %s",
"The_user_wont_be_able_to_type_in_s" : "Utilizatorul nu va putea să introducă text în %s",
"There_are_no_integrations" : "Nu sunt integrări",
"This_is_a_push_test_messsage" : "Acesta este un test de notificare Push",
"True" : "Adevărat",
@ -520,11 +528,17 @@
"Use_this_username" : "Folosiți acest nume de utilizator",
"Use_uploaded_avatar" : "Utilizați avatar încărcat",
"Use_url_for_avatar" : "Utilizați URL pentru avatar",
"User__username__is_now_a_moderator_of__room_name_" : "Utilizator __username__  este acum un moderator al __room_name__",
"User__username__removed_from__room_name__moderators" : "Utilizatorul __username__ a fost eliminat din moderatorii  __room_name__",
"User__username__was_added_as_a_moderator_by__user_by_" : "Utilizatorul <em>__username__</em> a fost adăugat ca moderator de către <em>__user_by__</em>",
"User__username__was_removed_as_a_moderator_by__user_by_" : "Utilizatorul <em>__username__</em> a fost scos ca moderator de către <em>__user_by__</em>",
"User_added_by" : "Utilizator <em>__user_added__</em> adăugat de către <em>__user_by__</em>.",
"User_Channels" : "Canale utilizator",
"User_has_been_activated" : "Utilizatorul a fost activat",
"User_has_been_deactivated" : "Utilizator a fost dezactivat",
"User_has_been_deleted" : "Utilizatorul a fost șters",
"User_has_been_muted_in_s" : "Utilizator a fost oprit în %s",
"User_has_been_removed_from_s" : "Utilizator a fost eliminat din %s",
"User_Info" : "Info utilizator",
"User_is_no_longer_an_admin" : "Utilizatorul nu mai este Admin",
"User_is_not_activated" : "Utilizatorul nu este activat",
@ -567,6 +581,8 @@
"Yes" : "Da",
"Yes_clear_all" : "Da, șterge toate!",
"Yes_delete_it" : "Da, șterge-l!",
"Yes_mute_user" : "Da, blochează mesajele utilizatorului",
"Yes_remove_user" : "Da, eliminați utilizatorul!",
"you_are_in_preview_mode_of" : "Vă aflați în modul de previzualizare a canalului #",
"You_can_change_a_different_avatar_too" : "Puteți înlocui avatarul folosit pentru a posta din această integrare.",
"You_can_use_an_emoji_as_avatar" : "Puteți utiliza un emoji ca avatar",

@ -54,74 +54,21 @@ RocketChat.API.v1.addRoute 'chat.messageExamples', authRequired: true,
# Send Channel Message
RocketChat.API.v1.addRoute 'chat.postMessage', authRequired: true,
post: ->
channel = @bodyParams.channel
channelType = channel[0]
channel = channel.substr(1)
switch channelType
when '#'
room = RocketChat.models.Rooms.findOne
$or: [
{_id: channel}
{name: channel}
]
if not room?
return RocketChat.API.v1.failure 'invalid-channel'
rid = room._id
if room.t is 'c'
Meteor.runAsUser @userId, ->
Meteor.call 'joinRoom', room._id
when '@'
roomUser = RocketChat.models.Users.findOne
$or: [
{_id: channel}
{username: channel}
]
if not roomUser?
return RocketChat.API.v1.failure 'invalid-channel'
rid = [@useId, roomUser._id].sort().join('')
room = RocketChat.models.Rooms.findOne(rid)
if not room
Meteor.runAsUser @userId, ->
Meteor.call 'createDirectMessage', roomUser.username
room = RocketChat.models.Rooms.findOne(rid)
else
return RocketChat.API.v1.failure 'invalid-channel-type'
message =
alias: @bodyParams.username or @bodyParams.alias
msg: _.trim(@bodyParams.text or @bodyParams.msg or '')
attachments: @bodyParams.attachments
parseUrls: false
bot:
try
@bodyParams.bot =
u: @userId
groupable: false
if @bodyParams.icon_url? or @bodyParams.avatar?
message.avatar = @bodyParams.icon_url or @bodyParams.avatar
else if @bodyParams.icon_emoji? or @bodyParams.emoji?
message.emoji = @bodyParams.icon_emoji or @bodyParams.emoji
if _.isArray message.attachments
for attachment in message.attachments
if attachment.msg
attachment.text = _.trim(attachment.msg)
delete attachment.msg
messageReturn = processWebhookMessage @bodyParams, @user
message = RocketChat.sendMessage @user, message, room, {}
return RocketChat.API.v1.success
ts: Date.now()
channel: channel
message: message
if not messageReturn?
return RocketChat.API.v1.failure 'unknown-error'
return RocketChat.API.v1.success
ts: Date.now()
channel: messageReturn.channel
message: messageReturn.message
catch e
return RocketChat.API.v1.failure e.error
# Set Channel Topic
RocketChat.API.v1.addRoute 'channels.setTopic', authRequired: true,

@ -2,6 +2,14 @@
"dependencies": {
"image-size": {
"version": "0.4.0"
},
"mime-types": {
"version": "2.1.9",
"dependencies": {
"mime-db": {
"version": "1.21.0"
}
}
}
}
}

@ -20,7 +20,8 @@ Package.onUse(function(api) {
});
Npm.depends({
"image-size": "0.4.0"
"image-size": "0.4.0",
"mime-types": "2.1.9"
});
Package.onTest(function(api) {

@ -1,5 +1,5 @@
sizeOf = Npm.require 'image-size'
mime = Npm.require 'mime-types'
@RocketChatAssetsInstance = new RocketChatFile.GridFS
name: 'assets'
@ -11,8 +11,7 @@ assets =
defaultUrl: 'favicon.ico?v=3'
constraints:
type: 'image'
contentType: 'image/vnd.microsoft.icon'
extention: 'ico'
extension: 'ico'
width: undefined
height: undefined
'favicon.svg':
@ -20,8 +19,7 @@ assets =
defaultUrl: '/images/logo/icon.svg?v=3'
constraints:
type: 'image'
contentType: 'image/svg+xml'
extention: 'svg'
extension: 'svg'
width: undefined
height: undefined
'favicon_64.png':
@ -29,8 +27,7 @@ assets =
defaultUrl: 'images/logo/favicon-64x64.png?v=3'
constraints:
type: 'image'
contentType: 'image/png'
extention: 'png'
extension: 'png'
width: 64
height: 64
'favicon_96.png':
@ -38,8 +35,7 @@ assets =
defaultUrl: 'images/logo/favicon-96x96.png?v=3'
constraints:
type: 'image'
contentType: 'image/png'
extention: 'png'
extension: 'png'
width: 96
height: 96
'favicon_128.png':
@ -47,8 +43,7 @@ assets =
defaultUrl: 'images/logo/favicon-128x128.png?v=3'
constraints:
type: 'image'
contentType: 'image/png'
extention: 'png'
extension: 'png'
width: 128
height: 128
'favicon_192.png':
@ -56,8 +51,7 @@ assets =
defaultUrl: 'images/logo/android-chrome-192x192.png?v=3'
constraints:
type: 'image'
contentType: 'image/png'
extention: 'png'
extension: 'png'
width: 192
height: 192
'favicon_256.png':
@ -65,8 +59,7 @@ assets =
defaultUrl: 'images/logo/favicon-256x256.png?v=3'
constraints:
type: 'image'
contentType: 'image/png'
extention: 'png'
extension: 'png'
width: 256
height: 256
@ -104,8 +97,8 @@ Meteor.methods
if not assets[asset]?
throw new Meteor.Error "Invalid_asset"
if contentType isnt assets[asset].constraints.contentType
throw new Meteor.Error "Invalid_file_type"
if mime.extension(contentType) isnt assets[asset].constraints.extension
throw new Meteor.Error "Invalid_file_type", contentType
file = new Buffer(binaryContent, 'binary')

@ -2,7 +2,6 @@
"Add_user" : "إضافة مستخدم",
"Back_to_permissions" : "العودة إلى التصريحات",
"Permissions" : "التصريحات",
"Removed" : "تمت اﻹزالة",
"Saving" : "جاري الحفظ",
"User_added" : "وأضاف العضو <em>__user_added__</em>.",
"User_not_found" : "لم يتم العثور على المستخدم",

@ -5,7 +5,6 @@
"Cannot_delete_role_because_its_in_use" : "Die Rolle kann nicht gelöscht werden, da sie gerade verwendet wird.",
"New_role" : "Neue Rolle",
"Permissions" : "Berechtigungen",
"Removed" : "Entfernt",
"Role" : "Rolle",
"Role_Editing" : "Rolle bearbeiten",
"Role_removed" : "Die Rolle wurde entfernt.",

@ -5,7 +5,6 @@
"Cannot_delete_role_because_its_in_use" : "Cannot delete role because it's in use",
"New_role" : "New role",
"Permissions" : "Permissions",
"Removed" : "Removed",
"Role" : "Role",
"Role_Editing" : "Role Editing",
"Role_removed" : "Role removed",

@ -5,7 +5,6 @@
"Cannot_delete_role_because_its_in_use" : "Et voi poistaa roolia, koska se on käytössä",
"New_role" : "Uusi rooli",
"Permissions" : "Oikeudet",
"Removed" : "Poistettu",
"Role" : "Rooli",
"Role_Editing" : "Roolin muokkaaminen",
"Role_removed" : "Rooli poistettu",

@ -2,7 +2,6 @@
"Add_user" : "Dodaj korisnika",
"Back_to_permissions" : "Povratak na dozvole",
"Permissions" : "Dopuštenja",
"Removed" : "Uklonjeno",
"Role" : "Uloga",
"Saving" : "Spremanje",
"There_are_no_users_in_this_role" : "Nema korisnika u toj ulozi.",

@ -2,7 +2,6 @@
"Add_user" : "사용자 추가",
"New_role" : "새로운 역할",
"Permissions" : "권한",
"Removed" : "제거됨",
"Saving" : "저장 중",
"User_added" : "사용자 추가함.",
"User_not_found" : "사용자를 찾을 수 없음",

@ -5,7 +5,6 @@
"Cannot_delete_role_because_its_in_use" : "Kan rol niet verwijderen omdat het in gebruik is",
"New_role" : "Nieuwe rol",
"Permissions" : "Machtigingen",
"Removed" : "Verwijderd",
"Role" : "Rol",
"Role_Editing" : "Rol bewerken",
"Role_removed" : "Rol verwijderd",

@ -3,10 +3,11 @@
"Back_to_permissions" : "Powrót do uprawnień",
"New_role" : "Nowa rola",
"Permissions" : "Uprawnienia",
"Removed" : "Usunięto",
"Role" : "Rola",
"Role_Editing" : "Edycja ról",
"Role_removed" : "Rola usunięta",
"Saving" : "Zapisywanie",
"There_are_no_users_in_this_role" : "Ta rola nie ma przypisanych użytkowników.",
"User_added" : "Użytkownik <em>__user_added__</em> dodany.",
"User_not_found" : "Użytkownik nie znaleziony",
"User_removed" : "Użytkownik usunięty"

@ -5,7 +5,6 @@
"Cannot_delete_role_because_its_in_use" : "Não é possível remover o papel pois ele está em uso",
"New_role" : "Novo papel",
"Permissions" : "Permissões",
"Removed" : "Removido",
"Role" : "Papel",
"Role_Editing" : "Edição de Papel",
"Role_removed" : "Papel Removido",

@ -5,7 +5,6 @@
"Cannot_delete_role_because_its_in_use" : "Nu se poate șterge rol, deoarece este în uz",
"New_role" : "Rol nou",
"Permissions" : "Permisiuni",
"Removed" : "Eliminat",
"Role" : "Rol",
"Role_Editing" : "Editare rol",
"Role_removed" : "Rol eliminat",

@ -1 +1,4 @@
{ }
{
"Choose_messages" : "Wybierz wiadomości",
"Mail_Messages" : "Wysyłanie wiadomości przez email"
}

@ -32,6 +32,8 @@ Meteor.methods
name = user.name
email = user.emails?[0]?.address
data.language = data.language.split('-').shift().toLowerCase()
if data.language isnt 'en'
localeFn = Meteor.call 'loadLocale', data.language
if localeFn

@ -1,7 +1,12 @@
{
"Archive_Unarchive" : "Przeniesienie do archiwum",
"Channel" : "Kanał",
"Private_Group" : "Grupa Prywatna",
"Save" : "Zapisz",
"Topic" : "Temat",
"Type" : "Rodzaj",
"Room_Info" : "Ustawienia pokoju",
"room_changed_privacy" : "<em>__user_by__</em> zmienił(a) rodzaj pokoju na: <em>__room_type__</em>",
"room_changed_topic" : "<em>__user_by__</em> zmienił(a) temat pokoju na: <em>__room_topic__</em>"
"room_changed_topic" : "<em>__user_by__</em> zmienił(a) temat pokoju na: <em>__room_topic__</em>",
"Room_topic_changed_successfully" : "Temat pokoju został zmieniony"
}

@ -14,6 +14,7 @@ Package.onUse(function(api) {
api.use('simple:highlight.js');
api.use('rocketchat:lib');
api.use('rocketchat:authorization');
api.use('rocketchat:api');
api.use('kadira:flow-router', 'client');
api.use('templating', 'client');
@ -56,6 +57,8 @@ Package.onUse(function(api) {
api.addFiles('server/triggers.coffee', 'server');
api.addFiles('server/processWebhookMessage.js', 'server');
var _ = Npm.require('underscore');
var fs = Npm.require('fs');
tapi18nFiles = _.compact(_.map(fs.readdirSync('packages/rocketchat-integrations/i18n'), function(filename) {

@ -22,89 +22,24 @@ Api.addRoute ':integrationId/:userId/:token', authRequired: true,
integration = RocketChat.models.Integrations.findOne(@urlParams.integrationId)
user = RocketChat.models.Users.findOne(@userId)
channel = @bodyParams.channel or integration.channel
channelType = channel[0]
channel = channel.substr(1)
switch channelType
when '#'
room = RocketChat.models.Rooms.findOne
$or: [
{_id: channel}
{name: channel}
]
if not room?
return {} =
statusCode: 400
body:
success: false
error: 'invalid-channel'
rid = room._id
if room.t is 'c'
Meteor.runAsUser user._id, ->
Meteor.call 'joinRoom', room._id
when '@'
roomUser = RocketChat.models.Users.findOne
$or: [
{_id: channel}
{username: channel}
]
if not roomUser?
return {} =
statusCode: 400
body:
success: false
error: 'invalid-channel'
rid = [user._id, roomUser._id].sort().join('')
room = RocketChat.models.Rooms.findOne(rid)
if not room
Meteor.runAsUser user._id, ->
Meteor.call 'createDirectMessage', roomUser.username
room = RocketChat.models.Rooms.findOne(rid)
else
return {} =
statusCode: 400
body:
success: false
error: 'invalid-channel-type'
message =
alias: @bodyParams.username or @bodyParams.alias or integration.alias
msg: _.trim(@bodyParams.text or @bodyParams.msg or '')
attachments: @bodyParams.attachments
parseUrls: false
bot:
i: integration._id
groupable: false
if @bodyParams.icon_url? or @bodyParams.avatar?
message.avatar = @bodyParams.icon_url or @bodyParams.avatar
else if @bodyParams.icon_emoji? or @bodyParams.emoji?
message.emoji = @bodyParams.icon_emoji or @bodyParams.emoji
else if integration.avatar?
message.avatar = integration.avatar
else if integration.emoji?
message.emoji = integration.emoji
if _.isArray message.attachments
for attachment in message.attachments
if attachment.msg
attachment.text = _.trim(attachment.msg)
delete attachment.msg
RocketChat.sendMessage user, message, room, {}
@bodyParams.bot =
i: integration._id
return {} =
statusCode: 200
body:
success: true
defaultValues =
channel: integration.channel
alias: integration.alias
avatar: integration.avatar
emoji: integration.emoji
try
message = processWebhookMessage @bodyParams, user, defaultValues
if not message?
return RocketChat.API.v1.failure 'unknown-error'
return RocketChat.API.v1.success()
catch e
return RocketChat.API.v1.failure e.error
createIntegration = (options, user) ->

@ -0,0 +1,102 @@
this.processWebhookMessage = function(messageObj, user, defaultValues) {
var attachment, channel, channelType, i, len, message, ref, rid, room, roomUser;
if (!defaultValues) {
defaultValues = {
channel: '',
alias: '',
avatar: '',
emoji: ''
};
}
channel = messageObj.channel || defaultValues.channel;
channelType = channel[0];
channel = channel.substr(1);
switch (channelType) {
case '#':
room = RocketChat.models.Rooms.findOne({
$or: [
{
_id: channel
}, {
name: channel
}
]
});
if (room == null) {
throw new Meteor.Error('invalid-channel');
}
rid = room._id;
if (room.t === 'c') {
Meteor.runAsUser(user._id, function() {
return Meteor.call('joinRoom', room._id);
});
}
break;
case '@':
roomUser = RocketChat.models.Users.findOne({
$or: [
{
_id: channel
}, {
username: channel
}
]
});
if (roomUser == null) {
throw new Meteor.Error('invalid-channel');
}
rid = [user._id, roomUser._id].sort().join('');
room = RocketChat.models.Rooms.findOne(rid);
if (!room) {
Meteor.runAsUser(user._id, function() {
Meteor.call('createDirectMessage', roomUser.username);
return room = RocketChat.models.Rooms.findOne(rid);
});
}
break;
default:
throw new Meteor.Error('invalid-channel-type');
}
message = {
alias: messageObj.username || messageObj.alias || defaultValues.alias,
msg: _.trim(messageObj.text || messageObj.msg || ''),
attachments: messageObj.attachments,
parseUrls: false,
bot: messageObj.bot,
groupable: false
};
if ((messageObj.icon_url != null) || (messageObj.avatar != null)) {
message.avatar = messageObj.icon_url || messageObj.avatar;
} else if ((messageObj.icon_emoji != null) || (messageObj.emoji != null)) {
message.emoji = messageObj.icon_emoji || messageObj.emoji;
} else if (defaultValues.avatar != null) {
message.avatar = defaultValues.avatar;
} else if (defaultValues.emoji != null) {
message.emoji = defaultValues.emoji;
}
if (_.isArray(message.attachments)) {
ref = message.attachments;
for (i = 0, len = ref.length; i < len; i++) {
attachment = ref[i];
if (attachment.msg) {
attachment.text = _.trim(attachment.msg);
delete attachment.msg;
}
}
}
var messageReturn = RocketChat.sendMessage(user, message, room, {});
return {
channel: channel,
message: messageReturn
}
};

@ -61,9 +61,28 @@ ExecuteTriggerUrl = (url, trigger, message, room, tries=0) ->
, Math.pow(10, tries+2)
return
# TODO process return and insert message if necessary
# process outgoing webhook response as a new message
else if result?.statusCode is 200 and (result.data?.text? or result.data?.attachments?)
user = RocketChat.models.Users.findOneByUsername(trigger.username)
result.data.bot =
i: trigger._id
defaultValues =
channel: trigger.channel
alias: trigger.alias
avatar: trigger.avatar
emoji: trigger.emoji
try
message = processWebhookMessage result.data, user, defaultValues
if not message?
return RocketChat.API.v1.failure 'unknown-error'
return RocketChat.API.v1.success()
catch e
return RocketChat.API.v1.failure e.error
ExecuteTrigger = (trigger, message, room) ->
for url in trigger.urls

@ -38,7 +38,7 @@ Meteor.startup ->
if not siteUrl or not Meteor.userId()?
return
if RocketChat.authz.hasRole(Meteor.userId(), 'admin') is false
if RocketChat.authz.hasRole(Meteor.userId(), 'admin') is false or Meteor.settings.public.sandstorm
return c.stop()
siteUrl = siteUrl.replace /\/$/, ''

@ -1,7 +1,10 @@
buildMailURL = _.debounce ->
console.log 'Updating process.env.MAIL_URL'
if RocketChat.settings.get('SMTP_Host') and RocketChat.settings.get('SMTP_Username') and RocketChat.settings.get('SMTP_Password')
process.env.MAIL_URL = "smtp://" + encodeURIComponent(RocketChat.settings.get('SMTP_Username')) + ':' + encodeURIComponent(RocketChat.settings.get('SMTP_Password')) + '@' + encodeURIComponent(RocketChat.settings.get('SMTP_Host'))
if RocketChat.settings.get('SMTP_Host')
process.env.MAIL_URL = "smtp://"
if RocketChat.settings.get('SMTP_Username') and RocketChat.settings.get('SMTP_Password')
process.env.MAIL_URL += encodeURIComponent(RocketChat.settings.get('SMTP_Username')) + ':' + encodeURIComponent(RocketChat.settings.get('SMTP_Password')) + '@'
process.env.MAIL_URL += encodeURIComponent(RocketChat.settings.get('SMTP_Host'))
if RocketChat.settings.get('SMTP_Port')
process.env.MAIL_URL += ':' + parseInt(RocketChat.settings.get('SMTP_Port'))
, 500

@ -1,3 +1,5 @@
{
"Start_Chat" : "Rozpocznij czat"
"Skip" : "Pomiń",
"Start_Chat" : "Rozpocznij czat",
"Survey" : "Ankieta"
}

@ -1,9 +1,13 @@
{
"Add" : "Dodaj",
"Description" : "Opis",
"Enable" : "Włącz",
"Enabled" : "Włączone",
"Enter_a_username" : "Nazwa użytkownika",
"Livechat_title" : "Tytuł Livechatu",
"Livechat_title_color" : "Kolor tła nagłówka Livechat",
"Please_fill_a_username" : "Proszę wypełnić nazwę użytkownika",
"Saved" : "Zapisano"
"Saved" : "Zapisano",
"Send_a_message" : "Wyślij wiadomość",
"Theme" : "Motyw"
}

@ -6,6 +6,7 @@
"Email_body" : "Treść wiadomości",
"Mailer" : "Wyślij email użytkownikom",
"Mailer_body_tags" : "<b>Musisz</b> użyć znacznika [unsubscribe] aby zawrzeć w treści odnośnik do rezygnacji z subskrypcji.<br />Możesz użyć znaczników [name], [fname], [lname] by wstawić odpowiednio pełną nazwę użytkownika, jego imię, nazwisko.<br />\nMożesz użyć znacznika [email] by wstawić adres email użytkownika.",
"Query" : "Zapytanie",
"Send_email" : "Wyślij wiadomość",
"The_emails_are_being_sent" : "Wiadomości e-mail są wysyłane.",
"You_are_not_authorized_to_view_this_page" : "Nie masz uprawnień, aby zobaczyć tę stronę.",

@ -1 +1,4 @@
{ }
{
"Mentions" : "Wzmianki o tobie",
"No_mentions_found" : "Nie znaleziono wzmianek o tobie"
}

@ -1,3 +1,5 @@
# @ChatOAuthApps = new Meteor.Collection 'rocketchat_oauth_apps'
FlowRouter.route '/oauth/authorize',
action: (params, queryParams) ->
BlazeLayout.render 'main',
@ -19,12 +21,24 @@ FlowRouter.route '/oauth/error/:error',
Template.authorize.onCreated ->
@subscribe 'authorizedOAuth'
@subscribe 'oauthClient', @data.client_id()
Template.authorize.helpers
getToken: ->
return localStorage.getItem('Meteor.loginToken')
getClient: ->
return ChatOAuthApps.findOne()
Template.authorize.events
'click #logout-oauth': ->
return Meteor.logout()
'click #cancel-oauth': ->
return window.close()
Template.authorize.onRendered ->
@autorun (c) =>

@ -2,16 +2,42 @@
{{#if currentUser}}
<div class="oauth-panel">
<form method="post" action="" role="form" class="{{#unless Template.subscriptionsReady}}hidden{{/unless}}">
<h2>Authorize?</h2>
{{#if currentUser}}
<div class="user-info">
<div class="thumb">
{{> avatar username=currentUser.username}}
</div>
<div class="username">
{{_ "You_are_logged_in_as"}}
<h1>{{currentUser.username}}</h1>
</div>
</div>
{{/if}}
<div class="integration-info">
<div>
<span><b>{{getClient.name}}</b> {{_ "will_be_able_to"}}</span>
<ul class="integration-permissions">
<li>Post Messages</li>
<li>Create Channels</li>
<li>Change Chennel Topic</li>
</ul>
</div>
</div>
<input type="hidden" name="allow" value="yes">
<input type="hidden" name="token" value="{{getToken}}">
<input type="hidden" name="client_id" value="{{client_id}}">
<input type="hidden" name="redirect_uri" value="{{redirect_uri}}">
<input type="hidden" name="response_type" value="code">
<button type="submit" class="button">Authorize</button>
<div class="buttons">
<a id="logout-oauth" href="" class="button secondary">{{_ "Logout"}}</a>
<div class="horizontal-space"></div>
<button id="cancel-oauth" type="button" class="button secondary">{{_ "Cancel"}}</button>
<button type="submit" class="button">{{_ "Authorize"}}</button>
</div>
</form>
{{#unless Template.subscriptionsReady}}
loading...
{{_ "loading"}}...
{{/unless}}
</div>
{{else}}

@ -9,12 +9,64 @@
top: 0px;
bottom: 0px;
ul, li, ol {
list-style: initial;
}
ul {
padding-left: 10px;
margin-left: 6px;
}
form {
min-width: 400px;
text-align: center;
background-color: #fafafa;
border: 1px solid #eee;
border-radius: 6px;
padding: 40px;
}
.user-info {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
padding-bottom: 20px;
margin-bottom: 20px;
border-bottom: 1px solid #eee;
.thumb {
height: 40px;
width: 40px;
margin-right: 10px;
}
.username {
text-align: left;
h1 {
font-size: 18px;
}
}
}
.integration-info {
display: flex;
flex-direction: column;
align-items: center;
.integration-permissions {
margin-left: 16px;
padding-top: 10px;
padding-bottom: 40px;
}
}
.buttons {
display: flex;
align-items: center;
justify-content: center;
.horizontal-space {
border-right: 1px solid #ddd;
height: 14px;
margin: 0 15px;
}
}
}

@ -9,6 +9,15 @@ oauth2server = new OAuth2Server
WebApp.connectHandlers.use oauth2server.app
Meteor.publish 'oauthClient', (clientId) ->
unless @userId
return @ready()
return RocketChat.models.OAuthApps.find {clientId: clientId, active: true},
fields:
name: 1
RocketChat.API.v1.addAuthMethod ->
console.log @request.method, @request.url

@ -1,9 +1,13 @@
{
"theme-color-action-buttons-color" : "Toimintapainikkeiden väri",
"theme-color-active-channel-background-color" : "Aktiivisen kanavan taustaväri",
"theme-color-active-channel-font-color" : "Aktiivisen kanavan tekstin väri",
"theme-color-blockquote-background" : "Lainauksen taustaväri",
"theme-color-code-background" : "Koodin taustaväri",
"theme-color-code-border" : "Koodin reunusväri",
"theme-color-code-color" : "Koodin väri",
"theme-color-content-background-color" : "Sisällön taustaväri",
"theme-color-custom-scrollbar-color" : "Vierityspalkin väri (custom)",
"theme-color-info-active-font-color" : "Aktiivisen infon fontin väri",
"theme-color-info-font-color" : "Infon fontin väri",
"theme-color-input-font-color" : "Syötteen fontin väri",
@ -11,6 +15,7 @@
"theme-color-message-hover-background-color" : "Message Hover BG Color",
"theme-color-primary-background-color" : "Ensisijainen taustaväri",
"theme-color-primary-font-color" : "Ensisijainen fontin väri",
"theme-color-quaternary-font-color" : "Neljäs tekstin väri",
"theme-color-secondary-background-color" : "Toissijainen taustaväri",
"theme-color-secondary-font-color" : "Toissijainen fontin väri",
"theme-color-smallprint-font-color" : "Pienen tekstin fontin väri",

@ -106,3 +106,9 @@ Template.accountProfile.onRendered ->
Template.accountProfile.events
'click .submit button': (e, t) ->
t.save()
'click .logoutOthers button': (event, templateInstance) ->
Meteor.logoutOtherClients (error) ->
if error
toastr.error error.reason
else
toastr.success t('Logged_out_of_other_clients_successfully')

@ -59,6 +59,9 @@
<div class="submit">
<button class="button"><i class="icon-send"></i><span>{{_ "Save_changes"}}</span></button>
</div>
<div class="logoutOthers">
<button class="button">{{_ "Logout_Others"}}</button>
</div>
</div>
</div>
</section>

@ -186,17 +186,17 @@ Template.admin.events
for blob in files
toastr.info TAPi18n.__ 'Uploading_file'
if @fileConstraints.contentType isnt blob.type
toastr.error TAPi18n.__ 'Invalid_file_type'
return
# if @fileConstraints.contentType isnt blob.type
# toastr.error blob.type, TAPi18n.__ 'Invalid_file_type'
# return
reader = new FileReader()
reader.readAsBinaryString(blob)
reader.onloadend = =>
Meteor.call 'setAsset', reader.result, blob.type, @asset, (err, data) ->
if err?
toastr.error TAPi18n.__ err.error
console.log err.error
toastr.error err.reason, TAPi18n.__ err.error
console.log err
return
toastr.success TAPi18n.__ 'File_uploaded'

@ -53,13 +53,12 @@ Template.messageSearch.events
message_id = $(e.currentTarget).closest('.message').attr('id')
$('.message-dropdown:visible').hide()
$(".search-messages-list \##{message_id} .message-dropdown").remove()
message = Blaze.getData($("\.search-messages-list ##{message_id}")?[0])?._arguments?[1]
if message
actions = RocketChat.MessageAction.getButtons message
el = Blaze.toHTMLWithData Template.messageDropdown, { actions: actions }
$(".search-messages-list \##{message_id} .message-cog-container").append el
dropDown = $(".search-messages-list \##{message_id} .message-dropdown")
dropDown.show()
message = _.findWhere(t.searchResult.get()?.messages, (message) -> return message._id is message_id)
actions = RocketChat.MessageAction.getButtons message
el = Blaze.toHTMLWithData Template.messageDropdown, { actions: actions }
$(".search-messages-list \##{message_id} .message-cog-container").append el
dropDown = $(".search-messages-list \##{message_id} .message-dropdown")
dropDown.show()
'scroll .content': _.throttle (e, t) ->
if e.target.scrollTop >= e.target.scrollHeight - e.target.clientHeight

@ -104,6 +104,7 @@ Template.message.onCreated ->
message = RocketChat.callbacks.run 'renderMessage', msg
if message.tokens?.length > 0
for token in message.tokens
token.text = token.text.replace(/([^\$])(\$[^\$])/gm, '$1$$$2')
message.html = message.html.replace token.token, token.text
# console.log JSON.stringify message

@ -62,7 +62,7 @@ RocketChat.Notifications.onUser 'message', (msg) ->
sub.stop()
if openedRooms[typeName].rid?
msgStream.removeListener openedRooms[typeName].rid
msgStream.removeAllListeners openedRooms[typeName].rid
RocketChat.Notifications.unRoom openedRooms[typeName].rid, 'deleteMessage', onDeleteMessageStream
openedRooms[typeName].ready = false
@ -85,6 +85,9 @@ RocketChat.Notifications.onUser 'message', (msg) ->
Meteor.subscribe 'room', typeName
]
if record.ready is true
return
ready = record.sub[0].ready() and subscription.ready()
if ready is true
@ -108,21 +111,23 @@ RocketChat.Notifications.onUser 'message', (msg) ->
record.ready = RoomHistoryManager.isLoading(room._id) is false
Dep.changed()
msgStream.on openedRooms[typeName].rid, (msg) ->
if openedRooms[typeName].streamActive isnt true
openedRooms[typeName].streamActive = true
msgStream.on openedRooms[typeName].rid, (msg) ->
# Should not send message to room if room has not loaded all the current messages
if RoomHistoryManager.hasMoreNext(openedRooms[typeName].rid) is false
# Should not send message to room if room has not loaded all the current messages
if RoomHistoryManager.hasMoreNext(openedRooms[typeName].rid) is false
# Do not load command messages into channel
if msg.t isnt 'command'
ChatMessage.upsert { _id: msg._id }, msg
# Do not load command messages into channel
if msg.t isnt 'command'
ChatMessage.upsert { _id: msg._id }, msg
Meteor.defer ->
RoomManager.updateMentionsMarksOfRoom typeName
Meteor.defer ->
RoomManager.updateMentionsMarksOfRoom typeName
RocketChat.callbacks.run 'streamMessage', msg
RocketChat.callbacks.run 'streamMessage', msg
RocketChat.Notifications.onRoom openedRooms[typeName].rid, 'deleteMessage', onDeleteMessageStream
RocketChat.Notifications.onRoom openedRooms[typeName].rid, 'deleteMessage', onDeleteMessageStream
Dep.changed()

@ -30,10 +30,6 @@
when 'p'
FlowRouter.go 'group', {name: notification.payload.name}
setTimeout ->
n.close()
, 10000
newMessage: ->
unless Session.equals('user_' + Meteor.userId() + '_status', 'busy') or Meteor.user()?.settings?.preferences?.disableNewMessageNotification
$('#chatAudioNotification')[0].play()

@ -1,6 +1,7 @@
<template name="privateHistory">
<section class="page-container page-list">
<header class="fixed-title">
{{> burger}}
<h2>
<span class="room-title">{{_ "History"}}</span>
</h2>

@ -3,11 +3,11 @@
{{#if videoAvaliable}}
{{#unless videoActive}}
{{#if callInProgress}}
<button class="join-video-call button secondary"><i class="icon-videocam"></i>{{_ "Join"}}</button>
<button class="join-audio-call button secondary"><i class="icon-phone"></i>{{_ "Join"}}</button>
<button class="join-video-call button secondary" aria-label="{{_ "Join_video_call"}}"><i class="icon-videocam"></i></button>
<button class="join-audio-call button secondary" aria-label="{{_ "Join_audio_call"}}"><i class="icon-phone"></i></button>
{{else}}
<button class="start-video-call button"><i class="icon-videocam"></i>{{_ "Start"}}</button>
<button class="start-audio-call button"><i class="icon-phone"></i></button>
<button class="start-video-call button" aria-label="{{_ "Start_video_call"}}"><i class="icon-videocam"></i></button>
<button class="start-audio-call button" aria-label="{{_ "Start_audio_call"}}"><i class="icon-phone"></i></button>
{{/if}}
{{/unless}}
{{/if}}

@ -1,8 +1,8 @@
# Deny Account.createUser in client and set Meteor.loginTokenExpires
accountsConfig = { forbidClientAccountCreation: true, loginExpirationInDays: RocketChat.settings.get 'Accounts_LoginExpiration' }
if RocketChat.settings.get('Account_AllowedDomainsList')
domainWhiteList = _.map RocketChat.settings.get('Account_AllowedDomainsList').split(','), (domain) -> domain.trim()
if RocketChat.settings.get('Accounts_AllowedDomainsList')
domainWhiteList = _.map RocketChat.settings.get('Accounts_AllowedDomainsList').split(','), (domain) -> domain.trim()
accountsConfig.restrictCreationByEmailDomain = (email) ->
ret = false
for domain in domainWhiteList

@ -2,22 +2,23 @@
SyncedCron.config
collectionName: 'rocketchat_cron_history'
generateStatistics = ->
statistics = RocketChat.statistics.save()
statistics.host = Meteor.absoluteUrl()
unless RocketChat.settings.get 'Statistics_opt_out'
HTTP.post 'https://rocket.chat/stats',
data: statistics
return
Meteor.startup ->
Meteor.defer ->
generateStatistics()
# Generate and save statistics every hour
SyncedCron.add
name: 'Generate and save statistics',
schedule: (parser) -># parser is a later.parse object
return parser.text 'every 1 hour'
job: ->
statistics = RocketChat.statistics.save()
statistics.host = Meteor.absoluteUrl()
unless RocketChat.settings.get 'Statistics_opt_out'
console.log 'Sending statistics data to Rocket.Chat'
HTTP.post 'https://rocket.chat/stats',
data: statistics
return
job: generateStatistics
SyncedCron.start()

Loading…
Cancel
Save