1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- # Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
- module Ticket::Subject
- =begin
- build new subject with ticket number in there
- ticket = Ticket.find(123)
- result = ticket.subject_build('some subject', is_reply_true_false)
- returns
- result = "[Ticket#1234567] some subject"
- =end
- def subject_build(subject, is_reply = false)
- # clena subject
- subject = subject_clean(subject)
- ticket_hook = Setting.get('ticket_hook')
- ticket_hook_divider = Setting.get('ticket_hook_divider')
- ticket_subject_re = Setting.get('ticket_subject_re')
- if is_reply && !ticket_subject_re.empty?
- subject = "#{ticket_subject_re}: #{subject}"
- end
- # none position
- if Setting.get('ticket_hook_position') == 'none'
- return subject
- end
- # right position
- if Setting.get('ticket_hook_position') == 'right'
- return subject + " [#{ticket_hook}#{ticket_hook_divider}#{number}]"
- end
- # left position
- "[#{ticket_hook}#{ticket_hook_divider}#{number}] " + subject
- end
- =begin
- clean subject remove ticket number and other not needed chars
- ticket = Ticket.find(123)
- result = ticket.subject_clean('[Ticket#1234567] some subject')
- returns
- result = "some subject"
- =end
- def subject_clean(subject)
- ticket_hook = Setting.get('ticket_hook')
- ticket_hook_divider = Setting.get('ticket_hook_divider')
- ticket_subject_size = Setting.get('ticket_subject_size')
- # remove all possible ticket hook formats with []
- subject = subject.gsub(/\[#{ticket_hook}: #{number}\](\s+?|)/, '')
- subject = subject.gsub(/\[#{ticket_hook}:#{number}\](\s+?|)/, '')
- subject = subject.gsub(/\[#{ticket_hook}#{ticket_hook_divider}#{number}\](\s+?|)/, '')
- # remove all possible ticket hook formats without []
- subject = subject.gsub(/#{ticket_hook}: #{number}(\s+?|)/, '')
- subject = subject.gsub(/#{ticket_hook}:#{number}(\s+?|)/, '')
- subject = subject.gsub(/#{ticket_hook}#{ticket_hook_divider}#{number}(\s+?|)/, '')
- # remove leading "..:\s" and "..[\d+]:\s" e. g. "Re: " or "Re[5]: "
- subject = subject.gsub(/^(..(\[\d+\])?:\s)+/, '')
- # resize subject based on config
- if subject.length > ticket_subject_size.to_i
- subject = subject[ 0, ticket_subject_size.to_i ] + '[...]'
- end
- subject.gsub!(/^[[:space:]]+/, '')
- subject.gsub!(/[[:space:]]+$/, '')
- subject
- end
- end
|