summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rt/Changelog664
-rw-r--r--rt/bin/rt-crontool.in86
-rw-r--r--rt/bin/rt.in4
-rw-r--r--rt/bin/webmux.pl.in3
-rwxr-xr-xrt/configure20
-rw-r--r--rt/configure.ac4
-rw-r--r--rt/etc/RT_Config.pm.in5
-rwxr-xr-xrt/etc/schema.mysql1
-rw-r--r--rt/html/Admin/Groups/index.html4
-rw-r--r--rt/html/Elements/CollectionAsTable/ParseFormat8
-rw-r--r--rt/html/Elements/EditCustomFieldSelect2
-rw-r--r--rt/html/Elements/QuickCreate2
-rw-r--r--rt/html/Elements/Quicksearch10
-rw-r--r--rt/html/Elements/SelectNewTicketQueue2
-rw-r--r--rt/html/Elements/ShowCustomFields40
-rw-r--r--rt/html/REST/1.0/Forms/ticket/default4
-rw-r--r--rt/html/REST/1.0/NoAuth/mail-gateway42
-rw-r--r--rt/html/REST/1.0/search/ticket2
-rw-r--r--rt/html/SelfService/Create.html2
-rw-r--r--rt/html/Ticket/Create.html2
-rw-r--r--rt/html/Ticket/Display.html24
-rw-r--r--rt/html/Ticket/Elements/EditCustomFields3
-rwxr-xr-xrt/html/Ticket/Elements/PreviewScrips12
-rw-r--r--rt/html/Ticket/Elements/ShowBasics28
-rw-r--r--rt/html/Ticket/Elements/ShowDates32
-rw-r--r--rt/html/Ticket/Elements/ShowHistory10
-rw-r--r--rt/html/Ticket/Elements/ShowRequestor10
-rw-r--r--rt/html/Ticket/Elements/ShowSummary4
-rw-r--r--rt/lib/RT.pm.in6
-rwxr-xr-xrt/lib/RT/Action/SendEmail.pm35
-rw-r--r--rt/lib/RT/Attachment_Overlay.pm2
-rwxr-xr-xrt/lib/RT/Condition/Generic.pm2
-rw-r--r--rt/lib/RT/CustomField_Overlay.pm12
-rw-r--r--rt/lib/RT/Date.pm23
-rw-r--r--rt/lib/RT/Group_Overlay.pm2
-rw-r--r--rt/lib/RT/I18N.pm8
-rw-r--r--rt/lib/RT/I18N/de.po3061
-rw-r--r--rt/lib/RT/I18N/pt_br.po2
-rw-r--r--rt/lib/RT/Interface/CLI.pm2
-rwxr-xr-xrt/lib/RT/Interface/Email.pm929
-rw-r--r--rt/lib/RT/Interface/Email/Auth/MailFrom.pm5
-rw-r--r--rt/lib/RT/Interface/REST.pm2
-rw-r--r--rt/lib/RT/Interface/Web.pm326
-rw-r--r--rt/lib/RT/Interface/Web/Handler.pm3
-rw-r--r--rt/lib/RT/Link_Overlay.pm4
-rw-r--r--rt/lib/RT/Links_Overlay.pm22
-rwxr-xr-xrt/lib/RT/Record.pm12
-rw-r--r--rt/lib/RT/Template_Overlay.pm103
-rw-r--r--rt/lib/RT/Ticket_Overlay.pm49
-rw-r--r--rt/lib/RT/Tickets_Overlay.pm40
-rw-r--r--rt/lib/RT/Transaction_Overlay.pm36
-rw-r--r--rt/lib/RT/URI.pm2
-rw-r--r--rt/lib/RT/URI/base.pm4
-rw-r--r--rt/lib/RT/URI/fsck_com_rt.pm17
-rw-r--r--rt/lib/t/regression/06-mime_decoding.t43
-rw-r--r--rt/lib/t/regression/06mailgateway.t181
-rw-r--r--rt/lib/t/regression/22search_tix_by_txn.t10
-rw-r--r--rt/lib/t/regression/23-web_attachments.t60
-rw-r--r--rt/sbin/rt-setup-database.in4
-rw-r--r--rt/sbin/rt-test-dependencies.in2
60 files changed, 4052 insertions, 1987 deletions
diff --git a/rt/Changelog b/rt/Changelog
index a01bc89c1..c61acace2 100644
--- a/rt/Changelog
+++ b/rt/Changelog
@@ -1,9 +1,667 @@
------------------------------------------------------------------------
-r4386 | jesse | 2006-01-12 10:52:27 -0500 (Thu, 12 Jan 2006) | 1 line
+r6239 | jesse | 2006-10-19 21:18:39 -0400 (Thu, 19 Oct 2006) | 1 line
Changed paths:
- A /rt/tags/3.4.5 (from /rt/branches/3.4-RELEASE:4385)
+ A /rt/tags/3.4.6 (from /rt/branches/3.4-RELEASE:6238)
+
+Tagged as 3.4.6 by svn RelEng 1.0
+------------------------------------------------------------------------
+r6238 | jesse | 2006-10-19 21:16:44 -0400 (Thu, 19 Oct 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/releng.cnf
+
+ r28958@pinglin: jesse | 2006-10-19 21:16:43 -0400
+ * 3.4.6
+
+------------------------------------------------------------------------
+r6153 | jesse | 2006-10-04 03:42:12 -0400 (Wed, 04 Oct 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/releng.cnf
+
+
+------------------------------------------------------------------------
+r6135 | ruz | 2006-09-30 17:38:39 -0400 (Sat, 30 Sep 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Record.pm
+
+* there is code exists that call My::Class->_ClassAccessible
+------------------------------------------------------------------------
+r5943 | jesse | 2006-09-15 15:31:25 -0400 (Fri, 15 Sep 2006) | 5 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/lib/RT/Interface/Email/Auth/MailFrom.pm
+
+ r27507@pinglin: jesse | 2006-09-15 20:30:47 +0100
+ [mail gateway] Todd Chapman discovered a case where RT's mail gateway would default to the RT::SystemUser if no valid from header were found. This could allow a malicious user to create tickets or reply to tickets, but not to gain access to data.
+
+
+
+------------------------------------------------------------------------
+r5858 | ruz | 2006-09-04 18:09:30 -0400 (Mon, 04 Sep 2006) | 7 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Transaction_Overlay.pm
+
+::OldValue and ::NewValue
+* don't load object if {Old,New}Reference is false value
+** this is hitting some cache issues and could return "random" result
+ which brakes tickets' history.
+
+Thanks to Joshua Speicher.
+
+------------------------------------------------------------------------
+r5857 | ruz | 2006-09-04 15:30:28 -0400 (Mon, 04 Sep 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Record.pm
+
+* redo search if we have deleted entries in collection
+------------------------------------------------------------------------
+r5856 | ruz | 2006-09-04 15:17:14 -0400 (Mon, 04 Sep 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Interface/Web.pm
+
+* split function ProcessObjectCustomFieldUpdates into two
+* call RedoSearch on object's custom fields values collection
+ after {Add,Delete}CustomFieldValues operations
+------------------------------------------------------------------------
+r5850 | ruz | 2006-09-04 12:49:12 -0400 (Mon, 04 Sep 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/html/Elements/EditCustomFieldSelect
+
+* drop uninit warning
+------------------------------------------------------------------------
+r5849 | ruz | 2006-09-04 12:32:29 -0400 (Mon, 04 Sep 2006) | 2 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/html/Ticket/Elements/EditCustomFields
+
+* drop unused variable
+* init index($i) with 0 to avoid warnings
+------------------------------------------------------------------------
+r5829 | ruz | 2006-08-30 16:12:48 -0400 (Wed, 30 Aug 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/I18N.pm
+
+* typo
+------------------------------------------------------------------------
+r5822 | ruz | 2006-08-29 15:10:01 -0400 (Tue, 29 Aug 2006) | 8 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/I18N.pm
+ A /rt/branches/3.4-RELEASE/lib/t/regression/06-mime_decoding.t
+
+* fix decoding of the MIME fields, this should fix:
+** problems with non-ascii names of attachments
+** problems with partly encoded fields with '=' chars
+ in not encoded parts, for example:
+
+X-MyHeader: key="plain"; key="=?encoded?="
+X-MyHeader: key="=?encoded?="; key="plain"
+
+------------------------------------------------------------------------
+r5821 | ruz | 2006-08-29 13:07:03 -0400 (Tue, 29 Aug 2006) | 2 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Action/SendEmail.pm
+
+* get rid of unint warnings
+* make a log message shorter to be more readable
+------------------------------------------------------------------------
+r5820 | ruz | 2006-08-29 13:03:36 -0400 (Tue, 29 Aug 2006) | 2 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/html/Elements/CollectionAsTable/ParseFormat
+
+* default title to empty string as we compare it with 'NEWLINE' string
+ in several places, drops uninit warnings
+------------------------------------------------------------------------
+r5819 | ruz | 2006-08-29 12:59:30 -0400 (Tue, 29 Aug 2006) | 7 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Ticket_Overlay.pm
+
+* Code:
+ $cf->Load(...)
+ $field = $cf->id;
+ unless( $field =~ /^\d+$/ )...
+ may produce unint warning if field wasn't loaded,
+ use "unless( $cf->id )" instead as we do everywhere
+
+------------------------------------------------------------------------
+r5818 | ruz | 2006-08-27 12:34:52 -0400 (Sun, 27 Aug 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/html/Ticket/Elements/ShowBasics
+ M /rt/branches/3.4-RELEASE/html/Ticket/Elements/ShowDates
+
+* add additional classes to records in tables with ticket's properties
+** so it's possible to change visiual appearance of different fields
+ like dates, queue, priority status and other
+------------------------------------------------------------------------
+r5779 | ruz | 2006-08-16 18:58:46 -0400 (Wed, 16 Aug 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/CustomField_Overlay.pm
+
+* allow user to add zero CF values
+------------------------------------------------------------------------
+r5778 | ruz | 2006-08-16 18:56:58 -0400 (Wed, 16 Aug 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/html/Elements/ShowCustomFields
+
+* display one value without html lists
+------------------------------------------------------------------------
+r5777 | ruz | 2006-08-16 18:55:37 -0400 (Wed, 16 Aug 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/html/Ticket/Elements/ShowSummary
+
+* add LeftColumn and RightColumn callbacks to the summary element
+------------------------------------------------------------------------
+r5669 | ruz | 2006-07-28 12:06:56 -0400 (Fri, 28 Jul 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/releng.cnf
+
+* bump 3.4.6rc1
+------------------------------------------------------------------------
+r5624 | jesse | 2006-07-20 13:48:07 -0400 (Thu, 20 Jul 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/html/Ticket/Elements/ShowHistory
+
+ r14229@pinglin: jesse | 2006-07-20 10:47:51 -0700
+ * The new history ordering feature was backported backwards.
+
+------------------------------------------------------------------------
+r5616 | jesse | 2006-07-19 20:40:57 -0400 (Wed, 19 Jul 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/lib/RT/Group_Overlay.pm
+
+ r14217@pinglin: jesse | 2006-07-19 17:39:08 -0700
+ * crit was being called on the wrong object. Thanks to Todd Chapman
+
+------------------------------------------------------------------------
+r5570 | kevinr | 2006-07-13 16:21:31 -0400 (Thu, 13 Jul 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/lib/RT/Condition/Generic.pm
+
+ r14836@sad-girl-in-snow: kevinr | 2006-07-13 16:17:43 -0400
+ * The RT::Condition::Generic docs were wrong... fixed.
+
+------------------------------------------------------------------------
+r5534 | ruz | 2006-07-06 11:19:46 -0400 (Thu, 06 Jul 2006) | 11 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/bin/rt-crontool.in
+
+rt-crontool
+* add --transaction argument with two possible values: 'first' and 'last'
+* add --transaction-type argument to allow users select type of transactions
+** these transactions would be passed to scrips for processing, so users
+ can use conditions, actions and templates that check or use properties of
+ transaction
+
+* also some existant actions, conditions and templates require scrip or
+ scrip action objects to process normally, as we have no these objects
+ available we now pass void (not loaded) objects. This change would allow
+ users to use notify actions with crontool.
+------------------------------------------------------------------------
+r5522 | ruz | 2006-07-04 01:39:21 -0400 (Tue, 04 Jul 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT.pm.in
+
+* we never should call exit from libs
+------------------------------------------------------------------------
+r5521 | ruz | 2006-07-04 01:38:03 -0400 (Tue, 04 Jul 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/sbin/rt-setup-database.in
+
+* report error when couldn't create CF
+------------------------------------------------------------------------
+r5520 | ruz | 2006-07-04 01:36:46 -0400 (Tue, 04 Jul 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/etc/RT_Config.pm.in
+
+* forgot to add option to config
+------------------------------------------------------------------------
+r5496 | ruz | 2006-06-30 16:09:08 -0400 (Fri, 30 Jun 2006) | 5 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/html/Ticket/Elements/ShowHistory
+
+Changes:
+* new config option $OldestTransactionsFirst that allow
+ administrator to reverse order of transactions on
+ history page
+
+------------------------------------------------------------------------
+r5482 | ruz | 2006-06-28 17:25:18 -0400 (Wed, 28 Jun 2006) | 2 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Interface/Email.pm
+ M /rt/branches/3.4-RELEASE/lib/t/regression/06mailgateway.t
+
+* add tests for unsafe mailgate commands
+* fix bugs that were introduced during Email.pm refactoring
+------------------------------------------------------------------------
+r5480 | ruz | 2006-06-27 20:05:49 -0400 (Tue, 27 Jun 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Record.pm
+
+* minor formatting
+------------------------------------------------------------------------
+r5476 | ruz | 2006-06-27 17:21:07 -0400 (Tue, 27 Jun 2006) | 2 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Link_Overlay.pm
+ M /rt/branches/3.4-RELEASE/lib/RT/Links_Overlay.pm
+ M /rt/branches/3.4-RELEASE/lib/RT/URI/base.pm
+ M /rt/branches/3.4-RELEASE/lib/RT/URI/fsck_com_rt.pm
+
+* nothing special, small changes I'd changed during
+ the hunt over a bug
+------------------------------------------------------------------------
+r5400 | ruz | 2006-06-16 20:40:24 -0400 (Fri, 16 Jun 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Interface/Email.pm
+
+* not default mail plugins has been broken during last refactoring
+** move a code back into its scope
+** don't forget to store $_ in $Class when $_ matches ^RT::Interface::Email
+------------------------------------------------------------------------
+r5317 | ruz | 2006-05-30 16:13:02 -0400 (Tue, 30 May 2006) | 5 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Ticket_Overlay.pm
+
+* If current user changes owner from somebody else to nobody user,
+ the action fails with "You can only reassign tickets that you own
+ or that are unowned", but we must change owner if he has no right
+ to own tickets in dest queue. Do it with Force and with SystemUser
+ context.
+------------------------------------------------------------------------
+r5315 | ruz | 2006-05-28 07:19:20 -0400 (Sun, 28 May 2006) | 2 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/html/Ticket/Elements/ShowRequestor
+
+* Use "Requestor.id = $requestor->id" search instead of search by email address
+ as latter is not indexed
+------------------------------------------------------------------------
+r5310 | ruz | 2006-05-26 20:39:49 -0400 (Fri, 26 May 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/URI.pm
+
+* when we could parse URI, for example object doesn't exist
+ fallback to RT::URI::base resolver, so $uri->IsLocal and
+ other methods wouldn't die but return undef
+------------------------------------------------------------------------
+r5268 | jesse | 2006-05-19 17:17:41 -0400 (Fri, 19 May 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/lib/RT/Interface/Email.pm
+
+ r13935@hualien: jesse | 2006-05-19 17:17:27 -0400
+ * There were divergent copies of this code. The EmailParser code was more correct
+
+------------------------------------------------------------------------
+r5257 | ruz | 2006-05-18 21:53:40 -0400 (Thu, 18 May 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Ticket_Overlay.pm
+
+* minor
+------------------------------------------------------------------------
+r5256 | ruz | 2006-05-18 21:45:58 -0400 (Thu, 18 May 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Interface/Email.pm
+
+* allow to complete actions in mail plugins
+------------------------------------------------------------------------
+r5249 | ruz | 2006-05-18 12:17:47 -0400 (Thu, 18 May 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Ticket_Overlay.pm
+
+* add bug comment
+------------------------------------------------------------------------
+r5238 | ruz | 2006-05-16 18:39:59 -0400 (Tue, 16 May 2006) | 2 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Ticket_Overlay.pm
+
+* really noisy warning
+ *NOTE* that option we use is not described in config
+------------------------------------------------------------------------
+r5218 | ruz | 2006-05-12 20:31:33 -0400 (Fri, 12 May 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/CustomField_Overlay.pm
+ M /rt/branches/3.4-RELEASE/lib/RT/Ticket_Overlay.pm
+ M /rt/branches/3.4-RELEASE/lib/RT/Tickets_Overlay.pm
+
+* get rid of "masks earlier declaration" warnings
+------------------------------------------------------------------------
+r5217 | ruz | 2006-05-12 17:02:54 -0400 (Fri, 12 May 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Tickets_Overlay.pm
+ M /rt/branches/3.4-RELEASE/lib/t/regression/22search_tix_by_txn.t
+
+* use SetToMidnight( Timezone => 'server' ) to calc start and end of the day
+------------------------------------------------------------------------
+r5216 | ruz | 2006-05-12 16:54:41 -0400 (Fri, 12 May 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Date.pm
+
+* add Timezone argument in SetToMidnight
+------------------------------------------------------------------------
+r5209 | ruz | 2006-05-11 18:31:58 -0400 (Thu, 11 May 2006) | 10 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/html/Ticket/Display.html
+
+* user do next steps:
+ 1) open ticket #1
+ 2) click reply
+ 3) upload attachment
+ 4) open ticket #2 in another browser window
+ 5) send reply to the ticket #1
+ RT looses uploaded attachment due to step 4) as RT tries
+ to add attchement to the ticket #2 and drops them from session.
+ As solution don't ProcessTicketMessage if there is attachments,
+ but only if there is real update message.
+------------------------------------------------------------------------
+r5208 | ruz | 2006-05-11 18:24:17 -0400 (Thu, 11 May 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Interface/Email.pm
+
+* if ( not $xxx || $xxx->foo ) is equivalent to
+ if ( not ( $xxx || $xxx->foo ) ) due to perl5 rules
+ which is not expected behaviour
+------------------------------------------------------------------------
+r5207 | ruz | 2006-05-11 16:56:24 -0400 (Thu, 11 May 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Transaction_Overlay.pm
+
+* more checks on attachments processing
+------------------------------------------------------------------------
+r5206 | ruz | 2006-05-11 16:48:53 -0400 (Thu, 11 May 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Interface/Web.pm
+
+* return values checking and more logging on errors
+------------------------------------------------------------------------
+r5187 | jesse | 2006-05-09 00:48:10 -0400 (Tue, 09 May 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/lib/RT/Interface/Email.pm
+
+ r13332@hualien: jesse | 2006-05-09 00:47:49 -0400
+ * Mismatched parens
+
+------------------------------------------------------------------------
+r5186 | jesse | 2006-05-08 22:56:20 -0400 (Mon, 08 May 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/html/REST/1.0/NoAuth/mail-gateway
+
+ r13330@hualien: jesse | 2006-05-08 22:55:56 -0400
+ * Reed Loden caught a perltidy error that, somewhat terrifiyingly, was still a valid mason page
+
+------------------------------------------------------------------------
+r5185 | jesse | 2006-05-08 22:32:19 -0400 (Mon, 08 May 2006) | 4 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/html/REST/1.0/NoAuth/mail-gateway
+ M /rt/branches/3.4-RELEASE/lib/RT/Interface/Email.pm
+
+ r13315@hualien: jesse | 2006-05-08 22:31:30 -0400
+ * Mail gateway refactoring to make added functioanlity a bit easier.
+ No (intentional) functional changes.
+
+------------------------------------------------------------------------
+r5184 | jesse | 2006-05-08 22:32:10 -0400 (Mon, 08 May 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/lib/RT/Interface/Email.pm
+
+ r13314@hualien: jesse | 2006-05-08 12:14:26 -0400
+ * Minor reformatting
+
+------------------------------------------------------------------------
+r5183 | jesse | 2006-05-08 22:31:56 -0400 (Mon, 08 May 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/html/Admin/Groups/index.html
+
+ r13313@hualien: jesse | 2006-05-08 12:01:55 -0400
+ * Finding disabled groups should actually find them, now
+
+------------------------------------------------------------------------
+r5118 | jesse | 2006-04-25 22:43:31 -0400 (Tue, 25 Apr 2006) | 5 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/html/REST/1.0/search/ticket
+
+ r11882@hualien: jesse | 2006-04-25 22:43:11 -0400
+ * Mark Eichin picked up that http://lists.fsck.com/pipermail/rt-devel/2004-August/006216.html had never been applied.
+
+ rt ls -l broke because of it, if your RT server wasn't at /
+
+------------------------------------------------------------------------
+r5116 | ruz | 2006-04-25 19:35:09 -0400 (Tue, 25 Apr 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/t/regression/23-web_attachments.t
+
+* get queue ID from page
+------------------------------------------------------------------------
+r5115 | ruz | 2006-04-25 19:24:45 -0400 (Tue, 25 Apr 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/html/Elements/SelectNewTicketQueue
+
+* (cond) && 'selected' outputs 0 if condition fails on my system
+------------------------------------------------------------------------
+r5066 | ruz | 2006-04-24 20:21:32 -0400 (Mon, 24 Apr 2006) | 1 line
+Changed paths:
+ A /rt/branches/3.4-RELEASE/lib/t/regression/23-web_attachments.t
+
+* simple tests for Attachments manipulation from web interface
+------------------------------------------------------------------------
+r5065 | ruz | 2006-04-24 17:25:15 -0400 (Mon, 24 Apr 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Attachment_Overlay.pm
+
+* convert only if $enc'oding contains something
+------------------------------------------------------------------------
+r5064 | ruz | 2006-04-24 16:42:43 -0400 (Mon, 24 Apr 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/html/SelfService/Create.html
+ M /rt/branches/3.4-RELEASE/html/Ticket/Create.html
+
+* max subject is 200 character long
+------------------------------------------------------------------------
+r5060 | jesse | 2006-04-24 10:49:40 -0400 (Mon, 24 Apr 2006) | 10 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/html/REST/1.0/Forms/ticket/default
+
+ r11842@hualien: jesse | 2006-04-24 10:49:13 -0400
+ The following patch adds the useful LastUpdated field to the fields
+ returned through the REST interface.
+ David - who starts to wonder if his patches are actually read by someone :-)
+ --
+ David Schweikert | phone: +41 44 632 7019
+ System manager ISG.EE | walk: ETH Zentrum, ETL F24.1
+ ETH Zurich, Switzerland | web: http://people.ee.ethz.ch/dws
+
+
+------------------------------------------------------------------------
+r5047 | ruz | 2006-04-17 20:40:06 -0400 (Mon, 17 Apr 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE/html/Ticket/Elements/PreviewScrips
+
+* check and report error to the logs
+------------------------------------------------------------------------
+r4924 | jesse | 2006-03-30 21:07:23 -0500 (Thu, 30 Mar 2006) | 7 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/config.layout
+
+ r10636@hualien: jesse | 2006-03-31 11:06:57 +0900
+ RT-Ticket: 7398
+ RT-Status: resolved
+ RT-Update: correspond
+
+ * Added a "RH" RedHat layout option to config.layout -- Paulo Matos
+
+------------------------------------------------------------------------
+r4847 | alexmv | 2006-03-28 15:50:07 -0500 (Tue, 28 Mar 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/lib/RT/Record.pm
+
+ r11918@zoq-fot-pik: chmrr | 2006-03-28 15:49:56 -0500
+ * Backport TXN fixes from 3.7 and 3.5
+
+------------------------------------------------------------------------
+r4814 | jesse | 2006-03-23 22:40:37 -0500 (Thu, 23 Mar 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/lib/RT/Interface/Web/Handler.pm
+
+ r10436@hualien: jesse | 2006-03-23 22:40:25 -0500
+ * It helps when there aren't typos
+
+------------------------------------------------------------------------
+r4799 | jesse | 2006-03-23 01:37:59 -0500 (Thu, 23 Mar 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/lib/RT/Interface/Web/Handler.pm
+
+ r30313@truegrounds: jesse | 2006-03-23 01:36:27 -0500
+ * Better mp2 bulletproofing
+
+------------------------------------------------------------------------
+r4686 | jesse | 2006-03-04 17:47:46 -0500 (Sat, 04 Mar 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/html/REST/1.0/Forms/ticket/default
+
+ r22962@truegrounds: jesse | 2006-01-25 05:18:09 -0800
+ * Updated mandatory fields for ticket creation forms
+
+------------------------------------------------------------------------
+r4498 | alexmv | 2006-02-04 18:34:51 -0500 (Sat, 04 Feb 2006) | 8 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/html/Elements/QuickCreate
+
+ r8937@zoq-fot-pik: chmrr | 2006-02-04 18:33:57 -0500
+ RT-Ticket: 7329
+ RT-Status: resolved
+ RT-Update: correspond
+
+ * Use SelectNewTicketQueue instead of SelectQueue
+
+
+------------------------------------------------------------------------
+r4497 | alexmv | 2006-02-04 18:34:45 -0500 (Sat, 04 Feb 2006) | 4 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/bin/webmux.pl.in
+
+ r8936@zoq-fot-pik: chmrr | 2006-02-04 18:24:38 -0500
+ * Only rmtree if we have something to rm; keeps rmtree from
+ complaining about 'Not root path(s) specified'
+
+------------------------------------------------------------------------
+r4448 | kevinr | 2006-01-30 19:25:47 -0500 (Mon, 30 Jan 2006) | 7 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/lib/RT/I18N/de.po
+
+ r10537@SAD-GIRL-IN-SNOW: kevinr | 2006-01-30 19:20:52 -0500
+ RT-Ticket: 7289
+ RT-Status: resolved
+ RT-Update: correspond
+
+ Updated German translation (thanks to Thorsten Brumm)
+
+------------------------------------------------------------------------
+r4445 | jesse | 2006-01-25 07:50:07 -0500 (Wed, 25 Jan 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/bin/rt.in
+
+ r22960@truegrounds: jesse | 2006-01-25 13:47:07 +0100
+ * a couple added lines of docs to the cli
+
+------------------------------------------------------------------------
+r4444 | jesse | 2006-01-25 07:11:16 -0500 (Wed, 25 Jan 2006) | 12 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/etc/schema.Oracle
+
+ r22958@truegrounds: jesse | 2006-01-25 13:08:34 +0100
+ From: Joop van de Wege <JoopvandeWege@mococo.nl>
+ Message-Id: <20060125125248.1A97.JOOPVANDEWEGE@mococo.nl>
+
+ > There is atleast one problem that I have spotted and that is that
+ > schema.Oracle contains two empty lines in CREATE TABLE
+ > ObjectCustomFieldValues which don't belong there.
+ > That is the second set of errors you get. The first is an indication
+ > that an sequence with that name already exists in the schema of that
+ > Oracle users you're RT installing in.
+
+
+------------------------------------------------------------------------
+r4438 | jesse | 2006-01-24 07:49:37 -0500 (Tue, 24 Jan 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/sbin/rt-test-dependencies.in
+
+ r22894@truegrounds: jesse | 2006-01-24 13:44:05 +0100
+ * Note that our SQLite dependency is 1.0
+
+------------------------------------------------------------------------
+r4406 | alexmv | 2006-01-19 00:19:31 -0500 (Thu, 19 Jan 2006) | 1 line
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+
+
+------------------------------------------------------------------------
+r4405 | alexmv | 2006-01-19 00:19:24 -0500 (Thu, 19 Jan 2006) | 3 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE
+ M /rt/branches/3.4-RELEASE/etc/schema.mysql
+
+ r8697@zoq-fot-pik: chmrr | 2006-01-19 00:18:21 -0500
+ * Drop the one index that is too long for mysql 5 (curse you, unicode!)
+
+------------------------------------------------------------------------
+r4399 | ruz | 2006-01-18 16:31:46 -0500 (Wed, 18 Jan 2006) | 5 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Template_Overlay.pm
+
+* CurrentUserHasQueueRight handles global templates natively
+ we don't need to check queue value
+* return error message from _ParseContent
+* check error status in Parser more accurate
+
+------------------------------------------------------------------------
+r4398 | ruz | 2006-01-18 16:28:41 -0500 (Wed, 18 Jan 2006) | 6 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/lib/RT/Action/SendEmail.pm
+
+* handle SIGPIPE, could happen if sendmail closes pipe before
+ we output all message
+* handle SIGCHLD with default handler to get exit status from sendmail
+* handle errors in 'close', system errors or sendmail exit with error
+* only send warn on the error exit status
+
+------------------------------------------------------------------------
+r4397 | ruz | 2006-01-18 16:26:31 -0500 (Wed, 18 Jan 2006) | 2 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/html/Elements/CollectionAsTable/ParseFormat
+
+* load and precompile only reqexp we need
+
+------------------------------------------------------------------------
+r4396 | ruz | 2006-01-18 16:15:46 -0500 (Wed, 18 Jan 2006) | 7 lines
+Changed paths:
+ M /rt/branches/3.4-RELEASE/html/Elements/Quicksearch
+ M /rt/branches/3.4-RELEASE/lib/RT/Tickets_Overlay.pm
+
+* in _EnumLimit load referenced object only if value
+ is defined and is not number, this could safe several
+ fetches from caches or in worst case from DB
+* use this advantage in Quicksearch element,
+ change in load time should be noticable on the systems
+ with many queues
-Tagged as 3.4.5 by svn RelEng 1.0
------------------------------------------------------------------------
r4385 | jesse | 2006-01-12 10:48:22 -0500 (Thu, 12 Jan 2006) | 3 lines
Changed paths:
diff --git a/rt/bin/rt-crontool.in b/rt/bin/rt-crontool.in
index 76b08c344..0cfc4a9fc 100644
--- a/rt/bin/rt-crontool.in
+++ b/rt/bin/rt-crontool.in
@@ -75,19 +75,28 @@ unless ( $CurrentUser->Id ) {
}
my ( $search, $condition, $action, $search_arg, $condition_arg, $action_arg,
- $template_id, $help, $verbose );
-GetOptions( "search=s" => \$search,
- "search-arg=s" => \$search_arg,
- "condition=s" => \$condition,
- "condition-arg=s" => \$condition_arg,
- "action-arg=s" => \$action_arg,
- "action=s" => \$action,
- "template-id=s" => \$template_id,
- "help" => \$help,
- "verbose|v" => \$verbose );
+ $template_id, $transaction, $transaction_type, $help, $verbose );
+GetOptions( "search=s" => \$search,
+ "search-arg=s" => \$search_arg,
+ "condition=s" => \$condition,
+ "condition-arg=s" => \$condition_arg,
+ "action-arg=s" => \$action_arg,
+ "action=s" => \$action,
+ "template-id=s" => \$template_id,
+ "transaction=s" => \$transaction,
+ "transaction-type=s" => \$transaction_type,
+ "help" => \$help,
+ "verbose|v" => \$verbose );
help() if $help or not $search or not $action;
+$transaction ||= 'first';
+unless ( $transaction =~ /^(first|last)$/i ) {
+ print STDERR loc("--transaction argument could be only 'first' or 'last'");
+ exit 1;
+}
+$transaction = lc($transaction) eq 'first'? 'ASC': 'DESC';
+
# We _must_ have a search object
load_module($search);
load_module($action) if ($action);
@@ -99,6 +108,8 @@ if ($template_id) {
$template_obj = RT::Template->new($CurrentUser);
$template_obj->Load($template_id);
}
+my $void_scrip = RT::Scrip->new( $CurrentUser );
+my $void_scrip_action = RT::ScripAction->new( $CurrentUser );
#At the appointed time:
@@ -119,11 +130,20 @@ my $tickets = $search->TicketsObj;
while ( my $ticket = $tickets->Next() ) {
print $ticket->Id() . ": " if ($verbose);
+ my $transaction = get_transaction($ticket);
+ print loc("Using transaction #[_1]...", $transaction->id)
+ if $verbose && $transaction;
+
# perform some more advanced check
if ($condition) {
- my $condition_obj = $condition->new( TicketObj => $ticket,
- Argument => $condition_arg,
- CurrentUser => $CurrentUser );
+ my $condition_obj = $condition->new(
+ TransactionObj => $transaction,
+ TicketObj => $ticket,
+ ScripObj => $void_scrip,
+ TemplateObj => $template_obj,
+ Argument => $condition_arg,
+ CurrentUser => $CurrentUser,
+ );
# if the condition doesn't apply, get out of here
@@ -133,10 +153,13 @@ while ( my $ticket = $tickets->Next() ) {
#prepare our action
my $action_obj = $action->new(
- TicketObj => $ticket,
- TemplateObj => $template_obj,
- Argument => $action_arg,
- CurrentUser => $CurrentUser
+ TicketObj => $ticket,
+ TransactionObj => $transaction,
+ TemplateObj => $template_obj,
+ Argument => $action_arg,
+ ScripObj => $void_scrip,
+ ScripActionObj => $void_scrip_action,
+ CurrentUser => $CurrentUser,
);
#if our preparation, move onto the next ticket
@@ -148,6 +171,26 @@ while ( my $ticket = $tickets->Next() ) {
print loc("Action committed.\n") if ($verbose);
}
+=head2 get_transaction
+
+Takes ticket and returns its transaction acording to command
+line arguments C<--transaction> and <--transaction-type>.
+
+=cut
+
+sub get_transaction {
+ my $ticket = shift;
+ my $txns = $ticket->Transactions;
+ $txns->OrderByCols(
+ { FIELD => 'Created', ORDER => $transaction },
+ { FIELD => 'id', ORDER => $transaction },
+ );
+ $txns->Limit( FIELD => 'Type', VALUE => $transaction_type )
+ if $transaction_type;
+ $txns->RowsPerPage(1);
+ return $txns->First;
+}
+
# {{{ load_module
=head2 load_module
@@ -207,6 +250,15 @@ sub help {
. loc( "[_1] - An argument to pass to [_2]", "--action-argument", "--action" )
. "\n";
print " "
+ . loc( "[_1] - Specify id of the template you want to use", "--template-id" )
+ . "\n";
+ print " "
+ . loc( "[_1] - Specify if you want to use either 'first' or 'last' tarnsaction", "--transaction" )
+ . "\n";
+ print " "
+ . loc( "[_1] - Specify the type of a transaction you want to use", "--transaction-type" )
+ . "\n";
+ print " "
. loc( "[_1] - Output status updates to STDOUT", "--verbose" ) . "\n";
print "\n";
print "\n";
diff --git a/rt/bin/rt.in b/rt/bin/rt.in
index d12460b06..c80577f4a 100644
--- a/rt/bin/rt.in
+++ b/rt/bin/rt.in
@@ -1673,13 +1673,15 @@ Text:
-t type Specifies object type.
-f a,b,c Restrict the display to the specified fields.
-S var=val Submits the specified variable with the request.
-
+ -v Verbose display
Examples:
rt show -t ticket -f id,subject,status 1-3
rt show ticket/3/attachments/29
rt show ticket/3/attachments/29/content
rt show ticket/1-3/links
+ rt show ticket/3/history
+ rt show -v ticket/3/history
rt show -t user 2
--
diff --git a/rt/bin/webmux.pl.in b/rt/bin/webmux.pl.in
index 73b10143d..4cc4d6128 100644
--- a/rt/bin/webmux.pl.in
+++ b/rt/bin/webmux.pl.in
@@ -95,7 +95,8 @@ if ($ENV{'MOD_PERL'} && !$RT::DevelMode) {
use File::Path qw( rmtree );
use File::Glob qw( bsd_glob );
- rmtree([ bsd_glob("$RT::MasonDataDir/obj/*") ], 0, 1);
+ my @files = bsd_glob("$RT::MasonDataDir/obj/*");
+ rmtree([ @files ], 0, 1) if @files;
}
sub handler {
diff --git a/rt/configure b/rt/configure
index b1c5bba71..de6576b8b 100755
--- a/rt/configure
+++ b/rt/configure
@@ -1,7 +1,7 @@
#! /bin/sh
# From configure.ac Revision: 3739 .
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for RT 3.4.5.
+# Generated by GNU Autoconf 2.59 for RT 3.4.6.
#
# Report bugs to <rt-bugs@fsck.com>.
#
@@ -270,8 +270,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='RT'
PACKAGE_TARNAME='rt'
-PACKAGE_VERSION='3.4.5'
-PACKAGE_STRING='RT 3.4.5'
+PACKAGE_VERSION='3.4.6'
+PACKAGE_STRING='RT 3.4.6'
PACKAGE_BUGREPORT='rt-bugs@fsck.com'
ac_unique_file="lib/RT.pm.in"
@@ -729,7 +729,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures RT 3.4.5 to adapt to many kinds of systems.
+\`configure' configures RT 3.4.6 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -786,7 +786,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of RT 3.4.5:";;
+ short | recursive ) echo "Configuration of RT 3.4.6:";;
esac
cat <<\_ACEOF
@@ -927,7 +927,7 @@ fi
test -n "$ac_init_help" && exit 0
if $ac_init_version; then
cat <<\_ACEOF
-RT configure 3.4.5
+RT configure 3.4.6
generated by GNU Autoconf 2.59
Copyright (C) 2003 Free Software Foundation, Inc.
@@ -941,7 +941,7 @@ cat >&5 <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by RT $as_me 3.4.5, which was
+It was created by RT $as_me 3.4.6, which was
generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@
@@ -1283,7 +1283,7 @@ rt_version_major=3
rt_version_minor=4
-rt_version_patch=5
+rt_version_patch=6
test "x$rt_version_major" = 'x' && rt_version_major=0
test "x$rt_version_minor" = 'x' && rt_version_minor=0
@@ -2523,7 +2523,7 @@ _ASBOX
} >&5
cat >&5 <<_CSEOF
-This file was extended by RT $as_me 3.4.5, which was
+This file was extended by RT $as_me 3.4.6, which was
generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -2578,7 +2578,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-RT config.status 3.4.5
+RT config.status 3.4.6
configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
diff --git a/rt/configure.ac b/rt/configure.ac
index 0d38ba482..3f33c3b82 100644
--- a/rt/configure.ac
+++ b/rt/configure.ac
@@ -3,11 +3,11 @@ dnl
dnl Process this file with autoconf to produce a configure script
dnl
dnl Embed in generated ./configure script the following CVS info:
-AC_REVISION($Revision: 1.1.1.6 $)dnl
+AC_REVISION($Revision: 1.1.1.6.2.1 $)dnl
dnl Setup autoconf
AC_PREREQ(2.53)
-AC_INIT(RT, [3.4.5], [rt-bugs@fsck.com])
+AC_INIT(RT, [3.4.6], [rt-bugs@fsck.com])
AC_CONFIG_SRCDIR([lib/RT.pm.in])
dnl Extract RT version number components
diff --git a/rt/etc/RT_Config.pm.in b/rt/etc/RT_Config.pm.in
index 10d46eb50..64fcf0025 100644
--- a/rt/etc/RT_Config.pm.in
+++ b/rt/etc/RT_Config.pm.in
@@ -391,6 +391,11 @@ Set($WebFlushDbCacheEveryRequest, '1');
Set($MaxInlineBody, 13456);
+# By default, RT shows newest transactions at the bottom of the ticket
+# history page, if you want see them at the top set this to '0'.
+
+Set($OldestTransactionsFirst, '1');
+
# $MyTicketsLength is the length of the owned tickets table on the
# front page. For some people, the default of 10 isn't big enough
# to get a feel for how much work needs to be done before you get
diff --git a/rt/etc/schema.mysql b/rt/etc/schema.mysql
index 60f1abae2..b7d53f884 100755
--- a/rt/etc/schema.mysql
+++ b/rt/etc/schema.mysql
@@ -58,7 +58,6 @@ CREATE TABLE Links (
PRIMARY KEY (id)
) TYPE=InnoDB;
-CREATE UNIQUE INDEX Links1 ON Links (Base, Target, Type) ;
CREATE INDEX Links2 ON Links (Base, Type) ;
CREATE INDEX Links3 ON Links (Target, Type) ;
CREATE INDEX Links4 ON Links (Type,LocalBase);
diff --git a/rt/html/Admin/Groups/index.html b/rt/html/Admin/Groups/index.html
index 073440696..50857e5f4 100644
--- a/rt/html/Admin/Groups/index.html
+++ b/rt/html/Admin/Groups/index.html
@@ -78,6 +78,10 @@ $Groups->LimitToUserDefinedGroups();
my $title = loc('Select a group');
my $caption;
+if ($FindDisabledGroups) {
+ $Groups->FindAllRows();
+}
+
if (length $GroupString) {
$caption = loc("Groups matching search criteria");
if ($GroupField =~ /^CustomField-(\d+)/) {
diff --git a/rt/html/Elements/CollectionAsTable/ParseFormat b/rt/html/Elements/CollectionAsTable/ParseFormat
index 57434efe2..be56dea76 100644
--- a/rt/html/Elements/CollectionAsTable/ParseFormat
+++ b/rt/html/Elements/CollectionAsTable/ParseFormat
@@ -48,7 +48,7 @@ $Format
</%ARGS>
<%init>
-use Regexp::Common;
+use Regexp::Common qw/delimited/;
my @Columns;
while ($Format =~ /($RE{delimited}{-delim=>qq{\'"}}|[{}\w.]+)/go) {
@@ -59,7 +59,9 @@ while ($Format =~ /($RE{delimited}{-delim=>qq{\'"}}|[{}\w.]+)/go) {
substr($col,-1,1) = "";
}
- my $colref;
+ my $colref = {
+ title => '',
+ };
if ( $col =~ s!/STYLE:([^/]+)!!io ) {
$colref->{'style'} = $1;
@@ -88,7 +90,7 @@ while ($Format =~ /($RE{delimited}{-delim=>qq{\'"}}|[{}\w.]+)/go) {
$colref->{'attribute'} = $col;
}
- if ( !$colref->{'title'} && grep { /^__(.*?)__$/io }
+ if ( !$colref->{'title'} && grep { /^__(.+?)__$/io }
@{ $colref->{'output'} } )
{
$colref->{'title'} = $1;
diff --git a/rt/html/Elements/EditCustomFieldSelect b/rt/html/Elements/EditCustomFieldSelect
index 2a2a64a1d..5dd4d0d69 100644
--- a/rt/html/Elements/EditCustomFieldSelect
+++ b/rt/html/Elements/EditCustomFieldSelect
@@ -51,7 +51,7 @@
% while ($CFVs and my $value = $CFVs->Next ) {
<option value="<%$value->Name%>"
% if ($Values) {
- <% $Values->HasEntry($value->Name) && ($selected = 1) && 'SELECTED' %>
+ <% ($Values->HasEntry($value->Name)||'') && ($selected = 1) && 'SELECTED' %>
% } elsif ($Default) {
<% (ref $Default ? (grep {$_ eq $value->Name} @{$Default}) : ($Default eq $value->Name))
&& ($selected = 1) && 'SELECTED' %>
diff --git a/rt/html/Elements/QuickCreate b/rt/html/Elements/QuickCreate
index 0b97121a4..8fdce4cbc 100644
--- a/rt/html/Elements/QuickCreate
+++ b/rt/html/Elements/QuickCreate
@@ -52,7 +52,7 @@
<font size="-2"><&|/l&>Subject</&>:<br><input size="30" name="Subject"></font>
</td>
<td>
-<font size="-2"><&|/l&>Queue</&>:<br><& /Elements/SelectQueue, Name => 'Queue', ShowNullOption => 0 &></font>
+<font size="-2"><&|/l&>Queue</&>:<br><& /Elements/SelectNewTicketQueue, Name => 'Queue' &></font>
</td>
<td>
<font size="-2"><&|/l&>Owner</&>:<br>
diff --git a/rt/html/Elements/Quicksearch b/rt/html/Elements/Quicksearch
index d54f72e88..5f1af0f2d 100644
--- a/rt/html/Elements/Quicksearch
+++ b/rt/html/Elements/Quicksearch
@@ -57,12 +57,10 @@ my $i;
while (my $queue = $Queues->Next) {
next unless ($queue->CurrentUserHasRight('ShowTicket'));
- my $name = $queue->Name;
- $name =~ s|(['\\])|\\$1|g;
-
- my $new_q = "Queue = '$name' AND Status = 'new'";
- my $open_q = "Queue = '$name' AND Status = 'open'";
- my $all_q = "Queue = '$name' AND (Status = 'open' OR Status = 'new')";
+ my $qid = $queue->Id;
+ my $new_q = "Queue = '$qid' AND Status = 'new'";
+ my $open_q = "Queue = '$qid' AND Status = 'open'";
+ my $all_q = "Queue = '$qid' AND (Status = 'open' OR Status = 'new')";
$Tickets->FromSQL($open_q);
my $open = $Tickets->Count();
diff --git a/rt/html/Elements/SelectNewTicketQueue b/rt/html/Elements/SelectNewTicketQueue
index d47b58a83..51b89b2a6 100644
--- a/rt/html/Elements/SelectNewTicketQueue
+++ b/rt/html/Elements/SelectNewTicketQueue
@@ -48,7 +48,7 @@
% foreach my $queue (@{$session{'create_in_queues'}}) {
<OPTION
VALUE="<%$queue->{'id'}%>"
- <%$Default && ($queue->{'id'} == $Default) && 'SELECTED'%>>
+ <% $Default && $queue->{'id'} == $Default ? 'SELECTED': ''%>>
<%$queue->{'Name'}%>
% if (($Verbose) and ($queue->{'Description'}) ){
(<%$queue->{'Description'}%>)
diff --git a/rt/html/Elements/ShowCustomFields b/rt/html/Elements/ShowCustomFields
index 986184120..199fe3606 100644
--- a/rt/html/Elements/ShowCustomFields
+++ b/rt/html/Elements/ShowCustomFields
@@ -44,36 +44,42 @@
%#
%# END BPS TAGGED BLOCK }}}
<table>
-% my @entry_fields;
-% while (my $CustomField = $CustomFields->Next()) {
-% my $Values = $Object->CustomFieldValues($CustomField->Id);
+% while ( my $CustomField = $CustomFields->Next ) {
+% my $Values = $Object->CustomFieldValues( $CustomField->Id );
+% my $count = $Values->Count;
<tr>
- <td class="label"><%$CustomField->Name%>:</td>
+ <td class="label"><% $CustomField->Name %>:</td>
<td class="value">
+% unless ( $count ) {
+<i><&|/l&>(no value)</&></i>
+% } elsif ( $count == 1 ) {
+% $print_value->( $CustomField, $Values->First );
+% } else {
<ul>
-% while (my $Value = $Values->Next()) {
-<li>
-% my $comp = "ShowCustomField".$CustomField->Type;
-% if ($m->comp_exists($comp)) {
-<& $comp, Object => $Value &>
-% } else {
-<%$Value->Content%>
-% }
-</li>
-% }
-% unless ($Values->Count()) {
-<li><i><&|/l&>(no value)</&></i></li>
+% while ( my $Value = $Values->Next ) {
+<li><% $print_value->( $CustomField, $Value ) |n %></li>
% }
</ul>
+% }
</td>
</tr>
% }
</table>
<%INIT>
my $CustomFields = $Object->CustomFields;
- $m->comp('/Elements/Callback', _CallbackName => 'MassageCustomFields',
+$m->comp('/Elements/Callback', _CallbackName => 'MassageCustomFields',
CustomFields => $CustomFields);
+my $print_value = sub {
+ my ($cf, $value) = @_;
+ my $comp = "ShowCustomField". $cf->Type;
+ if ( $m->comp_exists( $comp ) ) {
+ $m->comp( $comp, Object => $value );
+ } else {
+ $m->print( $value->Content );
+ }
+};
+
</%INIT>
<%ARGS>
$Object => undef
diff --git a/rt/html/REST/1.0/Forms/ticket/default b/rt/html/REST/1.0/Forms/ticket/default
index 78f6c9562..7d515e51f 100644
--- a/rt/html/REST/1.0/Forms/ticket/default
+++ b/rt/html/REST/1.0/Forms/ticket/default
@@ -57,7 +57,7 @@ my @comments;
my ($c, $o, $k, $e) = ("", [], {}, 0);
my %data = %$changes;
my $ticket = new RT::Ticket $session{CurrentUser};
-my @dates = qw(Created Starts Started Due Resolved Told);
+my @dates = qw(Created Starts Started Due Resolved Told LastUpdated);
my @people = qw(Requestors Cc AdminCc);
my @create = qw(Queue Requestor Subject Cc AdminCc Owner Status Priority
InitialPriority FinalPriority TimeEstimated TimeWorked
@@ -95,7 +95,7 @@ else {
$starts->SetToNow;
return [
- "# Required: Queue, Requestor, Subject",
+ "# Required: id, Queue",
[ qw(id Queue Requestor Subject Cc AdminCc Owner Status Priority
InitialPriority FinalPriority TimeEstimated Starts Due Text) ],
{
diff --git a/rt/html/REST/1.0/NoAuth/mail-gateway b/rt/html/REST/1.0/NoAuth/mail-gateway
index 5252c1968..65d55508d 100644
--- a/rt/html/REST/1.0/NoAuth/mail-gateway
+++ b/rt/html/REST/1.0/NoAuth/mail-gateway
@@ -52,26 +52,30 @@ $action => "correspond"
$ticket => undef
</%ARGS>
<%init>
-use RT::Interface::Email;
+use RT::Interface::Email (); # It's an exporter, but we don't care
$r->content_type('text/plain; charset=utf-8');
$m->error_format('text');
-my ( $status, $error, $Ticket ) = RT::Interface::Email::Gateway(\%ARGS);
- if ($status == -75 ) {
-$m->out("temporary failure - ". $error);
- }
- elsif ($status == 1) {
-$m->out('ok');
- if ( $Ticket->Id ) {
-$m->out('Ticket: '. $Ticket->Id);
-$m->out('Queue: '. $Ticket->QueueObj->Name );
-$m->out('Owner: '. $Ticket->OwnerObj->Name);
-$m->out('Status: '. $Ticket->Status );
-$m->out('Subject: '. $Ticket->Subject );
-$m->out('Requestor: '. $Ticket->Requestors->MemberEmailAddressesAsString );
- }
- } else {
-$m->out('not ok - '.$error);
- }
-
+my ( $status, $error, $Ticket ) = RT::Interface::Email::Gateway( \%ARGS );
+if ( $status == 1 ) {
+ $m->out('ok');
+ if ( $Ticket->Id ) {
+ $m->out( 'Ticket: ' . $Ticket->Id );
+ $m->out( 'Queue: ' . $Ticket->QueueObj->Name );
+ $m->out( 'Owner: ' . $Ticket->OwnerObj->Name );
+ $m->out( 'Status: ' . $Ticket->Status );
+ $m->out( 'Subject: ' . $Ticket->Subject );
+ $m->out(
+ 'Requestor: ' . $Ticket->Requestors->MemberEmailAddressesAsString );
+ }
+}
+else {
+ $RT::Logger->error( "Could not record email: " . $error );
+ if ( $status == -75 ) {
+ $m->out( "temporary failure - " . $error );
+ }
+ else {
+ $m->out( 'not ok - ' . $error );
+ }
+}
$m->abort();
</%init>
diff --git a/rt/html/REST/1.0/search/ticket b/rt/html/REST/1.0/search/ticket
index d0ab59e98..0990fd69b 100644
--- a/rt/html/REST/1.0/search/ticket
+++ b/rt/html/REST/1.0/search/ticket
@@ -123,7 +123,7 @@ while (my $ticket = $tickets->Next) {
}
else {
my $id = $ticket->Id;
- my $d = $m->comp("$RT::WebPath/REST/1.0/Forms/ticket/default", id => $id, format => $format, fields => \%fields);
+ my $d = $m->comp("/REST/1.0/Forms/ticket/default", id => $id, format => $format, fields => \%fields);
my ($c, $o, $k, $e) = @$d;
push @output, [ $c, $o, $k ];
}
diff --git a/rt/html/SelfService/Create.html b/rt/html/SelfService/Create.html
index d60ae267a..bfa7534eb 100644
--- a/rt/html/SelfService/Create.html
+++ b/rt/html/SelfService/Create.html
@@ -79,7 +79,7 @@
<&|/l&>Subject</&>:
</TD>
<TD class="value">
-<INPUT Name="Subject" SIZE=60 MAXSIZE=100 value="">
+<INPUT Name="Subject" SIZE=60 MAXSIZE=200 value="">
</TD>
</TR>
<tr>
diff --git a/rt/html/Ticket/Create.html b/rt/html/Ticket/Create.html
index b547242f2..fc4cc20ef 100644
--- a/rt/html/Ticket/Create.html
+++ b/rt/html/Ticket/Create.html
@@ -105,7 +105,7 @@
<&|/l&>Subject</&>:
</TD>
<TD class=value COLSPAN=5>
-<INPUT Name="Subject" SIZE=60 MAXSIZE=100 value="<%$ARGS{Subject} || ''%>">
+<INPUT Name="Subject" SIZE=60 MAXSIZE=200 value="<%$ARGS{Subject} || ''%>">
</TD>
</TR>
<TR>
diff --git a/rt/html/Ticket/Display.html b/rt/html/Ticket/Display.html
index dd4c093dc..908a7a93a 100644
--- a/rt/html/Ticket/Display.html
+++ b/rt/html/Ticket/Display.html
@@ -128,17 +128,19 @@ if ($ARGS{'id'} eq 'new') {
}
$ARGS{'UpdateContent'} =~ s/\r\n/\n/g if defined $ARGS{'UpdateContent'};
- if ( $ARGS{'UpdateTimeWorked'} ||
- $session{'Attachments'} ||
- ( defined $ARGS{'UpdateContent'}
- && $ARGS{'UpdateContent'} ne ''
- && $ARGS{'UpdateContent'} ne "-- \n"
- . $session{'CurrentUser'}->UserObj->Signature )) {
- $ARGS{UpdateAttachments} = $session{'Attachments'};
- ProcessUpdateMessage( ARGSRef => \%ARGS,
- Actions => \@Actions,
- TicketObj => $TicketObj );
- delete $session{'Attachments'};
+ if ( $ARGS{'UpdateTimeWorked'} || (
+ defined $ARGS{'UpdateContent'}
+ && $ARGS{'UpdateContent'} ne ''
+ && $ARGS{'UpdateContent'} ne "-- \n"
+ . $session{'CurrentUser'}->UserObj->Signature ) )
+ {
+ $ARGS{UpdateAttachments} = $session{'Attachments'};
+ ProcessUpdateMessage(
+ ARGSRef => \%ARGS,
+ Actions => \@Actions,
+ TicketObj => $TicketObj,
+ );
+ delete $session{'Attachments'};
}
#Process status updates
my @BasicActions = ProcessTicketBasics(ARGSRef => \%ARGS, TicketObj=>$TicketObj);
diff --git a/rt/html/Ticket/Elements/EditCustomFields b/rt/html/Ticket/Elements/EditCustomFields
index 6ae188fa7..78da71201 100644
--- a/rt/html/Ticket/Elements/EditCustomFields
+++ b/rt/html/Ticket/Elements/EditCustomFields
@@ -48,8 +48,7 @@
<td valign="top" width="50%">
<table>
-% my @entry_fields;
-% my $i;
+% my $i = 0;
% my $cfcount = $CustomFields->Count;
% $cfcount++ if ($cfcount % 2) ; # if we have an odd number of
% #custom fields, fudge it so we know where to put in the table break
diff --git a/rt/html/Ticket/Elements/PreviewScrips b/rt/html/Ticket/Elements/PreviewScrips
index a3492b749..491f8e3f3 100755
--- a/rt/html/Ticket/Elements/PreviewScrips
+++ b/rt/html/Ticket/Elements/PreviewScrips
@@ -86,15 +86,19 @@ my ( $Transaction, $Description, $Object ) = $TicketObj->$action(
TimeTaken => $ARGS{'UpdateTimeWorked'},
DryRun => 1
);
+unless ( $Transaction ) {
+ $RT::Logger->error("Coulfn't fire '$action' action: $Description");
+}
my @non_recipients = $TicketObj->SquelchMailTo;
</%init>
<h2><&|/l&>This message will be sent to...</&></h2>
+% if ( $Object ) {
<i><&|/l&>(Check boxes to disable notifications to the listed recipients)</&></i><br>
% foreach my $scrip (@{$Object->Scrips->Prepared}) {
% next unless $scrip->ActionObj->Action->isa('RT::Action::SendEmail');
-<b><%$scrip->Description%></b><br>
+<b><% $scrip->Description %></b><br>
<&|/l, loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)&>[_1] [_2] with template [_3]</&>
<br>
%foreach my $type qw(To Cc Bcc) {
@@ -110,8 +114,10 @@ my @non_recipients = $TicketObj->SquelchMailTo;
<%$scrip->ActionObj->TemplateObj->MIMEObj->as_string%>
</textarea>
% }
-%}
-<br>
+% }
+% }
+<br />
+
<h2><&|/l&>Messages about this ticket will not be sent to...</&></h2>
<i><&|/l&>(Check boxes to enable notifications to the listed recipients)</&></i>
<br>
diff --git a/rt/html/Ticket/Elements/ShowBasics b/rt/html/Ticket/Elements/ShowBasics
index 00ed3ccd1..e5f09f693 100644
--- a/rt/html/Ticket/Elements/ShowBasics
+++ b/rt/html/Ticket/Elements/ShowBasics
@@ -45,36 +45,36 @@
%# END BPS TAGGED BLOCK }}}
<table>
<tr>
- <td class="label"><&|/l&>Id</&>:</td>
- <td class="value"><%$Ticket->Id %></td>
+ <td class="label id"><&|/l&>Id</&>:</td>
+ <td class="value id"><%$Ticket->Id %></td>
</tr>
<tr>
- <td class="label"><&|/l&>Status</&>:</td>
- <td class="value"><&|/l&><% $Ticket->Status%></&></td>
+ <td class="label status"><&|/l&>Status</&>:</td>
+ <td class="value status"><&|/l&><% $Ticket->Status%></&></td>
</tr>
% if ($Ticket->TimeEstimated) {
<tr>
- <td class="label"><&|/l&>Estimated</&>:</td>
- <td class="value"><&|/l, $Ticket->TimeEstimated &>[_1] min</&></td>
+ <td class="label time estimated"><&|/l&>Estimated</&>:</td>
+ <td class="value time estimated"><&|/l, $Ticket->TimeEstimated &>[_1] min</&></td>
</tr>
% }
% if ($Ticket->TimeWorked) {
<tr>
- <td class="label"><&|/l&>Worked</&>:</td>
- <td class="value"><&|/l, $Ticket->TimeWorked &>[_1] min</&></td>
+ <td class="label time worked"><&|/l&>Worked</&>:</td>
+ <td class="value time worked"><&|/l, $Ticket->TimeWorked &>[_1] min</&></td>
</tr>
% }
<tr>
- <td class="label"><&|/l&>Left</&>:</td>
- <td class="value"><&|/l, $Ticket->TimeLeft &>[_1] min</&></td>
+ <td class="label time left"><&|/l&>Left</&>:</td>
+ <td class="value time left"><&|/l, $Ticket->TimeLeft &>[_1] min</&></td>
</tr>
<tr>
- <td class="label"><&|/l&>Priority</&>:</td>
- <td class="value"><%$Ticket->Priority%>/<%$Ticket->FinalPriority %></td>
+ <td class="label priority"><&|/l&>Priority</&>:</td>
+ <td class="value priority"><%$Ticket->Priority%>/<%$Ticket->FinalPriority %></td>
</tr>
<tr>
- <td class="label"><&|/l&>Queue</&>:</td>
- <td class="value"><%$Ticket->QueueObj->Name%></td>
+ <td class="label queue"><&|/l&>Queue</&>:</td>
+ <td class="value queue"><%$Ticket->QueueObj->Name%></td>
</tr>
<& /Elements/Callback, _CallbackName => 'EndOfList', TicketObj => $Ticket, %ARGS &>
</table>
diff --git a/rt/html/Ticket/Elements/ShowDates b/rt/html/Ticket/Elements/ShowDates
index 2ccbb3fea..322fafd99 100644
--- a/rt/html/Ticket/Elements/ShowDates
+++ b/rt/html/Ticket/Elements/ShowDates
@@ -45,36 +45,36 @@
%# END BPS TAGGED BLOCK }}}
<TABLE>
<TR>
- <TD class="label"><&|/l&>Created</&>:</TD>
- <TD class="value"><% $Ticket->CreatedObj->AsString %></TD>
+ <TD class="label date created"><&|/l&>Created</&>:</TD>
+ <TD class="value date created"><% $Ticket->CreatedObj->AsString %></TD>
</TR>
<TR>
- <TD class="label"><&|/l&>Starts</&>:</TD>
- <TD class="value"><% $Ticket->StartsObj->AsString %></TD>
+ <TD class="label date starts"><&|/l&>Starts</&>:</TD>
+ <TD class="value date starts"><% $Ticket->StartsObj->AsString %></TD>
</TR>
<TR>
- <TD class="label"><&|/l&>Started</&>:</TD>
- <TD class="value"><% $Ticket->StartedObj->AsString %></TD>
+ <TD class="label date started"><&|/l&>Started</&>:</TD>
+ <TD class="value date started"><% $Ticket->StartedObj->AsString %></TD>
</TR>
<TR>
- <TD class="label"><a href="<%$RT::WebPath%>/Ticket/Display.html?id=<%$Ticket->id%>&Action=SetTold"><&|/l&>Last Contact</&></a>:</TD>
- <TD class="value"><% $Ticket->ToldObj->AsString %></TD>
+ <TD class="label date told"><a href="<% $RT::WebPath %>/Ticket/Display.html?id=<% $Ticket->id %>&Action=SetTold"><&|/l&>Last Contact</&></a>:</TD>
+ <TD class="value date told"><% $Ticket->ToldObj->AsString %></TD>
</TR>
<TR>
- <TD class="label"><&|/l&>Due</&>:</TD>
- <TD class="value"><% $Ticket->DueObj->AsString %></TD>
+ <TD class="label date due"><&|/l&>Due</&>:</TD>
+ <TD class="value date due"><% $Ticket->DueObj->AsString %></TD>
</TR>
<TR>
- <TD class="label"><&|/l&>Closed</&>:</TD>
- <TD class="value"><% $Ticket->ResolvedObj->AsString %></TD>
+ <TD class="label date resolved"><&|/l&>Closed</&>:</TD>
+ <TD class="value date resolved"><% $Ticket->ResolvedObj->AsString %></TD>
</TR>
<TR>
- <TD class="label"><&|/l&>Updated</&>:</TD>
-% my $UpdatedString = $Ticket->LastUpdated ? (loc("[_1] by [_2]", $Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name)) : loc("Never");
+ <TD class="label date updated"><&|/l&>Updated</&>:</TD>
+% my $UpdatedString = $Ticket->LastUpdated ? loc("[_1] by [_2]", $Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) : loc("Never");
% if ($UpdatedLink) {
- <TD class="value"><A HREF="#lasttrans"><% $UpdatedString | h %></a></TD>
+ <TD class="value date updated"><A HREF="#lasttrans"><% $UpdatedString | h %></a></TD>
% } else {
- <TD class="value"><% $UpdatedString | h %></TD>
+ <TD class="value date updated"><% $UpdatedString | h %></TD>
% }
</TR>
</TABLE>
diff --git a/rt/html/Ticket/Elements/ShowHistory b/rt/html/Ticket/Elements/ShowHistory
index 75e34776f..878e2535c 100644
--- a/rt/html/Ticket/Elements/ShowHistory
+++ b/rt/html/Ticket/Elements/ShowHistory
@@ -136,8 +136,16 @@ if ($Tickets) {
} else {
$Transactions = $Ticket->Transactions;
}
-my $i;
+
+my $OldestFirst = $RT::OldestTransactionsFirst? 'ASC': 'DESC';
+$Transactions->OrderByCols( { FIELD => 'Created',
+ ORDER => $OldestFirst },
+ { FIELD => 'id',
+ ORDER => $OldestFirst },
+ );
+
+my $i;
$Attachments ||= $m->comp('/Ticket/Elements/FindAttachments', Ticket => $Ticket, Tickets => $Tickets || undef);
$AttachmentContent ||= $m->comp('/Ticket/Elements/LoadTextAttachments', Ticket => $Ticket);
diff --git a/rt/html/Ticket/Elements/ShowRequestor b/rt/html/Ticket/Elements/ShowRequestor
index 421d38e0a..57bfa0e55 100644
--- a/rt/html/Ticket/Elements/ShowRequestor
+++ b/rt/html/Ticket/Elements/ShowRequestor
@@ -47,17 +47,14 @@
my $rows = 10;
my $people = $Ticket->Requestors->UserMembersObj;
while (my $requestor=$people->Next) {
+next if $requestor->Privileged;
my $name=$requestor->RealName || $requestor->EmailAddress;
my $tickets = RT::Tickets->new($session{'CurrentUser'});
-$tickets->LimitWatcher(TYPE => 'Requestor', VALUE => $requestor->EmailAddress );
-$tickets->LimitStatus( VALUE => 'open');
-$tickets->LimitStatus( VALUE => 'new');
+$tickets->FromSQL( "Requestor.id = ". $requestor->id ." AND (Status = 'open' OR Status = 'new')" );
$tickets->RowsPerPage($rows);
-$tickets->OrderBy(FIELD => 'Priority',
- ORDER => 'DESC');
+$tickets->OrderBy(FIELD => 'Priority', ORDER => 'DESC');
</%PERL>
-% unless ($requestor->Privileged) {
<& /Elements/TitleBoxStart,
title => "<a class='inverse' href=\"$RT::WebPath/Admin/Users/Modify.html?id=".$requestor->id."\">".loc("More about [_1]", $name)."</a>" &>
@@ -80,7 +77,6 @@ $tickets->OrderBy(FIELD => 'Priority',
<& /Elements/TitleBoxEnd &>
-% }
%}
<%ARGS>
$Ticket=>undef
diff --git a/rt/html/Ticket/Elements/ShowSummary b/rt/html/Ticket/Elements/ShowSummary
index 5a6e7e099..e2f3e7195 100644
--- a/rt/html/Ticket/Elements/ShowSummary
+++ b/rt/html/Ticket/Elements/ShowSummary
@@ -79,6 +79,9 @@
<& /Elements/TitleBoxEnd &>
<BR>
+
+ <& /Elements/Callback, %ARGS, _CallbackName => 'LeftColumn' &>
+
</TD>
<TD VALIGN=TOP WIDTH="50%" class="boxcontainer">
@@ -100,6 +103,7 @@
<& /Ticket/Elements/ShowRequestor, Ticket => $Ticket &>
+ <& /Elements/Callback, %ARGS, _CallbackName => 'RightColumn' &>
</TD>
</TR>
diff --git a/rt/lib/RT.pm.in b/rt/lib/RT.pm.in
index f7c882b61..4d259b0e1 100644
--- a/rt/lib/RT.pm.in
+++ b/rt/lib/RT.pm.in
@@ -293,12 +293,8 @@ $SIG{__DIE__} = sub {
unless ($^S || !defined $^S ) {
$RT::Handle->Rollback();
$RT::Logger->crit("$_[0]");
- exit(-1);
- }
- else {
- #Get out of here if we're in an eval
- die $_[0];
}
+ die $_[0];
};
# }}}
diff --git a/rt/lib/RT/Action/SendEmail.pm b/rt/lib/RT/Action/SendEmail.pm
index 431b97c75..1ebcb0ccd 100755
--- a/rt/lib/RT/Action/SendEmail.pm
+++ b/rt/lib/RT/Action/SendEmail.pm
@@ -253,12 +253,28 @@ sub SendMessage {
if ( $RT::MailCommand eq 'sendmailpipe' ) {
eval {
- open( my $mail, "|$RT::SendmailPath $RT::SendmailArguments" ) || die $!;
+ # don't ignore CHLD signal to get proper exit code
+ local $SIG{'CHLD'} = 'DEFAULT';
+
+ my $mail;
+ unless( open $mail, "|$RT::SendmailPath $RT::SendmailArguments" ) {
+ die "Couldn't run $RT::SendmailPath: $!";
+ }
+
+ # if something wrong with $mail->print we will get PIPE signal, handle it
+ local $SIG{'PIPE'} = sub { die "$RT::SendmailPath closed pipe" };
$MIMEObj->print($mail);
- close($mail);
+
+ unless ( close $mail ) {
+ die "Close failed: $!" if $!; # system error
+ # sendmail exit statuses mostly errors with data not software
+ # TODO: status parsing: core dump, exit on signal or EX_*
+ $RT::Logger->warning( "$RT::SendmailPath exitted with status $?" );
+ }
};
if ($@) {
- $RT::Logger->crit( $msgid . "Could not send mail. -" . $@ );
+ $RT::Logger->crit( $msgid . "Could not send mail: " . $@ );
+ return 0;
}
}
else {
@@ -284,13 +300,12 @@ sub SendMessage {
}
}
- my $success =
- ( $msgid
- . " sent To: "
- . $MIMEObj->head->get('To') . " Cc: "
- . $MIMEObj->head->get('Cc') . " Bcc: "
- . $MIMEObj->head->get('Bcc') );
- $success =~ s/\n//gi;
+ my $success = "$msgid sent";
+ foreach (qw(To Cc Bcc)) {
+ next unless my $addresses = $MIMEObj->head->get($_);
+ $success .= " $_: ". $addresses;
+ }
+ $success =~ s/\n//g;
$self->RecordOutgoingMailTransaction($MIMEObj) if ($RT::RecordOutgoingEmail);
diff --git a/rt/lib/RT/Attachment_Overlay.pm b/rt/lib/RT/Attachment_Overlay.pm
index fe189e378..d1f0ed40c 100644
--- a/rt/lib/RT/Attachment_Overlay.pm
+++ b/rt/lib/RT/Attachment_Overlay.pm
@@ -296,7 +296,7 @@ sub OriginalContent {
eval {return( Encode::decode_utf8($content))} || return ($content);
}
- eval { Encode::from_to($content, 'utf8' => $enc);};
+ eval { Encode::from_to($content, 'utf8' => $enc) } if $enc;
if ($@) {
$RT::Logger->error("Could not convert attachment from assumed utf8 to '$enc' :".$@);
}
diff --git a/rt/lib/RT/Condition/Generic.pm b/rt/lib/RT/Condition/Generic.pm
index cdde9ee5b..c38fc8353 100755
--- a/rt/lib/RT/Condition/Generic.pm
+++ b/rt/lib/RT/Condition/Generic.pm
@@ -51,7 +51,7 @@
=head1 SYNOPSIS
use RT::Condition::Generic;
- my $foo = new RT::Condition::IsApplicable(
+ my $foo = RT::Condition::Generic->new(
TransactionObj => $tr,
TicketObj => $ti,
ScripObj => $scr,
diff --git a/rt/lib/RT/CustomField_Overlay.pm b/rt/lib/RT/CustomField_Overlay.pm
index 743c85cd7..07a953c79 100644
--- a/rt/lib/RT/CustomField_Overlay.pm
+++ b/rt/lib/RT/CustomField_Overlay.pm
@@ -366,7 +366,8 @@ sub AddValue {
return (0, $self->loc('Permission Denied'));
}
- unless ($args{'Name'}) {
+ # allow zero value
+ if ( !defined $args{'Name'} || $args{'Name'} eq '' ) {
return(0, $self->loc("Can't add a custom field value without a name"));
}
my $newval = RT::CustomFieldValue->new($self->CurrentUser);
@@ -876,10 +877,10 @@ sub AddToObject {
if ( $ObjectCF->Id ) {
return ( 0, $self->loc("That is already the current value") );
}
- my ( $id, $msg ) =
+ my ( $oid, $msg ) =
$ObjectCF->Create( ObjectId => $id, CustomField => $self->Id );
- return ( $id, $msg );
+ return ( $oid, $msg );
}
@@ -911,9 +912,10 @@ sub RemoveFromObject {
unless ( $ObjectCF->Id ) {
return ( 0, $self->loc("This custom field does not apply to that object") );
}
- my ( $id, $msg ) = $ObjectCF->Delete;
+ # XXX: Delete doesn't return anything
+ my ( $oid, $msg ) = $ObjectCF->Delete;
- return ( $id, $msg );
+ return ( $oid, $msg );
}
# {{{ AddValueForObject
diff --git a/rt/lib/RT/Date.pm b/rt/lib/RT/Date.pm
index 620acc759..f951df3a2 100644
--- a/rt/lib/RT/Date.pm
+++ b/rt/lib/RT/Date.pm
@@ -226,23 +226,28 @@ sub Set {
# {{{ sub SetToMidnight
-=head2 SetToMidnight
+=head2 SetToMidnight [Timezone => 'utc']
-Sets the date to midnight (at the beginning of the day) GMT
+Sets the date to midnight (at the beginning of the day).
Returns the unixtime at midnight.
+Arguments:
+
+=over 4
+
+=item Timezone - Timezone context C<server> or C<UTC>
+
=cut
sub SetToMidnight {
my $self = shift;
-
- use Time::Local;
- my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = gmtime($self->Unix);
- $self->Unix(timegm (0,0,0,$mday,$mon,$year,$wday,$yday));
-
+ my %args = ( Timezone => 'UTC', @_ );
+ if ( lc $args{'Timezone'} eq 'server' ) {
+ $self->Unix( Time::Local::timelocal( 0,0,0,(localtime $self->Unix)[3..7] ) );
+ } else {
+ $self->Unix( Time::Local::timegm( 0,0,0,(gmtime $self->Unix)[3..7] ) );
+ }
return ($self->Unix);
-
-
}
diff --git a/rt/lib/RT/Group_Overlay.pm b/rt/lib/RT/Group_Overlay.pm
index 41cf49732..29e4a8bdf 100644
--- a/rt/lib/RT/Group_Overlay.pm
+++ b/rt/lib/RT/Group_Overlay.pm
@@ -497,7 +497,7 @@ sub _Create {
# If we couldn't create a principal Id, get the fuck out.
unless ($principal_id) {
$RT::Handle->Rollback() unless ($args{'InsideTransaction'});
- $self->crit( "Couldn't create a Principal on new user create. Strange things are afoot at the circle K" );
+ $RT::Logger->crit( "Couldn't create a Principal on new user create. Strange things are afoot at the circle K" );
return ( 0, $self->loc('Could not create group') );
}
diff --git a/rt/lib/RT/I18N.pm b/rt/lib/RT/I18N.pm
index e45faf3af..448f4a28e 100644
--- a/rt/lib/RT/I18N.pm
+++ b/rt/lib/RT/I18N.pm
@@ -289,11 +289,13 @@ sub DecodeMIMEWordsToEncoding {
my $str = shift;
my $enc = shift;
-
- @_ = $str =~ m/([^=]*)=\?([^?]+)\?([QqBb])\?([^?]+)\?=([^=]*)/g;
-
+ @_ = $str =~ m/(.*?)=\?([^?]+)\?([QqBb])\?([^?]+)\?=([^=]*)/gc;
return ($str) unless (@_);
+ # add everything that hasn't matched to the end of the latest
+ # string in array this happen when we have 'key="=?encoded?="; key="plain"'
+ $_[-1] .= substr($str, pos $str);
+
$str = "";
while (@_) {
my ($prefix, $charset, $encoding, $enc_str, $trailing) =
diff --git a/rt/lib/RT/I18N/de.po b/rt/lib/RT/I18N/de.po
index 6c4c38378..eacd65e33 100644
--- a/rt/lib/RT/I18N/de.po
+++ b/rt/lib/RT/I18N/de.po
@@ -1,292 +1,316 @@
-# German localization catalog for Request Tracker (RT)
-# FIRST AUTHOR: Florian Bischof <flo@fxb.de>, May 2002
-# Update by Torsten Brumm <torsten.brumm@kuehne-nagel.com>
-#
msgid ""
msgstr ""
-"Project-Id-Version: RT 3.4.x\n"
-"POT-Creation-Date: 2002-06-22 06:06+0200\n"
-"PO-Revision-Date: 2005-10-03 13:43-0400\n"
-"Last-Translator: Karsten Konrad <karsten.konrad@uni-graz.at>\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2006-01-23 15:50+0100\n"
+"Last-Translator: Torsten Brumm <tob@brummix.de>\n"
"Language-Team: rt-devel <rt-devel@lists.fsck.com>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
-#: html/Approvals/Elements/Approve:48 html/Approvals/Elements/ShowDependency:71 html/SelfService/Display.html:46 html/Ticket/Display.html:47 html/Ticket/Display.html:51
#. ($Ticket->id, $Ticket->Subject)
#. ($link->BaseObj->Id, $link->BaseObj->Subject)
#. ($ticket->Id, $ticket->Subject)
#. ($TicketObj->Id, $TicketObj->Subject)
+#: html/Approvals/Elements/Approve:48
+#: html/Approvals/Elements/ShowDependency:71
+#: html/SelfService/Display.html:46
+#: html/Ticket/Display.html:47
+#: html/Ticket/Display.html:51
msgid "#%1: %2"
msgstr "#%1: %2"
-#: lib/RT/Record.pm:926
+#: html/Elements/ShowSearch:86
+msgid "$1"
+msgstr ""
+
#. ($label)
+#: lib/RT/Record.pm:930
msgid "$prefix %1"
msgstr "$prefix %1"
-#: lib/RT/URI/fsck_com_rt.pm:257
#. ($self->ObjectType, $self->Object->Id)
+#: lib/RT/URI/fsck_com_rt.pm:257
msgid "%1 #%2"
msgstr "%1 #%2"
-#: lib/RT/Date.pm:361
#. ($s, $time_unit)
+#: lib/RT/Date.pm:361
msgid "%1 %2"
msgstr "%1 %2"
-#: lib/RT/Date.pm:397
#. ($self->GetWeekday($wday), $self->GetMonth($mon), map {sprintf "%02d", $_} ($mday, $hour, $min, $sec), ($year+1900))
+#: lib/RT/Date.pm:397
msgid "%1 %2 %3 %4:%5:%6 %7"
msgstr "%1 %3. %2 %7, %4:%5:%6"
-#: lib/RT/Record.pm:1671 lib/RT/Transaction_Overlay.pm:636 lib/RT/Transaction_Overlay.pm:679
#. ($cf->Name, $new_value->Content)
#. ($field, $self->NewValue)
#. ($self->Field, $principal->Object->Name)
+#: lib/RT/Record.pm:1675
+#: lib/RT/Transaction_Overlay.pm:635
+#: lib/RT/Transaction_Overlay.pm:678
msgid "%1 %2 added"
-msgstr "%1 %2 hinzugefügt"
+msgstr "%1 %2 hinzugefügt"
-#: lib/RT/Date.pm:358
#. ($s, $time_unit)
+#: lib/RT/Date.pm:358
msgid "%1 %2 ago"
msgstr "vor %1 %2"
-#: lib/RT/Record.pm:1678 lib/RT/Transaction_Overlay.pm:643
#. ($cf->Name, $old_content, $new_value->Content)
#. ($field, $self->OldValue, $self->NewValue)
+#: lib/RT/Record.pm:1682
+#: lib/RT/Transaction_Overlay.pm:642
msgid "%1 %2 changed to %3"
-msgstr "%1 %2 geändert in %3"
+msgstr "%1 %2 geändert in %3"
-#: lib/RT/Record.pm:1675 lib/RT/Transaction_Overlay.pm:639 lib/RT/Transaction_Overlay.pm:685
#. ($cf->Name, $old_value->Content)
#. ($field, $self->OldValue)
#. ($self->Field, $principal->Object->Name)
+#: lib/RT/Record.pm:1679
+#: lib/RT/Transaction_Overlay.pm:638
+#: lib/RT/Transaction_Overlay.pm:684
msgid "%1 %2 deleted"
-msgstr "%1 %2 gelöscht"
+msgstr "%1 %2 gelöscht"
-#: html/Admin/Elements/EditScrips:65 html/Admin/Elements/ListGlobalScrips:64 html/Ticket/Elements/PreviewScrips:98
#. (loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name))
+#: html/Admin/Elements/EditScrips:65
+#: html/Admin/Elements/ListGlobalScrips:64
+#: html/Ticket/Elements/PreviewScrips:99
msgid "%1 %2 with template %3"
msgstr "%1 %2 mit der Vorlage %3"
-#: html/Ticket/Elements/ShowAttachments:72
#. ($rev->CreatedAsString, $size, $rev->CreatorObj->Name)
+#: html/Ticket/Elements/ShowAttachments:72
msgid "%1 (%2) by %3"
msgstr "%1 (%2) von %3"
-#: html/SelfService/Update.html:60 html/Ticket/Elements/EditBasics:87 html/Ticket/Update.html:61 html/Ticket/Update.html:63 html/Tools/MyDay.html:65
#. (loc($DefaultStatus))
+#. (loc($Ticket->Status()))
#. (loc($TicketObj->Status))
#. ($TicketObj->OwnerObj->Name())
-#. (loc($Ticket->Status()))
+#: html/SelfService/Update.html:60
+#: html/Ticket/Elements/EditBasics:102
+#: html/Ticket/Update.html:61
+#: html/Ticket/Update.html:63
+#: html/Tools/MyDay.html:65
msgid "%1 (Unchanged)"
-msgstr "%1 (Unverändert)"
+msgstr "%1 (Unverändert)"
-#: bin/rt-crontool:194 bin/rt-crontool:201 bin/rt-crontool:207
#. ("--search-argument", "--search")
#. ("--condition-argument", "--condition")
#. ("--action-argument", "--action")
+#: bin/rt-crontool:194
+#: bin/rt-crontool:201
+#: bin/rt-crontool:207
msgid "%1 - An argument to pass to %2"
-msgstr "%1 - Ein Argument zur Übergabe an %2"
+msgstr "%1 - Ein Argument zur Übergabe an %2"
-#: bin/rt-crontool:210
#. ("--verbose")
+#: bin/rt-crontool:210
msgid "%1 - Output status updates to STDOUT"
msgstr "%1 - Statusausgabe auf STDOUT"
-#: bin/rt-crontool:204
#. ("--action")
+#: bin/rt-crontool:204
msgid "%1 - Specify the action module you want to use"
msgstr "%1 - Gibt an, welches Action-Modul benutzt werden soll"
-#: bin/rt-crontool:198
#. ("--condition")
+#: bin/rt-crontool:198
msgid "%1 - Specify the condition module you want to use"
msgstr "%1 - Gibt an, welches Condition-Modul benutzt werden soll"
-#: bin/rt-crontool:191
#. ("--search")
+#: bin/rt-crontool:191
msgid "%1 - Specify the search module you want to use"
msgstr "%1 - Gibt an, welches Search-Modul benutzt werden soll"
- $RT::VERSION,
- '2005',
- '<a href="http://www.bestpractical.com?rt='.$RT::VERSION.'">Best Practical Solutions, LLC</a>',)
-#: html/Elements/Footer:58
-#. ('&#187;&#124;&#171;',
- $RT::VERSION,
- '2005',
- '<a href="http://www.bestpractical.com?rt='.$RT::VERSION.'">Best Practical Solutions, LLC</a>',)
+#. ('&#187;&#124;&#171;',
+#: html/Elements/Footer:61
msgid "%1 RT %2 Copyright 1996-%3 %4."
-msgstr ""
+msgstr "%1 RT %2 Alle Rechte vorbehalten 1996-%3 %4."
-#: lib/RT/ScripAction_Overlay.pm:151
#. ($self->Id)
+#: lib/RT/ScripAction_Overlay.pm:151
msgid "%1 ScripAction loaded"
msgstr "ScripAction %1 geladen"
-#: lib/RT/Record.pm:1708
#. ($args{'Value'}, $cf->Name)
+#: lib/RT/Record.pm:1712
msgid "%1 added as a value for %2"
-msgstr "%1 als Wert für %2 hinzugefügt"
+msgstr "%1 als Wert für %2 hinzugefügt"
-#: lib/RT/Link_Overlay.pm:145 lib/RT/Link_Overlay.pm:152
#. ($args{'Base'})
#. ($args{'Target'})
+#: lib/RT/Link_Overlay.pm:145
+#: lib/RT/Link_Overlay.pm:152
msgid "%1 appears to be a local object, but can't be found in the database"
-msgstr ""
-"%1 konnte nicht in der Datenbank gefunden werden obwohl es ein lokales "
-"Objekt zu sein scheint"
+msgstr "%1 konnte nicht in der Datenbank gefunden werden obwohl es ein lokales Objekt zu sein scheint"
-#: html/Ticket/Elements/ShowDates:73 lib/RT/Transaction_Overlay.pm:520
#. ($self->BriefDescription , $self->CreatorObj->Name)
#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name)
+#: html/Ticket/Elements/ShowDates:73
+#: lib/RT/Transaction_Overlay.pm:520
msgid "%1 by %2"
msgstr "%1 von %2"
-#: lib/RT/Transaction_Overlay.pm:777 lib/RT/Transaction_Overlay.pm:786 lib/RT/Transaction_Overlay.pm:789
#. ($self->Field , $q1->Name , $q2->Name)
#. ($self->Field, $t2->AsString, $t1->AsString)
#. ($self->Field, ($self->OldValue? "'".$self->OldValue ."'" : $self->loc("(no value)")) , "'". $self->NewValue."'")
+#: lib/RT/Transaction_Overlay.pm:777
+#: lib/RT/Transaction_Overlay.pm:786
+#: lib/RT/Transaction_Overlay.pm:789
msgid "%1 changed from %2 to %3"
-msgstr "%1 von %2 in %3 geändert"
+msgstr "%1 von %2 in %3 geändert"
-#: html/Search/Build.html:212
#. ($Description)
+#: html/Search/Build.html:206
msgid "%1 copy"
msgstr "%1 kopieren"
-#: lib/RT/Record.pm:930
+#: lib/RT/Record.pm:934
msgid "%1 could not be set to %2."
msgstr "%1 konnte nicht auf %2 gesetzt werden."
-#: lib/RT/Ticket_Overlay.pm:2743
#. ($self)
+#: lib/RT/Ticket_Overlay.pm:2726
msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent."
-msgstr ""
-"%1 konnte den Status nicht auf erledigt setzen. Die RT-Datenbank könnte "
-"inkonsistent sein."
+msgstr "%1 konnte den Status nicht auf erledigt setzen. Die RT-Datenbank könnte inkonsistent sein."
-#: lib/RT/Transaction_Overlay.pm:560
#. ($obj_type)
+#: lib/RT/Transaction_Overlay.pm:560
msgid "%1 created"
msgstr "%1 erstellt"
-#: lib/RT/Transaction_Overlay.pm:565
#. ($obj_type)
+#: lib/RT/Transaction_Overlay.pm:565
msgid "%1 deleted"
-msgstr "%1 gelöscht"
+msgstr "%1 gelöscht"
-#: html/Elements/MyTickets:47
-#. ($rows)
+#. ($Query, $PrimaryGroupBy)
+#: html/Search/Chart:71
+msgid "%1 grouped by %2"
+msgstr "%1 gruppiert durch %2"
+
+#: etc/initialdata:593
msgid "%1 highest priority tickets I own"
-msgstr "Ihre %1 Anfragen höchster Priorität"
+msgstr "Ihre %1 Anfragen höchster Priorität"
-#: bin/rt-crontool:186
#. ($0)
+#: bin/rt-crontool:186
msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron."
-msgstr ""
+msgstr "%1 ist ein Tool um mit Tickets von externen Programmen zu arbeiten, wie zum Beispiel cron."
-#: lib/RT/Queue_Overlay.pm:860
#. ($principal->Object->Name, $args{'Type'})
+#: lib/RT/Queue_Overlay.pm:860
msgid "%1 is no longer a %2 for this queue."
msgstr "%1 ist kein %2 dieses Bereichs mehr."
-#: html/Ticket/Create.html:186 html/Ticket/Create.html:187 html/Ticket/Elements/ShowBasics:58 html/Ticket/Elements/ShowBasics:64 html/Ticket/Elements/ShowBasics:69
-#. ('<input size=3 name="TimeWorked" value="'.$ARGS{TimeWorked}.'">')
-#. ('<input size=3 name="TimeLeft" value="'.$ARGS{TimeLeft}.'">')
#. ($Ticket->TimeEstimated)
#. ($Ticket->TimeWorked)
#. ($Ticket->TimeLeft)
+#: html/Ticket/Elements/ShowBasics:58
+#: html/Ticket/Elements/ShowBasics:64
+#: html/Ticket/Elements/ShowBasics:69
msgid "%1 min"
msgstr "%1 Min"
-#: html/Elements/MyRequests:47
-#. ($rows)
+#: etc/initialdata:601
msgid "%1 newest unowned tickets"
msgstr "Die %1 neusten Anfragen ohne Besitzer"
-#: lib/RT/CustomField_Overlay.pm:827
+#: lib/RT/CustomField_Overlay.pm:881
msgid "%1 objects"
msgstr "%1 Objekte"
-#: html/User/Elements/DelegateRights:97
#. (loc($ObjectType =~ /^RT::(.*)$/))
+#: html/User/Elements/DelegateRights:97
msgid "%1 rights"
msgstr "%1 Rechte"
-#: lib/RT/Action/ResolveMembers.pm:63
#. (ref $self)
+#: lib/RT/Action/ResolveMembers.pm:63
msgid "%1 will resolve all members of a resolved group ticket."
-msgstr "%1 wird alle Mitglieder eines erledigten Gruppentickets anführen."
+msgstr "%1 wird alle Mitglieder eines erledigten Gruppentickets anführen."
-#: lib/RT/CustomField_Overlay.pm:828
+#: lib/RT/CustomField_Overlay.pm:882
msgid "%1's %2 objects"
msgstr "%1's %2 Objekte"
-#: lib/RT/CustomField_Overlay.pm:829
+#: lib/RT/CustomField_Overlay.pm:883
msgid "%1's %2's %3 objects"
msgstr "%1's %2's %3 Objekte"
-#: html/Search/Elements/SearchPrivacy:52 html/Search/Elements/SelectSearchObject:55 html/Search/Elements/SelectSearchesForObjects:56
#. ($object->Name)
#. ($Object->Name)
+#: html/Search/Elements/SearchPrivacy:52
+#: html/Search/Elements/SelectSearchObject:55
+#: html/Search/Elements/SelectSearchesForObjects:56
msgid "%1's saved searches"
msgstr "%1's gespeicherte Suchanfragen"
-#: lib/RT/Transaction_Overlay.pm:470
#. ($self)
+#: lib/RT/Transaction_Overlay.pm:470
msgid "%1: no attachment specified"
msgstr "%1: kein Anhang angegeben"
-#: html/Ticket/Elements/ShowTransactionAttachments:78
#. ($size)
+#: html/Ticket/Elements/ShowTransactionAttachments:78
msgid "%1b"
msgstr "%1b"
-#: html/Ticket/Elements/ShowTransactionAttachments:75
#. (int( $size / 102.4 ) / 10)
+#: html/Ticket/Elements/ShowTransactionAttachments:75
msgid "%1k"
msgstr "%1k"
-#: lib/RT/Ticket_Overlay.pm:1118
#. ($args{'Status'})
-msgid "'%1' is an invalid value for status"
-msgstr "'%1' ist ein ung\303\274ltiger Wert f\303\274r Status"
-
-#: html/Admin/Elements/EditCustomFieldValues:50 html/Admin/Elements/EditQueueWatchers:50 html/Admin/Elements/EditScrips:56 html/Admin/Elements/EditTemplates:57 html/Admin/Groups/Members.html:73 html/Elements/EditLinks:54 html/Ticket/Elements/EditPeople:67 html/User/Groups/Members.html:76
+#: lib/RT/Ticket_Overlay.pm:1119
+#: html/Admin/Elements/EditCustomFieldValues:50
+#: html/Admin/Elements/EditQueueWatchers:50
+#: html/Admin/Elements/EditScrips:56
+#: html/Admin/Elements/EditTemplates:57
+#: html/Admin/Groups/Members.html:73
+#: html/Elements/EditLinks:54
+#: html/Ticket/Elements/EditPeople:67
+#: html/User/Groups/Members.html:76
msgid "(Check box to delete)"
-msgstr "(Auswahl wird gelöscht)"
+msgstr "(Auswahl wird gelöscht)"
#: html/Ticket/Elements/PreviewScrips:94
msgid "(Check boxes to disable notifications to the listed recipients)"
-msgstr "(Benachrichtigung der markierten Empfänger wird unterdrückt)"
+msgstr "(Benachrichtigung der markierten Empfänger wird unterdrückt)"
-#: html/Ticket/Elements/PreviewScrips:116
+#: html/Ticket/Elements/PreviewScrips:118
msgid "(Check boxes to enable notifications to the listed recipients)"
-msgstr "(Benachrichtigungen an markierte Empfänger aktivieren)"
+msgstr "(Benachrichtigungen an markierte Empfänger aktivieren)"
-#: html/Ticket/Create.html:209
+#: html/Ticket/Create.html:216
msgid "(Enter ticket ids or URLs, separated with spaces)"
msgstr "(Geben Sie die Anfrage IDs oder URLs getrennt durch Leerzeichen ein)"
-#: html/Admin/Queues/Modify.html:75 html/Admin/Queues/Modify.html:81
#. ($RT::CorrespondAddress)
#. ($RT::CommentAddress)
+#: html/Admin/Queues/Modify.html:75
+#: html/Admin/Queues/Modify.html:81
msgid "(If left blank, will default to %1)"
msgstr "(Standardwert: %1)"
-#: html/Admin/Elements/EditCustomFields:74 html/Admin/Elements/ListGlobalCustomFields:53
+#: html/Admin/Elements/EditCustomFields:74
+#: html/Admin/Elements/ListGlobalCustomFields:53
msgid "(No custom fields)"
msgstr "(Keine benutzerdefinierten Felder)"
-#: html/Admin/Groups/Members.html:71 html/User/Groups/Members.html:74
+#: html/Admin/Groups/Members.html:71
+#: html/User/Groups/Members.html:74
msgid "(No members)"
msgstr "(Keine Mitglieder)"
-#: html/Admin/Elements/EditScrips:53 html/Admin/Elements/ListGlobalScrips:49
+#: html/Admin/Elements/EditScrips:53
+#: html/Admin/Elements/ListGlobalScrips:49
msgid "(No scrips)"
msgstr "(Keine Scrips)"
@@ -294,31 +318,33 @@ msgstr "(Keine Scrips)"
msgid "(No templates)"
msgstr "(Keine Vorlagen)"
-#: html/Admin/Elements/PickCustomFields:47 html/Admin/Elements/PickObjects:47
+#: html/Admin/Elements/PickCustomFields:47
+#: html/Admin/Elements/PickObjects:47
msgid "(None)"
msgstr "(Nichts)"
-#: html/Ticket/Update.html:88
-msgid "(Sends a blind carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will receive future updates.)"
-msgstr ""
+#: html/Ticket/Update.html:91
+msgid "(Sends a blind carbon-copy of this update to a comma-delimited list of email addresses. Does <strong>not</strong> change who will receive future updates.)"
+msgstr "(Sendet ein Blind Carbon Copy - BCC Update and eine mit Komma separierte Liste von Mail Adressen. Zukünftige Update werden <strong>nicht</strong> übermittelt.)"
-#: html/Ticket/Create.html:100
-msgid "(Sends a carbon-copy of this update to a comma-delimited list of administrative email addresses. These people <b>will</b> receive future updates.)"
-msgstr ""
+#: html/Ticket/Create.html:101
+msgid "(Sends a carbon-copy of this update to a comma-delimited list of administrative email addresses. These people <strong>will</strong> receive future updates.)"
+msgstr "(Sendet ein Carbon Copy - CC Update and eine mit Komma separierte Liste von Mail Adressen. Zukünftige Update <strong>werden</strong> ebenfalls übermittelt.)"
-#: html/Ticket/Update.html:84
-msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will receive future updates.)"
-msgstr ""
+#: html/Ticket/Update.html:87
+msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. Does <strong>not</strong> change who will receive future updates.)"
+msgstr "(Sendet ein Carbon Copy - CC Update and eine mit Komma separierte Liste von Mail Adressen. Zukünftige Update werden <strong>nicht</strong> übermittelt.)"
-#: html/Ticket/Create.html:90
-msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. These people <b>will</b> receive future updates.)"
-msgstr ""
+#: html/Ticket/Create.html:91
+msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. These people <strong>will</strong> receive future updates.)"
+msgstr "(Sendet ein Carbon Copy - CC Update and eine mit Komma separierte Liste von Mail Adressen. Zukünftige Update <strong>werden</strong> ebenfalls übermittelt.)"
#: html/Admin/Elements/EditScrip:102
msgid "(Use these fields when you choose 'User Defined' for a condition or action)"
-msgstr "(Benutze diese Felder, für 'Benutzer definierte' Bedingungen oder Aktionen)"
+msgstr "(Benutze diese Felder, für 'Benutzer definierte' Bedingungen oder Aktionen)"
-#: html/Admin/Groups/index.html:57 html/User/Groups/index.html:54
+#: html/Admin/Groups/index.html:57
+#: html/User/Groups/index.html:54
msgid "(empty)"
msgstr "(leer)"
@@ -326,7 +352,11 @@ msgstr "(leer)"
msgid "(no name listed)"
msgstr "(kein Name gelistet)"
-#: html/Admin/Elements/SelectRights:72 html/Elements/EditCustomFieldSelect:60 html/Elements/SelectCustomFieldValue:51 html/Elements/ShowCustomFields:65 lib/RT/Transaction_Overlay.pm:580
+#: html/Admin/Elements/SelectRights:72
+#: html/Elements/EditCustomFieldSelect:70
+#: html/Elements/SelectCustomFieldValue:51
+#: html/Elements/ShowCustomFields:65
+#: lib/RT/Transaction_Overlay.pm:579
msgid "(no value)"
msgstr "(kein Wert)"
@@ -334,7 +364,8 @@ msgstr "(kein Wert)"
msgid "(no values)"
msgstr "(keine Werte)"
-#: html/Elements/EditLinks:130 html/Ticket/Elements/BulkLinks:49
+#: html/Elements/EditLinks:132
+#: html/Ticket/Elements/BulkLinks:49
msgid "(only one ticket)"
msgstr "(nur eine Anfrage)"
@@ -354,6 +385,14 @@ msgstr "(notwendig)"
msgid "(untitled)"
msgstr "(unbenannt)"
+#: html/Ticket/Elements/Reminders:86
+msgid "(yyyy/mm/dd)"
+msgstr "(jjjj/mm/tt)"
+
+#: html/Elements/EditCustomFieldSelect:58
+msgid "-"
+msgstr ""
+
#: html/Ticket/Elements/ShowBasics:53
msgid "<% $Ticket->Status%>"
msgstr "<% $Ticket->Status%>"
@@ -368,10 +407,16 @@ msgstr "<%$_%>"
#: html/Search/Elements/DisplayOptions:65
msgid "<%$field%>"
-msgstr ""
+msgstr "<%$field%>"
+
+#. ($m->scomp('/Elements/SelectNewTicketQueue'))
+#: html/Elements/CreateTicket:47
+msgid "<input type=\"submit\" class=\"button\" value=\"New ticket in\" />&nbsp;%1"
+msgstr "<input type=\"submit\" class=\"button\" value=\"Neues Ticket in\" />&nbsp;%1"
-#: docs/design_docs/string-extraction-guide.txt:54 html/Elements/CreateTicket:47 lib/RT/StyleGuide.pod:787
#. ($m->scomp('/Elements/SelectNewTicketQueue'))
+#: docs/design_docs/string-extraction-guide.txt:54
+#: lib/RT/StyleGuide.pod:787
msgid "<input type=\"submit\" value=\"New ticket in\">&nbsp;%1"
msgstr "<input type=\"submit\" value=\"Neue Anfrage in\">&nbsp;%1"
@@ -381,15 +426,16 @@ msgstr "Eine leere Vorlage"
#: html/Admin/Users/Modify.html:363
msgid "A password was not set, so user won't be able to login."
-msgstr ""
+msgstr "Es wurde kein Passwort gesetzt, der User wird sich nicht anmelden können!"
-#: lib/RT/ACE_Overlay.pm:175 lib/RT/Principal_Overlay.pm:219
+#: lib/RT/ACE_Overlay.pm:175
+#: lib/RT/Principal_Overlay.pm:219
msgid "ACE not found"
msgstr "ACE nicht gefunden"
#: lib/RT/ACE_Overlay.pm:854
msgid "ACEs can only be created and deleted."
-msgstr "ACEs können nur erstellt und gelöscht werden."
+msgstr "ACEs können nur erstellt und gelöscht werden."
#: html/Search/Elements/SelectAndOr:46
msgid "AND"
@@ -397,7 +443,7 @@ msgstr "UND"
#: html/User/Elements/Tabs:53
msgid "About me"
-msgstr "Über mich"
+msgstr "Über mich"
#: html/Admin/Users/Modify.html:106
msgid "Access control"
@@ -407,14 +453,14 @@ msgstr "Zugriffskontrolle"
msgid "Action"
msgstr "Aktion"
-#: lib/RT/Scrip_Overlay.pm:173
#. ($args{'ScripAction'})
+#: lib/RT/Scrip_Overlay.pm:173
msgid "Action %1 not found"
msgstr "Aktion %1 nicht gefunden"
#: bin/rt-crontool:148
msgid "Action committed.\\n"
-msgstr "Aktion durchgeführt.\\n"
+msgstr "Aktion durchgeführt.\\n"
#: bin/rt-crontool:144
msgid "Action prepared..."
@@ -422,79 +468,97 @@ msgstr "Aktion vorbereitet..."
#: html/Search/Build.html:85
msgid "Add"
-msgstr "Hinzufügen"
+msgstr "Hinzufügen"
-#: html/Search/Bulk.html:114
+#: html/Search/Bulk.html:92
msgid "Add AdminCc"
-msgstr "AdminCC hinzufügen"
+msgstr "AdminCC hinzufügen"
-#: html/Search/Bulk.html:110
+#: html/Search/Bulk.html:88
msgid "Add Cc"
-msgstr "CC hinzufügen"
+msgstr "CC hinzufügen"
#: html/Search/Elements/EditFormat:49
msgid "Add Columns"
-msgstr "Spalten hinzufügen"
+msgstr "Spalten hinzufügen"
#: html/Search/Elements/PickCriteria:46
msgid "Add Criteria"
-msgstr "Kriterium hinzufügen"
+msgstr "Kriterium hinzufügen"
-#: html/Ticket/Create.html:144 html/Ticket/Update.html:114
+#: html/Ticket/Create.html:145
+#: html/Ticket/Update.html:117
msgid "Add More Files"
-msgstr "Weitere Dateien anhängen"
+msgstr "Weitere Dateien anhängen"
-#: html/Search/Bulk.html:106
+#: html/Search/Bulk.html:84
msgid "Add Requestor"
-msgstr "Klient hinzufügen"
+msgstr "Klient hinzufügen"
#: html/Admin/Elements/AddCustomFieldValue:46
msgid "Add Value"
-msgstr "Wert hinzufügen"
+msgstr "Wert hinzufügen"
#: html/Admin/Global/Scrip.html:76
msgid "Add a scrip which will apply to all queues"
msgstr "Scrip erstellen, das auf alle Bereiche angewendet wird"
-#: html/Search/Build.html:85
+#: NOT FOUND IN SOURCE
msgid "Add additional criteria"
-msgstr "zusätzliches Kriterium hinzufügen"
+msgstr "zusätzliches Kriterium hinzufügen"
-#: html/Search/Bulk.html:146
+#: html/Search/Build.html:109
+#: html/Search/Build.html:94
+msgid "Add and Search"
+msgstr "Hinzufügen und Suchen"
+
+#: html/Search/Bulk.html:124
msgid "Add comments or replies to selected tickets"
-msgstr "Füge den ausgewählten Anfragen Kommentare oder Antworten hinzu"
+msgstr "Füge den ausgewählten Anfragen Kommentare oder Antworten hinzu"
-#: html/Admin/Groups/Members.html:63 html/User/Groups/Members.html:60
+#: html/Admin/Groups/Members.html:63
+#: html/User/Groups/Members.html:60
msgid "Add members"
-msgstr "Mitglieder hinzufügen"
+msgstr "Mitglieder hinzufügen"
-#: html/Admin/Queues/People.html:87 html/Ticket/Elements/AddWatchers:49
+#: html/Admin/Queues/People.html:87
+#: html/Ticket/Elements/AddWatchers:49
msgid "Add new watchers"
-msgstr "Neue Beobachter hinzufügen"
+msgstr "Neue Beobachter hinzufügen"
+
+#: html/Search/Build.html:85
+msgid "Add these terms to your search"
+msgstr "Diese Bedingungen zur Suche hinzufügen"
+
+#: html/Search/Bulk.html:159
+msgid "Add values"
+msgstr "Werte hinzufügen"
-#: lib/RT/CustomField_Overlay.pm:103
+#: lib/RT/CustomField_Overlay.pm:108
msgid "Add, delete and modify custom field values for objects"
-msgstr "Hinzufügen, Löschen und Ändern von Werten benutzerdefinierter Felder von Objekten"
+msgstr "Hinzufügen, Löschen und Ändern von Werten benutzerdefinierter Felder von Objekten"
-#: lib/RT/Queue_Overlay.pm:760
#. ($args{'Type'})
+#: lib/RT/Queue_Overlay.pm:760
msgid "Added principal as a %1 for this queue"
-msgstr "Rolle wurde als %1 für diesen Bereich hinzugefügt"
+msgstr "Rolle wurde als %1 für diesen Bereich hinzugefügt"
-#: lib/RT/Ticket_Overlay.pm:1416
#. ($self->loc($args{'Type'}))
+#: lib/RT/Ticket_Overlay.pm:1417
msgid "Added principal as a %1 for this ticket"
-msgstr "Rolle wurde als %1 für diese Anfrage hinzugefügt"
+msgstr "Rolle wurde als %1 für diese Anfrage hinzugefügt"
-#: html/Admin/Users/Modify.html:146 html/User/Prefs.html:133
+#: html/Admin/Users/Modify.html:146
+#: html/User/Prefs.html:133
msgid "Address1"
msgstr "Adresse 1"
-#: html/Admin/Users/Modify.html:151 html/User/Prefs.html:137
+#: html/Admin/Users/Modify.html:151
+#: html/User/Prefs.html:137
msgid "Address2"
msgstr "Adresse 2"
-#: html/Ticket/Create.html:95
+#: html/Ticket/Create.html:96
msgid "Admin Cc"
msgstr "Admin CC"
@@ -506,19 +570,23 @@ msgstr "Admin Kommentar"
msgid "Admin Correspondence"
msgstr "Admin Korrespondenz"
-#: html/Admin/Queues/index.html:46 html/Admin/Queues/index.html:49
+#: html/Admin/Queues/index.html:46
+#: html/Admin/Queues/index.html:49
msgid "Admin queues"
msgstr "Admin Bereiche"
-#: html/Admin/Global/index.html:47 html/Admin/Global/index.html:49
+#: html/Admin/Global/index.html:47
+#: html/Admin/Global/index.html:49
msgid "Admin/Global configuration"
msgstr "Admin/Globale Einstellungen"
-#: etc/initialdata:56 html/Ticket/Elements/ShowPeople:60 lib/RT/ACE_Overlay.pm:114
+#: etc/initialdata:56
+#: html/Ticket/Elements/ShowPeople:60
+#: lib/RT/ACE_Overlay.pm:114
msgid "AdminCc"
msgstr "AdminCc"
-#: lib/RT/CustomField_Overlay.pm:101
+#: lib/RT/CustomField_Overlay.pm:106
msgid "AdminCustomField"
msgstr "AdminBenutzerdefiniertesFeld"
@@ -528,11 +596,11 @@ msgstr "AdminGruppe"
#: lib/RT/Group_Overlay.pm:173
msgid "AdminGroupMembership"
-msgstr "AdminGruppenZugehörigkeit"
+msgstr "AdminGruppenZugehörigkeit"
#: lib/RT/System.pm:81
msgid "AdminOwnPersonalGroups"
-msgstr "AdminEigenePersönlicheGruppen"
+msgstr "AdminEigenePersönlicheGruppen"
#: lib/RT/Queue_Overlay.pm:93
msgid "AdminQueue"
@@ -542,11 +610,12 @@ msgstr "AdminBereich"
msgid "AdminUsers"
msgstr "AdminBenutzer"
-#: html/Admin/Queues/People.html:69 html/Ticket/Elements/EditPeople:75
+#: html/Admin/Queues/People.html:69
+#: html/Ticket/Elements/EditPeople:75
msgid "Administrative Cc"
msgstr "Administrative CC"
-#: html/Ticket/Elements/Tabs:197
+#: html/Ticket/Elements/Tabs:209
msgid "Advanced"
msgstr "Erweitert"
@@ -570,9 +639,10 @@ msgstr "Alle Bereiche"
msgid "And/Or"
msgstr "Und/Oder"
-#: html/Admin/CustomFields/Modify.html:73 html/Admin/Elements/CustomFieldTabs:83
+#: html/Admin/CustomFields/Modify.html:73
+#: html/Admin/Elements/CustomFieldTabs:83
msgid "Applies to"
-msgstr "gilt für"
+msgstr "gilt für"
#: html/Search/Edit.html:64
msgid "Apply"
@@ -580,26 +650,28 @@ msgstr "anwenden"
#: html/Search/Edit.html:64
msgid "Apply your changes"
-msgstr "Änderungen anwenden"
+msgstr "Änderungen anwenden"
-#: html/Elements/Tabs:74
+#: html/Elements/Tabs:77
msgid "Approval"
msgstr "Freigabe"
-#: html/Approvals/Display.html:67 html/Approvals/Elements/ShowDependency:63 html/Approvals/index.html:86
#. ($Ticket->Id, $Ticket->Subject)
#. ($ticket->id, $msg)
#. ($link->BaseObj->Id, $link->BaseObj->Subject)
+#: html/Approvals/Display.html:65
+#: html/Approvals/Elements/ShowDependency:63
+#: html/Approvals/index.html:86
msgid "Approval #%1: %2"
msgstr "Freigabe #%1: %2"
-#: html/Approvals/index.html:75
#. ($ticket->Id)
+#: html/Approvals/index.html:75
msgid "Approval #%1: Notes not recorded due to a system error"
msgstr "Freigabe #%1: Notiz wurde aufgrund eines Systemfehlers nicht gespeichert"
-#: html/Approvals/index.html:73
#. ($ticket->Id)
+#: html/Approvals/index.html:73
msgid "Approval #%1: Notes recorded"
msgstr "Freigabe #%1: Notiz gespeichert"
@@ -623,7 +695,8 @@ msgstr "Notizen des Freigebenden: %1"
msgid "Apr."
msgstr "Apr."
-#: html/Elements/SelectSortOrder:56 html/Search/Elements/DisplayOptions:73
+#: html/Elements/SelectSortOrder:56
+#: html/Search/Elements/DisplayOptions:73
msgid "Ascending"
msgstr "aufsteigend"
@@ -635,20 +708,28 @@ msgstr "Zuweisen und Entfernen von benutzerdefinierten Feldern"
msgid "AssignCustomFields"
msgstr "BenutzerdefiniertesFeldZuweisen"
-#: html/Search/Bulk.html:164 html/SelfService/Update.html:87 html/Ticket/ModifyAll.html:115 html/Ticket/Update.html:114
+#: html/Search/Bulk.html:142
+#: html/SelfService/Update.html:87
+#: html/Ticket/ModifyAll.html:115
+#: html/Ticket/Update.html:117
msgid "Attach"
-msgstr "Anhängen"
+msgstr "Anhängen"
-#: html/SelfService/Create.html:92 html/Ticket/Create.html:140
+#: html/SelfService/Create.html:92
+#: html/Ticket/Create.html:141
msgid "Attach file"
-msgstr "Datei anhängen"
+msgstr "Datei anhängen"
-#: html/SelfService/Update.html:75 html/Ticket/Create.html:128 html/Ticket/Update.html:92
+#: html/SelfService/Update.html:75
+#: html/Ticket/Create.html:129
+#: html/Ticket/Update.html:95
msgid "Attached file"
msgstr "Dateianhang"
-#: html/Ticket/ShowEmailRecord.html:52 html/Ticket/ShowEmailRecord.html:56 html/Ticket/ShowEmailRecord.html:59
#. ($Attachment)
+#: html/Ticket/ShowEmailRecord.html:52
+#: html/Ticket/ShowEmailRecord.html:56
+#: html/Ticket/ShowEmailRecord.html:59
msgid "Attachment '%1' could not be loaded"
msgstr "Anhang '%1' konnte nicht geladen werden"
@@ -656,17 +737,17 @@ msgstr "Anhang '%1' konnte nicht geladen werden"
msgid "Attachment created"
msgstr "Anhang erstellt"
-#: lib/RT/Tickets_Overlay.pm:1673
+#: lib/RT/Tickets_Overlay.pm:1720
msgid "Attachment filename"
msgstr "Dateiname des Anhangs"
#: html/Ticket/Elements/ShowAttachments:47
msgid "Attachments"
-msgstr "Anhänge"
+msgstr "Anhänge"
#: lib/RT/Attributes_Overlay.pm:172
msgid "Attribute Deleted"
-msgstr "Attribut gelöscht"
+msgstr "Attribut gelöscht"
#: lib/RT/Date.pm:444
msgid "Aug."
@@ -680,29 +761,41 @@ msgstr "Automatische Antwort"
msgid "Autoreply To Requestors"
msgstr "Automatische Antwort an Klienten"
-#: html/Admin/Elements/CustomFieldTabs:65 html/Admin/Elements/GroupTabs:60 html/Admin/Elements/QueueTabs:60 html/Admin/Elements/UserTabs:58 html/Ticket/Elements/Tabs:113 html/User/Elements/GroupTabs:59
+#: html/Widgets/SelectionBox:186
+msgid "Available"
+msgstr "Verfügbar"
+
+#: html/Admin/Elements/CustomFieldTabs:65
+#: html/Admin/Elements/GroupTabs:60
+#: html/Admin/Elements/QueueTabs:60
+#: html/Admin/Elements/UserTabs:58
+#: html/Ticket/Elements/Tabs:113
+#: html/User/Elements/GroupTabs:59
msgid "Basics"
msgstr "Grundlagen"
-#: html/Ticket/Update.html:86
+#: html/Ticket/Update.html:89
msgid "Bcc"
msgstr "BCC"
-#: html/Admin/CustomFields/GroupRights.html:91 html/Admin/CustomFields/UserRights.html:74 html/Admin/Elements/EditScrip:95
+#: html/Admin/CustomFields/GroupRights.html:91
+#: html/Admin/CustomFields/UserRights.html:74
+#: html/Admin/Elements/EditScrip:95
msgid "Be sure to save your changes"
-msgstr "Änderungen speichern"
+msgstr "Änderungen speichern"
-#: html/Elements/SelectDateRelation:55 lib/RT/CurrentUser.pm:360
+#: html/Elements/SelectDateRelation:55
+#: lib/RT/CurrentUser.pm:360
msgid "Before"
msgstr "vor dem"
-#: html/Elements/Header:80
+#: html/Elements/Logo:47
msgid "Best Practical Solutions, LLC corporate logo"
-msgstr ""
+msgstr "Best Practical Solutions, LLC Firmen Logo"
#: NOT FOUND IN SOURCE
msgid "Binary"
-msgstr "Binär"
+msgstr "Binär"
#: etc/initialdata:217
msgid "Blank"
@@ -712,36 +805,41 @@ msgstr "Leer"
msgid "Bold"
msgstr "Fett"
-#: html/Search/Results.html:81
+#: html/Search/Results.html:82
msgid "Bookmarkable link"
msgstr "Speicherbarer Link"
-#: html/Ticket/Elements/ShowHistory:60 html/Ticket/Elements/ShowHistory:66
+#: html/Ticket/Elements/ShowHistory:60
+#: html/Ticket/Elements/ShowHistory:65
msgid "Brief headers"
msgstr "Kurze Kopfzeilen"
-#: html/Search/Bulk.html:46 html/Search/Bulk.html:47
+#: html/Ticket/Elements/Tabs:220
+msgid "Bulk Update"
+msgstr "Massen Update"
+
+#: NOT FOUND IN SOURCE
msgid "Bulk ticket update"
msgstr "Massen Anfrageaktualisierung"
-#: lib/RT/User_Overlay.pm:1722
+#: lib/RT/User_Overlay.pm:1883
msgid "Can not modify system users"
-msgstr "Kann Systembenutzer nicht ändern"
+msgstr "Kann Systembenutzer nicht ändern"
#: lib/RT/Queue_Overlay.pm:92
msgid "Can this principal see this queue"
msgstr "Kann diese Rolle diesen Bereich sehen"
-#: lib/RT/CustomField_Overlay.pm:370
+#: lib/RT/CustomField_Overlay.pm:373
msgid "Can't add a custom field value without a name"
-msgstr "Kann kein benutzerdefiniertes Feld ohne Namen hinzufügen"
+msgstr "Kann kein benutzerdefiniertes Feld ohne Namen hinzufügen"
-#: html/Admin/CustomFields/Objects.html:86
#. ($Class)
+#: html/Admin/CustomFields/Objects.html:86
msgid "Can't find a collection class for '%1'"
-msgstr ""
+msgstr "Es wurde keine Kollektion gefunden für '%1'"
-#: html/Search/Build.html:761
+#: html/Search/Build.html:742
msgid "Can't find a saved search to work with"
msgstr "Kann keine gespeicherte Suche finden"
@@ -749,60 +847,103 @@ msgstr "Kann keine gespeicherte Suche finden"
msgid "Can't link a ticket to itself"
msgstr "Kann kein Anfrage auf sich selbst verweisen lassen!"
-#: html/Search/Build.html:766
+#: html/Search/Build.html:748
msgid "Can't save this search"
msgstr "Kann diese Suche nicht speichern"
-#: lib/RT/Record.pm:1266 lib/RT/Record.pm:1344
+#: lib/RT/Record.pm:1270
+#: lib/RT/Record.pm:1348
msgid "Can't specifiy both base and target"
-msgstr "Sie können Basis und Ziel nicht gleichzeitig angeben"
+msgstr "Sie können Basis und Ziel nicht gleichzeitig angeben"
-#: html/autohandler:148
#. ($msg)
+#: html/autohandler:166
msgid "Cannot create user: %1"
msgstr "Kann Benutzer nicht anlegen: %1"
-#: etc/initialdata:50 html/Admin/Queues/People.html:65 html/SelfService/Create.html:71 html/Ticket/Create.html:85 html/Ticket/Elements/EditPeople:72 html/Ticket/Elements/ShowPeople:56 html/Ticket/Update.html:81 lib/RT/ACE_Overlay.pm:113
+#: html/Admin/Elements/AddCustomFieldValue:62
+#: html/Admin/Elements/EditCustomFieldValues:58
+msgid "Category"
+msgstr "Kategorie"
+
+#: etc/initialdata:50
+#: html/Admin/Queues/People.html:65
+#: html/SelfService/Create.html:71
+#: html/Ticket/Create.html:86
+#: html/Ticket/Elements/EditPeople:72
+#: html/Ticket/Elements/ShowPeople:56
+#: html/Ticket/Update.html:84
+#: lib/RT/ACE_Overlay.pm:113
msgid "Cc"
msgstr "CC"
#: html/SelfService/Prefs.html:52
msgid "Change password"
-msgstr "Passwort ändern"
+msgstr "Passwort ändern"
-#: html/Elements/Submit:100
+#: html/Elements/Submit:91
msgid "Check All"
-msgstr "Alle auswählen"
+msgstr "Alle auswählen"
-#: html/SelfService/Update.html:78 html/Ticket/Create.html:131 html/Ticket/Update.html:95
+#: html/SelfService/Update.html:78
+#: html/Ticket/Create.html:132
+#: html/Ticket/Update.html:98
msgid "Check box to delete"
-msgstr "Zum Löschen anwählen"
+msgstr "Zum Löschen anwählen"
#: html/Admin/Elements/SelectRights:55
msgid "Check box to revoke right"
-msgstr "Zum Entziehen einer Berechtigung anwählen"
+msgstr "Zum Entziehen einer Berechtigung anwählen"
-#: html/Elements/EditLinks:146 html/Elements/EditLinks:85 html/Elements/ShowLinks:78 html/Ticket/Create.html:214 html/Ticket/Elements/BulkLinks:64
+#: html/Elements/EditLinks:148
+#: html/Elements/EditLinks:85
+#: html/Elements/ShowLinks:78
+#: html/Ticket/Create.html:221
+#: html/Ticket/Elements/BulkLinks:64
msgid "Children"
msgstr "Kinder"
-#: html/Admin/Users/Modify.html:156 html/User/Prefs.html:141
+#: html/NoAuth/js/util.js:70
+#: html/NoAuth/js/util.js:88
+msgid "Choose a date"
+msgstr "Datum auswählen"
+
+#: html/Admin/Users/Modify.html:156
+#: html/User/Prefs.html:141
msgid "City"
msgstr "Stadt"
-#: html/Elements/Submit:102
+#: html/Elements/Submit:93
msgid "Clear All"
-msgstr "Alles löschen"
+msgstr "Alles löschen"
+
+#: html/Helpers/CalPopup.html:6
+msgid "Close window"
+msgstr "Fenster schliessen"
#: html/Ticket/Elements/ShowDates:68
msgid "Closed"
msgstr "Geschlossen"
-#: html/SelfService/Closed.html:46 html/SelfService/Elements/Tabs:66
+#: html/SelfService/Closed.html:46
+#: html/SelfService/Elements/Tabs:66
msgid "Closed tickets"
msgstr "Geschlossene Anfragen"
-#: html/Ticket/Elements/ShowTransaction:182 html/Ticket/Elements/Tabs:176
+#: lib/RT/CustomField_Overlay.pm:89
+msgid "Combobox: Select or enter multiple values"
+msgstr "Combobox: Selektiere oder gebe mehrere Werte ein"
+
+#: lib/RT/CustomField_Overlay.pm:90
+msgid "Combobox: Select or enter one value"
+msgstr "Combobox: Selektiere oder gib einen Wert ein"
+
+#: lib/RT/CustomField_Overlay.pm:91
+msgid "Combobox: Select or enter up to %1 values"
+msgstr "Combobox: Selektiere oder gib bis zu %1 Werte ein"
+
+#: html/Ticket/Elements/ShowTransaction:189
+#: html/Ticket/Elements/Tabs:178
msgid "Comment"
msgstr "Kommentar"
@@ -818,25 +959,27 @@ msgstr "Kommentiere Anfragen"
msgid "CommentOnTicket"
msgstr "AnfrageKommentieren"
-#: html/Ticket/ModifyAll.html:91 html/Ticket/Update.html:73
+#: html/Ticket/ModifyAll.html:91
+#: html/Ticket/Update.html:76
msgid "Comments (Not sent to requestors)"
msgstr "Kommentare (werden nicht an Klienten geschickt)"
-#: html/Search/Bulk.html:150
+#: html/Search/Bulk.html:128
msgid "Comments (not sent to requestors)"
msgstr "Kommentare (werden nicht an Klienten geschickt)"
-#: html/Admin/Users/Modify.html:224 html/Ticket/Elements/ShowRequestor:67
+#: html/Admin/Users/Modify.html:224
+#: html/Ticket/Elements/ShowRequestor:66
msgid "Comments about this user"
msgstr "Kommentare zu diesem Benutzer"
#: lib/RT/Transaction_Overlay.pm:623
msgid "Comments added"
-msgstr "Kommentar hinzugefügt"
+msgstr "Kommentar hinzugefügt"
#: lib/RT/Action/Generic.pm:176
msgid "Commit Stubbed"
-msgstr "Commit Stumpf ausgeführt"
+msgstr "Commit Stumpf ausgeführt"
#: html/Admin/Elements/EditScrip:63
msgid "Condition"
@@ -850,15 +993,17 @@ msgstr "Bedingung trifft zu..."
msgid "Condition not found"
msgstr "Bedingung nicht gefunden"
-#: html/Elements/Tabs:81
+#: html/Elements/Tabs:84
msgid "Configuration"
msgstr "Konfiguration"
#: html/SelfService/Prefs.html:54
msgid "Confirm"
-msgstr "Bestätigen"
+msgstr "Bestätigen"
-#: html/Admin/Elements/ModifyTemplate:65 html/Elements/SelectAttachmentField:48 html/Ticket/ModifyAll.html:119
+#: html/Admin/Elements/ModifyTemplate:65
+#: html/Elements/SelectAttachmentField:48
+#: html/Ticket/ModifyAll.html:119
msgid "Content"
msgstr "Inhalt"
@@ -876,53 +1021,68 @@ msgstr "Korrespondenz"
#: lib/RT/Transaction_Overlay.pm:619
msgid "Correspondence added"
-msgstr "Korrespondenz hinzugefügt"
+msgstr "Korrespondenz hinzugefügt"
-#: lib/RT/Record.pm:1693
+#: lib/RT/Record.pm:1697
msgid "Could not add new custom field value. "
-msgstr "Konnte keinen neuen benutzerdefinierten Wert hinzufügen"
+msgstr "Konnte keinen neuen benutzerdefinierten Wert hinzufügen"
-#: lib/RT/Record.pm:1646
#. (, $value_msg)
+#: lib/RT/Record.pm:1650
msgid "Could not add new custom field value. %1 "
-msgstr "Konnte kein neuen benutzerdefinierten Wert hinzufügen. %1 "
+msgstr "Konnte kein neuen benutzerdefinierten Wert hinzufügen. %1 "
-#: lib/RT/Ticket_Overlay.pm:3004 lib/RT/Ticket_Overlay.pm:3012 lib/RT/Ticket_Overlay.pm:3029
+#: lib/RT/Ticket_Overlay.pm:2987
+#: lib/RT/Ticket_Overlay.pm:2995
+#: lib/RT/Ticket_Overlay.pm:3012
msgid "Could not change owner. "
-msgstr "Konnte den Besitzer nicht ändern. "
+msgstr "Konnte den Besitzer nicht ändern. "
-#: html/Admin/CustomFields/Modify.html:119
#. ($msg)
+#: html/Admin/CustomFields/Modify.html:135
msgid "Could not create CustomField"
msgstr "Konnte benutzerdefiniertes Feld nicht erzeugen"
-#: html/Admin/Elements/EditCustomField:113
#. ($msg)
+#: html/Admin/Elements/EditCustomField:113
msgid "Could not create CustomField: %1"
msgstr "Konnte benutzerdefiniertes Feld nicht erzeugen: %1"
-#: html/User/Groups/Modify.html:98 lib/RT/Group_Overlay.pm:502 lib/RT/Group_Overlay.pm:509
+#: html/User/Groups/Modify.html:98
+#: lib/RT/Group_Overlay.pm:502
+#: lib/RT/Group_Overlay.pm:509
msgid "Could not create group"
msgstr "Konnte Gruppe nicht anlegen"
-#: html/Admin/Global/Template.html:96 html/Admin/Queues/Template.html:93
#. ($msg)
+#: html/Admin/Global/Template.html:96
+#: html/Admin/Queues/Template.html:93
msgid "Could not create template: %1"
msgstr "Konnte Vorlage nicht anlegen: %1"
-#: lib/RT/Ticket_Overlay.pm:1051 lib/RT/Ticket_Overlay.pm:396
+#: lib/RT/Ticket_Overlay.pm:1052
+#: lib/RT/Ticket_Overlay.pm:397
msgid "Could not create ticket. Queue not set"
msgstr "Konnte Anfrage nicht anlegen. Bereich nicht angegeben"
-#: lib/RT/User_Overlay.pm:256 lib/RT/User_Overlay.pm:270 lib/RT/User_Overlay.pm:279 lib/RT/User_Overlay.pm:288 lib/RT/User_Overlay.pm:297 lib/RT/User_Overlay.pm:311 lib/RT/User_Overlay.pm:321 lib/RT/User_Overlay.pm:497
+#: lib/RT/User_Overlay.pm:256
+#: lib/RT/User_Overlay.pm:270
+#: lib/RT/User_Overlay.pm:279
+#: lib/RT/User_Overlay.pm:288
+#: lib/RT/User_Overlay.pm:297
+#: lib/RT/User_Overlay.pm:311
+#: lib/RT/User_Overlay.pm:321
+#: lib/RT/User_Overlay.pm:497
msgid "Could not create user"
msgstr "Konnte Benutzer nicht anlegen"
-#: lib/RT/Queue_Overlay.pm:738 lib/RT/Ticket_Overlay.pm:1384
+#: lib/RT/Queue_Overlay.pm:738
+#: lib/RT/Ticket_Overlay.pm:1385
msgid "Could not find or create that user"
msgstr "Konnte diesen Benutzer nicht finden oder anlegen"
-#: lib/RT/Queue_Overlay.pm:799 lib/RT/Ticket_Overlay.pm:1465
+#: lib/RT/Queue_Overlay.pm:799
+#: lib/RT/Ticket_Overlay.pm:1466
msgid "Could not find that principal"
msgstr "Konnte diese Rolle nicht finden"
@@ -930,31 +1090,33 @@ msgstr "Konnte diese Rolle nicht finden"
msgid "Could not load CustomField %1"
msgstr "Konnte benutzerdefiniertes Feld %1 nicht laden"
-#: html/Admin/Groups/Members.html:109 html/User/Groups/Members.html:111 html/User/Groups/Modify.html:103
+#: html/Admin/Groups/Members.html:109
+#: html/User/Groups/Members.html:111
+#: html/User/Groups/Modify.html:103
msgid "Could not load group"
msgstr "Konnte die Gruppe nicht laden"
-#: lib/RT/SavedSearch.pm:120
#. ($privacy)
+#: lib/RT/SavedSearch.pm:120
msgid "Could not load object for %1"
-msgstr ""
+msgstr "Kann Objekt für %1 nicht laden"
#: lib/RT/SavedSearch.pm:188
msgid "Could not load search attribute"
-msgstr ""
+msgstr "Kann Such Attribut nicht laden"
-#: lib/RT/Queue_Overlay.pm:758
#. ($args{'Type'})
+#: lib/RT/Queue_Overlay.pm:758
msgid "Could not make that principal a %1 for this queue"
msgstr "Konnte diese Rolle nicht zu einen %1 dieses Bereichs machen"
-#: lib/RT/Ticket_Overlay.pm:1405
#. ($self->loc($args{'Type'}))
+#: lib/RT/Ticket_Overlay.pm:1406
msgid "Could not make that principal a %1 for this ticket"
msgstr "Konnte diese Rolle nicht zu einem %1 dieses Anfragen machen"
-#: lib/RT/Queue_Overlay.pm:857
#. ($args{'Type'})
+#: lib/RT/Queue_Overlay.pm:857
msgid "Could not remove that principal as a %1 for this queue"
msgstr "Konnte diese Rolle nicht als %1 dieses Bereichs entfernen"
@@ -964,14 +1126,15 @@ msgstr "Konnte Benutzerinformation nicht speichern"
#: lib/RT/Group_Overlay.pm:1011
msgid "Couldn't add member to group"
-msgstr "Konnte Benutzer nicht der Gruppe hinzufügen"
+msgstr "Konnte Benutzer nicht der Gruppe hinzufügen"
-#: lib/RT/Record.pm:1705 lib/RT/Record.pm:1757
#. ($Msg)
+#: lib/RT/Record.pm:1709
+#: lib/RT/Record.pm:1761
msgid "Couldn't create a transaction: %1"
msgstr "Konnte die Transaktion nicht anlegen: %1"
-#: lib/RT/Record.pm:939
+#: lib/RT/Record.pm:943
msgid "Couldn't find row"
msgstr "Konnte Zeile nicht finden"
@@ -979,69 +1142,82 @@ msgstr "Konnte Zeile nicht finden"
msgid "Couldn't find that principal"
msgstr "Konnte diese Rolle nicht finden"
-#: lib/RT/CustomField_Overlay.pm:404
+#: lib/RT/CustomField_Overlay.pm:403
msgid "Couldn't find that value"
msgstr "Konnte diesen Wert nicht finden"
-#: lib/RT/CurrentUser.pm:146
#. ($self->Id)
+#: lib/RT/CurrentUser.pm:146
msgid "Couldn't load %1 from the users database.\\n"
msgstr "Konnte %1 nicht aus der Benutzerdatenbank laden.\\n"
-#: html/Admin/CustomFields/UserRights.html:149
#. ($id)
+#: html/Admin/CustomFields/UserRights.html:149
msgid "Couldn't load Class %1"
msgstr "Konnte die Klasse %1 nicht laden"
-#: html/Admin/CustomFields/GroupRights.html:107
#. ($id)
+#: html/Admin/CustomFields/GroupRights.html:107
msgid "Couldn't load CustomField %1"
msgstr "Konnte das benutzerdefinierte Feld %1 nicht laden"
-#: html/Admin/Groups/GroupRights.html:109 html/Admin/Groups/UserRights.html:96
#. ($id)
+#: html/Admin/Groups/GroupRights.html:109
+#: html/Admin/Groups/UserRights.html:96
msgid "Couldn't load group %1"
msgstr "Konnte Gruppe %1 nicht laden"
-#: lib/RT/Link_Overlay.pm:203 lib/RT/Link_Overlay.pm:212 lib/RT/Link_Overlay.pm:239
+#: lib/RT/Link_Overlay.pm:203
+#: lib/RT/Link_Overlay.pm:212
+#: lib/RT/Link_Overlay.pm:239
msgid "Couldn't load link"
msgstr "Konnte den Verweis nicht laden"
-#: html/Admin/Elements/ObjectCustomFields:83 html/Admin/Queues/CustomFields.html:59 html/Admin/Users/CustomFields.html:59
#. ($id)
+#: html/Admin/Elements/ObjectCustomFields:83
+#: html/Admin/Queues/CustomFields.html:59
+#: html/Admin/Users/CustomFields.html:59
msgid "Couldn't load object %1"
msgstr "Konnte Objekt %1 nicht laden"
-#: html/Admin/Queues/People.html:142
#. ($id)
+#: html/Admin/Queues/People.html:142
msgid "Couldn't load queue"
msgstr "Konnte den Bereich nicht laden"
-#: html/Admin/Queues/GroupRights.html:122 html/Admin/Queues/UserRights.html:93
#. ($id)
+#: html/Admin/Queues/GroupRights.html:122
+#: html/Admin/Queues/UserRights.html:93
msgid "Couldn't load queue %1"
msgstr "Konnte den Bereich %1 nicht laden"
-#: html/SelfService/Display.html:156
#. ($id)
+#: html/SelfService/Display.html:156
msgid "Couldn't load ticket '%1'"
msgstr "Konnte das Anfrage '%1' nicht laden"
-#: lib/RT/Ticket_Overlay.pm:2612
#. ($args{'Base'})
+#: lib/RT/Ticket_Overlay.pm:2595
msgid "Couldn't resolve base '%1' into a URI."
-msgstr ""
+msgstr "Basis '%1' kann nicht zu einer URI aufgelöst werden."
-#: lib/RT/Ticket_Overlay.pm:2611
#. ($args{'Target'})
+#: lib/RT/Ticket_Overlay.pm:2594
msgid "Couldn't resolve target '%1' into a URI."
-msgstr ""
+msgstr "Ziel '%1' kann nicht zu einer URI aufgelöst werden."
-#: html/Admin/Users/Modify.html:173 html/User/Prefs.html:153
+#: html/Admin/Users/Modify.html:173
+#: html/User/Prefs.html:153
msgid "Country"
msgstr "Land"
-#: html/Admin/Elements/CreateUserCalled:47 html/Admin/Elements/EditCustomField:84 html/Admin/Elements/EditScrip:132 html/Admin/Queues/Template.html:66 html/Elements/QuickCreate:68 html/Ticket/Create.html:165 html/Ticket/Create.html:226
+#: html/Admin/Elements/CreateUserCalled:47
+#: html/Admin/Elements/EditCustomField:84
+#: html/Admin/Elements/EditScrip:132
+#: html/Admin/Queues/Template.html:66
+#: html/Elements/QuickCreate:65
+#: html/Ticket/Create.html:166
+#: html/Ticket/Create.html:233
msgid "Create"
msgstr "Erstellen"
@@ -1049,28 +1225,34 @@ msgstr "Erstellen"
msgid "Create Tickets"
msgstr "Erstelle Anfragen"
-#: html/Admin/CustomFields/Modify.html:109 html/Admin/Elements/EditCustomField:96
+#: html/Admin/CustomFields/Modify.html:124
+#: html/Admin/Elements/EditCustomField:96
msgid "Create a CustomField"
msgstr "Erstelle ein benutzerdefiniertes Feld"
-#: html/Admin/Queues/CustomField.html:69
#. ($QueueObj->Name())
+#: html/Admin/Queues/CustomField.html:69
msgid "Create a CustomField for queue %1"
-msgstr "Erstelle ein benutzerdefiniertes Feld für den Bereich %1"
+msgstr "Erstelle ein benutzerdefiniertes Feld für den Bereich %1"
-#: html/Admin/Groups/Modify.html:125 html/Admin/Groups/Modify.html:99
+#: html/Admin/Groups/Modify.html:125
+#: html/Admin/Groups/Modify.html:99
msgid "Create a new group"
msgstr "Erstelle eine neue Gruppe"
-#: html/User/Groups/Modify.html:113 html/User/Groups/Modify.html:88
+#: html/User/Groups/Modify.html:113
+#: html/User/Groups/Modify.html:88
msgid "Create a new personal group"
-msgstr "Erstelle eine neue persönliche Gruppe"
+msgstr "Erstelle eine neue persönliche Gruppe"
-#: html/Ticket/Create.html:46 html/Ticket/Create.html:49 html/Ticket/Create.html:57
+#: html/Ticket/Create.html:47
+#: html/Ticket/Create.html:51
+#: html/Ticket/Create.html:58
msgid "Create a new ticket"
msgstr "Erstelle eine neue Anfrage"
-#: html/Admin/Users/Modify.html:251 html/Admin/Users/Modify.html:306
+#: html/Admin/Users/Modify.html:251
+#: html/Admin/Users/Modify.html:306
msgid "Create a new user"
msgstr "Erstelle einen neuen Benutzer"
@@ -1078,16 +1260,18 @@ msgstr "Erstelle einen neuen Benutzer"
msgid "Create a queue"
msgstr "Erstelle einen Bereich"
-#: html/Admin/Queues/Scrip.html:80
#. ($QueueObj->Name)
+#: html/Admin/Queues/Scrip.html:80
msgid "Create a scrip for queue %1"
-msgstr "Erstelle ein Scrip für den Bereich %1"
+msgstr "Erstelle ein Scrip für den Bereich %1"
-#: html/Admin/Global/Template.html:90 html/Admin/Queues/Template.html:86
+#: html/Admin/Global/Template.html:90
+#: html/Admin/Queues/Template.html:86
msgid "Create a template"
msgstr "Erstelle eine Vorlage"
-#: html/SelfService/Create.html:46 html/SelfService/CreateTicketInQueue.html:46
+#: html/SelfService/Create.html:46
+#: html/SelfService/CreateTicketInQueue.html:46
msgid "Create a ticket"
msgstr "Neue Anfrage"
@@ -1103,21 +1287,21 @@ msgstr "Anfrage erzeugen"
msgid "Create tickets in this queue"
msgstr "Erstelle Anfragen in diesem Bereich"
-#: lib/RT/CustomField_Overlay.pm:101
+#: lib/RT/CustomField_Overlay.pm:106
msgid "Create, delete and modify custom fields"
-msgstr "Erstellen, löschen und modifizieren von benutzerdefinierten Felder"
+msgstr "Erstellen, löschen und modifizieren von benutzerdefinierten Felder"
#: lib/RT/Queue_Overlay.pm:93
msgid "Create, delete and modify queues"
-msgstr "Erstelle, lösche und modifiziere Bereich"
+msgstr "Erstelle, lösche und modifiziere Bereich"
#: lib/RT/System.pm:81
msgid "Create, delete and modify the members of personal groups"
-msgstr "Erstellen, löschen und modifizieren von Mitgliedern persönlicher Gruppen"
+msgstr "Erstellen, löschen und modifizieren von Mitgliedern persönlicher Gruppen"
#: lib/RT/System.pm:82
msgid "Create, delete and modify users"
-msgstr "Erstellen, löschen und modifizieren von Benutzern"
+msgstr "Erstellen, löschen und modifizieren von Benutzern"
#: lib/RT/System.pm:88
msgid "CreateSavedSearch"
@@ -1127,15 +1311,26 @@ msgstr "GespeicherteSucheErstellen"
msgid "CreateTicket"
msgstr "AnfrageErstellen"
-#: html/Elements/SelectDateType:47 html/Ticket/Elements/ShowDates:48 lib/RT/Ticket_Overlay.pm:1145
+#: html/Elements/SelectDateType:47
+#: html/Ticket/Elements/ShowDates:48
+#: lib/RT/Ticket_Overlay.pm:1146
msgid "Created"
msgstr "Angelegt"
-#: html/Admin/CustomFields/Modify.html:121 html/Admin/Elements/EditCustomField:117
#. ($CustomFieldObj->Name())
+#: html/Admin/CustomFields/Modify.html:137
+#: html/Admin/Elements/EditCustomField:117
msgid "Created CustomField %1"
msgstr "Erstelle ein benutzerdefiniertes Feld %1"
+#: html/Tools/Reports/Elements/Tabs:63
+msgid "Created in a date range"
+msgstr "Erstellt in einem Zeitraum"
+
+#: html/Tools/Reports/CreatedByDates.html:7
+msgid "Created tickets in period, grouped by status"
+msgstr "Erstellte Tickets einer Periode, sortiert nach Status"
+
#: html/Search/Elements/PickBasics:102
msgid "Creator"
msgstr "Ersteller"
@@ -1148,7 +1343,8 @@ msgstr "Momentane Beziehungen"
msgid "Current Scrips"
msgstr "Aktuelle Scrips"
-#: html/Admin/Groups/Members.html:60 html/User/Groups/Members.html:63
+#: html/Admin/Groups/Members.html:60
+#: html/User/Groups/Members.html:63
msgid "Current members"
msgstr "Aktuelle Mitglieder"
@@ -1156,22 +1352,32 @@ msgstr "Aktuelle Mitglieder"
msgid "Current rights"
msgstr "Aktuelle Rechte"
-#: html/Admin/Queues/People.html:62 html/Ticket/Elements/EditPeople:66
+#: html/Search/Elements/EditQuery:47
+msgid "Current search"
+msgstr "Aktuelle Suche"
+
+#: html/Admin/Queues/People.html:62
+#: html/Ticket/Elements/EditPeople:66
msgid "Current watchers"
msgstr "Aktuelle Beobachter"
-#: html/Admin/Elements/SystemTabs:61 html/Admin/Elements/Tabs:62 html/Admin/Global/index.html:71 html/Admin/Users/Modify.html:208 html/Admin/index.html:77 html/Ticket/Elements/ShowSummary:57
+#: html/Admin/Elements/SystemTabs:61
+#: html/Admin/Elements/Tabs:62
+#: html/Admin/Global/index.html:71
+#: html/Admin/Users/Modify.html:208
+#: html/Admin/index.html:77
+#: html/Ticket/Elements/ShowSummary:56
msgid "Custom Fields"
msgstr "Benutzerdefinierte Felder"
-#: html/Admin/CustomFields/index.html:59
#. ($lookup)
+#: html/Admin/CustomFields/index.html:60
msgid "Custom Fields for %1"
-msgstr "Benutzerdefinierte Felder für %1"
+msgstr "Benutzerdefinierte Felder für %1"
#: html/Admin/Elements/EditScrip:123
msgid "Custom action cleanup code"
-msgstr "Benutzerdefinierter Aktions-Aufräum-Code"
+msgstr "Benutzerdefinierter Aktions-Aufräum-Code"
#: html/Admin/Elements/EditScrip:115
msgid "Custom action preparation code"
@@ -1181,18 +1387,19 @@ msgstr "Benutzerdefinierter Aktions-Vorbereitungs-Code"
msgid "Custom condition"
msgstr "Benutzerdefinierte Bedingung"
-#: lib/RT/Tickets_Overlay.pm:2147
#. ($CF->Name)
+#: lib/RT/Tickets_Overlay.pm:2194
msgid "Custom field %1 has a value."
msgstr "Benutzerdefiniertes Feld %1 hat einen Wert."
-#: lib/RT/Tickets_Overlay.pm:2143
#. ($CF->Name)
+#: lib/RT/Tickets_Overlay.pm:2190
msgid "Custom field %1 has no value."
msgstr "Benutzerdefiniertes Feld %1 hat keinen Wert."
-#: lib/RT/Record.pm:1579 lib/RT/Record.pm:1740
#. ($args{'Field'})
+#: lib/RT/Record.pm:1583
+#: lib/RT/Record.pm:1744
msgid "Custom field %1 not found"
msgstr "Benutzerdefiniertes Feld %1 nicht gefunden"
@@ -1200,28 +1407,41 @@ msgstr "Benutzerdefiniertes Feld %1 nicht gefunden"
msgid "Custom field not found"
msgstr "Benutzerdefiniertes Feld nicht gefunden"
-#: lib/RT/CustomField_Overlay.pm:1041
#. ($args{'Content'}, $self->Name)
+#: lib/RT/CustomField_Overlay.pm:1144
msgid "Custom field value %1 could not be found for custom field %2"
msgstr "Wert %1 des benutzerdefinierten Feldes %2 konnte nicht gefunden werden"
-#: lib/RT/CustomField_Overlay.pm:414
+#: lib/RT/CustomField_Overlay.pm:413
msgid "Custom field value could not be deleted"
-msgstr "Wert des benutzerdefinierten Felds konnte nicht gelöscht werden"
+msgstr "Wert des benutzerdefinierten Felds konnte nicht gelöscht werden"
-#: lib/RT/CustomField_Overlay.pm:1047
+#: lib/RT/CustomField_Overlay.pm:1150
msgid "Custom field value could not be found"
msgstr "Wert des benutzerdefinierten Feldes konnte nicht gefunden werden"
-#: lib/RT/CustomField_Overlay.pm:1049 lib/RT/CustomField_Overlay.pm:412
+#: lib/RT/CustomField_Overlay.pm:1152
+#: lib/RT/CustomField_Overlay.pm:411
msgid "Custom field value deleted"
-msgstr "Wert des benutzerdefinierten Feldes gelöscht"
+msgstr "Wert des benutzerdefinierten Feldes gelöscht"
-#: html/Elements/SelectGroups:51 html/Elements/SelectUsers:51 lib/RT/Transaction_Overlay.pm:627
+#: html/Elements/SelectGroups:51
+#: html/Elements/SelectUsers:51
+#: lib/RT/Transaction_Overlay.pm:627
msgid "CustomField"
msgstr "BenutzerdefiniertesFeld"
-#: html/SelfService/Display.html:61 html/Ticket/Create.html:191 html/Ticket/Elements/ShowSummary:76 html/Ticket/Elements/Tabs:116 html/Ticket/ModifyAll.html:65
+#: html/Prefs/MyRT.html:70
+#: html/Prefs/Quicksearch.html:70
+#: html/Prefs/Search.html:75
+msgid "Customize"
+msgstr "Anpassen"
+
+#: html/SelfService/Display.html:61
+#: html/Ticket/Create.html:201
+#: html/Ticket/Elements/ShowSummary:81
+#: html/Ticket/Elements/Tabs:116
+#: html/Ticket/ModifyAll.html:65
msgid "Dates"
msgstr "Datumsangaben"
@@ -1231,7 +1451,7 @@ msgstr "Dez."
#: etc/initialdata:222
msgid "Default Autoresponse template"
-msgstr "Standard Vorlage für automatische Antworten"
+msgstr "Standard Vorlage für automatische Antworten"
#: html/Tools/Offline.html:61
msgid "Default Queue"
@@ -1243,31 +1463,32 @@ msgstr "Standard Klient"
#: etc/initialdata:296
msgid "Default admin comment template"
-msgstr "Standard Vorlage für Admin-Kommentar"
+msgstr "Standard Vorlage für Admin-Kommentar"
#: etc/initialdata:275
msgid "Default admin correspondence template"
-msgstr "Standard Vorlage für Admin-Korrespondenz"
+msgstr "Standard Vorlage für Admin-Korrespondenz"
#: etc/initialdata:287
msgid "Default correspondence template"
-msgstr "Standard Vorlage für Korrespondenz"
+msgstr "Standard Vorlage für Korrespondenz"
#: etc/initialdata:253
msgid "Default transaction template"
-msgstr "Standard Vorlage für Transaktion"
+msgstr "Standard Vorlage für Transaktion"
#: NOT FOUND IN SOURCE
msgid "Default: %1/%2 changed from %3 to %4"
-msgstr "Standard: %1/%2 von \"%3\" auf \"%4\" geändert."
+msgstr "Standard: %1/%2 von \"%3\" auf \"%4\" geändert."
-#: html/User/Delegation.html:46 html/User/Delegation.html:49
+#: html/User/Delegation.html:46
+#: html/User/Delegation.html:49
msgid "Delegate rights"
msgstr "Rechte weitergeben"
#: lib/RT/System.pm:85
msgid "Delegate specific rights which have been granted to you."
-msgstr "Ihnen gewährte Rechte weitergeben"
+msgstr "Ihnen gewährte Rechte weitergeben"
#: lib/RT/System.pm:85
msgid "DelegateRights"
@@ -1277,93 +1498,124 @@ msgstr "RechteWeitergabe"
msgid "Delegation"
msgstr "Rechteweitergabe"
-#: html/Admin/Elements/EditScrips:75 html/Search/Elements/EditFormat:103 html/Search/Elements/EditQuery:57 html/Search/Elements/EditSearches:63
+#: html/Admin/Elements/EditScrips:75
+#: html/Search/Elements/EditFormat:103
+#: html/Search/Elements/EditQuery:57
+#: html/Search/Elements/EditSearches:63
+#: html/Widgets/SelectionBox:205
msgid "Delete"
-msgstr "Löschen"
+msgstr "Löschen"
#: html/Admin/Elements/EditTemplates:79
msgid "Delete Template"
-msgstr "Vorlage löschen"
+msgstr "Vorlage löschen"
-#: lib/RT/SavedSearch.pm:211
#. ($msg)
+#: lib/RT/SavedSearch.pm:211
msgid "Delete failed: %1"
-msgstr ""
+msgstr "Löschen fehlgeshlagen: %1"
#: html/Admin/Elements/EditScrips:74
msgid "Delete selected scrips"
-msgstr "Ausgewähltes Script löschen"
+msgstr "Ausgewähltes Script löschen"
#: lib/RT/Queue_Overlay.pm:115
msgid "Delete tickets"
-msgstr "Anfragen löschen"
+msgstr "Anfragen löschen"
+
+#: html/Search/Bulk.html:160
+msgid "Delete values"
+msgstr "Werte löschen"
#: lib/RT/Queue_Overlay.pm:115
msgid "DeleteTicket"
-msgstr "AnfrageLöschen"
+msgstr "AnfrageLöschen"
#: lib/RT/SavedSearch.pm:209
msgid "Deleted search"
-msgstr ""
+msgstr "Suche löschen"
# Are these three strings really different?
#: NOT FOUND IN SOURCE
msgid "Deleting this object could break referential integrity"
-msgstr "Löschen dieses Objektes würde die referenzielle Integrität verletzen"
+msgstr "Löschen dieses Objektes würde die referenzielle Integrität verletzen"
#: lib/RT/Queue_Overlay.pm:391
msgid "Deleting this object would break referential integrity"
-msgstr "Löschen dieses Objektes würde die referenzielle Integrität verletzen"
+msgstr "Löschen dieses Objektes würde die referenzielle Integrität verletzen"
#: lib/RT/User_Overlay.pm:513
msgid "Deleting this object would violate referential integrity"
-msgstr "Löschen dieses Objektes würde die referenzielle Integrität verletzen"
+msgstr "Löschen dieses Objektes würde die referenzielle Integrität verletzen"
-#: html/Approvals/Elements/Approve:66
+#: html/Approvals/Elements/Approve:69
msgid "Deny"
msgstr "Ablehnen"
-#: html/Elements/EditLinks:138 html/Elements/EditLinks:66 html/Elements/ShowLinks:58 html/Ticket/Create.html:212 html/Ticket/Elements/BulkLinks:56 html/Ticket/Elements/ShowDependencies:53
+#: html/Elements/EditLinks:140
+#: html/Elements/EditLinks:66
+#: html/Elements/ShowLinks:58
+#: html/Ticket/Create.html:219
+#: html/Ticket/Elements/BulkLinks:56
+#: html/Ticket/Elements/ShowDependencies:53
msgid "Depended on by"
msgstr "Ist Voraussetzung von"
-#: lib/RT/Transaction_Overlay.pm:707
#. ($value)
+#: lib/RT/Transaction_Overlay.pm:707
msgid "Dependency by %1 added"
-msgstr "Als Voraussetzung von %1 hinzugefügt"
+msgstr "Als Voraussetzung von %1 hinzugefügt"
-#: lib/RT/Transaction_Overlay.pm:747
#. ($value)
+#: lib/RT/Transaction_Overlay.pm:747
msgid "Dependency by %1 deleted"
-msgstr "Als Voraussetzung von %1 gelöscht"
+msgstr "Als Voraussetzung von %1 gelöscht"
-#: lib/RT/Transaction_Overlay.pm:704
#. ($value)
+#: lib/RT/Transaction_Overlay.pm:704
msgid "Dependency on %1 added"
msgstr "Setzt jetzt %1 voraus"
-#: lib/RT/Transaction_Overlay.pm:744
#. ($value)
+#: lib/RT/Transaction_Overlay.pm:744
msgid "Dependency on %1 deleted"
msgstr "Setzt %1 nicht mehr voraus "
-#: html/Elements/EditLinks:134 html/Elements/EditLinks:57 html/Elements/SelectLinkType:48 html/Elements/ShowLinks:48 html/Ticket/Create.html:211 html/Ticket/Elements/BulkLinks:52 html/Ticket/Elements/ShowDependencies:46
+#: html/Elements/EditLinks:136
+#: html/Elements/EditLinks:57
+#: html/Elements/SelectLinkType:48
+#: html/Elements/ShowLinks:48
+#: html/Ticket/Create.html:218
+#: html/Ticket/Elements/BulkLinks:52
+#: html/Ticket/Elements/ShowDependencies:46
msgid "Depends on"
msgstr "Voraussetzungen"
-#: html/Elements/SelectSortOrder:56 html/Search/Elements/DisplayOptions:78
+#: html/Elements/SelectSortOrder:56
+#: html/Search/Elements/DisplayOptions:78
msgid "Descending"
msgstr "absteigend"
-#: html/SelfService/Create.html:100 html/Ticket/Create.html:149
+#: html/SelfService/Create.html:100
+#: html/Ticket/Create.html:150
msgid "Describe the issue below"
msgstr "Beschreiben Sie hier das Problem"
-#: html/Admin/CustomFields/Modify.html:61 html/Admin/Elements/AddCustomFieldValue:57 html/Admin/Elements/EditCustomField:60 html/Admin/Elements/EditCustomFieldValues:56 html/Admin/Elements/EditScrip:56 html/Admin/Elements/ModifyTemplate:57 html/Admin/Groups/Modify.html:71 html/Admin/Queues/Modify.html:69 html/Search/Elements/EditSearches:56 html/User/Groups/Modify.html:70
+#: html/Admin/CustomFields/Modify.html:61
+#: html/Admin/Elements/AddCustomFieldValue:57
+#: html/Admin/Elements/EditCustomField:60
+#: html/Admin/Elements/EditCustomFieldValues:56
+#: html/Admin/Elements/EditScrip:56
+#: html/Admin/Elements/ModifyTemplate:57
+#: html/Admin/Groups/Modify.html:71
+#: html/Admin/Queues/Modify.html:69
+#: html/Search/Elements/EditSearches:56
+#: html/User/Groups/Modify.html:70
msgid "Description"
msgstr "Beschreibung"
-#: html/Search/Elements/EditFormat:71 html/Ticket/Elements/Tabs:108
+#: html/Search/Elements/EditFormat:71
+#: html/Ticket/Elements/Tabs:108
msgid "Display"
msgstr "Anzeige"
@@ -1377,11 +1629,11 @@ msgstr "Spalten anzeigen"
#: lib/RT/Queue_Overlay.pm:100
msgid "Display Scrip templates for this queue"
-msgstr "Zeige Scrip-Vorlagen für diesen Bereich"
+msgstr "Zeige Scrip-Vorlagen für diesen Bereich"
#: lib/RT/Queue_Overlay.pm:103
msgid "Display Scrips for this queue"
-msgstr "Zeige Scrips für diesen Bereich"
+msgstr "Zeige Scrips für diesen Bereich"
#: html/Ticket/Elements/ShowHistory:56
msgid "Display mode"
@@ -1389,19 +1641,19 @@ msgstr "Anzeigemodus"
#: lib/RT/Group_Overlay.pm:176
msgid "Display saved searches for this group"
-msgstr "Gespeicherte Suchanfragen für diese Gruppe anzeigen"
+msgstr "Gespeicherte Suchanfragen für diese Gruppe anzeigen"
-#: html/Elements/Footer:60
+#: html/Elements/Footer:67
msgid "Distributed under version 2 <a href=\"http://www.gnu.org/copyleft/gpl.html\"> of the GNU GPL.</a>"
-msgstr ""
+msgstr "Herausgegeben unter version 2 <a href=\"http://www.gnu.org/copyleft/gpl.html\"> der GNU GPL.</a>"
#: lib/RT/System.pm:76
msgid "Do anything and everything"
msgstr "Mache irgend etwas und alles"
-#: html/Search/Build.html:112
+#: NOT FOUND IN SOURCE
msgid "Do the Search"
-msgstr "Suche durchführen"
+msgstr "Suche durchführen"
#: html/Elements/Refresh:51
msgid "Don't refresh this page."
@@ -1411,32 +1663,52 @@ msgstr "Diese Seite nicht aktualisieren."
msgid "Download"
msgstr "Herunterladen"
-#: html/Admin/Groups/index.html:61 html/Admin/Users/index.html:64
+#: html/Admin/Groups/index.html:61
+#: html/Admin/Users/index.html:64
msgid "Download as a tab-delimited file"
msgstr "Als Tabulator separierte Datei speichern"
-#: html/Elements/SelectDateType:53 html/Ticket/Create.html:197 html/Ticket/Elements/EditDates:66 html/Ticket/Elements/ShowDates:64 lib/RT/Ticket_Overlay.pm:1149
+#: html/Elements/SelectDateType:53
+#: html/Ticket/Create.html:207
+#: html/Ticket/Elements/EditDates:66
+#: html/Ticket/Elements/Reminders:86
+#: html/Ticket/Elements/ShowDates:64
+#: lib/RT/Ticket_Overlay.pm:1150
msgid "Due"
-msgstr "Fällig"
+msgstr "Fällig"
+
+#: html/Elements/Quicksearch:48
+#: html/Elements/ShowSearch:49
+#: html/index.html:76
+msgid "Edit"
+msgstr "Ändere"
+
+#: html/Search/Bulk.html:149
+msgid "Edit Custom Fields"
+msgstr "Benutzerdefinierte Felder verändern"
-#: html/Admin/Elements/ObjectCustomFields:92 html/Admin/Queues/CustomFields.html:64 html/Admin/Users/CustomFields.html:64
#. ($Object->Name)
+#: html/Admin/Elements/ObjectCustomFields:92
+#: html/Admin/Queues/CustomFields.html:64
+#: html/Admin/Users/CustomFields.html:64
msgid "Edit Custom Fields for %1"
-msgstr "Bearbeite benutzerdefinierte Felder für %1"
+msgstr "Bearbeite benutzerdefinierte Felder für %1"
#: html/Admin/Global/CustomFields/Groups.html:9
msgid "Edit Custom Fields for all groups"
-msgstr ""
+msgstr "Benutzerdefinierte Felder für alle Gruppen verändern"
#: html/Admin/Global/CustomFields/Users.html:9
msgid "Edit Custom Fields for all users"
-msgstr ""
+msgstr "Benutzerdefinierte Felder für alle Benutzer verändern"
-#: html/Admin/Global/CustomFields/Queue-Tickets.html:9 html/Admin/Global/CustomFields/Queue-Transactions.html:9
+#: html/Admin/Global/CustomFields/Queue-Tickets.html:9
+#: html/Admin/Global/CustomFields/Queue-Transactions.html:9
msgid "Edit Custom Fields for tickets in all queues"
-msgstr ""
+msgstr "Benutzerdefinierte Felder von Tickets in allen Stapeln verändern"
-#: html/Search/Bulk.html:173 html/Ticket/ModifyLinks.html:57
+#: html/Search/Bulk.html:189
+#: html/Ticket/ModifyLinks.html:57
msgid "Edit Links"
msgstr "Bearbeite Beziehungen"
@@ -1444,16 +1716,21 @@ msgstr "Bearbeite Beziehungen"
msgid "Edit Query"
msgstr "Bearbeite Suche"
-#: html/Admin/Queues/Templates.html:63
+#: html/Ticket/Elements/Tabs:207
+msgid "Edit Search"
+msgstr "Suche editieren"
+
#. ($QueueObj->Name)
+#: html/Admin/Queues/Templates.html:63
msgid "Edit Templates for queue %1"
-msgstr "Bearbeite Vorlagen für den Bereich %1"
+msgstr "Bearbeite Vorlagen für den Bereich %1"
#: lib/RT/Group_Overlay.pm:175
msgid "Edit saved searches for this group"
-msgstr "Bearbeite gespeicherte Suchanfragen für diese Gruppe"
+msgstr "Bearbeite gespeicherte Suchanfragen für diese Gruppe"
-#: html/Admin/Elements/GlobalCustomFieldTabs:60 html/Admin/Global/index.html:67
+#: html/Admin/Elements/GlobalCustomFieldTabs:60
+#: html/Admin/Global/index.html:67
msgid "Edit system templates"
msgstr "Bearbeite Systemvorlagen"
@@ -1461,31 +1738,35 @@ msgstr "Bearbeite Systemvorlagen"
msgid "EditSavedSearches"
msgstr "GespeicherteSucheEditieren"
-#: html/Admin/Queues/Modify.html:140
#. ($QueueObj->Name)
+#: html/Admin/Queues/Modify.html:140
msgid "Editing Configuration for queue %1"
-msgstr "Bearbeite Konfiguration für den Bereich %1"
+msgstr "Bearbeite Konfiguration für den Bereich %1"
-#: html/Admin/CustomFields/Modify.html:125 html/Admin/Elements/EditCustomField:120
#. ($CustomFieldObj->Name())
+#: html/Admin/CustomFields/Modify.html:141
+#: html/Admin/Elements/EditCustomField:120
msgid "Editing CustomField %1"
msgstr "Bearbeite benutzerdefiniertes Feld %1"
-#: html/Admin/Groups/Members.html:53
#. ($Group->Name)
+#: html/Admin/Groups/Members.html:53
msgid "Editing membership for group %1"
-msgstr "Bearbeite Mitgliedschaft für die Gruppe %1"
+msgstr "Bearbeite Mitgliedschaft für die Gruppe %1"
-#: html/User/Groups/Members.html:150
#. ($Group->Name)
+#: html/User/Groups/Members.html:150
msgid "Editing membership for personal group %1"
-msgstr "Bearbeite Mitgliedschaft der persönlichen Gruppe %1"
+msgstr "Bearbeite Mitgliedschaft der persönlichen Gruppe %1"
-#: lib/RT/Record.pm:1281 lib/RT/Record.pm:1358
+#: lib/RT/Record.pm:1285
+#: lib/RT/Record.pm:1362
msgid "Either base or target must be specified"
msgstr "Es muss entweder eine Basis oder ein Ziel angegeben werden"
-#: html/Admin/Users/Modify.html:74 html/Ticket/Elements/AddWatchers:77 html/User/Prefs.html:65
+#: html/Admin/Users/Modify.html:74
+#: html/Ticket/Elements/AddWatchers:77
+#: html/User/Prefs.html:65
msgid "Email"
msgstr "E-Mail"
@@ -1493,30 +1774,36 @@ msgstr "E-Mail"
msgid "Email address in use"
msgstr "E-Mail-Adresse bereits in Gebrauch"
-# ## muss das überhaupt übersetzt werden???
-#: html/Admin/CustomFields/Modify.html:83 html/Admin/Elements/EditCustomField:72
+# ## muss das überhaupt übersetzt werden???
+#: html/Admin/CustomFields/Modify.html:98
+#: html/Admin/Elements/EditCustomField:72
msgid "Enabled (Unchecking this box disables this custom field)"
-msgstr "Aktiviert (Abwählen deaktiviert dieses benutzerdefinierte Feld)"
+msgstr "Aktiviert (Abwählen deaktiviert dieses benutzerdefinierte Feld)"
-#: html/Admin/Groups/Modify.html:84 html/User/Groups/Modify.html:74
+#: html/Admin/Groups/Modify.html:84
+#: html/User/Groups/Modify.html:74
msgid "Enabled (Unchecking this box disables this group)"
-msgstr "Aktiviert (Abwählen deaktiviert diese Gruppe)"
+msgstr "Aktiviert (Abwählen deaktiviert diese Gruppe)"
#: html/Admin/Queues/Modify.html:105
msgid "Enabled (Unchecking this box disables this queue)"
-msgstr "Aktiviert (Abwählen deaktiviert diesen Bereich)"
+msgstr "Aktiviert (Abwählen deaktiviert diesen Bereich)"
#: html/Admin/Queues/index.html:78
msgid "Enabled Queues"
msgstr "Aktivierte Bereiche"
-#: html/Admin/Elements/EditCustomField:136 html/Admin/Groups/Modify.html:150 html/Admin/Users/Modify.html:342 html/User/Groups/Modify.html:138
#. (loc_fuzzy($msg))
+#: html/Admin/Elements/EditCustomField:136
+#: html/Admin/Groups/Modify.html:150
+#: html/Admin/Users/Modify.html:342
+#: html/User/Groups/Modify.html:138
msgid "Enabled status %1"
msgstr "Status aktiviert: %1"
-#: html/Admin/CustomFields/Modify.html:143 html/Admin/Queues/Modify.html:162
#. (loc_fuzzy($msg))
+#: html/Admin/CustomFields/Modify.html:159
+#: html/Admin/Queues/Modify.html:162
msgid "Enabled status: %1"
msgstr "Status aktiviert: %1"
@@ -1524,45 +1811,48 @@ msgstr "Status aktiviert: %1"
msgid "Enter multiple values"
msgstr "Mehrere Werte eingeben"
-#: html/Elements/EditLinks:124
+#: html/Elements/EditLinks:126
msgid "Enter objects or URIs to link objects to. Separate multiple entries with spaces."
-msgstr ""
+msgstr "Gib Objekte oder URI's ein um zu anderen Objekten zu verlinken. Trenne mehrere Einträge mit Leerzeichen."
#: lib/RT/CustomField_Overlay.pm:65
msgid "Enter one value"
msgstr "Einen Wert eingeben"
-#: html/Elements/EditLinks:121
+#: html/Elements/EditLinks:123
msgid "Enter queues or URIs to link queues to. Separate multiple entries with spaces."
-msgstr ""
+msgstr "Gib Stapel oder URI's ein um zu anderen Stapeln zu verlinken. Trenne mehrere Einträge mit Leerzeichen."
-#: html/Elements/EditLinks:117 html/Search/Bulk.html:174
+#: html/Elements/EditLinks:119
+#: html/Search/Bulk.html:190
msgid "Enter tickets or URIs to link tickets to. Separate multiple entries with spaces."
-msgstr ""
+msgstr "Gib Anfragen oder URI's ein um zu anderen Anfragen zu verlinken. Trenne mehrere Einträge mit Leerzeichen."
#: lib/RT/CustomField_Overlay.pm:66
msgid "Enter up to %1 values"
msgstr "Gib bis zu %1 Werte ein"
-#: html/Elements/Login:61 html/SelfService/Error.html:46 html/SelfService/Error.html:47
+#: html/Elements/Login:67
+#: html/SelfService/Error.html:46
+#: html/SelfService/Error.html:47
msgid "Error"
msgstr "Fehler"
-# Queue->AddWatcher ist ein Code-Teil, nicht übersetzen
+# Queue->AddWatcher ist ein Code-Teil, nicht übersetzen
#: lib/RT/Queue_Overlay.pm:669
msgid "Error in parameters to Queue->AddWatcher"
msgstr "Fehler in den Parametern zu Queue->AddWatcher"
-# Queue->DeleteWatcher ist ein Code-Teil, nicht übersetzen
+# Queue->DeleteWatcher ist ein Code-Teil, nicht übersetzen
#: lib/RT/Queue_Overlay.pm:830
msgid "Error in parameters to Queue->DeleteWatcher"
msgstr "Fehler in den Parametern zu Queue->DeleteWatcher"
-#: lib/RT/Ticket_Overlay.pm:1333
+#: lib/RT/Ticket_Overlay.pm:1334
msgid "Error in parameters to Ticket->AddWatcher"
msgstr "Fehler in den Parametern zu Ticket->AddWatcher"
-#: lib/RT/Ticket_Overlay.pm:1499
+#: lib/RT/Ticket_Overlay.pm:1500
msgid "Error in parameters to Ticket->DeleteWatcher"
msgstr "Fehler in den Parametern zu Ticket->DeleteWatcher"
@@ -1572,7 +1862,7 @@ msgstr "Anfragen eskalieren"
#: html/Ticket/Elements/ShowBasics:57
msgid "Estimated"
-msgstr "Geschätzt"
+msgstr "Geschätzt"
#: etc/initialdata:20
msgid "Everyone"
@@ -1588,7 +1878,7 @@ msgstr "Zusatzinformationen"
#: lib/RT/SavedSearch.pm:165
msgid "Failed to create search attribute"
-msgstr ""
+msgstr "Such Attribut konnte nicht erstellt werden"
#: lib/RT/User_Overlay.pm:377
msgid "Failed to find 'Privileged' users pseudogroup."
@@ -1598,15 +1888,15 @@ msgstr "Konnte die Pseudogruppe 'Privileged' nicht finden."
msgid "Failed to find 'Unprivileged' users pseudogroup"
msgstr "Konnte die Pseudogruppe 'Unprivileged' nicht finden."
-#: bin/rt-crontool:163
#. ($modname, $@)
+#: bin/rt-crontool:163
msgid "Failed to load module %1. (%2)"
msgstr "Konnte Modul %1 nicht laden. (%2)"
-#: lib/RT/SavedSearch.pm:168
#. ($privacy)
+#: lib/RT/SavedSearch.pm:168
msgid "Failed to load object for %1"
-msgstr ""
+msgstr "Objekt %1 konnte nicht geladen werden"
#: lib/RT/Date.pm:438
msgid "Feb."
@@ -1618,47 +1908,52 @@ msgstr "Dateiname"
#: lib/RT/CustomField_Overlay.pm:69
msgid "Fill in multiple text areas"
-msgstr "Mehrere Textfelder füllen"
+msgstr "Mehrere Textfelder füllen"
#: lib/RT/CustomField_Overlay.pm:74
msgid "Fill in multiple wikitext areas"
-msgstr ""
+msgstr "Schreibe mehrere Wikitext Bereiche"
#: lib/RT/CustomField_Overlay.pm:70
msgid "Fill in one text area"
-msgstr "Ein Textfeld füllen"
+msgstr "Ein Textfeld füllen"
#: lib/RT/CustomField_Overlay.pm:75
msgid "Fill in one wikitext area"
-msgstr ""
+msgstr "Schreibe einen Wikitext Bereich"
#: lib/RT/CustomField_Overlay.pm:71
msgid "Fill in up to %1 text areas"
-msgstr "%1 Textfelder füllen"
+msgstr "%1 Textfelder füllen"
#: lib/RT/CustomField_Overlay.pm:76
msgid "Fill in up to %1 wikitext areas"
-msgstr ""
+msgstr "Schreibe bis zu %1 Wikitext Bereiche"
-#: html/Search/Elements/PickBasics:162 html/Ticket/Create.html:185 html/Ticket/Elements/EditBasics:79 lib/RT/Tickets_Overlay.pm:1569
+#: html/Search/Elements/PickBasics:149
+#: html/Ticket/Create.html:180
+#: html/Ticket/Elements/EditBasics:92
+#: lib/RT/Tickets_Overlay.pm:1616
msgid "Final Priority"
-msgstr "Endpriorität"
+msgstr "Endpriorität"
-#: lib/RT/Ticket_Overlay.pm:1140
+#: lib/RT/Ticket_Overlay.pm:1141
msgid "FinalPriority"
-msgstr "EndPriorität"
+msgstr "EndPriorität"
-#: html/Admin/Groups/index.html:72 html/Admin/Queues/People.html:82 html/Ticket/Elements/EditPeople:55
+#: html/Admin/Groups/index.html:72
+#: html/Admin/Queues/People.html:82
+#: html/Ticket/Elements/EditPeople:55
msgid "Find groups whose"
msgstr "Finde Gruppen dessen"
-msgid" Find groups whose"
-msgstr "Finde Gruppen dessen"
-#: html/Admin/Queues/People.html:78 html/Admin/Users/index.html:70 html/Ticket/Elements/EditPeople:51
+#: html/Admin/Queues/People.html:78
+#: html/Admin/Users/index.html:70
+#: html/Ticket/Elements/EditPeople:51
msgid "Find people whose"
msgstr "Finde Leute deren"
-#: html/Search/Results.html:109
+#: html/Search/Results.html:144
msgid "Find tickets"
msgstr "Anfragen suchen"
@@ -1666,28 +1961,30 @@ msgstr "Anfragen suchen"
msgid "First"
msgstr "Erste"
-#: docs/design_docs/string-extraction-guide.txt:33 lib/RT/StyleGuide.pod:766
+#: docs/design_docs/string-extraction-guide.txt:33
+#: lib/RT/StyleGuide.pod:766
msgid "Foo Bar Baz"
msgstr "Foo Bar Baz"
-#: docs/design_docs/string-extraction-guide.txt:24 lib/RT/StyleGuide.pod:757
+#: docs/design_docs/string-extraction-guide.txt:24
+#: lib/RT/StyleGuide.pod:757
msgid "Foo!"
msgstr "Foo!"
-#: html/Search/Bulk.html:105
+#: html/Search/Bulk.html:83
msgid "Force change"
-msgstr "Änderung erzwingen"
+msgstr "Änderung erzwingen"
#: html/Search/Elements/EditFormat:52
msgid "Format"
-msgstr ""
+msgstr "Format"
-#: html/Search/Results.html:107
#. ($ticketcount)
+#: html/Search/Results.html:142
msgid "Found %quant(%1,ticket)"
msgstr "%1 Anfrage(n) gefunden"
-#: lib/RT/Record.pm:942
+#: lib/RT/Record.pm:946
msgid "Found Object"
msgstr "Objekt gefunden"
@@ -1699,7 +1996,8 @@ msgstr "Freie Eingabe"
msgid "Fri."
msgstr "Fr."
-#: html/Ticket/Elements/ShowHistory:62 html/Ticket/Elements/ShowHistory:72
+#: html/Ticket/Elements/ShowHistory:62
+#: html/Ticket/Elements/ShowHistory:68
msgid "Full headers"
msgstr "Alle Kopfzeilen"
@@ -1707,12 +2005,13 @@ msgstr "Alle Kopfzeilen"
msgid "Get template from file"
msgstr "Vorlage von Datei nehmen"
-#: lib/RT/Transaction_Overlay.pm:673
#. ($New->Name)
+#: lib/RT/Transaction_Overlay.pm:673
msgid "Given to %1"
-msgstr "An %1 übergeben"
+msgstr "An %1 übergeben"
-#: html/Admin/Elements/Tabs:65 html/Admin/index.html:82
+#: html/Admin/Elements/Tabs:65
+#: html/Admin/index.html:82
msgid "Global"
msgstr "Global"
@@ -1724,28 +2023,46 @@ msgstr "Globale benutzerdefinierte Felder"
msgid "Global custom field configuration"
msgstr "Konfiguration globaler benutzerdefinierter Felder"
-#: html/Admin/Elements/SelectTemplate:59
#. (loc($Template->Name))
+#: html/Admin/Elements/SelectTemplate:59
msgid "Global template: %1"
msgstr "Globale Vorlage: %1"
+#: html/Admin/CustomFields/index.html:80
+#: html/Search/Results.html:95
#: html/Tools/Offline.html:91
msgid "Go"
msgstr "Start"
-#: html/Admin/Groups/index.html:67 html/Admin/Groups/index.html:73 html/Admin/Queues/People.html:80 html/Admin/Queues/People.html:84 html/Admin/Queues/index.html:66 html/Admin/Users/index.html:73 html/Search/Results.html:76 html/Ticket/Elements/EditPeople:53 html/Ticket/Elements/EditPeople:57 html/index.html:91
+#: html/Admin/Groups/index.html:67
+#: html/Admin/Groups/index.html:73
+#: html/Admin/Queues/People.html:80
+#: html/Admin/Queues/People.html:84
+#: html/Admin/Queues/index.html:66
+#: html/Admin/Users/index.html:73
+#: html/Elements/RefreshHomepage:48
+#: html/Search/Results.html:77
+#: html/Ticket/Elements/EditPeople:53
+#: html/Ticket/Elements/EditPeople:57
msgid "Go!"
msgstr "Los!"
-#: html/Elements/GotoTicket:46 html/SelfService/Elements/GotoTicket:46
+#: html/Elements/GotoTicket:46
+#: html/SelfService/Elements/GotoTicket:46
msgid "Goto ticket"
msgstr "Zeige Anfrage"
-#: html/Ticket/Elements/AddWatchers:67 html/Ticket/Elements/ShowGroupMembers:55 html/User/Elements/DelegateRights:99
+#: html/Ticket/Elements/AddWatchers:67
+#: html/Ticket/Elements/ShowGroupMembers:55
+#: html/User/Elements/DelegateRights:99
msgid "Group"
msgstr "Gruppe"
-#: html/Admin/Elements/CustomFieldTabs:68 html/Admin/Elements/GroupTabs:66 html/Admin/Elements/QueueTabs:82 html/Admin/Elements/SystemTabs:65 html/Admin/Global/index.html:76
+#: html/Admin/Elements/CustomFieldTabs:68
+#: html/Admin/Elements/GroupTabs:66
+#: html/Admin/Elements/QueueTabs:82
+#: html/Admin/Elements/SystemTabs:65
+#: html/Admin/Global/index.html:76
msgid "Group Rights"
msgstr "Gruppenrechte"
@@ -1753,8 +2070,8 @@ msgstr "Gruppenrechte"
msgid "Group already has member"
msgstr "Gruppe hat bereits Mitglieder"
-#: html/Admin/Groups/Modify.html:109
#. ($create_msg)
+#: html/Admin/Groups/Modify.html:109
msgid "Group could not be created: %1"
msgstr "Gruppe konnte nicht erstellt werden: %1"
@@ -1766,75 +2083,96 @@ msgstr "Gruppe angelegt"
msgid "Group has no such member"
msgstr "Gruppe hat kein solches Mitglied"
-#: lib/RT/Group_Overlay.pm:971 lib/RT/Queue_Overlay.pm:745 lib/RT/Queue_Overlay.pm:805 lib/RT/Ticket_Overlay.pm:1391 lib/RT/Ticket_Overlay.pm:1471
+#: lib/RT/Group_Overlay.pm:971
+#: lib/RT/Queue_Overlay.pm:745
+#: lib/RT/Queue_Overlay.pm:805
+#: lib/RT/Ticket_Overlay.pm:1392
+#: lib/RT/Ticket_Overlay.pm:1472
msgid "Group not found"
msgstr "Gruppe nicht gefunden"
-#: html/Admin/Elements/GlobalCustomFieldTabs:59 html/Admin/Elements/SelectNewGroupMembers:56 html/Admin/Elements/Tabs:56 html/Admin/Global/CustomFields/index.html:69 html/Admin/Groups/Members.html:85 html/Admin/Queues/People.html:104 html/Admin/Users/Memberships.html:53 html/Admin/index.html:67 html/User/Groups/Members.html:88 lib/RT/CustomField_Overlay.pm:1088
+#: html/Admin/Elements/GlobalCustomFieldTabs:59
+#: html/Admin/Elements/SelectNewGroupMembers:56
+#: html/Admin/Elements/Tabs:56
+#: html/Admin/Global/CustomFields/index.html:69
+#: html/Admin/Groups/Members.html:85
+#: html/Admin/Queues/People.html:104
+#: html/Admin/Users/Memberships.html:53
+#: html/Admin/index.html:67
+#: html/User/Groups/Members.html:88
+#: lib/RT/CustomField_Overlay.pm:1191
msgid "Groups"
msgstr "Gruppen"
#: lib/RT/Group_Overlay.pm:997
msgid "Groups can't be members of their members"
-msgstr "Gruppen können nicht Mitglied eines ihrer Mitglieder sein"
+msgstr "Gruppen können nicht Mitglied eines ihrer Mitglieder sein"
#: html/Admin/Groups/index.html:82
msgid "Groups matching search criteria"
msgstr "Gruppen auf die das Suchkriterium passt"
-#: html/Ticket/Elements/ShowRequestor:77
+#: html/Ticket/Elements/ShowRequestor:76
msgid "Groups this user belongs to"
-msgstr "Gruppen zu denen der Benutzer gehört"
+msgstr "Gruppen zu denen der Benutzer gehört"
-#: lib/RT/Interface/CLI.pm:94 lib/RT/Interface/CLI.pm:94
+#: lib/RT/Interface/CLI.pm:94
msgid "Hello!"
msgstr "Hallo!"
-#: docs/design_docs/string-extraction-guide.txt:40 lib/RT/StyleGuide.pod:773
#. ($name)
+#: docs/design_docs/string-extraction-guide.txt:40
+#: lib/RT/StyleGuide.pod:773
msgid "Hello, %1"
msgstr "Hallo %1"
-#: html/Admin/Elements/GroupTabs:70 html/Admin/Elements/UserTabs:64 html/Ticket/Elements/ShowHistory:51 html/Ticket/Elements/Tabs:111
+#: html/Admin/Elements/GroupTabs:70
+#: html/Admin/Elements/UserTabs:64
+#: html/Ticket/Elements/ShowHistory:51
+#: html/Ticket/Elements/Tabs:111
msgid "History"
-msgstr "Geschichte"
+msgstr "Verlauf"
-#: html/Admin/Groups/History.html:62
#. ($GroupObj->Name)
+#: html/Admin/Groups/History.html:62
msgid "History of the group %1"
-msgstr "Geschichte der Gruppe %1"
+msgstr "Verlauf der Gruppe %1"
-#: html/Admin/Users/History.html:62
#. ($UserObj->Name)
+#: html/Admin/Users/History.html:62
msgid "History of the user %1"
-msgstr "Geschichte des Benutzers %1"
+msgstr "Verlauf des Benutzers %1"
#: html/Elements/Tabs:65
msgid "Homepage"
-msgstr "Start"
+msgstr "Startseite"
+
+#: html/Elements/SelectTimeUnits:48
+msgid "Hours"
+msgstr "Stunden"
-#: lib/RT/Base.pm:110
#. (6)
+#: lib/RT/Base.pm:110
msgid "I have %quant(%1,concrete mixer)."
msgstr "Ich habe %quant(%1, Betonmischer)"
-#: html/Search/Build.html:637
+#: html/Search/Build.html:615
msgid "I'm lost"
msgstr "Ich bin verwirrt"
-#: html/Ticket/Elements/ShowBasics:48 lib/RT/Tickets_Overlay.pm:1494
+#: html/Ticket/Elements/ShowBasics:48
+#: lib/RT/Tickets_Overlay.pm:1541
msgid "Id"
msgstr "Nr."
-#: html/Admin/Users/Modify.html:65 html/User/Prefs.html:60
+#: html/Admin/Users/Modify.html:65
+#: html/User/Prefs.html:60
msgid "Identity"
-msgstr "Identität"
+msgstr "Identität"
#: etc/initialdata:429
msgid "If an approval is rejected, reject the original and delete pending approvals"
-msgstr ""
-"Wenn eine Freigabe abgewiesen wird, weise das Original ab und lösche "
-"wartende Freigaben"
+msgstr "Wenn eine Freigabe abgewiesen wird, weise das Original ab und lösche wartende Freigaben"
#: html/Tools/Offline.html:74
msgid "If no Requestor is specified, create tickets with this requestor."
@@ -1846,23 +2184,26 @@ msgstr "Wenn kein Bereich spezifiziert ist, dann generiere das Anfrage in diesem
#: bin/rt-crontool:215
msgid "If this tool were setgid, a hostile local user could use this tool to gain administrative access to RT."
-msgstr ""
+msgstr "Wenn dieses Programm setgid ist, könnte ein böswilliger lokaler Nutzer Administrator Rechte auf dem RT bekommen."
-#: html/Admin/Queues/People.html:126 html/Ticket/Modify.html:60 html/Ticket/ModifyAll.html:128 html/Ticket/ModifyPeople.html:59
+#: html/Admin/Queues/People.html:126
+#: html/Ticket/Modify.html:60
+#: html/Ticket/ModifyAll.html:128
+#: html/Ticket/ModifyPeople.html:59
msgid "If you've updated anything above, be sure to"
msgstr "Wenn Sie etwas aktualisiert haben, denken Sie daran hier zu speichern"
-#: lib/RT/Record.pm:933
+#: lib/RT/Record.pm:937
msgid "Illegal value for %1"
-msgstr "Unerlaubter Wert für %1"
+msgstr "Unerlaubter Wert für %1"
#: NOT FOUND IN SOURCE
msgid "Image"
msgstr "Bild"
-#: lib/RT/Record.pm:936
+#: lib/RT/Record.pm:940
msgid "Immutable field"
-msgstr "Unveränderbares Feld"
+msgstr "Unveränderbares Feld"
#: html/Admin/Groups/index.html:65
msgid "Include disabled groups in listing."
@@ -1876,75 +2217,94 @@ msgstr "Zeige auch deaktivierte Bereiche an."
msgid "Include disabled users in search."
msgstr "Zeige deaktivierte Benutzer auch in der Suche an."
-#: html/Search/Build.html:663
+#: html/Search/Build.html:641
msgid "Incomplete Query"
-msgstr "Unvollständige Suche"
+msgstr "Unvollständige Suche"
-#: html/Search/Build.html:660
+#: html/Search/Build.html:638
msgid "Incomplete query"
-msgstr "Unvollständige Anfrage"
+msgstr "Unvollständige Anfrage"
-#: html/Search/Elements/PickBasics:161 lib/RT/Tickets_Overlay.pm:1544
+#: html/Search/Elements/PickBasics:148
+#: lib/RT/Tickets_Overlay.pm:1591
msgid "Initial Priority"
-msgstr "Anfängliche Priorität"
+msgstr "Anfängliche Priorität"
-#: lib/RT/Ticket_Overlay.pm:1139 lib/RT/Ticket_Overlay.pm:1141
+#: lib/RT/Ticket_Overlay.pm:1140
+#: lib/RT/Ticket_Overlay.pm:1142
msgid "InitialPriority"
-msgstr "AnfänglichePriorität"
+msgstr "AnfänglichePriorität"
#: lib/RT/ScripAction_Overlay.pm:134
msgid "Input error"
msgstr "Eingabefehler"
-#: lib/RT/Ticket_Overlay.pm:3454
+#. ($self->FriendlyPattern)
+#. ($CF->FriendlyPattern)
+#: html/Elements/ValidateCustomFields:23
+#: lib/RT/CustomField_Overlay.pm:1008
+msgid "Input must match %1"
+msgstr "Eingabe muss mit %1 übereinstimmen"
+
+#: lib/RT/Ticket_Overlay.pm:3437
msgid "Internal Error"
msgstr "Interner Fehler"
-#: lib/RT/Record.pm:305
#. ($id->{error_message})
+#: lib/RT/Record.pm:309
msgid "Internal Error: %1"
msgstr "Interner Fehler: %1"
#: lib/RT/Group_Overlay.pm:676
msgid "Invalid Group Type"
-msgstr "Ungültige Gruppenart"
+msgstr "Ungültige Gruppenart"
#: lib/RT/Principal_Overlay.pm:161
msgid "Invalid Right"
-msgstr "Ungültiges Recht"
+msgstr "Ungültiges Recht"
-#: lib/RT/Record.pm:938
+#: lib/RT/Record.pm:942
msgid "Invalid data"
-msgstr "Ungültige Daten"
+msgstr "Ungültige Daten"
-#: lib/RT/Scrip_Overlay.pm:158 lib/RT/Template_Overlay.pm:276
+#. ($msg)
+#: lib/RT/CustomField_Overlay.pm:202
+#: lib/RT/CustomField_Overlay.pm:666
+msgid "Invalid pattern: %1"
+msgstr "Ungültiges Muster: %1"
+
+#: lib/RT/Scrip_Overlay.pm:158
+#: lib/RT/Template_Overlay.pm:276
msgid "Invalid queue"
-msgstr "Ungültiger Bereich"
+msgstr "Ungültiger Bereich"
-#: lib/RT/ACE_Overlay.pm:265 lib/RT/ACE_Overlay.pm:274 lib/RT/ACE_Overlay.pm:280 lib/RT/ACE_Overlay.pm:291
+#: lib/RT/ACE_Overlay.pm:265
+#: lib/RT/ACE_Overlay.pm:274
+#: lib/RT/ACE_Overlay.pm:280
+#: lib/RT/ACE_Overlay.pm:291
msgid "Invalid right"
-msgstr "Ungültiges Recht"
+msgstr "Ungültiges Recht"
-#: lib/RT/Record.pm:280
#. ($key)
+#: lib/RT/Record.pm:284
msgid "Invalid value for %1"
-msgstr "Ungültiger Wert für %1"
+msgstr "Ungültiger Wert für %1"
-#: lib/RT/Record.pm:1597
+#: lib/RT/Record.pm:1601
msgid "Invalid value for custom field"
-msgstr "Ungültiger Wert für das benutzerdefinierte Feld"
+msgstr "Ungültiger Wert für das benutzerdefinierte Feld"
-#: lib/RT/Ticket_Overlay.pm:413
+#: lib/RT/Ticket_Overlay.pm:414
msgid "Invalid value for status"
-msgstr "Ungültiger Statuswert"
+msgstr "Ungültiger Statuswert"
#: bin/rt-crontool:216
msgid "It is incredibly important that nonprivileged users not be allowed to run this tool."
-msgstr ""
+msgstr "Es ist wichtig, dass nicht authorisierte Benutzer dieses Programm nicht starten können."
#: bin/rt-crontool:217
msgid "It is suggested that you create a non-privileged unix user with the correct group membership and RT access to run this tool."
-msgstr ""
+msgstr "Es wird empfohlen einen nicht priviligierten Unix User mit korrekten Gruppenrechten anzulegen um dieses Programm zu nutzen."
#: bin/rt-crontool:188
msgid "It takes several arguments:"
@@ -1966,7 +2326,7 @@ msgstr "Betrete oder verlasse diese Gruppe"
msgid "Jul."
msgstr "Jul."
-#: html/Ticket/Elements/Tabs:122
+#: html/Ticket/Elements/Tabs:124
msgid "Jumbo"
msgstr "Alles"
@@ -1974,19 +2334,21 @@ msgstr "Alles"
msgid "Jun."
msgstr "Jun."
-#: html/Admin/Users/Modify.html:94 html/User/Prefs.html:76
+#: html/Admin/Users/Modify.html:94
+#: html/User/Prefs.html:76
msgid "Language"
msgstr "Sprache"
#: html/Search/Elements/EditFormat:79
msgid "Large"
-msgstr "Groß"
+msgstr "Groß"
#: html/Ticket/Elements/Tabs:96
msgid "Last"
msgstr "Letzter Kontakt"
-#: html/Ticket/Elements/EditDates:59 html/Ticket/Elements/ShowDates:60
+#: html/Ticket/Elements/EditDates:59
+#: html/Ticket/Elements/ShowDates:60
msgid "Last Contact"
msgstr "Letzter Kontakt"
@@ -2008,7 +2370,7 @@ msgstr "Links"
#: html/Admin/Users/Modify.html:109
msgid "Let this user access RT"
-msgstr "Diesem Benutzer RT-Zugriff gewähren"
+msgstr "Diesem Benutzer RT-Zugriff gewähren"
#: html/Admin/Users/Modify.html:113
msgid "Let this user be granted rights"
@@ -2016,36 +2378,40 @@ msgstr "Diesem Benutzer Rechte zuweisen lassen"
#: html/Search/Elements/EditFormat:68
msgid "Link"
-msgstr ""
+msgstr "Link"
-#: lib/RT/Record.pm:1292
+#: lib/RT/Record.pm:1296
msgid "Link already exists"
msgstr "Beziehung existiert bereits"
-#: lib/RT/Record.pm:1306
+#: lib/RT/Record.pm:1310
msgid "Link could not be created"
msgstr "Beziehung konnte nicht erstellt werden"
-#: lib/RT/Record.pm:1312
#. ($TransString)
+#: lib/RT/Record.pm:1316
msgid "Link created (%1)"
msgstr "Beziehung erstellt (%1)"
-#: lib/RT/Record.pm:1373
#. ($TransString)
+#: lib/RT/Record.pm:1377
msgid "Link deleted (%1)"
-msgstr "Beziehung gelöscht (%1)"
+msgstr "Beziehung gelöscht (%1)"
-#: lib/RT/Record.pm:1379
+#: lib/RT/Record.pm:1383
msgid "Link not found"
msgstr "Beziehung nicht gefunden"
-#: html/Ticket/ModifyLinks.html:46 html/Ticket/ModifyLinks.html:50
#. ($Ticket->Id)
+#: html/Ticket/ModifyLinks.html:46
+#: html/Ticket/ModifyLinks.html:50
msgid "Link ticket #%1"
msgstr "Verweise auf Anfrage #%1"
-#: html/Ticket/Create.html:205 html/Ticket/Elements/ShowSummary:83 html/Ticket/Elements/Tabs:120 html/Ticket/ModifyAll.html:78
+#: html/Ticket/Create.html:214
+#: html/Ticket/Elements/ShowSummary:87
+#: html/Ticket/Elements/Tabs:120
+#: html/Ticket/ModifyAll.html:78
msgid "Links"
msgstr "Beziehungen"
@@ -2065,76 +2431,83 @@ msgstr "GespeicherteSucheLaden"
msgid "Loaded perl modules"
msgstr "Geladene Perl Module"
-#: lib/RT/SavedSearch.pm:112
#. ($self->Name)
+#: lib/RT/SavedSearch.pm:112
msgid "Loaded search %1"
-msgstr ""
+msgstr "Geladene Suche %1"
-#: html/Admin/Users/Modify.html:138 html/User/Prefs.html:126
+#: html/Admin/Users/Modify.html:138
+#: html/User/Prefs.html:126
msgid "Location"
msgstr "Adresse"
-#: lib/RT.pm:212
#. ($RT::LogDir)
-msgid "Log directory %1 not found or couldn't be written.\\n RT can't run."
+#: lib/RT.pm:212
+msgid ""
+"Log directory %1 not found or couldn't be written.\\n"
+" RT can't run."
msgstr ""
-"Log-Verzeichnis %1 nicht gefunden oder kein Schreibzugriff.\\n RT kann nicht "
-"starten."
+"Log-Verzeichnis %1 nicht gefunden oder kein Schreibzugriff.\\n"
+" RT kann nicht starten."
-#: html/Elements/Header:94
-#. ("<b>".$session{'CurrentUser'}->Name."</b>")
+#. ("<span>".$session{'CurrentUser'}->Name."</span>")
+#: html/Elements/Header:82
msgid "Logged in as %1"
msgstr "Angemeldet als %1"
-#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:57 html/Elements/Login:66 html/Elements/Login:76 lib/RT/StyleGuide.pod:797
+#: docs/design_docs/string-extraction-guide.txt:71
+#: html/Elements/Login:57
+#: html/Elements/Login:73
+#: html/Elements/Login:89
+#: lib/RT/StyleGuide.pod:797
msgid "Login"
msgstr "Anmelden"
-#: html/Elements/Header:91
+#: html/Elements/Header:92
msgid "Logout"
msgstr "Abmelden"
-#: lib/RT/CustomField_Overlay.pm:866
+#: lib/RT/CustomField_Overlay.pm:920
msgid "Lookup type mismatch"
msgstr "Suchtyp unpassend"
-#: html/Search/Bulk.html:104
+#: html/Search/Bulk.html:82
msgid "Make Owner"
msgstr "Besitzer festlegen"
-#: html/Search/Bulk.html:128
+#: html/Search/Bulk.html:106
msgid "Make Status"
msgstr "Status festlegen"
-#: html/Search/Bulk.html:136
+#: html/Search/Bulk.html:114
msgid "Make date Due"
-msgstr "Fälligkeitsdatum festlegen"
+msgstr "Fälligkeitsdatum festlegen"
-#: html/Search/Bulk.html:138
+#: html/Search/Bulk.html:116
msgid "Make date Resolved"
msgstr "Erledigungsdatum festlegen"
-#: html/Search/Bulk.html:132
+#: html/Search/Bulk.html:110
msgid "Make date Started"
msgstr "Anfangsdatum festlegen"
-#: html/Search/Bulk.html:130
+#: html/Search/Bulk.html:108
msgid "Make date Starts"
msgstr "Startdatum festlegen"
-#: html/Search/Bulk.html:134
+#: html/Search/Bulk.html:112
msgid "Make date Told"
msgstr "Eingangsdatum festlegen"
-#: html/Search/Bulk.html:124
+#: html/Search/Bulk.html:102
msgid "Make priority"
-msgstr "Priorität festlegen"
+msgstr "Priorität festlegen"
-#: html/Search/Bulk.html:126
+#: html/Search/Bulk.html:104
msgid "Make queue"
msgstr "Bereich festlegen"
-#: html/Search/Bulk.html:122
+#: html/Search/Bulk.html:100
msgid "Make subject"
msgstr "Betreff festlegen"
@@ -2152,7 +2525,7 @@ msgstr "Gruppen und Gruppenmitglieder verwalten"
#: html/Admin/index.html:85
msgid "Manage properties and configuration which apply to all queues"
-msgstr "Eigenschaften und Einstellungen für alle Bereiche verwalten"
+msgstr "Eigenschaften und Einstellungen für alle Bereiche verwalten"
#: html/Admin/index.html:74
msgid "Manage queues and queue-specific properties"
@@ -2164,302 +2537,339 @@ msgstr "Benutzer und Passworte verwalten"
#: lib/RT/Date.pm:439
msgid "Mar."
-msgstr "Mär."
+msgstr "Mär."
#: lib/RT/Date.pm:441
msgid "May."
msgstr "Mai"
-#: lib/RT/Transaction_Overlay.pm:720
#. ($value)
+#: lib/RT/Transaction_Overlay.pm:720
msgid "Member %1 added"
-msgstr "Mitglied %1 hinzugefügt"
+msgstr "Mitglied %1 hinzugefügt"
-#: lib/RT/Transaction_Overlay.pm:760
#. ($value)
+#: lib/RT/Transaction_Overlay.pm:760
msgid "Member %1 deleted"
-msgstr "Mitglied %1 gelöscht"
+msgstr "Mitglied %1 gelöscht"
#: lib/RT/Group_Overlay.pm:1008
msgid "Member added"
-msgstr "Mitglied hinzugefügt"
+msgstr "Mitglied hinzugefügt"
#: lib/RT/Group_Overlay.pm:1170
msgid "Member deleted"
-msgstr "Mitglied gelöscht"
+msgstr "Mitglied gelöscht"
#: lib/RT/Group_Overlay.pm:1174
msgid "Member not deleted"
-msgstr "Mitglied nicht gelöscht"
+msgstr "Mitglied nicht gelöscht"
#: html/Elements/SelectLinkType:47
msgid "Member of"
msgstr "Mitglied von"
-#: html/Admin/Elements/GroupTabs:63 html/User/Elements/GroupTabs:63
+#: html/Admin/Elements/GroupTabs:63
+#: html/User/Elements/GroupTabs:63
msgid "Members"
msgstr "Mitglieder"
-#: lib/RT/Transaction_Overlay.pm:717
#. ($value)
+#: lib/RT/Transaction_Overlay.pm:717
msgid "Membership in %1 added"
-msgstr "Mitgliedschaft in %1 hinzugefügt"
+msgstr "Mitgliedschaft in %1 hinzugefügt"
-#: lib/RT/Transaction_Overlay.pm:757
#. ($value)
+#: lib/RT/Transaction_Overlay.pm:757
msgid "Membership in %1 deleted"
-msgstr "Mitgliedschaft in %1 gelöscht"
+msgstr "Mitgliedschaft in %1 gelöscht"
#: html/Admin/Elements/UserTabs:61
msgid "Memberships"
msgstr "Mitgliedschaft"
-#: html/Admin/Users/Memberships.html:60
#. ($UserObj->Name)
+#: html/Admin/Users/Memberships.html:60
msgid "Memberships of the user %1"
msgstr "Mitgliedschaft des Benutzers %1"
-#: lib/RT/Ticket_Overlay.pm:2849
+#: lib/RT/Ticket_Overlay.pm:2832
msgid "Merge Successful"
msgstr "Vereinigung erfolgreich"
-#: lib/RT/Ticket_Overlay.pm:2736
+#: lib/RT/Ticket_Overlay.pm:2719
msgid "Merge failed. Couldn't set EffectiveId"
msgstr "Vereinigung fehlgeschlagen. Konnte EffectiveId nicht setzen"
-#: lib/RT/Ticket_Overlay.pm:2744
+#: lib/RT/Ticket_Overlay.pm:2727
msgid "Merge failed. Couldn't set Status"
msgstr "Vereinigung fehlgeschlagen. Konnte Status nicht setzen"
-#: html/Elements/EditLinks:129 html/Ticket/Elements/BulkLinks:48
+#: html/Elements/EditLinks:131
+#: html/Ticket/Elements/BulkLinks:48
msgid "Merge into"
msgstr "Vereinigen mit"
-#: lib/RT/Transaction_Overlay.pm:723
#. ($value)
+#: lib/RT/Transaction_Overlay.pm:723
msgid "Merged into %1"
msgstr "Vereinigt mit %1"
-#: html/Search/Bulk.html:165 html/Ticket/Update.html:116
+#: html/Search/Bulk.html:143
+#: html/Ticket/Update.html:119
msgid "Message"
msgstr "Nachricht"
-#: lib/RT/Ticket_Overlay.pm:2406
+#: lib/RT/Ticket_Overlay.pm:2389
msgid "Message could not be recorded"
msgstr "Nachricht konnte nicht gespeichert werden"
-#: lib/RT/Ticket_Overlay.pm:2409
+#: lib/RT/Ticket_Overlay.pm:2392
msgid "Message recorded"
msgstr "Nachricht gespeichert"
-#: html/Ticket/Elements/PreviewScrips:115
+#: html/Ticket/Elements/PreviewScrips:117
msgid "Messages about this ticket will not be sent to..."
-msgstr "Nachrichten über diese Anfrage werden nicht an diese Empfänger gesendet:"
+msgstr "Nachrichten über diese Anfrage werden nicht an diese Empfänger gesendet:"
+
+#: html/Elements/SelectTimeUnits:47
+msgid "Minutes"
+msgstr "Minuten"
-#: html/Search/Build.html:667
+#: html/Search/Build.html:645
msgid "Mismatched parentheses"
msgstr "Unausgeglichene Klammerung"
-#: lib/RT/Record.pm:940
+#: lib/RT/Record.pm:944
msgid "Missing a primary key?: %1"
-msgstr "%1: Fehlt ein Primärschlüssel?"
+msgstr "%1: Fehlt ein Primärschlüssel?"
-#: html/Admin/Users/Modify.html:193 html/User/Prefs.html:93
+#: html/Admin/Users/Modify.html:193
+#: html/User/Prefs.html:93
msgid "Mobile"
msgstr "Handy"
#: lib/RT/Queue_Overlay.pm:95
msgid "Modify Access Control List"
-msgstr "Ändere Zugriffskontrollliste (ACL)"
+msgstr "Ändere Zugriffskontrollliste (ACL)"
-#: html/Admin/Elements/ObjectCustomFields:96
#. (loc(lc($FriendlySubTypes)), loc(lc($Types)))
+#: html/Admin/Elements/ObjectCustomFields:96
msgid "Modify Custom Fields which apply to %1 for all %2"
-msgstr "Alle benutzerdefinierten Felder %2, die zu %1 gehören, ändern"
+msgstr "Alle benutzerdefinierten Felder %2, die zu %1 gehören, ändern"
-#: html/Admin/Elements/ObjectCustomFields:98
#. (loc(lc($Types)))
+#: html/Admin/Elements/ObjectCustomFields:98
msgid "Modify Custom Fields which apply to all %1"
-msgstr "Alle benutzerdefinierten Felder, die zu %1 gehören, ändern"
+msgstr "Alle benutzerdefinierten Felder, die zu %1 gehören, ändern"
-#: html/Admin/Global/GroupRights.html:106 html/Admin/Groups/GroupRights.html:94 html/Admin/Queues/GroupRights.html:107
+#: html/Admin/Global/GroupRights.html:106
+#: html/Admin/Groups/GroupRights.html:94
+#: html/Admin/Queues/GroupRights.html:107
msgid "Modify Group Rights"
-msgstr "Gruppenrechte ändern"
+msgstr "Gruppenrechte ändern"
-#: html/Admin/Groups/Members.html:102 html/User/Groups/Members.html:101
+#: html/Admin/Groups/Members.html:102
+#: html/User/Groups/Members.html:101
msgid "Modify Members"
-msgstr "Mitglieder ändern"
+msgstr "Mitglieder ändern"
#: html/User/Delegation.html:58
msgid "Modify Rights"
-msgstr "Rechte ändern"
+msgstr "Rechte ändern"
#: lib/RT/Queue_Overlay.pm:98
msgid "Modify Scrip templates for this queue"
-msgstr "Ändere Scrip-Vorlagen für diesen Bereich"
+msgstr "Ändere Scrip-Vorlagen für diesen Bereich"
#: lib/RT/Queue_Overlay.pm:101
msgid "Modify Scrips for this queue"
-msgstr "Ändere Scrips für diesen Bereich"
+msgstr "Ändere Scrips für diesen Bereich"
-#: html/Admin/Global/UserRights.html:75 html/Admin/Groups/UserRights.html:76 html/Admin/Queues/UserRights.html:75
+#: html/Admin/Global/UserRights.html:75
+#: html/Admin/Groups/UserRights.html:76
+#: html/Admin/Queues/UserRights.html:75
msgid "Modify User Rights"
-msgstr "Ändern der Benutzerrechte"
+msgstr "Ändern der Benutzerrechte"
-#: html/Admin/Queues/CustomField.html:66
#. ($QueueObj->Name())
+#: html/Admin/Queues/CustomField.html:66
msgid "Modify a CustomField for queue %1"
-msgstr "Ändere ein benutzerdefiniertes Feld für den Bereich %1"
+msgstr "Ändere ein benutzerdefiniertes Feld für den Bereich %1"
-#: html/Admin/Queues/Scrip.html:75
#. ($QueueObj->Name)
+#: html/Admin/Queues/Scrip.html:75
msgid "Modify a scrip for queue %1"
-msgstr "Ändere ein Scrip für den Bereich %1"
+msgstr "Ändere ein Scrip für den Bereich %1"
#: html/Admin/Global/Scrip.html:69
msgid "Modify a scrip which applies to all queues"
-msgstr "Ändere ein globales benutzerdefiniertes Feld"
+msgstr "Ändere ein globales benutzerdefiniertes Feld"
-#: html/Admin/CustomFields/Objects.html:90
#. ($CF->Name)
+#: html/Admin/CustomFields/Objects.html:90
msgid "Modify associated objects for %1"
-msgstr "Ändern der assoziierte Objekte von %1"
+msgstr "Ändern der assoziierte Objekte von %1"
-#: html/Ticket/ModifyDates.html:46 html/Ticket/ModifyDates.html:50
#. ($TicketObj->Id)
+#: html/Ticket/ModifyDates.html:46
+#: html/Ticket/ModifyDates.html:50
msgid "Modify dates for #%1"
-msgstr "Ändere Datumsangaben für #%1"
+msgstr "Ändere Datumsangaben für #%1"
-#: html/Ticket/ModifyDates.html:56
#. ($TicketObj->Id)
+#: html/Ticket/ModifyDates.html:56
msgid "Modify dates for ticket # %1"
-msgstr "Ändere Datumsangaben für Anfrage #%1"
+msgstr "Ändere Datumsangaben für Anfrage #%1"
-#: html/Admin/Elements/GlobalCustomFieldTabs:65 html/Admin/Global/index.html:72
+#: html/Admin/Elements/GlobalCustomFieldTabs:65
+#: html/Admin/Global/index.html:72
msgid "Modify global custom fields"
-msgstr "Ändern der globalen benutzerdefinierten Felder"
+msgstr "Ändern der globalen benutzerdefinierten Felder"
-#: html/Admin/Elements/GlobalCustomFieldTabs:70 html/Admin/Global/GroupRights.html:46 html/Admin/Global/GroupRights.html:49 html/Admin/Global/index.html:77
+#: html/Admin/Elements/GlobalCustomFieldTabs:70
+#: html/Admin/Global/GroupRights.html:46
+#: html/Admin/Global/GroupRights.html:49
+#: html/Admin/Global/index.html:77
msgid "Modify global group rights"
-msgstr "Ändere globale Gruppenrechte"
+msgstr "Ändere globale Gruppenrechte"
#: html/Admin/Global/GroupRights.html:54
msgid "Modify global group rights."
-msgstr "Ändere globale Gruppenrechte."
+msgstr "Ändere globale Gruppenrechte."
-#: html/Admin/Global/UserRights.html:46 html/Admin/Global/UserRights.html:49 html/Admin/Global/index.html:81
+#: html/Admin/Global/UserRights.html:46
+#: html/Admin/Global/UserRights.html:49
+#: html/Admin/Global/index.html:81
msgid "Modify global user rights"
-msgstr "Ändere globale Benutzerrechte"
+msgstr "Ändere globale Benutzerrechte"
#: html/Admin/Global/UserRights.html:54
msgid "Modify global user rights."
-msgstr "Ändere globale Benutzerrechte."
+msgstr "Ändere globale Benutzerrechte."
#: lib/RT/Group_Overlay.pm:171
msgid "Modify group metadata or delete group"
-msgstr "Ändere Gruppen-Metadaten oder lösche die Gruppe"
+msgstr "Ändere Gruppen-Metadaten oder lösche die Gruppe"
-#: html/Admin/CustomFields/GroupRights.html:164
#. ($CustomFieldObj->Name)
+#: html/Admin/CustomFields/GroupRights.html:164
msgid "Modify group rights for custom field %1"
-msgstr "Ändere Gruppenrechte für das benutzerdefinierte Feld %1"
+msgstr "Ändere Gruppenrechte für das benutzerdefinierte Feld %1"
-#: html/Admin/Groups/GroupRights.html:46 html/Admin/Groups/GroupRights.html:50 html/Admin/Groups/GroupRights.html:56
#. ($GroupObj->Name)
+#: html/Admin/Groups/GroupRights.html:46
+#: html/Admin/Groups/GroupRights.html:50
+#: html/Admin/Groups/GroupRights.html:56
msgid "Modify group rights for group %1"
-msgstr "Ändere die Gruppenrechte der Gruppe %1"
+msgstr "Ändere die Gruppenrechte der Gruppe %1"
-#: html/Admin/Queues/GroupRights.html:46 html/Admin/Queues/GroupRights.html:50
#. ($QueueObj->Name)
+#: html/Admin/Queues/GroupRights.html:46
+#: html/Admin/Queues/GroupRights.html:50
msgid "Modify group rights for queue %1"
-msgstr "Ändere Gruppenrechte für den Bereich %1"
+msgstr "Ändere Gruppenrechte für den Bereich %1"
#: lib/RT/Group_Overlay.pm:173
msgid "Modify membership roster for this group"
-msgstr "Ändere Mitgliedsverzeichnis dieser Gruppe"
+msgstr "Ändere Mitgliedsverzeichnis dieser Gruppe"
#: lib/RT/System.pm:83
msgid "Modify one's own RT account"
-msgstr "Ändert den eigenen RT-Zugang"
+msgstr "Ändert den eigenen RT-Zugang"
-#: html/Admin/Queues/People.html:46 html/Admin/Queues/People.html:50
#. ($QueueObj->Name)
+#: html/Admin/Queues/People.html:46
+#: html/Admin/Queues/People.html:50
msgid "Modify people related to queue %1"
-msgstr "Ändere Personen im Zusammenhang mit diesem Bereich %1"
+msgstr "Ändere Personen im Zusammenhang mit diesem Bereich %1"
-#: html/Ticket/ModifyPeople.html:46 html/Ticket/ModifyPeople.html:50 html/Ticket/ModifyPeople.html:56
#. ($Ticket->id)
#. ($Ticket->Id)
+#: html/Ticket/ModifyPeople.html:46
+#: html/Ticket/ModifyPeople.html:50
+#: html/Ticket/ModifyPeople.html:56
msgid "Modify people related to ticket #%1"
-msgstr "Ändere Personen der Anfragen #%1"
+msgstr "Ändere Personen der Anfragen #%1"
-#: html/Admin/Queues/Scrips.html:67
#. ($QueueObj->Name)
+#: html/Admin/Queues/Scrips.html:67
msgid "Modify scrips for queue %1"
-msgstr "Ändere Scrips für den Bereich %1"
+msgstr "Ändere Scrips für den Bereich %1"
-#: html/Admin/Elements/GlobalCustomFieldTabs:56 html/Admin/Global/Scrips.html:65 html/Admin/Global/index.html:63
+#: html/Admin/Elements/GlobalCustomFieldTabs:56
+#: html/Admin/Global/Scrips.html:65
+#: html/Admin/Global/index.html:63
msgid "Modify scrips which apply to all queues"
-msgstr "Ändere auf alle Bereiche angewandte Scrips"
+msgstr "Ändere auf alle Bereiche angewandte Scrips"
-#: html/Admin/Global/Template.html:102 html/Admin/Global/Template.html:46 html/Admin/Global/Template.html:51 html/Admin/Queues/Template.html:99
#. (loc($TemplateObj->Name()))
#. ($TemplateObj->id)
+#: html/Admin/Global/Template.html:102
+#: html/Admin/Global/Template.html:46
+#: html/Admin/Global/Template.html:51
+#: html/Admin/Queues/Template.html:99
msgid "Modify template %1"
-msgstr "Ändere Vorlage %1"
+msgstr "Ändere Vorlage %1"
#: html/Admin/Global/Templates.html:65
msgid "Modify templates which apply to all queues"
-msgstr "Ändere globale Vorlagen"
+msgstr "Ändere globale Vorlagen"
-#: html/Admin/Groups/Modify.html:119 html/User/Groups/Modify.html:107
#. ($Group->Name)
+#: html/Admin/Groups/Modify.html:119
+#: html/User/Groups/Modify.html:107
msgid "Modify the group %1"
-msgstr "Ändere Gruppe %1"
+msgstr "Ändere Gruppe %1"
#: lib/RT/Queue_Overlay.pm:96
msgid "Modify the queue watchers"
-msgstr "Ändere die Bereichsbeobachter"
+msgstr "Ändere die Bereichsbeobachter"
-#: html/Admin/Users/Modify.html:301
#. ($UserObj->Name)
+#: html/Admin/Users/Modify.html:301
msgid "Modify the user %1"
-msgstr "Ändere Benutzer %1"
+msgstr "Ändere Benutzer %1"
-#: html/Ticket/ModifyAll.html:58
#. ($Ticket->Id)
+#: html/Ticket/ModifyAll.html:58
msgid "Modify ticket # %1"
-msgstr "Ändere Anfrage #%1"
+msgstr "Ändere Anfrage #%1"
-#: html/Ticket/Modify.html:46 html/Ticket/Modify.html:49 html/Ticket/Modify.html:55
#. ($TicketObj->Id)
+#: html/Ticket/Modify.html:46
+#: html/Ticket/Modify.html:49
+#: html/Ticket/Modify.html:55
msgid "Modify ticket #%1"
-msgstr "Ändere Anfrage #%1"
+msgstr "Ändere Anfrage #%1"
#: lib/RT/Queue_Overlay.pm:114
msgid "Modify tickets"
-msgstr "Ändere Anfragen"
+msgstr "Ändere Anfragen"
-#: html/Admin/CustomFields/UserRights.html:157
#. ($CustomFieldObj->Name)
+#: html/Admin/CustomFields/UserRights.html:157
msgid "Modify user rights for custom field %1"
-msgstr "Ändere Benutzerrechte für benutzerdefinierte Felder von %1"
+msgstr "Ändere Benutzerrechte für benutzerdefinierte Felder von %1"
-#: html/Admin/Groups/UserRights.html:46 html/Admin/Groups/UserRights.html:50 html/Admin/Groups/UserRights.html:56
#. ($GroupObj->Name)
+#: html/Admin/Groups/UserRights.html:46
+#: html/Admin/Groups/UserRights.html:50
+#: html/Admin/Groups/UserRights.html:56
msgid "Modify user rights for group %1"
-msgstr "Ändere Benutzerrechte für die Gruppe %1"
+msgstr "Ändere Benutzerrechte für die Gruppe %1"
-#: html/Admin/Queues/UserRights.html:46 html/Admin/Queues/UserRights.html:50
#. ($QueueObj->Name)
+#: html/Admin/Queues/UserRights.html:46
+#: html/Admin/Queues/UserRights.html:50
msgid "Modify user rights for queue %1"
-msgstr "Ändere Benutzerrechte für den Bereich %1"
+msgstr "Ändere Benutzerrechte für den Bereich %1"
#: lib/RT/Queue_Overlay.pm:95
msgid "ModifyACL"
msgstr "ACLBearbeiten"
-#: lib/RT/CustomField_Overlay.pm:103
+#: lib/RT/CustomField_Overlay.pm:108
msgid "ModifyCustomField"
msgstr "BenutzerdefiniertesFeldBearbeiten"
@@ -2491,10 +2901,10 @@ msgstr "AnfrageBearbeiten"
msgid "Mon."
msgstr "Mo."
-#: html/Ticket/Elements/ShowRequestor:62
#. ($name)
+#: html/Ticket/Elements/ShowRequestor:61
msgid "More about %1"
-msgstr "Mehr über %1"
+msgstr "Mehr über %1"
#: html/Admin/Elements/PickCustomFields:83
msgid "Move down"
@@ -2510,22 +2920,32 @@ msgstr "Mehrere"
#: lib/RT/User_Overlay.pm:227
msgid "Must specify 'Name' attribute"
-msgstr "Sie müssen eine Angabe bei 'Name' machen"
+msgstr "Sie müssen eine Angabe bei 'Name' machen"
-#: html/SelfService/Elements/MyRequests:70
#. ($friendly_status)
+#: html/SelfService/Elements/MyRequests:69
msgid "My %1 tickets"
msgstr "Meine %1 Anfragen"
-#: html/Approvals/index.html:46 html/Approvals/index.html:47
+#: html/Approvals/index.html:46
+#: html/Approvals/index.html:47
msgid "My approvals"
msgstr "Meine Freigaben"
-#: html/Search/Elements/SearchPrivacy:50 html/Search/Elements/SelectSearchObject:53 html/Search/Elements/SelectSearchesForObjects:53
+#: html/Search/Elements/SearchPrivacy:50
+#: html/Search/Elements/SelectSearchObject:53
+#: html/Search/Elements/SelectSearchesForObjects:53
msgid "My saved searches"
msgstr "Meine gespeicherten Suchanfragen"
-#: html/Admin/CustomFields/Modify.html:58 html/Admin/Elements/AddCustomFieldValue:53 html/Admin/Elements/EditCustomField:55 html/Admin/Elements/EditCustomFieldValues:55 html/Admin/Elements/ModifyTemplate:49 html/Admin/Groups/Modify.html:65 html/User/Groups/Modify.html:65
+#: html/Admin/CustomFields/Modify.html:58
+#: html/Admin/Elements/AddCustomFieldValue:53
+#: html/Admin/Elements/EditCustomField:55
+#: html/Admin/Elements/EditCustomFieldValues:55
+#: html/Admin/Elements/ModifyTemplate:49
+#: html/Admin/Groups/Modify.html:65
+#: html/Search/Bulk.html:158
+#: html/User/Groups/Modify.html:65
msgid "Name"
msgstr "Name"
@@ -2537,15 +2957,16 @@ msgstr "Benutzername ist bereits in Gebrauch"
msgid "Never"
msgstr "Niemals"
-#: html/Elements/Quicksearch:51
+#: NOT FOUND IN SOURCE
msgid "New"
msgstr "Neu"
-#: html/Elements/EditLinks:115
+#: html/Elements/EditLinks:117
msgid "New Links"
msgstr "Neue Beziehungen"
-#: html/Admin/Users/Modify.html:119 html/User/Prefs.html:109
+#: html/Admin/Users/Modify.html:119
+#: html/User/Prefs.html:109
msgid "New Password"
msgstr "Neues Passwort"
@@ -2553,15 +2974,21 @@ msgstr "Neues Passwort"
msgid "New Pending Approval"
msgstr "Neue wartende Freigaben"
-#: html/Ticket/Elements/Tabs:193
+#: NOT FOUND IN SOURCE
msgid "New Query"
msgstr "Neue Suche"
-#: html/Admin/Elements/CustomFieldTabs:93 html/Admin/Queues/CustomField.html:73
+#: html/Ticket/Elements/Tabs:205
+msgid "New Search"
+msgstr "Neue Suche"
+
+#: html/Admin/Elements/CustomFieldTabs:93
+#: html/Admin/Queues/CustomField.html:73
msgid "New custom field"
msgstr "Neues benutzerdefiniertes Feld"
-#: html/Admin/Elements/GroupTabs:77 html/User/Elements/GroupTabs:73
+#: html/Admin/Elements/GroupTabs:77
+#: html/User/Elements/GroupTabs:73
msgid "New group"
msgstr "Neue Gruppe"
@@ -2577,15 +3004,25 @@ msgstr "Neue Passworterinnerung wurde verschickt"
msgid "New queue"
msgstr "Neuer Bereich"
+#: html/Ticket/Elements/Reminders:71
+msgid "New reminder:"
+msgstr "Neue Wiedervorlage"
+
#: html/Admin/Elements/SelectRights:65
msgid "New rights"
msgstr "Neue Rechte"
-#: html/Admin/Global/Scrip.html:61 html/Admin/Global/Scrips.html:60 html/Admin/Queues/Scrip.html:64 html/Admin/Queues/Scrips.html:76
+#: html/Admin/Global/Scrip.html:61
+#: html/Admin/Global/Scrips.html:60
+#: html/Admin/Queues/Scrip.html:64
+#: html/Admin/Queues/Scrips.html:76
msgid "New scrip"
msgstr "Neues Scrip"
-#: html/Admin/Global/Template.html:81 html/Admin/Global/Templates.html:60 html/Admin/Queues/Template.html:79 html/Admin/Queues/Templates.html:71
+#: html/Admin/Global/Template.html:81
+#: html/Admin/Global/Templates.html:60
+#: html/Admin/Queues/Template.html:79
+#: html/Admin/Queues/Templates.html:71
msgid "New template"
msgstr "Neue Vorlage"
@@ -2593,7 +3030,7 @@ msgstr "Neue Vorlage"
msgid "New ticket"
msgstr "Neue Anfrage"
-#: lib/RT/Ticket_Overlay.pm:2713
+#: lib/RT/Ticket_Overlay.pm:2696
msgid "New ticket doesn't exist"
msgstr "Neue Anfrage existiert nicht"
@@ -2605,19 +3042,22 @@ msgstr "Neuer Benutzer"
msgid "New user called"
msgstr "Neuer Benutzer aufgerufen"
-#: html/Admin/Queues/People.html:76 html/Ticket/Elements/EditPeople:50
+#: html/Admin/Queues/People.html:76
+#: html/Ticket/Elements/EditPeople:50
msgid "New watchers"
msgstr "Neue Beobachter"
+#: html/Helpers/CalPopup.html:13
#: html/Ticket/Elements/Tabs:92
msgid "Next"
-msgstr "Nächste"
+msgstr "Nächste"
#: html/Elements/TicketList:104
msgid "Next Page"
-msgstr "Nächste Seite"
+msgstr "Nächste Seite"
-#: html/Admin/Users/Modify.html:84 html/User/Prefs.html:72
+#: html/Admin/Users/Modify.html:84
+#: html/User/Prefs.html:72
msgid "Nickname"
msgstr "Spitzname"
@@ -2625,7 +3065,8 @@ msgstr "Spitzname"
msgid "No Class defined"
msgstr "Keine Klasse definiert"
-#: html/Admin/CustomFields/Modify.html:124 html/Admin/Elements/EditCustomField:119
+#: html/Admin/CustomFields/Modify.html:140
+#: html/Admin/Elements/EditCustomField:119
msgid "No CustomField"
msgstr "Kein benutzerdefiniertes Feld"
@@ -2633,44 +3074,49 @@ msgstr "Kein benutzerdefiniertes Feld"
msgid "No CustomField defined"
msgstr "Kein benutzerdefiniertes Feld definiert"
-#: html/Admin/Groups/GroupRights.html:105 html/Admin/Groups/UserRights.html:92
+#: html/Admin/Groups/GroupRights.html:105
+#: html/Admin/Groups/UserRights.html:92
msgid "No Group defined"
msgstr "Keine Gruppe definiert"
-#: lib/RT/Tickets_Overlay_SQL.pm:477
+#: lib/RT/Tickets_Overlay_SQL.pm:480
msgid "No Query"
msgstr "Keine Suche"
-#: html/Admin/Queues/GroupRights.html:118 html/Admin/Queues/UserRights.html:89
+#: html/Admin/Queues/GroupRights.html:118
+#: html/Admin/Queues/UserRights.html:89
msgid "No Queue defined"
msgstr "Kein Bereich vorhanden"
#: bin/rt-crontool:73
msgid "No RT user found. Please consult your RT administrator.\\n"
-msgstr ""
-"Kein RT-Benutzer gefunden. Bitte kontaktiere Sie Ihren "
-"RT-Administrator.\\n"
+msgstr "Kein RT-Benutzer gefunden. Bitte kontaktiere Sie Ihren RT-Administrator.\\n"
-#: html/Admin/Global/Template.html:100 html/Admin/Queues/Template.html:97
+#: html/Admin/Global/Template.html:100
+#: html/Admin/Queues/Template.html:97
msgid "No Template"
msgstr "Keine Vorlage"
-#: html/Approvals/Elements/Approve:67
+#: html/Approvals/Elements/Approve:73
msgid "No action"
msgstr "Keine Aktion"
-#: lib/RT/Record.pm:935
+#: lib/RT/Record.pm:939
msgid "No column specified"
msgstr "Keine Spalte angegeben"
-#: html/Ticket/Elements/ShowRequestor:68
+#: html/Ticket/Elements/ShowRequestor:67
msgid "No comment entered about this user"
msgstr "Kein Kommentar zu diesem Benutzer angegeben"
-#: lib/RT/Action/Generic.pm:186 lib/RT/Condition/Generic.pm:198 lib/RT/Search/ActiveTicketsInQueue.pm:78 lib/RT/Search/Generic.pm:135
#. (ref $self)
+#: lib/RT/Action/Generic.pm:179
+#: lib/RT/Condition/Generic.pm:198
+#: lib/RT/Search/ActiveTicketsInQueue.pm:78
+#: lib/RT/Search/Generic.pm:135
+#: lib/RT/Search/Googleish.pm:78
msgid "No description for %1"
-msgstr "Keine Beschreibung für %1 vorhanden"
+msgstr "Keine Beschreibung für %1 vorhanden"
#: lib/RT/Users_Overlay.pm:185
msgid "No group specified"
@@ -2680,9 +3126,9 @@ msgstr "Keine Gruppe angegeben"
msgid "No groups matching search criteria found."
msgstr "Keine Gruppe mit diesen Kriterien gefunden"
-#: lib/RT/Ticket_Overlay.pm:2349
+#: lib/RT/Ticket_Overlay.pm:2350
msgid "No message attached"
-msgstr "Keine Nachricht angefügt"
+msgstr "Keine Nachricht angefügt"
#: lib/RT/User_Overlay.pm:1035
msgid "No password set"
@@ -2692,8 +3138,8 @@ msgstr "Kein Passwort gesetzt"
msgid "No permission to create queues"
msgstr "Keine Erlaubnis Bereiche anzulegen"
-#: lib/RT/Ticket_Overlay.pm:409
#. ($QueueObj->Name)
+#: lib/RT/Ticket_Overlay.pm:410
msgid "No permission to create tickets in the queue '%1'"
msgstr "Kein Erlaubnis um Anfragen im Bereich '%1' anzulegen"
@@ -2709,13 +3155,15 @@ msgstr "Kein Recht dieses Anfrage anzuzeigen"
msgid "No permission to view update ticket"
msgstr "Kein Recht dieses Anfrage zu aktualisieren"
-#: lib/RT/Queue_Overlay.pm:792 lib/RT/Ticket_Overlay.pm:1450
+#: lib/RT/Queue_Overlay.pm:792
+#: lib/RT/Ticket_Overlay.pm:1451
msgid "No principal specified"
msgstr "Keine Rolle angegeben"
-#: html/Admin/Queues/People.html:175 html/Admin/Queues/People.html:185
+#: html/Admin/Queues/People.html:175
+#: html/Admin/Queues/People.html:185
msgid "No principals selected."
-msgstr "Keine Rolle ausgewählt."
+msgstr "Keine Rolle ausgewählt."
#: html/Admin/Queues/index.html:57
msgid "No queues matching search criteria found."
@@ -2727,13 +3175,13 @@ msgstr "Keine Rechte gefunden"
#: html/Admin/Elements/SelectRights:53
msgid "No rights granted."
-msgstr "Keine Rechte gewährt."
+msgstr "Keine Rechte gewährt."
#: lib/RT/SavedSearch.pm:187
msgid "No search loaded"
-msgstr ""
+msgstr "Keine Suche geladen"
-#: html/Search/Bulk.html:194
+#: html/Search/Bulk.html:220
msgid "No search to operate on."
msgstr "Keine Suche zu bearbeiten."
@@ -2741,7 +3189,8 @@ msgstr "Keine Suche zu bearbeiten."
msgid "No subject"
msgstr "Kein Betreff"
-#: lib/RT/Transaction_Overlay.pm:517 lib/RT/Transaction_Overlay.pm:554
+#: lib/RT/Transaction_Overlay.pm:517
+#: lib/RT/Transaction_Overlay.pm:554
msgid "No transaction type specified"
msgstr "Kein Transaktionstyp angegeben"
@@ -2749,19 +3198,19 @@ msgstr "Kein Transaktionstyp angegeben"
msgid "No users matching search criteria found."
msgstr "Keine auf die Suchkriterien passende Benutzer gefunden"
-#: lib/RT/Record.pm:932
+#: lib/RT/Record.pm:936
msgid "No value sent to _Set!\\n"
msgstr "Kein Wert an _Set geschickt!\\n"
-#: html/Elements/QuickCreate:61
+#: html/Elements/QuickCreate:59
msgid "Nobody"
msgstr "Niemand"
-#: lib/RT/Record.pm:937
+#: lib/RT/Record.pm:941
msgid "Nonexistant field?"
msgstr "Nichtexistierendes Feld?"
-#: html/Elements/Header:96
+#: html/Elements/Header:84
msgid "Not logged in."
msgstr "Nicht angemeldet."
@@ -2773,7 +3222,7 @@ msgstr "Nicht angegeben"
msgid "Not yet implemented."
msgstr "Noch nicht implementiert."
-#: html/Approvals/Elements/Approve:70
+#: html/Approvals/Elements/Approve:77
msgid "Notes"
msgstr "Bemerkungen"
@@ -2789,21 +3238,23 @@ msgstr "Benachrichtige AdminCCs"
msgid "Notify AdminCcs as Comment"
msgstr "Benachrichtige AdminCCs als Kommentar"
-#: etc/initialdata:93 etc/upgrade/3.1.17/content:6
+#: etc/initialdata:93
+#: etc/upgrade/3.1.17/content:6
msgid "Notify Ccs"
msgstr "Benachrichtige CCs"
-#: etc/initialdata:89 etc/upgrade/3.1.17/content:2
+#: etc/initialdata:89
+#: etc/upgrade/3.1.17/content:2
msgid "Notify Ccs as Comment"
msgstr "Benachrichtige CCs als Kommentar"
#: etc/initialdata:128
msgid "Notify Other Recipients"
-msgstr "Benachrichtige andere Empfänger"
+msgstr "Benachrichtige andere Empfänger"
#: etc/initialdata:124
msgid "Notify Other Recipients as Comment"
-msgstr "Benachrichtige andere Empfänger als Kommentar"
+msgstr "Benachrichtige andere Empfänger als Kommentar"
#: etc/initialdata:85
msgid "Notify Owner"
@@ -2815,19 +3266,15 @@ msgstr "Benachrichtige Besitzer als Kommentar"
#: etc/initialdata:376
msgid "Notify Owner of their rejected ticket"
-msgstr "Besitzer über ihre abgewiesene Anfrage informieren"
+msgstr "Besitzer über ihre abgewiesene Anfrage informieren"
#: etc/initialdata:365
msgid "Notify Owner of their ticket has been approved by all approvers"
-msgstr ""
-"Benachrichtige Besitzer, dass sein Anfrage von allen Entscheidungsträgern "
-"freigegeben wurde"
+msgstr "Benachrichtige Besitzer, dass sein Anfrage von allen Entscheidungsträgern freigegeben wurde"
#: etc/initialdata:353
msgid "Notify Owner of their ticket has been approved by some approver"
-msgstr ""
-"Benachrichtige Besitzer, dass sein Anfrage von einigen Entscheidungsträgern "
-"freigegeben wurde"
+msgstr "Benachrichtige Besitzer, dass sein Anfrage von einigen Entscheidungsträgern freigegeben wurde"
#: etc/initialdata:334
msgid "Notify Owners and AdminCcs of new items pending their approval"
@@ -2861,29 +3308,30 @@ msgstr "Nov."
msgid "OR"
msgstr "Oder"
-#: lib/RT/Record.pm:319
+#: lib/RT/Record.pm:323
msgid "Object could not be created"
msgstr "Objekt konnte nicht erstellt werden"
#: lib/RT/Record.pm:124
msgid "Object could not be deleted"
-msgstr "Objekt konnte nicht gelöscht werden"
+msgstr "Objekt konnte nicht gelöscht werden"
-#: lib/RT/Record.pm:338
+#: lib/RT/Record.pm:342
msgid "Object created"
msgstr "Objekt erstellt"
#: lib/RT/Record.pm:121
msgid "Object deleted"
-msgstr "Objekt gelöscht"
+msgstr "Objekt gelöscht"
-#: html/Admin/CustomFields/Objects.html:72 html/Admin/Elements/ObjectCustomFields:63
#. ($ObjectType)
#. ($LookupType)
+#: html/Admin/CustomFields/Objects.html:72
+#: html/Admin/Elements/ObjectCustomFields:63
msgid "Object of type %1 cannot take custom fields"
msgstr "Objekt vom Typ %1 kann keine benutzerdefinierten Felder haben"
-#: lib/RT/CustomField_Overlay.pm:901
+#: lib/RT/CustomField_Overlay.pm:955
msgid "Object type mismatch"
msgstr "Objekt Typ passt nicht"
@@ -2891,7 +3339,7 @@ msgstr "Objekt Typ passt nicht"
msgid "Oct."
msgstr "Okt."
-#: html/Tools/Elements/Tabs:53
+#: html/Tools/Elements/Tabs:55
msgid "Offline"
msgstr "Offline"
@@ -2923,13 +3371,14 @@ msgstr "Bei Erstellen"
msgid "On Owner Change"
msgstr "Bei Besitzerwechsel"
-#: etc/initialdata:177 etc/upgrade/3.1.17/content:15
+#: etc/initialdata:177
+#: etc/upgrade/3.1.17/content:15
msgid "On Priority Change"
-msgstr "Bei Änderung der Priorität"
+msgstr "Bei Änderung der Priorität"
#: etc/initialdata:192
msgid "On Queue Change"
-msgstr "Bei Änderung des Bereichs"
+msgstr "Bei Änderung des Bereichs"
#: etc/initialdata:198
msgid "On Resolve"
@@ -2937,29 +3386,33 @@ msgstr "Beim Erledigen"
#: etc/initialdata:169
msgid "On Status Change"
-msgstr "Beim Ändern des Status"
+msgstr "Beim Ändern des Status"
#: etc/initialdata:150
msgid "On Transaction"
msgstr "Bei einer Transaktion"
-#: html/Approvals/Elements/PendingMyApproval:71
-#. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter'>")
+#. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter' id='CreatedAfter'>")
+#: html/Approvals/Elements/PendingMyApproval:70
msgid "Only show approvals for requests created after %1"
-msgstr "Zeige nur Freigaben für nach dem %1 erstelle Anfragen"
+msgstr "Zeige nur Freigaben für nach dem %1 erstelle Anfragen"
-#: html/Approvals/Elements/PendingMyApproval:69
-#. ("<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore'>")
+#. ("<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore' id='CreatedBefore'>")
+#: html/Approvals/Elements/PendingMyApproval:68
msgid "Only show approvals for requests created before %1"
-msgstr "Zeige nur Freigaben für vor dem %1 erstellte Anfragen"
+msgstr "Zeige nur Freigaben für vor dem %1 erstellte Anfragen"
+
+#: html/Admin/CustomFields/index.html:75
+msgid "Only show custom fields for:"
+msgstr "Nur Benutzerdefinierte Felder anzeigen für:"
-#: html/Elements/Quicksearch:52
+#: NOT FOUND IN SOURCE
msgid "Open"
msgstr "Offen"
-#: html/Ticket/Elements/Tabs:159
+#: html/Ticket/Elements/Tabs:161
msgid "Open it"
-msgstr "Öffnen"
+msgstr "Öffnen"
#: html/SelfService/Elements/Tabs:63
msgid "Open tickets"
@@ -2967,20 +3420,25 @@ msgstr "Offene Anfragen"
#: etc/initialdata:140
msgid "Open tickets on correspondence"
-msgstr "Öffne Anfragen bei Korrespondenz"
+msgstr "Öffne Anfragen bei Korrespondenz"
+
+#: html/Prefs/MyRT.html:62
+msgid "Options"
+msgstr "Optionen"
#: html/Search/Elements/DisplayOptions:56
msgid "Order by"
msgstr "Sortiert nach"
-#: html/Admin/Users/Modify.html:141 html/User/Prefs.html:129
+#: html/Admin/Users/Modify.html:141
+#: html/User/Prefs.html:129
msgid "Organization"
msgstr "Organisation"
-#: html/Approvals/Elements/Approve:54
#. ($approving->Id, $approving->Subject)
+#: html/Approvals/Elements/Approve:53
msgid "Originating ticket: #%1"
-msgstr "Ursprüngliche Anfrage: #%1"
+msgstr "Ursprüngliche Anfrage: #%1"
#: lib/RT/Transaction_Overlay.pm:611
msgid "Outgoing email about a comment recorded"
@@ -2992,7 +3450,7 @@ msgstr "Ausgehende Mail gespeichert"
#: html/Admin/Queues/Modify.html:90
msgid "Over time, priority moves toward"
-msgstr "Mit der Zeit steigt die Priorität auf"
+msgstr "Mit der Zeit steigt die Priorität auf"
#: lib/RT/Queue_Overlay.pm:113
msgid "Own tickets"
@@ -3002,33 +3460,51 @@ msgstr "Eigene Anfragen"
msgid "OwnTicket"
msgstr "EigeneAnfrage"
-#: etc/initialdata:38 html/Elements/QuickCreate:58 html/Search/Elements/PickBasics:101 html/SelfService/Elements/MyRequests:51 html/Ticket/Create.html:69 html/Ticket/Elements/EditPeople:64 html/Ticket/Elements/EditPeople:65 html/Ticket/Elements/ShowPeople:48 html/Ticket/Update.html:62 lib/RT/ACE_Overlay.pm:111 lib/RT/Tickets_Overlay.pm:1734
+#: etc/initialdata:38
+#: html/Elements/QuickCreate:56
+#: html/Search/Elements/PickBasics:101
+#: html/SelfService/Elements/MyRequests:51
+#: html/Ticket/Create.html:70
+#: html/Ticket/Elements/EditBasics:61
+#: html/Ticket/Elements/EditPeople:64
+#: html/Ticket/Elements/EditPeople:65
+#: html/Ticket/Elements/Reminders:82
+#: html/Ticket/Elements/ShowPeople:48
+#: html/Ticket/Update.html:62
+#: lib/RT/ACE_Overlay.pm:111
+#: lib/RT/Tickets_Overlay.pm:1781
msgid "Owner"
msgstr "Besitzer"
-#: lib/RT/Ticket_Overlay.pm:495
+#: lib/RT/Ticket_Overlay.pm:496
msgid "Owner could not be set."
msgstr "Besitzer konnte nicht gesetzt werden"
-#: lib/RT/Transaction_Overlay.pm:661
#. ($Old->Name , $New->Name)
+#: lib/RT/Transaction_Overlay.pm:661
msgid "Owner forcibly changed from %1 to %2"
-msgstr "Besitzer mit Gewalt von %1 in %2 geändert"
+msgstr "Besitzer mit Gewalt von %1 in %2 geändert"
-#: html/Elements/TicketList:78
#. ($Page, int($TotalFound/$Rows)+$oddRows)
+#: html/Elements/TicketList:78
msgid "Page %1 of %2"
msgstr "Seite %1 von %2"
-#: html/Admin/Users/Modify.html:198 html/User/Prefs.html:97
+#: html/Admin/Users/Modify.html:198
+#: html/User/Prefs.html:97
msgid "Pager"
msgstr "Pager"
-#: html/Elements/EditLinks:142 html/Elements/EditLinks:76 html/Elements/ShowLinks:68 html/Ticket/Create.html:213 html/Ticket/Elements/BulkLinks:60
+#: html/Elements/EditLinks:144
+#: html/Elements/EditLinks:76
+#: html/Elements/ShowLinks:68
+#: html/Ticket/Create.html:220
+#: html/Ticket/Elements/BulkLinks:60
msgid "Parents"
msgstr "Eltern"
-#: html/Elements/Login:74 html/User/Prefs.html:105
+#: html/Elements/Login:84
+#: html/User/Prefs.html:105
msgid "Password"
msgstr "Passwort"
@@ -3036,80 +3512,179 @@ msgstr "Passwort"
msgid "Password Reminder"
msgstr "Passworterinnerung"
-#: lib/RT/Transaction_Overlay.pm:770 lib/RT/User_Overlay.pm:1046
+#: lib/RT/Transaction_Overlay.pm:769
+#: lib/RT/User_Overlay.pm:1044
msgid "Password changed"
-msgstr "Passwort geändert"
+msgstr "Passwort geändert"
-#: lib/RT/User_Overlay.pm:1038 lib/RT/User_Overlay.pm:215
#. ($RT::MinimumPasswordLength)
+#: lib/RT/User_Overlay.pm:1038
+#: lib/RT/User_Overlay.pm:215
msgid "Password needs to be at least %1 characters long"
-msgstr ""
+msgstr "Das Passwort muss mindestens %1 Zeichen lang sein"
#: lib/RT/User_Overlay.pm:1045
msgid "Password set"
-msgstr ""
+msgstr "Passwort erstellt"
#: NOT FOUND IN SOURCE
msgid "Password too short"
msgstr "Passwort ist zu kurz"
-#: html/User/Prefs.html:232
#. (loc_fuzzy($msg))
+#: html/User/Prefs.html:232
msgid "Password: %1"
msgstr "Passwort: %1"
#: lib/RT/User_Overlay.pm:1031
msgid "Password: Permission Denied"
-msgstr ""
+msgstr "Passwort: Zugriff verweigert"
#: html/Admin/Users/Modify.html:356
msgid "Passwords do not match."
-msgstr "Passwörter verschieden"
+msgstr "Passwörter verschieden"
#: html/User/Prefs.html:234
msgid "Passwords do not match. Your password has not been changed"
-msgstr "Passwörter verschieden, keine Änderung"
+msgstr "Passwörter verschieden, keine Änderung"
-#: html/Ticket/Elements/ShowSummary:66 html/Ticket/Elements/Tabs:119 html/Ticket/ModifyAll.html:72
+#: html/Ticket/Elements/ShowSummary:62
+#: html/Ticket/Elements/Tabs:119
+#: html/Ticket/ModifyAll.html:72
msgid "People"
msgstr "Personen"
#: etc/initialdata:133
msgid "Perform a user-defined action"
-msgstr "Führe eine benutzerdefinierte Aktion aus"
+msgstr "Führe eine benutzerdefinierte Aktion aus"
#: html/Admin/Tools/Configuration.html:94
msgid "Perl configuration"
msgstr "Perl Konfiguration"
-#: lib/RT/ACE_Overlay.pm:252 lib/RT/ACE_Overlay.pm:258 lib/RT/ACE_Overlay.pm:581 lib/RT/ACE_Overlay.pm:591 lib/RT/ACE_Overlay.pm:601 lib/RT/ACE_Overlay.pm:666 lib/RT/Attribute_Overlay.pm:158 lib/RT/Attribute_Overlay.pm:164 lib/RT/Attribute_Overlay.pm:402 lib/RT/Attribute_Overlay.pm:411 lib/RT/Attribute_Overlay.pm:424 lib/RT/CurrentUser.pm:117 lib/RT/CurrentUser.pm:126 lib/RT/CustomField_Overlay.pm:1022 lib/RT/CustomField_Overlay.pm:167 lib/RT/CustomField_Overlay.pm:184 lib/RT/CustomField_Overlay.pm:195 lib/RT/CustomField_Overlay.pm:366 lib/RT/CustomField_Overlay.pm:398 lib/RT/CustomField_Overlay.pm:697 lib/RT/CustomField_Overlay.pm:870 lib/RT/CustomField_Overlay.pm:905 lib/RT/CustomField_Overlay.pm:950 lib/RT/Group_Overlay.pm:1125 lib/RT/Group_Overlay.pm:1129 lib/RT/Group_Overlay.pm:1138 lib/RT/Group_Overlay.pm:1248 lib/RT/Group_Overlay.pm:1252 lib/RT/Group_Overlay.pm:1258 lib/RT/Group_Overlay.pm:453 lib/RT/Group_Overlay.pm:550 lib/RT/Group_Overlay.pm:628 lib/RT/Group_Overlay.pm:636 lib/RT/Group_Overlay.pm:734 lib/RT/Group_Overlay.pm:738 lib/RT/Group_Overlay.pm:744 lib/RT/Group_Overlay.pm:930 lib/RT/Group_Overlay.pm:934 lib/RT/Group_Overlay.pm:947 lib/RT/Queue_Overlay.pm:1051 lib/RT/Queue_Overlay.pm:141 lib/RT/Queue_Overlay.pm:159 lib/RT/Queue_Overlay.pm:654 lib/RT/Queue_Overlay.pm:664 lib/RT/Queue_Overlay.pm:678 lib/RT/Queue_Overlay.pm:816 lib/RT/Queue_Overlay.pm:825 lib/RT/Queue_Overlay.pm:838 lib/RT/Scrip_Overlay.pm:150 lib/RT/Scrip_Overlay.pm:161 lib/RT/Scrip_Overlay.pm:226 lib/RT/Scrip_Overlay.pm:540 lib/RT/Template_Overlay.pm:112 lib/RT/Template_Overlay.pm:118 lib/RT/Template_Overlay.pm:309 lib/RT/Ticket_Overlay.pm:1318 lib/RT/Ticket_Overlay.pm:1328 lib/RT/Ticket_Overlay.pm:1342 lib/RT/Ticket_Overlay.pm:1483 lib/RT/Ticket_Overlay.pm:1493 lib/RT/Ticket_Overlay.pm:1507 lib/RT/Ticket_Overlay.pm:1624 lib/RT/Ticket_Overlay.pm:1944 lib/RT/Ticket_Overlay.pm:2082 lib/RT/Ticket_Overlay.pm:2252 lib/RT/Ticket_Overlay.pm:2302 lib/RT/Ticket_Overlay.pm:2474 lib/RT/Ticket_Overlay.pm:2577 lib/RT/Ticket_Overlay.pm:2625 lib/RT/Ticket_Overlay.pm:2704 lib/RT/Ticket_Overlay.pm:2718 lib/RT/Ticket_Overlay.pm:2942 lib/RT/Ticket_Overlay.pm:2952 lib/RT/Ticket_Overlay.pm:2957 lib/RT/Ticket_Overlay.pm:3180 lib/RT/Ticket_Overlay.pm:3184 lib/RT/Ticket_Overlay.pm:3327 lib/RT/Ticket_Overlay.pm:3448 lib/RT/Transaction_Overlay.pm:505 lib/RT/Transaction_Overlay.pm:512 lib/RT/Transaction_Overlay.pm:540 lib/RT/Transaction_Overlay.pm:547 lib/RT/User_Overlay.pm:1184 lib/RT/User_Overlay.pm:1725 lib/RT/User_Overlay.pm:370 lib/RT/User_Overlay.pm:736 lib/RT/User_Overlay.pm:775
+#: lib/RT/ACE_Overlay.pm:262
+#: lib/RT/ACE_Overlay.pm:268
+#: lib/RT/ACE_Overlay.pm:594
+#: lib/RT/ACE_Overlay.pm:604
+#: lib/RT/ACE_Overlay.pm:614
+#: lib/RT/ACE_Overlay.pm:679
+#: lib/RT/Attribute_Overlay.pm:158
+#: lib/RT/Attribute_Overlay.pm:164
+#: lib/RT/Attribute_Overlay.pm:405
+#: lib/RT/Attribute_Overlay.pm:414
+#: lib/RT/Attribute_Overlay.pm:427
+#: lib/RT/CurrentUser.pm:117
+#: lib/RT/CurrentUser.pm:126
+#: lib/RT/CustomField_Overlay.pm:1004
+#: lib/RT/CustomField_Overlay.pm:1125
+#: lib/RT/CustomField_Overlay.pm:167
+#: lib/RT/CustomField_Overlay.pm:184
+#: lib/RT/CustomField_Overlay.pm:195
+#: lib/RT/CustomField_Overlay.pm:369
+#: lib/RT/CustomField_Overlay.pm:397
+#: lib/RT/CustomField_Overlay.pm:751
+#: lib/RT/CustomField_Overlay.pm:924
+#: lib/RT/CustomField_Overlay.pm:959
+#: lib/RT/Group_Overlay.pm:1125
+#: lib/RT/Group_Overlay.pm:1129
+#: lib/RT/Group_Overlay.pm:1138
+#: lib/RT/Group_Overlay.pm:1248
+#: lib/RT/Group_Overlay.pm:1252
+#: lib/RT/Group_Overlay.pm:1258
+#: lib/RT/Group_Overlay.pm:453
+#: lib/RT/Group_Overlay.pm:550
+#: lib/RT/Group_Overlay.pm:628
+#: lib/RT/Group_Overlay.pm:636
+#: lib/RT/Group_Overlay.pm:734
+#: lib/RT/Group_Overlay.pm:738
+#: lib/RT/Group_Overlay.pm:744
+#: lib/RT/Group_Overlay.pm:930
+#: lib/RT/Group_Overlay.pm:934
+#: lib/RT/Group_Overlay.pm:947
+#: lib/RT/Queue_Overlay.pm:1051
+#: lib/RT/Queue_Overlay.pm:141
+#: lib/RT/Queue_Overlay.pm:159
+#: lib/RT/Queue_Overlay.pm:654
+#: lib/RT/Queue_Overlay.pm:664
+#: lib/RT/Queue_Overlay.pm:678
+#: lib/RT/Queue_Overlay.pm:816
+#: lib/RT/Queue_Overlay.pm:825
+#: lib/RT/Queue_Overlay.pm:838
+#: lib/RT/Scrip_Overlay.pm:150
+#: lib/RT/Scrip_Overlay.pm:161
+#: lib/RT/Scrip_Overlay.pm:226
+#: lib/RT/Scrip_Overlay.pm:540
+#: lib/RT/Template_Overlay.pm:112
+#: lib/RT/Template_Overlay.pm:118
+#: lib/RT/Template_Overlay.pm:309
+#: lib/RT/Ticket_Overlay.pm:1319
+#: lib/RT/Ticket_Overlay.pm:1329
+#: lib/RT/Ticket_Overlay.pm:1343
+#: lib/RT/Ticket_Overlay.pm:1484
+#: lib/RT/Ticket_Overlay.pm:1494
+#: lib/RT/Ticket_Overlay.pm:1508
+#: lib/RT/Ticket_Overlay.pm:1625
+#: lib/RT/Ticket_Overlay.pm:1945
+#: lib/RT/Ticket_Overlay.pm:2083
+#: lib/RT/Ticket_Overlay.pm:2253
+#: lib/RT/Ticket_Overlay.pm:2303
+#: lib/RT/Ticket_Overlay.pm:2457
+#: lib/RT/Ticket_Overlay.pm:2560
+#: lib/RT/Ticket_Overlay.pm:2608
+#: lib/RT/Ticket_Overlay.pm:2687
+#: lib/RT/Ticket_Overlay.pm:2701
+#: lib/RT/Ticket_Overlay.pm:2925
+#: lib/RT/Ticket_Overlay.pm:2935
+#: lib/RT/Ticket_Overlay.pm:2940
+#: lib/RT/Ticket_Overlay.pm:3163
+#: lib/RT/Ticket_Overlay.pm:3167
+#: lib/RT/Ticket_Overlay.pm:3310
+#: lib/RT/Ticket_Overlay.pm:3431
+#: lib/RT/Transaction_Overlay.pm:504
+#: lib/RT/Transaction_Overlay.pm:511
+#: lib/RT/Transaction_Overlay.pm:539
+#: lib/RT/Transaction_Overlay.pm:546
+#: lib/RT/User_Overlay.pm:1031
+#: lib/RT/User_Overlay.pm:1182
+#: lib/RT/User_Overlay.pm:1886
+#: lib/RT/User_Overlay.pm:370
+#: lib/RT/User_Overlay.pm:736
+#: lib/RT/User_Overlay.pm:775
msgid "Permission Denied"
msgstr "Zugriff verweigert"
#: html/User/Elements/Tabs:56
msgid "Personal Groups"
-msgstr "Persönliche Gruppen"
+msgstr "Persönliche Gruppen"
-#: html/User/Groups/index.html:51 html/User/Groups/index.html:61
+#: html/User/Groups/index.html:51
+#: html/User/Groups/index.html:61
msgid "Personal groups"
-msgstr "Persönliche Gruppen"
+msgstr "Persönliche Gruppen"
#: html/User/Elements/DelegateRights:58
msgid "Personal groups:"
-msgstr "Persönliche Gruppen:"
+msgstr "Persönliche Gruppen:"
-#: html/Admin/Users/Modify.html:180 html/User/Prefs.html:82
+#: html/Admin/Users/Modify.html:180
+#: html/User/Prefs.html:82
msgid "Phone numbers"
msgstr "Telefonnummern"
-#: html/Elements/Header:87 html/Elements/Tabs:88 html/SelfService/Elements/Tabs:75 html/SelfService/Prefs.html:46 html/User/Prefs.html:46 html/User/Prefs.html:49
+#: html/Elements/Header:87
+#: html/Elements/Tabs:91
+#: html/SelfService/Elements/Tabs:75
+#: html/SelfService/Prefs.html:46
+#: html/User/Prefs.html:46
+#: html/User/Prefs.html:49
msgid "Preferences"
msgstr "Voreinstellungen"
#: lib/RT/Action/Generic.pm:196
msgid "Prepare Stubbed"
-msgstr "Prepare Stumpf ausgeführt"
+msgstr "Prepare Stumpf ausgeführt"
+#: html/Helpers/CalPopup.html:11
#: html/Ticket/Elements/Tabs:84
msgid "Prev"
msgstr "Vorherige"
@@ -3118,29 +3693,36 @@ msgstr "Vorherige"
msgid "Previous Page"
msgstr "Vorherige Seite"
-#: lib/RT/ACE_Overlay.pm:158 lib/RT/ACE_Overlay.pm:240 lib/RT/ACE_Overlay.pm:570
#. ($args{'PrincipalId'})
+#: lib/RT/ACE_Overlay.pm:158
+#: lib/RT/ACE_Overlay.pm:240
+#: lib/RT/ACE_Overlay.pm:570
msgid "Principal %1 not found."
msgstr "Rolle %1 nicht gefunden."
-#: html/Search/Elements/PickBasics:160 html/Ticket/Create.html:184 html/Ticket/Elements/EditBasics:74 html/Ticket/Elements/ShowBasics:72 lib/RT/Tickets_Overlay.pm:1518
+#: html/Search/Elements/PickBasics:147
+#: html/Ticket/Create.html:179
+#: html/Ticket/Elements/EditBasics:87
+#: html/Ticket/Elements/ShowBasics:72
+#: lib/RT/Tickets_Overlay.pm:1565
msgid "Priority"
-msgstr "Priorität"
+msgstr "Priorität"
#: html/Admin/Queues/Modify.html:86
msgid "Priority starts at"
-msgstr "Priorität beginnt bei"
+msgstr "Priorität beginnt bei"
#: html/Search/Elements/EditSearches:50
msgid "Privacy:"
-msgstr "Privatsphäre:"
+msgstr "Privatsphäre:"
#: etc/initialdata:25
msgid "Privileged"
msgstr "Privilegiert"
-#: html/Admin/Users/Modify.html:334 html/User/Prefs.html:223
#. (loc_fuzzy($msg))
+#: html/Admin/Users/Modify.html:334
+#: html/User/Prefs.html:223
msgid "Privileged status: %1"
msgstr "Privilegierungsstatus: %1"
@@ -3148,25 +3730,42 @@ msgstr "Privilegierungsstatus: %1"
msgid "Privileged users"
msgstr "Privilegierte Benutzer"
-#: etc/initialdata:23 etc/initialdata:29 etc/initialdata:35 etc/initialdata:59
+#: etc/initialdata:23
+#: etc/initialdata:29
+#: etc/initialdata:35
+#: etc/initialdata:59
msgid "Pseudogroup for internal use"
-msgstr "Pseudogruppe für internen Gebrauch"
+msgstr "Pseudogruppe für internen Gebrauch"
-#: html/Search/Elements/EditQuery:47
+#: NOT FOUND IN SOURCE
msgid "Query"
msgstr "Suche"
-#: html/Search/Build.html:124 html/Ticket/Elements/Tabs:195
+#: html/Search/Build.html:121
msgid "Query Builder"
msgstr "Suche erstellen"
-#: html/Elements/QuickCreate:55 html/Elements/Quicksearch:50 html/Search/Elements/PickBasics:71 html/SelfService/Create.html:54 html/Ticket/Create.html:59 html/Ticket/Elements/EditBasics:57 html/Ticket/Elements/ShowBasics:76 html/User/Elements/DelegateRights:101 lib/RT/Tickets_Overlay.pm:1345
+#: html/Elements/QueueSummary:48
+#: html/Elements/QuickCreate:54
+#: html/Search/Elements/PickBasics:71
+#: html/SelfService/Create.html:54
+#: html/Ticket/Create.html:60
+#: html/Ticket/Elements/EditBasics:57
+#: html/Ticket/Elements/ShowBasics:76
+#: html/Tools/Reports/CreatedByDates.html:40
+#: html/Tools/Reports/ResolvedByDates.html:41
+#: html/Tools/Reports/ResolvedByOwner.html:21
+#: html/User/Elements/DelegateRights:101
+#: lib/RT/Tickets_Overlay.pm:1392
msgid "Queue"
msgstr "Bereich"
-#: html/Admin/Queues/CustomField.html:63 html/Admin/Queues/Scrip.html:71 html/Admin/Queues/Scrips.html:69 html/Admin/Queues/Templates.html:65
#. ($Queue)
#. ($id)
+#: html/Admin/Queues/CustomField.html:63
+#: html/Admin/Queues/Scrip.html:71
+#: html/Admin/Queues/Scrips.html:69
+#: html/Admin/Queues/Templates.html:65
msgid "Queue %1 not found"
msgstr "Bereich %2 nicht gefunden"
@@ -3178,53 +3777,71 @@ msgstr "Name des Bereichs"
msgid "Queue already exists"
msgstr "Bereich existiert bereits"
-#: lib/RT/Queue_Overlay.pm:371 lib/RT/Queue_Overlay.pm:377
+#: lib/RT/Queue_Overlay.pm:371
+#: lib/RT/Queue_Overlay.pm:377
msgid "Queue could not be created"
msgstr "Bereich konnte nicht angelegt werden"
-#: html/Ticket/Create.html:239 lib/t/regression/01ticket_link_searching.t:17
+#: html/Ticket/Create.html:242
+#: lib/t/regression/01ticket_link_searching.t:17
msgid "Queue could not be loaded."
msgstr "Bereich konnte nicht geladen werden"
-#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:381 lib/RT/StyleGuide.pod:809
+#: docs/design_docs/string-extraction-guide.txt:83
+#: lib/RT/Queue_Overlay.pm:381
+#: lib/RT/StyleGuide.pod:809
msgid "Queue created"
msgstr "Bereich angelegt"
-#: html/SelfService/Display.html:102 lib/RT/CustomField_Overlay.pm:192
+#: html/SelfService/Display.html:95
+#: lib/RT/CustomField_Overlay.pm:192
msgid "Queue not found"
msgstr "Bereich nicht gefunden"
-#: html/Admin/Elements/Tabs:59 html/Admin/index.html:72
+#: html/Admin/Elements/Tabs:59
+#: html/Admin/index.html:72
msgid "Queues"
msgstr "Bereiche"
-#: html/Elements/Quicksearch:46
+#: html/Elements/MyAdminQueues:46
+msgid "Queues I administer"
+msgstr "Stapel die ich verwalte"
+
+#: html/Elements/MySupportQueues:46
+msgid "Queues I'm an AdminCc for"
+msgstr "Stapel in denen ich AdminCc bin"
+
+#: html/Elements/Quicksearch:47
+#: html/Prefs/Elements/Tabs:58
+#: html/Prefs/Quicksearch.html:70
msgid "Quick search"
msgstr "Schnellsuche"
-#: html/Elements/QuickCreate:46
+#: html/Elements/QuickCreate:47
msgid "Quick ticket creation"
msgstr "Schnelle Anfrageerstellung"
-#: html/Search/Results.html:83
+#: html/Search/Results.html:84
msgid "RSS"
msgstr "RSS"
-#: html/Elements/Login:66
-#. ($RT::VERSION)
+#: NOT FOUND IN SOURCE
msgid "RT %1"
msgstr "RT %1"
-#: docs/design_docs/string-extraction-guide.txt:70 lib/RT/StyleGuide.pod:796
#. ($RT::VERSION, $RT::rtname)
+#: docs/design_docs/string-extraction-guide.txt:70
+#: lib/RT/StyleGuide.pod:796
msgid "RT %1 for %2"
-msgstr "RT %1 für %2"
+msgstr "RT %1 für %2"
-#: html/Admin/index.html:46 html/Admin/index.html:47
+#: html/Admin/index.html:46
+#: html/Admin/index.html:47
msgid "RT Administration"
msgstr "RT Administration"
-#: html/Elements/Error:65 html/SelfService/Error.html:62
+#: html/Elements/Error:63
+#: html/SelfService/Error.html:62
msgid "RT Error"
msgstr "RT Fehler"
@@ -3232,69 +3849,121 @@ msgstr "RT Fehler"
msgid "RT Variables"
msgstr "RT Variablen"
-#: html/index.html:72 html/index.html:75
+#: html/Prefs/MyRT.html:58
+#: html/Prefs/MyRT.html:70
+#: html/User/Elements/Tabs:65
+#: html/index.html:1
+#: html/index.html:75
msgid "RT at a glance"
msgstr "RT auf einen Blick"
#: html/Elements/SetupSessionCookie:90
msgid "RT couldn't store your session."
-msgstr ""
+msgstr "RT konnte die Session nicht speichern"
-#: html/Elements/PageLayout:108
#. ($RT::rtname)
+#: html/Elements/Logo:49
+#: html/Elements/PageLayout:179
msgid "RT for %1"
-msgstr "RT für %1"
+msgstr "RT für %1"
+
+#: html/Search/Simple.html:60
+msgid "RT will look for anything else you enter in ticket subjects."
+msgstr "RT wird nach allem suchen was in einem Anfragen Betreff steht."
-#: html/Admin/Users/Modify.html:79 html/User/Prefs.html:69
+#: html/Admin/Users/Modify.html:79
+#: html/User/Prefs.html:69
msgid "Real Name"
msgstr "Echter Name"
-#: lib/RT/Transaction_Overlay.pm:714
#. ($value)
+#: lib/RT/Transaction_Overlay.pm:714
msgid "Reference by %1 added"
-msgstr "Referenz von %1 hinzugefügt"
+msgstr "Referenz von %1 hinzugefügt"
-#: lib/RT/Transaction_Overlay.pm:754
#. ($value)
+#: lib/RT/Transaction_Overlay.pm:754
msgid "Reference by %1 deleted"
-msgstr "Referenz von %1 gelöscht"
+msgstr "Referenz von %1 gelöscht"
-#: lib/RT/Transaction_Overlay.pm:711
#. ($value)
+#: lib/RT/Transaction_Overlay.pm:711
msgid "Reference to %1 added"
-msgstr "Referenz auf %1 hinzugefügt"
+msgstr "Referenz auf %1 hinzugefügt"
-#: lib/RT/Transaction_Overlay.pm:751
#. ($value)
+#: lib/RT/Transaction_Overlay.pm:751
msgid "Reference to %1 deleted"
-msgstr "Referenz auf %1 gelöscht"
+msgstr "Referenz auf %1 gelöscht"
-#: html/Elements/EditLinks:103 html/Elements/EditLinks:154 html/Elements/ShowLinks:92 html/Ticket/Create.html:216 html/Ticket/Elements/BulkLinks:72
+#: html/Elements/EditLinks:103
+#: html/Elements/EditLinks:156
+#: html/Elements/ShowLinks:92
+#: html/Ticket/Create.html:223
+#: html/Ticket/Elements/BulkLinks:72
msgid "Referred to by"
msgstr "Referenziert von"
-#: html/Elements/EditLinks:150 html/Elements/EditLinks:94 html/Elements/SelectLinkType:49 html/Elements/ShowLinks:82 html/Ticket/Create.html:215 html/Ticket/Elements/BulkLinks:68
+#: html/Elements/EditLinks:152
+#: html/Elements/EditLinks:94
+#: html/Elements/SelectLinkType:49
+#: html/Elements/ShowLinks:82
+#: html/Ticket/Create.html:222
+#: html/Ticket/Elements/BulkLinks:68
msgid "Refers to"
msgstr "Bezieht sich auf"
-#: html/Elements/Refresh:57
#. ($value/60)
+#: html/Elements/Refresh:57
msgid "Refresh this page every %1 minutes."
msgstr "Seite alle %1 Minuten aktualisieren."
-#: html/Search/Bulk.html:116
+#. ($ticket->Subject)
+#: lib/RT/Transaction_Overlay.pm:799
+msgid "Reminder '%1' added"
+msgstr "Wiedervorlage '%1' zugefügt"
+
+#. ($ticket->Subject)
+#: lib/RT/Transaction_Overlay.pm:812
+msgid "Reminder '%1' completed"
+msgstr "Wiedervorlage '%1' abgeschlossen"
+
+#. ($ticket->Subject)
+#: lib/RT/Transaction_Overlay.pm:805
+msgid "Reminder '%1' reopened"
+msgstr "Wiedervorlage '%1' erneut geöffnet"
+
+#. ($Ticket->Id)
+#: html/Ticket/Reminders.html:46
+msgid "Reminder ticket #%1"
+msgstr "Wiedervorlage Anfrage #%1"
+
+#: html/Elements/MyReminders:49
+#: html/Ticket/Elements/ShowSummary:73
+#: html/Ticket/Elements/Tabs:122
+#: html/Ticket/Reminders.html:52
+msgid "Reminders"
+msgstr "Wiedervorlage"
+
+#. ($Ticket->Id)
+#: html/Ticket/Reminders.html:50
+msgid "Reminders for ticket #%1"
+msgstr "Wiedervorlage für Anfrage #%1"
+
+#: html/Search/Bulk.html:94
msgid "Remove AdminCc"
msgstr "Entferne AdminCC"
-#: html/Search/Bulk.html:112
+#: html/Search/Bulk.html:90
msgid "Remove Cc"
msgstr "Entferne CC"
-#: html/Search/Bulk.html:108
+#: html/Search/Bulk.html:86
msgid "Remove Requestor"
msgstr "Entferne Klient"
-#: html/Ticket/Elements/ShowTransaction:171 html/Ticket/Elements/Tabs:145
+#: html/Ticket/Elements/ShowTransaction:178
+#: html/Ticket/Elements/Tabs:147
msgid "Reply"
msgstr "Antworten"
@@ -3302,7 +3971,9 @@ msgstr "Antworten"
msgid "Reply Address"
msgstr "Antwort Adresse"
-#: html/Search/Bulk.html:151 html/Ticket/ModifyAll.html:94 html/Ticket/Update.html:76
+#: html/Search/Bulk.html:129
+#: html/Ticket/ModifyAll.html:94
+#: html/Ticket/Update.html:79
msgid "Reply to requestors"
msgstr "Antwort an Klienten"
@@ -3314,11 +3985,19 @@ msgstr "Antworte auf Anfragen"
msgid "ReplyToTicket"
msgstr "AnfrageBeantwortung"
-#: etc/initialdata:44 lib/RT/ACE_Overlay.pm:112
+#: html/Tools/Elements/Tabs:59
+msgid "Reports"
+msgstr "Auswertungen"
+
+#: etc/initialdata:44
+#: lib/RT/ACE_Overlay.pm:112
msgid "Requestor"
msgstr "Klient"
-#: html/SelfService/Create.html:63 html/Ticket/Create.html:77 html/Ticket/Elements/EditPeople:69 html/Ticket/Elements/ShowPeople:52
+#: html/SelfService/Create.html:63
+#: html/Ticket/Create.html:78
+#: html/Ticket/Elements/EditPeople:69
+#: html/Ticket/Elements/ShowPeople:52
msgid "Requestors"
msgstr "Klienten"
@@ -3326,43 +4005,64 @@ msgstr "Klienten"
msgid "Requests should be due in"
msgstr "Anfragen sollten erlegt werden innerhalb"
-#: lib/RT/Attribute_Overlay.pm:146
#. ('Object')
+#: lib/RT/Attribute_Overlay.pm:146
msgid "Required parameter '%1' not specified"
-msgstr "Benötigter Parameter '%1' nicht angegeben"
+msgstr "Benötigter Parameter '%1' nicht angegeben"
-#: html/Elements/Submit:104
+#: html/Elements/Submit:95
msgid "Reset"
-msgstr "Zurücksetzen"
+msgstr "Zurücksetzen"
-#: html/Admin/Users/Modify.html:183 html/User/Prefs.html:85
+#: html/Admin/Users/Modify.html:183
+#: html/User/Prefs.html:85
msgid "Residence"
msgstr "Zuhause"
-#: html/Ticket/Elements/Tabs:155
+#: html/Ticket/Elements/Tabs:157
msgid "Resolve"
msgstr "Erledigen"
-#: html/Ticket/Update.html:154
#. ($TicketObj->id, $TicketObj->Subject)
+#: html/Ticket/Update.html:157
msgid "Resolve ticket #%1 (%2)"
msgstr "Erledige Anfrage #%1 (%2)"
-#: etc/initialdata:323 html/Elements/SelectDateType:49 lib/RT/Ticket_Overlay.pm:1148
+#: etc/initialdata:323
+#: html/Elements/SelectDateType:49
+#: lib/RT/Ticket_Overlay.pm:1149
msgid "Resolved"
msgstr "Erledigt"
-#: html/Elements/ListActions:47 html/Search/Elements/NewListActions:47
+#: html/Tools/Reports/Elements/Tabs:55
+msgid "Resolved by owner"
+msgstr "Gelöst durch Besitzer"
+
+#: html/Tools/Reports/Elements/Tabs:59
+msgid "Resolved in date range"
+msgstr "Gelöst in Zeitraum"
+
+#: html/Tools/Reports/ResolvedByDates.html:7
+msgid "Resolved tickets in period, grouped by owner"
+msgstr "Erledigte Tickets in einer Zeitspanne, gruppiert nach Besitzer"
+
+#: html/Tools/Reports/ResolvedByOwner.html:5
+msgid "Resolved tickets, grouped by owner"
+msgstr "Erledigte Tickets, sortiert nach Besitzer"
+
+#: html/Elements/ListActions:47
+#: html/Search/Elements/NewListActions:47
msgid "Results"
msgstr "Ergebnisse"
-#: html/Admin/Users/Modify.html:126 html/User/Prefs.html:116
+#: html/Admin/Users/Modify.html:126
+#: html/User/Prefs.html:116
msgid "Retype Password"
msgstr "Passwort wiederholen"
#: html/Search/Elements/EditSearches:61
msgid "Revert"
-msgstr "Zurücksetzen"
+msgstr "Zurücksetzen"
#: lib/RT/ACE_Overlay.pm:631
msgid "Right Delegated"
@@ -3376,41 +4076,50 @@ msgstr "Recht erteilt"
msgid "Right Loaded"
msgstr "Recht geladen"
-#: lib/RT/ACE_Overlay.pm:696 lib/RT/ACE_Overlay.pm:717
+#: lib/RT/ACE_Overlay.pm:696
+#: lib/RT/ACE_Overlay.pm:717
msgid "Right could not be revoked"
-msgstr "Recht konnte nicht zurückgezogen werden"
+msgstr "Recht konnte nicht zurückgezogen werden"
#: html/User/Delegation.html:85
msgid "Right not found"
msgstr "Recht nicht gefunden"
-#: lib/RT/ACE_Overlay.pm:561 lib/RT/ACE_Overlay.pm:656
+#: lib/RT/ACE_Overlay.pm:561
+#: lib/RT/ACE_Overlay.pm:656
msgid "Right not loaded."
msgstr "Recht nicht gefunden."
#: lib/RT/ACE_Overlay.pm:713
msgid "Right revoked"
-msgstr "Recht zurückgezogen"
+msgstr "Recht zurückgezogen"
#: html/Admin/Elements/UserTabs:67
msgid "Rights"
msgstr "Rechte"
-#: html/Admin/CustomFields/GroupRights.html:129 lib/RT/Interface/Web.pm:901
#. ($object_type)
+#: html/Admin/CustomFields/GroupRights.html:129
+#: lib/RT/Interface/Web.pm:901
msgid "Rights could not be granted for %1"
-msgstr "Rechte für %1 konnten nicht gewährt werden"
+msgstr "Rechte für %1 konnten nicht gewährt werden"
-#: html/Admin/CustomFields/GroupRights.html:156 lib/RT/Interface/Web.pm:930
#. ($object_type)
+#: html/Admin/CustomFields/GroupRights.html:156
+#: lib/RT/Interface/Web.pm:930
msgid "Rights could not be revoked for %1"
-msgstr "Rechte für %1 konnten nicht entzogen werden"
+msgstr "Rechte für %1 konnten nicht entzogen werden"
-#: html/Admin/Global/GroupRights.html:72 html/Admin/Queues/GroupRights.html:74
+#: html/Admin/Global/GroupRights.html:72
+#: html/Admin/Queues/GroupRights.html:74
msgid "Roles"
msgstr "Rollen"
-#: html/Search/Elements/DisplayOptions:83
+#: html/Prefs/MyRT.html:64
+msgid "Rows per box"
+msgstr "Reihen pro Fenster"
+
+#: html/Search/Elements/DisplayOptions:84
msgid "Rows per page"
msgstr "Zeilen pro Seite"
@@ -3418,35 +4127,54 @@ msgstr "Zeilen pro Seite"
msgid "Sat."
msgstr "Sa."
+#: html/Prefs/MyRT.html:64
+#: html/Prefs/Quicksearch.html:64
+#: html/Prefs/Search.html:69
#: html/Search/Elements/EditSearches:70
+#: html/Widgets/SelectionBox:212
msgid "Save"
msgstr "Speichern"
-#: html/Admin/Global/Template.html:67 html/Admin/Groups/Modify.html:88 html/Admin/Queues/Modify.html:111 html/Admin/Queues/People.html:126 html/Admin/Users/Modify.html:238 html/SelfService/Prefs.html:58 html/Ticket/Modify.html:60 html/Ticket/ModifyAll.html:127 html/Ticket/ModifyDates.html:60 html/Ticket/ModifyLinks.html:60 html/Ticket/ModifyPeople.html:59 html/User/Groups/Modify.html:77
+#: html/Admin/Global/Template.html:67
+#: html/Admin/Groups/Modify.html:88
+#: html/Admin/Queues/Modify.html:111
+#: html/Admin/Queues/People.html:126
+#: html/Admin/Users/Modify.html:238
+#: html/Prefs/Quicksearch.html:64
+#: html/Prefs/SearchOptions.html:63
+#: html/SelfService/Prefs.html:58
+#: html/Ticket/Modify.html:60
+#: html/Ticket/ModifyAll.html:127
+#: html/Ticket/ModifyDates.html:59
+#: html/Ticket/ModifyLinks.html:60
+#: html/Ticket/ModifyPeople.html:59
+#: html/User/Groups/Modify.html:77
msgid "Save Changes"
-msgstr "Änderungen Sichern"
+msgstr "Änderungen Sichern"
#: html/User/Prefs.html:179
msgid "Save Preferences"
msgstr "Einstellungen speichern"
-#: html/Ticket/Elements/PreviewScrips:124
+#: html/Ticket/Elements/PreviewScrips:126
msgid "Save changes"
-msgstr "Änderungen Sichern"
+msgstr "Änderungen Sichern"
-#: lib/RT/SavedSearch.pm:162
#. ($name)
+#: lib/RT/SavedSearch.pm:162
msgid "Saved search %1"
-msgstr ""
+msgstr "Gespeicherte Suche %1"
#: html/Search/Elements/EditSearches:46
msgid "Saved searches"
msgstr "Gespeicherte Suchanfragen"
-#: html/Admin/Elements/ListGlobalScrips:61 html/Admin/Global/Scrip.html:70 html/Admin/Queues/Scrip.html:76
#. ($scrip->Id)
#. ($id)
#. ($ARGS{'id'})
+#: html/Admin/Elements/ListGlobalScrips:61
+#: html/Admin/Global/Scrip.html:70
+#: html/Admin/Queues/Scrip.html:76
msgid "Scrip #%1"
msgstr "Scrip #%1"
@@ -3460,9 +4188,11 @@ msgstr "Scrip Felder"
#: html/Admin/Elements/EditScrips:107
msgid "Scrip deleted"
-msgstr "Scrip gelöscht"
+msgstr "Scrip gelöscht"
-#: html/Admin/Elements/QueueTabs:67 html/Admin/Elements/SystemTabs:54 html/Admin/Global/index.html:62
+#: html/Admin/Elements/QueueTabs:67
+#: html/Admin/Elements/SystemTabs:54
+#: html/Admin/Global/index.html:62
msgid "Scrips"
msgstr "Scrips"
@@ -3470,34 +4200,61 @@ msgstr "Scrips"
msgid "Scrips which apply to all queues"
msgstr "Auf alle Bereiche angewandte Scrips"
-#: html/Elements/SimpleSearch:48 html/Search/Build.html:112
+#: html/Elements/SimpleSearch:48
+#: html/Search/Simple.html:65
msgid "Search"
msgstr "Suchen"
+#: html/Prefs/SearchOptions.html:47
+#: html/Prefs/SearchOptions.html:50
+msgid "Search Preferences"
+msgstr "Such Einstellungen"
+
#: lib/RT/SavedSearch.pm:116
msgid "Search attribute load failure"
-msgstr ""
+msgstr "Suchattribut lade Fehler"
-#: html/Approvals/Elements/PendingMyApproval:60
+#: html/Approvals/Elements/PendingMyApproval:59
msgid "Search for approvals"
msgstr "Suche nach Freigaben"
-#: lib/RT/SavedSearch.pm:194
+#: html/Search/Simple.html:69
+msgid "Search for tickets"
+msgstr "Suche nach Anfragen"
+
+#: html/Search/Simple.html:57
+msgid "Search for tickets. Enter <strong>id</strong> numbers,<strong>queues</strong> by name"
+msgstr "Suche nach Tickets. Eingabe <strong>id</strong> Nummer,<strong>Stapel</strong> nach Name"
+
+#: html/User/Elements/Tabs:62
+msgid "Search options"
+msgstr "Such Optionen"
+
+#. ($PrimaryGroupBy)
+#: html/Search/Chart.html:7
+msgid "Search results grouped by %1"
+msgstr "Suchergebnis gruppiert nach %1"
+
#. ($msg)
+#: lib/RT/SavedSearch.pm:194
msgid "Search update: %1"
-msgstr ""
+msgstr "Suche erneuern: %1"
+
+#: html/Search/Simple.html:59
+msgid "Searching the full text of every ticket can take a long time, but if you need to do it, you can search for any word in full ticket history for any word by typing <b>fulltext:<i>word</i></b>."
+msgstr "Die Suche nach Volltexten in jedem Ticket kann sehr lange dauern, aber wenn Du es benötigst, kannst Du nach jedem Wort in jedem Ticketverlauf suchen indem Du <b>fulltext:<i>Wort</i></b> eingibst."
#: bin/rt-crontool:213
msgid "Security:"
msgstr "Sicherheit:"
-#: lib/RT/CustomField_Overlay.pm:100
+#: lib/RT/CustomField_Overlay.pm:105
msgid "See custom fields"
msgstr "Benutzerdefinierte Felder anzeigen"
#: lib/RT/Queue_Overlay.pm:107
msgid "See exact outgoing email messages and their recipeients"
-msgstr "Anzeigen der gesendeten Nachricht und deren Empfänger"
+msgstr "Anzeigen der gesendeten Nachricht und deren Empfänger"
#: lib/RT/Queue_Overlay.pm:105
msgid "See ticket private commentary"
@@ -3507,7 +4264,7 @@ msgstr "Anzeigen von anfrage-privaten Kommentaren"
msgid "See ticket summaries"
msgstr "Anfrage Zusammenfassungen anzeigen"
-#: lib/RT/CustomField_Overlay.pm:100
+#: lib/RT/CustomField_Overlay.pm:105
msgid "SeeCustomField"
msgstr "Benutzerdefiniertes Feld anzeigen"
@@ -3523,85 +4280,103 @@ msgstr "BereichAnzeigen"
msgid "Select"
msgstr "Auswahl"
-#: html/Admin/CustomFields/index.html:46 html/Admin/CustomFields/index.html:49
+#: html/Admin/CustomFields/index.html:46
+#: html/Admin/CustomFields/index.html:49
msgid "Select a Custom Field"
-msgstr "Wählen Sie ein benutzerdefiniertes Feld aus"
+msgstr "Wählen Sie ein benutzerdefiniertes Feld aus"
#: html/Admin/Groups/index.html:78
msgid "Select a group"
-msgstr "Wählen Sie eine Gruppe aus"
+msgstr "Wählen Sie eine Gruppe aus"
#: html/Admin/Queues/index.html:54
msgid "Select a queue"
-msgstr ""
+msgstr "Stapel auswählen"
#: html/SelfService/CreateTicketInQueue.html:48
msgid "Select a queue for your new ticket"
-msgstr "Wählen Sie einen Bereich für Ihre neue Anfrage"
+msgstr "Wählen Sie einen Bereich für Ihre neue Anfrage"
-#: html/Admin/Users/index.html:46 html/Admin/Users/index.html:49 html/Admin/Users/index.html:52
+#: html/Admin/Users/index.html:46
+#: html/Admin/Users/index.html:49
+#: html/Admin/Users/index.html:52
msgid "Select a user"
-msgstr "Wählen Sie einen Benutzer aus"
+msgstr "Wählen Sie einen Benutzer aus"
#: html/Admin/Elements/CustomFieldTabs:90
msgid "Select custom field"
-msgstr "Wählen Sie ein benutzerdefiniertes Feld"
+msgstr "Wählen Sie ein benutzerdefiniertes Feld"
#: html/Admin/Global/CustomFields/index.html:70
msgid "Select custom fields for all user groups"
-msgstr "Wählen Sie benutzerdefinierte Felder für alle Benutzergruppen aus"
+msgstr "Wählen Sie benutzerdefinierte Felder für alle Benutzergruppen aus"
#: html/Admin/Global/CustomFields/index.html:65
msgid "Select custom fields for all users"
-msgstr "Wählen Sie benutzerdefinierte Felder für alle Benutzer aus"
+msgstr "Wählen Sie benutzerdefinierte Felder für alle Benutzer aus"
#: html/Admin/Global/CustomFields/index.html:76
msgid "Select custom fields for tickets in all queues"
-msgstr "Wählen Sie benutzerdefinierte Felder für alle Anfragen in allen Bereichen aus"
+msgstr "Wählen Sie benutzerdefinierte Felder für alle Anfragen in allen Bereichen aus"
#: html/Admin/Global/CustomFields/index.html:83
msgid "Select custom fields for transactions on tickets in all queues"
-msgstr "Wählen Sie benutzerdefinierte Felder für Transaktionen mit Anfragen in allen Bereichen aus "
+msgstr "Wählen Sie benutzerdefinierte Felder für Transaktionen mit Anfragen in allen Bereichen aus "
-#: html/Admin/Elements/GroupTabs:75 html/User/Elements/GroupTabs:71
+#: html/Admin/Elements/GroupTabs:75
+#: html/User/Elements/GroupTabs:71
msgid "Select group"
-msgstr "Wählen Sie eine Gruppe aus"
+msgstr "Wählen Sie eine Gruppe aus"
#: lib/RT/CustomField_Overlay.pm:59
msgid "Select multiple values"
-msgstr "Wählen Sie mehrere Werte aus"
+msgstr "Wählen Sie mehrere Werte aus"
#: lib/RT/CustomField_Overlay.pm:60
msgid "Select one value"
-msgstr "Wählen Sie einen Wert aus"
+msgstr "Wählen Sie einen Wert aus"
#: html/Admin/Elements/QueueTabs:92
msgid "Select queue"
-msgstr "Wählen Sie einen Bereich aus"
+msgstr "Wählen Sie einen Bereich aus"
+
+#: html/Prefs/Quicksearch.html:53
+msgid "Select queues to be displayed on the \"RT at a glance\" page"
+msgstr "Wähle Stapel aus, welche auf der \"RT at a glance\" Seite angezeigt werden"
-#: html/Admin/Global/Scrip.html:58 html/Admin/Global/Scrips.html:57 html/Admin/Queues/Scrip.html:61 html/Admin/Queues/Scrips.html:73
+#: html/Admin/Global/Scrip.html:58
+#: html/Admin/Global/Scrips.html:57
+#: html/Admin/Queues/Scrip.html:61
+#: html/Admin/Queues/Scrips.html:73
msgid "Select scrip"
-msgstr "Wählen Sie ein Scrip aus"
+msgstr "Wählen Sie ein Scrip aus"
-#: html/Admin/Global/Template.html:78 html/Admin/Global/Templates.html:57 html/Admin/Queues/Template.html:76 html/Admin/Queues/Templates.html:68
+#: html/Admin/Global/Template.html:78
+#: html/Admin/Global/Templates.html:57
+#: html/Admin/Queues/Template.html:76
+#: html/Admin/Queues/Templates.html:68
msgid "Select template"
-msgstr "Wählen Sie eine Vorlage aus"
+msgstr "Wählen Sie eine Vorlage aus"
#: lib/RT/CustomField_Overlay.pm:61
msgid "Select up to %1 values"
-msgstr "Wählen Sie bis zu %1 Werte aus"
+msgstr "Wählen Sie bis zu %1 Werte aus"
#: html/Admin/Elements/UserTabs:75
msgid "Select user"
-msgstr "Wählen Sie einen Benutzer aus"
+msgstr "Wählen Sie einen Benutzer aus"
#: html/Admin/Elements/EditCustomFields:58
msgid "Selected Custom Fields"
-msgstr "Ausgewählte Benutzerdefinierte Felder"
+msgstr "Ausgewählte Benutzerdefinierte Felder"
#: html/Admin/CustomFields/Objects.html:59
msgid "Selected objects"
-msgstr "Ausgewählte Objekte"
+msgstr "Ausgewählte Objekte"
+
+#: html/Widgets/SelectionBox:210
+msgid "Selections modified. Please save your changes"
+msgstr "Auswahl wurde geändert. Bitte speichere Deine Änderungen"
#: etc/initialdata:121
msgid "Send mail to all watchers"
@@ -3623,15 +4398,18 @@ msgstr "Schickt einen Kommentar an die Klienten und CCs"
msgid "Sends a message to the requestors"
msgstr "Schickt eine Nachricht an die Klienten"
-#: etc/initialdata:125 etc/initialdata:129
+#: etc/initialdata:125
+#: etc/initialdata:129
msgid "Sends mail to explicitly listed Ccs and Bccs"
msgstr "Schickt eine Nachricht an die direkt angegebenen CCs und BCCs"
-#: etc/initialdata:94 etc/upgrade/3.1.17/content:7
+#: etc/initialdata:94
+#: etc/upgrade/3.1.17/content:7
msgid "Sends mail to the Ccs"
msgstr "Schickt eine Nachricht an alle CCs"
-#: etc/initialdata:90 etc/upgrade/3.1.17/content:3
+#: etc/initialdata:90
+#: etc/upgrade/3.1.17/content:3
msgid "Sends mail to the Ccs as a comment"
msgstr "Schickt einen Kommentar an alle CCs "
@@ -3643,7 +4421,8 @@ msgstr "Schickt eine Nachricht an die administrativen CCs"
msgid "Sends mail to the administrative Ccs as a comment"
msgstr "Schickt einen Kommentar an die administrativen CCs"
-#: etc/initialdata:82 etc/initialdata:86
+#: etc/initialdata:82
+#: etc/initialdata:86
msgid "Sends mail to the owner"
msgstr "Schickt eine Nachricht an den Besitzer"
@@ -3651,7 +4430,7 @@ msgstr "Schickt eine Nachricht an den Besitzer"
msgid "Sep."
msgstr "Sep."
-#: html/Ticket/Elements/ShowTransaction:150
+#: html/Ticket/Elements/ShowTransaction:157
msgid "Show"
msgstr "Zeige"
@@ -3663,31 +4442,31 @@ msgstr "Zeige Freigaben"
msgid "Show Columns"
msgstr "Zeige Spalten"
-#: html/Ticket/Elements/Tabs:201
+#: html/Ticket/Elements/Tabs:213
msgid "Show Results"
msgstr "Zeige Ergebnisse"
-#: html/Approvals/Elements/PendingMyApproval:65
+#: html/Approvals/Elements/PendingMyApproval:64
msgid "Show approved requests"
msgstr "Zeige freigegebene Anfragen"
-#: html/Ticket/Create.html:174 html/Ticket/Create.html:55
+#: html/Ticket/Create.html:305
msgid "Show basics"
msgstr "Zeige Grundlagen"
-#: html/Approvals/Elements/PendingMyApproval:66
+#: html/Approvals/Elements/PendingMyApproval:65
msgid "Show denied requests"
msgstr "Zeige abgelehnte Anfragen"
-#: html/Ticket/Create.html:174 html/Ticket/Create.html:55
+#: html/Ticket/Create.html:308
msgid "Show details"
msgstr "Zeige Details"
-#: html/Approvals/Elements/PendingMyApproval:64
+#: html/Approvals/Elements/PendingMyApproval:63
msgid "Show pending requests"
-msgstr "Zeige anhängige Anfragen"
+msgstr "Zeige anhängige Anfragen"
-#: html/Approvals/Elements/PendingMyApproval:67
+#: html/Approvals/Elements/PendingMyApproval:66
msgid "Show requests awaiting other approvals"
msgstr "Zeige auf andere Freigaben wartende Anfragen"
@@ -3697,7 +4476,7 @@ msgstr "ACLAnzeigen"
#: lib/RT/System.pm:86
msgid "ShowConfigTab"
-msgstr "KonfigurationsMenüAnzeigen"
+msgstr "KonfigurationsMenüAnzeigen"
#: lib/RT/Queue_Overlay.pm:107
msgid "ShowOutgoingEmail"
@@ -3731,27 +4510,33 @@ msgstr "Als Klient einer Anfrage oder Anfrage- bzw. Bereichs-CC eintragen"
msgid "Sign up as a ticket or queue AdminCc"
msgstr "Als Anfrage- oder Bereichs-AdminCC eintragen"
-#: html/Admin/Users/Modify.html:229 html/User/Prefs.html:167
+#: html/Admin/Users/Modify.html:229
+#: html/User/Prefs.html:167
msgid "Signature"
msgstr "E-Mail-Signatur"
+#: html/Elements/Tabs:68
+msgid "Simple Search"
+msgstr "Vereinfachte Suche"
+
#: html/Admin/Elements/SelectSingleOrMultiple:47
msgid "Single"
msgstr "Einzel"
#: html/Search/Elements/EditFormat:75
msgid "Size"
-msgstr ""
+msgstr "Grösse"
-#: html/Elements/Header:85
+#: html/Elements/Header:80
msgid "Skip Menu"
-msgstr "Überspringe Menü"
+msgstr "Überspringe Menü"
#: html/Search/Elements/EditFormat:78
msgid "Small"
msgstr "Klein"
-#: html/Admin/Elements/AddCustomFieldValue:49 html/Admin/Elements/EditCustomFieldValues:54
+#: html/Admin/Elements/AddCustomFieldValue:49
+#: html/Admin/Elements/EditCustomFieldValues:54
msgid "Sort"
msgstr "Sortieren"
@@ -3759,63 +4544,91 @@ msgstr "Sortieren"
msgid "Stage"
msgstr "Phase"
-#: html/Elements/SelectDateType:48 html/Ticket/Elements/EditDates:53 html/Ticket/Elements/ShowDates:56
+#: html/Elements/SelectDateType:48
+#: html/Ticket/Elements/EditDates:53
+#: html/Ticket/Elements/ShowDates:56
msgid "Started"
msgstr "Begonnen"
-#: html/Elements/SelectDateType:52 html/Ticket/Create.html:196 html/Ticket/Elements/EditDates:48 html/Ticket/Elements/ShowDates:52
+#: html/Elements/SelectDateType:52
+#: html/Ticket/Create.html:206
+#: html/Ticket/Elements/EditDates:48
+#: html/Ticket/Elements/ShowDates:52
msgid "Starts"
msgstr "Beginnt"
-#: html/Admin/Users/Modify.html:162 html/User/Prefs.html:145
+#: html/Admin/Users/Modify.html:162
+#: html/User/Prefs.html:145
msgid "State"
msgstr "Staat"
-#: html/Search/Elements/PickBasics:87 html/SelfService/Elements/MyRequests:50 html/SelfService/Update.html:57 html/Ticket/Create.html:63 html/Ticket/Elements/EditBasics:53 html/Ticket/Elements/ShowBasics:52 html/Ticket/Update.html:59 lib/RT/Ticket_Overlay.pm:1142 lib/RT/Tickets_Overlay.pm:1378
+#: html/Search/Elements/PickBasics:87
+#: html/SelfService/Elements/MyRequests:50
+#: html/SelfService/Update.html:57
+#: html/Ticket/Create.html:64
+#: html/Ticket/Elements/EditBasics:53
+#: html/Ticket/Elements/ShowBasics:52
+#: html/Ticket/Update.html:59
+#: lib/RT/Ticket_Overlay.pm:1143
+#: lib/RT/Tickets_Overlay.pm:1425
msgid "Status"
msgstr "Status"
#: etc/initialdata:309
msgid "Status Change"
-msgstr "Statusänderung"
+msgstr "Statusänderung"
#: NOT FOUND IN SOURCE
msgid "Status changed from %1 to %2"
-msgstr "Status von %1 auf %2 geändert"
+msgstr "Status von %1 auf %2 geändert"
-#: html/Ticket/Elements/Tabs:170
+#: html/Ticket/Elements/Tabs:172
msgid "Steal"
-msgstr "Stehlen"
+msgstr "Übernehmen"
#: lib/RT/Queue_Overlay.pm:118
msgid "Steal tickets"
-msgstr "Anfragen stehlen"
+msgstr "Anfragen übernehmen"
#: lib/RT/Queue_Overlay.pm:118
msgid "StealTicket"
-msgstr "AnfrageStehlen"
+msgstr "AnfrageÜbernehmen"
-#: lib/RT/Transaction_Overlay.pm:667
#. ($Old->Name)
+#: lib/RT/Transaction_Overlay.pm:667
msgid "Stolen from %1"
msgstr "Gestohlen von %1"
#: html/Search/Elements/EditFormat:81
msgid "Style"
-msgstr ""
+msgstr "Darstellung"
-#: html/Elements/QuickCreate:52 html/Elements/SelectAttachmentField:47 html/Search/Bulk.html:154 html/SelfService/Create.html:79 html/SelfService/Elements/MyRequests:49 html/SelfService/Update.html:65 html/Ticket/Create.html:105 html/Ticket/Elements/EditBasics:48 html/Ticket/ModifyAll.html:100 html/Ticket/Update.html:80 lib/RT/Ticket_Overlay.pm:1138 lib/RT/Tickets_Overlay.pm:1460
+#: html/Elements/QuickCreate:52
+#: html/Elements/SelectAttachmentField:47
+#: html/Search/Bulk.html:132
+#: html/SelfService/Create.html:79
+#: html/SelfService/Elements/MyRequests:49
+#: html/SelfService/Update.html:65
+#: html/Ticket/Create.html:106
+#: html/Ticket/Elements/EditBasics:48
+#: html/Ticket/Elements/Reminders:78
+#: html/Ticket/ModifyAll.html:100
+#: html/Ticket/Update.html:83
+#: lib/RT/Ticket_Overlay.pm:1139
+#: lib/RT/Tickets_Overlay.pm:1507
msgid "Subject"
msgstr "Betreff"
-#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/StyleGuide.pod:815 lib/RT/Transaction_Overlay.pm:689
#. ($self->Data)
+#: docs/design_docs/string-extraction-guide.txt:89
+#: lib/RT/StyleGuide.pod:815
+#: lib/RT/Transaction_Overlay.pm:689
msgid "Subject changed to %1"
-msgstr "Betreff wurde auf %1 geändert"
+msgstr "Betreff wurde auf %1 geändert"
-#: html/Elements/Submit:97
+#: html/Elements/Submit:88
msgid "Submit"
-msgstr "Übermitteln"
+msgstr "Übermitteln"
#: lib/RT/Group_Overlay.pm:782
msgid "Succeeded"
@@ -3833,18 +4646,27 @@ msgstr "SuperBenutzer"
msgid "System"
msgstr "System"
-#: html/Admin/Elements/ToolTabs:54 html/Admin/Tools/Configuration.html:48
+#: html/Admin/Elements/ToolTabs:54
+#: html/Admin/Tools/Configuration.html:48
msgid "System Configuration"
msgstr "System Konfiguration"
-#: html/Admin/CustomFields/GroupRights.html:128 html/Admin/CustomFields/GroupRights.html:155 html/Admin/CustomFields/UserRights.html:128 html/Admin/CustomFields/UserRights.html:98 html/Admin/Elements/SelectRights:106 lib/RT/ACE_Overlay.pm:585 lib/RT/Interface/Web.pm:900 lib/RT/Interface/Web.pm:929
+#: html/Admin/CustomFields/GroupRights.html:128
+#: html/Admin/CustomFields/GroupRights.html:155
+#: html/Admin/CustomFields/UserRights.html:128
+#: html/Admin/CustomFields/UserRights.html:98
+#: html/Admin/Elements/SelectRights:106
+#: lib/RT/ACE_Overlay.pm:585
+#: lib/RT/Interface/Web.pm:900
+#: lib/RT/Interface/Web.pm:929
msgid "System Error"
msgstr "Systemfehler"
-#: lib/RT/Transaction_Overlay.pm:215 lib/RT/Transaction_Overlay.pm:221
#. ($msg)
+#: lib/RT/Transaction_Overlay.pm:215
+#: lib/RT/Transaction_Overlay.pm:221
msgid "System Error: %1"
-msgstr ""
+msgstr "System Fehlerr: %1"
#: html/Admin/Tools/index.html:47
msgid "System Tools"
@@ -3854,50 +4676,62 @@ msgstr "System Werkzeuge"
msgid "System error. Right not delegated."
msgstr "Systemfehler. Recht nicht delegiert."
-#: lib/RT/ACE_Overlay.pm:164 lib/RT/ACE_Overlay.pm:229 lib/RT/ACE_Overlay.pm:324 lib/RT/ACE_Overlay.pm:921
+#: lib/RT/ACE_Overlay.pm:164
+#: lib/RT/ACE_Overlay.pm:229
+#: lib/RT/ACE_Overlay.pm:324
+#: lib/RT/ACE_Overlay.pm:921
msgid "System error. Right not granted."
-msgstr "Systemfehler. Recht nicht gewährt."
+msgstr "Systemfehler. Recht nicht gewährt."
-#: html/Admin/CustomFields/GroupRights.html:58 html/Admin/Global/GroupRights.html:56 html/Admin/Groups/GroupRights.html:58 html/Admin/Queues/GroupRights.html:57
+#: html/Admin/CustomFields/GroupRights.html:58
+#: html/Admin/Global/GroupRights.html:56
+#: html/Admin/Groups/GroupRights.html:58
+#: html/Admin/Queues/GroupRights.html:57
msgid "System groups"
msgstr "Systemgruppen"
-#: etc/initialdata:41 etc/initialdata:47 etc/initialdata:53
+#: etc/initialdata:41
+#: etc/initialdata:47
+#: etc/initialdata:53
msgid "SystemRolegroup for internal use"
-msgstr "SystemRolegroup für internen Gebrauch"
+msgstr "SystemRolegroup für internen Gebrauch"
#: lib/RT/CurrentUser.pm:358
msgid "TEST_STRING"
msgstr "TEST_STRING"
-#: html/Elements/MyRequests:50 html/Search/Elements/EditFormat:72 html/Ticket/Elements/Tabs:166
+#: etc/initialdata:603
+#: html/Search/Elements/EditFormat:72
+#: html/Ticket/Elements/Tabs:168
msgid "Take"
-msgstr "Übernehmen"
+msgstr "Übernehmen"
#: lib/RT/Queue_Overlay.pm:116
msgid "Take tickets"
-msgstr "Anfragen übernehmen"
+msgstr "Anfragen übernehmen"
#: lib/RT/Queue_Overlay.pm:116
msgid "TakeTicket"
-msgstr "AnfrageÜbernehmen"
+msgstr "AnfrageÜbernehmen"
#: lib/RT/Transaction_Overlay.pm:652
msgid "Taken"
-msgstr "Übernommen"
+msgstr "Übernommen"
-#: html/Admin/Elements/EditScrip:79 html/Tools/Offline.html:78
+#: html/Admin/Elements/EditScrip:79
+#: html/Tools/Offline.html:78
msgid "Template"
msgstr "Vorlage"
-#: html/Admin/Global/Template.html:112 html/Admin/Queues/Template.html:113
#. ($TemplateObj->Id())
+#: html/Admin/Global/Template.html:112
+#: html/Admin/Queues/Template.html:113
msgid "Template #%1"
msgstr "Vorlage #%1"
#: html/Admin/Elements/EditTemplates:110
msgid "Template deleted"
-msgstr "Vorlage gelöscht"
+msgstr "Vorlage gelöscht"
#: lib/RT/Scrip_Overlay.pm:181
msgid "Template not found"
@@ -3907,7 +4741,9 @@ msgstr "Vorlage nicht gefunden"
msgid "Template parsed"
msgstr "Vorlagen eingelesen"
-#: html/Admin/Elements/QueueTabs:70 html/Admin/Elements/SystemTabs:57 html/Admin/Global/index.html:66
+#: html/Admin/Elements/QueueTabs:70
+#: html/Admin/Elements/SystemTabs:57
+#: html/Admin/Global/index.html:66
msgid "Templates"
msgstr "Vorlagen"
@@ -3915,50 +4751,52 @@ msgstr "Vorlagen"
msgid "Text"
msgstr "Text"
-#: lib/RT/CustomField_Overlay.pm:877 lib/RT/Record.pm:931
+#: lib/RT/CustomField_Overlay.pm:931
+#: lib/RT/Record.pm:935
msgid "That is already the current value"
msgstr "Das ist bereits der aktuelle Wert"
-#: lib/RT/CustomField_Overlay.pm:407
+#: lib/RT/CustomField_Overlay.pm:406
msgid "That is not a value for this custom field"
-msgstr "Dies ist kein gültiger Wert für dieses benutzerdefinierte Feld"
+msgstr "Dies ist kein gültiger Wert für dieses benutzerdefinierte Feld"
-#: lib/RT/Ticket_Overlay.pm:1955
+#: lib/RT/Ticket_Overlay.pm:1956
msgid "That is the same value"
msgstr "Das ist der gleiche Wert"
-#: lib/RT/ACE_Overlay.pm:306 lib/RT/ACE_Overlay.pm:615
+#: lib/RT/ACE_Overlay.pm:306
+#: lib/RT/ACE_Overlay.pm:615
msgid "That principal already has that right"
msgstr "Diese Rolle hat dieses Recht bereits"
-#: lib/RT/Queue_Overlay.pm:750
#. ($args{'Type'})
+#: lib/RT/Queue_Overlay.pm:750
msgid "That principal is already a %1 for this queue"
msgstr "Diese Rolle ist bereits ein %1 dieses Bereichs"
-#: lib/RT/Ticket_Overlay.pm:1396
#. ($self->loc($args{'Type'}))
+#: lib/RT/Ticket_Overlay.pm:1397
msgid "That principal is already a %1 for this ticket"
msgstr "Diese Rolle ist bereits ein %1 dieser Anfrage"
-#: lib/RT/Queue_Overlay.pm:849
#. ($args{'Type'})
+#: lib/RT/Queue_Overlay.pm:849
msgid "That principal is not a %1 for this queue"
msgstr "Diese Rolle ist nicht ein %1 dieses Bereichs"
-#: lib/RT/Ticket_Overlay.pm:1951
+#: lib/RT/Ticket_Overlay.pm:1952
msgid "That queue does not exist"
msgstr "Dieser Bereich existiert nicht"
-#: lib/RT/Ticket_Overlay.pm:3189
+#: lib/RT/Ticket_Overlay.pm:3172
msgid "That ticket has unresolved dependencies"
-msgstr "Diese Anfrage hat ungelöste Abhängigkeiten"
+msgstr "Diese Anfrage hat ungelöste Abhängigkeiten"
-#: lib/RT/Ticket_Overlay.pm:2993
+#: lib/RT/Ticket_Overlay.pm:2976
msgid "That user already owns that ticket"
-msgstr "Diese Anfrage gehört bereits diesem Benutzer"
+msgstr "Diese Anfrage gehört bereits diesem Benutzer"
-#: lib/RT/Ticket_Overlay.pm:2965
+#: lib/RT/Ticket_Overlay.pm:2948
msgid "That user does not exist"
msgstr "Dieser Benutzer existiert nicht"
@@ -3978,15 +4816,17 @@ msgstr "Dieser Benutzer ist jetzt privilegiert"
msgid "That user is now unprivileged"
msgstr "Dieser Benutzer ist jetzt unprivilegiert"
-#: lib/RT/Ticket_Overlay.pm:2986
+#: lib/RT/Ticket_Overlay.pm:2969
msgid "That user may not own tickets in that queue"
-msgstr "Diesem Benutzer dürfen keine Anfragen aus diesen Bereich gehören"
+msgstr "Diesem Benutzer dürfen keine Anfragen aus diesen Bereich gehören"
#: lib/RT/Link_Overlay.pm:234
msgid "That's not a numerical id"
msgstr "Dies ist keine numerische ID"
-#: html/SelfService/Display.html:53 html/Ticket/Create.html:180 html/Ticket/Elements/ShowSummary:49
+#: html/SelfService/Display.html:53
+#: html/Ticket/Create.html:175
+#: html/Ticket/Elements/ShowSummary:49
msgid "The Basics"
msgstr "Grundlagen"
@@ -4000,9 +4840,9 @@ msgstr "Der administrative CC einer Anfrage"
#: bin/rt-crontool:223
msgid "The following command will find all active tickets in the queue 'general' and set their priority to 99 if they haven't been touched in 4 hours:"
-msgstr ""
+msgstr "Das nachfolgende Kommando findet alle aktiven Tickets in dem Stapel 'General' und setzt deren Priorität auf 99 wenn die seit 4 Stunden nicht bearbeitet wurden:"
-#: lib/RT/Record.pm:934
+#: lib/RT/Record.pm:938
msgid "The new value has been set."
msgstr "Der neue Wert wurde gesetzt."
@@ -4016,32 +4856,30 @@ msgstr "Der Klient einer Anfrage"
#: html/Admin/Elements/EditUserComments:47
msgid "These comments aren't generally visible to the user"
-msgstr "Diese Kommentare sind generell nicht für den Benutzer sichtbar"
+msgstr "Diese Kommentare sind generell nicht für den Benutzer sichtbar"
-#: lib/RT/CustomField_Overlay.pm:912
+#: lib/RT/CustomField_Overlay.pm:966
msgid "This custom field does not apply to that object"
msgstr "Dieses benutzerdefinierte Feld passt nicht zum Objekt"
#: html/Admin/Tools/Configuration.html:50
msgid "This feature is only available to system administrators"
-msgstr "Dieses Feature ist nur für Systemadministratoren verfügbar"
+msgstr "Dieses Feature ist nur für Systemadministratoren verfügbar"
#: html/Ticket/Elements/PreviewScrips:93
msgid "This message will be sent to..."
-msgstr "Diese Nachricht wird an folgende Empfänger gesendet:"
+msgstr "Diese Nachricht wird an folgende Empfänger gesendet:"
#: bin/rt-crontool:214
msgid "This tool allows the user to run arbitrary perl modules from within RT."
-msgstr ""
-"Dieses Werkzeug erlaubt es Benutzern beliebige Perl-Module von RT aus "
-"aufzurufen."
+msgstr "Dieses Werkzeug erlaubt es Benutzern beliebige Perl-Module von RT aus aufzurufen."
#: lib/RT/Transaction_Overlay.pm:288
msgid "This transaction appears to have no content"
msgstr "Diese Transaktion scheint keinen Inhalt zu haben"
-#: html/Ticket/Elements/ShowRequestor:70
#. ($rows)
+#: html/Ticket/Elements/ShowRequestor:69
msgid "This user's %1 highest priority tickets"
msgstr "Die %1 dringensten Anfragen dieses Benutzers"
@@ -4049,30 +4887,36 @@ msgstr "Die %1 dringensten Anfragen dieses Benutzers"
msgid "Thu."
msgstr "Do."
-#: html/Ticket/ModifyAll.html:46 html/Ticket/ModifyAll.html:50
#. ($Ticket->Id, $Ticket->Subject)
+#: html/Ticket/ModifyAll.html:46
+#: html/Ticket/ModifyAll.html:50
msgid "Ticket #%1 Jumbo update: %2"
msgstr "Anfrage #%1 Alles aktualisieren: %2"
-#: html/Approvals/Elements/ShowDependency:67
#. ($link->BaseObj->Id, $link->BaseObj->Subject)
+#: html/Approvals/Elements/ShowDependency:67
msgid "Ticket #%1: %2"
msgstr "Anfrage #%1: %2"
-#: lib/RT/Action/CreateTickets.pm:1258 lib/RT/Action/CreateTickets.pm:1267 lib/RT/Action/CreateTickets.pm:595 lib/RT/Action/CreateTickets.pm:716 lib/RT/Action/CreateTickets.pm:729
#. ($T::Tickets{$template_id}->Id)
#. ($T::Tickets{$template_id}->id)
#. ($ticket->Id)
+#: lib/RT/Action/CreateTickets.pm:1258
+#: lib/RT/Action/CreateTickets.pm:1267
+#: lib/RT/Action/CreateTickets.pm:595
+#: lib/RT/Action/CreateTickets.pm:716
+#: lib/RT/Action/CreateTickets.pm:729
msgid "Ticket %1"
msgstr "Anfrage %1"
-#: lib/RT/Ticket_Overlay.pm:731 lib/RT/Ticket_Overlay.pm:751
#. ($self->Id, $QueueObj->Name)
+#: lib/RT/Ticket_Overlay.pm:732
+#: lib/RT/Ticket_Overlay.pm:752
msgid "Ticket %1 created in queue '%2'"
msgstr "Anfrage %1 wurde im Bereich '%2' angelegt"
-#: html/Search/Bulk.html:269
-#. ($Ticket->Id,$_)
+#. ($Ticket->Id, $_)
+#: html/Search/Bulk.html:365
msgid "Ticket %1: %2"
msgstr "Anfrage %1: %2"
@@ -4080,8 +4924,9 @@ msgstr "Anfrage %1: %2"
msgid "Ticket Custom Fields"
msgstr "Benutzerdefinierte Anfrage Felder"
-#: html/Ticket/History.html:46 html/Ticket/History.html:49
#. ($Ticket->Id, $Ticket->Subject)
+#: html/Ticket/History.html:46
+#: html/Ticket/History.html:49
msgid "Ticket History # %1 %2"
msgstr "Geschichte von Anfrage #%1 %2"
@@ -4089,19 +4934,24 @@ msgstr "Geschichte von Anfrage #%1 %2"
msgid "Ticket Resolved"
msgstr "Anfrage erledigt"
-#: html/Admin/Elements/GlobalCustomFieldTabs:69 html/Admin/Global/CustomFields/index.html:81 lib/RT/CustomField_Overlay.pm:1085
+#: html/Admin/Elements/GlobalCustomFieldTabs:69
+#: html/Admin/Global/CustomFields/index.html:81
+#: lib/RT/CustomField_Overlay.pm:1188
msgid "Ticket Transactions"
msgstr "Anfrage Transaktion"
-#: lib/RT/Tickets_Overlay.pm:1648
+#: lib/RT/Tickets_Overlay.pm:1695
msgid "Ticket content"
msgstr "Inhalt der Anfrage"
-#: lib/RT/Tickets_Overlay.pm:1697
+#: lib/RT/Tickets_Overlay.pm:1744
msgid "Ticket content type"
msgstr "Art des Inhalts der Anfrage"
-#: lib/RT/Ticket_Overlay.pm:593 lib/RT/Ticket_Overlay.pm:607 lib/RT/Ticket_Overlay.pm:618 lib/RT/Ticket_Overlay.pm:739
+#: lib/RT/Ticket_Overlay.pm:594
+#: lib/RT/Ticket_Overlay.pm:608
+#: lib/RT/Ticket_Overlay.pm:619
+#: lib/RT/Ticket_Overlay.pm:740
msgid "Ticket could not be created due to an internal error"
msgstr "Anfrage konnte aufgrund eines internen Fehlers nicht angelegt werden"
@@ -4111,72 +4961,106 @@ msgstr "Anfrage Metadaten"
#: etc/initialdata:310
msgid "Ticket status changed"
-msgstr "Status der Anfrage geändert"
+msgstr "Status der Anfrage geändert"
-#: lib/RT/Search/FromSQL.pm:83
#. (ref $self)
+#: lib/RT/Search/FromSQL.pm:83
msgid "TicketSQL search module"
-msgstr "SQL Anfrage Suchmodul"
+msgstr "TicketSQL Suchmodul"
-#: html/Admin/Elements/GlobalCustomFieldTabs:64 html/Admin/Global/CustomFields/index.html:75 html/Elements/Tabs:68 lib/RT/CustomField_Overlay.pm:1084
+#: html/Admin/Elements/GlobalCustomFieldTabs:64
+#: html/Admin/Global/CustomFields/index.html:75
+#: html/Elements/Tabs:71
+#: html/Search/Elements/Chart:52
+#: lib/RT/CustomField_Overlay.pm:1187
msgid "Tickets"
msgstr "Anfragen"
+#: html/Tools/Reports/CreatedByDates.html:41
+msgid "Tickets created after"
+msgstr "Anfragen erstellt nach"
+
+#: html/Tools/Reports/CreatedByDates.html:43
+msgid "Tickets created before"
+msgstr "Anfragen erstellt vor"
+
+#: html/Tools/Reports/ResolvedByDates.html:42
+msgid "Tickets resolved after"
+msgstr "Anfragen gelöst nach"
+
+#: html/Tools/Reports/ResolvedByDates.html:44
+msgid "Tickets resolved before"
+msgstr "Anfragen gelöst vor"
+
#: html/Approvals/Elements/ShowDependency:48
msgid "Tickets which depend on this approval:"
-msgstr "Anfragen, die von dieser Freigabe abhängen:"
+msgstr "Anfragen, die von dieser Freigabe abhängen:"
-#: html/Search/Elements/PickBasics:148 html/Ticket/Elements/EditBasics:61
+#: html/Search/Elements/PickBasics:134
+#: html/Ticket/Create.html:181
+#: html/Ticket/Elements/EditBasics:67
msgid "Time Estimated"
-msgstr "Geschätzte Zeit"
+msgstr "Geschätzte Zeit"
-#: html/Search/Elements/PickBasics:149 html/Ticket/Create.html:187 html/Ticket/Elements/EditBasics:69
+#: html/Search/Elements/PickBasics:135
+#: html/Ticket/Create.html:194
+#: html/Ticket/Elements/EditBasics:80
msgid "Time Left"
msgstr "Verbleibende Zeit"
-#: html/Search/Elements/PickBasics:147 html/Ticket/Create.html:186 html/Ticket/Elements/EditBasics:65
+#: html/Search/Elements/PickBasics:133
+#: html/Ticket/Create.html:187
+#: html/Ticket/Elements/EditBasics:73
msgid "Time Worked"
msgstr "Arbeitszeit"
-#: lib/RT/Tickets_Overlay.pm:1619
+#: lib/RT/Tickets_Overlay.pm:1666
msgid "Time left"
msgstr "Verbleibende Zeit"
-#: html/Elements/Footer:71
+#: html/Elements/Footer:52
msgid "Time to display"
-msgstr ""
+msgstr "Zeit zum anzeigen"
-#: lib/RT/Tickets_Overlay.pm:1594
+#: lib/RT/Tickets_Overlay.pm:1641
msgid "Time worked"
msgstr "Gearbeitete Zeit"
-#: lib/RT/Ticket_Overlay.pm:1143
+#: lib/RT/Ticket_Overlay.pm:1144
msgid "TimeWorked"
msgstr "Arbeitszeit"
#: html/Search/Elements/EditFormat:74
msgid "Title"
-msgstr ""
+msgstr "Titel"
-#: html/Elements/Footer:61
#. ('<a href="mailto:sales@bestpractical.com">sales@bestpractical.com</a>')
+#: html/Elements/Footer:68
msgid "To inquire about support, training, custom development or licensing, please contact %1."
-msgstr ""
+msgstr "Füri Hilfe, Schulung, angepasste Entwicklungen oder Lizensierung, kontaktiere bitte %1."
-#: lib/RT/Ticket_Overlay.pm:1146
+#: lib/RT/Ticket_Overlay.pm:1147
msgid "Told"
msgstr "Eingegangen"
-#: html/Admin/Elements/Tabs:68 html/Admin/index.html:88 html/Elements/Tabs:71
+#: html/Admin/Elements/Tabs:68
+#: html/Admin/index.html:88
+#: html/Elements/Tabs:74
+#: html/Tools/index.html:46
+#: html/Tools/index.html:49
msgid "Tools"
msgstr "Werkzeuge"
+#: html/Search/Elements/Chart:73
+msgid "Total"
+msgstr "Summe"
+
#: etc/initialdata:252
msgid "Transaction"
msgstr "Transaktion"
-#: lib/RT/Transaction_Overlay.pm:794
#. ($self->Data)
+#: lib/RT/Transaction_Overlay.pm:794
msgid "Transaction %1 purged"
msgstr "Transaktion %1 eliminiert"
@@ -4192,15 +5076,21 @@ msgstr "Benutzerdefinierte Felder bei Transaktionen"
msgid "Transaction->Create couldn't, as you didn't specify an object type and id"
msgstr "Transaction->Create fehlgeschlagen, da Objekttyp und ID nicht angegeben wurden"
-#: lib/RT/Transaction_Overlay.pm:838
+#: lib/RT/Transaction_Overlay.pm:858
msgid "Transactions are immutable"
-msgstr "Transaktionen sind unveränderbar"
+msgstr "Transaktionen sind unveränderbar"
#: lib/RT/Date.pm:414
msgid "Tue."
msgstr "Di."
-#: html/Admin/CustomFields/Modify.html:66 html/Admin/Elements/EditCustomField:65 html/Ticket/Elements/AddWatchers:54 html/Ticket/Elements/AddWatchers:65 html/Ticket/Elements/AddWatchers:75 lib/RT/Ticket_Overlay.pm:1144 lib/RT/Tickets_Overlay.pm:1432
+#: html/Admin/CustomFields/Modify.html:66
+#: html/Admin/Elements/EditCustomField:65
+#: html/Ticket/Elements/AddWatchers:54
+#: html/Ticket/Elements/AddWatchers:65
+#: html/Ticket/Elements/AddWatchers:75
+#: lib/RT/Ticket_Overlay.pm:1145
+#: lib/RT/Tickets_Overlay.pm:1479
msgid "Type"
msgstr "Typ"
@@ -4212,13 +5102,14 @@ msgstr "Nicht implementiert"
msgid "Unix login"
msgstr "Unix Login"
-#: lib/RT/Attachment_Overlay.pm:290 lib/RT/Record.pm:847
#. ($self->ContentEncoding)
#. ($ContentEncoding)
+#: lib/RT/Attachment_Overlay.pm:290
+#: lib/RT/Record.pm:851
msgid "Unknown ContentEncoding %1"
msgstr "Unbekannte Inhaltskodierung (Content-Encoding) %1"
-#: html/Search/Build.html:632
+#: html/Search/Build.html:610
msgid "Unknown field: $key"
msgstr "Unbekanntes Feld: $key"
@@ -4236,63 +5127,73 @@ msgstr "Unprivilegiert"
#: html/Admin/Elements/EditCustomFields:60
msgid "Unselected Custom Fields"
-msgstr "Nichtausgewähltes benutzerdefiniertes Feld"
+msgstr "Nichtausgewähltes benutzerdefiniertes Feld"
#: html/Admin/CustomFields/Objects.html:61
msgid "Unselected objects"
-msgstr "Nichtausgewähltes Objekte"
+msgstr "Nichtausgewähltes Objekte"
#: lib/RT/Transaction_Overlay.pm:648
msgid "Untaken"
-msgstr "Zurückgegeben"
+msgstr "Zurückgegeben"
-#: html/Search/Bulk.html:54
+#: html/Elements/RT__Ticket/ColumnMap:299
+#: html/Search/Bulk.html:194
+#: html/Search/Bulk.html:75
msgid "Update"
msgstr "Aktualisieren"
-#: html/Search/Bulk.html:178
+#: NOT FOUND IN SOURCE
msgid "Update All"
msgstr "Alles aktualisieren"
-#: html/Ticket/Update.html:133
+#: html/Ticket/Update.html:136
msgid "Update Ticket"
msgstr "Anfrage Aktualisieren"
-#: html/Search/Bulk.html:148 html/Ticket/ModifyAll.html:87 html/Ticket/Update.html:70
+#: html/Search/Bulk.html:126
+#: html/Ticket/ModifyAll.html:87
+#: html/Ticket/Update.html:73
msgid "Update Type"
msgstr "Aktualisierungtyp"
-#: html/Search/Results.html:80
+#: html/Search/Bulk.html:200
+#: html/Search/Results.html:81
msgid "Update multiple tickets"
msgstr "Mehrere Anfragen aktualisieren"
-#: lib/RT/Action/CreateTickets.pm:737 lib/RT/Interface/Web.pm:524
+#: lib/RT/Action/CreateTickets.pm:737
+#: lib/RT/Interface/Web.pm:524
msgid "Update not recorded."
msgstr "Aktualisierung nicht gespeichert."
-#: html/Search/Bulk.html:99
+#: NOT FOUND IN SOURCE
msgid "Update selected tickets"
-msgstr "Aktualisiere ausgewählte Anfragen"
+msgstr "Aktualisiere ausgewählte Anfragen"
#: html/Ticket/ModifyAll.html:84
msgid "Update ticket"
msgstr "Aktualisiere Anfrage"
-#: html/SelfService/Update.html:112 html/SelfService/Update.html:47
#. ($Ticket->id)
+#: html/SelfService/Update.html:112
+#: html/SelfService/Update.html:47
msgid "Update ticket #%1"
msgstr "Aktualisiere Anfrage #%1"
-#: html/Ticket/Update.html:156
#. ($TicketObj->id, $TicketObj->Subject)
+#: html/Ticket/Update.html:159
msgid "Update ticket #%1 (%2)"
msgstr "Aktualisiere Anfrage #%1 (%2)"
-#: lib/RT/Action/CreateTickets.pm:735 lib/RT/Interface/Web.pm:523
+#: lib/RT/Action/CreateTickets.pm:735
+#: lib/RT/Interface/Web.pm:523
msgid "Update type was neither correspondence nor comment."
msgstr "Aktualisierungstyp war weder Korrespondenz noch Kommentar."
-#: html/Elements/SelectDateType:54 html/Ticket/Elements/ShowDates:72 lib/RT/Ticket_Overlay.pm:1147
+#: html/Elements/SelectDateType:54
+#: html/Ticket/Elements/ShowDates:72
+#: lib/RT/Ticket_Overlay.pm:1148
msgid "Updated"
msgstr "Aktualisiert"
@@ -4326,18 +5227,19 @@ msgstr "Hochladen von bis zu %1 Bildern"
#: html/Tools/Offline.html:95
msgid "Upload your changes"
-msgstr "Änderungen hochladen"
+msgstr "Änderungen hochladen"
#: html/Admin/index.html:90
msgid "Use other RT administrative tools"
-msgstr ""
+msgstr "Benutze andere administrative RT Tools"
-#: lib/RT/Ticket_Overlay.pm:496
#. ($args{'Owner'})
+#: lib/RT/Ticket_Overlay.pm:497
msgid "User '%1' could not be found."
msgstr "Benutzer '%1' konnte nicht gefunden werden"
-#: etc/initialdata:132 etc/initialdata:206
+#: etc/initialdata:132
+#: etc/initialdata:206
msgid "User Defined"
msgstr "Benutzerdefiniert"
@@ -4345,19 +5247,21 @@ msgstr "Benutzerdefiniert"
msgid "User Defined conditions and actions"
msgstr "Benutzerdefinierte Konditionen und Aktionen"
-#: html/Admin/Elements/CustomFieldTabs:72 html/Admin/Elements/GroupTabs:68 html/Admin/Elements/QueueTabs:85 html/Admin/Elements/SystemTabs:68 html/Admin/Global/index.html:80
+#: html/Admin/Elements/CustomFieldTabs:72
+#: html/Admin/Elements/GroupTabs:68
+#: html/Admin/Elements/QueueTabs:85
+#: html/Admin/Elements/SystemTabs:68
+#: html/Admin/Global/index.html:80
msgid "User Rights"
msgstr "Benutzerrechte"
-#: lib/RT/Interface/Web.pm:1283
-#. ($cf->Name, $class, $Object->id)
+#. ($CustomFieldObj->Name, $class, $Object->id)
+#: lib/RT/Interface/Web.pm:1279
msgid "User asked for an unknown update type for custom field %1 for %2 object #%3"
-msgstr ""
-"Benutzer hat einen unbekannten Aktualisierungstyp für das benutzerdefinierte "
-"Feld %1 bei %2-Objekt #%3 verlangt"
+msgstr "Benutzer hat einen unbekannten Aktualisierungstyp für das benutzerdefinierte Feld %1 bei %2-Objekt #%3 verlangt"
-#: html/Admin/Users/Modify.html:293
#. ($msg)
+#: html/Admin/Users/Modify.html:292
msgid "User could not be created: %1"
msgstr "Benutzer konnte nicht angelegt werden: %1"
@@ -4365,11 +5269,15 @@ msgstr "Benutzer konnte nicht angelegt werden: %1"
msgid "User created"
msgstr "Benutzer angelegt"
-#: html/Admin/CustomFields/GroupRights.html:74 html/Admin/Global/GroupRights.html:88 html/Admin/Groups/GroupRights.html:75 html/Admin/Queues/GroupRights.html:90
+#: html/Admin/CustomFields/GroupRights.html:74
+#: html/Admin/Global/GroupRights.html:88
+#: html/Admin/Groups/GroupRights.html:75
+#: html/Admin/Queues/GroupRights.html:90
msgid "User defined groups"
msgstr "Benutzerdefinierte Gruppe"
-#: lib/RT/User_Overlay.pm:593 lib/RT/User_Overlay.pm:613
+#: lib/RT/User_Overlay.pm:593
+#: lib/RT/User_Overlay.pm:613
msgid "User loaded"
msgstr "Benutzer geladen"
@@ -4377,11 +5285,21 @@ msgstr "Benutzer geladen"
msgid "User-defined groups"
msgstr "Benutzerdefinierte Gruppe"
-#: html/Admin/Users/Modify.html:69 html/Elements/Login:73 html/Ticket/Elements/AddWatchers:56
+#: html/Admin/Users/Modify.html:69
+#: html/Elements/Login:79
+#: html/Ticket/Elements/AddWatchers:56
msgid "Username"
msgstr "Benutzername"
-#: html/Admin/Elements/GlobalCustomFieldTabs:55 html/Admin/Elements/SelectNewGroupMembers:47 html/Admin/Elements/Tabs:53 html/Admin/Global/CustomFields/index.html:64 html/Admin/Groups/Members.html:76 html/Admin/Queues/People.html:89 html/Admin/index.html:62 html/User/Groups/Members.html:79 lib/RT/CustomField_Overlay.pm:1086
+#: html/Admin/Elements/GlobalCustomFieldTabs:55
+#: html/Admin/Elements/SelectNewGroupMembers:47
+#: html/Admin/Elements/Tabs:53
+#: html/Admin/Global/CustomFields/index.html:64
+#: html/Admin/Groups/Members.html:76
+#: html/Admin/Queues/People.html:89
+#: html/Admin/index.html:62
+#: html/User/Groups/Members.html:79
+#: lib/RT/CustomField_Overlay.pm:1189
msgid "Users"
msgstr "Benutzer"
@@ -4389,11 +5307,16 @@ msgstr "Benutzer"
msgid "Users matching search criteria"
msgstr "Auf diese Kriterien zutreffende Benutzer"
-#: lib/RT/Tickets_Overlay_SQL.pm:523
+#: lib/RT/Tickets_Overlay_SQL.pm:526
msgid "Valid Query"
-msgstr "Gültige Suche"
+msgstr "Gültige Suche"
-#: html/Admin/CustomFields/Modify.html:89 html/Admin/Elements/EditCustomField:78
+#: html/Admin/CustomFields/Modify.html:80
+msgid "Validation"
+msgstr "Validierung"
+
+#: html/Admin/CustomFields/Modify.html:104
+#: html/Admin/Elements/EditCustomField:78
msgid "Values"
msgstr "Werte"
@@ -4415,11 +5338,11 @@ msgstr "Mi."
#: etc/initialdata:521
msgid "When a ticket has been approved by all approvers, add correspondence to the original ticket"
-msgstr ""
+msgstr "Wenn das Ticket freigegeben wurde von allen involvierten Personen, füge die Korrespondenz dem original Ticket hinzu"
#: etc/initialdata:485
msgid "When a ticket has been approved by any approver, add correspondence to the original ticket"
-msgstr ""
+msgstr "Wenn das Ticket freigegeben wurde von einer involvierten Personen, füge die Korrespondenz dem original Ticket hinzu"
#: etc/initialdata:146
msgid "When a ticket is created"
@@ -4427,7 +5350,7 @@ msgstr "Wenn eine Anfrage erstellt wird"
#: etc/initialdata:418
msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval"
-msgstr ""
+msgstr "Wenn ein freizugebendes Ticket erstellt wurde, informiere den Besitzer und den AdminCc des Tickets über die anstehende Freigabe"
#: etc/initialdata:151
msgid "When anything happens"
@@ -4441,9 +5364,10 @@ msgstr "Immer wenn eine Anfrage erledigt wird"
msgid "Whenever a ticket's owner changes"
msgstr "Immer wenn der Besitzer einer Anfrage wechselt"
-#: etc/initialdata:178 etc/upgrade/3.1.17/content:16
+#: etc/initialdata:178
+#: etc/upgrade/3.1.17/content:16
msgid "Whenever a ticket's priority changes"
-msgstr "Immer wenn sich die Priorität eines Anfragen ändert"
+msgstr "Immer wenn sich die Priorität eines Anfragen ändert"
#: etc/initialdata:193
msgid "Whenever a ticket's queue changes"
@@ -4451,7 +5375,7 @@ msgstr "Immer wenn eine Anfrage den Bereich wechselt"
#: etc/initialdata:170
msgid "Whenever a ticket's status changes"
-msgstr "Immer wenn sich der Status einer Anfrage ändert"
+msgstr "Immer wenn sich der Status einer Anfrage ändert"
#: etc/initialdata:207
msgid "Whenever a user-defined condition occurs"
@@ -4461,38 +5385,44 @@ msgstr "Immer wenn eine benutzerdefinierte Bedingung auftritt"
msgid "Whenever comments come in"
msgstr "Immer wenn ein neuer Kommentar eingeht"
-1c7f
-itialdata:157
#: etc/initialdata:157
msgid "Whenever correspondence comes in"
msgstr "Immer wenn neue Korrespondenz eingeht"
-#: html/Admin/Users/Modify.html:188 html/User/Prefs.html:89
+#: html/Admin/Users/Modify.html:188
+#: html/User/Prefs.html:89
msgid "Work"
msgstr "Arbeit"
-#: html/Search/Results.html:84
+#: html/Search/Results.html:85
msgid "Work offline"
msgstr "Offline arbeiten"
-#: html/Ticket/Elements/ShowBasics:63 html/Ticket/Update.html:64
+#: html/Ticket/Elements/ShowBasics:63
+#: html/Ticket/Update.html:64
msgid "Worked"
-msgstr "Arbeitszeit"
+msgstr "Gearbeitet"
-#: lib/RT/Ticket_Overlay.pm:3096
+#: lib/RT/Ticket_Overlay.pm:3079
msgid "You already own this ticket"
msgstr "Sie sind bereits Besitzer dieser Anfrage"
-#: html/autohandler:158 html/autohandler:166
+#: html/autohandler:176
+#: html/autohandler:184
msgid "You are not an authorized user"
msgstr "Sie sind kein autorisierter Benutzer"
-#: lib/RT/Ticket_Overlay.pm:2978
+#: html/Prefs/Search.html:56
+msgid "You can also edit the predefined search itself"
+msgstr "Du kannst die vordefinierte Such auch selbst editieren"
+
+#: lib/RT/Ticket_Overlay.pm:2961
msgid "You can only reassign tickets that you own or that are unowned"
-msgstr "Sie können nur Anfragen ohne Besitzer zuweisen"
+msgstr "Sie können nur Anfragen ohne Besitzer zuweisen"
-#: docs/design_docs/string-extraction-guide.txt:47 lib/RT/StyleGuide.pod:780
#. ($num, $queue)
+#: docs/design_docs/string-extraction-guide.txt:47
+#: lib/RT/StyleGuide.pod:780
msgid "You found %1 tickets in queue %2"
msgstr "Sie haben %1 Anfragen im Bereich %2 gefunden"
@@ -4504,19 +5434,17 @@ msgstr "Sie wurden von RT abgemeldet."
msgid "You have no permission to create tickets in that queue."
msgstr "Sie haben kein Recht, Anfragen in diesem Bereich anzulegen."
-#: lib/RT/Ticket_Overlay.pm:1964
+#: lib/RT/Ticket_Overlay.pm:1965
msgid "You may not create requests in that queue."
-msgstr "Sie dürfen in diesem Bereich keine Anfragen erstellen"
+msgstr "Sie dürfen in diesem Bereich keine Anfragen erstellen"
#: html/NoAuth/Logout.html:56
msgid "You're welcome to login again"
-msgstr "Sie können sich gerne wieder anmelden"
+msgstr "Sie können sich gerne wieder anmelden"
#: etc/initialdata:502
msgid "Your request has been approved by %1. Other approvals may still be pending."
-msgstr ""
-"Ihre Anfrage wurde von %1 freigegeben. Andere Freigaben können noch "
-"ausstehen."
+msgstr "Ihre Anfrage wurde von %1 freigegeben. Andere Freigaben können noch ausstehen."
#: etc/initialdata:540
msgid "Your request has been approved."
@@ -4526,11 +5454,12 @@ msgstr "Ihre Anfrage wurde freigegeben."
msgid "Your request was rejected."
msgstr "Ihre Anfrage wurde abgewiesen"
-#: html/autohandler:193
+#: html/autohandler:211
msgid "Your username or password is incorrect"
msgstr "Ihr Benutzername oder Passwort ist falsch"
-#: html/Admin/Users/Modify.html:168 html/User/Prefs.html:149
+#: html/Admin/Users/Modify.html:168
+#: html/User/Prefs.html:149
msgid "Zip"
msgstr "PLZ"
@@ -4542,80 +5471,96 @@ msgstr "Erlaube Erstellung von gespeicherten Suchabfragen"
msgid "allow loading of saved searches"
msgstr "Erlaube das Laden von gespeicherten Suchabfragen"
-#: html/User/Elements/DelegateRights:80
#. ($right->PrincipalObj->Object->SelfDescription)
+#: html/User/Elements/DelegateRights:80
msgid "as granted to %1"
-msgstr "wie an %1 gewährt"
+msgstr "wie an %1 gewährt"
-#: html/Search/Elements/PickBasics:127
+#: NOT FOUND IN SOURCE
msgid "belongs to"
-msgstr "gehört zu"
+msgstr "gehört zu"
+
+#: html/Search/Results.html:86
+msgid "chart"
+msgstr "Diagramm"
#: html/SelfService/Closed.html:49
msgid "closed"
msgstr "geschlossen"
-#: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:55
+#: html/Elements/SelectCustomFieldOperator:59
+#: html/Elements/SelectMatch:55
msgid "contains"
-msgstr "enthält"
+msgstr "enthält"
-#: html/Admin/Queues/Modify.html:98 lib/RT/Date.pm:342
+#: html/Admin/Queues/Modify.html:98
+#: lib/RT/Date.pm:342
msgid "days"
msgstr "Tage"
#: lib/RT/Queue_Overlay.pm:88
msgid "deleted"
-msgstr "gelöscht"
+msgstr "gelöscht"
-#: html/Search/Elements/PickBasics:128
+#: NOT FOUND IN SOURCE
msgid "does not belong to"
-msgstr "gehört nicht zu"
+msgstr "gehört nicht zu"
#: html/Search/Elements/PickBasics:61
msgid "does not match"
-msgstr "enthält nicht"
+msgstr "enthält nicht"
-#: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:56
+#: html/Elements/SelectCustomFieldOperator:59
+#: html/Elements/SelectMatch:56
msgid "doesn't contain"
-msgstr "enthält nicht"
+msgstr "enthält nicht"
#: html/Elements/SelectEqualityOperator:59
msgid "equal to"
msgstr "gleich"
-#: html/Search/Build.html:387
+#: html/Search/Build.html:365
msgid "error: can't move down"
msgstr "Fehler: Kann nicht hinunter bewegen"
-#: html/Search/Build.html:409
+#: html/Search/Build.html:387
msgid "error: can't move left"
msgstr "Fehler: Kann nicht nach links bewegen"
-#: html/Search/Build.html:368
+#: html/Search/Build.html:346
msgid "error: can't move up"
msgstr "Fehler: Kann nicht hinauf bewegen"
-#: html/Search/Build.html:451
+#: html/Search/Build.html:429
msgid "error: nothing to delete"
-msgstr "Fehler: Nichts zu löschen"
+msgstr "Fehler: Nichts zu löschen"
-#: html/Search/Build.html:373 html/Search/Build.html:392 html/Search/Build.html:414 html/Search/Build.html:443
+#: html/Search/Build.html:351
+#: html/Search/Build.html:370
+#: html/Search/Build.html:392
+#: html/Search/Build.html:421
msgid "error: nothing to move"
msgstr "Fehler: Nichts zu bewegen"
-#: html/Search/Build.html:469
+#: html/Search/Build.html:447
msgid "error: nothing to toggle"
msgstr "Fehler: Nichts zum Umschalten"
-#: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectEqualityOperator:59
+#: html/Elements/SelectCustomFieldOperator:59
+#: html/Elements/SelectEqualityOperator:59
msgid "greater than"
-msgstr "größer als"
+msgstr "größer als"
-#: lib/RT/Group_Overlay.pm:222
#. ($self->Name)
+#: lib/RT/Group_Overlay.pm:222
msgid "group '%1'"
msgstr "Gruppe '%1'"
+#. ($m->scomp('Elements/SelectGroupBy', Name => 'PrimaryGroupBy'))
+#: html/Search/Results.html:92
+msgid "grouped by %1"
+msgstr "sortiert nach %1"
+
#: lib/RT/Date.pm:338
msgid "hours"
msgstr "Stunden"
@@ -4624,27 +5569,40 @@ msgstr "Stunden"
msgid "id"
msgstr "ID"
-#: html/Elements/SelectBoolean:53 html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:57 html/Search/Elements/PickBasics:175 html/Search/Elements/PickBasics:74 html/Search/Elements/PickBasics:90 html/Search/Elements/PickCFs:53
+#: html/Elements/SelectBoolean:53
+#: html/Elements/SelectCustomFieldOperator:59
+#: html/Elements/SelectMatch:57
+#: html/Search/Elements/PickBasics:162
+#: html/Search/Elements/PickBasics:74
+#: html/Search/Elements/PickBasics:90
+#: html/Search/Elements/PickCFs:53
msgid "is"
msgstr "ist"
-#: html/Elements/SelectBoolean:57 html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:58 html/Search/Elements/PickBasics:176 html/Search/Elements/PickBasics:75 html/Search/Elements/PickBasics:91 html/Search/Elements/PickCFs:54
+#: html/Elements/SelectBoolean:57
+#: html/Elements/SelectCustomFieldOperator:59
+#: html/Elements/SelectMatch:58
+#: html/Search/Elements/PickBasics:163
+#: html/Search/Elements/PickBasics:75
+#: html/Search/Elements/PickBasics:91
+#: html/Search/Elements/PickCFs:54
msgid "isn't"
msgstr "ist nicht"
-#: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectEqualityOperator:59
+#: html/Elements/SelectCustomFieldOperator:59
+#: html/Elements/SelectEqualityOperator:59
msgid "less than"
msgstr "kleiner als"
#: html/Search/Elements/PickBasics:60
msgid "matches"
-msgstr "enthält"
+msgstr "enthält"
#: lib/RT/Date.pm:334
msgid "min"
msgstr "Min"
-#: html/Ticket/Update.html:64
+#: NOT FOUND IN SOURCE
msgid "minutes"
msgstr "Minuten"
@@ -4656,7 +5614,8 @@ msgstr "Monate"
msgid "new"
msgstr "neu"
-#: html/Admin/Elements/PickCustomFields:64 html/Admin/Elements/PickObjects:63
+#: html/Admin/Elements/PickCustomFields:64
+#: html/Admin/Elements/PickObjects:65
msgid "no name"
msgstr "kein Name"
@@ -4664,7 +5623,8 @@ msgstr "kein Name"
msgid "no value"
msgstr "kein Wert"
-#: html/Admin/Elements/EditQueueWatchers:48 html/Ticket/Elements/EditWatchers:49
+#: html/Admin/Elements/EditQueueWatchers:48
+#: html/Ticket/Elements/EditWatchers:49
msgid "none"
msgstr "keine"
@@ -4672,17 +5632,18 @@ msgstr "keine"
msgid "not equal to"
msgstr "ungleich"
-#: html/SelfService/Elements/MyRequests:83 lib/RT/Queue_Overlay.pm:84
+#: html/SelfService/Elements/MyRequests:82
+#: lib/RT/Queue_Overlay.pm:84
msgid "open"
msgstr "offen"
-#: lib/RT/Group_Overlay.pm:227
#. ($self->Name, $user->Name)
+#: lib/RT/Group_Overlay.pm:227
msgid "personal group '%1' for user '%2'"
-msgstr "persönliche Gruppe '%1' für Benutzer '%2'"
+msgstr "persönliche Gruppe '%1' für Benutzer '%2'"
-#: lib/RT/Group_Overlay.pm:235
#. ($queue->Name, $self->Type)
+#: lib/RT/Group_Overlay.pm:235
msgid "queue %1 %2"
msgstr "Bereich %1 %2"
@@ -4700,42 +5661,52 @@ msgstr "Sek"
#: lib/RT/System.pm:86
msgid "show Configuration tab"
-msgstr "Zeige Konfigurationsmenü"
+msgstr "Zeige Konfigurationsmenü"
-#: html/Search/Results.html:82
+#: html/Search/Results.html:83
msgid "spreadsheet"
msgstr "Tabellenkalkulation"
#: lib/RT/Queue_Overlay.pm:85
msgid "stalled"
-msgstr "zurückgestellt"
+msgstr "zurückgestellt"
+
+#. ($m->scomp('Elements/SelectChartType', Name => 'ChartStyle'))
+#: html/Search/Results.html:93
+msgid "style: %1"
+msgstr "Darstellung: %1"
+
+#: html/Prefs/MyRT.html:80
+msgid "summary rows"
+msgstr "Ergebnisreihen"
-#: lib/RT/Group_Overlay.pm:230
#. ($self->Type)
+#: lib/RT/Group_Overlay.pm:230
msgid "system %1"
msgstr "System %1"
-#: lib/RT/Group_Overlay.pm:241
#. ($self->Type)
+#: lib/RT/Group_Overlay.pm:241
msgid "system group '%1'"
msgstr "Systemgruppe '%1'"
-#: html/Elements/Error:66 html/SelfService/Error.html:63
+#: html/Elements/Error:64
+#: html/SelfService/Error.html:63
msgid "the calling component did not specify why"
msgstr "die aufrufende Komponente gab nicht an warum"
-#: lib/RT/Group_Overlay.pm:238
#. ($self->Instance, $self->Type)
+#: lib/RT/Group_Overlay.pm:238
msgid "ticket #%1 %2"
msgstr "Anfrage #%1 %2"
-#: lib/RT/Group_Overlay.pm:244
#. ($self->Id)
+#: lib/RT/Group_Overlay.pm:244
msgid "undescribed group %1"
msgstr "unbeschriebene Gruppe %1"
-#: lib/RT/Group_Overlay.pm:219
#. ($user->Object->Name)
+#: lib/RT/Group_Overlay.pm:219
msgid "user %1"
msgstr "Benutzer %1"
diff --git a/rt/lib/RT/I18N/pt_br.po b/rt/lib/RT/I18N/pt_br.po
index cf172b1be..13df765fa 100644
--- a/rt/lib/RT/I18N/pt_br.po
+++ b/rt/lib/RT/I18N/pt_br.po
@@ -1,4 +1,4 @@
-# $Id: pt_br.po,v 1.1.1.5 2006-10-17 08:50:11 ivan Exp $
+# $Id: pt_br.po,v 1.1.1.5.2.1 2008-03-03 23:07:47 ivan Exp $
msgid ""
msgstr ""
"Project-Id-Version: RT 3.4.x\n"
diff --git a/rt/lib/RT/Interface/CLI.pm b/rt/lib/RT/Interface/CLI.pm
index 8c9329508..8ed0ffd8d 100644
--- a/rt/lib/RT/Interface/CLI.pm
+++ b/rt/lib/RT/Interface/CLI.pm
@@ -55,7 +55,7 @@ BEGIN {
use vars qw ($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
# set the version for version checking
- $VERSION = do { my @r = (q$Revision: 1.1.1.3 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; # must be all one line, for MakeMaker
+ $VERSION = do { my @r = (q$Revision: 1.1.1.3.4.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; # must be all one line, for MakeMaker
@ISA = qw(Exporter);
diff --git a/rt/lib/RT/Interface/Email.pm b/rt/lib/RT/Interface/Email.pm
index efc4c268e..de125f560 100755
--- a/rt/lib/RT/Interface/Email.pm
+++ b/rt/lib/RT/Interface/Email.pm
@@ -1,38 +1,38 @@
# BEGIN BPS TAGGED BLOCK {{{
-#
+#
# COPYRIGHT:
-#
-# This software is Copyright (c) 1996-2005 Best Practical Solutions, LLC
+#
+# This software is Copyright (c) 1996-2005 Best Practical Solutions, LLC
# <jesse@bestpractical.com>
-#
+#
# (Except where explicitly superseded by other copyright notices)
-#
-#
+#
+#
# LICENSE:
-#
+#
# This work is made available to you under the terms of Version 2 of
# the GNU General Public License. A copy of that license should have
# been provided with this software, but in any event can be snarfed
# from www.gnu.org.
-#
+#
# This work is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
-#
+#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-#
-#
+#
+#
# CONTRIBUTION SUBMISSION POLICY:
-#
+#
# (The following paragraph is not intended to limit the rights granted
# to you to modify and distribute this software under the terms of
# the GNU General Public License and is only of importance to you if
# you choose to contribute your changes and enhancements to the
# community by submitting them to Best Practical Solutions, LLC.)
-#
+#
# By intentionally submitting any modifications, corrections or
# derivatives to this work, or any other work intended for use with
# Request Tracker, to Best Practical Solutions, LLC, you confirm that
@@ -41,7 +41,7 @@
# royalty-free, perpetual, license to use, copy, create derivative
# works based on those contributions, and sublicense and distribute
# those contributions and any derivatives thereof.
-#
+#
# END BPS TAGGED BLOCK }}}
package RT::Interface::Email;
@@ -50,31 +50,32 @@ use Mail::Address;
use MIME::Entity;
use RT::EmailParser;
use File::Temp;
+use UNIVERSAL::require;
BEGIN {
use Exporter ();
- use vars qw ($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
-
+ use vars qw ( @ISA @EXPORT_OK);
+
# set the version for version checking
- $VERSION = do { my @r = (q$Revision: 1.1.1.6 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; # must be all one line, for MakeMaker
-
- @ISA = qw(Exporter);
-
+ our $VERSION = 2.0;
+
+ @ISA = qw(Exporter);
+
# your exported package globals go here,
# as well as any optionally exported functions
- @EXPORT_OK = qw(
- &CreateUser
- &GetMessageContent
- &CheckForLoops
- &CheckForSuspiciousSender
- &CheckForAutoGenerated
- &CheckForBounce
- &MailError
- &ParseCcAddressesFromHead
- &ParseSenderAddressFromHead
- &ParseErrorsToAddressFromHead
- &ParseAddressFromHeader
- &Gateway);
+ @EXPORT_OK = qw(
+ &CreateUser
+ &GetMessageContent
+ &CheckForLoops
+ &CheckForSuspiciousSender
+ &CheckForAutoGenerated
+ &CheckForBounce
+ &MailError
+ &ParseCcAddressesFromHead
+ &ParseSenderAddressFromHead
+ &ParseErrorsToAddressFromHead
+ &ParseAddressFromHeader
+ &Gateway);
}
@@ -103,19 +104,18 @@ ok(require RT::Interface::Email);
=cut
+# {{{ sub CheckForLoops
-# {{{ sub CheckForLoops
-
-sub CheckForLoops {
+sub CheckForLoops {
my $head = shift;
-
+
#If this instance of RT sent it our, we don't want to take it in
my $RTLoop = $head->get("X-RT-Loop-Prevention") || "";
- chomp ($RTLoop); #remove that newline
- if ($RTLoop eq "$RT::rtname") {
- return (1);
+ chomp($RTLoop); #remove that newline
+ if ( $RTLoop eq "$RT::rtname" ) {
+ return (1);
}
-
+
# TODO: We might not trap the case where RT instance A sends a mail
# to RT instance B which sends a mail to ...
return (undef);
@@ -129,23 +129,24 @@ sub CheckForSuspiciousSender {
my $head = shift;
#if it's from a postmaster or mailer daemon, it's likely a bounce.
-
+
#TODO: better algorithms needed here - there is no standards for
#bounces, so it's very difficult to separate them from anything
#else. At the other hand, the Return-To address is only ment to be
#used as an error channel, we might want to put up a separate
#Return-To address which is treated differently.
-
+
#TODO: search through the whole email and find the right Ticket ID.
- my ($From, $junk) = ParseSenderAddressFromHead($head);
-
- if (($From =~ /^mailer-daemon\@/i) or
- ($From =~ /^postmaster\@/i)){
- return (1);
-
+ my ( $From, $junk ) = ParseSenderAddressFromHead($head);
+
+ if ( ( $From =~ /^mailer-daemon\@/i )
+ or ( $From =~ /^postmaster\@/i ) )
+ {
+ return (1);
+
}
-
+
return (undef);
}
@@ -155,15 +156,15 @@ sub CheckForSuspiciousSender {
# {{{ sub CheckForAutoGenerated
sub CheckForAutoGenerated {
my $head = shift;
-
- my $Precedence = $head->get("Precedence") || "" ;
- if ($Precedence =~ /^(bulk|junk)/i) {
- return (1);
+
+ my $Precedence = $head->get("Precedence") || "";
+ if ( $Precedence =~ /^(bulk|junk)/i ) {
+ return (1);
}
-
+
# First Class mailer uses this as a clue.
my $FCJunk = $head->get("X-FC-Machinegenerated") || "";
- if ($FCJunk =~ /^true/i) {
+ if ( $FCJunk =~ /^true/i ) {
return (1);
}
@@ -175,9 +176,9 @@ sub CheckForAutoGenerated {
# {{{ sub CheckForBounce
sub CheckForBounce {
my $head = shift;
-
- my $ReturnPath = $head->get("Return-path") || "" ;
- return ($ReturnPath =~ /<>/);
+
+ my $ReturnPath = $head->get("Return-path") || "";
+ return ( $ReturnPath =~ /<>/ );
}
# }}}
@@ -195,11 +196,12 @@ Returns false, otherwise.
sub IsRTAddress {
my $address = shift || '';
- # Example: the following rule would tell RT not to Cc
+ # Example: the following rule would tell RT not to Cc
# "tickets@noc.example.com"
- if ( defined($RT::RTAddressRegexp) &&
- $address =~ /$RT::RTAddressRegexp/i ) {
- return(1);
+ if ( defined($RT::RTAddressRegexp)
+ && $address =~ /$RT::RTAddressRegexp/i )
+ {
+ return (1);
} else {
return (undef);
}
@@ -217,56 +219,61 @@ Returns the same array with any IsRTAddress()es weeded out.
=cut
sub CullRTAddresses {
- return (grep { IsRTAddress($_) } @_);
+ return ( grep { IsRTAddress($_) } @_ );
}
# }}}
-# {{{ sub MailError
+# {{{ sub MailError
sub MailError {
- my %args = (To => $RT::OwnerEmail,
- Bcc => undef,
- From => $RT::CorrespondAddress,
- Subject => 'There has been an error',
- Explanation => 'Unexplained error',
- MIMEObj => undef,
- Attach => undef,
- LogLevel => 'crit',
- @_);
-
-
- $RT::Logger->log(level => $args{'LogLevel'},
- message => $args{'Explanation'}
- );
- my $entity = MIME::Entity->build( Type =>"multipart/mixed",
- From => $args{'From'},
- Bcc => $args{'Bcc'},
- To => $args{'To'},
- Subject => $args{'Subject'},
- Precedence => 'bulk',
- 'X-RT-Loop-Prevention' => $RT::rtname,
- );
-
- $entity->attach( Data => $args{'Explanation'}."\n");
-
+ my %args = (
+ To => $RT::OwnerEmail,
+ Bcc => undef,
+ From => $RT::CorrespondAddress,
+ Subject => 'There has been an error',
+ Explanation => 'Unexplained error',
+ MIMEObj => undef,
+ Attach => undef,
+ LogLevel => 'crit',
+ @_
+ );
+
+ $RT::Logger->log(
+ level => $args{'LogLevel'},
+ message => $args{'Explanation'}
+ );
+ my $entity = MIME::Entity->build(
+ Type => "multipart/mixed",
+ From => $args{'From'},
+ Bcc => $args{'Bcc'},
+ To => $args{'To'},
+ Subject => $args{'Subject'},
+ Precedence => 'bulk',
+ 'X-RT-Loop-Prevention' => $RT::rtname,
+ );
+
+ $entity->attach( Data => $args{'Explanation'} . "\n" );
+
my $mimeobj = $args{'MIMEObj'};
if ($mimeobj) {
$mimeobj->sync_headers();
$entity->add_part($mimeobj);
}
-
- if ($args{'Attach'}) {
- $entity->attach(Data => $args{'Attach'}, Type => 'message/rfc822');
+
+ if ( $args{'Attach'} ) {
+ $entity->attach( Data => $args{'Attach'}, Type => 'message/rfc822' );
}
- if ($RT::MailCommand eq 'sendmailpipe') {
- open (MAIL, "|$RT::SendmailPath $RT::SendmailBounceArguments $RT::SendmailArguments") || return(0);
+ if ( $RT::MailCommand eq 'sendmailpipe' ) {
+ open( MAIL,
+ "|$RT::SendmailPath $RT::SendmailBounceArguments $RT::SendmailArguments"
+ )
+ || return (0);
print MAIL $entity->as_string;
close(MAIL);
- }
- else {
- $entity->send($RT::MailCommand, $RT::MailParams);
+ } else {
+ $entity->send( $RT::MailCommand, $RT::MailParams );
}
}
@@ -275,37 +282,39 @@ sub MailError {
# {{{ Create User
sub CreateUser {
- my ($Username, $Address, $Name, $ErrorsTo, $entity) = @_;
+ my ( $Username, $Address, $Name, $ErrorsTo, $entity ) = @_;
my $NewUser = RT::User->new($RT::SystemUser);
- my ($Val, $Message) =
- $NewUser->Create(Name => ($Username || $Address),
- EmailAddress => $Address,
- RealName => $Name,
- Password => undef,
- Privileged => 0,
- Comments => 'Autocreated on ticket submission'
- );
-
+ my ( $Val, $Message ) = $NewUser->Create(
+ Name => ( $Username || $Address ),
+ EmailAddress => $Address,
+ RealName => $Name,
+ Password => undef,
+ Privileged => 0,
+ Comments => 'Autocreated on ticket submission'
+ );
+
unless ($Val) {
-
+
# Deal with the race condition of two account creations at once
#
if ($Username) {
$NewUser->LoadByName($Username);
}
-
- unless ($NewUser->Id) {
+
+ unless ( $NewUser->Id ) {
$NewUser->LoadByEmail($Address);
}
-
- unless ($NewUser->Id) {
- MailError( To => $ErrorsTo,
- Subject => "User could not be created",
- Explanation => "User creation failed in mailgateway: $Message",
- MIMEObj => $entity,
- LogLevel => 'crit'
- );
+
+ unless ( $NewUser->Id ) {
+ MailError(
+ To => $ErrorsTo,
+ Subject => "User could not be created",
+ Explanation =>
+ "User creation failed in mailgateway: $Message",
+ MIMEObj => $entity,
+ LogLevel => 'crit'
+ );
}
}
@@ -313,21 +322,25 @@ sub CreateUser {
my $CurrentUser = RT::CurrentUser->new();
$CurrentUser->LoadByEmail($Address);
- unless ($CurrentUser->id) {
- $RT::Logger->warning("Couldn't load user '$Address'.". "giving up");
- MailError( To => $ErrorsTo,
- Subject => "User could not be loaded",
- Explanation => "User '$Address' could not be loaded in the mail gateway",
- MIMEObj => $entity,
- LogLevel => 'crit'
- );
+ unless ( $CurrentUser->id ) {
+ $RT::Logger->warning(
+ "Couldn't load user '$Address'." . "giving up" );
+ MailError(
+ To => $ErrorsTo,
+ Subject => "User could not be loaded",
+ Explanation =>
+ "User '$Address' could not be loaded in the mail gateway",
+ MIMEObj => $entity,
+ LogLevel => 'crit'
+ );
}
return $CurrentUser;
}
+
# }}}
-# {{{ ParseCcAddressesFromHead
+# {{{ ParseCcAddressesFromHead
=head2 ParseCcAddressesFromHead HASHREF
@@ -337,32 +350,34 @@ headers b<except> the current Queue\'s email addresses, the CurrentUser\'s
email address and anything that the configuration sub RT::IsRTAddress matches.
=cut
-
+
sub ParseCcAddressesFromHead {
- my %args = ( Head => undef,
- QueueObj => undef,
- CurrentUser => undef,
- @_ );
-
+ my %args = (
+ Head => undef,
+ QueueObj => undef,
+ CurrentUser => undef,
+ @_
+ );
+
my (@Addresses);
-
- my @ToObjs = Mail::Address->parse($args{'Head'}->get('To'));
- my @CcObjs = Mail::Address->parse($args{'Head'}->get('Cc'));
-
- foreach my $AddrObj (@ToObjs, @CcObjs) {
- my $Address = $AddrObj->address;
- $Address = $args{'CurrentUser'}->UserObj->CanonicalizeEmailAddress($Address);
- next if ($args{'CurrentUser'}->EmailAddress =~ /^\Q$Address\E$/i);
- next if ($args{'QueueObj'}->CorrespondAddress =~ /^\Q$Address\E$/i);
- next if ($args{'QueueObj'}->CommentAddress =~ /^\Q$Address\E$/i);
- next if (RT::EmailParser->IsRTAddress($Address));
-
- push (@Addresses, $Address);
+
+ my @ToObjs = Mail::Address->parse( $args{'Head'}->get('To') );
+ my @CcObjs = Mail::Address->parse( $args{'Head'}->get('Cc') );
+
+ foreach my $AddrObj ( @ToObjs, @CcObjs ) {
+ my $Address = $AddrObj->address;
+ $Address = $args{'CurrentUser'}
+ ->UserObj->CanonicalizeEmailAddress($Address);
+ next if ( $args{'CurrentUser'}->EmailAddress =~ /^\Q$Address\E$/i );
+ next if ( $args{'QueueObj'}->CorrespondAddress =~ /^\Q$Address\E$/i );
+ next if ( $args{'QueueObj'}->CommentAddress =~ /^\Q$Address\E$/i );
+ next if ( RT::EmailParser->IsRTAddress($Address) );
+
+ push( @Addresses, $Address );
}
return (@Addresses);
}
-
# }}}
# {{{ ParseSenderAdddressFromHead
@@ -376,12 +391,14 @@ of the From (evaluated in order of Reply-To:, From:, Sender)
sub ParseSenderAddressFromHead {
my $head = shift;
+
#Figure out who's sending this message.
- my $From = $head->get('Reply-To') ||
- $head->get('From') ||
- $head->get('Sender');
- return (ParseAddressFromHeader($From));
+ my $From = $head->get('Reply-To')
+ || $head->get('From')
+ || $head->get('Sender');
+ return ( ParseAddressFromHeader($From) );
}
+
# }}}
# {{{ ParseErrorsToAdddressFromHead
@@ -396,18 +413,22 @@ From:, Sender)
sub ParseErrorsToAddressFromHead {
my $head = shift;
+
#Figure out who's sending this message.
- foreach my $header ('Return-path', 'Errors-To' , 'Reply-To', 'From', 'Sender' ) {
- # If there's a header of that name
- my $headerobj = $head->get($header);
- if ($headerobj) {
- my ($addr, $name ) = ParseAddressFromHeader($headerobj);
- # If it's got actual useful content...
- return ($addr) if ($addr);
- }
+ foreach my $header ( 'Errors-To', 'Reply-To', 'From', 'Sender' ) {
+
+ # If there's a header of that name
+ my $headerobj = $head->get($header);
+ if ($headerobj) {
+ my ( $addr, $name ) = ParseAddressFromHeader($headerobj);
+
+ # If it's got actual useful content...
+ return ($addr) if ($addr);
+ }
}
}
+
# }}}
# {{{ ParseAddressFromHeader
@@ -418,31 +439,28 @@ Takes an address from $head->get('Line') and returns a tuple: user@host, friendl
=cut
-
-sub ParseAddressFromHeader{
+sub ParseAddressFromHeader {
my $Addr = shift;
-
- # Perl 5.8.0 breaks when doing regex matches on utf8
- Encode::_utf8_off($Addr) if $] == 5.008;
+
my @Addresses = Mail::Address->parse($Addr);
-
+
my $AddrObj = $Addresses[0];
- unless (ref($AddrObj)) {
- return(undef,undef);
+ unless ( ref($AddrObj) ) {
+ return ( undef, undef );
}
-
- my $Name = ($AddrObj->phrase || $AddrObj->comment || $AddrObj->address);
-
+
+ my $Name = ( $AddrObj->phrase || $AddrObj->comment || $AddrObj->address );
+
#Lets take the from and load a user object.
my $Address = $AddrObj->address;
- return ($Address, $Name);
+ return ( $Address, $Name );
}
-# }}}
-# {{{ sub ParseTicketId
+# }}}
+# {{{ sub ParseTicketId
sub ParseTicketId {
my $Subject = shift;
@@ -454,15 +472,13 @@ sub ParseTicketId {
my $id = $1;
$RT::Logger->debug("Found a ticket ID. It's $id");
return ($id);
- }
- else {
+ } else {
return (undef);
}
}
# }}}
-
=head2 Gateway ARGSREF
@@ -501,50 +517,53 @@ Returns:
sub Gateway {
my $argsref = shift;
+ my %args = (
+ action => 'correspond',
+ queue => '1',
+ ticket => undef,
+ message => undef,
+ %$argsref
+ );
- my %args = %$argsref;
-
- # Set some reasonable defaults
- $args{'action'} ||= 'correspond';
- $args{'queue'} ||= '1';
+ my $SystemTicket;
+ my $Right;
# Validate the action
- my ($status, @actions) = IsCorrectAction( $args{'action'} );
- unless ( $status ) {
-
- # Can't safely loc this. What object do we loc around?
- $RT::Logger->crit("Mail gateway called with an invalid action paramenter '".$actions[0]."' for queue '".$args{'queue'}."'");
-
- return ( -75, "Invalid 'action' parameter", undef );
+ my ( $status, @actions ) = IsCorrectAction( $args{'action'} );
+ unless ($status) {
+ return (
+ -75,
+ "Invalid 'action' parameter "
+ . $actions[0]
+ . " for queue "
+ . $args{'queue'},
+ undef
+ );
}
my $parser = RT::EmailParser->new();
+ $parser->SmartParseMIMEEntityFromScalar( Message => $args{'message'} );
+ my $Message = $parser->Entity();
- $parser->SmartParseMIMEEntityFromScalar( Message => $args{'message'});
-
- if (!$parser->Entity()) {
+ unless ($Message) {
MailError(
To => $RT::OwnerEmail,
Subject => "RT Bounce: Unparseable message",
Explanation => "RT couldn't process the message below",
- Attach => $args{'message'}
+ Attach => $args{'message'}
);
- return(0,"Failed to parse this message. Something is likely badly wrong with the message");
+ return ( 0,
+ "Failed to parse this message. Something is likely badly wrong with the message"
+ );
}
- my $Message = $parser->Entity();
- my $head = $Message->head;
-
- my ( $CurrentUser, $AuthStat, $error );
-
- # Initalize AuthStat so comparisons work correctly
- $AuthStat = -9999999;
+ my $head = $Message->head;
my $ErrorsTo = ParseErrorsToAddressFromHead($head);
my $MessageId = $head->get('Message-ID')
- || "<no-message-id-" . time . rand(2000) . "\@.$RT::Organization>";
+ || "<no-message-id-" . time . rand(2000) . "\@.$RT::Organization>";
#Pull apart the subject line
my $Subject = $head->get('Subject') || '';
@@ -552,13 +571,12 @@ sub Gateway {
$args{'ticket'} ||= ParseTicketId($Subject);
- my $SystemTicket;
- my $Right = 'CreateTicket';
- if ( $args{'ticket'} ) {
- $SystemTicket = RT::Ticket->new($RT::SystemUser);
- $SystemTicket->Load( $args{'ticket'} );
- # if there's an existing ticket, this must be a reply
- $Right = 'ReplyToTicket';
+ $SystemTicket = RT::Ticket->new($RT::SystemUser);
+ $SystemTicket->Load( $args{'ticket'} ) if ( $args{'ticket'} ) ;
+ if ( $SystemTicket->id ) {
+ $Right = 'ReplyToTicket';
+ } else {
+ $Right = 'CreateTicket';
}
#Set up a queue object
@@ -566,190 +584,124 @@ sub Gateway {
$SystemQueueObj->Load( $args{'queue'} );
# We can safely have no queue of we have a known-good ticket
- unless ( $args{'ticket'} || $SystemQueueObj->id ) {
+ unless ( $SystemTicket->id || $SystemQueueObj->id ) {
return ( -75, "RT couldn't find the queue: " . $args{'queue'}, undef );
}
- # Authentication Level
+ # Authentication Level ($AuthStat)
# -1 - Get out. this user has been explicitly declined
# 0 - User may not do anything (Not used at the moment)
# 1 - Normal user
# 2 - User is allowed to specify status updates etc. a la enhanced-mailgate
+ my ( $CurrentUser, $AuthStat, $error );
+
+ # Initalize AuthStat so comparisons work correctly
+ $AuthStat = -9999999;
push @RT::MailPlugins, "Auth::MailFrom" unless @RT::MailPlugins;
- # Since this needs loading, no matter what
+ # if plugin returns AuthStat -2 we skip action
+ # NOTE: this is experimental API and it would be changed
+ my %skip_action = ();
+ # Since this needs loading, no matter what
foreach (@RT::MailPlugins) {
- my $Code;
- my $NewAuthStat;
+ my ($Code, $NewAuthStat);
if ( ref($_) eq "CODE" ) {
$Code = $_;
- }
- else {
- $_ = "RT::Interface::Email::".$_ unless $_ =~ /^RT::Interface::Email::/;
- eval "require $_;";
- if ($@) {
- $RT::Logger->crit("Couldn't load module '$_': $@");
- next;
- }
+ } else {
+ my $Class = $_;
+ $Class = "RT::Interface::Email::" . $Class
+ unless $Class =~ /^RT::Interface::Email::/;
+ $Class->require or
+ do { $RT::Logger->error("Couldn't load $Class: $@"); next };
+
no strict 'refs';
- if ( !defined( $Code = *{ $_ . "::GetCurrentUser" }{CODE} ) ) {
- $RT::Logger->crit("No GetCurrentUser code found in $_ module");
+ unless ( defined( $Code = *{ $Class . "::GetCurrentUser" }{CODE} ) ) {
+ $RT::Logger->crit( "No 'GetCurrentUser' function found in '$Class' module");
next;
}
}
- foreach my $action ( @actions ) {
-
+ foreach my $action (@actions) {
( $CurrentUser, $NewAuthStat ) = $Code->(
- Message => $Message,
+ Message => $Message,
RawMessageRef => \$args{'message'},
- CurrentUser => $CurrentUser,
- AuthLevel => $AuthStat,
- Action => $action,
- Ticket => $SystemTicket,
- Queue => $SystemQueueObj
+ CurrentUser => $CurrentUser,
+ AuthLevel => $AuthStat,
+ Action => $action,
+ Ticket => $SystemTicket,
+ Queue => $SystemQueueObj
);
-
- # If a module returns a "-1" then we discard the ticket, so.
- $AuthStat = -1 if $NewAuthStat == -1;
-
- # You get the highest level of authentication you were assigned.
- $AuthStat = $NewAuthStat if $NewAuthStat > $AuthStat;
+# You get the highest level of authentication you were assigned, unless you get the magic -1
+# If a module returns a "-1" then we discard the ticket, so.
+ $AuthStat = $NewAuthStat
+ if ( $NewAuthStat > $AuthStat or $NewAuthStat == -1 or $NewAuthStat == -2 );
last if $AuthStat == -1;
- }
+ $skip_action{$action}++ if $AuthStat == -2;
+ }
last if $AuthStat == -1;
}
-
# {{{ If authentication fails and no new user was created, get out.
- if ( !$CurrentUser or !$CurrentUser->Id or $AuthStat == -1 ) {
+ if ( !$CurrentUser || !$CurrentUser->id || $AuthStat == -1 ) {
# If the plugins refused to create one, they lose.
unless ( $AuthStat == -1 ) {
-
- # Notify the RT Admin of the failure.
- # XXX Should this be configurable?
- MailError(
- To => $RT::OwnerEmail,
- Subject => "Could not load a valid user",
- Explanation => <<EOT,
-RT could not load a valid user, and RT's configuration does not allow
-for the creation of a new user for this email ($ErrorsTo).
-
-You might need to grant 'Everyone' the right '$Right' for the
-queue @{[$args{'queue'}]}.
-
-EOT
- MIMEObj => $Message,
- LogLevel => 'error'
+ _NoAuthorizedUserFound(
+ Right => $Right,
+ Message => $Message,
+ Requestor => $ErrorsTo,
+ Queue => $args{'queue'}
);
- # Also notify the requestor that his request has been dropped.
- MailError(
- To => $ErrorsTo,
- Subject => "Could not load a valid user",
- Explanation => <<EOT,
-RT could not load a valid user, and RT's configuration does not allow
-for the creation of a new user for your email.
-
-EOT
- MIMEObj => $Message,
- LogLevel => 'error'
- );
}
return ( 0, "Could not load a valid user", undef );
}
- # }}}
-
- # {{{ Lets check for mail loops of various sorts.
- my $IsBounce = CheckForBounce($head);
-
- my $IsAutoGenerated = CheckForAutoGenerated($head);
-
- my $IsSuspiciousSender = CheckForSuspiciousSender($head);
-
- my $IsALoop = CheckForLoops($head);
-
- my $SquelchReplies = 0;
-
- #If the message is autogenerated, we need to know, so we can not
- # send mail to the sender
- if ( $IsBounce || $IsSuspiciousSender || $IsAutoGenerated || $IsALoop ) {
- $SquelchReplies = 1;
- $ErrorsTo = $RT::OwnerEmail;
- }
-
- # }}}
-
- # {{{ Drop it if it's disallowed
+ # If we got a user, but they don't have the right to say things
if ( $AuthStat == 0 ) {
MailError(
To => $ErrorsTo,
Subject => "Permission Denied",
- Explanation => "You do not have permission to communicate with RT",
- MIMEObj => $Message
+ Explanation =>
+ "You do not have permission to communicate with RT",
+ MIMEObj => $Message
);
- }
-
- # }}}
- # {{{ Warn someone if it's a loop
-
- # Warn someone if it's a loop, before we drop it on the ground
- if ($IsALoop) {
- $RT::Logger->crit("RT Recieved mail ($MessageId) from itself.");
-
- #Should we mail it to RTOwner?
- if ($RT::LoopsToRTOwner) {
- MailError(
- To => $RT::OwnerEmail,
- Subject => "RT Bounce: $Subject",
- Explanation => "RT thinks this message may be a bounce",
- MIMEObj => $Message
- );
- }
-
- #Do we actually want to store it?
- return ( 0, "Message Bounced", undef ) unless ($RT::StoreLoops);
- }
-
- # }}}
-
- # {{{ Squelch replies if necessary
- # Don't let the user stuff the RT-Squelch-Replies-To header.
- if ( $head->get('RT-Squelch-Replies-To') ) {
- $head->add(
- 'RT-Relocated-Squelch-Replies-To',
- $head->get('RT-Squelch-Replies-To')
+ return (
+ 0,
+ "$ErrorsTo tried to submit a message to "
+ . $args{'Queue'}
+ . " without permission.",
+ undef
);
- $head->delete('RT-Squelch-Replies-To');
}
- if ($SquelchReplies) {
-
- # Squelch replies to the sender, and also leave a clue to
- # allow us to squelch ALL outbound messages. This way we
- # can punt the logic of "what to do when we get a bounce"
- # to the scrip. We might want to notify nobody. Or just
- # the RT Owner. Or maybe all Privileged watchers.
- my ( $Sender, $junk ) = ParseSenderAddressFromHead($head);
- $head->add( 'RT-Squelch-Replies-To', $Sender );
- $head->add( 'RT-DetectedAutoGenerated', 'true' );
+ # {{{ Lets check for mail loops of various sorts.
+ my ($continue, $result);
+ ( $continue, $ErrorsTo, $result ) = _HandleMachineGeneratedMail(
+ Message => $Message,
+ ErrorsTo => $ErrorsTo,
+ Subject => $Subject,
+ MessageId => $MessageId
+ );
+
+ unless ($continue) {
+ return ( 0, $result, undef );
}
+
+ # strip actions we should skip
+ @actions = grep !$skip_action{$_}, @actions;
- # }}}
+ # if plugin's updated SystemTicket then update arguments
+ $args{'ticket'} = $SystemTicket->Id if $SystemTicket && $SystemTicket->Id;
my $Ticket = RT::Ticket->new($CurrentUser);
- # {{{ If we don't have a ticket Id, we're creating a new ticket
- if ( (!$SystemTicket || !$SystemTicket->Id) &&
- grep /^(comment|correspond)$/, @actions ) {
-
- # {{{ Create a new ticket
+ if ( !$args{'ticket'} && grep /^(comment|correspond)$/, @actions )
+ {
my @Cc;
my @Requestors = ( $CurrentUser->id );
@@ -776,42 +728,39 @@ EOT
Explanation => $ErrStr,
MIMEObj => $Message
);
- $RT::Logger->error("Create failed: $id / $Transaction / $ErrStr ");
- return ( 0, "Ticket creation failed", $Ticket );
+ return ( 0, "Ticket creation failed: $ErrStr", $Ticket );
}
- # strip comments&corresponds from the actions we don't need record twice
- @actions = grep !/^(comment|correspond)$/, @actions;
- $args{'ticket'} = $id;
- # }}}
- }
+ # strip comments&corresponds from the actions we don't need
+ # to record them if we've created the ticket just now
+ @actions = grep !/^(comment|correspond)$/, @actions;
+ $args{'ticket'} = $id;
- $Ticket->Load( $args{'ticket'} );
- unless ( $Ticket->Id ) {
- my $message = "Could not find a ticket with id " . $args{'ticket'};
- MailError(
- To => $ErrorsTo,
- Subject => "Message not recorded",
- Explanation => $message,
- MIMEObj => $Message
- );
-
- return ( 0, $message );
+ } else {
+
+ $Ticket->Load( $args{'ticket'} );
+ unless ( $Ticket->Id ) {
+ my $error = "Could not find a ticket with id " . $args{'ticket'};
+ MailError(
+ To => $ErrorsTo,
+ Subject => "Message not recorded",
+ Explanation => $error,
+ MIMEObj => $Message
+ );
+
+ return ( 0, $error );
+ }
}
# }}}
- foreach my $action( @actions ) {
+ foreach my $action (@actions) {
+
# If the action is comment, add a comment.
- if ( $action =~ /^(comment|correspond)$/i ) {
- my ( $status, $msg );
- if ( $action =~ /^correspond$/i ) {
- ( $status, $msg ) = $Ticket->Correspond( MIMEObj => $Message );
- }
- else {
- ( $status, $msg ) = $Ticket->Comment( MIMEObj => $Message );
- }
+ if ( $action =~ /^(?:comment|correspond)$/i ) {
+ my $method = ucfirst lc $action;
+ my ( $status, $msg ) = $Ticket->$method( MIMEObj => $Message );
unless ($status) {
-
+
#Warn the sender that we couldn't actually submit the comment.
MailError(
To => $ErrorsTo,
@@ -819,79 +768,201 @@ EOT
Explanation => $msg,
MIMEObj => $Message
);
- return ( 0, "Message not recorded", $Ticket );
- }
- }
- elsif ($RT::UnsafeEmailCommands && $action =~ /^take$/i ) {
- my ( $status, $msg ) = $Ticket->SetOwner( $CurrentUser->id );
- unless ($status) {
-
- #Warn the sender that we couldn't actually submit the comment.
- MailError(
- To => $ErrorsTo,
- Subject => "Ticket not taken",
- Explanation => $msg,
- MIMEObj => $Message
- );
- return ( 0, "Ticket not taken", $Ticket );
- }
- }
- elsif ( $RT::UnsafeEmailCommands && $action =~ /^resolve$/i ) {
- my ( $status, $msg ) = $Ticket->SetStatus( 'resolved' );
- unless ($status) {
- #Warn the sender that we couldn't actually submit the comment.
- MailError(
- To => $ErrorsTo,
- Subject => "Ticket not resolved",
- Explanation => $msg,
- MIMEObj => $Message
- );
- return ( 0, "Ticket not resolved", $Ticket );
+ return ( 0, "Message not recorded: $msg", $Ticket );
}
+ } elsif ($RT::UnsafeEmailCommands) {
+ my ( $status, $msg ) = _RunUnsafeAction(
+ Action => $action,
+ ErrorsTo => $ErrorsTo,
+ Message => $Message,
+ Ticket => $Ticket,
+ CurrentUser => $CurrentUser,
+ );
+ return ($status, $msg, $Ticket) unless $status == 1;
}
-
- else {
-
- #Return mail to the sender with an error
+ }
+ return ( 1, "Success", $Ticket );
+}
+
+sub _RunUnsafeAction {
+ my %args = (
+ Action => undef,
+ ErrorsTo => undef,
+ Message => undef,
+ Ticket => undef,
+ CurrentUser => undef,
+ @_
+ );
+
+ if ( $args{'Action'} =~ /^take$/i ) {
+ my ( $status, $msg ) = $args{'Ticket'}->SetOwner( $args{'CurrentUser'}->id );
+ unless ($status) {
MailError(
- To => $ErrorsTo,
- Subject => "RT Configuration error",
- Explanation => "'"
- . $args{'action'}
- . "' not a recognized action."
- . " Your RT administrator has misconfigured "
- . "the mail aliases which invoke RT",
- MIMEObj => $Message
+ To => $args{'ErrorsTo'},
+ Subject => "Ticket not taken",
+ Explanation => $msg,
+ MIMEObj => $args{'Message'}
);
- $RT::Logger->crit( $args{'action'} . " type unknown for $MessageId" );
- return (
- -75,
- "Configuration error: "
- . $args{'action'}
- . " not a recognized action",
- $Ticket
+ return ( 0, "Ticket not taken" );
+ }
+ } elsif ( $args{'Action'} =~ /^resolve$/i ) {
+ my ( $status, $msg ) = $args{'Ticket'}->SetStatus('resolved');
+ unless ($status) {
+
+ #Warn the sender that we couldn't actually submit the comment.
+ MailError(
+ To => $args{'ErrorsTo'},
+ Subject => "Ticket not resolved",
+ Explanation => $msg,
+ MIMEObj => $args{'Message'}
);
-
+ return ( 0, "Ticket not resolved" );
}
+ } else {
+ return ( 0, "Not supported unsafe action $args{'Action'}", $args{'Ticket'} );
}
+ return ( 1, "Success" );
+}
- return ( 1, "Success", $Ticket );
+=head2 _NoAuthorizedUserFound
+
+Emails the RT Owner and the requestor when the auth plugins return "No auth user found"
+
+=cut
+
+sub _NoAuthorizedUserFound {
+ my %args = (
+ Right => undef,
+ Message => undef,
+ Requestor => undef,
+ Queue => undef,
+ @_
+ );
+
+ # Notify the RT Admin of the failure.
+ MailError(
+ To => $RT::OwnerEmail,
+ Subject => "Could not load a valid user",
+ Explanation => <<EOT,
+RT could not load a valid user, and RT's configuration does not allow
+for the creation of a new user for this email (@{[$args{Requestor}]}).
+
+You might need to grant 'Everyone' the right '@{[$args{Right}]}' for the
+queue @{[$args{'Queue'}]}.
+
+EOT
+ MIMEObj => $args{'Message'},
+ LogLevel => 'error'
+ );
+
+ # Also notify the requestor that his request has been dropped.
+ MailError(
+ To => $args{'Requestor'},
+ Subject => "Could not load a valid user",
+ Explanation => <<EOT,
+RT could not load a valid user, and RT's configuration does not allow
+for the creation of a new user for your email.
+
+EOT
+ MIMEObj => $args{'Message'},
+ LogLevel => 'error'
+ );
}
-sub IsCorrectAction
-{
- my $action = shift;
- my @actions = split /-/, $action;
- foreach ( @actions ) {
- return (0, $_) unless /^(?:comment|correspond|take|resolve)$/;
- }
- return (1, @actions);
+=head2 _HandleMachineGeneratedMail
+
+Takes named params:
+ Message
+ ErrorsTo
+ Subject
+
+Checks the message to see if it's a bounce, if it looks like a loop, if it's autogenerated, etc.
+Returns a triple of ("Should we continue (boolean)", "New value for $ErrorsTo", "Status message");
+
+=cut
+
+sub _HandleMachineGeneratedMail {
+ my %args = ( Message => undef, ErrorsTo => undef, Subject => undef, MessageId => undef, @_ );
+ my $head = $args{'Message'}->head;
+ my $ErrorsTo = $args{'ErrorsTo'};
+
+ my $IsBounce = CheckForBounce($head);
+
+ my $IsAutoGenerated = CheckForAutoGenerated($head);
+
+ my $IsSuspiciousSender = CheckForSuspiciousSender($head);
+
+ my $IsALoop = CheckForLoops($head);
+
+ my $SquelchReplies = 0;
+
+ #If the message is autogenerated, we need to know, so we can not
+ # send mail to the sender
+ if ( $IsBounce || $IsSuspiciousSender || $IsAutoGenerated || $IsALoop ) {
+ $SquelchReplies = 1;
+ $ErrorsTo = $RT::OwnerEmail;
+ }
+
+ # Warn someone if it's a loop, before we drop it on the ground
+ if ($IsALoop) {
+ $RT::Logger->crit("RT Recieved mail (".$args{MessageId}.") from itself.");
+
+ #Should we mail it to RTOwner?
+ if ($RT::LoopsToRTOwner) {
+ MailError(
+ To => $RT::OwnerEmail,
+ Subject => "RT Bounce: ".$args{'Subject'},
+ Explanation => "RT thinks this message may be a bounce",
+ MIMEObj => $args{Message}
+ );
+ }
+
+ #Do we actually want to store it?
+ return ( 0, $ErrorsTo, "Message Bounced" ) unless ($RT::StoreLoops);
+ }
+
+ # Squelch replies if necessary
+ # Don't let the user stuff the RT-Squelch-Replies-To header.
+ if ( $head->get('RT-Squelch-Replies-To') ) {
+ $head->add(
+ 'RT-Relocated-Squelch-Replies-To',
+ $head->get('RT-Squelch-Replies-To')
+ );
+ $head->delete('RT-Squelch-Replies-To');
+ }
+
+ if ($SquelchReplies) {
+
+ # Squelch replies to the sender, and also leave a clue to
+ # allow us to squelch ALL outbound messages. This way we
+ # can punt the logic of "what to do when we get a bounce"
+ # to the scrip. We might want to notify nobody. Or just
+ # the RT Owner. Or maybe all Privileged watchers.
+ my ( $Sender, $junk ) = ParseSenderAddressFromHead($head);
+ $head->add( 'RT-Squelch-Replies-To', $Sender );
+ $head->add( 'RT-DetectedAutoGenerated', 'true' );
+ }
+ return ( 1, $ErrorsTo, "Handled machine detection" );
}
+=head2 IsCorrectAction
+
+Returns a list of valid actions we've found for this message
+
+=cut
+
+sub IsCorrectAction {
+ my $action = shift;
+ my @actions = split /-/, $action;
+ foreach (@actions) {
+ return ( 0, $_ ) unless /^(?:comment|correspond|take|resolve)$/;
+ }
+ return ( 1, @actions );
+}
eval "require RT::Interface::Email_Vendor";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Email_Vendor.pm});
+die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Interface/Email_Vendor.pm} );
eval "require RT::Interface::Email_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Email_Local.pm});
+die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Interface/Email_Local.pm} );
1;
diff --git a/rt/lib/RT/Interface/Email/Auth/MailFrom.pm b/rt/lib/RT/Interface/Email/Auth/MailFrom.pm
index ef315dd53..5143764e1 100644
--- a/rt/lib/RT/Interface/Email/Auth/MailFrom.pm
+++ b/rt/lib/RT/Interface/Email/Auth/MailFrom.pm
@@ -60,6 +60,11 @@ sub GetCurrentUser {
# We don't need to do any external lookups
my ( $Address, $Name ) = ParseSenderAddressFromHead( $args{'Message'}->head );
+
+ unless ($Address) {
+ return ( $args{'CurrentUser'}, -1 );
+ }
+
my $CurrentUser = RT::CurrentUser->new();
$CurrentUser->LoadByEmail($Address);
diff --git a/rt/lib/RT/Interface/REST.pm b/rt/lib/RT/Interface/REST.pm
index 279ddf4b3..981604bf0 100644
--- a/rt/lib/RT/Interface/REST.pm
+++ b/rt/lib/RT/Interface/REST.pm
@@ -54,7 +54,7 @@ BEGIN {
use Exporter ();
use vars qw($VERSION @ISA @EXPORT);
- $VERSION = do { my @r = (q$Revision: 1.1.1.3 $ =~ /\d+/g); sprintf "%d."."%02d"x$#r, @r };
+ $VERSION = do { my @r = (q$Revision: 1.1.1.3.4.1 $ =~ /\d+/g); sprintf "%d."."%02d"x$#r, @r };
@ISA = qw(Exporter);
@EXPORT = qw(expand_list form_parse form_compose vpush vsplit);
diff --git a/rt/lib/RT/Interface/Web.pm b/rt/lib/RT/Interface/Web.pm
index 724d7e592..8bc840ba4 100644
--- a/rt/lib/RT/Interface/Web.pm
+++ b/rt/lib/RT/Interface/Web.pm
@@ -288,9 +288,18 @@ sub CreateTicket {
Body => $ARGS{'Content'},
);
- if ($ARGS{'Attachments'}) {
- $MIMEObj->make_multipart;
- $MIMEObj->add_part($_) foreach values %{$ARGS{'Attachments'}};
+ if ( $ARGS{'Attachments'} ) {
+ my $rv = $MIMEObj->make_multipart;
+ $RT::Logger->error("Couldn't make multipart message")
+ if !$rv || $rv !~ /^(?:DONE|ALREADY)$/;
+
+ foreach ( values %{$ARGS{'Attachments'}} ) {
+ unless ( $_ ) {
+ $RT::Logger->error("Couldn't add empty attachemnt");
+ next;
+ }
+ $MIMEObj->add_part($_);
+ }
}
my %create_args = (
@@ -1132,161 +1141,174 @@ sub ProcessObjectCustomFieldUpdates {
# Build up a list of objects that we want to work with
my %custom_fields_to_mod;
foreach my $arg ( keys %$ARGSRef ) {
- if ( $arg =~ /^Object-([\w:]+)-(\d*)-CustomField-(\d+)-/ ) {
- # For each of those objects, find out what custom fields we want to work with.
- $custom_fields_to_mod{$1}{$2 || $args{'Object'}->Id}{$3} = 1;
- }
+ # format: Object-<object class>-<object id>-CustomField-<CF id>-<commands>
+ next unless $arg =~ /^Object-([\w:]+)-(\d*)-CustomField-(\d+)-(.*)$/;
+
+ # For each of those objects, find out what custom fields we want to work with.
+ $custom_fields_to_mod{ $1 }{ $2 || 0 }{ $3 }{ $4 } = $ARGSRef->{ $arg };
}
# For each of those objects
foreach my $class ( keys %custom_fields_to_mod ) {
- foreach my $id ( keys %{$custom_fields_to_mod{$class}} ) {
- my $Object = $args{'Object'};
- if (!$Object or ref($Object) ne $class or $Object->id != $id) {
- $Object = $class->new( $session{'CurrentUser'} );
- $Object->Load($id);
- }
+ foreach my $id ( keys %{$custom_fields_to_mod{$class}} ) {
+ my $Object = $args{'Object'};
+ $Object = $class->new( $session{'CurrentUser'} )
+ unless $Object && ref $Object eq $class;
+
+ $Object->Load( $id ) unless ($Object->id || 0) == $id;
+ unless ( $Object->id ) {
+ $RT::Logger->warning("Couldn't load object $class #$id");
+ next;
+ }
- # For each custom field
- foreach my $cf ( keys %{ $custom_fields_to_mod{$class}{$id} } ) {
- my $CustomFieldObj = RT::CustomField->new($session{'CurrentUser'});
- $CustomFieldObj->LoadById($cf);
-
- foreach my $arg ( keys %{$ARGSRef} ) {
- # Only interested in args for the current CF:
- next unless ( $arg =~ /^Object-$class-(?:$id)?-CustomField-$cf-/ );
-
- # since http won't pass in a form element with a null value, we need
- # to fake it
- if ($arg =~ /^(.*?)-Values-Magic$/ ) {
- # We don't care about the magic, if there's really a values element;
- next if ($ARGSRef->{$1.'-Value'} || $ARGSRef->{$1.'-Values'}) ;
-
- # "Empty" values does not mean anything for Image and Binary fields
- next if $CustomFieldObj->Type =~ /^(?:Image|Binary)$/;
-
- $arg = $1."-Values";
- $ARGSRef->{$1."-Values"} = undef;
-
- }
- my @values = ();
- if (ref( $ARGSRef->{$arg} ) eq 'ARRAY' ) {
- @values = @{ $ARGSRef->{$arg} };
- } elsif ($CustomFieldObj->Type =~ /text/i) { # Both Text and Wikitext
- @values = ($ARGSRef->{$arg});
- } else {
- @values = split /\n/, $ARGSRef->{$arg};
- }
-
- if ( ($CustomFieldObj->Type eq 'Freeform'
- && ! $CustomFieldObj->SingleValue) ||
- $CustomFieldObj->Type =~ /text/i) {
- foreach my $val (@values) {
- $val =~ s/\r//g;
- }
- }
-
- if ( ( $arg =~ /-AddValue$/ ) || ( $arg =~ /-Value$/ ) ) {
- foreach my $value (@values) {
- next unless length($value);
- my ( $val, $msg ) = $Object->AddCustomFieldValue(
- Field => $cf,
- Value => $value
- );
- push ( @results, $msg );
- }
- }
- elsif ( $arg =~ /-Upload$/ ) {
- my $value_hash = _UploadedFile($arg) or next;
-
- my ( $val, $msg ) = $Object->AddCustomFieldValue(
- %$value_hash,
- Field => $cf,
- );
- push ( @results, $msg );
- }
- elsif ( $arg =~ /-DeleteValues$/ ) {
- foreach my $value (@values) {
- next unless length($value);
- my ( $val, $msg ) = $Object->DeleteCustomFieldValue(
- Field => $cf,
- Value => $value
- );
- push ( @results, $msg );
- }
- }
- elsif ( $arg =~ /-DeleteValueIds$/ ) {
- foreach my $value (@values) {
- next unless length($value);
- my ( $val, $msg ) = $Object->DeleteCustomFieldValue(
- Field => $cf,
- ValueId => $value,
- );
- push ( @results, $msg );
- }
- }
- elsif ( $arg =~ /-Values$/ and !$CustomFieldObj->Repeated) {
- my $cf_values = $Object->CustomFieldValues($cf);
-
- my %values_hash;
- foreach my $value (@values) {
- next unless length($value);
-
- # build up a hash of values that the new set has
- $values_hash{$value} = 1;
-
- unless ( $cf_values->HasEntry($value) ) {
- my ( $val, $msg ) = $Object->AddCustomFieldValue(
- Field => $cf,
- Value => $value
- );
- push ( @results, $msg );
- }
-
- }
- while ( my $cf_value = $cf_values->Next ) {
- unless ( $values_hash{ $cf_value->Content } == 1 ) {
- my ( $val, $msg ) = $Object->DeleteCustomFieldValue(
- Field => $cf,
- Value => $cf_value->Content
- );
- push ( @results, $msg);
-
- }
- }
- }
- elsif ( $arg =~ /-Values$/ ) {
- my $cf_values = $Object->CustomFieldValues($cf);
-
- # keep everything up to the point of difference, delete the rest
- my $delete_flag;
- foreach my $old_cf (@{$cf_values->ItemsArrayRef}) {
- if (!$delete_flag and @values and $old_cf->Content eq $values[0]) {
- shift @values;
- next;
- }
-
- $delete_flag ||= 1;
- $old_cf->Delete;
- }
-
- # now add/replace extra things, if any
- foreach my $value (@values) {
- my ( $val, $msg ) = $Object->AddCustomFieldValue(
- Field => $cf,
- Value => $value
- );
- push ( @results, $msg );
- }
- }
- else {
- push ( @results, loc("User asked for an unknown update type for custom field [_1] for [_2] object #[_3]", $cf->Name, $class, $Object->id ) );
- }
- }
- }
- return (@results);
- }
+ foreach my $cf ( keys %{ $custom_fields_to_mod{ $class }{ $id } } ) {
+ my $CustomFieldObj = RT::CustomField->new( $session{'CurrentUser'} );
+ $CustomFieldObj->LoadById( $cf );
+ unless ( $CustomFieldObj->id ) {
+ $RT::Logger->warning("Couldn't load custom field #$id");
+ next;
+ }
+ push @results, _ProcessObjectCustomFieldUpdates(
+ Prefix => "Object-$class-$id-CustomField-$cf-",
+ Object => $Object,
+ CustomField => $CustomFieldObj,
+ ARGS => $custom_fields_to_mod{$class}{$id}{$cf},
+ );
+ }
+ }
+ }
+ return @results;
+}
+
+sub _ProcessObjectCustomFieldUpdates {
+ my %args = @_;
+ my $cf = $args{'CustomField'};
+ my $cf_type = $cf->Type;
+
+ my @results;
+ foreach my $arg ( keys %{ $args{'ARGS'} } ) {
+
+ # since http won't pass in a form element with a null value, we need
+ # to fake it
+ if ( $arg eq 'Values-Magic' ) {
+ # We don't care about the magic, if there's really a values element;
+ next if $args{'ARGS'}->{'Value'} || $args{'ARGS'}->{'Values'};
+
+ # "Empty" values does not mean anything for Image and Binary fields
+ next if $cf_type =~ /^(?:Image|Binary)$/;
+
+ $arg = 'Values';
+ $args{'ARGS'}->{'Values'} = undef;
+ }
+
+ my @values = ();
+ if ( ref $args{'ARGS'}->{ $arg } eq 'ARRAY' ) {
+ @values = @{ $args{'ARGS'}->{$arg} };
+ } elsif ( $cf_type =~ /text/i ) { # Both Text and Wikitext
+ @values = ($args{'ARGS'}->{$arg});
+ } else {
+ @values = split /\n/, $args{'ARGS'}->{ $arg };
+ }
+
+ if ( ( $cf_type eq 'Freeform' && !$cf->SingleValue ) || $cf_type =~ /text/i ) {
+ s/\r//g foreach @values;
+ }
+ @values = grep defined && $_ ne '', @values;
+
+ if ( $arg eq 'AddValue' || $arg eq 'Value' ) {
+ foreach my $value (@values) {
+ my ( $val, $msg ) = $args{'Object'}->AddCustomFieldValue(
+ Field => $cf->id,
+ Value => $value
+ );
+ push ( @results, $msg );
+ }
+ }
+ elsif ( $arg eq 'Upload' ) {
+ my $value_hash = _UploadedFile( $args{'Prefix'} . $arg ) or next;
+ my ( $val, $msg ) = $args{'Object'}->AddCustomFieldValue(
+ %$value_hash,
+ Field => $cf,
+ );
+ push ( @results, $msg );
+ }
+ elsif ( $arg eq 'DeleteValues' ) {
+ foreach my $value ( @values ) {
+ my ( $val, $msg ) = $args{'Object'}->DeleteCustomFieldValue(
+ Field => $cf,
+ Value => $value,
+ );
+ push ( @results, $msg );
+ }
+ }
+ elsif ( $arg eq 'DeleteValueIds' ) {
+ foreach my $value ( @values ) {
+ my ( $val, $msg ) = $args{'Object'}->DeleteCustomFieldValue(
+ Field => $cf,
+ ValueId => $value,
+ );
+ push ( @results, $msg );
+ }
+ }
+ elsif ( $arg eq 'Values' && !$cf->Repeated ) {
+ my $cf_values = $args{'Object'}->CustomFieldValues( $cf->id );
+
+ my %values_hash;
+ foreach my $value ( @values ) {
+ # build up a hash of values that the new set has
+ $values_hash{$value} = 1;
+ next if $cf_values->HasEntry( $value );
+
+ my ( $val, $msg ) = $args{'Object'}->AddCustomFieldValue(
+ Field => $cf,
+ Value => $value
+ );
+ push ( @results, $msg );
+ }
+
+ $cf_values->RedoSearch;
+ while ( my $cf_value = $cf_values->Next ) {
+ next if $values_hash{ $cf_value->Content };
+
+ my ( $val, $msg ) = $args{'Object'}->DeleteCustomFieldValue(
+ Field => $cf,
+ Value => $cf_value->Content
+ );
+ push ( @results, $msg);
+ }
+ }
+ elsif ( $arg eq 'Values' ) {
+ my $cf_values = $args{'Object'}->CustomFieldValues( $cf->id );
+
+ # keep everything up to the point of difference, delete the rest
+ my $delete_flag;
+ foreach my $old_cf (@{$cf_values->ItemsArrayRef}) {
+ if (!$delete_flag and @values and $old_cf->Content eq $values[0]) {
+ shift @values;
+ next;
+ }
+
+ $delete_flag ||= 1;
+ $old_cf->Delete;
+ }
+
+ # now add/replace extra things, if any
+ foreach my $value ( @values ) {
+ my ( $val, $msg ) = $args{'Object'}->AddCustomFieldValue(
+ Field => $cf,
+ Value => $value
+ );
+ push ( @results, $msg );
+ }
+ }
+ else {
+ push ( @results, loc("User asked for an unknown update type"
+ ." for custom field [_1] for [_2] object #[_3]",
+ $cf->Name, ref $args{'Object'}, $args{'Object'}->id )
+ );
+ }
}
+ return @results;
}
# {{{ sub ProcessTicketWatchers
diff --git a/rt/lib/RT/Interface/Web/Handler.pm b/rt/lib/RT/Interface/Web/Handler.pm
index ce9222586..e41490f8f 100644
--- a/rt/lib/RT/Interface/Web/Handler.pm
+++ b/rt/lib/RT/Interface/Web/Handler.pm
@@ -117,7 +117,8 @@ sub InitSessionDir {
# Clean up our umask to protect session files
umask(0077);
- if ($CGI::MOD_PERL) {
+ if ($CGI::MOD_PERL and $CGI::MOD_PERL < 1.9908 ) {
+
chown( Apache->server->uid, Apache->server->gid,
$RT::MasonSessionDir )
if Apache->server->can('uid');
diff --git a/rt/lib/RT/Link_Overlay.pm b/rt/lib/RT/Link_Overlay.pm
index c870ee4c4..a45cb2a61 100644
--- a/rt/lib/RT/Link_Overlay.pm
+++ b/rt/lib/RT/Link_Overlay.pm
@@ -268,8 +268,8 @@ sub TargetURI {
=cut
sub TargetObj {
- my $self = shift;
- return $self->TargetURI->Object;
+ my $self = shift;
+ return $self->TargetURI->Object;
}
# }}}
diff --git a/rt/lib/RT/Links_Overlay.pm b/rt/lib/RT/Links_Overlay.pm
index 203b60a9e..e1927f842 100644
--- a/rt/lib/RT/Links_Overlay.pm
+++ b/rt/lib/RT/Links_Overlay.pm
@@ -154,19 +154,17 @@ sub Next {
my $self = shift;
my $Link = $self->SUPER::Next();
- if ((defined($Link)) and (ref($Link))) {
- # Skip links to local objects thast are deleted
- if ($Link->TargetURI->IsLocal and UNIVERSAL::isa($Link->TargetObj,"RT::Ticket")
- and $Link->TargetObj->__Value('status') eq "deleted") {
- return $self->Next;
- } elsif ($Link->BaseURI->IsLocal and UNIVERSAL::isa($Link->BaseObj,"RT::Ticket")
- and $Link->BaseObj->__Value('status') eq "deleted") {
- return $self->Next;
- } else {
- return $Link;
- }
+ return $Link unless $Link && ref $Link;
+
+ # Skip links to local objects thast are deleted
+ if ( $Link->TargetURI->IsLocal and UNIVERSAL::isa($Link->TargetObj,"RT::Ticket")
+ and $Link->TargetObj->__Value('status') eq "deleted") {
+ return $self->Next;
+ } elsif ($Link->BaseURI->IsLocal and UNIVERSAL::isa($Link->BaseObj,"RT::Ticket")
+ and $Link->BaseObj->__Value('status') eq "deleted") {
+ return $self->Next;
} else {
- return undef;
+ return $Link;
}
}
diff --git a/rt/lib/RT/Record.pm b/rt/lib/RT/Record.pm
index 341d88bfc..1b622739e 100755
--- a/rt/lib/RT/Record.pm
+++ b/rt/lib/RT/Record.pm
@@ -748,7 +748,7 @@ DBIx::SearchBuilder::Record
sub _ClassAccessible {
my $self = shift;
- return $_TABLE_ATTR->{ref($self)};
+ return $_TABLE_ATTR->{ ref($self) || $self };
}
=head2 _Accessible COLUMN ATTRIBUTE
@@ -817,7 +817,10 @@ sub _EncodeLOB {
elsif ($RT::DropLongAttachments) {
# drop the attachment on the floor
- $RT::Logger->info( "$self: Dropped an attachment of size " . length($Body) . "\n" . "It started: " . substr( $Body, 0, 60 ) . "\n" );
+ $RT::Logger->info( "$self: Dropped an attachment of size "
+ . length($Body) . "\n"
+ . "It started: " . substr( $Body, 0, 60 ) . "\n"
+ );
return ("none", "Large attachment dropped" );
}
}
@@ -1459,7 +1462,7 @@ sub _NewTransaction {
$self->_SetLastUpdated;
- if ( defined $args{'TimeTaken'} ) {
+ if ( defined $args{'TimeTaken'} and $self->can('_UpdateTimeTaken')) {
$self->_UpdateTimeTaken( $args{'TimeTaken'} );
}
if ( $RT::UseTransactionBatch and $transaction ) {
@@ -1634,10 +1637,11 @@ sub _AddCustomFieldValue {
);
}
}
+ $values->RedoSearch if $i; # redo search if have deleted at least one value
}
my ( $old_value, $old_content );
- if ( $old_value = $cf->ValuesForObject($self)->First ) {
+ if ( $old_value = $values->First ) {
$old_content = $old_value->Content();
return (1) if( $old_content eq $args{'Value'} && $old_value->LargeContent eq $args{'LargeContent'});;
}
diff --git a/rt/lib/RT/Template_Overlay.pm b/rt/lib/RT/Template_Overlay.pm
index bfff0f03e..575333ef1 100644
--- a/rt/lib/RT/Template_Overlay.pm
+++ b/rt/lib/RT/Template_Overlay.pm
@@ -103,23 +103,11 @@ sub _Accessible {
sub _Set {
my $self = shift;
-
- # use super::value or we get acl blocked
- if ( ( defined $self->SUPER::_Value('Queue') )
- && ( $self->SUPER::_Value('Queue') == 0 ) )
- {
- unless ( $self->CurrentUser->HasRight( Object => $RT::System, Right => 'ModifyTemplate') ) {
- return ( 0, $self->loc('Permission Denied') );
- }
- }
- else {
-
- unless ( $self->CurrentUserHasQueueRight('ModifyTemplate') ) {
- return ( 0, $self->loc('Permission Denied') );
- }
+
+ unless ( $self->CurrentUserHasQueueRight('ModifyTemplate') ) {
+ return ( 0, $self->loc('Permission Denied') );
}
- return ( $self->SUPER::_Set(@_) );
-
+ return $self->SUPER::_Set( @_ );
}
# }}}
@@ -147,26 +135,12 @@ ok($t2->QueueObj->id, "Got the template's queue objet");
=cut
sub _Value {
-
my $self = shift;
- my $field = shift;
-
-
- #If the current user doesn't have ACLs, don't let em at it.
- #use super::value or we get acl blocked
- if ( ( !defined $self->__Value('Queue') )
- || ( $self->__Value('Queue') == 0 ) )
- {
- unless ( $self->CurrentUser->HasRight( Object => $RT::System, Right => 'ShowTemplate') ) {
- return (undef);
- }
- }
- else {
- unless ( $self->CurrentUserHasQueueRight('ShowTemplate') ) {
- return (undef);
- }
+
+ unless ( $self->CurrentUserHasQueueRight('ShowTemplate') ) {
+ return undef;
}
- return ( $self->__Value($field) );
+ return $self->__Value( @_ );
}
@@ -183,18 +157,12 @@ Load a template, either by number or by name
sub Load {
my $self = shift;
my $identifier = shift;
+ return undef unless $identifier;
- if ( !$identifier ) {
- return (undef);
- }
-
- if ( $identifier !~ /\D/ ) {
- $self->SUPER::LoadById($identifier);
- }
- else {
- $self->LoadByCol( 'Name', $identifier );
-
+ if ( $identifier =~ /\D/ ) {
+ return $self->LoadByCol( 'Name', $identifier );
}
+ return $self->LoadById( $identifier );
}
# }}}
@@ -260,32 +228,32 @@ sub Create {
Content => undef,
Queue => 0,
Description => '[no description]',
- Type => 'Action', #By default, template are 'Action' templates
- Name => undef,
+ Type => 'Action', #By default, template are 'Action' templates
+ Name => undef,
@_
);
- if ( !$args{'Queue'} ) {
+ unless ( $args{'Queue'} ) {
unless ( $self->CurrentUser->HasRight(Right =>'ModifyTemplate', Object => $RT::System) ) {
- return (undef);
+ return ( undef, $self->loc('Permission denied') );
}
$args{'Queue'} = 0;
}
else {
my $QueueObj = new RT::Queue( $self->CurrentUser );
- $QueueObj->Load( $args{'Queue'} ) || return ( 0, $self->loc('Invalid queue') );
+ $QueueObj->Load( $args{'Queue'} ) || return ( undef, $self->loc('Invalid queue') );
unless ( $QueueObj->CurrentUserHasRight('ModifyTemplate') ) {
- return (undef);
+ return ( undef, $self->loc('Permission denied') );
}
$args{'Queue'} = $QueueObj->Id;
}
my $result = $self->SUPER::Create(
- Content => $args{'Content'},
- Queue => $args{'Queue'},
+ Content => $args{'Content'},
+ Queue => $args{'Queue'},
Description => $args{'Description'},
- Name => $args{'Name'}
+ Name => $args{'Name'},
);
return ($result);
@@ -340,15 +308,16 @@ sub Parse {
my $self = shift;
#We're passing in whatever we were passed. it's destined for _ParseContent
- my $content = $self->_ParseContent(@_);
+ my ($content, $msg) = $self->_ParseContent(@_);
+ return ( 0, $msg ) unless defined $content;
#Lets build our mime Entity
my $parser = MIME::Parser->new();
- # On some situations TMPDIR is non-writable. sad but true.
- $parser->output_to_core(1);
- $parser->tmp_to_core(1);
+ # On some situations TMPDIR is non-writable. sad but true.
+ $parser->output_to_core(1);
+ $parser->tmp_to_core(1);
#If someone includes a message, don't extract it
$parser->extract_nested_messages(1);
@@ -363,15 +332,13 @@ sub Parse {
### Should we forgive normally-fatal errors?
$parser->ignore_errors(1);
$self->{'MIMEObj'} = eval { $parser->parse_data($content) };
- my $error = ( $@ || $parser->last_error );
-
- if ($error) {
- $RT::Logger->error("$error");
+ if ( my $error = $@ || $parser->last_error ) {
+ $RT::Logger->error( "$error" );
return ( 0, $error );
}
# Unfold all headers
- $self->{'MIMEObj'}->head->unfold();
+ $self->{'MIMEObj'}->head->unfold;
return ( 1, $self->loc("Template parsed") );
@@ -400,9 +367,13 @@ sub _ParseContent {
$T::rtname = $RT::rtname;
*T::loc = sub { $T::Ticket->loc(@_) };
+ my $content = $self->Content;
+ unless ( defined $content ) {
+ return ( undef, $self->loc("Permissions denied") );
+ }
+
# We need to untaint the content of the template, since we'll be working
# with it
- my $content = $self->Content();
$content =~ s/^(.*)$/$1/;
my $template = Text::Template->new(
TYPE => 'STRING',
@@ -413,11 +384,11 @@ sub _ParseContent {
my $retval = $template->fill_in( PACKAGE => 'T', BROKEN => sub {
my (%args) = @_;
$RT::Logger->error("Template parsing error: $args{error}")
- unless $args{error} =~ /^Died at /; # ignore intentional die()
+ unless $args{error} =~ /^Died at /; # ignore intentional die()
$is_broken++;
- return undef;
+ return undef;
} );
- return undef if $is_broken;
+ return ( undef, $self->loc('Template parsing error') ) if $is_broken;
# MIME::Parser has problems dealing with high-bit utf8 data.
Encode::_utf8_off($retval);
diff --git a/rt/lib/RT/Ticket_Overlay.pm b/rt/lib/RT/Ticket_Overlay.pm
index 1ab91e28e..a294dcafd 100644
--- a/rt/lib/RT/Ticket_Overlay.pm
+++ b/rt/lib/RT/Ticket_Overlay.pm
@@ -240,7 +240,7 @@ sub Load {
#If it's a local URI, turn it into a ticket id
- if ( $id =~ /^$RT::TicketBaseURI(\d+)$/ ) {
+ if ( $RT::TicketBaseURI && $id =~ /^$RT::TicketBaseURI(\d+)$/ ) {
$id = $1;
}
@@ -440,9 +440,9 @@ sub Create {
if ( $args{'Due'} ) {
$Due->Set( Format => 'ISO', Value => $args{'Due'} );
}
- elsif ( $QueueObj->DefaultDueIn ) {
+ elsif ( my $due_in = $QueueObj->DefaultDueIn ) {
$Due->SetToNow;
- $Due->AddDays( $QueueObj->DefaultDueIn );
+ $Due->AddDays( $due_in );
}
my $Starts = new RT::Date( $self->CurrentUser );
@@ -1315,6 +1315,10 @@ sub AddWatcher {
@_
);
+ # XXX, FIXME, BUG: if only email is provided then we only check
+ # for ModifyTicket right, but must try to get PrincipalId and
+ # check Watch* rights too if user exist
+
# {{{ Check ACLS
#If the watcher we're trying to add is for the current user
if ( $self->CurrentUser->PrincipalId eq $args{'PrincipalId'}) {
@@ -1979,11 +1983,16 @@ sub SetQueue {
)
)
{
- $self->Untake();
+ my $clone = RT::Ticket->new( $RT::SystemUser );
+ $clone->Load( $self->Id );
+ unless ( $clone->Id ) {
+ return ( 0, $self->loc("Couldn't load copy of ticket #[_1].", $self->Id) );
+ }
+ my ($status, $msg) = $clone->SetOwner( $RT::Nobody->Id, 'Force' );
+ $RT::Logger->error("Couldn't set owner on queue change: $msg") unless $status;
}
return ( $self->_Set( Field => 'Queue', Value => $NewQueueObj->Id() ) );
-
}
# }}}
@@ -3018,21 +3027,21 @@ sub SetOwner {
$RT::Handle->Commit();
- my ( $trans, $msg, undef ) = $self->_NewTransaction(
- Type => $Type,
- Field => 'Owner',
- NewValue => $NewOwnerObj->Id,
- OldValue => $OldOwnerObj->Id,
- TimeTaken => 0 );
+ ($val, $msg) = $self->_NewTransaction(
+ Type => $Type,
+ Field => 'Owner',
+ NewValue => $NewOwnerObj->Id,
+ OldValue => $OldOwnerObj->Id,
+ TimeTaken => 0,
+ );
- if ($trans) {
+ if ( $val ) {
$msg = $self->loc( "Owner changed from [_1] to [_2]",
$OldOwnerObj->Name, $NewOwnerObj->Name );
# TODO: make sure the trans committed properly
}
- return ( $trans, $msg );
-
+ return ( $val, $msg );
}
# }}}
@@ -3679,15 +3688,15 @@ sub CustomFieldValues {
my $field = shift;
if ( $field and $field !~ /^\d+$/ ) {
my $cf = RT::CustomField->new( $self->CurrentUser );
- $cf->LoadByNameAndQueue( Name => $field, Queue => $self->QueueObj->Id );
+ $cf->LoadByNameAndQueue( Name => $field, Queue => $self->Queue );
unless ( $cf->id ) {
- $cf->LoadByNameAndQueue( Name => $field, Queue => '0' );
+ $cf->LoadByNameAndQueue( Name => $field, Queue => 0 );
}
- $field = $cf->id;
- unless ( $field =~ /^\d+$/ ) {
- # If we didn't find a valid cfid, give up.
- return RT::CustomFieldValues->new($self->CurrentUser);
+ unless ( $cf->id ) {
+ # If we didn't find a valid cfid, give up.
+ return RT::CustomFieldValues->new($self->CurrentUser);
}
+ $field = $cf->id;
}
return $self->SUPER::CustomFieldValues($field);
}
diff --git a/rt/lib/RT/Tickets_Overlay.pm b/rt/lib/RT/Tickets_Overlay.pm
index 1c31f3ffd..98a6ac61a 100644
--- a/rt/lib/RT/Tickets_Overlay.pm
+++ b/rt/lib/RT/Tickets_Overlay.pm
@@ -272,7 +272,7 @@ sub _EnumLimit {
or $op eq "!=";
my $meta = $FIELDS{$field};
- if ( defined $meta->[1] ) {
+ if ( defined $meta->[1] && defined $value && $value !~ /^\d+$/ ) {
my $class = "RT::" . $meta->[1];
my $o = $class->new( $sb->CurrentUser );
$o->Load($value);
@@ -450,11 +450,8 @@ sub _DateLimit {
die "Incorrect Meta Data for $field"
unless ( defined $meta->[1] );
- use POSIX 'strftime';
-
my $date = RT::Date->new( $sb->CurrentUser );
$date->Set( Format => 'unknown', Value => $value );
- my $time = $date->Unix;
if ( $op eq "=" ) {
@@ -462,10 +459,10 @@ sub _DateLimit {
# particular single day. in the database, we need to check for >
# and < the edges of that day.
- my $daystart = strftime( "%Y-%m-%d %H:%M",
- gmtime( $time - ( $time % 86400 ) ) );
- my $dayend = strftime( "%Y-%m-%d %H:%M",
- gmtime( $time + ( 86399 - $time % 86400 ) ) );
+ $date->SetToMidnight( Timezone => 'server' );
+ my $daystart = $date->ISO;
+ $date->AddDay;
+ my $dayend = $date->ISO;
$sb->_OpenParen;
@@ -488,11 +485,10 @@ sub _DateLimit {
}
else {
- $value = strftime( "%Y-%m-%d %H:%M", gmtime($time) );
$sb->_SQLLimit(
FIELD => $meta->[1],
OPERATOR => $op,
- VALUE => $value,
+ VALUE => $date->ISO,
@rest,
);
}
@@ -545,7 +541,6 @@ sub _TransDateLimit {
my $date = RT::Date->new( $sb->CurrentUser );
$date->Set( Format => 'unknown', Value => $value );
- my $time = $date->Unix;
$sb->_OpenParen;
if ( $op eq "=" ) {
@@ -554,10 +549,10 @@ sub _TransDateLimit {
# particular single day. in the database, we need to check for >
# and < the edges of that day.
- my $daystart = strftime( "%Y-%m-%d %H:%M",
- gmtime( $time - ( $time % 86400 ) ) );
- my $dayend = strftime( "%Y-%m-%d %H:%M",
- gmtime( $time + ( 86399 - $time % 86400 ) ) );
+ $date->SetToMidnight( Timezone => 'server' );
+ my $daystart = $date->ISO;
+ $date->AddDay;
+ my $dayend = $date->ISO;
$sb->_SQLLimit(
ALIAS => $sb->{_sql_transalias},
@@ -587,7 +582,7 @@ sub _TransDateLimit {
ALIAS => $sb->{_sql_transalias},
FIELD => 'Created',
OPERATOR => $op,
- VALUE => $value,
+ VALUE => $date->ISO,
CASESENSITIVE => 0,
@rest
);
@@ -918,7 +913,7 @@ sub _WatcherJoin {
# RT doesn't allow to add groups as members of the
# ticket roles, so we just hide entries in CGM table
# with MemberId == GroupId from results
- my $groupmembers = $self->SUPER::Limit(
+ $self->SUPER::Limit(
LEFTJOIN => $groupmembers,
FIELD => 'GroupId',
OPERATOR => '!=',
@@ -1413,12 +1408,11 @@ sub LimitQueue {
@_
);
- #TODO VALUE should also take queue names and queue objects
- #TODO FIXME why are we canonicalizing to name, not id, robrt?
- if ( $args{VALUE} =~ /^\d+$/ ) {
+ #TODO VALUE should also take queue objects
+ if ( defined $args{'VALUE'} && $args{'VALUE'} !~ /^\d+$/ ) {
my $queue = new RT::Queue( $self->CurrentUser );
$queue->Load( $args{'VALUE'} );
- $args{VALUE} = $queue->Name;
+ $args{'VALUE'} = $queue->Id;
}
# What if they pass in an Id? Check for isNum() and convert to
@@ -1428,10 +1422,10 @@ sub LimitQueue {
$self->Limit(
FIELD => 'Queue',
- VALUE => $args{VALUE},
+ VALUE => $args{'VALUE'},
OPERATOR => $args{'OPERATOR'},
DESCRIPTION => join(
- ' ', $self->loc('Queue'), $args{'OPERATOR'}, $args{VALUE},
+ ' ', $self->loc('Queue'), $args{'OPERATOR'}, $args{'VALUE'},
),
);
diff --git a/rt/lib/RT/Transaction_Overlay.pm b/rt/lib/RT/Transaction_Overlay.pm
index f6647c647..d49e8d34e 100644
--- a/rt/lib/RT/Transaction_Overlay.pm
+++ b/rt/lib/RT/Transaction_Overlay.pm
@@ -149,7 +149,13 @@ sub Create {
my $id = $self->SUPER::Create(%params);
$self->Load($id);
- $self->_Attach( $args{'MIMEObj'} ) if defined $args{'MIMEObj'};
+ if ( defined $args{'MIMEObj'} ) {
+ my ($id, $msg) = $self->_Attach( $args{'MIMEObj'} );
+ unless ( $id ) {
+ $RT::Logger->error("Couldn't add attachment: $msg");
+ return ( 0, $self->loc("Couldn't add attachment") );
+ }
+ }
#Provide a way to turn off scrips if we need to
@@ -471,11 +477,11 @@ sub _Attach {
}
my $Attachment = new RT::Attachment( $self->CurrentUser );
- $Attachment->Create(
+ my ($id, $msg) = $Attachment->Create(
TransactionId => $self->Id,
Attachment => $MIMEObject
);
- return ( $Attachment, $self->loc("Attachment created") );
+ return ( $Attachment, $msg || $self->loc("Attachment created") );
}
@@ -934,25 +940,29 @@ sub TicketObj {
sub OldValue {
my $self = shift;
- if (my $type = $self->__Value('ReferenceType')) {
- my $Object = $type->new($self->CurrentUser);
- $Object->Load($self->__Value('OldReference'));
- return $Object->Content;
+ if ( my $type = $self->__Value('ReferenceType')
+ and my $id = $self->__Value('OldReference') )
+ {
+ my $Object = $type->new($self->CurrentUser);
+ $Object->Load( $id );
+ return $Object->Content;
}
else {
- return $self->__Value('OldValue');
+ return $self->__Value('OldValue');
}
}
sub NewValue {
my $self = shift;
- if (my $type = $self->__Value('ReferenceType')) {
- my $Object = $type->new($self->CurrentUser);
- $Object->Load($self->__Value('NewReference'));
- return $Object->Content;
+ if ( my $type = $self->__Value('ReferenceType')
+ and my $id = $self->__Value('NewReference') )
+ {
+ my $Object = $type->new($self->CurrentUser);
+ $Object->Load( $id );
+ return $Object->Content;
}
else {
- return $self->__Value('NewValue');
+ return $self->__Value('NewValue');
}
}
diff --git a/rt/lib/RT/URI.pm b/rt/lib/RT/URI.pm
index fdbe63bea..e4e533aee 100644
--- a/rt/lib/RT/URI.pm
+++ b/rt/lib/RT/URI.pm
@@ -143,7 +143,7 @@ sub FromURI {
unless ($self->Resolver->ParseURI($uri)) {
$RT::Logger->warning("Resolver ".ref($self->Resolver)." could not parse $uri");
- $self->{resolver} = undef; # clear resolver
+ $self->{resolver} = RT::URI::base->new( $self->CurrentUser ); # clear resolver
return (undef);
}
diff --git a/rt/lib/RT/URI/base.pm b/rt/lib/RT/URI/base.pm
index 56bfef33a..49d080833 100644
--- a/rt/lib/RT/URI/base.pm
+++ b/rt/lib/RT/URI/base.pm
@@ -81,12 +81,8 @@ sub ParseObject {
my $self = shift;
my $obj = shift;
$self->{'uri'} = "unknown-object:".ref($obj);
-
-
}
-
-
sub ParseURI {
my $self = shift;
my $uri = shift;
diff --git a/rt/lib/RT/URI/fsck_com_rt.pm b/rt/lib/RT/URI/fsck_com_rt.pm
index ba98b1df4..bb2c188f9 100644
--- a/rt/lib/RT/URI/fsck_com_rt.pm
+++ b/rt/lib/RT/URI/fsck_com_rt.pm
@@ -128,7 +128,7 @@ is($uri->LocalURIPrefix. "/ticket/1" , $uri->URIForObject($ticket));
sub URIForObject {
my $self = shift;
my $obj = shift;
- return ($self->LocalURIPrefix."/".$self->ObjectType($obj)."/". $obj->Id);
+ return ($self->LocalURIPrefix ."/". $self->ObjectType($obj) ."/". $obj->Id);
}
@@ -143,12 +143,12 @@ sub ParseURI {
my $self = shift;
my $uri = shift;
- if ( $uri =~ /^(\d+)$/ ) {
+ if ( $uri =~ /^\d+$/ ) {
my $ticket = RT::Ticket->new( $self->CurrentUser );
- $ticket->Load($uri);
+ $ticket->Load( $uri );
$self->{'uri'} = $ticket->URI;
$self->{'object'} = $ticket;
- return($ticket->id);
+ return ($ticket->id);
}
else {
$self->{'uri'} = $uri;
@@ -156,9 +156,8 @@ sub ParseURI {
#If it's a local URI, load the ticket object and return its URI
if ( $self->IsLocal ) {
-
my $local_uri_prefix = $self->LocalURIPrefix;
- if ( $self->{'uri'} =~ /^$local_uri_prefix\/(.*?)\/(\d+)$/i ) {
+ if ( $self->{'uri'} =~ /^\Q$local_uri_prefix\E\/(.*?)\/(\d+)$/i ) {
my $type = $1;
my $id = $2;
@@ -192,9 +191,9 @@ Returns undef otherwise.
sub IsLocal {
my $self = shift;
- my $local_uri_prefix = $self->LocalURIPrefix;
- if ($self->{'uri'} =~ /^$local_uri_prefix/i) {
- return 1;
+ my $local_uri_prefix = $self->LocalURIPrefix;
+ if ( $self->{'uri'} =~ /^\Q$local_uri_prefix/i ) {
+ return 1;
}
else {
return undef;
diff --git a/rt/lib/t/regression/06-mime_decoding.t b/rt/lib/t/regression/06-mime_decoding.t
new file mode 100644
index 000000000..98af18513
--- /dev/null
+++ b/rt/lib/t/regression/06-mime_decoding.t
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Test::More tests => 5;
+
+use_ok("RT");
+
+RT::LoadConfig();
+RT::Init();
+
+use_ok('RT::I18N');
+
+diag q{'=' char in a leading part before an encoded part} if $ENV{TEST_VERBOSE};
+{
+ my $str = 'key="plain"; key="=?UTF-8?B?0LzQvtC5X9GE0LDQudC7LmJpbg==?="';
+ is(
+ RT::I18N::DecodeMIMEWordsToUTF8($str),
+ 'key="plain"; key="мой_файл.bin"',
+ "right decoding"
+ );
+}
+
+diag q{not compliant with standards, but MUAs send such field when attachment has non-ascii in name}
+ if $ENV{TEST_VERBOSE};
+{
+ my $str = 'attachment; filename="=?UTF-8?B?0LzQvtC5X9GE0LDQudC7LmJpbg==?="';
+ is(
+ RT::I18N::DecodeMIMEWordsToUTF8($str),
+ 'attachment; filename="мой_файл.bin"',
+ "right decoding"
+ );
+}
+
+diag q{'=' char in a trailing part after an encoded part} if $ENV{TEST_VERBOSE};
+{
+ my $str = 'attachment; filename="=?UTF-8?B?0LzQvtC5X9GE0LDQudC7LmJpbg==?="; some_prop="value"';
+ is(
+ RT::I18N::DecodeMIMEWordsToUTF8($str),
+ 'attachment; filename="мой_файл.bin"; some_prop="value"',
+ "right decoding"
+ );
+}
+
diff --git a/rt/lib/t/regression/06mailgateway.t b/rt/lib/t/regression/06mailgateway.t
index 1bdc38a69..12b55885e 100644
--- a/rt/lib/t/regression/06mailgateway.t
+++ b/rt/lib/t/regression/06mailgateway.t
@@ -52,13 +52,19 @@ rt-mailgate - Mail interface to RT3.
=cut
use strict;
-use Test::More tests => 57;
+use Test::More tests => 104;
+
use RT;
RT::LoadConfig();
RT::Init();
use RT::I18N;
+
+no warnings 'once';
+my $url = join( ':', grep $_, "http://localhost", $RT::WebPort ) . $RT::WebPath ."/";
+
# Make sure that when we call the mailgate wrong, it tempfails
+$! = '';
ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url http://this.test.for.non-connection.is.expected.to.generate.an.error"), "Opened the mailgate - The error below is expected - $@");
print MAIL <<EOF;
From: root\@localhost
@@ -75,7 +81,8 @@ is ( $? >> 8, 75, "The error message above is expected The mail gateway exited w
# {{{ Test new ticket creation by root who is privileged and superuser
-ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@");
+$! = '';
+ok(open(MAIL, "|$RT::BinPath/rt-mailgate --debug --url $url --queue general --action correspond"), "Opened the mailgate - $!");
print MAIL <<EOF;
From: root\@localhost
To: rt\@$RT::rtname
@@ -103,7 +110,8 @@ ok ($tick->Subject eq 'This is a test of new ticket creation', "Created the tick
# {{{This is a test of new ticket creation as an unknown user
-ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@");
+$! = '';
+ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $url --queue general --action correspond"), "Opened the mailgate - $!");
print MAIL <<EOF;
From: doesnotexist\@$RT::rtname
To: rt\@$RT::rtname
@@ -139,7 +147,8 @@ my ($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'CreateTicket');
ok ($val, "Granted everybody the right to create tickets - $msg");
-ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@");
+$! = '';
+ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $url --queue general --action correspond"), "Opened the mailgate - $!");
print MAIL <<EOF;
From: doesnotexist\@$RT::rtname
To: rt\@$RT::rtname
@@ -172,7 +181,8 @@ ok( $u->Id != 0, " user does not exist and was created by ticket submission");
#($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'CreateTicket');
#ok ($val, "Granted everybody the right to create tickets - $msg");
-ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@");
+$! = '';
+ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $url --queue general --action correspond"), "Opened the mailgate - $!");
print MAIL <<EOF;
From: doesnotexist-2\@$RT::rtname
To: rt\@$RT::rtname
@@ -197,7 +207,8 @@ ok( $u->Id == 0, " user does not exist and was not created by ticket corresponde
($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'ReplyToTicket');
ok ($val, "Granted everybody the right to reply to tickets - $msg");
-ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@");
+$! = '';
+ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $url --queue general --action correspond"), "Opened the mailgate - $!");
print MAIL <<EOF;
From: doesnotexist-2\@$RT::rtname
To: rt\@$RT::rtname
@@ -223,7 +234,8 @@ ok( $u->Id != 0, " user exists and was created by ticket correspondence submissi
#($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'CreateTicket');
#ok ($val, "Granted everybody the right to create tickets - $msg");
-ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action comment"), "Opened the mailgate - $@");
+$! = '';
+ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $url --queue general --action comment"), "Opened the mailgate - $!");
print MAIL <<EOF;
From: doesnotexist-3\@$RT::rtname
To: rt\@$RT::rtname
@@ -248,7 +260,8 @@ ok( $u->Id == 0, " user does not exist and was not created by ticket comment sub
($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'CommentOnTicket');
ok ($val, "Granted everybody the right to reply to tickets - $msg");
-ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action comment"), "Opened the mailgate - $@");
+$! = '';
+ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $url --queue general --action comment"), "Opened the mailgate - $!");
print MAIL <<EOF;
From: doesnotexist-3\@$RT::rtname
To: rt\@$RT::rtname
@@ -289,7 +302,8 @@ $entity->attach(Path => $LOGO_FILE,
Encoding => 'base64');
# Create a ticket with a binary attachment
-ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@");
+$! = '';
+ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $url --queue general --action correspond"), "Opened the mailgate - $!");
$entity->print(\*MAIL);
@@ -334,7 +348,7 @@ use LWP::UserAgent;
# Grab the binary attachment via the web ui
my $ua = LWP::UserAgent->new();
-my $full_url = "$RT::WebURL/Ticket/Attachment/".$attachment->TransactionId."/".$attachment->id."/bplogo.gif?&user=root&pass=password";
+my $full_url = "$url/Ticket/Attachment/".$attachment->TransactionId."/".$attachment->id."/bplogo.gif?&user=root&pass=password";
my $r = $ua->get( $full_url);
@@ -347,7 +361,8 @@ is($file, $r->content, 'The attachment isn\'t screwed up in download');
# {{{ Simple I18N testing
-ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@");
+$! = '';
+ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $url --queue general --action correspond"), "Opened the mailgate - $!");
print MAIL <<EOF;
From: root\@localhost
@@ -381,7 +396,8 @@ is ($unitick->Transactions->First->Content, $unitick->Transactions->First->Attac
ok($unitick->Transactions->First->Attachments->First->Content =~ /$unistring/i, $unitick->Id." appears to be unicode ". $unitick->Transactions->First->Attachments->First->Id);
# supposedly I18N fails on the second message sent in.
-ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@");
+$! = '';
+ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $url --queue general --action correspond"), "Opened the mailgate - $!");
print MAIL <<EOF;
From: root\@localhost
@@ -420,20 +436,28 @@ ok ($tick2->Transactions->First->Content =~ $unistring, "It appears to be unicod
($val,$msg) = $g->PrincipalObj->RevokeRight(Right => 'CreateTicket');
ok ($val, $msg);
-=for later
+##=for later
-TODO: {
+SKIP: {
+skip "Advanced mailgate actions require an unsafe configuration", 47 unless $RT::UnsafeEmailCommands;
+
+#create new queue to be shure we don't mess with rights
+use RT::Queue;
+my $queue = RT::Queue->new($RT::SystemUser);
+my ($qid) = $queue->Create( Name => 'ext-mailgate');
+ok( $qid, 'queue created for ext-mailgate tests' );
# {{{ Check take and resolve actions
# create ticket that is owned by nobody
use RT::Ticket;
$tick = RT::Ticket->new($RT::SystemUser);
-my ($id) = $tick->Create( Queue => 'general', Subject => 'test');
+my ($id) = $tick->Create( Queue => 'ext-mailgate', Subject => 'test');
ok( $id, 'new ticket created' );
is( $tick->Owner, $RT::Nobody->Id, 'owner of the new ticket is nobody' );
-ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action take"), "Opened the mailgate - $@");
+$! = '';
+ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $url --queue ext-mailgate --action take"), "Opened the mailgate - $!");
print MAIL <<EOF;
From: root\@localhost
Subject: [$RT::rtname \#$id] test
@@ -450,15 +474,15 @@ is( $tick->OwnerObj->EmailAddress, 'root@localhost', 'successfuly take ticket vi
# check that there is no text transactions writen
is( $tick->Transactions->Count, 2, 'no superfluous transactions');
-my $status = '';
+my $status;
($status, $msg) = $tick->SetOwner( $RT::Nobody->Id, 'Force' );
ok( $status, 'successfuly changed owner: '. ($msg||'') );
is( $tick->Owner, $RT::Nobody->Id, 'set owner back to nobody');
- local $TODO = "Advanced mailgate actions require an unsafe configuration";
-ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action take-correspond"), "Opened the mailgate - $@");
+$! = '';
+ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue ext-mailgate --action take-correspond"), "Opened the mailgate - $@");
print MAIL <<EOF;
From: root\@localhost
Subject: [$RT::rtname \#$id] correspondence
@@ -468,17 +492,21 @@ EOF
close (MAIL);
is ($? >> 8, 0, "The mail gateway exited normally");
+DBIx::SearchBuilder::Record::Cachable->FlushCache;
+
$tick = RT::Ticket->new($RT::SystemUser);
$tick->Load( $id );
-is( $tick->Id, $id, 'load correct ticket');
+is( $tick->Id, $id, "load correct ticket #$id");
is( $tick->OwnerObj->EmailAddress, 'root@localhost', 'successfuly take ticket via email');
my $txns = $tick->Transactions;
$txns->Limit( FIELD => 'Type', VALUE => 'Correspond');
-is( $txns->Last->Subject, "[$RT::rtname \#$id] correspondence", 'successfuly add correspond within take via email' );
+$txns->OrderBy( FIELD => 'id', ORDER => 'DESC' );
# +1 because of auto open
is( $tick->Transactions->Count, 6, 'no superfluous transactions');
+is( $txns->First->Subject, "[$RT::rtname \#$id] correspondence", 'successfuly add correspond within take via email' );
-ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action resolve"), "Opened the mailgate - $@");
+$! = '';
+ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $url --queue ext-mailgate --action resolve --debug"), "Opened the mailgate - $!");
print MAIL <<EOF;
From: root\@localhost
Subject: [$RT::rtname \#$id] test
@@ -495,10 +523,115 @@ is( $tick->Id, $id, 'load correct ticket');
is( $tick->Status, 'resolved', 'successfuly resolved ticket via email');
is( $tick->Transactions->Count, 7, 'no superfluous transactions');
-};
+use RT::User;
+my $user = RT::User->new( $RT::SystemUser );
+my ($uid) = $user->Create( Name => 'ext-mailgate',
+ EmailAddress => 'ext-mailgate@localhost',
+ Privileged => 1,
+ Password => 'qwe123',
+ );
+ok( $uid, 'user created for ext-mailgate tests' );
+ok( !$user->HasRight( Right => 'OwnTicket', Object => $queue ), "User can't own ticket" );
+
+$tick = RT::Ticket->new($RT::SystemUser);
+($id) = $tick->Create( Queue => $qid, Subject => 'test' );
+ok( $id, 'create new ticket' );
+
+$! = '';
+ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $url --queue ext-mailgate --action take"), "Opened the mailgate - $!");
+print MAIL <<EOF;
+From: ext-mailgate\@localhost
+Subject: [example.com \#$id] test
+
+EOF
+close (MAIL);
+is ( $? >> 8, 0, "mailgate exited normally" );
+DBIx::SearchBuilder::Record::Cachable->FlushCache;
+
+cmp_ok( $tick->Owner, '!=', $user->id, "we didn't change owner" );
+
+($status, $msg) = $user->PrincipalObj->GrantRight( Object => $queue, Right => 'ReplyToTicket' );
+ok( $status, "successfuly granted right: $msg" );
+my $ace_id = $status;
+ok( $user->HasRight( Right => 'ReplyToTicket', Object => $tick ), "User can reply to ticket" );
+
+$! = '';
+ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $url --queue ext-mailgate --action correspond-take"), "Opened the mailgate - $!");
+print MAIL <<EOF;
+From: ext-mailgate\@localhost
+Subject: [example.com \#$id] test
+
+correspond-take
+EOF
+close (MAIL);
+is ( $? >> 8, 0, "mailgate exited normally" );
+DBIx::SearchBuilder::Record::Cachable->FlushCache;
+
+cmp_ok( $tick->Owner, '!=', $user->id, "we didn't change owner" );
+is( $tick->Transactions->Count, 3, "one transactions added" );
+
+$! = '';
+ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $url --queue ext-mailgate --action take-correspond"), "Opened the mailgate - $!");
+print MAIL <<EOF;
+From: ext-mailgate\@localhost
+Subject: [example.com \#$id] test
+
+correspond-take
+EOF
+close (MAIL);
+is ( $? >> 8, 0, "mailgate exited normally" );
+DBIx::SearchBuilder::Record::Cachable->FlushCache;
+
+cmp_ok( $tick->Owner, '!=', $user->id, "we didn't change owner" );
+is( $tick->Transactions->Count, 3, "no transactions added, user can't take ticket first" );
+
+# revoke ReplyToTicket right
+use RT::ACE;
+my $ace = RT::ACE->new($RT::SystemUser);
+$ace->Load( $ace_id );
+$ace->Delete;
+my $acl = RT::ACL->new($RT::SystemUser);
+$acl->Limit( FIELD => 'RightName', VALUE => 'ReplyToTicket' );
+$acl->LimitToObject( $RT::System );
+while( my $ace = $acl->Next ) {
+ $ace->Delete;
+}
+
+ok( !$user->HasRight( Right => 'ReplyToTicket', Object => $tick ), "User can't reply to ticket any more" );
+
+
+my $group = RT::Group->new( $RT::SystemUser );
+ok( $group->LoadQueueRoleGroup( Queue => $qid, Type=> 'Owner' ), "load queue owners role group" );
+$ace = RT::ACE->new( $RT::SystemUser );
+($ace_id, $msg) = $group->PrincipalObj->GrantRight( Right => 'ReplyToTicket', Object => $queue );
+ok( $ace_id, "Granted queue owners role group with ReplyToTicket right" );
+
+($status, $msg) = $user->PrincipalObj->GrantRight( Object => $queue, Right => 'OwnTicket' );
+ok( $status, "successfuly granted right: $msg" );
+($status, $msg) = $user->PrincipalObj->GrantRight( Object => $queue, Right => 'TakeTicket' );
+ok( $status, "successfuly granted right: $msg" );
+
+$! = '';
+ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $url --queue ext-mailgate --action take-correspond"), "Opened the mailgate - $!");
+print MAIL <<EOF;
+From: ext-mailgate\@localhost
+Subject: [example.com \#$id] test
+
+take-correspond with reply right granted to owner role
+EOF
+close (MAIL);
+is ( $? >> 8, 0, "mailgate exited normally" );
+DBIx::SearchBuilder::Record::Cachable->FlushCache;
+
+$tick->Load( $id );
+is( $tick->Owner, $user->id, "we changed owner" );
+ok( $user->HasRight( Right => 'ReplyToTicket', Object => $tick ), "owner can reply to ticket" );
+is( $tick->Transactions->Count, 5, "transactions added" );
-=cut
# }}}
+};
+
1;
+
diff --git a/rt/lib/t/regression/22search_tix_by_txn.t b/rt/lib/t/regression/22search_tix_by_txn.t
index 958273c5c..f43fc6401 100644
--- a/rt/lib/t/regression/22search_tix_by_txn.t
+++ b/rt/lib/t/regression/22search_tix_by_txn.t
@@ -1,6 +1,13 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
#use Test::More tests => 26;
use Test::More qw/no_plan/;
+
$ENV{'TZ'} = 'GMT';
+
use RT;
RT::LoadConfig();
RT::Init();
@@ -29,4 +36,5 @@ is($txnobj->CreatedObj->ISO,'2005-08-05 20:00:56');
$tix->FromSQL(qq{Updated = "2005-08-05" AND Subject = "$SUBJECT"});
is( $tix->Count, 1);
-1;
+
+exit 0;
diff --git a/rt/lib/t/regression/23-web_attachments.t b/rt/lib/t/regression/23-web_attachments.t
new file mode 100644
index 000000000..d9d1a8440
--- /dev/null
+++ b/rt/lib/t/regression/23-web_attachments.t
@@ -0,0 +1,60 @@
+#!/usr/bin/perl -w
+use strict;
+
+use Test::More tests => 15;
+use RT;
+RT::LoadConfig;
+RT::Init;
+use Test::WWW::Mechanize;
+
+$RT::WebURL ||= 0; # avoid stupid warning
+my $BaseURL = $RT::WebURL;
+use constant LogoFile => $RT::MasonComponentRoot .'/NoAuth/images/bplogo.gif';
+use constant FaviconFile => $RT::MasonComponentRoot .'/NoAuth/images/favicon.png';
+
+my $queue_name = 'General';
+
+my $m = Test::WWW::Mechanize->new;
+isa_ok($m, 'Test::WWW::Mechanize');
+
+$m->get_ok( $BaseURL."?user=root;pass=password" );
+$m->content_like(qr/Logout/, 'we did log in');
+
+my $qid;
+{
+ $m->content =~ /<SELECT\s+NAME\s*="Queue">.*?<OPTION\s+VALUE="(\d+)"\s*\d*>\s*\Q$queue_name\E\s*<\/OPTION>/msi;
+ ok( $qid = $1, "found id of the '$queue_name' queue");
+}
+
+$m->form_number(1);
+$m->field('Queue', $qid);
+$m->submit;
+is($m->status, 200, "request successful");
+$m->content_like(qr/Create a new ticket/, 'ticket create page');
+
+$m->form('TicketCreate');
+$m->field('Subject', 'Attachments test');
+$m->field('Attach', LogoFile);
+$m->field('Content', 'Some content');
+$m->submit;
+is($m->status, 200, "request successful");
+
+$m->content_like(qr/Attachments test/, 'we have subject on the page');
+$m->content_like(qr/Some content/, 'and content');
+$m->content_like(qr/Download bplogo\.gif/, 'page has file name');
+
+$m->follow_link_ok({text => 'Reply'}, "reply to the ticket");
+$m->form('TicketUpdate');
+$m->field('Attach', LogoFile);
+$m->click('AddMoreAttach');
+is($m->status, 200, "request successful");
+
+$m->form('TicketUpdate');
+$m->field('Attach', FaviconFile);
+$m->field('UpdateContent', 'Message');
+$m->click('SubmitTicket');
+is($m->status, 200, "request successful");
+
+$m->content_like(qr/Download bplogo\.gif/, 'page has file name');
+$m->content_like(qr/Download favicon\.png/, 'page has file name');
+
diff --git a/rt/sbin/rt-setup-database.in b/rt/sbin/rt-setup-database.in
index 06c04dcf1..741c695cf 100644
--- a/rt/sbin/rt-setup-database.in
+++ b/rt/sbin/rt-setup-database.in
@@ -563,6 +563,10 @@ sub insert_data {
next;
}
my ( $return, $msg ) = $new_entry->Create(%$item);
+ unless( $return ) {
+ print "(Error: $msg)\n";
+ next;
+ }
foreach my $value ( @{$values} ) {
my ( $eval, $emsg ) = $new_entry->AddValue(%$value);
diff --git a/rt/sbin/rt-test-dependencies.in b/rt/sbin/rt-test-dependencies.in
index ce1f44150..d867fc2e4 100644
--- a/rt/sbin/rt-test-dependencies.in
+++ b/rt/sbin/rt-test-dependencies.in
@@ -255,7 +255,7 @@ DBD::Pg 1.41
.
$deps{'SQLITE'} = [ _( << '.') ];
-DBD::SQLite
+DBD::SQLite 1.00
.
if ($args{'download'}) {