Merge branch 'develop' of github.com:martini/zammad into develop

This commit is contained in:
Felix Niklas 2015-10-06 22:51:20 +02:00
commit 718b5ce736
13 changed files with 390 additions and 9 deletions

View file

@ -419,8 +419,14 @@ class App.ControllerNavSidbar extends App.ControllerContent
group.items = _.sortBy( itemsUnsorted, (item) -> return item.prio ) group.items = _.sortBy( itemsUnsorted, (item) -> return item.prio )
# set active item # check last selected item
selectedItem = undefined 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 for group in @groupsSorted
if group.items if group.items
for item in group.items for item in group.items
@ -441,15 +447,22 @@ class App.ControllerNavSidbar extends App.ControllerContent
@render(selectedItem, true) @render(selectedItem, true)
) )
render: (selectedItem, force) -> render: (selectedItem, force) =>
if !$( '.' + @configKey )[0] || 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')( @html App.view('generic/navbar_l2')(
groups: @groupsSorted groups: @groupsSorted
className: @configKey className: @configKey
) )
if selectedItem if selectedItem
@el.find('li').removeClass('active') @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( new selectedItem.controller(
el: @el.find('.main') el: @el.find('.main')

View file

@ -13,7 +13,7 @@ class App.UiElement.richtext
renderAttachment = (file) => renderAttachment = (file) =>
item.find('.attachments').append( App.view('generic/attachment_item')( item.find('.attachments').append( App.view('generic/attachment_item')(
fileName: file.filename fileName: file.filename
fileSize: @humanFileSize( file.size ) fileSize: App.Utils.humanFileSize( file.size )
store_id: file.store_id store_id: file.store_id
)) ))
item.on( item.on(
@ -82,7 +82,12 @@ class App.UiElement.richtext
@attachmentPlaceholder.removeClass('hide') @attachmentPlaceholder.removeClass('hide')
@attachmentUpload.addClass('hide') @attachmentUpload.addClass('hide')
# reset progress bar
@progressBar.width(parseInt(0) + '%')
@progressText.text('')
renderAttachment(response.data) renderAttachment(response.data)
console.log('upload complete', response.data ) console.log('upload complete', response.data )
# Called during upload progress, first parameter # Called during upload progress, first parameter

View file

@ -1500,10 +1500,27 @@ class InputsRef extends App.ControllerContent
@$('.searchableAjaxSelectPlaceholder').replaceWith( searchableAjaxSelectObject.element() ) @$('.searchableAjaxSelectPlaceholder').replaceWith( searchableAjaxSelectObject.element() )
# time and timeframe # time and timeframe
@$('.time').timepicker() @$('.js-timepicker1, .js-timepicker2').timepicker()
@$('.timeframe').timepicker @$('.timeframe').timepicker(
maxHours: 99 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' ) App.Config.set( 'layout_ref/inputs', InputsRef, 'Routes' )

View file

@ -593,6 +593,8 @@ class App.TicketZoom extends App.Controller
# reset form after save # reset form after save
@reset() @reset()
@autosaveStart()
App.TaskManager.mute(@task_key) App.TaskManager.mute(@task_key)
@fetch(ticket.id, true) @fetch(ticket.id, true)

View file

@ -196,6 +196,10 @@ class App.TicketZoomArticleNew extends App.Controller
@attachmentPlaceholder.removeClass('hide') @attachmentPlaceholder.removeClass('hide')
@attachmentUpload.addClass('hide') @attachmentUpload.addClass('hide')
# reset progress bar
@progressBar.width(parseInt(0) + '%')
@progressText.text('')
@renderAttachment(response.data) @renderAttachment(response.data)
console.log('upload complete', response.data ) console.log('upload complete', response.data )

View file

@ -4,9 +4,26 @@
<div style="max-width: 500px"> <div style="max-width: 500px">
<h2>Time</h2> <h2>Time</h2>
<p>A time of the day</p> <p>A time of the day</p>
<input type="text" value="14:40" class="time"> <input type="text" value="14:40" class="time js-timepicker1">
<p>Add class <code>time--12</code> to activate AM/PM support</p> <p>Add class <code>time--12</code> to activate AM/PM support</p>
<input type="text" value="2:40 PM" class="time time--12"> <input type="text" value="2:40 PM" class="time time--12 js-timepicker2">
<p>A date</p>
<div class="date form-group">
<div class="controls">
<input type="text" value="10/28/2015" class="form-control js-datepicker3">
</div>
</div>
<p>A date time</p>
<div class="date form-group formGroup--bundle">
<div class="controls">
<input type="text" value="10/28/2015" class="form-control js-datepicker4">
<div class="controls-label">at</div>
<input type="text" value="08:00" class="form-control time js-timepicker4">
</div>
</div>
<h2>Timeframe</h2> <h2>Timeframe</h2>
<p>A time between 00:00 and 99:99 hours</p> <p>A time between 00:00 and 99:99 hours</p>

View file

@ -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.)

View file

@ -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.)

View file

@ -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

View file

@ -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<mailto:andrea.huber@example.com>)
Bitte senden Sie noch die Texte an Herrn Bauer.
Freundliche Grüße
Günter Lässig
Lokale Daten
Music GmbH
Baustraße 123, 12345 Max City
Telefon 0123 5432114
Telefax 0123 5432139
E-Mail Günter.Lässig@example.com<mailto:Günter.Lässig@example.com>
Example. Zusammen für eine bessere Welt.
[cid:image001.png@01CE92A6.EC495B60]<http://www.example.com/>
[cid:image002.png@01CE92A6.EC495B60]<http://www.facebook.com/example.com>
[cid:image003.png@01CE92A6.EC495B60]<http://twitter.com/example>
[cid:image004.png@01CE92A6.EC495B60]<https://www.xing.com/companies/example/neu-example>
[cid:image005.jpg@01CE92A6.EC495B60]<http://www.youtube.com/example>
[cid:image006.png@01CE92A6.EC495B60]<http://www.example.com/no_cache/privatkunden/aktuelles/news-presse/newsletter.html>
Sitz der Gesellschaft: Max City, Amtsgericht Max City HRB Nr. 1234
Geschäftsführer: Bob Smith
Vorsitzender des Aufsichtsrats: Alex Marx

View file

@ -0,0 +1,58 @@
Hallo Herr Lässig,
ich habe das Ticket mal geteilt, damit wir die Themen von einander trennen können.
Freundliche Grüße
Günter Lässig
Lokale Daten
Music GmbH
Baustraße 123, 12345 Max City
Telefon 0123 5432114
Telefax 0123 5432139
E-Mail Günter.Lässig@example.com<mailto:Günter.Lässig@example.com>
Example. Zusammen für eine bessere Welt.
[cid:image001.png@01CE92A6.EC495B60]<http://www.example.com/>
[cid:image002.png@01CE92A6.EC495B60]<http://www.facebook.com/example.com>
[cid:image003.png@01CE92A6.EC495B60]<http://twitter.com/example>
[cid:image004.png@01CE92A6.EC495B60]<https://www.xing.com/companies/example/neu-example>
[cid:image005.jpg@01CE92A6.EC495B60]<http://www.youtube.com/example>
[cid:image006.png@01CE92A6.EC495B60]<http://www.example.com/no_cache/privatkunden/aktuelles/news-presse/newsletter.html>
Sitz der Gesellschaft: Max City, Amtsgericht Max City HRB Nr. 1234
Geschäftsführer: Bob Smith
Vorsitzender des Aufsichtsrats: Alex Marx
Von: Werner Smith via Znuny Projects [mailto:projects@example.com]
Gesendet: Freitag, 4. September 2015 09:33
An: Günter Lässig
Betreff: Texte einpflegen [Ticket#1114881]
Guten Morgen Herr Lässig,
ich würde Ihnen hier gern weiterhelfen.
Mit den eventbasierten Benachrichtigungen können Sie Benachrichtigungen beim Öffnen und Schließen von Tickets versenden. Dabei wird die Systemadresse der Queue, in der das Ticket ist,
als Absende-Adresse genutzt.
Wie genau kann ich Ihnen jetzt weiterhelfen? Wenn Sie möchten, kann ich Sie heute Nachmittag kurz anrufen und Ihnen direkt die Auskunft geben.
viele Grüße,
Werner Smith
--
Enterprise Services for OTRS
Znuny GmbH // Marienstraße 14 // 10117 Berlin // Germany
P: +49 (0) 30 60 98 54 18-0
F: +49 (0) 30 60 98 54 18-8
W: http://example.com
Location: Berlin - HRB 123456 B Amtsgericht Berlin-Charlottenburg
Managing Director: Martin Edenhofer

View file

@ -0,0 +1,33 @@
Guten Tag Herr Meister,
unsere OTRS-DB ist nun nicht mehr korrupt. Allerdings gibt es im Systemprotokoll von OTRS immer noch die roten Fehlermeldungen "Got no Type or TypeID!". Können Sie mir bitte mitteilen, was dies genau zu bedeuten hat?
Herr Smith möchte vor der Implementierung der neuen Verbesserungsvorschläge noch die neue OTRS und Postgres-Version einspielen. Falls Sie Zeit hätten, könnten wir trotzdem schon mal die neuen Verbesserungsvorschläge (siehe Anhang) telefonisch besprechen, ich hätte ab Donnerstag dafür Zeit. Wenn Sie wollen, können Sie mir einen Terminvorschlag senden.
Freundliche Grüße
Günter Lässig
Lokale Daten
Music GmbH
Baustraße 123, 12345 Max City
Telefon 0123 5432114
Telefax 0123 5432139
E-Mail Günter.Lässig@example.com<mailto:Günter.Lässig@example.com>
Example. Zusammen für eine bessere Welt.
[cid:image001.png@01CE92A6.EC495B60]<http://www.example.com/>
[cid:image002.png@01CE92A6.EC495B60]<http://www.facebook.com/example.com>
[cid:image003.png@01CE92A6.EC495B60]<http://twitter.com/example>
[cid:image004.png@01CE92A6.EC495B60]<https://www.xing.com/companies/example/neu-example>
[cid:image005.jpg@01CE92A6.EC495B60]<http://www.youtube.com/example>
[cid:image006.png@01CE92A6.EC495B60]<http://www.example.com/no_cache/privatkunden/aktuelles/news-presse/newsletter.html>
Sitz der Gesellschaft: Max City, Amtsgericht Max City HRB Nr. 1234
Geschäftsführer: Bob Smith
Vorsitzender des Aufsichtsrats: Alex Marx

View file

@ -0,0 +1,66 @@
# encoding: utf-8
require 'test_helper'
class EmailSignaturDetectionTest < ActiveSupport::TestCase
test 'test case I - sender a' do
# fixtures of sender a
fixture_files = [
'email_signature_detection/client_a_1.txt',
'email_signature_detection/client_a_2.txt',
'email_signature_detection/client_a_3.txt',
]
# detect signature
match_structure = ''
# tests
# 'email_signature_detection/client_a_1.txt'
result_should = {
line: 9
}
# 'email_signature_detection/client_a_2.txt'
result_should = {
line: 7
}
# 'email_signature_detection/client_a_3.txt'
result_should = {
line: 7
}
assert(true)
end
test 'test case II - sender b' do
# fixtures of sender a
fixture_files = [
'email_signature_detection/client_b_1.txt',
'email_signature_detection/client_b_2.txt',
'email_signature_detection/client_b_3.txt',
]
# detect signature
match_structure = ''
# tests
# 'email_signature_detection/client_b_1.txt'
result_should = {
line: 27
}
# 'email_signature_detection/client_b_2.txt'
result_should = {
line: 5
}
# 'email_signature_detection/client_b_3.txt'
result_should = {
line: 7
}
assert(true)
end
end