Fix problem with & in project name

This commit is contained in:
Alexander Meindl
2020-04-28 11:41:21 +02:00
parent 03fab2c28e
commit b1d7309d97
12 changed files with 82 additions and 75 deletions

View File

@@ -12,6 +12,7 @@ Changelog
- Show attachments for new issues
- Show indicator for private comment on issue
- Ruby 2.4 or higher is required
- Fix project name with &
1.0.5
-----

View File

@@ -15,6 +15,7 @@ class Messenger
text = +text.to_s
# @see https://api.slack.com/reference/surfaces/formatting#escaping
text.gsub!('&', '&')
text.gsub!('<', '&lt;')
text.gsub!('>', '&gt;')
@@ -28,14 +29,11 @@ class Messenger
def speak(msg, channels, url, options)
url ||= RedmineMessenger.settings[:messenger_url]
return if url.blank? || channels.blank?
return if url.blank?
return if channels.blank?
params = { text: msg, link_names: 1 }
params = {
text: msg,
link_names: 1
}
Rails.logger.debug "debug speak: #{params.inspect}"
username = textfield_for_project(options[:project], :messenger_username)
params[:username] = username if username.present?
@@ -95,6 +93,14 @@ class Messenger
nil
end
def project_url_markdown(project)
"[#{project.name}](#{object_url project})"
end
def url_markdown(obj, name)
"[#{name}](#{object_url obj})"
end
def textfield_for_project(proj, config)
return if proj.blank?

View File

@@ -2,23 +2,23 @@
de:
default_mentionsl_info: Benutzer, die immer mit Mentions benachrichtet werden sollen. Mehrere Namen können mit Komma getrennt angegeben werden (z.B. @all, @here).
error_messenger_invalid_url: "ist keine gültige URL"
label_messenger_contact_created: "[%{project_url}] Kontakt %{url} erstellt von *%{user}*"
label_messenger_contact_updated: "[%{project_url}] Kontakt %{url} aktualisiert von *%{user}*"
label_messenger_db_entry_created: "[%{project_url}] DB Eintrag %{url} erstellt von *%{user}*"
label_messenger_db_entry_updated: "[%{project_url}] DB Eintrag %{url} aktualisiert von *%{user}*"
label_messenger_contact_created: "%{project_url} - Kontakt %{url} erstellt von *%{user}*"
label_messenger_contact_updated: "%{project_url} - Kontakt %{url} aktualisiert von *%{user}*"
label_messenger_db_entry_created: "%{project_url} - DB Eintrag %{url} erstellt von *%{user}*"
label_messenger_db_entry_updated: "%{project_url} - DB Eintrag %{url} aktualisiert von *%{user}*"
label_messenger_default_not_visible: Standardeinstellung wird aus Sicherheitsgründen nicht angezeigt
label_messenger_issue_created: "[%{project_url}] Ticket %{url} erstellt von *%{user}*"
label_messenger_issue_updated: "[%{project_url}] Ticket %{url} aktualisiert von *%{user}*"
label_messenger_issue_created: "%{project_url} - Ticket %{url} erstellt von *%{user}*"
label_messenger_issue_updated: "%{project_url} - Ticket %{url} aktualisiert von *%{user}*"
label_messenger_outgoing_webhook: Ausgehender Webhook
label_messenger_password_created: "[%{project_url}] Kennwort %{url} erstellt von *%{user}*"
label_messenger_password_updated: "[%{project_url}] Kennwort %{url} aktualisiert von *%{user}*"
label_messenger_password_created: "%{project_url} - Kennwort %{url} erstellt von *%{user}*"
label_messenger_password_updated: "%{project_url} - Kennwort %{url} aktualisiert von *%{user}*"
label_messenger_project_text_field_info: Leer lassen für Systemstandard.
label_messenger_setting: Messenger Einstellung
label_messenger_settings_default: Standardeinstellung
label_messenger_settings_disabled: Deaktiviert
label_messenger_settings_enabled: Aktiviert
label_messenger_wiki_created: "[%{project_url}] Wiki %{url} erstellt von *%{user}*"
label_messenger_wiki_updated: "[%{project_url}] Wiki %{url} aktualisiert von *%{user}*"
label_messenger_wiki_created: "%{project_url} - Wiki %{url} erstellt von *%{user}*"
label_messenger_wiki_updated: "%{project_url} - Wiki %{url} aktualisiert von *%{user}*"
label_messenger: Messenger
label_settings_auto_mentions: Namen für Mentions konvertiert?
label_settings_default_mentions: Standardbenutzer für Mentions

