diff options
72 files changed, 3744 insertions, 2163 deletions
diff --git a/rt/Changelog b/rt/Changelog index 2da390e97..a01bc89c1 100644 --- a/rt/Changelog +++ b/rt/Changelog @@ -1,9 +1,789 @@ ------------------------------------------------------------------------ -r3729 | jesse | 2005-08-28 15:45:06 -0400 (Sun, 28 Aug 2005) | 1 line +r4386 | jesse | 2006-01-12 10:52:27 -0500 (Thu, 12 Jan 2006) | 1 line Changed paths: - A /rt/tags/3.4.4 (from /rt/branches/3.4-RELEASE:3728) + A /rt/tags/3.4.5 (from /rt/branches/3.4-RELEASE:4385) + +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: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/releng.cnf + + r22371@truegrounds: jesse | 2006-01-12 16:25:39 +0100 + * This be 3.4.5 + +------------------------------------------------------------------------ +r4384 | jesse | 2006-01-12 10:48:13 -0500 (Thu, 12 Jan 2006) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/sbin/rt-setup-database.in + + r22370@truegrounds: jesse | 2006-01-12 16:25:19 +0100 + * Silence a warning introduced by a patch to fix oracle installs + +------------------------------------------------------------------------ +r4383 | jesse | 2006-01-12 10:48:03 -0500 (Thu, 12 Jan 2006) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/t/regression/22search_tix_by_txn.t + + r22369@truegrounds: jesse | 2006-01-12 16:23:48 +0100 + * Forced timezone for a date test to GMT, since it's searching on subjective dates + +------------------------------------------------------------------------ +r4372 | jesse | 2006-01-11 12:22:05 -0500 (Wed, 11 Jan 2006) | 7 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/I18N/de.po + + r22357@truegrounds: jesse | 2006-01-11 18:20:01 +0100 + RT-Ticket: 7222 + RT-Status: resolved + RT-Update: correspond + + * German translation update from Dirk Pape + +------------------------------------------------------------------------ +r4307 | jesse | 2005-12-13 16:54:03 -0500 (Tue, 13 Dec 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/releng.cnf + + r20436@truegrounds: jesse | 2005-12-13 16:51:41 -0500 + * 3.4.5rc3 + +------------------------------------------------------------------------ +r4306 | jesse | 2005-12-13 16:53:52 -0500 (Tue, 13 Dec 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/I18N.pm + + r20435@truegrounds: jesse | 2005-12-13 16:51:06 -0500 + * warning silencing for a log message + +------------------------------------------------------------------------ +r4303 | alexmv | 2005-12-13 13:58:20 -0500 (Tue, 13 Dec 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/Tickets_Overlay.pm + + r7707@zoq-fot-pik: chmrr | 2005-12-13 13:54:45 -0500 + * I don't think this join to Attachments is needed or useful -- it means you don't see changes with no attachments + +------------------------------------------------------------------------ +r4220 | jesse | 2005-12-02 17:59:40 -0500 (Fri, 02 Dec 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/releng.cnf + + r19695@truegrounds: jesse | 2005-12-02 17:58:50 -0500 + * RC2 + +------------------------------------------------------------------------ +r4216 | jesse | 2005-12-02 17:02:21 -0500 (Fri, 02 Dec 2005) | 8 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/html/Search/Build.html + + r19688@truegrounds: jesse | 2005-12-02 17:01:28 -0500 + RT-Ticket: 6962 + RT-Status: resolved + RT-Update: correspond + + * Patch from Rolf Grossmann to fix some bogosity in the query builder + + +------------------------------------------------------------------------ +r4212 | jesse | 2005-12-01 23:14:40 -0500 (Thu, 01 Dec 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/html/Elements/Header + A /rt/branches/3.4-RELEASE/html/NoAuth/printrt.css + + r19674@truegrounds: jesse | 2005-12-01 23:13:50 -0500 + * Added a print stylesheet from Koos van den Hout + +------------------------------------------------------------------------ +r4175 | jesse | 2005-11-30 16:03:40 -0500 (Wed, 30 Nov 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/releng.cnf + + r19588@truegrounds: jesse | 2005-11-30 16:00:10 -0500 + * Bump to 3.4.5rc1 + +------------------------------------------------------------------------ +r4154 | jesse | 2005-11-29 18:55:07 -0500 (Tue, 29 Nov 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/html/Elements/ShowCustomFields + M /rt/branches/3.4-RELEASE/html/Ticket/Elements/EditCustomFields + + r19545@truegrounds: jesse | 2005-11-29 18:51:07 -0500 + * A pair of new callbacks to make it easier to hide away a custom field on ticket display/edit + +------------------------------------------------------------------------ +r4120 | robert | 2005-11-19 22:52:28 -0500 (Sat, 19 Nov 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/Tickets_Overlay.pm + + r4186@bear: rspier | 2005-11-19 19:51:38 -0800 + typo fix: s/load/Load/ + +------------------------------------------------------------------------ +r4096 | alexmv | 2005-11-14 18:34:44 -0500 (Mon, 14 Nov 2005) | 7 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/CustomFieldValues.pm + + r7182@zoq-fot-pik: chmrr | 2005-11-14 18:34:13 -0500 + RT-Ticket: 6994 + RT-Status: resolved + RT-Update: correspond + * Sort custom vield values by SortOrder, then *Name*, then id; patch + from Troy Davis <troy@nack.net> + +------------------------------------------------------------------------ +r4092 | alexmv | 2005-11-14 17:35:40 -0500 (Mon, 14 Nov 2005) | 6 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/EmailParser.pm + M /rt/branches/3.4-RELEASE/lib/RT/Interface/Email.pm + + r7175@zoq-fot-pik: chmrr | 2005-11-14 17:35:03 -0500 + RT-Ticket: 7010 + RT-Status: resolved + RT-Update: correspond + * Treat our email addresses as case-insensitive + +------------------------------------------------------------------------ +r4090 | ruz | 2005-11-14 17:02:36 -0500 (Mon, 14 Nov 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE/html/Elements/QueryString + +* /Elements/QueryString now supports ARRAY refs, this allow us to handle + multiple arguments with the same name, this behaviour is consistent with + how HTML::Mason handle arguments +------------------------------------------------------------------------ +r4089 | ruz | 2005-11-14 16:57:36 -0500 (Mon, 14 Nov 2005) | 1 line +Changed paths: + M /rt/branches/3.4-RELEASE/etc/schema.mysql + +* revert back mysql.schema, commited by accident +------------------------------------------------------------------------ +r4087 | ruz | 2005-11-14 16:50:12 -0500 (Mon, 14 Nov 2005) | 2 lines +Changed paths: + M /rt/branches/3.4-RELEASE/etc/schema.mysql + M /rt/branches/3.4-RELEASE/html/Elements/Callback + +* fix: really hide hidden paths from callbacks +* fix: fetch data from the %cache by one key when store data with other +------------------------------------------------------------------------ +r4086 | alexmv | 2005-11-14 16:49:33 -0500 (Mon, 14 Nov 2005) | 8 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/etc/RT_Config.pm.in + M /rt/branches/3.4-RELEASE/lib/RT/Interface/Email.pm + + r7165@zoq-fot-pik: chmrr | 2005-11-14 16:49:07 -0500 + RT-Ticket: 7131 + RT-Status: resolved + RT-Update: correspond + * The $RT::rtname regex should be case insensitive for matching + subjects; thanks to Phil Smith III <psmith@levanta.com> for the + catch + +------------------------------------------------------------------------ +r4085 | alexmv | 2005-11-14 16:30:12 -0500 (Mon, 14 Nov 2005) | 7 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/html/NoAuth/webrt.css + + r7163@zoq-fot-pik: chmrr | 2005-11-14 16:29:36 -0500 + RT-Ticket: 6507 + RT-Status: resolved + RT-Update: correspond + * Standardize fonts to "Verdana, Arial, Helvetica, sans-serif"; + variant of patch from Maxime Henrion <mux@FreeBSD.org> + +------------------------------------------------------------------------ +r4084 | alexmv | 2005-11-14 15:51:27 -0500 (Mon, 14 Nov 2005) | 7 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/Record.pm + + r7161@zoq-fot-pik: chmrr | 2005-11-14 15:50:56 -0500 + RT-Ticket: 6458 + RT-Status: resolved + RT-Update: correspond + * Removed extra return argument from _AddLink, thanks to Todd Chapman + <todd@chaka.net> + +------------------------------------------------------------------------ +r4083 | alexmv | 2005-11-14 15:43:24 -0500 (Mon, 14 Nov 2005) | 6 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/Ticket_Overlay.pm + + r7159@zoq-fot-pik: chmrr | 2005-11-14 15:42:48 -0500 + RT-Ticket: 6457 + RT-Status: resolved + RT-Update: correspond + * Typo in Ticket_Overlay.pm, found by Todd Chapman <todd@chaka.net> + +------------------------------------------------------------------------ +r4081 | alexmv | 2005-11-14 14:59:42 -0500 (Mon, 14 Nov 2005) | 7 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/html/Elements/CollectionAsTable/Row + + r7155@zoq-fot-pik: chmrr | 2005-11-14 14:59:06 -0500 + RT-Ticket: 7020 + RT-Status: resolved + RT-Update: correspond + * Actually make use of 'style' if it is provided; thanks to Kelly + F. Hickel <kfh@mqsoftware.com> + +------------------------------------------------------------------------ +r4080 | alexmv | 2005-11-14 14:55:17 -0500 (Mon, 14 Nov 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/I18N/fr.po + + r7152@zoq-fot-pik: chmrr | 2005-11-14 14:54:43 -0500 + * Restore rightful .po headers on new french translation + +------------------------------------------------------------------------ +r4079 | alexmv | 2005-11-14 14:52:57 -0500 (Mon, 14 Nov 2005) | 6 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/t/regression/09record_cf_api.t + + r7148@zoq-fot-pik: chmrr | 2005-11-14 14:51:58 -0500 + RT-Ticket: 6559 + RT-Status: resolved + RT-Update: correspond + * Tests from Todd Chapman for loading CF from a wrong queue + +------------------------------------------------------------------------ +r4078 | jesse | 2005-11-14 14:50:54 -0500 (Mon, 14 Nov 2005) | 7 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/I18N/fr.po + + r18904@truegrounds: jesse | 2005-11-14 14:49:25 -0500 + RT-Ticket: 7105 + RT-Status: resolved + RT-Update: correspond + + Updated French translation from Jerome Fenal + +------------------------------------------------------------------------ +r4077 | alexmv | 2005-11-14 14:20:49 -0500 (Mon, 14 Nov 2005) | 6 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/I18N/ja.po + + r7146@zoq-fot-pik: chmrr | 2005-11-14 14:20:03 -0500 + RT-Ticket: 7090 + RT-Status: resolved + RT-Update: correspond + * New Japanese .po, from Daisuke Maki <daisuke@wafu.ne.jp> + +------------------------------------------------------------------------ +r4076 | jesse | 2005-11-14 14:18:48 -0500 (Mon, 14 Nov 2005) | 8 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/t/regression/06mailgateway.t + + r18900@truegrounds: jesse | 2005-11-14 13:57:34 -0500 + RT-Ticket: 7122 + RT-Status: resolved + RT-Update: correspond + + * Patch from Todd Chapman to honor changed a $rtname variable when running + the test suite + +------------------------------------------------------------------------ +r4075 | jesse | 2005-11-14 14:18:36 -0500 (Mon, 14 Nov 2005) | 8 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/t/regression/07acl.t + + r18899@truegrounds: jesse | 2005-11-14 13:40:24 -0500 + RT-Ticket: 7121 + RT-Status: resolved + RT-Update: correspond + + * Patch from Todd Chapman to make the web based acl tests honor RT::WebPath + + +------------------------------------------------------------------------ +r4074 | alexmv | 2005-11-14 13:52:00 -0500 (Mon, 14 Nov 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/etc/RT_Config.pm.in + M /rt/branches/3.4-RELEASE/lib/RT/Interface/Email.pm + + r7140@zoq-fot-pik: chmrr | 2005-11-14 13:51:14 -0500 + * Better bounce handling, from Abhijit Menon-Sen <ams@oryx.com> + +------------------------------------------------------------------------ +r4073 | jesse | 2005-11-14 13:37:01 -0500 (Mon, 14 Nov 2005) | 16 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/sbin/rt-setup-database.in + + r18895@truegrounds: jesse | 2005-11-14 13:35:29 -0500 + RT-Ticket: 7136 + RT-Status: resolved + RT-Update: correspond + + Stuart Knight reports: + + As part of the "initdb" processing, the scripts went through and created a new database user, in my case called RT3. + + When it came time to create the tables, the script was still logged on as the dba user "system", so all of tables/sequences were created under "system"'s schema. + + I followed through the rt-setup-database script, and spotted that there was a database disconnect, followed by an immediate reconnect, as the same user. (in the case of Oracle this still being the "dba" account) + + Putting an extra validation check in here for Oracle, and then connecting as the intended database user fixed up the issue. + + +------------------------------------------------------------------------ +r4072 | alexmv | 2005-11-14 13:33:43 -0500 (Mon, 14 Nov 2005) | 8 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/Principal_Overlay.pm + M /rt/branches/3.4-RELEASE/lib/t/regression/07rights.t + + r7135@zoq-fot-pik: chmrr | 2005-11-14 13:32:23 -0500 + RT-Ticket: 7101 + RT-Status: resolved + RT-Update: correspond + + * Don't modify EquivObjects arrayref, thanks to Todd Chapman + + +------------------------------------------------------------------------ +r4071 | jesse | 2005-11-14 13:21:29 -0500 (Mon, 14 Nov 2005) | 10 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/etc/RT_Config.pm.in + M /rt/branches/3.4-RELEASE/lib/RT/Ticket_Overlay.pm + A /rt/branches/3.4-RELEASE/lib/t/regression/14linking.t + + r18893@truegrounds: jesse | 2005-11-14 13:19:52 -0500 + RT-Ticket: 7128 + RT-Status: resolved + RT-Update: correspond + + A big patch from Todd Chapman (with lots of juicy tests) to optionally + create two transactions when you create a link. (Also, this means that we'll + run scrips twice). This is off by default in RT 3.4 + + +------------------------------------------------------------------------ +r4069 | jesse | 2005-11-14 12:55:46 -0500 (Mon, 14 Nov 2005) | 7 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/html/Elements/ScrubHTML + + r18888@truegrounds: jesse | 2005-11-14 12:54:25 -0500 + RT-Ticket: 7048 + RT-Status: resolved + RT-Update: correspond + + * Akos Torok pointed out that our HTML scrubber removed "PRE" tags from HTML + +------------------------------------------------------------------------ +r4065 | jesse | 2005-11-14 12:44:41 -0500 (Mon, 14 Nov 2005) | 9 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/README + + r18880@truegrounds: jesse | 2005-11-14 12:42:48 -0500 + RT-Ticket: 7081 + RT-Status: resolved + RT-Update: correspond + + * Added a note to the readme warning users to clean out the + mason cache on upgrades - Ruslan + + +------------------------------------------------------------------------ +r4064 | alexmv | 2005-11-14 12:43:06 -0500 (Mon, 14 Nov 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/I18N/ru.po + + r7122@zoq-fot-pik: chmrr | 2005-11-14 12:42:37 -0500 + * Updated russian translation from Andrew Kornilov <andy@eva.dp.ua> + +------------------------------------------------------------------------ +r4063 | jesse | 2005-11-14 12:38:59 -0500 (Mon, 14 Nov 2005) | 8 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/html/Elements/RT__Ticket/ColumnMap + + r18877@truegrounds: jesse | 2005-11-14 12:37:37 -0500 + RT-Ticket: 7087 + RT-Status: resolved + RT-Update: correspond + + Displayed linked tickets in search results were inverted + + +------------------------------------------------------------------------ +r4061 | robert | 2005-11-13 00:14:57 -0500 (Sun, 13 Nov 2005) | 9 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/html/Elements/Header + M /rt/branches/3.4-RELEASE/html/Ticket/Elements/ShowTransactionAttachments + + r4124@bear: rspier | 2005-11-12 21:08:45 -0800 + Undefined Warning Elimination: + - index.html passes in $session{'home_refresh_interval'} which can be null. + + r4125@bear: rspier | 2005-11-12 21:14:28 -0800 + Undefined Warning Elimination: + GetHeader will return undefined when the header doesn't exist. (This is _good_, as that is different than empty.) + But.. =~ warns. + +------------------------------------------------------------------------ +r4060 | jesse | 2005-11-11 15:27:56 -0500 (Fri, 11 Nov 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/sbin/rt-test-dependencies.in + + r18722@truegrounds: jesse | 2005-11-11 15:26:34 -0500 + * SB 1.35 dependency + +------------------------------------------------------------------------ +r4059 | jesse | 2005-11-11 00:12:49 -0500 (Fri, 11 Nov 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/Groups_Overlay.pm + + r18716@truegrounds: jesse | 2005-11-11 00:10:08 -0500 + * fix from ruslan for fallout from his WhoHaveRight refactoring + +------------------------------------------------------------------------ +r4035 | jesse | 2005-11-06 17:15:18 -0500 (Sun, 06 Nov 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/releng.cnf + + r18412@truegrounds: jesse | 2005-11-06 17:13:58 -0500 + * Bumped to 3.4.5pre1 + +------------------------------------------------------------------------ +r4034 | jesse | 2005-11-06 17:15:06 -0500 (Sun, 06 Nov 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/Groups_Overlay.pm + M /rt/branches/3.4-RELEASE/lib/RT/Principal_Overlay.pm + M /rt/branches/3.4-RELEASE/lib/RT/Users_Overlay.pm + + r18411@truegrounds: jesse | 2005-11-06 17:13:33 -0500 + * Patch to significantly improve performance on "WhoHaveRight" from Ruslan. + +------------------------------------------------------------------------ +r4033 | jesse | 2005-11-06 17:13:38 -0500 (Sun, 06 Nov 2005) | 4 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/Attachments_Overlay.pm + + r18409@truegrounds: jesse | 2005-11-06 17:11:57 -0500 + * Fix to attachment ordering when you ask for a txn's attachments. + (Postgres doesn't default to ordering by id, so we were getting the wrong txn content) + +------------------------------------------------------------------------ +r4011 | pdh | 2005-11-01 00:43:02 -0500 (Tue, 01 Nov 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE/html/Ticket/Elements/ShowTransactionAttachments + +Add a missing space, before the Style Police come after me. + + +------------------------------------------------------------------------ +r4010 | pdh | 2005-10-31 19:21:57 -0500 (Mon, 31 Oct 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE/html/Ticket/Elements/ShowTransactionAttachments + +Make $RT::MaxInlineBody work properly. + + +------------------------------------------------------------------------ +r3989 | alexmv | 2005-10-24 17:26:18 -0400 (Mon, 24 Oct 2005) | 4 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/html/Elements/EditCustomField + M /rt/branches/3.4-RELEASE/html/Elements/EditCustomFieldSelect + + r6881@zoq-fot-pik: chmrr | 2005-10-24 17:25:14 -0400 + * Ensure custom fields keep correct fallback values; for instance, if + "add another attachment" is clicked + +------------------------------------------------------------------------ +r3967 | jesse | 2005-10-14 17:10:24 -0400 (Fri, 14 Oct 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/Ticket_Overlay.pm + + r17368@hualien: jesse | 2005-10-14 17:08:10 -0400 + * When Robert made the change to how CustomFieldValues works, he broke the API. Fixed + +------------------------------------------------------------------------ +r3966 | jesse | 2005-10-14 17:10:11 -0400 (Fri, 14 Oct 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/Tickets_Overlay.pm + + r17360@hualien: jesse | 2005-10-14 15:21:46 -0400 + * Perltidy + +------------------------------------------------------------------------ +r3958 | ruz | 2005-10-13 08:40:24 -0400 (Thu, 13 Oct 2005) | 1 line +Changed paths: + M /rt/branches/3.4-RELEASE/html/User/Elements/Tabs + +* new callback in html/User/Elements/Tabs +------------------------------------------------------------------------ +r3957 | ruz | 2005-10-13 08:37:47 -0400 (Thu, 13 Oct 2005) | 1 line +Changed paths: + M /rt/branches/3.4-RELEASE/lib/RT/Tickets_Overlay_SQL.pm + +* code comments +------------------------------------------------------------------------ +r3948 | ruz | 2005-10-10 20:01:50 -0400 (Mon, 10 Oct 2005) | 1 line +Changed paths: + M /rt/branches/3.4-RELEASE/lib/RT/Action/SendEmail.pm + +* get rid of "not a number" warning +------------------------------------------------------------------------ +r3945 | ruz | 2005-10-10 15:47:29 -0400 (Mon, 10 Oct 2005) | 4 lines +Changed paths: + M /rt/branches/3.4-RELEASE/lib/RT/Action/SendEmail.pm + +backport of the 3.5-TESTING@3543 +Changes: +* fix attachments ordering + +------------------------------------------------------------------------ +r3944 | ruz | 2005-10-10 15:27:36 -0400 (Mon, 10 Oct 2005) | 15 lines +Changed paths: + M /rt/branches/3.4-RELEASE/lib/RT/Ticket_Overlay.pm + M /rt/branches/3.4-RELEASE/lib/RT/Tickets_Overlay.pm + M /rt/branches/3.4-RELEASE/lib/RT/Tickets_Overlay_SQL.pm + A /rt/branches/3.4-RELEASE/lib/t/regression/22search_tix_by_watcher.t + +backport of the 3.5-TESTING@3943 +Changes +* fix for search by owner's fields, now owner is WATCHERFIELD instead of ENUM +* added backward compatible variant for Owner, next searches should work +** Owner = '<id>' +** Owner != '<id>' +** Owner = '<name>' +** Owner != '<name>' +** for other operators or if subfield(subkey) is specified search works + as for other watchers +* Fix for searches like "Cc.Name <> 'SomeBody'", was skipping tickets + with empty Cc list. +* get rid of some unint warnings +* test suite for all corner cases + +------------------------------------------------------------------------ +r3938 | robert | 2005-10-07 00:20:15 -0400 (Fri, 07 Oct 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/Ticket_Overlay.pm + + r3995@bear: rspier | 2005-10-06 21:19:24 -0700 + [fsck.com #7067] - If we can't find a customfield that the user is allowed to see on a ticket, don't return any values, (when specifying a custom field) + +------------------------------------------------------------------------ +r3901 | alexmv | 2005-10-03 14:15:35 -0400 (Mon, 03 Oct 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/I18N/cs.po + M /rt/branches/3.4-RELEASE/lib/RT/I18N/da.po + M /rt/branches/3.4-RELEASE/lib/RT/I18N/de.po + M /rt/branches/3.4-RELEASE/lib/RT/I18N/en.po + M /rt/branches/3.4-RELEASE/lib/RT/I18N/es.po + M /rt/branches/3.4-RELEASE/lib/RT/I18N/fi.po + M /rt/branches/3.4-RELEASE/lib/RT/I18N/fr.po + M /rt/branches/3.4-RELEASE/lib/RT/I18N/he.po + M /rt/branches/3.4-RELEASE/lib/RT/I18N/hu.po + M /rt/branches/3.4-RELEASE/lib/RT/I18N/id.po + M /rt/branches/3.4-RELEASE/lib/RT/I18N/it.po + M /rt/branches/3.4-RELEASE/lib/RT/I18N/ja.po + M /rt/branches/3.4-RELEASE/lib/RT/I18N/nl.po + M /rt/branches/3.4-RELEASE/lib/RT/I18N/no.po + M /rt/branches/3.4-RELEASE/lib/RT/I18N/pl.po + M /rt/branches/3.4-RELEASE/lib/RT/I18N/pt_br.po + M /rt/branches/3.4-RELEASE/lib/RT/I18N/ru.po + M /rt/branches/3.4-RELEASE/lib/RT/I18N/zh_cn.po + M /rt/branches/3.4-RELEASE/lib/RT/I18N/zh_tw.po + + r6568@zoq-fot-pik: chmrr | 2005-10-03 14:14:49 -0400 + * Header fixes in PO files to include correct RT version + +------------------------------------------------------------------------ +r3900 | alexmv | 2005-10-03 13:32:45 -0400 (Mon, 03 Oct 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/I18N/es.po + + r6566@zoq-fot-pik: chmrr | 2005-10-03 13:28:24 -0400 + * Updated spanish translation, thanks to Carlos Velasco + +------------------------------------------------------------------------ +r3896 | alexmv | 2005-09-30 15:56:31 -0400 (Fri, 30 Sep 2005) | 8 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/html/Approvals/Elements/PendingMyApproval + + r6558@zoq-fot-pik: chmrr | 2005-09-30 15:56:06 -0400 + RT-Ticket: 7029 + RT-Status: resolved + RT-Update: correspond + + * Applied missing limit for AdminCcs, from Todd Chapman + + +------------------------------------------------------------------------ +r3895 | alexmv | 2005-09-30 15:19:57 -0400 (Fri, 30 Sep 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/html/Elements/RT__Ticket/ColumnMap + + r6555@zoq-fot-pik: chmrr | 2005-09-30 15:18:22 -0400 + * Link to the *other* end of the link, not the one that is us + +------------------------------------------------------------------------ +r3894 | alexmv | 2005-09-30 15:19:46 -0400 (Fri, 30 Sep 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/html/Search/Elements/BuildFormatString + + r6554@zoq-fot-pik: chmrr | 2005-09-30 15:16:47 -0400 + * Remove unused and deprecated code path (bugs 6605, 7008) + +------------------------------------------------------------------------ +r3893 | jesse | 2005-09-28 13:27:29 -0400 (Wed, 28 Sep 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE/html/Search/Results.tsv + +Switch from ->CustomFields to ->TicketCustomFields to stop using a deprecated API. + Thanks to T.J. Maciak + +------------------------------------------------------------------------ +r3892 | robert | 2005-09-28 12:16:03 -0400 (Wed, 28 Sep 2005) | 8 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/Action/SendEmail.pm + + r3945@bear: rspier | 2005-09-28 09:15:08 -0700 + Performance Improvement when Sending Email using sendmailpipe - + + MIME::Entity would bog down in certain cases because of it's use of IO::Scalar during stringification. MIME::Entity will be switching to IO::ScalarArray, which will help... but RT was causing it to store into a temporary string anyway, which was silly. + + This change has MIME::Entity write directly to the pipe, which is a lot more efficient. Seems to cut out ~33% of user time. (Because we don't need to have a temporary IO::Scalar thingy around.) Also will reduce peak memory usage. + + +------------------------------------------------------------------------ +r3881 | jesse | 2005-09-23 15:39:36 -0400 (Fri, 23 Sep 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/Transaction_Overlay.pm + + r15970@hualien: jesse | 2005-09-23 15:37:43 -0400 + * Our algorithm for finding a fallback for transaction content wasn't trying hard enough. reported by John Gedeon. + +------------------------------------------------------------------------ +r3877 | alexmv | 2005-09-22 15:09:22 -0400 (Thu, 22 Sep 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/CustomField_Overlay.pm + M /rt/branches/3.4-RELEASE/lib/RT/EmailParser.pm + M /rt/branches/3.4-RELEASE/lib/RT/Link_Overlay.pm + M /rt/branches/3.4-RELEASE/lib/RT/ObjectCustomFieldValues_Overlay.pm + M /rt/branches/3.4-RELEASE/lib/RT/Queue_Overlay.pm + M /rt/branches/3.4-RELEASE/lib/RT/Record.pm + M /rt/branches/3.4-RELEASE/lib/RT/Ticket_Overlay.pm + M /rt/branches/3.4-RELEASE/lib/RT/Tickets_Overlay.pm + M /rt/branches/3.4-RELEASE/lib/RT/Transactions_Overlay.pm + + r6458@zoq-fot-pik: chmrr | 2005-09-22 15:08:37 -0400 + * Add where the faulty caller was in deprecated warnings + +------------------------------------------------------------------------ +r3855 | jesse | 2005-09-16 12:26:10 -0400 (Fri, 16 Sep 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/html/Search/Results.rdf + + r15770@hualien: jesse | 2005-09-16 12:23:15 -0400 + * The RSS feeds should come with a default subject, as feeds really want to have article titles in some clients + +------------------------------------------------------------------------ +r3854 | jesse | 2005-09-16 12:25:42 -0400 (Fri, 16 Sep 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/ACE_Overlay.pm + + r15749@hualien: jesse | 2005-09-15 11:14:56 -0400 + * It was possible to get into an infinite loop when removing a member from a group + +------------------------------------------------------------------------ +r3849 | jesse | 2005-09-13 12:07:54 -0400 (Tue, 13 Sep 2005) | 5 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/Record.pm + + r15723@hualien: jesse | 2005-09-13 12:05:40 -0400 + * When pulling data out of the database, we need to be more careful + about whether it's utf8 or not. Thanks to Ruslan Zakirov + + +------------------------------------------------------------------------ +r3847 | glasser | 2005-09-12 18:11:43 -0400 (Mon, 12 Sep 2005) | 4 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/html/Search/Build.html + + r41532@maclaurin-seven-twelve: glasser | 2005-09-12 18:04:55 -0400 + Defining subs in Mason components is dangerous, since they clash with subs defined + in every other component. + +------------------------------------------------------------------------ +r3754 | robert | 2005-09-01 17:47:36 -0400 (Thu, 01 Sep 2005) | 10 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/lib/RT/Tickets_Overlay.pm + + r3800@bear: rspier | 2005-09-01 14:46:59 -0700 + RT-Ticket: 6986 + RT-Status: resolved + RT-Update: correspond + + If we didn't generate any SQL, don't pass it to FromSQL which will reset the dirty flag and then SB won't actually run anything. + + Also, tests. + + +------------------------------------------------------------------------ +r3739 | robert | 2005-08-31 16:46:16 -0400 (Wed, 31 Aug 2005) | 3 lines +Changed paths: + M /rt/branches/3.4-RELEASE + M /rt/branches/3.4-RELEASE/configure.ac + + r3748@woof: rspier | 2005-08-31 13:41:53 -0700 + Check for invalid character (-) in mysql database names and prevent RT from allowing it to be configured. -Tagged as 3.4.4 by svn RelEng 1.0 ------------------------------------------------------------------------ r3728 | jesse | 2005-08-28 15:44:18 -0400 (Sun, 28 Aug 2005) | 3 lines Changed paths: @@ -147,6 +147,13 @@ want to read a more comprehensive installation guide at: /opt/rt3/sbin/rt-setup-database --action insert \ --datadir etc/upgrade/<version> + Clear mason cache dir: + + rm -fr /opt/rt3/var/mason_data/obj + + Stop and start web-server. + + 8 If you're upgrading from RT 2.0: Please upgrade from RT 2.0 to RT 3.2 and then follow the instructions diff --git a/rt/configure b/rt/configure index 395fc0b19..b1c5bba71 100755 --- a/rt/configure +++ b/rt/configure @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.ac Revision: 3070 . +# From configure.ac Revision: 3739 . # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for RT 3.4.4. +# Generated by GNU Autoconf 2.59 for RT 3.4.5. # # Report bugs to <rt-bugs@fsck.com>. # @@ -270,13 +270,13 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='RT' PACKAGE_TARNAME='rt' -PACKAGE_VERSION='3.4.4' -PACKAGE_STRING='RT 3.4.4' +PACKAGE_VERSION='3.4.5' +PACKAGE_STRING='RT 3.4.5' PACKAGE_BUGREPORT='rt-bugs@fsck.com' ac_unique_file="lib/RT.pm.in" ac_default_prefix=/opt/rt3 -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS rt_version_major rt_version_minor rt_version_patch INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA PERL SPEEDY_BIN exp_prefix exp_exec_prefix exp_bindir exp_sbindir exp_sysconfdir exp_mandir exp_libdir exp_datadir htmldir exp_htmldir manualdir exp_manualdir exp_localstatedir logfiledir exp_logfiledir masonstatedir exp_masonstatedir sessionstatedir exp_sessionstatedir customdir exp_customdir custometcdir exp_custometcdir customhtmldir exp_customhtmldir customlexdir exp_customlexdir customlibdir exp_customlibdir rt_layout_name BIN_OWNER LIBS_OWNER LIBS_GROUP DB_TYPE DATABASE_ENV_PREF DB_HOST DB_PORT DB_RT_HOST DB_DBA DB_DATABASE DB_RT_USER DB_RT_PASS WEB_USER WEB_GROUP RTGROUP APACHECTL RT_DEVEL_MODE RT_VERSION_MAJOR RT_VERSION_MINOR RT_VERSION_PATCH RT_PATH RT_DOC_PATH RT_LOCAL_PATH RT_LIB_PATH RT_ETC_PATH CONFIG_FILE_PATH RT_BIN_PATH RT_SBIN_PATH RT_VAR_PATH RT_MAN_PATH MASON_DATA_PATH MASON_SESSION_PATH MASON_HTML_PATH LOCAL_ETC_PATH MASON_LOCAL_HTML_PATH LOCAL_LEXICON_PATH LOCAL_LIB_PATH DESTDIR RT_LOG_PATH LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS rt_version_major rt_version_minor rt_version_patch INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AWK PERL SPEEDY_BIN exp_prefix exp_exec_prefix exp_bindir exp_sbindir exp_sysconfdir exp_mandir exp_libdir exp_datadir htmldir exp_htmldir manualdir exp_manualdir exp_localstatedir logfiledir exp_logfiledir masonstatedir exp_masonstatedir sessionstatedir exp_sessionstatedir customdir exp_customdir custometcdir exp_custometcdir customhtmldir exp_customhtmldir customlexdir exp_customlexdir customlibdir exp_customlibdir rt_layout_name BIN_OWNER LIBS_OWNER LIBS_GROUP DB_TYPE DATABASE_ENV_PREF DB_HOST DB_PORT DB_RT_HOST DB_DBA DB_DATABASE DB_RT_USER DB_RT_PASS WEB_USER WEB_GROUP RTGROUP APACHECTL RT_DEVEL_MODE RT_VERSION_MAJOR RT_VERSION_MINOR RT_VERSION_PATCH RT_PATH RT_DOC_PATH RT_LOCAL_PATH RT_LIB_PATH RT_ETC_PATH CONFIG_FILE_PATH RT_BIN_PATH RT_SBIN_PATH RT_VAR_PATH RT_MAN_PATH MASON_DATA_PATH MASON_SESSION_PATH MASON_HTML_PATH LOCAL_ETC_PATH MASON_LOCAL_HTML_PATH LOCAL_LEXICON_PATH LOCAL_LIB_PATH DESTDIR RT_LOG_PATH LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -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.4 to adapt to many kinds of systems. +\`configure' configures RT 3.4.5 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.4:";; + short | recursive ) echo "Configuration of RT 3.4.5:";; 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.4 +RT configure 3.4.5 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.4, which was +It was created by RT $as_me 3.4.5, 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=4 +rt_version_patch=5 test "x$rt_version_major" = 'x' && rt_version_major=0 test "x$rt_version_minor" = 'x' && rt_version_minor=0 @@ -1393,6 +1393,46 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 @@ -1998,6 +2038,24 @@ if test "${with_my_user_group+set}" = set; then WEB_GROUP=$my_group fi; +# Test for valid database names +if test "$DB_TYPE" == "mysql" ; then + echo "$as_me:$LINENO: checking if database name is valid" >&5 +echo $ECHO_N "checking if database name is valid... $ECHO_C" >&6 + if echo $DB_DATABASE | $AWK '/-/ { exit 1 }' ; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + { { echo "$as_me:$LINENO: error: no. database name ($DB_DATABASE) contains '-' which is not valid for mysql" >&5 +echo "$as_me: error: no. database name ($DB_DATABASE) contains '-' which is not valid for mysql" >&2;} + { (exit 1); exit 1; }; } + +fi + + + +fi + @@ -2465,7 +2523,7 @@ _ASBOX } >&5 cat >&5 <<_CSEOF -This file was extended by RT $as_me 3.4.4, which was +This file was extended by RT $as_me 3.4.5, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -2520,7 +2578,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -RT config.status 3.4.4 +RT config.status 3.4.5 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" @@ -2726,6 +2784,7 @@ s,@rt_version_patch@,$rt_version_patch,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@AWK@,$AWK,;t t s,@PERL@,$PERL,;t t s,@SPEEDY_BIN@,$SPEEDY_BIN,;t t s,@exp_prefix@,$exp_prefix,;t t diff --git a/rt/configure.ac b/rt/configure.ac index 1d0b95f51..0d38ba482 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.5 $)dnl +AC_REVISION($Revision: 1.1.1.6 $)dnl dnl Setup autoconf AC_PREREQ(2.53) -AC_INIT(RT, [3.4.4], [rt-bugs@fsck.com]) +AC_INIT(RT, [3.4.5], [rt-bugs@fsck.com]) AC_CONFIG_SRCDIR([lib/RT.pm.in]) dnl Extract RT version number components @@ -23,6 +23,7 @@ test "x$rt_version_patch" = 'x' && rt_version_patch=0 dnl Check for programs AC_PROG_INSTALL +AC_PROG_AWK AC_ARG_VAR([PERL],[Perl interpreter command]) AC_PATH_PROG([PERL], [perl], [not found]) if test "$PERL" = 'not found'; then @@ -213,6 +214,15 @@ AC_ARG_WITH(my-user-group, WEB_USER=$my_user WEB_GROUP=$my_group) +# Test for valid database names +AS_IF([ test "$DB_TYPE" == "mysql" ], + [ AC_MSG_CHECKING([if database name is valid]) + AS_IF([ echo $DB_DATABASE | $AWK '/-/ { exit 1 }' ], + [ AC_MSG_RESULT([yes]) ], + [ AC_MSG_ERROR([no. database name ($DB_DATABASE) contains '-' which is not valid for mysql]) ] + ) + ] + ) dnl Set the value of apachectl diff --git a/rt/etc/RT_Config.pm.in b/rt/etc/RT_Config.pm.in index 773e3e2dc..10d46eb50 100644 --- a/rt/etc/RT_Config.pm.in +++ b/rt/etc/RT_Config.pm.in @@ -35,16 +35,16 @@ Set($rtname , "example.com"); # token matching and that you should use only "non-capturing" parenthesis # grouping. For example: # -# Set($EmailSubjectTagRegex, qr/(?:example.com|example.org)/ ); +# Set($EmailSubjectTagRegex, qr/(?:example.com|example.org)/i ); # # and NOT # -# Set($EmailSubjectTagRegex, qr/(example.com|example.org)/ ); +# Set($EmailSubjectTagRegex, qr/(example.com|example.org)/i ); # # This setting would make RT behave exactly as it does without the # setting enabled. # -# Set($EmailSubjectTagRegex, qr/\Q$rtname\E/ ); +# Set($EmailSubjectTagRegex, qr/\Q$rtname\E/i ); @@ -210,6 +210,11 @@ Set($MailCommand , 'sendmailpipe'); # These options are good for most sendmail wrappers and workalikes Set($SendmailArguments , "-oi -t"); +# $SendmailBounceArguments defines what flags to pass to $Sendmail +# assuming RT needs to send an error (ie. bounce). + +Set($SendmailBounceArguments , '-f "<>"'); + # These arguments are good for sendmail brand sendmail 8 and newer #Set($SendmailArguments,"-oi -t -ODeliveryMode=b -OErrorMode=m"); @@ -468,6 +473,11 @@ Set($AmbiguousDayInPast , 1); @ActiveStatus = qw(new open stalled) unless @ActiveStatus; @InactiveStatus = qw(resolved rejected deleted) unless @InactiveStatus; +# Backward compatability setting. Add/Delete Link used to record one +# transaction and run one scrip. Set this value to 0 if you want +# both link transactions to have a scrip run. +Set($LinkTransactionsRun1Scrip , 1); + # }}} diff --git a/rt/html/Approvals/Elements/PendingMyApproval b/rt/html/Approvals/Elements/PendingMyApproval index f13ddf0f3..8d19399ab 100644 --- a/rt/html/Approvals/Elements/PendingMyApproval +++ b/rt/html/Approvals/Elements/PendingMyApproval @@ -77,6 +77,7 @@ $tickets->LimitOwner( VALUE => $session{'CurrentUser'}->Id ); # also consider AdminCcs as potential approvers. my $group_tickets = RT::Tickets->new( $session{'CurrentUser'} ); +$group_tickets->LimitWatcher( VALUE => $session{'CurrentUser'}->UserObj->EmailAddress, TYPE => 'AdminCc' ); my $created_before = RT::Date->new( $session{'CurrentUser'} ); my $created_after = RT::Date->new( $session{'CurrentUser'} ); diff --git a/rt/html/Elements/Callback b/rt/html/Elements/Callback index 937e923a1..c7aeb9f5d 100644 --- a/rt/html/Elements/Callback +++ b/rt/html/Elements/Callback @@ -68,14 +68,14 @@ if (!$callbacks) { push @$callbacks, # Skip backup files, files without a leading package name, # and files we've already seen - grep { !/^\.|~$/ + grep { !/\/\.|~$/ and $_ ne "/Callbacks/$Page/$_CallbackName" and not $seen{$_}++ } $m->interp->resolver->glob_path($path, $root); } $m->notes($CacheKey => $callbacks); - $cache{$Page,$_CallbackName} = $callbacks if !$RT::DevelMode; + $cache{$CacheKey} = $callbacks if !$RT::DevelMode; } my @rv; diff --git a/rt/html/Elements/CollectionAsTable/Row b/rt/html/Elements/CollectionAsTable/Row index 3316bc027..0de362ea8 100644 --- a/rt/html/Elements/CollectionAsTable/Row +++ b/rt/html/Elements/CollectionAsTable/Row @@ -71,6 +71,7 @@ foreach my $column (@Format) { $item++; $m->out('<td class="collection-as-table" '); $m->out( 'align="' . $column->{align} . '"' ) if ( $column->{align} ); + $m->out( 'style="' . $column->{style} . '"' ) if ( $column->{style} ); $m->out('>'); foreach my $subcol ( @{ $column->{output} } ) { if ( $subcol =~ /^__(.*?)__$/o ) { diff --git a/rt/html/Elements/EditCustomField b/rt/html/Elements/EditCustomField index d2398c9da..e443c764e 100644 --- a/rt/html/Elements/EditCustomField +++ b/rt/html/Elements/EditCustomField @@ -49,6 +49,10 @@ if ($Object) { $Values = $Object->CustomFieldValues($CustomField->id); $Values->Columns( qw( id CustomField ObjectType ObjectId Disabled Content ContentType ContentEncoding ) ); $NamePrefix ||= join('-', 'Object', ref($Object), $Object->Id, 'CustomField', ''); +} elsif (not $Default) { + my %TOP = $m->request_args; + $Default = $TOP{ $NamePrefix .$CustomField->Id . '-Values' } + || $TOP{ $NamePrefix .$CustomField->Id . '-Value' }; } my $Type = $CustomField->Type; diff --git a/rt/html/Elements/EditCustomFieldSelect b/rt/html/Elements/EditCustomFieldSelect index db33a6839..2a2a64a1d 100644 --- a/rt/html/Elements/EditCustomFieldSelect +++ b/rt/html/Elements/EditCustomFieldSelect @@ -53,7 +53,8 @@ % if ($Values) { <% $Values->HasEntry($value->Name) && ($selected = 1) && 'SELECTED' %> % } elsif ($Default) { - <% ($Default eq $value->Name) && ($selected = 1) && 'SELECTED' %> + <% (ref $Default ? (grep {$_ eq $value->Name} @{$Default}) : ($Default eq $value->Name)) + && ($selected = 1) && 'SELECTED' %> % } ><% $value->Name%></option> % } diff --git a/rt/html/Elements/Header b/rt/html/Elements/Header index 8c3775bba..f5a616ece 100644 --- a/rt/html/Elements/Header +++ b/rt/html/Elements/Header @@ -47,12 +47,14 @@ <HTML> <HEAD> <TITLE><%$Title%></TITLE> -% if ($Refresh > 0) { +% if ($Refresh && $Refresh > 0) { <META HTTP-EQUIV="REFRESH" CONTENT="<%$Refresh%>"> % } -<link rel="shortcut icon" href="<%$RT::WebImagesURL%>/favicon.png" type="image/png"> -<link rel="stylesheet" href="<%$RT::WebPath%>/NoAuth/webrt.css" type="text/css"> +<link rel="shortcut icon" href="<%$RT::WebImagesURL%>/favicon.png" type="image/png" /> +<link media="all" rel="stylesheet" href="<%$RT::WebPath%>/NoAuth/webrt.css" type="text/css" /> +<link media="print" rel="stylesheet" href="<%$RT::WebPath%>/NoAuth/printrt.css" type="text/css" /> + <script> function hideshow(num) { idstring = "element-" + num; diff --git a/rt/html/Elements/QueryString b/rt/html/Elements/QueryString index 7d41f15e0..1ddab85de 100644 --- a/rt/html/Elements/QueryString +++ b/rt/html/Elements/QueryString @@ -45,8 +45,12 @@ %# END BPS TAGGED BLOCK }}} <%init> my @params; -while ( (my $key, my $value) = each %ARGS ){ +while ( my ($key, $value) = each %ARGS ){ + if( UNIVERSAL::isa( $value, 'ARRAY' ) ) { + push @params, map $key."=".$m->interp->apply_escapes($_,'u'), @$value; + } else { push @params, $key."=".$m->interp->apply_escapes($value,'u'); + } } return(join('&',@params)); </%init> diff --git a/rt/html/Elements/RT__Ticket/ColumnMap b/rt/html/Elements/RT__Ticket/ColumnMap index dade91494..80e3c693c 100644 --- a/rt/html/Elements/RT__Ticket/ColumnMap +++ b/rt/html/Elements/RT__Ticket/ColumnMap @@ -95,6 +95,7 @@ sub LinkCallback { my $mode = $RT::Ticket::LINKTYPEMAP{$method}{Mode}; my $type = $RT::Ticket::LINKTYPEMAP{$method}{Type}; + my $other_mode = ($mode eq "Target" ? "Base" : "Target"); my $mode_uri = $mode.'URI'; my $local_type = 'Local'.$mode; @@ -105,7 +106,7 @@ sub LinkCallback { \'">', ( $_->$mode_uri->IsLocal ? $_->$local_type : $_->$mode ), \'</A><BR>', - } @{ $_[0]->Links($mode,$type)->ItemsArrayRef } + } @{ $_[0]->Links($other_mode,$type)->ItemsArrayRef } } } diff --git a/rt/html/Elements/ScrubHTML b/rt/html/Elements/ScrubHTML index 94a729907..443ded9c4 100644 --- a/rt/html/Elements/ScrubHTML +++ b/rt/html/Elements/ScrubHTML @@ -62,7 +62,7 @@ $scrubber->default( $scrubber->deny(qw[*]); $scrubber->allow( - qw[A B U P BR I HR BR SMALL EM FONT SPAN DIV UL OL LI DL DT DD]); + qw[A B U P BR I HR BR SMALL EM FONT SPAN DIV UL OL LI DL DT DD PRE]); $scrubber->comment(0); return ( $scrubber->scrub($Content) ); </%init> diff --git a/rt/html/Elements/ShowCustomFields b/rt/html/Elements/ShowCustomFields index 7591fa3aa..986184120 100644 --- a/rt/html/Elements/ShowCustomFields +++ b/rt/html/Elements/ShowCustomFields @@ -71,6 +71,9 @@ </table> <%INIT> my $CustomFields = $Object->CustomFields; + $m->comp('/Elements/Callback', _CallbackName => 'MassageCustomFields', + CustomFields => $CustomFields); + </%INIT> <%ARGS> $Object => undef diff --git a/rt/html/NoAuth/printrt.css b/rt/html/NoAuth/printrt.css new file mode 100644 index 000000000..72e7e8b7e --- /dev/null +++ b/rt/html/NoAuth/printrt.css @@ -0,0 +1,77 @@ +%# {{{ BEGIN BPS TAGGED BLOCK +%# +%# +%# +%# 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 +%# you are the copyright holder for those contributions and you grant +%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, +%# 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 +%# +%# Special stylesheet for printing tickets +%# Koos van den Hout koos@cs.uu.nl 2005-11-21 +%# + +SPAN.nav { display: none !important; } +.nav2 { display: none !important; } +.nav { display: none !important; } +.topnav { display: none !important; } +.blue { display: none !important; } +.darkblue { display: none !important; } +.blueright { display: none !important; } +.currentnav { display: none !important; } +th.titlebox { border-top: none; border-bottom: none; } +th.titleboxright { display:none !important; border-top: none; border-bottom: none; } +.titlebox { border-top: none; border-bottom: none; } + +div.downloadattachment, div.downloadcontenttype { + display: none !important; +} + + +a[href$="Respond"], a[href$="Comment"], a[href*="ShowEmailRecord"] { + display: none !important; +} + + +%# Provide a callback for adding/modifying the style sheet. +%# http://www.w3.org/TR/REC-CSS1 - section 3.2, says: +%# "latter specified rule wins" +<& /Elements/Callback &> +<%flags> +inherit => undef +</%flags> +<%init> +$r->content_type('text/css'); +$r->headers_out->{'Expires'} = '+30m'; +</%init> diff --git a/rt/html/NoAuth/webrt.css b/rt/html/NoAuth/webrt.css index ccdd49d60..7fa2f83f8 100644 --- a/rt/html/NoAuth/webrt.css +++ b/rt/html/NoAuth/webrt.css @@ -74,37 +74,37 @@ SPAN.nav { font-family: Verdana, Arial, Helvetica, sans-serif; %# This modification sets a different class name for each level, allowing %# style sheet control over the formats. -a.topnav-0 { font-family: Verdana, sans-serif; +a.topnav-0 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 16px; font-weight: normal; color: #FFFFFF; text-decoration: none; white-space: nowrap} -a.topnav-1 { font-family: Verdana, sans-serif; +a.topnav-1 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-weight: normal; color: #FFFFFF; text-decoration: none; white-space: nowrap} -a.topnav-2 { font-family: Verdana, sans-serif; +a.topnav-2 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; color: #FFFFFF; text-decoration: none; white-space: nowrap} -a.topnav-3 { font-family: Verdana, sans-serif; +a.topnav-3 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-weight: normal; color: #FFFFFF; text-decoration: none; white-space: nowrap} -a.topnav-4 { font-family: Verdana, sans-serif; +a.topnav-4 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-weight: normal; color: #FFFFFF; text-decoration: none; white-space: nowrap} -a.topnav-5 { font-family: Verdana, sans-serif; +a.topnav-5 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-weight: normal; color: #FFFFFF; @@ -183,37 +183,37 @@ li.topnav-5-major { %# This modification sets a different class name for each level, allowing %# style sheet control over the formats -a.currenttopnav-0 { font-family: Verdana, sans-serif; +a.currenttopnav-0 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 16px; font-weight: bold; color: #FFFF66; text-decoration: none; white-space: nowrap} -a.currenttopnav-1 { font-family: Verdana, sans-serif; +a.currenttopnav-1 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-weight: bold; color: #FFFF66; text-decoration: none; white-space: nowrap} -a.currenttopnav-2 { font-family: Verdana, sans-serif; +a.currenttopnav-2 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; color: #FFFF66; text-decoration: none; white-space: nowrap} -a.currenttopnav-3 { font-family: Verdana, sans-serif; +a.currenttopnav-3 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-weight: normal; color: #FFFF66; text-decoration: none; white-space: nowrap} -a.currenttopnav-4 { font-family: Verdana, sans-serif; +a.currenttopnav-4 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-weight: normal; color: #FFFF66; text-decoration: none; white-space: nowrap} -a.currenttopnav-5 { font-family: Verdana, sans-serif; +a.currenttopnav-5 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-weight: normal; color: #FFFF66; @@ -454,7 +454,7 @@ SPAN.message { BODY { color: #000; background: #FFFFFF; - font-family: "Helvetica", sans-serif; + font-family: Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; @@ -477,7 +477,7 @@ TR.evenline { H1, H2, H3 { margin-top: 0.2em; color: #336699; - font-family: "Helvetica", sans-serif; + font-family: Verdana, Arial, Helvetica, sans-serif; clear: both; } diff --git a/rt/html/Search/Build.html b/rt/html/Search/Build.html index cb6462651..5a66e02c9 100644 --- a/rt/html/Search/Build.html +++ b/rt/html/Search/Build.html @@ -256,237 +256,6 @@ if ( $ARGS{'LoadSavedSearch'} =~ /^(.*?)-(\d+)-SavedSearch-(\d+)$/ ) { # }}} # {{{ Parse the query -my $tree; -ParseQuery( $Query, \$tree, \@actions ); - -# if parsing went poorly, send them to the edit page to fix it -if ( $actions[0] ) { - $m->comp( "Edit.html", Query => $Query, actions => \@actions ); - $m->abort(); -} - -$Query = ""; - -my @options = $tree->GetDisplayedNodes; - -my @current_values = grep { defined } @options[@clauses]; - -# {{{ Try to find if we're adding a clause -foreach my $arg ( keys %ARGS ) { - if ( - $arg =~ m/^ValueOf(.+)/ - && ( ref $ARGS{$arg} eq "ARRAY" - ? grep { $_ ne "" } @{ $ARGS{$arg} } - : $ARGS{$arg} ne "" ) - ) - { - - # We're adding a $1 clause - my $field = $1; - my ( $keyword, $op, $value ); - - #figure out if it's a grouping - if ( $ARGS{ $field . "Field" } ) { - $keyword = $ARGS{ $field . "Field" }; - } - else { - $keyword = $field; - } - - my ( @ops, @values ); - if ( ref $ARGS{ 'ValueOf' . $field } eq "ARRAY" ) { - - # we have many keys/values to iterate over, because there is - # more than one CF with the same name. - @ops = @{ $ARGS{ $field . 'Op' } }; - @values = @{ $ARGS{ 'ValueOf' . $field } }; - } - else { - @ops = ( $ARGS{ $field . 'Op' } ); - @values = ( $ARGS{ 'ValueOf' . $field } ); - } - $RT::Logger->error("Bad Parameters passed into Query Builder") - unless @ops == @values; - - for my $i ( 0 .. @ops - 1 ) { - my ( $op, $value ) = ( $ops[$i], $values[$i] ); - next if $value eq ""; - - if ( $value eq 'NULL' && $op =~ /=/ ) { - if ( $op eq '=' ) { - $op = "IS"; - } - elsif ( $op eq '!=' ) { - $op = "IS NOT"; - } - - # This isn't "right", but... - # It has to be this way until #5182 is fixed - $value = "'NULL'"; - } - else { - $value = "'$value'"; - } - - my $clause = { - Key => $keyword, - Op => $op, - Value => $value - }; - - my $newnode = RT::Interface::Web::QueryBuilder::Tree->new($clause); - if (@current_values) { - foreach my $value (@current_values) { - my $newindex = $value->getIndex() + 1; - $value->insertSibling( $newindex, $newnode ); - $value = $newnode; - } - } - else { - $tree->getChild(0)->addChild($newnode); - @current_values = $newnode; - } - $newnode->getParent()->setNodeValue( $ARGS{'AndOr'} ); - } - } -} - -# }}} - -# {{{ Move things around -if ( $ARGS{"Up"} ) { - if (@current_values) { - foreach my $value (@current_values) { - my $index = $value->getIndex(); - if ( $value->getIndex() > 0 ) { - my $parent = $value->getParent(); - $parent->removeChild($index); - $parent->insertChild( $index - 1, $value ); - $value = $parent->getChild( $index - 1 ); - } - else { - push( @actions, [ loc("error: can't move up"), -1 ] ); - } - } - } - else { - push( @actions, [ loc("error: nothing to move"), -1 ] ); - } -} -elsif ( $ARGS{"Down"} ) { - if (@current_values) { - foreach my $value (@current_values) { - my $index = $value->getIndex(); - my $parent = $value->getParent(); - if ( $value->getIndex() < ( $parent->getChildCount - 1 ) ) { - $parent->removeChild($index); - $parent->insertChild( $index + 1, $value ); - $value = $parent->getChild( $index + 1 ); - } - else { - push( @actions, [ loc("error: can't move down"), -1 ] ); - } - } - } - else { - push( @actions, [ loc("error: nothing to move"), -1 ] ); - } -} -elsif ( $ARGS{"Left"} ) { - if (@current_values) { - foreach my $value (@current_values) { - my $parent = $value->getParent(); - my $grandparent = $parent->getParent(); - if ( !$grandparent->isRoot ) { - my $index = $parent->getIndex(); - $parent->removeChild($value); - $grandparent->insertChild( $index, $value ); - if ( $parent->isLeaf() ) { - $grandparent->removeChild($parent); - } - } - else { - push( @actions, [ loc("error: can't move left"), -1 ] ); - } - } - } - else { - push( @actions, [ loc("error: nothing to move"), -1 ] ); - } -} -elsif ( $ARGS{"Right"} ) { - if (@current_values) { - foreach my $value (@current_values) { - my $parent = $value->getParent(); - my $index = $value->getIndex(); - my $newparent; - if ( $index > 0 ) { - my $sibling = $parent->getChild( $index - 1 ); - if ( ref( $sibling->getNodeValue ) ) { - $parent->removeChild($value); - my $newtree = RT::Interface::Web::QueryBuilder::Tree->new( 'AND', $parent ); - $newtree->addChild($value); - } - else { - $parent->removeChild($index); - $sibling->addChild($value); - } - } - else { - $parent->removeChild($value); - $newparent = RT::Interface::Web::QueryBuilder::Tree->new( 'AND', $parent ); - $newparent->addChild($value); - } - } - } - else { - push( @actions, [ loc("error: nothing to move"), -1 ] ); - } -} -elsif ( $ARGS{"DeleteClause"} ) { - if (@current_values) { - $_->getParent()->removeChild($_) for @current_values; - } - else { - push( @actions, [ loc("error: nothing to delete"), -1 ] ); - } -} -elsif ( $ARGS{"Toggle"} ) { - my $ea; - if (@current_values) { - foreach my $value (@current_values) { - my $parent = $value->getParent(); - - if ( $parent->getNodeValue eq 'AND' ) { - $parent->setNodeValue('OR'); - } - else { - $parent->setNodeValue('AND'); - } - } - } - else { - push( @actions, [ loc("error: nothing to toggle"), -1 ] ); - } -} - -$tree->PruneChildlessAggregators; - -# }}} - -# {{{ Rebuild $Query based on the additions / movements -$Query = ""; -my $optionlist_arrayref; - -($Query, $optionlist_arrayref) = $tree->GetQueryAndOptionList(\@current_values); - -my $optionlist = join "\n", map { qq(<option value="$_->{INDEX}" $_->{SELECTED}>) - . (" " x (5 * $_->{DEPTH})) - . $m->interp->apply_escapes($_->{TEXT}, 'h') . qq(</option>) } @$optionlist_arrayref; - - - - use Regexp::Common qw /delimited/; # States @@ -496,7 +265,17 @@ use constant OP => 4; use constant PAREN => 8; use constant KEYWORD => 16; -sub ParseQuery { +my $_match = sub { + + # Case insensitive equality + my ( $y, $x ) = @_; + return 1 if $x =~ /^$y$/i; + + # return 1 if ((lc $x) eq (lc $y)); # Why isnt this equiv? + return 0; +}; + +my $ParseQuery = sub { my $string = shift; my $tree = shift; my @actions = shift; @@ -548,12 +327,12 @@ sub ParseQuery { my $current = 0; # Highest priority is last - $current = OP if _match( $re_op, $val ); - $current = VALUE if _match( $re_value, $val ); + $current = OP if $_match->( $re_op, $val ); + $current = VALUE if $_match->( $re_value, $val ); $current = KEYWORD - if _match( $re_keyword, $val ) && ( $want & KEYWORD ); - $current = AGGREG if _match( $re_aggreg, $val ); - $current = PAREN if _match( $re_paren, $val ); + if $_match->( $re_keyword, $val ) && ( $want & KEYWORD ); + $current = AGGREG if $_match->( $re_aggreg, $val ); + $current = PAREN if $_match->( $re_paren, $val ); unless ( $current && $want & $current ) { @@ -666,25 +445,242 @@ sub ParseQuery { # This will never happen, because the parser will complain push @actions, [ loc("Mismatched parentheses"), -1 ] unless $depth == 1; +}; + +my $tree; +$ParseQuery->( $Query, \$tree, \@actions ); + +# if parsing went poorly, send them to the edit page to fix it +if ( $actions[0] ) { + $m->comp( "Edit.html", Query => $Query, actions => \@actions ); + $m->abort(); } -sub _match { +$Query = ""; - # Case insensitive equality - my ( $y, $x ) = @_; - return 1 if $x =~ /^$y$/i; +my @options = $tree->GetDisplayedNodes; - # return 1 if ((lc $x) eq (lc $y)); # Why isnt this equiv? - return 0; +my @current_values = grep { defined } @options[@clauses]; + +# {{{ Move things around +if ( $ARGS{"Up"} ) { + if (@current_values) { + foreach my $value (@current_values) { + my $index = $value->getIndex(); + if ( $value->getIndex() > 0 ) { + my $parent = $value->getParent(); + $parent->removeChild($index); + $parent->insertChild( $index - 1, $value ); + $value = $parent->getChild( $index - 1 ); + } + else { + push( @actions, [ loc("error: can't move up"), -1 ] ); + } + } + } + else { + push( @actions, [ loc("error: nothing to move"), -1 ] ); + } +} +elsif ( $ARGS{"Down"} ) { + if (@current_values) { + foreach my $value (@current_values) { + my $index = $value->getIndex(); + my $parent = $value->getParent(); + if ( $value->getIndex() < ( $parent->getChildCount - 1 ) ) { + $parent->removeChild($index); + $parent->insertChild( $index + 1, $value ); + $value = $parent->getChild( $index + 1 ); + } + else { + push( @actions, [ loc("error: can't move down"), -1 ] ); + } + } + } + else { + push( @actions, [ loc("error: nothing to move"), -1 ] ); + } } +elsif ( $ARGS{"Left"} ) { + if (@current_values) { + foreach my $value (@current_values) { + my $parent = $value->getParent(); + my $grandparent = $parent->getParent(); + if ( !$grandparent->isRoot ) { + my $index = $parent->getIndex(); + $parent->removeChild($value); + $grandparent->insertChild( $index, $value ); + if ( $parent->isLeaf() ) { + $grandparent->removeChild($parent); + } + } + else { + push( @actions, [ loc("error: can't move left"), -1 ] ); + } + } + } + else { + push( @actions, [ loc("error: nothing to move"), -1 ] ); + } +} +elsif ( $ARGS{"Right"} ) { + if (@current_values) { + foreach my $value (@current_values) { + my $parent = $value->getParent(); + my $index = $value->getIndex(); + my $newparent; + if ( $index > 0 ) { + my $sibling = $parent->getChild( $index - 1 ); + if ( ref( $sibling->getNodeValue ) ) { + $parent->removeChild($value); + my $newtree = RT::Interface::Web::QueryBuilder::Tree->new( 'AND', $parent ); + $newtree->addChild($value); + } + else { + $parent->removeChild($index); + $sibling->addChild($value); + } + } + else { + $parent->removeChild($value); + $newparent = RT::Interface::Web::QueryBuilder::Tree->new( 'AND', $parent ); + $newparent->addChild($value); + } + } + } + else { + push( @actions, [ loc("error: nothing to move"), -1 ] ); + } +} +elsif ( $ARGS{"DeleteClause"} ) { + if (@current_values) { + $_->getParent()->removeChild($_) for @current_values; + @current_values = (); + } + else { + push( @actions, [ loc("error: nothing to delete"), -1 ] ); + } +} +elsif ( $ARGS{"Toggle"} ) { + my $ea; + if (@current_values) { + foreach my $value (@current_values) { + my $parent = $value->getParent(); + + if ( $parent->getNodeValue eq 'AND' ) { + $parent->setNodeValue('OR'); + } + else { + $parent->setNodeValue('AND'); + } + } + } + else { + push( @actions, [ loc("error: nothing to toggle"), -1 ] ); + } +} + +# {{{ Try to find if we're adding a clause +foreach my $arg ( keys %ARGS ) { + if ( + $arg =~ m/^ValueOf(.+)/ + && ( ref $ARGS{$arg} eq "ARRAY" + ? grep { $_ ne "" } @{ $ARGS{$arg} } + : $ARGS{$arg} ne "" ) + ) + { + + # We're adding a $1 clause + my $field = $1; + my ( $keyword, $op, $value ); + + #figure out if it's a grouping + if ( $ARGS{ $field . "Field" } ) { + $keyword = $ARGS{ $field . "Field" }; + } + else { + $keyword = $field; + } + + my ( @ops, @values ); + if ( ref $ARGS{ 'ValueOf' . $field } eq "ARRAY" ) { + + # we have many keys/values to iterate over, because there is + # more than one CF with the same name. + @ops = @{ $ARGS{ $field . 'Op' } }; + @values = @{ $ARGS{ 'ValueOf' . $field } }; + } + else { + @ops = ( $ARGS{ $field . 'Op' } ); + @values = ( $ARGS{ 'ValueOf' . $field } ); + } + $RT::Logger->error("Bad Parameters passed into Query Builder") + unless @ops == @values; + + for my $i ( 0 .. @ops - 1 ) { + my ( $op, $value ) = ( $ops[$i], $values[$i] ); + next if $value eq ""; -sub debug { - my $message = shift; - $m->print( $message . "<br>" ); + if ( $value eq 'NULL' && $op =~ /=/ ) { + if ( $op eq '=' ) { + $op = "IS"; + } + elsif ( $op eq '!=' ) { + $op = "IS NOT"; + } + + # This isn't "right", but... + # It has to be this way until #5182 is fixed + $value = "'NULL'"; + } + else { + $value = "'$value'"; + } + + my $clause = { + Key => $keyword, + Op => $op, + Value => $value + }; + + my $newnode = RT::Interface::Web::QueryBuilder::Tree->new($clause); + if (@current_values) { + foreach my $value (@current_values) { + my $newindex = $value->getIndex() + 1; + $value->insertSibling( $newindex, $newnode ); + $value = $newnode; + } + } + else { + $tree->getChild(0)->addChild($newnode); + @current_values = $newnode; + } + $newnode->getParent()->setNodeValue( $ARGS{'AndOr'} ); + } + } } # }}} +$tree->PruneChildlessAggregators; + +# }}} + +# {{{ Rebuild $Query based on the additions / movements +$Query = ""; +my $optionlist_arrayref; + +($Query, $optionlist_arrayref) = $tree->GetQueryAndOptionList(\@current_values); + +my $optionlist = join "\n", map { qq(<option value="$_->{INDEX}" $_->{SELECTED}>) + . (" " x (5 * $_->{DEPTH})) + . $m->interp->apply_escapes($_->{TEXT}, 'h') . qq(</option>) } @$optionlist_arrayref; + + + + +# }}} + # }}} my $queues = $tree->GetReferencedQueues; diff --git a/rt/html/Search/Elements/BuildFormatString b/rt/html/Search/Elements/BuildFormatString index 639e62c29..cffb81a48 100644 --- a/rt/html/Search/Elements/BuildFormatString +++ b/rt/html/Search/Elements/BuildFormatString @@ -121,11 +121,7 @@ foreach my $id (keys %cfqueues) { $CustomFields->LimitToGlobal; while ( my $CustomField = $CustomFields->Next ) { - my $queuestr; - if ($CustomField->QueueObj && $CustomField->QueueObj->Id != 0) { - $queuestr = $CustomField->QueueObj->Name . "."; - } - push @fields, "CustomField." . $queuestr . "{" . $CustomField->Name . "}"; + push @fields, "CustomField.{" . $CustomField->Name . "}"; } my ( @seen); diff --git a/rt/html/Search/Results.rdf b/rt/html/Search/Results.rdf index ee71fea94..7cc248306 100644 --- a/rt/html/Search/Results.rdf +++ b/rt/html/Search/Results.rdf @@ -75,7 +75,7 @@ $r->content_type('application/rdf+xml'); link => $RT::WebURL."/Ticket/Display.html?id=".$Ticket->id, description => $Ticket->Transactions->First->Content, dc => { - subject => $Ticket->Subject, + subject => ($Ticket->Subject || loc('No subject')), creator => $Ticket->CreatorObj->RealName . "<".$Ticket->CreatorObj->EmailAddress.">", }, ); diff --git a/rt/html/Search/Results.tsv b/rt/html/Search/Results.tsv index 17aa88ae1..e6b20481f 100644 --- a/rt/html/Search/Results.tsv +++ b/rt/html/Search/Results.tsv @@ -64,7 +64,7 @@ my @attrs = qw( id QueueObj->Name Subject Status TimeEstimated TimeWorked TimeLe if ($@) {die "Failed to find $attr - ". $@}; } - my $cfs = $Ticket->QueueObj->CustomFields(); + my $cfs = $Ticket->QueueObj->TicketCustomFields(); while (my $cf = $cfs->Next) { my @content; my $values = $Ticket->CustomFieldValues($cf->Id); diff --git a/rt/html/Ticket/Elements/EditCustomFields b/rt/html/Ticket/Elements/EditCustomFields index d566f4e71..6ae188fa7 100644 --- a/rt/html/Ticket/Elements/EditCustomFields +++ b/rt/html/Ticket/Elements/EditCustomFields @@ -91,7 +91,8 @@ if ($TicketObj) { $NamePrefix = "Object-RT::Ticket--CustomField-"; } - + $m->comp('/Elements/Callback', _CallbackName => 'MassageCustomFields', + CustomFields => $CustomFields); </%INIT> <%ARGS> diff --git a/rt/html/Ticket/Elements/ShowTransactionAttachments b/rt/html/Ticket/Elements/ShowTransactionAttachments index 8dabff421..d9e94ffa2 100644 --- a/rt/html/Ticket/Elements/ShowTransactionAttachments +++ b/rt/html/Ticket/Elements/ShowTransactionAttachments @@ -89,13 +89,13 @@ foreach my $message ( grep { $_->Parent == $Parent } @$Attachments ) { <div class="messagebody"> <%perl> # {{{ if it has a content-disposition: attachment, don't show inline -unless ( $message->GetHeader('Content-Disposition') =~ /attachment/i ) { +unless ( ($message->GetHeader('Content-Disposition')||"") =~ /attachment/i ) { my $content; # If it's text if ( $message->ContentType =~ m{^(text|message)}i - && $size <= $RT::MaxInlineBody ) + && $message->ContentLength <= $RT::MaxInlineBody ) { if ( @@ -158,6 +158,11 @@ unless ( $message->GetHeader('Content-Disposition') =~ /attachment/i ) { . $message->Id . '/">' ); } + elsif ( $message->ContentLength > 0 ) { + $m->out( + loc( 'Message body not shown because it is too large or is not plain text.' ) + ); + } } # }}} diff --git a/rt/html/User/Elements/Tabs b/rt/html/User/Elements/Tabs index 1d25fb926..625b30f93 100644 --- a/rt/html/User/Elements/Tabs +++ b/rt/html/User/Elements/Tabs @@ -61,6 +61,9 @@ }, }; + # Now let callbacks add their extra tabs + $m->comp('/Elements/Callback', tabs => $tabs, %ARGS); + foreach my $tab (sort keys %{$tabs}) { if ($tabs->{$tab}->{'path'} eq $current_tab) { $tabs->{$tab}->{"subtabs"} = $subtabs; diff --git a/rt/lib/RT/ACE_Overlay.pm b/rt/lib/RT/ACE_Overlay.pm index 75e39d03a..a045d57a9 100644 --- a/rt/lib/RT/ACE_Overlay.pm +++ b/rt/lib/RT/ACE_Overlay.pm @@ -814,7 +814,7 @@ sub Object { else { $RT::Logger->warning( "$self -> Object called for an object " . "of an unknown type:" - . $self->ObjectType ); + . $self->__Value('ObjectType') ); return (undef); } } diff --git a/rt/lib/RT/Action/SendEmail.pm b/rt/lib/RT/Action/SendEmail.pm index 3c70dc401..431b97c75 100755 --- a/rt/lib/RT/Action/SendEmail.pm +++ b/rt/lib/RT/Action/SendEmail.pm @@ -253,9 +253,9 @@ sub SendMessage { if ( $RT::MailCommand eq 'sendmailpipe' ) { eval { - open( MAIL, "|$RT::SendmailPath $RT::SendmailArguments" ) || die $!; - print MAIL $MIMEObj->as_string; - close(MAIL); + open( my $mail, "|$RT::SendmailPath $RT::SendmailArguments" ) || die $!; + $MIMEObj->print($mail); + close($mail); }; if ($@) { $RT::Logger->crit( $msgid . "Could not send mail. -" . $@ ); @@ -323,7 +323,7 @@ sub AddAttachments { FIELD => 'TransactionId', VALUE => $self->TransactionObj->Id ); - $attachments->OrderBy('id'); + $attachments->OrderBy( FIELD => 'id'); my $transaction_content_obj = $self->TransactionObj->ContentObj; @@ -445,7 +445,7 @@ sub SetRTSpecialHeaders { # If there is one, and we can parse it, then base our Message-ID on it if ($msgid - and $msgid =~ s/<(rt-.*?-\d+-\d+)\.(\d+-0-0)\@$RT::Organization>$/ + and $msgid =~ s/<(rt-.*?-\d+-\d+)\.(\d+)-\d+-\d+\@\Q$RT::Organization\E>$/ "<$1." . $self->TicketObj->id . "-" . $self->ScripObj->id . "-" . $self->ScripActionObj->{_Message_ID} diff --git a/rt/lib/RT/Attachments_Overlay.pm b/rt/lib/RT/Attachments_Overlay.pm index 1ea56e47c..5afcd551e 100644 --- a/rt/lib/RT/Attachments_Overlay.pm +++ b/rt/lib/RT/Attachments_Overlay.pm @@ -81,6 +81,8 @@ sub _Init { $self->{'table'} = "Attachments"; $self->{'primary_key'} = "id"; + $self->OrderBy ( FIELD => 'id', + ORDER => 'ASC'); return ( $self->SUPER::_Init(@_)); } # }}} diff --git a/rt/lib/RT/CustomFieldValues.pm b/rt/lib/RT/CustomFieldValues.pm index 9a55af8bd..d4d2d1a23 100644 --- a/rt/lib/RT/CustomFieldValues.pm +++ b/rt/lib/RT/CustomFieldValues.pm @@ -81,17 +81,18 @@ sub _Init { $self->{'table'} = 'CustomFieldValues'; $self->{'primary_key'} = 'id'; - - - # By default, order by SortOrder - $self->OrderByCols( - { ALIAS => 'main', - FIELD => 'SortOrder', - ORDER => 'ASC' }, - { ALIAS => 'main', - FIELD => 'id', - ORDER => 'ASC' }, - ); + # By default, order by SortOrder + $self->OrderByCols( + { ALIAS => 'main', + FIELD => 'SortOrder', + ORDER => 'ASC' }, + { ALIAS => 'main', + FIELD => 'Name', + ORDER => 'ASC' }, + { ALIAS => 'main', + FIELD => 'id', + ORDER => 'ASC' }, + ); return ( $self->SUPER::_Init(@_) ); } diff --git a/rt/lib/RT/CustomField_Overlay.pm b/rt/lib/RT/CustomField_Overlay.pm index 9e0ce2460..743c85cd7 100644 --- a/rt/lib/RT/CustomField_Overlay.pm +++ b/rt/lib/RT/CustomField_Overlay.pm @@ -461,7 +461,7 @@ sub ValuesForTicket { my $self = shift; my $ticket_id = shift; - $RT::Logger->debug( ref($self) . " -> ValuesForTicket deprecated in favor of ValuesForObject"); + $RT::Logger->debug( ref($self) . " -> ValuesForTicket deprecated in favor of ValuesForObject at (". join(":",caller).")"); my $ticket = RT::Ticket->new($self->CurrentUser); $ticket->Load($ticket_id); @@ -485,7 +485,7 @@ sub AddValueForTicket { my %args = ( Ticket => undef, Content => undef, @_ ); - $RT::Logger->debug( ref($self) . " -> AddValueForTicket deprecated in favor of AddValueForObject"); + $RT::Logger->debug( ref($self) . " -> AddValueForTicket deprecated in favor of AddValueForObject at (". join(":",caller).")"); my $ticket = RT::Ticket->new($self->CurrentUser); @@ -513,7 +513,7 @@ sub DeleteValueForTicket { Content => undef, @_ ); - $RT::Logger->debug( ref($self) . " -> DeleteValueForTicket deprecated in favor of DeleteValueForObject"); + $RT::Logger->debug( ref($self) . " -> DeleteValueForTicket deprecated in favor of DeleteValueForObject at (". join(":",caller).")"); my $ticket = RT::Ticket->new($self->CurrentUser); @@ -615,7 +615,7 @@ sub ValidateType { my $type = shift; if ($type =~ s/(?:Single|Multiple)$//) { - $RT::Logger->warning( "Prefix 'Single' and 'Multiple' to Type deprecated, use MaxValues instead"); + $RT::Logger->warning( "Prefix 'Single' and 'Multiple' to Type deprecated, use MaxValues instead at (". join(":",caller).")"); } if( $FieldTypes{$type}) { @@ -631,7 +631,7 @@ sub SetType { my $self = shift; my $type = shift; if ($type =~ s/(?:(Single)|Multiple)$//) { - warn "'Single' and 'Multiple' on SetType deprecated, use SetMaxValues instead"; + $RT::Logger->warning("'Single' and 'Multiple' on SetType deprecated, use SetMaxValues instead at (". join(":",caller).")"); $self->SetMaxValues($1 ? 1 : 0); } $self->SUPER::SetType($type); @@ -738,19 +738,19 @@ Takes a boolean. # }}} sub Queue { - $RT::Logger->debug( ref($_[0]) . " -> Queue deprecated"); + $RT::Logger->debug( ref($_[0]) . " -> Queue deprecated at (". join(":",caller).")"); return 0; } sub SetQueue { - $RT::Logger->debug( ref($_[0]) . " -> SetQueue deprecated"); + $RT::Logger->debug( ref($_[0]) . " -> SetQueue deprecated at (". join(":",caller).")"); return 0; } sub QueueObj { - $RT::Logger->debug( ref($_[0]) . " -> QueueObj deprecated"); + $RT::Logger->debug( ref($_[0]) . " -> QueueObj deprecated at (". join(":",caller).")"); return undef; } diff --git a/rt/lib/RT/EmailParser.pm b/rt/lib/RT/EmailParser.pm index 3a99e5a5e..eccc20a2f 100644 --- a/rt/lib/RT/EmailParser.pm +++ b/rt/lib/RT/EmailParser.pm @@ -277,7 +277,7 @@ sub _PostProcessNewEntity { sub ParseTicketId { my $self = shift; - $RT::Logger->warnings("RT::EmailParser->ParseTicketId deprecated. You should be using RT::Interface::Email"); + $RT::Logger->warnings("RT::EmailParser->ParseTicketId deprecated. You should be using RT::Interface::Email at (". join(":",caller).")"); require RT::Interface::Email; RT::Interface::Email::ParseTicketId(@_); @@ -435,7 +435,7 @@ sub IsRTAddress { # Example: the following rule would tell RT not to Cc # "tickets@noc.example.com" if ( defined($RT::RTAddressRegexp) && - $address =~ /$RT::RTAddressRegexp/ ) { + $address =~ /$RT::RTAddressRegexp/i ) { return(1); } else { return (undef); diff --git a/rt/lib/RT/Groups_Overlay.pm b/rt/lib/RT/Groups_Overlay.pm index cf29114dc..815fbd999 100644 --- a/rt/lib/RT/Groups_Overlay.pm +++ b/rt/lib/RT/Groups_Overlay.pm @@ -77,23 +77,79 @@ package RT::Groups; use strict; no warnings qw(redefine); +use RT::Users; + +# XXX: below some code is marked as subject to generalize in Groups, Users classes. +# RUZ suggest name Principals::Generic or Principals::Base as abstract class, but +# Jesse wants something that doesn't imply it's a Principals.pm subclass. +# See comments below for candidats. + # {{{ sub _Init +=begin testing + +# next had bugs +# Groups->Limit( FIELD => 'id', OPERATOR => '!=', VALUE => xx ); +my $g = RT::Group->new($RT::SystemUser); +my ($id, $msg) = $g->CreateUserDefinedGroup(Name => 'GroupsNotEqualTest'); +ok ($id, "created group #". $g->id) or diag("error: $msg"); + +my $groups = RT::Groups->new($RT::SystemUser); +$groups->Limit( FIELD => 'id', OPERATOR => '!=', VALUE => $g->id ); +$groups->LimitToUserDefinedGroups(); +my $bug = grep $_->id == $g->id, @{$groups->ItemsArrayRef}; +ok (!$bug, "didn't find group"); + +=end testing + +=cut + sub _Init { my $self = shift; $self->{'table'} = "Groups"; $self->{'primary_key'} = "id"; + my @result = $self->SUPER::_Init(@_); + $self->OrderBy( ALIAS => 'main', FIELD => 'Name', ORDER => 'ASC'); - - return ( $self->SUPER::_Init(@_)); + # XXX: this code should be generalized + $self->{'princalias'} = $self->Join( + ALIAS1 => 'main', + FIELD1 => 'id', + TABLE2 => 'Principals', + FIELD2 => 'id' + ); + + # even if this condition is useless and ids in the Groups table + # only match principals with type 'Group' this could speed up + # searches in some DBs. + $self->Limit( ALIAS => $self->{'princalias'}, + FIELD => 'PrincipalType', + VALUE => 'Group', + ); + + return (@result); } # }}} +=head2 PrincipalsAlias + +Returns the string that represents this Users object's primary "Principals" alias. + +=cut + +# XXX: should be generalized, code duplication +sub PrincipalsAlias { + my $self = shift; + return($self->{'princalias'}); + +} + + # {{{ LimiToSystemInternalGroups =head2 LimitToSystemInternalGroups @@ -215,7 +271,7 @@ my $u = RT::User->new($RT::SystemUser); $u->Create(Name => 'Membertests'); my $g = RT::Group->new($RT::SystemUser); my ($id, $msg) = $g->CreateUserDefinedGroup(Name => 'Membertests'); -ok ($id,$msg); +ok ($id, $msg); my ($aid, $amsg) =$g->AddMember($u->id); ok ($aid, $amsg); @@ -227,9 +283,6 @@ $groups->WithMember(PrincipalId => $u->id); ok ($groups->Count == 1,"found the 1 group - " . $groups->Count); ok ($groups->First->Id == $g->Id, "it's the right one"); - - - =end testing @@ -285,7 +338,7 @@ ok ($testuser->HasRight(Object => $q, Right => 'OwnTicket') , "The test user doe $groups = RT::Groups->new($RT::SystemUser); $groups->WithRight(Right => 'OwnTicket', Object => $q); ok ($id,$msg); -is($groups->Count, 2); +is($groups->Count, 3); my $RTxGroup = RT::Group->new($RT::SystemUser); ($id, $msg) = $RTxGroup->CreateUserDefinedGroup( Name => 'RTxGroup', Description => "RTx extension group"); @@ -343,84 +396,66 @@ is($groups->Count, 1, "RTxGroupRight found for RTxObj2"); =cut - +#XXX: should be generilized sub WithRight { my $self = shift; my %args = ( Right => undef, Object => => undef, IncludeSystemRights => 1, IncludeSuperusers => undef, + IncludeSubgroupMembers => 0, EquivObjects => [ ], @_ ); - my $acl = $self->NewAlias('ACL'); - - # {{{ Find only rows where the right granted is the one we're looking up or _possibly_ superuser - $self->Limit( ALIAS => $acl, - FIELD => 'RightName', - OPERATOR => ($args{Right} ? '=' : 'IS NOT'), - VALUE => $args{Right} || 'NULL', - ENTRYAGGREGATOR => 'OR' ); - - if ( $args{'IncludeSuperusers'} and $args{'Right'} ) { - $self->Limit( ALIAS => $acl, - FIELD => 'RightName', - OPERATOR => '=', - VALUE => 'SuperUser', - ENTRYAGGREGATOR => 'OR' ); - } - # }}} - - my ($or_check_ticket_roles, $or_check_roles); - my $which_object = "$acl.ObjectType = 'RT::System'"; - - if ( defined $args{'Object'} ) { - if ( ref($args{'Object'}) eq 'RT::Ticket' ) { - $or_check_ticket_roles = - " OR ( main.Domain = 'RT::Ticket-Role' AND main.Instance = " . $args{'Object'}->Id . ") "; - - # If we're looking at ticket rights, we also want to look at the associated queue rights. - # this is a little bit hacky, but basically, now that we've done the ticket roles magic, - # we load the queue object and ask all the rest of our questions about the queue. - $args{'Object'} = $args{'Object'}->QueueObj; - } - # TODO XXX This really wants some refactoring - if ( ref($args{'Object'}) eq 'RT::Queue' ) { - $or_check_roles = - " OR ( ( (main.Domain = 'RT::Queue-Role' AND main.Instance = " . - $args{'Object'}->Id . ") $or_check_ticket_roles ) " . - " AND main.Type = $acl.PrincipalType) "; - } - - if ( $args{'IncludeSystemRights'} ) { - $which_object .= ' OR '; - } - else { - $which_object = ''; - } - foreach my $obj ( @{ $args{'EquivObjects'} } ) { - next unless ( UNIVERSAL::can( $obj, 'id' ) ); - $which_object .= "($acl.ObjectType = '" . ref( $obj ) . "' AND $acl.ObjectId = " . $obj->id . ") OR "; - } - $which_object .= - " ($acl.ObjectType = '" . ref($args{'Object'}) . "'" . - " AND $acl.ObjectId = " . $args{'Object'}->Id . ") "; - } + my $from_role = $self->Clone; + $from_role->WithRoleRight( %args ); - $self->_AddSubClause( "WhichObject", "($which_object)" ); - - $self->_AddSubClause( "WhichGroup", - qq{ - ( ( $acl.PrincipalId = main.id - AND $acl.PrincipalType = 'Group' - AND ( main.Domain = 'SystemInternal' - OR main.Domain = 'UserDefined' - OR main.Domain = 'ACLEquivalence')) - $or_check_roles) - } - ); + my $from_group = $self->Clone; + $from_group->WithGroupRight( %args ); + + #XXX: DIRTY HACK + use DBIx::SearchBuilder::Union; + my $union = new DBIx::SearchBuilder::Union; + $union->add($from_role); + $union->add($from_group); + %$self = %$union; + bless $self, ref($union); + + return; } +#XXX: methods are active aliases to Users class to prevent code duplication +# should be generalized +sub _JoinGroups { + my $self = shift; + my %args = (@_); + return 'main' unless $args{'IncludeSubgroupMembers'}; + return $self->RT::Users::_JoinGroups( %args ); +} +sub _JoinGroupMembers { + my $self = shift; + my %args = (@_); + return 'main' unless $args{'IncludeSubgroupMembers'}; + return $self->RT::Users::_JoinGroupMembers( %args ); +} +sub _JoinGroupMembersForGroupRights { + my $self = shift; + my %args = (@_); + my $group_members = $self->_JoinGroupMembers( %args ); + unless( $group_members eq 'main' ) { + return $self->RT::Users::_JoinGroupMembersForGroupRights( %args ); + } + $self->Limit( ALIAS => $args{'ACLAlias'}, + FIELD => 'PrincipalId', + VALUE => "main.id", + QUOTEVALUE => 0, + ); +} +sub _JoinACL { return (shift)->RT::Users::_JoinACL( @_ ) } +sub _GetEquivObjects { return (shift)->RT::Users::_GetEquivObjects( @_ ) } +sub WithGroupRight { return (shift)->RT::Users::WhoHaveGroupRight( @_ ) } +sub WithRoleRight { return (shift)->RT::Users::WhoHaveRoleRight( @_ ) } + # {{{ sub LimitToEnabled =head2 LimitToEnabled @@ -432,18 +467,11 @@ Only find items that haven\'t been disabled sub LimitToEnabled { my $self = shift; - my $alias = $self->Join( - TYPE => 'left', - ALIAS1 => 'main', - FIELD1 => 'id', - TABLE2 => 'Principals', - FIELD2 => 'id' - ); - - $self->Limit( ALIAS => $alias, - FIELD => 'Disabled', - VALUE => '0', - OPERATOR => '=' ); + $self->Limit( ALIAS => $self->PrincipalsAlias, + FIELD => 'Disabled', + VALUE => '0', + OPERATOR => '=', + ); } # }}} @@ -458,20 +486,12 @@ Only find items that have been deleted. sub LimitToDeleted { my $self = shift; - my $alias = $self->Join( - TYPE => 'left', - ALIAS1 => 'main', - FIELD1 => 'id', - TABLE2 => 'Principals', - FIELD2 => 'id' - ); - $self->{'find_disabled_rows'} = 1; - $self->Limit( ALIAS => $alias, - FIELD => 'Disabled', - OPERATOR => '=', - VALUE => '1' - ); + $self->Limit( ALIAS => $self->PrincipalsAlias, + FIELD => 'Disabled', + OPERATOR => '=', + VALUE => 1, + ); } # }}} diff --git a/rt/lib/RT/I18N.pm b/rt/lib/RT/I18N.pm index affff981b..e45faf3af 100644 --- a/rt/lib/RT/I18N.pm +++ b/rt/lib/RT/I18N.pm @@ -223,7 +223,7 @@ sub SetMIMEEntityToEncoding { # {{{ Convert the body eval { - $RT::Logger->debug("Converting '$charset' to '$enc' for ". $head->mime_type . " - ". $head->get('subject')); + $RT::Logger->debug("Converting '$charset' to '$enc' for ". $head->mime_type . " - ". ($head->get('subject') || 'Subjectless message')); # NOTE:: see the comments at the end of the sub. Encode::_utf8_off( $lines[$_] ) foreach ( 0 .. $#lines ); diff --git a/rt/lib/RT/I18N/cs.po b/rt/lib/RT/I18N/cs.po index 224a316eb..83fc3790d 100644 --- a/rt/lib/RT/I18N/cs.po +++ b/rt/lib/RT/I18N/cs.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: RT 3.2.2\n" +"Project-Id-Version: RT 3.4.x\n" "POT-Creation-Date: 2002-05-02 11:36+0800\n" -"PO-Revision-Date: 2005-01-21 00:00+0100\n" +"PO-Revision-Date: 2005-10-03 13:40-0400\n" "Last-Translator: Jan Okrouhly <okrouhly@civ.zcu.cz>\n" "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n" "MIME-Version: 1.0\n" diff --git a/rt/lib/RT/I18N/da.po b/rt/lib/RT/I18N/da.po index 76e97f5eb..dfb1666f6 100644 --- a/rt/lib/RT/I18N/da.po +++ b/rt/lib/RT/I18N/da.po @@ -1,5 +1,10 @@ +# msgid "" msgstr "" +"Project-Id-Version: RT 3.4.x\n" +"PO-Revision-Date: 2005-10-03 13:42-0400\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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-Transfer-Encoding: 8bit\n" diff --git a/rt/lib/RT/I18N/de.po b/rt/lib/RT/I18N/de.po index 0b7f1eff7..6c4c38378 100644 --- a/rt/lib/RT/I18N/de.po +++ b/rt/lib/RT/I18N/de.po @@ -4,11 +4,11 @@ # msgid "" msgstr "" -"Project-Id-Version: RT 2.1.54\n" +"Project-Id-Version: RT 3.4.x\n" "POT-Creation-Date: 2002-06-22 06:06+0200\n" -"PO-Revision-Date: 2003-02-20 04:47+0200\n" +"PO-Revision-Date: 2005-10-03 13:43-0400\n" "Last-Translator: Karsten Konrad <karsten.konrad@uni-graz.at>\n" -"Language-Team: RT German <rt@fxb.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-Transfer-Encoding: 8bit\n" @@ -3785,15 +3785,15 @@ msgstr "Status von %1 auf %2 geändert" #: html/Ticket/Elements/Tabs:170 msgid "Steal" -msgstr "Ãœbernehmen" +msgstr "Stehlen" #: lib/RT/Queue_Overlay.pm:118 msgid "Steal tickets" -msgstr "Anfragen übernehmen" +msgstr "Anfragen stehlen" #: lib/RT/Queue_Overlay.pm:118 msgid "StealTicket" -msgstr "AnfrageÃœbernehmen" +msgstr "AnfrageStehlen" #: lib/RT/Transaction_Overlay.pm:667 #. ($Old->Name) diff --git a/rt/lib/RT/I18N/en.po b/rt/lib/RT/I18N/en.po index 28a840680..f7fa3c75c 100644 --- a/rt/lib/RT/I18N/en.po +++ b/rt/lib/RT/I18N/en.po @@ -1,3 +1,14 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: RT 3.4.x\n" +"PO-Revision-Date: 2005-10-03 13:44-0400\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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-Transfer-Encoding: 8bit\n" + #: lib/RT/Date.pm:440 msgid "Apr." msgstr "Apr" diff --git a/rt/lib/RT/I18N/es.po b/rt/lib/RT/I18N/es.po index 87759ee1e..ebed9cc0d 100644 --- a/rt/lib/RT/I18N/es.po +++ b/rt/lib/RT/I18N/es.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: RT 2.1.x\n" +"Project-Id-Version: RT 3.4.x\n" "POT-Creation-Date: 2002-05-02 11:36+0800\n" -"PO-Revision-Date: 2003-03-23 12:38\n" +"PO-Revision-Date: 2005-10-03 13:44-0400\n" "Last-Translator: Tomà s Núñez Lirola <tomasnl@dsl.upc.es>\n" "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n" "MIME-Version: 1.0\n" @@ -95,7 +95,7 @@ msgstr "" #. ($TicketObj->OwnerObj->Name()) #. (loc($Ticket->Status())) msgid "%1 (Unchanged)" -msgstr "" +msgstr "%1 (Sin cambios)" #: NOT FOUND IN SOURCE msgid "%1 - %2 shown" @@ -106,7 +106,7 @@ msgstr "%1 - %2 mostrados" #. ("--condition-argument", "--condition") #. ("--action-argument", "--action") msgid "%1 - An argument to pass to %2" -msgstr "%1 - Un parametro para pasar a %2" +msgstr "%1 - Un parámetro para pasar a %2" #: bin/rt-crontool:210 #. ("--verbose") @@ -116,17 +116,17 @@ msgstr "%1 - El estado de la salida actualiza STDOUT" #: bin/rt-crontool:204 #. ("--action") msgid "%1 - Specify the action module you want to use" -msgstr "%1 - Especifica el modulo de accion que quieres usar" +msgstr "%1 - Especifica el módulo de accion que quieres usar" #: bin/rt-crontool:198 #. ("--condition") msgid "%1 - Specify the condition module you want to use" -msgstr "%1 - Especifica el modulo de condicion que quieres usar" +msgstr "%1 - Especifica el módulo de condición que quieres usar" #: bin/rt-crontool:191 #. ("--search") msgid "%1 - Specify the search module you want to use" -msgstr "%1 - Especifica el modulo de busqueda que quieres usar" +msgstr "%1 - Especifica el módulo de búsqueda que quieres usar" $RT::VERSION, '2004', @@ -201,7 +201,7 @@ msgstr "%1 ha cambiado de %2 a %3" #: html/Search/Build.html:212 #. ($Description) msgid "%1 copy" -msgstr "" +msgstr "%1 copiar" #: lib/RT/Record.pm:930 msgid "%1 could not be set to %2." @@ -219,21 +219,21 @@ msgstr "%1 no pudo fijar el estado a resuelto. La base de datos de RT podrÃa se #: lib/RT/Transaction_Overlay.pm:560 #. ($obj_type) msgid "%1 created" -msgstr "" +msgstr "%1 creado" #: lib/RT/Transaction_Overlay.pm:565 #. ($obj_type) msgid "%1 deleted" -msgstr "" +msgstr "%1 borrado" #: html/Elements/MyTickets:47 #. ($rows) msgid "%1 highest priority tickets I own" -msgstr "" +msgstr "Los %1 tickets de mayor prioridad que poseo..." #: NOT FOUND IN SOURCE msgid "%1 highest priority tickets I own..." -msgstr "Los %1 tickets de mayor prioridad que poseo... " +msgstr "Los %1 tickets de mayor prioridad que poseo..." #: NOT FOUND IN SOURCE msgid "%1 highest priority tickets I requested..." @@ -242,7 +242,7 @@ msgstr "Los %1 tickets de mayor prioridad que he pedido" #: bin/rt-crontool:186 #. ($0) msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron." -msgstr "$1 es una herramienta para actuar sobre los tickets con una herramienta de planificacion externa, como crom" +msgstr "$1 es una herramienta para actuar sobre los tickets con una herramienta de planificación externa, como crom" #: lib/RT/Queue_Overlay.pm:860 #. ($principal->Object->Name, $args{'Type'}) @@ -273,7 +273,7 @@ msgstr "%1 min" #: html/Elements/MyRequests:47 #. ($rows) msgid "%1 newest unowned tickets" -msgstr "" +msgstr "Los %1 tickets más recientes sin propietario" #: NOT FOUND IN SOURCE msgid "%1 not shown" @@ -281,7 +281,7 @@ msgstr "%1 no mostrado" #: lib/RT/CustomField_Overlay.pm:827 msgid "%1 objects" -msgstr "" +msgstr "%1 ibjetos" #: html/User/Elements/DelegateRights:97 #. (loc($ObjectType =~ /^RT::(.*)$/)) @@ -315,17 +315,17 @@ msgstr "%1 pondrá como pendiente una BASE [local] si es dependiente [o miembro] #: lib/RT/CustomField_Overlay.pm:828 msgid "%1's %2 objects" -msgstr "" +msgstr "%1's %2 objetos" #: lib/RT/CustomField_Overlay.pm:829 msgid "%1's %2's %3 objects" -msgstr "" +msgstr "%1's %2's %3 objetos" #: html/Search/Elements/SearchPrivacy:52 html/Search/Elements/SelectSearchObject:55 html/Search/Elements/SelectSearchesForObjects:56 #. ($object->Name) #. ($Object->Name) msgid "%1's saved searches" -msgstr "" +msgstr "búsquedas guardadas de %1" #: lib/RT/Transaction_Overlay.pm:470 #. ($self) @@ -369,15 +369,15 @@ msgstr "(Marque las cajas para borrar)" #: html/Ticket/Elements/PreviewScrips:94 msgid "(Check boxes to disable notifications to the listed recipients)" -msgstr "" +msgstr "(Marcar las casillas para deshabilitar notificaciones a los receptores listados)" #: html/Ticket/Elements/PreviewScrips:116 msgid "(Check boxes to enable notifications to the listed recipients)" -msgstr "" +msgstr "(Marcar las casillas para habilitar notificaciones a los receptores listados)" #: html/Ticket/Create.html:209 msgid "(Enter ticket ids or URLs, separated with spaces)" -msgstr "" +msgstr "(Entrar ids de los tickets o URLs, separados con espacios)" #: html/Admin/Queues/Modify.html:75 html/Admin/Queues/Modify.html:81 #. ($RT::CorrespondAddress) @@ -407,11 +407,11 @@ msgstr "(Sin plantillas)" #: html/Admin/Elements/PickCustomFields:47 html/Admin/Elements/PickObjects:47 msgid "(None)" -msgstr "" +msgstr "(Ninguno)" #: 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 "(Envia una copia oculta de esta actualizacion a una lista delimitada por comas de direcciones de email. <b>NO</b> cambia quien recibirá futuras actualizaciones)" +msgstr "(Envia una copia oculta de esta actualización a una lista delimitada por comas de direcciones de email. <b>NO</b> cambia quien recibirá futuras actualizaciones)" #: NOT FOUND IN SOURCE msgid "(Sends a blind carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will recieve future updates.)" @@ -435,7 +435,7 @@ msgstr "(Envia una copia de esta actualización a una lista de direcciones de co #: html/Admin/Elements/EditScrip:102 msgid "(Use these fields when you choose 'User Defined' for a condition or action)" -msgstr "" +msgstr "(Usar estos campos cuando se selecciona 'Definido por el usuario' para una condición o acción)" #: html/Admin/Groups/index.html:57 html/User/Groups/index.html:54 msgid "(empty)" @@ -455,7 +455,7 @@ msgstr "(sin valor)" #: html/Admin/Elements/EditCustomFieldValues:47 msgid "(no values)" -msgstr "" +msgstr "(sin valores)" #: html/Elements/EditLinks:130 html/Ticket/Elements/BulkLinks:49 msgid "(only one ticket)" @@ -463,11 +463,11 @@ msgstr "(solo un ticket)" #: html/Elements/RT__Ticket/ColumnMap:146 msgid "(pending approval)" -msgstr "(pendiente de aprobacion)" +msgstr "(pendiente de aprobación)" #: html/Elements/RT__Ticket/ColumnMap:149 msgid "(pending other Collection)" -msgstr "" +msgstr "(pendiente de otra Recopilación)" #: NOT FOUND IN SOURCE msgid "(pending other tickets)" @@ -516,7 +516,7 @@ msgstr "Una plantilla en blanco" #: html/Admin/Users/Modify.html:363 msgid "A password was not set, so user won't be able to login." -msgstr "" +msgstr "Una contraseña no fue especificada, por lo que el usuario no podrá acceder al sistema" #: NOT FOUND IN SOURCE msgid "ACE Deleted" @@ -544,7 +544,7 @@ msgstr "ACEs solo pueden ser creadas o borradas." #: html/Search/Elements/SelectAndOr:46 msgid "AND" -msgstr "" +msgstr "Y" #: NOT FOUND IN SOURCE msgid "Aborting to avoid unintended ticket modifications.\\n" @@ -569,11 +569,11 @@ msgstr "Acción %1 no encontrada" #: NOT FOUND IN SOURCE msgid "Action committed." -msgstr "Action committed." +msgstr "Acción realizada." #: bin/rt-crontool:148 msgid "Action committed.\\n" -msgstr "" +msgstr "Acción realizada.\\n" #: bin/rt-crontool:144 msgid "Action prepared..." @@ -581,7 +581,7 @@ msgstr "Acción preparada..." #: html/Search/Build.html:85 msgid "Add" -msgstr "" +msgstr "Añadir" #: html/Search/Bulk.html:114 msgid "Add AdminCc" @@ -593,11 +593,11 @@ msgstr "Añadir Cc" #: html/Search/Elements/EditFormat:49 msgid "Add Columns" -msgstr "" +msgstr "Añadir Columnas" #: html/Search/Elements/PickCriteria:46 msgid "Add Criteria" -msgstr "" +msgstr "Añadir Criterio" #: html/Ticket/Create.html:144 html/Ticket/Update.html:114 msgid "Add More Files" @@ -609,7 +609,7 @@ msgstr "Añadir solicitante" #: html/Admin/Elements/AddCustomFieldValue:46 msgid "Add Value" -msgstr "" +msgstr "Añadir Valor" #: NOT FOUND IN SOURCE msgid "Add a keyword selection to this queue" @@ -629,7 +629,7 @@ msgstr "Añadir un scrip que se aplicará a todas las colas" #: html/Search/Build.html:85 msgid "Add additional criteria" -msgstr "" +msgstr "Añadir criterio adicional" #: html/Search/Bulk.html:146 msgid "Add comments or replies to selected tickets" @@ -645,7 +645,7 @@ msgstr "Añadir nuevos observadores" #: lib/RT/CustomField_Overlay.pm:103 msgid "Add, delete and modify custom field values for objects" -msgstr "" +msgstr "Añadir, borrar y modificar campo personalizo para objetos" #: NOT FOUND IN SOURCE msgid "AddNextState" @@ -751,7 +751,7 @@ msgstr "Cc Administrativa" #: html/Ticket/Elements/Tabs:197 msgid "Advanced" -msgstr "" +msgstr "Avanzado" #: NOT FOUND IN SOURCE msgid "Advanced Search" @@ -767,15 +767,15 @@ msgstr "Edad" #: html/Search/Elements/PickCriteria:52 msgid "Aggregator" -msgstr "" +msgstr "Agregador" #: etc/initialdata:363 msgid "All Approvals Passed" -msgstr "" +msgstr "Todas las Aprobaciones Superadas" #: NOT FOUND IN SOURCE msgid "All Custom Fields" -msgstr "Todos los campos custom" +msgstr "Todos los Campos Personalizados" #: html/Admin/Queues/index.html:75 msgid "All Queues" @@ -787,30 +787,30 @@ msgstr "Siempre envia un mensaje a los solicitantes independientemente del remit #: html/Search/Elements/EditQuery:56 msgid "And/Or" -msgstr "" +msgstr "Y/O" #: html/Admin/CustomFields/Modify.html:73 html/Admin/Elements/CustomFieldTabs:83 msgid "Applies to" -msgstr "" +msgstr "Aplica a" #: html/Search/Edit.html:64 msgid "Apply" -msgstr "" +msgstr "Aplicar" #: html/Search/Edit.html:64 msgid "Apply your changes" -msgstr "" +msgstr "Aplicar cambios" #: html/Elements/Tabs:74 msgid "Approval" -msgstr "Aprobacion" +msgstr "Aprobación" #: 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) msgid "Approval #%1: %2" -msgstr "Aprobacion #%1: %2" +msgstr "Aprobación #%1: %2" #: html/Approvals/index.html:75 #. ($ticket->Id) @@ -820,7 +820,7 @@ msgstr "Aprobación #%1: No se han guardado las notas debido a un error del sist #: html/Approvals/index.html:73 #. ($ticket->Id) msgid "Approval #%1: Notes recorded" -msgstr "Aprobacion #%1: Notas guardadas" +msgstr "Aprobación #%1: Notas guardadas" #: NOT FOUND IN SOURCE msgid "Approval Details" @@ -828,11 +828,11 @@ msgstr "Detalles de la aprobación" #: etc/initialdata:351 msgid "Approval Passed" -msgstr "" +msgstr "Aprobación superada" #: etc/initialdata:374 msgid "Approval Rejected" -msgstr "" +msgstr "Aprobación rechazada" #: NOT FOUND IN SOURCE msgid "Approval diagram" @@ -860,7 +860,7 @@ msgstr "Ascendente" #: lib/RT/Queue_Overlay.pm:97 msgid "Assign and remove custom fields" -msgstr "" +msgstr "Asignar y borrar campos personalizados" #: lib/RT/Queue_Overlay.pm:97 msgid "AssignCustomFields" @@ -897,7 +897,7 @@ msgstr "Archivos adjuntos" #: lib/RT/Attributes_Overlay.pm:172 msgid "Attribute Deleted" -msgstr "" +msgstr "Atributo borrado" #: lib/RT/Date.pm:444 msgid "Aug." @@ -1002,11 +1002,11 @@ msgstr "No se puede agregar un campo personalizable si no tiene un nombre" #: html/Admin/CustomFields/Objects.html:86 #. ($Class) msgid "Can't find a collection class for '%1'" -msgstr "" +msgstr "No se puede encontrar una clase de recopilación para '%1'" #: html/Search/Build.html:761 msgid "Can't find a saved search to work with" -msgstr "" +msgstr "No se puede encontrar una búsqueda guardada para trabajar" #: lib/RT/Link_Overlay.pm:160 msgid "Can't link a ticket to itself" @@ -1018,7 +1018,7 @@ msgstr "No se puede fusionar dentro de un caso ya fusionado. Nunca deberia recib #: html/Search/Build.html:766 msgid "Can't save this search" -msgstr "" +msgstr "No se puede guardar esta búsqueda" #: lib/RT/Record.pm:1266 lib/RT/Record.pm:1344 msgid "Can't specifiy both base and target" @@ -1039,11 +1039,11 @@ msgstr "Cambiar contraseña" #: html/Elements/Submit:100 msgid "Check All" -msgstr "" +msgstr "Seleccionar Todo" #: html/SelfService/Update.html:78 html/Ticket/Create.html:131 html/Ticket/Update.html:95 msgid "Check box to delete" -msgstr "Check box to delete" +msgstr "Selecciona la casilla para borrar" #: html/Admin/Elements/SelectRights:55 msgid "Check box to revoke right" @@ -1059,7 +1059,7 @@ msgstr "Ciudad" #: html/Elements/Submit:102 msgid "Clear All" -msgstr "" +msgstr "Borrar Todo" #: html/Ticket/Elements/ShowDates:68 msgid "Closed" @@ -1071,7 +1071,7 @@ msgstr "Solicitudes cerradas" #: html/SelfService/Closed.html:46 html/SelfService/Elements/Tabs:66 msgid "Closed tickets" -msgstr "" +msgstr "Tickets cerrados" #: NOT FOUND IN SOURCE msgid "Command not understood!\\n" @@ -1135,7 +1135,7 @@ msgstr "Condición" #: bin/rt-crontool:131 msgid "Condition matches..." -msgstr "La condicion coincide..." +msgstr "La condición coincide..." #: lib/RT/Scrip_Overlay.pm:189 msgid "Condition not found" @@ -1171,7 +1171,7 @@ msgstr "No se pudo crear grupo" #: html/Search/Elements/EditSearches:64 msgid "Copy" -msgstr "" +msgstr "Copiar" #: etc/initialdata:286 msgid "Correspondence" @@ -1199,12 +1199,12 @@ msgstr "No se pudo añadir un nuevo valor de campo personalizable para el ticket #: lib/RT/Record.pm:1693 msgid "Could not add new custom field value. " -msgstr "" +msgstr "No se pudo añadir nuevo valor de campo personalizado." #: lib/RT/Record.pm:1646 #. (, $value_msg) msgid "Could not add new custom field value. %1 " -msgstr "" +msgstr "No se pudo añadir nuevo valor de campo personalizado. %1 " #: lib/RT/Ticket_Overlay.pm:3004 lib/RT/Ticket_Overlay.pm:3012 lib/RT/Ticket_Overlay.pm:3029 msgid "Could not change owner. " @@ -1218,7 +1218,7 @@ msgstr "No se puede crear un CampoPersonalizable" #: html/Admin/Elements/EditCustomField:113 #. ($msg) msgid "Could not create CustomField: %1" -msgstr "" +msgstr "No se pudo crear CustomField: %1" #: html/User/Groups/Modify.html:98 lib/RT/Group_Overlay.pm:502 lib/RT/Group_Overlay.pm:509 msgid "Could not create group" @@ -1263,7 +1263,7 @@ msgstr "No se pudo encontrar el usuario %1." #: html/Admin/CustomFields/Objects.html:69 msgid "Could not load CustomField %1" -msgstr "" +msgstr "No se pudo cargar CustomField %1" #: html/Admin/Groups/Members.html:109 html/User/Groups/Members.html:111 html/User/Groups/Modify.html:103 msgid "Could not load group" @@ -1272,11 +1272,11 @@ msgstr "No se puede cargar el grupo" #: lib/RT/SavedSearch.pm:120 #. ($privacy) msgid "Could not load object for %1" -msgstr "" +msgstr "No se pudo cargar objeto para %1" #: lib/RT/SavedSearch.pm:188 msgid "Could not load search attribute" -msgstr "" +msgstr "No se pudo cargar atributo de búsqueda" #: lib/RT/Queue_Overlay.pm:758 #. ($args{'Type'}) @@ -1299,7 +1299,7 @@ msgstr "No se pudo quitar ese principal como un %1 para este ticket" #: lib/RT/User_Overlay.pm:192 msgid "Could not set user info" -msgstr "" +msgstr "No se pudo establecer la información del usuario" #: lib/RT/Group_Overlay.pm:1011 msgid "Couldn't add member to group" @@ -1346,12 +1346,12 @@ msgstr "No se pudo cargar %1 desde la base de datos de usuarios.\\n" #: html/Admin/CustomFields/UserRights.html:149 #. ($id) msgid "Couldn't load Class %1" -msgstr "" +msgstr "No se pudo cargar Class %1" #: html/Admin/CustomFields/GroupRights.html:107 #. ($id) msgid "Couldn't load CustomField %1" -msgstr "" +msgstr "No se pudo cargar CustomField %1" #: NOT FOUND IN SOURCE msgid "Couldn't load KeywordSelects." @@ -1377,7 +1377,7 @@ msgstr "No se puedo cargar el enlace" #: html/Admin/Elements/ObjectCustomFields:83 html/Admin/Queues/CustomFields.html:59 html/Admin/Users/CustomFields.html:59 #. ($id) msgid "Couldn't load object %1" -msgstr "" +msgstr "No se pudo cargar objeto %1" #: html/Admin/Queues/People.html:142 #. ($id) @@ -1409,12 +1409,12 @@ msgstr "No se pudo cargar el ticket '%1'" #: lib/RT/Ticket_Overlay.pm:2612 #. ($args{'Base'}) msgid "Couldn't resolve base '%1' into a URI." -msgstr "" +msgstr "No se pudo resolver base '%1' en una URI." #: lib/RT/Ticket_Overlay.pm:2611 #. ($args{'Target'}) msgid "Couldn't resolve target '%1' into a URI." -msgstr "" +msgstr "No se pudo resolver objetivo '%1' en una URI." #: html/Admin/Users/Modify.html:173 html/User/Prefs.html:153 msgid "Country" @@ -1500,7 +1500,7 @@ msgstr "Crear una plantilla" #: html/SelfService/Create.html:46 html/SelfService/CreateTicketInQueue.html:46 msgid "Create a ticket" -msgstr "" +msgstr "Crear un ticket" #: NOT FOUND IN SOURCE msgid "Create failed: %1 / %2 / %3 " @@ -1565,7 +1565,7 @@ msgstr "Plantilla %1 creada" #: html/Search/Elements/PickBasics:102 msgid "Creator" -msgstr "" +msgstr "Creador" #: html/Elements/EditLinks:49 msgid "Current Links" @@ -1585,7 +1585,7 @@ msgstr "Permisos actuales" #: NOT FOUND IN SOURCE msgid "Current search criteria" -msgstr "Criterio de busqueda actual" +msgstr "Criterio de búsqueda actual" #: html/Admin/Queues/People.html:62 html/Ticket/Elements/EditPeople:66 msgid "Current watchers" @@ -1602,19 +1602,19 @@ msgstr "Campos personalizables" #: html/Admin/CustomFields/index.html:59 #. ($lookup) msgid "Custom Fields for %1" -msgstr "" +msgstr "Campos Personalizados para %1" #: html/Admin/Elements/EditScrip:123 msgid "Custom action cleanup code" -msgstr "Codigo de limpieza de accion personalizable" +msgstr "Codigo de limpieza de acción personalizable" #: html/Admin/Elements/EditScrip:115 msgid "Custom action preparation code" -msgstr "Codigo de preparacion de accion personalizable" +msgstr "Codigo de preparación de acción personalizable" #: html/Admin/Elements/EditScrip:107 msgid "Custom condition" -msgstr "Condicion personalizable" +msgstr "Condición personalizable" #: NOT FOUND IN SOURCE msgid "Custom field %1 %2 %3" @@ -1694,11 +1694,11 @@ msgstr "Plantilla de autorespuesta por defect" #: html/Tools/Offline.html:61 msgid "Default Queue" -msgstr "" +msgstr "Cola por Defecto" #: html/Tools/Offline.html:70 msgid "Default Requestor" -msgstr "" +msgstr "Solicitante por Defecto" #: etc/initialdata:296 msgid "Default admin comment template" @@ -1742,16 +1742,16 @@ msgstr "Borrar" #: html/Admin/Elements/EditTemplates:79 msgid "Delete Template" -msgstr "" +msgstr "Borrar Plantilla" #: lib/RT/SavedSearch.pm:211 #. ($msg) msgid "Delete failed: %1" -msgstr "" +msgstr "Borrado fallido: %1" #: html/Admin/Elements/EditScrips:74 msgid "Delete selected scrips" -msgstr "" +msgstr "Borrar scripts seleccionados" #: lib/RT/Queue_Overlay.pm:115 msgid "Delete tickets" @@ -1763,7 +1763,7 @@ msgstr "DeleteTicket" #: lib/RT/SavedSearch.pm:209 msgid "Deleted search" -msgstr "" +msgstr "Búsqueda borrada" #: NOT FOUND IN SOURCE msgid "Deleting this object could break referential integrity" @@ -1800,22 +1800,22 @@ msgstr "Dependencias: \\n" #: lib/RT/Transaction_Overlay.pm:707 #. ($value) msgid "Dependency by %1 added" -msgstr "" +msgstr "Dependencia para %1 añadida" #: lib/RT/Transaction_Overlay.pm:747 #. ($value) msgid "Dependency by %1 deleted" -msgstr "" +msgstr "Dependencia para %1 borrada" #: lib/RT/Transaction_Overlay.pm:704 #. ($value) msgid "Dependency on %1 added" -msgstr "" +msgstr "Dependencia en %1 añadida" #: lib/RT/Transaction_Overlay.pm:744 #. ($value) msgid "Dependency on %1 deleted" -msgstr "" +msgstr "Dependencia en %1 borrada" #: 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 msgid "Depends on" @@ -1851,7 +1851,7 @@ msgstr "Mostrar Lista de Control de Acceso" #: html/Search/Elements/DisplayOptions:46 msgid "Display Columns" -msgstr "" +msgstr "Mostrar Columnas" #: lib/RT/Queue_Overlay.pm:100 msgid "Display Scrip templates for this queue" @@ -1867,7 +1867,7 @@ msgstr "Modo de despliegue" #: lib/RT/Group_Overlay.pm:176 msgid "Display saved searches for this group" -msgstr "" +msgstr "Mostrar búsquedas guardadas para este grupo" #: NOT FOUND IN SOURCE msgid "Display ticket #%1" @@ -1883,7 +1883,7 @@ msgstr "Hacer cualquier cosa y todo" #: html/Search/Build.html:112 msgid "Do the Search" -msgstr "" +msgstr "Realizar búsqueda" #: html/Elements/Refresh:51 msgid "Don't refresh this page." @@ -1891,7 +1891,7 @@ msgstr "No recargar esta página" #: NOT FOUND IN SOURCE msgid "Don't show search results" -msgstr "No mostrar los resultados de la busqueda" +msgstr "No mostrar los resultados de la búsqueda" #: html/Ticket/Elements/ShowTransactionAttachments:82 msgid "Download" @@ -1899,15 +1899,15 @@ msgstr "Descargar" #: html/Admin/Groups/index.html:61 html/Admin/Users/index.html:64 msgid "Download as a tab-delimited file" -msgstr "" +msgstr "Descargar como un fichero tabulado" #: 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 msgid "Due" -msgstr "Retraso" +msgstr "Esperado" #: NOT FOUND IN SOURCE msgid "Due date '%1' could not be parsed" -msgstr "La fecha de retraso '%1' no pudo ser leida" +msgstr "La fecha esperada '%1' no pudo ser leÃda" #: NOT FOUND IN SOURCE msgid "ERROR: Couldn't load ticket '%1': %2.\\n" @@ -1924,15 +1924,15 @@ msgstr "Editar campos personalizados para %1" #: html/Admin/Global/CustomFields/Groups.html:9 msgid "Edit Custom Fields for all groups" -msgstr "" +msgstr "Editar Campos Personalizados para todos los grupos" #: html/Admin/Global/CustomFields/Users.html:9 msgid "Edit Custom Fields for all users" -msgstr "" +msgstr "Editar Campos Personalizados para todos los usuarios" #: 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 "Editar Campos Personalizados para tickets en todas las colas" #: html/Search/Bulk.html:173 html/Ticket/ModifyLinks.html:57 msgid "Edit Links" @@ -1940,7 +1940,7 @@ msgstr "Editar relaciones" #: html/Search/Edit.html:68 msgid "Edit Query" -msgstr "" +msgstr "Editar Consulta" #: html/Admin/Queues/Templates.html:63 #. ($QueueObj->Name) @@ -1953,7 +1953,7 @@ msgstr "Editar palabras clave" #: lib/RT/Group_Overlay.pm:175 msgid "Edit saved searches for this group" -msgstr "" +msgstr "Editar búsquedas guardadas para este grupo" #: NOT FOUND IN SOURCE msgid "Edit scrips" @@ -2048,7 +2048,7 @@ msgstr "Estado %1 habilitado" #: html/Admin/CustomFields/Modify.html:143 html/Admin/Queues/Modify.html:162 #. (loc_fuzzy($msg)) msgid "Enabled status: %1" -msgstr "" +msgstr "Estado habilitado: %1" #: lib/RT/CustomField_Overlay.pm:64 msgid "Enter multiple values" @@ -2056,7 +2056,7 @@ msgstr "Introducir multiples valores" #: html/Elements/EditLinks:124 msgid "Enter objects or URIs to link objects to. Separate multiple entries with spaces." -msgstr "" +msgstr "Entrar objetos o URIs para linkar a los objetos. Separar múltiples entradas con espacios." #: lib/RT/CustomField_Overlay.pm:65 msgid "Enter one value" @@ -2064,7 +2064,7 @@ msgstr "Introducir un valor" #: html/Elements/EditLinks:121 msgid "Enter queues or URIs to link queues to. Separate multiple entries with spaces." -msgstr "" +msgstr "Entrar colas o URIs para linkar a las colas. Separar múltiples entradas con espacios." #: html/Elements/EditLinks:117 html/Search/Bulk.html:174 msgid "Enter tickets or URIs to link tickets to. Separate multiple entries with spaces." @@ -2072,7 +2072,7 @@ msgstr "Ingrese los números de ticket o las URL que llevan hacia el ticket. Sep #: lib/RT/CustomField_Overlay.pm:66 msgid "Enter up to %1 values" -msgstr "" +msgstr "Entrar hasta %1 valor/es" #: html/Elements/Login:61 html/SelfService/Error.html:46 html/SelfService/Error.html:47 msgid "Error" @@ -2092,7 +2092,7 @@ msgstr "Error en los parámetros para Queue->DelWatcher" #: lib/RT/Queue_Overlay.pm:830 msgid "Error in parameters to Queue->DeleteWatcher" -msgstr "" +msgstr "Error en los parámetros para Queue->DeleteWatcher" #: lib/RT/Ticket_Overlay.pm:1333 msgid "Error in parameters to Ticket->AddWatcher" @@ -2104,15 +2104,15 @@ msgstr "Error en los parámetros para Queue->DelWatcher" #: lib/RT/Ticket_Overlay.pm:1499 msgid "Error in parameters to Ticket->DeleteWatcher" -msgstr "" +msgstr "Error en los parámetros para Ticket->DeleteWatcher" #: bin/rt-crontool:233 msgid "Escalate tickets" -msgstr "" +msgstr "Escalar tickets" #: html/Ticket/Elements/ShowBasics:57 msgid "Estimated" -msgstr "" +msgstr "Estimado" #: etc/initialdata:20 msgid "Everyone" @@ -2136,7 +2136,7 @@ msgstr "Información extra" #: lib/RT/SavedSearch.pm:165 msgid "Failed to create search attribute" -msgstr "" +msgstr "Fallado en crear atributo de búsqueda" #: lib/RT/User_Overlay.pm:377 msgid "Failed to find 'Privileged' users pseudogroup." @@ -2154,7 +2154,7 @@ msgstr "Error al cargar el modulo %1. (%2)" #: lib/RT/SavedSearch.pm:168 #. ($privacy) msgid "Failed to load object for %1" -msgstr "" +msgstr "Error al cargar objeto para %1" #: lib/RT/Date.pm:438 msgid "Feb." @@ -2166,31 +2166,31 @@ msgstr "Febrero" #: html/Elements/SelectAttachmentField:50 msgid "Filename" -msgstr "" +msgstr "Nombre de fichero" #: lib/RT/CustomField_Overlay.pm:69 msgid "Fill in multiple text areas" -msgstr "" +msgstr "Rellenar en multiples areas de texto" #: lib/RT/CustomField_Overlay.pm:74 msgid "Fill in multiple wikitext areas" -msgstr "" +msgstr "Rellenar en multiples areas wikitext" #: lib/RT/CustomField_Overlay.pm:70 msgid "Fill in one text area" -msgstr "" +msgstr "Rellenar en un area de texto" #: lib/RT/CustomField_Overlay.pm:75 msgid "Fill in one wikitext area" -msgstr "" +msgstr "Rellenar en un area wikitext" #: lib/RT/CustomField_Overlay.pm:71 msgid "Fill in up to %1 text areas" -msgstr "" +msgstr "Rellenar en hasta %1 areas de texto" #: lib/RT/CustomField_Overlay.pm:76 msgid "Fill in up to %1 wikitext areas" -msgstr "" +msgstr "Rellenar en hasta %1 areas wikitext" #: NOT FOUND IN SOURCE msgid "Fin" @@ -2210,7 +2210,7 @@ msgstr "Encontrar grupo que" #: html/Admin/Groups/index.html:72 html/Admin/Queues/People.html:82 html/Ticket/Elements/EditPeople:55 msgid "Find groups whose" -msgstr "" +msgstr "Encontrar grupos cuyo" #: NOT FOUND IN SOURCE msgid "Find new/open tickets" @@ -2226,7 +2226,7 @@ msgstr "Encontrar tickets" #: NOT FOUND IN SOURCE msgid "Finish Approval" -msgstr "Aprobacion final" +msgstr "Aprobación final" #: html/Ticket/Elements/Tabs:81 msgid "First" @@ -2250,7 +2250,7 @@ msgstr "Forzar cambio" #: html/Search/Elements/EditFormat:52 msgid "Format" -msgstr "" +msgstr "Formato" #: html/Search/Results.html:107 #. ($ticketcount) @@ -2283,7 +2283,7 @@ msgstr "Encabezados completos" #: html/Tools/Offline.html:87 msgid "Get template from file" -msgstr "" +msgstr "Obtener plantilla desde fichero" #: NOT FOUND IN SOURCE msgid "Getting the current user from a pgp sig\\n" @@ -2300,11 +2300,11 @@ msgstr "Global" #: html/Admin/Elements/EditCustomFields:55 msgid "Global Custom Fields" -msgstr "" +msgstr "Campos Personalizados Globales" #: NOT FOUND IN SOURCE msgid "Global Keyword Selections" -msgstr "Seleccion de palabras clave globales" +msgstr "Selección de palabras clave globales" #: NOT FOUND IN SOURCE msgid "Global Scrips" @@ -2312,7 +2312,7 @@ msgstr "Acciones Globales" #: html/Admin/Global/CustomFields/index.html:59 msgid "Global custom field configuration" -msgstr "" +msgstr "Configuración de Campos Personalizados Globales" #: html/Admin/Elements/SelectTemplate:59 #. (loc($Template->Name)) @@ -2321,7 +2321,7 @@ msgstr "Plantilla global" #: html/Tools/Offline.html:91 msgid "Go" -msgstr "" +msgstr "Ir" #: 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 msgid "Go!" @@ -2394,11 +2394,11 @@ msgstr "Los grupos no pueden ser miembros de sus propios miembros" #: html/Admin/Groups/index.html:82 msgid "Groups matching search criteria" -msgstr "" +msgstr "Grupos coincidentes con el criterio de búsqueda" #: html/Ticket/Elements/ShowRequestor:77 msgid "Groups this user belongs to" -msgstr "" +msgstr "Grupos a los que este usuario pertenece" #: lib/RT/Interface/CLI.pm:94 lib/RT/Interface/CLI.pm:94 msgid "Hello!" @@ -2416,12 +2416,12 @@ msgstr "Historial" #: html/Admin/Groups/History.html:62 #. ($GroupObj->Name) msgid "History of the group %1" -msgstr "" +msgstr "Historico del grupo %1" #: html/Admin/Users/History.html:62 #. ($UserObj->Name) msgid "History of the user %1" -msgstr "" +msgstr "Historico del usuario %1" #: NOT FOUND IN SOURCE msgid "HomePhone" @@ -2442,7 +2442,7 @@ msgstr "Tengo [quant,_1,concrete mixer]." #: html/Search/Build.html:637 msgid "I'm lost" -msgstr "" +msgstr "Estoy perdido" #: html/Ticket/Elements/ShowBasics:48 lib/RT/Tickets_Overlay.pm:1494 msgid "Id" @@ -2454,15 +2454,15 @@ msgstr "Identidad" #: etc/initialdata:429 msgid "If an approval is rejected, reject the original and delete pending approvals" -msgstr "Si una aprobacion es rechazada, rechazar la original y borrar las aprobaciones pendientes" +msgstr "Si una aprobación es rechazada, rechazar la original y borrar las aprobaciones pendientes" #: html/Tools/Offline.html:74 msgid "If no Requestor is specified, create tickets with this requestor." -msgstr "" +msgstr "Si no es especificado un Solicitante, crear tickets con este solicitante." #: html/Tools/Offline.html:65 msgid "If no queue is specified, create tickets in this queue." -msgstr "" +msgstr "Si no es especificada una cola, crear tickets en esta cola." #: bin/rt-crontool:215 msgid "If this tool were setgid, a hostile local user could use this tool to gain administrative access to RT." @@ -2486,7 +2486,7 @@ msgstr "Incluir campos personalizables deshabilitados en el listado." #: html/Admin/Groups/index.html:65 msgid "Include disabled groups in listing." -msgstr "" +msgstr "Incluir grupos deshabilitados en listado." #: html/Admin/Queues/index.html:65 msgid "Include disabled queues in listing." @@ -2498,11 +2498,11 @@ msgstr "Incluir usuarios deshabilitados en la búsqueda" #: html/Search/Build.html:663 msgid "Incomplete Query" -msgstr "" +msgstr "Consulta Incompleta" #: html/Search/Build.html:660 msgid "Incomplete query" -msgstr "" +msgstr "Consulta incompleta" #: html/Search/Elements/PickBasics:161 lib/RT/Tickets_Overlay.pm:1544 msgid "Initial Priority" @@ -2632,11 +2632,11 @@ msgstr "Leng" #: html/Admin/Users/Modify.html:94 html/User/Prefs.html:76 msgid "Language" -msgstr "" +msgstr "Lenguaje" #: html/Search/Elements/EditFormat:79 msgid "Large" -msgstr "" +msgstr "Grande" #: html/Ticket/Elements/Tabs:96 msgid "Last" @@ -2668,7 +2668,7 @@ msgstr "" #: html/Ticket/Elements/ShowBasics:68 msgid "Left" -msgstr "Izquierda" +msgstr "Queda" #: html/Admin/Users/Modify.html:109 msgid "Let this user access RT" @@ -2727,11 +2727,11 @@ msgstr "Enlaces" #: html/Search/Elements/EditSearches:76 msgid "Load" -msgstr "" +msgstr "Cargar" #: html/Search/Elements/EditSearches:74 msgid "Load saved search:" -msgstr "" +msgstr "Cargar búsqueda guardada:" #: lib/RT/System.pm:87 msgid "LoadSavedSearch" @@ -2739,16 +2739,16 @@ msgstr "" #: html/Admin/Tools/Configuration.html:64 msgid "Loaded perl modules" -msgstr "" +msgstr "Modulos perl cargados" #: lib/RT/SavedSearch.pm:112 #. ($self->Name) msgid "Loaded search %1" -msgstr "" +msgstr "Cargada búsqueda %1" #: html/Admin/Users/Modify.html:138 html/User/Prefs.html:126 msgid "Location" -msgstr "Direccion" +msgstr "Dirección" #: lib/RT.pm:212 #. ($RT::LogDir) @@ -2814,11 +2814,11 @@ msgstr "Establecer tÃtulo" #: lib/RT/Group_Overlay.pm:177 msgid "Make this group visible to user" -msgstr "" +msgstr "Hacer este grupo visible al usuario" #: html/Admin/index.html:78 msgid "Manage custom fields and custom field values" -msgstr "" +msgstr "Gestionar campos personalizados y valores de campos personalizados" #: html/Admin/index.html:69 msgid "Manage groups and group membership" @@ -2826,7 +2826,7 @@ msgstr "Administrar grupos y miembros" #: html/Admin/index.html:85 msgid "Manage properties and configuration which apply to all queues" -msgstr "Administrar propiedades y configuracion que se aplique a todas las colas" +msgstr "Administrar propiedades y configuración que se aplique a todas las colas" #: html/Admin/index.html:74 msgid "Manage queues and queue-specific properties" @@ -2855,12 +2855,12 @@ msgstr "May." #: lib/RT/Transaction_Overlay.pm:720 #. ($value) msgid "Member %1 added" -msgstr "" +msgstr "Miembro %1 añadido" #: lib/RT/Transaction_Overlay.pm:760 #. ($value) msgid "Member %1 deleted" -msgstr "" +msgstr "Miembro %1 borrado" #: lib/RT/Group_Overlay.pm:1008 msgid "Member added" @@ -2889,21 +2889,21 @@ msgstr "Miembros" #: lib/RT/Transaction_Overlay.pm:717 #. ($value) msgid "Membership in %1 added" -msgstr "" +msgstr "Pertenencia a %1 añadida" #: lib/RT/Transaction_Overlay.pm:757 #. ($value) msgid "Membership in %1 deleted" -msgstr "" +msgstr "Pertenencia a %1 añadida" #: html/Admin/Elements/UserTabs:61 msgid "Memberships" -msgstr "" +msgstr "Pertenencias" #: html/Admin/Users/Memberships.html:60 #. ($UserObj->Name) msgid "Memberships of the user %1" -msgstr "" +msgstr "Pertenencias del usuario %1" #: lib/RT/Ticket_Overlay.pm:2849 msgid "Merge Successful" @@ -2915,7 +2915,7 @@ msgstr "Fusión fallida. No se pudo establecer el EffectiveId" #: lib/RT/Ticket_Overlay.pm:2744 msgid "Merge failed. Couldn't set Status" -msgstr "" +msgstr "Unión fallida. No se pudo establecer el Estado" #: html/Elements/EditLinks:129 html/Ticket/Elements/BulkLinks:48 msgid "Merge into" @@ -2924,7 +2924,7 @@ msgstr "Fusionar dentro de" #: lib/RT/Transaction_Overlay.pm:723 #. ($value) msgid "Merged into %1" -msgstr "" +msgstr "Unido en %1" #: html/Search/Bulk.html:165 html/Ticket/Update.html:116 msgid "Message" @@ -2932,19 +2932,19 @@ msgstr "Mensaje" #: lib/RT/Ticket_Overlay.pm:2406 msgid "Message could not be recorded" -msgstr "" +msgstr "Mensaje no pudo ser grabado" #: lib/RT/Ticket_Overlay.pm:2409 msgid "Message recorded" -msgstr "" +msgstr "Mensaje grabado" #: html/Ticket/Elements/PreviewScrips:115 msgid "Messages about this ticket will not be sent to..." -msgstr "" +msgstr "Mensajes acerca de este ticket no seran enviados..." #: html/Search/Build.html:667 msgid "Mismatched parentheses" -msgstr "" +msgstr "Parentesis no coincidentes" #: lib/RT/Record.pm:940 msgid "Missing a primary key?: %1" @@ -2969,12 +2969,12 @@ msgstr "Modificar el campo personalizable %1" #: html/Admin/Elements/ObjectCustomFields:96 #. (loc(lc($FriendlySubTypes)), loc(lc($Types))) msgid "Modify Custom Fields which apply to %1 for all %2" -msgstr "" +msgstr "Modificar Campos Personalizados que aplican a %1 para todo %2" #: html/Admin/Elements/ObjectCustomFields:98 #. (loc(lc($Types))) msgid "Modify Custom Fields which apply to all %1" -msgstr "" +msgstr "Modificar Campos Personalizados que aplican a todo %1" #: NOT FOUND IN SOURCE msgid "Modify Custom Fields which apply to all queues" @@ -2982,15 +2982,15 @@ msgstr "Modificar los campos personalizables que se apliquen a todas las colas" #: html/Admin/Global/GroupRights.html:106 html/Admin/Groups/GroupRights.html:94 html/Admin/Queues/GroupRights.html:107 msgid "Modify Group Rights" -msgstr "" +msgstr "Modificar Derechos de Grupo" #: html/Admin/Groups/Members.html:102 html/User/Groups/Members.html:101 msgid "Modify Members" -msgstr "" +msgstr "Modificar Miembros" #: html/User/Delegation.html:58 msgid "Modify Rights" -msgstr "" +msgstr "Modificar Derechos" #: lib/RT/Queue_Overlay.pm:98 msgid "Modify Scrip templates for this queue" @@ -3010,7 +3010,7 @@ msgstr "Modificar plantilla %1" #: html/Admin/Global/UserRights.html:75 html/Admin/Groups/UserRights.html:76 html/Admin/Queues/UserRights.html:75 msgid "Modify User Rights" -msgstr "" +msgstr "Modificar Derechos de Usuario" #: html/Admin/Queues/CustomField.html:66 #. ($QueueObj->Name()) @@ -3033,7 +3033,7 @@ msgstr "Modificar un scrip que se aplique a todas las colas" #: html/Admin/CustomFields/Objects.html:90 #. ($CF->Name) msgid "Modify associated objects for %1" -msgstr "" +msgstr "Modificar objetos asociados para %1" #: NOT FOUND IN SOURCE msgid "Modify dates for # %1" @@ -3051,7 +3051,7 @@ msgstr "Modificar fechas para ticket # %1" #: html/Admin/Elements/GlobalCustomFieldTabs:65 html/Admin/Global/index.html:72 msgid "Modify global custom fields" -msgstr "" +msgstr "Modificar campos personalizados globales" #: 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" @@ -3088,7 +3088,7 @@ msgstr "Modificar metadatos del grupo o borrar grupo" #: html/Admin/CustomFields/GroupRights.html:164 #. ($CustomFieldObj->Name) msgid "Modify group rights for custom field %1" -msgstr "" +msgstr "Modificar derechos de grupo para campos personalizados %1" #: html/Admin/Groups/GroupRights.html:46 html/Admin/Groups/GroupRights.html:50 html/Admin/Groups/GroupRights.html:56 #. ($GroupObj->Name) @@ -3111,13 +3111,13 @@ msgstr "Modificar la propia cuenta RT" #: html/Admin/Queues/People.html:46 html/Admin/Queues/People.html:50 #. ($QueueObj->Name) msgid "Modify people related to queue %1" -msgstr "Modificar personas relacionadas al cola %1" +msgstr "Modificar personas relacionadas con la cola %1" #: html/Ticket/ModifyPeople.html:46 html/Ticket/ModifyPeople.html:50 html/Ticket/ModifyPeople.html:56 #. ($Ticket->id) #. ($Ticket->Id) msgid "Modify people related to ticket #%1" -msgstr "Modificar personas relacionadas al ticket #%1" +msgstr "Modificar personas relacionadas con el ticket #%1" #: html/Admin/Queues/Scrips.html:67 #. ($QueueObj->Name) @@ -3169,7 +3169,7 @@ msgstr "Modificar tickets" #: html/Admin/CustomFields/UserRights.html:157 #. ($CustomFieldObj->Name) msgid "Modify user rights for custom field %1" -msgstr "" +msgstr "Modificar derechos de usuario para campos personalidos %1" #: html/Admin/Groups/UserRights.html:46 html/Admin/Groups/UserRights.html:50 html/Admin/Groups/UserRights.html:56 #. ($GroupObj->Name) @@ -3245,7 +3245,7 @@ msgstr "Se debe especificar un nombre" #: html/SelfService/Elements/MyRequests:70 #. ($friendly_status) msgid "My %1 tickets" -msgstr "" +msgstr "Mis %1 tickets" #: NOT FOUND IN SOURCE msgid "My Approvals" @@ -3257,7 +3257,7 @@ msgstr "Mis aprobaciones" #: html/Search/Elements/SearchPrivacy:50 html/Search/Elements/SelectSearchObject:53 html/Search/Elements/SelectSearchesForObjects:53 msgid "My saved searches" -msgstr "" +msgstr "Mis búsquedas guardadas" #: 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 msgid "Name" @@ -3269,7 +3269,7 @@ msgstr "Nombre en uso" #: NOT FOUND IN SOURCE msgid "Need approval from system administrator" -msgstr "Se necesita aprobacion del administrador del sistema" +msgstr "Se necesita aprobación del administrador del sistema" #: html/Ticket/Elements/ShowDates:73 msgid "Never" @@ -3293,7 +3293,7 @@ msgstr "Nueva pendiente de aprobación" #: html/Ticket/Elements/Tabs:193 msgid "New Query" -msgstr "" +msgstr "Nueva Consulta" #: NOT FOUND IN SOURCE msgid "New Search" @@ -3341,7 +3341,7 @@ msgstr "Nueva plantilla" #: html/SelfService/Elements/Tabs:69 msgid "New ticket" -msgstr "" +msgstr "Nuevo ticket" #: lib/RT/Ticket_Overlay.pm:2713 msgid "New ticket doesn't exist" @@ -3369,7 +3369,7 @@ msgstr "Siguiente" #: html/Elements/TicketList:104 msgid "Next Page" -msgstr "" +msgstr "Pagina siguiente" #: NOT FOUND IN SOURCE msgid "Next page" @@ -3385,7 +3385,7 @@ msgstr "Alias" #: html/Admin/CustomFields/UserRights.html:145 msgid "No Class defined" -msgstr "" +msgstr "No existe Class definida" #: html/Admin/CustomFields/Modify.html:124 html/Admin/Elements/EditCustomField:119 msgid "No CustomField" @@ -3393,7 +3393,7 @@ msgstr "No hay campo personalizable" #: html/Admin/CustomFields/GroupRights.html:103 msgid "No CustomField defined" -msgstr "" +msgstr "No existe CustomField definido" #: html/Admin/Groups/GroupRights.html:105 html/Admin/Groups/UserRights.html:92 msgid "No Group defined" @@ -3401,7 +3401,7 @@ msgstr "No hay grupo definido" #: lib/RT/Tickets_Overlay_SQL.pm:477 msgid "No Query" -msgstr "" +msgstr "No existe Consulta" #: html/Admin/Queues/GroupRights.html:118 html/Admin/Queues/UserRights.html:89 msgid "No Queue defined" @@ -3425,7 +3425,7 @@ msgstr "No se especificó ticket. Abortando las modificaciones al ticket\\n\\n" #: html/Approvals/Elements/Approve:67 msgid "No action" -msgstr "No action" +msgstr "No acción" #: lib/RT/Record.pm:935 msgid "No column specified" @@ -3454,11 +3454,11 @@ msgstr "No hay grupo especificado" #: html/Admin/Groups/index.html:52 msgid "No groups matching search criteria found." -msgstr "" +msgstr "No existen grupos coincidentes con el criterio de búsqueda." #: lib/RT/Ticket_Overlay.pm:2349 msgid "No message attached" -msgstr "" +msgstr "Mensaje no adjuntado" #: lib/RT/User_Overlay.pm:1035 msgid "No password set" @@ -3507,7 +3507,7 @@ msgstr "Sin privilegios concedidos" #: lib/RT/SavedSearch.pm:187 msgid "No search loaded" -msgstr "" +msgstr "No hay búsqueda cargada" #: html/Search/Bulk.html:194 msgid "No search to operate on." @@ -3515,7 +3515,7 @@ msgstr "No hay búsqueda sobre la que operar" #: html/Elements/RT__Ticket/ColumnMap:134 msgid "No subject" -msgstr "" +msgstr "No hay asunto" #: NOT FOUND IN SOURCE msgid "No ticket id specified" @@ -3587,11 +3587,11 @@ msgstr "Notificar AdminCcs como comentario" #: etc/initialdata:93 etc/upgrade/3.1.17/content:6 msgid "Notify Ccs" -msgstr "" +msgstr "Notificar Ccs" #: etc/initialdata:89 etc/upgrade/3.1.17/content:2 msgid "Notify Ccs as Comment" -msgstr "" +msgstr "Notificar Ccs como Comentarios" #: etc/initialdata:128 msgid "Notify Other Recipients" @@ -3611,15 +3611,15 @@ msgstr "Notificar al propietario como comentario" #: etc/initialdata:376 msgid "Notify Owner of their rejected ticket" -msgstr "" +msgstr "Notificar al Propietario del ticket su rechazo" #: etc/initialdata:365 msgid "Notify Owner of their ticket has been approved by all approvers" -msgstr "" +msgstr "Notificar al Propietario del ticket de la aprobación por todos los aprobadores" #: etc/initialdata:353 msgid "Notify Owner of their ticket has been approved by some approver" -msgstr "" +msgstr "Notificar al Propietario del ticket de la aprobación por algun aprobador" #: etc/initialdata:334 msgid "Notify Owners and AdminCcs of new items pending their approval" @@ -3655,7 +3655,7 @@ msgstr "Noviembre" #: html/Search/Elements/SelectAndOr:47 msgid "OR" -msgstr "" +msgstr "O" #: lib/RT/Record.pm:319 msgid "Object could not be created" @@ -3663,7 +3663,7 @@ msgstr "No se pudo crear el objeto" #: lib/RT/Record.pm:124 msgid "Object could not be deleted" -msgstr "" +msgstr "Objeto no pudo ser borrado" #: lib/RT/Record.pm:338 msgid "Object created" @@ -3671,13 +3671,13 @@ msgstr "Objeto creado" #: lib/RT/Record.pm:121 msgid "Object deleted" -msgstr "" +msgstr "Objeto borrado" #: html/Admin/CustomFields/Objects.html:72 html/Admin/Elements/ObjectCustomFields:63 #. ($ObjectType) #. ($LookupType) msgid "Object of type %1 cannot take custom fields" -msgstr "" +msgstr "Objeto de tipo %1 no puede tener campos personalizados" #: lib/RT/CustomField_Overlay.pm:901 msgid "Object type mismatch" @@ -3725,7 +3725,7 @@ msgstr "Al cambiar de propietario" #: etc/initialdata:177 etc/upgrade/3.1.17/content:15 msgid "On Priority Change" -msgstr "" +msgstr "Al cambiar de prioridad" #: etc/initialdata:192 msgid "On Queue Change" @@ -3741,7 +3741,7 @@ msgstr "Al cambiar de status" #: etc/initialdata:150 msgid "On Transaction" -msgstr "Al hacer transaccion" +msgstr "Al hacer transacción" #: html/Approvals/Elements/PendingMyApproval:71 #. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter'>") @@ -3767,7 +3767,7 @@ msgstr "Solicitudes abiertas" #: html/SelfService/Elements/Tabs:63 msgid "Open tickets" -msgstr "" +msgstr "Tickets abiertos" #: NOT FOUND IN SOURCE msgid "Open tickets (from listing) in a new window" @@ -3783,7 +3783,7 @@ msgstr "Open tickets on correspondence" #: html/Search/Elements/DisplayOptions:56 msgid "Order by" -msgstr "" +msgstr "Ordenar por" #: NOT FOUND IN SOURCE msgid "Ordering and sorting" @@ -3800,11 +3800,11 @@ msgstr "Ticket originario: #%1" #: lib/RT/Transaction_Overlay.pm:611 msgid "Outgoing email about a comment recorded" -msgstr "" +msgstr "Email saliente acerca de un comentario grabado" #: lib/RT/Transaction_Overlay.pm:615 msgid "Outgoing email recorded" -msgstr "" +msgstr "Email saliente grabado" #: html/Admin/Queues/Modify.html:90 msgid "Over time, priority moves toward" @@ -3828,7 +3828,7 @@ msgstr "Propietario cambiado de %1 a %2" #: lib/RT/Ticket_Overlay.pm:495 msgid "Owner could not be set." -msgstr "" +msgstr "Propietario no pudo ser fijado." #: lib/RT/Transaction_Overlay.pm:661 #. ($Old->Name , $New->Name) @@ -3842,7 +3842,7 @@ msgstr "El propietario es" #: html/Elements/TicketList:78 #. ($Page, int($TotalFound/$Rows)+$oddRows) msgid "Page %1 of %2" -msgstr "" +msgstr "Pagina %1 de %2" #: html/Admin/Users/Modify.html:198 html/User/Prefs.html:97 msgid "Pager" @@ -3871,11 +3871,11 @@ msgstr "Contraseña cambiado" #: lib/RT/User_Overlay.pm:1038 lib/RT/User_Overlay.pm:215 #. ($RT::MinimumPasswordLength) msgid "Password needs to be at least %1 characters long" -msgstr "" +msgstr "La contraseña debe ser de al menos %1 caracteres de longitud" #: lib/RT/User_Overlay.pm:1045 msgid "Password set" -msgstr "" +msgstr "Contraseña fijada" #: NOT FOUND IN SOURCE msgid "Password too short" @@ -3888,15 +3888,15 @@ msgstr "Contraseña: %1" #: lib/RT/User_Overlay.pm:1031 msgid "Password: Permission Denied" -msgstr "" +msgstr "Contraseña: Permiso Denegado" #: html/Admin/Users/Modify.html:356 msgid "Passwords do not match." -msgstr "" +msgstr "Las Contraseñas no coinciden" #: html/User/Prefs.html:234 msgid "Passwords do not match. Your password has not been changed" -msgstr "" +msgstr "Las contraseñas no coinciden. Tu contraseña no ha sido cambiada" #: html/Ticket/Elements/ShowSummary:66 html/Ticket/Elements/Tabs:119 html/Ticket/ModifyAll.html:72 msgid "People" @@ -3904,7 +3904,7 @@ msgstr "Personas" #: etc/initialdata:133 msgid "Perform a user-defined action" -msgstr "Realizar una acion definida por el usuario" +msgstr "Realizar una acción definida por el usuario" #: html/Admin/Tools/Configuration.html:94 msgid "Perl configuration" @@ -3952,7 +3952,7 @@ msgstr "Prev" #: html/Elements/TicketList:101 msgid "Previous Page" -msgstr "" +msgstr "Página Anterior" #: NOT FOUND IN SOURCE msgid "Previous page" @@ -3998,11 +3998,11 @@ msgstr "Pseudogrupo para uso interno" #: html/Search/Elements/EditQuery:47 msgid "Query" -msgstr "" +msgstr "Consulta" #: html/Search/Build.html:124 html/Ticket/Elements/Tabs:195 msgid "Query Builder" -msgstr "" +msgstr "Constructor de Consulta" #: 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 msgid "Queue" @@ -4060,11 +4060,11 @@ msgstr "Colas" #: html/Elements/Quicksearch:46 msgid "Quick search" -msgstr "" +msgstr "Búsqueda rapida" #: html/Elements/QuickCreate:46 msgid "Quick ticket creation" -msgstr "" +msgstr "Creación rápida de ticket" #: html/Search/Results.html:83 msgid "RSS" @@ -4138,7 +4138,7 @@ msgstr "RT no te pudo autenticar." #: NOT FOUND IN SOURCE msgid "RT couldn't find requestor via its external database lookup" -msgstr "RT no pudo encontrar el solicitante a través de una busqueda a la base de datos externa" +msgstr "RT no pudo encontrar el solicitante a través de una búsqueda a la base de datos externa" #: NOT FOUND IN SOURCE msgid "RT couldn't find the queue: %1" @@ -4146,7 +4146,7 @@ msgstr "RT no pudo encontrar la cola: %1" #: html/Elements/SetupSessionCookie:90 msgid "RT couldn't store your session." -msgstr "" +msgstr "RT no pudo almacenar tu sesión." #: NOT FOUND IN SOURCE msgid "RT couldn't validate this PGP signature. \\n" @@ -4192,22 +4192,22 @@ msgstr "Nombre real" #: lib/RT/Transaction_Overlay.pm:714 #. ($value) msgid "Reference by %1 added" -msgstr "" +msgstr "Referencia para %1 añadida" #: lib/RT/Transaction_Overlay.pm:754 #. ($value) msgid "Reference by %1 deleted" -msgstr "" +msgstr "Referencia para %1 borrada" #: lib/RT/Transaction_Overlay.pm:711 #. ($value) msgid "Reference to %1 added" -msgstr "" +msgstr "Referencia para %1 añadida" #: lib/RT/Transaction_Overlay.pm:751 #. ($value) msgid "Reference to %1 deleted" -msgstr "" +msgstr "Referencia para %1 borrada" #: html/Elements/EditLinks:103 html/Elements/EditLinks:154 html/Elements/ShowLinks:92 html/Ticket/Create.html:216 html/Ticket/Elements/BulkLinks:72 msgid "Referred to by" @@ -4252,11 +4252,11 @@ msgstr "Responder" #: html/Admin/Queues/Modify.html:72 msgid "Reply Address" -msgstr "" +msgstr "Dirección de Respuesta" #: html/Search/Bulk.html:151 html/Ticket/ModifyAll.html:94 html/Ticket/Update.html:76 msgid "Reply to requestors" -msgstr "" +msgstr "Responder a solicitantes" #: lib/RT/Queue_Overlay.pm:111 msgid "Reply to tickets" @@ -4293,7 +4293,7 @@ msgstr "Las solicitudes entran en vencimiento en" #: lib/RT/Attribute_Overlay.pm:146 #. ('Object') msgid "Required parameter '%1' not specified" -msgstr "" +msgstr "Parametro requerido '%1' no especificado" #: html/Elements/Submit:104 msgid "Reset" @@ -4334,7 +4334,7 @@ msgstr "Confirmar contraseña" #: html/Search/Elements/EditSearches:61 msgid "Revert" -msgstr "" +msgstr "Revertir" #: NOT FOUND IN SOURCE msgid "Right %1 not found for %2 %3 in scope %4 (%5)\\n" @@ -4392,7 +4392,7 @@ msgstr "RootApproval" #: html/Search/Elements/DisplayOptions:83 msgid "Rows per page" -msgstr "" +msgstr "Filas por pagina" #: lib/RT/Date.pm:418 msgid "Sat." @@ -4400,7 +4400,7 @@ msgstr "Sab." #: html/Search/Elements/EditSearches:70 msgid "Save" -msgstr "" +msgstr "Grabar" #: 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 msgid "Save Changes" @@ -4408,7 +4408,7 @@ msgstr "Guardar Cambios" #: html/User/Prefs.html:179 msgid "Save Preferences" -msgstr "" +msgstr "Guardar Preferencias" #: html/Ticket/Elements/PreviewScrips:124 msgid "Save changes" @@ -4417,11 +4417,11 @@ msgstr "Guardar cambios" #: lib/RT/SavedSearch.pm:162 #. ($name) msgid "Saved search %1" -msgstr "" +msgstr "Búsqueda grabada %1" #: html/Search/Elements/EditSearches:46 msgid "Saved searches" -msgstr "" +msgstr "Búsquedas guardadas" #: html/Admin/Elements/ListGlobalScrips:61 html/Admin/Global/Scrip.html:70 html/Admin/Queues/Scrip.html:76 #. ($scrip->Id) @@ -4481,19 +4481,19 @@ msgstr "Seguridad:" #: lib/RT/CustomField_Overlay.pm:100 msgid "See custom fields" -msgstr "" +msgstr "Ver campos personalizados" #: lib/RT/Queue_Overlay.pm:107 msgid "See exact outgoing email messages and their recipeients" -msgstr "" +msgstr "Ver mensajes email salientes exactos y sus receptores" #: lib/RT/Queue_Overlay.pm:105 msgid "See ticket private commentary" -msgstr "" +msgstr "Ver comentario privado del ticket" #: lib/RT/Queue_Overlay.pm:104 msgid "See ticket summaries" -msgstr "" +msgstr "Ver sumarios del ticket" #: lib/RT/CustomField_Overlay.pm:100 msgid "SeeCustomField" @@ -4509,7 +4509,7 @@ msgstr "Ver cola" #: html/Admin/CustomFields/index.html:46 html/Admin/CustomFields/index.html:49 msgid "Select a Custom Field" -msgstr "" +msgstr "Seleccionar un Campo Personalizado" #: html/Admin/Groups/index.html:78 msgid "Select a group" @@ -4521,7 +4521,7 @@ msgstr "Seleccione una cola" #: html/SelfService/CreateTicketInQueue.html:48 msgid "Select a queue for your new ticket" -msgstr "" +msgstr "Seleccionar una cola para su nuevo ticket" #: html/Admin/Users/index.html:46 html/Admin/Users/index.html:49 html/Admin/Users/index.html:52 msgid "Select a user" @@ -4533,19 +4533,19 @@ msgstr "Seleccionar un campo personalizable" #: html/Admin/Global/CustomFields/index.html:70 msgid "Select custom fields for all user groups" -msgstr "" +msgstr "Seleccionar campos personalizados para todos los grupos de usuarios" #: html/Admin/Global/CustomFields/index.html:65 msgid "Select custom fields for all users" -msgstr "" +msgstr "Seleccionar campos personalizados para todos los usuarios" #: html/Admin/Global/CustomFields/index.html:76 msgid "Select custom fields for tickets in all queues" -msgstr "" +msgstr "Seleccionar campos personalizados para tickets en todas las colas" #: html/Admin/Global/CustomFields/index.html:83 msgid "Select custom fields for transactions on tickets in all queues" -msgstr "" +msgstr "Seleccionar campos personalizados para transacciones de tickets en todas las colas" #: html/Admin/Elements/GroupTabs:75 html/User/Elements/GroupTabs:71 msgid "Select group" @@ -4573,7 +4573,7 @@ msgstr "Selecionar plantilla" #: lib/RT/CustomField_Overlay.pm:61 msgid "Select up to %1 values" -msgstr "" +msgstr "Seleccionar hasta %1 valores" #: html/Admin/Elements/UserTabs:75 msgid "Select user" @@ -4589,11 +4589,11 @@ msgstr "SelectSingle" #: html/Admin/Elements/EditCustomFields:58 msgid "Selected Custom Fields" -msgstr "" +msgstr "Campos Personalizados Seleccionados" #: html/Admin/CustomFields/Objects.html:59 msgid "Selected objects" -msgstr "" +msgstr "Objetos seleccionados" #: NOT FOUND IN SOURCE msgid "Self Service" @@ -4625,11 +4625,11 @@ msgstr "Enviar mail a los Ccs y Bccs listados explicitamente" #: etc/initialdata:94 etc/upgrade/3.1.17/content:7 msgid "Sends mail to the Ccs" -msgstr "" +msgstr "Envia mail a los Ccs" #: etc/initialdata:90 etc/upgrade/3.1.17/content:3 msgid "Sends mail to the Ccs as a comment" -msgstr "" +msgstr "Envia mail a los Ccs como comentario" #: etc/initialdata:102 msgid "Sends mail to the administrative Ccs" @@ -4653,15 +4653,15 @@ msgstr "Septiembre" #: html/Ticket/Elements/ShowTransaction:150 msgid "Show" -msgstr "" +msgstr "Mostrar" #: html/Approvals/index.html:52 msgid "Show Approvals" -msgstr "" +msgstr "Mostrar Aprobaciones" #: html/Search/Elements/EditFormat:56 msgid "Show Columns" -msgstr "" +msgstr "Mostrar Columnas" #: html/Ticket/Elements/Tabs:201 msgid "Show Results" @@ -4753,7 +4753,7 @@ msgstr "Sencillo" #: html/Search/Elements/EditFormat:75 msgid "Size" -msgstr "" +msgstr "Tamaño" #: html/Elements/Header:85 msgid "Skip Menu" @@ -4765,7 +4765,7 @@ msgstr "" #: html/Admin/Elements/AddCustomFieldValue:49 html/Admin/Elements/EditCustomFieldValues:54 msgid "Sort" -msgstr "" +msgstr "Ordenar" #: NOT FOUND IN SOURCE msgid "Sort key" @@ -4793,7 +4793,7 @@ msgstr "Página de inicio" #: html/Elements/SelectDateType:48 html/Ticket/Elements/EditDates:53 html/Ticket/Elements/ShowDates:56 msgid "Started" -msgstr "Empezado" +msgstr "Comenzado" #: NOT FOUND IN SOURCE msgid "Started date '%1' could not be parsed" @@ -4801,11 +4801,11 @@ msgstr "La fecha de inicio '%1' no se pudo leer" #: html/Elements/SelectDateType:52 html/Ticket/Create.html:196 html/Ticket/Elements/EditDates:48 html/Ticket/Elements/ShowDates:52 msgid "Starts" -msgstr "Empieza" +msgstr "Comienzo" #: NOT FOUND IN SOURCE msgid "Starts By" -msgstr "Empezado por" +msgstr "Comenzado por" #: NOT FOUND IN SOURCE msgid "Starts date '%1' could not be parsed" @@ -4837,7 +4837,7 @@ msgstr "Robar" #: lib/RT/Queue_Overlay.pm:118 msgid "Steal tickets" -msgstr "" +msgstr "Robar tickets" #: lib/RT/Queue_Overlay.pm:118 msgid "StealTicket" @@ -4850,7 +4850,7 @@ msgstr "Robado de %1" #: html/Search/Elements/EditFormat:81 msgid "Style" -msgstr "" +msgstr "Estilo" #: 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 msgid "Subject" @@ -4887,7 +4887,7 @@ msgstr "Sistema" #: html/Admin/Elements/ToolTabs:54 html/Admin/Tools/Configuration.html:48 msgid "System Configuration" -msgstr "" +msgstr "Configuración del Sistema" #: 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" @@ -4908,7 +4908,7 @@ msgstr "" #: html/Admin/Tools/index.html:47 msgid "System Tools" -msgstr "" +msgstr "Herramientas del Sistema" #: lib/RT/ACE_Overlay.pm:634 msgid "System error. Right not delegated." @@ -4940,7 +4940,7 @@ msgstr "Coger" #: lib/RT/Queue_Overlay.pm:116 msgid "Take tickets" -msgstr "" +msgstr "Coger tickets" #: lib/RT/Queue_Overlay.pm:116 msgid "TakeTicket" @@ -4997,7 +4997,7 @@ msgstr "Este es el mismo valor" #: lib/RT/ACE_Overlay.pm:306 lib/RT/ACE_Overlay.pm:615 msgid "That principal already has that right" -msgstr "" +msgstr "Ese principal ya tiene ese derecho" #: lib/RT/Queue_Overlay.pm:750 #. ($args{'Type'}) @@ -5108,15 +5108,15 @@ msgstr "Estos comentarios generalmente no están visibles para el usuario" #: lib/RT/CustomField_Overlay.pm:912 msgid "This custom field does not apply to that object" -msgstr "" +msgstr "Este campo personalizado no se aplica a este objeto" #: html/Admin/Tools/Configuration.html:50 msgid "This feature is only available to system administrators" -msgstr "" +msgstr "Esa caracteristica solo esta disponible a administradores del sistema" #: html/Ticket/Elements/PreviewScrips:93 msgid "This message will be sent to..." -msgstr "" +msgstr "Este mensaje sera enviado a..." #: NOT FOUND IN SOURCE msgid "This ticket %1 %2 (%3)\\n" @@ -5149,7 +5149,7 @@ msgstr "Ticket # %1 %2" #: NOT FOUND IN SOURCE msgid "Ticket # %1 Jumbo update: %2" -msgstr "Actualizacion Jumbo para el ticket # %1: %2" +msgstr "Actualización Jumbo para el ticket # %1: %2" #: html/Ticket/ModifyAll.html:46 html/Ticket/ModifyAll.html:50 #. ($Ticket->Id, $Ticket->Subject) @@ -5184,7 +5184,7 @@ msgstr "Ticket %1: %2" #: html/Admin/Elements/QueueTabs:74 msgid "Ticket Custom Fields" -msgstr "" +msgstr "Campos Personalizados del Ticket" #: html/Ticket/History.html:46 html/Ticket/History.html:49 #. ($Ticket->Id, $Ticket->Subject) @@ -5201,7 +5201,7 @@ msgstr "Ticket resuelto" #: html/Admin/Elements/GlobalCustomFieldTabs:69 html/Admin/Global/CustomFields/index.html:81 lib/RT/CustomField_Overlay.pm:1085 msgid "Ticket Transactions" -msgstr "" +msgstr "Transacciones del Ticket" #: NOT FOUND IN SOURCE msgid "Ticket attachment" @@ -5258,7 +5258,7 @@ msgstr "Observadores del ticket" #: lib/RT/Search/FromSQL.pm:83 #. (ref $self) msgid "TicketSQL search module" -msgstr "" +msgstr "Modulo de búsqueda TicketSQL" #: html/Admin/Elements/GlobalCustomFieldTabs:64 html/Admin/Global/CustomFields/index.html:75 html/Elements/Tabs:68 lib/RT/CustomField_Overlay.pm:1084 msgid "Tickets" @@ -5282,7 +5282,7 @@ msgstr "Tickets que dependen de esta aprobación:" #: html/Search/Elements/PickBasics:148 html/Ticket/Elements/EditBasics:61 msgid "Time Estimated" -msgstr "" +msgstr "Tiempo Estimado" #: html/Search/Elements/PickBasics:149 html/Ticket/Create.html:187 html/Ticket/Elements/EditBasics:69 msgid "Time Left" @@ -5314,7 +5314,7 @@ msgstr "TimeWorked" #: html/Search/Elements/EditFormat:74 msgid "Title" -msgstr "" +msgstr "Titulo" #: NOT FOUND IN SOURCE msgid "To generate a diff of this commit:" @@ -5335,7 +5335,7 @@ msgstr "Última actualización" #: html/Admin/Elements/Tabs:68 html/Admin/index.html:88 html/Elements/Tabs:71 msgid "Tools" -msgstr "" +msgstr "Herramientas" #: etc/initialdata:252 msgid "Transaction" @@ -5352,15 +5352,15 @@ msgstr "Transacción creada" #: html/Admin/Elements/QueueTabs:78 msgid "Transaction Custom Fields" -msgstr "" +msgstr "Campos Personalizados de Transacción" #: NOT FOUND IN SOURCE msgid "Transaction->Create couldn't, as you didn't specify a ticket id" -msgstr "Transaction->Create no pudo, ya no no especificó un ID de ticket" +msgstr "Transaction->Create no pudo, ya que no especificó un ID de ticket" #: lib/RT/Transaction_Overlay.pm:125 msgid "Transaction->Create couldn't, as you didn't specify an object type and id" -msgstr "" +msgstr "Transaction->Create no pudo, ya que no especificó un tipo de objeto e ID" #: lib/RT/Transaction_Overlay.pm:838 msgid "Transactions are immutable" @@ -5398,7 +5398,7 @@ msgstr "Codificación de contenido desconocida: %1" #: html/Search/Build.html:632 msgid "Unknown field: $key" -msgstr "" +msgstr "Campo desconocido: $key" #: html/Elements/SelectResultsPerPage:58 msgid "Unlimited" @@ -5406,7 +5406,7 @@ msgstr "Ilimitado" #: html/Search/Elements/SelectSearchesForObjects:63 msgid "Unnamed search" -msgstr "" +msgstr "Búsqueda sin nombre" #: etc/initialdata:32 msgid "Unprivileged" @@ -5414,11 +5414,11 @@ msgstr "No privilegiado" #: html/Admin/Elements/EditCustomFields:60 msgid "Unselected Custom Fields" -msgstr "" +msgstr "Campos Personalizados No Seleccionados" #: html/Admin/CustomFields/Objects.html:61 msgid "Unselected objects" -msgstr "" +msgstr "Objetos No Seleccionados" #: lib/RT/Transaction_Overlay.pm:648 msgid "Untaken" @@ -5430,7 +5430,7 @@ msgstr "Actualizar" #: html/Search/Bulk.html:178 msgid "Update All" -msgstr "" +msgstr "Actualizar Todo" #: NOT FOUND IN SOURCE msgid "Update ID" @@ -5438,7 +5438,7 @@ msgstr "Id de actualización" #: html/Ticket/Update.html:133 msgid "Update Ticket" -msgstr "" +msgstr "Actualizar Ticket" #: html/Search/Bulk.html:148 html/Ticket/ModifyAll.html:87 html/Ticket/Update.html:70 msgid "Update Type" @@ -5454,7 +5454,7 @@ msgstr "Actualizar correo" #: html/Search/Results.html:80 msgid "Update multiple tickets" -msgstr "" +msgstr "Actualizar multiples tickets" #: NOT FOUND IN SOURCE msgid "Update name" @@ -5500,39 +5500,39 @@ msgstr "Actualizado" #: html/Tools/Offline.html:95 msgid "Upload" -msgstr "" +msgstr "Subir" #: lib/RT/CustomField_Overlay.pm:84 msgid "Upload multiple files" -msgstr "" +msgstr "Subir multiples ficheros" #: lib/RT/CustomField_Overlay.pm:79 msgid "Upload multiple images" -msgstr "" +msgstr "Subir multiples imagenes" #: lib/RT/CustomField_Overlay.pm:85 msgid "Upload one file" -msgstr "" +msgstr "Subir un fichero" #: lib/RT/CustomField_Overlay.pm:80 msgid "Upload one image" -msgstr "" +msgstr "Subir una imagen" #: lib/RT/CustomField_Overlay.pm:86 msgid "Upload up to %1 files" -msgstr "" +msgstr "Subir hasta %1 ficheros" #: lib/RT/CustomField_Overlay.pm:81 msgid "Upload up to %1 images" -msgstr "" +msgstr "Subir hasta %1 imagenes" #: html/Tools/Offline.html:95 msgid "Upload your changes" -msgstr "" +msgstr "Subir cambios" #: html/Admin/index.html:90 msgid "Use other RT administrative tools" -msgstr "" +msgstr "Usar otra herramienta administrativa RT" #: NOT FOUND IN SOURCE msgid "User %1 %2: %3\\n" @@ -5545,7 +5545,7 @@ msgstr "Usuario %1 Contraseña: %2\\n" #: lib/RT/Ticket_Overlay.pm:496 #. ($args{'Owner'}) msgid "User '%1' could not be found." -msgstr "" +msgstr "No se encontro el Usuario '%1'" #: NOT FOUND IN SOURCE msgid "User '%1' not found" @@ -5561,7 +5561,7 @@ msgstr "Definido por el usuario" #: html/Admin/Elements/EditScrip:98 msgid "User Defined conditions and actions" -msgstr "" +msgstr "Condiciones y acciones Definidas por el Usuario" #: NOT FOUND IN SOURCE msgid "User ID" @@ -5595,7 +5595,7 @@ msgstr "Grupos definidos por el usuario" #: lib/RT/User_Overlay.pm:593 lib/RT/User_Overlay.pm:613 msgid "User loaded" -msgstr "" +msgstr "Usuario cargado" #: NOT FOUND IN SOURCE msgid "User notified" @@ -5607,7 +5607,7 @@ msgstr "Vista de usuario" #: html/Admin/Groups/index.html:99 msgid "User-defined groups" -msgstr "" +msgstr "Grupos definidos por el usuario" #: html/Admin/Users/Modify.html:69 html/Elements/Login:73 html/Ticket/Elements/AddWatchers:56 msgid "Username" @@ -5623,7 +5623,7 @@ msgstr "Usuarios que concuerdan con los criterios de búsqueda" #: lib/RT/Tickets_Overlay_SQL.pm:523 msgid "Valid Query" -msgstr "" +msgstr "Consulta Valida" #: NOT FOUND IN SOURCE msgid "ValueOfQueue" @@ -5635,7 +5635,7 @@ msgstr "Valores" #: lib/RT/Queue_Overlay.pm:108 msgid "Watch" -msgstr "Observar" +msgstr "" #: lib/RT/Queue_Overlay.pm:109 msgid "WatchAsAdminCc" @@ -5671,7 +5671,7 @@ msgstr "Cuando un ticket se crea" #: etc/initialdata:418 msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval" -msgstr "Cuando una aprobacion de ticket se crea, notifica al propietario y AdminCC del item que espera su aprobación" +msgstr "Cuando una aprobación de ticket se crea, notifica al propietario y AdminCC del item que espera su aprobación" #: etc/initialdata:151 msgid "When anything happens" @@ -5687,7 +5687,7 @@ msgstr "Siempre que el propietario de un ticket cambie" #: etc/initialdata:178 etc/upgrade/3.1.17/content:16 msgid "Whenever a ticket's priority changes" -msgstr "" +msgstr "Siempre que la prioridad de un ticket cambie" #: etc/initialdata:193 msgid "Whenever a ticket's queue changes" @@ -5699,7 +5699,7 @@ msgstr "Siempre que el estado de un ticket cambie" #: etc/initialdata:207 msgid "Whenever a user-defined condition occurs" -msgstr "Siempre que ocurra una condicion definida por el usuario" +msgstr "Siempre que ocurra una condición definida por el usuario" #: etc/initialdata:164 msgid "Whenever comments come in" @@ -5776,7 +5776,7 @@ msgstr "Su petición ha sido aprobada por %1. Otras aprobaciones pueden estar pe #: etc/initialdata:540 msgid "Your request has been approved." -msgstr "Su peticion ha sido aprobada." +msgstr "Su petición ha sido aprobada." #: NOT FOUND IN SOURCE msgid "Your request was rejected" @@ -5800,11 +5800,11 @@ msgstr "[sin asunto]" #: lib/RT/System.pm:88 msgid "allow creation of saved searches" -msgstr "" +msgstr "permitir creación de búsquedas guardadas" #: lib/RT/System.pm:87 msgid "allow loading of saved searches" -msgstr "" +msgstr "permitir carga de búsquedas guardadas" #: html/User/Elements/DelegateRights:80 #. ($right->PrincipalObj->Object->SelfDescription) @@ -5813,11 +5813,11 @@ msgstr "como priviligiado para %1" #: html/Search/Elements/PickBasics:127 msgid "belongs to" -msgstr "" +msgstr "pertenece a" #: html/SelfService/Closed.html:49 msgid "closed" -msgstr "" +msgstr "cerrado" #: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:55 msgid "contains" @@ -5857,7 +5857,7 @@ msgstr "borrado" #: html/Search/Elements/PickBasics:128 msgid "does not belong to" -msgstr "" +msgstr "no pertenece a" #: html/Search/Elements/PickBasics:61 msgid "does not match" @@ -5873,23 +5873,23 @@ msgstr "igual a" #: html/Search/Build.html:387 msgid "error: can't move down" -msgstr "" +msgstr "error: no se puede mover abajo" #: html/Search/Build.html:409 msgid "error: can't move left" -msgstr "" +msgstr "error: no se puede mover a la izquierda" #: html/Search/Build.html:368 msgid "error: can't move up" -msgstr "" +msgstr "error: no se puede mover arriba" #: html/Search/Build.html:451 msgid "error: nothing to delete" -msgstr "" +msgstr "error: nada a borrar" #: html/Search/Build.html:373 html/Search/Build.html:392 html/Search/Build.html:414 html/Search/Build.html:443 msgid "error: nothing to move" -msgstr "" +msgstr "error: nada a mover" #: html/Search/Build.html:469 msgid "error: nothing to toggle" @@ -5958,7 +5958,7 @@ msgstr "nuevo" #: html/Admin/Elements/PickCustomFields:64 html/Admin/Elements/PickObjects:63 msgid "no name" -msgstr "" +msgstr "sin nombre" #: html/Admin/Elements/EditScrips:64 msgid "no value" @@ -6004,7 +6004,7 @@ msgstr "sec" #: lib/RT/System.pm:86 msgid "show Configuration tab" -msgstr "" +msgstr "mostrar etiqueta de Configuración" #: html/Search/Results.html:82 msgid "spreadsheet" diff --git a/rt/lib/RT/I18N/fi.po b/rt/lib/RT/I18N/fi.po index eaac6bfb0..cfe974b6d 100644 --- a/rt/lib/RT/I18N/fi.po +++ b/rt/lib/RT/I18N/fi.po @@ -2,11 +2,11 @@ # First Author: Janne Pirkkanen <jp@oppipoika.net>, Jul 2002 msgid "" msgstr "" -"Project-Id-Version: RT 2.1.x\n" +"Project-Id-Version: RT 3.4.x\n" "POT-Creation-Date: 2002-07-08 17:41+0200\n" -"PO-Revision-Date: 2004-01-13 15:21+0200\n" +"PO-Revision-Date: 2005-10-03 13:45-0400\n" "Last-Translator: Tuukka Vainio <tuukka.vainio@utu.fi>\n" -"Language-Team: Finnish\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-Transfer-Encoding: 8bit\n" diff --git a/rt/lib/RT/I18N/fr.po b/rt/lib/RT/I18N/fr.po index 8d1f3c3b2..8bbbe1003 100644 --- a/rt/lib/RT/I18N/fr.po +++ b/rt/lib/RT/I18N/fr.po @@ -1,14 +1,16 @@ +# translation of fr.po to +# jfenal <jfenal@free.fr>, 2005. msgid "" msgstr "" -"Project-Id-Version: fr\n" +"Project-Id-Version: RT 3.4.x\n" "POT-Creation-Date: 2002-05-02 11:36+0800\n" -"PO-Revision-Date: 2005-08-06 22:14+0200\n" +"PO-Revision-Date: 2005-10-28 01:54+0200\n" "Last-Translator: jfenal <jfenal@free.fr>\n" -"Language-Team: <fr@li.org>\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-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.9.1\n" +"X-Generator: KBabel 1.10.2\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) @@ -16,9 +18,9 @@ msgstr "" #. ($link->BaseObj->Id, $link->BaseObj->Subject) #. ($TicketObj->Id, $TicketObj->Subject) msgid "#%1: %2" -msgstr "n°%1: %2" +msgstr "n°%1 : %2" -#: lib/RT/Record.pm:927 +#: lib/RT/Record.pm:934 #. ($label) msgid "$prefix %1" msgstr "$prefix %1" @@ -38,7 +40,7 @@ msgstr "%1 %2" msgid "%1 %2 %3 %4:%5:%6 %7" msgstr "%1 %2 %3 %4:%5:%6 %7" -#: lib/RT/Record.pm:1672 lib/RT/Transaction_Overlay.pm:636 lib/RT/Transaction_Overlay.pm:679 +#: lib/RT/Record.pm:1678 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) @@ -50,13 +52,13 @@ msgstr "%1 %2 ajouté" msgid "%1 %2 ago" msgstr "il y a %1 %2" -#: lib/RT/Record.pm:1679 lib/RT/Transaction_Overlay.pm:643 +#: lib/RT/Record.pm:1685 lib/RT/Transaction_Overlay.pm:643 #. ($cf->Name, $old_content, $new_value->Content) #. ($field, $self->OldValue, $self->NewValue) msgid "%1 %2 changed to %3" msgstr "%1 %2 changé en %3" -#: lib/RT/Record.pm:1676 lib/RT/Transaction_Overlay.pm:639 lib/RT/Transaction_Overlay.pm:685 +#: lib/RT/Record.pm:1682 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) @@ -118,7 +120,7 @@ msgstr "%1 RT %2 Copyright 1996-%3 %4." msgid "%1 ScripAction loaded" msgstr "ScripAction %1 chargée" -#: lib/RT/Record.pm:1709 +#: lib/RT/Record.pm:1715 #. ($args{'Value'}, $cf->Name) msgid "%1 added as a value for %2" msgstr "%1 ajouté(e) comme valeur de %2" @@ -147,9 +149,9 @@ msgstr "%1 changé(e) de %2 à %3" msgid "%1 copy" msgstr "%1 copie" -#: lib/RT/Record.pm:931 +#: lib/RT/Record.pm:938 msgid "%1 could not be set to %2." -msgstr "%1 n'a pas pu être positionné à %2" +msgstr "%1 n'a pas pu être positionné à %2." #: lib/RT/Ticket_Overlay.pm:2751 #. ($self) @@ -226,12 +228,12 @@ msgstr "Recherches sauvées de %1" #: lib/RT/Transaction_Overlay.pm:470 #. ($self) msgid "%1: no attachment specified" -msgstr "%1: pas d'attachement spécifié" +msgstr "%1 : pas d'attachement spécifié" #: html/Ticket/Elements/ShowTransactionAttachments:78 #. ($size) msgid "%1b" -msgstr "%1b" +msgstr "%1o" #: html/Ticket/Elements/ShowTransactionAttachments:75 #. (int( $size / 102.4 ) / 10) @@ -303,7 +305,7 @@ msgstr "(Transmettre une copie de cette mise à jour à une liste d'adresses ema #: html/Admin/Elements/EditScrip:102 msgid "(Use these fields when you choose 'User Defined' for a condition or action)" -msgstr "(Utilisez ces champs lorsque vous sélectionnez 'User Defined' pour une condition ou une action)" +msgstr "(Utilisez ces champs lorsque vous sélectionnez « Défini par l'utilisateur » pour une condition ou une action)" #: html/Admin/Groups/index.html:57 html/User/Groups/index.html:54 msgid "(empty)" @@ -313,7 +315,7 @@ msgstr "(vide)" msgid "(no name listed)" msgstr "(aucun nom)" -#: html/Admin/Elements/SelectRights:72 html/Elements/EditCustomFieldSelect:60 html/Elements/SelectCustomFieldValue:51 html/Elements/ShowCustomFields:65 lib/RT/I18N/fr.po.orig:146 lib/RT/Transaction_Overlay.pm:580 +#: html/Admin/Elements/SelectRights:72 html/Elements/EditCustomFieldSelect:61 html/Elements/SelectCustomFieldValue:51 html/Elements/ShowCustomFields:65 lib/RT/I18N/fr.po.mine:143 lib/RT/I18N/fr.po.orig:146 lib/RT/I18N/fr.po.r3834:141 lib/RT/I18N/fr.po.r3942:142 lib/RT/I18N/ru.po.orig:236 lib/RT/Transaction_Overlay.pm:580 msgid "(no value)" msgstr "(sans information)" @@ -325,11 +327,11 @@ msgstr "(aucune valeur)" msgid "(only one ticket)" msgstr "(un seul ticket)" -#: html/Elements/RT__Ticket/ColumnMap:146 +#: html/Elements/RT__Ticket/ColumnMap:147 msgid "(pending approval)" msgstr "(en attente d'approbation)" -#: html/Elements/RT__Ticket/ColumnMap:149 +#: html/Elements/RT__Ticket/ColumnMap:150 msgid "(pending other Collection)" msgstr "(en attente d'autres Collection)" @@ -578,17 +580,17 @@ msgstr "Approbations" #. ($ticket->id, $msg) #. ($link->BaseObj->Id, $link->BaseObj->Subject) msgid "Approval #%1: %2" -msgstr "Approbation n°%1: %2" +msgstr "Approbation n°%1 : %2" #: html/Approvals/index.html:75 #. ($ticket->Id) msgid "Approval #%1: Notes not recorded due to a system error" -msgstr "Approbation n°%1: Notes non enregistrées en raison d'une erreur système" +msgstr "Approbation n°%1 : Notes non enregistrées en raison d'une erreur système" #: html/Approvals/index.html:73 #. ($ticket->Id) msgid "Approval #%1: Notes recorded" -msgstr "Approbation n°%1: Notes non enregistrées" +msgstr "Approbation n°%1 : Notes non enregistrées" #: etc/initialdata:351 msgid "Approval Passed" @@ -604,7 +606,7 @@ msgstr "Approuver" #: etc/initialdata:504 msgid "Approver's notes: %1" -msgstr "Notes de l'approbateur : %1" +msgstr "Notes de l'approbateur : %1" #: lib/RT/Date.pm:440 msgid "Apr." @@ -643,7 +645,7 @@ msgstr "Attachement '%1' ne peut pas être chargé" msgid "Attachment created" msgstr "Attachement créé" -#: lib/RT/Tickets_Overlay.pm:1702 +#: lib/RT/Tickets_Overlay.pm:1773 msgid "Attachment filename" msgstr "Nom de fichier de l'attachement" @@ -724,7 +726,7 @@ msgstr "Impossible d'ajouter une valeur de champ personnalisé sans un nom" msgid "Can't find a collection class for '%1'" msgstr "Impossible de trouver une collection pour la classe '%1'" -#: html/Search/Build.html:761 +#: html/Search/Build.html:756 msgid "Can't find a saved search to work with" msgstr "Impossible de trouver une recherche sauvée et de l'utiliser" @@ -732,18 +734,18 @@ msgstr "Impossible de trouver une recherche sauvée et de l'utiliser" msgid "Can't link a ticket to itself" msgstr "Un ticket ne peut être lié à lui même" -#: html/Search/Build.html:766 +#: html/Search/Build.html:761 msgid "Can't save this search" msgstr "Impossible de sauver cette recherche" -#: lib/RT/Record.pm:1267 lib/RT/Record.pm:1345 +#: lib/RT/Record.pm:1274 lib/RT/Record.pm:1352 msgid "Can't specifiy both base and target" msgstr "Impossible de spécifier à la fois la base et la cible" #: html/autohandler:148 #. ($msg) msgid "Cannot create user: %1" -msgstr "Impossible de créer l'utilisateur: %1" +msgstr "Impossible de créer l'utilisateur : %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 msgid "Cc" @@ -861,11 +863,11 @@ msgstr "Courrier" msgid "Correspondence added" msgstr "Courrier ajouté" -#: lib/RT/Record.pm:1694 +#: lib/RT/Record.pm:1700 msgid "Could not add new custom field value. " msgstr "Impossible d'ajouter une nouvelle valeur de champ personnalisé. " -#: lib/RT/Record.pm:1647 +#: lib/RT/Record.pm:1653 #. (, $value_msg) msgid "Could not add new custom field value. %1 " msgstr "Impossible d'ajouter une nouvelle valeur de champ personnalisé. %1" @@ -882,7 +884,7 @@ msgstr "Impossible de créer le champ personnalisé" #: html/Admin/Elements/EditCustomField:113 #. ($msg) msgid "Could not create CustomField: %1" -msgstr "Impossible de créer le champ personnalisé : %1" +msgstr "Impossible de créer le champ personnalisé : %1" #: html/User/Groups/Modify.html:98 lib/RT/Group_Overlay.pm:494 lib/RT/Group_Overlay.pm:501 msgid "Could not create group" @@ -891,7 +893,7 @@ msgstr "Impossible de créer un groupe" #: html/Admin/Global/Template.html:96 html/Admin/Queues/Template.html:93 #. ($msg) msgid "Could not create template: %1" -msgstr "Impossible de créer le modèle : %1" +msgstr "Impossible de créer le modèle : %1" #: lib/RT/Ticket_Overlay.pm:1051 lib/RT/Ticket_Overlay.pm:396 msgid "Could not create ticket. Queue not set" @@ -949,12 +951,12 @@ msgstr "Impossible de sauver les informations utilisateur" msgid "Couldn't add member to group" msgstr "Impossible d'ajouter un membre à ce groupe" -#: lib/RT/Record.pm:1706 lib/RT/Record.pm:1758 +#: lib/RT/Record.pm:1712 lib/RT/Record.pm:1764 #. ($Msg) msgid "Couldn't create a transaction: %1" -msgstr "Impossible de créer une transaction : %1" +msgstr "Impossible de créer une transaction : %1" -#: lib/RT/Record.pm:940 +#: lib/RT/Record.pm:947 msgid "Couldn't find row" msgstr "Colonne introuvable" @@ -1164,17 +1166,17 @@ msgstr "Programme de préparation d'action personnalisé " msgid "Custom condition" msgstr "Condition personnalisée" -#: lib/RT/Tickets_Overlay.pm:2176 +#: lib/RT/Tickets_Overlay.pm:2244 #. ($CF->Name) msgid "Custom field %1 has a value." msgstr "Le champ personnalisé %1 a une valeur." -#: lib/RT/Tickets_Overlay.pm:2172 +#: lib/RT/Tickets_Overlay.pm:2240 #. ($CF->Name) msgid "Custom field %1 has no value." msgstr "Le champ personnalisé %1 n'a pas de valeur." -#: lib/RT/Record.pm:1580 lib/RT/Record.pm:1741 +#: lib/RT/Record.pm:1586 lib/RT/Record.pm:1747 #. ($args{'Field'}) msgid "Custom field %1 not found" msgstr "Le champ personnalisé %1 est introuvable" @@ -1263,7 +1265,7 @@ msgstr "Détruire le modèle" #: lib/RT/SavedSearch.pm:211 #. ($msg) msgid "Delete failed: %1" -msgstr "Échec de la destruction : %1" +msgstr "Échec de la destruction : %1" #: html/Admin/Elements/EditScrips:74 msgid "Delete selected scrips" @@ -1451,7 +1453,7 @@ msgstr "Modifier les membres du groupe %1" msgid "Editing membership for personal group %1" msgstr "Modifier les membres du groupe personnel %1" -#: lib/RT/Record.pm:1282 lib/RT/Record.pm:1359 +#: lib/RT/Record.pm:1289 lib/RT/Record.pm:1366 msgid "Either base or target must be specified" msgstr "La base ou la cible doivent être spécifiées" @@ -1487,7 +1489,7 @@ msgstr "État %1 activé" #: html/Admin/CustomFields/Modify.html:143 html/Admin/Queues/Modify.html:162 #. (loc_fuzzy($msg)) msgid "Enabled status: %1" -msgstr "État actif : %1" +msgstr "État actif : %1" #: lib/RT/CustomField_Overlay.pm:64 msgid "Enter multiple values" @@ -1547,7 +1549,7 @@ msgstr "Tout le monde" #: bin/rt-crontool:219 msgid "Example:" -msgstr "Exemple :" +msgstr "Exemple : " #: html/Admin/Users/Modify.html:99 msgid "Extra info" @@ -1607,7 +1609,7 @@ msgstr "Saisir au plus %1 champs de type texte" msgid "Fill in up to %1 wikitext areas" msgstr "Saisir au plus %1 champs de type wiki" -#: html/Search/Elements/PickBasics:162 html/Ticket/Create.html:185 html/Ticket/Elements/EditBasics:79 lib/RT/Tickets_Overlay.pm:1598 +#: html/Search/Elements/PickBasics:162 html/Ticket/Create.html:185 html/Ticket/Elements/EditBasics:79 lib/RT/Tickets_Overlay.pm:1669 msgid "Final Priority" msgstr "Priorité finale" @@ -1637,7 +1639,7 @@ msgstr "Foo Bar Baz" #: docs/design_docs/string-extraction-guide.txt:24 lib/RT/StyleGuide.pod:757 msgid "Foo!" -msgstr "Foo !" +msgstr "Foo ! " #: html/Search/Bulk.html:105 msgid "Force change" @@ -1652,7 +1654,7 @@ msgstr "Format" msgid "Found %quant(%1,ticket)" msgstr "%quant(%1,ticket) trouvés" -#: lib/RT/Record.pm:943 +#: lib/RT/Record.pm:950 msgid "Found Object" msgstr "Objet trouvé" @@ -1666,7 +1668,7 @@ msgstr "En-têtes complets" #: html/Tools/Offline.html:87 msgid "Get template from file" -msgstr "Obtenir le modèle à partir d'un fichier" +msgstr "Obtenir le modèle à partir d'un fichier" #: lib/RT/Transaction_Overlay.pm:673 #. ($New->Name) @@ -1688,7 +1690,7 @@ msgstr "Configuration globale des champs personnalisés" #: html/Admin/Elements/SelectTemplate:59 #. (loc($Template->Name)) msgid "Global template: %1" -msgstr "Modèle global : %1" +msgstr "Modèle global : %1" #: html/Tools/Offline.html:91 msgid "Go" @@ -1696,7 +1698,7 @@ msgstr "Lancer" #: 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 msgid "Go!" -msgstr "Lancer !" +msgstr "Lancer !" #: html/Elements/GotoTicket:46 html/SelfService/Elements/GotoTicket:46 msgid "Goto ticket" @@ -1749,7 +1751,7 @@ msgstr "Cette utilisateur appartient aux groupes" #: lib/RT/Interface/CLI.pm:94 lib/RT/Interface/CLI.pm:94 msgid "Hello!" -msgstr "Bonjour !" +msgstr "Bonjour !" #: docs/design_docs/string-extraction-guide.txt:40 lib/RT/StyleGuide.pod:773 #. ($name) @@ -1779,11 +1781,11 @@ msgstr "Page d'accueil" msgid "I have %quant(%1,concrete mixer)." msgstr "J'ai %quant(%1, toupie à béton)." -#: html/Search/Build.html:637 +#: html/Search/Build.html:416 msgid "I'm lost" msgstr "Je suis perdu" -#: html/Ticket/Elements/ShowBasics:48 lib/RT/Tickets_Overlay.pm:1523 +#: html/Ticket/Elements/ShowBasics:48 lib/RT/Tickets_Overlay.pm:1594 msgid "Id" msgstr "Identifiant" @@ -1811,11 +1813,11 @@ msgstr "Si cet outil était setgid, un utilisateur local mal intentionné pourra msgid "If you've updated anything above, be sure to" msgstr "Si vous avez fait une modification, assurez vous de" -#: lib/RT/Record.pm:934 +#: lib/RT/Record.pm:941 msgid "Illegal value for %1" msgstr "Valeur incorrecte pour %1" -#: lib/RT/Record.pm:937 +#: lib/RT/Record.pm:944 msgid "Immutable field" msgstr "Champ non modifiable" @@ -1831,15 +1833,15 @@ msgstr "Afficher les files inactives." msgid "Include disabled users in search." msgstr "Inclure les utilisateurs désactivés dans le résultat." -#: html/Search/Build.html:663 +#: html/Search/Build.html:442 msgid "Incomplete Query" msgstr "Requête incomplète" -#: html/Search/Build.html:660 +#: html/Search/Build.html:439 msgid "Incomplete query" msgstr "Requête incomplète" -#: html/Search/Elements/PickBasics:161 lib/RT/Tickets_Overlay.pm:1573 +#: html/Search/Elements/PickBasics:161 lib/RT/Tickets_Overlay.pm:1644 msgid "Initial Priority" msgstr "Priorité initiale" @@ -1858,7 +1860,7 @@ msgstr "Erreur interne" #: lib/RT/Record.pm:305 #. ($id->{error_message}) msgid "Internal Error: %1" -msgstr "Erreur interne : %1" +msgstr "Erreur interne : %1" #: lib/RT/Group_Overlay.pm:668 msgid "Invalid Group Type" @@ -1868,7 +1870,7 @@ msgstr "Type de groupe invalide" msgid "Invalid Right" msgstr "Droit invalide" -#: lib/RT/Record.pm:939 +#: lib/RT/Record.pm:946 msgid "Invalid data" msgstr "Données invalides" @@ -1885,7 +1887,7 @@ msgstr "Droit invalide" msgid "Invalid value for %1" msgstr "File invalide pour %1" -#: lib/RT/Record.pm:1598 +#: lib/RT/Record.pm:1604 msgid "Invalid value for custom field" msgstr "Valeur incorrecte pour le champ personnalisé" @@ -1903,7 +1905,7 @@ msgstr "Il est suggéré de créer un utilisateur Unix non privilégié apparten #: bin/rt-crontool:188 msgid "It takes several arguments:" -msgstr "Il faut plusieurs paramètres :" +msgstr "Il faut plusieurs paramètres : " #: html/Search/Elements/EditFormat:85 msgid "Italic" @@ -1973,25 +1975,25 @@ msgstr "Autoriser cet utilisateur à recevoir des droits" msgid "Link" msgstr "Relation" -#: lib/RT/Record.pm:1293 +#: lib/RT/Record.pm:1300 msgid "Link already exists" msgstr "Le lien existe déja" -#: lib/RT/Record.pm:1307 +#: lib/RT/Record.pm:1314 msgid "Link could not be created" msgstr "Le lien ne peut être ajouté" -#: lib/RT/Record.pm:1313 +#: lib/RT/Record.pm:1320 #. ($TransString) msgid "Link created (%1)" msgstr "Le lien est ajouté (%1)" -#: lib/RT/Record.pm:1374 +#: lib/RT/Record.pm:1381 #. ($TransString) msgid "Link deleted (%1)" msgstr "Le lien est effacé (%1)" -#: lib/RT/Record.pm:1380 +#: lib/RT/Record.pm:1387 msgid "Link not found" msgstr "Lien introuvable" @@ -2010,7 +2012,7 @@ msgstr "Charger" #: html/Search/Elements/EditSearches:74 msgid "Load saved search:" -msgstr "Charger les recherches sauvées :" +msgstr "Charger les recherches sauvées :" #: lib/RT/System.pm:87 msgid "LoadSavedSearch" @@ -2209,13 +2211,13 @@ msgstr "Message sauvegardé" msgid "Messages about this ticket will not be sent to..." msgstr "Les messages relatifs à ce ticket ne seront pas envoyés à ..." -#: html/Search/Build.html:667 +#: html/Search/Build.html:446 msgid "Mismatched parentheses" msgstr "Parenthèses non correspondantes" -#: lib/RT/Record.pm:941 +#: lib/RT/Record.pm:948 msgid "Missing a primary key?: %1" -msgstr "Clé primaire manquante ? : %1" +msgstr "Clé primaire manquante ? : %1" #: html/Admin/Users/Modify.html:193 html/User/Prefs.html:93 msgid "Mobile" @@ -2590,7 +2592,7 @@ msgstr "Aucun champ personnalisé défini" msgid "No Group defined" msgstr "Aucun groupe défini" -#: lib/RT/Tickets_Overlay_SQL.pm:477 +#: lib/RT/Tickets_Overlay_SQL.pm:479 msgid "No Query" msgstr "Aucune requête" @@ -2610,7 +2612,7 @@ msgstr "Pas de modèle" msgid "No action" msgstr "Pas d'action" -#: lib/RT/Record.pm:936 +#: lib/RT/Record.pm:943 msgid "No column specified" msgstr "Aucune colonne spécifiée" @@ -2688,7 +2690,7 @@ msgstr "Pas de recherche chargée" msgid "No search to operate on." msgstr "Pas de critère de recherche." -#: html/Elements/RT__Ticket/ColumnMap:134 +#: html/Elements/RT__Ticket/ColumnMap:135 html/Search/Results.rdf:78 msgid "No subject" msgstr "Pas de sujet" @@ -2700,17 +2702,17 @@ msgstr "Aucun type de transaction spécifié" msgid "No users matching search criteria found." msgstr "Aucun utilisateur ne correspond aux critères de recherche." -#: lib/RT/Record.pm:933 +#: lib/RT/Record.pm:940 msgid "No value sent to _Set!\\n" -msgstr "Pas de valeur à positionner !\\n" +msgstr "Pas de valeur à positionner  \\n" #: html/Elements/QuickCreate:61 msgid "Nobody" msgstr "Personne" -#: lib/RT/Record.pm:938 +#: lib/RT/Record.pm:945 msgid "Nonexistant field?" -msgstr "Champ inexistant ?" +msgstr "Champ inexistant ? " #: html/Elements/Header:96 msgid "Not logged in." @@ -2927,7 +2929,7 @@ msgstr "Organisation" #: html/Approvals/Elements/Approve:54 #. ($approving->Id, $approving->Subject) msgid "Originating ticket: #%1" -msgstr "Ticket source: n°%1" +msgstr "Ticket source : n°%1" #: lib/RT/Transaction_Overlay.pm:611 msgid "Outgoing email about a comment recorded" @@ -2949,7 +2951,7 @@ msgstr "Tickets propres" msgid "OwnTicket" msgstr "PrendreTicket" -#: 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:1763 +#: 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:1834 msgid "Owner" msgstr "Intervenant" @@ -2999,11 +3001,11 @@ msgstr "Mot de passe défini" #: html/User/Prefs.html:232 #. (loc_fuzzy($msg)) msgid "Password: %1" -msgstr "Mot de passe : %1" +msgstr "Mot de passe : %1" #: lib/RT/User_Overlay.pm:1031 msgid "Password: Permission Denied" -msgstr "Mot de passe : permission refusée" +msgstr "Mot de passe : permission refusée" #: html/Admin/Users/Modify.html:356 msgid "Passwords do not match." @@ -3039,7 +3041,7 @@ msgstr "Groupes personnels" #: html/User/Elements/DelegateRights:58 msgid "Personal groups:" -msgstr "Groupes personnels:" +msgstr "Groupes personnels :" #: html/Admin/Users/Modify.html:180 html/User/Prefs.html:82 msgid "Phone numbers" @@ -3066,7 +3068,7 @@ msgstr "Page précédente" msgid "Principal %1 not found." msgstr "Personne/groupe %1 non trouvé." -#: 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:1547 +#: 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:1618 msgid "Priority" msgstr "Priorité" @@ -3076,7 +3078,7 @@ msgstr "La priorité débute à " #: html/Search/Elements/EditSearches:50 msgid "Privacy:" -msgstr "Privé:" +msgstr "Confidentialité :" #: etc/initialdata:25 msgid "Privileged" @@ -3085,7 +3087,7 @@ msgstr "Privilégié" #: html/Admin/Users/Modify.html:334 html/User/Prefs.html:223 #. (loc_fuzzy($msg)) msgid "Privileged status: %1" -msgstr "Statut privilégiés : %1" +msgstr "Statut privilégiés : %1" #: html/Admin/Users/index.html:102 msgid "Privileged users" @@ -3103,7 +3105,7 @@ msgstr "Requête" msgid "Query Builder" msgstr "Constructeur de requête" -#: 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:1374 +#: 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:1445 msgid "Queue" msgstr "File" @@ -3432,7 +3434,7 @@ msgstr "Mise à jour de la recherche %1" #: bin/rt-crontool:213 msgid "Security:" -msgstr "Sécurité :" +msgstr "Sécurité : " #: lib/RT/CustomField_Overlay.pm:100 msgid "See custom fields" @@ -3710,7 +3712,7 @@ msgstr "Débute" msgid "State" msgstr "Etat" -#: 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:1407 +#: 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:1479 msgid "Status" msgstr "Statut" @@ -3739,7 +3741,7 @@ msgstr "Volé à %1" msgid "Style" msgstr "Style" -#: 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:1489 +#: 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:1561 msgid "Subject" msgstr "Sujet" @@ -3779,7 +3781,7 @@ msgstr "Erreur système" #: lib/RT/Transaction_Overlay.pm:215 lib/RT/Transaction_Overlay.pm:221 #. ($msg) msgid "System Error: %1" -msgstr "Erreur système : %1" +msgstr "Erreur système : %1" #: html/Admin/Tools/index.html:47 msgid "System Tools" @@ -3846,7 +3848,7 @@ msgstr "Modèle analysé" msgid "Templates" msgstr "Modèles" -#: lib/RT/CustomField_Overlay.pm:877 lib/RT/Record.pm:932 +#: lib/RT/CustomField_Overlay.pm:877 lib/RT/Record.pm:939 msgid "That is already the current value" msgstr "Ceci est déjà la valeur actuelle" @@ -3931,9 +3933,9 @@ msgstr "L'AdminCC d'un ticket" #: 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 "Cette commande trouve tous les tickets actifs de la file 'general' et positionne leur priorité à 99 s'ils n'ont pas été touchés depuis quatre heures:" +msgstr "Cette commande trouve tous les tickets actifs de la file 'general' et positionne leur priorité à 99 s'ils n'ont pas été touchés depuis quatre heures :" -#: lib/RT/Record.pm:935 +#: lib/RT/Record.pm:942 msgid "The new value has been set." msgstr "La nouvelle valeur est enregistrée." @@ -3981,12 +3983,12 @@ msgstr "Jeu." #: html/Ticket/ModifyAll.html:46 html/Ticket/ModifyAll.html:50 #. ($Ticket->Id, $Ticket->Subject) msgid "Ticket #%1 Jumbo update: %2" -msgstr "Ticket n°%1 mise à jour globale : %2" +msgstr "Ticket n°%1 mise à jour globale : %2" #: html/Approvals/Elements/ShowDependency:67 #. ($link->BaseObj->Id, $link->BaseObj->Subject) msgid "Ticket #%1: %2" -msgstr "Ticket n°%1: %2" +msgstr "Ticket n°%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) @@ -4003,7 +4005,7 @@ msgstr "Ticket %1 créé dans la file '%2'" #: html/Search/Bulk.html:269 #. ($Ticket->Id,$_) msgid "Ticket %1: %2" -msgstr "Ticket %1 : %2" +msgstr "Ticket %1 : %2" #: html/Admin/Elements/QueueTabs:74 msgid "Ticket Custom Fields" @@ -4022,11 +4024,11 @@ msgstr "Ticket résolu" msgid "Ticket Transactions" msgstr "Transactions du ticket" -#: lib/RT/Tickets_Overlay.pm:1677 +#: lib/RT/Tickets_Overlay.pm:1748 msgid "Ticket content" msgstr "Contenu du ticket" -#: lib/RT/Tickets_Overlay.pm:1726 +#: lib/RT/Tickets_Overlay.pm:1797 msgid "Ticket content type" msgstr "Type du contenu du ticket" @@ -4053,7 +4055,7 @@ msgstr "Tickets" #: html/Approvals/Elements/ShowDependency:48 msgid "Tickets which depend on this approval:" -msgstr "Tickets dépendant de cette approbation:" +msgstr "Tickets dépendant de cette approbation :" #: html/Search/Elements/PickBasics:148 html/Ticket/Elements/EditBasics:61 msgid "Time Estimated" @@ -4067,7 +4069,7 @@ msgstr "Temps restant" msgid "Time Worked" msgstr "Temps passé" -#: lib/RT/Tickets_Overlay.pm:1648 +#: lib/RT/Tickets_Overlay.pm:1719 msgid "Time left" msgstr "Temps restant" @@ -4075,7 +4077,7 @@ msgstr "Temps restant" msgid "Time to display" msgstr "Temps de calcul" -#: lib/RT/Tickets_Overlay.pm:1623 +#: lib/RT/Tickets_Overlay.pm:1694 msgid "Time worked" msgstr "Temps passé" @@ -4129,7 +4131,7 @@ msgstr "Les transactions ne peuvent être transférées" msgid "Tue." msgstr "Mar." -#: 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:1461 +#: 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:1533 msgid "Type" msgstr "Type" @@ -4141,15 +4143,15 @@ msgstr "Fonction non disponible" msgid "Unix login" msgstr "Identifiant Unix" -#: lib/RT/Attachment_Overlay.pm:290 lib/RT/Record.pm:848 +#: lib/RT/Attachment_Overlay.pm:290 lib/RT/Record.pm:855 #. ($self->ContentEncoding) #. ($ContentEncoding) msgid "Unknown ContentEncoding %1" -msgstr "Type d'encodage de courrier inconnu: %1" +msgstr "Type d'encodage de courrier inconnu : %1" -#: html/Search/Build.html:632 +#: html/Search/Build.html:411 msgid "Unknown field: $key" -msgstr "Champ inconnu : $key" +msgstr "Champ inconnu : $key" #: html/Elements/SelectResultsPerPage:58 msgid "Unlimited" @@ -4197,7 +4199,7 @@ msgstr "Mettre à jour plusieurs tickets" #: lib/RT/Action/CreateTickets.pm:737 lib/RT/Interface/Web.pm:524 msgid "Update not recorded." -msgstr "Mise à jour non enregistrée" +msgstr "Mise à jour non enregistrée." #: html/Search/Bulk.html:99 msgid "Update selected tickets" @@ -4264,15 +4266,15 @@ msgstr "Utiliser les autres outils d'administration de RT" #: lib/RT/Ticket_Overlay.pm:496 #. ($args{'Owner'}) msgid "User '%1' could not be found." -msgstr "L'utilisateur %1 ne peut être trouvé" +msgstr "L'utilisateur %1 est introuvable." #: etc/initialdata:132 etc/initialdata:206 msgid "User Defined" -msgstr "Utilisateur défini" +msgstr "Défini par l'utilisateur" #: html/Admin/Elements/EditScrip:98 msgid "User Defined conditions and actions" -msgstr "Conditions et actions définies par l'usager" +msgstr "Conditions et actions définies par l'utilisateur" #: 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" @@ -4286,7 +4288,7 @@ msgstr "L'utilisateur a demandé un type de mise à jour non connu pour le champ #: html/Admin/Users/Modify.html:293 #. ($msg) msgid "User could not be created: %1" -msgstr "Utilisateur ne peut pas être créé : %1" +msgstr "L'utilisateur ne peut pas être créé : %1" #: lib/RT/User_Overlay.pm:331 msgid "User created" @@ -4294,7 +4296,7 @@ msgstr "Utilisateur créé" #: 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 "Groupes utilisateur" +msgstr "Groupes définis par l'utilisateur" #: lib/RT/User_Overlay.pm:593 lib/RT/User_Overlay.pm:613 msgid "User loaded" @@ -4316,7 +4318,7 @@ msgstr "Utilisateurs" msgid "Users matching search criteria" msgstr "Utilisateurs correspondants aux critères de recherche" -#: lib/RT/Tickets_Overlay_SQL.pm:523 +#: lib/RT/Tickets_Overlay_SQL.pm:525 msgid "Valid Query" msgstr "Valider la requête" @@ -4506,29 +4508,29 @@ msgstr "ne contient pas" msgid "equal to" msgstr "égal à " -#: html/Search/Build.html:387 +#: html/Search/Build.html:578 msgid "error: can't move down" -msgstr "erreur : ne peut aller plus bas" +msgstr "erreur : ne peut aller plus bas" -#: html/Search/Build.html:409 +#: html/Search/Build.html:600 msgid "error: can't move left" -msgstr "erreur : ne peut aller à gauche" +msgstr "erreur : ne peut aller à gauche" -#: html/Search/Build.html:368 +#: html/Search/Build.html:559 msgid "error: can't move up" -msgstr "erreur : ne peut aller plus haut" +msgstr "erreur : ne peut aller plus haut" -#: html/Search/Build.html:451 +#: html/Search/Build.html:642 msgid "error: nothing to delete" -msgstr "erreur : rien à effacer" +msgstr "erreur : rien à effacer" -#: html/Search/Build.html:373 html/Search/Build.html:392 html/Search/Build.html:414 html/Search/Build.html:443 +#: html/Search/Build.html:564 html/Search/Build.html:583 html/Search/Build.html:605 html/Search/Build.html:634 msgid "error: nothing to move" -msgstr "erreur : rien à déplacer" +msgstr "erreur : rien à déplacer" -#: html/Search/Build.html:469 +#: html/Search/Build.html:660 msgid "error: nothing to toggle" -msgstr "erreur : rien à commuter" +msgstr "erreur : rien à commuter" #: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectEqualityOperator:59 msgid "greater than" @@ -4585,7 +4587,7 @@ msgstr "sans nom" #: html/Admin/Elements/EditScrips:64 msgid "no value" -msgstr "Non renseigné" +msgstr "non renseigné" #: html/Admin/Elements/EditQueueWatchers:48 html/Ticket/Elements/EditWatchers:49 msgid "none" @@ -4631,7 +4633,7 @@ msgstr "feuille de calcul" #: lib/RT/Queue_Overlay.pm:85 msgid "stalled" -msgstr "bloqué" +msgstr "stagnant" #: lib/RT/Group_Overlay.pm:222 #. ($self->Type) @@ -4655,7 +4657,7 @@ msgstr "ticket n°%1 %2" #: lib/RT/Group_Overlay.pm:236 #. ($self->Id) msgid "undescribed group %1" -msgstr "Groupe %1 non décrit" +msgstr "groupe %1 non décrit" #: lib/RT/Group_Overlay.pm:211 #. ($user->Object->Name) diff --git a/rt/lib/RT/I18N/he.po b/rt/lib/RT/I18N/he.po index b3c533868..f895f3549 100644 --- a/rt/lib/RT/I18N/he.po +++ b/rt/lib/RT/I18N/he.po @@ -1,7 +1,9 @@ -# Hebrew Translation of the RT interface by Shimi. -# Comments: shimi@shimi.net +# msgid "" msgstr "" +"Project-Id-Version: RT 3.4.x\n" +"PO-Revision-Date: 2005-10-03 13:47-0400\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" diff --git a/rt/lib/RT/I18N/hu.po b/rt/lib/RT/I18N/hu.po index 857350841..3c199e082 100644 --- a/rt/lib/RT/I18N/hu.po +++ b/rt/lib/RT/I18N/hu.po @@ -1,11 +1,11 @@ +# msgid "" msgstr "" -"Project-Id-Version: RT 3.0.7\n" -"Report-Msgid-Bugs-To: \n" +"Project-Id-Version: RT 3.4.x\n" "POT-Creation-Date: 2002-06-22 06:06+0200\n" -"PO-Revision-Date: 2003-12-01 11:26+0100\n" +"PO-Revision-Date: 2005-10-03 13:48-0400\n" "Last-Translator: Attila K. Mergl <mergl@astron.hu>\n" -"Language-Team: Hungarian <hu@gnome.hu>\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-Transfer-Encoding: 8bit" diff --git a/rt/lib/RT/I18N/id.po b/rt/lib/RT/I18N/id.po index f53284800..b02e15bbc 100644 --- a/rt/lib/RT/I18N/id.po +++ b/rt/lib/RT/I18N/id.po @@ -2,9 +2,9 @@ # msgid "" msgstr "" -"Project-Id-Version: \n" +"Project-Id-Version: RT 3.4.x\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2005-06-03\n" +"PO-Revision-Date: 2005-10-03 13:48-0400\n" "Last-Translator: James <james@actionmessage.com>\n" "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n" "MIME-Version: 1.0\n" diff --git a/rt/lib/RT/I18N/it.po b/rt/lib/RT/I18N/it.po index 95d8c18c1..1f23e188e 100644 --- a/rt/lib/RT/I18N/it.po +++ b/rt/lib/RT/I18N/it.po @@ -1,8 +1,9 @@ +# msgid "" msgstr "" -"Project-Id-Version: RT 3.4.1\n" +"Project-Id-Version: RT 3.4.x\n" "POT-Creation-Date: 2002-05-02 11:36+0800\n" -"PO-Revision-Date: 2005-02-12 02:00+0800\n" +"PO-Revision-Date: 2005-10-03 13:48-0400\n" "Last-Translator: Angelo Turetta <aturetta@bestunion.it>\n" "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n" "MIME-Version: 1.0\n" diff --git a/rt/lib/RT/I18N/ja.po b/rt/lib/RT/I18N/ja.po index 259f857c0..880346bb9 100644 --- a/rt/lib/RT/I18N/ja.po +++ b/rt/lib/RT/I18N/ja.po @@ -1,11 +1,9 @@ -# Japanese translation by Interactive Artists LLC -# 0.1 2002 08 15 msgid "" msgstr "" -"Project-Id-Version: RT 2.1.x\n" +"Project-Id-Version: RT 3.4.x\n" "POT-Creation-Date: 2002-05-02 11:36+0800\n" -"PO-Revision-Date: 2002-05-13 02:00+0800\n" -"Last-Translator: Jesse Vincent <jesse@bestpractical.com>\n" +"PO-Revision-Date: 2005-10-20 02:00+0800\n" +"Last-Translator: Daisuke Maki <daisuke@wafu.ne.jp>\n" "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" @@ -178,7 +176,7 @@ msgstr "" #. ($self->BriefDescription , $self->CreatorObj->Name) #. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) msgid "%1 by %2" -msgstr "%2ã«ã‚ˆã‚‹%1" +msgstr "%1 (%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) @@ -198,12 +196,12 @@ msgstr "" #: NOT FOUND IN SOURCE msgid "%1 couldn't init a transaction (%2)\\n" -msgstr "%1ã¯ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’ã¯ã˜ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ(%2)\\n" +msgstr "%1ã¯ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’開始ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ(%2)\\n" #: lib/RT/Ticket_Overlay.pm:2743 #. ($self) msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." -msgstr "%1ã¯åˆ†è§£ã™ã‚‹ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¨å®šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚RTã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ä¸€è²«æ€§ãŒãªã„å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚" +msgstr "%1を解決状態ã«è¨å®šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚RTã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ä¸€è²«æ€§ãŒãªã„å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚" #: lib/RT/Transaction_Overlay.pm:560 #. ($obj_type) @@ -218,7 +216,7 @@ msgstr "" #: html/Elements/MyTickets:47 #. ($rows) msgid "%1 highest priority tickets I own" -msgstr "" +msgstr "優先度ã®é«˜ã„ãƒã‚±ãƒƒãƒˆ%1件" #: bin/rt-crontool:186 #. ($0) @@ -254,7 +252,7 @@ msgstr "%1分" #: html/Elements/MyRequests:47 #. ($rows) msgid "%1 newest unowned tickets" -msgstr "" +msgstr "担当ã•ã‚Œã¦ã„ãªã„ãƒã‚±ãƒƒãƒˆ%1件" #: NOT FOUND IN SOURCE msgid "%1 not shown" @@ -284,7 +282,7 @@ msgstr "%1タイプã¯%2ã§ã¯ä¸æ˜Žã§ã™" #: lib/RT/Action/ResolveMembers.pm:63 #. (ref $self) msgid "%1 will resolve all members of a resolved group ticket." -msgstr "%1ã¯åˆ†è§£ã•ã‚ŒãŸã‚°ãƒ«ãƒ¼ãƒ—ãƒã‚±ãƒƒãƒˆã®ã™ã¹ã¦ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’分解ã—ã¾ã™ã€‚" +msgstr "%1ã¯ã‚°ãƒ«ãƒ¼ãƒ—ãƒã‚±ãƒƒãƒˆã®ã™ã¹ã¦ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’解決状態ã«ã—ã¾ã™ã€‚" #: NOT FOUND IN SOURCE msgid "%1 will stall a [local] BASE if it's dependent [or member] of a linked up request." @@ -307,7 +305,7 @@ msgstr "" #: lib/RT/Transaction_Overlay.pm:470 #. ($self) msgid "%1: no attachment specified" -msgstr "%1:アタッãƒãƒ¡ãƒ³ãƒˆãŒç‰¹å®šã§ãã¾ã›ã‚“" +msgstr "%1:アタッãƒãƒ¡ãƒ³ãƒˆãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“" #: html/Ticket/Elements/ShowTransactionAttachments:78 #. ($size) @@ -436,20 +434,12 @@ msgstr "" #: html/Admin/Users/Modify.html:71 msgid "(required)" -msgstr "(必è¦ã§ã™ï¼‰" +msgstr "ï¼ˆå¿…é ˆé …ç›®ã§ã™ï¼‰" #: html/Ticket/Elements/ShowTransactionAttachments:82 msgid "(untitled)" msgstr "" -#: NOT FOUND IN SOURCE -msgid "25 highest priority tickets I own..." -msgstr "ç§ãŒæ‰€æœ‰ã—ã¦ã„ã‚‹25ã®æœ€ã‚‚é‡è¦ãªå„ªå…ˆæ¨©" - -#: NOT FOUND IN SOURCE -msgid "25 highest priority tickets I requested..." -msgstr "ç§ãŒãƒªã‚¯ã‚¨ã‚¹ãƒˆã—ãŸ25ã®æœ€ã‚‚é‡è¦ãªå„ªå…ˆæ¨©" - #: html/Ticket/Elements/ShowBasics:53 msgid "<% $Ticket->Status%>" msgstr "" @@ -469,7 +459,7 @@ msgstr "" #: docs/design_docs/string-extraction-guide.txt:54 html/Elements/CreateTicket:47 lib/RT/StyleGuide.pod:787 #. ($m->scomp('/Elements/SelectNewTicketQueue')) msgid "<input type=\"submit\" value=\"New ticket in\"> %1" -msgstr "<input type=\"submit\" value=\"æ–°ã—ã„ãƒã‚±ãƒƒãƒˆ\"> %1" +msgstr "<input type=\"submit\" value=\"æ–°è¦ä½œæˆ\"> %1" #: etc/initialdata:218 msgid "A blank template" @@ -546,7 +536,7 @@ msgstr "" #: html/Search/Bulk.html:106 msgid "Add Requestor" -msgstr "リクエストã™ã‚‹äººã‚’ã‚’è¿½åŠ ã™ã‚‹" +msgstr "作æˆè€…ã‚’ã‚’è¿½åŠ ã™ã‚‹" #: html/Admin/Elements/AddCustomFieldValue:46 msgid "Add Value" @@ -676,7 +666,7 @@ msgstr "絞込ã¿æ¤œç´¢" #: html/Elements/SelectDateRelation:57 msgid "After" -msgstr "後" +msgstr "ãŒä»¥ä¸‹ã‚ˆã‚Šå¾Œã§ã‚ã‚‹" #: html/Search/Elements/PickCriteria:52 msgid "Aggregator" @@ -745,7 +735,7 @@ msgstr "" #: lib/RT/Date.pm:440 msgid "Apr." -msgstr "四月" +msgstr "4月" #: html/Elements/SelectSortOrder:56 html/Search/Elements/DisplayOptions:73 msgid "Ascending" @@ -794,7 +784,7 @@ msgstr "" #: lib/RT/Date.pm:444 msgid "Aug." -msgstr "八月" +msgstr "8月" #: NOT FOUND IN SOURCE msgid "AuthSystem" @@ -838,7 +828,7 @@ msgstr "本当ã«å¤‰æ›´ã‚’ä¿å˜ã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹" #: html/Elements/SelectDateRelation:55 lib/RT/CurrentUser.pm:360 msgid "Before" -msgstr "å‰" +msgstr "ãŒä»¥ä¸‹ã‚ˆã‚Šå‰ã§ã‚ã‚‹" #: html/Elements/Header:80 msgid "Best Practical Solutions, LLC corporate logo" @@ -903,7 +893,7 @@ msgstr "" #: lib/RT/Record.pm:1266 lib/RT/Record.pm:1344 msgid "Can't specifiy both base and target" -msgstr "ベースã¨ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’特定ã§ãã¾ã›ã‚“" +msgstr "ベースã¨ã‚¿ãƒ¼ã‚²ãƒƒãƒˆä¸¡æ–¹ã‚’指定ã™ã‚‹äº‹ã¯ã§ãã¾ã›ã‚“" #: html/autohandler:148 #. ($msg) @@ -931,8 +921,9 @@ msgid "Check box to revoke right" msgstr "権利を無効ã«ã™ã‚‹ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹" #: html/Elements/EditLinks:146 html/Elements/EditLinks:85 html/Elements/ShowLinks:78 html/Ticket/Create.html:214 html/Ticket/Elements/BulkLinks:64 +# XXX - I can't come up with a good translation yet. leave as is in English msgid "Children" -msgstr "åä¾›" +msgstr "" #: html/Admin/Users/Modify.html:156 html/User/Prefs.html:141 msgid "City" @@ -944,7 +935,7 @@ msgstr "" #: html/Ticket/Elements/ShowDates:68 msgid "Closed" -msgstr "" +msgstr "解決日時" #: NOT FOUND IN SOURCE msgid "Closed requests" @@ -1081,7 +1072,7 @@ msgstr "" #: lib/RT/Ticket_Overlay.pm:3004 lib/RT/Ticket_Overlay.pm:3012 lib/RT/Ticket_Overlay.pm:3029 msgid "Could not change owner. " -msgstr "オーナー変更ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" +msgstr "担当者変更ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" #: html/Admin/CustomFields/Modify.html:119 #. ($msg) @@ -1393,7 +1384,7 @@ msgstr "" #: html/Elements/SelectDateType:47 html/Ticket/Elements/ShowDates:48 lib/RT/Ticket_Overlay.pm:1145 msgid "Created" -msgstr "作æˆã—ã¾ã—ãŸ" +msgstr "作æˆæ—¥æ™‚" #: html/Admin/CustomFields/Modify.html:121 html/Admin/Elements/EditCustomField:117 #. ($CustomFieldObj->Name()) @@ -1503,7 +1494,7 @@ msgstr "日付" #: lib/RT/Date.pm:448 msgid "Dec." -msgstr "å二月" +msgstr "12月" #: etc/initialdata:222 msgid "Default Autoresponse template" @@ -1596,7 +1587,7 @@ msgstr "" #: 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 msgid "Depended on by" -msgstr "次ã®ã‚‚ã®æ¬¡ç¬¬ã§ã‚ã‚‹" +msgstr "ä¾å˜ã•ã‚Œã¦ã„ã‚‹ãƒã‚±ãƒƒãƒˆ" #: NOT FOUND IN SOURCE msgid "Dependencies: \\n" @@ -1624,15 +1615,15 @@ msgstr "" #: 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 msgid "Depends on" -msgstr "ã«ã‚ˆã‚‹" +msgstr "ä¾å˜ã—ã¦ã„ã‚‹ãƒã‚±ãƒƒãƒˆ" #: html/Elements/SelectSortOrder:56 html/Search/Elements/DisplayOptions:78 msgid "Descending" -msgstr "é™é †ã™ã‚‹" +msgstr "é™é †" #: html/SelfService/Create.html:100 html/Ticket/Create.html:149 msgid "Describe the issue below" -msgstr "下ã®å•é¡Œç‚¹ã‚’表ã™" +msgstr "ãƒã‚±ãƒƒãƒˆã®æœ¬æ–‡ã‚’以下ã«æ›¸ã込んã§ãã ã•ã„" #: 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" @@ -1688,7 +1679,7 @@ msgstr "" #: html/Elements/Refresh:51 msgid "Don't refresh this page." -msgstr "ã“ã®ãƒšãƒ¼ã‚¸ã‚’æ›´æ–°ã—ãªã„ã§ãã ã•ã„" +msgstr "ページを定期的ã«æ›´æ–°ã—ãªã„" #: html/Ticket/Elements/ShowTransactionAttachments:82 msgid "Download" @@ -1700,7 +1691,7 @@ msgstr "" #: 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 msgid "Due" -msgstr "期é™åˆ‡ã‚Œ" +msgstr "終了予定日時" #: NOT FOUND IN SOURCE msgid "Due date '%1' could not be parsed" @@ -1794,7 +1785,7 @@ msgstr "テンプレート%1を編集ã™ã‚‹" #: lib/RT/Record.pm:1281 lib/RT/Record.pm:1358 msgid "Either base or target must be specified" -msgstr "ベースもã—ãã¯ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’特定ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“" +msgstr "ベースもã—ãã¯ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’指定ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“" #: html/Admin/Users/Modify.html:74 html/Ticket/Elements/AddWatchers:77 html/User/Prefs.html:65 msgid "Email" @@ -1942,7 +1933,7 @@ msgstr "" #: lib/RT/Date.pm:438 msgid "Feb." -msgstr "二月" +msgstr "2月" #: html/Elements/SelectAttachmentField:50 msgid "Filename" @@ -2138,7 +2129,7 @@ msgstr "グループãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\\n" #: NOT FOUND IN SOURCE msgid "Group not specified.\\n" -msgstr "グループãŒç‰¹å®šã§ãã¾ã›ã‚“。\\n" +msgstr "グループãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。\\n" #: 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 msgid "Groups" @@ -2163,11 +2154,11 @@ msgstr "ã“ã‚“ã«ã¡ã¯ï¼" #: docs/design_docs/string-extraction-guide.txt:40 lib/RT/StyleGuide.pod:773 #. ($name) msgid "Hello, %1" -msgstr "ã“ã‚“ã«ã¡ã¯ã€%1" +msgstr "ã“ã‚“ã«ã¡ã¯ã€%1ã•ã‚“" #: html/Admin/Elements/GroupTabs:70 html/Admin/Elements/UserTabs:64 html/Ticket/Elements/ShowHistory:51 html/Ticket/Elements/Tabs:111 msgid "History" -msgstr "ヒストリー" +msgstr "æ›´æ–°å±¥æ´" #: html/Admin/Groups/History.html:62 #. ($GroupObj->Name) @@ -2181,11 +2172,11 @@ msgstr "" #: NOT FOUND IN SOURCE msgid "HomePhone" -msgstr "自宅ã®é›»è©±" +msgstr "電話(自宅)" #: html/Elements/Tabs:65 msgid "Homepage" -msgstr "ホームページ" +msgstr "ホーム" #: lib/RT/Base.pm:110 #. (6) @@ -2206,7 +2197,7 @@ msgstr "ID" #: html/Admin/Users/Modify.html:65 html/User/Prefs.html:60 msgid "Identity" -msgstr "身分証明書" +msgstr "åŸºæœ¬æƒ…å ±" #: etc/initialdata:429 msgid "If an approval is rejected, reject the original and delete pending approvals" @@ -2226,7 +2217,7 @@ msgstr "" #: 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 "上ã®ä½•ã‹ã‚’アップデートã—ãŸãªã‚‰ã€æ¬¡ã®ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„" +msgstr "変更をåæ˜ ã™ã‚‹ã«ã¯ãƒœã‚¿ãƒ³ã‚’推ã—ã¦ãã ã•ã„" #: lib/RT/Record.pm:933 msgid "Illegal value for %1" @@ -2291,7 +2282,7 @@ msgstr "" #: NOT FOUND IN SOURCE msgid "Invalid owner. Defaulting to 'nobody'." -msgstr "無効ãªã‚ªãƒ¼ãƒŠãƒ¼ã§ã™ã€‚ '誰ã§ã‚‚ãªã„'ã«åˆæœŸè¨å®šã—ã¾ã™." +msgstr "無効ãªæ‹…当者ã§ã™ã€‚ '誰ã§ã‚‚ãªã„'ã«åˆæœŸè¨å®šã—ã¾ã™." #: lib/RT/Scrip_Overlay.pm:158 lib/RT/Template_Overlay.pm:276 msgid "Invalid queue" @@ -2332,7 +2323,7 @@ msgstr "" #: lib/RT/Date.pm:437 msgid "Jan." -msgstr "一月" +msgstr "1月" #: lib/RT/Group_Overlay.pm:174 msgid "Join or leave this group" @@ -2340,15 +2331,15 @@ msgstr "" #: lib/RT/Date.pm:443 msgid "Jul." -msgstr "七月" +msgstr "7月" #: html/Ticket/Elements/Tabs:122 msgid "Jumbo" -msgstr "大ãã„" +msgstr "ç·åˆ" #: lib/RT/Date.pm:442 msgid "Jun." -msgstr "å…月" +msgstr "6月" #: NOT FOUND IN SOURCE msgid "Keyword" @@ -2372,7 +2363,7 @@ msgstr "最後ã®" #: html/Ticket/Elements/EditDates:59 html/Ticket/Elements/ShowDates:60 msgid "Last Contact" -msgstr "最後ã®ã‚³ãƒ³ã‚¿ã‚¯ãƒˆ" +msgstr "最終更新日時" #: html/Elements/SelectDateType:50 msgid "Last Contacted" @@ -2380,7 +2371,7 @@ msgstr "最後ã«ã‚³ãƒ³ã‚¿ã‚¯ãƒˆã—ãŸ" #: html/Elements/SelectDateType:51 msgid "Last Updated" -msgstr "最後ã«ã‚¢ãƒƒãƒ—デートã—ãŸ" +msgstr "最終更新日時" #: html/Search/Elements/PickBasics:103 msgid "LastUpdatedBy" @@ -2388,7 +2379,7 @@ msgstr "" #: html/Ticket/Elements/ShowBasics:68 msgid "Left" -msgstr "残ã£ãŸ" +msgstr "残り時間" #: html/Admin/Users/Modify.html:109 msgid "Let this user access RT" @@ -2400,7 +2391,7 @@ msgstr "ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æ¨©åˆ©ã‚’èªã‚ã¾ã™" #: NOT FOUND IN SOURCE msgid "Limiting owner to %1 %2" -msgstr "オーナーを%1 %2ã«åˆ¶é™ã—ã¾ã™" +msgstr "担当者を%1 %2ã«åˆ¶é™ã—ã¾ã™" #: NOT FOUND IN SOURCE msgid "Limiting queue to %1 %2" @@ -2464,7 +2455,7 @@ msgstr "" #: html/Admin/Users/Modify.html:138 html/User/Prefs.html:126 msgid "Location" -msgstr "å ´æ‰€" +msgstr "ä½æ‰€" #: lib/RT.pm:212 #. ($RT::LogDir) @@ -2474,7 +2465,7 @@ msgstr "ãƒã‚°ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ¼%1ãŒè¦‹ã¤ã‹ã‚‰ãªã„ã€ã¾ãŸã¯æ›¸ã出ã #: html/Elements/Header:94 #. ("<b>".$session{'CurrentUser'}->Name."</b>") msgid "Logged in as %1" -msgstr "%1ã¨ã—ã¦ã‚µã‚¤ãƒ³ã™ã‚‹" +msgstr "\"%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 msgid "Login" @@ -2490,7 +2481,7 @@ msgstr "" #: html/Search/Bulk.html:104 msgid "Make Owner" -msgstr "オーナーを決ã‚ã‚‹" +msgstr "担当者を決ã‚ã‚‹" #: html/Search/Bulk.html:128 msgid "Make Status" @@ -2554,11 +2545,11 @@ msgstr "" #: lib/RT/Date.pm:439 msgid "Mar." -msgstr "三月" +msgstr "3月" #: lib/RT/Date.pm:441 msgid "May." -msgstr "五月" +msgstr "5月" #: lib/RT/Transaction_Overlay.pm:720 #. ($value) @@ -2916,7 +2907,7 @@ msgstr "多ãã®" #: lib/RT/User_Overlay.pm:227 msgid "Must specify 'Name' attribute" -msgstr "'åå‰'ã®å±žæ€§ã‚’特定ã—ã¦ãã ã•ã„" +msgstr "'åå‰'ã®å±žæ€§ã‚’指定ã—ã¦ãã ã•ã„" #: html/SelfService/Elements/MyRequests:70 #. ($friendly_status) @@ -3077,11 +3068,11 @@ msgstr "テンプレートãŒã‚ã‚Šã¾ã›ã‚“" #: NOT FOUND IN SOURCE msgid "No Ticket specified. Aborting ticket " -msgstr "ãƒã‚±ãƒƒãƒˆãŒç‰¹å®šã§ãã¾ã›ã‚“。ãƒã‚±ãƒƒãƒˆã‚’終了ã—ã¾ã™" +msgstr "ãƒã‚±ãƒƒãƒˆãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。" #: NOT FOUND IN SOURCE msgid "No Ticket specified. Aborting ticket modifications\\n\\n" -msgstr "ãƒã‚±ãƒƒãƒˆãŒç‰¹å®šã§ãã¾ã›ã‚“。ãƒã‚±ãƒƒãƒˆã®ä¿®æ£ã‚’終了ã—ã¾ã™\\n\\n" +msgstr "ãƒã‚±ãƒƒãƒˆãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。ãƒã‚±ãƒƒãƒˆã®ä¿®æ£ã‚’終了ã—ã¾ã™\\n\\n" #: html/Approvals/Elements/Approve:67 msgid "No action" @@ -3110,7 +3101,7 @@ msgstr "%1記述ã¯ã‚ã‚Šã¾ã›ã‚“" #: lib/RT/Users_Overlay.pm:185 msgid "No group specified" -msgstr "グループãŒç‰¹å®šã§ãã¾ã›ã‚“" +msgstr "グループãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“" #: html/Admin/Groups/index.html:52 msgid "No groups matching search criteria found." @@ -3147,7 +3138,7 @@ msgstr "アップデートãƒã‚±ãƒƒãƒˆã‚’見る許å¯ãŒã•ã‚ã‚Šã¾ã›ã‚“" #: lib/RT/Queue_Overlay.pm:792 lib/RT/Ticket_Overlay.pm:1450 msgid "No principal specified" -msgstr "責任者ãŒç‰¹å®šã§ãã¾ã›ã‚“" +msgstr "責任者ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“" #: html/Admin/Queues/People.html:175 html/Admin/Queues/People.html:185 msgid "No principals selected." @@ -3179,11 +3170,11 @@ msgstr "" #: NOT FOUND IN SOURCE msgid "No ticket id specified" -msgstr "ãƒã‚±ãƒƒãƒˆIDãŒç‰¹å®šã§ãã¾ã›ã‚“" +msgstr "ãƒã‚±ãƒƒãƒˆIDãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“" #: lib/RT/Transaction_Overlay.pm:517 lib/RT/Transaction_Overlay.pm:554 msgid "No transaction type specified" -msgstr "トランザクションタイプãŒç‰¹å®šã§ãã¾ã›ã‚“" +msgstr "トランザクションタイプãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“" #: html/Admin/Users/index.html:55 msgid "No users matching search criteria found." @@ -3207,19 +3198,19 @@ msgstr "" #: html/Elements/Header:96 msgid "Not logged in." -msgstr "ãƒã‚°ã‚¤ãƒ³ã§ãã¾ã›ã‚“" +msgstr "ãƒã‚°ã‚¤ãƒ³ã—ã¦ã„ã¾ã›ã‚“" #: lib/RT/Date.pm:393 msgid "Not set" -msgstr "セットã§ãã¾ã›ã‚“" +msgstr "未指定" #: html/NoAuth/Reminder.html:48 msgid "Not yet implemented." -msgstr "ã¾ã 実行ã§ãã¾ã›ã‚“" +msgstr "未実装" #: NOT FOUND IN SOURCE msgid "Not yet implemented...." -msgstr "ã¾ã 実行ã§ãã¾ã›ã‚“。。。" +msgstr "未実装..." #: html/Approvals/Elements/Approve:70 msgid "Notes" @@ -3333,7 +3324,7 @@ msgstr "" #: lib/RT/Date.pm:446 msgid "Oct." -msgstr "å月" +msgstr "10月" #: html/Tools/Elements/Tabs:53 msgid "Offline" @@ -3349,7 +3340,7 @@ msgstr "" #: html/Elements/SelectDateRelation:56 msgid "On" -msgstr "ã«" +msgstr "ãŒä»¥ä¸‹ã§ã‚ã‚‹" #: etc/initialdata:163 msgid "On Comment" @@ -3399,7 +3390,7 @@ msgstr "" #: html/Elements/Quicksearch:52 msgid "Open" -msgstr "é–‹ã" +msgstr "ç€æ‰‹æ¸ˆã¿" #: html/Ticket/Elements/Tabs:159 msgid "Open it" @@ -3464,7 +3455,7 @@ msgstr "" #: 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 msgid "Owner" -msgstr "オーナー" +msgstr "担当者" #: lib/RT/Ticket_Overlay.pm:495 msgid "Owner could not be set." @@ -3473,11 +3464,11 @@ msgstr "" #: lib/RT/Transaction_Overlay.pm:661 #. ($Old->Name , $New->Name) msgid "Owner forcibly changed from %1 to %2" -msgstr "オーナーã¯å¼·åˆ¶çš„ã«%1ã‹ã‚‰%2を変更ã—ã¾ã—ãŸ" +msgstr "担当者ã¯å¼·åˆ¶çš„ã«%1ã‹ã‚‰%2を変更ã—ã¾ã—ãŸ" #: NOT FOUND IN SOURCE msgid "Owner is" -msgstr "オーナーã¯" +msgstr "担当者ã¯" #: html/Elements/TicketList:78 #. ($Page, int($TotalFound/$Rows)+$oddRows) @@ -3493,8 +3484,9 @@ msgid "PagerPhone" msgstr "ãƒã‚±ãƒƒãƒˆãƒ™ãƒ«é›»è©±" #: html/Elements/EditLinks:142 html/Elements/EditLinks:76 html/Elements/ShowLinks:68 html/Ticket/Create.html:213 html/Ticket/Elements/BulkLinks:60 +# XXX - I can't come up with a good translation yet. leave as is in English msgid "Parents" -msgstr "両親" +msgstr "" #: html/Elements/Login:74 html/User/Prefs.html:105 msgid "Password" @@ -3539,8 +3531,10 @@ msgid "Passwords do not match. Your password has not been changed" msgstr "" #: html/Ticket/Elements/ShowSummary:66 html/Ticket/Elements/Tabs:119 html/Ticket/ModifyAll.html:72 +# XXX - this is not really a good translation... but much better than +# "人々" (daisuke) msgid "People" -msgstr "人々" +msgstr "担当者ç‰" #: etc/initialdata:133 msgid "Perform a user-defined action" @@ -3600,7 +3594,7 @@ msgstr "å‰ã®ãƒšãƒ¼ã‚¸" #: NOT FOUND IN SOURCE msgid "Pri" -msgstr "優先権" +msgstr "優先度" #: lib/RT/ACE_Overlay.pm:158 lib/RT/ACE_Overlay.pm:240 lib/RT/ACE_Overlay.pm:570 #. ($args{'PrincipalId'}) @@ -3609,7 +3603,7 @@ msgstr "" #: 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 msgid "Priority" -msgstr "優先権" +msgstr "優先度" #: html/Admin/Queues/Modify.html:86 msgid "Priority starts at" @@ -3692,11 +3686,11 @@ msgstr "ã‚ュー" #: html/Elements/Quicksearch:46 msgid "Quick search" -msgstr "" +msgstr "簡易検索" #: html/Elements/QuickCreate:46 msgid "Quick ticket creation" -msgstr "" +msgstr "ãƒã‚±ãƒƒãƒˆæ–°è¦ä½œæˆ" #: html/Search/Results.html:83 msgid "RSS" @@ -3766,7 +3760,7 @@ msgstr "RTã§ã¯ã€ãŸã ã„ã¾ãŠä½¿ã„ã®æ–¹ã®èªè¨¼ãŒã§ãã¾ã›ã‚“ã§ã—ã #: NOT FOUND IN SOURCE msgid "RT couldn't find requestor via its external database lookup" -msgstr "RTã¯å¤–部ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ«ãƒƒã‚¯ã‚¢ãƒƒãƒ—を使ã£ã¦ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹äººã‚’見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" +msgstr "RTã¯å¤–部ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ«ãƒƒã‚¯ã‚¢ãƒƒãƒ—を使ã£ã¦ä½œæˆè€…を見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" #: NOT FOUND IN SOURCE msgid "RT couldn't find the queue: %1" @@ -3835,11 +3829,11 @@ msgstr "" #: html/Elements/EditLinks:103 html/Elements/EditLinks:154 html/Elements/ShowLinks:92 html/Ticket/Create.html:216 html/Ticket/Elements/BulkLinks:72 msgid "Referred to by" -msgstr "次ã®ã‚‚ã®ã«ã‚ˆã£ã¦å‚ç…§ã—ãŸ" +msgstr "å‚ç…§ã•ã‚Œã¦ã„ã‚‹ãƒã‚±ãƒƒãƒˆ" #: 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 msgid "Refers to" -msgstr "å‚ç…§ã™ã‚‹" +msgstr "å‚ç…§ã—ã¦ã„ã‚‹ãƒã‚±ãƒƒãƒˆ" #: NOT FOUND IN SOURCE msgid "Refine" @@ -3852,7 +3846,7 @@ msgstr "絞込ã¿æ¤œç´¢" #: html/Elements/Refresh:57 #. ($value/60) msgid "Refresh this page every %1 minutes." -msgstr "ã“ã®ãƒšãƒ¼ã‚¸ã‚’%1分ãŠãã«æ›´æ–°ã—ã¦ãã ã•ã„" +msgstr "ページを%1分ãŠãã«æ›´æ–°ã™ã‚‹" #: html/Search/Bulk.html:116 msgid "Remove AdminCc" @@ -3864,7 +3858,7 @@ msgstr "Ccを削除ã™ã‚‹" #: html/Search/Bulk.html:108 msgid "Remove Requestor" -msgstr "リクエストã™ã‚‹äººã‚’削除ã™ã‚‹" +msgstr "作æˆè€…を削除ã™ã‚‹" #: html/Ticket/Elements/ShowTransaction:171 html/Ticket/Elements/Tabs:145 msgid "Reply" @@ -3872,7 +3866,7 @@ msgstr "返信" #: html/Admin/Queues/Modify.html:72 msgid "Reply Address" -msgstr "" +msgstr "返信アドレス" #: html/Search/Bulk.html:151 html/Ticket/ModifyAll.html:94 html/Ticket/Update.html:76 msgid "Reply to requestors" @@ -3888,15 +3882,15 @@ msgstr "" #: etc/initialdata:44 lib/RT/ACE_Overlay.pm:112 msgid "Requestor" -msgstr "リクエストã™ã‚‹äºº" +msgstr "作æˆè€…" #: NOT FOUND IN SOURCE msgid "Requestor email address" -msgstr "リクエストã™ã‚‹äººã®Eメールアドレス" +msgstr "作æˆè€…ã®Eメールアドレス" #: html/SelfService/Create.html:63 html/Ticket/Create.html:77 html/Ticket/Elements/EditPeople:69 html/Ticket/Elements/ShowPeople:52 msgid "Requestors" -msgstr "リクエストã™ã‚‹äºº" +msgstr "作æˆè€…" #: html/Admin/Queues/Modify.html:96 msgid "Requests should be due in" @@ -3917,7 +3911,7 @@ msgstr "ä½æ‰€" #: html/Ticket/Elements/Tabs:155 msgid "Resolve" -msgstr "分解ã™ã‚‹" +msgstr "解決済ã¿ã«ã™ã‚‹" #: html/Ticket/Update.html:154 #. ($TicketObj->id, $TicketObj->Subject) @@ -3926,11 +3920,11 @@ msgstr "" #: etc/initialdata:323 html/Elements/SelectDateType:49 lib/RT/Ticket_Overlay.pm:1148 msgid "Resolved" -msgstr "分解ã—ãŸ" +msgstr "解決済ã¿" #: NOT FOUND IN SOURCE msgid "Response to requestors" -msgstr "リクエストã™ã‚‹äººã«è¿”ç”ã™ã‚‹" +msgstr "作æˆè€…ã«è¿”ç”ã™ã‚‹" #: html/Elements/ListActions:47 html/Search/Elements/NewListActions:47 msgid "Results" @@ -4016,7 +4010,7 @@ msgstr "変更をä¿å˜ã™ã‚‹" #: html/User/Prefs.html:179 msgid "Save Preferences" -msgstr "" +msgstr "変更をä¿å˜ã™ã‚‹" #: html/Ticket/Elements/PreviewScrips:124 msgid "Save changes" @@ -4245,7 +4239,7 @@ msgstr "" #: lib/RT/Date.pm:445 msgid "Sep." -msgstr "ä¹æœˆ" +msgstr "9月" #: html/Ticket/Elements/ShowTransaction:150 msgid "Show" @@ -4385,7 +4379,7 @@ msgstr "開始日'%1'ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" #: html/Elements/SelectDateType:52 html/Ticket/Create.html:196 html/Ticket/Elements/EditDates:48 html/Ticket/Elements/ShowDates:52 msgid "Starts" -msgstr "開始ã™ã‚‹" +msgstr "開始予定日時" #: NOT FOUND IN SOURCE msgid "Starts By" @@ -4397,11 +4391,11 @@ msgstr "開始日'%1'を解æžã§ãã¾ã›ã‚“ã§ã—ãŸ" #: html/Admin/Users/Modify.html:162 html/User/Prefs.html:145 msgid "State" -msgstr "状態" +msgstr "都é“府県" #: 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 msgid "Status" -msgstr "ステータス" +msgstr "状態" #: etc/initialdata:309 msgid "Status Change" @@ -4413,7 +4407,7 @@ msgstr "ステータスãŒ%1ã‹ã‚‰%2ã«å¤‰æ›´ã•ã‚Œã¾ã—ãŸ" #: html/Ticket/Elements/Tabs:170 msgid "Steal" -msgstr "盗用ã™ã‚‹" +msgstr "担当者変更" #: lib/RT/Queue_Overlay.pm:118 msgid "Steal tickets" @@ -4426,7 +4420,7 @@ msgstr "" #: lib/RT/Transaction_Overlay.pm:667 #. ($Old->Name) msgid "Stolen from %1" -msgstr "%1ã‹ã‚‰ç›—用ã—ãŸ" +msgstr "%1ã‹ã‚‰æ‹…当者を変更ã—ã¾ã—ãŸ" #: NOT FOUND IN SOURCE msgid "Stolen from %1 " @@ -4438,7 +4432,7 @@ msgstr "" #: 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 msgid "Subject" -msgstr "サブジェクト" +msgstr "件å" #: docs/design_docs/string-extraction-guide.txt:89 lib/RT/StyleGuide.pod:815 lib/RT/Transaction_Overlay.pm:689 #. ($self->Data) @@ -4503,8 +4497,9 @@ msgid "TEST_STRING" msgstr "テスト_ストリング" #: html/Elements/MyRequests:50 html/Search/Elements/EditFormat:72 html/Ticket/Elements/Tabs:166 +# XXX - what the... msgid "Take" -msgstr "ã¨ã‚‹" +msgstr "担当ã™ã‚‹" #: lib/RT/Queue_Overlay.pm:116 msgid "Take tickets" @@ -4592,7 +4587,7 @@ msgstr "ãã®ã‚ューã¯ã‚ã‚Šã¾ã›ã‚“" #: lib/RT/Ticket_Overlay.pm:3189 msgid "That ticket has unresolved dependencies" -msgstr "ãã®ãƒã‚±ãƒƒãƒˆã¯å¾“属物をã™ã§ã«åˆ†è§£ã—ã¾ã—ãŸ" +msgstr "未解決ã®ä¾å˜é–¢ä¿‚ãŒå˜åœ¨ã—ã¾ã™" #: NOT FOUND IN SOURCE msgid "That user already has that right" @@ -4714,7 +4709,7 @@ msgstr "ãƒã‚±ãƒƒãƒˆ# %1 %2" #: html/Ticket/ModifyAll.html:46 html/Ticket/ModifyAll.html:50 #. ($Ticket->Id, $Ticket->Subject) msgid "Ticket #%1 Jumbo update: %2" -msgstr "ãƒã‚±ãƒƒãƒˆã€€#%1 大ãã„アップデート: %2" +msgstr "ãƒã‚±ãƒƒãƒˆã€€#%1 更新(ç·åˆãƒ“ュー): %2" #: html/Approvals/Elements/ShowDependency:67 #. ($link->BaseObj->Id, $link->BaseObj->Subject) @@ -4793,7 +4788,7 @@ msgstr "ãƒã‚±ãƒƒãƒˆãŒå‰Šé™¤ã•ã‚Œã¾ã—ãŸ" #: html/Ticket/Display.html:55 msgid "Ticket metadata" -msgstr "" +msgstr "ãƒã‚±ãƒƒãƒˆæƒ…å ±" #: etc/initialdata:310 msgid "Ticket status changed" @@ -4826,15 +4821,15 @@ msgstr "" #: html/Search/Elements/PickBasics:149 html/Ticket/Create.html:187 html/Ticket/Elements/EditBasics:69 msgid "Time Left" -msgstr "時間ãŒæ®‹ã£ã¦ã„ã¾ã™" +msgstr "残り時間" #: html/Search/Elements/PickBasics:147 html/Ticket/Create.html:186 html/Ticket/Elements/EditBasics:65 msgid "Time Worked" -msgstr "使ã£ãŸæ™‚é–“" +msgstr "作æ¥æ™‚é–“" #: lib/RT/Tickets_Overlay.pm:1619 msgid "Time left" -msgstr "残ã£ã¦ã„る時間" +msgstr "残り時間" #: html/Elements/Footer:71 msgid "Time to display" @@ -5028,7 +5023,7 @@ msgstr "アップデートタイプã¯é€šçŸ¥ã§ã‚‚コメントã§ã‚‚ã‚ã‚Šã¾ã› #: html/Elements/SelectDateType:54 html/Ticket/Elements/ShowDates:72 lib/RT/Ticket_Overlay.pm:1147 msgid "Updated" -msgstr "アップデートã—ã¾ã—ãŸ" +msgstr "最終更新日時" #: html/Tools/Offline.html:95 msgid "Upload" @@ -5247,23 +5242,23 @@ msgstr "" #: NOT FOUND IN SOURCE msgid "WorkPhone" -msgstr "仕事先ã®é›»è©±" +msgstr "電話(仕事)" #: html/Ticket/Elements/ShowBasics:63 html/Ticket/Update.html:64 msgid "Worked" -msgstr "Worked" +msgstr "ç´¯ç©ä½œæ¥æ™‚é–“" #: lib/RT/Ticket_Overlay.pm:3096 msgid "You already own this ticket" -msgstr "ã‚ãªãŸã¯ã™ã§ã«ã“ã®ãƒã‚±ãƒƒãƒˆã‚’所有ã—ã¦ã„ã¾ã™" +msgstr "ã™ã§ã«ã“ã®ãƒã‚±ãƒƒãƒˆã‚’担当ã—ã¦ã„ã¾ã™" #: html/autohandler:158 html/autohandler:166 msgid "You are not an authorized user" -msgstr "ã‚ãªãŸã¯èªè¨¼ã•ã‚ŒãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“" +msgstr "èªè¨¼ã•ã‚Œã¦ã„ã¾ã›ã‚“。" #: lib/RT/Ticket_Overlay.pm:2978 msgid "You can only reassign tickets that you own or that are unowned" -msgstr "ã‚ãªãŸã¯æ‰€æœ‰ã€ã¾ãŸã¯æ‰€æœ‰ã•ã‚Œã¦ã„ãªã„ãƒã‚±ãƒƒãƒˆã®ã¿ã‚’æ¢ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã™" +msgstr "自分ãŒæ‹…当ã—ã¦ã„ã‚‹ãƒã‚±ãƒƒãƒˆã‹ã€æ‹…当者ã®ã„ãªã„ãƒã‚±ãƒƒãƒˆã—ã‹å¤‰æ›´ã™ã‚‹äº‹ãŒã§ãã¾ã›ã‚“。" #: NOT FOUND IN SOURCE msgid "You don't have permission to view that ticket.\\n" @@ -5272,23 +5267,23 @@ msgstr "ã‚ãªãŸã¯ãã®ãƒã‚±ãƒƒãƒˆã‚’見る許å¯ãŒã‚ã‚Šã¾ã›ã‚“。\\n" #: docs/design_docs/string-extraction-guide.txt:47 lib/RT/StyleGuide.pod:780 #. ($num, $queue) msgid "You found %1 tickets in queue %2" -msgstr "ã‚ãªãŸã¯%2ã§ãƒã‚±ãƒƒãƒˆ%1を見ã¤ã‘ã¾ã—ãŸ" +msgstr "ã‚ュー%2ã§%1件ã®ãƒã‚±ãƒƒãƒˆãŒãƒ’ットã—ã¾ã—ãŸ" #: html/NoAuth/Logout.html:52 msgid "You have been logged out of RT." -msgstr "ã‚ãªãŸã¯RTã‹ã‚‰ãƒã‚°ã‚¢ã‚¦ãƒˆã—ãŸã¾ã¾ã§ã™" +msgstr "RTã‹ã‚‰ãƒã‚°ã‚¢ã‚¦ãƒˆã—ã¾ã—ãŸ" #: html/SelfService/Display.html:109 msgid "You have no permission to create tickets in that queue." -msgstr "ã‚ãªãŸã¯ã“ã®ã‚ューã§ãƒã‚±ãƒƒãƒˆä½œæˆã®è¨±å¯ãŒã‚ã‚Šã¾ã›ã‚“" +msgstr "指定ã®ã®ã‚ューã§ãƒã‚±ãƒƒãƒˆä½œæˆã®è¨±å¯ãŒã‚ã‚Šã¾ã›ã‚“" #: lib/RT/Ticket_Overlay.pm:1964 msgid "You may not create requests in that queue." -msgstr "ã‚ãªãŸã¯ã“ã®ã‚ューã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®ä½œæˆãŒã§ãã‚‹ã§ã—ょã†" +msgstr "指定ã®ã‚ューã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®ä½œæˆãŒã§ãã¾ã›ã‚“" #: html/NoAuth/Logout.html:56 msgid "You're welcome to login again" -msgstr "ãœã²ã¾ãŸãƒã‚°ã‚¤ãƒ³ã—ã¦ãã ã•ã„" +msgstr "トップページ" #: NOT FOUND IN SOURCE msgid "Your %1 requests" @@ -5341,7 +5336,7 @@ msgstr "" #: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:55 msgid "contains" -msgstr "å«ã‚€" +msgstr "ãŒä»¥ä¸‹ã‚’å«ã‚€" #: NOT FOUND IN SOURCE msgid "correspondence (probably) not sent" @@ -5361,7 +5356,7 @@ msgstr "削除" #: lib/RT/Queue_Overlay.pm:88 msgid "deleted" -msgstr "削除ã•ã‚ŒãŸ" +msgstr "削除" #: html/Search/Elements/PickBasics:128 msgid "does not belong to" @@ -5373,7 +5368,7 @@ msgstr "ã‚ã„ã¾ã›ã‚“" #: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:56 msgid "doesn't contain" -msgstr "å«ã¿ã¾ã›ã‚“" +msgstr "ãŒä»¥ä¸‹ã‚’å«ã¾ãªã„" #: html/Elements/SelectEqualityOperator:59 msgid "equal to" @@ -5422,15 +5417,15 @@ 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 msgid "is" -msgstr "ã§ã™" +msgstr "ãŒä»¥ä¸‹ã§ã‚ã‚‹" #: 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 msgid "isn't" -msgstr "ã§ãªã„" +msgstr "ãŒä»¥ä¸‹ã§ã¯ãªã„" #: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectEqualityOperator:59 msgid "less than" -msgstr "より少ãªã„" +msgstr "よりå°ã•ã„" #: html/Search/Elements/PickBasics:60 msgid "matches" @@ -5438,7 +5433,7 @@ msgstr "åˆã†" #: lib/RT/Date.pm:334 msgid "min" -msgstr "最低" +msgstr "分" #: html/Ticket/Update.html:64 msgid "minutes" @@ -5454,7 +5449,7 @@ msgstr "月" #: lib/RT/Queue_Overlay.pm:83 msgid "new" -msgstr "æ–°ã—ã„" +msgstr "æ–°è¦" #: html/Admin/Elements/PickCustomFields:64 html/Admin/Elements/PickObjects:63 msgid "no name" @@ -5474,7 +5469,7 @@ msgstr "ç‰ã—ããªã„" #: html/SelfService/Elements/MyRequests:83 lib/RT/Queue_Overlay.pm:84 msgid "open" -msgstr "é–‹ã" +msgstr "ç€æ‰‹" #: lib/RT/Group_Overlay.pm:227 #. ($self->Name, $user->Name) @@ -5488,11 +5483,11 @@ msgstr "ã‚ュー %1 %2" #: lib/RT/Queue_Overlay.pm:87 msgid "rejected" -msgstr "æ‹’å¦ã•ã‚Œã¾ã—ãŸ" +msgstr "æ‹’å¦" #: lib/RT/Queue_Overlay.pm:86 msgid "resolved" -msgstr "分解ã•ã‚Œã¾ã—ãŸ" +msgstr "解決済ã¿" #: lib/RT/Date.pm:330 msgid "sec" @@ -5508,7 +5503,7 @@ msgstr "" #: lib/RT/Queue_Overlay.pm:85 msgid "stalled" -msgstr "æ¢ã¾ã‚Šã¾ã—ãŸ" +msgstr "ä¿ç•™" #: lib/RT/Group_Overlay.pm:230 #. ($self->Type) @@ -5555,3 +5550,7 @@ msgstr "テンプレート %1ã¨" msgid "years" msgstr "å¹´" +#: share/html/Elements/Quicksearch, et al +msgid "New" +msgstr "æ–°è¦" + diff --git a/rt/lib/RT/I18N/nl.po b/rt/lib/RT/I18N/nl.po index 91547c870..51892b002 100644 --- a/rt/lib/RT/I18N/nl.po +++ b/rt/lib/RT/I18N/nl.po @@ -1,5 +1,9 @@ +# msgid "" msgstr "" +"Project-Id-Version: RT 3.4.x\n" +"PO-Revision-Date: 2005-10-03 13:50-0400\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" diff --git a/rt/lib/RT/I18N/no.po b/rt/lib/RT/I18N/no.po index 995ab7852..92b2ed840 100644 --- a/rt/lib/RT/I18N/no.po +++ b/rt/lib/RT/I18N/no.po @@ -1,10 +1,11 @@ +# msgid "" msgstr "" -"Project-Id-Version: RT 3.0.11\n" +"Project-Id-Version: RT 3.4.x\n" "POT-Creation-Date: 2003-04-01 06:06+0200\n" -"PO-Revision-Date: 2003-05-01 04:47+0200\n" +"PO-Revision-Date: 2005-10-03 13:50-0400\n" "Last-Translator: Ronny Pettersen <ronny.pettersen@edb.com>\n" -"Language-Team: RT Norwegian <rt@thefeed.no>\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-Transfer-Encoding: 8bit\n" diff --git a/rt/lib/RT/I18N/pl.po b/rt/lib/RT/I18N/pl.po index 3faa4eccb..e7a334b96 100644 --- a/rt/lib/RT/I18N/pl.po +++ b/rt/lib/RT/I18N/pl.po @@ -2,9 +2,9 @@ # msgid "" msgstr "" -"Project-Id-Version: RT 3.2.2\n" +"Project-Id-Version: RT 3.4.x\n" "POT-Creation-Date: 2007-01-18 11:36+0800\n" -"PO-Revision-Date: 2005-01-18 02:00+0800\n" +"PO-Revision-Date: 2005-10-03 13:51-0400\n" "Last-Translator: Piotr Åšliwa <piotr.sliwa@comarch.pl>\n" "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n" "MIME-Version: 1.0\n" diff --git a/rt/lib/RT/I18N/pt_br.po b/rt/lib/RT/I18N/pt_br.po index cbf92c594..cf172b1be 100644 --- a/rt/lib/RT/I18N/pt_br.po +++ b/rt/lib/RT/I18N/pt_br.po @@ -1,9 +1,9 @@ -# $Id: pt_br.po,v 1.1.1.4 2005-10-15 09:10:38 ivan Exp $ +# $Id: pt_br.po,v 1.1.1.5 2006-10-17 08:50:11 ivan Exp $ msgid "" msgstr "" -"Project-Id-Version: RT 2.1.x\n" +"Project-Id-Version: RT 3.4.x\n" "POT-Creation-Date: 2002-05-02 11:36+0800\n" -"PO-Revision-Date: 2002-12-07 23:20-02:00\n" +"PO-Revision-Date: 2005-10-03 13:51-0400\n" "Last-Translator: Gustavo Chaves <gustavo@cpqd.com.br>\n" "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n" "MIME-Version: 1.0\n" diff --git a/rt/lib/RT/I18N/ru.po b/rt/lib/RT/I18N/ru.po index cd93e0412..8688cde3e 100644 --- a/rt/lib/RT/I18N/ru.po +++ b/rt/lib/RT/I18N/ru.po @@ -1,15 +1,15 @@ -# translation of ru-nortfm.po to Russian -# translation of ru.po to Russian -# Andrew Kornilov <andy@eva.dp.ua>, 2004, 2005. +# translation of Request Tracker en.po to Russian +# Andrew Kornilov <hiddenman@tpway.com>, 2004, 2005. +# +# msgid "" msgstr "" -"Last-Translator: Andrew Kornilov <andy@eva.dp.ua>\n" -"PO-Revision-Date: 2005-03-11 15:38+0200\n" -"Language-Team: Russian <ru@li.org>\n" +"Last-Translator: Andrew Kornilov <hiddenman@tpway.com>\n" +"PO-Revision-Date: 2005-09-25 22:16+0300\n" +"Language-Team: rt-devel <rt-devel@lists.fsck.com>\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.9.1\n" -"Project-Id-Version: ru\n" +"Project-Id-Version: RT 3.4.x\n" "MIME-Version: 1.0\n" #: NOT FOUND IN SOURCE @@ -24,7 +24,7 @@ msgstr "№" msgid "#%1: %2" msgstr "" -#: lib/RT/Record.pm:926 +#: lib/RT/Record.pm:925 #. ($label) msgid "$prefix %1" msgstr "" @@ -34,35 +34,35 @@ msgstr "" msgid "%1 #%2" msgstr "" -#: lib/RT/Date.pm:361 +#: lib/RT/Date.pm:360 #. ($s, $time_unit) msgid "%1 %2" msgstr "" -#: lib/RT/Date.pm:397 +#: lib/RT/Date.pm:396 #. ($self->GetWeekday($wday), $self->GetMonth($mon), map {sprintf "%02d", $_} ($mday, $hour, $min, $sec), ($year+1900)) msgid "%1 %2 %3 %4:%5:%6 %7" msgstr "%1 %2 %3 %4:%5:%6 %7" -#: lib/RT/Record.pm:1671 lib/RT/Transaction_Overlay.pm:636 lib/RT/Transaction_Overlay.pm:679 +#: lib/RT/Record.pm:1674 lib/RT/Transaction_Overlay.pm.orig:634 lib/RT/Transaction_Overlay.pm.orig:677 lib/RT/Transaction_Overlay.pm:634 lib/RT/Transaction_Overlay.pm:677 #. ($cf->Name, $new_value->Content) #. ($field, $self->NewValue) #. ($self->Field, $principal->Object->Name) msgid "%1 %2 added" msgstr "%1 %2 добавлен" -#: lib/RT/Date.pm:358 +#: lib/RT/Date.pm:357 #. ($s, $time_unit) msgid "%1 %2 ago" msgstr "%1 %2 назад" -#: lib/RT/Record.pm:1678 lib/RT/Transaction_Overlay.pm:643 +#: lib/RT/Record.pm:1681 lib/RT/Transaction_Overlay.pm.orig:641 lib/RT/Transaction_Overlay.pm:641 #. ($cf->Name, $old_content, $new_value->Content) #. ($field, $self->OldValue, $self->NewValue) msgid "%1 %2 changed to %3" msgstr "%1 %2 изменено на %3" -#: lib/RT/Record.pm:1675 lib/RT/Transaction_Overlay.pm:639 lib/RT/Transaction_Overlay.pm:685 +#: lib/RT/Record.pm:1678 lib/RT/Transaction_Overlay.pm.orig:637 lib/RT/Transaction_Overlay.pm.orig:683 lib/RT/Transaction_Overlay.pm:637 lib/RT/Transaction_Overlay.pm:683 #. ($cf->Name, $old_value->Content) #. ($field, $self->OldValue) #. ($self->Field, $principal->Object->Name) @@ -73,8 +73,9 @@ msgstr "%1 %2 удален" msgid "%1 %2 of group %3" msgstr "%1 %2 of group %3" -#: html/Admin/Elements/EditScrips:65 html/Admin/Elements/ListGlobalScrips:64 html/Ticket/Elements/PreviewScrips:98 +#: html/Admin/Elements/EditScrips:65 html/Admin/Elements/ListGlobalScrips:49 html/Ticket/Elements/PreviewScrips:98 #. (loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)) +#. ($scrip->ConditionObj->Name, $scrip->ActionObj->Name, $scrip->TemplateObj->Name) msgid "%1 %2 with template %3" msgstr "%1 %2 Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð¼ %3" @@ -126,26 +127,16 @@ msgstr "" msgid "%1 - Specify the search module you want to use" msgstr "" - $RT::VERSION, - '2005', - '<a href="http://www.bestpractical.com?rt='.$RT::VERSION.'">Best Practical Solutions, LLC</a>',) - $RT::VERSION, - '2005', - '<a href="http://www.bestpractical.com?rt='.$RT::VERSION.'">Best Practical Solutions, LLC</a>',) #: html/Elements/Footer:58 -#. ('»|«', - $RT::VERSION, - '2005', - '<a href="http://www.bestpractical.com?rt='.$RT::VERSION.'">Best Practical Solutions, LLC</a>',) msgid "%1 RT %2 Copyright 1996-%3 %4." msgstr "" -#: lib/RT/ScripAction_Overlay.pm:151 +#: lib/RT/ScripAction_Overlay.pm:139 #. ($self->Id) msgid "%1 ScripAction loaded" msgstr "%1 СкриплетÐаДейÑтвие загружен" -#: lib/RT/Record.pm:1708 +#: lib/RT/Record.pm:1711 #. ($args{'Value'}, $cf->Name) msgid "%1 added as a value for %2" msgstr "%1 добавлено как значение Ð´Ð»Ñ %2" @@ -162,31 +153,31 @@ msgstr "%1 пÑевдонимы требуют идентификатор Ð·Ð°Ñ msgid "%1 aliases require a TicketId to work on (from %2) %3" msgstr "%1 пÑевдонимы требуют идентификатор заÑвки Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ над (от %2) %3" -#: lib/RT/Link_Overlay.pm:145 lib/RT/Link_Overlay.pm:152 +#: lib/RT/Link_Overlay.pm:144 lib/RT/Link_Overlay.pm:151 #. ($args{'Base'}) #. ($args{'Target'}) msgid "%1 appears to be a local object, but can't be found in the database" msgstr "%1 ÑвлÑетÑÑ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¼ объектом, но не найден в базе данных" -#: html/Ticket/Elements/ShowDates:73 lib/RT/Transaction_Overlay.pm:520 +#: html/Ticket/Elements/ShowDates:73 lib/RT/Transaction_Overlay.pm.orig:518 lib/RT/Transaction_Overlay.pm:518 #. ($self->BriefDescription , $self->CreatorObj->Name) #. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) msgid "%1 by %2" msgstr "%1 пользователем %2" -#: lib/RT/Transaction_Overlay.pm:777 lib/RT/Transaction_Overlay.pm:786 lib/RT/Transaction_Overlay.pm:789 +#: lib/RT/Transaction_Overlay.pm.orig:775 lib/RT/Transaction_Overlay.pm.orig:784 lib/RT/Transaction_Overlay.pm.orig:787 lib/RT/Transaction_Overlay.pm:775 lib/RT/Transaction_Overlay.pm:784 lib/RT/Transaction_Overlay.pm:787 #. ($self->Field , $q1->Name , $q2->Name) #. ($self->Field, $t2->AsString, $t1->AsString) #. ($self->Field, ($self->OldValue? "'".$self->OldValue ."'" : $self->loc("(no value)")) , "'". $self->NewValue."'") msgid "%1 changed from %2 to %3" msgstr "%1 изменена Ñ %2 на %3" -#: html/Search/Build.html:212 +#: html/Search/Build.html:192 #. ($Description) msgid "%1 copy" msgstr "%1 копиÑ" -#: lib/RT/Record.pm:930 +#: lib/RT/Record.pm:928 msgid "%1 could not be set to %2." msgstr "%1 невозможно уÑтановить в %2." @@ -194,17 +185,17 @@ msgstr "%1 невозможно уÑтановить в %2." msgid "%1 couldn't init a transaction (%2)\\n" msgstr "%1 не может инициировать транзакцию (%2)\\n" -#: lib/RT/Ticket_Overlay.pm:2743 +#: lib/RT/Ticket_Overlay.pm:2710 #. ($self) msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." msgstr "%1 не может изменить ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ð° Решено. Возможно, база данных RT иÑпорчена." -#: lib/RT/Transaction_Overlay.pm:560 +#: lib/RT/Transaction_Overlay.pm.orig:558 lib/RT/Transaction_Overlay.pm:558 #. ($obj_type) msgid "%1 created" msgstr "%1 Ñоздана" -#: lib/RT/Transaction_Overlay.pm:565 +#: lib/RT/Transaction_Overlay.pm.orig:563 lib/RT/Transaction_Overlay.pm:563 #. ($obj_type) msgid "%1 deleted" msgstr "%1 удалена" @@ -227,7 +218,7 @@ msgstr "%1 заÑвок Ñ Ð½Ð°Ð¸Ð²Ñ‹Ñшими приоритетами, Ñоз msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron." msgstr "" -#: lib/RT/Queue_Overlay.pm:860 +#: lib/RT/Queue_Overlay.pm:847 #. ($principal->Object->Name, $args{'Type'}) msgid "%1 is no longer a %2 for this queue." msgstr "%1 больше не ÑвлÑетÑÑ %2 Ð´Ð»Ñ Ñтой очереди." @@ -266,7 +257,7 @@ msgstr "%1 поÑледних неназначенных заÑвок" msgid "%1 not shown" msgstr "%1 не отображаетÑÑ" -#: lib/RT/CustomField_Overlay.pm:827 +#: lib/RT/CustomField_Overlay.pm:813 msgid "%1 objects" msgstr "%1 объектов" @@ -300,11 +291,11 @@ msgstr "%1 решит вÑе заÑвки, входÑщие в групповоРmsgid "%1 will stall a [local] BASE if it's dependent [or member] of a linked up request." msgstr "%1 приоÑтановит заÑвки, которые завиÑÑÑ‚ от запроÑа или включены в него" -#: lib/RT/CustomField_Overlay.pm:828 +#: lib/RT/CustomField_Overlay.pm:814 msgid "%1's %2 objects" msgstr "%1 %2 объектов" -#: lib/RT/CustomField_Overlay.pm:829 +#: lib/RT/CustomField_Overlay.pm:815 msgid "%1's %2's %3 objects" msgstr "" @@ -314,7 +305,7 @@ msgstr "" msgid "%1's saved searches" msgstr "%1 Ñохраненных запроÑов" -#: lib/RT/Transaction_Overlay.pm:470 +#: lib/RT/Transaction_Overlay.pm.orig:468 lib/RT/Transaction_Overlay.pm:468 #. ($self) msgid "%1: no attachment specified" msgstr "%1: без вложений" @@ -373,8 +364,8 @@ msgstr "(Введите идентификаторы или ÑÑылки на з #: html/Admin/Queues/Modify.html:75 html/Admin/Queues/Modify.html:81 #. ($RT::CorrespondAddress) #. ($RT::CommentAddress) -msgid "(If left blank, will default to %1)" -msgstr "(ЕÑли пуÑтое, то по-умолчанию равно %1)" +msgid "(If left blank, will default to %1" +msgstr "(ЕÑли пуÑтое, то по-умолчанию равно %1" #: NOT FOUND IN SOURCE msgid "(No Value)" @@ -388,7 +379,7 @@ msgstr "(Ðет дополнительных полей)" msgid "(No members)" msgstr "(Ðет пользователей)" -#: html/Admin/Elements/EditScrips:53 html/Admin/Elements/ListGlobalScrips:49 +#: html/Admin/Elements/EditScrips:53 html/Admin/Elements/ListGlobalScrips:53 msgid "(No scrips)" msgstr "(Ðет Ñкриплетов)" @@ -426,7 +417,7 @@ msgstr "(Отправить копию ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± Ñтом обно #: html/Admin/Elements/EditScrip:102 msgid "(Use these fields when you choose 'User Defined' for a condition or action)" -msgstr "(ИÑпользуйте Ñти Ð¿Ð¾Ð»Ñ Ð¿Ñ€Ð¸ выборе 'Задано пользователем' Ð´Ð»Ñ ÑƒÐ»Ð¾Ð²Ð¸Ð¹ или дейÑтвий)" +msgstr "(ИÑпользуйте Ñти Ð¿Ð¾Ð»Ñ Ð¿Ñ€Ð¸ выборе 'Задано пользователем' Ð´Ð»Ñ ÑƒÑловий или дейÑтвий)" #: html/Admin/Groups/index.html:57 html/User/Groups/index.html:54 msgid "(empty)" @@ -448,7 +439,7 @@ msgstr "(нет имени)" msgid "(no subject)" msgstr "(нет темы)" -#: 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:60 html/Elements/SelectCustomFieldValue:51 html/Elements/ShowCustomFields:65 lib/RT/Transaction_Overlay.pm.orig:578 lib/RT/Transaction_Overlay.pm:578 msgid "(no value)" msgstr "(нет значениÑ)" @@ -476,7 +467,7 @@ msgstr "(в ожидании других заÑвок)" msgid "(requestor's group)" msgstr "(группа автора заÑвки)" -#: html/Admin/Users/Modify.html:71 +#: html/Admin/Users/Modify.html.orig:71 html/Admin/Users/Modify.html:71 msgid "(required)" msgstr "(требуетÑÑ)" @@ -504,10 +495,6 @@ msgstr "" msgid "<%$_%>" msgstr "" -#: html/Search/Elements/DisplayOptions:65 -msgid "<%$field%>" -msgstr "" - #: docs/design_docs/string-extraction-guide.txt:54 html/Elements/CreateTicket:47 lib/RT/StyleGuide.pod:787 #. ($m->scomp('/Elements/SelectNewTicketQueue')) msgid "<input type=\"submit\" value=\"New ticket in\"> %1" @@ -517,10 +504,6 @@ msgstr "<input type=\"submit\" value=\"Создать заÑвку в очере msgid "A blank template" msgstr "ПуÑтой шаблон" -#: html/Admin/Users/Modify.html:363 -msgid "A password was not set, so user won't be able to login." -msgstr "" - #: NOT FOUND IN SOURCE msgid "ACE could not be deleted" msgstr "Ðевозможно удалить ACE" @@ -529,17 +512,17 @@ msgstr "Ðевозможно удалить ACE" msgid "ACE could not be found" msgstr "Ðевозможно найти ACE" -#: lib/RT/ACE_Overlay.pm:175 lib/RT/Principal_Overlay.pm:219 +#: lib/RT/ACE_Overlay.pm:181 lib/RT/Principal_Overlay.pm:224 msgid "ACE not found" msgstr "ACE не найден" -#: lib/RT/ACE_Overlay.pm:854 +#: lib/RT/ACE_Overlay.pm:866 msgid "ACEs can only be created and deleted." msgstr "ACEÑ‹ можно только Ñоздавать и удалÑÑ‚ÑŒ" #: html/Search/Elements/SelectAndOr:46 msgid "AND" -msgstr "" +msgstr "И" #: NOT FOUND IN SOURCE msgid "Aborting to avoid unintended ticket modifications.\\n" @@ -549,7 +532,7 @@ msgstr "Прекращаем работу во избежание нежелат msgid "About me" msgstr "Обо мне" -#: html/Admin/Users/Modify.html:106 +#: html/Admin/Users/Modify.html.orig:106 html/Admin/Users/Modify.html:106 msgid "Access control" msgstr "Права доÑтупа" @@ -557,7 +540,7 @@ msgstr "Права доÑтупа" msgid "Action" msgstr "ДейÑтвие" -#: lib/RT/Scrip_Overlay.pm:173 +#: lib/RT/Scrip_Overlay.pm:172 #. ($args{'ScripAction'}) msgid "Action %1 not found" msgstr "ДейÑтвие %1 не найдено" @@ -568,13 +551,13 @@ msgstr "ДейÑтвие принÑто." #: bin/rt-crontool:148 msgid "Action committed.\\n" -msgstr "" +msgstr "ДейÑтвие зафикÑировано.\\n" #: bin/rt-crontool:144 msgid "Action prepared..." msgstr "ДейÑтвие подготовлено..." -#: html/Search/Build.html:85 +#: html/Search/Build.html:65 msgid "Add" msgstr "Добавить" @@ -588,7 +571,7 @@ msgstr "Добавить Копию" #: html/Search/Elements/EditFormat:49 msgid "Add Columns" -msgstr "" +msgstr "Добавить колонки" #: html/Search/Elements/PickCriteria:46 msgid "Add Criteria" @@ -630,7 +613,7 @@ msgstr "Добавить Ñкриплет Ð´Ð»Ñ Ñтой очереди" msgid "Add a scrip which will apply to all queues" msgstr "Добавить Ñкриплет, который будет дейÑтвовать на вÑе очереди" -#: html/Search/Build.html:85 +#: html/Search/Build.html:65 msgid "Add additional criteria" msgstr "Добавить дополнительный критерий" @@ -655,7 +638,7 @@ msgstr "Добавить, удалить или изменить Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ msgid "AddNextState" msgstr "ДобавлÑтьСледующееСоÑтоÑние" -#: lib/RT/Queue_Overlay.pm:760 +#: lib/RT/Queue_Overlay.pm:747 #. ($args{'Type'}) msgid "Added principal as a %1 for this queue" msgstr "Пользователь добавлен как %1 Ð´Ð»Ñ Ñтой очереди" @@ -665,11 +648,11 @@ msgstr "Пользователь добавлен как %1 Ð´Ð»Ñ Ñтой оч msgid "Added principal as a %1 for this ticket" msgstr "Пользователь добавлен как %1 Ð´Ð»Ñ Ñтой заÑвки" -#: html/Admin/Users/Modify.html:146 html/User/Prefs.html:133 +#: html/Admin/Users/Modify.html.orig:146 html/Admin/Users/Modify.html:146 html/User/Prefs.html:133 msgid "Address1" msgstr "ÐдреÑ1" -#: html/Admin/Users/Modify.html:151 html/User/Prefs.html:137 +#: html/Admin/Users/Modify.html.orig:151 html/Admin/Users/Modify.html:151 html/User/Prefs.html:137 msgid "Address2" msgstr "ÐдреÑ2" @@ -709,7 +692,7 @@ msgstr "ОÑновные параметры очереди" msgid "AdminAllPersonalGroups" msgstr "ÐдминиÑтрироватьВÑеПерÑональныеГруппы" -#: 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:113 msgid "AdminCc" msgstr "ÐдминиÑтративнаÑКопиÑ" @@ -737,15 +720,15 @@ msgstr "ÐдминиÑтрироватьГруппу" msgid "AdminGroupMembership" msgstr "ÐдминиÑтрироватьЧленÑтвоВГруппах" -#: lib/RT/System.pm:81 +#: lib/RT/System.pm:80 msgid "AdminOwnPersonalGroups" msgstr "ÐдминиÑтрироватьСобÑтвенныеГруппы" -#: lib/RT/Queue_Overlay.pm:93 +#: lib/RT/Queue_Overlay.pm:92 msgid "AdminQueue" msgstr "ÐдминиÑтрироватьОчередь" -#: lib/RT/System.pm:82 +#: lib/RT/System.pm:81 msgid "AdminUsers" msgstr "ÐдминиÑтрироватьПользователей" @@ -807,7 +790,7 @@ msgstr "Ð’Ñегода отправлÑÑ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°Ð¼ з #: html/Search/Elements/EditQuery:56 msgid "And/Or" -msgstr "" +msgstr "И/Или" #: html/Admin/CustomFields/Modify.html:73 html/Admin/Elements/CustomFieldTabs:83 msgid "Applies to" @@ -866,7 +849,7 @@ msgstr "Подтвердить" msgid "Approver's notes: %1" msgstr "ÐŸÑ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¸Ð²ÑˆÐµÐ³Ð¾: %1" -#: lib/RT/Date.pm:440 +#: lib/RT/Date.pm:437 msgid "Apr." msgstr "Ðпр." @@ -878,11 +861,11 @@ msgstr "Ðпрель" msgid "Ascending" msgstr "Ð’ порÑдке возраÑтаниÑ" -#: lib/RT/Queue_Overlay.pm:97 +#: lib/RT/Queue_Overlay.pm:96 msgid "Assign and remove custom fields" msgstr "Ðазначение и удаление дополнительных полей" -#: lib/RT/Queue_Overlay.pm:97 +#: lib/RT/Queue_Overlay.pm:96 msgid "AssignCustomFields" msgstr "ÐазначатьДополнительныеПолÑ" @@ -903,11 +886,11 @@ msgstr "Вложенный файл" msgid "Attachment '%1' could not be loaded" msgstr "Вложение '%1' не может быть загружено" -#: lib/RT/Transaction_Overlay.pm:478 +#: lib/RT/Transaction_Overlay.pm.orig:476 lib/RT/Transaction_Overlay.pm:476 msgid "Attachment created" msgstr "Вложение Ñоздано" -#: lib/RT/Tickets_Overlay.pm:1673 +#: lib/RT/Tickets_Overlay.pm:1672 msgid "Attachment filename" msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ" @@ -915,11 +898,11 @@ msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ" msgid "Attachments" msgstr "ВложениÑ" -#: lib/RT/Attributes_Overlay.pm:172 +#: lib/RT/Attributes_Overlay.pm:170 msgid "Attribute Deleted" msgstr "Ðтрибут удален" -#: lib/RT/Date.pm:444 +#: lib/RT/Date.pm:441 msgid "Aug." msgstr "Ðвг." @@ -975,7 +958,7 @@ msgstr "Ð¡ÐºÑ€Ñ‹Ñ‚Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ" msgid "Be sure to save your changes" msgstr "Ðе забудьте Ñохранить наÑтройки" -#: html/Elements/SelectDateRelation:55 lib/RT/CurrentUser.pm:360 +#: html/Elements/SelectDateRelation:55 lib/RT/CurrentUser.pm:358 msgid "Before" msgstr "До" @@ -997,7 +980,7 @@ msgstr "ПуÑтой" #: html/Search/Elements/EditFormat:84 msgid "Bold" -msgstr "" +msgstr "Жирный" #: NOT FOUND IN SOURCE msgid "Bookmarkable URL for this search" @@ -1015,28 +998,28 @@ msgstr "Сокращенные заголовки" msgid "Bulk ticket update" msgstr "МножеÑтвенное обновление заÑвки" -#: lib/RT/User_Overlay.pm:1722 +#: lib/RT/User_Overlay.pm:1717 msgid "Can not modify system users" msgstr "Ðевомзожно изменить ÑиÑтемных пользователей" -#: lib/RT/Queue_Overlay.pm:92 +#: lib/RT/Queue_Overlay.pm:91 msgid "Can this principal see this queue" msgstr "Может ли данный пользователь проÑматривать Ñту очередь" -#: lib/RT/CustomField_Overlay.pm:370 +#: lib/RT/CustomField_Overlay.pm:364 msgid "Can't add a custom field value without a name" msgstr "Ðевозможно добавление Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»ÑŒÐ½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ð¿Ð¾Ð»Ñ Ð±ÐµÐ· наименованиÑ" #: html/Admin/CustomFields/Objects.html:86 #. ($Class) msgid "Can't find a collection class for '%1'" -msgstr "" +msgstr "Ðевозможно найти клаÑÑ ÐºÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ð¸ Ð´Ð»Ñ '%1'" -#: html/Search/Build.html:761 +#: html/Search/Build.html:819 msgid "Can't find a saved search to work with" msgstr "Ðевозможно найти Ñохраненный Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ Ð½Ð¸Ð¼" -#: lib/RT/Link_Overlay.pm:160 +#: lib/RT/Link_Overlay.pm:159 msgid "Can't link a ticket to itself" msgstr "Ðевозможно ÑвÑзать заÑвку Ñаму Ñ Ñобой" @@ -1044,11 +1027,11 @@ msgstr "Ðевозможно ÑвÑзать заÑвку Ñаму Ñ Ñобой" msgid "Can't merge into a merged ticket. You should never get this error" msgstr "Ðевозможно объединить Ñ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð½Ð¾Ð¹ заÑвкой (Ñта ошибка никогда не должна проиÑходить)." -#: html/Search/Build.html:766 +#: html/Search/Build.html:824 msgid "Can't save this search" msgstr "Ðевозможно Ñохранить Ñтот запроÑ" -#: lib/RT/Record.pm:1266 lib/RT/Record.pm:1344 +#: lib/RT/Record.pm:1257 lib/RT/Record.pm:1335 msgid "Can't specifiy both base and target" msgstr "Ðевозможно указывать одновременно и иÑточник и Ð°Ð´Ñ€ÐµÑ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ" @@ -1057,7 +1040,7 @@ msgstr "Ðевозможно указывать одновременно и Ð¸Ñ msgid "Cannot create user: %1" msgstr "Ðевозможно Ñоздать пользователÑ: %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 +#: 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:112 msgid "Cc" msgstr "КопиÑ" @@ -1081,7 +1064,7 @@ msgstr "Выделите права, которые хотите Ð¾Ñ‚Ð¾Ð·Ð²Ð°Ñ‚Ñ msgid "Children" msgstr "Потомки" -#: html/Admin/Users/Modify.html:156 html/User/Prefs.html:141 +#: html/Admin/Users/Modify.html.orig:156 html/Admin/Users/Modify.html:156 html/User/Prefs.html:141 msgid "City" msgstr "Город" @@ -1113,7 +1096,7 @@ msgstr "Код" msgid "Command not understood!\\n" msgstr "Команда не раÑпознана!\\n" -#: html/Ticket/Elements/ShowTransaction:182 html/Ticket/Elements/Tabs:176 +#: html/Ticket/Elements/ShowTransaction:181 html/Ticket/Elements/Tabs:176 msgid "Comment" msgstr "Комментировать" @@ -1125,11 +1108,11 @@ msgstr "ÐÐ´Ñ€ÐµÑ Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸ÐµÐ²" msgid "Comment not recorded" msgstr "Комментарий не запиÑан" -#: lib/RT/Queue_Overlay.pm:112 +#: lib/RT/Queue_Overlay.pm:111 msgid "Comment on tickets" msgstr "Комментарии заÑвки" -#: lib/RT/Queue_Overlay.pm:112 +#: lib/RT/Queue_Overlay.pm:111 msgid "CommentOnTicket" msgstr "КомментироватьЗаÑвку" @@ -1149,15 +1132,15 @@ msgstr "Комментарии (Ðе отправлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ñ€Ð°Ð¼ зРmsgid "Comments about %1" msgstr "Комментарии о %1" -#: html/Admin/Users/Modify.html:224 html/Ticket/Elements/ShowRequestor:67 +#: html/Admin/Users/Modify.html.orig:224 html/Admin/Users/Modify.html:224 html/Ticket/Elements/ShowRequestor:67 msgid "Comments about this user" msgstr "Комментарии об Ñтом пользователе" -#: lib/RT/Transaction_Overlay.pm:623 +#: lib/RT/Transaction_Overlay.pm.orig:621 lib/RT/Transaction_Overlay.pm:621 msgid "Comments added" msgstr "Комментарии добавлены" -#: lib/RT/Action/Generic.pm:176 +#: lib/RT/Action/Generic.pm:168 msgid "Commit Stubbed" msgstr "" @@ -1173,7 +1156,7 @@ msgstr "УÑловие" msgid "Condition matches..." msgstr "ПодходÑщее уÑловие..." -#: lib/RT/Scrip_Overlay.pm:189 +#: lib/RT/Scrip_Overlay.pm:188 msgid "Condition not found" msgstr "УÑловие не найдено" @@ -1217,7 +1200,7 @@ msgstr "КорреÑпонденциÑ" msgid "Correspondence Address" msgstr "ÐÐ´Ñ€ÐµÑ Ð´Ð»Ñ ÐºÐ¾Ñ€Ñ€ÐµÑпонденции" -#: lib/RT/Transaction_Overlay.pm:619 +#: lib/RT/Transaction_Overlay.pm.orig:617 lib/RT/Transaction_Overlay.pm:617 msgid "Correspondence added" msgstr "КорреÑÐ¿Ð¾Ð½Ð´ÐµÐ½Ñ†Ð¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð°" @@ -1233,16 +1216,16 @@ msgstr "Ðевозможно добавить новое значение доп msgid "Could not add new custom field value for ticket. %1 " msgstr "Ðевозможно добавить новое значение дополнительного Ð¿Ð¾Ð»Ñ Ð·Ð°Ñвки. %1" -#: lib/RT/Record.pm:1693 +#: lib/RT/Record.pm:1696 msgid "Could not add new custom field value. " -msgstr "" +msgstr "Ошибка Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ полÑ" -#: lib/RT/Record.pm:1646 +#: lib/RT/Record.pm:1649 #. (, $value_msg) msgid "Could not add new custom field value. %1 " msgstr "Ошибка Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ полÑ. %1" -#: lib/RT/Ticket_Overlay.pm:3004 lib/RT/Ticket_Overlay.pm:3012 lib/RT/Ticket_Overlay.pm:3029 +#: lib/RT/Ticket_Overlay.pm:2971 lib/RT/Ticket_Overlay.pm:2979 lib/RT/Ticket_Overlay.pm:2996 msgid "Could not change owner. " msgstr "Ðевозможно изменить ответÑтвенного." @@ -1254,9 +1237,9 @@ msgstr "Ðевозможно Ñоздать дополнительное полР#: html/Admin/Elements/EditCustomField:113 #. ($msg) msgid "Could not create CustomField: %1" -msgstr "" +msgstr "Ошибка ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ полÑ: %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:501 lib/RT/Group_Overlay.pm:508 msgid "Could not create group" msgstr "Ðевозможно Ñоздать группу" @@ -1269,7 +1252,7 @@ msgstr "Ðевозможно Ñоздать шаблон: %1" msgid "Could not create ticket. Queue not set" msgstr "Ðевозможно Ñоздать заÑвку. Ðе задана очередь." -#: 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:255 lib/RT/User_Overlay.pm:269 lib/RT/User_Overlay.pm:278 lib/RT/User_Overlay.pm:287 lib/RT/User_Overlay.pm:296 lib/RT/User_Overlay.pm:310 lib/RT/User_Overlay.pm:320 lib/RT/User_Overlay.pm:496 msgid "Could not create user" msgstr "Ðевозможно Ñоздать пользователÑ" @@ -1285,11 +1268,11 @@ msgstr "Ðевозможно найти заÑвку Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾ msgid "Could not find group %1." msgstr "Ðевозможно найти группу %1." -#: lib/RT/Queue_Overlay.pm:738 lib/RT/Ticket_Overlay.pm:1384 +#: lib/RT/Queue_Overlay.pm:725 lib/RT/Ticket_Overlay.pm:1384 msgid "Could not find or create that user" msgstr "Ðевозможно найти или Ñоздать Ñтого пользователÑ" -#: lib/RT/Queue_Overlay.pm:799 lib/RT/Ticket_Overlay.pm:1465 +#: lib/RT/Queue_Overlay.pm:786 lib/RT/Ticket_Overlay.pm:1465 msgid "Could not find that principal" msgstr "Ðевозможно найти Ñтого пользователÑ" @@ -1305,16 +1288,16 @@ msgstr "Ðевозможно загрузить дополнительное пРmsgid "Could not load group" msgstr "Ðевозможно загрузить группу" -#: lib/RT/SavedSearch.pm:120 +#: lib/RT/SavedSearch.pm:119 #. ($privacy) msgid "Could not load object for %1" -msgstr "" +msgstr "Ошибка загрузки объекта Ð´Ð»Ñ %1" -#: lib/RT/SavedSearch.pm:188 +#: lib/RT/SavedSearch.pm:187 msgid "Could not load search attribute" -msgstr "" +msgstr "Ошибка загрузки атрибута запроÑа" -#: lib/RT/Queue_Overlay.pm:758 +#: lib/RT/Queue_Overlay.pm:745 #. ($args{'Type'}) msgid "Could not make that principal a %1 for this queue" msgstr "Ðевозможно назначить Ñтого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %1 Ð´Ð»Ñ Ñтой очереди" @@ -1324,7 +1307,7 @@ msgstr "Ðевозможно назначить Ñтого пользоватеРmsgid "Could not make that principal a %1 for this ticket" msgstr "Ðевозможно назначить Ñтого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %1 Ð´Ð»Ñ Ñтой заÑвки" -#: lib/RT/Queue_Overlay.pm:857 +#: lib/RT/Queue_Overlay.pm:844 #. ($args{'Type'}) msgid "Could not remove that principal as a %1 for this queue" msgstr "Ðевозможно отозвать функции у Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÐºÐ°Ðº %1 Ð´Ð»Ñ Ñтой очереди" @@ -1333,15 +1316,15 @@ msgstr "Ðевозможно отозвать функции у пользова msgid "Could not remove that principal as a %1 for this ticket" msgstr "Ðевозможно отозвать функции у Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÐºÐ°Ðº %1 Ð´Ð»Ñ Ñтой заÑвки" -#: lib/RT/User_Overlay.pm:192 +#: lib/RT/User_Overlay.pm:191 msgid "Could not set user info" msgstr "Ðевозможно уÑтановить информацию о пользователе" -#: lib/RT/Group_Overlay.pm:1011 +#: lib/RT/Group_Overlay.pm:1009 msgid "Couldn't add member to group" msgstr "Ðевозможно добавить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² группу" -#: lib/RT/Record.pm:1705 lib/RT/Record.pm:1757 +#: lib/RT/Record.pm:1708 lib/RT/Record.pm:1767 #. ($Msg) msgid "Couldn't create a transaction: %1" msgstr "Ðевозможно Ñоздать транзакцию: %1" @@ -1354,15 +1337,15 @@ msgstr "Ðевозможно определить дальнейшие дейÑÑ msgid "Couldn't find group\\n" msgstr "Ðевезможно найти группу\\n" -#: lib/RT/Record.pm:939 +#: lib/RT/Record.pm:937 msgid "Couldn't find row" msgstr "Ðевозможно найти Ñтроку" -#: lib/RT/Group_Overlay.pm:985 +#: lib/RT/Group_Overlay.pm:983 msgid "Couldn't find that principal" msgstr "Ðевозможно найти Ñтого пользователÑ" -#: lib/RT/CustomField_Overlay.pm:404 +#: lib/RT/CustomField_Overlay.pm:398 msgid "Couldn't find that value" msgstr "Ðевозможно найти Ñто значение" @@ -1374,7 +1357,7 @@ msgstr "Ðевозможно найти Ñтого наблюдателÑ" msgid "Couldn't find user\\n" msgstr "Ðевозможно найти пользователÑ\\n" -#: lib/RT/CurrentUser.pm:146 +#: lib/RT/CurrentUser.pm:145 #. ($self->Id) msgid "Couldn't load %1 from the users database.\\n" msgstr "Ðевозможно загрузить %1 из базы пользователей.\\n" @@ -1382,7 +1365,7 @@ msgstr "Ðевозможно загрузить %1 из базы пользовР#: html/Admin/CustomFields/UserRights.html:149 #. ($id) msgid "Couldn't load Class %1" -msgstr "" +msgstr "Ошибка загрузки клаÑÑа %1" #: html/Admin/CustomFields/GroupRights.html:107 #. ($id) @@ -1402,7 +1385,7 @@ msgstr "Ðевозможно загрузить Ñкриплеты." msgid "Couldn't load group %1" msgstr "Ðевозможно загрузить группу %1" -#: lib/RT/Link_Overlay.pm:203 lib/RT/Link_Overlay.pm:212 lib/RT/Link_Overlay.pm:239 +#: lib/RT/Link_Overlay.pm:202 lib/RT/Link_Overlay.pm:211 lib/RT/Link_Overlay.pm:238 msgid "Couldn't load link" msgstr "Ðевозможно загрузить ÑÑылку" @@ -1433,22 +1416,12 @@ msgstr "Ðевозможно загрузить шаблон" msgid "Couldn't load that user (%1)" msgstr "Ðевозможно загрузить Ñтого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (%1)" -#: html/SelfService/Display.html:156 +#: html/SelfService/Display.html:149 #. ($id) msgid "Couldn't load ticket '%1'" msgstr "Ðевозможно загрузить заÑвку '%1'" -#: lib/RT/Ticket_Overlay.pm:2612 -#. ($args{'Base'}) -msgid "Couldn't resolve base '%1' into a URI." -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:2611 -#. ($args{'Target'}) -msgid "Couldn't resolve target '%1' into a URI." -msgstr "" - -#: html/Admin/Users/Modify.html:173 html/User/Prefs.html:153 +#: html/Admin/Users/Modify.html.orig:173 html/Admin/Users/Modify.html:173 html/User/Prefs.html:153 msgid "Country" msgstr "Страна" @@ -1485,7 +1458,7 @@ msgstr "Создать новый глобальный Ñкриплет" msgid "Create a new global scrip" msgstr "Создать новый глобальный Ñкриплет" -#: html/Admin/Groups/Modify.html:125 html/Admin/Groups/Modify.html:99 +#: html/Admin/Groups/Modify.html:124 html/Admin/Groups/Modify.html:98 msgid "Create a new group" msgstr "Создать новую группу" @@ -1509,7 +1482,7 @@ msgstr "Создать новый шаблон" msgid "Create a new ticket" msgstr "Создать новую заÑвку" -#: html/Admin/Users/Modify.html:251 html/Admin/Users/Modify.html:306 +#: html/Admin/Users/Modify.html.orig:251 html/Admin/Users/Modify.html.orig:308 html/Admin/Users/Modify.html:251 html/Admin/Users/Modify.html:306 msgid "Create a new user" msgstr "Создать нового пользователÑ" @@ -1554,7 +1527,7 @@ msgstr "Создать новые заÑвки на оÑнове Ñтого ша msgid "Create ticket" msgstr "Создать заÑвку" -#: lib/RT/Queue_Overlay.pm:110 +#: lib/RT/Queue_Overlay.pm:109 msgid "Create tickets in this queue" msgstr "Создать заÑвки в Ñтой очереди" @@ -1562,7 +1535,7 @@ msgstr "Создать заÑвки в Ñтой очереди" msgid "Create, delete and modify custom fields" msgstr "Создать, удалить или изменить дополнительные полÑ" -#: lib/RT/Queue_Overlay.pm:93 +#: lib/RT/Queue_Overlay.pm:92 msgid "Create, delete and modify queues" msgstr "Создать, удалить или изменить очереди" @@ -1570,19 +1543,19 @@ msgstr "Создать, удалить или изменить очереди" msgid "Create, delete and modify the members of any user's personal groups" msgstr "Создать, удалить или изменить членов любой пользовательÑкой перÑональной группы" -#: lib/RT/System.pm:81 +#: lib/RT/System.pm:80 msgid "Create, delete and modify the members of personal groups" msgstr "Создать, удалить или изменить членов перÑональных групп" -#: lib/RT/System.pm:82 +#: lib/RT/System.pm:81 msgid "Create, delete and modify users" msgstr "Создать, удалить или изменить пользователей" -#: lib/RT/System.pm:88 +#: lib/RT/System.pm:87 msgid "CreateSavedSearch" -msgstr "" +msgstr "СоздаватьСохраненныйЗапроÑ" -#: lib/RT/Queue_Overlay.pm:110 +#: lib/RT/Queue_Overlay.pm:109 msgid "CreateTicket" msgstr "Создать ЗаÑвку" @@ -1643,7 +1616,7 @@ msgstr "Текущие наблюдатели" msgid "Custom Field #%1" msgstr "Дополнительное поле #%1" -#: 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.orig:208 html/Admin/Users/Modify.html:208 html/Admin/index.html:77 html/Ticket/Elements/ShowSummary:57 msgid "Custom Fields" msgstr "Дополнительные полÑ" @@ -1682,7 +1655,7 @@ msgstr "Дополнительное поле %1 имеет значение." msgid "Custom field %1 has no value." msgstr "Дополнительное поле %1 не имеет значениÑ." -#: lib/RT/Record.pm:1579 lib/RT/Record.pm:1740 +#: lib/RT/Record.pm:1581 #. ($args{'Field'}) msgid "Custom field %1 not found" msgstr "Ðевозможно найти дополнительное поле %1" @@ -1691,11 +1664,11 @@ msgstr "Ðевозможно найти дополнительное поле %1 msgid "Custom field deleted" msgstr "Дополнительное поле удалено" -#: NOT FOUND IN SOURCE +#: lib/RT/CustomField_Overlay.pm:289 lib/RT/Record.pm:1749 msgid "Custom field not found" msgstr "Ðевозможно найти дополнительное поле" -#: lib/RT/CustomField_Overlay.pm:1041 +#: lib/RT/CustomField_Overlay.pm:1027 #. ($args{'Content'}, $self->Name) msgid "Custom field value %1 could not be found for custom field %2" msgstr "Ðевозможно найти значение %1 дополнительного Ð¿Ð¾Ð»Ñ %2" @@ -1704,19 +1677,19 @@ msgstr "Ðевозможно найти значение %1 дополнител msgid "Custom field value changed from %1 to %2" msgstr "Значение дополнительного Ð¿Ð¾Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¾ Ñ %1 на %2" -#: lib/RT/CustomField_Overlay.pm:414 +#: lib/RT/CustomField_Overlay.pm:408 msgid "Custom field value could not be deleted" msgstr "Ðевозможно удалить значение дополнительного полÑ" -#: lib/RT/CustomField_Overlay.pm:1047 +#: lib/RT/CustomField_Overlay.pm:1033 msgid "Custom field value could not be found" msgstr "Ðевозможно найти значение дополнительного Ð¿Ð¾Ð»Ñ " -#: lib/RT/CustomField_Overlay.pm:1049 lib/RT/CustomField_Overlay.pm:412 +#: lib/RT/CustomField_Overlay.pm:1035 lib/RT/CustomField_Overlay.pm:406 msgid "Custom field value deleted" msgstr "Значение дополнительного Ð¿Ð¾Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¾" -#: 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.orig:625 lib/RT/Transaction_Overlay.pm:625 msgid "CustomField" msgstr "ДополнительноеПоле" @@ -1728,7 +1701,7 @@ msgstr "Ошибка данных" msgid "Dates" msgstr "Даты" -#: lib/RT/Date.pm:448 +#: lib/RT/Date.pm:445 msgid "Dec." msgstr "Дек." @@ -1776,11 +1749,11 @@ msgstr "Умолчание: %1/%2 изменено Ñ %3 на %4" msgid "Delegate rights" msgstr "Делегирование прав" -#: lib/RT/System.pm:85 +#: lib/RT/System.pm:84 msgid "Delegate specific rights which have been granted to you." msgstr "Делегирование отдельных прав, которые выданы вам." -#: lib/RT/System.pm:85 +#: lib/RT/System.pm:84 msgid "DelegateRights" msgstr "ДелегироватьПрава" @@ -1796,36 +1769,36 @@ msgstr "Удалить" msgid "Delete Template" msgstr "Удалить шаблон" -#: lib/RT/SavedSearch.pm:211 +#: lib/RT/SavedSearch.pm:210 #. ($msg) msgid "Delete failed: %1" -msgstr "" +msgstr "Ошибка удалениÑ: %1" #: html/Admin/Elements/EditScrips:74 msgid "Delete selected scrips" msgstr "Удалить выбранные Ñкриплеты" -#: lib/RT/Queue_Overlay.pm:115 +#: lib/RT/Queue_Overlay.pm:114 msgid "Delete tickets" msgstr "Удалить заÑвки" -#: lib/RT/Queue_Overlay.pm:115 +#: lib/RT/Queue_Overlay.pm:114 msgid "DeleteTicket" msgstr "УдалÑтьЗаÑвку" -#: lib/RT/SavedSearch.pm:209 +#: lib/RT/SavedSearch.pm:208 msgid "Deleted search" -msgstr "" +msgstr "Удаленный запроÑ" #: NOT FOUND IN SOURCE msgid "Deleting this object could break referential integrity" msgstr "Удаление Ñтого объекта может нарушить ÑÑылочную целоÑтноÑÑ‚ÑŒ" -#: lib/RT/Queue_Overlay.pm:391 +#: lib/RT/Queue_Overlay.pm:378 msgid "Deleting this object would break referential integrity" msgstr "Удаление Ñтого объекта нарушит ÑÑылочную целоÑтноÑÑ‚ÑŒ" -#: lib/RT/User_Overlay.pm:513 +#: lib/RT/User_Overlay.pm:512 msgid "Deleting this object would violate referential integrity" msgstr "Удаление Ñтого объекта нарушит ÑÑылочную целоÑтноÑÑ‚ÑŒ" @@ -1849,22 +1822,22 @@ msgstr "От неё завиÑÑÑ‚" msgid "Dependencies: \\n" msgstr "ЗавиÑимоÑти: \\n" -#: lib/RT/Transaction_Overlay.pm:707 +#: lib/RT/Transaction_Overlay.pm.orig:705 lib/RT/Transaction_Overlay.pm:705 #. ($value) msgid "Dependency by %1 added" msgstr "Добавлено требование заÑвкой %1" -#: lib/RT/Transaction_Overlay.pm:747 +#: lib/RT/Transaction_Overlay.pm.orig:745 lib/RT/Transaction_Overlay.pm:745 #. ($value) msgid "Dependency by %1 deleted" msgstr "Удалено требование заÑвкой %1" -#: lib/RT/Transaction_Overlay.pm:704 +#: lib/RT/Transaction_Overlay.pm.orig:702 lib/RT/Transaction_Overlay.pm:702 #. ($value) msgid "Dependency on %1 added" msgstr "Добавлена завиÑимоÑÑ‚ÑŒ от %1" -#: lib/RT/Transaction_Overlay.pm:744 +#: lib/RT/Transaction_Overlay.pm.orig:742 lib/RT/Transaction_Overlay.pm:742 #. ($value) msgid "Dependency on %1 deleted" msgstr "Удалена завиÑимоÑÑ‚ÑŒ от %1" @@ -1897,7 +1870,7 @@ msgstr "ПодробноÑти" msgid "Display" msgstr "Показать" -#: lib/RT/Queue_Overlay.pm:94 +#: lib/RT/Queue_Overlay.pm:93 msgid "Display Access Control List" msgstr "Показать ÑпиÑок прав доÑтупа" @@ -1905,11 +1878,11 @@ msgstr "Показать ÑпиÑок прав доÑтупа" msgid "Display Columns" msgstr "Показать колонки" -#: lib/RT/Queue_Overlay.pm:100 +#: lib/RT/Queue_Overlay.pm:99 msgid "Display Scrip templates for this queue" msgstr "Показать шаблоны Ñкриплетов Ð´Ð»Ñ Ñтой очереди" -#: lib/RT/Queue_Overlay.pm:103 +#: lib/RT/Queue_Overlay.pm:102 msgid "Display Scrips for this queue" msgstr "Показать Ñкриплеты Ð´Ð»Ñ Ñтой очереди" @@ -1929,13 +1902,13 @@ msgstr "Показать заÑвку #%1" msgid "Distributed under version 2 <a href=\"http://www.gnu.org/copyleft/gpl.html\"> of the GNU GPL.</a>" msgstr "РаÑпроÑтранÑетÑÑ Ð¿Ð¾ верÑии 2 <a href=\"http://www.gnu.org/copyleft/gpl.html\"> GNU GPL.</a>" -#: lib/RT/System.pm:76 +#: lib/RT/System.pm:75 msgid "Do anything and everything" msgstr "Делать вÑе и везде" -#: html/Search/Build.html:112 +#: html/Search/Build.html:92 msgid "Do the Search" -msgstr "" +msgstr "ИÑкать" #: html/Elements/Refresh:51 msgid "Don't refresh this page." @@ -1984,15 +1957,19 @@ msgstr "Редактирование дополнительных полей дР#: html/Admin/Global/CustomFields/Groups.html:9 msgid "Edit Custom Fields for all groups" -msgstr "" +msgstr "Редактирование дополнительных полей вÑех групп" #: html/Admin/Global/CustomFields/Users.html:9 msgid "Edit Custom Fields for all users" -msgstr "" +msgstr "Редактирование дополнительных полей вÑех пользователей" #: 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 "Редактирование дополнительных полей заÑвок во вÑех очередÑÑ…" + +#: html/Admin/Global/CustomFields/Queue-T2.html:9 +msgid "Edit Custom Fields for transactions on tickets in all queues" +msgstr "Редактирование дополнительных полей транзакций заÑвок во вÑех очередÑÑ…" #: html/Search/Bulk.html:173 html/Ticket/ModifyLinks.html:57 msgid "Edit Links" @@ -2063,15 +2040,15 @@ msgstr "Редактирование ÑпиÑка пользователей пРmsgid "Editing template %1" msgstr "Редактирование шаблона %1" -#: lib/RT/Record.pm:1281 lib/RT/Record.pm:1358 +#: lib/RT/Record.pm:1272 lib/RT/Record.pm:1349 msgid "Either base or target must be specified" msgstr "Ðужно указать либо иÑточник, либо Ð°Ð´Ñ€ÐµÑ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ" -#: html/Admin/Users/Modify.html:74 html/Ticket/Elements/AddWatchers:77 html/User/Prefs.html:65 +#: html/Admin/Users/Modify.html.orig:74 html/Admin/Users/Modify.html:74 html/Ticket/Elements/AddWatchers:77 html/User/Prefs.html:65 msgid "Email" msgstr "Email" -#: lib/RT/User_Overlay.pm:236 +#: lib/RT/User_Overlay.pm:235 msgid "Email address in use" msgstr "Email Ð°Ð´Ñ€ÐµÑ ÑƒÐ¶Ðµ занÑÑ‚" @@ -2103,7 +2080,7 @@ msgstr "ИÑпользуемые дополнительные полÑ" msgid "Enabled Queues" msgstr "ИÑпользуемые очереди" -#: html/Admin/Elements/EditCustomField:136 html/Admin/Groups/Modify.html:150 html/Admin/Users/Modify.html:342 html/User/Groups/Modify.html:138 +#: html/Admin/Elements/EditCustomField:136 html/Admin/Groups/Modify.html:149 html/Admin/Users/Modify.html.orig:349 html/Admin/Users/Modify.html:347 html/User/Groups/Modify.html:138 #. (loc_fuzzy($msg)) msgid "Enabled status %1" msgstr "Ðктивирован ÑÑ‚Ð°Ñ‚ÑƒÑ %1" @@ -2149,7 +2126,7 @@ msgstr "Ошибка" msgid "Error adding watcher" msgstr "Ошибка Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð°Ð±Ð»ÑŽÐ´Ð°Ñ‚ÐµÐ»Ñ" -#: lib/RT/Queue_Overlay.pm:669 +#: lib/RT/Queue_Overlay.pm:656 msgid "Error in parameters to Queue->AddWatcher" msgstr "Ошибка в параметрах Queue->AddWatcher" @@ -2157,7 +2134,7 @@ msgstr "Ошибка в параметрах Queue->AddWatcher" msgid "Error in parameters to Queue->DelWatcher" msgstr "Ошибка в параметрах Queue->DelWatcher" -#: lib/RT/Queue_Overlay.pm:830 +#: lib/RT/Queue_Overlay.pm:817 msgid "Error in parameters to Queue->DeleteWatcher" msgstr "Ошибка в параметрах Queue->DeleteWatcher" @@ -2201,19 +2178,19 @@ msgstr "ExternalAuthId" msgid "ExternalContactInfoId" msgstr "ExternalContactInfoId" -#: html/Admin/Users/Modify.html:99 +#: html/Admin/Users/Modify.html.orig:99 html/Admin/Users/Modify.html:99 msgid "Extra info" msgstr "Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" -#: lib/RT/SavedSearch.pm:165 +#: lib/RT/SavedSearch.pm:164 msgid "Failed to create search attribute" -msgstr "" +msgstr "Ошибка ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° запроÑа" -#: lib/RT/User_Overlay.pm:377 +#: lib/RT/User_Overlay.pm:376 msgid "Failed to find 'Privileged' users pseudogroup." msgstr "Ðевозможно найти пÑевдо-группу 'Привилегированные'" -#: lib/RT/User_Overlay.pm:384 +#: lib/RT/User_Overlay.pm:383 msgid "Failed to find 'Unprivileged' users pseudogroup" msgstr "Ðевозможно найти пÑевдо-группу 'Ðепривилегированные'" @@ -2222,12 +2199,12 @@ msgstr "Ðевозможно найти пÑевдо-группу 'ÐепривРmsgid "Failed to load module %1. (%2)" msgstr "Ошибка загрузки Ð¼Ð¾Ð´ÑƒÐ»Ñ %1. (%2)" -#: lib/RT/SavedSearch.pm:168 +#: lib/RT/SavedSearch.pm:167 #. ($privacy) msgid "Failed to load object for %1" -msgstr "" +msgstr "Ошибка загрузки объекта Ð´Ð»Ñ %1" -#: lib/RT/Date.pm:438 +#: lib/RT/Date.pm:435 msgid "Feb." msgstr "Фев." @@ -2245,7 +2222,7 @@ msgstr "Заполнить неÑколько текÑтовых полей" #: lib/RT/CustomField_Overlay.pm:74 msgid "Fill in multiple wikitext areas" -msgstr "" +msgstr "Заполнить неÑколько полей wikitext" #: lib/RT/CustomField_Overlay.pm:70 msgid "Fill in one text area" @@ -2253,7 +2230,7 @@ msgstr "Заполнить одно текÑтоввое поле" #: lib/RT/CustomField_Overlay.pm:75 msgid "Fill in one wikitext area" -msgstr "" +msgstr "Заполнить одно поле wikitext" #: lib/RT/CustomField_Overlay.pm:71 msgid "Fill in up to %1 text areas" @@ -2261,13 +2238,13 @@ msgstr "Заполнить до %1 текÑтовых полей" #: lib/RT/CustomField_Overlay.pm:76 msgid "Fill in up to %1 wikitext areas" -msgstr "" +msgstr "Заполнить до %1 полей wikitext" #: NOT FOUND IN SOURCE msgid "Fin" msgstr "Конец" -#: 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:162 html/Ticket/Create.html:185 html/Ticket/Elements/EditBasics:79 lib/RT/Tickets_Overlay.pm:1568 msgid "Final Priority" msgstr "Конечный приоритет" @@ -2321,14 +2298,14 @@ msgstr "Изменить принудительно" #: html/Search/Elements/EditFormat:52 msgid "Format" -msgstr "" +msgstr "Форматировать" #: html/Search/Results.html:107 #. ($ticketcount) msgid "Found %quant(%1,ticket)" msgstr "Ðайдено %quant(%1,ticket)" -#: lib/RT/Record.pm:942 +#: lib/RT/Record.pm:939 msgid "Found Object" msgstr "Ðайден объект" @@ -2336,7 +2313,7 @@ msgstr "Ðайден объект" msgid "FreeformContactInfo" msgstr "FreeformContactInfo" -#: lib/RT/Date.pm:417 +#: lib/RT/Date.pm:415 msgid "Fri." msgstr "Птн." @@ -2352,7 +2329,7 @@ msgstr "ВзÑÑ‚ÑŒ шаблон из файла" msgid "Getting the current user from a pgp sig\\n" msgstr "Берем текущего Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð· pgp подпиÑи\\n" -#: lib/RT/Transaction_Overlay.pm:673 +#: lib/RT/Transaction_Overlay.pm.orig:671 lib/RT/Transaction_Overlay.pm:671 #. ($New->Name) msgid "Given to %1" msgstr "Ðазначено %1" @@ -2371,7 +2348,7 @@ msgstr "Общие Ñкриплеты" #: html/Admin/Global/CustomFields/index.html:59 msgid "Global custom field configuration" -msgstr "" +msgstr "Конфигурирование общих дополнительных полей" #: html/Admin/Elements/SelectTemplate:59 #. (loc($Template->Name)) @@ -2410,7 +2387,7 @@ msgstr "Группа %1 %2: %3" msgid "Group Rights" msgstr "Права группы" -#: lib/RT/Group_Overlay.pm:991 +#: lib/RT/Group_Overlay.pm:989 msgid "Group already has member" msgstr "Пользователь уже входит в группу" @@ -2418,20 +2395,20 @@ msgstr "Пользователь уже входит в группу" msgid "Group could not be created." msgstr "Ðевозможно Ñоздать группу." -#: html/Admin/Groups/Modify.html:109 +#: html/Admin/Groups/Modify.html:108 #. ($create_msg) msgid "Group could not be created: %1" msgstr "Ðевозможно Ñоздать группу: %1" -#: lib/RT/Group_Overlay.pm:529 +#: lib/RT/Group_Overlay.pm:528 msgid "Group created" msgstr "Группа Ñоздана" -#: lib/RT/Group_Overlay.pm:1163 +#: lib/RT/Group_Overlay.pm:1161 msgid "Group has no such member" msgstr "Ð’ группе нет такого пользователÑ" -#: 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:969 lib/RT/Queue_Overlay.pm:732 lib/RT/Queue_Overlay.pm:792 lib/RT/Ticket_Overlay.pm:1391 lib/RT/Ticket_Overlay.pm:1471 msgid "Group not found" msgstr "Группа не найдена" @@ -2443,11 +2420,11 @@ msgstr "Группа не найдена.\\n" msgid "Group not specified.\\n" msgstr "Ðе задана группа.\\n" -#: 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:1074 msgid "Groups" msgstr "Группы" -#: lib/RT/Group_Overlay.pm:997 +#: lib/RT/Group_Overlay.pm:995 msgid "Groups can't be members of their members" msgstr "Группы не могут быть членами входÑщих в них пользователей" @@ -2499,15 +2476,15 @@ msgstr "ИмеетÑÑ %quant(%1,concrete mixer)." msgid "I have [quant,_1,concrete mixer]." msgstr "ИмеетÑÑ [quant,_1,concrete mixer]." -#: html/Search/Build.html:637 +#: html/Search/Build.html:697 msgid "I'm lost" msgstr "" -#: html/Ticket/Elements/ShowBasics:48 lib/RT/Tickets_Overlay.pm:1494 +#: html/Ticket/Elements/ShowBasics:48 lib/RT/Tickets_Overlay.pm:1493 msgid "Id" msgstr "ЗаÑвка" -#: html/Admin/Users/Modify.html:65 html/User/Prefs.html:60 +#: html/Admin/Users/Modify.html.orig:65 html/Admin/Users/Modify.html:65 html/User/Prefs.html:60 msgid "Identity" msgstr "ЛичноÑÑ‚ÑŒ" @@ -2531,7 +2508,7 @@ msgstr "ЕÑли бы Ñта программа имела уÑтановленРmsgid "If you've updated anything above, be sure to" msgstr "ПоÑле любых изменений необходимо" -#: lib/RT/Record.pm:933 +#: lib/RT/Record.pm:931 msgid "Illegal value for %1" msgstr "ÐедопуÑтимое значение Ð´Ð»Ñ %1" @@ -2539,7 +2516,7 @@ msgstr "ÐедопуÑтимое значение Ð´Ð»Ñ %1" msgid "Image" msgstr "Изображение" -#: lib/RT/Record.pm:936 +#: lib/RT/Record.pm:934 msgid "Immutable field" msgstr "ÐеизменÑемое поле" @@ -2559,15 +2536,15 @@ msgstr "Показывать неиÑпользуемые очереди." msgid "Include disabled users in search." msgstr "Показывать отключенных пользователей." -#: html/Search/Build.html:663 +#: html/Search/Build.html:723 msgid "Incomplete Query" -msgstr "" +msgstr "Ðезавершенный запроÑ" -#: html/Search/Build.html:660 +#: html/Search/Build.html:720 msgid "Incomplete query" -msgstr "" +msgstr "Ðезавершенный запроÑ" -#: html/Search/Elements/PickBasics:161 lib/RT/Tickets_Overlay.pm:1544 +#: html/Search/Elements/PickBasics:161 lib/RT/Tickets_Overlay.pm:1543 msgid "Initial Priority" msgstr "Ðачальный приоритет" @@ -2575,24 +2552,24 @@ msgstr "Ðачальный приоритет" msgid "InitialPriority" msgstr "Ðачальный приоритет" -#: lib/RT/ScripAction_Overlay.pm:134 +#: lib/RT/ScripAction_Overlay.pm:122 msgid "Input error" msgstr "Ошибка ввода" -#: lib/RT/Ticket_Overlay.pm:3454 +#: lib/RT/Ticket_Overlay.pm:3421 msgid "Internal Error" msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°" -#: lib/RT/Record.pm:305 +#: lib/RT/Record.pm:304 #. ($id->{error_message}) msgid "Internal Error: %1" msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: %1" -#: lib/RT/Group_Overlay.pm:676 +#: lib/RT/Group_Overlay.pm:675 msgid "Invalid Group Type" msgstr "ÐедопуÑтимый тип группы" -#: lib/RT/Principal_Overlay.pm:161 +#: lib/RT/Principal_Overlay.pm:166 msgid "Invalid Right" msgstr "ÐедопуÑтимое право" @@ -2600,7 +2577,7 @@ msgstr "ÐедопуÑтимое право" msgid "Invalid Type" msgstr "ÐедопуÑтимый тип" -#: lib/RT/Record.pm:938 +#: lib/RT/Record.pm:936 msgid "Invalid data" msgstr "ÐедопуÑтимые данные" @@ -2608,20 +2585,20 @@ msgstr "ÐедопуÑтимые данные" msgid "Invalid owner. Defaulting to 'nobody'." msgstr "ÐеÑущеÑтвующий ответÑтвенный. ИÑпользуем 'nobody'." -#: lib/RT/Scrip_Overlay.pm:158 lib/RT/Template_Overlay.pm:276 +#: lib/RT/Scrip_Overlay.pm:157 lib/RT/Template_Overlay.pm:276 msgid "Invalid queue" msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¾Ñ‡ÐµÑ€ÐµÐ´ÑŒ" -#: 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:274 lib/RT/ACE_Overlay.pm:283 lib/RT/ACE_Overlay.pm:289 lib/RT/ACE_Overlay.pm:300 lib/RT/ACE_Overlay.pm:305 msgid "Invalid right" msgstr "ÐедопуÑтимое право" -#: lib/RT/Record.pm:280 +#: lib/RT/Record.pm:279 #. ($key) msgid "Invalid value for %1" msgstr "ÐедопуÑтимое значение Ð´Ð»Ñ %1" -#: lib/RT/Record.pm:1597 +#: lib/RT/Record.pm:1600 msgid "Invalid value for custom field" msgstr "ÐедопуÑтимое значение дополнительного полÑ" @@ -2643,13 +2620,13 @@ msgstr "Ðто требует неÑколько параметров:" #: html/Search/Elements/EditFormat:85 msgid "Italic" -msgstr "" +msgstr "Ðаклонный" #: NOT FOUND IN SOURCE msgid "Items pending my approval" msgstr "ЗаÑвки, ожидающие вашего подтверждениÑ" -#: lib/RT/Date.pm:437 +#: lib/RT/Date.pm:434 msgid "Jan." msgstr "Янв." @@ -2661,7 +2638,7 @@ msgstr "Январь" msgid "Join or leave this group" msgstr "ПриÑоединитьÑÑ Ð¸Ð»Ð¸ покинуть Ñту группу" -#: lib/RT/Date.pm:443 +#: lib/RT/Date.pm:440 msgid "Jul." msgstr "Июл." @@ -2673,7 +2650,7 @@ msgstr "Июль" msgid "Jumbo" msgstr "Ð’Ñе данные" -#: lib/RT/Date.pm:442 +#: lib/RT/Date.pm:439 msgid "Jun." msgstr "Июн." @@ -2689,13 +2666,13 @@ msgstr "Ключевое Ñлово" msgid "Lang" msgstr "Язык" -#: html/Admin/Users/Modify.html:94 html/User/Prefs.html:76 +#: html/Admin/Users/Modify.html.orig:94 html/Admin/Users/Modify.html:94 html/User/Prefs.html:76 msgid "Language" msgstr "Язык" #: html/Search/Elements/EditFormat:79 msgid "Large" -msgstr "" +msgstr "Большой" #: html/Ticket/Elements/Tabs:96 msgid "Last" @@ -2733,11 +2710,11 @@ msgstr "ПоÑледний раз обновлено" msgid "Left" msgstr "ОÑталоÑÑŒ" -#: html/Admin/Users/Modify.html:109 +#: html/Admin/Users/Modify.html.orig:109 html/Admin/Users/Modify.html:109 msgid "Let this user access RT" msgstr "Разрешить доÑтуп к RT" -#: html/Admin/Users/Modify.html:113 +#: html/Admin/Users/Modify.html.orig:113 html/Admin/Users/Modify.html:113 msgid "Let this user be granted rights" msgstr "ПредоÑтавить пользователю права" @@ -2751,27 +2728,27 @@ msgstr "Ограничиваем очередь Ð´Ð»Ñ %1 %2" #: html/Search/Elements/EditFormat:68 msgid "Link" -msgstr "" +msgstr "СÑылка" -#: lib/RT/Record.pm:1292 +#: lib/RT/Record.pm:1283 msgid "Link already exists" msgstr "СвÑзь уже ÑущеÑтвует" -#: lib/RT/Record.pm:1306 +#: lib/RT/Record.pm:1297 msgid "Link could not be created" msgstr "Ðевозможно Ñоздать ÑвÑзь" -#: lib/RT/Record.pm:1312 +#: lib/RT/Record.pm:1303 #. ($TransString) msgid "Link created (%1)" msgstr "СвÑзь Ñоздана (%1)" -#: lib/RT/Record.pm:1373 +#: lib/RT/Record.pm:1364 #. ($TransString) msgid "Link deleted (%1)" msgstr "СвÑзь удалена (%1)" -#: lib/RT/Record.pm:1379 +#: lib/RT/Record.pm:1370 msgid "Link not found" msgstr "СвÑзь не найдена" @@ -2796,24 +2773,24 @@ msgstr "Загрузить" msgid "Load saved search:" msgstr "Загрузить Ñохраненный запроÑ:" -#: lib/RT/System.pm:87 +#: lib/RT/System.pm:86 msgid "LoadSavedSearch" -msgstr "" +msgstr "ЗагружатьСохраненныеЗапроÑÑ‹" #: html/Admin/Tools/Configuration.html:64 msgid "Loaded perl modules" msgstr "Загруженные модули perl" -#: lib/RT/SavedSearch.pm:112 +#: lib/RT/SavedSearch.pm:111 #. ($self->Name) msgid "Loaded search %1" -msgstr "" +msgstr "Загружен Ð·Ð°Ð¿Ñ€Ð¾Ñ %1" -#: html/Admin/Users/Modify.html:138 html/User/Prefs.html:126 +#: html/Admin/Users/Modify.html.orig:138 html/Admin/Users/Modify.html:138 html/User/Prefs.html:126 msgid "Location" msgstr "МеÑтонахождение" -#: lib/RT.pm:212 +#: lib/RT.pm:204 #. ($RT::LogDir) msgid "Log directory %1 not found or couldn't be written.\\n RT can't run." msgstr "Ðе найден каталог Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ %1 или не доÑтупен на запиÑÑŒ.\\n RT не может продолжить работу." @@ -2831,7 +2808,7 @@ msgstr "Войти" msgid "Logout" msgstr "Выйти" -#: lib/RT/CustomField_Overlay.pm:866 +#: lib/RT/CustomField_Overlay.pm:852 msgid "Lookup type mismatch" msgstr "" @@ -2877,7 +2854,7 @@ msgstr "УÑтановить тему" #: lib/RT/Group_Overlay.pm:177 msgid "Make this group visible to user" -msgstr "" +msgstr "Сделать Ñту группу видимой Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ" #: html/Admin/index.html:78 msgid "Manage custom fields and custom field values" @@ -2899,7 +2876,7 @@ msgstr "Управление очередÑми и их параметрами" msgid "Manage users and passwords" msgstr "Управление пользователÑми и паролÑми" -#: lib/RT/Date.pm:439 +#: lib/RT/Date.pm:436 msgid "Mar." msgstr "Мар." @@ -2911,29 +2888,29 @@ msgstr "Март" msgid "May" msgstr "Май" -#: lib/RT/Date.pm:441 +#: lib/RT/Date.pm:438 msgid "May." msgstr "Май" -#: lib/RT/Transaction_Overlay.pm:720 +#: lib/RT/Transaction_Overlay.pm.orig:718 lib/RT/Transaction_Overlay.pm:718 #. ($value) msgid "Member %1 added" msgstr "УчаÑтник %1 добавлен" -#: lib/RT/Transaction_Overlay.pm:760 +#: lib/RT/Transaction_Overlay.pm.orig:758 lib/RT/Transaction_Overlay.pm:758 #. ($value) msgid "Member %1 deleted" msgstr "УчаÑтник %1 удален" -#: lib/RT/Group_Overlay.pm:1008 +#: lib/RT/Group_Overlay.pm:1006 msgid "Member added" msgstr "Пользователь добавлен в группу" -#: lib/RT/Group_Overlay.pm:1170 +#: lib/RT/Group_Overlay.pm:1168 msgid "Member deleted" msgstr "Пользователь удален из группы" -#: lib/RT/Group_Overlay.pm:1174 +#: lib/RT/Group_Overlay.pm:1172 msgid "Member not deleted" msgstr "Пользователь не удален из группы" @@ -2949,12 +2926,12 @@ msgstr "СоÑтоит в" msgid "Members" msgstr "УчаÑтники" -#: lib/RT/Transaction_Overlay.pm:717 +#: lib/RT/Transaction_Overlay.pm.orig:715 lib/RT/Transaction_Overlay.pm:715 #. ($value) msgid "Membership in %1 added" msgstr "УчаÑтие в %1 добавлено" -#: lib/RT/Transaction_Overlay.pm:757 +#: lib/RT/Transaction_Overlay.pm.orig:755 lib/RT/Transaction_Overlay.pm:755 #. ($value) msgid "Membership in %1 deleted" msgstr "УчаÑтие в %1 удалено" @@ -2968,23 +2945,23 @@ msgstr "УчаÑтие в группах" msgid "Memberships of the user %1" msgstr "УчаÑтие в группах данного Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %1" -#: lib/RT/Ticket_Overlay.pm:2849 +#: lib/RT/Ticket_Overlay.pm:2816 msgid "Merge Successful" msgstr "ЗаÑвки уÑпешно объединены" -#: lib/RT/Ticket_Overlay.pm:2736 +#: lib/RT/Ticket_Overlay.pm:2703 msgid "Merge failed. Couldn't set EffectiveId" msgstr "Ошибка объединениÑ. Ðевозможно уÑтановить идентификатор заÑвки." -#: lib/RT/Ticket_Overlay.pm:2744 +#: lib/RT/Ticket_Overlay.pm:2711 msgid "Merge failed. Couldn't set Status" -msgstr "" +msgstr "Ошибка объединениÑ. Ðевозможно уÑтановить ÑтатуÑ" #: html/Elements/EditLinks:129 html/Ticket/Elements/BulkLinks:48 msgid "Merge into" msgstr "Объединить Ñ Ð·Ð°Ñвкой" -#: lib/RT/Transaction_Overlay.pm:723 +#: lib/RT/Transaction_Overlay.pm.orig:721 lib/RT/Transaction_Overlay.pm:721 #. ($value) msgid "Merged into %1" msgstr "Объединено в %1" @@ -2997,7 +2974,7 @@ msgstr "Сообщение" msgid "Message body not shown because it is too large or is not plain text." msgstr "Тело ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð½Ðµ показано потому, что оно или Ñлишком большое или не ÑвлÑетÑÑ Ñ‚ÐµÐºÑтом." -#: lib/RT/Ticket_Overlay.pm:2406 +#: lib/RT/Ticket_Overlay.pm:2383 msgid "Message could not be recorded" msgstr "Ðевозможно запиÑать Ñообщение" @@ -3005,7 +2982,7 @@ msgstr "Ðевозможно запиÑать Ñообщение" msgid "Message recipients" msgstr "Получатели ÑообщениÑ" -#: lib/RT/Ticket_Overlay.pm:2409 +#: lib/RT/Ticket_Overlay.pm:2386 msgid "Message recorded" msgstr "Сообщение запиÑано" @@ -3013,15 +2990,15 @@ msgstr "Сообщение запиÑано" msgid "Messages about this ticket will not be sent to..." msgstr "Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± Ñтой заÑвке не будет отправлены..." -#: html/Search/Build.html:667 +#: html/Search/Build.html:727 msgid "Mismatched parentheses" -msgstr "" +msgstr "ÐеÑовпадающие Ñкобки" -#: lib/RT/Record.pm:940 +#: lib/RT/Record.pm:938 msgid "Missing a primary key?: %1" msgstr "Пропущен первичный ключ?: %1" -#: html/Admin/Users/Modify.html:193 html/User/Prefs.html:93 +#: html/Admin/Users/Modify.html.orig:193 html/Admin/Users/Modify.html:193 html/User/Prefs.html:93 msgid "Mobile" msgstr "Мобильный" @@ -3037,7 +3014,7 @@ msgstr "Изменено" msgid "Modify" msgstr "Изменить" -#: lib/RT/Queue_Overlay.pm:95 +#: lib/RT/Queue_Overlay.pm:94 msgid "Modify Access Control List" msgstr "Изменить ÑпиÑок ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð´Ð¾Ñтупа" @@ -3048,7 +3025,7 @@ msgstr "Изменить дополнительное поле %1" #: html/Admin/Elements/ObjectCustomFields:96 #. (loc(lc($FriendlySubTypes)), loc(lc($Types))) msgid "Modify Custom Fields which apply to %1 for all %2" -msgstr "" +msgstr "Изменение дополнительных полей, которые применÑÑŽÑ‚ÑÑ Ðº %1 Ð´Ð»Ñ Ð²Ñех %2" #: html/Admin/Elements/ObjectCustomFields:98 #. (loc(lc($Types))) @@ -3071,11 +3048,11 @@ msgstr "Изменить учаÑтников" msgid "Modify Rights" msgstr "Изменить права" -#: lib/RT/Queue_Overlay.pm:98 +#: lib/RT/Queue_Overlay.pm:97 msgid "Modify Scrip templates for this queue" msgstr "Изменить шаблоны Ñкриплетов Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ очереди" -#: lib/RT/Queue_Overlay.pm:101 +#: lib/RT/Queue_Overlay.pm:100 msgid "Modify Scrips for this queue" msgstr "Изменить Ñкриплеты Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ очереди" @@ -3130,7 +3107,7 @@ msgstr "Изменить даты заÑвки #%1" #: html/Admin/Elements/GlobalCustomFieldTabs:65 html/Admin/Global/index.html:72 msgid "Modify global custom fields" -msgstr "" +msgstr "Изменить общие дополнительные полÑ" #: 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" @@ -3183,7 +3160,7 @@ msgstr "Изменить права группы на очередь %1" msgid "Modify membership roster for this group" msgstr "Изменить ÑпиÑок учаÑтников Ñтой группы" -#: lib/RT/System.pm:83 +#: lib/RT/System.pm:82 msgid "Modify one's own RT account" msgstr "Изменить ÑобÑтвенную учетную запиÑÑŒ RT" @@ -3217,16 +3194,16 @@ msgstr "Изменить шаблон %1" msgid "Modify templates which apply to all queues" msgstr "Изменить шаблоны, которые применÑÑŽÑ‚ÑÑ ÐºÐ¾ вÑем очередÑм" -#: html/Admin/Groups/Modify.html:119 html/User/Groups/Modify.html:107 +#: html/Admin/Groups/Modify.html:118 html/User/Groups/Modify.html:107 #. ($Group->Name) msgid "Modify the group %1" msgstr "Изменить группу %1" -#: lib/RT/Queue_Overlay.pm:96 +#: lib/RT/Queue_Overlay.pm:95 msgid "Modify the queue watchers" msgstr "Изменить очередь наблюдателей" -#: html/Admin/Users/Modify.html:301 +#: html/Admin/Users/Modify.html.orig:303 html/Admin/Users/Modify.html:301 #. ($UserObj->Name) msgid "Modify the user %1" msgstr "Изменить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %1" @@ -3241,7 +3218,7 @@ msgstr "Изменить заÑвку # %1" msgid "Modify ticket #%1" msgstr "Изменить заÑвку # %1" -#: lib/RT/Queue_Overlay.pm:114 +#: lib/RT/Queue_Overlay.pm:113 msgid "Modify tickets" msgstr "Изменить заÑвки" @@ -3264,7 +3241,7 @@ msgstr "Изменить права Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° очередь msgid "Modify watchers for queue '%1'" msgstr "Изменить наблюдателей очереди '%1'" -#: lib/RT/Queue_Overlay.pm:95 +#: lib/RT/Queue_Overlay.pm:94 msgid "ModifyACL" msgstr "ИзменÑтьПраваДоÑтупа" @@ -3276,27 +3253,27 @@ msgstr "ИзменÑтьДополнительноеПоле" msgid "ModifyOwnMembership" msgstr "ИзменÑтьСобÑтвенноеУчаÑтиеВГруппах" -#: lib/RT/Queue_Overlay.pm:96 +#: lib/RT/Queue_Overlay.pm:95 msgid "ModifyQueueWatchers" msgstr "ИзменÑÑ‚ÑŒÐаблюдателейОчереди" -#: lib/RT/Queue_Overlay.pm:101 +#: lib/RT/Queue_Overlay.pm:100 msgid "ModifyScrips" msgstr "ИзменÑтьСкриплеты" -#: lib/RT/System.pm:83 +#: lib/RT/System.pm:82 msgid "ModifySelf" msgstr "ИзменÑтьСебÑ" -#: lib/RT/Queue_Overlay.pm:98 +#: lib/RT/Queue_Overlay.pm:97 msgid "ModifyTemplate" msgstr "ИзменÑтьШаблон" -#: lib/RT/Queue_Overlay.pm:114 +#: lib/RT/Queue_Overlay.pm:113 msgid "ModifyTicket" msgstr "ИзменÑтьЗаÑвку" -#: lib/RT/Date.pm:413 +#: lib/RT/Date.pm:411 msgid "Mon." msgstr "Пнд." @@ -3321,7 +3298,7 @@ msgstr "ПеремеÑтить вверх" msgid "Multiple" msgstr "ÐеÑколько значений" -#: lib/RT/User_Overlay.pm:227 +#: lib/RT/User_Overlay.pm:226 msgid "Must specify 'Name' attribute" msgstr "Ð’Ñ‹ должны указать ИмÑ" @@ -3346,7 +3323,7 @@ msgstr "Ваши Ñохраненные запроÑÑ‹" msgid "Name" msgstr "ИмÑ" -#: lib/RT/User_Overlay.pm:234 +#: lib/RT/User_Overlay.pm:233 msgid "Name in use" msgstr "Ð˜Ð¼Ñ ÑƒÐ¶Ðµ иÑпользуетÑÑ" @@ -3370,7 +3347,7 @@ msgstr "Ðовых" msgid "New Links" msgstr "Ðовые ÑвÑзи" -#: html/Admin/Users/Modify.html:119 html/User/Prefs.html:109 +#: html/Admin/Users/Modify.html.orig:119 html/Admin/Users/Modify.html:119 html/User/Prefs.html:109 msgid "New Password" msgstr "Ðовый пароль" @@ -3378,7 +3355,7 @@ msgstr "Ðовый пароль" msgid "New Pending Approval" msgstr "Ðовое ожидающее подтверждение" -#: html/Ticket/Elements/Tabs:193 +#: html/Ticket/Elements/Tabs.rej:16 html/Ticket/Elements/Tabs.rej:8 html/Ticket/Elements/Tabs:193 msgid "New Query" msgstr "Ðовый запроÑ" @@ -3402,7 +3379,7 @@ msgstr "ÐÐ¾Ð²Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð°" msgid "New password" msgstr "Ðовый пароль" -#: lib/RT/User_Overlay.pm:817 +#: lib/RT/User_Overlay.pm:814 msgid "New password notification sent" msgstr "Отправлено Ñообщение Ñ Ð½Ð¾Ð²Ñ‹Ð¼ паролем" @@ -3434,7 +3411,7 @@ msgstr "Ðовый шаблон" msgid "New ticket" msgstr "ÐÐ¾Ð²Ð°Ñ Ð·Ð°Ñвка" -#: lib/RT/Ticket_Overlay.pm:2713 +#: lib/RT/Ticket_Overlay.pm:2680 msgid "New ticket doesn't exist" msgstr "ÐÐ¾Ð²Ð°Ñ Ð·Ð°Ñвка не ÑущеÑтвует" @@ -3470,7 +3447,7 @@ msgstr "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ñтраница" msgid "NickName" msgstr "ПÑевдоним" -#: html/Admin/Users/Modify.html:84 html/User/Prefs.html:72 +#: html/Admin/Users/Modify.html.orig:84 html/Admin/Users/Modify.html:84 html/User/Prefs.html:72 msgid "Nickname" msgstr "ПÑевдоним" @@ -3480,7 +3457,7 @@ msgstr "Ðет" #: html/Admin/CustomFields/UserRights.html:145 msgid "No Class defined" -msgstr "" +msgstr "КлаÑÑ Ð½Ðµ указан" #: html/Admin/CustomFields/Modify.html:124 html/Admin/Elements/EditCustomField:119 msgid "No CustomField" @@ -3522,7 +3499,7 @@ msgstr "ЗаÑвка не указана. ОтменÑем Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð· msgid "No action" msgstr "Ðет дейÑтвиÑ" -#: lib/RT/Record.pm:935 +#: lib/RT/Record.pm:933 msgid "No column specified" msgstr "Колонка не указана" @@ -3538,12 +3515,12 @@ msgstr "Ðет комментариев о пользователе" msgid "No correspondence attached" msgstr "ПуÑтое Ñообщение" -#: lib/RT/Action/Generic.pm:186 lib/RT/Condition/Generic.pm:198 lib/RT/Search/ActiveTicketsInQueue.pm:78 lib/RT/Search/Generic.pm:135 +#: lib/RT/Action/Generic.pm:178 lib/RT/Condition/Generic.pm:197 lib/RT/Search/ActiveTicketsInQueue.pm:77 lib/RT/Search/Generic.pm:134 #. (ref $self) msgid "No description for %1" msgstr "Ðет опиÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ %1" -#: lib/RT/Users_Overlay.pm:185 +#: lib/RT/Users_Overlay.pm:184 msgid "No group specified" msgstr "Ðе указана группа" @@ -3551,15 +3528,15 @@ msgstr "Ðе указана группа" msgid "No groups matching search criteria found." msgstr "Группы, удовелÑтворÑющие уÑловию поиÑка, не найдены." -#: lib/RT/Ticket_Overlay.pm:2349 +#: lib/RT/Ticket_Overlay.pm:2344 msgid "No message attached" msgstr "Ðет приÑоединенных Ñообщений" -#: lib/RT/User_Overlay.pm:1035 +#: lib/RT/User_Overlay.pm:1032 msgid "No password set" msgstr "Пароль не уÑтановлен" -#: lib/RT/Queue_Overlay.pm:358 +#: lib/RT/Queue_Overlay.pm:345 msgid "No permission to create queues" msgstr "Ðет прав Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ñ‡ÐµÑ€ÐµÐ´ÐµÐ¹" @@ -3568,11 +3545,11 @@ msgstr "Ðет прав Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ñ‡ÐµÑ€ÐµÐ´ÐµÐ¹" msgid "No permission to create tickets in the queue '%1'" msgstr "Ðет прав Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð·Ð°Ñвок в очереди '%1'" -#: lib/RT/User_Overlay.pm:187 +#: lib/RT/User_Overlay.pm:186 msgid "No permission to create users" msgstr "Ðет прав Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹" -#: html/SelfService/Display.html:165 +#: html/SelfService/Display.html:158 msgid "No permission to display that ticket" msgstr "Ðет прав Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра Ñтой заÑвки" @@ -3580,7 +3557,7 @@ msgstr "Ðет прав Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра Ñтой заÑвки" msgid "No permission to view update ticket" msgstr "Ðет прав Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра обновлений Ñтой заÑвки" -#: lib/RT/Queue_Overlay.pm:792 lib/RT/Ticket_Overlay.pm:1450 +#: lib/RT/Queue_Overlay.pm:779 lib/RT/Ticket_Overlay.pm:1450 msgid "No principal specified" msgstr "Пользователь не указан" @@ -3600,9 +3577,9 @@ msgstr "Права не найдены" msgid "No rights granted." msgstr "Права не выданы." -#: lib/RT/SavedSearch.pm:187 +#: lib/RT/SavedSearch.pm:186 msgid "No search loaded" -msgstr "" +msgstr "Ðи один Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ загружен" #: html/Search/Bulk.html:194 msgid "No search to operate on." @@ -3616,7 +3593,7 @@ msgstr "Ðет темы" msgid "No ticket id specified" msgstr "Идентификатор заÑвки не указан" -#: lib/RT/Transaction_Overlay.pm:517 lib/RT/Transaction_Overlay.pm:554 +#: lib/RT/Transaction_Overlay.pm.orig:515 lib/RT/Transaction_Overlay.pm.orig:552 lib/RT/Transaction_Overlay.pm:515 lib/RT/Transaction_Overlay.pm:552 msgid "No transaction type specified" msgstr "Тип транзакции не указан" @@ -3632,7 +3609,7 @@ msgstr "Пользователи, удовелÑтворÑющие уÑÐ»Ð¾Ð²Ð¸Ñ msgid "No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\\n" msgstr "Ðе найден пользователь RT. Обработчик CVS отключен. ОбратитеÑÑŒ к админиÑтратору RT.\\n" -#: lib/RT/Record.pm:932 +#: lib/RT/Record.pm:930 msgid "No value sent to _Set!\\n" msgstr "Ðикакое значение не отправлено _Set!\\n" @@ -3640,7 +3617,7 @@ msgstr "Ðикакое значение не отправлено _Set!\\n" msgid "Nobody" msgstr "Ðикто" -#: lib/RT/Record.pm:937 +#: lib/RT/Record.pm:935 msgid "Nonexistant field?" msgstr "ÐеÑущеÑтвующее поле?" @@ -3652,7 +3629,7 @@ msgstr "Ðе зарегиÑтрирован" msgid "Not logged in." msgstr "Ðе зарегиÑтрирован." -#: lib/RT/Date.pm:393 +#: lib/RT/Date.pm:392 msgid "Not set" msgstr "Ðе уÑтановлено" @@ -3668,7 +3645,7 @@ msgstr "Еще не реализовано..." msgid "Notes" msgstr "ПримечаниÑ" -#: lib/RT/User_Overlay.pm:820 +#: lib/RT/User_Overlay.pm:817 msgid "Notification could not be sent" msgstr "Ðевозможно отправить уведомление" @@ -3740,7 +3717,7 @@ msgstr "УведомлÑÑ‚ÑŒ Ðвторов заÑвки, Копии и Ðдми msgid "Notify Requestors, Ccs and AdminCcs as Comment" msgstr "УведомлÑÑ‚ÑŒ Ðвторов заÑвки, Копии и ÐдминиÑтративныеКопии как Комментарии" -#: lib/RT/Date.pm:447 +#: lib/RT/Date.pm:444 msgid "Nov." msgstr "ÐоÑ." @@ -3750,23 +3727,23 @@ msgstr "ÐоÑбрь" #: html/Search/Elements/SelectAndOr:47 msgid "OR" -msgstr "" +msgstr "ИЛИ" -#: lib/RT/Record.pm:319 +#: lib/RT/Record.pm:318 msgid "Object could not be created" msgstr "Ðевозможно Ñоздать объект" -#: lib/RT/Record.pm:124 +#: lib/RT/Record.pm:123 msgid "Object could not be deleted" -msgstr "" +msgstr "Объект не может быть удален" -#: lib/RT/Record.pm:338 +#: lib/RT/Record.pm:337 msgid "Object created" msgstr "Объект Ñоздан" -#: lib/RT/Record.pm:121 +#: lib/RT/Record.pm:120 msgid "Object deleted" -msgstr "" +msgstr "Объект удален" #: html/Admin/CustomFields/Objects.html:72 html/Admin/Elements/ObjectCustomFields:63 #. ($ObjectType) @@ -3774,11 +3751,11 @@ msgstr "" msgid "Object of type %1 cannot take custom fields" msgstr "Тип объекта %1 не может Ñодержать дополнительные полÑ" -#: lib/RT/CustomField_Overlay.pm:901 +#: lib/RT/CustomField_Overlay.pm:887 msgid "Object type mismatch" msgstr "ÐеÑовпадение типа объекта" -#: lib/RT/Date.pm:446 +#: lib/RT/Date.pm:443 msgid "Oct." msgstr "Окт." @@ -3884,7 +3861,7 @@ msgstr "Сортировать по" msgid "Ordering and sorting" msgstr "ПорÑдок и Ñортировка" -#: html/Admin/Users/Modify.html:141 html/User/Prefs.html:129 +#: html/Admin/Users/Modify.html.orig:141 html/Admin/Users/Modify.html:141 html/User/Prefs.html:129 msgid "Organization" msgstr "ОрганизациÑ" @@ -3893,11 +3870,11 @@ msgstr "ОрганизациÑ" msgid "Originating ticket: #%1" msgstr "ЗаÑвка-первоиÑточник: #%1" -#: lib/RT/Transaction_Overlay.pm:611 +#: lib/RT/Transaction_Overlay.pm.orig:609 lib/RT/Transaction_Overlay.pm:609 msgid "Outgoing email about a comment recorded" msgstr "ИÑходÑÑ‰Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð° о комментарии запиÑана" -#: lib/RT/Transaction_Overlay.pm:615 +#: lib/RT/Transaction_Overlay.pm.orig:613 lib/RT/Transaction_Overlay.pm:613 msgid "Outgoing email recorded" msgstr "ИÑходÑÑ‰Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð° запиÑана" @@ -3909,15 +3886,15 @@ msgstr "Со временем поднÑÑ‚ÑŒ приоритет до" msgid "Overview" msgstr "Обзор" -#: lib/RT/Queue_Overlay.pm:113 +#: lib/RT/Queue_Overlay.pm:112 msgid "Own tickets" msgstr "Ðазначить ÑебÑ" -#: lib/RT/Queue_Overlay.pm:113 +#: lib/RT/Queue_Overlay.pm:112 msgid "OwnTicket" msgstr "БытьОтветÑтвеннымЗаЗаÑвку" -#: 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: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:110 lib/RT/Tickets_Overlay.pm:1733 msgid "Owner" msgstr "ОтветÑтвенный" @@ -3929,7 +3906,7 @@ msgstr "ОтветÑтвенный изменен Ñ %1 на %2" msgid "Owner could not be set." msgstr "ОтветÑтвенный не может быть назначен" -#: lib/RT/Transaction_Overlay.pm:661 +#: lib/RT/Transaction_Overlay.pm.orig:659 lib/RT/Transaction_Overlay.pm:659 #. ($Old->Name , $New->Name) msgid "Owner forcibly changed from %1 to %2" msgstr "ОтветÑтвенный принудительно изменен Ñ %1 на %2" @@ -3943,7 +3920,7 @@ msgstr "ОтветÑтвенный" msgid "Page %1 of %2" msgstr "Страница %1 из %2" -#: html/Admin/Users/Modify.html:198 html/User/Prefs.html:97 +#: html/Admin/Users/Modify.html.orig:198 html/Admin/Users/Modify.html:198 html/User/Prefs.html:97 msgid "Pager" msgstr "Пейджер" @@ -3967,33 +3944,25 @@ msgstr "Пароль" msgid "Password Reminder" msgstr "ПодÑказка к паролю" -#: lib/RT/Transaction_Overlay.pm:770 lib/RT/User_Overlay.pm:1046 +#: lib/RT/Transaction_Overlay.pm.orig:768 lib/RT/Transaction_Overlay.pm:768 lib/RT/User_Overlay.pm:1041 msgid "Password changed" -msgstr "" +msgstr "Пароль изменен" -#: lib/RT/User_Overlay.pm:1038 lib/RT/User_Overlay.pm:215 +#: lib/RT/User_Overlay.pm:1035 lib/RT/User_Overlay.pm:214 #. ($RT::MinimumPasswordLength) msgid "Password needs to be at least %1 characters long" -msgstr "" - -#: lib/RT/User_Overlay.pm:1045 -msgid "Password set" -msgstr "" +msgstr "Пароль должен ÑоÑтоÑÑ‚ не менее чем из %1 Ñимволов" #: NOT FOUND IN SOURCE msgid "Password too short" msgstr "Пароль Ñлишком короткий" -#: html/User/Prefs.html:232 +#: html/Admin/Users/Modify.html.orig:357 html/Admin/Users/Modify.html:355 html/User/Prefs.html:232 #. (loc_fuzzy($msg)) msgid "Password: %1" msgstr "Пароль: %1" -#: lib/RT/User_Overlay.pm:1031 -msgid "Password: Permission Denied" -msgstr "" - -#: html/Admin/Users/Modify.html:356 +#: html/Admin/Users/Modify.html.orig:359 html/Admin/Users/Modify.html:357 msgid "Passwords do not match." msgstr "Пароли не Ñовпадают" @@ -4013,7 +3982,7 @@ msgstr "Выволнить дейÑтвие, указанное пользова msgid "Perl configuration" msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Perl" -#: 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:261 lib/RT/ACE_Overlay.pm:267 lib/RT/ACE_Overlay.pm:593 lib/RT/ACE_Overlay.pm:603 lib/RT/ACE_Overlay.pm:613 lib/RT/ACE_Overlay.pm:678 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:116 lib/RT/CurrentUser.pm:125 lib/RT/CustomField_Overlay.pm:1008 lib/RT/CustomField_Overlay.pm:162 lib/RT/CustomField_Overlay.pm:179 lib/RT/CustomField_Overlay.pm:190 lib/RT/CustomField_Overlay.pm:360 lib/RT/CustomField_Overlay.pm:392 lib/RT/CustomField_Overlay.pm:684 lib/RT/CustomField_Overlay.pm:856 lib/RT/CustomField_Overlay.pm:891 lib/RT/CustomField_Overlay.pm:936 lib/RT/Group_Overlay.pm:1123 lib/RT/Group_Overlay.pm:1127 lib/RT/Group_Overlay.pm:1136 lib/RT/Group_Overlay.pm:1246 lib/RT/Group_Overlay.pm:1250 lib/RT/Group_Overlay.pm:1256 lib/RT/Group_Overlay.pm:452 lib/RT/Group_Overlay.pm:549 lib/RT/Group_Overlay.pm:627 lib/RT/Group_Overlay.pm:635 lib/RT/Group_Overlay.pm:732 lib/RT/Group_Overlay.pm:736 lib/RT/Group_Overlay.pm:742 lib/RT/Group_Overlay.pm:928 lib/RT/Group_Overlay.pm:932 lib/RT/Group_Overlay.pm:945 lib/RT/Queue_Overlay.pm:1038 lib/RT/Queue_Overlay.pm:140 lib/RT/Queue_Overlay.pm:158 lib/RT/Queue_Overlay.pm:641 lib/RT/Queue_Overlay.pm:651 lib/RT/Queue_Overlay.pm:665 lib/RT/Queue_Overlay.pm:803 lib/RT/Queue_Overlay.pm:812 lib/RT/Queue_Overlay.pm:825 lib/RT/Scrip_Overlay.pm:149 lib/RT/Scrip_Overlay.pm:160 lib/RT/Scrip_Overlay.pm:225 lib/RT/Scrip_Overlay.pm:539 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:2250 lib/RT/Ticket_Overlay.pm:2297 lib/RT/Ticket_Overlay.pm:2451 lib/RT/Ticket_Overlay.pm:2552 lib/RT/Ticket_Overlay.pm:2592 lib/RT/Ticket_Overlay.pm:2671 lib/RT/Ticket_Overlay.pm:2685 lib/RT/Ticket_Overlay.pm:2909 lib/RT/Ticket_Overlay.pm:2919 lib/RT/Ticket_Overlay.pm:2924 lib/RT/Ticket_Overlay.pm:3147 lib/RT/Ticket_Overlay.pm:3151 lib/RT/Ticket_Overlay.pm:3294 lib/RT/Ticket_Overlay.pm:3415 lib/RT/Transaction_Overlay.pm.orig:503 lib/RT/Transaction_Overlay.pm.orig:510 lib/RT/Transaction_Overlay.pm.orig:538 lib/RT/Transaction_Overlay.pm.orig:545 lib/RT/Transaction_Overlay.pm:503 lib/RT/Transaction_Overlay.pm:510 lib/RT/Transaction_Overlay.pm:538 lib/RT/Transaction_Overlay.pm:545 lib/RT/User_Overlay.pm:1028 lib/RT/User_Overlay.pm:1179 lib/RT/User_Overlay.pm:1720 lib/RT/User_Overlay.pm:369 lib/RT/User_Overlay.pm:733 lib/RT/User_Overlay.pm:772 msgid "Permission Denied" msgstr "Ðет доÑтупа" @@ -4029,7 +3998,7 @@ msgstr "Личные группы" msgid "Personal groups:" msgstr "Личные группы:" -#: html/Admin/Users/Modify.html:180 html/User/Prefs.html:82 +#: html/Admin/Users/Modify.html.orig:180 html/Admin/Users/Modify.html:180 html/User/Prefs.html:82 msgid "Phone numbers" msgstr "Ðомера телефонов" @@ -4037,7 +4006,7 @@ msgstr "Ðомера телефонов" msgid "Placeholder" msgstr "Заполнитель" -#: 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:88 html/SelfService/Elements/Tabs:72 html/SelfService/Prefs.html:46 html/User/Prefs.html:46 html/User/Prefs.html:49 msgid "Preferences" msgstr "ÐаÑтройки" @@ -4045,7 +4014,7 @@ msgstr "ÐаÑтройки" msgid "Prefs" msgstr "ÐаÑтройки" -#: lib/RT/Action/Generic.pm:196 +#: lib/RT/Action/Generic.pm:188 msgid "Prepare Stubbed" msgstr "Подготовка не реализована" @@ -4065,12 +4034,12 @@ msgstr "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ñтраница" msgid "Pri" msgstr "Приоритет" -#: lib/RT/ACE_Overlay.pm:158 lib/RT/ACE_Overlay.pm:240 lib/RT/ACE_Overlay.pm:570 +#: lib/RT/ACE_Overlay.pm:157 lib/RT/ACE_Overlay.pm:238 lib/RT/ACE_Overlay.pm:582 #. ($args{'PrincipalId'}) msgid "Principal %1 not found." msgstr "Пользователь %1 не найден." -#: 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:160 html/Ticket/Create.html:184 html/Ticket/Elements/EditBasics:74 html/Ticket/Elements/ShowBasics:72 lib/RT/Tickets_Overlay.pm:1517 msgid "Priority" msgstr "Приоритет" @@ -4086,7 +4055,7 @@ msgstr "КонфиденциальноÑÑ‚ÑŒ:" msgid "Privileged" msgstr "Привилегированные" -#: html/Admin/Users/Modify.html:334 html/User/Prefs.html:223 +#: html/Admin/Users/Modify.html.orig:337 html/Admin/Users/Modify.html:335 html/User/Prefs.html:223 #. (loc_fuzzy($msg)) msgid "Privileged status: %1" msgstr "СоÑтоÑние привилегий: %1" @@ -4107,11 +4076,11 @@ msgstr "ПÑевдогруппы Ð´Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐ³Ð¾ иÑпользоРmsgid "Query" msgstr "ЗапроÑ" -#: html/Search/Build.html:124 html/Ticket/Elements/Tabs:195 +#: html/Search/Build.html:103 html/Ticket/Elements/Tabs:195 msgid "Query Builder" msgstr "ПоÑтроитель запроÑа" -#: 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/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:1344 msgid "Queue" msgstr "Очередь" @@ -4133,11 +4102,11 @@ msgstr "Ðаименование очереди" msgid "Queue Scrips" msgstr "Скриплеты очереди" -#: lib/RT/Queue_Overlay.pm:362 +#: lib/RT/Queue_Overlay.pm:349 msgid "Queue already exists" msgstr "Очередь уже ÑущеÑтвует" -#: lib/RT/Queue_Overlay.pm:371 lib/RT/Queue_Overlay.pm:377 +#: lib/RT/Queue_Overlay.pm:358 lib/RT/Queue_Overlay.pm:364 msgid "Queue could not be created" msgstr "Ðевозможно Ñоздать очередь" @@ -4145,7 +4114,7 @@ msgstr "Ðевозможно Ñоздать очередь" msgid "Queue could not be loaded." msgstr "Ðевозможно загрузить очередь" -#: 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:368 lib/RT/StyleGuide.pod:809 msgid "Queue created" msgstr "Очередь Ñоздана" @@ -4153,7 +4122,7 @@ msgstr "Очередь Ñоздана" msgid "Queue is not specified." msgstr "Очередь не указана." -#: html/SelfService/Display.html:102 lib/RT/CustomField_Overlay.pm:192 +#: html/SelfService/Display.html:95 lib/RT/CustomField_Overlay.pm:187 msgid "Queue not found" msgstr "Очередь не найдена" @@ -4211,7 +4180,7 @@ msgstr "Ошибка конфигурации RT" msgid "RT Critical error. Message not recorded!" msgstr "КритичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° RT: Сообщение не было Ñохранено!" -#: html/Elements/Error:65 html/SelfService/Error.html:62 +#: html/Elements/Error:63 html/SelfService/Error.html:62 msgid "RT Error" msgstr "Ошибка RT" @@ -4253,13 +4222,13 @@ msgstr "RT не может найти очередь: %1" #: html/Elements/SetupSessionCookie:90 msgid "RT couldn't store your session." -msgstr "" +msgstr "Ошибка ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð²Ð°ÑˆÐµÐ¹ ÑеÑÑии" #: NOT FOUND IN SOURCE msgid "RT couldn't validate this PGP signature. \\n" msgstr "RT не может проверить Ñту подпиÑÑŒ PGP. \\n" -#: html/Elements/PageLayout:108 +#: html/Elements/PageLayout:107 #. ($RT::rtname) msgid "RT for %1" msgstr "RT Ð´Ð»Ñ %1" @@ -4296,7 +4265,7 @@ msgstr "RT будет обрабатывать Ñто Ñообщение как msgid "RT's email command mode requires PGP authentication. Either you didn't sign your message, or your signature could not be verified." msgstr "Командный режим RT email требует иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñи .PGP. Ð’Ñ‹ либо не подпиÑали Ñообщение, либо ваша подпиÑÑŒ не может быть проверена." -#: html/Admin/Users/Modify.html:79 html/User/Prefs.html:69 +#: html/Admin/Users/Modify.html.orig:79 html/Admin/Users/Modify.html:79 html/User/Prefs.html:69 msgid "Real Name" msgstr "Полное имÑ" @@ -4304,22 +4273,22 @@ msgstr "Полное имÑ" msgid "RealName" msgstr "Полное имÑ" -#: lib/RT/Transaction_Overlay.pm:714 +#: lib/RT/Transaction_Overlay.pm.orig:712 lib/RT/Transaction_Overlay.pm:712 #. ($value) msgid "Reference by %1 added" msgstr "СÑылка на заÑвку заÑвки %1 добавлена" -#: lib/RT/Transaction_Overlay.pm:754 +#: lib/RT/Transaction_Overlay.pm.orig:752 lib/RT/Transaction_Overlay.pm:752 #. ($value) msgid "Reference by %1 deleted" msgstr "СÑылка на заÑвку заÑвки %1 удалена" -#: lib/RT/Transaction_Overlay.pm:711 +#: lib/RT/Transaction_Overlay.pm.orig:709 lib/RT/Transaction_Overlay.pm:709 #. ($value) msgid "Reference to %1 added" msgstr "СÑылка на %1 добавлена" -#: lib/RT/Transaction_Overlay.pm:751 +#: lib/RT/Transaction_Overlay.pm.orig:749 lib/RT/Transaction_Overlay.pm:749 #. ($value) msgid "Reference to %1 deleted" msgstr "СÑылка на %1 удалена" @@ -4365,7 +4334,7 @@ msgstr "Удалить копию" msgid "Remove Requestor" msgstr "Удалить Ðвтора ЗаÑвки" -#: html/Ticket/Elements/ShowTransaction:171 html/Ticket/Elements/Tabs:145 +#: html/Ticket/Elements/ShowTransaction:170 html/Ticket/Elements/Tabs:145 msgid "Reply" msgstr "Ответить" @@ -4377,15 +4346,15 @@ msgstr "ÐÐ´Ñ€ÐµÑ Ð´Ð»Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð°" msgid "Reply to requestors" msgstr "Отвечать авторам заÑвки" -#: lib/RT/Queue_Overlay.pm:111 +#: lib/RT/Queue_Overlay.pm:110 msgid "Reply to tickets" msgstr "Отвечать на заÑвки" -#: lib/RT/Queue_Overlay.pm:111 +#: lib/RT/Queue_Overlay.pm:110 msgid "ReplyToTicket" msgstr "ОтвечатьÐаЗаÑвку" -#: etc/initialdata:44 lib/RT/ACE_Overlay.pm:112 +#: etc/initialdata:44 lib/RT/ACE_Overlay.pm:111 msgid "Requestor" msgstr "Ðвтор заÑвки" @@ -4418,7 +4387,7 @@ msgstr "Ðеобходимый параметр '%1' не указан" msgid "Reset" msgstr "ОчиÑтить" -#: html/Admin/Users/Modify.html:183 html/User/Prefs.html:85 +#: html/Admin/Users/Modify.html.orig:183 html/Admin/Users/Modify.html:183 html/User/Prefs.html:85 msgid "Residence" msgstr "Домашний" @@ -4426,7 +4395,7 @@ msgstr "Домашний" msgid "Resolve" msgstr "Решить" -#: html/Ticket/Update.html:154 +#: html/Ticket/Update.html:151 #. ($TicketObj->id, $TicketObj->Subject) msgid "Resolve ticket #%1 (%2)" msgstr "Решить заÑвка #%1 (%2)" @@ -4447,7 +4416,7 @@ msgstr "Результаты" msgid "Results per page" msgstr "Результатов на Ñтранице" -#: html/Admin/Users/Modify.html:126 html/User/Prefs.html:116 +#: html/Admin/Users/Modify.html.orig:126 html/Admin/Users/Modify.html:126 html/User/Prefs.html:116 msgid "Retype Password" msgstr "Повторите пароль" @@ -4459,19 +4428,19 @@ msgstr "Обратить" msgid "Right %1 not found for %2 %3 in scope %4 (%5)\\n" msgstr "Право %1 не найдено Ð´Ð»Ñ %2 %3 в рамках %4 (%5)\\n" -#: lib/RT/ACE_Overlay.pm:631 +#: lib/RT/ACE_Overlay.pm:643 msgid "Right Delegated" msgstr "Право делегировано" -#: lib/RT/ACE_Overlay.pm:321 +#: lib/RT/ACE_Overlay.pm:333 msgid "Right Granted" msgstr "Право выдано" -#: lib/RT/ACE_Overlay.pm:179 +#: lib/RT/ACE_Overlay.pm:185 msgid "Right Loaded" msgstr "Право загружено" -#: lib/RT/ACE_Overlay.pm:696 lib/RT/ACE_Overlay.pm:717 +#: lib/RT/ACE_Overlay.pm:708 lib/RT/ACE_Overlay.pm:729 msgid "Right could not be revoked" msgstr "Право не может быть отозвано" @@ -4479,11 +4448,11 @@ msgstr "Право не может быть отозвано" msgid "Right not found" msgstr "Право не найдено" -#: lib/RT/ACE_Overlay.pm:561 lib/RT/ACE_Overlay.pm:656 +#: lib/RT/ACE_Overlay.pm:573 lib/RT/ACE_Overlay.pm:668 msgid "Right not loaded." msgstr "Право не загружено" -#: lib/RT/ACE_Overlay.pm:713 +#: lib/RT/ACE_Overlay.pm:725 msgid "Right revoked" msgstr "Право отозвано" @@ -4491,12 +4460,12 @@ msgstr "Право отозвано" msgid "Rights" msgstr "Права" -#: html/Admin/CustomFields/GroupRights.html:129 lib/RT/Interface/Web.pm:901 +#: html/Admin/CustomFields/GroupRights.html:129 lib/RT/Interface/Web.pm:869 #. ($object_type) msgid "Rights could not be granted for %1" msgstr "Ðевозможно выдать права Ð´Ð»Ñ %1" -#: html/Admin/CustomFields/GroupRights.html:156 lib/RT/Interface/Web.pm:930 +#: html/Admin/CustomFields/GroupRights.html:156 lib/RT/Interface/Web.pm:898 #. ($object_type) msgid "Rights could not be revoked for %1" msgstr "Ðевозможно отозвать права %1" @@ -4509,7 +4478,7 @@ msgstr "ПÑевдо-группы" msgid "Rows per page" msgstr "Строк на Ñтранице" -#: lib/RT/Date.pm:418 +#: lib/RT/Date.pm:416 msgid "Sat." msgstr "Суб." @@ -4517,7 +4486,7 @@ msgstr "Суб." msgid "Save" msgstr "Сохранить" -#: 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:87 html/Admin/Queues/Modify.html:111 html/Admin/Queues/People.html:126 html/Admin/Users/Modify.html.orig:238 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 msgid "Save Changes" msgstr "Сохранить изменениÑ" @@ -4529,23 +4498,22 @@ msgstr "Сохранить наÑтройки" msgid "Save changes" msgstr "Сохранить изменениÑ" -#: lib/RT/SavedSearch.pm:162 +#: lib/RT/SavedSearch.pm:161 #. ($name) msgid "Saved search %1" -msgstr "" +msgstr "Сохраненный Ð·Ð°Ð¿Ñ€Ð¾Ñ %1" #: html/Search/Elements/EditSearches:46 msgid "Saved searches" msgstr "Сохраненные запроÑÑ‹" -#: html/Admin/Elements/ListGlobalScrips:61 html/Admin/Global/Scrip.html:70 html/Admin/Queues/Scrip.html:76 -#. ($scrip->Id) +#: html/Admin/Global/Scrip.html:70 html/Admin/Queues/Scrip.html:76 #. ($id) #. ($ARGS{'id'}) msgid "Scrip #%1" msgstr "Скриплет #%1" -#: lib/RT/Scrip_Overlay.pm:205 +#: lib/RT/Scrip_Overlay.pm:204 msgid "Scrip Created" msgstr "Скриплет Ñоздан" @@ -4569,7 +4537,7 @@ msgstr "Скриплеты Ð´Ð»Ñ %1\\n" msgid "Scrips which apply to all queues" msgstr "Скриплеты, которые дейÑтвуют Ð´Ð»Ñ Ð²Ñех очередей" -#: html/Elements/SimpleSearch:48 html/Search/Build.html:112 +#: html/Elements/SimpleSearch:48 html/Search/Build.html:92 msgid "Search" msgstr "ПоиÑк" @@ -4577,18 +4545,18 @@ msgstr "ПоиÑк" msgid "Search Criteria" msgstr "Критерии поиÑка" -#: lib/RT/SavedSearch.pm:116 +#: lib/RT/SavedSearch.pm:115 msgid "Search attribute load failure" -msgstr "" +msgstr "Ошибка загрузки атрибута запроÑа" #: html/Approvals/Elements/PendingMyApproval:60 msgid "Search for approvals" msgstr "ПоиÑк подтверждений" -#: lib/RT/SavedSearch.pm:194 +#: lib/RT/SavedSearch.pm:193 #. ($msg) msgid "Search update: %1" -msgstr "" +msgstr "Обновление запроÑа: %1" #: NOT FOUND IN SOURCE msgid "Searches can't be associated with that kind of object" @@ -4602,15 +4570,15 @@ msgstr "БезопаÑноÑÑ‚ÑŒ:" msgid "See custom fields" msgstr "ПроÑмотреть дополнительные полÑ" -#: lib/RT/Queue_Overlay.pm:107 +#: lib/RT/Queue_Overlay.pm:106 msgid "See exact outgoing email messages and their recipeients" msgstr "ПроÑмотреть полноÑтью иÑходÑщую почту и ее получателей" -#: lib/RT/Queue_Overlay.pm:105 +#: lib/RT/Queue_Overlay.pm:104 msgid "See ticket private commentary" msgstr "ПроÑмотреть конфиденциальный комментарий заÑвки" -#: lib/RT/Queue_Overlay.pm:104 +#: lib/RT/Queue_Overlay.pm:103 msgid "See ticket summaries" msgstr "ПроÑмотреть Ñводную информацию заÑвки" @@ -4620,9 +4588,9 @@ msgstr "ПроÑматриватьДополнительныеПолÑ" #: lib/RT/Group_Overlay.pm:177 msgid "SeeGroup" -msgstr "" +msgstr "ПроÑматриватьГруппу" -#: lib/RT/Queue_Overlay.pm:92 +#: lib/RT/Queue_Overlay.pm:91 msgid "SeeQueue" msgstr "ПроÑмативатьОчередь" @@ -4660,19 +4628,19 @@ msgstr "Выберите дополнительное поле" #: html/Admin/Global/CustomFields/index.html:70 msgid "Select custom fields for all user groups" -msgstr "" +msgstr "Выберите дополнительные Ð¿Ð¾Ð»Ñ Ð²Ñех пользовательÑких групп" #: html/Admin/Global/CustomFields/index.html:65 msgid "Select custom fields for all users" -msgstr "" +msgstr "Выберите дополнительные Ð¿Ð¾Ð»Ñ Ð²Ñех пользователей" #: html/Admin/Global/CustomFields/index.html:76 msgid "Select custom fields for tickets in all queues" -msgstr "" +msgstr "Выберите дополнительные Ð¿Ð¾Ð»Ñ Ð·Ð°Ñвок во вÑех очередÑÑ…" #: html/Admin/Global/CustomFields/index.html:83 msgid "Select custom fields for transactions on tickets in all queues" -msgstr "" +msgstr "Выберите дополнительные Ð¿Ð¾Ð»Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¹ заÑвок во вÑех очередÑÑ…" #: html/Admin/Elements/GroupTabs:75 html/User/Elements/GroupTabs:71 msgid "Select group" @@ -4708,11 +4676,11 @@ msgstr "Выберите пользователÑ" #: NOT FOUND IN SOURCE msgid "SelectMultiple" -msgstr "Выбрать неÑколько" +msgstr "ВыбиратьÐеÑколько" #: NOT FOUND IN SOURCE msgid "SelectSingle" -msgstr "Выбрать одно" +msgstr "ВыбиратьОдно" #: html/Admin/Elements/EditCustomFields:58 msgid "Selected Custom Fields" @@ -4770,7 +4738,7 @@ msgstr "ОтправлÑÑ‚ÑŒ почту ÐдминиÑтративнымКопи msgid "Sends mail to the owner" msgstr "ОтправлÑÑ‚ÑŒ почту ОтветÑтвенному" -#: lib/RT/Date.pm:445 +#: lib/RT/Date.pm:442 msgid "Sep." msgstr "Сен." @@ -4782,7 +4750,7 @@ msgstr "РазделÑйте неÑколько ÑÑылок пробелами" msgid "September" msgstr "СентÑбрь" -#: html/Ticket/Elements/ShowTransaction:150 +#: html/Ticket/Elements/ShowTransaction:149 msgid "Show" msgstr "Показать" @@ -4834,15 +4802,15 @@ msgstr "Показать конфиденциальный комментарий msgid "Show ticket summaries" msgstr "Показать Ñводную информацию заÑвки" -#: lib/RT/Queue_Overlay.pm:94 +#: lib/RT/Queue_Overlay.pm:93 msgid "ShowACL" msgstr "ПоказыватьПраваДоÑтупа" -#: lib/RT/System.pm:86 +#: lib/RT/System.pm:85 msgid "ShowConfigTab" -msgstr "" +msgstr "ПоказыватьЗакладкуКонфигурации" -#: lib/RT/Queue_Overlay.pm:107 +#: lib/RT/Queue_Overlay.pm:106 msgid "ShowOutgoingEmail" msgstr "ПоказыватьИÑходÑщуюПочту" @@ -4850,31 +4818,31 @@ msgstr "ПоказыватьИÑходÑщуюПочту" msgid "ShowSavedSearches" msgstr "ПоказыватьСохраненныеЗапроÑÑ‹" -#: lib/RT/Queue_Overlay.pm:103 +#: lib/RT/Queue_Overlay.pm:102 msgid "ShowScrips" msgstr "ПоказыватьСкриплеты" -#: lib/RT/Queue_Overlay.pm:100 +#: lib/RT/Queue_Overlay.pm:99 msgid "ShowTemplate" msgstr "ПоказыватьШаблон" -#: lib/RT/Queue_Overlay.pm:104 +#: lib/RT/Queue_Overlay.pm:103 msgid "ShowTicket" msgstr "ПоказыватьЗаÑвку" -#: lib/RT/Queue_Overlay.pm:105 +#: lib/RT/Queue_Overlay.pm:104 msgid "ShowTicketComments" msgstr "ПоказыватьКомментарииЗаÑвки" -#: lib/RT/Queue_Overlay.pm:108 +#: lib/RT/Queue_Overlay.pm:107 msgid "Sign up as a ticket Requestor or ticket or queue Cc" msgstr "ПодпиÑатьÑÑ ÐºÐ°Ðº Ðвтор заÑвки или ÐšÐ¾Ð¿Ð¸Ñ Ð·Ð°Ñвки или очереди" -#: lib/RT/Queue_Overlay.pm:109 +#: lib/RT/Queue_Overlay.pm:108 msgid "Sign up as a ticket or queue AdminCc" msgstr "ПодпиÑатьÑÑ ÐºÐ°Ðº ÐдминиÑтративнаÑÐšÐ¾Ð¿Ð¸Ñ Ð·Ð°Ñвки или очереди" -#: html/Admin/Users/Modify.html:229 html/User/Prefs.html:167 +#: html/Admin/Users/Modify.html.orig:229 html/Admin/Users/Modify.html:229 html/User/Prefs.html:167 msgid "Signature" msgstr "ПодпиÑÑŒ" @@ -4888,7 +4856,7 @@ msgstr "Одно значение" #: html/Search/Elements/EditFormat:75 msgid "Size" -msgstr "" +msgstr "Размер" #: html/Elements/Header:85 msgid "Skip Menu" @@ -4896,7 +4864,7 @@ msgstr "ПропуÑтить меню" #: html/Search/Elements/EditFormat:78 msgid "Small" -msgstr "" +msgstr "Маленький" #: html/Admin/Elements/AddCustomFieldValue:49 html/Admin/Elements/EditCustomFieldValues:54 msgid "Sort" @@ -4954,11 +4922,11 @@ msgstr "Ðачато" msgid "Starts date '%1' could not be parsed" msgstr "Ðе могу разобрать дату 'Ðачато': '%1'" -#: html/Admin/Users/Modify.html:162 html/User/Prefs.html:145 +#: html/Admin/Users/Modify.html.orig:162 html/Admin/Users/Modify.html:162 html/User/Prefs.html:145 msgid "State" msgstr "СоÑтоÑние" -#: 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: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:1377 msgid "Status" msgstr "СтатуÑ" @@ -4978,37 +4946,33 @@ msgstr "ИзменÑтьСтатуÑ" msgid "Steal" msgstr "Переназначать Ñебе" -#: lib/RT/Queue_Overlay.pm:118 +#: lib/RT/Queue_Overlay.pm:117 msgid "Steal tickets" msgstr "Переназначить заÑвки Ñебе" -#: lib/RT/Queue_Overlay.pm:118 +#: lib/RT/Queue_Overlay.pm:117 msgid "StealTicket" msgstr "ПереназначатьЗаÑвкуСебе" -#: lib/RT/Transaction_Overlay.pm:667 +#: lib/RT/Transaction_Overlay.pm.orig:665 lib/RT/Transaction_Overlay.pm:665 #. ($Old->Name) -msgid "Stolen from %1" -msgstr "ОтветÑтвенный переназначен Ñ %1" - -#: NOT FOUND IN SOURCE msgid "Stolen from %1 " -msgstr "ОтветÑтвенный переназначен Ñ %1 " +msgstr "ОтветÑтвенный переназначен Ñ %1" #: html/Search/Elements/EditFormat:81 msgid "Style" -msgstr "" +msgstr "Стиль" -#: 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: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:1459 msgid "Subject" msgstr "Тема" -#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/StyleGuide.pod:815 lib/RT/Transaction_Overlay.pm:689 +#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/StyleGuide.pod:815 lib/RT/Transaction_Overlay.pm.orig:687 lib/RT/Transaction_Overlay.pm:687 #. ($self->Data) msgid "Subject changed to %1" msgstr "Тема изменена на %1" -#: html/Elements/Submit:97 +#: html/Elements/Submit.rej:17 html/Elements/Submit.rej:9 html/Elements/Submit:97 msgid "Submit" msgstr "Отправить" @@ -5020,7 +4984,7 @@ msgstr "Отправить запроÑ" msgid "Submit Workflow" msgstr "Отправить поÑледовательноÑÑ‚ÑŒ дейÑтвий" -#: lib/RT/Group_Overlay.pm:782 +#: lib/RT/Group_Overlay.pm:780 msgid "Succeeded" msgstr "УÑпешно" @@ -5032,11 +4996,11 @@ msgstr "Ð¡Ð²Ð¾Ð´Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" msgid "Summary matches" msgstr "Ð’Ñего Ñовпадений" -#: lib/RT/Date.pm:419 +#: lib/RT/Date.pm:417 msgid "Sun." msgstr "Ð’Ñк." -#: lib/RT/System.pm:76 +#: lib/RT/System.pm:75 msgid "SuperUser" msgstr "ÐдминиÑтратор" @@ -5048,7 +5012,7 @@ msgstr "СиÑтемные" msgid "System Configuration" msgstr "СиÑÑ‚ÐµÐ¼Ð½Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ" -#: 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:597 lib/RT/Interface/Web.pm:868 lib/RT/Interface/Web.pm:897 msgid "System Error" msgstr "СиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" @@ -5060,20 +5024,20 @@ msgstr "СиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°. Право не выдано" msgid "System Error. right not granted" msgstr "СиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°. Право не выдано" -#: lib/RT/Transaction_Overlay.pm:215 lib/RT/Transaction_Overlay.pm:221 +#: lib/RT/Transaction_Overlay.pm.orig:213 lib/RT/Transaction_Overlay.pm.orig:219 lib/RT/Transaction_Overlay.pm:213 lib/RT/Transaction_Overlay.pm:219 #. ($msg) msgid "System Error: %1" -msgstr "" +msgstr "СиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: %1" #: html/Admin/Tools/index.html:47 msgid "System Tools" msgstr "СиÑтемные утилиты" -#: lib/RT/ACE_Overlay.pm:634 +#: lib/RT/ACE_Overlay.pm:646 msgid "System error. Right not delegated." msgstr "СиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°. Право не делегировано." -#: 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:170 lib/RT/ACE_Overlay.pm:253 lib/RT/ACE_Overlay.pm:336 lib/RT/ACE_Overlay.pm:933 msgid "System error. Right not granted." msgstr "CиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°. Право не выдано." @@ -5089,25 +5053,25 @@ msgstr "СиÑтемные группы" msgid "SystemRolegroup for internal use" msgstr "СиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð¿Ñевдо-группа Ð´Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐ³Ð¾ иÑпользованиÑ" -#: lib/RT/CurrentUser.pm:358 +#: lib/RT/CurrentUser.pm:356 msgid "TEST_STRING" msgstr "TEST_STRING" #: html/Elements/MyRequests:50 html/Search/Elements/EditFormat:72 html/Ticket/Elements/Tabs:166 msgid "Take" -msgstr "ВзÑÑ‚ÑŒ Ñебе" +msgstr "Ðазначить ÑÐµÐ±Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ñтвенным" -#: lib/RT/Queue_Overlay.pm:116 +#: lib/RT/Queue_Overlay.pm:115 msgid "Take tickets" -msgstr "ВзÑÑ‚ÑŒ заÑвки ÑебÑ" +msgstr "Ðазначить ÑÐµÐ±Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ñтвенным за заÑвки" -#: lib/RT/Queue_Overlay.pm:116 +#: lib/RT/Queue_Overlay.pm:115 msgid "TakeTicket" -msgstr "БратьЗаÑвкуСебе" +msgstr "ÐазначатьСебÑОтветÑтвеннымЗаЗаÑвку" -#: lib/RT/Transaction_Overlay.pm:652 +#: lib/RT/Transaction_Overlay.pm.orig:650 lib/RT/Transaction_Overlay.pm:650 msgid "Taken" -msgstr "ВзÑта" +msgstr "Ðазначен ответÑтвенным" #: NOT FOUND IN SOURCE msgid "Task" @@ -5126,7 +5090,7 @@ msgstr "Шаблон #%1" msgid "Template deleted" msgstr "Шаблон удален" -#: lib/RT/Scrip_Overlay.pm:181 +#: lib/RT/Scrip_Overlay.pm:180 msgid "Template not found" msgstr "Шаблон не найден" @@ -5134,7 +5098,7 @@ msgstr "Шаблон не найден" msgid "Template not found\\n" msgstr "Шаблон не найден\\n" -#: lib/RT/Template_Overlay.pm:376 +#: lib/RT/Template_Overlay.pm:373 msgid "Template parsed" msgstr "Шаблон обработан" @@ -5150,11 +5114,11 @@ msgstr "Шаблоны Ð´Ð»Ñ %1\\n" msgid "Text" msgstr "ТекÑÑ‚" -#: lib/RT/CustomField_Overlay.pm:877 lib/RT/Record.pm:931 +#: lib/RT/CustomField_Overlay.pm:863 lib/RT/Record.pm:929 msgid "That is already the current value" msgstr "Ðто уже текущее значение" -#: lib/RT/CustomField_Overlay.pm:407 +#: lib/RT/CustomField_Overlay.pm:401 msgid "That is not a value for this custom field" msgstr "Ðто поле не может иметь такого значениÑ" @@ -5162,11 +5126,11 @@ msgstr "Ðто поле не может иметь такого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ msgid "That is the same value" msgstr "Значение не изменилоÑÑŒ" -#: lib/RT/ACE_Overlay.pm:306 lib/RT/ACE_Overlay.pm:615 +#: lib/RT/ACE_Overlay.pm:318 lib/RT/ACE_Overlay.pm:627 msgid "That principal already has that right" msgstr "Ðтот пользователь уже имеет Ñто право." -#: lib/RT/Queue_Overlay.pm:750 +#: lib/RT/Queue_Overlay.pm:737 #. ($args{'Type'}) msgid "That principal is already a %1 for this queue" msgstr "Ðтот пользователь уже %1 Ð´Ð»Ñ Ñтой очереди" @@ -5176,7 +5140,7 @@ msgstr "Ðтот пользователь уже %1 Ð´Ð»Ñ Ñтой очеред msgid "That principal is already a %1 for this ticket" msgstr "Ðтот пользователь уже %1 Ð´Ð»Ñ Ñтой заÑвки " -#: lib/RT/Queue_Overlay.pm:849 +#: lib/RT/Queue_Overlay.pm:836 #. ($args{'Type'}) msgid "That principal is not a %1 for this queue" msgstr "Ðтот пользователь не %1 Ð´Ð»Ñ Ñтой очереди" @@ -5189,7 +5153,7 @@ msgstr "Ðтот пользователь не %1 Ð´Ð»Ñ Ñтой заÑвки" msgid "That queue does not exist" msgstr "Ðта очередь не ÑущеÑтвует" -#: lib/RT/Ticket_Overlay.pm:3189 +#: lib/RT/Ticket_Overlay.pm:3156 msgid "That ticket has unresolved dependencies" msgstr "Ðта заÑвка имеет неразрешенные завиÑимоÑти" @@ -5197,27 +5161,27 @@ msgstr "Ðта заÑвка имеет неразрешенные завиÑим msgid "That user already has that right" msgstr "Пользователь уже имеет Ñто право" -#: lib/RT/Ticket_Overlay.pm:2993 +#: lib/RT/Ticket_Overlay.pm:2960 msgid "That user already owns that ticket" msgstr "Пользователь уже ответÑтвенен за Ñту заÑвку" -#: lib/RT/Ticket_Overlay.pm:2965 +#: lib/RT/Ticket_Overlay.pm:2932 msgid "That user does not exist" msgstr "Пользователь не ÑущеÑтвует" -#: lib/RT/User_Overlay.pm:390 +#: lib/RT/User_Overlay.pm:389 msgid "That user is already privileged" msgstr "Ðтот пользователь уже привилегированный" -#: lib/RT/User_Overlay.pm:411 +#: lib/RT/User_Overlay.pm:410 msgid "That user is already unprivileged" msgstr "Ðтот пользователь уже непривилегированный" -#: lib/RT/User_Overlay.pm:403 +#: lib/RT/User_Overlay.pm:402 msgid "That user is now privileged" msgstr "Ðтот пользователь теперь привилегированный" -#: lib/RT/User_Overlay.pm:424 +#: lib/RT/User_Overlay.pm:423 msgid "That user is now unprivileged" msgstr "Ðтот пользователь теперь непривилегированный" @@ -5225,11 +5189,11 @@ msgstr "Ðтот пользователь теперь непривилегирРmsgid "That user is now unprivilegedileged" msgstr "Пользователь теперь непривилегированный" -#: lib/RT/Ticket_Overlay.pm:2986 +#: lib/RT/Ticket_Overlay.pm:2953 msgid "That user may not own tickets in that queue" msgstr "Ðтот пользователь не может быть ответÑтвенным за заÑвки в Ñтой очереди" -#: lib/RT/Link_Overlay.pm:234 +#: lib/RT/Link_Overlay.pm:233 msgid "That's not a numerical id" msgstr "Ðто не чиÑловой идентификатор" @@ -5237,11 +5201,11 @@ msgstr "Ðто не чиÑловой идентификатор" msgid "The Basics" msgstr "ОÑновное" -#: lib/RT/ACE_Overlay.pm:113 +#: lib/RT/ACE_Overlay.pm:112 msgid "The CC of a ticket" msgstr "ÐšÐ¾Ð¿Ð¸Ñ Ð·Ð°Ñвки" -#: lib/RT/ACE_Overlay.pm:114 +#: lib/RT/ACE_Overlay.pm:113 msgid "The administrative CC of a ticket" msgstr "ÐдминиÑÑ‚Ñ€Ð°Ñ‚Ð¸Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð·Ð°Ñвки" @@ -5257,15 +5221,15 @@ msgstr "ÐижеÑÐ»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° найдет вÑе актив msgid "The following commands were not proccessed:\\n\\n" msgstr "Ðти команды не были выполнены:\\n\\n" -#: lib/RT/Record.pm:934 +#: lib/RT/Record.pm:932 msgid "The new value has been set." msgstr "Ðовое значение уÑтановлено" -#: lib/RT/ACE_Overlay.pm:111 +#: lib/RT/ACE_Overlay.pm:110 msgid "The owner of a ticket" msgstr "ОтветÑтвенный за заÑвку" -#: lib/RT/ACE_Overlay.pm:112 +#: lib/RT/ACE_Overlay.pm:111 msgid "The requestor of a ticket" msgstr "Ðвтор заÑвки" @@ -5273,7 +5237,7 @@ msgstr "Ðвтор заÑвки" msgid "These comments aren't generally visible to the user" msgstr "Ðти комментарии не показываютÑÑ Ð¾Ð±Ñ‹ÐºÐ½Ð¾Ð²ÐµÐ½Ð½Ð¾Ð¼Ñƒ пользователю" -#: lib/RT/CustomField_Overlay.pm:912 +#: lib/RT/CustomField_Overlay.pm:898 msgid "This custom field does not apply to that object" msgstr "Ðто дополнительное поле не отноÑитÑÑ Ðº Ñтому объекту" @@ -5293,7 +5257,7 @@ msgstr "Ðта заÑвка %1 %2 (%3)\\n" msgid "This tool allows the user to run arbitrary perl modules from within RT." msgstr "Ðтот инÑтрумент позволÑет пользователю запуÑкать некоторые модули Perl из RT." -#: lib/RT/Transaction_Overlay.pm:288 +#: lib/RT/Transaction_Overlay.pm.orig:286 lib/RT/Transaction_Overlay.pm:286 msgid "This transaction appears to have no content" msgstr "Похоже, что Ñта Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð½Ðµ имеет Ñодержимого" @@ -5306,7 +5270,7 @@ msgstr "%1 заÑвок макÑимального приоритета Ñтог msgid "This user's 25 highest priority tickets" msgstr "25 важнейших заÑвок пользователÑ..." -#: lib/RT/Date.pm:416 +#: lib/RT/Date.pm:414 msgid "Thu." msgstr "Чтв." @@ -5332,7 +5296,7 @@ msgstr "ЗаÑвка #%1 Изменение вÑех данных: %2" msgid "Ticket #%1: %2" msgstr "ЗаÑвка #%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 +#: lib/RT/Action/CreateTickets.pm:1255 lib/RT/Action/CreateTickets.pm:1264 lib/RT/Action/CreateTickets.pm:593 lib/RT/Action/CreateTickets.pm:713 lib/RT/Action/CreateTickets.pm:726 #. ($T::Tickets{$template_id}->Id) #. ($T::Tickets{$template_id}->id) #. ($ticket->Id) @@ -5370,7 +5334,7 @@ msgstr "ЗаÑвка #" msgid "Ticket Resolved" msgstr "ЗаÑвка решена" -#: 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:1071 msgid "Ticket Transactions" msgstr "Транзакции заÑвки" @@ -5378,11 +5342,11 @@ msgstr "Транзакции заÑвки" msgid "Ticket attachment" msgstr "Ð’Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ñвки" -#: lib/RT/Tickets_Overlay.pm:1648 +#: lib/RT/Tickets_Overlay.pm:1647 msgid "Ticket content" msgstr "Содержимое заÑвки" -#: lib/RT/Tickets_Overlay.pm:1697 +#: lib/RT/Tickets_Overlay.pm:1696 msgid "Ticket content type" msgstr "Тип данных Ñодержимого заÑвки" @@ -5426,12 +5390,12 @@ msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð·Ð°Ñвки изменен" msgid "Ticket watchers" msgstr "Ðаблюдатели за заÑвкой" -#: lib/RT/Search/FromSQL.pm:83 +#: lib/RT/Search/FromSQL.pm:82 #. (ref $self) msgid "TicketSQL search module" msgstr "" -#: 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:68 lib/RT/CustomField_Overlay.pm:1070 msgid "Tickets" msgstr "ПоиÑк заÑвки" @@ -5463,7 +5427,7 @@ msgstr "ОÑталоÑÑŒ времени" msgid "Time Worked" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð² работе" -#: lib/RT/Tickets_Overlay.pm:1619 +#: lib/RT/Tickets_Overlay.pm:1618 msgid "Time left" msgstr "ОÑталоÑÑŒ времени" @@ -5471,7 +5435,7 @@ msgstr "ОÑталоÑÑŒ времени" msgid "Time to display" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°" -#: lib/RT/Tickets_Overlay.pm:1594 +#: lib/RT/Tickets_Overlay.pm:1593 msgid "Time worked" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð² работе" @@ -5485,7 +5449,7 @@ msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð² работе" #: html/Search/Elements/EditFormat:74 msgid "Title" -msgstr "" +msgstr "Заголовок" #: NOT FOUND IN SOURCE msgid "To generate a diff of this commit:" @@ -5512,12 +5476,12 @@ msgstr "Утилиты" msgid "Transaction" msgstr "ТранзакциÑ" -#: lib/RT/Transaction_Overlay.pm:794 +#: lib/RT/Transaction_Overlay.pm.orig:792 lib/RT/Transaction_Overlay.pm:792 #. ($self->Data) msgid "Transaction %1 purged" msgstr "Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ %1 удалена" -#: lib/RT/Transaction_Overlay.pm:174 +#: lib/RT/Transaction_Overlay.pm.orig:172 lib/RT/Transaction_Overlay.pm:172 msgid "Transaction Created" msgstr "Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ñоздана" @@ -5529,11 +5493,11 @@ msgstr "Дополнительные Ð¿Ð¾Ð»Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸" msgid "Transaction->Create couldn't, as you didn't specify a ticket id" msgstr "ТранзакциÑ->Создать невозможно, так как вы не указали идентификатор заÑвки" -#: lib/RT/Transaction_Overlay.pm:125 +#: lib/RT/Transaction_Overlay.pm.orig:123 lib/RT/Transaction_Overlay.pm:123 msgid "Transaction->Create couldn't, as you didn't specify an object type and id" msgstr "ТранзакциÑ->Создать невозможно, так как вы не указали тип объекта и идентификатор" -#: lib/RT/Transaction_Overlay.pm:838 +#: lib/RT/Transaction_Overlay.pm.orig:836 lib/RT/Transaction_Overlay.pm:836 msgid "Transactions are immutable" msgstr "ÐеизменÑемые транзакции" @@ -5541,19 +5505,19 @@ msgstr "ÐеизменÑемые транзакции" msgid "Trying to delete a right: %1" msgstr "ПытаемÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ право: %1" -#: lib/RT/Date.pm:414 +#: lib/RT/Date.pm:412 msgid "Tue." msgstr "Ð’Ñ‚Ñ€." -#: 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:1144 lib/RT/Tickets_Overlay.pm:1431 msgid "Type" msgstr "Тип" -#: lib/RT/ScripCondition_Overlay.pm:129 +#: lib/RT/ScripCondition_Overlay.pm:128 msgid "Unimplemented" msgstr "Ðе реализовано" -#: html/Admin/Users/Modify.html:89 +#: html/Admin/Users/Modify.html.orig:89 html/Admin/Users/Modify.html:89 msgid "Unix login" msgstr "Логин UNIX" @@ -5561,15 +5525,15 @@ msgstr "Логин UNIX" msgid "UnixUsername" msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ UNIX" -#: lib/RT/Attachment_Overlay.pm:290 lib/RT/Record.pm:847 +#: lib/RT/Attachment_Overlay.pm:289 lib/RT/Record.pm:846 #. ($self->ContentEncoding) #. ($ContentEncoding) msgid "Unknown ContentEncoding %1" msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ° %1" -#: html/Search/Build.html:632 +#: html/Search/Build.html:692 msgid "Unknown field: $key" -msgstr "" +msgstr "ÐеизвеÑтное поле: $key" #: html/Elements/SelectResultsPerPage:58 msgid "Unlimited" @@ -5591,9 +5555,9 @@ msgstr "Ðевыбранные дополнительные полÑ" msgid "Unselected objects" msgstr "Ðевыбранные объекты" -#: lib/RT/Transaction_Overlay.pm:648 +#: lib/RT/Transaction_Overlay.pm.orig:646 lib/RT/Transaction_Overlay.pm:646 msgid "Untaken" -msgstr "Ðе взÑта" +msgstr "Ðет ответÑтвенного" #: NOT FOUND IN SOURCE msgid "Untitled search" @@ -5611,7 +5575,7 @@ msgstr "Обновить вÑе" msgid "Update ID" msgstr "Обновить идентификатор" -#: html/Ticket/Update.html:133 +#: html/Ticket/Update.html:130 msgid "Update Ticket" msgstr "Обновить заÑвку" @@ -5635,7 +5599,7 @@ msgstr "Обновить неÑколько заÑвок" msgid "Update name" msgstr "Обновить имÑ" -#: lib/RT/Action/CreateTickets.pm:737 lib/RT/Interface/Web.pm:524 +#: lib/RT/Action/CreateTickets.pm:734 lib/RT/Interface/Web.pm:492 msgid "Update not recorded." msgstr "Обновление не запиÑано." @@ -5660,12 +5624,12 @@ msgstr "Обновление заÑвки # %1" msgid "Update ticket #%1" msgstr "Обновление заÑвки #%1" -#: html/Ticket/Update.html:156 +#: html/Ticket/Update.html:153 #. ($TicketObj->id, $TicketObj->Subject) msgid "Update ticket #%1 (%2)" msgstr "Обновление заÑвки #%1 (%2)" -#: lib/RT/Action/CreateTickets.pm:735 lib/RT/Interface/Web.pm:523 +#: lib/RT/Action/CreateTickets.pm:732 lib/RT/Interface/Web.pm:490 msgid "Update type was neither correspondence nor comment." msgstr "Обновление не было ни Ñообщением, ни комментарием." @@ -5707,7 +5671,7 @@ msgstr "Загрузить ваши изменениÑ." #: html/Admin/index.html:90 msgid "Use other RT administrative tools" -msgstr "" +msgstr "Другие админиÑтративные утилиты RT" #: NOT FOUND IN SOURCE msgid "User %1 %2: %3\\n" @@ -5750,17 +5714,17 @@ msgstr "Логин" msgid "User Rights" msgstr "Права пользователÑ" -#: lib/RT/Interface/Web.pm:1283 +#: lib/RT/Interface/Web.pm:1251 #. ($cf->Name, $class, $Object->id) msgid "User asked for an unknown update type for custom field %1 for %2 object #%3" msgstr "Пользователь запроÑил обновление неизвеÑтного типа Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ð¿Ð¾Ð»Ñ %1 Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %2 #%3" -#: html/Admin/Users/Modify.html:293 +#: html/Admin/Users/Modify.html.orig:292 html/Admin/Users/Modify.html.rej:14 html/Admin/Users/Modify.html.rej:4 html/Admin/Users/Modify.html:292 #. ($msg) msgid "User could not be created: %1" msgstr "Ðевозможно Ñоздать пользователÑ: %1" -#: lib/RT/User_Overlay.pm:331 +#: lib/RT/User_Overlay.pm:330 msgid "User created" msgstr "Пользователь Ñоздан" @@ -5768,7 +5732,7 @@ msgstr "Пользователь Ñоздан" msgid "User defined groups" msgstr "Группы, определенные пользователем" -#: lib/RT/User_Overlay.pm:593 lib/RT/User_Overlay.pm:613 +#: lib/RT/User_Overlay.pm:592 lib/RT/User_Overlay.pm:612 msgid "User loaded" msgstr "Пользовать загружен" @@ -5784,11 +5748,11 @@ msgstr "ПользовательÑкие наÑтройки" msgid "User-defined groups" msgstr "Группы, заданные пользователем" -#: html/Admin/Users/Modify.html:69 html/Elements/Login:73 html/Ticket/Elements/AddWatchers:56 +#: html/Admin/Users/Modify.html.orig:69 html/Admin/Users/Modify.html:69 html/Elements/Login:73 html/Ticket/Elements/AddWatchers:56 msgid "Username" msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ" -#: 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:1072 msgid "Users" msgstr "Пользователи" @@ -5808,11 +5772,11 @@ msgstr "Значение запроÑа" msgid "Values" msgstr "ЗначениÑ" -#: lib/RT/Queue_Overlay.pm:108 +#: lib/RT/Queue_Overlay.pm:107 msgid "Watch" msgstr "Ðаблюдать" -#: lib/RT/Queue_Overlay.pm:109 +#: lib/RT/Queue_Overlay.pm:108 msgid "WatchAsAdminCc" msgstr "ÐаблюдатьÐдминиÑтративнойКопией" @@ -5828,7 +5792,7 @@ msgstr "Ðаблюдатели" msgid "WebEncoding" msgstr "WebEncoding" -#: lib/RT/Date.pm:415 +#: lib/RT/Date.pm:413 msgid "Wed." msgstr "Срд." @@ -5892,7 +5856,7 @@ msgstr "ÐšÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑвÑзана пользователем" msgid "Which refer to" msgstr "ÐšÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑÑылаетÑÑ Ð½Ð°" -#: html/Admin/Users/Modify.html:188 html/User/Prefs.html:89 +#: html/Admin/Users/Modify.html.orig:188 html/Admin/Users/Modify.html:188 html/User/Prefs.html:89 msgid "Work" msgstr "Рабочий" @@ -5902,7 +5866,7 @@ msgstr "Работать автономно" #: NOT FOUND IN SOURCE msgid "WorkPhone" -msgstr "Рабочий" +msgstr "Рабочий телефон" #: html/Ticket/Elements/ShowBasics:63 html/Ticket/Update.html:64 msgid "Worked" @@ -5912,7 +5876,7 @@ msgstr "Ð’ работе" msgid "Yes" msgstr "Да" -#: lib/RT/Ticket_Overlay.pm:3096 +#: lib/RT/Ticket_Overlay.pm:3063 msgid "You already own this ticket" msgstr "Ð’Ñ‹ уже ответÑтвенный за Ñту заÑвку" @@ -5924,7 +5888,7 @@ msgstr "Ð’Ñ‹ незарегиÑтрированный пользователь" msgid "You can access it with the Download button on the right." msgstr "Ð’Ñ‹ можете получить Ñто, нажав Ñправа кнопку Загрузить" -#: lib/RT/Ticket_Overlay.pm:2978 +#: lib/RT/Ticket_Overlay.pm:2945 msgid "You can only reassign tickets that you own or that are unowned" msgstr "Ð’Ñ‹ можете назначать ответÑтвенного только Ð´Ð»Ñ Ñвоих или ничьих заÑвок." @@ -5941,7 +5905,7 @@ msgstr "Ðайдено %1 заÑвок в очереди %2" msgid "You have been logged out of RT." msgstr "Ð’Ñ‹ вышли из RT." -#: html/SelfService/Display.html:109 +#: html/SelfService/Display.html:102 msgid "You have no permission to create tickets in that queue." msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ права Ñоздавать заÑвки в Ñтой очереди." @@ -5981,7 +5945,7 @@ msgstr "Ваш Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¾Ñ‚ÐºÐ»Ð¾Ð½ÐµÐ½." msgid "Your username or password is incorrect" msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ пароль неверные" -#: html/Admin/Users/Modify.html:168 html/User/Prefs.html:149 +#: html/Admin/Users/Modify.html.orig:168 html/Admin/Users/Modify.html:168 html/User/Prefs.html:149 msgid "Zip" msgstr "ИндекÑ" @@ -5989,13 +5953,13 @@ msgstr "ИндекÑ" msgid "[no subject]" msgstr "[нет темы]" -#: lib/RT/System.pm:88 +#: lib/RT/System.pm:87 msgid "allow creation of saved searches" -msgstr "" +msgstr "разрешить Ñоздание Ñохраненных запроÑов" -#: lib/RT/System.pm:87 +#: lib/RT/System.pm:86 msgid "allow loading of saved searches" -msgstr "" +msgstr "разрешить загрузку Ñохраненных запроÑов" #: NOT FOUND IN SOURCE msgid "and is not" @@ -6012,7 +5976,7 @@ msgstr "Ñ Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ %1" #: html/Search/Elements/PickBasics:127 msgid "belongs to" -msgstr "" +msgstr "отноÑитÑÑ Ðº" #: html/SelfService/Closed.html:49 msgid "closed" @@ -6038,7 +6002,7 @@ msgstr "корреÑÐ¿Ð¾Ð½Ð´ÐµÐ½Ñ†Ð¸Ñ (возможно) не отправлеРmsgid "correspondence sent" msgstr "корреÑÐ¿Ð¾Ð½Ð´ÐµÐ½Ñ†Ð¸Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð°" -#: html/Admin/Queues/Modify.html:98 lib/RT/Date.pm:342 +#: html/Admin/Queues/Modify.html:98 lib/RT/Date.pm:341 msgid "days" msgstr "дней" @@ -6046,13 +6010,13 @@ msgstr "дней" msgid "delete" msgstr "удалить" -#: lib/RT/Queue_Overlay.pm:88 +#: lib/RT/Queue_Overlay.pm:87 msgid "deleted" msgstr "удалена" #: html/Search/Elements/PickBasics:128 msgid "does not belong to" -msgstr "" +msgstr "не отноÑитÑÑ Ðº" #: html/Search/Elements/PickBasics:61 msgid "does not match" @@ -6070,29 +6034,29 @@ msgstr "Ð°Ð´Ñ€ÐµÑ email" msgid "equal to" msgstr "равнÑетÑÑ" -#: html/Search/Build.html:387 +#: html/Search/Build.html:371 msgid "error: can't move down" -msgstr "" +msgstr "ошибка: невозможно перемеÑтить вниз" -#: html/Search/Build.html:409 +#: html/Search/Build.html:393 msgid "error: can't move left" -msgstr "" +msgstr "ошибка: невозможно перемеÑтить влево" -#: html/Search/Build.html:368 +#: html/Search/Build.html:352 msgid "error: can't move up" -msgstr "" +msgstr "ошибка: невозможно перемеÑтить вверх" -#: html/Search/Build.html:451 +#: html/Search/Build.html:435 msgid "error: nothing to delete" -msgstr "" +msgstr "ошибка: нет данных Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ" -#: html/Search/Build.html:373 html/Search/Build.html:392 html/Search/Build.html:414 html/Search/Build.html:443 +#: html/Search/Build.html:357 html/Search/Build.html:376 html/Search/Build.html:398 html/Search/Build.html:427 msgid "error: nothing to move" -msgstr "" +msgstr "ошибка: нет данных Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ" -#: html/Search/Build.html:469 +#: html/Search/Build.html:453 msgid "error: nothing to toggle" -msgstr "" +msgstr "ошибка: нет данных Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ" #: NOT FOUND IN SOURCE msgid "false" @@ -6111,7 +6075,7 @@ msgstr "больше чем" msgid "group '%1'" msgstr "группа '%1'" -#: lib/RT/Date.pm:338 +#: lib/RT/Date.pm:337 msgid "hours" msgstr "чаÑов" @@ -6135,7 +6099,7 @@ msgstr "меньше чем" msgid "matches" msgstr "Ñовпадает" -#: lib/RT/Date.pm:334 +#: lib/RT/Date.pm:333 msgid "min" msgstr "мин" @@ -6147,11 +6111,11 @@ msgstr "минут" msgid "modifications\\n\\n" msgstr "изменениÑ\\n\\n" -#: lib/RT/Date.pm:350 +#: lib/RT/Date.pm:349 msgid "months" msgstr "меÑÑцев" -#: lib/RT/Queue_Overlay.pm:83 +#: lib/RT/Queue_Overlay.pm:82 msgid "new" msgstr "новаÑ" @@ -6175,7 +6139,7 @@ msgstr "не равно" msgid "notlike" msgstr "неравно" -#: html/SelfService/Elements/MyRequests:83 lib/RT/Queue_Overlay.pm:84 +#: html/SelfService/Elements/MyRequests:83 lib/RT/Queue_Overlay.pm:83 msgid "open" msgstr "открыта" @@ -6189,27 +6153,27 @@ msgstr "Ð»Ð¸Ñ‡Ð½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° '%1' Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ '%2'" msgid "queue %1 %2" msgstr "очередь %1 %2" -#: lib/RT/Queue_Overlay.pm:87 +#: lib/RT/Queue_Overlay.pm:86 msgid "rejected" msgstr "отклонена" -#: lib/RT/Queue_Overlay.pm:86 +#: lib/RT/Queue_Overlay.pm:85 msgid "resolved" msgstr "решена" -#: lib/RT/Date.pm:330 +#: lib/RT/Date.pm:329 msgid "sec" msgstr "Ñек" -#: lib/RT/System.pm:86 +#: lib/RT/System.pm:85 msgid "show Configuration tab" -msgstr "" +msgstr "показывать закладку КонфигурациÑ" #: html/Search/Results.html:82 msgid "spreadsheet" -msgstr "ÑÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° (.xls)" +msgstr "ÑÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°" -#: lib/RT/Queue_Overlay.pm:85 +#: lib/RT/Queue_Overlay.pm:84 msgid "stalled" msgstr "приоÑтановлена" @@ -6223,7 +6187,7 @@ msgstr "ÑиÑтема %1" msgid "system group '%1'" msgstr "ÑиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° '%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 "вызывающий компонент не указал причину" @@ -6258,7 +6222,7 @@ msgstr "группа без опиÑаниÑ: %1" msgid "user %1" msgstr "пользователь %1" -#: lib/RT/Date.pm:346 +#: lib/RT/Date.pm:345 msgid "weeks" msgstr "недель" @@ -6266,7 +6230,7 @@ msgstr "недель" msgid "with template %1" msgstr "Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð¼ %1" -#: lib/RT/Date.pm:354 +#: lib/RT/Date.pm:353 msgid "years" msgstr "лет" diff --git a/rt/lib/RT/I18N/zh_cn.po b/rt/lib/RT/I18N/zh_cn.po index 1f8799825..ed6aff80d 100644 --- a/rt/lib/RT/I18N/zh_cn.po +++ b/rt/lib/RT/I18N/zh_cn.po @@ -1,8 +1,10 @@ -# Chinese localization catalog for Request Tracker (RT) +# msgid "" msgstr "" +"Project-Id-Version: RT 3.4.x\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n" "Last-Translator: Autrijus Tang <autrijus@autrijus.org>\n" -"Language-Team: Chinese <members@ourinet.com>\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-Transfer-Encoding: 8bit\n" diff --git a/rt/lib/RT/I18N/zh_tw.po b/rt/lib/RT/I18N/zh_tw.po index 7fbda2187..d9c64e8ce 100644 --- a/rt/lib/RT/I18N/zh_tw.po +++ b/rt/lib/RT/I18N/zh_tw.po @@ -1,8 +1,10 @@ -# Chinese localization catalog for Request Tracker (RT) +# msgid "" msgstr "" +"Project-Id-Version: RT 3.4.x\n" +"PO-Revision-Date: 2005-10-03 13:54-0400\n" "Last-Translator: Autrijus Tang <autrijus@autrijus.org>\n" -"Language-Team: Chinese <members@ourinet.com>\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-Transfer-Encoding: 8bit\n" diff --git a/rt/lib/RT/Interface/Email.pm b/rt/lib/RT/Interface/Email.pm index 5db7c8aa7..efc4c268e 100755 --- a/rt/lib/RT/Interface/Email.pm +++ b/rt/lib/RT/Interface/Email.pm @@ -56,7 +56,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.5 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; # must be all one line, for MakeMaker + $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); @@ -68,6 +68,7 @@ BEGIN { &CheckForLoops &CheckForSuspiciousSender &CheckForAutoGenerated + &CheckForBounce &MailError &ParseCcAddressesFromHead &ParseSenderAddressFromHead @@ -171,6 +172,16 @@ sub CheckForAutoGenerated { # }}} +# {{{ sub CheckForBounce +sub CheckForBounce { + my $head = shift; + + my $ReturnPath = $head->get("Return-path") || "" ; + return ($ReturnPath =~ /<>/); +} + +# }}} + # {{{ IsRTAddress =head2 IsRTAddress ADDRESS @@ -187,7 +198,7 @@ sub IsRTAddress { # Example: the following rule would tell RT not to Cc # "tickets@noc.example.com" if ( defined($RT::RTAddressRegexp) && - $address =~ /$RT::RTAddressRegexp/ ) { + $address =~ /$RT::RTAddressRegexp/i ) { return(1); } else { return (undef); @@ -250,7 +261,7 @@ sub MailError { } if ($RT::MailCommand eq 'sendmailpipe') { - open (MAIL, "|$RT::SendmailPath $RT::SendmailArguments") || return(0); + open (MAIL, "|$RT::SendmailPath $RT::SendmailBounceArguments $RT::SendmailArguments") || return(0); print MAIL $entity->as_string; close(MAIL); } @@ -378,7 +389,8 @@ sub ParseSenderAddressFromHead { =head2 ParseErrorsToAddressFromHead Takes a MIME::Header object. Return a single value : user@host -of the From (evaluated in order of Errors-To:,Reply-To:, From:, Sender) +of the From (evaluated in order of Return-path:,Errors-To:,Reply-To:, +From:, Sender) =cut @@ -386,7 +398,7 @@ sub ParseErrorsToAddressFromHead { my $head = shift; #Figure out who's sending this message. - foreach my $header ('Errors-To' , 'Reply-To', 'From', 'Sender' ) { + 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) { @@ -436,7 +448,7 @@ sub ParseTicketId { my $Subject = shift; my $id; - my $test_name = $RT::EmailSubjectTagRegex || qr/\Q$RT::rtname\E/; + my $test_name = $RT::EmailSubjectTagRegex || qr/\Q$RT::rtname\E/i; if ( $Subject =~ s/\[$test_name\s+\#(\d+)\s*\]//i ) { my $id = $1; @@ -655,6 +667,8 @@ EOT # }}} # {{{ Lets check for mail loops of various sorts. + my $IsBounce = CheckForBounce($head); + my $IsAutoGenerated = CheckForAutoGenerated($head); my $IsSuspiciousSender = CheckForSuspiciousSender($head); @@ -665,7 +679,7 @@ EOT #If the message is autogenerated, we need to know, so we can not # send mail to the sender - if ( $IsSuspiciousSender || $IsAutoGenerated || $IsALoop ) { + if ( $IsBounce || $IsSuspiciousSender || $IsAutoGenerated || $IsALoop ) { $SquelchReplies = 1; $ErrorsTo = $RT::OwnerEmail; } diff --git a/rt/lib/RT/Link_Overlay.pm b/rt/lib/RT/Link_Overlay.pm index 28143cfeb..c870ee4c4 100644 --- a/rt/lib/RT/Link_Overlay.pm +++ b/rt/lib/RT/Link_Overlay.pm @@ -315,7 +315,7 @@ Returns true if the base of this link is a local ticket sub BaseIsLocal { my $self = shift; - $RT::Logger->crit("Link::BaseIsLocal is deprecated in favor of Link->BaseURI->IsLocal"); + $RT::Logger->crit("Link::BaseIsLocal is deprecated in favor of Link->BaseURI->IsLocal at (". join(":",caller).")"); return $self->BaseURI->IsLocal; } @@ -331,7 +331,7 @@ Returns true if the target of this link is a local ticket sub TargetIsLocal { my $self = shift; - $RT::Logger->crit("Link::BaseIsLocal is deprecated in favor of Link->BaseURI->IsLocal"); + $RT::Logger->crit("Link::BaseIsLocal is deprecated in favor of Link->BaseURI->IsLocal at (". join(":",caller).")"); return $self->TargetURI->IsLocal; } @@ -348,7 +348,7 @@ Returns an HTTP url to access the base of this link sub BaseAsHREF { my $self = shift; - $RT::Logger->crit("Link::BaseAsHREF deprecated in favor of ->BaseURI->AsHREF"); + $RT::Logger->crit("Link::BaseAsHREF deprecated in favor of ->BaseURI->AsHREF at (". join(":",caller).")"); return $self->BaseURI->HREF; } # }}} @@ -363,7 +363,7 @@ return an HTTP url to access the target of this link sub TargetAsHREF { my $self = shift; - $RT::Logger->crit("Link::TargetAsHREF deprecated in favor of ->TargetURI->AsHREF"); + $RT::Logger->crit("Link::TargetAsHREF deprecated in favor of ->TargetURI->AsHREF at (". join(":",caller).")"); return $self->TargetURI->HREF; } # }}} diff --git a/rt/lib/RT/ObjectCustomFieldValues_Overlay.pm b/rt/lib/RT/ObjectCustomFieldValues_Overlay.pm index 315c16f30..3e6e62a30 100644 --- a/rt/lib/RT/ObjectCustomFieldValues_Overlay.pm +++ b/rt/lib/RT/ObjectCustomFieldValues_Overlay.pm @@ -80,7 +80,7 @@ sub LimitToTicket { my $ticket = shift; - $RT::Logger->warning(ref($self) . " -> LimitToTicket deprecated in favor of LimitToObject"); + $RT::Logger->warning(ref($self) . " -> LimitToTicket deprecated in favor of LimitToObject at (". join(":",caller).")"); $self->Limit( FIELD => 'ObjectType', VALUE => 'RT::Ticket', diff --git a/rt/lib/RT/Principal_Overlay.pm b/rt/lib/RT/Principal_Overlay.pm index 4783c5ca6..1986470ee 100644 --- a/rt/lib/RT/Principal_Overlay.pm +++ b/rt/lib/RT/Principal_Overlay.pm @@ -280,8 +280,6 @@ This takes the params: Object => an RT style object (->id will get its id) - - Returns 1 if a matching ACE was found. Returns undef if no ACE was found. @@ -295,38 +293,41 @@ sub HasRight { Right => undef, Object => undef, EquivObjects => undef, - @_ + @_, ); + unless ( $args{'Right'} ) { + $RT::Logger->crit("HasRight called without a right"); + return (undef); + } + + $args{EquivObjects} = [ @{ $args{EquivObjects} } ] if $args{EquivObjects}; + if ( $self->Disabled ) { - $RT::Logger->err( "Disabled User: " + $RT::Logger->error( "Disabled User: " . $self->id . " failed access check for " . $args{'Right'} ); return (undef); } - if ( !defined $args{'Right'} ) { - $RT::Logger->crit("HasRight called without a right"); - return (undef); - } - if ( defined( $args{'Object'} ) && UNIVERSAL::can( $args{'Object'}, 'id' ) - && $args{'Object'}->id ) - { + && $args{'Object'}->id ) { + push( @{ $args{'EquivObjects'} }, $args{Object} ); } else { - $RT::Logger->crit("$self HasRight called with no valid object"); + $RT::Logger->crit("HasRight called with no valid object"); return (undef); } # If this object is a ticket, we care about ticket roles and queue roles - if ( ( ref( $args{'Object'} ) eq 'RT::Ticket' ) && $args{'Object'}->Id ) { + if ( UNIVERSAL::isa( $args{'Object'} => 'RT::Ticket' ) ) { -# this is a little bit hacky, but basically, now that we've done the ticket roles magic, we load the queue object -# and ask all the rest of our questions about the queue. + # this is a little bit hacky, but basically, now that we've done + # the ticket roles magic, we load the queue object + # and ask all the rest of our questions about the queue. push( @{ $args{'EquivObjects'} }, $args{'Object'}->QueueObj ); } @@ -354,161 +355,119 @@ sub HasRight { # }}} - # {{{ if we've cached a positive result for this query, return 1 - - my $cached_answer = $_ACL_CACHE->fetch($hashkey); - # Returns undef on cache miss + my $cached_answer = $_ACL_CACHE->fetch($hashkey); if ( defined $cached_answer ) { if ( $cached_answer == 1 ) { return (1); } elsif ( $cached_answer == -1 ) { - return (0); + return (undef); } } - my ( $or_look_at_object_rights, $or_check_roles ); - my $right = $args{'Right'}; + my $hitcount = $self->_HasRight( %args ); + + $_ACL_CACHE->set( $hashkey => $hitcount? 1:-1 ); + return ($hitcount); +} + +=head2 _HasRight - # {{{ Construct Right Match +Low level HasRight implementation, use HasRight method instead. + +=cut + +sub _HasRight +{ + my $self = shift; + my %args = ( + Right => undef, + Object => undef, + EquivObjects => [], + @_ + ); + + my $right = $args{'Right'}; + my @objects = @{ $args{'EquivObjects'} }; # If an object is defined, we want to look at rights for that object - my @look_at_objects; - push( @look_at_objects, "ACL.ObjectType = 'RT::System'" ) + push( @objects, 'RT::System' ) unless $self->can('_IsOverrideGlobalACL') - and $self->_IsOverrideGlobalACL( $args{Object} ); - - foreach my $obj ( @{ $args{'EquivObjects'} } ) { - next unless ( UNIVERSAL::can( $obj, 'id' ) ); - my $type = ref($obj); - my $id = $obj->id; - - unless ($id) { - use Carp; - Carp::cluck( - "Trying to check $type rights for an unspecified $type"); - $RT::Logger->crit( - "Trying to check $type rights for an unspecified $type"); + && $self->_IsOverrideGlobalACL( $args{Object} ); + + my ($check_roles, $check_objects) = ('',''); + if( @objects ) { + my @role_clauses; + my @object_clauses; + foreach my $obj ( @objects ) { + my $type = ref($obj)? ref($obj): $obj; + my $id; + $id = $obj->id if ref($obj) && UNIVERSAL::can($obj, 'id') && $obj->id; + + my $role_clause = "Groups.Domain = '$type-Role'"; + # XXX: Groups.Instance is VARCHAR in DB, we should quote value + # if we want mysql 4.0 use indexes here. we MUST convert that + # field to integer and drop this quotes. + $role_clause .= " AND Groups.Instance = '$id'" if $id; + push @role_clauses, "($role_clause)"; + + my $object_clause = "ACL.ObjectType = '$type'"; + $object_clause .= " AND ACL.ObjectId = $id" if $id; + push @object_clauses, "($object_clause)"; } - push @look_at_objects, - "(ACL.ObjectType = '$type' AND ACL.ObjectId = '$id')"; - } - # }}} - - # {{{ Build that honkin-big SQL query + $check_roles .= join ' OR ', @role_clauses; + $check_objects = join ' OR ', @object_clauses; + } my $query_base = "SELECT ACL.id from ACL, Groups, Principals, CachedGroupMembers WHERE " . # Only find superuser or rights with the name $right - "(ACL.RightName = 'SuperUser' OR ACL.RightName = '$right') " . + "(ACL.RightName = 'SuperUser' OR ACL.RightName = '$right') " # Never find disabled groups. - "AND Principals.Disabled = 0 " - . "AND CachedGroupMembers.Disabled = 0 " - . "AND Principals.id = Groups.id " - . # We always grant rights to Groups - -# See if the principal is a member of the group recursively or _is the rightholder_ -# never find recursively disabled group members -# also, check to see if the right is being granted _directly_ to this principal, -# as is the case when we want to look up group rights -"AND Principals.id = CachedGroupMembers.GroupId AND CachedGroupMembers.MemberId = '" - . $self->Id . "' " - . + . "AND Principals.Disabled = 0 " + . "AND CachedGroupMembers.Disabled = 0 " - # Make sure the rights apply to the entire system or to the object in question - "AND ( " . join( ' OR ', @look_at_objects ) . ") "; - -# The groups query does the query based on group membership and individual user rights - - my $groups_query = $query_base . - -# limit the result set to groups of types ACLEquivalence (user) UserDefined, SystemInternal and Personal -"AND ( ( ACL.PrincipalId = Principals.id AND ACL.PrincipalType = 'Group' AND " - . "(Groups.Domain = 'SystemInternal' OR Groups.Domain = 'UserDefined' OR Groups.Domain = 'ACLEquivalence' OR Groups.Domain = 'Personal'))" - . - - " ) "; - $self->_Handle->ApplyLimits( \$groups_query, 1 ); #only return one result - - my @roles; - foreach my $object ( @{ $args{'EquivObjects'} } ) { - push( @roles, $self->_RolesForObject( ref($object), $object->id ) ); - } - - # The roles query does the query based on roles - my $roles_query; - if (@roles) { - $roles_query = - $query_base . "AND " . " ( (" - . join( ' OR ', @roles ) . " ) " - . " AND Groups.Type = ACL.PrincipalType AND Groups.Id = Principals.id AND Principals.PrincipalType = 'Group') "; - $self->_Handle->ApplyLimits( \$roles_query, 1 ); #only return one result - - } - - # }}} - - # {{{ Actually check the ACL by performing an SQL query - # $RT::Logger->debug("Now Trying $groups_query"); + # We always grant rights to Groups + . "AND Principals.id = Groups.id " + . "AND Principals.PrincipalType = 'Group' " + + # See if the principal is a member of the group recursively or _is the rightholder_ + # never find recursively disabled group members + # also, check to see if the right is being granted _directly_ to this principal, + # as is the case when we want to look up group rights + . "AND Principals.id = CachedGroupMembers.GroupId " + . "AND CachedGroupMembers.MemberId = ". $self->Id ." " + + # Make sure the rights apply to the entire system or to the object in question + . "AND ($check_objects) "; + + # The groups query does the query based on group membership and individual user rights + my $groups_query = $query_base + # limit the result set to groups of types ACLEquivalence (user), + # UserDefined, SystemInternal and Personal. All this we do + # via (ACL.PrincipalType = 'Group') condition + . "AND ACL.PrincipalId = Principals.id " + . "AND ACL.PrincipalType = 'Group' "; + + $self->_Handle->ApplyLimits( \$groups_query, 1 ); #only return one result my $hitcount = $self->_Handle->FetchResult($groups_query); + return 1 if $hitcount; # get out of here if success - # }}} - - # {{{ if there's a match, the right is granted - if ($hitcount) { - $_ACL_CACHE->set( $hashkey => 1 ); - return (1); - } + # The roles query does the query based on roles + my $roles_query = $query_base + . "AND ACL.PrincipalType = Groups.Type " + . "AND ($check_roles) "; + $self->_Handle->ApplyLimits( \$roles_query, 1 ); #only return one result - # Now check the roles query $hitcount = $self->_Handle->FetchResult($roles_query); + return 1 if $hitcount; # get out of here if success - if ($hitcount) { - $_ACL_CACHE->set( $hashkey => 1 ); - return (1); - } - - # We failed to find an acl hit - $_ACL_CACHE->set( $hashkey => -1 ); - return (undef); -} - -# }}} - -# {{{ _RolesForObject - - - -=head2 _RolesForObject( $object_type, $object_id) - -Returns an SQL clause finding role groups for Objects - -=cut - - -sub _RolesForObject { - my $self = shift; - my $type = shift; - my $id = shift; - - unless ($id) { - $id = '0'; - } - - # This should never be true. - unless ($id =~ /^\d+$/) { - $RT::Logger->crit("RT::Prinicipal::_RolesForObject called with type $type and a non-integer id: '$id'"); - $id = "'$id'"; - } - - my $clause = "(Groups.Domain = '".$type."-Role' AND Groups.Instance = $id) "; - - return($clause); + return 0; } # }}} @@ -578,6 +537,8 @@ sub _ReferenceId { # just return the value for non-objects return $scalar unless UNIVERSAL::can($scalar, 'id'); + return ref($scalar) unless $scalar->id; + # an object -- return the class and id return(ref($scalar)."-". $scalar->id); } diff --git a/rt/lib/RT/Queue_Overlay.pm b/rt/lib/RT/Queue_Overlay.pm index 2f180fc56..299072eea 100644 --- a/rt/lib/RT/Queue_Overlay.pm +++ b/rt/lib/RT/Queue_Overlay.pm @@ -521,7 +521,7 @@ Returns an RT::CustomFields object containing all global custom fields, as well sub CustomFields { my $self = shift; - warn "Queue->CustomFields is deprecated, use Queue->TicketCustomFields instead"; + warn "Queue->CustomFields is deprecated, use Queue->TicketCustomFields instead at (". join(":",caller).")"; return $self->TicketCustomFields(@_); } diff --git a/rt/lib/RT/Record.pm b/rt/lib/RT/Record.pm index d3a826808..341d88bfc 100755 --- a/rt/lib/RT/Record.pm +++ b/rt/lib/RT/Record.pm @@ -670,7 +670,14 @@ sub __Value { return('') if ( !defined($value) || $value eq ''); - return Encode::decode_utf8($value) || $value if $args{'decode_utf8'}; + if( $args{'decode_utf8'} ) { + # XXX: is_utf8 check should be here unless Encode bug would be fixed + # see http://rt.cpan.org/NoAuth/Bug.html?id=14559 + return Encode::decode_utf8($value) unless Encode::is_utf8($value); + } else { + # check is_utf8 here just to be shure + return Encode::encode_utf8($value) if Encode::is_utf8($value); + } return $value; } @@ -1290,7 +1297,7 @@ sub _AddLink { Target => $args{'Target'} ); if ( $old_link->Id ) { $RT::Logger->debug("$self Somebody tried to duplicate a link"); - return ( $old_link->id, $self->loc("Link already exists"), 0 ); + return ( $old_link->id, $self->loc("Link already exists") ); } # }}} @@ -1538,8 +1545,7 @@ sub CustomFieldLookupType { #TODO Deprecated API. Destroy in 3.6 sub _LookupTypes { my $self = shift; - $RT::Logger->warning("_LookupTypes call is deprecated. Replace with CustomFieldLookupType"); - $RT::Logger->warning("Besides, it was a private API. Were you doing using it?"); + $RT::Logger->warning("_LookupTypes call is deprecated at (". join(":",caller)."). Replace with CustomFieldLookupType"); return($self->CustomFieldLookupType); diff --git a/rt/lib/RT/Ticket_Overlay.pm b/rt/lib/RT/Ticket_Overlay.pm index d04ececd8..1ab91e28e 100644 --- a/rt/lib/RT/Ticket_Overlay.pm +++ b/rt/lib/RT/Ticket_Overlay.pm @@ -750,7 +750,7 @@ sub Create { $RT::Handle->Commit(); $ErrStr = $self->loc( "Ticket [_1] created in queue '[_2]'", $self->Id, $QueueObj->Name ); $ErrStr = join( "\n", $ErrStr, @non_fatal_errors ); - return ( $self->Id, $0, $ErrStr ); + return ( $self->Id, 0, $ErrStr ); } } @@ -2501,8 +2501,11 @@ sub DeleteLink { $direction='Base'; } - if ( $val ) { - my $remote_uri = RT::URI->new( $RT::SystemUser ); + if ( $args{'Silent'} ) { + return ( $val, $Msg ); + } + else { + my $remote_uri = RT::URI->new( $self->CurrentUser ); $remote_uri->FromURI( $remote_link ); my ( $Trans, $Msg, $TransObj ) = $self->_NewTransaction( @@ -2512,6 +2515,17 @@ sub DeleteLink { TimeTaken => 0 ); + if ( $remote_uri->IsLocal ) { + + my $OtherObj = $remote_uri->Object; + my ( $val, $Msg ) = $OtherObj->_NewTransaction(Type => 'DeleteLink', + Field => $direction eq 'Target' ? $LINKDIRMAP{$args{'Type'}}->{Base} + : $LINKDIRMAP{$args{'Type'}}->{Target}, + OldValue => $self->URI, + ActivateScrips => ! $RT::LinkTransactionsRun1Scrip, + TimeTaken => 0 ); + } + return ( $Trans, $Msg ); } } @@ -2524,52 +2538,6 @@ sub DeleteLink { Takes a paramhash of Type and one of Base or Target. Adds that link to this ticket. -=begin testing - -my $q1 = RT::Queue->new($RT::SystemUser); -my ($id,$msg) = $q1->Create(Name => 'LinkTest1'); -ok ($id,$msg); -my $q2 = RT::Queue->new($RT::SystemUser); -($id,$msg) = $q2->Create(Name => 'LinkTest2'); -ok ($id,$msg); - -my $u1 = RT::User->new($RT::SystemUser); -($id,$msg) =$u1->Create(Name => 'LinkTestUser'); - -ok ($id,$msg); - -($id,$msg) = $u1->PrincipalObj->GrantRight ( Object => $q1, Right => 'CreateTicket'); -ok ($id,$msg); -($id,$msg) = $u1->PrincipalObj->GrantRight ( Object => $q1, Right => 'ModifyTicket'); -ok ($id,$msg); - -my $tid; - -my $creator = RT::CurrentUser->new($u1->id); - -my $ticket = RT::Ticket->new( $creator); -ok($ticket->isa('RT::Ticket')); -($id,$tid, $msg) = $ticket->Create(Subject => 'Link test 1', Queue => $q1->id); -ok ($id,$msg); - - -my $ticket2 = RT::Ticket->new($RT::SystemUser); -($id, $tid, $msg) = $ticket2->Create(Subject => 'Link test 2', Queue => $q2->id); -ok ($id, $msg); - -($id,$msg) =$ticket->AddLink(Type => 'RefersTo', Target => $ticket2->id); -ok(!$id,$msg); -($id,$msg) = $u1->PrincipalObj->GrantRight ( Object => $q2, Right => 'CreateTicket'); -ok ($id,$msg); -($id,$msg) = $u1->PrincipalObj->GrantRight ( Object => $q2, Right => 'ModifyTicket'); -ok ($id,$msg); -($id,$msg) =$ticket->AddLink(Type => 'RefersTo', Target => $ticket2->id); -ok($id,$msg); -($id,$msg) =$ticket->AddLink(Type => 'RefersTo', Target => -1); -ok(!$id,$msg); - -=end testing - =cut sub AddLink { @@ -2657,7 +2625,7 @@ sub _AddLink { return ( $val, $Msg ); } else { - my $remote_uri = RT::URI->new( $RT::SystemUser ); + my $remote_uri = RT::URI->new( $self->CurrentUser ); $remote_uri->FromURI( $remote_link ); #Write the transaction @@ -2666,6 +2634,17 @@ sub _AddLink { Field => $LINKDIRMAP{$args{'Type'}}->{$direction}, NewValue => $remote_uri->URI || $remote_link, TimeTaken => 0 ); + + if ( $remote_uri->IsLocal ) { + + my $OtherObj = $remote_uri->Object; + my ( $val, $Msg ) = $OtherObj->_NewTransaction(Type => 'AddLink', + Field => $direction eq 'Target' ? $LINKDIRMAP{$args{'Type'}}->{Base} + : $LINKDIRMAP{$args{'Type'}}->{Target}, + NewValue => $self->URI, + ActivateScrips => ! $RT::LinkTransactionsRun1Scrip, + TimeTaken => 0 ); + } return ( $val, $Msg ); } @@ -3239,7 +3218,7 @@ Takes no arguments. Marks this ticket for garbage collection sub Kill { my $self = shift; - $RT::Logger->crit("'Kill' is deprecated. use 'Delete' instead."); + $RT::Logger->crit("'Kill' is deprecated. use 'Delete' instead at (". join(":",caller).")."); return $self->Delete; } @@ -3482,7 +3461,7 @@ sub _Set { #If we can't actually set the field to the value, don't record # a transaction. instead, get out of here. - if ( $ret == 0 ) { return ( 0, $msg ); } + return ( 0, $msg ) unless $ret; } if ( $args{'RecordTransaction'} == 1 ) { @@ -3698,13 +3677,17 @@ See L<RT::Record> sub CustomFieldValues { my $self = shift; my $field = shift; - unless ( $field =~ /^\d+$/ ) { + if ( $field and $field !~ /^\d+$/ ) { my $cf = RT::CustomField->new( $self->CurrentUser ); $cf->LoadByNameAndQueue( Name => $field, Queue => $self->QueueObj->Id ); unless ( $cf->id ) { $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); + } } return $self->SUPER::CustomFieldValues($field); } diff --git a/rt/lib/RT/Tickets_Overlay.pm b/rt/lib/RT/Tickets_Overlay.pm index 0e6585c07..1c31f3ffd 100644 --- a/rt/lib/RT/Tickets_Overlay.pm +++ b/rt/lib/RT/Tickets_Overlay.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 }}} # Major Changes: @@ -103,7 +103,7 @@ my %FIELDS = ( Type => [ 'ENUM', ], Creator => [ 'ENUM' => 'User', ], LastUpdatedBy => [ 'ENUM' => 'User', ], - Owner => [ 'ENUM' => 'User', ], + Owner => [ 'WATCHERFIELD' => 'Owner', ], EffectiveId => [ 'INT', ], id => [ 'INT', ], InitialPriority => [ 'INT', ], @@ -118,26 +118,26 @@ my %FIELDS = ( DependentOn => [ 'LINK' => From => 'DependsOn', ], DependedOnBy => [ 'LINK' => From => 'DependsOn', ], ReferredToBy => [ 'LINK' => From => 'RefersTo', ], - Told => ['DATE' => 'Told',], - Starts => ['DATE' => 'Starts',], - Started => ['DATE' => 'Started',], - Due => ['DATE' => 'Due',], - Resolved => ['DATE' => 'Resolved',], - LastUpdated => ['DATE' => 'LastUpdated',], - Created => ['DATE' => 'Created',], - Subject => ['STRING',], - Content => ['TRANSFIELD',], - ContentType => ['TRANSFIELD',], - Filename => ['TRANSFIELD',], - TransactionDate => ['TRANSDATE',], - Requestor => ['WATCHERFIELD' => 'Requestor',], - Requestors => ['WATCHERFIELD' => 'Requestor',], - Cc => ['WATCHERFIELD' => 'Cc',], - AdminCc => ['WATCHERFIELD' => 'AdminCc',], - Watcher => ['WATCHERFIELD'], - LinkedTo => ['LINKFIELD',], - CustomFieldValue =>['CUSTOMFIELD',], - CF => ['CUSTOMFIELD',], + Told => [ 'DATE' => 'Told', ], + Starts => [ 'DATE' => 'Starts', ], + Started => [ 'DATE' => 'Started', ], + Due => [ 'DATE' => 'Due', ], + Resolved => [ 'DATE' => 'Resolved', ], + LastUpdated => [ 'DATE' => 'LastUpdated', ], + Created => [ 'DATE' => 'Created', ], + Subject => [ 'STRING', ], + Content => [ 'TRANSFIELD', ], + ContentType => [ 'TRANSFIELD', ], + Filename => [ 'TRANSFIELD', ], + TransactionDate => [ 'TRANSDATE', ], + Requestor => [ 'WATCHERFIELD' => 'Requestor', ], + Requestors => [ 'WATCHERFIELD' => 'Requestor', ], + Cc => [ 'WATCHERFIELD' => 'Cc', ], + AdminCc => [ 'WATCHERFIELD' => 'AdminCc', ], + Watcher => ['WATCHERFIELD'], + LinkedTo => [ 'LINKFIELD', ], + CustomFieldValue => [ 'CUSTOMFIELD', ], + CF => [ 'CUSTOMFIELD', ], Updated => [ 'TRANSDATE', ], RequestorGroup => [ 'MEMBERSHIPFIELD' => 'Requestor', ], CCGroup => [ 'MEMBERSHIPFIELD' => 'Cc', ], @@ -159,7 +159,7 @@ my %dispatch = ( LINKFIELD => \&_LinkFieldLimit, CUSTOMFIELD => \&_CustomFieldLimit, ); -my %can_bundle = ( WATCHERFIELD => "yeps", ); +my %can_bundle = ( WATCHERFIELD => "yes", ); # Default EntryAggregator per type # if you specify OP, you must specify all valid OPs @@ -210,10 +210,10 @@ require RT::Tickets_Overlay_SQL; # {{{ sub SortFields @SORTFIELDS = qw(id Status - Queue Subject - Owner Created Due Starts Started - Told - Resolved LastUpdated Priority TimeWorked TimeLeft); + Queue Subject + Owner Created Due Starts Started + Told + Resolved LastUpdated Priority TimeWorked TimeLeft); =head2 SortFields @@ -268,7 +268,8 @@ sub _EnumLimit { $op = "!=" if $op eq "<>"; die "Invalid Operation: $op for $field" - unless $op eq "=" or $op eq "!="; + unless $op eq "=" + or $op eq "!="; my $meta = $FIELDS{$field}; if ( defined $meta->[1] ) { @@ -299,7 +300,7 @@ sub _IntLimit { my ( $sb, $field, $op, $value, @rest ) = @_; die "Invalid Operator $op for $field" - unless $op =~ /^(=|!=|>|<|>=|<=)$/; + unless $op =~ /^(=|!=|>|<|>=|<=)$/; $sb->_SQLLimit( FIELD => $field, @@ -326,7 +327,7 @@ sub _LinkLimit { die "Invalid Operator $op for $field" unless $op =~ /^(=|!=|IS)/io; die "Incorrect Metadata for $field" - unless ( defined $meta->[1] and defined $meta->[2] ); + unless ( defined $meta->[1] and defined $meta->[2] ); my $direction = $meta->[1]; @@ -388,17 +389,17 @@ sub _LinkLimit { $sb->_SQLLimit( ALIAS => $linkalias, ENTRYAGGREGATOR => 'AND', - FIELD => ( $is_local ? "Local$matchfield" : $matchfield ), - OPERATOR => 'IS', - VALUE => 'NULL', - QUOTEVALUE => '0', + FIELD => ( $is_local ? "Local$matchfield" : $matchfield ), + OPERATOR => 'IS', + VALUE => 'NULL', + QUOTEVALUE => '0', ); } else { $sb->{_sql_linkalias} = $sb->NewAlias('Links') - unless defined $sb->{_sql_linkalias}; + unless defined $sb->{_sql_linkalias}; $sb->_OpenParen(); @@ -413,9 +414,9 @@ sub _LinkLimit { $sb->_SQLLimit( ALIAS => $sb->{_sql_linkalias}, ENTRYAGGREGATOR => 'AND', - FIELD => ( $is_local ? "Local$matchfield" : $matchfield ), - OPERATOR => '=', - VALUE => $value, + FIELD => ( $is_local ? "Local$matchfield" : $matchfield ), + OPERATOR => '=', + VALUE => $value, ); #If we're searching on target, join the base to ticket.id @@ -443,16 +444,16 @@ sub _DateLimit { my ( $sb, $field, $op, $value, @rest ) = @_; die "Invalid Date Op: $op" - unless $op =~ /^(=|>|<|>=|<=)$/; + unless $op =~ /^(=|>|<|>=|<=)$/; my $meta = $FIELDS{$field}; die "Incorrect Meta Data for $field" - unless ( defined $meta->[1] ); + unless ( defined $meta->[1] ); use POSIX 'strftime'; - - my $date = RT::Date->new($sb->CurrentUser); - $date->Set(Format => 'unknown', Value => $value); + + my $date = RT::Date->new( $sb->CurrentUser ); + $date->Set( Format => 'unknown', Value => $value ); my $time = $date->Unix; if ( $op eq "=" ) { @@ -461,8 +462,8 @@ 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 $daystart = strftime( "%Y-%m-%d %H:%M", + gmtime( $time - ( $time % 86400 ) ) ); my $dayend = strftime( "%Y-%m-%d %H:%M", gmtime( $time + ( 86399 - $time % 86400 ) ) ); @@ -541,8 +542,6 @@ sub _TransDateLimit { $sb->{_sql_transalias} = $sb->NewAlias('Transactions') unless defined $sb->{_sql_transalias}; - $sb->{_sql_trattachalias} = $sb->NewAlias('Attachments') - unless defined $sb->{_sql_trattachalias}; my $date = RT::Date->new( $sb->CurrentUser ); $date->Set( Format => 'unknown', Value => $value ); @@ -569,11 +568,11 @@ sub _TransDateLimit { @rest ); $sb->_SQLLimit( - ALIAS => $sb->{_sql_transalias}, - FIELD => 'Created', - OPERATOR => "<=", - VALUE => $dayend, - CASESENSITIVE => 0, + ALIAS => $sb->{_sql_transalias}, + FIELD => 'Created', + OPERATOR => "<=", + VALUE => $dayend, + CASESENSITIVE => 0, @rest, ENTRYAGGREGATOR => 'AND', ); @@ -594,15 +593,6 @@ sub _TransDateLimit { ); } - # Join Transactions To Attachments - - $sb->_SQLJoin( - ALIAS1 => $sb->{_sql_trattachalias}, - FIELD1 => 'TransactionId', - ALIAS2 => $sb->{_sql_transalias}, - FIELD2 => 'id', - ); - # Join Transactions to Tickets $sb->_SQLJoin( ALIAS1 => 'main', @@ -666,9 +656,9 @@ sub _TransLimit { my ( $self, $field, $op, $value, @rest ) = @_; $self->{_sql_transalias} = $self->NewAlias('Transactions') - unless defined $self->{_sql_transalias}; + unless defined $self->{_sql_transalias}; $self->{_sql_trattachalias} = $self->NewAlias('Attachments') - unless defined $self->{_sql_trattachalias}; + unless defined $self->{_sql_trattachalias}; $self->_OpenParen; @@ -791,8 +781,6 @@ sub _WatcherLimit { my $value = shift; my %rest = (@_); - $self->_OpenParen; - # Find out what sort of watcher we're looking for my $fieldname; if ( ref $field ) { @@ -800,84 +788,151 @@ sub _WatcherLimit { } else { $fieldname = $field; + $field = [ [ $field, $op, $value, %rest ] ]; # gross hack } my $meta = $FIELDS{$fieldname}; my $type = ( defined $meta->[1] ? $meta->[1] : undef ); -# We only want _one_ clause for all of requestors, cc, admincc -# It's less flexible than what we used to do, but now it sort of actually works. (no huge cartesian products that hose the db) - my $groups = $self->{ 'watcherlimit_' . ('global') . "_groups" } ||= - $self->NewAlias('Groups'); - my $groupmembers = - $self->{ 'watcherlimit_' . ('global') . "_groupmembers" } ||= - $self->NewAlias('CachedGroupMembers'); - my $users = $self->{ 'watcherlimit_' . ('global') . "_users" } ||= - $self->NewAlias('Users'); - -# Use regular joins instead of SQL joins since we don't want the joins inside ticketsql or we get a huge cartesian product - $self->SUPER::Limit( - ALIAS => $groups, - FIELD => 'Domain', - VALUE => 'RT::Ticket-Role', - ENTRYAGGREGATOR => 'AND' - ); - $self->Join( - ALIAS1 => $groups, - FIELD1 => 'Instance', - ALIAS2 => 'main', - FIELD2 => 'id' - ); - $self->Join( - ALIAS1 => $groups, - FIELD1 => 'id', - ALIAS2 => $groupmembers, - FIELD2 => 'GroupId' - ); - $self->Join( - ALIAS1 => $groupmembers, - FIELD1 => 'MemberId', - ALIAS2 => $users, - FIELD2 => 'id' - ); + # Owner was ENUM field, so "Owner = 'xxx'" allowed user to + # search by id and Name at the same time, this is workaround + # to preserve backward compatibility + if ( $fieldname eq 'Owner' ) { + my $flag = 0; + for my $chunk ( splice @$field ) { + my ( $f, $op, $value, %rest ) = @$chunk; + if ( !$rest{SUBKEY} && $op =~ /^!?=$/ ) { + $self->_OpenParen unless $flag++; + my $o = RT::User->new( $self->CurrentUser ); + $o->Load($value); + $value = $o->Id; + $self->_SQLLimit( + FIELD => 'Owner', + OPERATOR => $op, + VALUE => $value, + %rest, + ); + } + else { + push @$field, $chunk; + } + } + $self->_CloseParen if $flag; + return unless @$field; + } + + my $users = $self->_WatcherJoin($type); # If we're looking for multiple watchers of a given type, # TicketSQL will be handing it to us as an array of clauses in # $field - if ( ref $field ) { # gross hack - $self->_OpenParen; - for my $chunk (@$field) { - ( $field, $op, $value, %rest ) = @$chunk; - $self->_SQLLimit( - ALIAS => $users, - FIELD => $rest{SUBKEY} || 'EmailAddress', - VALUE => $value, - OPERATOR => $op, - CASESENSITIVE => 0, - %rest - ); - } - $self->_CloseParen; - } - else { + $self->_OpenParen; + for my $chunk (@$field) { + ( $field, $op, $value, %rest ) = @$chunk; + $rest{SUBKEY} ||= 'EmailAddress'; + + my $re_negative_op = qr[!=|NOT LIKE]; + $self->_OpenParen if $op =~ /$re_negative_op/; + $self->_SQLLimit( ALIAS => $users, - FIELD => $rest{SUBKEY} || 'EmailAddress', + FIELD => $rest{SUBKEY}, VALUE => $value, OPERATOR => $op, CASESENSITIVE => 0, %rest ); + + if ( $op =~ /$re_negative_op/ ) { + $self->_SQLLimit( + ALIAS => $users, + FIELD => $rest{SUBKEY}, + OPERATOR => 'IS', + VALUE => 'NULL', + ENTRYAGGREGATOR => 'OR', + ); + $self->_CloseParen; + } } + $self->_CloseParen; +} - $self->_SQLLimit( +=head2 _WatcherJoin + +Helper function which provides joins to a watchers table both for limits +and for ordering. + +=cut + +sub _WatcherJoin { + my $self = shift; + my $type = shift; + + # we cache joins chain per watcher type + # if we limit by requestor then we shouldn't join requestors again + # for sort or limit on other requestors + if ( $self->{'_watcher_join_users_alias'}{ $type || 'any' } ) { + return $self->{'_watcher_join_users_alias'}{ $type || 'any' }; + } + +# we always have watcher groups for ticket +# this join should be NORMAL +# XXX: if we change this from Join to NewAlias+Limit +# then Pg will complain because SB build wrong query. +# Query looks like "FROM (Tickets LEFT JOIN CGM ON(Groups.id = CGM.GroupId)), Groups" +# Pg doesn't like that fact that it doesn't know about Groups table yet when +# join CGM table into Tickets. Problem is in Join method which doesn't use +# ALIAS1 argument when build braces. + my $groups = $self->Join( + ALIAS1 => 'main', + FIELD1 => 'id', + TABLE2 => 'Groups', + FIELD2 => 'Instance', + ENTRYAGGREGATOR => 'AND' + ); + $self->SUPER::Limit( + ALIAS => $groups, + FIELD => 'Domain', + VALUE => 'RT::Ticket-Role', + ENTRYAGGREGATOR => 'AND' + ); + $self->SUPER::Limit( ALIAS => $groups, FIELD => 'Type', VALUE => $type, ENTRYAGGREGATOR => 'AND' - ) - if ($type); + ) + if ($type); - $self->_CloseParen; + my $groupmembers = $self->Join( + TYPE => 'LEFT', + ALIAS1 => $groups, + FIELD1 => 'id', + TABLE2 => 'CachedGroupMembers', + FIELD2 => 'GroupId' + ); + + # XXX: work around, we must hide groups that + # are members of the role group we search in, + # otherwise them result in wrong NULLs in Users + # table and break ordering. Now, we know that + # 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( + LEFTJOIN => $groupmembers, + FIELD => 'GroupId', + OPERATOR => '!=', + VALUE => "$groupmembers.MemberId", + QUOTEVALUE => 0, + ); + my $users = $self->Join( + TYPE => 'LEFT', + ALIAS1 => $groupmembers, + FIELD1 => 'MemberId', + TABLE2 => 'Users', + FIELD2 => 'id' + ); + return $self->{'_watcher_join_users_alias'}{ $type || 'any' } = $users; } =head2 _WatcherMembershipLimit @@ -1110,11 +1165,10 @@ sub _CustomFieldLimit { } $field = $1 if $field =~ /^{(.+)}$/; # trim { } - -# If we're trying to find custom fields that don't match something, we -# want tickets where the custom field has no value at all. Note that -# we explicitly don't include the "IS NULL" case, since we would -# otherwise end up with a redundant clause. + # If we're trying to find custom fields that don't match something, we + # want tickets where the custom field has no value at all. Note that + # we explicitly don't include the "IS NULL" case, since we would + # otherwise end up with a redundant clause. my $null_columns_ok; if ( ( $op =~ /^NOT LIKE$/i ) or ( $op eq '!=' ) ) { @@ -1162,12 +1216,13 @@ sub _CustomFieldLimit { VALUE => $cfid, ENTRYAGGREGATOR => 'AND' ); - } else { + } + else { my $cfalias = $self->Join( - TYPE => 'left', - EXPRESSION => "'$field'", - TABLE2 => 'CustomFields', - FIELD2 => 'Name', + TYPE => 'left', + EXPRESSION => "'$field'", + TABLE2 => 'CustomFields', + FIELD2 => 'Name', ); $TicketCFs = $self->{_sql_object_cf_alias}{$cfkey} = $self->Join( @@ -1178,10 +1233,10 @@ sub _CustomFieldLimit { FIELD2 => 'CustomField', ); $self->SUPER::Limit( - LEFTJOIN => $TicketCFs, - FIELD => 'ObjectId', - VALUE => 'main.id', - QUOTEVALUE => 0, + LEFTJOIN => $TicketCFs, + FIELD => 'ObjectId', + VALUE => 'main.id', + QUOTEVALUE => 0, ENTRYAGGREGATOR => 'AND', ); } @@ -1193,11 +1248,12 @@ sub _CustomFieldLimit { ENTRYAGGREGATOR => 'AND' ); $self->SUPER::Limit( - LEFTJOIN => $TicketCFs, - FIELD => 'Disabled', - OPERATOR => '=', - VALUE => '0', - ENTRYAGGREGATOR => 'AND'); + LEFTJOIN => $TicketCFs, + FIELD => 'Disabled', + OPERATOR => '=', + VALUE => '0', + ENTRYAGGREGATOR => 'AND' + ); } $self->_OpenParen if ($null_columns_ok); @@ -1223,8 +1279,6 @@ sub _CustomFieldLimit { } $self->_CloseParen if ($null_columns_ok); - - } # End Helper Functions @@ -1251,13 +1305,15 @@ sub Limit { DESCRIPTION => undef, @_ ); - $args{'DESCRIPTION'} = $self->loc( "[_1] [_2] [_3]", - $args{'FIELD'}, $args{'OPERATOR'}, $args{'VALUE'} ) - if ( !defined $args{'DESCRIPTION'} ); + $args{'DESCRIPTION'} = $self->loc( + "[_1] [_2] [_3]", $args{'FIELD'}, + $args{'OPERATOR'}, $args{'VALUE'} + ) + if ( !defined $args{'DESCRIPTION'} ); my $index = $self->_NextIndex; - #make the TicketRestrictions hash the equivalent of whatever we just passed in; +#make the TicketRestrictions hash the equivalent of whatever we just passed in; %{ $self->{'TicketRestrictions'}{$index} } = %args; @@ -1265,11 +1321,15 @@ sub Limit { # If we're looking at the effective id, we don't want to append the other clause # which limits us to tickets where id = effective id - if ( $args{'FIELD'} eq 'EffectiveId' ) { + if ( $args{'FIELD'} eq 'EffectiveId' + && ( !$args{'ALIAS'} || $args{'ALIAS'} eq 'main' ) ) + { $self->{'looking_at_effective_id'} = 1; } - if ( $args{'FIELD'} eq 'Type' ) { + if ( $args{'FIELD'} eq 'Type' + && ( !$args{'ALIAS'} || $args{'ALIAS'} eq 'main' ) ) + { $self->{'looking_at_type'} = 1; } @@ -1286,7 +1346,7 @@ Returns a frozen string suitable for handing back to ThawLimits. sub _FreezeThawKeys { 'TicketRestrictions', 'restriction_index', 'looking_at_effective_id', - 'looking_at_type'; + 'looking_at_type'; } # {{{ sub FreezeLimits @@ -1323,8 +1383,8 @@ sub ThawLimits { require MIME::Base64; #We don't need to die if the thaw fails. - @{$self}{ $self->_FreezeThawKeys } = - eval { @{ Storable::thaw( MIME::Base64::base64_decode($in) ) }; }; + @{$self}{ $self->_FreezeThawKeys } + = eval { @{ Storable::thaw( MIME::Base64::base64_decode($in) ) }; }; $RT::Logger->error($@) if $@; @@ -1370,8 +1430,9 @@ sub LimitQueue { FIELD => 'Queue', VALUE => $args{VALUE}, OPERATOR => $args{'OPERATOR'}, - DESCRIPTION => - join( ' ', $self->loc('Queue'), $args{'OPERATOR'}, $args{VALUE}, ), + DESCRIPTION => join( + ' ', $self->loc('Queue'), $args{'OPERATOR'}, $args{VALUE}, + ), ); } @@ -1457,8 +1518,8 @@ sub LimitType { FIELD => 'Type', VALUE => $args{'VALUE'}, OPERATOR => $args{'OPERATOR'}, - DESCRIPTION => - join( ' ', $self->loc('Type'), $args{'OPERATOR'}, $args{'Limit'}, ), + DESCRIPTION => join( ' ', + $self->loc('Type'), $args{'OPERATOR'}, $args{'Limit'}, ), ); } @@ -1485,9 +1546,8 @@ sub LimitSubject { FIELD => 'Subject', VALUE => $args{'VALUE'}, OPERATOR => $args{'OPERATOR'}, - DESCRIPTION => join( - ' ', $self->loc('Subject'), $args{'OPERATOR'}, $args{'VALUE'}, - ), + DESCRIPTION => join( ' ', + $self->loc('Subject'), $args{'OPERATOR'}, $args{'VALUE'}, ), ); } @@ -1520,7 +1580,7 @@ sub LimitId { VALUE => $args{'VALUE'}, OPERATOR => $args{'OPERATOR'}, DESCRIPTION => - join( ' ', $self->loc('Id'), $args{'OPERATOR'}, $args{'VALUE'}, ), + join( ' ', $self->loc('Id'), $args{'OPERATOR'}, $args{'VALUE'}, ), ); } @@ -1595,8 +1655,8 @@ sub LimitFinalPriority { VALUE => $args{'VALUE'}, OPERATOR => $args{'OPERATOR'}, DESCRIPTION => join( ' ', - $self->loc('Final Priority'), - $args{'OPERATOR'}, $args{'VALUE'}, ), + $self->loc('Final Priority'), $args{'OPERATOR'}, + $args{'VALUE'}, ), ); } @@ -1674,8 +1734,8 @@ sub LimitContent { VALUE => $args{'VALUE'}, OPERATOR => $args{'OPERATOR'}, DESCRIPTION => join( ' ', - $self->loc('Ticket content'), - $args{'OPERATOR'}, $args{'VALUE'}, ), + $self->loc('Ticket content'), $args{'OPERATOR'}, + $args{'VALUE'}, ), ); } @@ -1759,8 +1819,8 @@ sub LimitOwner { FIELD => 'Owner', VALUE => $args{'VALUE'}, OPERATOR => $args{'OPERATOR'}, - DESCRIPTION => - join( ' ', $self->loc('Owner'), $args{'OPERATOR'}, $owner->Name(), ), + DESCRIPTION => join( ' ', + $self->loc('Owner'), $args{'OPERATOR'}, $owner->Name(), ), ); } @@ -1819,10 +1879,9 @@ sub LimitWatcher { sub LimitRequestor { my $self = shift; my %args = (@_); - my ( $package, $filename, $line ) = caller; - $RT::Logger->error( -"Tickets->LimitRequestor is deprecated. please rewrite call at $package - $filename: $line" - ); + $RT::Logger->error( "Tickets->LimitRequestor is deprecated at (" + . join( ":", caller ) + . ")" ); $self->LimitWatcher( TYPE => 'Requestor', @_ ); } @@ -1898,8 +1957,8 @@ sub LimitLinkedFrom { # translate RT2 From/To naming to RT3 TicketSQL naming my %fromToMap = qw(DependsOn DependentOn - MemberOf HasMember - RefersTo ReferredToBy); + MemberOf HasMember + RefersTo ReferredToBy); my $type = $args{'TYPE'}; $type = $fromToMap{$type} if exists( $fromToMap{$type} ); @@ -2032,10 +2091,9 @@ sub LimitDate { #Set the description if we didn't get handed it above unless ( $args{'DESCRIPTION'} ) { - $args{'DESCRIPTION'} = - $args{'FIELD'} . " " - . $args{'OPERATOR'} . " " - . $args{'VALUE'} . " GMT"; + $args{'DESCRIPTION'} = $args{'FIELD'} . " " + . $args{'OPERATOR'} . " " + . $args{'VALUE'} . " GMT"; } $self->Limit(%args); @@ -2109,10 +2167,9 @@ sub LimitTransactionDate { #Set the description if we didn't get handed it above unless ( $args{'DESCRIPTION'} ) { - $args{'DESCRIPTION'} = - $args{'FIELD'} . " " - . $args{'OPERATOR'} . " " - . $args{'VALUE'} . " GMT"; + $args{'DESCRIPTION'} = $args{'FIELD'} . " " + . $args{'OPERATOR'} . " " + . $args{'VALUE'} . " GMT"; } $self->Limit(%args); @@ -2168,12 +2225,12 @@ sub LimitCustomField { #If we are looking to compare with a null value. if ( $args{'OPERATOR'} =~ /^is$/i ) { - $args{'DESCRIPTION'} ||= - $self->loc( "Custom field [_1] has no value.", $CF->Name ); + $args{'DESCRIPTION'} + ||= $self->loc( "Custom field [_1] has no value.", $CF->Name ); } elsif ( $args{'OPERATOR'} =~ /^is not$/i ) { - $args{'DESCRIPTION'} ||= - $self->loc( "Custom field [_1] has a value.", $CF->Name ); + $args{'DESCRIPTION'} + ||= $self->loc( "Custom field [_1] has a value.", $CF->Name ); } # if we're not looking to compare with a null value @@ -2185,22 +2242,22 @@ sub LimitCustomField { my $q = ""; if ( $CF->Queue ) { my $qo = new RT::Queue( $self->CurrentUser ); - $qo->load( $CF->Queue ); + $qo->Load( $CF->Queue ); $q = $qo->Name; } my @rest; @rest = ( ENTRYAGGREGATOR => 'AND' ) - if ( $CF->Type eq 'SelectMultiple' ); + if ( $CF->Type eq 'SelectMultiple' ); $self->Limit( VALUE => $args{VALUE}, FIELD => "CF." - . ( + . ( $q ? $q . ".{" . $CF->Name . "}" : $CF->Name - ), + ), OPERATOR => $args{OPERATOR}, CUSTOMFIELD => 1, @rest, @@ -2289,7 +2346,8 @@ sub ItemsArrayRef { push( @{ $self->{'items_array'} }, $item ); } $self->GotoItem($placeholder); - $self->{'items_array'} = $self->ItemsOrderBy( $self->{'items_array'} ); + $self->{'items_array'} + = $self->ItemsOrderBy( $self->{'items_array'} ); } return ( $self->{'items_array'} ); } @@ -2305,18 +2363,21 @@ sub Next { my $Ticket = $self->SUPER::Next(); if ( ( defined($Ticket) ) and ( ref($Ticket) ) ) { - if ( $Ticket->__Value('Status') eq 'deleted' && - !$self->{'allow_deleted_search'} ) { - return($self->Next()); - } - # Since Ticket could be granted with more rights instead - # of being revoked, it's ok if queue rights allow - # ShowTicket. It seems need another query, but we have - # rights cache in Principal::HasRight. - elsif ($Ticket->QueueObj->CurrentUserHasRight('ShowTicket') || - $Ticket->CurrentUserHasRight('ShowTicket')) { - return($Ticket); - } + if ( $Ticket->__Value('Status') eq 'deleted' + && !$self->{'allow_deleted_search'} ) + { + return ( $self->Next() ); + } + + # Since Ticket could be granted with more rights instead + # of being revoked, it's ok if queue rights allow + # ShowTicket. It seems need another query, but we have + # rights cache in Principal::HasRight. + elsif ($Ticket->QueueObj->CurrentUserHasRight('ShowTicket') + || $Ticket->CurrentUserHasRight('ShowTicket') ) + { + return ($Ticket); + } if ( $Ticket->__Value('Status') eq 'deleted' ) { return ( $self->Next() ); @@ -2399,10 +2460,10 @@ sub RestrictionValues { my $self = shift; my $field = shift; map $self->{'TicketRestrictions'}{$_}{'VALUE'}, grep { - $self->{'TicketRestrictions'}{$_}{'FIELD'} eq $field - && $self->{'TicketRestrictions'}{$_}{'OPERATOR'} eq "=" - } - keys %{ $self->{'TicketRestrictions'} }; + $self->{'TicketRestrictions'}{$_}{'FIELD'} eq $field + && $self->{'TicketRestrictions'}{$_}{'OPERATOR'} eq "=" + } + keys %{ $self->{'TicketRestrictions'} }; } # }}} @@ -2461,9 +2522,9 @@ sub _RestrictionsToClauses { #use Data::Dumper; #print Dumper($restriction),"\n"; - # We need to reimplement the subclause aggregation that SearchBuilder does. - # Default Subclause is ALIAS.FIELD, and default ALIAS is 'main', - # Then SB AND's the different Subclauses together. + # We need to reimplement the subclause aggregation that SearchBuilder does. + # Default Subclause is ALIAS.FIELD, and default ALIAS is 'main', + # Then SB AND's the different Subclauses together. # So, we want to group things into Subclauses, convert them to # SQL, and then join them with the appropriate DefaultEA. @@ -2486,14 +2547,15 @@ sub _RestrictionsToClauses { } die "I don't know about $field yet" - unless ( exists $FIELDS{$realfield} or $restriction->{CUSTOMFIELD} ); + unless ( exists $FIELDS{$realfield} + or $restriction->{CUSTOMFIELD} ); my $type = $FIELDS{$realfield}->[0]; my $op = $restriction->{'OPERATOR'}; my $value = ( - grep { defined } - map { $restriction->{$_} } qw(VALUE TICKET BASE TARGET) + grep {defined} + map { $restriction->{$_} } qw(VALUE TICKET BASE TARGET) )[0]; # this performs the moral equivalent of defined or/dor/C<//>, @@ -2511,10 +2573,12 @@ sub _RestrictionsToClauses { # defined $restriction->{'TARGET'} ? # $restriction->{TARGET} ) - my $ea = $restriction->{ENTRYAGGREGATOR} || $DefaultEA{$type} || "AND"; + my $ea = $restriction->{ENTRYAGGREGATOR} + || $DefaultEA{$type} + || "AND"; if ( ref $ea ) { die "Invalid operator $op for $field ($type)" - unless exists $ea->{$op}; + unless exists $ea->{$op}; $ea = $ea->{$op}; } @@ -2574,7 +2638,7 @@ sub _ProcessRestrictions { } else { $sql = $self->ClausesToSQL($clauseRef); - $self->FromSQL($sql); + $self->FromSQL($sql) if $sql; } } @@ -2602,7 +2666,7 @@ sub _BuildItemMap { $self->{'item_map'}->{$id}->{'defined'} = 1; $self->{'item_map'}->{$id}->{prev} = $prev; $self->{'item_map'}->{$id}->{next} = $items->[0]->EffectiveId - if ( $items->[0] ); + if ( $items->[0] ); $prev = $id; } $self->{'item_map'}->{'last'} = $prev; @@ -2623,13 +2687,14 @@ $ItemMap->{$id}->{next} = the ticket id found after $id sub ItemMap { my $self = shift; $self->_BuildItemMap() - unless ( $self->{'items_array'} and $self->{'item_map'} ); + unless ( $self->{'items_array'} and $self->{'item_map'} ); return ( $self->{'item_map'} ); } =cut + } @@ -2650,7 +2715,6 @@ sub PrepForSerialization { $self->RedoSearch(); } - =head1 FLAGS RT::Tickets supports several flags which alter search behavior: @@ -2667,6 +2731,15 @@ BUG: There should be an API for this =cut +=begin testing + +# We assume that we've got some tickets hanging around from before. +ok( my $unlimittickets = RT::Tickets->new( $RT::SystemUser ) ); +ok( $unlimittickets->UnLimit ); +ok( $unlimittickets->Count > 0, "UnLimited tickets object should return tickets" ); + +=end testing + 1; diff --git a/rt/lib/RT/Tickets_Overlay_SQL.pm b/rt/lib/RT/Tickets_Overlay_SQL.pm index 677391702..525f252af 100644 --- a/rt/lib/RT/Tickets_Overlay_SQL.pm +++ b/rt/lib/RT/Tickets_Overlay_SQL.pm @@ -85,11 +85,13 @@ sub _InitSQL { sub _SQLLimit { my $self = shift; my %args = (@_); - if ($args{'FIELD'} eq 'EffectiveId') { + if ($args{'FIELD'} eq 'EffectiveId' && + (!$args{'ALIAS'} || $args{'ALIAS'} eq 'main' ) ) { $self->{'looking_at_effective_id'} = 1; } - if ($args{'FIELD'} eq 'Type') { + if ($args{'FIELD'} eq 'Type' && + (!$args{'ALIAS'} || $args{'ALIAS'} eq 'main' ) ) { $self->{'looking_at_type'} = 1; } @@ -288,7 +290,7 @@ sub _parser { # print "$ea Key=[$key] op=[$op] val=[$val]\n"; - my $subkey; + my $subkey = ''; if ($key =~ /^(.+?)\.(.+)$/) { $key = $1; $subkey = $2; @@ -377,11 +379,11 @@ sub ClausesToSQL { my $first = 1; # Build SQL from the data hash - for my $data ( @{ $clauses->{$f} } ) { - $sql .= $data->[0] unless $first; $first=0; - $sql .= " '". $data->[2] . "' "; - $sql .= $data->[3] . " "; - $sql .= "'". $data->[4] . "' "; + for my $data ( @{ $clauses->{$f} } ) { + $sql .= $data->[0] unless $first; $first=0; # ENTRYAGGREGATOR + $sql .= " '". $data->[2] . "' "; # FIELD + $sql .= $data->[3] . " "; # OPERATOR + $sql .= "'". $data->[4] . "' "; # VALUE } push @sql, " ( " . $sql . " ) "; diff --git a/rt/lib/RT/Transaction_Overlay.pm b/rt/lib/RT/Transaction_Overlay.pm index b179084c8..f6647c647 100644 --- a/rt/lib/RT/Transaction_Overlay.pm +++ b/rt/lib/RT/Transaction_Overlay.pm @@ -365,7 +365,7 @@ sub ContentObj { # which has some content. else { - my $all_parts = $Attachment->Children(); + my $all_parts = $self->Attachments; while ( my $part = $all_parts->Next ) { if (( $part->ContentType() =~ '^(text/plain$|message/)' ) && $part->Content() ) { return ($part); diff --git a/rt/lib/RT/Transactions_Overlay.pm b/rt/lib/RT/Transactions_Overlay.pm index fe5157556..3ea8f12a0 100644 --- a/rt/lib/RT/Transactions_Overlay.pm +++ b/rt/lib/RT/Transactions_Overlay.pm @@ -100,7 +100,7 @@ sub Limit { my %args = (@_); if ($args{'FIELD'} eq 'Ticket') { - Carp::cluck("Historical code calling RT::Transactions::Limit with a 'Ticket'. This deprecated API will be deleted in 3.6"); + Carp::cluck("Historical code calling RT::Transactions::Limit with a 'Ticket' at (". join(":",caller)."). This deprecated API will be deleted in 3.6"); $self->SUPER::Limit(FIELD => 'ObjectType', OPERATOR => '=', VALUE =>'RT::Ticket'); $args{'FIELD'} = 'ObjectId'; $self->SUPER::Limit(%args); diff --git a/rt/lib/RT/Users_Overlay.pm b/rt/lib/RT/Users_Overlay.pm index 4bb9f8f91..19f1beadf 100644 --- a/rt/lib/RT/Users_Overlay.pm +++ b/rt/lib/RT/Users_Overlay.pm @@ -88,10 +88,15 @@ sub _Init { $self->{'princalias'} = $self->NewAlias('Principals'); + # XXX: should be generalized $self->Join( ALIAS1 => 'main', FIELD1 => 'id', ALIAS2 => $self->{'princalias'}, FIELD2 => 'id' ); + $self->Limit( ALIAS => $self->{'princalias'}, + FIELD => 'PrincipalType', + VALUE => 'User', + ); return (@result); } @@ -102,9 +107,9 @@ sub _Init { Returns the string that represents this Users object's primary "Principals" alias. - =cut +# XXX: should be generalized sub PrincipalsAlias { my $self = shift; return($self->{'princalias'}); @@ -141,10 +146,11 @@ Only find items that haven\'t been disabled =cut +# XXX: should be generalized sub LimitToEnabled { my $self = shift; - $self->Limit( ALIAS => $self->{'princalias'}, + $self->Limit( ALIAS => $self->PrincipalsAlias, FIELD => 'Disabled', VALUE => '0', OPERATOR => '=' ); @@ -187,7 +193,7 @@ sub MemberOfGroup { my $groupalias = $self->NewAlias('CachedGroupMembers'); # Join the principal to the groups table - $self->Join( ALIAS1 => $self->{'princalias'}, + $self->Join( ALIAS1 => $self->PrincipalsAlias, FIELD1 => 'id', ALIAS2 => $groupalias, FIELD2 => 'MemberId' ); @@ -288,69 +294,75 @@ is($users->Count, 1, "RTxUserRight found for RTxObj2"); =end testing - find all users who the right Right for this group, either individually or as members of groups - If passed a queue object, with no id, it will find users who have that right for _any_ queue - - =cut -sub WhoHaveRight { +# XXX: should be generalized +sub _JoinGroupMembers +{ my $self = shift; my %args = ( - Right => undef, - Object => undef, - IncludeSystemRights => undef, - IncludeSuperusers => undef, IncludeSubgroupMembers => 1, - EquivObjects => [ ], @_ ); - if ( defined $args{'ObjectType'} || defined $args{'ObjectId'} ) { - $RT::Logger->crit( "$self WhoHaveRight called with the Obsolete ObjectId/ObjectType API"); - return (undef); - } - - - # Find only members of groups that have the right. - - my $acl = $self->NewAlias('ACL'); - my $groups = $self->NewAlias('Groups'); - my $userprinc = $self->{'princalias'}; - -# The cachedgroupmembers table is used for unrolling group memberships to allow fast lookups -# if we bind to CachedGroupMembers, we'll find all members of groups recursively. -# if we don't we'll find only 'direct' members of the group in question - my $cgm; + my $principals = $self->PrincipalsAlias; + # The cachedgroupmembers table is used for unrolling group memberships + # to allow fast lookups. if we bind to CachedGroupMembers, we'll find + # all members of groups recursively. if we don't we'll find only 'direct' + # members of the group in question + my $group_members; if ( $args{'IncludeSubgroupMembers'} ) { - $cgm = $self->NewAlias('CachedGroupMembers'); + $group_members = $self->NewAlias('CachedGroupMembers'); } else { - $cgm = $self->NewAlias('GroupMembers'); + $group_members = $self->NewAlias('GroupMembers'); } -#Tie the users we're returning ($userprinc) to the groups that have rights granted to them ($groupprinc) $self->Join( - ALIAS1 => $cgm, + ALIAS1 => $group_members, FIELD1 => 'MemberId', - ALIAS2 => $userprinc, + ALIAS2 => $principals, FIELD2 => 'id' ); + return $group_members; +} + +# XXX: should be generalized +sub _JoinGroups +{ + my $self = shift; + my %args = (@_); + + my $group_members = $self->_JoinGroupMembers( %args ); + my $groups = $self->NewAlias('Groups'); $self->Join( ALIAS1 => $groups, FIELD1 => 'id', - ALIAS2 => $cgm, + ALIAS2 => $group_members, FIELD2 => 'GroupId' ); -# {{{ Find only rows where the right granted is the one we're looking up or _possibly_ superuser + return $groups; +} + +# XXX: should be generalized +sub _JoinACL +{ + my $self = shift; + my %args = ( + Right => undef, + IncludeSuperusers => undef, + @_, + ); + + my $acl = $self->NewAlias('ACL'); $self->Limit( ALIAS => $acl, FIELD => 'RightName', @@ -358,7 +370,6 @@ sub WhoHaveRight { VALUE => $args{Right} || 'NULL', ENTRYAGGREGATOR => 'OR' ); - if ( $args{'IncludeSuperusers'} and $args{'Right'} ) { $self->Limit( ALIAS => $acl, @@ -368,97 +379,240 @@ sub WhoHaveRight { ENTRYAGGREGATOR => 'OR' ); } + return $acl; +} - # }}} +# XXX: should be generalized +sub _GetEquivObjects +{ + my $self = shift; + my %args = ( + Object => undef, + IncludeSystemRights => undef, + EquivObjects => [ ], + @_ + ); + return () unless $args{'Object'}; + + my @objects = ($args{'Object'}); + if ( UNIVERSAL::isa( $args{'Object'}, 'RT::Ticket' ) ) { + # If we're looking at ticket rights, we also want to look at the associated queue rights. + # this is a little bit hacky, but basically, now that we've done the ticket roles magic, + # we load the queue object and ask all the rest of our questions about the queue. + + # XXX: This should be abstracted into object itself + if( $args{'Object'}->id ) { + push @objects, $args{'Object'}->QueueObj; + } else { + push @objects, 'RT::Queue'; + } + } - my ( $or_check_ticket_roles, $or_check_roles ); - my $which_object = "$acl.ObjectType = 'RT::System'"; + if( $args{'IncludeSystemRights'} ) { + push @objects, 'RT::System'; + } + push @objects, @{ $args{'EquivObjects'} }; + return grep $_, @objects; +} - if ( defined $args{'Object'} ) { - if ( ref( $args{'Object'} ) eq 'RT::Ticket' ) { - $or_check_ticket_roles = " OR ( $groups.Domain = 'RT::Ticket-Role' AND $groups.Instance = " . $args{'Object'}->Id . ") "; +# XXX: should be generalized +sub WhoHaveRight { + my $self = shift; + my %args = ( + Right => undef, + Object => undef, + IncludeSystemRights => undef, + IncludeSuperusers => undef, + IncludeSubgroupMembers => 1, + EquivObjects => [ ], + @_ + ); -# If we're looking at ticket rights, we also want to look at the associated queue rights. -# this is a little bit hacky, but basically, now that we've done the ticket roles magic, -# we load the queue object and ask all the rest of our questions about the queue. - $args{'Object'} = $args{'Object'}->QueueObj; - } + if ( defined $args{'ObjectType'} || defined $args{'ObjectId'} ) { + $RT::Logger->crit( "WhoHaveRight called with the Obsolete ObjectId/ObjectType API"); + return (undef); + } - # TODO XXX This really wants some refactoring - if ( ref( $args{'Object'} ) eq 'RT::Queue' ) { - $or_check_roles = " OR ( ( ($groups.Domain = 'RT::Queue-Role' "; - $or_check_roles .= "AND $groups.Instance = " . $args{'Object'}->id if ( $args{'Object'}->id ); - $or_check_roles .= ") $or_check_ticket_roles ) " . " AND $groups.Type = $acl.PrincipalType) "; - } - if ( $args{'IncludeSystemRights'} ) { - $which_object .= ' OR '; - } - else { - $which_object = ''; - } - foreach my $obj ( @{ $args{'EquivObjects'} } ) { - $which_object .= "($acl.ObjectType = '" . ref( $obj ) . "' AND $acl.ObjectId = " . $obj->id . ") OR "; - } - $which_object .= " ($acl.ObjectType = '" . ref( $args{'Object'} ) . "'"; - if ( $args{'Object'}->id ) { - $which_object .= " AND $acl.ObjectId = " . $args{'Object'}->id; + my $from_role = $self->Clone; + $from_role->WhoHaveRoleRight( %args ); + + my $from_group = $self->Clone; + $from_group->WhoHaveGroupRight( %args ); + + #XXX: DIRTY HACK + use DBIx::SearchBuilder::Union; + my $union = new DBIx::SearchBuilder::Union; + $union->add($from_role); + $union->add($from_group); + %$self = %$union; + bless $self, ref($union); + + return; +} +# }}} + +# XXX: should be generalized +sub WhoHaveRoleRight +{ + my $self = shift; + my %args = ( + Right => undef, + Object => undef, + IncludeSystemRights => undef, + IncludeSuperusers => undef, + IncludeSubgroupMembers => 1, + EquivObjects => [ ], + @_ + ); + + my $groups = $self->_JoinGroups( %args ); + my $acl = $self->_JoinACL( %args ); + + my ($check_roles, $check_objects) = ('',''); + + my @objects = $self->_GetEquivObjects( %args ); + if ( @objects ) { + my @role_clauses; + my @object_clauses; + foreach my $obj ( @objects ) { + my $type = ref($obj)? ref($obj): $obj; + my $id; + $id = $obj->id if ref($obj) && UNIVERSAL::can($obj, 'id') && $obj->id; + + my $role_clause = "$groups.Domain = '$type-Role'"; + # XXX: Groups.Instance is VARCHAR in DB, we should quote value + # if we want mysql 4.0 use indexes here. we MUST convert that + # field to integer and drop this quotes. + $role_clause .= " AND $groups.Instance = '$id'" if $id; + push @role_clauses, "($role_clause)"; + + my $object_clause = "$acl.ObjectType = '$type'"; + $object_clause .= " AND $acl.ObjectId = $id" if $id; + push @object_clauses, "($object_clause)"; } - $which_object .= ") "; + $check_roles .= join ' OR ', @role_clauses; + $check_objects = join ' OR ', @object_clauses; + } else { + if( !$args{'IncludeSystemRights'} ) { + $check_objects = "($acl.ObjectType != 'RT::System')"; + } } - $self->_AddSubClause( "WhichObject", "($which_object)" ); - $self->_AddSubClause( - "WhichGroup", - qq{ ( ( $acl.PrincipalId = $groups.id AND $acl.PrincipalType = 'Group' - AND ( $groups.Domain = 'SystemInternal' OR $groups.Domain = 'UserDefined' OR $groups.Domain = 'ACLEquivalence')) - $or_check_roles) } - ); - # only include regular RT users - $self->LimitToEnabled; + + $self->_AddSubClause( "WhichObject", "($check_objects)" ); + $self->_AddSubClause( "WhichRole", "($check_roles)" ); + + $self->Limit( ALIAS => $acl, + FIELD => 'PrincipalType', + VALUE => "$groups.Type", + QUOTEVALUE => 0, + ); # no system user - $self->Limit( ALIAS => $userprinc, FIELD => 'id', OPERATOR => '!=', VALUE => $RT::SystemUser->id); + $self->Limit( ALIAS => $self->PrincipalsAlias, + FIELD => 'id', + OPERATOR => '!=', + VALUE => $RT::SystemUser->id + ); + return; +} +# XXX: should be generalized +sub _JoinGroupMembersForGroupRights +{ + my $self = shift; + my %args = (@_); + my $group_members = $self->_JoinGroupMembers( %args ); + $self->Limit( ALIAS => $args{'ACLAlias'}, + FIELD => 'PrincipalId', + VALUE => "$group_members.GroupId", + QUOTEVALUE => 0, + ); +} + +# XXX: should be generalized +sub WhoHaveGroupRight +{ + my $self = shift; + my %args = ( + Right => undef, + Object => undef, + IncludeSystemRights => undef, + IncludeSuperusers => undef, + IncludeSubgroupMembers => 1, + EquivObjects => [ ], + @_ + ); + + # Find only rows where the right granted is + # the one we're looking up or _possibly_ superuser + my $acl = $self->_JoinACL( %args ); + + my ($check_objects) = (''); + my @objects = $self->_GetEquivObjects( %args ); + + if ( @objects ) { + my @object_clauses; + foreach my $obj ( @objects ) { + my $type = ref($obj)? ref($obj): $obj; + my $id; + $id = $obj->id if ref($obj) && UNIVERSAL::can($obj, 'id') && $obj->id; + + my $object_clause = "$acl.ObjectType = '$type'"; + $object_clause .= " AND $acl.ObjectId = $id" if $id; + push @object_clauses, "($object_clause)"; + } + + $check_objects = join ' OR ', @object_clauses; + } else { + if( !$args{'IncludeSystemRights'} ) { + $check_objects = "($acl.ObjectType != 'RT::System')"; + } + } + $self->_AddSubClause( "WhichObject", "($check_objects)" ); + + $self->_JoinGroupMembersForGroupRights( %args, ACLAlias => $acl ); + # Find only members of groups that have the right. + $self->Limit( ALIAS => $acl, + FIELD => 'PrincipalType', + VALUE => 'Group', + ); + + # no system user + $self->Limit( ALIAS => $self->PrincipalsAlias, + FIELD => 'id', + OPERATOR => '!=', + VALUE => $RT::SystemUser->id + ); + return; } -# }}} -# {{{ WhoBelongToGroups +# {{{ WhoBelongToGroups =head2 WhoBelongToGroups { Groups => ARRAYREF, IncludeSubgroupMembers => 1 } =cut +# XXX: should be generalized sub WhoBelongToGroups { my $self = shift; my %args = ( Groups => undef, IncludeSubgroupMembers => 1, @_ ); - # Unprivileged users can't be granted real system rights. + # Unprivileged users can't be granted real system rights. # is this really the right thing to be saying? $self->LimitToPrivileged(); - my $userprinc = $self->{'princalias'}; - my $cgm; - - # The cachedgroupmembers table is used for unrolling group memberships to allow fast lookups - # if we bind to CachedGroupMembers, we'll find all members of groups recursively. - # if we don't we'll find only 'direct' members of the group in question - - if ( $args{'IncludeSubgroupMembers'} ) { - $cgm = $self->NewAlias('CachedGroupMembers'); - } - else { - $cgm = $self->NewAlias('GroupMembers'); - } - - #Tie the users we're returning ($userprinc) to the groups that have rights granted to them ($groupprinc) - $self->Join( ALIAS1 => $cgm, FIELD1 => 'MemberId', - ALIAS2 => $userprinc, FIELD2 => 'id' ); + my $group_members = $self->_JoinGroupMembers( %args ); foreach my $groupid (@{$args{'Groups'}}) { - $self->Limit(ALIAS => $cgm, FIELD => 'GroupId', VALUE => $groupid, QUOTEVALUE => 0, ENTRYAGGREGATOR=> 'OR') - + $self->Limit( ALIAS => $group_members, + FIELD => 'GroupId', + VALUE => $groupid, + QUOTEVALUE => 0, + ENTRYAGGREGATOR => 'OR', + ); } } # }}} diff --git a/rt/lib/t/regression/06mailgateway.t b/rt/lib/t/regression/06mailgateway.t index 8486aea9e..1bdc38a69 100644 --- a/rt/lib/t/regression/06mailgateway.t +++ b/rt/lib/t/regression/06mailgateway.t @@ -62,7 +62,7 @@ use RT::I18N; 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 -To: rt\@example.com +To: rt\@$RT::rtname Subject: This is a test of new ticket creation Foob! @@ -78,7 +78,7 @@ is ( $? >> 8, 75, "The error message above is expected The mail gateway exited w ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@"); print MAIL <<EOF; From: root\@localhost -To: rt\@example.com +To: rt\@$RT::rtname Subject: This is a test of new ticket creation Blah! @@ -105,8 +105,8 @@ ok ($tick->Subject eq 'This is a test of new ticket creation', "Created the tick ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@"); print MAIL <<EOF; -From: doesnotexist\@example.com -To: rt\@example.com +From: doesnotexist\@$RT::rtname +To: rt\@$RT::rtname Subject: This is a test of new ticket creation as an unknown user Blah! @@ -123,7 +123,7 @@ $tick = $tickets->First(); ok ($tick->Id, "found ticket ".$tick->Id); ok ($tick->Subject ne 'This is a test of new ticket creation as an unknown user', "failed to create the new ticket from an unprivileged account"); my $u = RT::User->new($RT::SystemUser); -$u->Load('doesnotexist@example.com'); +$u->Load("doesnotexist\@$RT::rtname"); ok( $u->Id == 0, " user does not exist and was not created by failed ticket submission"); @@ -141,8 +141,8 @@ 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 - $@"); print MAIL <<EOF; -From: doesnotexist\@example.com -To: rt\@example.com +From: doesnotexist\@$RT::rtname +To: rt\@$RT::rtname Subject: This is a test of new ticket creation as an unknown user Blah! @@ -160,7 +160,7 @@ $tick = $tickets->First(); ok ($tick->Id, "found ticket ".$tick->Id); ok ($tick->Subject eq 'This is a test of new ticket creation as an unknown user', "failed to create the new ticket from an unprivileged account"); $u = RT::User->new($RT::SystemUser); -$u->Load('doesnotexist@example.com'); +$u->Load("doesnotexist\@$RT::rtname"); ok( $u->Id != 0, " user does not exist and was created by ticket submission"); # }}} @@ -174,9 +174,9 @@ ok( $u->Id != 0, " user does not exist and was created by ticket submission"); ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@"); print MAIL <<EOF; -From: doesnotexist-2\@example.com -To: rt\@example.com -Subject: [example.com #@{[$tick->Id]}] This is a test of a reply as an unknown user +From: doesnotexist-2\@$RT::rtname +To: rt\@$RT::rtname +Subject: [$RT::rtname #@{[$tick->Id]}] This is a test of a reply as an unknown user Blah! (Should not work.) Foob! @@ -186,7 +186,7 @@ close (MAIL); is ($? >> 8, 0, "The mail gateway exited normally. yay"); $u = RT::User->new($RT::SystemUser); -$u->Load('doesnotexist-2@example.com'); +$u->Load('doesnotexist-2@$RT::rtname'); ok( $u->Id == 0, " user does not exist and was not created by ticket correspondence submission"); # }}} @@ -199,9 +199,9 @@ 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 - $@"); print MAIL <<EOF; -From: doesnotexist-2\@example.com -To: rt\@example.com -Subject: [example.com #@{[$tick->Id]}] This is a test of a reply as an unknown user +From: doesnotexist-2\@$RT::rtname +To: rt\@$RT::rtname +Subject: [$RT::rtname #@{[$tick->Id]}] This is a test of a reply as an unknown user Blah! Foob! @@ -212,7 +212,7 @@ is ($? >> 8, 0, "The mail gateway exited normally. yay"); $u = RT::User->new($RT::SystemUser); -$u->Load('doesnotexist-2@example.com'); +$u->Load("doesnotexist-2\@$RT::rtname"); ok( $u->Id != 0, " user exists and was created by ticket correspondence submission"); # }}} @@ -225,9 +225,9 @@ ok( $u->Id != 0, " user exists and was created by ticket correspondence submissi ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action comment"), "Opened the mailgate - $@"); print MAIL <<EOF; -From: doesnotexist-3\@example.com -To: rt\@example.com -Subject: [example.com #@{[$tick->Id]}] This is a test of a comment as an unknown user +From: doesnotexist-3\@$RT::rtname +To: rt\@$RT::rtname +Subject: [$RT::rtname #@{[$tick->Id]}] This is a test of a comment as an unknown user Blah! (Should not work.) Foob! @@ -238,7 +238,7 @@ close (MAIL); is ($? >> 8, 0, "The mail gateway exited normally. yay"); $u = RT::User->new($RT::SystemUser); -$u->Load('doesnotexist-3@example.com'); +$u->Load("doesnotexist-3\@$RT::rtname"); ok( $u->Id == 0, " user does not exist and was not created by ticket comment submission"); # }}} @@ -250,9 +250,9 @@ 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 - $@"); print MAIL <<EOF; -From: doesnotexist-3\@example.com -To: rt\@example.com -Subject: [example.com #@{[$tick->Id]}] This is a test of a comment as an unknown user +From: doesnotexist-3\@$RT::rtname +To: rt\@$RT::rtname +Subject: [$RT::rtname #@{[$tick->Id]}] This is a test of a comment as an unknown user Blah! Foob! @@ -263,7 +263,7 @@ close (MAIL); is ($? >> 8, 0, "The mail gateway exited normally. yay"); $u = RT::User->new($RT::SystemUser); -$u->Load('doesnotexist-3@example.com'); +$u->Load("doesnotexist-3\@$RT::rtname"); ok( $u->Id != 0, " user exists and was created by ticket comment submission"); # }}} @@ -351,7 +351,7 @@ ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --act print MAIL <<EOF; From: root\@localhost -To: rtemail\@example.com +To: rtemail\@$RT::rtname Subject: This is a test of I18N ticket creation Content-Type: text/plain; charset="utf-8" @@ -385,7 +385,7 @@ ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --act print MAIL <<EOF; From: root\@localhost -To: rtemail\@example.com +To: rtemail\@$RT::rtname Subject: This is a test of I18N ticket creation Content-Type: text/plain; charset="utf-8" @@ -436,7 +436,7 @@ 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 - $@"); print MAIL <<EOF; From: root\@localhost -Subject: [example.com \#$id] test +Subject: [$RT::rtname \#$id] test EOF close (MAIL); @@ -461,7 +461,7 @@ is( $tick->Owner, $RT::Nobody->Id, 'set owner back to nobody'); ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action take-correspond"), "Opened the mailgate - $@"); print MAIL <<EOF; From: root\@localhost -Subject: [example.com \#$id] correspondence +Subject: [$RT::rtname \#$id] correspondence test EOF @@ -474,14 +474,14 @@ is( $tick->Id, $id, 'load correct ticket'); 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, "[example.com \#$id] correspondence", 'successfuly add correspond within take via email' ); +is( $txns->Last->Subject, "[$RT::rtname \#$id] correspondence", 'successfuly add correspond within take via email' ); # +1 because of auto open is( $tick->Transactions->Count, 6, 'no superfluous transactions'); ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action resolve"), "Opened the mailgate - $@"); print MAIL <<EOF; From: root\@localhost -Subject: [example.com \#$id] test +Subject: [$RT::rtname \#$id] test EOF close (MAIL); diff --git a/rt/lib/t/regression/07acl.t b/rt/lib/t/regression/07acl.t index bb1ccdc0b..e30a59bef 100644 --- a/rt/lib/t/regression/07acl.t +++ b/rt/lib/t/regression/07acl.t @@ -49,9 +49,9 @@ is($agent->{'status'}, 200, "Fetched the page ok"); ok($agent->{'content'} =~ /Logout/i, "Found a logout link"); # Test for absence of Configure and Preferences tabs. -ok(!$agent->find_link( url => '/Admin/', +ok(!$agent->find_link( url => "$RT::WebPath/Admin/", text => 'Configuration'), "No config tab" ); -ok(!$agent->find_link( url => '/User/Prefs.html', +ok(!$agent->find_link( url => "$RT::WebPath/User/Prefs.html", text => 'Preferences'), "No prefs pane" ); # Now test for their presence, one at a time. Sleep for a bit after @@ -59,18 +59,18 @@ ok(!$agent->find_link( url => '/User/Prefs.html', $user_obj->PrincipalObj->GrantRight(Right => 'ShowConfigTab'); $agent->reload(); ok($agent->{'content'} =~ /Logout/i, "Reloaded page successfully"); -ok($agent->find_link( url => '/Admin/', +ok($agent->find_link( url => "$RT::WebPath/Admin/", text => 'Configuration'), "Found config tab" ); $user_obj->PrincipalObj->RevokeRight(Right => 'ShowConfigTab'); $user_obj->PrincipalObj->GrantRight(Right => 'ModifySelf'); $agent->reload(); ok($agent->{'content'} =~ /Logout/i, "Reloaded page successfully"); -ok($agent->find_link( url => '/User/Prefs.html', +ok($agent->find_link( url => "$RT::WebPath/User/Prefs.html", text => 'Preferences'), "Found prefs pane" ); $user_obj->PrincipalObj->RevokeRight(Right => 'ModifySelf'); # Good. Now load the search page and test Load/Save Search. -$agent->follow_link( url => '/Search/Build.html', +$agent->follow_link( url => "$RT::WebPath/Search/Build.html", text => 'Tickets'); is($agent->{'status'}, 200, "Fetched search builder page"); ok($agent->{'content'} !~ /Load saved search/i, "No search loading box"); diff --git a/rt/lib/t/regression/07rights.t b/rt/lib/t/regression/07rights.t index 4764b49d4..d34627705 100644 --- a/rt/lib/t/regression/07rights.t +++ b/rt/lib/t/regression/07rights.t @@ -45,7 +45,7 @@ # # END BPS TAGGED BLOCK }}} -use Test::More tests => 14; +use Test::More tests => 26; use RT; RT::LoadConfig(); RT::Init(); @@ -108,3 +108,33 @@ is( $ticket->Owner, $user_id, "set correct owner" ); ok( $user->HasRight( Right => 'ReplyToTicket', Object => $ticket ), "user is owner and can reply to ticket" ); +# Testing of EquivObjects +$group = RT::Group->new( $RT::SystemUser ); +ok( $group->LoadQueueRoleGroup( Queue => $queue_id, Type=> 'AdminCc' ), "load queue AdminCc role group" ); +$ace = RT::ACE->new( $RT::SystemUser ); +my ($ace_id, $msg) = $group->PrincipalObj->GrantRight( Right => 'ModifyTicket', Object => $queue ); +ok( $ace_id, "Granted queue AdminCc role group with ModifyTicket right: $msg" ); +ok( $group->PrincipalObj->HasRight( Right => 'ModifyTicket', Object => $queue ), "role group can modify ticket" ); +ok( !$user->HasRight( Right => 'ModifyTicket', Object => $ticket ), "user is not AdminCc and can't modify ticket" ); +($status, $msg) = $ticket->AddWatcher(Type => 'AdminCc', PrincipalId => $user->PrincipalId); +ok( $status, "successfuly added user as AdminCc"); +ok( $user->HasRight( Right => 'ModifyTicket', Object => $ticket ), "user is AdminCc and can modify ticket" ); + +my $ticket2 = RT::Ticket->new($RT::SystemUser); +my ($ticket2_id) = $ticket2->Create( Queue => $queue_id, Subject => 'test2'); +ok( $ticket2_id, 'new ticket created' ); +ok( !$user->HasRight( Right => 'ModifyTicket', Object => $ticket2 ), "user is not AdminCc and can't modify ticket2" ); + +# now we can finally test EquivObjects +my $equiv = [ $ticket ]; +ok( $user->HasRight( Right => 'ModifyTicket', Object => $ticket2, EquivObjects => $equiv ), + "user is not AdminCc but can modify ticket2 because of EquivObjects" ); + +# the first a third test below are the same, so they should both pass +my $equiv2 = []; +ok( !$user->HasRight( Right => 'ModifyTicket', Object => $ticket2, EquivObjects => $equiv2 ), + "user is not AdminCc and can't modify ticket2" ); +ok( $user->HasRight( Right => 'ModifyTicket', Object => $ticket, EquivObjects => $equiv2 ), + "user is AdminCc and can modify ticket" ); +ok( !$user->HasRight( Right => 'ModifyTicket', Object => $ticket2, EquivObjects => $equiv2 ), + "user is not AdminCc and can't modify ticket2 (same question different answer)" ); diff --git a/rt/lib/t/regression/09record_cf_api.t b/rt/lib/t/regression/09record_cf_api.t index 1428a28db..78f111bd8 100644 --- a/rt/lib/t/regression/09record_cf_api.t +++ b/rt/lib/t/regression/09record_cf_api.t @@ -2,7 +2,7 @@ use strict; use warnings FATAL => 'all'; -use Test::More tests => 131; +use Test::More tests => 133; use RT; RT::LoadConfig(); @@ -21,6 +21,9 @@ my $queue = RT::Queue->new( $RT::SystemUser ); $queue->Create( Name => 'RecordCustomFields-'.$$ ); ok ($queue->id, "Created the queue"); +my $queue2 = RT::Queue->new( $RT::SystemUser ); +$queue2->Create( Name => 'RecordCustomFields2' ); + my $ticket = RT::Ticket->new( $RT::SystemUser ); $ticket->Create( Queue => $queue->Id, @@ -51,6 +54,11 @@ $global_cf3->Create( Name => 'RecordCustomFields3-'.$$, Type => 'SelectSingle', $global_cf3->AddValue( Name => 'RecordCustomFieldValues31' ); $global_cf3->AddValue( Name => 'RecordCustomFieldValues32' ); +my $local_cf4 = RT::CustomField->new( $RT::SystemUser ); +$local_cf4->Create( Name => 'RecordCustomFields4', Type => 'SelectSingle', Queue => $queue2->id ); +$local_cf4->AddValue( Name => 'RecordCustomFieldValues41' ); +$local_cf4->AddValue( Name => 'RecordCustomFieldValues42' ); + my @custom_fields = ($local_cf1, $local_cf2, $global_cf3); @@ -178,6 +186,14 @@ $test_add_delete_cycle->( sub { return $_[0]->id } ); # lets test cycle via CF object reference $test_add_delete_cycle->( sub { return $_[0] } ); +$ticket->AddCustomFieldValue( Field => $local_cf2->id , Value => 'Baz' ); +$ticket->AddCustomFieldValue( Field => $global_cf3->id , Value => 'Baz' ); +# now if we ask for cf values on RecordCustomFields4 we should not get any +$cfvs = $ticket->CustomFieldValues( 'RecordCustomFields4' ); +is( $cfvs->Count, 0, "No custom field values for non-Queue cf" ); +is( $ticket->FirstCustomFieldValue( 'RecordCustomFields4' ), undef, "No first custom field value for non-Queue cf" ); + + #SKIP: { # skip "TODO: should we add CF values to objects via CF Name?", 48; # names are not unique diff --git a/rt/lib/t/regression/14linking.t b/rt/lib/t/regression/14linking.t new file mode 100644 index 000000000..6fdf61405 --- /dev/null +++ b/rt/lib/t/regression/14linking.t @@ -0,0 +1,143 @@ +use Test::More tests => '39'; +use_ok('RT'); +use_ok('RT::Ticket'); +use_ok('RT::ScripConditions'); +use_ok('RT::ScripActions'); +use_ok('RT::Template'); +use_ok('RT::Scrips'); +use_ok('RT::Scrip'); +RT::LoadConfig(); +RT::Init(); + +use File::Temp qw/tempfile/; +my ($fh, $filename) = tempfile( UNLINK => 1, SUFFIX => '.rt'); +my $link_scrips_orig = $RT::LinkTransactionsRun1Scrip; +$RT::LinkTransactionsRun1Scrip = 1; + +my $condition = RT::ScripCondition->new( $RT::SystemUser ); +$condition->Load('User Defined'); +ok($condition->id); +my $action = RT::ScripAction->new( $RT::SystemUser ); +$action->Load('User Defined'); +ok($action->id); +my $template = RT::Template->new( $RT::SystemUser ); +$template->Load('Blank'); +ok($template->id); + +my $q1 = RT::Queue->new($RT::SystemUser); +my ($id,$msg) = $q1->Create(Name => "LinkTest1.$$"); +ok ($id,$msg); +my $q2 = RT::Queue->new($RT::SystemUser); +($id,$msg) = $q2->Create(Name => "LinkTest2.$$"); +ok ($id,$msg); + +my $commit_code = <<END; +open(FILE, "<$filename"); +my \$data = <FILE>; +chomp \$data; +close FILE; +open(FILE, ">$filename"); +if (\$self->TransactionObj->Type eq 'AddLink') { + print FILE \$data+1, "\n"; +} +else { + print FILE \$data-1, "\n"; +} +close FILE; +1; +END + +my $Scrips = RT::Scrips->new( $RT::SystemUser ); +$Scrips->UnLimit; +while ( my $Scrip = $Scrips->Next ) { + $Scrip->Delete if $Scrip->Description =~ /Add or Delete Link \d+/; +} + + +my $scrip = RT::Scrip->new($RT::SystemUser); +($id,$msg) = $scrip->Create( Description => "Add or Delete Link $$", + ScripCondition => $condition->id, + ScripAction => $action->id, + Template => $template->id, + Stage => 'TransactionCreate', + Queue => 0, + CustomIsApplicableCode => '$self->TransactionObj->Type =~ /(Add|Delete)Link/;', + CustomPrepareCode => '1;', + CustomCommitCode => $commit_code, + ); +ok($id, "Scrip created"); + +my $u1 = RT::User->new($RT::SystemUser); +($id,$msg) =$u1->Create(Name => "LinkTestUser.$$"); + +ok ($id,$msg); + +($id,$msg) = $u1->PrincipalObj->GrantRight ( Object => $q1, Right => 'CreateTicket'); +ok ($id,$msg); +($id,$msg) = $u1->PrincipalObj->GrantRight ( Object => $q1, Right => 'ModifyTicket'); +ok ($id,$msg); + +my $tid; + +my $creator = RT::CurrentUser->new($u1->id); + +my $ticket = RT::Ticket->new( $creator); +ok($ticket->isa('RT::Ticket')); +($id,$tid, $msg) = $ticket->Create(Subject => 'Link test 1', Queue => $q1->id); +ok ($id,$msg); + + +my $ticket2 = RT::Ticket->new($RT::SystemUser); +($id, $tid, $msg) = $ticket2->Create(Subject => 'Link test 2', Queue => $q2->id); +ok ($id, $msg); + +($id,$msg) =$ticket->AddLink(Type => 'RefersTo', Target => $ticket2->id); +ok(!$id,$msg); +ok(link_count($filename) == 0, "scrips ok"); +($id,$msg) = $u1->PrincipalObj->GrantRight ( Object => $q2, Right => 'CreateTicket'); +ok ($id,$msg); +($id,$msg) = $u1->PrincipalObj->GrantRight ( Object => $q2, Right => 'ModifyTicket'); +ok ($id,$msg); +($id,$msg) =$ticket->AddLink(Type => 'RefersTo', Target => $ticket2->id); +ok($id,$msg); +ok(link_count($filename) == 1, "scrips ok"); +($id,$msg) =$ticket->AddLink(Type => 'RefersTo', Target => -1); +ok(!$id,$msg); +ok(link_count($filename) == 1, "scrips ok"); + +my $transactions = $ticket2->Transactions; +$transactions->Limit( FIELD => 'Type', VALUE => 'AddLink' ); +ok( $transactions->Count == 1, "Transaction found in other ticket" ); +ok( $transactions->First->Field eq 'ReferredToBy'); +ok( $transactions->First->NewValue eq $ticket->URI ); + +($id,$msg) =$ticket->DeleteLink(Type => 'RefersTo', Target => $ticket2->id); +ok($id,$msg); +ok(link_count($filename) == 0, "scrips ok"); +$transactions = $ticket2->Transactions; +$transactions->Limit( FIELD => 'Type', VALUE => 'DeleteLink' ); +ok( $transactions->Count == 1, "Transaction found in other ticket" ); +ok( $transactions->First->Field eq 'ReferredToBy'); +ok( $transactions->First->OldValue eq $ticket->URI ); + +$RT::LinkTransactionsRun1Scrip = 0; +($id,$msg) =$ticket->AddLink(Type => 'RefersTo', Target => $ticket2->id); +ok($id,$msg); +ok(link_count($filename) == 2, "scrips ok"); +($id,$msg) =$ticket->DeleteLink(Type => 'RefersTo', Target => $ticket2->id); +ok($id,$msg); +ok(link_count($filename) == 0, "scrips ok"); + +# restore +$RT::LinkTransactionsRun1Scrip = $link_scrips_orig; + +sub link_count { + + my $file = shift; + open(FILE, "<$file"); + my $data = <FILE>; + chomp $data; + return $data + 0; + close FILE; + +} diff --git a/rt/lib/t/regression/22search_tix_by_txn.t b/rt/lib/t/regression/22search_tix_by_txn.t index 54dad9860..958273c5c 100644 --- a/rt/lib/t/regression/22search_tix_by_txn.t +++ b/rt/lib/t/regression/22search_tix_by_txn.t @@ -1,6 +1,6 @@ #use Test::More tests => 26; use Test::More qw/no_plan/; - +$ENV{'TZ'} = 'GMT'; use RT; RT::LoadConfig(); RT::Init(); diff --git a/rt/lib/t/regression/22search_tix_by_watcher.t b/rt/lib/t/regression/22search_tix_by_watcher.t new file mode 100644 index 000000000..dd87de989 --- /dev/null +++ b/rt/lib/t/regression/22search_tix_by_watcher.t @@ -0,0 +1,215 @@ +#!/usr/bin/perl -w +use strict; +use warnings; + +use Test::More qw/no_plan/; +use_ok('RT'); +RT::LoadConfig(); +RT::Init(); +use RT::Ticket; + +my $q = RT::Queue->new($RT::SystemUser); +my $queue = 'SearchTests-'.rand(200); +$q->Create(Name => $queue); + +my @data = ( + { Subject => '1', Requestor => 'bravo@example.com' }, + { Subject => '2', Cc => 'alpha@example.com' }, +); + +my $total = 0; + +sub add_tix_from_data { + my @res = (); + while (@data) { + my $t = RT::Ticket->new($RT::SystemUser); + my ( $id, undef $msg ) = $t->Create( + Queue => $q->id, + %{ shift(@data) }, + ); + ok( $id, "ticket created" ) or diag("error: $msg"); + push @res, $t; + $total++; + } + return @res; +} +add_tix_from_data(); + +{ + my $tix = RT::Tickets->new($RT::SystemUser); + $tix->FromSQL("Queue = '$queue'"); + is($tix->Count, $total, "found $total tickets"); +} + +{ + my $tix = RT::Tickets->new($RT::SystemUser); + $tix->FromSQL("Queue = '$queue' AND Requestor = 'bravo\@example.com'"); + is($tix->Count, 1, "found ticket(s)"); + is($tix->First->RequestorAddresses, 'bravo@example.com',"correct requestor"); +} + +{ + my $tix = RT::Tickets->new($RT::SystemUser); + $tix->FromSQL("Queue = '$queue' AND Cc = 'alpha\@example.com'"); + is($tix->Count, 1, "found ticket(s)"); + is($tix->First->CcAddresses, 'alpha@example.com', "correct Cc"); +} + +{ + my $tix = RT::Tickets->new($RT::SystemUser); + $tix->FromSQL("Queue = '$queue' AND (Cc = 'alpha\@example.com' OR Requestor = 'bravo\@example.com')"); + is($tix->Count, 2, "found ticket(s)"); + my @mails; + while (my $t = $tix->Next) { + push @mails, $t->RequestorAddresses; + push @mails, $t->CcAddresses; + } + @mails = sort grep $_, @mails; + is_deeply(\@mails, ['alpha@example.com', 'bravo@example.com'], "correct addresses"); +} + +{ + my $tix = RT::Tickets->new($RT::SystemUser); + $tix->FromSQL("Queue = '$queue' AND (Cc = 'alpha\@example.com' AND Requestor = 'bravo\@example.com')"); + is($tix->Count, 0, "found ticket(s)"); +} + +{ + my $tix = RT::Tickets->new($RT::SystemUser); + $tix->FromSQL("Queue = '$queue' AND Cc != 'alpha\@example.com'"); + is($tix->Count, 1, "found ticket(s)"); + is($tix->First->RequestorAddresses, 'bravo@example.com',"correct requestor"); +} + +@data = ( { Subject => '3' } ); +add_tix_from_data(); + +{ + my $tix = RT::Tickets->new($RT::SystemUser); + $tix->FromSQL("Queue = '$queue' AND Cc != 'alpha\@example.com'"); + is($tix->Count, 2, "found ticket(s)"); + my @mails; + while (my $t = $tix->Next) { push @mails, ($t->CcAddresses||'') } + is( scalar(grep 'alpha@example.com' eq $_, @mails), 0, "no tickets with non required data"); +} + +{ + # has no requestor search + my $tix = RT::Tickets->new($RT::SystemUser); + $tix->FromSQL("Queue = '$queue' AND Requestor IS NULL"); + is($tix->Count, 2, "found ticket(s)"); + my @mails; + while (my $t = $tix->Next) { push @mails, ($t->RequestorAddresses||'') } + is( scalar(grep $_, @mails), 0, "no tickets with non required data"); +} + +{ + # has at least one requestor search + my $tix = RT::Tickets->new($RT::SystemUser); + $tix->FromSQL("Queue = '$queue' AND Requestor IS NOT NULL"); + is($tix->Count, 1, "found ticket(s)"); + my @mails; + while (my $t = $tix->Next) { push @mails, ($t->RequestorAddresses||'') } + is( scalar(grep !$_, @mails), 0, "no tickets with non required data"); +} + +@data = ( { Subject => '3', Requestor => 'charly@example.com' } ); +add_tix_from_data(); + +{ + # has no requestor search + my $tix = RT::Tickets->new($RT::SystemUser); + $tix->FromSQL("Queue = '$queue' AND + (Requestor = 'bravo\@example.com' OR Requestor = 'charly\@example.com')"); + is($tix->Count, 2, "found ticket(s)"); + my @mails; + while (my $t = $tix->Next) { push @mails, ($t->RequestorAddresses||'') } + is_deeply( [sort @mails], + ['bravo@example.com', 'charly@example.com'], + "requestor addresses are correct" + ); +} + +# owner is special watcher because reference is duplicated in two places, +# owner was an ENUM field now it's WATCHERFIELD, but should support old +# style ENUM searches for backward compatibility +my $nobody = RT::Nobody(); +{ + my $tix = RT::Tickets->new($RT::SystemUser); + $tix->FromSQL("Queue = '$queue' AND Owner = '". $nobody->id ."'"); + is($tix->Count, 4, "found ticket(s)"); +} +{ + my $tix = RT::Tickets->new($RT::SystemUser); + $tix->FromSQL("Queue = '$queue' AND Owner = '". $nobody->Name ."'"); + is($tix->Count, 4, "found ticket(s)"); +} +{ + my $tix = RT::Tickets->new($RT::SystemUser); + $tix->FromSQL("Queue = '$queue' AND Owner != '". $nobody->id ."'"); + is($tix->Count, 0, "found ticket(s)"); +} +{ + my $tix = RT::Tickets->new($RT::SystemUser); + $tix->FromSQL("Queue = '$queue' AND Owner != '". $nobody->Name ."'"); + is($tix->Count, 0, "found ticket(s)"); +} + +{ + my $tix = RT::Tickets->new($RT::SystemUser); + $tix->FromSQL("Queue = '$queue' AND Owner.Name LIKE 'nob'"); + is($tix->Count, 4, "found ticket(s)"); +} + +{ + # create ticket and force type to not a 'ticket' value + # bug #6898@rt3.fsck.com + # and http://marc.theaimsgroup.com/?l=rt-devel&m=112662934627236&w=2 + @data = ( { Subject => 'not a ticket' } ); + my($t) = add_tix_from_data(); + $t->_Set( Field => 'Type', + Value => 'not a ticket', + CheckACL => 0, + RecordTransaction => 0, + ); + $total--; + + my $tix = RT::Tickets->new($RT::SystemUser); + $tix->FromSQL("Queue = '$queue' AND Owner = 'Nobody'"); + is($tix->Count, 4, "found ticket(s)"); +} + +{ + my $everyone = RT::Group->new( $RT::SystemUser ); + $everyone->LoadSystemInternalGroup('Everyone'); + ok($everyone->id, "loaded 'everyone' group"); + my($id, $msg) = $everyone->PrincipalObj->GrantRight( Right => 'OwnTicket', + Object => $q + ); + ok($id, "granted OwnTicket right to Everyone on '$queue'") or diag("error: $msg"); + + my $u = RT::User->new( $RT::SystemUser ); + $u->LoadByCols( EmailAddress => 'alpha@example.com' ); + ok($u->id, "loaded user"); + @data = ( { Subject => '4', Owner => $u->id } ); + my($t) = add_tix_from_data(); + is( $t->Owner, $u->id, "created ticket with custom owner" ); + my $u_alpha_id = $u->id; + + $u = RT::User->new( $RT::SystemUser ); + $u->LoadByCols( EmailAddress => 'bravo@example.com' ); + ok($u->id, "loaded user"); + @data = ( { Subject => '5', Owner => $u->id } ); + ($t) = add_tix_from_data(); + is( $t->Owner, $u->id, "created ticket with custom owner" ); + my $u_bravo_id = $u->id; + + my $tix = RT::Tickets->new($RT::SystemUser); + $tix->FromSQL("Queue = '$queue' AND + ( Owner = '$u_alpha_id' OR + Owner = '$u_bravo_id' )" + ); + is($tix->Count, 2, "found ticket(s)"); +} + +exit(0) diff --git a/rt/sbin/rt-setup-database.in b/rt/sbin/rt-setup-database.in index 01c7b3cf1..c432cc97b 100644 --- a/rt/sbin/rt-setup-database.in +++ b/rt/sbin/rt-setup-database.in @@ -130,7 +130,14 @@ if ( $args{'action'} eq 'init' ) { unless ($RT::DatabaseType eq 'SQLite') { $dbh->disconnect; + + if ($RT::DatabaseType eq "Oracle") { + $RT::DatabasePassword = $RT::DatabasePassword; #Warning avidance + $dbh = DBI->connect( $Handle->DSN, ${RT::DatabaseUser}, ${RT::DatabasePassword} ) || die $DBI::errstr; + } else { + $dbh = DBI->connect( $Handle->DSN, $args{'dba'}, $args{'dba-password'} ) || die $DBI::errstr; + } } print "Now populating database schema.\n"; insert_schema(); diff --git a/rt/sbin/rt-test-dependencies.in b/rt/sbin/rt-test-dependencies.in index f79e4e5c2..ce1f44150 100644 --- a/rt/sbin/rt-test-dependencies.in +++ b/rt/sbin/rt-test-dependencies.in @@ -153,7 +153,7 @@ Digest::MD5 2.27 DBI 1.37 Test::Inline Class::ReturnValue 0.40 -DBIx::SearchBuilder 1.26 +DBIx::SearchBuilder 1.35 Text::Template File::Spec 0.8 HTML::Entities |