Compare commits

...

495 commits

Author SHA1 Message Date
f 64a3c7e02c Merge branch 'stable-5.1' into antifascista-stable 2022-07-16 15:42:34 -03:00
Martin Gruner dbe63a1ee1
Maintenance: Trigger a packager.io build. 2022-06-29 15:32:45 +02:00
Florian Liebe f7f1068bf0 Fixes #4112 - Zammad shows "<![if !supportLists]>- <![endif]>" instead of list icon 2022-06-20 16:52:52 +02:00
Rolf Schmidt 74c7a6b5f6 Fixes #4030 - Switching the photos displayed in the preview does not work with the arrow keys. 2022-06-20 15:28:15 +02:00
Rolf Schmidt d1d67c3230 Fixes #4096 - Pop-Up Warning for missing attachments with text containing "attached" or related only appears on english terms (not translated). 2022-06-20 08:00:47 +01:00
f 8a0d4ddd48 assets 2022-06-18 10:54:29 -03:00
f 58e6657b79 Merge branch 'stable' into antifascista-stable 2022-06-18 10:48:20 -03:00
Weblate 0fb34f24cf Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: MBekspert <michal.bosak@ekspert.biz>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/pl/
Translation: Zammad/Zammad (stable version)
2022-06-17 09:36:29 +02:00
Florian Liebe 3b513dc670 Fixes #3890 - 'Sender Format' set to 'Agent Name' causes empty display names in triggers 2022-06-16 16:15:00 +02:00
Florian Liebe 76fe4ce0e7 Fixes #3931 - Changing the category of a Knowledge Base answer leads to alternative translation loop 2022-06-16 14:24:57 +02:00
Rolf Schmidt cadb462208 Fixes #4127 - Webhhok transfers "accounted_time" of an article as integer instead of float/double. 2022-06-15 15:48:00 +02:00
Florian Liebe fbc1e4a252 Fixes #3952 - Notifications are sent for all tickets when an organization of a customer is updated. 2022-06-13 14:56:50 +02:00
Weblate a7643fec73 Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: Jennie Gejel <jenniegejel@gmail.com>
Co-authored-by: Louise Forsen <louise.forsen@entryevent.se>
Co-authored-by: MBekspert <michal.bosak@ekspert.biz>
Co-authored-by: Marcel Herrguth <github@thehomeofanime.de>
Co-authored-by: Paweł Rypień <pawel.rypien@bmw-sikora.pl>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/de/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/pl/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/sv/
Translation: Zammad/Zammad (stable version)
2022-06-13 09:28:25 +02:00
Rolf Schmidt 439b17800f Follow up 949a47a7be6cf10dc7fd38c3c5b06def6efad26d - Fixes #4040 - users customer name is displayed as id. 2022-06-13 08:23:35 +02:00
Martin Gruner e50ba0aca5
Maintenance: Backport rspec-retry to stabilize Capybara tests. 2022-06-10 12:09:11 +02:00
Martin Gruner 85649f8894 Maintenance: Fix capybara test that started failing on recent FF.
(cherry picked from commit 1af31d4f9527ff860e3dd5e769f15e0460ea0535)
2022-06-10 10:05:33 +02:00
Florian Liebe 927ecff993 Fixes #3894 - Follow-up detection does not work for the body of plain text mails. 2022-06-09 14:24:13 +02:00
Martin Gruner 7279cb88b5
Maintenance: Prepare for Selenium 4.2. 2022-06-09 06:20:41 +02:00
Rolf Schmidt 7c718d9c18 Fixes #3935 - DataPrivacy Tasks fail if Zammad has to solve references on users with invalid email addresses. 2022-06-08 14:50:54 +02:00
Martin Gruner 9ff3d80f49 Maintenance: Reconfigure push to github to not use a shell runner, but docker.
(cherry picked from commit 60521b3818b1e01c7089a3a2ce4179620d4af42c)
2022-06-08 08:42:12 +02:00
Weblate aeb3486602 Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: Arturo <r2r0@posteo.de>
Co-authored-by: Danniel Macedo <djsmacedo@gmail.com>
Co-authored-by: Guillaume Lasserre <guillaume.lasserre@clirisgroup.com>
Co-authored-by: Louise Forsen <louise.forsen@entryevent.se>
Co-authored-by: MBekspert <michal.bosak@ekspert.biz>
Co-authored-by: Magdalena Dulęba <magdalena.duleba@pwr.edu.pl>
Co-authored-by: Marcel Herrguth <github@thehomeofanime.de>
Co-authored-by: Marco Badan <info@marcobadan.com>
Co-authored-by: Martin Gruner <mg@zammad.com>
Co-authored-by: Ralf Ebert <info@ralfebert.de>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/de/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/es/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/fr/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/it/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/pl/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/pt_BR/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/sv/
Translation: Zammad/Zammad (stable version)
2022-06-07 20:10:41 +02:00
Florian Liebe ab37cfe972 Fixes #3943 - Title column is missing if ticket number is disabled in overview options. 2022-06-07 09:01:53 +02:00
Rolf Schmidt 81408f7e87 Fixes #4054 - Searches display all groups and owners on bulk selections. 2022-06-02 15:13:04 +02:00
Rolf Schmidt 3f81df1925 Fixes #4088 - Wrong default values in ticket create when creating from user profile. 2022-06-01 13:31:46 +01:00
Rolf Schmidt bb80177a02 Fixes #4103 - Reporting export file shows empty fields in selected columns when "custom sort option" is enabled. 2022-05-31 15:18:20 +02:00
Martin Gruner 62ae0e9944
Maintenance: Security update for the 'rack' gem. 2022-05-30 07:40:20 +02:00
Rolf Schmidt c38c4e6226 Fixes #4097 - Latest upgrade to 5.1 is not possible. 2022-05-25 15:48:32 +02:00
Dominik Klein 757a9b274e Fixes #4095 - Trigger autocomplete when clicking the "Tags" field also without a search term. 2022-05-25 12:53:49 +02:00
Martin Gruner 08934daaf3 Maintenance: Make ticket number options translatable.
(cherry picked from commit 0ac0de5c1df710aea543cae44b1aac202d376bf5)
2022-05-25 09:34:11 +00:00
Martin Gruner 321aa0ea4c Maintenance: Update GeoIP test data.
(cherry picked from commit 2f6ea62b4c28ac9c3cf0126740275329526e3057)
2022-05-25 10:54:47 +02:00
Rolf Schmidt 5a6df7fc82 Fixes #4089 - Shared draft attribute in object manage not disabled for onclick. 2022-05-24 12:38:22 +02:00
Martin Gruner 5995c0e676 Maintenance: Security update for nokogiri gem. 2022-05-24 09:22:58 +02:00
f 83414a365e assets 2022-05-23 11:46:13 -03:00
f 1a41fdc4f8 Merge branch 'stable' into antifascista-stable 2022-05-23 11:11:41 -03:00
Martin Gruner ea163bb02f Fixes: #4096 - The labels "Save Draft" & "Macros" are not translatable. 2022-05-20 14:00:37 +02:00
Weblate 473cc70d3b Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: MBekspert <michal.bosak@ekspert.biz>
Co-authored-by: Marco Badan <info@marcobadan.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Zhilin Ruslan <x-th-unicorn@hotmail.com>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/it/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/pl/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/ru/
Translation: Zammad/Zammad (stable version)
2022-05-19 18:46:29 +00:00
Rolf Schmidt 79997ca992 Fixes #4094 - Tab behaviour does not show properly when doing a ticket update at the same time. 2022-05-19 15:40:09 +02:00
Rolf Schmidt e06d10978e Fixes #4086 - Custom sort on select returns "undefined method `merge' " for older objects. 2022-05-17 19:19:09 +02:00
Martin Edenhofer d095cd6612 Fixes #4090 - Tree Select Trigger changes the conditions on its own 2022-05-17 16:45:48 +02:00
Weblate 5fae57a8ce Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: MBekspert <michal.bosak@ekspert.biz>
Co-authored-by: Martin Gruner <mg@zammad.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Zhilin Ruslan <x-th-unicorn@hotmail.com>
Co-authored-by: ait0rn00b <ait0rn00b@protonmail.com>
Co-authored-by: kirkkak <kirkka.kivilo@gmail.com>
Co-authored-by: payman Zafar <p.moghadam@asredanesh.com>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/de/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/es/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/et/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/fa/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/pl/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/ru/
Translation: Zammad/Zammad (stable version)
2022-05-17 05:39:31 +02:00
Weblate e00c2187a8 Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: MBekspert <michal.bosak@ekspert.biz>
Co-authored-by: Martin Gruner <mg@zammad.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Zhilin Ruslan <x-th-unicorn@hotmail.com>
Co-authored-by: ait0rn00b <ait0rn00b@protonmail.com>
Co-authored-by: kirkkak <kirkka.kivilo@gmail.com>
Co-authored-by: payman Zafar <p.moghadam@asredanesh.com>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/de/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/es/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/et/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/fa/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/pl/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/ru/
Translation: Zammad/Zammad (stable version)
2022-05-13 13:48:48 +02:00
Martin Gruner a19fee34f6
Maintenance: Make several untranslatable strings / settings translatable. 2022-05-13 12:39:53 +02:00
Weblate 6f2f507385 Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: Arturo <r2r0@posteo.de>
Co-authored-by: Jeroen Baten <jbaten@i2rs.nl>
Co-authored-by: MBekspert <michal.bosak@ekspert.biz>
Co-authored-by: Martin Gruner <mg@zammad.com>
Co-authored-by: Thomas <info@biljettshop.se>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Zhilin Ruslan <x-th-unicorn@hotmail.com>
Co-authored-by: kirkkak <kirkka.kivilo@gmail.com>
Co-authored-by: payman Zafar <p.moghadam@asredanesh.com>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/de/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/es/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/et/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/fa/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/nl/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/pl/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/ru/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/sv/
Translation: Zammad/Zammad (stable version)
2022-05-11 07:23:16 +02:00
Martin Gruner 49944a93e0 Maintenance: Mark strings as translatable.
(cherry picked from commit 2ab28ba8fe9ca588241d13d238af3e3be328297c)
2022-05-10 21:48:46 +02:00
Martin Gruner 8042a609cd Fixes: #4053 - Zammad email display broken.
(cherry picked from commit 584e3ec188d97169593aa0939b063c45b71ad863)
2022-05-10 15:07:43 +02:00
Dominik Klein 61f42f950f Fixes #4057, fixes #2375 - OTRS migration currently do not support custom dropdown multi-select fields. 2022-05-10 12:21:53 +02:00
Marcel Herrguth e552795183 Fixes #1471 - Adjust emailtrytest to zammad services.
(cherry picked from commit 3ec848a067218aa83f40d71e46c60234b3e5611b)
2022-05-09 08:23:53 +02:00
Mantas Masalskis 13e3887dd8 Fixes #4066 - Zammad notification emails have a broken reason footer line 2022-05-05 16:17:52 +02:00
Weblate ee6f1650cb Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: Arturo <r2r0@posteo.de>
Co-authored-by: JPB <jeffreypeerboom@eijsden-margraten.nl>
Co-authored-by: Laurens Bijker <laurens@laurensbijker-ict.nl>
Co-authored-by: MBekspert <michal.bosak@ekspert.biz>
Co-authored-by: Zhilin Ruslan <x-th-unicorn@hotmail.com>
Co-authored-by: edwin lopez <edwin.lopez@metabiblioteca.com>
Co-authored-by: kirkkak <kirkka.kivilo@gmail.com>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/es/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/es_CO/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/et/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/nl/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/pl/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/ru/
Translation: Zammad/Zammad (stable version)
2022-05-04 09:32:52 +02:00
Weblate e386190851 Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: Hisakiyo <hisakiyo.games@gmail.com>
Co-authored-by: Jeffrey Peerboom <jeffreypeerboom@eijsden-margraten.nl>
Co-authored-by: Lorenzo Milesi <lorenzo.milesi@yetopen.com>
Co-authored-by: Ludovic <l.kennel@3magroup.com>
Co-authored-by: MBekspert <michal.bosak@ekspert.biz>
Co-authored-by: Marlon Baez <marlon.baez@barolit.com>
Co-authored-by: Martin Gruner <mg@zammad.com>
Co-authored-by: Sezgin KOC <sezgink059@outlook.com.tr>
Co-authored-by: Stéphane Parunakian <parunakian.stephane@gmail.com>
Co-authored-by: Victor Cezario <victorhcezario@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Zhilin Ruslan <x-th-unicorn@hotmail.com>
Co-authored-by: craguilera <craguilera@gmail.com>
Co-authored-by: edwin lopez <edwin.lopez@metabiblioteca.com>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/de/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/es/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/es_CO/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/es_MX/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/fr/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/it/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/nl/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/pl/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/pt_BR/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/ru/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/tr/
Translation: Zammad/Zammad (stable version)
2022-04-29 08:03:23 +02:00
Rolf Schmidt 2c77e73c39 Fixes #4067 - Javascript error undefined multiple while opening core workflow with tree selects. 2022-04-27 16:58:50 +02:00
Martin Gruner a969cd44d8
Maintenance: Apply Rails 6.0.4.8 security update. 2022-04-27 13:31:59 +02:00
Martin Gruner 28c5b986d4 Maintenance: Regenerate chat assets to match latest templates. 2022-04-25 15:56:00 +02:00
Dominik Klein 2cc110fd42 Fixes #4064 - Freshdesk import currently doesn't handle the ticket type field. 2022-04-25 12:55:32 +02:00
Rolf Schmidt 43aa552d8c Follow up d5655908c629581d1817ae6133ac1602c42354b1 - Fixes #4035 - Fix naming collision between SearchableAjaxSelect and ObjectManagerAttribute attributes. 2022-04-25 08:08:20 +00:00
Dominik Klein 54227e82ac Fixes #4055 - Migrations (Zendesk, Kayako) currently do not support custom dropdown multi-select fields. 2022-04-23 13:30:59 +02:00
Dominik Klein 652d2c27e9 Fixes #3748: Ticket in the ticket creation screen tags are shown after 2 characters, in the ticket zoom after 1 character. 2022-04-22 13:33:08 +02:00
Dominik Klein bb7ff179ed Maintenance: Fixed wrong fixture image path in selenium test. 2022-04-22 10:20:32 +02:00
Dominik Klein 339807b0a0 Fixed #4044: Clicking the button in a mail opens the link as a photo. 2022-04-21 16:11:35 +02:00
Rolf Schmidt 57f6b8ce6c Fixes #4041 - Tree select widget closes unexpectedly. 2022-04-21 11:56:10 +01:00
Martin Gruner 07dd0e8c5a Fixed issue#4039: Usage of pre + code HTML tags is broken and content is swallowed.
(cherry picked from commit 278f55addfe755443bb63614ce4d0ca3300ba9e5)
2022-04-21 07:09:18 +00:00
Martin Gruner 4ec64cf850 Fixes: #3867 - parsing incoming mails breaks on this line "Reply-To: <>".
(cherry picked from commit e3e64f1087ff9904a0b99573ebd7e9a0e18f4629)
2022-04-21 08:43:28 +02:00
Martin Gruner d71bd90ef9 Release Zammad 5.1.1. 🚀 2022-04-20 09:35:14 +02:00
Martin Gruner 6bdcbf933e Maintenance: Improved password reset handling.
(cherry picked from commit 8ea7b6630951b603a97bd38128de3f915a549b4d)
2022-04-19 14:53:20 +00:00
Martin Gruner 858474dc4c Maintenance: Improved handling of long passwords. 2022-04-19 14:53:20 +00:00
Weblate 177952f2f9 Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: Jeffrey Peerboom <jeffreypeerboom@eijsden-margraten.nl>
Co-authored-by: LAO <sumonchai@gmail.com>
Co-authored-by: Marlon Baez <marlon.baez@barolit.com>
Co-authored-by: Petr Daniel Ambrož <paces@paces.cz>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Zhilin Ruslan <x-th-unicorn@hotmail.com>
Co-authored-by: kirkkak <kirkka.kivilo@gmail.com>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/cs/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/es_MX/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/et/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/nl/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/ru/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/th/
Translation: Zammad/Zammad (stable version)
2022-04-19 15:18:38 +02:00
Rolf Schmidt 545289c29b Fixes #4060 - Error on second migration of an microsoft365 channel undefined method `options' for nil:NilClass. 2022-04-19 08:46:14 +01:00
Weblate bc7494dde2 Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: Marlon Baez <marlon.baez@barolit.com>
Co-authored-by: kirkkak <kirkka.kivilo@gmail.com>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/es_CO/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/es_MX/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/et/
Translation: Zammad/Zammad (stable version)
2022-04-15 16:26:15 +02:00
f a060554586 precompiled assets 2022-04-14 16:34:36 -03:00
f cfe2028210 lfs 2022-04-14 16:34:23 -03:00
f d628b76258 lfs 2022-04-14 16:34:18 -03:00
f 859c851522 production 2022-04-14 16:28:44 -03:00
f d0e872fcad sutty 2022-04-14 16:25:36 -03:00
Weblate 88fc907599 Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: Ales Zabala Alava <shagi@gisa-elkartea.org>
Co-authored-by: Frederic <frederic.rupfle@landkreis-lindau.de>
Co-authored-by: Jeffrey Peerboom <jeffreypeerboom@eijsden-margraten.nl>
Co-authored-by: Kamil <kserwus@gmail.com>
Co-authored-by: Marlon Baez <marlon.baez@barolit.com>
Co-authored-by: Martin Gruner <mg@zammad.com>
Co-authored-by: PIetro Sacchi <sacchi.pietro@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Zhilin Ruslan <x-th-unicorn@hotmail.com>
Co-authored-by: hrmtc <vampolka@pm.me>
Co-authored-by: kirkkak <kirkka.kivilo@gmail.com>
Co-authored-by: occirol <developer@nordan.ch>
Co-authored-by: valentin2323 <sttor11@gmail.com>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/bg/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/de/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/es/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/es_CO/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/es_MX/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/et/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/fr/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/it/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/nl/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/pl/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/ru/
Translation: Zammad/Zammad (stable version)
2022-04-14 09:14:17 +02:00
Martin Gruner f8e72c64c0 Maintenance: Mark string as translatable.
(cherry picked from commit 4f1fdaf0278ad4184bd920eb8cc77f09479726ca)
2022-04-14 08:19:31 +02:00
Dominik Klein 3cada0f15a Fixes #4052 - Freshdesk migration which doesn't support time entries runs in unwanted behaviour. 2022-04-14 07:43:04 +02:00
Martin Gruner 52834f0d85 Maintenance: Fix changelog URLs to show correctly on GitHub. 2022-04-13 15:37:14 +02:00
Martin Gruner 5bf0d6a106 Maintenance: Update nokogiri gem. 2022-04-12 06:10:25 +00:00
Dominik Klein cbf22c332d Fixes #4051 - Freshdesk-Migration does not like no Companies / Organisations within the source. 2022-04-12 07:23:29 +02:00
Rolf Schmidt 92d19a6221 Fixes #4029 - Cannot encrypt if multiple S/MIME certificates exist and one is expired. 2022-04-11 07:35:37 +01:00
Rolf Schmidt b85bd1fe79 Fixes #4035 - Core Workflow: Does show wrong field list if you only have admin permissions and not ticket.agent permissions. 2022-04-11 06:34:37 +00:00
Weblate e667b48a1b Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: Andres Eloy Rivera Garcia <andres.degozaru@gmail.com>
Co-authored-by: Jeffrey Peerboom <jeffreypeerboom@eijsden-margraten.nl>
Co-authored-by: Kamil <kserwus@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: nlovrens <nikola.lovrenscak@gmail.com>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/hr/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/it/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/nl/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/pl/
Translation: Zammad/Zammad (stable version)
2022-04-07 14:02:48 +02:00
Rolf Schmidt 8274bb8a11 Fixes #4049 - Can't delete smime certificate - ERROR: duplicate key value violates unique constraint. 2022-04-06 15:56:43 +02:00
Mantas Masalskis 0a3e7628b4 Fixes #4026 - Knowledge Base on-the-fly updating does not work 2022-04-05 07:55:00 +00:00
Rolf Schmidt 2844b6d95d Maintenance: Track console js errors in chrome capybara tests. 2022-04-05 07:23:54 +00:00
Rolf Schmidt 74da7fa014 Fixes #4046 - Core Workflow - Unable to select "has changed" logic when creating new workflow. It is also replaced with "is" in previously created workflows. 2022-04-05 08:11:06 +01:00
Rolf Schmidt 68a034e159 Fixes #4027 - undefined method to_hash on editing select fields in the admin interface after migration to 5.1. 2022-04-04 12:15:55 +01:00
Weblate 2c6710cd3f Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: Gerrit <github@gmail.arghs.de>
Co-authored-by: Guillaume Mosty <guillaume@externaliz-it.be>
Co-authored-by: Jc <dottdot.dev@gmail.com>
Co-authored-by: LAO <sumonchai@gmail.com>
Co-authored-by: Lorenzo Milesi <lorenzo.milesi@yetopen.com>
Co-authored-by: Martin Gruner <mg@zammad.com>
Co-authored-by: Sydney <bogaert+github@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: grantw <grantw@gmail.com>
Co-authored-by: lencell <despotik@free.fr>
Co-authored-by: salvolp <s.salvo17@gmail.com>
Co-authored-by: Андриан Галкин <galandrix@gmail.com>
Co-authored-by: Вячеслав Карпов <pvd86@mail.ru>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/de/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/es/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/fr/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/it/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/nl/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/ru/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/th/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/zh_Hans/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/zh_Hant/
Translation: Zammad/Zammad (stable version)
2022-04-04 07:32:25 +02:00
Martin Gruner 346ef5b3b2 Maintenance: Disable WebMock in Capybara to solve Net::OpenTimeout issues.
(cherry picked from commit 69067529f7e8f98b22091bf5942bf305108fa3f5)
2022-04-01 12:08:46 +02:00
Mantas Masalskis 68d7592610 Fixes #4008 - KB Public menus scroll bar positioning incorrect 2022-03-31 14:51:14 +03:00
Martin Gruner 94a467a2a3 Maintenance: Bump puma from 4.3.11 to 4.3.12
Bumps [puma](https://github.com/puma/puma) from 4.3.11 to 4.3.12.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v4.3.11...v4.3.12)

(cherry picked from commit c560cb40109bd820939e411edd432c1857336bd4)
2022-03-31 07:24:42 +02:00
Martin Gruner 7fad439870 Fixes #4020 - Problems with duplicate records in Translations table. 2022-03-29 19:44:58 +02:00
Rolf Schmidt 49b73de11a Fixes #4024 - Tree select value cannot be set to "-" (empty) with Trigger/Scheduler/Core workflow. 2022-03-29 08:38:58 +00:00
Rolf Schmidt 772bf3516c Fixes #4032 - Admin macros are not usable with admin permissions only. 2022-03-29 07:36:00 +00:00
Rolf Schmidt a3a8661e90 Fixes #4033 - Admin SLA index view does not show update time if "for agent respond" is selected. 2022-03-29 06:56:01 +00:00
Rolf Schmidt 62c527c772 Fixes #4034 - Core Workflow: Stop after match is not saved. 2022-03-29 06:55:37 +00:00
Rolf Schmidt 9e1581d9b6 Follow up b930827b77 - Fixes #3240 - Fixed key for microsoft migration. 2022-03-28 14:14:47 +01:00
Weblate 909715136e Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: Arthur <arthur.michon@outlook.fr>
Co-authored-by: Ben RUBSON <ben.rubson@gmx.com>
Co-authored-by: Georgy Bobrov <gbobrov@gmail.com>
Co-authored-by: Gerrit <github@gmail.arghs.de>
Co-authored-by: LAO <sumonchai@gmail.com>
Co-authored-by: Marcel Herrguth <github@thehomeofanime.de>
Co-authored-by: PackyZhang <zhanghongbang@live.com>
Co-authored-by: Rowdy van der Veen <rowdy@rowdyengeesje.nl>
Co-authored-by: Svyrydov Semen <pincher2006@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Zhilin Ruslan <x-th-unicorn@hotmail.com>
Co-authored-by: kirkkak <kirkka.kivilo@gmail.com>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/de/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/et/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/fr/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/nl/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/ru/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/th/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/uk/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/zh_Hans/
Translation: Zammad/Zammad (stable version)
2022-03-25 18:56:21 +00:00
Martin Gruner 1e91639a4c Maintenance: Bump PoParser from 3.2.5 to 3.2.6
Bumps [PoParser](https://github.com/arashm/poparser) from 3.2.5 to 3.2.6.
- [Release notes](https://github.com/arashm/poparser/releases)
- [Changelog](https://github.com/arashm/PoParser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/arashm/poparser/compare/v3.2.5...v3.2.6)

(cherry picked from commit 8dc97345c2e7dd007ab6fe36cf2dd30db4bf97dc)
2022-03-25 06:47:15 +01:00
Dominik Klein 83e9138014 Fixes #4028 - Freshdesk import error when a inline image source attribute contains no clean url. 2022-03-24 18:22:58 +01:00
Rolf Schmidt 740f8bf4d2 Fixes #3984 - Mention history does not show properly who got added. 2022-03-24 08:31:35 +00:00
Martin Gruner 1049368fc7 Maintenance: Refactor handling of ES versions in CI. 2022-03-23 18:15:37 +01:00
Martin Gruner f111d0cce3 Maintenance: Add test for Translation.sync with all active locales. 2022-03-23 08:17:38 +01:00
Rolf Schmidt 58f3cd6737 Fixes #4023 - Obsolete notice field in admin calendar view. 2022-03-21 14:57:23 +00:00
Rolf Schmidt 76d8a83f0f Fixes #4022 - Error “customer_id required” on Macro execution. 2022-03-21 12:03:46 +00:00
Mantas Masalskis 2d6149234d Fixes #4016 - Translations are not available in API after syncing 2022-03-18 22:53:49 +02:00
Rolf Schmidt 2e02221535 Fixes #4018 - Upgraded to 5.1.0: pending time doesn’t show a date. 2022-03-18 15:34:37 +00:00
Martin Gruner cb90521e13 Revert "Maintenance: Translations update from translations.zammad.org."
This reverts commit dcfe8759ff.

Caused issues with translation sync to DB.
https://github.com/experteer/simple_po_parser/issues/3
2022-03-18 15:34:19 +01:00
Rolf Schmidt 56ae3eb8e8 Fixes #3919 - UI is not updated right after importing users csv file. 2022-03-18 11:46:03 +00:00
Weblate dcfe8759ff Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: Ben RUBSON <ben.rubson@gmx.com>
Co-authored-by: Denilson Silva <hebert.denilson@gmail.com>
Co-authored-by: Marcel Herrguth <github@thehomeofanime.de>
Co-authored-by: Martin Gruner <mg@zammad.com>
Co-authored-by: Péter Dobos <peter.dobos@neucom.hu>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: albertoarmida <alberto.armida@gmail.com>
Co-authored-by: grantw <grantw@gmail.com>
Co-authored-by: tasagore <tasagore.seibei@gmail.com>
Co-authored-by: Вячеслав Карпов <pvd86@mail.ru>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/de/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/es/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/fr/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/hu/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/it/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/pt_PT/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/ru/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-stable/zh_Hans/
Translation: Zammad/Zammad (stable version)
2022-03-18 08:58:03 +01:00
Rolf Schmidt 38f5768eb0 Fixes #3994 - LDAP with many groups (<5k) and group role relation (>50) will crash in frontend. 2022-03-18 07:21:48 +00:00
Martin Gruner dbbd3095d7 Maintenance: Improve packager.io build configuration to work with new buildpack. 2022-03-16 10:27:37 +01:00
Martin Gruner 1d344d5ec9 Maintenance: Make headless mode configurable. 2022-03-16 09:23:58 +01:00
Martin Gruner be44c36a02 Maintenance: Switch back to (new) stable selenium images. 2022-03-15 12:16:55 +01:00
Martin Gruner 8eb588a370 Maintenance: Improved CI configuration to run certain jobs only in low concurrency environments. 2022-03-15 11:35:07 +01:00
Martin Gruner eefae45c2a Release Zammad 5.1.0. 🚀 2022-03-14 13:15:26 +01:00
Martin Gruner 0a0e77dab8 Maintenance: Applied rubocop changes. 2022-03-14 10:15:43 +00:00
Martin Gruner a7f312bec7 Maintenance: Improve handling of config updates. 2022-03-14 10:15:43 +00:00
Dominik Klein 1cfd323845 Maintenance: Aligned the integration handling for sipgate. 2022-03-14 10:15:43 +00:00
Rolf Schmidt b5feb6f4c9 Fixes #4007 - Report profile "new profile" button does not match coloring scheme. 2022-03-14 09:58:41 +00:00
Rolf Schmidt 2df8c9c7bf Fixes #4009 - "Note - visibility confirmation dialog" setting also requests confirmation for e.g. email and phone articles. 2022-03-14 10:58:20 +01:00
Martin Gruner 69755b6afd Maintenance: Bump vcr from 6.0.0 to 6.1.0
Bumps [vcr](https://github.com/vcr/vcr) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/vcr/vcr/releases)
- [Changelog](https://github.com/vcr/vcr/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vcr/vcr/compare/v6.0.0...v6.1.0)
2022-03-14 04:35:56 +01:00
Weblate 900f67f796 Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: Martin Gruner <mg@zammad.com>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/de/
Translation: Zammad/Zammad (development version)
2022-03-11 14:49:19 +01:00
Martin Gruner d0ccd3b194 Maintenance: Bump telephone_number from 1.4.13 to 1.4.14
Bumps [telephone_number](https://github.com/mobi/telephone_number) from 1.4.13 to 1.4.14.
- [Release notes](https://github.com/mobi/telephone_number/releases)
- [Changelog](https://github.com/mobi/telephone_number/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mobi/telephone_number/compare/v1.4.13...v1.4.14)
2022-03-11 04:35:07 +01:00
Bola Ahmed Buari 459bbd405f Fixes #3609 - Ensure 4 column selections within UI does not cover add/remove buttons. 2022-03-10 13:45:29 +01:00
rotimiazeez 4fe37d7193 Fixes #3925, Closes #3987 - KB RTL text direction has wrong spacing between some elements. 2022-03-10 13:34:10 +01:00
Bola Ahmed Buari 6a6166f9a5 Fixes #3665 - Longer category names break boxes in mobile version. 2022-03-10 12:37:33 +01:00
Mantas 4a71dc4eeb Fixes #3997 - KB: granular permissions misconfiguration is allowed by UI 2022-03-10 09:06:44 +00:00
Mantas Masalskis 20015da4d3 Fixes #3965 - Can not start a row in a knowledge base article with a linked answer 2022-03-10 10:06:21 +01:00
Martin Gruner a2ed9a767e Maintenance: Bump twilio-ruby from 5.65.0 to 5.65.1
Bumps [twilio-ruby](https://github.com/twilio/twilio-ruby) from 5.65.0 to 5.65.1.
- [Release notes](https://github.com/twilio/twilio-ruby/releases)
- [Changelog](https://github.com/twilio/twilio-ruby/blob/main/CHANGES.md)
- [Commits](https://github.com/twilio/twilio-ruby/compare/5.65.0...5.65.1)
2022-03-10 07:00:30 +00:00
Martin Gruner 4ba97f797d Maintenance: Bump rubocop from 1.25.1 to 1.26.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.25.1 to 1.26.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.25.1...v1.26.0)
2022-03-10 04:35:41 +01:00
Mantas Masalskis 513fadc8dc Fixes #3999 - Long role names get broken due to bad overflow 2022-03-09 22:32:12 +01:00
ruslanjankurazov d6236a3afa PR #3780 - adds Russian translation to email templates and chat widget 2022-03-09 18:18:14 +02:00
Bola Ahmed Buari 86683b341e Fixes #4004 - Overviews are not shown if group_by is used with a tree select attribute. 2022-03-09 14:56:23 +01:00
Martin Gruner f052c2a33f Maintenance: Improve 'Forgot Password' handling. 2022-03-09 13:38:42 +01:00
Martin Gruner e74af6e4bc Maintenance: Updated Rails and some other gems. 2022-03-08 21:14:21 +01:00
Mantas Masalskis 381713e5db Maintenance: Stabilize KB granular permissions tests. 2022-03-08 20:19:45 +01:00
Weblate eb9882f39f Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: Martin Gruner <mg@zammad.com>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/de/
Translation: Zammad/Zammad (development version)
2022-03-08 14:05:43 +01:00
Martin Gruner 765d2b2cd7 Maintenance: Improve sync-to-github script. 2022-03-08 11:19:01 +01:00
Martin Gruner f254a97cc6 Fixes #4000 - Unable to upgrade to Zammad 5.1. 2022-03-08 10:34:49 +01:00
Martin Gruner b7ebd470dd Maintenance: Bump rspec-rails from 5.1.0 to 5.1.1
Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 5.1.0 to 5.1.1.
- [Release notes](https://github.com/rspec/rspec-rails/releases)
- [Changelog](https://github.com/rspec/rspec-rails/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-rails/compare/v5.1.0...v5.1.1)
2022-03-08 04:35:31 +01:00
Zammad Weblate 0b0bb8bc40 Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: Martin Gruner <mg@zammad.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: unimol <github@salzpost.de>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/de/
Translation: Zammad/Zammad (development version)
2022-03-07 17:25:18 +01:00
Martin Gruner 2fc02a9012 Maintenance: Remove unneeded strings from translation catalog. 2022-03-07 14:12:33 +01:00
Martin Gruner a95e9fae2d Maintenance: Bump faker from 2.19.0 to 2.20.0
Bumps [faker](https://github.com/faker-ruby/faker) from 2.19.0 to 2.20.0.
- [Release notes](https://github.com/faker-ruby/faker/releases)
- [Changelog](https://github.com/faker-ruby/faker/blob/master/CHANGELOG.md)
- [Commits](https://github.com/faker-ruby/faker/compare/v2.19.0...v2.20.0)
2022-03-07 06:43:46 +00:00
Martin Gruner 65bd4c7ce7 Maintenance: Fix HtmlSanitizer timeout stubbing in minitest. 2022-03-07 06:55:24 +01:00
Martin Gruner 91e108fc97 Maintenance: Bump rubocop-performance from 1.13.2 to 1.13.3
Bumps [rubocop-performance](https://github.com/rubocop/rubocop-performance) from 1.13.2 to 1.13.3.
- [Release notes](https://github.com/rubocop/rubocop-performance/releases)
- [Changelog](https://github.com/rubocop/rubocop-performance/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-performance/compare/v1.13.2...v1.13.3)
2022-03-06 04:35:47 +01:00
Zammad Weblate e83f9b88ca Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: Jean-Etienne Castagnede <jecastagnede@vivaldi.net>
Co-authored-by: Marcel Herrguth <github@thehomeofanime.de>
Co-authored-by: Martin Gruner <mg@zammad.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: crnfpp <crnfpp@unife.it>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/de/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/fr/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/it/
Translation: Zammad/Zammad (development version)
2022-03-05 10:01:16 +01:00
Martin Gruner f84ac43cdd Maintenance: Switch to headless Selenium in CI. 2022-03-04 14:49:17 +01:00
Martin Gruner 25c971ed00 Maintenance: Stabilize Selenium tests by improving the wait_for_empty_ajax_queue logic. 2022-03-04 13:21:07 +01:00
Martin Gruner 8e537754bf Maintenance: Stabilize search bulkform test. 2022-03-04 11:36:21 +00:00
Martin Gruner 6937b4667f Maintenance: Stabilize 'stay on tab' test. 2022-03-04 11:55:31 +01:00
Rolf Schmidt 940e22db6d Maintenance: Stabilize test: capybara:chrome:2 Overviews conditions for shown tickets for organization. 2022-03-04 10:33:07 +01:00
Mantas 032995eeef Fixes #3995 - Select field in bulk operations out of view port 2022-03-04 07:53:24 +00:00
Mantas 4acf9cac67 Fixes #3915 - No longer public KB answers do not return http 404 2022-03-03 18:21:33 +00:00
Rolf Schmidt cc9977460e Fixes #3964 - Selecting custom ports for mail channel ends in 'host not reachable'. 2022-03-03 10:04:12 +01:00
Mantas Masalskis 8671aea0b4 Maintenance: RSpec attachments simulating cleanup 2022-03-02 16:43:40 +01:00
Rolf Schmidt 6e42aeb1ee Fixes #3983 - Draft Sharing: Add history entry for updating and deleting of a draft. 2022-03-02 13:55:30 +01:00
Mantas Masalskis 0fcbb11684 Fixes #3981 - Draft Sharing: Draft stays after new ticket creation. 2022-03-02 13:24:16 +01:00
Mantas Masalskis c6d9abd96e Maintenance: Improved RSpec screen size handling. 2022-03-02 10:35:35 +01:00
Bola Ahmed Buari aae15bcf4d Fixes #3974 - Modal backdrop not covering some UI parts. 2022-03-02 09:41:00 +01:00
Zammad Weblate 073d947f3f Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: Daniel Merbecks <Daniel.merbecks@brry.de>
Co-authored-by: Lorenzo Milesi <lorenzo.milesi@yetopen.com>
Co-authored-by: Marcel Herrguth <github@thehomeofanime.de>
Co-authored-by: Martin Gruner <mg@zammad.com>
Co-authored-by: Rainer Trunk <trunk.rainer@freaktab.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Вячеслав Карпов <pvd86@mail.ru>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/de/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/it/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/ru/
Translation: Zammad/Zammad (development version)
2022-03-01 19:50:56 +01:00
Martin Gruner 9bccb2d2d2 Maintenance: Improved source strings for new features. 2022-03-01 13:02:50 +01:00
Martin Gruner b6151cb0da Maintenance: Switch to Selenium 4. 2022-03-01 11:26:51 +01:00
Martin Gruner 26e833cace Maintenance: Fix Clearbit integration test. 2022-03-01 10:06:14 +01:00
Martin Gruner 3abe4fbcef Maintenance: Bump twilio-ruby from 5.64.0 to 5.65.0
Bumps [twilio-ruby](https://github.com/twilio/twilio-ruby) from 5.64.0 to 5.65.0.
- [Release notes](https://github.com/twilio/twilio-ruby/releases)
- [Changelog](https://github.com/twilio/twilio-ruby/blob/main/CHANGES.md)
- [Commits](https://github.com/twilio/twilio-ruby/compare/5.64.0...5.65.0)
2022-03-01 08:59:35 +00:00
Martin Gruner 563d2d1e3d Maintenance: Bump rubocop-rspec from 2.8.0 to 2.9.0
Bumps [rubocop-rspec](https://github.com/rubocop/rubocop-rspec) from 2.8.0 to 2.9.0.
- [Release notes](https://github.com/rubocop/rubocop-rspec/releases)
- [Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rspec/compare/v2.8.0...v2.9.0)
2022-03-01 09:00:40 +01:00
Mantas Masalskis b8f5eb6a7d Fixes #3977 - KB: Roles are displayed twice in permission dialog 2022-02-28 10:21:10 +01:00
Mantas b924dbfa80 Fixes #3978 - KB: Unpermitted categories are displayed after browsing 2022-02-26 00:46:10 +02:00
Rolf Schmidt e32418e02c Fixes #3982 - Draft Sharing: Improve sidebar icon order for ticket creation. 2022-02-25 09:48:45 +00:00
Rolf Schmidt c1ae526ac0 Follow up 92b7c39879 - Fixes #3930 - Make sidebar attachments unique. 2022-02-25 10:48:37 +01:00
Mantas Masalskis c1d467aa3d Fixes #629 - Draft Sharing. 2022-02-24 12:33:52 +01:00
Rolf Schmidt 92b7c39879 Fixes #3930 - Make sidebar attachments unique. 2022-02-24 12:23:39 +01:00
Mantas Masalskis 154b3accf9 Fixes #2603 - Limit access to KB Categories based on roles. 2022-02-24 12:15:19 +01:00
Rolf Schmidt 3a4ada93b4 Maintenance: Fix file permissions for db user helper. 2022-02-22 12:41:32 +00:00
Rolf Schmidt f0a8114af6 Maintenance: Bump nokogiri from 1.13.1 to 1.13.3. 2022-02-22 09:27:03 +00:00
Martin Gruner f7f6291504 Maintenance: Add support for collapsible sections in GitLab job logs. 2022-02-21 21:07:15 +01:00
Bola Ahmed Buari b18a28bdbe Follow up - ffb958d - Maintenance : Bump bootstrap to 3.4.1 2022-02-21 14:49:04 +00:00
Martin Gruner 7a6539b262 Maintenance: Bump pundit from 2.1.1 to 2.2.0
Bumps [pundit](https://github.com/varvet/pundit) from 2.1.1 to 2.2.0.
- [Release notes](https://github.com/varvet/pundit/releases)
- [Changelog](https://github.com/varvet/pundit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/varvet/pundit/compare/v2.1.1...v2.2.0)
2022-02-21 11:37:45 +01:00
Martin Gruner 1183354321 Maintenance: Stabilize ticket zoom capybara test. 2022-02-21 07:40:51 +00:00
Martin Gruner 8167915f52 Maintenance: Bump valid_email2 from 4.0.2 to 4.0.3
Bumps [valid_email2](https://github.com/micke/valid_email2) from 4.0.2 to 4.0.3.
- [Release notes](https://github.com/micke/valid_email2/releases)
- [Changelog](https://github.com/micke/valid_email2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micke/valid_email2/compare/v4.0.2...v4.0.3)
2022-02-21 06:13:07 +00:00
Martin Gruner b3e6e8a703 Maintenance: Bump oauth2 from 1.4.8 to 1.4.9
Bumps [oauth2](https://github.com/oauth-xx/oauth2) from 1.4.8 to 1.4.9.
- [Release notes](https://github.com/oauth-xx/oauth2/releases)
- [Changelog](https://github.com/oauth-xx/oauth2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/oauth-xx/oauth2/compare/v1.4.8...v1.4.9)
2022-02-21 04:35:14 +01:00
Martin Gruner 74895cde35 Maintenance: Bump oauth2 from 1.4.7 to 1.4.8
Bumps [oauth2](https://github.com/oauth-xx/oauth2) from 1.4.7 to 1.4.8.
- [Release notes](https://github.com/oauth-xx/oauth2/releases)
- [Changelog](https://github.com/oauth-xx/oauth2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/oauth-xx/oauth2/compare/v1.4.7...v1.4.8)
2022-02-19 04:34:59 +01:00
Bola Ahmed Buari 792a858bb3 Maintenance: Stabilize capybara test. 2022-02-18 19:38:03 +01:00
Martin Gruner f3c6741143 Maintenance: Improve translatable source strings. 2022-02-18 16:30:53 +01:00
Rolf Schmidt d3ca97a95d Maintenance: Improve overview test to show ticket list by scroll better and added wait to stabilize results. 2022-02-18 13:08:09 +01:00
Rolf Schmidt 5867cf392c Fixes #3969 - Frequent “Lost connection to MySQL server during query” errors resulting in client-side Error 500. 2022-02-18 10:45:23 +00:00
Martin Gruner 29a3b5fd54 Maintenance: Removed unneeded translatable string marker. 2022-02-18 11:20:46 +01:00
Weblate 2434aeb133 Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: LAO <sumonchai@gmail.com>
Co-authored-by: Marcel Herrguth <github@thehomeofanime.de>
Co-authored-by: Martin Gruner <mg@zammad.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: ajasimiq <ahmedjaseem@gmail.com>
Co-authored-by: mohammdhani <mohammdhani@gmail.com>
Co-authored-by: 황윤성 <hys@osbusiness.net>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/ar/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/de/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/ko/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/th/
Translation: Zammad/Zammad (development version)
2022-02-18 09:44:14 +00:00
Martin Gruner f40c5ea01e Maintenance: Stabilize capybara tests. 2022-02-18 09:12:37 +01:00
Martin Gruner f7bf58b022 Maintenance: Improve translatable source strings. 2022-02-17 11:11:14 +01:00
Rolf Schmidt 257ab2fc60 Fixes #3920 - Not translated text with forwarding e-mails. 2022-02-16 16:20:25 +01:00
Martin Gruner c73502d976 Follow-up: e9f0d3bcb1 - Enhance CTI integration texts. 2022-02-16 16:13:35 +01:00
Bola Ahmed Buari fc461e74c1 Maintenance: Port old first steps tests to capybara. 2022-02-16 10:42:04 +01:00
Martin Gruner e9f0d3bcb1 Fixes: #2753 - Enhance CTI integration texts. 2022-02-16 09:53:35 +01:00
Rolf Schmidt 84d2421c5c Fixes #3957 - S/MIME function buttons no longer working in tickets. 2022-02-16 09:52:18 +01:00
Martin Gruner 9f9df552e7 Maintenance: Fixed typo in source string. 2022-02-16 09:40:15 +01:00
Martin Gruner 502aa2cde3 Maintenance: Improved translatable source string. 2022-02-16 08:41:51 +01:00
Weblate c68a376388 Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: Daniel Merbecks <Daniel.merbecks@brry.de>
Co-authored-by: Jc <dottdot.dev@gmail.com>
Co-authored-by: Marcel Herrguth <github@thehomeofanime.de>
Co-authored-by: Martin Gruner <mg@zammad.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: crnfpp <crnfpp@unife.it>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/de/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/it/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/zh_Hant/
Translation: Zammad/Zammad (development version)
2022-02-15 13:53:41 +00:00
Dominik Klein 58f690069a Maintenance: Try to make the maintenance login message test more robust with the waiting on the event bindings. 2022-02-15 10:20:08 +00:00
Martin Gruner 5aee2830b6 Maintenance: Moved Translation API documentation from wiki to codebase. 2022-02-15 10:35:52 +01:00
Martin Gruner 09ec1be0ac Maintenance: Bump dalli from 3.2.0 to 3.2.1
Bumps [dalli](https://github.com/petergoldstein/dalli) from 3.2.0 to 3.2.1.
- [Release notes](https://github.com/petergoldstein/dalli/releases)
- [Changelog](https://github.com/petergoldstein/dalli/blob/main/History.md)
- [Commits](https://github.com/petergoldstein/dalli/compare/v3.2.0...v3.2.1)
2022-02-15 04:36:38 +01:00
Dominik Klein 334a629959 Maintenance: Try to make the maintenance login message test more robust. 2022-02-14 19:15:05 +00:00
Rolf Schmidt 98438adeb1 Fixes #3928 - Show which escalation type escalated in ticket zoom. 2022-02-14 13:34:11 +01:00
Martin Gruner 294df1de2f Maintenance: Bump rails from 6.0.4.4 to 6.0.4.6 and puma from 4.3.10 to 4.3.11. 2022-02-14 08:57:57 +01:00
Martin Gruner 4a2302b2ae Maintenance: Drop 'translator_key' setting that has become obsolete by the Weblate migration. 2022-02-11 16:17:24 +00:00
Martin Gruner 502e60b051 Maintenance: Stabilize Text Module test by disabling XSS processing timeout. 2022-02-11 15:25:39 +01:00
Martin Gruner dd71e0c219 Maintenance: Fixed ticket create test. 2022-02-11 11:45:05 +00:00
Dominik Klein d9e62c7110 Maintenance: Try to make the maintenance login message selenium test more robust. 2022-02-11 11:41:53 +00:00
Martin Gruner 4c83541c21 Maintenance: Improve test stability. 2022-02-11 11:37:06 +00:00
Rolf Schmidt 56fc5859e6 Maintenance: Remove obsolete comment. 2022-02-11 10:39:28 +00:00
Rolf Schmidt de30ba60ac Maintenance: Keep all artifacts one week. 2022-02-11 10:22:07 +00:00
Martin Gruner 170bfc6e59 Maintenance: Stabilize ticket history test. 2022-02-11 10:05:36 +00:00
Martin Gruner e6aec87df1 Maintenance: Fixed timeout issue in ticket_trigger_test.rb. 2022-02-11 08:29:12 +00:00
Rolf Schmidt fcd49d7135 Maintenance: Make sure relation options will be only read for select fields, so it has no impact for auto_completion fields. 2022-02-11 08:18:50 +00:00
Rolf Schmidt 85315f88dc Fixes #3960 - Enable migration button feature for account migration MS365/Google channel. 2022-02-11 09:18:17 +01:00
Martin Gruner 62b6e34647 Maintenance: Corrected translatable source string. 2022-02-11 06:39:33 +00:00
Weblate 5c7f940f81 Maintenance: Translations update from translations.zammad.org.
Special thanks to the amazing translation team. You rock! 💪

Co-authored-by: LAO <sumonchai@gmail.com>
Co-authored-by: Lorenzo Milesi <lorenzo.milesi@yetopen.com>
Co-authored-by: Marcel Herrguth <github@thehomeofanime.de>
Co-authored-by: Marco <revolution.gf@libero.it>
Co-authored-by: Marcos Aurélio Silvério <maureliosilverio@gmail.com>
Co-authored-by: Misha <misha@association-enoria.org>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/de/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/fr/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/it/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/pt_BR/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/th/
Translation: Zammad/Zammad (development version)
2022-02-11 04:30:19 +01:00
Rolf Schmidt bf945b4ea1 Follow up 0b449839ea - Fixes #3956 - Migration of the MS365 account fails by upper and lower case differences in email address. 2022-02-10 16:24:35 +00:00
Rolf Schmidt 5707517181 Fixes #3958 - Opening organization views throws console traces. 2022-02-10 13:10:17 +01:00
Rolf Schmidt 0b449839ea Fixes #3956 - Migration of the MS365 account fails by upper and lower case differences in email address. 2022-02-10 12:38:31 +01:00
Martin Gruner b61a3989dc Maintenance: Bump twilio-ruby from 5.63.1 to 5.64.0
Bumps [twilio-ruby](https://github.com/twilio/twilio-ruby) from 5.63.1 to 5.64.0.
- [Release notes](https://github.com/twilio/twilio-ruby/releases)
- [Changelog](https://github.com/twilio/twilio-ruby/blob/main/CHANGES.md)
- [Commits](https://github.com/twilio/twilio-ruby/compare/5.63.1...5.64.0)
2022-02-10 04:35:46 +01:00
Rolf Schmidt ad2b3e1dca Fixes #3955 - Elasticsearch-Rebuild does not index from new to old. 2022-02-09 10:46:10 +01:00
Martin Gruner a7861725a1 Maintenance: Reorganize CI 'test' stage for better overall CI performance. 2022-02-09 09:37:15 +01:00
Bola Ahmed Buari 98f789610a Follow up - 296d402 - Maintenance: Upgrade jQuery to version 3.6. 2022-02-08 18:36:02 +00:00
Bola Ahmed Buari ffb958d22d Maintenance : Bump bootstrap to 3.4.1 2022-02-08 19:27:15 +01:00
Martin Gruner ac3e020ef9 Maintenance: Reorganize CI jobs in "pre" stage to reduce overall CI load. 2022-02-08 16:05:17 +01:00
Rolf Schmidt 3d8398769a Fixes #3921 - Can not chose SSL yes and port 143 when setting up mail account. 2022-02-08 10:37:53 +01:00
Weblate 52ced8dd40 Translated using Weblate (German)
Currently translated at 77.4% (1883 of 2432 strings)

Translated using Weblate (German)

Currently translated at 77.3% (1880 of 2432 strings)

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translated using Weblate (German)

Currently translated at 77.3% (1889 of 2442 strings)

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translated using Weblate (Portuguese (Brazil))

Currently translated at 58.3% (1425 of 2441 strings)

Translated using Weblate (Italian)

Currently translated at 63.7% (1555 of 2441 strings)

Translated using Weblate (Croatian)

Currently translated at 18.5% (454 of 2441 strings)

Translated using Weblate (German)

Currently translated at 76.8% (1875 of 2441 strings)

Co-authored-by: Lorenzo Milesi <lorenzo.milesi@yetopen.com>
Co-authored-by: Marcos Aurélio Silvério <maureliosilverio@gmail.com>
Co-authored-by: Martin Gruner <mg@zammad.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: fpavis <gljivac@gmail.com>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/de/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/hr/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/it/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/pt_BR/
Translation: Zammad/Zammad (development version)
2022-02-07 19:37:43 +00:00
Martin Gruner bb52f04db9 Maintenance: Add link to translations.zammad.org and change the notification threshold for the translation support modal. 2022-02-07 19:55:55 +01:00
Martin Gruner 02d4ead4e3 Maintenance: Improved translatable source strings. 2022-02-07 16:13:31 +01:00
Martin Gruner c86ead67e4 Maintenance: Fix untranslatable wording in the ticket link dialog. 2022-02-07 13:19:21 +01:00
Bola Ahmed Buari b858b97742 Fixes #3950 - Uncaught TypeError in ticket zoom highlighter 2022-02-07 08:05:43 +00:00
Martin Gruner 7e9ec397be Maintenance: Bump rb-fsevent from 0.11.0 to 0.11.1
Bumps [rb-fsevent](https://github.com/thibaudgg/rb-fsevent) from 0.11.0 to 0.11.1.
- [Release notes](https://github.com/thibaudgg/rb-fsevent/releases)
- [Commits](https://github.com/thibaudgg/rb-fsevent/compare/v0.11.0...v0.11.1)
2022-02-07 07:39:02 +00:00
Martin Gruner b2cc0d6a12 Maintenance: Bump valid_email2 from 4.0.1 to 4.0.2
Bumps [valid_email2](https://github.com/micke/valid_email2) from 4.0.1 to 4.0.2.
- [Release notes](https://github.com/micke/valid_email2/releases)
- [Changelog](https://github.com/micke/valid_email2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micke/valid_email2/compare/v4.0.1...v4.0.2)
2022-02-07 04:35:56 +01:00
Mantas Masalskis 98604f84da Fixes #3245 - Rename Third-Party login: Office 365 to Microsoft 365 2022-02-06 21:36:30 +01:00
Rolf Schmidt ceac28ce4d Fixes #3942 - New online notifications blocks data privacy user deletion. 2022-02-04 16:43:28 +01:00
Bola Ahmed Buari 48cfdc8697 Fixes #3944 - Multiselects shows wrong display values in overviews 2022-02-04 12:26:19 +01:00
Martin Gruner afb75b23ae Maintenance: Disable default user avatar fetching in test environment. 2022-02-04 11:56:24 +01:00
Martin Gruner 048ce041e7 Maintenance: Drop unused changelog generator gem dependency. 2022-02-04 06:36:40 +01:00
Martin Gruner 7e62d3da88 Maintenance: Bump rubocop from 1.25.0 to 1.25.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.25.0 to 1.25.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.25.0...v1.25.1)
2022-02-04 04:36:03 +01:00
Martin Gruner 83f35186e6 Maintenance: Bump bootsnap from 1.10.2 to 1.10.3
Bumps [bootsnap](https://github.com/Shopify/bootsnap) from 1.10.2 to 1.10.3.
- [Release notes](https://github.com/Shopify/bootsnap/releases)
- [Changelog](https://github.com/Shopify/bootsnap/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Shopify/bootsnap/compare/v1.10.2...v1.10.3)
2022-02-03 08:40:42 +00:00
Weblate a70de9620a Translated using Weblate (Portuguese (Brazil))
Currently translated at 55.2% (1348 of 2441 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 55.0% (1344 of 2441 strings)

Co-authored-by: Marcos Aurélio Silvério <maureliosilverio@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/pt_BR/
Translation: Zammad/Zammad (development version)
2022-02-03 07:46:42 +00:00
Martin Gruner eeb3f1779c Maintenance: Bump redis from 4.5.1 to 4.6.0
Bumps [redis](https://github.com/redis/redis-rb) from 4.5.1 to 4.6.0.
- [Release notes](https://github.com/redis/redis-rb/releases)
- [Changelog](https://github.com/redis/redis-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/redis/redis-rb/compare/v4.5.1...v4.6.0)
2022-02-03 04:35:55 +01:00
Bola Ahmed Buari 296d402ba0 Maintenance: Upgrade jQuery to version 3.6. 2022-02-02 10:51:08 +01:00
Martin Gruner 04ad3348b7 Maintenance: Bump zendesk_api from 1.34.0 to 1.35.0
Bumps [zendesk_api](https://github.com/zendesk/zendesk_api_client_rb) from 1.34.0 to 1.35.0.
- [Release notes](https://github.com/zendesk/zendesk_api_client_rb/releases)
- [Changelog](https://github.com/zendesk/zendesk_api_client_rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zendesk/zendesk_api_client_rb/compare/v1.34.0...v1.35.0)
2022-02-02 06:22:43 +00:00
Rolf Schmidt bd373de069 Fixes #3940 - dead lock on user update in high load environment. 2022-02-01 07:30:13 +00:00
Martin Gruner b40ca87b2a Maintenance: Improve handling of XSS timeouts in tests. 2022-01-31 16:34:33 +01:00
Thorsten Eckel f79e8c72cd Refactoring: Add possibility to write tests for custom Zammad rubocop cops. 2022-01-31 15:10:31 +01:00
Rolf Schmidt 8dd045af75 Maintenance: Fix difference function to compare both ways and also make sure that the observer copies hashes to prevent references. 2022-01-31 10:50:48 +01:00
Zammad Weblate 6b093828a5 Translated using Weblate (German)
Currently translated at 75.4% (1841 of 2441 strings)

Translated using Weblate (German)

Currently translated at 75.4% (1841 of 2441 strings)

Translated using Weblate (Thai)

Currently translated at 21.2% (518 of 2441 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 50.8% (1241 of 2441 strings)

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translated using Weblate (Italian)

Currently translated at 63.1% (1542 of 2441 strings)

Translated using Weblate (German)

Currently translated at 75.4% (1842 of 2441 strings)

Translated using Weblate (German)

Currently translated at 75.4% (1842 of 2441 strings)

Translated using Weblate (German)

Currently translated at 75.4% (1842 of 2441 strings)

Translated using Weblate (German)

Currently translated at 72.8% (1778 of 2441 strings)

Translated using Weblate (German)

Currently translated at 72.8% (1778 of 2441 strings)

Translated using Weblate (German)

Currently translated at 72.7% (1777 of 2441 strings)

Translated using Weblate (German)

Currently translated at 72.7% (1777 of 2441 strings)

Translated using Weblate (German)

Currently translated at 72.7% (1777 of 2441 strings)

Translated using Weblate (Thai)

Currently translated at 18.4% (450 of 2441 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 50.7% (1240 of 2441 strings)

Translated using Weblate (Italian)

Currently translated at 63.0% (1540 of 2441 strings)

Translated using Weblate (German)

Currently translated at 72.5% (1771 of 2441 strings)

Translated using Weblate (German)

Currently translated at 72.5% (1771 of 2441 strings)

Translated using Weblate (Thai)

Currently translated at 18.4% (451 of 2441 strings)

Translated using Weblate (German)

Currently translated at 72.5% (1770 of 2441 strings)

Translated using Weblate (German)

Currently translated at 72.5% (1770 of 2441 strings)

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translated using Weblate (German)

Currently translated at 71.9% (1757 of 2441 strings)

Translated using Weblate (German)

Currently translated at 71.9% (1757 of 2441 strings)

Translated using Weblate (German)

Currently translated at 71.9% (1757 of 2441 strings)

Translated using Weblate (German)

Currently translated at 69.1% (1689 of 2441 strings)

Translated using Weblate (German)

Currently translated at 69.1% (1689 of 2441 strings)

Translated using Weblate (German)

Currently translated at 68.7% (1678 of 2441 strings)

Translated using Weblate (German)

Currently translated at 68.7% (1678 of 2441 strings)

Translated using Weblate (Italian)

Currently translated at 63.0% (1538 of 2441 strings)

Translated using Weblate (German)

Currently translated at 68.6% (1675 of 2441 strings)

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translated using Weblate (German)

Currently translated at 68.3% (1669 of 2443 strings)

Co-authored-by: Jc <dottdot.dev@gmail.com>
Co-authored-by: LAO <sumonchai@gmail.com>
Co-authored-by: Lorenzo Milesi <lorenzo.milesi@yetopen.com>
Co-authored-by: Marcel Herrguth <github@thehomeofanime.de>
Co-authored-by: Martin Gruner <mg@zammad.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: gokhirschfelder <e.hirschfelder@gok-online.de>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/de/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/it/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/th/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/zh_Hant/
Translation: Zammad/Zammad (development version)
2022-01-31 10:25:02 +01:00
Martin Gruner 0d98e453ef Maintenance: Bump brakeman from 5.2.0 to 5.2.1
Bumps [brakeman](https://github.com/presidentbeef/brakeman) from 5.2.0 to 5.2.1.
- [Release notes](https://github.com/presidentbeef/brakeman/releases)
- [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md)
- [Commits](https://github.com/presidentbeef/brakeman/compare/v5.2.0...v5.2.1)
2022-01-31 04:35:29 +01:00
Martin Gruner 5b47ce9afd Maintenance: Improved wording of source strings. 2022-01-28 14:21:25 +01:00
Martin Gruner 2aa1381c80 Maintenance: Update version of bundled i18n gem to 1.9.1 as 1.9.0 was removed and is uninstallable. 2022-01-28 07:37:21 +01:00
Martin Gruner d63090e67e Maintenance: Fixed wording of scheduler job. 2022-01-27 15:21:35 +01:00
Martin Gruner 572d91f65e Maintenance: Add CI check for possibly orphaned bundled gems.
This runs only on develop and is allowed to fail.
2022-01-27 08:52:24 +01:00
Martin Gruner 5b6ce4935f Maintenance: Bump rspec-rails from 5.0.2 to 5.1.0
Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 5.0.2 to 5.1.0.
- [Release notes](https://github.com/rspec/rspec-rails/releases)
- [Changelog](https://github.com/rspec/rspec-rails/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-rails/compare/v5.0.2...v5.1.0)
2022-01-27 06:44:08 +00:00
Martin Gruner 94ff5bccac Maintenance: Bump twilio-ruby from 5.63.0 to 5.63.1
Bumps [twilio-ruby](https://github.com/twilio/twilio-ruby) from 5.63.0 to 5.63.1.
- [Release notes](https://github.com/twilio/twilio-ruby/releases)
- [Changelog](https://github.com/twilio/twilio-ruby/blob/main/CHANGES.md)
- [Commits](https://github.com/twilio/twilio-ruby/compare/5.63.0...5.63.1)
2022-01-27 04:37:48 +01:00
Martin Gruner 2b78f5fff7 Maintenance: Drop obsolete use of orphaned coverage modules. 2022-01-26 14:04:13 +01:00
Martin Gruner b5b1c88b54 Maintenance: Improved translatable source strings. 2022-01-26 08:17:54 +01:00
Marcel Herrguth 63ae3d0838 Add Information on where to find information about configurations 2022-01-25 19:00:02 +01:00
Rolf Schmidt 8989916f21 Fixes #3685 - Zammad UI should silently discard Cache / apply2file errors. 2022-01-25 14:25:13 +00:00
Martin Edenhofer a1af43d3e7 Fixed #3933 - Startup of Zammad does not synchronize the custom branding logo. 2022-01-25 15:13:43 +01:00
Marcel Herrguth 273b46b810 Fixes #3865, Fixes #3893 - Improve Backup & Restore script handling 2022-01-25 12:36:02 +01:00
Weblate e65e787d61 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translated using Weblate (German)

Currently translated at 68.8% (1683 of 2446 strings)

Translated using Weblate (Korean)

Currently translated at 45.7% (1118 of 2446 strings)

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translated using Weblate (Italian)

Currently translated at 65.5% (1607 of 2450 strings)

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translated using Weblate (Italian)

Currently translated at 66.6% (1643 of 2466 strings)

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translated using Weblate (German)

Currently translated at 70.7% (1745 of 2465 strings)

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translated using Weblate (Italian)

Currently translated at 66.9% (1654 of 2469 strings)

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translated using Weblate (German)

Currently translated at 71.0% (1758 of 2474 strings)

Translated using Weblate (Italian)

Currently translated at 66.5% (1647 of 2475 strings)

Translated using Weblate (Italian)

Currently translated at 54.4% (1348 of 2474 strings)

Translated using Weblate (German)

Currently translated at 68.2% (1689 of 2474 strings)

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translated using Weblate (Thai)

Currently translated at 4.5% (113 of 2474 strings)

Translated using Weblate (Thai)

Currently translated at 4.5% (113 of 2474 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 0.1% (3 of 2474 strings)

Translated using Weblate (English (Canada))

Currently translated at 0.1% (4 of 2474 strings)

Translated using Weblate (Thai)

Currently translated at 1.7% (43 of 2474 strings)

Translated using Weblate (Thai)

Currently translated at 1.7% (43 of 2474 strings)

Translated using Weblate (Thai)

Currently translated at 1.7% (43 of 2474 strings)

Translated using Weblate (Turkish)

Currently translated at 52.7% (1304 of 2474 strings)

Translated using Weblate (German)

Currently translated at 67.5% (1671 of 2474 strings)

Translated using Weblate (Thai)

Currently translated at 1.7% (44 of 2474 strings)

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Added translation using Weblate (Thai)

Co-authored-by: Baran Sekin <baransekin@gmail.com>
Co-authored-by: LAO <sumonchai@gmail.com>
Co-authored-by: Lorenzo Milesi <lorenzo.milesi@yetopen.com>
Co-authored-by: Marcel Herrguth <github@thehomeofanime.de>
Co-authored-by: Martin Gruner <mg@zammad.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: gokhirschfelder <e.hirschfelder@gok-online.de>
Co-authored-by: 두리아범 <laislavonita@gmail.com>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/de/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/en_CA/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/en_GB/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/it/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/ko/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/th/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/tr/
Translation: Zammad/Zammad (development version)
2022-01-25 10:52:51 +01:00
Martin Gruner e8259758b8 Maintenance: Drop unneeded waits to stabilize capybara tests. 2022-01-25 10:36:20 +01:00
Martin Gruner 344d647079 Maintenance: Improved wording of translatable source strings. 2022-01-25 10:11:47 +01:00
Martin Gruner c04a599f21 Maintenance: Bump rubocop-rspec from 2.7.0 to 2.8.0
Bumps [rubocop-rspec](https://github.com/rubocop/rubocop-rspec) from 2.7.0 to 2.8.0.
- [Release notes](https://github.com/rubocop/rubocop-rspec/releases)
- [Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rspec/compare/v2.7.0...v2.8.0)
2022-01-25 04:35:17 +01:00
Rolf Schmidt 52780f64ce Maintenance: Add missing click link hook to wait for empty ajax queue there as well. 2022-01-24 08:55:33 +00:00
Martin Gruner f087b9eb4d Maintenance: Bump bootsnap from 1.10.1 to 1.10.2
Bumps [bootsnap](https://github.com/Shopify/bootsnap) from 1.10.1 to 1.10.2.
- [Release notes](https://github.com/Shopify/bootsnap/releases)
- [Changelog](https://github.com/Shopify/bootsnap/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Shopify/bootsnap/compare/v1.10.1...v1.10.2)
2022-01-22 04:35:02 +01:00
Martin Gruner b2ecb71043 Maintenance: Improved translatable source strings. 2022-01-21 17:06:41 +01:00
Martin Gruner fd816b3c71 Maintenance: Improved translatable source strings in Settings. 2022-01-21 16:00:17 +01:00
Martin Gruner ff246de1d7 Maintenance: Disable overcommit signature change verification to better support different configurations in development branches. 2022-01-21 15:17:31 +01:00
Martin Gruner a1512f4f93 Maintenance: Improve CI config to use any NodeJS available on the CentOS CI image. 2022-01-21 08:55:32 +00:00
Rolf Schmidt fdccd3cafd Fixes #3924 - Add confirmation dialog on visibility change of an article or in article creation. 2022-01-21 08:54:10 +01:00
Bola Ahmed Buari 93932055dd Fixes #3917 - Multiselect field support. 2022-01-20 11:07:12 +01:00
Martin Gruner db0eb45fe1 Maintenance: Improved translatable source strings. 2022-01-19 14:59:52 +01:00
Martin Gruner 104e2b415e Maintenance: Improved translatable source strings. 2022-01-19 13:19:04 +01:00
Martin Gruner 05cd060dbd Maintenance: Improved translatable source strings. 2022-01-19 09:31:25 +01:00
Martin Gruner 1a1ec2e74a Maintenance: Bump koala from 3.0.0 to 3.1.0
Bumps [koala](https://github.com/arsduo/koala) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/arsduo/koala/releases)
- [Changelog](https://github.com/arsduo/koala/blob/master/changelog.md)
- [Commits](https://github.com/arsduo/koala/compare/v3.0.0...v3.1.0)
2022-01-19 06:28:42 +00:00
Martin Gruner 1214516ff7 Maintenance: Bump rubocop from 1.24.1 to 1.25.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.24.1 to 1.25.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.24.1...v1.25.0)
2022-01-19 04:35:23 +01:00
Rolf Schmidt d5a2890745 Fixes #3889 - JS error on editing textareas admin object manager attributes. 2022-01-18 15:37:16 +01:00
Martin Gruner 4186b0faaf Maintenance: Update translatable source strings. 2022-01-18 13:52:57 +01:00
Martin Gruner 1eed05d61d Maintenance: Bump delayed_job_active_record from 4.1.6 to 4.1.7
Bumps [delayed_job_active_record](https://github.com/collectiveidea/delayed_job_active_record) from 4.1.6 to 4.1.7.
- [Release notes](https://github.com/collectiveidea/delayed_job_active_record/releases)
- [Commits](https://github.com/collectiveidea/delayed_job_active_record/compare/v4.1.6...v4.1.7)
2022-01-18 06:24:46 +00:00
Martin Gruner ce9267b5be Maintenance: Bump bootsnap from 1.9.4 to 1.10.1
Bumps [bootsnap](https://github.com/Shopify/bootsnap) from 1.9.4 to 1.10.1.
- [Release notes](https://github.com/Shopify/bootsnap/releases)
- [Changelog](https://github.com/Shopify/bootsnap/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Shopify/bootsnap/compare/v1.9.4...v1.10.1)
2022-01-18 06:20:55 +00:00
Martin Gruner 4018904fd8 Maintenance: Bump rubocop-rails from 2.13.1 to 2.13.2
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.13.1 to 2.13.2.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.13.1...v2.13.2)
2022-01-18 07:20:33 +01:00
Martin Gruner 84b071a039 Closes: #3918 - Improved translatable source strings. 2022-01-18 07:17:00 +01:00
Martin Gruner 539f4bc0e4 Maintenance: Bump rubocop-performance from 1.13.1 to 1.13.2
Bumps [rubocop-performance](https://github.com/rubocop/rubocop-performance) from 1.13.1 to 1.13.2.
- [Release notes](https://github.com/rubocop/rubocop-performance/releases)
- [Changelog](https://github.com/rubocop/rubocop-performance/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-performance/compare/v1.13.1...v1.13.2)
2022-01-17 08:14:37 +00:00
Dominik Klein 4a954178b9 Maintenance: Fixed result data in the geo ip test. 2022-01-17 08:43:38 +01:00
xaver 46b5761b9a Closes #3886 - Add missing class for customer form element. 2022-01-13 13:16:58 +00:00
Rolf Schmidt 6489fc7602 Fixes #3909 - Wrong size for textareas in triggers and core workflow. 2022-01-13 12:28:26 +01:00
uli-heller 93fcc862e5 Closes #3886 - Maintenance: Fix comment typos in html sanitizer. 2022-01-13 11:22:45 +00:00
Martin Gruner 2dea7318a6 Maintenance: Bump twilio-ruby from 5.62.0 to 5.63.0
Bumps [twilio-ruby](https://github.com/twilio/twilio-ruby) from 5.62.0 to 5.63.0.
- [Release notes](https://github.com/twilio/twilio-ruby/releases)
- [Changelog](https://github.com/twilio/twilio-ruby/blob/main/CHANGES.md)
- [Commits](https://github.com/twilio/twilio-ruby/compare/5.62.0...5.63.0)
2022-01-13 06:25:22 +00:00
Martin Gruner cd16bd29a5 Maintenance: Bump autoprefixer-rails from 10.4.0.0 to 10.4.2.0
Bumps [autoprefixer-rails](https://github.com/ai/autoprefixer-rails) from 10.4.0.0 to 10.4.2.0.
- [Release notes](https://github.com/ai/autoprefixer-rails/releases)
- [Changelog](https://github.com/ai/autoprefixer-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ai/autoprefixer-rails/compare/10.4.0.0...10.4.2.0)
2022-01-13 04:35:15 +01:00
Bola Ahmed Buari bf3067d908 Fixes #3900 - Be able to select more than one owner or organization in condition for overviews/triggers/schedulers like you can do it for state, priority or group 2022-01-12 14:24:11 +01:00
Martin Gruner 50e3b98955 Feature: Added support for English am/pm meridian time format. 2022-01-12 11:53:36 +01:00
Martin Gruner 04ce38a6f8 Maintenance: Bump bootsnap from 1.9.3 to 1.9.4
Bumps [bootsnap](https://github.com/Shopify/bootsnap) from 1.9.3 to 1.9.4.
- [Release notes](https://github.com/Shopify/bootsnap/releases)
- [Changelog](https://github.com/Shopify/bootsnap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Shopify/bootsnap/compare/v1.9.3...v1.9.4)
2022-01-11 04:35:08 +01:00
Martin Gruner 958d47412b Maintenance: Bump rubocop-rails from 2.13.0 to 2.13.1
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.13.0 to 2.13.1.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.13.0...v2.13.1)
2022-01-10 06:44:24 +00:00
Dominik Klein 47c75294f4 Maintenance: Improved the avatar creation in the user controller. 2022-01-10 07:17:31 +01:00
Rolf Schmidt 920d034412 Fixes #3910 - Adjust placetel endpoints from EOL v1 to v2. 2022-01-07 12:11:12 +01:00
Weblate 9886d713d0 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translated using Weblate (German)

Currently translated at 65.9% (1630 of 2473 strings)

Translated using Weblate (German)

Currently translated at 65.9% (1630 of 2473 strings)

Translated using Weblate (German)

Currently translated at 65.9% (1630 of 2473 strings)

Translated using Weblate (German)

Currently translated at 65.9% (1630 of 2473 strings)

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translated using Weblate (German)

Currently translated at 62.6% (1548 of 2472 strings)

Translated using Weblate (Italian)

Currently translated at 52.0% (1286 of 2472 strings)

Translated using Weblate (German)

Currently translated at 62.6% (1548 of 2472 strings)

Co-authored-by: Lorenzo Milesi <lorenzo.milesi@yetopen.com>
Co-authored-by: Marcel Herrguth <github@thehomeofanime.de>
Co-authored-by: Martin Gruner <mg@zammad.com>
Co-authored-by: Ron Kirschler <ron.kirschler@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: nito <info@nikolaitownsend.de>
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/de/
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/it/
Translation: Zammad/Zammad (development version)
2022-01-07 06:34:35 +00:00
Bola Ahmed Buari dcc1be937b Maintenance: Port old keyboard shortcuts tests to capybara. 2022-01-07 07:28:11 +01:00
Martin Gruner 2a86a454c5 Maintenance: Improved translatable source strings. 2022-01-06 20:37:47 +01:00
Rolf Schmidt 1218912494 Maintenance: Skip null values for the param check to prevent errors on the to string cast. 2022-01-06 14:26:48 +01:00
Dominik Klein 20516d6f6e Fixes #3879 - Freshdesk import ends up in Zammad interface without navigation. 2022-01-05 11:30:04 +01:00
Rolf Schmidt 2708704835 Follow up 6e90f4bfa2 - Fixes #3880 - Changing ticket status from "new" to any other status always results in uncommited status "closed". 2022-01-05 10:20:58 +01:00
Dominik Klein aaa87b4b06 Fixes #3905 - Usage of freshdesk import without freshdesk admin permission leads to an unstable system/missing data 2022-01-05 08:40:22 +01:00
Martin Gruner 4e1623cd50 Maintenance: Bump zendesk_api from 1.33.0 to 1.34.0
Bumps [zendesk_api](https://github.com/zendesk/zendesk_api_client_rb) from 1.33.0 to 1.34.0.
- [Release notes](https://github.com/zendesk/zendesk_api_client_rb/releases)
- [Changelog](https://github.com/zendesk/zendesk_api_client_rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zendesk/zendesk_api_client_rb/compare/v1.33.0...v1.34.0)
2022-01-05 04:35:08 +01:00
Rolf Schmidt b180a85e7f Performance: Only update specific calendars on destroy and not loop over all. 2022-01-04 12:44:28 +01:00
Martin Gruner f2f36d0489 Maintenance: Bump dalli from 3.1.6 to 3.2.0
Bumps [dalli](https://github.com/petergoldstein/dalli) from 3.1.6 to 3.2.0.
- [Release notes](https://github.com/petergoldstein/dalli/releases)
- [Changelog](https://github.com/petergoldstein/dalli/blob/main/History.md)
- [Commits](https://github.com/petergoldstein/dalli/compare/v3.1.6...v3.2.0)
2022-01-04 04:35:24 +01:00
Rolf Schmidt 2793733829 Maintenance: Make sure that the column schema is resetted on db reset to prevent old schema because of different branches or custom developments. 2022-01-03 14:26:57 +01:00
Martin Gruner 6714b5f1a4 Maintenance: Bump rubocop-rails from 2.12.4 to 2.13.0
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.12.4 to 2.13.0.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.12.4...v2.13.0)
2022-01-03 10:47:32 +01:00
Martin Gruner 2c4ca0adfa Maintenance: Bump rubocop from 1.23.0 to 1.24.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.23.0 to 1.24.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.23.0...v1.24.1)
2022-01-03 08:21:16 +01:00
Martin Gruner 2393fc85f2 Maintenance: Bump rubocop-rspec from 2.6.0 to 2.7.0
Bumps [rubocop-rspec](https://github.com/rubocop/rubocop-rspec) from 2.6.0 to 2.7.0.
- [Release notes](https://github.com/rubocop/rubocop-rspec/releases)
- [Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rspec/compare/v2.6.0...v2.7.0)
2022-01-03 08:07:49 +01:00
Martin Gruner eb0393dbc5 Maintenance: Bump dalli from 3.1.5 to 3.1.6
Bumps [dalli](https://github.com/petergoldstein/dalli) from 3.1.5 to 3.1.6.
- [Release notes](https://github.com/petergoldstein/dalli/releases)
- [Changelog](https://github.com/petergoldstein/dalli/blob/main/History.md)
- [Commits](https://github.com/petergoldstein/dalli/compare/v3.1.5...v3.1.6)
2022-01-03 05:55:24 +00:00
Martin Gruner d215de138b Maintenance: Bump rubocop-performance from 1.13.0 to 1.13.1
Bumps [rubocop-performance](https://github.com/rubocop/rubocop-performance) from 1.13.0 to 1.13.1.
- [Release notes](https://github.com/rubocop/rubocop-performance/releases)
- [Changelog](https://github.com/rubocop/rubocop-performance/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-performance/compare/v1.13.0...v1.13.1)
2022-01-02 04:35:51 +01:00
Martin Gruner 24c3bdfd87 Maintenance: Update copyright header. 2022-01-01 14:38:12 +01:00
Martin Gruner 33753a3e16 Maintenance: Bump autoprefixer-rails from 10.3.3.0 to 10.4.0.0
Bumps [autoprefixer-rails](https://github.com/ai/autoprefixer-rails) from 10.3.3.0 to 10.4.0.0.
- [Release notes](https://github.com/ai/autoprefixer-rails/releases)
- [Changelog](https://github.com/ai/autoprefixer-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ai/autoprefixer-rails/commits/10.4.0.0)
2021-12-28 04:35:29 +01:00
Martin Gruner fac03ff7ff Maintenance: Bump rubocop-performance from 1.12.0 to 1.13.0
Bumps [rubocop-performance](https://github.com/rubocop/rubocop-performance) from 1.12.0 to 1.13.0.
- [Release notes](https://github.com/rubocop/rubocop-performance/releases)
- [Changelog](https://github.com/rubocop/rubocop-performance/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-performance/compare/v1.12.0...v1.13.0)
2021-12-27 15:50:27 +01:00
Martin Gruner 9451ed6bc3 Maintenance: Bump openssl from 2.2.1 to 3.0.0
Bumps [openssl](https://github.com/ruby/openssl) from 2.2.1 to 3.0.0.
- [Release notes](https://github.com/ruby/openssl/releases)
- [Changelog](https://github.com/ruby/openssl/blob/master/History.md)
- [Commits](https://github.com/ruby/openssl/compare/v2.2.1...v3.0.0)
2021-12-27 12:15:59 +00:00
Martin Gruner 09f3b36056 Maintenance: Bump unicorn from 6.0.0 to 6.1.0
Bumps [unicorn](https://yhbt.net/unicorn/) from 6.0.0 to 6.1.0.
2021-12-27 12:13:20 +00:00
Martin Gruner f984a6fefb Maintenance: Bump csv from 3.2.1 to 3.2.2
Bumps [csv](https://github.com/ruby/csv) from 3.2.1 to 3.2.2.
- [Release notes](https://github.com/ruby/csv/releases)
- [Changelog](https://github.com/ruby/csv/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/csv/compare/v3.2.1...v3.2.2)
2021-12-25 04:35:14 +01:00
Martin Gruner c3c8db139c Maintenance: Fix QUnit tests. 2021-12-23 20:04:05 +01:00
Zammad Weblate 4d245ce1de Translations update from Zammad-Translations 2021-12-23 14:23:02 +01:00
Martin Gruner 9765654723 Maintenance: Bump shoulda-matchers from 5.0.0 to 5.1.0
Bumps [shoulda-matchers](https://github.com/thoughtbot/shoulda-matchers) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/thoughtbot/shoulda-matchers/releases)
- [Changelog](https://github.com/thoughtbot/shoulda-matchers/blob/main/CHANGELOG.md)
- [Commits](https://github.com/thoughtbot/shoulda-matchers/compare/v5.0.0...v5.1.0)
2021-12-23 10:42:32 +00:00
Martin Gruner f5b385fcf9 Maintenance: Update git URL. 2021-12-23 11:28:27 +01:00
Mantas db52adaec1 Maintenance: Ticket view Capybara specs cleanup 2021-12-22 15:19:42 +00:00
Martin Gruner a3779a2e10 Maintenance: Bump slack-ruby-client from 0.17.0 to 1.0.0
Bumps [slack-ruby-client](https://github.com/slack-ruby/slack-ruby-client) from 0.17.0 to 1.0.0.
- [Release notes](https://github.com/slack-ruby/slack-ruby-client/releases)
- [Changelog](https://github.com/slack-ruby/slack-ruby-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/slack-ruby/slack-ruby-client/compare/v0.17.0...v1.0.0)
2021-12-22 10:38:08 +00:00
Martin Gruner 5f01547258 Maintenance: Switch from a hardcoded registry URL to $CI_REGISTRY. 2021-12-22 09:25:09 +01:00
Martin Gruner 818eb7a336 Maintenance: Fixed user test. 2021-12-22 07:52:48 +01:00
Romit Choudhary a6bbce9070 Fixes #2371 - Zammad misses "weeks" for relative time events 2021-12-21 12:10:38 +01:00
Romit Choudhary 250d0bbd5e Fixes #3129 - Deactivation of signature does not clear it from groups 2021-12-20 15:01:34 +01:00
Mantas Masalskis a5c728609d Fixes #3817 - Ticket object does not get a rollback after failing bulk action 2021-12-20 14:02:30 +01:00
Martin Gruner ee8fafe8ea Maintenance: Fix capybara test to handle translation correctly. 2021-12-20 07:49:43 +00:00
Martin Gruner d72dc2e6ec Maintenance: Bump activerecord-import from 1.2.0 to 1.3.0
Bumps [activerecord-import](https://github.com/zdennis/activerecord-import) from 1.2.0 to 1.3.0.
- [Release notes](https://github.com/zdennis/activerecord-import/releases)
- [Changelog](https://github.com/zdennis/activerecord-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zdennis/activerecord-import/compare/v1.2.0...v1.3.0)
2021-12-20 06:55:04 +00:00
Martin Gruner 4c6effb5cf Maintenance: Bump test-unit from 3.5.2 to 3.5.3
Bumps [test-unit](https://github.com/test-unit/test-unit) from 3.5.2 to 3.5.3.
- [Release notes](https://github.com/test-unit/test-unit/releases)
- [Commits](https://github.com/test-unit/test-unit/compare/3.5.2...3.5.3)
2021-12-20 06:48:09 +00:00
Martin Gruner 26a46c43d8 Maintenance: Bump dalli from 3.1.4 to 3.1.5
Bumps [dalli](https://github.com/petergoldstein/dalli) from 3.1.4 to 3.1.5.
- [Release notes](https://github.com/petergoldstein/dalli/releases)
- [Changelog](https://github.com/petergoldstein/dalli/blob/main/History.md)
- [Commits](https://github.com/petergoldstein/dalli/compare/v3.1.4...v3.1.5)
2021-12-19 04:35:48 +01:00
Martin Gruner ccce4342d1 Maintenance: Improve translatable source strings by using ellipsis (…) rather than three dots (...). 2021-12-17 15:58:44 +00:00
Martin Gruner 210c8e6159 Maintenance: Suppress translation incompleteness popover that interferes with the tests. 2021-12-17 15:55:14 +00:00
Martin Gruner 933e82c06f Maintenance: Improve translatable source strings by using ellipsis (…) rather than three dots (...). 2021-12-17 13:55:48 +00:00
Martin Gruner c814e79a1b Maintenance: Fix GIT push handling to not use shallow clones. 2021-12-17 14:24:30 +01:00
Martin Gruner 616c436b44 Maintenance: Improve translatable source strings by using ellipsis (…) rather than three dots (...). 2021-12-17 10:55:39 +01:00
Martin Gruner 19287675c9 Maintenance: Bump brakeman from 5.1.2 to 5.2.0
Bumps [brakeman](https://github.com/presidentbeef/brakeman) from 5.1.2 to 5.2.0.
- [Release notes](https://github.com/presidentbeef/brakeman/releases)
- [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md)
- [Commits](https://github.com/presidentbeef/brakeman/compare/v5.1.2...v5.2.0)
2021-12-17 09:14:10 +00:00
Martin Gruner 75683d30a2 Maintenance: Bump dalli from 3.1.3 to 3.1.4
Bumps [dalli](https://github.com/petergoldstein/dalli) from 3.1.3 to 3.1.4.
- [Release notes](https://github.com/petergoldstein/dalli/releases)
- [Changelog](https://github.com/petergoldstein/dalli/blob/main/History.md)
- [Commits](https://github.com/petergoldstein/dalli/compare/v3.1.3...v3.1.4)
2021-12-17 09:12:38 +00:00
Dominik Klein a7569a796f Fixes #3892 - /assets/fonts/ changed to /fonts/. 2021-12-16 21:05:46 +01:00
Martin Gruner e057d76e59 Maintenance: Apply source string review changes. 2021-12-16 14:42:09 +01:00
Rolf Schmidt 6e90f4bfa2 Fixes #3880 - Changing ticket status from "new" to any other status always results in uncommited status "closed". 2021-12-16 12:18:30 +01:00
Martin Gruner 0aa3b153bc Maintenance: Bump twilio-ruby from 5.61.2 to 5.62.0
Bumps [twilio-ruby](https://github.com/twilio/twilio-ruby) from 5.61.2 to 5.62.0.
- [Release notes](https://github.com/twilio/twilio-ruby/releases)
- [Changelog](https://github.com/twilio/twilio-ruby/blob/main/CHANGES.md)
- [Commits](https://github.com/twilio/twilio-ruby/compare/5.61.2...5.62.0)
2021-12-16 08:23:13 +00:00
Martin Gruner e052194036 Maintenance: Bump rails from 6.0.4.3 to 6.0.4.4
Bumps [rails](https://github.com/rails/rails) from 6.0.4.3 to 6.0.4.4.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v6.0.4.3...v6.0.4.4)
2021-12-16 04:35:59 +01:00
Martin Gruner 0ccdfb398e Maintenance: Apply source string review changes. 2021-12-15 22:00:53 +01:00
Bola Ahmed Buari 80e76fc43d Maintenance: Port old integration tests to capybara. 2021-12-15 16:30:24 +00:00
Martin Gruner a9f014c700 Maintenance: Bump dalli from 3.1.2 to 3.1.3
Bumps [dalli](https://github.com/petergoldstein/dalli) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/petergoldstein/dalli/releases)
- [Changelog](https://github.com/petergoldstein/dalli/blob/main/History.md)
- [Commits](https://github.com/petergoldstein/dalli/compare/v3.1.2...v3.1.3)
2021-12-15 07:55:13 +00:00
Dominik Klein 429256ef39 Maintenance: Try to make the modal actions in selenium more robust. 2021-12-15 08:51:06 +01:00
Martin Gruner 39e8eae2d0 Maintenance: Bump rails from 6.0.4.1 to 6.0.4.3
Bumps [rails](https://github.com/rails/rails) from 6.0.4.1 to 6.0.4.3.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v6.0.4.1...v6.0.4.3)
2021-12-15 04:43:36 +01:00
Martin Gruner 54e994e064 Follow-up 64a87b1c67 - Perform initial text module import locally and improve language matching. 2021-12-14 11:17:47 +01:00
Martin Gruner 7b2a80a162 Maintenance: Bump dalli from 3.1.1 to 3.1.2
Bumps [dalli](https://github.com/petergoldstein/dalli) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/petergoldstein/dalli/releases)
- [Changelog](https://github.com/petergoldstein/dalli/blob/main/History.md)
- [Commits](https://github.com/petergoldstein/dalli/compare/v3.1.1...v3.1.2)
2021-12-14 04:38:15 +01:00
Rolf Schmidt 0456cce951 Performance: Improve exists call function caching and make sure that expensive marschal object copies are reduced where it is not needed. 2021-12-13 13:11:32 +01:00
Mantas Masalskis 90d03cf542 Maintenance: CoreWorkflow throws more verbose exception 2021-12-13 07:59:20 +01:00
Martin Gruner 1af052015f Maintenance: Bump spring from 3.1.1 to 4.0.0
Bumps [spring](https://github.com/rails/spring) from 3.1.1 to 4.0.0.
- [Release notes](https://github.com/rails/spring/releases)
- [Changelog](https://github.com/rails/spring/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rails/spring/compare/v3.1.1...v4.0.0)
2021-12-11 21:04:19 +00:00
Martin Gruner 566fbe49fe Maintenance: Bump dalli from 3.1.0 to 3.1.1
Bumps [dalli](https://github.com/petergoldstein/dalli) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/petergoldstein/dalli/releases)
- [Changelog](https://github.com/petergoldstein/dalli/blob/main/History.md)
- [Commits](https://github.com/petergoldstein/dalli/compare/v3.1.0...v3.1.1)
2021-12-11 04:35:17 +01:00
Martin Gruner 5aa7d7c5b2 Maintenance: Improved translatable source strings. 2021-12-10 15:00:59 +01:00
Martin Gruner 525476d539 Maintenance: Stabilize Capybara tests, fix usage of wait(). 2021-12-10 13:37:47 +01:00
Rolf Schmidt 41d72e92e9 Fixes #3873 - Search is not triggered/updated if url of search is updated new search item or new search is triggered via global search. 2021-12-10 11:08:11 +00:00
Dominik Klein 3a76defc83 Maintenance: Try to improve the stabilzation of the cti selenium test. 2021-12-10 10:34:07 +00:00
Martin Gruner e0f7e8a530 Maintenance: Bump test-unit from 3.5.1 to 3.5.2
Bumps [test-unit](https://github.com/test-unit/test-unit) from 3.5.1 to 3.5.2.
- [Release notes](https://github.com/test-unit/test-unit/releases)
- [Commits](https://github.com/test-unit/test-unit/compare/3.5.1...3.5.2)
2021-12-10 10:30:57 +00:00
Rolf Schmidt 4e2f310fbd Fixes #3869 - Overview select fields are sorted by key. 2021-12-10 11:29:21 +01:00
Martin Gruner c71be5b808 Maintenance: Add README.md about the correct workflow for translations. 2021-12-10 08:23:01 +01:00
Mantas be407c23da Fixes #3870 - Text rendering does not work for e-mails (no new lines) 2021-12-09 19:12:16 +00:00
Rolf Schmidt b3de8b2afa Fixes #3816 - Zammad 5 mail template double signature. 2021-12-07 15:34:16 +01:00
Martin Gruner c84416aec0 Maintenance: Improved translatable source strings. 2021-12-07 11:12:09 +00:00
Rolf Schmidt 0b860a58f6 Maintenance: Fix ExistsDbStrategy to not depend of the position of the db_strategy hash element. 2021-12-07 10:32:03 +00:00
Martin Edenhofer 15f1c970c8 Maintenance: Improved notifications flow for replacement agents. 2021-12-06 07:19:12 +00:00
Zammad Weblate c0c30a9e01 Translations update from Zammad-Translations 2021-12-06 07:53:04 +01:00
Martin Gruner ce53820726 Maintenance: Bump dalli from 3.0.6 to 3.1.0
Bumps [dalli](https://github.com/petergoldstein/dalli) from 3.0.6 to 3.1.0.
- [Release notes](https://github.com/petergoldstein/dalli/releases)
- [Changelog](https://github.com/petergoldstein/dalli/blob/main/History.md)
- [Commits](https://github.com/petergoldstein/dalli/compare/v3.0.6...v3.1.0)
2021-12-04 04:35:45 +01:00
Mantas Masalskis a6e387cf9b Fixes #2429 - Note is not being updated because of the lack of lastname 2021-12-03 14:09:11 +01:00
Rolf Schmidt 2b532fe414 Fixes #3877 - Missing ticket updates on high load in MariaDB/MySQL environments. 2021-12-03 11:13:40 +01:00
Mantas e7355e6d92 Fixes #2421 - API creates empty tickets without articles if data is missing 2021-12-02 19:20:00 +02:00
Martin Gruner bc16e6c404 Maintenance: Bump valid_email2 from 4.0.0 to 4.0.1
Bumps [valid_email2](https://github.com/micke/valid_email2) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/micke/valid_email2/releases)
- [Changelog](https://github.com/micke/valid_email2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micke/valid_email2/compare/v4.0.0...v4.0.1)
2021-12-02 07:49:08 +00:00
Martin Gruner 03fc7fd35f Maintenance: Bump twilio-ruby from 5.61.1 to 5.61.2
Bumps [twilio-ruby](https://github.com/twilio/twilio-ruby) from 5.61.1 to 5.61.2.
- [Release notes](https://github.com/twilio/twilio-ruby/releases)
- [Changelog](https://github.com/twilio/twilio-ruby/blob/main/CHANGES.md)
- [Commits](https://github.com/twilio/twilio-ruby/compare/5.61.1...5.61.2)
2021-12-02 04:35:59 +01:00
Dominik Klein 8735dc0090 Maintenance: Updated the npm dependencies for stylelint. 2021-12-01 20:02:36 +01:00
Martin Gruner 03a6721958 Maintenance: Bump dalli from 3.0.5 to 3.0.6
Bumps [dalli](https://github.com/petergoldstein/dalli) from 3.0.5 to 3.0.6.
- [Release notes](https://github.com/petergoldstein/dalli/releases)
- [Changelog](https://github.com/petergoldstein/dalli/blob/main/History.md)
- [Commits](https://github.com/petergoldstein/dalli/compare/v3.0.5...v3.0.6)
2021-12-01 04:35:30 +01:00
Rolf Schmidt f3d3eefc46 Fixes #3871 - Wrong SLA is used (alphabetical order is ignored). 2021-11-30 14:04:17 +01:00
Martin Gruner 32b10f5023 Maintenance: Bump dalli from 3.0.4 to 3.0.5
Bumps [dalli](https://github.com/petergoldstein/dalli) from 3.0.4 to 3.0.5.
- [Release notes](https://github.com/petergoldstein/dalli/releases)
- [Changelog](https://github.com/petergoldstein/dalli/blob/master/History.md)
- [Commits](https://github.com/petergoldstein/dalli/compare/v3.0.4...v3.0.5)
2021-11-30 04:35:20 +01:00
Mantas Masalskis 32f3c88613 Fixes #3616 - Provide meaningful modal if report profile tries to use dates... 2021-11-29 15:21:47 +01:00
Mantas Masalskis 139ad5f566 Agent with CREATE only permission acts "on behalf" ticket customer on shared organizations 2021-11-29 10:26:35 +00:00
Weblate 19d13f15ec Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: Zammad/Zammad (development version)
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/
2021-11-26 11:46:38 +01:00
Weblate 414b0a6f9b Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: Zammad/Zammad (development version)
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/
2021-11-26 11:46:04 +01:00
Zammad Weblate 52969d690f Maintenance: Translations update from Zammad-Translations 2021-11-26 11:45:15 +01:00
Rolf Schmidt 7bbc2e64e8 Fixes #3622 - Display callback urls for third-party applications. 2021-11-26 11:37:16 +01:00
Marcel Herrguth fb32d57308 Maintenance: Add Debian 11 support to packager.io processes 2021-11-26 10:15:47 +00:00
dantronik-markus e959aa1160 Fixes #3793 - Till label not assigned to corresponding input fields in calendar edit view. 2021-11-26 08:48:40 +00:00
Martin Gruner d5f48bb195 Follow-up: 1f5d1bf8d3 - Increase translation string length to handle existing description strings properly. 2021-11-26 08:00:32 +00:00
Martin Gruner f0ffe24b4e Maintenance: Bump spring from 3.1.0 to 3.1.1
Bumps [spring](https://github.com/rails/spring) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/rails/spring/releases)
- [Changelog](https://github.com/rails/spring/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rails/spring/compare/v3.1.0...v3.1.1)
2021-11-26 04:35:20 +01:00
Martin Gruner 16df780314 Fixes: #3866 - Date of datepicker is not localized. 2021-11-25 13:26:52 +01:00
Martin Gruner cde6aa513a Maintenance: Bump bootsnap from 1.9.1 to 1.9.3
Bumps [bootsnap](https://github.com/Shopify/bootsnap) from 1.9.1 to 1.9.3.
- [Release notes](https://github.com/Shopify/bootsnap/releases)
- [Changelog](https://github.com/Shopify/bootsnap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Shopify/bootsnap/compare/v1.9.1...v1.9.3)
2021-11-25 03:05:10 +01:00
Martin Gruner 8c4683ca5a Maintenance: Bump telephone_number from 1.4.12 to 1.4.13
Bumps [telephone_number](https://github.com/mobi/telephone_number) from 1.4.12 to 1.4.13.
- [Release notes](https://github.com/mobi/telephone_number/releases)
- [Changelog](https://github.com/mobi/telephone_number/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mobi/telephone_number/compare/v1.4.12...v1.4.13)
2021-11-24 06:35:48 +00:00
Martin Gruner 965372daee Maintenance: Bump spring from 3.0.0 to 3.1.0
Bumps [spring](https://github.com/rails/spring) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/rails/spring/releases)
- [Changelog](https://github.com/rails/spring/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rails/spring/compare/v3.0.0...v3.1.0)
2021-11-24 03:05:32 +01:00
Martin Gruner 9218333699 Maintenance: Bump selenium-webdriver from 4.0.3 to 4.1.0
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.0.3 to 4.1.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/commits/selenium-4.1.0)
2021-11-23 03:05:19 +01:00
Dominik Klein e4a14268d6 Fixes #3846 - Simple quote characters (') not properly displayed. 2021-11-22 13:36:57 +01:00
Martin Gruner 059e2f90e4 Maintenance: Add .vscode to .gitignore. 2021-11-22 11:45:57 +01:00
Martin Gruner 99c8000c5f Translated using Weblate (Italian)
Currently translated at 55.9% (1364 of 2437 strings)

Translation: Zammad/Zammad (development version)
Translate-URL: https://translations.zammad.org/projects/zammad/zammad-development/it/
2021-11-22 09:47:43 +01:00
Martin Gruner 1f5d1bf8d3 Maintenance: Improve handling of translation entries in extractor and on importing. 2021-11-19 13:11:20 +01:00
Rolf Schmidt 8a97a41dc9 Fixes #3848 - Remove api user and password for sipgate integration. 2021-11-18 12:10:34 +01:00
Martin Gruner 890853aa4b Maintenance: Bump twilio-ruby from 5.61.0 to 5.61.1
Bumps [twilio-ruby](https://github.com/twilio/twilio-ruby) from 5.61.0 to 5.61.1.
- [Release notes](https://github.com/twilio/twilio-ruby/releases)
- [Changelog](https://github.com/twilio/twilio-ruby/blob/main/CHANGES.md)
- [Commits](https://github.com/twilio/twilio-ruby/compare/5.61.0...5.61.1)
2021-11-18 07:51:06 +00:00
Martin Gruner e1750ef7e1 Maintenance: Bump rubocop from 1.22.3 to 1.23.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.22.3 to 1.23.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.22.3...v1.23.0)
2021-11-18 08:50:18 +01:00
Rolf Schmidt a0d39cdc2c Fixes #3844 - No signature on new ticket if email is default message type. 2021-11-17 16:01:51 +01:00
Mantas Masalskis 2070a58e2b Fixes #3855 - Forwarding no longer possible for email and web articles 2021-11-17 15:04:57 +01:00
Martin Gruner a534752301 Maintenance: Bump mime-types from 3.4.0 to 3.4.1
Bumps [mime-types](https://github.com/mime-types/ruby-mime-types) from 3.4.0 to 3.4.1.
- [Release notes](https://github.com/mime-types/ruby-mime-types/releases)
- [Changelog](https://github.com/mime-types/ruby-mime-types/blob/main/History.md)
- [Commits](https://github.com/mime-types/ruby-mime-types/compare/v3.4.0...v3.4.1)
2021-11-17 03:05:13 +01:00
Martin Gruner 54388cece5 Follow-up: 64a87b1c67 - Let the pot string extractor ignore empty strings. 2021-11-16 15:44:21 +01:00
Rolf Schmidt 3fdbd59b20 Fixes #3851 - Default values of new group dialog is different in german vs. english. 2021-11-16 13:14:22 +01:00
Martin Gruner 9e128bf74b Maintenance: Bump mime-types from 3.3.1 to 3.4.0
Bumps [mime-types](https://github.com/mime-types/ruby-mime-types) from 3.3.1 to 3.4.0.
- [Release notes](https://github.com/mime-types/ruby-mime-types/releases)
- [Changelog](https://github.com/mime-types/ruby-mime-types/blob/main/History.md)
- [Commits](https://github.com/mime-types/ruby-mime-types/compare/v3.3.1...v3.4.0)
2021-11-16 08:58:33 +00:00
Rolf Schmidt a77594d5bb Fixes #3850 - If no date is set the UI show it's shown as NaN.NaN.NaN. 2021-11-16 09:52:14 +01:00
Rolf Schmidt 36a662fff7 Maintenance: Fix log level for message bird errors. 2021-11-16 08:27:58 +00:00
Rolf Schmidt aefdee8d7f Maintenance: Updated translation catalog. 2021-11-16 07:57:54 +00:00
Rolf Schmidt ccc9628804 Fixes #3852 - Number of to show caller log entries is inconsistent setting wise. 2021-11-16 08:51:17 +01:00
Martin Gruner 64a87b1c67 Fixes #2709, fixes #2666, fixes #2665, fixes #556, fixes #3275 - Refactoring: Implement new translation toolchain based on gettext.
- Translations are no longer fetched from the cloud.
- Instead, they are extracted from the codebase and stored in i18n/zammad.pot.
- Translations will be managed via a public Weblate instance soon.
- The translated .po files are fed to the database as before.
- It is now possible to change "translation" strings for en-us locally via the admin GUI.
- It is no longer possible to submit local changes.
2021-11-15 16:58:19 +01:00
Mantas Masalskis 6a6b19b4e6 Fixes #3825 - Reply all: Duplicate email on changing recipient and cc in a certain way 2021-11-12 14:35:39 +01:00
Martin Gruner 939ffa445b Maintenance: Bump em-websocket from 0.5.2 to 0.5.3
Bumps [em-websocket](https://github.com/igrigorik/em-websocket) from 0.5.2 to 0.5.3.
- [Release notes](https://github.com/igrigorik/em-websocket/releases)
- [Changelog](https://github.com/igrigorik/em-websocket/blob/master/CHANGELOG.rdoc)
- [Commits](https://github.com/igrigorik/em-websocket/compare/v0.5.2...v0.5.3)
2021-11-12 03:05:32 +01:00
Mantas Masalskis e21d6c5414 Fixes #3824 - Email address not shown inside forwarded email 2021-11-11 15:31:39 +01:00
Rolf Schmidt 44422c5357 Fixes #3845 - Removing calendars via UI and API does not check for references. 2021-11-10 14:29:31 +00:00
Mantas 92cd364ec2 Fixes #3842 - Removing tags from tickets return HTTP 201 2021-11-09 16:24:07 +00:00
Mantas 1d2549b41f Fixes #3837 - Wrong escalation update time in admin interface is shown 2021-11-09 15:07:36 +00:00
Rolf Schmidt 59ecff9274 Fixes #3841 - Zammad returns stack error when one tries to remove groups via API. 2021-11-09 10:09:12 +00:00
Rolf Schmidt 8f5a74a560 Fixes #3830 - Zammad ignores relative GitLab URLs. 2021-11-09 07:53:09 +00:00
Martin Gruner 08ea556eac Maintenance: Bump rubocop-rspec from 2.5.0 to 2.6.0
Bumps [rubocop-rspec](https://github.com/rubocop/rubocop-rspec) from 2.5.0 to 2.6.0.
- [Release notes](https://github.com/rubocop/rubocop-rspec/releases)
- [Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rspec/compare/v2.5.0...v2.6.0)
2021-11-08 06:54:16 +00:00
Martin Gruner ee613f8420 Maintenance: Bump test-unit from 3.5.0 to 3.5.1
Bumps [test-unit](https://github.com/test-unit/test-unit) from 3.5.0 to 3.5.1.
- [Release notes](https://github.com/test-unit/test-unit/releases)
- [Commits](https://github.com/test-unit/test-unit/compare/3.5.0...3.5.1)
2021-11-08 03:06:15 +01:00
Rolf Schmidt cb36109bc6 Fixes #3821 - Add clear selection action or has changed condition. 2021-11-05 14:59:10 +01:00
Rolf Schmidt 9318f2046e Maintenance: Add wait to wait properly for the correct owner list. 2021-11-05 10:22:41 +00:00
Rolf Schmidt 2b94843bb7 Fixes #3831 - Ticket zoom will loose attachments on rerender. 2021-11-05 08:42:16 +01:00
Rolf Schmidt 58898239d4 Fixes #3835 - Invalid group and owner list for tickets created via customer profile. 2021-11-05 08:36:48 +01:00
Dominik Klein b7440faad1 Fixes #3210 - Allow image popup and download within Chat. 2021-11-04 16:35:24 +01:00
Marcel Herrguth 94d9533e37 Fixes #3834 - Package installation creates database.yml as root and thus breaks the installation until next update 2021-11-04 14:23:53 +00:00
Dominik Klein 2b58a97c68 Maintenance: Simulate login instead of using the real login form all the time. 2021-11-04 14:40:58 +01:00
Martin Gruner 35d2e018f1 Maintenance: Bump twilio-ruby from 5.60.0 to 5.61.0
Bumps [twilio-ruby](https://github.com/twilio/twilio-ruby) from 5.60.0 to 5.61.0.
- [Release notes](https://github.com/twilio/twilio-ruby/releases)
- [Changelog](https://github.com/twilio/twilio-ruby/blob/main/CHANGES.md)
- [Commits](https://github.com/twilio/twilio-ruby/compare/5.60.0...5.61.0)
2021-11-04 03:05:19 +01:00
Rolf Schmidt 52aa34bb20 Follow up 189ccb21db - Fixes #3827 - Remove ticket create screen job because it is not needed anymore dropdown data will get updated on action by core workflow. 2021-11-03 17:13:13 +01:00
Marcel Herrguth 71d6b9e413 Fixes #3828 - Zammad database credentials are world-readable
This commit adds a chmod 600 to Zammads postinstall.sh for package installations.
2021-11-02 13:30:10 +01:00
Martin Gruner 70e6a52a10 Maintenance: Bump brakeman from 5.1.1 to 5.1.2
Bumps [brakeman](https://github.com/presidentbeef/brakeman) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/presidentbeef/brakeman/releases)
- [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md)
- [Commits](https://github.com/presidentbeef/brakeman/compare/v5.1.1...v5.1.2)
2021-11-02 06:33:38 +00:00
Martin Gruner 44bab0be75 Maintenance: Bump activerecord-nulldb-adapter from 0.7.0 to 0.8.0
Bumps [activerecord-nulldb-adapter](https://github.com/nulldb/nulldb) from 0.7.0 to 0.8.0.
- [Release notes](https://github.com/nulldb/nulldb/releases)
- [Changelog](https://github.com/nulldb/nulldb/blob/master/CHANGES.md)
- [Commits](https://github.com/nulldb/nulldb/compare/v0.7.0...v0.8.0)
2021-11-02 06:31:59 +00:00
Martin Gruner be89a8bf5e Maintenance: Bump rubocop-performance from 1.11.5 to 1.12.0
Bumps [rubocop-performance](https://github.com/rubocop/rubocop-performance) from 1.11.5 to 1.12.0.
- [Release notes](https://github.com/rubocop/rubocop-performance/releases)
- [Changelog](https://github.com/rubocop/rubocop-performance/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-performance/compare/v1.11.5...v1.12.0)
2021-11-01 03:05:47 +01:00
Rolf Schmidt 189ccb21db Fixes #3827 - Ticket create screen will loose attachments by time. 2021-10-29 14:46:14 +02:00
Dominik Klein 614724aa62 Maintenance: Improved authentication helper for developers. 2021-10-28 10:02:00 +00:00
Romit Choudhary e7c6ea63d0 Fixes #2275 - Display name not used 2021-10-28 11:33:02 +02:00
Martin Gruner c422acf885 Maintenance: Bump rubocop from 1.22.2 to 1.22.3
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.22.2 to 1.22.3.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.22.2...v1.22.3)
2021-10-28 05:26:25 +00:00
Martin Gruner f8b41a79f1 Maintenance: Bump dalli from 3.0.3 to 3.0.4
Bumps [dalli](https://github.com/petergoldstein/dalli) from 3.0.3 to 3.0.4.
- [Release notes](https://github.com/petergoldstein/dalli/releases)
- [Changelog](https://github.com/petergoldstein/dalli/blob/master/History.md)
- [Commits](https://github.com/petergoldstein/dalli/commits)
2021-10-28 03:05:50 +02:00
Rolf Schmidt 937f17e1a3 Fixes #3822 - If selected value is not part of the restriction of set_fixed_to it should recalculate it with the new value. 2021-10-27 16:20:30 +02:00
Mantas Masalskis c7f7af1199 Fixes #3140 - Update time SLAs escalates tickets with agent response. 2021-10-27 11:38:45 +02:00
Bola Ahmed Buari 4f3b06036e Follow up - d61932d - Fixes #3594 - Allow position to determine an attributes position 2021-10-27 08:24:09 +02:00
Bola Ahmed Buari cdd2980a2a Fixes #294 - Possibility to specify the order of objects. 2021-10-26 15:26:16 +02:00
Bola Ahmed Buari 5c333430ca Maintenance: Updated stylelint to version 14 and added prettier as a better preparation for future steps. 2021-10-26 14:52:42 +02:00
Bola Ahmed Buari d61932de6e Fixes 3594 - Allow position to determine an attributes position entirely. 2021-10-26 14:33:06 +02:00
Rolf Schmidt 41a04193da Fixes #3819 - Not displayed fields should not impact the edit screen. 2021-10-26 14:18:42 +02:00
Rolf Schmidt fd1a9c179b Fixes #3815 - When looking for customers, it is no longer possible to change into organizations. 2021-10-26 12:14:35 +02:00
Martin Gruner 15b8fd472b Maintenance: Bump omniauth-facebook from 8.0.0 to 9.0.0
Bumps [omniauth-facebook](https://github.com/simi/omniauth-facebook) from 8.0.0 to 9.0.0.
- [Release notes](https://github.com/simi/omniauth-facebook/releases)
- [Changelog](https://github.com/simi/omniauth-facebook/blob/master/CHANGELOG.md)
- [Commits](https://github.com/simi/omniauth-facebook/compare/v8.0.0...v9.0.0)
2021-10-26 08:16:08 +00:00
Mantas Masalskis 9973839e44 Fixes #2852 - Default Priority on ticket creation not changeable 2021-10-26 10:08:09 +02:00
Martin Gruner d0e5614689 Maintenance: Bump capybara from 3.35.3 to 3.36.0
Bumps [capybara](https://github.com/teamcapybara/capybara) from 3.35.3 to 3.36.0.
- [Release notes](https://github.com/teamcapybara/capybara/releases)
- [Changelog](https://github.com/teamcapybara/capybara/blob/master/History.md)
- [Commits](https://github.com/teamcapybara/capybara/compare/3.35.3...3.36.0)
2021-10-26 03:05:52 +02:00
Martin Gruner a9dedbaa52 Maintenance: Bump rubocop from 1.22.1 to 1.22.2
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.22.1 to 1.22.2.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.22.1...v1.22.2)
2021-10-25 05:35:55 +00:00
Martin Gruner 32ca7239ed Maintenance: Bump csv from 3.2.0 to 3.2.1
Bumps [csv](https://github.com/ruby/csv) from 3.2.0 to 3.2.1.
- [Release notes](https://github.com/ruby/csv/releases)
- [Changelog](https://github.com/ruby/csv/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/csv/compare/v3.2.0...v3.2.1)
2021-10-25 05:35:04 +00:00
Martin Gruner b94d728a05 Maintenance: Bump json from 2.6.0 to 2.6.1
Bumps [json](https://github.com/flori/json) from 2.6.0 to 2.6.1.
- [Release notes](https://github.com/flori/json/releases)
- [Changelog](https://github.com/flori/json/blob/master/CHANGES.md)
- [Commits](https://github.com/flori/json/compare/v2.6.0...v2.6.1)
2021-10-24 03:05:28 +02:00
Bola Ahmed Buari 1d67c84bef
Maintenance: Update Selenium Error to TimeoutError from TimeOutError 2021-10-22 15:36:06 +01:00
Bola Ahmed Buari 5bb17cb776 Maintenance: Setup Stylelint linter for css and scss files. 2021-10-22 15:44:36 +02:00
Dominik Klein e338309791 Fixes #3094, fixes #2334 - When quoting, no breakout from div container possible. 2021-10-22 14:23:31 +02:00
Dominik Klein fff31fc6fb Maintenance: Added new merge request templates for a new tech stack core and normal application feature. 2021-10-22 13:36:38 +02:00
Martin Gruner a3aa9fa337 Maintenance: Bump selenium-webdriver from 4.0.2 to 4.0.3
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.0.2 to 4.0.3.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/commits)
2021-10-22 05:36:45 +00:00
Martin Gruner 6d5134ab62 Maintenance: Bump dalli from 3.0.2 to 3.0.3
Bumps [dalli](https://github.com/petergoldstein/dalli) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/petergoldstein/dalli/releases)
- [Changelog](https://github.com/petergoldstein/dalli/blob/master/History.md)
- [Commits](https://github.com/petergoldstein/dalli/commits)
2021-10-22 03:11:06 +02:00
Dominik Klein eccc9a79a9 Maintenance: Moved relevant files for the gulp svg icon build process to assets image folder.
(cherry picked from commit 64f5ec1bd2e3b63651dcb5d84ba38400838c3505)
2021-10-21 15:38:03 +02:00
Rolf Schmidt 8530951154 Fixes #3818 - Owner should get cleared if not listed in changed group. 2021-10-21 13:22:06 +02:00
Mantas Masalskis 501a98b6c2 Fixes #3810 - Custom date and datetime attributes are filled with dates on creation of tickets/users after update from 4.1 to 5.x. 2021-10-20 18:54:33 +02:00
Rolf Schmidt de9bb8bda9 Fixes #3807 - Remove changes of 05a471f90d because they are not working as expected. 2021-10-20 15:48:33 +01:00
Lars Kruse d4dfd750b7 Closes #3225 - LDAP: apply user filter during auth on bind. 2021-10-20 14:29:10 +02:00
Martin Gruner febed2e8a3 Follow-up: bcc0540f4 - Fix local browser testing. 2021-10-20 11:16:38 +00:00
Rolf Schmidt af9bcf96e4 Fixes #3727 - Adding private keys allows adding certificates. 2021-10-20 13:04:31 +02:00
Rolf Schmidt 191385714b Fixes #3437 - Agent role permissions are ignored when there is only a single group. 2021-10-20 13:02:52 +02:00
Rolf Schmidt 3cf7b79edc Fixes #3801 - Remote change of the group id does show it falsly as user change and not render the new value to the ticket. 2021-10-20 13:01:45 +02:00
Dominik Klein dd30b18285 Fixes #3698 - Import for kayako during the setup. 2021-10-20 11:43:35 +02:00
Martin Gruner d4f997f0fd Maintenance: Bump selenium-webdriver from 4.0.0 to 4.0.2
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.0.0 to 4.0.2.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/commits)
2021-10-20 03:05:26 +02:00
Martin Gruner 3515d3ca71 Clean-up. 2021-10-19 16:23:53 +00:00
Martin Gruner b68cf4b68d Fixed legacy test. 2021-10-19 16:23:53 +00:00
Martin Gruner bcc0540f41 Fixed tests. 2021-10-19 16:23:53 +00:00
Martin Gruner f83c48fc00 Update Selenium config for 4.0 compatibility. 2021-10-19 16:23:53 +00:00
Martin Gruner 65b4ce9e65 Maintenance: Bump selenium-webdriver from 3.142.7 to 4.0.0
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 3.142.7 to 4.0.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/commits/selenium-4.0.0)
2021-10-19 16:23:53 +00:00
Dominik Klein f90225ace5 Maintenance: Try to improve the stabilzation of the form channel selenium test. 2021-10-19 13:21:10 +00:00
Martin Edenhofer 8561d97ddc Fixes #3811 - Able to create custom fields for existing relation (e. g. ticket.state) - will lead to non bootable Zammad. 2021-10-19 10:38:20 +02:00
Martin Gruner 4264327d9b Maintenance: Bump rubocop-rails from 2.12.3 to 2.12.4
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.12.3 to 2.12.4.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.12.3...v2.12.4)
2021-10-19 06:02:13 +00:00
Martin Gruner 94ff01a5c5 Maintenance: Bump twilio-ruby from 5.59.0 to 5.60.0
Bumps [twilio-ruby](https://github.com/twilio/twilio-ruby) from 5.59.0 to 5.60.0.
- [Release notes](https://github.com/twilio/twilio-ruby/releases)
- [Changelog](https://github.com/twilio/twilio-ruby/blob/main/CHANGES.md)
- [Commits](https://github.com/twilio/twilio-ruby/compare/5.59.0...5.60.0)
2021-10-19 06:00:39 +00:00
Martin Gruner daad716b24 Maintenance: Bump test-unit from 3.4.9 to 3.5.0
Bumps [test-unit](https://github.com/test-unit/test-unit) from 3.4.9 to 3.5.0.
- [Release notes](https://github.com/test-unit/test-unit/releases)
- [Commits](https://github.com/test-unit/test-unit/compare/3.4.9...3.5.0)
2021-10-19 03:06:00 +02:00
Dominik Klein ba1b9e502f Maintenance: Updated bin/bundle script to the new bundler default (rails removed the script from the default template). 2021-10-18 12:50:19 +00:00
Martin Gruner f73d9c5603 Maintenance: Switch bundler version to 2.2.20 which comes with Ruby 2.7 by default. 2021-10-18 13:29:25 +02:00
Martin Gruner a3d62a72fb Maintenance: Bump json from 2.5.1 to 2.6.0
Bumps [json](https://github.com/flori/json) from 2.5.1 to 2.6.0.
- [Release notes](https://github.com/flori/json/releases)
- [Commits](https://github.com/flori/json/commits)
2021-10-18 07:49:34 +02:00
Martin Gruner ee6d8c2eac Maintenance: Bump dalli from 2.7.11 to 3.0.2
Bumps [dalli](https://github.com/petergoldstein/dalli) from 2.7.11 to 3.0.2.
- [Release notes](https://github.com/petergoldstein/dalli/releases)
- [Changelog](https://github.com/petergoldstein/dalli/blob/master/History.md)
- [Commits](https://github.com/petergoldstein/dalli/compare/v2.7.11...v3.0.2)
2021-10-18 05:41:54 +00:00
Martin Gruner 76c6031ba1 Maintenance: Bump openssl from 2.2.0 to 2.2.1
Bumps [openssl](https://github.com/ruby/openssl) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/ruby/openssl/releases)
- [Changelog](https://github.com/ruby/openssl/blob/master/History.md)
- [Commits](https://github.com/ruby/openssl/compare/v2.2.0...v2.2.1)
2021-10-18 05:40:27 +00:00
Martin Gruner 0b9e95c5af Maintenance: Bump test-unit from 3.4.7 to 3.4.9
Bumps [test-unit](https://github.com/test-unit/test-unit) from 3.4.7 to 3.4.9.
- [Release notes](https://github.com/test-unit/test-unit/releases)
- [Commits](https://github.com/test-unit/test-unit/compare/3.4.7...3.4.9)
2021-10-18 05:39:41 +00:00
Martin Gruner 2174ea8e85 Maintenance: Bump redis from 4.4.0 to 4.5.1
Bumps [redis](https://github.com/redis/redis-rb) from 4.4.0 to 4.5.1.
- [Release notes](https://github.com/redis/redis-rb/releases)
- [Changelog](https://github.com/redis/redis-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/redis/redis-rb/compare/v4.4.0...v4.5.1)
2021-10-18 03:05:30 +02:00
Rolf Schmidt 711c517c52 Fixes #3809 - Ticket owner selection is not updated if owner selection should be empty. 2021-10-15 11:08:35 +02:00
Mantas Masalskis 77d147efaf Maintenance: Improves QUnit tests usability 2021-10-14 16:35:12 +02:00
Mantas e26d3ecfd3 Fixes #3802 - Job scheduling respects time zone 2021-10-14 14:22:52 +00:00
Rolf Schmidt 3f48c222b5 Fixes #2471 - Chat can't be closed after timeout. 2021-10-14 16:21:06 +02:00
3785 changed files with 665121 additions and 115050 deletions

View file

@ -0,0 +1,91 @@
module.exports = class DetectTranslatableString
# coffeelint: disable=detect_translatable_string
rule:
name: 'detect_translatable_string'
level: 'ignore'
message: 'The following string looks like it should be marked as translatable via __(...)'
description: '''
'''
constructor: ->
@callTokens = []
tokens: ['STRING', 'CALL_START', 'CALL_END']
lintToken: (token, tokenApi) ->
[type, tokenValue] = token
if type in ['CALL_START', 'CALL_END']
@trackCall token, tokenApi
return
return false if @isInIgnoredMethod()
return @lintString(token, tokenApi)
lintString: (token, tokenApi) ->
[type, tokenValue] = token
# Remove quotes.
string = tokenValue[1..-2]
# Ignore strings with less than two words.
return false if string.split(' ').length < 2
# Ignore strings that are being used as exception; unlike Ruby exceptions, these should not reach the user.
return false if tokenApi.peek(-3)[1] == 'throw'
return false if tokenApi.peek(-2)[1] == 'throw'
return false if tokenApi.peek(-1)[1] == 'throw'
# Ignore strings that are being used for comparison
return false if tokenApi.peek(-1)[1] == '=='
# String interpolation is handled via concatenation, ignore such strings.
return false if tokenApi.peek(1)[1] == '+'
return false if tokenApi.peek(2)[1] == '+'
BLOCKLIST = [
# Only look at strings starting with upper case letters
/^[^A-Z]/,
# # Ignore strings starting with three upper case letters like SELECT, POST etc.
# /^[A-Z]{3}/,
]
return false if BLOCKLIST.some (entry) ->
#console.log([string, entry, string.match(entry), token, tokenApi.peek(-1), tokenApi.peek(1)])
string.match(entry)
# console.log(tokenApi.peek(-3))
# console.log(tokenApi.peek(-2))
# console.log(tokenApi.peek(-1))
# console.log(token)
return { context: "Found: #{token[1]}" }
ignoredMethods: {
'__': true,
'log': true,
'T': true,
'controllerBind': true,
'error': true, # App.Log.error
'set': true, # App.Config.set
'translateInline': true,
'translateContent': true,
'translatePlain': true,
}
isInIgnoredMethod: ->
#console.log(@callTokens)
for t in @callTokens
return true if t.isIgnoredMethod
return false
trackCall: (token, tokenApi) ->
if token[0] is 'CALL_START'
p = tokenApi.peek(-1)
token.isIgnoredMethod = p and @ignoredMethods[p[1]]
@callTokens.push(token)
else
@callTokens.pop()
return null

View file

@ -1,2 +0,0 @@
--exclude-exts=.min.css
--ignore=adjoining-classes,box-model,ids,order-alphabetical,unqualified-attributes

1
.gitattributes vendored Normal file
View file

@ -0,0 +1 @@
public/assets/** filter=lfs diff=lfs merge=lfs -text

View file

@ -1,10 +0,0 @@
user=zammad
project=zammad
output=CHANGELOG.md
since-tag=1.0.0
bug-labels=bug,minor bug,security
enhancement-labels=enhancement,feature,feature backlog
issues-wo-labels=false
include-labels=security,trigger,UX/UI,admin area,API,browser,bug,channel,chat,email filter,enhancement,feature,feature backlog,import,minor bug,notification,email filter,ticket templates,
issue-line-labels=enhancement,feature,feature backlog,bug,minor bug,notification,reporting,security,ticket templates,translation,trigger,UX/UI
exclude-tags=9.0.1,0.9.1,v0.1.8,v0.1.7,unittests_passed

27
.gitignore vendored
View file

@ -37,20 +37,15 @@
/db/*.sqlite3
/db/schema.rb
# translation cache files
/config/locales*.yml
# legacy translation cache files
/config/locales-*.yml
/config/translations/*.yml
# NPM / Yarn
/node_modules
/yarn.lock
# logfiles and tempfiles
/log
/public/assets/*.*
/public/assets/addons
/public/assets/app
/public/assets/custom
/public/assets/chat/node_modules
/tmp/*
!/tmp/pids
@ -58,17 +53,9 @@
!/tmp/pids/.keep
/storage/fs
# doorkeeper (OAuth 2)
/public/assets/doorkeeper
# images
/public/assets/images/*
!/public/assets/images/icons/
!/public/assets/images/avatar-bg.png
!/public/assets/images/chat-demo-avatar.png
!/public/assets/images/eyedropper.gif
!/public/assets/images/icons.svg
!/public/assets/images/logo.svg
/public/assets/images/yarn.lock
/public/assets/images/node_modules
# Third-Party ------------------------------------------------------------------
@ -84,12 +71,12 @@
# Eclipse
/.project
# VSCode
/.vscode
# Byebug
/.byebug_history
# SimpleCov
/coverage
# RDoc / YARD
/doc

View file

@ -1,5 +1,5 @@
default:
image: registry.znuny.com/docker/zammad-ci:2.7.4
image: $CI_REGISTRY/docker/zammad-ci:2.7.4
include:
- local: '/.gitlab/ci/base.yml'
@ -55,7 +55,9 @@ cache:
# Initialize application env
before_script:
- source /etc/profile.d/rvm.sh
- source /opt/rh/rh-nodejs12/enable
- source /opt/rh/rh-nodejs*/enable
- echo -e "\\e[0Ksection_start:`date +%s`:bundle_install[collapsed=true]\\r\\e[0Kbundle install"
- bundle install -j $(nproc) --path vendor
- echo -e "\\e[0Ksection_end:`date +%s`:bundle_install\\r\\e[0K"
- bundle exec ruby .gitlab/configure_environment.rb
- source .gitlab/environment.env

View file

@ -1,7 +1,7 @@
# Artifacts are stored for failed jobs for 2 days
# Artifacts are stored for failed jobs
.artifacts_error: &artifacts_error
artifacts:
expire_in: 2 days
expire_in: 1 week
when: on_failure
paths:
- tmp/screenshot*
@ -12,6 +12,7 @@
variables:
ES_INDEX_RAND: "true"
ES_URL: "http://elasticsearch:9200"
ELASTICSEARCH_TAG: '7.16'
.variables_redis_memcached: &variables_redis_memcached
variables:
@ -22,17 +23,19 @@
variables:
REMOTE_URL: "http://selenium-firefox:4444/wd/hub"
BROWSER: "firefox"
# Settings for Selenium 3:
NODE_MAX_INSTANCES: "5"
NODE_MAX_SESSION: "5"
BROWSER_HEADLESS: "true"
START_XVFB: "false" # not needed for headless mode
SE_NODE_MAX_SESSIONS: "5"
SE_NODE_OVERRIDE_MAX_SESSIONS: "true"
.variables_selenium_chrome: &variables_selenium_chrome
variables:
REMOTE_URL: "http://selenium-chrome:4444/wd/hub"
BROWSER: chrome
# Settings for Selenium 3:
NODE_MAX_INSTANCES: "5"
NODE_MAX_SESSION: "5"
BROWSER_HEADLESS: "true"
START_XVFB: "false" # not needed for headless mode
SE_NODE_MAX_SESSIONS: "5"
SE_NODE_OVERRIDE_MAX_SESSIONS: "true"
.variables_app_restart_cmd: &variables_app_restart_cmd
variables:
@ -62,6 +65,11 @@
tags:
- docker
.tags_docker_low_concurrency: &tags_docker_low_concurrency
tags:
- docker
- low_concurrency
# Workaround for blocked port 25 access on cloud provider infrastructure
.tags_mail: &tags_mail
tags:
@ -74,35 +82,35 @@
# DB Docker
.docker_mysql: &docker_mysql
name: registry.znuny.com/docker/zammad-mysql:stable
name: $CI_REGISTRY/docker/zammad-mysql:stable
alias: mysql
.docker_postgresql: &docker_postgresql
name: registry.znuny.com/docker/zammad-postgresql:stable
name: $CI_REGISTRY/docker/zammad-postgresql:stable
alias: postgresql
.docker_elasticsearch: &docker_elasticsearch
name: registry.znuny.com/docker/zammad-elasticsearch:$ELASTICSEARCH_TAG
name: $CI_REGISTRY/docker/zammad-elasticsearch:$ELASTICSEARCH_TAG
alias: elasticsearch
.docker_selenium_chrome: &docker_selenium_chrome
name: registry.znuny.com/docker/zammad-selenium-chrome:stable
name: $CI_REGISTRY/docker/zammad-selenium-chrome:stable
alias: selenium-chrome
.docker_selenium_firefox: &docker_selenium_firefox
name: registry.znuny.com/docker/zammad-selenium-firefox:stable
name: $CI_REGISTRY/docker/zammad-selenium-firefox:stable
alias: selenium-firefox
.docker_imap: &docker_imap
name: registry.znuny.com/docker/zammad-imap:stable
name: $CI_REGISTRY/docker/zammad-imap:stable
alias: mail
.docker_redis: &docker_redis
name: registry.znuny.com/docker/zammad-redis:stable
name: $CI_REGISTRY/docker/zammad-redis:stable
alias: redis
.docker_memcached: &docker_memcached
name: registry.znuny.com/docker/zammad-memcached:stable
name: $CI_REGISTRY/docker/zammad-memcached:stable
alias: memcached
command: ["memcached", "-m", "256M"]
@ -131,11 +139,6 @@
- <<: *docker_redis
- <<: *docker_memcached
.services_mysql_postgresql: &services_mysql_postgresql
services:
- <<: *docker_mysql
- <<: *docker_postgresql
.services_mysql_postgresql_redis_memcached: &services_mysql_postgresql_redis_memcached
extends:
- .variables_redis_memcached
@ -166,8 +169,6 @@
- <<: *docker_imap
.services_mysql_postgresql_elasticsearch: &services_mysql_postgresql_elasticsearch
variables:
ELASTICSEARCH_TAG: 'stable'
services:
- <<: *docker_mysql
- <<: *docker_postgresql
@ -176,8 +177,6 @@
.services_mysql_postgresql_elasticsearch_selenium_chrome_imap: &services_mysql_postgresql_elasticsearch_selenium_chrome_imap
extends:
- .variables_selenium_chrome
variables:
ELASTICSEARCH_TAG: 'stable'
services:
- <<: *docker_mysql
- <<: *docker_postgresql
@ -188,8 +187,6 @@
.services_mysql_postgresql_elasticsearch_selenium_firefox_imap: &services_mysql_postgresql_elasticsearch_selenium_firefox_imap
extends:
- .variables_selenium_firefox
variables:
ELASTICSEARCH_TAG: 'stable'
services:
- <<: *docker_mysql
- <<: *docker_postgresql
@ -201,8 +198,6 @@
extends:
- .variables_selenium_chrome
- .variables_redis_memcached
variables:
ELASTICSEARCH_TAG: 'stable'
services:
- <<: *docker_mysql
- <<: *docker_postgresql
@ -216,8 +211,6 @@
extends:
- .variables_selenium_firefox
- .variables_redis_memcached
variables:
ELASTICSEARCH_TAG: 'stable'
services:
- <<: *docker_mysql
- <<: *docker_postgresql

View file

@ -19,12 +19,15 @@ include:
- .env_base
- .variables_es
- .variables_app_restart_cmd
- .tags_docker_low_concurrency
variables:
RAILS_ENV: "production"
script:
- script/build/test_slice_tests.sh $TEST_SLICE
- RAILS_ENV=test bundle exec rake db:create
- echo -e "\\e[0Ksection_start:`date +%s`:zammad_ci_test_start[collapsed=true]\\r\\e[0Kbundle exec rake zammad:ci:test:start"
- bundle exec rake zammad:ci:test:start[with_elasticsearch]
- echo -e "\\e[0Ksection_end:`date +%s`:zammad_ci_test_start\\r\\e[0K"
- time bundle exec rails test --fail-fast test/browser
.template_browser-core_chrome: &template_browser-core_chrome
@ -44,6 +47,7 @@ include:
extends:
- .env_base
- .variables_app_restart_cmd
- .tags_docker_low_concurrency
variables:
RAILS_ENV: "production"
AUTO_WIZARD_FILE: "contrib/auto_wizard_example.json"
@ -51,7 +55,9 @@ include:
script:
- RAILS_ENV=test bundle exec rake db:create
- cp $AUTO_WIZARD_FILE auto_wizard.json
- echo -e "\\e[0Ksection_start:`date +%s`:zammad_ci_test_start[collapsed=true]\\r\\e[0Kbundle exec rake zammad:ci:test:start"
- bundle exec rake zammad:ci:test:start
- echo -e "\\e[0Ksection_end:`date +%s`:zammad_ci_test_start\\r\\e[0K"
- bundle exec rails test $TEST_FILE
.template_browser-core_autowizard_chrome: &template_browser-core_autowizard_chrome
@ -72,6 +78,7 @@ include:
- .env_base
- .variables_app_restart_cmd
- .services_mysql_postgresql_redis_memcached
- .tags_docker_low_concurrency
variables:
RAILS_ENV: "production"
@ -83,10 +90,13 @@ include:
- .env_base
- .variables_es
- .variables_rspec_slicing
- .tags_docker_low_concurrency
variables:
RAILS_ENV: "test"
script:
- echo -e "\\e[0Ksection_start:`date +%s`:zammad_ci_test_prepare[collapsed=true]\\r\\e[0Kbundle exec rake zammad:ci:test:prepare"
- bundle exec rake zammad:ci:test:prepare
- echo -e "\\e[0Ksection_end:`date +%s`:zammad_ci_test_prepare\\r\\e[0K"
- echo "RSpec filter:" "$RSPEC_EXAMPLE_MATCHES"
- bundle exec rspec --require ./spec/rspec_extensions.rb --example-matches "$RSPEC_EXAMPLE_MATCHES" --fail-fast -t ~integration --profile 10 spec/system

View file

@ -7,7 +7,9 @@ api_client_php:
ZAMMAD_PHP_API_CLIENT_UNIT_TESTS_PASSWORD: "test"
script:
- RAILS_ENV=test bundle exec rake db:create
- echo -e "\\e[0Ksection_start:`date +%s`:zammad_ci_test_start[collapsed=true]\\r\\e[0Kbundle exec rake zammad:ci:test:start"
- RAILS_ENV=test bundle exec rake zammad:ci:test:start zammad:setup:auto_wizard
- echo -e "\\e[0Ksection_end:`date +%s`:zammad_ci_test_start\\r\\e[0K"
- git clone https://github.com/zammad/zammad-api-client-php.git
- php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
- php composer-setup.php --install-dir=/usr/local/bin

View file

@ -4,7 +4,9 @@ api_client_ruby:
script:
- RAILS_ENV=test bundle exec rake db:create
- cp contrib/auto_wizard_test.json auto_wizard.json
- echo -e "\\e[0Ksection_start:`date +%s`:zammad_ci_test_start[collapsed=true]\\r\\e[0Kbundle exec rake zammad:ci:test:start"
- bundle exec rake zammad:ci:test:start
- echo -e "\\e[0Ksection_end:`date +%s`:zammad_ci_test_start\\r\\e[0K"
- git clone https://github.com/zammad/zammad-api-client-ruby.git
- cd zammad-api-client-ruby
- bundle update --bundler

View file

@ -13,5 +13,7 @@ browser:build:
variables:
RAILS_ENV: "production"
script:
- echo -e "\\e[0Ksection_start:`date +%s`:zammad_db_unseeded[collapsed=true]\\r\\e[0Kbundle exec rake zammad:db:unseeded"
- bundle exec rake zammad:db:unseeded
- echo -e "\\e[0Ksection_end:`date +%s`:zammad_db_unseeded\\r\\e[0K"
- bundle exec rake assets:precompile

View file

@ -27,9 +27,3 @@
- .template_browser-core_chrome
variables:
TEST_SLICE: "5"
6_chrome:
extends:
- .template_browser-core_chrome
variables:
TEST_SLICE: "6"

View file

@ -28,9 +28,3 @@
- .template_browser-core_firefox
variables:
TEST_SLICE: "5"
6_firefox:
extends:
- .template_browser-core_firefox
variables:
TEST_SLICE: "6"

View file

@ -14,10 +14,13 @@ include:
- .env_base
- .variables_app_restart_cmd
- .variables_es
- .tags_docker_low_concurrency
variables:
RAILS_ENV: "test"
script:
- echo -e "\\e[0Ksection_start:`date +%s`:zammad_ci_test_prepare[collapsed=true]\\r\\e[0Kbundle exec rake zammad:ci:test:prepare"
- bundle exec rake zammad:ci:test:prepare
- echo -e "\\e[0Ksection_end:`date +%s`:zammad_ci_test_prepare\\r\\e[0K"
- bundle exec rspec --fail-fast --pattern "spec/system/**/*_spec.rb" -t integration --profile 10
.template_browser-integration_capybara_chrome: &template_browser-integration_capybara_chrome
@ -38,13 +41,16 @@ include:
- .env_base
- .variables_app_restart_cmd
- .services_postgresql_selenium_chrome
- .tags_docker_low_concurrency
variables:
RAILS_ENV: "production"
AUTO_WIZARD_FILE: "contrib/auto_wizard_test.json"
script:
- RAILS_ENV=test bundle exec rake db:create
- cp $AUTO_WIZARD_FILE auto_wizard.json
- echo -e "\\e[0Ksection_start:`date +%s`:zammad_ci_test_start[collapsed=true]\\r\\e[0Kbundle exec rake zammad:ci:test:start"
- bundle exec rake zammad:ci:test:start
- echo -e "\\e[0Ksection_end:`date +%s`:zammad_ci_test_start\\r\\e[0K"
- bundle exec rails test $TEST_FILE
.template_browser-integration_import_chrome: &template_browser-integration_import_chrome
@ -54,12 +60,15 @@ include:
extends:
- .env_base
- .services_postgresql_selenium_chrome
- .tags_docker_low_concurrency
variables:
RAILS_ENV: "production"
RAILS_SERVE_STATIC_FILES: "true"
script:
- RAILS_ENV=test bundle exec rake db:create
- echo -e "\\e[0Ksection_start:`date +%s`:zammad_ci_test_start[collapsed=true]\\r\\e[0Kbundle exec rake zammad:ci:test:start"
- bundle exec rake zammad:ci:test:start
- echo -e "\\e[0Ksection_end:`date +%s`:zammad_ci_test_start\\r\\e[0K"
- bundle exec rails test $TEST_FILE
# we need at least one job to store and include this template

View file

@ -7,11 +7,11 @@ otrs_chrome:
IMPORT_OTRS_ENDPOINT: "http://zammad-ci-otrsimport-app/otrs/public.pl?Action=ZammadMigrator"
TZ: "Europe/Berlin" # Required for the zammad-ci-otrsimport-app containers
services:
- name: registry.znuny.com/docker/zammad-postgresql:stable
- name: $CI_REGISTRY/docker/zammad-postgresql:stable
alias: postgresql
- name: registry.znuny.com/docker/zammad-selenium-chrome:stable
- name: $CI_REGISTRY/docker/zammad-selenium-chrome:stable
alias: selenium-chrome
- name: registry.znuny.com/docker/zammad-ci-otrsimport-db:otrs6
- name: $CI_REGISTRY/docker/zammad-ci-otrsimport-db:otrs6
alias: zammad-ci-otrsimport-db
- name: registry.znuny.com/docker/zammad-ci-otrsimport-app:otrs6
- name: $CI_REGISTRY/docker/zammad-ci-otrsimport-app:otrs6
alias: zammad-ci-otrsimport-app

View file

@ -1,16 +1,12 @@
include:
- local: '/.gitlab/ci/integration/clearbit.yml'
- local: '/.gitlab/ci/integration/email_helper_deliver.yml'
- local: '/.gitlab/ci/integration/es.yml'
- local: '/.gitlab/ci/integration/geo.yml'
- local: '/.gitlab/ci/integration/other.yml'
- local: '/.gitlab/ci/integration/otrs.yml'
- local: '/.gitlab/ci/integration/slack.yml'
- local: '/.gitlab/ci/integration/user_agent.yml'
.template_integration: &template_integration
extends:
- .env_base
- .services_mysql_postgresql
- .services_mysql_postgresql_imap
- .rules_integration_manual_start
tags:
- integration

View file

@ -1,7 +0,0 @@
clearbit:
extends:
- .template_integration
script:
- bundle exec rake zammad:db:unseeded
- bundle exec rails test test/integration/clearbit_test.rb
allow_failure: true

View file

@ -1,11 +0,0 @@
email_helper_deliver:
extends:
- .template_integration
- .tags_mail
- .services_mysql_postgresql_imap
script:
- bundle exec rake zammad:db:unseeded
- bundle exec rails test test/integration/email_helper_test.rb
- bundle exec rails test test/integration/email_deliver_test.rb
- bundle exec rails test test/integration/email_keep_on_server_test.rb
- bundle exec rails test test/integration/email_postmaster_to_sender.rb

View file

@ -7,20 +7,23 @@
tags:
- integration
script:
- echo -e "\\e[0Ksection_start:`date +%s`:zammad_db_unseeded[collapsed=true]\\r\\e[0Kbundle exec rake zammad:db:unseeded"
- bundle exec rake zammad:db:unseeded
- echo -e "\\e[0Ksection_end:`date +%s`:zammad_db_unseeded\\r\\e[0K"
- bundle exec rails test test/integration/elasticsearch_active_test.rb
- bundle exec rails test test/integration/elasticsearch_test.rb
- bundle exec rspec --tag searchindex --tag ~type:system --profile 10
- bundle exec rails test test/integration/report_test.rb
es:7:
<<: *template_integration_es
variables:
ELASTICSEARCH_TAG: '7'
RAILS_ENV: "test"
es:7.8:
# Lowest supported version
"rspec:es:7.8":
<<: *template_integration_es
variables:
ELASTICSEARCH_TAG: '7.8.1'
RAILS_ENV: "test"
# Highest supported version (except for newer releases that are not yet in CI)
"rspec:es:7.16":
<<: *template_integration_es
variables:
ELASTICSEARCH_TAG: '7.16'
RAILS_ENV: "test"

View file

@ -1,8 +0,0 @@
geo:
extends:
- .template_integration
script:
- bundle exec rake zammad:db:unseeded
- bundle exec rails test test/integration/geo_calendar_test.rb
- bundle exec rails test test/integration/geo_location_test.rb
- bundle exec rails test test/integration/geo_ip_test.rb

View file

@ -0,0 +1,27 @@
"minitest:integration:other":
extends:
- .template_integration
script:
- echo -e "\\e[0Ksection_start:`date +%s`:zammad_db_unseeded[collapsed=true]\\r\\e[0Kbundle exec rake zammad:db:unseeded"
- bundle exec rake zammad:db:unseeded
- echo -e "\\e[0Ksection_end:`date +%s`:zammad_db_unseeded\\r\\e[0K"
- echo "email_helper_deliver tests..."
- bundle exec rails test test/integration/email_helper_test.rb
- bundle exec rails test test/integration/email_deliver_test.rb
- bundle exec rails test test/integration/email_keep_on_server_test.rb
- bundle exec rails test test/integration/email_postmaster_to_sender.rb
- echo "Clearbit test..."
- bundle exec rails test test/integration/clearbit_test.rb
- echo "Geo tests..."
- bundle exec rails test test/integration/geo_calendar_test.rb
- bundle exec rails test test/integration/geo_location_test.rb
- bundle exec rails test test/integration/geo_ip_test.rb
- echo "Slack test..."
- bundle exec rails test test/integration/slack_test.rb
- echo "UserAgent tests..."
- bundle exec rails test test/integration/user_agent_test.rb
- export ZAMMAD_PROXY_TEST=true
- bundle exec rails test test/integration/user_agent_test.rb
allow_failure: true

View file

@ -2,81 +2,83 @@
extends:
- .template_integration
script:
- echo -e "\\e[0Ksection_start:`date +%s`:zammad_db_unseeded[collapsed=true]\\r\\e[0Kbundle exec rake zammad:db:unseeded"
- bundle exec rake zammad:db:unseeded
- echo -e "\\e[0Ksection_end:`date +%s`:zammad_db_unseeded\\r\\e[0K"
- bundle exec rails test test/integration/otrs_import_test.rb
variables:
FF_NETWORK_PER_BUILD: 1 # https://docs.gitlab.com/runner/configuration/feature-flags.html
IMPORT_OTRS_ENDPOINT: "http://zammad-ci-otrsimport-app/otrs/public.pl?Action=ZammadMigrator"
TZ: "Europe/Berlin" # Required for the zammad-ci-otrsimport-app containers
FF_NETWORK_PER_BUILD: 1 # https://docs.gitlab.com/runner/configuration/feature-flags.html
IMPORT_OTRS_ENDPOINT: 'http://zammad-ci-otrsimport-app/otrs/public.pl?Action=ZammadMigrator'
TZ: 'Europe/Berlin' # Required for the zammad-ci-otrsimport-app containers
otrs:6:
'minitest:integration:otrs:6':
<<: *template_integration_otrs
services:
- name: registry.znuny.com/docker/zammad-mysql:stable
- name: $CI_REGISTRY/docker/zammad-mysql:stable
alias: mysql
- name: registry.znuny.com/docker/zammad-postgresql:stable
- name: $CI_REGISTRY/docker/zammad-postgresql:stable
alias: postgresql
- name: registry.znuny.com/docker/zammad-ci-otrsimport-db:otrs6
- name: $CI_REGISTRY/docker/zammad-ci-otrsimport-db:otrs6
alias: zammad-ci-otrsimport-db
- name: registry.znuny.com/docker/zammad-ci-otrsimport-app:otrs6
- name: $CI_REGISTRY/docker/zammad-ci-otrsimport-app:otrs6
alias: zammad-ci-otrsimport-app
otrs:5:
'minitest:integration:otrs:5':
<<: *template_integration_otrs
services:
- name: registry.znuny.com/docker/zammad-mysql:stable
- name: $CI_REGISTRY/docker/zammad-mysql:stable
alias: mysql
- name: registry.znuny.com/docker/zammad-postgresql:stable
- name: $CI_REGISTRY/docker/zammad-postgresql:stable
alias: postgresql
- name: registry.znuny.com/docker/zammad-ci-otrsimport-db:otrs5
- name: $CI_REGISTRY/docker/zammad-ci-otrsimport-db:otrs5
alias: zammad-ci-otrsimport-db
- name: registry.znuny.com/docker/zammad-ci-otrsimport-app:otrs5
- name: $CI_REGISTRY/docker/zammad-ci-otrsimport-app:otrs5
alias: zammad-ci-otrsimport-app
otrs:4:
'minitest:integration:otrs:4':
<<: *template_integration_otrs
services:
- name: registry.znuny.com/docker/zammad-mysql:stable
- name: $CI_REGISTRY/docker/zammad-mysql:stable
alias: mysql
- name: registry.znuny.com/docker/zammad-postgresql:stable
- name: $CI_REGISTRY/docker/zammad-postgresql:stable
alias: postgresql
- name: registry.znuny.com/docker/zammad-ci-otrsimport-db:otrs4
- name: $CI_REGISTRY/docker/zammad-ci-otrsimport-db:otrs4
alias: zammad-ci-otrsimport-db
- name: registry.znuny.com/docker/zammad-ci-otrsimport-app:otrs4
- name: $CI_REGISTRY/docker/zammad-ci-otrsimport-app:otrs4
alias: zammad-ci-otrsimport-app
otrs:33:
'minitest:integration:otrs:33':
<<: *template_integration_otrs
services:
- name: registry.znuny.com/docker/zammad-mysql:stable
- name: $CI_REGISTRY/docker/zammad-mysql:stable
alias: mysql
- name: registry.znuny.com/docker/zammad-postgresql:stable
- name: $CI_REGISTRY/docker/zammad-postgresql:stable
alias: postgresql
- name: registry.znuny.com/docker/zammad-ci-otrsimport-db:otrs33
- name: $CI_REGISTRY/docker/zammad-ci-otrsimport-db:otrs33
alias: zammad-ci-otrsimport-db
- name: registry.znuny.com/docker/zammad-ci-otrsimport-app:otrs33
- name: $CI_REGISTRY/docker/zammad-ci-otrsimport-app:otrs33
alias: zammad-ci-otrsimport-app
otrs:32:
'minitest:integration:otrs:32':
<<: *template_integration_otrs
services:
- name: registry.znuny.com/docker/zammad-mysql:stable
- name: $CI_REGISTRY/docker/zammad-mysql:stable
alias: mysql
- name: registry.znuny.com/docker/zammad-postgresql:stable
- name: $CI_REGISTRY/docker/zammad-postgresql:stable
alias: postgresql
- name: registry.znuny.com/docker/zammad-ci-otrsimport-db:otrs32
- name: $CI_REGISTRY/docker/zammad-ci-otrsimport-db:otrs32
alias: zammad-ci-otrsimport-db
- name: registry.znuny.com/docker/zammad-ci-otrsimport-app:otrs32
- name: $CI_REGISTRY/docker/zammad-ci-otrsimport-app:otrs32
alias: zammad-ci-otrsimport-app
otrs:31:
'minitest:integration:otrs:31':
<<: *template_integration_otrs
services:
- name: registry.znuny.com/docker/zammad-mysql:stable
- name: $CI_REGISTRY/docker/zammad-mysql:stable
alias: mysql
- name: registry.znuny.com/docker/zammad-postgresql:stable
- name: $CI_REGISTRY/docker/zammad-postgresql:stable
alias: postgresql
- name: registry.znuny.com/docker/zammad-ci-otrsimport-db:otrs31
- name: $CI_REGISTRY/docker/zammad-ci-otrsimport-db:otrs31
alias: zammad-ci-otrsimport-db
- name: registry.znuny.com/docker/zammad-ci-otrsimport-app:otrs31
- name: $CI_REGISTRY/docker/zammad-ci-otrsimport-app:otrs31
alias: zammad-ci-otrsimport-app

View file

@ -1,13 +0,0 @@
slack:
extends:
- .template_integration
rules:
- if: $CI_MERGE_REQUEST_ID
when: never
- if: '$CI_COMMIT_BRANCH =~ /^private/'
when: manual
allow_failure: true
- when: on_success
script:
- bundle exec rake zammad:db:unseeded
- bundle exec rails test test/integration/slack_test.rb

View file

@ -1,8 +0,0 @@
user_agent:
extends:
- .template_integration
script:
- bundle exec rake zammad:db:unseeded
- bundle exec rails test test/integration/user_agent_test.rb
- export ZAMMAD_PROXY_TEST=true
- bundle exec rails test test/integration/user_agent_test.rb

View file

@ -6,15 +6,28 @@
- .rules_singletest
before_script:
- source /etc/profile.d/rvm.sh # ensure RVM is loaded
- source /opt/rh/rh-nodejs12/enable # ensure Node.js is available
- source /opt/rh/rh-nodejs*/enable # ensure Node.js is available
rubocop:
<<: *template_pre
script:
.template_pre_rails: &template_pre_rails
stage: pre
extends:
- .tags_docker
- .rules_singletest
- .services_postgresql
before_script:
- source /etc/profile.d/rvm.sh # ensure RVM is loaded
- source /opt/rh/rh-nodejs*/enable # ensure Node.js is available
- echo -e "\\e[0Ksection_start:`date +%s`:bundle_install[collapsed=true]\\r\\e[0Kbundle install"
- bundle install -j $(nproc) --path vendor
- bundle exec rubocop --parallel
- echo -e "\\e[0Ksection_end:`date +%s`:bundle_install\\r\\e[0K"
- bundle exec ruby .gitlab/configure_environment.rb
- source .gitlab/environment.env
- echo -e "\\e[0Ksection_start:`date +%s`:zammad_db_init[collapsed=true]\\r\\e[0Kbundle exec rake zammad:db:init"
- bundle exec rake zammad:db:init
- echo -e "\\e[0Ksection_end:`date +%s`:zammad_db_init\\r\\e[0K"
shellcheck:
# Must be a separate job because it uses a custom image.
"lint: shellcheck":
<<: *template_pre
image: koalaman/shellcheck-alpine:stable
before_script:
@ -22,48 +35,65 @@ shellcheck:
script:
- shellcheck -S warning $(find . -name "*.sh" -o -name "functions" | grep -v "/vendor/")
zeitwerk_check:
<<: *template_pre
extends:
- .tags_docker
- .services_postgresql
script:
- bundle install -j $(nproc) --path vendor
- bundle exec ruby .gitlab/configure_environment.rb
- source .gitlab/environment.env
- bundle exec rake zammad:db:init
- bundle exec rails zeitwerk:check
brakeman:
<<: *template_pre
"lint: i18n, rails & security":
<<: *template_pre_rails
artifacts:
expire_in: 1 week
paths:
- tmp/brakeman-report.html
- tmp/brakeman-report.html
when: on_failure
script:
- bundle install -j $(nproc) --path vendor
- echo "Checking .po file syntax..."
- for FILE in i18n/*.pot i18n/*.po; do echo "Checking $FILE"; msgfmt -o /dev/null -c $FILE; done
- echo "Checking .pot catalog consistency..."
- bundle exec rails generate translation_catalog --check
- echo "Brakeman security check..."
- bundle exec brakeman -o /dev/stdout -o tmp/brakeman-report.html
coffeelint:
<<: *template_pre
script:
- coffeelint app/
bundle-audit:
<<: *template_pre
script:
- echo "bundler-audit security check..."
- gem install bundler-audit
- bundle-audit update
- bundle-audit --ignore CVE-2015-9284
- echo "Rails zeitwerk:check autoloader check..."
- bundle exec rails zeitwerk:check
github:
"lint: ruby, js & css":
<<: *template_pre
tags:
- deploy
before_script:
- "" # no RVM present in deploy ENV
script:
- echo "Coffeelint check..."
- coffeelint --rules ./.coffeelint/rules/* app/
- echo "Stylelint check..."
- yarn install
- yarn lint:css
- echo "Rubocop check..."
- echo -e "\\e[0Ksection_start:`date +%s`:bundle_install[collapsed=true]\\r\\e[0Kbundle install"
- bundle install -j $(nproc) --path vendor
- echo -e "\\e[0Ksection_end:`date +%s`:bundle_install\\r\\e[0K"
- bundle exec rubocop --parallel
# Must be a separate job because it may fail and is only executed for develop.
"lint: orphaned ruby gems":
<<: *template_pre_rails
allow_failure: true
rules:
- if: $CI_MERGE_REQUEST_ID
when: never
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
when: always
- when: manual
script:
- bundle exec rake zammad:ci:bundle:orphaned 5
# Executed on a dedicated runner.
"push to github":
<<: *template_pre
before_script:
- test -d $HOME/.ssh || mkdir $HOME/.ssh
- ssh-keyscan github.com >> $HOME/.ssh/known_hosts
- eval $(ssh-agent -s)
- echo "$PUSH_TO_GITHUB_SSH_PRIVATE_KEY" | ssh-add -
- ssh-add -l
script:
- git fetch --unshallow
- script/build/sync_repo.sh git@github.com:zammad/zammad.git
global_refresh_envs:
@ -75,9 +105,9 @@ global_refresh_envs:
resource_group: global_refresh_envs
# allow download via the web UI to restore ENVs in case global cache got deleted (see: `.gitlab-ci.yml`)
artifacts:
expire_in: 1 day
expire_in: 1 week
paths:
- fresh.env
- fresh.env
rules:
- if: $CI_MERGE_REQUEST_ID
when: never

View file

@ -7,7 +7,9 @@ include:
- .env_base
- .variables_rspec_slicing
script:
- echo -e "\\e[0Ksection_start:`date +%s`:zammad_db_init[collapsed=true]\\r\\e[0Kbundle exec rake zammad:db:init"
- bundle exec rake zammad:db:init
- echo -e "\\e[0Ksection_end:`date +%s`:zammad_db_init\\r\\e[0K"
- echo "RSpec filter:" "$RSPEC_EXAMPLE_MATCHES"
- bundle exec rspec --require ./spec/rspec_extensions.rb --example-matches "$RSPEC_EXAMPLE_MATCHES" --exclude-pattern "spec/{system,integration}/**/*_spec.rb" -t ~searchindex --profile 10
@ -23,13 +25,8 @@ rspec:integration:
- .rules_integration_manual_start
variables:
RAILS_ENV: "test"
rules:
- if: $CI_MERGE_REQUEST_ID
when: never
- if: '$CI_COMMIT_BRANCH =~ /^private/ && $INTEGRATION_TESTS != "enabled"'
when: manual
allow_failure: true
- when: always
script:
- echo -e "\\e[0Ksection_start:`date +%s`:zammad_db_init[collapsed=true]\\r\\e[0Kbundle exec rake zammad:db:init"
- bundle exec rake zammad:db:init
- echo -e "\\e[0Ksection_end:`date +%s`:zammad_db_init\\r\\e[0K"
- bundle exec rspec -t type:integration --profile 10

View file

@ -8,7 +8,9 @@ include:
variables:
RAILS_ENV: "test"
script:
- echo -e "\\e[0Ksection_start:`date +%s`:zammad_db_init[collapsed=true]\\r\\e[0Kbundle exec rake zammad:db:init"
- bundle exec rake zammad:db:init
- echo -e "\\e[0Ksection_end:`date +%s`:zammad_db_init\\r\\e[0K"
- bundle exec rake test:units
- bundle exec rails test test/integration/object_manager_test.rb
- bundle exec rails test test/integration/package_test.rb

View file

@ -1,5 +1,5 @@
#!/usr/bin/env ruby
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'yaml'
require 'resolv'

View file

@ -86,7 +86,7 @@ This MR does not require any follow-up.
- [ ] Implementation satisfies specification
- [ ] Changes confirmed by manual testing
- [ ] [Code style](https://git.znuny.com/zammad/zammad/-/wikis/Coding-style-guide) is appropriate
- [ ] [Code style](https://git.zammad.com/zammad/zammad/-/wikis/Coding-style-guide) is appropriate
- [ ] Performance will not degrade
- [ ] Code is properly covered with tests
- If follow-up by the documentation team is needed:

View file

@ -0,0 +1,23 @@
## What does this MR do?
<!--Insert the link to a Asana card in (), or describe the task/changec if there is no related task (but normally there should be always a referenced task) -->
[Asana Task Link]()
## ToDo Checklist
- [ ] Checked that the needed functionality is not already available in a common component.
- [ ] Checked if newly created components can be added in a common way (e.g. common component).
- [ ] Created or changed story for common component.
- [ ] Covered common component with Jest-Test
- [ ] Checked that i didn't add a API request inside of a common component.
- [ ] Covered new functionality with Jest-Test(*)
- [ ] When relevant: Covered new GraphQL (Mutation/Query) with a request test.
(*) Jest tests are normally only needed for the common components or other typescript functionality, because the other functionality will be tested with selenium tests and own GraphQL-API tests (with this we avoid that we need always to mock the graphql calls). But for sure special frontend handling should also be tested with a jest test.
## QA Checklist (to be filled by the reviewer)
- [ ] Implementation satisfies specification
- [ ] Changes confirmed by manual testing
- [ ] [Code style](https://git.zammad.com/zammad/zammad/-/wikis/Coding-style-guide) is appropriate
- [ ] Code is properly covered with tests

View file

@ -0,0 +1,17 @@
## What does this MR do?
<!--Insert the link to a Asana card in (), or describe the task/changec if there is no related task (but normally there should be always a referenced task) -->
[Asana Task Link]()
## ToDo Checklist
- [ ] Checked that the feature will also work in the scope of packages.
- [ ] Added comments for "special" core code parts.
- [ ] Added the feature in the "developer manual" with some clear explanation and examples for the usage.
## QA Checklist (to be filled by the reviewer)
- [ ] Implementation satisfies specification
- [ ] Changes confirmed by manual testing
- [ ] [Code style](https://git.zammad.com/zammad/zammad/-/wikis/Coding-style-guide) is appropriate
- [ ] Code is properly covered with tests

View file

@ -1,3 +1,6 @@
# Don't complain when changing branches with different overcommit configurations.
verify_signatures: false
CommitMsg:
ALL:
enabled: false
@ -9,10 +12,25 @@ PreCommit:
enabled: false
RuboCop:
enabled: true
on_warn: fail # Treat all warnings as failures
on_warn: fail
CoffeeLint:
# .coffeelint/rules/* not supported in YAML, specify all rules separately.
flags:
[
'--reporter=csv',
'--rules',
'./.coffeelint/rules/detect_translatable_string.coffee',
]
enabled: true
on_warn: fail
exclude: 'public/assets/chat/**/*'
CustomScript:
enabled: true
description: 'Check if translation catalog is up-to-date'
required_executable: 'rails'
flags: ['generate', 'translation_catalog', '--check']
Stylelint:
enabled: true
on_warn: fail # Treat all warnings as failures
PostCheckout:
ALL:
@ -41,4 +59,3 @@ PreRebase:
PrepareCommitMsg:
ALL:
enabled: false

View file

@ -56,6 +56,18 @@ targets:
- libimlib2
- libimlib2-dev
- shared-mime-info
debian-11:
dependencies:
- curl
- elasticsearch|elasticsearch-oss
- nginx|apache2
- postgresql|mariadb-server
- libimlib2
- shared-mime-info
build_dependencies:
- libimlib2
- libimlib2-dev
- shared-mime-info
ubuntu-16.04:
dependencies:
- curl

6
.prettierrc.json Normal file
View file

@ -0,0 +1,6 @@
{
"semi": false,
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "all"
}

View file

@ -1,4 +1,4 @@
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module RuboCop
module Cop

View file

@ -0,0 +1,90 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module RuboCop
module Cop
module Zammad
class DetectTranslatableString < Base
extend AutoCorrector
MSG = 'This string looks like it should be marked as translatable via __(...).'.freeze
def on_str(node)
# Constants like __FILE__ are handled as strings, but don't respond to begin.
return if !node.loc.respond_to?(:begin) || !node.loc.begin
return if part_of_ignored_node?(node)
return if !offense?(node)
add_offense(node) do |corrector|
corrector.replace(node, "__(#{node.source})")
end
end
def on_regexp(node)
ignore_node(node)
end
METHOD_NAME_BLOCKLIST = %i[
__ translate
include? eql? parse
debug info warn error fatal unknown log log_error
].freeze
def on_send(node)
ignore_node(node) if METHOD_NAME_BLOCKLIST.include? node.method_name
end
private
PARENT_SOURCE_BLOCKLIST = [
# Ignore logged strings
'Rails.logger'
].freeze
NODE_START_BLOCKLIST = [
# Only look at strings starting with upper case letters
%r{[^A-Z]},
# Ignore strings starting with three upper case letters like SELECT, POST etc.
%r{[A-Z]{3}},
].freeze
NODE_CONTAIN_BLOCKLIST = [
# Ignore strings with interpolation.
'#{',
# Ignore Email addresses
'@'
].freeze
def offense?(node) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
# Ignore Hash Keys
return false if node.parent.type.eql?(:pair) && node.parent.children.first.equal?(node)
# Ignore equality checks like ... == 'My String'
return false if node.left_sibling.eql?(:==)
# Remove quotes
node_source = node.source[1..-2]
# Only match strings with at least two words
return false if node_source.split.count < 2
NODE_START_BLOCKLIST.each do |entry|
return false if node_source.start_with? entry
end
NODE_CONTAIN_BLOCKLIST.each do |entry|
return false if node_source.include? entry
end
parent_source = node.parent.source
PARENT_SOURCE_BLOCKLIST.each do |entry|
return false if parent_source.include? entry
end
true
end
end
end
end
end

View file

@ -1,4 +1,4 @@
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module RuboCop
module Cop

View file

@ -1,4 +1,4 @@
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module RuboCop
module Cop

View file

@ -1,4 +1,4 @@
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module RuboCop
module Cop
@ -17,7 +17,7 @@ module RuboCop
PATTERN
def_node_matcher :has_reset?, <<-PATTERN
$(send _ {:describe :context :it} (_ ...) (hash ... (pair (sym :db_strategy) (sym {:reset :reset_all}))))
$(send _ {:describe :context :it :shared_examples} (_ ...) (hash <(pair (sym :db_strategy) (sym {:reset :reset_all})) ...> ))
PATTERN
MSG = 'Add a `db_strategy: :reset` to your context/decribe when you are creating object manager attributes!'.freeze

View file

@ -1,4 +1,4 @@
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module RuboCop
module Cop
@ -54,7 +54,9 @@ and check if there are reset_column_information function calls existing for the
end
def reset_class(node)
node.children[0].children[1].to_s
# simplify namespaced class names
# Rubocop can't reliably convert table names to namespaced class names
node.children[0].const_name.gsub '::', ''
end
def table_class(node)

View file

@ -1,4 +1,4 @@
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module RuboCop
module Cop

View file

@ -0,0 +1,17 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module RuboCop
module Cop
module Zammad
class ForbidTranslatableMarker < Base
MSG = <<~ERROR_MESSAGE.freeze
Don't use __() in Zammad core migrations. Translatable strings should be marked where they are defined, e.g. in the DB seeds.
ERROR_MESSAGE
def on_send(node)
add_offense(node) if node.method_name.eql? :__
end
end
end
end
end

View file

@ -1,4 +1,4 @@
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'capybara/rspec/matchers'

View file

@ -1,4 +1,4 @@
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module RuboCop
module Cop

View file

@ -1,4 +1,4 @@
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module RuboCop
module Cop

View file

@ -1,4 +1,4 @@
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module RuboCop
module Cop
@ -9,7 +9,7 @@ module RuboCop
extend AutoCorrector
MSG = 'Copyright update required (use auto-correct to rectify this).'.freeze
COPYRIGHT = "# Copyright (C) 2012-#{Date.today.year} Zammad Foundation, http://zammad-foundation.org/".freeze # rubocop:disable Rails/Date
COPYRIGHT = "# Copyright (C) 2012-#{Date.today.year} Zammad Foundation, https://zammad-foundation.org/".freeze # rubocop:disable Rails/Date
def on_new_investigation
if processed_source.raw_source.include? '# Copyright (C) 2012-'

View file

@ -189,6 +189,10 @@ Rails/SkipsModelValidations:
- "**/*_spec.rb"
- "**/*_examples.rb"
Rails/ReversibleMigration:
Description: This cop checks whether the change method of the migration file is reversible.
Enabled: false
Style/ClassAndModuleChildren:
Description: 'Checks style of children classes and modules.'
Enabled: false
@ -317,6 +321,25 @@ Zammad/ExistsResetColumnInformation:
- 'db/migrate/201*_*.rb'
- 'db/migrate/2020*_*.rb'
Zammad/DetectTranslatableString:
Enabled: true
Include:
- "app/**/*.rb"
- "db/**/*.rb"
- "lib/**/*.rb"
Exclude:
- "db/migrate/**/*.rb"
- "db/addon/**/*.rb"
- "lib/generators/**/*.rb"
- "lib/sequencer/**/*.rb"
- "lib/import/**/*.rb"
- "lib/tasks/**/*.rb"
Zammad/ForbidTranslatableMarker:
Enabled: true
Include:
- "db/migrate/*.rb"
Zammad/ExistsDbStrategy:
Include:
- "spec/**/*.rb"

View file

@ -1,6 +1,7 @@
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require_relative 'cop/zammad/exists_condition'
require_relative 'cop/zammad/detect_translatable_string'
require_relative 'cop/zammad/exists_date_time_precision'
require_relative 'cop/zammad/exists_db_strategy'
require_relative 'cop/zammad/exists_reset_column_information'
@ -10,3 +11,4 @@ require_relative 'cop/zammad/no_to_sym_on_string'
require_relative 'cop/zammad/prefer_negated_if_over_unless'
require_relative 'cop/zammad/update_copyright'
require_relative 'cop/zammad/forbid_rand'
require_relative 'cop/zammad/forbid_translatable_marker'

View file

@ -412,16 +412,6 @@ RSpec/MessageSpies:
- 'spec/lib/import/otrs/ticket_spec.rb'
- 'spec/lib/import/otrs/user_factory_spec.rb'
- 'spec/lib/import/otrs/user_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/base_examples.rb'
- 'spec/lib/import/zendesk/object_attribute/checkbox_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/date_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/decimal_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/dropdown_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/integer_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/regexp_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/tagger_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/text_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/textarea_spec.rb'
- 'spec/lib/ldap/group_spec.rb'
- 'spec/lib/ldap/guid_spec.rb'
- 'spec/lib/ldap/user_spec.rb'
@ -483,16 +473,6 @@ RSpec/MultipleExpectations:
- 'spec/lib/import/otrs/priority_factory_spec.rb'
- 'spec/lib/import/otrs/requester_spec.rb'
- 'spec/lib/import/otrs/state_factory_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/base_examples.rb'
- 'spec/lib/import/zendesk/object_attribute/checkbox_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/date_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/decimal_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/dropdown_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/integer_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/regexp_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/tagger_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/text_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/textarea_spec.rb'
- 'spec/lib/ldap/group_spec.rb'
- 'spec/lib/ldap/guid_spec.rb'
- 'spec/lib/ldap/user_spec.rb'
@ -660,16 +640,6 @@ RSpec/VerifiedDoubles:
- 'spec/db/migrate/issue_2460_fix_corrupted_twitter_ids_spec.rb'
- 'spec/jobs/communicate_twitter_job_spec.rb'
- 'spec/lib/external_sync_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/base_examples.rb'
- 'spec/lib/import/zendesk/object_attribute/checkbox_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/date_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/decimal_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/dropdown_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/integer_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/regexp_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/tagger_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/text_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/textarea_spec.rb'
- 'spec/lib/ldap_spec.rb'
- 'spec/lib/sequencer/sequence/import/ldap/users_spec.rb'
- 'spec/lib/sequencer/unit/import/zendesk/sub_sequence/base_examples.rb'

View file

@ -883,7 +883,6 @@ Metrics/PerceivedComplexity:
- 'lib/twitter_sync.rb'
- 'lib/user_agent.rb'
- 'test/browser/admin_object_manager_test.rb'
- 'test/browser/keyboard_shortcuts_test.rb'
- 'test/browser_test_helper.rb'
- 'test/integration/slack_test.rb'

50
.stylelintrc.json Normal file
View file

@ -0,0 +1,50 @@
{
"extends": [
"stylelint-config-standard",
"stylelint-config-standard-scss",
"stylelint-prettier/recommended"
],
"rules": {
"alpha-value-notation": null,
"block-no-empty": null,
"color-function-notation": "legacy",
"declaration-block-no-duplicate-properties": null,
"declaration-block-no-redundant-longhand-properties": null,
"declaration-block-no-shorthand-property-overrides": null,
"declaration-block-single-line-max-declarations": null,
"font-family-no-missing-generic-family-keyword": null,
"function-calc-no-unspaced-operator": null,
"function-comma-space-after": null,
"hue-degree-notation": null,
"keyframes-name-pattern": null,
"max-empty-lines": null,
"no-descending-specificity": null,
"no-duplicate-selectors": null,
"number-max-precision": null,
"selector-class-pattern": null,
"selector-list-comma-newline-after": null,
"selector-no-vendor-prefix": null,
"selector-pseudo-element-no-unknown": null,
"scss/at-extend-no-missing-placeholder": null,
"scss/at-rule-no-unknown": null,
"scss/dollar-variable-pattern": null,
"scss/double-slash-comment-whitespace-inside": null,
"scss/no-global-function-names": null,
"value-no-vendor-prefix": null,
"property-no-unknown": [true, { "ignoreProperties": ["scroll-snap-mode"] }],
"property-no-vendor-prefix": null
},
"ignoreFiles": [
"public/assets/*.css",
"public/assets/chat/chat.css",
"public/assets/doorkeeper/**",
"**/reset*.css",
"**/bootstrap*.css",
"**/jquery*.css",
"**/cropper.css",
"**/fineuploader.css",
"**/qunit*.css",
"**/svg-dimensions.css",
"vendor/**"
]
}

View file

@ -1,15 +1,195 @@
# Change Log
## [5.1.0](https://github.com/zammad/zammad/tree/5.1.0) (2021-xx-xx)
## [5.1.1](https://github.com/zammad/zammad/tree/5.1.1) (2022-04-20)
[Full Changelog](https://github.com/zammad/zammad/compare/5.1.0...5.1.1)
**Implemented enhancements:**
- Allow reauthentication of Google / Microsoft 365 accounts [3240](https://github.com/zammad/zammad/issues/3240) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[channel](https://github.com/zammad/zammad/labels/channel)]
**Fixed bugs:**
- Error on second migration of an microsoft365 channel undefined method `options' for nil:NilClass [4060](https://github.com/zammad/zammad/issues/4060) [[bug](https://github.com/zammad/zammad/labels/bug)] [[channel](https://github.com/zammad/zammad/labels/channel)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Freshdesk migration which doesn't support time entries runs in unwanted behaviour [4052](https://github.com/zammad/zammad/issues/4052) [[bug](https://github.com/zammad/zammad/labels/bug)] [[import](https://github.com/zammad/zammad/labels/import)]
- Freshdesk-Migration does not like no Companies / Organisations within the source [4051](https://github.com/zammad/zammad/issues/4051) [[bug](https://github.com/zammad/zammad/labels/bug)] [[import](https://github.com/zammad/zammad/labels/import)]
- Cannot encrypt if multiple S/MIME certificates exist and one is expired [4029](https://github.com/zammad/zammad/issues/4029) [[bug](https://github.com/zammad/zammad/labels/bug)]
- Core Workflow: Does show wrong field list if you only have admin permissions and not ticket.agent permissions [4035](https://github.com/zammad/zammad/issues/4035) [[bug](https://github.com/zammad/zammad/labels/bug)] [[admin area](https://github.com/zammad/zammad/labels/admin%20area)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Can't delete smime certificate - ERROR: duplicate key value violates unique constraint [4049](https://github.com/zammad/zammad/issues/4049) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Knowledge Base on-the-fly updating does not work [4026](https://github.com/zammad/zammad/issues/4026) [[bug](https://github.com/zammad/zammad/labels/bug)]
- Core Workflow - Unable to select "has changed" logic when creating new workflow. It is also replaced with "is" in previously created workflows. [4046](https://github.com/zammad/zammad/issues/4046) [[bug](https://github.com/zammad/zammad/labels/bug)]
- undefined method `to_hash` on editing select fields in the admin interface after migration to 5.1 [4027](https://github.com/zammad/zammad/issues/4027) [[bug](https://github.com/zammad/zammad/labels/bug)]
- KB Public menus scroll bar positioning incorrect [4008](https://github.com/zammad/zammad/issues/4008) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[knowledge base](https://github.com/zammad/zammad/labels/knowledge%20base)]
- Problems with duplicate records in Translations table [4020](https://github.com/zammad/zammad/issues/4020) [[bug](https://github.com/zammad/zammad/labels/bug)] [[translation](https://github.com/zammad/zammad/labels/translation)]
- Tree select value cannot be set to "-" (empty) with Trigger/Scheduler/Core workflow [4024](https://github.com/zammad/zammad/issues/4024) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Admin macros are not usable with admin permissions only [4032](https://github.com/zammad/zammad/issues/4032) [[bug](https://github.com/zammad/zammad/labels/bug)] [[admin area](https://github.com/zammad/zammad/labels/admin%20area)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Admin SLA index view does not show update time if "for agent respond" is selected [4033](https://github.com/zammad/zammad/issues/4033) [[bug](https://github.com/zammad/zammad/labels/bug)] [[admin area](https://github.com/zammad/zammad/labels/admin%20area)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Core Workflow: Stop after match is not saved [4034](https://github.com/zammad/zammad/issues/4034) [[bug](https://github.com/zammad/zammad/labels/bug)] [[admin area](https://github.com/zammad/zammad/labels/admin%20area)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[core workflows](https://github.com/zammad/zammad/labels/core%20workflows)]
- Freshdesk import error when a inline image source attribute contains no clean url [4028](https://github.com/zammad/zammad/issues/4028) [[bug](https://github.com/zammad/zammad/labels/bug)] [[import](https://github.com/zammad/zammad/labels/import)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Mention history does not show properly who got added [3984](https://github.com/zammad/zammad/issues/3984) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[history](https://github.com/zammad/zammad/labels/history)]
- Obsolete notice field in admin calendar view [4023](https://github.com/zammad/zammad/issues/4023) [[bug](https://github.com/zammad/zammad/labels/bug)] [[admin area](https://github.com/zammad/zammad/labels/admin%20area)]
- Error “customer_id required” on Macro execution [4022](https://github.com/zammad/zammad/issues/4022) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[macros](https://github.com/zammad/zammad/labels/macros)]
- Translations are not available in API after syncing [4016](https://github.com/zammad/zammad/issues/4016) [[bug](https://github.com/zammad/zammad/labels/bug)]
- Upgraded to 5.1.0: pending time doesnt show a date [4018](https://github.com/zammad/zammad/issues/4018) [[bug](https://github.com/zammad/zammad/labels/bug)] [[translation](https://github.com/zammad/zammad/labels/translation)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- UI is not updated right after importing users csv file [3919](https://github.com/zammad/zammad/issues/3919) [[bug](https://github.com/zammad/zammad/labels/bug)]
- LDAP with many groups (<5k) and group role relation (>50) will crash in frontend [3994](https://github.com/zammad/zammad/issues/3994) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[LDAP](https://github.com/zammad/zammad/labels/LDAP)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
## [5.1.0](https://github.com/zammad/zammad/tree/5.1.0) (2022-03-14)
[Full Changelog](https://github.com/zammad/zammad/compare/5.0.0...5.1.0)
**Implemented enhancements:**
- added russian translations to mail notifications [3780](https://github.com/zammad/zammad/pull/3780) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[notification](https://github.com/zammad/zammad/labels/notification)]
- Draft Sharing: Add history entry for updating and deleting of a draft [3983](https://github.com/zammad/zammad/issues/3983) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[draft sharing](https://github.com/zammad/zammad/labels/draft%20sharing)]
- Draft Sharing: Improve sidebar icon order for ticket creation [3982](https://github.com/zammad/zammad/issues/3982) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[draft sharing](https://github.com/zammad/zammad/labels/draft%20sharing)]
- Make sidebar attachments unique [3930](https://github.com/zammad/zammad/issues/3930) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[ticket](https://github.com/zammad/zammad/labels/ticket)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Draft Sharing [629](https://github.com/zammad/zammad/issues/629) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[feature backlog](https://github.com/zammad/zammad/labels/feature%20backlog)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Limit access to KB Categories based on roles [2603](https://github.com/zammad/zammad/issues/2603) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[knowledge base](https://github.com/zammad/zammad/labels/knowledge%20base)]
- Enhance CTI integration texts [2753](https://github.com/zammad/zammad/issues/2753) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)]
- Show which escalation type escalated in ticket zoom [3928](https://github.com/zammad/zammad/issues/3928) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[ticket](https://github.com/zammad/zammad/labels/ticket)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Enable migration button feature for account migration MS365/Google channel [3960](https://github.com/zammad/zammad/issues/3960) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[needs verification](https://github.com/zammad/zammad/labels/needs%20verification)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Rename Third-Party login: Office 365 to Microsoft 365 [3245](https://github.com/zammad/zammad/issues/3245) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[third party issue](https://github.com/zammad/zammad/labels/third%20party%20issue)]
- Zammad backups (database and filesystem) are world-readable by default [3893](https://github.com/zammad/zammad/issues/3893) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)]
- Add confirmation dialog on visibility change of an article or in article creation [3924](https://github.com/zammad/zammad/issues/3924) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Be able to select more than one owner or organization in condition for overviews/triggers/schedulers like you can do it for state, priority or group [3900](https://github.com/zammad/zammad/issues/3900) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)]
- Zammad misses "weeks" for relative time events [2371](https://github.com/zammad/zammad/issues/2371) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Note is not being updated because of the lack of lastname [2429](https://github.com/zammad/zammad/issues/2429) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[frontend / JS app](https://github.com/zammad/zammad/labels/frontend%20%2F%20JS%20app)]
- Display callback urls for third-party applications [3622](https://github.com/zammad/zammad/issues/3622) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)]
- SLA description only available in english [556](https://github.com/zammad/zammad/issues/556) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[admin area](https://github.com/zammad/zammad/labels/admin%20area)] [[translation](https://github.com/zammad/zammad/labels/translation)]
- Add clear selection action or has changed condition [3821](https://github.com/zammad/zammad/issues/3821) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[specification required](https://github.com/zammad/zammad/labels/specification%20required)] [[core workflows](https://github.com/zammad/zammad/labels/core%20workflows)]
- Allow image popup and download within Chat [3210](https://github.com/zammad/zammad/issues/3210) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[chat](https://github.com/zammad/zammad/labels/chat)]
- Display name not used [2275](https://github.com/zammad/zammad/issues/2275) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[frontend / JS app](https://github.com/zammad/zammad/labels/frontend%20%2F%20JS%20app)]
- Possibility to specify the order of objects [294](https://github.com/zammad/zammad/issues/294) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[object manager attribute](https://github.com/zammad/zammad/labels/object%20manager%20attribute)]
- Import for kayako during the setup [3698](https://github.com/zammad/zammad/issues/3698) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[import](https://github.com/zammad/zammad/labels/import)]
- Login site wording could be better [3000](https://github.com/zammad/zammad/issues/3000) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[translation](https://github.com/zammad/zammad/labels/translation)]
- Core Workflow: Add organization condition attributes for object User [3779](https://github.com/zammad/zammad/issues/3779) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- No script content (e. g. javascript) in emails [3365](https://github.com/zammad/zammad/issues/3365) [[enhancement](https://github.com/zammad/zammad/labels/enhancement)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[mail processing](https://github.com/zammad/zammad/labels/mail%20processing)]
**Fixed bugs:**
- Report profile "new profile" button does not match coloring scheme [4007](https://github.com/zammad/zammad/issues/4007) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)]
- "Note - visibility confirmation dialog" setting also requests confirmation for e.g. email and phone articles [4009](https://github.com/zammad/zammad/issues/4009) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[ticket](https://github.com/zammad/zammad/labels/ticket)]
- Ensure 4 column selections within UI does not cover add/remove buttons [3609](https://github.com/zammad/zammad/issues/3609) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)]
- KB RTL text direction has wrong spacing between some elements [3925](https://github.com/zammad/zammad/issues/3925) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[regression](https://github.com/zammad/zammad/labels/regression)] [[knowledge base](https://github.com/zammad/zammad/labels/knowledge%20base)] [[good first issue](https://github.com/zammad/zammad/labels/good%20first%20issue)]
- Fixes: Fix knowledge base spacing and layout [3987](https://github.com/zammad/zammad/pull/3987)
- Longer category names break boxes in mobile version [3665](https://github.com/zammad/zammad/issues/3665) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[knowledge base](https://github.com/zammad/zammad/labels/knowledge%20base)]
- KB: granular permissions misconfiguration is allowed by UI [3997](https://github.com/zammad/zammad/issues/3997) [[bug](https://github.com/zammad/zammad/labels/bug)] [[blocker](https://github.com/zammad/zammad/labels/blocker)] [[knowledge base](https://github.com/zammad/zammad/labels/knowledge%20base)]
- Can not start a row in a knowledge base article with a linked answer [3965](https://github.com/zammad/zammad/issues/3965) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[knowledge base](https://github.com/zammad/zammad/labels/knowledge%20base)]
- Long role names get broken due to bad overflow [3999](https://github.com/zammad/zammad/issues/3999) [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[knowledge base](https://github.com/zammad/zammad/labels/knowledge%20base)]
- Overviews are not shown if `group_by` is used with a tree select attribute [4004](https://github.com/zammad/zammad/issues/4004) [[bug](https://github.com/zammad/zammad/labels/bug)] [[blocker](https://github.com/zammad/zammad/labels/blocker)] [[overviews](https://github.com/zammad/zammad/labels/overviews)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[regression](https://github.com/zammad/zammad/labels/regression)]
- Unable to upgrade to Zammad 5.1 [4000](https://github.com/zammad/zammad/issues/4000) [[bug](https://github.com/zammad/zammad/labels/bug)]
- Select field in bulk operations out of view port [3995](https://github.com/zammad/zammad/issues/3995) [[bug](https://github.com/zammad/zammad/labels/bug)] [[blocker](https://github.com/zammad/zammad/labels/blocker)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[overviews](https://github.com/zammad/zammad/labels/overviews)]
- No longer public KB answers do not return http 404 [3915](https://github.com/zammad/zammad/issues/3915) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[knowledge base](https://github.com/zammad/zammad/labels/knowledge%20base)]
- Selecting custom ports for mail channel ends in 'host not reachable' [3964](https://github.com/zammad/zammad/issues/3964) [[bug](https://github.com/zammad/zammad/labels/bug)] [[blocker](https://github.com/zammad/zammad/labels/blocker)] [[channel](https://github.com/zammad/zammad/labels/channel)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Draft Sharing: Draft stays after new ticket creation [3981](https://github.com/zammad/zammad/issues/3981) [[bug](https://github.com/zammad/zammad/labels/bug)] [[question](https://github.com/zammad/zammad/labels/question)] [[blocker](https://github.com/zammad/zammad/labels/blocker)] [[draft sharing](https://github.com/zammad/zammad/labels/draft%20sharing)]
- Modal backdrop not covering some UI parts [3974](https://github.com/zammad/zammad/issues/3974) [[bug](https://github.com/zammad/zammad/labels/bug)] [[blocker](https://github.com/zammad/zammad/labels/blocker)]
- KB: Roles are displayed twice in permission dialog [3977](https://github.com/zammad/zammad/issues/3977) [[bug](https://github.com/zammad/zammad/labels/bug)] [[blocker](https://github.com/zammad/zammad/labels/blocker)] [[knowledge base](https://github.com/zammad/zammad/labels/knowledge%20base)]
- KB: Unpermitted categories are displayed after browsing [3978](https://github.com/zammad/zammad/issues/3978) [[bug](https://github.com/zammad/zammad/labels/bug)] [[blocker](https://github.com/zammad/zammad/labels/blocker)] [[knowledge base](https://github.com/zammad/zammad/labels/knowledge%20base)]
- Frequent “Lost connection to MySQL server during query” errors resulting in client-side Error 500 [3969](https://github.com/zammad/zammad/issues/3969) [[bug](https://github.com/zammad/zammad/labels/bug)]
- Not translated text with forwarding e-mails [3920](https://github.com/zammad/zammad/issues/3920) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- S/MIME function buttons no longer working in tickets [3957](https://github.com/zammad/zammad/issues/3957) [[bug](https://github.com/zammad/zammad/labels/bug)] [[blocker](https://github.com/zammad/zammad/labels/blocker)]
- Migration of the MS365 account fails by upper and lower case differences in email address [3956](https://github.com/zammad/zammad/issues/3956) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Opening organization views throws console traces [3958](https://github.com/zammad/zammad/issues/3958) [[bug](https://github.com/zammad/zammad/labels/bug)] [[blocker](https://github.com/zammad/zammad/labels/blocker)]
- Elasticsearch-Rebuild does not index from new to old [3955](https://github.com/zammad/zammad/issues/3955) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Can not chose SSL yes and port 143 when setting up mail account [3921](https://github.com/zammad/zammad/issues/3921) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Uncaught TypeError in ticket zoom highlighter [3950](https://github.com/zammad/zammad/issues/3950)
- New online notifications blocks data privacy user deletion [3942](https://github.com/zammad/zammad/issues/3942) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[data privacy](https://github.com/zammad/zammad/labels/data%20privacy)]
- Multiselects shows wrong display values in overviews [3944](https://github.com/zammad/zammad/issues/3944) [[bug](https://github.com/zammad/zammad/labels/bug)] [[overviews](https://github.com/zammad/zammad/labels/overviews)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- dead lock on user update in high load environment [3940](https://github.com/zammad/zammad/issues/3940) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Zammad UI should silently discard Cache / apply2file errors [3685](https://github.com/zammad/zammad/issues/3685) [[bug](https://github.com/zammad/zammad/labels/bug)] [[waiting for feedback](https://github.com/zammad/zammad/labels/waiting%20for%20feedback)] [[can't reproduce](https://github.com/zammad/zammad/labels/can%27t%20reproduce)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Startup of Zammad does not synchronize the custom branding logo [3933](https://github.com/zammad/zammad/issues/3933) [[bug](https://github.com/zammad/zammad/labels/bug)] [[regression](https://github.com/zammad/zammad/labels/regression)]
- Postgresql Backup & Restore failing on default package installations [3865](https://github.com/zammad/zammad/issues/3865) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Multiselect field support [3917](https://github.com/zammad/zammad/issues/3917) [[feature backlog](https://github.com/zammad/zammad/labels/feature%20backlog)] [[API](https://github.com/zammad/zammad/labels/API)] [[admin area](https://github.com/zammad/zammad/labels/admin%20area)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[form](https://github.com/zammad/zammad/labels/form)]
- JS error on editing textareas admin object manager attributes [3889](https://github.com/zammad/zammad/issues/3889) [[bug](https://github.com/zammad/zammad/labels/bug)] [[admin area](https://github.com/zammad/zammad/labels/admin%20area)] [[object manager attribute](https://github.com/zammad/zammad/labels/object%20manager%20attribute)]
- Various translation fixes [3918](https://github.com/zammad/zammad/pull/3918)
- Make form style for `customer`-input consistent [3886](https://github.com/zammad/zammad/pull/3886) [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)]
- Wrong size for textareas in triggers and core workflow [3909](https://github.com/zammad/zammad/issues/3909) [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[trigger](https://github.com/zammad/zammad/labels/trigger)] [[core workflows](https://github.com/zammad/zammad/labels/core%20workflows)]
- Placetel API v1 EOL within January 2022 [3910](https://github.com/zammad/zammad/issues/3910) [[bug](https://github.com/zammad/zammad/labels/bug)] [[blocker](https://github.com/zammad/zammad/labels/blocker)] [[third party issue](https://github.com/zammad/zammad/labels/third%20party%20issue)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Freshdesk import ends up in Zammad interface without navigation [3879](https://github.com/zammad/zammad/issues/3879) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[import](https://github.com/zammad/zammad/labels/import)]
- Changing ticket status from "new" to any other status always results in uncommited status "closed" [3880](https://github.com/zammad/zammad/issues/3880) [[bug](https://github.com/zammad/zammad/labels/bug)] [[can't reproduce](https://github.com/zammad/zammad/labels/can%27t%20reproduce)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[core workflows](https://github.com/zammad/zammad/labels/core%20workflows)]
- Usage of freshdesk import without freshdesk admin permission leads to an unstable system/missing data [3905](https://github.com/zammad/zammad/issues/3905) [[bug](https://github.com/zammad/zammad/labels/bug)] [[import](https://github.com/zammad/zammad/labels/import)]
- Deactivation of signature does not clear it from groups [3129](https://github.com/zammad/zammad/issues/3129) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)]
- Ticket object does not get a rollback after failing bulk action [3817](https://github.com/zammad/zammad/issues/3817) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[bulk](https://github.com/zammad/zammad/labels/bulk)]
- `/assets/fonts/` changed to `/fonts/` [3892](https://github.com/zammad/zammad/issues/3892) [[bug](https://github.com/zammad/zammad/labels/bug)] [[blocker](https://github.com/zammad/zammad/labels/blocker)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Search is not triggered/updated if url of search is updated new search item or new search is triggered via global search [3873](https://github.com/zammad/zammad/issues/3873) [[bug](https://github.com/zammad/zammad/labels/bug)]
- Overview select fields are sorted by key [3869](https://github.com/zammad/zammad/issues/3869) [[bug](https://github.com/zammad/zammad/labels/bug)] [[overviews](https://github.com/zammad/zammad/labels/overviews)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Text rendering does not work for e-mails (no new lines) received in Zammad [3870](https://github.com/zammad/zammad/issues/3870) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[regression](https://github.com/zammad/zammad/labels/regression)]
- Zammad 5 mail template double signature [3816](https://github.com/zammad/zammad/issues/3816) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Missing ticket updates on high load in MariaDB/MySQL environments [3877](https://github.com/zammad/zammad/issues/3877) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- API creates empty tickets without articles if data is missing [2421](https://github.com/zammad/zammad/issues/2421) [[bug](https://github.com/zammad/zammad/labels/bug)] [[API](https://github.com/zammad/zammad/labels/API)] [[ticket](https://github.com/zammad/zammad/labels/ticket)]
- Wrong SLA is used (alphabetical order is ignored) [3871](https://github.com/zammad/zammad/issues/3871) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[regression](https://github.com/zammad/zammad/labels/regression)]
- Provide meaningful modal if report profile tries to use dates out side the filtered date range [3616](https://github.com/zammad/zammad/issues/3616) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[reporting](https://github.com/zammad/zammad/labels/reporting)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Till label not assigned to corresponding input fields in calendar edit view [3793](https://github.com/zammad/zammad/issues/3793) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[frontend / JS app](https://github.com/zammad/zammad/labels/frontend%20%2F%20JS%20app)]
- Date of datepicker is not localized [3866](https://github.com/zammad/zammad/issues/3866) [[bug](https://github.com/zammad/zammad/labels/bug)]
- Simple quote characters (`'`) not properly displayed [3846](https://github.com/zammad/zammad/issues/3846) [[bug](https://github.com/zammad/zammad/labels/bug)] [[frontend / JS app](https://github.com/zammad/zammad/labels/frontend%20%2F%20JS%20app)]
- Remove api user and password for sipgate integration [3848](https://github.com/zammad/zammad/issues/3848) [[bug](https://github.com/zammad/zammad/labels/bug)] [[admin area](https://github.com/zammad/zammad/labels/admin%20area)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- No signature on new ticket if email is default message type [3844](https://github.com/zammad/zammad/issues/3844) [[bug](https://github.com/zammad/zammad/labels/bug)]
- Forwarding no longer possible for email and web articles [3855](https://github.com/zammad/zammad/issues/3855) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[regression](https://github.com/zammad/zammad/labels/regression)]
- Default values of new group dialog is different in german vs. english [3851](https://github.com/zammad/zammad/issues/3851) [[bug](https://github.com/zammad/zammad/labels/bug)]
- If no date is set the UI show it's shown as NaN.NaN.NaN. [3850](https://github.com/zammad/zammad/issues/3850) [[bug](https://github.com/zammad/zammad/labels/bug)]
- Number of to show caller log entries is inconsistent setting wise [3852](https://github.com/zammad/zammad/issues/3852) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[admin area](https://github.com/zammad/zammad/labels/admin%20area)] [[integration](https://github.com/zammad/zammad/labels/integration)]
- "Is required" untranslatable [2709](https://github.com/zammad/zammad/issues/2709) [[translation](https://github.com/zammad/zammad/labels/translation)]
- Profile out of office toasters untranslatable [2666](https://github.com/zammad/zammad/issues/2666) [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[translation](https://github.com/zammad/zammad/labels/translation)]
- obsolete / double translations [2665](https://github.com/zammad/zammad/issues/2665) [[translation](https://github.com/zammad/zammad/labels/translation)]
- Missing translation for insufficient permissions for <object> [3275](https://github.com/zammad/zammad/issues/3275) [[translation](https://github.com/zammad/zammad/labels/translation)] [[ticket](https://github.com/zammad/zammad/labels/ticket)]
- Reply all: Duplicate email on changing recipient and cc in a certain way [3825](https://github.com/zammad/zammad/issues/3825) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Email address not shown inside forwarded email [3824](https://github.com/zammad/zammad/issues/3824) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Removing calendars via UI and API does not check for references [3845](https://github.com/zammad/zammad/issues/3845) [[bug](https://github.com/zammad/zammad/labels/bug)] [[blocker](https://github.com/zammad/zammad/labels/blocker)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[escalation logic](https://github.com/zammad/zammad/labels/escalation%20logic)]
- Removing tags from tickets return HTTP 201 [3842](https://github.com/zammad/zammad/issues/3842) [[bug](https://github.com/zammad/zammad/labels/bug)] [[API](https://github.com/zammad/zammad/labels/API)]
- Wrong escalation update time in admin interface is shown [3837](https://github.com/zammad/zammad/issues/3837) [[bug](https://github.com/zammad/zammad/labels/bug)]
- Zammad returns stack error when one tries to remove groups via API [3841](https://github.com/zammad/zammad/issues/3841) [[bug](https://github.com/zammad/zammad/labels/bug)] [[API](https://github.com/zammad/zammad/labels/API)]
- Zammad ignores relative GitLab URLs [3830](https://github.com/zammad/zammad/issues/3830) [[bug](https://github.com/zammad/zammad/labels/bug)] [[integration](https://github.com/zammad/zammad/labels/integration)]
- Ticket zoom will loose attachments on rerender [3831](https://github.com/zammad/zammad/issues/3831) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Invalid group and owner list for tickets created via customer profile [3835](https://github.com/zammad/zammad/issues/3835) [[bug](https://github.com/zammad/zammad/labels/bug)] [[core workflows](https://github.com/zammad/zammad/labels/core%20workflows)]
- Package installation creates database.yml as `root` and thus breaks the installation until next update [3834](https://github.com/zammad/zammad/issues/3834) [[bug](https://github.com/zammad/zammad/labels/bug)] [[blocker](https://github.com/zammad/zammad/labels/blocker)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[regression](https://github.com/zammad/zammad/labels/regression)]
- Ticket create screen will loose attachments by time [3827](https://github.com/zammad/zammad/issues/3827) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Zammad database credentials are world-readable [3828](https://github.com/zammad/zammad/issues/3828) [[bug](https://github.com/zammad/zammad/labels/bug)]
- If selected value is not part of the restriction of set_fixed_to it should recalculate it with the new value [3822](https://github.com/zammad/zammad/issues/3822) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Update time SLAs escalates tickets with agent response [3140](https://github.com/zammad/zammad/issues/3140) [[bug](https://github.com/zammad/zammad/labels/bug)] [[escalation logic](https://github.com/zammad/zammad/labels/escalation%20logic)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Allow `position` to determine an attributes position entirely [3594](https://github.com/zammad/zammad/issues/3594) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[object manager attribute](https://github.com/zammad/zammad/labels/object%20manager%20attribute)] [[specification required](https://github.com/zammad/zammad/labels/specification%20required)]
- Not displayed fields should not impact the edit screen [3819](https://github.com/zammad/zammad/issues/3819) [[bug](https://github.com/zammad/zammad/labels/bug)] [[core workflows](https://github.com/zammad/zammad/labels/core%20workflows)]
- When looking for customers, it is no longer possible to change into organizations [3815](https://github.com/zammad/zammad/issues/3815) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)]
- Default Priority on ticket creation not changeable [2852](https://github.com/zammad/zammad/issues/2852) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[ticket](https://github.com/zammad/zammad/labels/ticket)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[:construction: refactoring :construction:](https://github.com/zammad/zammad/labels/%3Aconstruction%3A%20refactoring%20%3Aconstruction%3A)]
- When quoting, no breakout from div container possible [3094](https://github.com/zammad/zammad/issues/3094) [[bug](https://github.com/zammad/zammad/labels/bug)] [[ticket](https://github.com/zammad/zammad/labels/ticket)]
- Quoting not working cleanly, if content gets too much [2334](https://github.com/zammad/zammad/issues/2334) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[ticket](https://github.com/zammad/zammad/labels/ticket)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Owner should get cleared if not listed in changed group [3818](https://github.com/zammad/zammad/issues/3818) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[core workflows](https://github.com/zammad/zammad/labels/core%20workflows)]
- Custom date and datetime attributes are filled with dates on creation of tickets/users after update from 4.1 to 5.x [3810](https://github.com/zammad/zammad/issues/3810) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- ActionController::UnknownHttpMethod FRAGE [3807](https://github.com/zammad/zammad/issues/3807) [[bug](https://github.com/zammad/zammad/labels/bug)] [[blocker](https://github.com/zammad/zammad/labels/blocker)] [[overviews](https://github.com/zammad/zammad/labels/overviews)] [[macros](https://github.com/zammad/zammad/labels/macros)]
- [REVIEW] Fix/trigger variables missing [3225](https://github.com/zammad/zammad/pull/3225)
- Adding private keys allows adding certificates [3727](https://github.com/zammad/zammad/issues/3727) [[bug](https://github.com/zammad/zammad/labels/bug)]
- Agent role permissions are ignored when there is only a single group [3437](https://github.com/zammad/zammad/issues/3437) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)]
- Remote change of the group id does show it falsly as user change and not render the new value to the ticket [3801](https://github.com/zammad/zammad/issues/3801) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[core workflows](https://github.com/zammad/zammad/labels/core%20workflows)]
- Able to create custom fields for existing relation (e. g. ticket.state) - will lead to non bootable Zammad [3811](https://github.com/zammad/zammad/issues/3811) [[bug](https://github.com/zammad/zammad/labels/bug)] [[regression](https://github.com/zammad/zammad/labels/regression)]
- Ticket owner selection is not updated if owner selection should be empty [3809](https://github.com/zammad/zammad/issues/3809) [[bug](https://github.com/zammad/zammad/labels/bug)] [[core workflows](https://github.com/zammad/zammad/labels/core%20workflows)]
- Job scheduling respects time zone [3802](https://github.com/zammad/zammad/issues/3802) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Chat can't be closed after timeout [2471](https://github.com/zammad/zammad/issues/2471) [[bug](https://github.com/zammad/zammad/labels/bug)] [[chat](https://github.com/zammad/zammad/labels/chat)]
- Support workflow mechanism to do pending reminder state hide pending time use case [3790](https://github.com/zammad/zammad/issues/3790) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Cache.clear in postinstall.sh throws ugly errors on fresh installations [3808](https://github.com/zammad/zammad/issues/3808) [[bug](https://github.com/zammad/zammad/labels/bug)] [[blocker](https://github.com/zammad/zammad/labels/blocker)] [[regression](https://github.com/zammad/zammad/labels/regression)]
- OS package upgrade fails (activity_stream_object_id) [3797](https://github.com/zammad/zammad/issues/3797) [[bug](https://github.com/zammad/zammad/labels/bug)]
- Simple quote characters (`'`) not properly displayed [3733](https://github.com/zammad/zammad/issues/3733) [[bug](https://github.com/zammad/zammad/labels/bug)] [[frontend / JS app](https://github.com/zammad/zammad/labels/frontend%20%2F%20JS%20app)]
- Example payload in webhook view leads to 500 error [3794](https://github.com/zammad/zammad/issues/3794) [[bug](https://github.com/zammad/zammad/labels/bug)] [[regression](https://github.com/zammad/zammad/labels/regression)]
- Sort order group_by broken (alphabetical) [3800](https://github.com/zammad/zammad/issues/3800) [[bug](https://github.com/zammad/zammad/labels/bug)] [[overviews](https://github.com/zammad/zammad/labels/overviews)] [[regression](https://github.com/zammad/zammad/labels/regression)]
- Bug Report 4.1.x Overview Sort - Grouped by user [3737](https://github.com/zammad/zammad/issues/3737) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[overviews](https://github.com/zammad/zammad/labels/overviews)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[regression](https://github.com/zammad/zammad/labels/regression)]
- Article box opening on tickets with no changes [3789](https://github.com/zammad/zammad/issues/3789) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)]
- UploadCacheCleanupJob does not execute [3787](https://github.com/zammad/zammad/issues/3787) [[bug](https://github.com/zammad/zammad/labels/bug)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- lib/fill_db.rb fails to work in production environments [3788](https://github.com/zammad/zammad/issues/3788) [[bug](https://github.com/zammad/zammad/labels/bug)]
- Usage of inactive object attributes in SLAs will crash admin SLA interface [3769](https://github.com/zammad/zammad/issues/3769) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Inconstant alignment in the listing of attachments/submit button in new article area [3773](https://github.com/zammad/zammad/issues/3773) [[bug](https://github.com/zammad/zammad/labels/bug)]
- Broken dialog whiling uploading oversized attachment [3774](https://github.com/zammad/zammad/issues/3774) [[bug](https://github.com/zammad/zammad/labels/bug)]
- Improve contrasts in answer search for articles [3783](https://github.com/zammad/zammad/issues/3783) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[knowledge base](https://github.com/zammad/zammad/labels/knowledge%20base)]
- escaped 'Set fixed' workflows don't refresh set values on active ticket sessions [3757](https://github.com/zammad/zammad/issues/3757) [[bug](https://github.com/zammad/zammad/labels/bug)] [[core workflows](https://github.com/zammad/zammad/labels/core%20workflows)]
- ObjectManager Attribute without screen attribute causes CoreWorkflows migration to fail [3781](https://github.com/zammad/zammad/issues/3781) [[bug](https://github.com/zammad/zammad/labels/bug)] [[migration / update](https://github.com/zammad/zammad/labels/migration%20%2F%20update)]
- Force users to reload after system migration [3776](https://github.com/zammad/zammad/issues/3776) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)]
- Zammad preflight check warning output causes Syntax-Error in postinstall.sh and failing installation [2674](https://github.com/zammad/zammad/issues/2674) [[bug](https://github.com/zammad/zammad/labels/bug)] [[migration / update](https://github.com/zammad/zammad/labels/migration%20%2F%20update)]
- Fix postinstall.sh getting es_url [3775](https://github.com/zammad/zammad/pull/3775)
- Shared organization issue (Create your first ticket) [2780](https://github.com/zammad/zammad/issues/2780) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[ticket](https://github.com/zammad/zammad/labels/ticket)]
- [BUG] miss spell in db/migrate/20210923172256_issue_2619_kb_header_link_color.rb [3777](https://github.com/zammad/zammad/issues/3777) [[bug](https://github.com/zammad/zammad/labels/bug)] [[blocker](https://github.com/zammad/zammad/labels/blocker)] [[migration / update](https://github.com/zammad/zammad/labels/migration%20%2F%20update)]
- Unable to cancel attachment upload [2351](https://github.com/zammad/zammad/issues/2351) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)]
- KB header and footer link-color not changeable [2619](https://github.com/zammad/zammad/issues/2619) [[prioritised by payment](https://github.com/zammad/zammad/labels/prioritised%20by%20payment)] [[knowledge base](https://github.com/zammad/zammad/labels/knowledge%20base)] [[specification required](https://github.com/zammad/zammad/labels/specification%20required)] [[theming / skinning](https://github.com/zammad/zammad/labels/theming%20%2F%20skinning)]
- Syntax errors break scheduler job for good [3028](https://github.com/zammad/zammad/issues/3028) [[bug](https://github.com/zammad/zammad/labels/bug)]
- Existing tickets: New article modal with padding-left: 0; padding-right: 0; [3772](https://github.com/zammad/zammad/issues/3772) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[regression](https://github.com/zammad/zammad/labels/regression)]
- Fix polish translations [3760](https://github.com/zammad/zammad/pull/3760)
- Possible race condition causing OTRS import to fail [3765](https://github.com/zammad/zammad/issues/3765) [[bug](https://github.com/zammad/zammad/labels/bug)] [[import](https://github.com/zammad/zammad/labels/import)]
- Incorrect alignment in the listing of attachments when creating a ticket [3746](https://github.com/zammad/zammad/issues/3746) [[bug](https://github.com/zammad/zammad/labels/bug)]
- Saved conditions break on selections without reloading [3758](https://github.com/zammad/zammad/issues/3758) [[bug](https://github.com/zammad/zammad/labels/bug)] [[core workflows](https://github.com/zammad/zammad/labels/core%20workflows)]
- Misleading view of user icons which are on vacation and disabled [3075](https://github.com/zammad/zammad/issues/3075) [[bug](https://github.com/zammad/zammad/labels/bug)] [[UX/UI](https://github.com/zammad/zammad/labels/UX%2FUI)] [[ticket](https://github.com/zammad/zammad/labels/ticket)]

27
Gemfile
View file

@ -1,9 +1,9 @@
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
source 'https://rubygems.org'
source 'https://gems.sutty.nl'
# core - base
ruby '2.7.4'
ruby '2.7.5'
gem 'rails', '~> 6.0.0'
# core - rails additions
@ -94,6 +94,9 @@ gem 'omniauth-saml'
gem 'omniauth-twitter'
gem 'omniauth-weibo-oauth2'
# Rate limiting
gem 'rack-attack'
# channels
gem 'gmail_xoauth'
gem 'koala'
@ -149,14 +152,17 @@ gem 'viewpoint', require: false
# integrations - S/MIME
gem 'openssl'
gem 'lograge'
# Translation sync
gem 'PoParser', require: false
# Gems used only for develop/test and not required
# in production environments by default.
group :development, :test do
# app boottime improvement
gem 'spring'
gem 'spring-commands-rspec'
gem 'spring-commands-testunit'
# debugging
gem 'byebug'
@ -168,17 +174,13 @@ group :development, :test do
# test frameworks
gem 'rails-controller-testing'
gem 'rspec-rails'
gem 'rspec-retry'
gem 'shoulda-matchers'
gem 'test-unit'
# for testing Pundit authorisation policies in RSpec
gem 'pundit-matchers'
# code coverage
gem 'coveralls', require: false
gem 'simplecov'
gem 'simplecov-rcov'
# UI tests w/ Selenium
gem 'capybara'
gem 'selenium-webdriver'
@ -203,9 +205,6 @@ group :development, :test do
gem 'rubocop-rails'
gem 'rubocop-rspec'
# changelog generation
gem 'github_changelog_generator'
# generate random test data
gem 'factory_bot_rails'
gem 'faker'
@ -236,5 +235,5 @@ end
# without having your changes overwritten during upgrades.)
# ZAMMAD DEVS: Consult the internal wiki
# (or else risk pushing unwanted changes to Gemfile.lock!)
# https://git.znuny.com/zammad/zammad/wikis/Tips#user-content-customizing-the-gemfile
# https://git.zammad.com/zammad/zammad/wikis/Tips#user-content-customizing-the-gemfile
eval_gemfile 'Gemfile.local' if File.exist?('Gemfile.local')

View file

@ -17,70 +17,72 @@ GIT
mini_mime (>= 0.1.1)
GEM
remote: https://rubygems.org/
remote: https://gems.sutty.nl/
specs:
PoParser (3.2.6)
simple_po_parser (~> 1.1.6)
aasm (5.2.0)
concurrent-ruby (~> 1.0)
actioncable (6.0.4.1)
actionpack (= 6.0.4.1)
actioncable (6.0.4.8)
actionpack (= 6.0.4.8)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailbox (6.0.4.1)
actionpack (= 6.0.4.1)
activejob (= 6.0.4.1)
activerecord (= 6.0.4.1)
activestorage (= 6.0.4.1)
activesupport (= 6.0.4.1)
actionmailbox (6.0.4.8)
actionpack (= 6.0.4.8)
activejob (= 6.0.4.8)
activerecord (= 6.0.4.8)
activestorage (= 6.0.4.8)
activesupport (= 6.0.4.8)
mail (>= 2.7.1)
actionmailer (6.0.4.1)
actionpack (= 6.0.4.1)
actionview (= 6.0.4.1)
activejob (= 6.0.4.1)
actionmailer (6.0.4.8)
actionpack (= 6.0.4.8)
actionview (= 6.0.4.8)
activejob (= 6.0.4.8)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (6.0.4.1)
actionview (= 6.0.4.1)
activesupport (= 6.0.4.1)
actionpack (6.0.4.8)
actionview (= 6.0.4.8)
activesupport (= 6.0.4.8)
rack (~> 2.0, >= 2.0.8)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
actiontext (6.0.4.1)
actionpack (= 6.0.4.1)
activerecord (= 6.0.4.1)
activestorage (= 6.0.4.1)
activesupport (= 6.0.4.1)
actiontext (6.0.4.8)
actionpack (= 6.0.4.8)
activerecord (= 6.0.4.8)
activestorage (= 6.0.4.8)
activesupport (= 6.0.4.8)
nokogiri (>= 1.8.5)
actionview (6.0.4.1)
activesupport (= 6.0.4.1)
actionview (6.0.4.8)
activesupport (= 6.0.4.8)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.1, >= 1.2.0)
activejob (6.0.4.1)
activesupport (= 6.0.4.1)
activejob (6.0.4.8)
activesupport (= 6.0.4.8)
globalid (>= 0.3.6)
activemodel (6.0.4.1)
activesupport (= 6.0.4.1)
activerecord (6.0.4.1)
activemodel (= 6.0.4.1)
activesupport (= 6.0.4.1)
activerecord-import (1.2.0)
activerecord (>= 3.2)
activerecord-nulldb-adapter (0.7.0)
activerecord (>= 5.2.0, < 6.3)
activemodel (6.0.4.8)
activesupport (= 6.0.4.8)
activerecord (6.0.4.8)
activemodel (= 6.0.4.8)
activesupport (= 6.0.4.8)
activerecord-import (1.3.0)
activerecord (>= 4.2)
activerecord-nulldb-adapter (0.8.0)
activerecord (>= 5.2.0, < 7.1)
activerecord-session_store (2.0.0)
actionpack (>= 5.2.4.1)
activerecord (>= 5.2.4.1)
multi_json (~> 1.11, >= 1.11.2)
rack (>= 2.0.8, < 3)
railties (>= 5.2.4.1)
activestorage (6.0.4.1)
actionpack (= 6.0.4.1)
activejob (= 6.0.4.1)
activerecord (= 6.0.4.1)
activestorage (6.0.4.8)
actionpack (= 6.0.4.8)
activejob (= 6.0.4.8)
activerecord (= 6.0.4.8)
marcel (~> 1.0.0)
activesupport (6.0.4.1)
activesupport (6.0.4.8)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
@ -93,48 +95,37 @@ GEM
argon2 (2.1.1)
ffi (~> 1.14)
ffi-compiler (~> 1.0)
argon2 (2.1.1-x86_64-linux-musl)
ffi (~> 1.14)
ffi-compiler (~> 1.0)
ast (2.4.2)
async (1.30.1)
console (~> 1.10)
nio4r (~> 2.3)
timers (~> 4.1)
async-http (0.56.5)
async (>= 1.25)
async-io (>= 1.28)
async-pool (>= 0.2)
protocol-http (~> 0.22.0)
protocol-http1 (~> 0.14.0)
protocol-http2 (~> 0.14.0)
async-http-faraday (0.11.0)
async-http (~> 0.42)
faraday
async-io (1.32.2)
async
async-pool (0.3.9)
async (>= 1.25)
autoprefixer-rails (10.3.3.0)
autoprefixer-rails (10.4.2.0)
execjs (~> 2)
binding_of_caller (1.0.0)
debug_inspector (>= 0.0.1)
biz (1.8.2)
clavius (~> 1.0)
tzinfo
bootsnap (1.9.1)
msgpack (~> 1.0)
brakeman (5.1.1)
bootsnap (1.11.1)
msgpack (~> 1.2)
bootsnap (1.11.1-x86_64-linux-musl)
msgpack (~> 1.2)
brakeman (5.2.1)
browser (5.3.1)
buftok (0.2.0)
builder (3.2.4)
byebug (11.1.3)
capybara (3.35.3)
byebug (11.1.3-x86_64-linux-musl)
capybara (3.36.0)
addressable
matrix
mini_mime (>= 0.1.3)
nokogiri (~> 1.8)
rack (>= 1.6.0)
rack-test (>= 0.6.3)
regexp_parser (>= 1.5, < 3.0)
xpath (~> 3.2)
childprocess (3.0.0)
childprocess (4.1.0)
chunky_png (1.4.0)
clavius (1.0.4)
clearbit (0.3.3)
@ -153,32 +144,24 @@ GEM
json
composite_primary_keys (12.0.10)
activerecord (~> 6.0.0)
concurrent-ruby (1.1.9)
console (1.13.1)
fiber-local
coveralls (0.7.1)
multi_json (~> 1.3)
rest-client
simplecov (>= 0.7)
term-ansicolor
thor
concurrent-ruby (1.1.10)
crack (0.4.5)
rexml
crass (1.0.6)
csv (3.2.0)
csv (3.2.2)
daemons (1.4.1)
dalli (2.7.11)
dalli (3.2.1)
debug_inspector (1.1.0)
delayed_job (4.1.9)
activesupport (>= 3.0, < 6.2)
delayed_job_active_record (4.1.6)
activerecord (>= 3.0, < 6.2)
debug_inspector (1.1.0-x86_64-linux-musl)
delayed_job (4.1.10)
activesupport (>= 3.0, < 8.0)
delayed_job_active_record (4.1.7)
activerecord (>= 3.0, < 8.0)
delayed_job (>= 3.0, < 5)
deprecation_toolkit (1.5.1)
activesupport (>= 4.2)
diff-lcs (1.4.4)
diff-lcs (1.5.0)
diffy (3.4.0)
docile (1.4.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
doorkeeper (5.5.4)
@ -189,60 +172,54 @@ GEM
eco-source
execjs
eco-source (1.1.0.rc.1)
em-websocket (0.5.2)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
http_parser.rb (~> 0)
equalizer (0.0.11)
erubi (1.10.0)
eventmachine (1.2.7)
eventmachine (1.2.7-x86_64-linux-musl)
execjs (2.8.1)
factory_bot (6.2.0)
factory_bot (6.2.1)
activesupport (>= 5.0.0)
factory_bot_rails (6.2.0)
factory_bot (~> 6.2.0)
railties (>= 5.0.0)
faker (2.19.0)
i18n (>= 1.6, < 2)
faraday (1.8.0)
faker (2.20.0)
i18n (>= 1.8.11, < 2)
faraday (1.10.0)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0.1)
faraday-httpclient (~> 1.0)
faraday-multipart (~> 1.0)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.1)
faraday-net_http_persistent (~> 1.0)
faraday-patron (~> 1.0)
faraday-rack (~> 1.0)
multipart-post (>= 1.2, < 3)
faraday-retry (~> 1.0)
ruby2_keywords (>= 0.0.4)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-http-cache (2.2.0)
faraday (>= 0.8)
faraday-httpclient (1.0.1)
faraday-multipart (1.0.3)
multipart-post (>= 1.2, < 3)
faraday-net_http (1.0.1)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday_middleware (1.1.0)
faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday (~> 1.0)
ffi (1.15.4)
ffi (1.15.5)
ffi (1.15.5-x86_64-linux-musl)
ffi-compiler (1.0.1)
ffi (>= 1.0.0)
rake
fiber-local (1.0.0)
formatador (0.3.0)
github_changelog_generator (1.16.4)
activesupport
async (>= 1.25.0)
async-http-faraday
faraday-http-cache
multi_json
octokit (~> 4.6)
rainbow (>= 2.2.1)
rake (>= 10.0)
gli (2.20.1)
globalid (0.5.2)
formatador (1.1.0)
gli (2.21.0)
globalid (1.0.0)
activesupport (>= 5.0)
gmail_xoauth (0.4.2)
oauth (>= 0.3.6)
@ -265,8 +242,9 @@ GEM
guard
guard-compat (~> 1.1)
hashdiff (1.0.1)
hashie (4.1.0)
hashie (5.0.0)
hiredis (0.6.3)
hiredis (0.6.3-x86_64-linux-musl)
htmlentities (4.3.4)
http (4.4.1)
addressable (~> 2.3)
@ -279,83 +257,99 @@ GEM
http-form_data (2.3.0)
http-parser (1.2.3)
ffi-compiler (>= 1.0, < 2.0)
http-parser (1.2.3-x86_64-linux-musl)
ffi-compiler (>= 1.0, < 2.0)
http_parser.rb (0.6.0)
http_parser.rb (0.6.0-x86_64-linux-musl)
httpclient (2.8.3)
i18n (1.8.10)
i18n (1.10.0)
concurrent-ruby (~> 1.0)
icalendar (2.7.1)
ice_cube (~> 0.16)
icalendar-recurrence (1.1.3)
icalendar (~> 2.0)
ice_cube (~> 0.16)
ice_cube (0.16.3)
ice_cube (0.16.4)
inflection (1.0.0)
iniparse (1.5.0)
interception (0.5)
json (2.5.1)
json (2.6.1)
json (2.6.1-x86_64-linux-musl)
jwt (2.3.0)
kgio (2.11.4)
koala (3.0.0)
kgio (2.11.4-x86_64-linux-musl)
koala (3.1.0)
addressable
faraday
faraday (< 2)
json (>= 1.8)
rexml
libv8 (8.4.255.0)
listen (3.7.0)
libv8 (8.4.255.0-x86_64-linux)
listen (3.7.1)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
little-plugger (1.1.4)
logging (2.3.0)
little-plugger (~> 1.1)
multi_json (~> 1.14)
loofah (2.12.0)
lograge (0.12.0)
actionpack (>= 4)
activesupport (>= 4)
railties (>= 4)
request_store (~> 1.0)
loofah (2.16.0)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
lumberjack (1.2.8)
marcel (1.0.2)
matrix (0.4.2)
memoizable (0.4.2)
thread_safe (~> 0.3, >= 0.3.1)
messagebird-rest (3.0.0)
method_source (1.0.0)
mime-types (3.3.1)
mime-types (3.4.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2021.0901)
mini_mime (1.1.1)
mini_portile2 (2.6.1)
mime-types-data (3.2022.0105)
mini_mime (1.1.2)
mini_portile2 (2.8.0)
mini_racer (0.2.9)
libv8 (>= 6.9.411)
minitest (5.14.4)
msgpack (1.4.2)
minitest (5.15.0)
msgpack (1.4.5)
msgpack (1.4.5-x86_64-linux-musl)
multi_json (1.15.0)
multi_xml (0.6.0)
multipart-post (2.1.1)
mysql2 (0.5.3)
mysql2 (0.5.3-x86_64-linux-musl)
naught (1.1.0)
nenv (0.3.0)
nestful (1.1.4)
net-ldap (0.17.0)
netrc (0.11.0)
nio4r (2.5.8)
nokogiri (1.12.5)
mini_portile2 (~> 2.6.1)
nio4r (2.5.8-x86_64-linux-musl)
nokogiri (1.13.6)
mini_portile2 (~> 2.8.0)
racc (~> 1.4)
nokogiri (1.13.6-x86_64-linux-musl)
mini_portile2 (~> 2.8.0)
racc (~> 1.4)
nori (2.6.0)
notiffany (0.1.3)
nenv (~> 0.1)
shellany (~> 0.0)
oauth (0.5.6)
oauth2 (1.4.7)
faraday (>= 0.8, < 2.0)
oauth (0.5.8)
oauth2 (1.4.9)
faraday (>= 0.17.3, < 3.0)
jwt (>= 1.0, < 3.0)
multi_json (~> 1.3)
multi_xml (~> 0.5)
rack (>= 1.2, < 3)
octokit (4.21.0)
faraday (>= 0.9)
sawyer (~> 0.8.0, >= 0.5.3)
omniauth (1.9.1)
hashie (>= 3.4.6)
rack (>= 1.6.2, < 3)
omniauth-facebook (8.0.0)
omniauth-facebook (9.0.0)
omniauth-oauth2 (~> 1.2)
omniauth-github (1.4.0)
omniauth (~> 1.5)
@ -376,7 +370,7 @@ GEM
omniauth-oauth (1.2.0)
oauth
omniauth (>= 1.0, < 3)
omniauth-oauth2 (1.7.1)
omniauth-oauth2 (1.7.2)
oauth2 (~> 1.4)
omniauth (>= 1.9, < 3)
omniauth-rails_csrf_protection (0.1.2)
@ -391,23 +385,18 @@ GEM
omniauth-weibo-oauth2 (0.5.2)
omniauth (~> 1.5)
omniauth-oauth2 (>= 1.4.0)
openssl (2.2.0)
openssl (3.0.0)
openssl (3.0.0-x86_64-linux-musl)
overcommit (0.58.0)
childprocess (>= 0.6.3, < 5)
iniparse (~> 1.4)
rexml (~> 3.2)
parallel (1.21.0)
parser (3.0.2.0)
parser (3.1.1.0)
ast (~> 2.4.1)
pg (0.21.0)
pg (0.21.0-x86_64-linux-musl)
power_assert (2.0.1)
protocol-hpack (1.4.2)
protocol-http (0.22.5)
protocol-http1 (0.14.2)
protocol-http (~> 0.22)
protocol-http2 (0.14.2)
protocol-hpack (~> 1.4)
protocol-http (~> 0.18)
pry (0.14.1)
coderay (~> 1.1)
method_source (~> 1.0)
@ -423,32 +412,37 @@ GEM
binding_of_caller (~> 1.0)
pry (~> 0.13)
public_suffix (4.0.6)
puma (4.3.10)
puma (4.3.12)
nio4r (~> 2.0)
pundit (2.1.1)
puma (4.3.12-x86_64-linux-musl)
nio4r (~> 2.0)
pundit (2.2.0)
activesupport (>= 3.0.0)
pundit-matchers (1.7.0)
rspec-rails (>= 3.0.0)
racc (1.5.2)
rack (2.2.3)
racc (1.6.0)
racc (1.6.0-x86_64-linux-musl)
rack (2.2.3.1)
rack-attack (6.6.0)
rack (>= 1.0, < 3)
rack-livereload (0.3.17)
rack
rack-test (1.1.0)
rack (>= 1.0, < 3)
rails (6.0.4.1)
actioncable (= 6.0.4.1)
actionmailbox (= 6.0.4.1)
actionmailer (= 6.0.4.1)
actionpack (= 6.0.4.1)
actiontext (= 6.0.4.1)
actionview (= 6.0.4.1)
activejob (= 6.0.4.1)
activemodel (= 6.0.4.1)
activerecord (= 6.0.4.1)
activestorage (= 6.0.4.1)
activesupport (= 6.0.4.1)
rails (6.0.4.8)
actioncable (= 6.0.4.8)
actionmailbox (= 6.0.4.8)
actionmailer (= 6.0.4.8)
actionpack (= 6.0.4.8)
actiontext (= 6.0.4.8)
actionview (= 6.0.4.8)
activejob (= 6.0.4.8)
activemodel (= 6.0.4.8)
activerecord (= 6.0.4.8)
activestorage (= 6.0.4.8)
activesupport (= 6.0.4.8)
bundler (>= 1.3.0)
railties (= 6.0.4.1)
railties (= 6.0.4.8)
sprockets-rails (>= 2.0.0)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
@ -459,36 +453,39 @@ GEM
nokogiri (>= 1.6)
rails-html-sanitizer (1.4.2)
loofah (~> 2.3)
railties (6.0.4.1)
actionpack (= 6.0.4.1)
activesupport (= 6.0.4.1)
railties (6.0.4.8)
actionpack (= 6.0.4.8)
activesupport (= 6.0.4.8)
method_source
rake (>= 0.8.7)
thor (>= 0.20.3, < 2.0)
rainbow (3.0.0)
raindrops (0.19.2)
rainbow (3.1.1)
raindrops (0.20.0)
raindrops (0.20.0-x86_64-linux-musl)
rake (13.0.6)
rb-fsevent (0.11.0)
rb-fsevent (0.11.1)
rb-inotify (0.10.1)
ffi (~> 1.0)
rchardet (1.8.0)
redis (4.4.0)
regexp_parser (2.1.1)
redis (4.6.0)
regexp_parser (2.2.1)
request_store (1.5.1)
rack (>= 1.4)
rest-client (2.1.0)
http-accept (>= 1.7.0, < 2.0)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
netrc (~> 0.8)
rexml (3.2.5)
rspec-core (3.10.1)
rspec-support (~> 3.10.0)
rspec-expectations (3.10.1)
rspec-core (3.11.0)
rspec-support (~> 3.11.0)
rspec-expectations (3.11.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-mocks (3.10.2)
rspec-support (~> 3.11.0)
rspec-mocks (3.11.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-rails (5.0.2)
rspec-support (~> 3.11.0)
rspec-rails (5.1.1)
actionpack (>= 5.2)
activesupport (>= 5.2)
railties (>= 5.2)
@ -496,19 +493,22 @@ GEM
rspec-expectations (~> 3.10)
rspec-mocks (~> 3.10)
rspec-support (~> 3.10)
rspec-support (3.10.2)
rspec-retry (0.6.2)
rspec-core (> 3.3)
rspec-support (3.11.0)
rszr (0.5.2)
rubocop (1.22.1)
rszr (0.5.2-x86_64-linux-musl)
rubocop (1.26.0)
parallel (~> 1.10)
parser (>= 3.0.0.0)
parser (>= 3.1.0.0)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml
rubocop-ast (>= 1.12.0, < 2.0)
rubocop-ast (>= 1.16.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 3.0)
rubocop-ast (1.12.0)
parser (>= 3.0.1.1)
rubocop-ast (1.16.0)
parser (>= 3.1.1.0)
rubocop-faker (1.1.0)
faker (>= 2.12.0)
rubocop (>= 0.82.0)
@ -516,17 +516,17 @@ GEM
activesupport
rubocop
rubocop-rspec
rubocop-performance (1.11.5)
rubocop-performance (1.13.3)
rubocop (>= 1.7.0, < 2.0)
rubocop-ast (>= 0.4.0)
rubocop-rails (2.12.3)
rubocop-rails (2.13.2)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.7.0, < 2.0)
rubocop-rspec (2.5.0)
rubocop-rspec (2.9.0)
rubocop (~> 1.19)
ruby-progressbar (1.11.0)
ruby-saml (1.13.0)
ruby-saml (1.14.0)
nokogiri (>= 1.10.5)
rexml
ruby2_keywords (0.0.5)
@ -534,66 +534,49 @@ GEM
rubyzip (2.3.2)
sassc (2.4.0)
ffi (~> 1.9)
sassc (2.4.0-x86_64-linux-musl)
ffi (~> 1.9)
sassc-rails (2.1.2)
railties (>= 4.0.0)
sassc (>= 2.0)
sprockets (> 3.0)
sprockets-rails
tilt
sawyer (0.8.2)
addressable (>= 2.3.5)
faraday (> 0.8, < 2.0)
selenium-webdriver (3.142.7)
childprocess (>= 0.5, < 4.0)
selenium-webdriver (4.1.0)
childprocess (>= 0.5, < 5.0)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2)
shellany (0.0.1)
shoulda-matchers (5.0.0)
shoulda-matchers (5.1.0)
activesupport (>= 5.2.0)
simple_oauth (0.3.1)
simplecov (0.21.2)
docile (~> 1.1)
simplecov-html (~> 0.11)
simplecov_json_formatter (~> 0.1)
simplecov-html (0.12.3)
simplecov-rcov (0.2.3)
simplecov (>= 0.4.1)
simplecov_json_formatter (0.1.3)
simple_po_parser (1.1.6)
slack-notifier (2.4.0)
slack-ruby-client (0.17.0)
slack-ruby-client (1.0.0)
faraday (>= 1.0)
faraday_middleware
gli
hashie
websocket-driver
slop (3.6.0)
spring (3.0.0)
spring-commands-rspec (1.0.4)
spring (>= 0.9.1)
spring-commands-testunit (1.0.1)
spring (>= 0.9.1)
spring (4.0.0)
sprockets (3.7.2)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.2.2)
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets-rails (3.4.2)
actionpack (>= 5.2)
activesupport (>= 5.2)
sprockets (>= 3.0.0)
sync (0.5.0)
tcr (0.2.2)
telegramAPI (1.4.2)
rest-client (~> 2.0, >= 2.0.2)
telephone_number (1.4.12)
term-ansicolor (1.7.1)
tins (~> 1.0)
test-unit (3.4.7)
telephone_number (1.4.14)
test-unit (3.5.3)
power_assert
thor (1.1.0)
thor (1.2.1)
thread_safe (0.3.6)
tilt (2.0.10)
timers (4.3.3)
tins (1.29.1)
sync
twilio-ruby (5.59.0)
twilio-ruby (5.65.1)
faraday (>= 0.9, < 2.0)
jwt (>= 1.5, <= 2.5)
nokogiri (>= 1.6, < 2.0)
@ -615,14 +598,18 @@ GEM
unf (0.1.4)
unf_ext
unf_ext (0.0.8)
unf_ext (0.0.8-x86_64-linux-musl)
unicode-display_width (2.1.0)
unicorn (6.0.0)
unicorn (6.1.0)
kgio (~> 2.6)
raindrops (~> 0.7)
valid_email2 (4.0.0)
unicorn (6.1.0-x86_64-linux-musl)
kgio (~> 2.6)
raindrops (~> 0.7)
valid_email2 (4.0.3)
activemodel (>= 3.2)
mail (~> 2.5)
vcr (6.0.0)
vcr (6.1.0)
viewpoint (1.1.1)
httpclient
logging
@ -634,22 +621,26 @@ GEM
hashdiff (>= 0.4.0, < 2.0.0)
websocket-driver (0.7.5)
websocket-extensions (>= 0.1.0)
websocket-driver (0.7.5-x86_64-linux-musl)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
writeexcel (1.0.5)
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.4.2)
zendesk_api (1.33.0)
zeitwerk (2.5.4)
zendesk_api (1.35.0)
faraday (>= 0.9.0, < 2.0.0)
hashie (>= 3.5.2, < 5.0.0)
hashie (>= 3.5.2, < 6.0.0)
inflection
mini_mime
multipart-post (~> 2.0)
PLATFORMS
ruby
x86_64-linux-musl
DEPENDENCIES
PoParser
aasm
activerecord-import
activerecord-nulldb-adapter
@ -669,7 +660,6 @@ DEPENDENCIES
coffee-rails
coffeelint
composite_primary_keys
coveralls
csv
daemons
dalli
@ -684,7 +674,6 @@ DEPENDENCIES
execjs
factory_bot_rails
faker
github_changelog_generator
gmail_xoauth
guard
guard-livereload
@ -696,6 +685,7 @@ DEPENDENCIES
json
koala
libv8
lograge
mail!
messagebird-rest
mime-types
@ -723,6 +713,7 @@ DEPENDENCIES
puma (~> 4)
pundit
pundit-matchers
rack-attack
rack-livereload
rails (~> 6.0.0)
rails-controller-testing
@ -730,6 +721,7 @@ DEPENDENCIES
rchardet (>= 1.8.0)
redis
rspec-rails
rspec-retry
rszr (= 0.5.2)
rubocop
rubocop-faker
@ -740,13 +732,9 @@ DEPENDENCIES
sassc-rails
selenium-webdriver
shoulda-matchers
simplecov
simplecov-rcov
slack-notifier
slack-ruby-client
spring
spring-commands-rspec
spring-commands-testunit
sprockets (~> 3.7.2)
tcr
telegramAPI
@ -764,7 +752,7 @@ DEPENDENCIES
zendesk_api
RUBY VERSION
ruby 2.7.4p191
ruby 2.7.5p203
BUNDLED WITH
2.2.27
2.2.20

View file

@ -1,4 +1,4 @@
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
# A sample Guardfile
# More info at https://github.com/guard/guard#readme

149
Makefile Normal file
View file

@ -0,0 +1,149 @@
SHELL := /bin/bash
.DEFAULT_GOAL := help
# Copiar el archivo de configuración y avisar cuando hay que
# actualizarlo.
.env: .env.example
@test -f $@ || cp -v $< $@
@test -f $@ && echo "Revisa $@ para actualizarlo con respecto a $<"
@test -f $@ && diff -auN --color $@ $<
include .env
export
# XXX: El espacio antes del comentario cuenta como espacio
args ?=## Argumentos para Hain
commit ?= origin/rails## Commit desde el que actualizar
env ?= staging## Entorno del nodo delegado
sutty ?= $(SUTTY)## Dirección local
delegate ?= $(DELEGATE)## Cambia el nodo delegado
hain ?= $(HAINISH)## Ubicación de Hainish
# El nodo delegado tiene dos entornos, production y staging.
# Dependiendo del entorno que elijamos, se van a generar los assets y el
# contenedor y subirse a un servidor u otro. No utilizamos CI/CD (aún).
#
# Production es el entorno de panel.sutty.nl
ifeq ($(env),production)
container ?= sutty
## TODO: Cambiar a otra cosa
branch ?= rails
public ?= public
endif
# Staging es el entorno de panel.staging.sutty.nl
ifeq ($(env),staging)
container := staging
branch := staging
public := staging
endif
help: always ## Ayuda
@echo -e "Sutty\n" | sed -re "s/^.*/\x1B[38;5;197m&\x1B[0m/"
@echo -e "Servidor: https://panel.$(SUTTY_WITH_PORT)/\n"
@echo -e "Uso: make TAREA args=\"ARGUMENTOS\"\n"
@echo -e "Tareas:\n"
@grep -E "^[a-z\-]+:.*##" Makefile | sed -re "s/(.*):.*##(.*)/\1;\2/" | column -s ";" -t | sed -re "s/^([^ ]+) /\x1B[38;5;197m\1\x1B[0m/"
@echo -e "\nArgumentos:\n"
@grep -E "^[a-z\-]+ \?=.*##" Makefile | sed -re "s/(.*) \?=.*##(.*)/\1;\2/" | column -s ";" -t | sed -re "s/^([^ ]+) /\x1B[38;5;197m\1\x1B[0m/"
assets: node_modules public/packs/manifest.json.br ## Compilar los assets
test: always ## Ejecutar los tests
$(MAKE) rake args="test RAILS_ENV=test $(args)"
postgresql: /etc/hosts ## Iniciar la base de datos
pgrep postgres >/dev/null || $(hain) postgresql
serve-js: /etc/hosts node_modules ## Iniciar el servidor de desarrollo de Javascript
$(hain) 'bundle exec ./bin/webpack-dev-server'
serve: /etc/hosts postgresql Gemfile.lock ## Iniciar el servidor de desarrollo de Rails
$(MAKE) rails args=server
rails: ## Corre rails dentro del entorno de desarrollo (pasar argumentos con args=).
$(MAKE) bundle args="exec rails $(args)"
rake: ## Corre rake dentro del entorno de desarrollo (pasar argumentos con args=).
$(MAKE) bundle args="exec rake $(args)"
bundle: ## Corre bundle dentro del entorno de desarrollo (pasar argumentos con args=).
$(hain) 'bundle $(args)'
rubocop: ## Yutea el código que está por ser commiteado
git status --porcelain \
| grep -E "^(A|M)" \
| sed "s/^...//" \
| grep ".rb$$" \
| ../haini.sh/haini.sh "xargs -r ./bin/rubocop --auto-correct"
audit: ## Encuentra dependencias con vulnerabilidades
$(hain) 'gem install bundler-audit'
$(hain) 'bundle audit --update'
brakeman: ## Busca posibles vulnerabilidades en Sutty
$(MAKE) bundle args='exec brakeman'
yarn: ## Tareas de yarn
$(hain) 'yarn $(args)'
clean: ## Limpieza
rm -rf _sites/test-* _deploy/test-* log/*.log tmp/cache tmp/letter_opener tmp/miniprofiler tmp/storage
build: Gemfile.lock ## Generar la imagen Docker
time docker build --build-arg="BRANCH=$(branch)" --build-arg="RAILS_MASTER_KEY=`cat config/master.key`" -t sutty/$(container) .
docker tag sutty/$(container):latest sutty:keep
@echo -e "\a"
save: ## Subir la imagen Docker al nodo delegado
time docker save sutty/$(container):latest | ssh root@$(delegate) docker load
date +%F | xargs -I {} git tag -f $(container)-{}
@echo -e "\a"
ota-js: assets ## Actualizar Javascript en el nodo delegado
sudo chgrp -R 82 public/
rsync -avi --delete-after public/ root@$(delegate):/srv/sutty/srv/http/data/_$(public)/
ssh root@$(delegate) docker exec $(container) sh -c "cat /srv/http/tmp/puma.pid | xargs -r kill -USR2"
ota: ## Actualizar Rails en el nodo delegado
umask 022; git format-patch $(commit)
scp ./0*.patch $(delegate):/tmp/
ssh $(delegate) mkdir -p /tmp/patches-$(commit)/
scp ./0*.patch $(delegate):/tmp/patches-$(commit)/
scp ./ota.sh $(delegate):/tmp/
ssh $(delegate) docker cp /tmp/patches-$(shell echo $(commit) | cut -d / -f 1) $(container):/tmp/
ssh $(delegate) docker cp /tmp/ota.sh $(container):/usr/local/bin/ota
ssh $(delegate) docker exec $(container) apk add --no-cache patch
ssh $(delegate) docker exec $(container) ota $(commit)
rm ./0*.patch
# Todos los archivos de assets. Si alguno cambia, se van a recompilar
# los assets que luego se suben al nodo delegado.
assets := package.json yarn.lock $(shell find app/assets/ app/javascript/ -type f)
public/packs/manifest.json.br: $(assets)
$(hain) 'PANEL_URL=https://panel.sutty.nl RAILS_ENV=production NODE_ENV=production bundle exec rake assets:precompile assets:clean'
# Correr un test en particular por ejemplo
# `make test/models/usuarie_test.rb`
tests := $(shell find test/ -name "*_test.rb")
$(tests): always
$(MAKE) test args="TEST=$@"
# Agrega las direcciones locales al sistema
/etc/hosts: always
@echo "Chequeando si es necesario agregar el dominio local $(SUTTY)"
@grep -q " $(SUTTY)$$" $@ || echo -e "127.0.0.1 $(SUTTY)\n::1 $(SUTTY)" | sudo tee -a $@
@grep -q " api.$(SUTTY)$$" $@ || echo -e "127.0.0.1 api.$(SUTTY)\n::1 api.$(SUTTY)" | sudo tee -a $@
@grep -q " panel.$(SUTTY)$$" $@ || echo -e "127.0.0.1 panel.$(SUTTY)\n::1 panel.$(SUTTY)" | sudo tee -a $@
@grep -q " postgresql.$(SUTTY)$$" $@ || echo -e "127.0.0.1 postgresql.$(SUTTY)\n::1 postgresql.$(SUTTY)" | sudo tee -a $@
# Instala las dependencias de Javascript
node_modules: package.json
$(MAKE) yarn
# Instala las dependencias de Rails
Gemfile.lock: Gemfile
$(MAKE) bundle args=install
.PHONY: always

View file

@ -1,5 +1,5 @@
#!/usr/bin/env rake
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.

View file

@ -1,3 +1,3 @@
# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
App.Config.set('api_path', 'api/v1')
App.Config.set('image_path', '/assets/images')

View file

@ -77,8 +77,7 @@ class App.Controller extends Spine.Controller
# release bindings
if @el
@el.undelegate()
@el.unbind()
@el.off()
@el.empty()
# release spine bindings (see release() of spine.coffee)
@ -114,7 +113,7 @@ class App.Controller extends Spine.Controller
if window.clipboardData # IE
window.clipboardData.setData('Text', text)
else
window.prompt('Copy to clipboard: Ctrl+C, Enter', text)
window.prompt(__('Copy to clipboard: Ctrl+C, Enter'), text)
# disable all delay's and interval's
disconnectClient: ->
@ -220,7 +219,7 @@ class App.Controller extends Spine.Controller
userInfo: (data) ->
el = data.el || $('[data-id="customer_info"]')
el.unbind()
el.off()
# start customer info controller
new App.WidgetUser(
@ -300,16 +299,18 @@ class App.Controller extends Spine.Controller
frontendTimeUpdateItem: (item, currentVal) =>
timestamp = item.attr('datetime')
time = @humanTime(timestamp, item.hasClass('escalation'))
return if timestamp is 'null'
# only do dom updates on changes
time = @humanTime(timestamp, item.hasClass('escalation'))
return if time is currentVal
newTitle = App.i18n.translateTimestamp(timestamp)
if item.attr('timezone')
newTitle += ' ' + item.attr('timezone')
item.attr('title', newTitle)
if !item.hasClass('noTitle')
item.attr('title', newTitle)
item.html(time)
recentView: (object, o_id) =>

View file

@ -59,7 +59,9 @@ class App.ControllerModal extends App.Controller
false
content: ->
'You need to implement a one @content()!'
# coffeelint: disable=detect_translatable_string
"You need to implement a '@content()' method!"
# coffeelint: enable=detect_translatable_string
update: =>
if @message
@ -106,7 +108,7 @@ class App.ControllerModal extends App.Controller
if @buttonSubmit is true
@buttonSubmit = 'Submit'
if @buttonCancel is true
@buttonCancel = 'Cancel & Go Back'
@buttonCancel = __('Cancel & Go Back')
@update()
@ -179,7 +181,7 @@ class App.ControllerModal extends App.Controller
form = @el
# focus first input, select or textarea
form.find('input:not([disabled]):not([type="hidden"]):not(".btn"), select:not([disabled]), textarea:not([disabled])').first().focus()
form.find('input:not([disabled]):not([type="hidden"]):not(".btn"), select:not([disabled]), textarea:not([disabled])').first().trigger('focus')
@initalFormParams = @formParams()

View file

@ -0,0 +1,15 @@
class App.ControllerConfirm extends App.ControllerModal
buttonClose: true
buttonCancel: true
buttonSubmit: __('Yes')
buttonClass: 'btn--danger'
head: __('Confirmation')
small: true
content: ->
App.i18n.translateContent(@message)
onSubmit: =>
@close()
if @callback
@callback()

View file

@ -1,8 +1,8 @@
class App.ControllerGenericDescription extends App.ControllerModal
buttonClose: true
buttonCancel: false
buttonSubmit: 'Close'
head: 'Description'
buttonSubmit: __('Close')
head: __('Description')
content: =>
marked(App.i18n.translateContent(@description))

View file

@ -1,13 +1,13 @@
class App.ControllerGenericDestroyConfirm extends App.ControllerModal
buttonClose: true
buttonCancel: true
buttonSubmit: 'delete'
buttonSubmit: __('delete')
buttonClass: 'btn--danger'
head: 'Confirm'
head: __('Confirmation')
small: true
content: ->
App.i18n.translateContent('Sure to delete this object?')
App.i18n.translateContent('Do you really want to delete this object?')
onSubmit: =>
options = @options || {}
@ -19,19 +19,3 @@ class App.ControllerGenericDestroyConfirm extends App.ControllerModal
@log 'errors'
@showAlert(data.human_error || data.error)
@item.destroy(options)
class App.ControllerConfirm extends App.ControllerModal
buttonClose: true
buttonCancel: true
buttonSubmit: 'yes'
buttonClass: 'btn--danger'
head: 'Confirm'
small: true
content: ->
App.i18n.translateContent(@message)
onSubmit: =>
@close()
if @callback
@callback()

View file

@ -51,5 +51,5 @@ class App.ControllerGenericEdit extends App.ControllerModal
App[ ui.genericObject ].fetch(id: @id)
ui.log 'errors'
ui.formEnable(e)
ui.controller.showAlert(details.error_human || details.error || 'Unable to update object!')
ui.controller.showAlert(details.error_human || details.error || __('The object could not be updated.'))
)

View file

@ -1,9 +1,9 @@
class App.ControllerErrorModal extends App.ControllerModal
buttonClose: true
buttonCancel: false
buttonSubmit: 'Close'
buttonSubmit: __('Close')
#buttonClass: 'btn--danger'
head: 'Error'
head: __('Error')
#small: true
#shown: true
showTrySupport: true

View file

@ -5,7 +5,7 @@ class App.GenericHistory extends App.ControllerModal
buttonClose: true
buttonCancel: false
buttonSubmit: false
head: 'History'
head: __('History')
shown: false
constructor: ->
@ -18,7 +18,7 @@ class App.GenericHistory extends App.ControllerModal
content = $ App.view('generic/history')(
items: localItem
)
content.find('a[data-type="sortorder"]').bind('click', (e) =>
content.find('a[data-type="sortorder"]').on('click', (e) =>
e.preventDefault()
@sortorder()
)
@ -44,6 +44,8 @@ class App.GenericHistory extends App.ControllerModal
if item.object is 'Ticket::Article'
item.object = 'Article'
if item.object is 'Ticket::SharedDraftZoom'
item.object = 'Draft'
data = item
data.created_by = App.User.find( item.created_by_id )
@ -98,7 +100,7 @@ class App.GenericHistory extends App.ControllerModal
content += " '#{ @translateItemValue(item, item.value_from) }'"
if item.value_to
if item.value_from
if item.value_from || item.object is 'Mention'
content += ' &rarr;'
content += " '#{ @translateItemValue(item, item.value_to) }'"
else if item.value_from
@ -112,6 +114,14 @@ class App.GenericHistory extends App.ControllerModal
newItems
translateItemValue: ({object, attribute}, value) ->
if object is 'Mention'
result = '-'
if value
user = App.User.find(value)
if user
result = user.displayName()
return result
localAttribute = @objectAttribute(object, attribute)
if localAttribute && localAttribute.tag is 'datetime'
return App.i18n.translateTimestamp(value)

View file

@ -51,5 +51,5 @@ class App.ControllerGenericNew extends App.ControllerModal
fail: (settings, details) ->
ui.log 'errors', details
ui.formEnable(e)
ui.controller.showAlert(details.error_human || details.error || 'Unable to create object!')
ui.controller.showAlert(details.error_human || details.error || __('The object could not be created.'))
)

View file

@ -0,0 +1,3 @@
class App.ControllerArticlePublicConfirm extends App.ControllerConfirm
head: __('Publish Article')
message: __('Do you really want to set the visibility of this article to "public"?')

View file

@ -1,5 +1,5 @@
class App.ControllerForm extends App.Controller
fullFormSubmitLabel: 'Submit'
fullFormSubmitLabel: __('Submit')
fullFormSubmitAdditionalClasses: ''
fullFormButtonsContainerClass: ''
fullFormAdditionalButtons: [] # [{className: 'js-class', text: 'Label'}]
@ -34,11 +34,8 @@ class App.ControllerForm extends App.Controller
@form.prepend('<div class="alert alert--danger js-danger js-alert hide" role="alert"></div>')
@form.prepend('<div class="alert alert--success js-success hide" role="alert"></div>')
# Fix for Issue #2510 - Zammad Customers shown as Agents in IE
# Previously the handlers are called directly, before the DOM elements are ready, thereby causing a race condition under IE11.
# Now we only dispatch the handlers after the DOM is ready.
if @handlers.length
$(@dispatchHandlers)
@dispatchHandlers()
# if element is given, prepend form to it
if @el
@ -160,7 +157,7 @@ class App.ControllerForm extends App.Controller
for eventSelector, callback of @events
do (eventSelector, callback) ->
evs = eventSelector.split(' ')
fieldset.find(evs[1]).bind(evs[0], (e) -> callback(e))
fieldset.find(evs[1]).on(evs[0], (e) -> callback(e))
# bind tool tips
fieldset.find('.js-helpMessage').tooltip()
@ -173,7 +170,7 @@ class App.ControllerForm extends App.Controller
# input text field with max. 100 size
attribute_config = {
name: 'subject'
display: 'Subject'
display: __('Subject')
tag: 'input'
type: 'text'
limit: 100
@ -185,7 +182,7 @@ class App.ControllerForm extends App.Controller
# colection as relation with auto completion
attribute_config = {
name: 'customer_id'
display: 'Customer'
display: __('Customer')
tag: 'autocompletion'
# auto completion params, endpoints, ui,...
type: 'text'
@ -193,7 +190,7 @@ class App.ControllerForm extends App.Controller
null: false
relation: 'User'
autocapitalize: false
help: 'Select the customer of the ticket or create one.'
help: __('Select the customer of the ticket or create one.')
helpLink: '<a href="" class="customer_new">&raquo;</a>'
callback: @userInfo
class: 'span7'
@ -202,7 +199,7 @@ class App.ControllerForm extends App.Controller
# colection as relation
attribute_config = {
name: 'priority_id'
display: 'Priority'
display: __('Priority')
tag: 'select'
multiple: false
null: false
@ -216,7 +213,7 @@ class App.ControllerForm extends App.Controller
# colection as options
attribute_config = {
name: 'priority_id'
display: 'Priority'
display: __('Priority')
tag: 'select'
multiple: false
null: false
@ -278,7 +275,7 @@ class App.ControllerForm extends App.Controller
attribute.autocomplete = 'autocomplete="' + attribute.autocomplete + '"'
# set default values
if attribute.value is undefined && 'default' of attribute
if attribute.value is undefined && 'default' of attribute && !@params?.id
attribute.value = attribute.default
# set params value
@ -316,7 +313,7 @@ class App.ControllerForm extends App.Controller
item_bind = item.find('.richtext-content')
item_event = 'blur'
item_bind.bind(item_event, (e) =>
item_bind.on(item_event, (e) =>
@lastChangedAttribute = attribute.name
params = App.ControllerForm.params(@form)
for handler in @handlers
@ -418,11 +415,11 @@ class App.ControllerForm extends App.Controller
if !@constructor.fieldIsMandatory(field_by_name)
field_by_name.attr('required', true)
field_by_name.parents('.form-group').find('label span').html('*')
field_by_name.closest('.form-group').find('label span').html('*')
field_by_name.closest('.form-group').addClass('is-required')
if !@constructor.fieldIsMandatory(field_by_data)
field_by_data.attr('required', true)
field_by_data.parents('.form-group').find('label span').html('*')
field_by_data.closest('.form-group').find('label span').html('*')
field_by_data.closest('.form-group').addClass('is-required')
optional: (name, el = @form) ->
@ -434,11 +431,11 @@ class App.ControllerForm extends App.Controller
if @constructor.fieldIsMandatory(field_by_name)
field_by_name.attr('required', false)
field_by_name.parents('.form-group').find('label span').html('')
field_by_name.closest('.form-group').find('label span').html('')
field_by_name.closest('.form-group').removeClass('is-required')
if @constructor.fieldIsMandatory(field_by_data)
field_by_data.attr('required', false)
field_by_data.parents('.form-group').find('label span').html('')
field_by_data.closest('.form-group').find('label span').html('')
field_by_data.closest('.form-group').removeClass('is-required')
readonly: (name, el = @form) ->
@ -531,7 +528,10 @@ class App.ControllerForm extends App.Controller
else
param[item.name].push value
else
param[item.name] = value
if item.multiselect && typeof value is 'string'
param[item.name] = new Array(value)
else
param[item.name] = value
# verify if we have not checked checkboxes
uncheckParam = {}
@ -784,7 +784,7 @@ class App.ControllerForm extends App.Controller
# set autofocus by delay to make validation testable
App.Delay.set(
->
lookupForm.find('.has-error').find('input, textarea, select').first().focus()
lookupForm.find('.has-error').find('input, textarea, select').first().trigger('focus')
200
'validate'
)

View file

@ -2,6 +2,7 @@ class App.ControllerObserver extends App.Controller
model: 'Ticket'
template: 'tba'
globalRerender: true
lastAttributes: undefined
###
observe:
@ -25,7 +26,7 @@ class App.ControllerObserver extends App.Controller
# rerender, e. g. on language change
if @globalRerender
@controllerBind('ui:rerender', =>
@lastAttributres = undefined
@lastAttributes = undefined
@maybeRender(App[@model].fullLocal(@object_id))
)
@ -43,32 +44,40 @@ class App.ControllerObserver extends App.Controller
if !@subscribeId
@subscribeId = object.subscribe(@subscribe)
# remember current attributes
return if !@hasChanged(object)
@render(object)
hasChanged: (object) =>
currentAttributes = {}
objectCloned = $.extend(true, {}, object)
if @observe
for key, active of @observe
if active
currentAttributes[key] = object[key]
if active && !_.isFunction(value)
currentAttributes[key] = objectCloned[key]
if @observeNot
for key, value of object
if key isnt 'cid' && !@observeNot[key] && !_.isFunction(value) && !_.isObject(value)
for key, value of objectCloned
if key isnt 'cid' && !@observeNot[key] && !_.isFunction(value)
currentAttributes[key] = value
if !@lastAttributres
@lastAttributres = {}
else
diff = difference(currentAttributes, @lastAttributres)
if _.isEmpty(diff)
@log 'debug', 'maybeRender no diff, no rerender'
return
if !@lastAttributes
@lastAttributes = currentAttributes
return true
diff = difference(currentAttributes, @lastAttributes)
if _.isEmpty(diff)
@log 'debug', 'maybeRender no diff, no rerender'
return false
@log 'debug', 'maybeRender.diff', diff, @observe, @model
@lastAttributres = currentAttributes
@lastAttributes = currentAttributes
@render(object, diff)
true
render: (object, diff) =>
@log 'debug', 'render', @template, object, diff
render: (object) =>
@log 'debug', 'render', @template, object
@html App.view(@template)(
object: object
)

View file

@ -1,5 +1,5 @@
class App.ControllerReorderModal extends App.ControllerModal
head: 'Drag to reorder'
head: __('Drag to reorder')
content: ->
view = $(App.view('reorder_modal')())
@ -10,7 +10,7 @@ class App.ControllerReorderModal extends App.ControllerModal
true
overview: ['title']
attribute_list: [
{ name: 'title', display: 'Name' }
{ name: 'title', display: __('Name') }
]
objects: @items
)
@ -21,7 +21,7 @@ class App.ControllerReorderModal extends App.ControllerModal
onShown: ->
super
@$('.js-submit').focus()
@$('.js-submit').trigger('focus')
save: ->
ids = @$('tr.item').toArray().map (el) -> parseInt(el.dataset.id)
@ -49,4 +49,3 @@ class App.ControllerReorderModal extends App.ControllerModal
onSubmit: ->
super
@save()

View file

@ -406,7 +406,7 @@ class App.ControllerTable extends App.Controller
if @bindCheckbox.events
for event, callback of @bindCheckbox.events
do (table, event, callback) ->
table.delegate('input[name="bulk"]', event, (e) ->
table.on(event, 'input[name="bulk"]', (e) ->
e.stopPropagation()
id = $(e.currentTarget).parents('tr').data('id')
checked = $(e.currentTarget).prop('checked')
@ -424,12 +424,12 @@ class App.ControllerTable extends App.Controller
if @checkbox
# click first tr>td, catch click
table.delegate('tr > td:nth-child(1)', 'click', (e) ->
table.on('click', 'tr > td:nth-child(1)', (e) ->
e.stopPropagation()
)
# bind on full bulk click
table.delegate('input[name="bulk_all"]', 'change', (e) =>
table.on('change', 'input[name="bulk_all"]', (e) =>
e.stopPropagation()
clicks = []
if $(e.currentTarget).prop('checked')
@ -493,16 +493,6 @@ class App.ControllerTable extends App.Controller
sortable: @dndCallback
))
getGroupByKeyName: (object, groupBy) ->
reference_key = groupBy + '_id'
if reference_key of object
attribute = _.findWhere(object.constructor.configure_attributes, { name: reference_key })
return App[attribute.relation]?.find(object[reference_key])?.displayName() || reference_key
groupBy
sortObjectKeys: (objects, direction) ->
sorted = Object.keys(objects).sort()
@ -525,7 +515,7 @@ class App.ControllerTable extends App.Controller
objectsToShow = @objectsOfPage(@pagerShownPage)
if @groupBy
# group by raw (and not printable) value so dates work also
objectsGrouped = _.groupBy(objectsToShow, (object) => object[@getGroupByKeyName(object, @groupBy)])
objectsGrouped = _.groupBy(objectsToShow, (object) => @groupObjectName(object, @groupBy, excludeTags: ['date', 'datetime']))
else
objectsGrouped = { '': objectsToShow }
@ -641,7 +631,7 @@ class App.ControllerTable extends App.Controller
if @clone
@actions.push
name: 'clone'
display: 'Clone'
display: __('Clone')
icon: 'clipboard'
class: 'create js-clone'
callback: (id) =>
@ -660,7 +650,7 @@ class App.ControllerTable extends App.Controller
if @destroy
@actions.push
name: 'delete'
display: 'Delete'
display: __('Delete')
icon: 'trash'
class: 'danger js-delete'
callback: (id) =>
@ -672,7 +662,7 @@ class App.ControllerTable extends App.Controller
if @actions.length
@headers.push
name: 'action'
display: 'Action'
display: __('Action')
width: '50px'
displayWidth: 50
align: 'right'
@ -865,11 +855,15 @@ class App.ControllerTable extends App.Controller
@objects = localObjects
@lastSortedobjects = localObjects
groupObjectName: (object, key = undefined) ->
groupObjectName: (object, key = undefined, options = {}) ->
group = object
if key
if key not of object
key += '_id'
# return internal value if needed
return object[key] if options.excludeTags && _.find(@attributesList, (attr) -> attr.name == key && _.contains(options.excludeTags, attr.tag))
group = App.viewPrint(object, key, @attributesList)
if _.isEmpty(group)
group = ''

View file

@ -0,0 +1,9 @@
class App.ControllerTechnicalErrorModal extends App.ControllerModal
head: "StatusCode: #{status}"
contentCode: ''
buttonClose: false
buttonSubmit: 'Ok'
onSubmit: (e) -> @close(e)
content: ->
"<pre><code>#{@contentCode}</code></pre>"

View file

@ -20,7 +20,7 @@ class App.ControllerWizardModal extends App.ControllerFullPage
@hideAlert(name)
@$('.setup.wizard').addClass('hide')
@$(".setup.wizard.#{name}").removeClass('hide')
@$(".setup.wizard.#{name} input, .setup.wizard.#{name} select").first().focus()
@$(".setup.wizard.#{name} input, .setup.wizard.#{name} select").first().trigger('focus')
showAlert: (screen, message) =>
@$(".#{screen}").find('.alert').first().removeClass('hide').text(App.i18n.translatePlain(message))

View file

@ -11,7 +11,7 @@ class App.ChannelEmailFilter extends App.Controller
template = $( '<div><div class="overview"></div><a data-type="new" class="btn btn--success">' + App.i18n.translateContent('New') + '</a></div>' )
description = 'With filters you can e. g. dispatch new tickets into certain groups or set a certain priority for tickets of a VIP customer.'
description = __('With filters you can e. g. dispatch new tickets into certain groups or set a certain priority for tickets of a VIP customer.')
new App.ControllerTable(
el: template.find('.overview')
@ -28,7 +28,7 @@ class App.ChannelEmailFilter extends App.Controller
e.preventDefault()
new App.ControllerGenericNew(
pageData:
object: 'Postmaster Filter'
object: __('Postmaster Filter')
genericObject: 'PostmasterFilter'
container: @el.closest('.content')
callback: @load
@ -40,7 +40,7 @@ class App.ChannelEmailFilter extends App.Controller
new App.ControllerGenericEdit(
id: id,
pageData:
object: 'Postmaster Filter'
object: __('Postmaster Filter')
genericObject: 'PostmasterFilter'
container: @el.closest('.content')
callback: @load

View file

@ -11,11 +11,11 @@ class App.ChannelEmailSignature extends App.Controller
template = $( '<div><div class="overview"></div><a data-type="new" class="btn btn--success">' + App.i18n.translateContent('New') + '</a></div>' )
description = '''
You can define different signatures for each group. So you can have different email signatures for different departments.
description = __('''
You can define different signatures for each group, which allows you to use a different signature for every department.
Once you have created a signature here, you need also to edit the groups where you want to use it.
'''
Once you have created a signature here, you will also need to edit the groups where you want to use it.
''')
new App.ControllerTable(
el: template.find('.overview')
@ -46,7 +46,7 @@ class ChannelEmailSignatureEdit extends App.ControllerModal
buttonClose: true
buttonCancel: true
buttonSubmit: true
head: 'Signature'
head: __('Signature')
content: =>
if @object
@ -90,5 +90,5 @@ class ChannelEmailSignatureEdit extends App.ControllerModal
fail: (settings, details) =>
@log 'errors', details
@formEnable(e)
@form.showAlert(details.error_human || details.error || 'Unable to create object!')
@form.showAlert(details.error_human || details.error || __('The object could not be created.'))
)

View file

@ -1,6 +1,6 @@
class ChannelChat extends App.ControllerSubContent
requiredPermission: 'admin.channel_chat'
header: 'Chat'
header: __('Chat')
events:
'change .js-params': 'updateParams'
'input .js-params': 'updateParams'
@ -32,74 +32,74 @@ class ChannelChat extends App.ControllerSubContent
name: 'chatId'
default: '1'
type: 'Number'
description: 'Identifier of the chat-topic.'
description: __('Identifier of the chat topic.')
}
{
name: 'show'
default: true
type: 'Boolean'
description: 'Show the chat when ready.'
description: __('Show the chat when ready.')
}
{
name: 'target'
default: "$('body')"
type: 'jQuery Object'
description: 'Where to append the chat to.'
description: __('Where to append the chat to.')
}
{
name: 'host'
default: '(Empty)'
type: 'String'
description: "If left empty, the host gets auto-detected - in this case %s. The auto-detection reads out the host from the <script> tag. If you don't include it via a <script> tag you need to specify the host."
description: __("If left empty, the host gets auto-detected - in this case %s. The auto-detection reads out the host from the <script> tag. If you don't include it via a <script> tag you need to specify the host.")
descriptionSubstitute: window.location.origin
}
{
name: 'debug'
default: false
type: 'Boolean'
description: 'Enables console logging.'
description: __('Enables console logging.')
}
{
name: 'title'
default: "'<strong>Chat</strong> with us!'"
type: 'String'
description: 'Welcome Title shown on the closed chat. Can contain HTML.'
description: __('Welcome Title shown on the closed chat. Can contain HTML.')
}
{
name: 'fontSize'
default: 'undefined'
type: 'String'
description: 'CSS font-size with a unit like 12px, 1.5em. If left to undefined it inherits the font-size of the website.'
description: __('CSS font-size with a unit like 12px, 1.5em. If left undefined it inherits the font-size of the website.')
}
{
name: 'flat'
default: 'false'
type: 'Boolean'
description: 'Removes the shadows for a flat look.'
description: __('Removes the shadows for a flat look.')
}
{
name: 'buttonClass'
default: "'open-zammad-chat'"
type: 'String'
description: 'Add this class to a button on your page that should open the chat.'
description: __('Add this class to a button on your page that should open the chat.')
}
{
name: 'inactiveClass'
default: "'is-inactive'"
type: 'String'
description: 'This class gets added to the button on initialization and gets removed once the chat connection got established.'
description: __('This class gets added to the button on initialization and will be removed once the chat connection is established.')
}
{
name: 'cssAutoload'
default: 'true'
type: 'Boolean'
description: 'Automatically loads the chat.css file. If you want to use your own css, just set it to false.'
description: __('Automatically loads the chat.css file. If you want to use your own css, just set it to false.')
}
{
name: 'cssUrl'
default: 'undefined'
type: 'String'
description: 'Location of an external chat.css file.'
description: __('Location of an external chat.css file.')
}
]
@ -204,7 +204,7 @@ class ChannelChat extends App.ControllerSubContent
onUrlSubmit: (event) ->
event.preventDefault() if event
@urlInput.focus()
@urlInput.trigger('focus')
@changeDemoWebsite()
changeDemoWebsite: ->
@ -353,7 +353,7 @@ class ChannelChat extends App.ControllerSubContent
@code.each (i, block) ->
hljs.highlightBlock block
App.Config.set('Chat', { prio: 4000, name: 'Chat', parent: '#channels', target: '#channels/chat', controller: ChannelChat, permission: ['admin.channel_chat'] }, 'NavBarAdmin')
App.Config.set('Chat', { prio: 4000, name: __('Chat'), parent: '#channels', target: '#channels/chat', controller: ChannelChat, permission: ['admin.channel_chat'] }, 'NavBarAdmin')
class Topics extends App.Controller
events:
@ -373,9 +373,9 @@ class Topics extends App.Controller
new: (e) =>
new App.ControllerGenericNew(
pageData:
title: 'Chats'
object: 'Chat'
objects: 'Chats'
title: __('Chats')
object: __('Chat')
objects: __('Chats')
genericObject: 'Chat'
callback: @render
container: @el.closest('.content')
@ -389,7 +389,7 @@ class Topics extends App.Controller
id: id
genericObject: 'Chat'
pageData:
object: 'Chat'
object: __('Chat')
container: @el.closest('.content')
callback: @render
)

View file

@ -1,29 +1,29 @@
class ChannelEmail extends App.ControllerTabs
requiredPermission: 'admin.channel_email'
header: 'Email'
header: __('Email')
constructor: ->
super
@title 'Email', true
@title __('Email'), true
@tabs = [
{
name: 'Accounts',
name: __('Accounts'),
target: 'c-account',
controller: ChannelEmailAccountOverview,
},
{
name: 'Filter',
name: __('Filter'),
target: 'c-filter',
controller: App.ChannelEmailFilter,
},
{
name: 'Signatures',
name: __('Signatures'),
target: 'c-signature',
controller: App.ChannelEmailSignature,
},
{
name: 'Settings',
name: __('Settings'),
target: 'c-setting',
controller: App.SettingsArea,
params: { area: 'Email::Base' },
@ -142,7 +142,7 @@ class ChannelEmailAccountOverview extends App.Controller
e.preventDefault()
id = $(e.target).closest('.action').data('id')
new App.ControllerConfirm(
message: 'Sure?'
message: __('Are you sure?')
callback: =>
@ajax(
id: 'email_delete'
@ -197,7 +197,7 @@ class ChannelEmailAccountOverview extends App.Controller
channel_id = $(e.target).closest('.action').data('id')
new App.ControllerGenericNew(
pageData:
object: 'Email Address'
object: __('Email Address')
genericObject: 'EmailAddress'
container: @el.closest('.content')
item:
@ -210,7 +210,7 @@ class ChannelEmailAccountOverview extends App.Controller
id = $(e.target).closest('li').data('id')
new App.ControllerGenericEdit(
pageData:
object: 'Email Address'
object: __('Email Address')
genericObject: 'EmailAddress'
container: @el.closest('.content')
id: id
@ -254,11 +254,11 @@ class ChannelEmailEdit extends App.ControllerModal
buttonClose: true
buttonCancel: true
buttonSubmit: true
head: 'Channel'
head: __('Channel')
content: =>
configureAttributesBase = [
{ name: 'group_id', display: 'Destination Group', tag: 'select', null: false, relation: 'Group', nulloption: true, filter: { active: true } },
{ name: 'group_id', display: __('Destination Group'), tag: 'select', null: false, relation: 'Group', nulloption: true, filter: { active: true } },
]
@form = new App.ControllerForm(
model:
@ -298,7 +298,7 @@ class ChannelEmailEdit extends App.ControllerModal
error: (xhr) =>
data = JSON.parse(xhr.responseText)
@formEnable(e)
@el.find('.alert').removeClass('hidden').text(data.error || 'Unable to save changes.')
@el.find('.alert').removeClass('hidden').text(data.error || __('The changes could not be saved.'))
)
class ChannelEmailAccountWizard extends App.ControllerWizardModal
@ -307,6 +307,7 @@ class ChannelEmailAccountWizard extends App.ControllerWizardModal
events:
'submit .js-intro': 'probeBasedOnIntro'
'submit .js-inbound': 'probeInbound'
'change .js-inbound [name=adapter]': 'toggleInboundAdapter'
'change .js-outbound [name=adapter]': 'toggleOutboundAdapter'
'submit .js-outbound': 'probleOutbound'
'click .js-goToSlide': 'goToSlide'
@ -371,10 +372,10 @@ class ChannelEmailAccountWizard extends App.ControllerWizardModal
# base
configureAttributesBase = [
{ name: 'realname', display: 'Organization & Department Name', tag: 'input', type: 'text', limit: 160, null: false, placeholder: 'Organization Support', autocomplete: 'off' },
{ name: 'email', display: 'Email', tag: 'input', type: 'email', limit: 120, null: false, placeholder: 'support@example.com', autocapitalize: false, autocomplete: 'off' },
{ name: 'password', display: 'Password', tag: 'input', type: 'password', limit: 120, null: false, autocapitalize: false, autocomplete: 'new-password', single: true },
{ name: 'group_id', display: 'Destination Group', tag: 'select', null: false, relation: 'Group', nulloption: true },
{ name: 'realname', display: __('Organization & Department Name'), tag: 'input', type: 'text', limit: 160, null: false, placeholder: __('Organization Support'), autocomplete: 'off' },
{ name: 'email', display: __('Email'), tag: 'input', type: 'email', limit: 120, null: false, placeholder: 'support@example.com', autocapitalize: false, autocomplete: 'off' },
{ name: 'password', display: __('Password'), tag: 'input', type: 'password', limit: 120, null: false, autocapitalize: false, autocomplete: 'new-password', single: true },
{ name: 'group_id', display: __('Destination Group'), tag: 'select', null: false, relation: 'Group', nulloption: true },
]
@formMeta = new App.ControllerForm(
el: @$('.base-settings'),
@ -386,7 +387,7 @@ class ChannelEmailAccountWizard extends App.ControllerWizardModal
# outbound
configureAttributesOutbound = [
{ name: 'adapter', display: 'Send Mails via', tag: 'select', multiple: false, null: false, options: @channelDriver.email.outbound },
{ name: 'adapter', display: __('Send Mails via'), tag: 'select', multiple: false, null: false, options: @channelDriver.email.outbound },
]
new App.ControllerForm(
el: @$('.base-outbound-type')
@ -400,22 +401,22 @@ class ChannelEmailAccountWizard extends App.ControllerWizardModal
# inbound
configureAttributesInbound = [
{ name: 'adapter', display: 'Type', tag: 'select', multiple: false, null: false, options: @channelDriver.email.inbound },
{ name: 'options::host', display: 'Host', tag: 'input', type: 'text', limit: 120, null: false, autocapitalize: false },
{ name: 'options::user', display: 'User', tag: 'input', type: 'text', limit: 120, null: false, autocapitalize: false, autocomplete: 'off' },
{ name: 'options::password', display: 'Password', tag: 'input', type: 'password', limit: 120, null: false, autocapitalize: false, autocomplete: 'new-password', single: true },
{ name: 'options::ssl', display: 'SSL/STARTTLS', tag: 'boolean', null: true, options: { true: 'yes', false: 'no' }, default: true, translate: true, item_class: 'formGroup--halfSize' },
{ name: 'options::port', display: 'Port', tag: 'input', type: 'text', limit: 6, null: true, autocapitalize: false, default: '993', item_class: 'formGroup--halfSize' },
{ name: 'options::folder', display: 'Folder', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false, item_class: 'formGroup--halfSize' },
{ name: 'options::keep_on_server', display: 'Keep messages on server', tag: 'boolean', null: true, options: { true: 'yes', false: 'no' }, translate: true, default: false, item_class: 'formGroup--halfSize' },
{ name: 'adapter', display: __('Type'), tag: 'select', multiple: false, null: false, options: @channelDriver.email.inbound },
{ name: 'options::host', display: __('Host'), tag: 'input', type: 'text', limit: 120, null: false, autocapitalize: false },
{ name: 'options::user', display: __('User'), tag: 'input', type: 'text', limit: 120, null: false, autocapitalize: false, autocomplete: 'off' },
{ name: 'options::password', display: __('Password'), tag: 'input', type: 'password', limit: 120, null: false, autocapitalize: false, autocomplete: 'new-password', single: true },
{ name: 'options::ssl', display: __('SSL/STARTTLS'), tag: 'select', null: true, options: { 'off': __('No SSL'), 'ssl': __('SSL'), 'starttls': __('STARTTLS') }, default: 'ssl', translate: true, item_class: 'formGroup--halfSize' },
{ name: 'options::port', display: __('Port'), tag: 'input', type: 'text', limit: 6, null: true, autocapitalize: false, default: '993', item_class: 'formGroup--halfSize' },
{ name: 'options::folder', display: __('Folder'), tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false, item_class: 'formGroup--halfSize' },
{ name: 'options::keep_on_server', display: __('Keep messages on server'), tag: 'boolean', null: true, options: { true: 'yes', false: 'no' }, translate: true, default: false, item_class: 'formGroup--halfSize' },
]
if !@channel
#Email Inbound form opened from new email wizard, show full settings
configureAttributesInbound = [
{ name: 'options::realname', display: 'Organization & Department Name', tag: 'input', type: 'text', limit: 160, null: false, placeholder: 'Organization Support', autocomplete: 'off' },
{ name: 'options::email', display: 'Email', tag: 'input', type: 'email', limit: 120, null: false, placeholder: 'support@example.com', autocapitalize: false, autocomplete: 'off' },
{ name: 'options::group_id', display: 'Destination Group', tag: 'select', null: false, relation: 'Group', nulloption: true },
{ name: 'options::realname', display: __('Organization & Department Name'), tag: 'input', type: 'text', limit: 160, null: false, placeholder: __('Organization Support'), autocomplete: 'off' },
{ name: 'options::email', display: __('Email'), tag: 'input', type: 'email', limit: 120, null: false, placeholder: 'support@example.com', autocapitalize: false, autocomplete: 'off' },
{ name: 'options::group_id', display: __('Destination Group'), tag: 'select', null: false, relation: 'Group', nulloption: true },
].concat(configureAttributesInbound)
@ -428,20 +429,7 @@ class ChannelEmailAccountWizard extends App.ControllerWizardModal
ui.hide('options::folder')
ui.hide('options::keep_on_server')
handlePort = (params, attribute, attributes, classname, form, ui) ->
return if !params
return if !params.options
currentPort = @$('[name="options::port"]').val()
if params.options.ssl is true
if !currentPort || currentPort is '143'
@$('[name="options::port"]').val('993')
return
if params.options.ssl is false
if !currentPort || currentPort is '993'
@$('[name="options::port"]').val('143')
return
new App.ControllerForm(
form = new App.ControllerForm(
el: @$('.base-inbound-settings'),
model:
configure_attributes: configureAttributesInbound
@ -449,9 +437,27 @@ class ChannelEmailAccountWizard extends App.ControllerWizardModal
params: @account.inbound
handlers: [
showHideFolder,
handlePort,
]
)
@toggleInboundAdapter()
form.el.find("select[name='options::ssl']").off('change').on('change', (e) ->
if $(e.target).val() is 'ssl'
form.el.find("[name='options::port']").val('993')
else if $(e.target).val() is 'off'
form.el.find("[name='options::port']").val('143')
)
toggleInboundAdapter: =>
form = @$('.base-inbound-settings')
adapter = form.find("select[name='adapter']")
starttls = form.find("select[name='options::ssl'] option[value='starttls']")
if adapter.val() isnt 'imap'
starttls.remove()
else if starttls.length < 1
starttls = $('<option/>').attr('value', 'starttls').text(__('STARTTLS'))
form.find("select[name='options::ssl']").append(starttls)
toggleOutboundAdapter: =>
@ -468,10 +474,10 @@ class ChannelEmailAccountWizard extends App.ControllerWizardModal
adapter = @$('.js-outbound [name=adapter]').val()
if adapter is 'smtp'
configureAttributesOutbound = [
{ name: 'options::host', display: 'Host', tag: 'input', type: 'text', limit: 120, null: false, autocapitalize: false, autofocus: true },
{ name: 'options::user', display: 'User', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false, autocomplete: 'off', },
{ name: 'options::password', display: 'Password', tag: 'input', type: 'password', limit: 120, null: true, autocapitalize: false, autocomplete: 'new-password', single: true },
{ name: 'options::port', display: 'Port', tag: 'input', type: 'text', limit: 6, null: true, autocapitalize: false },
{ name: 'options::host', display: __('Host'), tag: 'input', type: 'text', limit: 120, null: false, autocapitalize: false, autofocus: true },
{ name: 'options::user', display: __('User'), tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false, autocomplete: 'off', },
{ name: 'options::password', display: __('Password'), tag: 'input', type: 'password', limit: 120, null: true, autocapitalize: false, autocomplete: 'new-password', single: true },
{ name: 'options::port', display: __('Port'), tag: 'input', type: 'text', limit: 6, null: true, autocapitalize: false },
]
@form = new App.ControllerForm(
el: @$('.base-outbound-settings')
@ -525,10 +531,10 @@ class ChannelEmailAccountWizard extends App.ControllerWizardModal
else if data.result is 'duplicate'
@showSlide('js-intro')
@showAlert('js-intro', 'Account already exists!')
@showAlert('js-intro', __('Account already exists!'))
else
@showSlide('js-inbound')
@showAlert('js-inbound', 'Unable to detect your server settings. Manual configuration needed.')
@showAlert('js-inbound', __('The server settings could not be automatically detected. Please configure them manually.'))
@$('.js-inbound [name="options::user"]').val(@account['meta']['email'])
@$('.js-inbound [name="options::password"]').val(@account['meta']['password'])
@$('.js-inbound [name="options::email"]').val(@account['meta']['email'])
@ -605,16 +611,16 @@ class ChannelEmailAccountWizard extends App.ControllerWizardModal
)
probeInboundMessagesFound: (data, verify) =>
message = App.i18n.translateContent('We have already found %s email(s) in your mailbox. Zammad will move it all from your mailbox into Zammad.', data.content_messages)
message = App.i18n.translateContent('We have already found %s email(s) in your mailbox. We will move them all from your mailbox into Zammad.', data.content_messages)
@$('.js-inbound-acknowledge .js-messageFound').html(message)
if !verify
@$('.js-inbound-acknowledge .js-back').attr('data-slide', 'js-inbound')
@$('.js-inbound-acknowledge .js-next').unbind('click.verify')
@$('.js-inbound-acknowledge .js-next').off('click.verify')
else
@$('.js-inbound-acknowledge .js-back').attr('data-slide', 'js-intro')
@$('.js-inbound-acknowledge .js-next').attr('data-slide', '')
@$('.js-inbound-acknowledge .js-next').unbind('click.verify').bind('click.verify', (e) =>
@$('.js-inbound-acknowledge .js-next').off('click.verify').on('click.verify', (e) =>
e.preventDefault()
@verify(@account)
)
@ -749,7 +755,7 @@ class ChannelEmailAccountWizard extends App.ControllerWizardModal
@delay(
=>
@showSlide('js-intro')
@showAlert('js-intro', 'Unable to verify sending and receiving. Please check your settings.')
@showAlert('js-intro', __('Email sending and receiving could not be verified. Please check your settings.'))
2300
)
@ -759,7 +765,7 @@ class ChannelEmailAccountWizard extends App.ControllerWizardModal
@verify(@account, count + 1)
error: =>
@showSlide('js-intro')
@showAlert('js-intro', 'Unable to verify sending and receiving. Please check your settings.')
@showAlert('js-intro', __('Email sending and receiving could not be verified. Please check your settings.'))
)
hide: (e) =>
@ -830,7 +836,7 @@ class ChannelEmailNotificationWizard extends App.ControllerWizardModal
# outbound
configureAttributesOutbound = [
{ name: 'adapter', display: 'Send Mails via', tag: 'select', multiple: false, null: false, options: @channelDriver.email.outbound },
{ name: 'adapter', display: __('Send Mails via'), tag: 'select', multiple: false, null: false, options: @channelDriver.email.outbound },
]
new App.ControllerForm(
el: @$('.base-outbound-type')
@ -849,10 +855,10 @@ class ChannelEmailNotificationWizard extends App.ControllerWizardModal
adapter = @$('.js-outbound [name=adapter]').val()
if adapter is 'smtp'
configureAttributesOutbound = [
{ name: 'options::host', display: 'Host', tag: 'input', type: 'text', limit: 120, null: false, autocapitalize: false, autofocus: true },
{ name: 'options::user', display: 'User', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false, autocomplete: 'off' },
{ name: 'options::password', display: 'Password', tag: 'input', type: 'password', limit: 120, null: true, autocapitalize: false, autocomplete: 'new-password', single: true },
{ name: 'options::port', display: 'Port', tag: 'input', type: 'text', limit: 6, null: true, autocapitalize: false },
{ name: 'options::host', display: __('Host'), tag: 'input', type: 'text', limit: 120, null: false, autocapitalize: false, autofocus: true },
{ name: 'options::user', display: __('User'), tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false, autocomplete: 'off' },
{ name: 'options::password', display: __('Password'), tag: 'input', type: 'password', limit: 120, null: true, autocapitalize: false, autocomplete: 'new-password', single: true },
{ name: 'options::port', display: __('Port'), tag: 'input', type: 'text', limit: 6, null: true, autocapitalize: false },
]
@form = new App.ControllerForm(
el: @$('.base-outbound-settings')
@ -900,4 +906,4 @@ class ChannelEmailNotificationWizard extends App.ControllerWizardModal
@enable(e)
)
App.Config.set('Email', { prio: 3000, name: 'Email', parent: '#channels', target: '#channels/email', controller: ChannelEmail, permission: ['admin.channel_email'] }, 'NavBarAdmin')
App.Config.set('Email', { prio: 3000, name: __('Email'), parent: '#channels', target: '#channels/email', controller: ChannelEmail, permission: ['admin.channel_email'] }, 'NavBarAdmin')

View file

@ -1,6 +1,6 @@
class ChannelFacebook extends App.ControllerSubContent
requiredPermission: 'admin.channel_facebook'
header: 'Facebook'
header: __('Facebook')
events:
'click .js-new': 'new'
'click .js-edit': 'edit'
@ -95,7 +95,7 @@ class ChannelFacebook extends App.ControllerSubContent
e.preventDefault()
id = $(e.target).closest('.action').data('id')
new App.ControllerConfirm(
message: 'Sure?'
message: __('Are you sure?')
callback: =>
@ajax(
id: 'facebook_delete'
@ -136,7 +136,7 @@ class ChannelFacebook extends App.ControllerSubContent
)
class AppConfig extends App.ControllerModal
head: 'Connect Facebook App'
head: __('Connect Facebook App')
shown: true
button: 'Connect'
buttonCancel: true
@ -178,15 +178,15 @@ class AppConfig extends App.ControllerModal
@isChanged = true
@close()
fail: =>
@el.find('.alert').removeClass('hidden').text('Unable to create entry.')
@el.find('.alert').removeClass('hidden').text(__('The entry could not be created.'))
)
return
@formEnable(e)
@el.find('.alert').removeClass('hidden').text(data.error || 'Unable to verify App.')
@el.find('.alert').removeClass('hidden').text(data.error || __('App could not be verified.'))
)
class AccountEdit extends App.ControllerModal
head: 'Facebook Account'
head: __('Facebook Account')
shown: true
buttonCancel: true
@ -242,7 +242,7 @@ class AccountEdit extends App.ControllerModal
error: (xhr) =>
data = JSON.parse(xhr.responseText)
@formEnable(e)
@el.find('.alert').removeClass('hidden').text(data.error || 'Unable to save changes.')
@el.find('.alert').removeClass('hidden').text(data.error || __('The changes could not be saved.'))
)
App.Config.set('Facebook', { prio: 5100, name: 'Facebook', parent: '#channels', target: '#channels/facebook', controller: ChannelFacebook, permission: ['admin.channel_facebook'] }, 'NavBarAdmin')
App.Config.set('Facebook', { prio: 5100, name: __('Facebook'), parent: '#channels', target: '#channels/facebook', controller: ChannelFacebook, permission: ['admin.channel_facebook'] }, 'NavBarAdmin')

View file

@ -1,7 +1,7 @@
# coffeelint: disable=no_unnecessary_double_quotes
class ChannelForm extends App.ControllerSubContent
requiredPermission: 'admin.channel_formular'
header: 'Form'
header: __('Form')
events:
'change form.js-paramsDesigner': 'updateParamsDesigner'
'keyup form.js-paramsDesigner': 'updateParamsDesigner'
@ -88,4 +88,4 @@ class ChannelForm extends App.ControllerSubContent
value = @paramsSetting.find('[name=group_id]').val()
App.Setting.set('form_ticket_create_group_id', value)
App.Config.set('Form', { prio: 2000, name: 'Form', parent: '#channels', target: '#channels/form', controller: ChannelForm, permission: ['admin.channel_formular'] }, 'NavBarAdmin')
App.Config.set('Form', { prio: 2000, name: __('Form'), parent: '#channels', target: '#channels/form', controller: ChannelForm, permission: ['admin.channel_formular'] }, 'NavBarAdmin')

View file

@ -1,29 +1,29 @@
class App.ChannelGoogle extends App.ControllerTabs
requiredPermission: 'admin.channel_google'
header: 'Google'
header: __('Google')
constructor: ->
super
@title 'Google', true
@title __('Google'), true
@tabs = [
{
name: 'Accounts',
name: __('Accounts'),
target: 'c-account',
controller: ChannelAccountOverview,
},
{
name: 'Filter',
name: __('Filter'),
target: 'c-filter',
controller: App.ChannelEmailFilter,
},
{
name: 'Signatures',
name: __('Signatures'),
target: 'c-signature',
controller: App.ChannelEmailSignature,
},
{
name: 'Settings',
name: __('Settings'),
target: 'c-setting',
controller: App.SettingsArea,
params: { area: 'Email::Base' },
@ -145,7 +145,7 @@ class ChannelAccountOverview extends App.ControllerSubContent
e.preventDefault()
id = $(e.target).closest('.action').data('id')
new App.ControllerConfirm(
message: 'Sure?'
message: __('Are you sure?')
callback: =>
@ajax(
id: 'google_delete'
@ -215,11 +215,11 @@ class ChannelAccountOverview extends App.ControllerSubContent
@load()
@notify
type: 'success'
msg: 'Rollback of channel migration succeeded!'
msg: __('Rollback of channel migration succeeded!')
error: (data) =>
@notify
type: 'error'
msg: 'Failed to rollback migration of the channel!'
msg: __('Failed to roll back the migration of the channel!')
)
groupChange: (e) =>
@ -237,7 +237,7 @@ class ChannelAccountOverview extends App.ControllerSubContent
channel_id = $(e.target).closest('.action').data('id')
new App.ControllerGenericNew(
pageData:
object: 'Email Address'
object: __('Email Address')
genericObject: 'EmailAddress'
container: @el.closest('.content')
item:
@ -250,7 +250,7 @@ class ChannelAccountOverview extends App.ControllerSubContent
id = $(e.target).closest('li').data('id')
new App.ControllerGenericEdit(
pageData:
object: 'Email Address'
object: __('Email Address')
genericObject: 'EmailAddress'
container: @el.closest('.content')
id: id
@ -271,12 +271,12 @@ class ChannelInboundEdit extends App.ControllerModal
buttonClose: true
buttonCancel: true
buttonSubmit: true
head: 'Channel'
head: __('Channel')
content: =>
configureAttributesBase = [
{ name: 'options::folder', display: 'Folder', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false, placeholder: 'optional' },
{ name: 'options::keep_on_server', display: 'Keep messages on server', tag: 'boolean', null: true, options: { true: 'yes', false: 'no' }, translate: true, default: false },
{ name: 'options::folder', display: __('Folder'), tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false, placeholder: __('optional') },
{ name: 'options::keep_on_server', display: __('Keep messages on server'), tag: 'boolean', null: true, options: { true: 'yes', false: 'no' }, translate: true, default: false },
]
@form = new App.ControllerForm(
model:
@ -323,7 +323,7 @@ class ChannelInboundEdit extends App.ControllerModal
details = xhr.responseJSON || {}
@notify
type: 'error'
msg: App.i18n.translateContent(details.error_human || details.error || 'Unable to save changes.')
msg: App.i18n.translateContent(details.error_human || details.error || __('The changes could not be saved.'))
timeout: 6000
)
@ -331,11 +331,11 @@ class ChannelGroupEdit extends App.ControllerModal
buttonClose: true
buttonCancel: true
buttonSubmit: true
head: 'Channel'
head: __('Channel')
content: =>
configureAttributesBase = [
{ name: 'group_id', display: 'Destination Group', tag: 'select', null: false, relation: 'Group', nulloption: true, filter: { active: true } },
{ name: 'group_id', display: __('Destination Group'), tag: 'select', null: false, relation: 'Group', nulloption: true, filter: { active: true } },
]
@form = new App.ControllerForm(
model:
@ -375,11 +375,11 @@ class ChannelGroupEdit extends App.ControllerModal
error: (xhr) =>
data = JSON.parse(xhr.responseText)
@formEnable(e)
@el.find('.alert').removeClass('hidden').text(data.error || 'Unable to save changes.')
@el.find('.alert').removeClass('hidden').text(data.error || __('The changes could not be saved.'))
)
class AppConfig extends App.ControllerModal
head: 'Connect Google App'
head: __('Connect Google App')
shown: true
button: 'Connect'
buttonCancel: true
@ -421,11 +421,11 @@ class AppConfig extends App.ControllerModal
@isChanged = true
@close()
fail: =>
@el.find('.alert').removeClass('hidden').text('Unable to create entry.')
@el.find('.alert').removeClass('hidden').text(__('The entry could not be created.'))
)
return
@formEnable(e)
@el.find('.alert').removeClass('hidden').text(data.error || 'Unable to verify App.')
@el.find('.alert').removeClass('hidden').text(data.error || __('App could not be verified.'))
)
App.Config.set('google', { prio: 5000, name: 'Google', parent: '#channels', target: '#channels/google', controller: App.ChannelGoogle, permission: ['admin.channel_google'] }, 'NavBarAdmin')
App.Config.set('google', { prio: 5000, name: __('Google'), parent: '#channels', target: '#channels/google', controller: App.ChannelGoogle, permission: ['admin.channel_google'] }, 'NavBarAdmin')

View file

@ -1,29 +1,29 @@
class App.ChannelMicrosoft365 extends App.ControllerTabs
requiredPermission: 'admin.channel_microsoft365'
header: 'Microsoft 365'
header: __('Microsoft 365')
constructor: ->
super
@title 'Microsoft 365', true
@title __('Microsoft 365'), true
@tabs = [
{
name: 'Accounts',
name: __('Accounts'),
target: 'c-account',
controller: ChannelAccountOverview,
},
{
name: 'Filter',
name: __('Filter'),
target: 'c-filter',
controller: App.ChannelEmailFilter,
},
{
name: 'Signatures',
name: __('Signatures'),
target: 'c-signature',
controller: App.ChannelEmailSignature,
},
{
name: 'Settings',
name: __('Settings'),
target: 'c-setting',
controller: App.SettingsArea,
params: { area: 'Email::Base' },
@ -95,10 +95,14 @@ class ChannelAccountOverview extends App.ControllerSubContent
channels.push channel
# auto redirect to gmail account linking if we have no account
if @channel_id && channels.length < 1
@new()
return
# on a channel migration we need to auto redirect
# the user to the "Add Account" functionality after
# the filled up the external credentials
if @channel_id
item = App.Channel.find(@channel_id)
if item && item.area != 'Microsoft365::Account'
@new()
return
# get all unlinked email addresses
not_used_email_addresses = []
@ -111,9 +115,14 @@ class ChannelAccountOverview extends App.ControllerSubContent
not_used_email_addresses: not_used_email_addresses
)
# on a channel creation we will auto open the edit
# dialog after the redirect back to zammad to optional
# change the inbound configuration, but not for
# migrated channel because we guess that the inbound configuration
# is already correct for them.
if @channel_id
item = App.Channel.find(@channel_id)
if item && item.options && item.options.backup_imap_classic is undefined
if item && item.area == 'Microsoft365::Account' && item.options && item.options.backup_imap_classic is undefined
@editInbound(undefined, @channel_id, true)
@channel_id = undefined
@ -136,7 +145,7 @@ class ChannelAccountOverview extends App.ControllerSubContent
e.preventDefault()
id = $(e.target).closest('.action').data('id')
new App.ControllerConfirm(
message: 'Sure?'
message: __('Are you sure?')
callback: =>
@ajax(
id: 'microsoft365_delete'
@ -206,11 +215,11 @@ class ChannelAccountOverview extends App.ControllerSubContent
@load()
@notify
type: 'success'
msg: 'Rollback of channel migration succeeded!'
msg: __('Rollback of channel migration succeeded!')
error: (data) =>
@notify
type: 'error'
msg: 'Failed to rollback migration of the channel!'
msg: __('Failed to roll back the migration of the channel!')
)
groupChange: (e) =>
@ -228,7 +237,7 @@ class ChannelAccountOverview extends App.ControllerSubContent
channel_id = $(e.target).closest('.action').data('id')
new App.ControllerGenericNew(
pageData:
object: 'Email Address'
object: __('Email Address')
genericObject: 'EmailAddress'
container: @el.closest('.content')
item:
@ -241,7 +250,7 @@ class ChannelAccountOverview extends App.ControllerSubContent
id = $(e.target).closest('li').data('id')
new App.ControllerGenericEdit(
pageData:
object: 'Email Address'
object: __('Email Address')
genericObject: 'EmailAddress'
container: @el.closest('.content')
id: id
@ -262,12 +271,12 @@ class ChannelInboundEdit extends App.ControllerModal
buttonClose: true
buttonCancel: true
buttonSubmit: true
head: 'Channel'
head: __('Channel')
content: =>
configureAttributesBase = [
{ name: 'options::folder', display: 'Folder', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'options::keep_on_server', display: 'Keep messages on server', tag: 'boolean', null: true, options: { true: 'yes', false: 'no' }, translate: true, default: false },
{ name: 'options::folder', display: __('Folder'), tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'options::keep_on_server', display: __('Keep messages on server'), tag: 'boolean', null: true, options: { true: 'yes', false: 'no' }, translate: true, default: false },
]
@form = new App.ControllerForm(
model:
@ -314,7 +323,7 @@ class ChannelInboundEdit extends App.ControllerModal
details = xhr.responseJSON || {}
@notify
type: 'error'
msg: App.i18n.translateContent(details.error_human || details.error || 'Unable to save changes.')
msg: App.i18n.translateContent(details.error_human || details.error || __('The changes could not be saved.'))
timeout: 6000
)
@ -322,11 +331,11 @@ class ChannelGroupEdit extends App.ControllerModal
buttonClose: true
buttonCancel: true
buttonSubmit: true
head: 'Channel'
head: __('Channel')
content: =>
configureAttributesBase = [
{ name: 'group_id', display: 'Destination Group', tag: 'select', null: false, relation: 'Group', nulloption: true, filter: { active: true } },
{ name: 'group_id', display: __('Destination Group'), tag: 'select', null: false, relation: 'Group', nulloption: true, filter: { active: true } },
]
@form = new App.ControllerForm(
model:
@ -366,11 +375,11 @@ class ChannelGroupEdit extends App.ControllerModal
error: (xhr) =>
data = JSON.parse(xhr.responseText)
@formEnable(e)
@el.find('.alert').removeClass('hidden').text(data.error || 'Unable to save changes.')
@el.find('.alert').removeClass('hidden').text(data.error || __('The changes could not be saved.'))
)
class AppConfig extends App.ControllerModal
head: 'Connect Microsoft 365 App'
head: __('Connect Microsoft 365 App')
shown: true
button: 'Connect'
buttonCancel: true
@ -412,11 +421,11 @@ class AppConfig extends App.ControllerModal
@isChanged = true
@close()
fail: =>
@el.find('.alert').removeClass('hidden').text('Unable to create entry.')
@el.find('.alert').removeClass('hidden').text(__('The entry could not be created.'))
)
return
@formEnable(e)
@el.find('.alert').removeClass('hidden').text(data.error || 'Unable to verify App.')
@el.find('.alert').removeClass('hidden').text(data.error || __('App could not be verified.'))
)
App.Config.set('microsoft365', { prio: 5000, name: 'Microsoft 365', parent: '#channels', target: '#channels/microsoft365', controller: App.ChannelMicrosoft365, permission: ['admin.channel_microsoft365'] }, 'NavBarAdmin')
App.Config.set('microsoft365', { prio: 5000, name: __('Microsoft 365'), parent: '#channels', target: '#channels/microsoft365', controller: App.ChannelMicrosoft365, permission: ['admin.channel_microsoft365'] }, 'NavBarAdmin')

View file

@ -1,13 +1,13 @@
class ChannelSms extends App.ControllerTabs
requiredPermission: 'admin.channel_sms'
header: 'SMS'
header: __('SMS')
constructor: ->
super
@title 'SMS', true
@title __('SMS'), true
@tabs = [
{
name: 'Accounts',
name: __('Accounts'),
target: 'c-account',
controller: ChannelSmsAccountOverview,
},
@ -136,11 +136,11 @@ class ChannelSmsAccountOverview extends App.Controller
)
class ChannelSmsAccount extends App.ControllerModal
head: 'SMS Account'
head: __('SMS Account')
buttonCancel: true
centerButtons: [
{
text: 'Test'
text: __('Test')
className: 'js-test'
}
]
@ -164,13 +164,13 @@ class ChannelSmsAccount extends App.ControllerModal
el: el.find('.js-channelAdapterSelector')
model:
configure_attributes: [
{ name: 'options::adapter', display: 'Provider', tag: 'select', null: false, options: options, nulloption: true }
{ name: 'options::adapter', display: __('Provider'), tag: 'select', null: false, options: options, nulloption: true }
]
className: ''
params: @channel
)
@renderAdapterOptions(@channel.options?.adapter, el)
el.find('[name="options::adapter"]').bind('change', (e) =>
el.find('[name="options::adapter"]').on('change', (e) =>
@renderAdapterOptions(e.target.value, el)
)
el
@ -198,7 +198,7 @@ class ChannelSmsAccount extends App.ControllerModal
el: el.find('.js-channelWebhook')
model:
configure_attributes: [
{ name: 'options::webhook', display: 'Webhook', tag: 'input', type: 'text', limit: 200, null: false, default: webhook, disabled: true },
{ name: 'options::webhook', display: __('Webhook'), tag: 'input', type: 'text', limit: 200, null: false, default: webhook, disabled: true },
]
className: ''
params: @channel
@ -262,7 +262,7 @@ class ChannelSmsAccount extends App.ControllerModal
fail: (settings, details) ->
ui.log 'errors', details
ui.formEnable(e)
ui.showAlert(details.error_human || details.error || 'Unable to update object!')
ui.showAlert(details.error_human || details.error || __('The object could not be updated.'))
)
onTest: (e) ->
@ -273,11 +273,11 @@ class ChannelSmsAccount extends App.ControllerModal
)
class ChannelSmsNotification extends App.ControllerModal
head: 'SMS Notification'
head: __('SMS Notification')
buttonCancel: true
centerButtons: [
{
text: 'Test'
text: __('Test')
className: 'js-test'
}
]
@ -303,13 +303,13 @@ class ChannelSmsNotification extends App.ControllerModal
el: el.find('.js-channelAdapterSelector')
model:
configure_attributes: [
{ name: 'options::adapter', display: 'Provider', tag: 'select', null: false, options: options, nulloption: true }
{ name: 'options::adapter', display: __('Provider'), tag: 'select', null: false, options: options, nulloption: true }
]
className: ''
params: @channel
)
@renderAdapterOptions(@channel.options?.adapter, el)
el.find('[name="options::adapter"]').bind('change', (e) =>
el.find('[name="options::adapter"]').on('change', (e) =>
@renderAdapterOptions(e.target.value, el)
)
el
@ -376,7 +376,7 @@ class ChannelSmsNotification extends App.ControllerModal
fail: (settings, details) ->
ui.log 'errors', details
ui.formEnable(e)
ui.showAlert(details.error_human || details.error || 'Unable to update object!')
ui.showAlert(details.error_human || details.error || __('The object could not be updated.'))
)
onTest: (e) ->
@ -387,15 +387,15 @@ class ChannelSmsNotification extends App.ControllerModal
)
class TestModal extends App.ControllerModal
head: 'Test SMS provider'
head: __('Test SMS provider')
buttonCancel: true
content: ->
form = new App.ControllerForm(
model:
configure_attributes: [
{ name: 'recipient', display: 'Recipient', tag: 'input', null: false }
{ name: 'message', display: 'Message', tag: 'input', null: false, default: 'Test message from Zammad' }
{ name: 'recipient', display: __('Recipient'), tag: 'input', null: false }
{ name: 'message', display: __('Message'), tag: 'input', null: false, default: __('Test message from Zammad') }
]
className: ''
)
@ -435,8 +435,8 @@ class TestModal extends App.ControllerModal
data = JSON.parse(xhr.responseText)
@formEnable(@el)
@el.find('.js-danger')
.text(@T(data.error || 'Unable to perform test'))
.text(@T(data.error || __('SMS test failed.')))
.removeClass('hide')
)
App.Config.set('SMS', { prio: 3100, name: 'SMS', parent: '#channels', target: '#channels/sms', controller: ChannelSms, permission: ['admin.channel_sms'] }, 'NavBarAdmin')
App.Config.set('SMS', { prio: 3100, name: __('SMS'), parent: '#channels', target: '#channels/sms', controller: ChannelSms, permission: ['admin.channel_sms'] }, 'NavBarAdmin')

View file

@ -63,7 +63,7 @@ class ChannelTelegram extends App.ControllerSubContent
e.preventDefault()
id = $(e.target).closest('.action').data('id')
new App.ControllerConfirm(
message: 'Sure?'
message: __('Are you sure?')
callback: =>
@ajax(
id: 'telegram_delete'
@ -104,7 +104,7 @@ class ChannelTelegram extends App.ControllerSubContent
)
class BotAdd extends App.ControllerModal
head: 'Add Telegram Bot'
head: __('Add Telegram Bot')
shown: true
button: 'Add'
buttonCancel: true
@ -149,12 +149,12 @@ class BotAdd extends App.ControllerModal
error: (xhr) =>
data = JSON.parse(xhr.responseText)
@formEnable(e)
error_message = App.i18n.translateContent(data.error || 'Unable to save Bot.')
error_message = App.i18n.translateContent(data.error || __('The Telegram bot could not be saved.'))
@el.find('.alert').removeClass('hidden').text(error_message)
)
class BotEdit extends App.ControllerModal
head: 'Telegram Account'
head: __('Telegram Account')
shown: true
buttonCancel: true
@ -197,8 +197,8 @@ class BotEdit extends App.ControllerModal
error: (xhr) =>
data = JSON.parse(xhr.responseText)
@formEnable(e)
error_message = App.i18n.translateContent(data.error || 'Unable to save changes.')
error_message = App.i18n.translateContent(data.error || __('The changes could not be saved.'))
@el.find('.alert').removeClass('hidden').text(error_message)
)
App.Config.set('Telegram', { prio: 5100, name: 'Telegram', parent: '#channels', target: '#channels/telegram', controller: ChannelTelegram, permission: ['admin.channel_telegram'] }, 'NavBarAdmin')
App.Config.set('Telegram', { prio: 5100, name: __('Telegram'), parent: '#channels', target: '#channels/telegram', controller: ChannelTelegram, permission: ['admin.channel_telegram'] }, 'NavBarAdmin')

View file

@ -102,7 +102,7 @@ class ChannelTwitter extends App.ControllerSubContent
e.preventDefault()
id = $(e.target).closest('.action').data('id')
new App.ControllerConfirm(
message: 'Sure?'
message: __('Are you sure?')
callback: =>
@ajax(
id: 'twitter_delete'
@ -143,7 +143,7 @@ class ChannelTwitter extends App.ControllerSubContent
)
class AppConfig extends App.ControllerModal
head: 'Connect Twitter App'
head: __('Connect Twitter App')
shown: true
button: 'Connect'
buttonCancel: true
@ -185,15 +185,15 @@ class AppConfig extends App.ControllerModal
@isChanged = true
@close()
fail: =>
@el.find('.alert').removeClass('hidden').text('Unable to create entry.')
@el.find('.alert').removeClass('hidden').text(__('The entry could not be created.'))
)
return
@formEnable(e)
@el.find('.alert').removeClass('hidden').text(data.error || 'Unable to verify App.')
@el.find('.alert').removeClass('hidden').text(data.error || __('App could not be verified.'))
)
class AccountEdit extends App.ControllerModal
head: 'Twitter Account'
head: __('Twitter Account')
shown: true
buttonCancel: true
@ -219,7 +219,7 @@ class AccountEdit extends App.ControllerModal
term: ''
group_id: ''
renderSearchTerms()
content.find('.js-searchTermList [name="search::term"]').last().focus()
content.find('.js-searchTermList [name="search::term"]').last().trigger('focus')
removeSearchTerm = (event) =>
index = $(event.currentTarget).attr('data-index')
@ -248,7 +248,7 @@ class AccountEdit extends App.ControllerModal
renderSearchTerms()
content.find('.js-searchTermAdd').click(addSearchTerm)
content.find('.js-searchTermAdd').on('click', addSearchTerm)
content.find('.js-searchTermList').on('click', '.js-searchTermRemove', removeSearchTerm)
content.find('.js-mentionsGroup').replaceWith createGroupSelection(@channel.options.sync.mentions.group_id, 'mentions')
@ -296,7 +296,7 @@ class AccountEdit extends App.ControllerModal
error: (xhr) =>
data = JSON.parse(xhr.responseText)
@formEnable(e)
@el.find('.alert').removeClass('hidden').text(data.error || 'Unable to save changes.')
@el.find('.alert').removeClass('hidden').text(data.error || __('The changes could not be saved.'))
)
App.Config.set('Twitter', { prio: 5000, name: 'Twitter', parent: '#channels', target: '#channels/twitter', controller: ChannelTwitter, permission: ['admin.channel_twitter'] }, 'NavBarAdmin')
App.Config.set('Twitter', { prio: 5000, name: __('Twitter'), parent: '#channels', target: '#channels/twitter', controller: ChannelTwitter, permission: ['admin.channel_twitter'] }, 'NavBarAdmin')

View file

@ -1,14 +1,14 @@
class ChannelWeb extends App.ControllerTabs
requiredPermission: 'admin.channel_web'
header: 'Web'
header: __('Web')
constructor: ->
super
@title 'Web', true
@title __('Web'), true
@tabs = [
{
name: 'Settings',
name: __('Settings'),
target: 'w-setting',
controller: App.SettingsArea, params: { area: 'CustomerWeb::Base' },
},
@ -16,4 +16,4 @@ class ChannelWeb extends App.ControllerTabs
@render()
App.Config.set('Web', { prio: 1000, name: 'Web', parent: '#channels', target: '#channels/web', controller: ChannelWeb, permission: ['admin.channel_web'] }, 'NavBarAdmin')
App.Config.set('Web', { prio: 1000, name: __('Web'), parent: '#channels', target: '#channels/web', controller: ChannelWeb, permission: ['admin.channel_web'] }, 'NavBarAdmin')

View file

@ -38,7 +38,7 @@ class App.DashboardFirstSteps extends App.Controller
e.preventDefault()
new App.InviteUser(
#container: @el.closest('.content')
head: 'Invite Colleagues'
head: __('Invite Colleagues')
screen: 'invite_agent'
)
@ -46,7 +46,7 @@ class App.DashboardFirstSteps extends App.Controller
e.preventDefault()
new App.InviteUser(
#container: @el.closest('.content')
head: 'Invite Customer'
head: __('Invite Customer')
screen: 'invite_customer'
signup: true
)
@ -82,7 +82,7 @@ class App.DashboardFirstSteps extends App.Controller
e.preventDefault()
modal = new App.ControllerModal(
head: 'Test Ticket'
head: __('Test Ticket')
#container: @el.parents('.content')
content: @testTicketLoading
shown: true

View file

@ -2,22 +2,22 @@ class App.FirstStepsClues extends App.Controller
clues: [
{
container: '.js-dashboardMenuItem'
headline: 'Dashboard'
text: 'Here you see a quick overview of your and other agents\' performance.'
headline: __('Dashboard')
text: __('Here you see a quick overview of your and other agents\' performance.')
actions: [
'hover'
]
}
{
container: '.search-holder'
headline: 'Search'
text: 'Here you can search for tickets, customers and organizations. Use the wildcard §*§ to find everything. E. g. §smi*§ or §rosent*l§. You also can use ||double quotes|| for searching phrases §"some phrase"§.'
headline: __('Search')
text: __('Here you can search for tickets, customers, and organizations. Use the asterisk §*§ to find anything, e.g. §smi*§ or §rosent*l§. You also can use ||quotation marks|| for searching phrases: §"some phrase"§.')
actions: []
}
{
container: '.user-menu .add'
headline: 'Create'
text: 'Here you can create new tickets. Also if you have the permissions you can create new customers and organizations.'
headline: __('Create')
text: __('Here you can create new tickets. Also, if you have the permission, you can create new customers and organizations.')
actions: [
'hover .navigation',
'hover .user-menu .add'
@ -25,8 +25,8 @@ class App.FirstStepsClues extends App.Controller
}
{
container: '.user-menu .user .dropdown-menu'
headline: 'Personal Settings'
text: 'Here you can sign out, change the frontend language and see your last viewed items.'
headline: __('Personal Settings')
text: __('Here you can sign out, change the frontend language, and see your last viewed items.')
actions: [
'hover .navigation',
'click .user-menu .user .js-action',
@ -35,8 +35,8 @@ class App.FirstStepsClues extends App.Controller
}
{
container: '.js-overviewsMenuItem'
headline: 'Overviews'
text: 'Here you find your ticket overviews for open, assigned and escalated tickets.'
headline: __('Overviews')
text: __('Here you find your ticket overviews for open, assigned, and escalated tickets.')
actions: [
'hover'
]

View file

@ -24,7 +24,7 @@ class Stats extends App.ControllerDashboardStatsBase
for id, channel of data.StatsTicketChannelDistribution.channels
channel.overal_percentage = Math.round((channel.inbound + channel.outbound) / totalTickets * 100) || 0
data.StatsTicketChannelDistribution.description = 'How many of your tickets are coming from email, phone, Twitter, or Facebook? (Shows percentages for both inbound and outbound tickets.)'
data.StatsTicketChannelDistribution.description = __('How many of your tickets are coming from email, phone, Twitter, or Facebook? (Shows percentages for both inbound and outbound tickets.)')
content = App.view('dashboard/stats/ticket_channel_distribution')(data)

View file

@ -6,7 +6,7 @@ class Stats extends App.ControllerDashboardStatsBase
own: 0
total: 0
data.StatsTicketEscalation.description = 'How many escalated tickets do you have open? (Mr. Bubbles gets grumpy if you have too many…)'
data.StatsTicketEscalation.description = __('How many escalated tickets do you have open? (Mr. Bubbles gets grumpy if you have too many…)')
content = App.view('dashboard/stats/ticket_escalation')(data)

View file

@ -7,7 +7,7 @@ class Stats extends App.ControllerDashboardStatsBase
in_process: 0
average_per_agent: 0
data.StatsTicketInProcess.description = 'What percentage of your tickets have you responded to, updated, or modified in some way today?'
data.StatsTicketInProcess.description = __('What percentage of your tickets have you responded to, updated, or modified in some way today?')
content = App.view('dashboard/stats/ticket_in_process')(data)

View file

@ -8,7 +8,7 @@ class Stats extends App.ControllerDashboardStatsBase
total: 0
average_per_agent: 0
data.StatsTicketLoadMeasure.description = 'Out of all open tickets (company-wide), how many are assigned to you?'
data.StatsTicketLoadMeasure.description = __('Out of all open tickets (company-wide), how many are assigned to you?')
content = App.view('dashboard/stats/ticket_load_measure')(data)

View file

@ -6,7 +6,7 @@ class Stats extends App.ControllerDashboardStatsBase
percent: 0
average_per_agent: 0
data.StatsTicketReopen.description = 'How many of your tickets have been re-opened after being marked “closed”?'
data.StatsTicketReopen.description = __('How many of your tickets have been re-opened after being marked “closed”?')
content = App.view('dashboard/stats/ticket_reopen')(data)
if @$('.ticket_reopen').length > 0

View file

@ -7,7 +7,7 @@ class Stats extends App.ControllerDashboardStatsBase
state: 'supergood'
average_per_agent: 0
data.StatsTicketWaitingTime.description = 'How long has each customer had to wait, on average, to get a response from you today?'
data.StatsTicketWaitingTime.description = __('How long did each customer have to wait, on average, to get a response from you today?')
content = App.view('dashboard/stats/ticket_waiting_time')(data)
if @$('.ticket_waiting_time').length > 0

View file

@ -10,9 +10,9 @@ App.Config.set('User', {
class: 'user'
}, 'NavBarRight' )
App.Config.set('Admin', { prio: 9000, parent: '', name: 'Admin', translate: true, target: '#manage', icon: 'cog', permission: ['admin.*'] }, 'NavBarRight')
App.Config.set('New', { prio: 20000, parent: '', name: 'New', translate: true, target: '#new', class: 'add', icon: 'plus' }, 'NavBarRight')
App.Config.set('Misc', { prio: 90000, parent: '', name: 'Tools', translate: true, target: '#tools', child: true, class: 'tools' }, 'NavBar')
App.Config.set('Admin', { prio: 9000, parent: '', name: __('Admin'), translate: true, target: '#manage', icon: 'cog', permission: ['admin.*'] }, 'NavBarRight')
App.Config.set('New', { prio: 20000, parent: '', name: __('New'), translate: true, target: '#new', class: 'add', icon: 'plus' }, 'NavBarRight')
App.Config.set('Misc', { prio: 90000, parent: '', name: __('Tools'), translate: true, target: '#tools', child: true, class: 'tools' }, 'NavBar')
# only for testing
#App.Config.set('Misc1', { prio: 1600, parent: '#tools', name: 'Test 1', target: '#test1', permission: ['admin'] }, 'NavBar')
#App.Config.set('Misc2', { prio: 1700, parent: '#tools', name: 'Test 2', target: '#test2', permission: ['admin'] }, 'NavBar')
#App.Config.set('Misc1', { prio: 1600, parent: '#tools', name: __('Test 1'), target: '#test1', permission: ['admin'] }, 'NavBar')
#App.Config.set('Misc2', { prio: 1700, parent: '#tools', name: __('Test 2'), target: '#test2', permission: ['admin'] }, 'NavBar')

View file

@ -1,10 +1,10 @@
class CheckMk extends App.ControllerIntegrationBase
featureIntegration: 'check_mk_integration'
featureName: 'Checkmk'
featureName: __('Checkmk')
featureConfig: 'check_mk_config'
description: [
['This service receives http requests or emails from %s and creates tickets with host and service.', 'Checkmk']
['If the host and service has recovered, the ticket can be closed automatically.']
[__('This service receives HTTP requests or emails from %s and creates tickets with host and service.'), 'Checkmk']
[__('If the host and service have recovered, the ticket can be closed automatically.')]
]
render: =>
@ -52,9 +52,9 @@ class Form extends App.Controller
App.Config.set(
'IntegrationCheckMk'
{
name: 'Checkmk'
name: __('Checkmk')
target: '#system/integration/check_mk'
description: 'An open source monitoring tool.'
description: __('An open-source monitoring tool.')
controller: CheckMk
state: State
permission: ['admin.integration.check_mk']

View file

@ -1,10 +1,9 @@
class Clearbit extends App.ControllerIntegrationBase
featureIntegration: 'clearbit_integration'
featureName: 'Clearbit'
featureName: __('Clearbit')
featureConfig: 'clearbit_config'
description: [
['Automatically enrich your customers and organizations with fresh, up-to-date intel. Map data directly to object fields.
']
[__('Automatically enrich your customers and organizations with fresh, up-to-date intel. Map data directly to object fields.')]
]
render: =>
@ -62,9 +61,9 @@ class Form extends App.Controller
if !@config
@config = @currentConfig()
settings = [
{ name: 'api_key', display: 'API Key', tag: 'input', type: 'text', limit: 100, null: false, placeholder: '...', note: 'Your api key.' },
{ name: 'organization_autocreate', display: 'Auto create', tag: 'boolean', type: 'boolean', null: false, note: 'Create organizations automatically if record has one.' },
{ name: 'organization_shared', display: 'Shared', tag: 'boolean', type: 'boolean', null: false, note: 'New organizations are shared.' },
{ name: 'api_key', display: __('API Key'), tag: 'input', type: 'text', limit: 100, null: false, placeholder: '...', note: __('Your API key.') },
{ name: 'organization_autocreate', display: __('Auto create'), tag: 'boolean', type: 'boolean', null: false, note: __('Create organizations automatically if record has one.') },
{ name: 'organization_shared', display: __('Shared'), tag: 'boolean', type: 'boolean', null: false, note: __('New organizations are shared.') },
]
@html App.view('integration/clearbit')(
@ -152,9 +151,9 @@ class State
App.Config.set(
'IntegrationClearbit'
{
name: 'Clearbit'
name: __('Clearbit')
target: '#system/integration/clearbit'
description: 'A powerful service to get more information about your customers.'
description: __('A powerful service to get more information about your customers.')
controller: Clearbit
state: State
permission: ['admin.integration.clearbit']

View file

@ -1,10 +1,10 @@
class Cti extends App.ControllerIntegrationBase
featureIntegration: 'cti_integration'
featureName: 'CTI (generic)'
featureName: __('CTI (generic)')
featureConfig: 'cti_config'
description: [
['This service shows you contacts of incoming calls and a caller list in realtime.']
['Also caller id of outbound calls can be changed.']
[__('This service shows you contacts of incoming calls and a caller list in realtime.')]
[__('Caller ID of outbound calls can be changed as well.')]
]
events:
'click .js-select': 'selectAll'
@ -135,7 +135,7 @@ class Form extends App.Controller
}
)
# blocked caller ids
# blocked caller IDs
config.inbound.block_caller_ids = []
@$('.js-inboundBlockCallerId .js-row').each(->
caller_id = $(@).find('input[name="caller_id"]').val()
@ -259,9 +259,9 @@ class State
App.Config.set(
'IntegrationCti'
{
name: 'CTI (generic)'
name: __('CTI (generic)')
target: '#system/integration/cti'
description: 'Generic API to integrate VoIP service provider with realtime push.'
description: __('Generic API to integrate VoIP service provider with real-time push.')
controller: Cti
state: State
}

View file

@ -1,9 +1,9 @@
class Exchange extends App.ControllerIntegrationBase
featureIntegration: 'exchange_integration'
featureName: 'Exchange'
featureName: __('Exchange')
featureConfig: 'exchange_config'
description: [
['This service enables Zammad to connect with your Exchange server.']
[__('This service enables Zammad to connect with your Exchange server.')]
]
events:
'change .js-switch input': 'switch'
@ -282,7 +282,7 @@ class ConnectionWizard extends App.ControllerWizardModal
if !_.isEmpty(detailsRaw)
details = JSON.parse(detailsRaw)
@showSlide('js-discover')
@showAlert('js-discover', details.error || 'Unable to perform backend.')
@showAlert('js-discover', details.error || __('Server operation failed.'))
)
folders: (e) =>
@ -323,7 +323,7 @@ class ConnectionWizard extends App.ControllerWizardModal
if !_.isEmpty(detailsRaw)
details = JSON.parse(detailsRaw)
@showSlide('js-bind')
@showAlert('js-bind', details.error || 'Unable to perform backend.')
@showAlert('js-bind', details.error || __('Server operation failed.'))
)
foldersShow: (alreadyShown) =>
@ -429,7 +429,7 @@ class ConnectionWizard extends App.ControllerWizardModal
if !_.isEmpty(detailsRaw)
details = JSON.parse(detailsRaw)
@showSlide('js-folders')
@showAlert('js-folders', details.error || 'Unable to perform backend.')
@showAlert('js-folders', details.error || __('Server operation failed.'))
)
mappingShow: (alreadyShown) =>
@ -554,9 +554,9 @@ class ConnectionWizard extends App.ControllerWizardModal
App.Config.set(
'IntegrationExchange'
{
name: 'Exchange'
name: __('Exchange')
target: '#system/integration/exchange'
description: 'Exchange integration for contacts management.'
description: __('Exchange integration for contacts management.')
controller: Exchange
state: State
permission: ['admin.integration.exchange']

Some files were not shown because too many files have changed in this diff Show more