View File

@@ -2,23 +2,23 @@
en:
default_mentionsl_info: Default people to notify, comma separated (e.g. @all, @here)
error_messenger_invalid_url: is not a valid URL
label_messenger_contact_created: "[%{project_url}] Contact %{url} created by *%{user}*"
label_messenger_contact_updated: "[%{project_url}] Contact %{url} updated by *%{user}*"
label_messenger_db_entry_created: "[%{project_url}] DB entry %{url} created by *%{user}*"
label_messenger_db_entry_updated: "[%{project_url}] DB entry %{url} updated by *%{user}*"
label_messenger_contact_created: "%{project_url} - Contact %{url} created by *%{user}*"
label_messenger_contact_updated: "%{project_url} - Contact %{url} updated by *%{user}*"
label_messenger_db_entry_created: "%{project_url} - DB entry %{url} created by *%{user}*"
label_messenger_db_entry_updated: "%{project_url} - DB entry %{url} updated by *%{user}*"
label_messenger_default_not_visible: Default setting is not visible for security reasons
label_messenger_issue_created: "[%{project_url}] Issue %{url} created by *%{user}*"
label_messenger_issue_updated: "[%{project_url}] Issue %{url} updated by *%{user}*"
label_messenger_issue_created: "%{project_url} - Issue %{url} created by *%{user}*"
label_messenger_issue_updated: "%{project_url} - Issue %{url} updated by *%{user}*"
label_messenger_outgoing_webhook: Outgoing Webhook
label_messenger_password_created: "[%{project_url}] Kennwort %{url} created by *%{user}*"
label_messenger_password_updated: "[%{project_url}] Kennwort %{url} updated by *%{user}*"
label_messenger_password_created: "%{project_url} - Password %{url} created by *%{user}*"
label_messenger_password_updated: "%{project_url} - Password %{url} updated by *%{user}*"
label_messenger_project_text_field_info: Leave it blank for system default.
label_messenger_setting: Messenger Settings
label_messenger_settings_default: System default
label_messenger_settings_disabled: Disabled
label_messenger_settings_enabled: Enabled
label_messenger_wiki_created: "[%{project_url}] Wiki %{url} created by *%{user}*"
label_messenger_wiki_updated: "[%{project_url}] Wiki %{url} updated by *%{user}*"
label_messenger_wiki_created: "%{project_url} - Wiki %{url} created by *%{user}*"
label_messenger_wiki_updated: "%{project_url} - Wiki %{url} updated by *%{user}*"
label_messenger: Messenger
label_settings_auto_mentions: Convert names to mentions?
label_settings_default_mentions: Default people for mentions

View File

