diff --git a/app/assets/javascripts/app/controllers/_application_controller_generic.coffee b/app/assets/javascripts/app/controllers/_application_controller_generic.coffee index 9a459f310..5aa752432 100644 --- a/app/assets/javascripts/app/controllers/_application_controller_generic.coffee +++ b/app/assets/javascripts/app/controllers/_application_controller_generic.coffee @@ -419,8 +419,14 @@ class App.ControllerNavSidbar extends App.ControllerContent group.items = _.sortBy( itemsUnsorted, (item) -> return item.prio ) - # set active item + # check last selected item selectedItem = undefined + selectedItemMeta = App.Config.get("Runtime::#{@configKey}") + keepLastMenuFor = 1000 * 60 * 10 + if selectedItemMeta && selectedItemMeta.date && new Date < new Date( selectedItemMeta.date.getTime() + keepLastMenuFor ) + selectedItem = selectedItemMeta.selectedItem + + # set active item for group in @groupsSorted if group.items for item in group.items @@ -441,15 +447,22 @@ class App.ControllerNavSidbar extends App.ControllerContent @render(selectedItem, true) ) - render: (selectedItem, force) -> - if !$( '.' + @configKey )[0] || force + render: (selectedItem, force) => + + # remember latest selected item + selectedItemMeta = + selectedItem: selectedItem + date: new Date + App.Config.set("Runtime::#{@configKey}", selectedItemMeta) + + if !$( ".#{@configKey}" )[0] || force @html App.view('generic/navbar_l2')( groups: @groupsSorted className: @configKey ) if selectedItem @el.find('li').removeClass('active') - @el.find('a[href="' + selectedItem.target + '"]').parent().addClass('active') + @el.find("a[href=\"#{selectedItem.target}\"]").parent().addClass('active') new selectedItem.controller( el: @el.find('.main') diff --git a/app/assets/javascripts/app/controllers/_ui_element/richtext.coffee b/app/assets/javascripts/app/controllers/_ui_element/richtext.coffee index db688d2be..cad84f190 100644 --- a/app/assets/javascripts/app/controllers/_ui_element/richtext.coffee +++ b/app/assets/javascripts/app/controllers/_ui_element/richtext.coffee @@ -13,7 +13,7 @@ class App.UiElement.richtext renderAttachment = (file) => item.find('.attachments').append( App.view('generic/attachment_item')( fileName: file.filename - fileSize: @humanFileSize( file.size ) + fileSize: App.Utils.humanFileSize( file.size ) store_id: file.store_id )) item.on( @@ -82,7 +82,12 @@ class App.UiElement.richtext @attachmentPlaceholder.removeClass('hide') @attachmentUpload.addClass('hide') + # reset progress bar + @progressBar.width(parseInt(0) + '%') + @progressText.text('') + renderAttachment(response.data) + console.log('upload complete', response.data ) # Called during upload progress, first parameter diff --git a/app/assets/javascripts/app/controllers/layout_ref.coffee b/app/assets/javascripts/app/controllers/layout_ref.coffee index bc1fca40f..652772000 100644 --- a/app/assets/javascripts/app/controllers/layout_ref.coffee +++ b/app/assets/javascripts/app/controllers/layout_ref.coffee @@ -1500,10 +1500,27 @@ class InputsRef extends App.ControllerContent @$('.searchableAjaxSelectPlaceholder').replaceWith( searchableAjaxSelectObject.element() ) # time and timeframe - @$('.time').timepicker() + @$('.js-timepicker1, .js-timepicker2').timepicker() - @$('.timeframe').timepicker + @$('.timeframe').timepicker( maxHours: 99 + ) + + # date picker + @$('.js-datepicker3').datepicker( + todayHighlight: true + startDate: new Date().toLocaleDateString('de-DE') # returns 25.09.2015 + format: 'dd.mm.yyyy', + container: @$('.js-datepicker3').parent() + ) + + # date time picker + @$('.js-datepicker4').datepicker( + todayHighlight: true + startDate: new Date().toLocaleDateString('en-US') # returns 9/25/2015 + container: @$('.js-datepicker4').parent() + ) + @$('.js-timepicker4').timepicker() App.Config.set( 'layout_ref/inputs', InputsRef, 'Routes' ) diff --git a/app/assets/javascripts/app/controllers/ticket_zoom.coffee b/app/assets/javascripts/app/controllers/ticket_zoom.coffee index 1235459ff..94f2e356d 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom.coffee @@ -593,6 +593,8 @@ class App.TicketZoom extends App.Controller # reset form after save @reset() + @autosaveStart() + App.TaskManager.mute(@task_key) @fetch(ticket.id, true) diff --git a/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee b/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee index 612b05927..9ec00bdac 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee @@ -196,6 +196,10 @@ class App.TicketZoomArticleNew extends App.Controller @attachmentPlaceholder.removeClass('hide') @attachmentUpload.addClass('hide') + # reset progress bar + @progressBar.width(parseInt(0) + '%') + @progressText.text('') + @renderAttachment(response.data) console.log('upload complete', response.data ) diff --git a/app/assets/javascripts/app/views/layout_ref/inputs.jst.eco b/app/assets/javascripts/app/views/layout_ref/inputs.jst.eco index 7ad2bb3d7..1c9804267 100644 --- a/app/assets/javascripts/app/views/layout_ref/inputs.jst.eco +++ b/app/assets/javascripts/app/views/layout_ref/inputs.jst.eco @@ -4,9 +4,26 @@
A time of the day
- + +Add class time--12
to activate AM/PM support
A date
+A date time
+A time between 00:00 and 99:99 hours
diff --git a/test/fixtures/email_signature_detection/client_a_1.txt b/test/fixtures/email_signature_detection/client_a_1.txt new file mode 100644 index 000000000..41beee0b8 --- /dev/null +++ b/test/fixtures/email_signature_detection/client_a_1.txt @@ -0,0 +1,28 @@ +Hi, + +uns liegt die fachliche Anforderung vor, dass eine Agent-AddNote-Benachrichtigung für die beiden o. g. TicketHistory-Typen versendet werden soll. + +Das Modul Custom/Kernel/System/Ticket/Article.pm sieht diese Benachrichtigungen nach meinem Verständnis bisher nicht vor. Dafür wäre doch eine Codeerweiterung erforderlich, oder? + +Bitte um Prüfung und Rückmeldung, vielen Dank! + +Mit freundlichen Grüßen + +Bob Smith +Berechtigungen und dez. Department +________________________________ + +Musik AG +Berechtigungen und dez. Department (ITPBM) +Kastanien 2 +12345 Hornhausen +Tel.: +49 911 6760 +Fax: +49 911 85 6760 +Mobil: +49 173 911 +E-Mail: Bob.Smith@music.com +http://www.music.com + +Musik AG | Kastanien 2 | 12345 Hornhausen +Sitz der AG: Hornhausen, HRB xxxxx | USt.-ID: DE 111222333444 +Vorstand: Marc Smith, Weber Huber +Aufsichtsrat: Max Mix (Vors.) \ No newline at end of file diff --git a/test/fixtures/email_signature_detection/client_a_2.txt b/test/fixtures/email_signature_detection/client_a_2.txt new file mode 100644 index 000000000..7812c7d82 --- /dev/null +++ b/test/fixtures/email_signature_detection/client_a_2.txt @@ -0,0 +1,26 @@ +Hi Martin, + +ich benötige von Dir eine Aufwandschätzung für ein Upgrade von x.1 auf x.5 (wir hatten schon mal diesbezüglich informiert, jetzt wollen die Entscheider Zahlen sehen). + +Vielen Dank! + +Mit freundlichen Grüßen + +Bob Smith +Berechtigungen und dez. Department +________________________________ + +Musik AG +Berechtigungen und dez. Department (ITPBM) +Kastanien 2 +12345 Hornhausen +Tel.: +49 911 6760 +Fax: +49 911 85 6760 +Mobil: +49 173 911 +E-Mail: Bob.Smith@music.com +http://www.music.com + +Musik AG | Kastanien 2 | 12345 Hornhausen +Sitz der AG: Hornhausen, HRB xxxxx | USt.-ID: DE 111222333444 +Vorstand: Marc Smith, Weber Huber +Aufsichtsrat: Max Mix (Vors.) \ No newline at end of file diff --git a/test/fixtures/email_signature_detection/client_a_3.txt b/test/fixtures/email_signature_detection/client_a_3.txt new file mode 100644 index 000000000..761a3ae36 --- /dev/null +++ b/test/fixtures/email_signature_detection/client_a_3.txt @@ -0,0 +1,59 @@ +Hi Roy, + +Du hast mich überzeugt. Ich habe in der Apache-Config entsprechende Anpassungen vorgenommen. + +Bitte nochmal testen und kurz zurückmelden, vielen Dank! + +Mit freundlichen Grüßen + +Bob Smith +Berechtigungen und dez. Department +________________________________ + +Musik AG +Berechtigungen und dez. Department (ITPBM) +Kastanien 2 +12345 Hornhausen +Tel.: +49 911 6760 +Fax: +49 911 85 6760 +Mobil: +49 173 911 +E-Mail: Bob.Smith@music.com +http://www.music.com + +Musik AG | Kastanien 2 | 12345 Hornhausen +Sitz der AG: Hornhausen, HRB xxxxx | USt.-ID: DE 111222333444 +Vorstand: Marc Smith, Weber Huber +Aufsichtsrat: Max Mix (Vors.) +Von: Roy Smith via Znuny Projects [mailto:projects@service.com] +Gesendet: Montag, 28. September 2015 08:49 +An: Smith, Bob +Betreff: VPN: hier Zugriff via Web [Ticket#1115094] + +Hallo Bob, + +mit der Umstellung des neuen VPNs hat ja alles soweit funktioniert. +Allerdings hat mir ein Entwickler von uns mitgeteilt das er nicht mehr auf https://dwpwpt4unxe01.adm.music.com/otrs/index.pl kommt. Ist dort evtl. auch die IP-Adresse in der Konfiguration des Webservers hinterlegt worden? Dann müsste diese ja auch auf 217.110.104.196 geändert werden. +Wenn ich damit richtig liege sind davon die Zugriffe auf +- https://dwpwpt4unxe01.adm.music.com/otrs/index.pl +- https://dwpwpt4unxt01.adm.music.com/otrs/index.pl +- https://wpticket.music.com/wpticket/index.pl +betroffen. + +Bist Du bitte so nett und kannst da überprüfen und ggf. eine Korrektur veranlassen? + +Danke und viele Grüße, +Roy + +Roy Smith + +-- +Enterprise Services for OTRS + +Znuny GmbH // Marienstraße 11 // 10117 Berlin // Germany + +P: +49 (0) 30 60 98 54 18-0 +F: +49 (0) 30 60 98 54 18-8 +W: http://service.com + +Location: Berlin - HRB 139852 B Amtsgericht Berlin-Charlottenburg +Managing Director: Martin Edenhofer \ No newline at end of file diff --git a/test/fixtures/email_signature_detection/client_b_1.txt b/test/fixtures/email_signature_detection/client_b_1.txt new file mode 100644 index 000000000..339b4591a --- /dev/null +++ b/test/fixtures/email_signature_detection/client_b_1.txt @@ -0,0 +1,53 @@ +Guten Tag Frau Huber, + +ich habe gerade eine Mail an Herrn Bauer geschickt, die unter anderem folgendes enthält. + +- Als Ticket-Typ steht zur Verfügung: + +A. Anfrage (Auskunft, Info, Frage) + +B. Auftrag + +C. Störung (Fehler, Problem) + +D. Default (bei E-Mail-Tickets) + +- Wenn der Tickettyp A,B,C erstmalig gesetzt wird, oder der Tickettyp von D auf A,B,C geändert wird, so soll an den Kunden der Standardtext 1,2,3 gehen + +- Wenn der Tickettyp von C auf B geändert wird, so soll an den Kunden der Standardtext 4 gehen + +- Wenn der Tickettyp von A auf B geändert wird, so soll an den Kunden der Standardtext 5 gehen + +- Wenn ein Ticket mit dem Tickettyp A,B,C geschlossen wird, so soll an den Kunden der Standardtext 6,7,8 gehen + +- Die Texte bekommen Sie von Frau Huber (andrea.huber@example.com