@@ -2,23 +2,23 @@
fr:
default_mentionsl_info: Personnes à notifier par défaut, séparées par des virgules (@all, @here)
error_messenger_invalid_url: n'est pas une URL valide
label_messenger_contact_created: "[%{project_url}] Le contact %{url} créé par *%{user}*"
label_messenger_contact_updated: "[%{project_url}] Le contact %{url} mis à jour par *%{user}*"
label_messenger_db_entry_created: "[%{project_url}] Entrée de base de données %{url} créée par *%{user}*"
label_messenger_db_entry_updated: "[%{project_url}] Entrée de base de données %{url} mis à jour par *%{user}*"
label_messenger_contact_created: "%{project_url} - Le contact %{url} créé par *%{user}*"
label_messenger_contact_updated: "%{project_url} - Le contact %{url} mis à jour par *%{user}*"
label_messenger_db_entry_created: "%{project_url} - Entrée de base de données %{url} créée par *%{user}*"
label_messenger_db_entry_updated: "%{project_url} - Entrée de base de données %{url} mis à jour par *%{user}*"
label_messenger_default_not_visible: Le paramètre par défaut n'est pas visible pour des raisons de sécurité
label_messenger_issue_created: "[%{project_url}] Ticket %{url} créé par *%{user}*"
label_messenger_issue_updated: "[%{project_url}] Ticket %{url} mis à jour par *%{user}*"
label_messenger_issue_created: "%{project_url} - Ticket %{url} créé par *%{user}*"
label_messenger_issue_updated: "%{project_url} - Ticket %{url} mis à jour par *%{user}*"
label_messenger_outgoing_webhook: Webhook sortant
label_messenger_password_created: "[%{project_url}] Mot de passe %{url} créé par *%{user}*"
label_messenger_password_updated: "[%{project_url}] Mot de passe %{url} mis à jour par *%{user}*"
label_messenger_password_created: "%{project_url} - Mot de passe %{url} créé par *%{user}*"
label_messenger_password_updated: "%{project_url} - Mot de passe %{url} mis à jour par *%{user}*"
label_messenger_project_text_field_info: Laissez ce champ vide pour le système par défaut.
label_messenger_setting: Paramètres de messagerie
label_messenger_settings_default: Choix de l'option
label_messenger_settings_disabled: Désactivé
label_messenger_settings_enabled: Activé
label_messenger_wiki_created: "[%{project_url}] Wiki %{url} créé par *%{user}*"
label_messenger_wiki_updated: "[%{project_url}] Wiki %{url} mis à jour par *%{user}*"
label_messenger_wiki_created: "%{project_url} - Wiki %{url} créé par *%{user}*"
label_messenger_wiki_updated: "%{project_url} - Wiki %{url} mis à jour par *%{user}*"
label_messenger: Messenger
label_settings_auto_mentions: Convertir les noms en mentions
label_settings_default_mentions: Personnes mentionnées par défaut
@@ -54,4 +54,3 @@ fr:
messenger_verify_ssl_info_html: 'Désactiver cette vérification si votre service Messenger utilise un certificat SSL non valide ou auto-signé.'
messenger_wiki_intro: Activer les notifications a envoyer au canal Messenger pour l'ensemble des wikis.
permission_manage_messenger: Gérer Messenger

View File

@@ -2,23 +2,23 @@
ja:
default_mentionsl_info: Default people to notify, comma separated (e.g. @all, @here)
error_messenger_invalid_url: is not a valid URL
label_messenger_contact_created: "[%{project_url}] コンタクト %{url} が *%{user}* によって作成されました。"
label_messenger_contact_updated: "[%{project_url}] コンタクト %{url} が*%{user}* によって更新されました。"
label_messenger_db_entry_created: "[%{project_url}] DB entry %{url} created by *%{user}*"
label_messenger_db_entry_updated: "[%{project_url}] DB entry %{url} updated by *%{user}*"
label_messenger_contact_created: "%{project_url} - コンタクト %{url} が *%{user}* によって作成されました。"
label_messenger_contact_updated: "%{project_url} - コンタクト %{url} が*%{user}* によって更新されました。"
label_messenger_db_entry_created: "%{project_url} - DB entry %{url} created by *%{user}*"
label_messenger_db_entry_updated: "%{project_url} - DB entry %{url} updated by *%{user}*"
label_messenger_default_not_visible: デフォルトの設定はセキュリティ上の理由により表示されません。
label_messenger_issue_created: "[%{project_url}] チケット %{url} が *%{user}* によって作成されました。"
label_messenger_issue_updated: "[%{project_url}] チケット %{url} が *%{user}* によって更新されました。"
label_messenger_issue_created: "%{project_url} - チケット %{url} が *%{user}* によって作成されました。"
label_messenger_issue_updated: "%{project_url} - チケット %{url} が *%{user}* によって更新されました。"
label_messenger_outgoing_webhook: Outgoing Webhook
label_messenger_password_created: "[%{project_url}] Kennwort %{url} created by *%{user}*"
label_messenger_password_updated: "[%{project_url}] Kennwort %{url} updated by *%{user}*"
label_messenger_password_created: "%{project_url} - Password %{url} created by *%{user}*"
label_messenger_password_updated: "%{project_url} - Password %{url} updated by *%{user}*"
label_messenger_project_text_field_info: デフォルトの設定を使う場合空欄にしてください。
label_messenger_setting: メッセンジャーの設定
label_messenger_settings_default: デフォルト
label_messenger_settings_disabled: 無効
label_messenger_settings_enabled: 有効
label_messenger_wiki_created: "[%{project_url}] Wiki %{url} が by *%{user}* によって作成されました。"
label_messenger_wiki_updated: "[%{project_url}] Wiki %{url} が *%{user}* によって更新されました。"
label_messenger_wiki_created: "%{project_url} - Wiki %{url} が by *%{user}* によって作成されました。"
label_messenger_wiki_updated: "%{project_url} - Wiki %{url} が *%{user}* によって更新されました。"
label_messenger: メッセンジャー
label_settings_auto_mentions: ユーザー名をその人についての投稿(@ユーザー名)に変換する
label_settings_default_mentions: Default people for mentions

View File

@@ -2,23 +2,23 @@
ko:
default_mentionsl_info: 알림을 받을 기본 사용자를 나타내며, 쉼표로 구분 (e.g. @all, @here)
error_messenger_invalid_url: 유효한 URL이 아님
label_messenger_contact_created: "[%{project_url}] *%{user}*님이 연락처(%{url})를 만들었습니다."
label_messenger_contact_updated: "[%{project_url}] *%{user}*님이 연락처(%{url})를 수정했습니다."
label_messenger_db_entry_created: "[%{project_url}] *%{user}*님이 데이터베이스 항목(%{url})을 만들었습니다."
label_messenger_db_entry_updated: "[%{project_url}] *%{user}*님이 데이터베이스 항목(%{url})을 수정했습니다."
label_messenger_contact_created: "%{project_url} - *%{user}*님이 연락처(%{url})를 만들었습니다."
label_messenger_contact_updated: "%{project_url} - *%{user}*님이 연락처(%{url})를 수정했습니다."
label_messenger_db_entry_created: "%{project_url} - *%{user}*님이 데이터베이스 항목(%{url})을 만들었습니다."
label_messenger_db_entry_updated: "%{project_url} - *%{user}*님이 데이터베이스 항목(%{url})을 수정했습니다."
label_messenger_default_not_visible: 보안 상의 이유로 기본값이 보여지지 않습니다.
label_messenger_issue_created: "[%{project_url}] *%{user}*님이 일감(%{url})을 만들었습니다."
label_messenger_issue_updated: "[%{project_url}] *%{user}*님이 일감(%{url})을 수정했습니다."
label_messenger_issue_created: "%{project_url} - *%{user}*님이 일감(%{url})을 만들었습니다."
label_messenger_issue_updated: "%{project_url} - *%{user}*님이 일감(%{url})을 수정했습니다."
label_messenger_outgoing_webhook: 웹훅 발신
label_messenger_password_created: "[%{project_url}] *%{user}*님이 암호(%{url})를 만들었습니다."
label_messenger_password_updated: "[%{project_url}] *%{user}*님이 암호(%{url})를 수정했습니다."
label_messenger_password_created: "%{project_url} - *%{user}*님이 암호(%{url})를 만들었습니다."
label_messenger_password_updated: "%{project_url} - *%{user}*님이 암호(%{url})를 수정했습니다."
label_messenger_project_text_field_info: 시스템 기본값을 사용하려면 빈 값으로 두세요.
label_messenger_setting: 메신저 설정
label_messenger_settings_default: 시스템 기본값
label_messenger_settings_disabled: 비활성화
label_messenger_settings_enabled: 활성화
label_messenger_wiki_created: "[%{project_url}] *%{user}*님이 위키(%{url})를 만들었습니다."
label_messenger_wiki_updated: "[%{project_url}] *%{user}*님이 위키(%{url})를 수정했습니다."
label_messenger_wiki_created: "%{project_url} - *%{user}*님이 위키(%{url})를 만들었습니다."
label_messenger_wiki_updated: "%{project_url} - *%{user}*님이 위키(%{url})를 수정했습니다."
label_messenger: 메신저
label_settings_auto_mentions: 이름을 멘션으로 변환
label_settings_default_mentions: 멘션될 기본 사용자

View File

@@ -23,8 +23,8 @@ module RedmineMessenger
return unless channels.present? && url
Messenger.speak(l(:label_messenger_contact_created,
project_url: "<#{Messenger.object_url project}|#{Messenger.markup_format(project)}>",
url: "<#{Messenger.object_url self}|#{name}>",
project_url: Messenger.project_url_markdown(project),
url: Messenger.url_markdown(self, name),
user: User.current),
channels, url, project: project)
end
@@ -41,8 +41,8 @@ module RedmineMessenger
return unless channels.present? && url
Messenger.speak(l(:label_messenger_contact_updated,
project_url: "<#{Messenger.object_url project}|#{Messenger.markup_format(project)}>",
url: "<#{Messenger.object_url self}|#{name}>",
project_url: Messenger.project_url_markdown(project),
url: Messenger.url_markdown(self, name),
user: User.current),
channels, url, project: project)
end

View File

@@ -23,8 +23,8 @@ module RedmineMessenger
return unless channels.present? && url
Messenger.speak(l(:label_messenger_db_entry_created,
project_url: "<#{Messenger.object_url project}|#{Messenger.markup_format(project)}>",
url: "<#{Messenger.object_url self}|#{name}>",
project_url: Messenger.project_url_markdown(project),
url: Messenger.url_markdown(self, name),
user: User.current),
channels, url, project: project)
end
@@ -41,8 +41,8 @@ module RedmineMessenger
return unless channels.present? && url
Messenger.speak(l(:label_messenger_db_entry_updated,
project_url: "<#{Messenger.object_url project}|#{Messenger.markup_format(project)}>",
url: "<#{Messenger.object_url self}|#{name}>",
project_url: Messenger.project_url_markdown(project),
url: Messenger.url_markdown(self, name),
user: User.current),
channels, url, project: project)
end

View File

@@ -51,7 +51,7 @@ module RedmineMessenger
end
Messenger.speak(l(:label_messenger_issue_created,
project_url: "<#{Messenger.object_url project}|#{Messenger.markup_format(project)}>",
project_url: Messenger.project_url_markdown(project),
url: send_messenger_mention_url(project, description),
user: author),
channels, url, attachment: attachment, project: project)
@@ -81,7 +81,7 @@ module RedmineMessenger
attachment[:fields] = fields if fields.any?
Messenger.speak(l(:label_messenger_issue_updated,
project_url: "<#{Messenger.object_url project}|#{Messenger.markup_format(project)}>",
project_url: Messenger.project_url_markdown(project),
url: send_messenger_mention_url(project, description),
user: current_journal.user),
channels, url, attachment: attachment, project: project)

View File

@@ -23,8 +23,8 @@ module RedmineMessenger
return unless channels.present? && url
Messenger.speak(l(:label_messenger_password_created,
project_url: "<#{Messenger.object_url project}|#{Messenger.markup_format(project)}>",
url: "<#{Messenger.object_url self}|#{name}>",
project_url: Messenger.project_url_markdown(project),
url: Messenger.url_markdown(self, name),
user: User.current),
channels, url, project: project)
end
@@ -41,8 +41,8 @@ module RedmineMessenger
return unless channels.present? && url
Messenger.speak(l(:label_messenger_password_updated,
project_url: "<#{Messenger.object_url project}|#{Messenger.markup_format(project)}>",
url: "<#{Messenger.object_url self}|#{name}>",
project_url: Messenger.project_url_markdown(project),
url: Messenger.url_markdown(self, name),
user: User.current),
channels, url, project: project)
end

View File

@@ -22,8 +22,8 @@ module RedmineMessenger
return unless channels.present? && url
Messenger.speak(l(:label_messenger_wiki_created,
project_url: "<#{Messenger.object_url project}|#{Messenger.markup_format(project)}>",
url: "<#{Messenger.object_url self}|#{title}>",
project_url: Messenger.project_url_markdown(project),
url: Messenger.url_markdown(self, title),
user: User.current),
channels, url, project: project)
end
@@ -44,9 +44,10 @@ module RedmineMessenger
attachment[:text] = Messenger.markup_format(content.comments.to_s)
end
Rails.logger.debug "debug project_url: #{Messenger.project_url_markdown(project)}"
Messenger.speak(l(:label_messenger_wiki_updated,
project_url: "<#{Messenger.object_url project}|#{Messenger.markup_format(project)}>",
url: "<#{Messenger.object_url self}|#{title}>",
project_url: Messenger.project_url_markdown(project),
url: Messenger.url_markdown(self, title),
user: content.author),
channels, url, project: project, attachment: attachment)
end