From 15ae708857f6cc57de6cf9990b84fca63dbe9b93 Mon Sep 17 00:00:00 2001 From: "Michael J. Rubinsky" Date: Wed, 23 Dec 2009 20:14:38 -0500 Subject: [PATCH] Add Whups from CVS HEAD --- whups/LICENSE | 25 + whups/README | 143 + whups/admin/index.php | 1259 ++++++++ whups/config/.cvsignore | 10 + whups/config/.htaccess | 1 + whups/config/conf.php | 53 + whups/config/conf.xml | 314 ++ whups/config/create_email.txt | 2 + whups/config/create_email.txt.dist | 2 + whups/config/hooks.php.dist | 66 + whups/config/menu.php.dist | 41 + whups/config/mime_drivers.php | 39 + whups/config/mime_drivers.php.dist | 39 + whups/config/notify_email.txt | 2 + whups/config/notify_email.txt.dist | 2 + whups/config/prefs.php | 175 ++ whups/config/prefs.php.dist | 182 ++ whups/config/reminders.php.dist | 46 + whups/config/templates.php | 59 + whups/config/templates.php.dist | 59 + whups/data.php | 66 + whups/docs/CHANGES | 356 +++ whups/docs/CREDITS | 54 + whups/docs/INSTALL | 297 ++ whups/docs/RELEASE_NOTES | 44 + whups/docs/TODO | 55 + whups/docs/UPGRADING | 27 + whups/docs/lighttpd-whups.conf | 19 + whups/index.php | 31 + whups/lib/.htaccess | 1 + whups/lib/Ajax/Imple/ContactAutoCompleter.php | 162 ++ whups/lib/Api.php | 801 +++++ whups/lib/Application.php | 72 + whups/lib/Block/myqueries.php | 53 + whups/lib/Block/myrequests.php | 72 + whups/lib/Block/mytickets.php | 71 + whups/lib/Block/query.php | 113 + whups/lib/Block/queuecontents.php | 115 + whups/lib/Block/queuesummary.php | 63 + whups/lib/Block/tree_menu.php | 38 + whups/lib/Block/unassigned.php | 71 + whups/lib/Driver.php | 558 ++++ whups/lib/Driver/sql.php | 3057 ++++++++++++++++++++ whups/lib/Forms/Action.php | 36 + whups/lib/Forms/AddComment.php | 59 + whups/lib/Forms/Admin.php | 45 + whups/lib/Forms/Admin/Attribute.php | 152 + whups/lib/Forms/Admin/Priority.php | 125 + whups/lib/Forms/Admin/Queue.php | 180 ++ whups/lib/Forms/Admin/Reply.php | 113 + whups/lib/Forms/Admin/State.php | 125 + whups/lib/Forms/Admin/Type.php | 207 ++ whups/lib/Forms/Admin/User.php | 82 + whups/lib/Forms/Admin/Version.php | 104 + whups/lib/Forms/CreateTicket.php | 266 ++ whups/lib/Forms/EditTicket.php | 221 ++ whups/lib/Forms/Query.php | 476 +++ whups/lib/Forms/QueryParameterForm.php | 26 + whups/lib/Forms/Search.php | 101 + whups/lib/Forms/VarRenderer.php | 43 + whups/lib/MIME/Viewer/Zip.php | 96 + whups/lib/Mail.php | 235 ++ whups/lib/Query.php | 1058 +++++++ whups/lib/Renderer/Comment.php | 221 ++ whups/lib/Renderer/Query.php | 252 ++ whups/lib/Reports.php | 248 ++ whups/lib/Scheduler/whups.php | 47 + whups/lib/Ticket.php | 1009 +++++++ whups/lib/View.php | 37 + whups/lib/View/Results.php | 44 + whups/lib/View/SavedQueries.php | 28 + whups/lib/Whups.php | 1004 +++++++ whups/lib/base.php | 68 + whups/lib/tests/ApiTest.php | 36 + whups/lib/tests/TestBase.php | 108 + whups/locale/bg_BG/LC_MESSAGES/whups.mo | Bin 0 -> 77284 bytes whups/locale/cs_CZ/LC_MESSAGES/whups.mo | Bin 0 -> 171521 bytes whups/locale/de_DE/LC_MESSAGES/whups.mo | Bin 0 -> 197368 bytes whups/locale/en_US/help.xml | 16 + whups/locale/es_ES/LC_MESSAGES/whups.mo | Bin 0 -> 183534 bytes whups/locale/es_ES/help.xml | 16 + whups/locale/fi_FI/LC_MESSAGES/whups.mo | Bin 0 -> 183921 bytes whups/locale/fi_FI/help.xml | 14 + whups/locale/fr_FR/LC_MESSAGES/whups.mo | Bin 0 -> 181653 bytes whups/locale/it_IT/LC_MESSAGES/whups.mo | Bin 0 -> 181979 bytes whups/locale/lt_LT/LC_MESSAGES/whups.mo | Bin 0 -> 169046 bytes whups/locale/nb_NO/LC_MESSAGES/whups.mo | Bin 0 -> 117713 bytes whups/locale/nl_NL/LC_MESSAGES/whups.mo | Bin 0 -> 174197 bytes whups/locale/pl_PL/LC_MESSAGES/whups.mo | Bin 0 -> 70872 bytes whups/locale/pt_BR/LC_MESSAGES/whups.mo | Bin 0 -> 176009 bytes whups/locale/ro_RO/LC_MESSAGES/whups.mo | Bin 0 -> 43980 bytes whups/locale/ru_RU/LC_MESSAGES/whups.mo | Bin 0 -> 37042 bytes whups/locale/sl_SI/LC_MESSAGES/whups.mo | Bin 0 -> 157498 bytes whups/locale/tr_TR/LC_MESSAGES/whups.mo | Bin 0 -> 162128 bytes whups/locale/uk_UA/LC_MESSAGES/whups.mo | Bin 0 -> 146245 bytes whups/locale/zh_CN/LC_MESSAGES/whups.mo | Bin 0 -> 135480 bytes whups/locale/zh_TW/LC_MESSAGES/whups.mo | Bin 0 -> 159212 bytes whups/mybugs.php | 59 + whups/mybugs_edit.php | 37 + whups/opensearch.php | 52 + whups/po/.cvsignore | 1 + whups/po/README | 1 + whups/po/bg_BG.po | 1441 +++++++++ whups/po/cs_CZ.po | 2473 ++++++++++++++++ whups/po/de_DE.po | 2516 ++++++++++++++++ whups/po/es_ES.po | 2155 ++++++++++++++ whups/po/fi_FI.po | 2484 ++++++++++++++++ whups/po/fr_FR.po | 1519 ++++++++++ whups/po/it_IT.po | 2286 +++++++++++++++ whups/po/lt_LT.po | 2006 +++++++++++++ whups/po/nb_NO.po | 2040 +++++++++++++ whups/po/nl_NL.po | 2029 +++++++++++++ whups/po/pl_PL.po | 2014 +++++++++++++ whups/po/pt_BR.po | 1898 ++++++++++++ whups/po/ro_RO.po | 1676 +++++++++++ whups/po/ru_RU.po | 2210 ++++++++++++++ whups/po/sl_SI.po | 2078 +++++++++++++ whups/po/tr_TR.po | 2452 ++++++++++++++++ whups/po/uk_UA.po | 2461 ++++++++++++++++ whups/po/whups.pot | 2364 +++++++++++++++ whups/po/zh_CN.po | 2049 +++++++++++++ whups/po/zh_TW.po | 2321 +++++++++++++++ whups/query/.htaccess | 9 + whups/query/index.php | 246 ++ whups/query/rss.php | 72 + whups/query/run.php | 117 + whups/queue/.htaccess | 9 + whups/queue/index.php | 66 + whups/queue/rss.php | 126 + whups/reports.php | 46 + whups/scripts/.htaccess | 1 + whups/scripts/bugzilla-import.php | 251 ++ whups/scripts/mail-filter.php | 207 ++ whups/scripts/obliterate.php | 73 + whups/scripts/reminders.php | 35 + whups/scripts/sql/whups.mssql.sql | 226 ++ whups/scripts/sql/whups.oci8.sql | 226 ++ whups/scripts/sql/whups.sql | 226 ++ whups/scripts/sql/whups.xml | 1368 +++++++++ whups/scripts/upgrades/2006-07-12_add_due_date.sql | 6 + .../upgrades/2006-08-04_drop_subjectlist.sql | 4 + whups/scripts/upgrades/2008-02-27_add_defaults.sql | 3 + .../upgrades/2008-04-29_add_sql_share_tables.sql | 39 + .../2008-06-11_add_attribute_types.oci8.sql | 7 + .../2008-06-11_add_attribute_types.pgsql.sql | 14 + .../upgrades/2008-06-11_add_attribute_types.sql | 4 + .../upgrades/2008-06-13_add_queue_emails.sql | 1 + .../upgrades/2008-06-17_fix_varchar_lengths.sql | 2 + whups/scripts/upgrades/2008-06-24_add_replies.sql | 10 + .../upgrades/2008-07-10_add_query_slugs.sql | 1 + .../scripts/upgrades/2008-09-23_fix_group_uid.sql | 2 + .../2009-09-07_add_version_active.pgsql.sql | 4 + .../upgrades/2009-09-07_add_version_active.sql | 2 + .../upgrades/convert_datatree_shares_to_sql.php | 176 ++ whups/search.php | 181 ++ whups/search/rss.php | 61 + whups/templates/.htaccess | 1 + whups/templates/admin/mtmatrix.inc | 31 + whups/templates/common-header.inc | 37 + whups/templates/menu.inc | 11 + whups/templates/prefs/sourceselect.inc | 338 +++ whups/templates/prevnext.inc | 46 + whups/templates/renderer/query/edit.inc | 7 + whups/templates/renderer/query/render.inc | 5 + whups/templates/renderer/querysetcurrenttype.inc | 10 + whups/templates/reports/stats.inc | 18 + whups/templates/rss/items.rss | 23 + whups/templates/ticket/watchers.inc | 7 + whups/templates/view/results.inc | 103 + whups/templates/view/savedqueries.inc | 10 + whups/themes/feed-rss.xsl | 79 + whups/themes/graphics/admin.png | Bin 0 -> 352 bytes whups/themes/graphics/az.png | Bin 0 -> 117 bytes whups/themes/graphics/create.png | Bin 0 -> 366 bytes whups/themes/graphics/favicon.ico | Bin 0 -> 1150 bytes whups/themes/graphics/query.png | Bin 0 -> 223 bytes whups/themes/graphics/reports.png | Bin 0 -> 194 bytes whups/themes/graphics/search.png | Bin 0 -> 427 bytes whups/themes/graphics/whups.png | Bin 0 -> 352 bytes whups/themes/graphics/za.png | Bin 0 -> 119 bytes whups/themes/hordeweb/screen.css | 42 + whups/themes/screen.css | 128 + whups/themes/silver/graphics/admin.png | Bin 0 -> 841 bytes whups/themes/silver/graphics/az.png | Bin 0 -> 302 bytes whups/themes/silver/graphics/create.png | Bin 0 -> 806 bytes whups/themes/silver/graphics/favicon.ico | Bin 0 -> 1150 bytes whups/themes/silver/graphics/query.png | Bin 0 -> 634 bytes whups/themes/silver/graphics/reports.png | Bin 0 -> 918 bytes whups/themes/silver/graphics/search.png | Bin 0 -> 831 bytes whups/themes/silver/graphics/whups.png | Bin 0 -> 774 bytes whups/themes/silver/graphics/za.png | Bin 0 -> 302 bytes whups/themes/silver/screen.css | 10 + whups/themes/silver/themed_graphics | 0 whups/ticket/.htaccess | 8 + whups/ticket/comment.php | 94 + whups/ticket/create.php | 187 ++ whups/ticket/delete.php | 100 + whups/ticket/deleteAttachment.php | 38 + whups/ticket/index.php | 54 + whups/ticket/queue.php | 226 ++ whups/ticket/rss.php | 59 + whups/ticket/type.php | 152 + whups/ticket/update.php | 117 + whups/ticket/watch.php | 99 + whups/view.php | 86 + 205 files changed, 64182 insertions(+) create mode 100644 whups/LICENSE create mode 100644 whups/README create mode 100644 whups/admin/index.php create mode 100644 whups/config/.cvsignore create mode 100644 whups/config/.htaccess create mode 100644 whups/config/conf.php create mode 100644 whups/config/conf.xml create mode 100644 whups/config/create_email.txt create mode 100644 whups/config/create_email.txt.dist create mode 100644 whups/config/hooks.php.dist create mode 100644 whups/config/menu.php.dist create mode 100644 whups/config/mime_drivers.php create mode 100644 whups/config/mime_drivers.php.dist create mode 100644 whups/config/notify_email.txt create mode 100644 whups/config/notify_email.txt.dist create mode 100644 whups/config/prefs.php create mode 100644 whups/config/prefs.php.dist create mode 100644 whups/config/reminders.php.dist create mode 100644 whups/config/templates.php create mode 100644 whups/config/templates.php.dist create mode 100644 whups/data.php create mode 100644 whups/docs/CHANGES create mode 100644 whups/docs/CREDITS create mode 100644 whups/docs/INSTALL create mode 100644 whups/docs/RELEASE_NOTES create mode 100644 whups/docs/TODO create mode 100644 whups/docs/UPGRADING create mode 100644 whups/docs/lighttpd-whups.conf create mode 100644 whups/index.php create mode 100644 whups/lib/.htaccess create mode 100644 whups/lib/Ajax/Imple/ContactAutoCompleter.php create mode 100644 whups/lib/Api.php create mode 100644 whups/lib/Application.php create mode 100644 whups/lib/Block/myqueries.php create mode 100644 whups/lib/Block/myrequests.php create mode 100644 whups/lib/Block/mytickets.php create mode 100644 whups/lib/Block/query.php create mode 100644 whups/lib/Block/queuecontents.php create mode 100644 whups/lib/Block/queuesummary.php create mode 100644 whups/lib/Block/tree_menu.php create mode 100644 whups/lib/Block/unassigned.php create mode 100644 whups/lib/Driver.php create mode 100644 whups/lib/Driver/sql.php create mode 100644 whups/lib/Forms/Action.php create mode 100644 whups/lib/Forms/AddComment.php create mode 100644 whups/lib/Forms/Admin.php create mode 100644 whups/lib/Forms/Admin/Attribute.php create mode 100644 whups/lib/Forms/Admin/Priority.php create mode 100644 whups/lib/Forms/Admin/Queue.php create mode 100644 whups/lib/Forms/Admin/Reply.php create mode 100644 whups/lib/Forms/Admin/State.php create mode 100644 whups/lib/Forms/Admin/Type.php create mode 100644 whups/lib/Forms/Admin/User.php create mode 100644 whups/lib/Forms/Admin/Version.php create mode 100644 whups/lib/Forms/CreateTicket.php create mode 100644 whups/lib/Forms/EditTicket.php create mode 100644 whups/lib/Forms/Query.php create mode 100644 whups/lib/Forms/QueryParameterForm.php create mode 100644 whups/lib/Forms/Search.php create mode 100644 whups/lib/Forms/VarRenderer.php create mode 100644 whups/lib/MIME/Viewer/Zip.php create mode 100644 whups/lib/Mail.php create mode 100644 whups/lib/Query.php create mode 100755 whups/lib/Renderer/Comment.php create mode 100644 whups/lib/Renderer/Query.php create mode 100644 whups/lib/Reports.php create mode 100644 whups/lib/Scheduler/whups.php create mode 100644 whups/lib/Ticket.php create mode 100755 whups/lib/View.php create mode 100755 whups/lib/View/Results.php create mode 100755 whups/lib/View/SavedQueries.php create mode 100644 whups/lib/Whups.php create mode 100644 whups/lib/base.php create mode 100644 whups/lib/tests/ApiTest.php create mode 100644 whups/lib/tests/TestBase.php create mode 100644 whups/locale/bg_BG/LC_MESSAGES/whups.mo create mode 100644 whups/locale/cs_CZ/LC_MESSAGES/whups.mo create mode 100644 whups/locale/de_DE/LC_MESSAGES/whups.mo create mode 100644 whups/locale/en_US/help.xml create mode 100644 whups/locale/es_ES/LC_MESSAGES/whups.mo create mode 100644 whups/locale/es_ES/help.xml create mode 100644 whups/locale/fi_FI/LC_MESSAGES/whups.mo create mode 100644 whups/locale/fi_FI/help.xml create mode 100644 whups/locale/fr_FR/LC_MESSAGES/whups.mo create mode 100644 whups/locale/it_IT/LC_MESSAGES/whups.mo create mode 100644 whups/locale/lt_LT/LC_MESSAGES/whups.mo create mode 100644 whups/locale/nb_NO/LC_MESSAGES/whups.mo create mode 100644 whups/locale/nl_NL/LC_MESSAGES/whups.mo create mode 100644 whups/locale/pl_PL/LC_MESSAGES/whups.mo create mode 100644 whups/locale/pt_BR/LC_MESSAGES/whups.mo create mode 100644 whups/locale/ro_RO/LC_MESSAGES/whups.mo create mode 100644 whups/locale/ru_RU/LC_MESSAGES/whups.mo create mode 100644 whups/locale/sl_SI/LC_MESSAGES/whups.mo create mode 100644 whups/locale/tr_TR/LC_MESSAGES/whups.mo create mode 100644 whups/locale/uk_UA/LC_MESSAGES/whups.mo create mode 100644 whups/locale/zh_CN/LC_MESSAGES/whups.mo create mode 100644 whups/locale/zh_TW/LC_MESSAGES/whups.mo create mode 100644 whups/mybugs.php create mode 100644 whups/mybugs_edit.php create mode 100644 whups/opensearch.php create mode 100644 whups/po/.cvsignore create mode 100644 whups/po/README create mode 100644 whups/po/bg_BG.po create mode 100644 whups/po/cs_CZ.po create mode 100644 whups/po/de_DE.po create mode 100644 whups/po/es_ES.po create mode 100644 whups/po/fi_FI.po create mode 100644 whups/po/fr_FR.po create mode 100644 whups/po/it_IT.po create mode 100644 whups/po/lt_LT.po create mode 100644 whups/po/nb_NO.po create mode 100644 whups/po/nl_NL.po create mode 100644 whups/po/pl_PL.po create mode 100644 whups/po/pt_BR.po create mode 100644 whups/po/ro_RO.po create mode 100644 whups/po/ru_RU.po create mode 100644 whups/po/sl_SI.po create mode 100644 whups/po/tr_TR.po create mode 100644 whups/po/uk_UA.po create mode 100644 whups/po/whups.pot create mode 100644 whups/po/zh_CN.po create mode 100644 whups/po/zh_TW.po create mode 100644 whups/query/.htaccess create mode 100644 whups/query/index.php create mode 100644 whups/query/rss.php create mode 100644 whups/query/run.php create mode 100644 whups/queue/.htaccess create mode 100644 whups/queue/index.php create mode 100644 whups/queue/rss.php create mode 100644 whups/reports.php create mode 100644 whups/scripts/.htaccess create mode 100755 whups/scripts/bugzilla-import.php create mode 100755 whups/scripts/mail-filter.php create mode 100755 whups/scripts/obliterate.php create mode 100755 whups/scripts/reminders.php create mode 100644 whups/scripts/sql/whups.mssql.sql create mode 100644 whups/scripts/sql/whups.oci8.sql create mode 100644 whups/scripts/sql/whups.sql create mode 100644 whups/scripts/sql/whups.xml create mode 100644 whups/scripts/upgrades/2006-07-12_add_due_date.sql create mode 100644 whups/scripts/upgrades/2006-08-04_drop_subjectlist.sql create mode 100644 whups/scripts/upgrades/2008-02-27_add_defaults.sql create mode 100644 whups/scripts/upgrades/2008-04-29_add_sql_share_tables.sql create mode 100644 whups/scripts/upgrades/2008-06-11_add_attribute_types.oci8.sql create mode 100644 whups/scripts/upgrades/2008-06-11_add_attribute_types.pgsql.sql create mode 100644 whups/scripts/upgrades/2008-06-11_add_attribute_types.sql create mode 100644 whups/scripts/upgrades/2008-06-13_add_queue_emails.sql create mode 100644 whups/scripts/upgrades/2008-06-17_fix_varchar_lengths.sql create mode 100644 whups/scripts/upgrades/2008-06-24_add_replies.sql create mode 100644 whups/scripts/upgrades/2008-07-10_add_query_slugs.sql create mode 100644 whups/scripts/upgrades/2008-09-23_fix_group_uid.sql create mode 100644 whups/scripts/upgrades/2009-09-07_add_version_active.pgsql.sql create mode 100644 whups/scripts/upgrades/2009-09-07_add_version_active.sql create mode 100755 whups/scripts/upgrades/convert_datatree_shares_to_sql.php create mode 100644 whups/search.php create mode 100644 whups/search/rss.php create mode 100644 whups/templates/.htaccess create mode 100644 whups/templates/admin/mtmatrix.inc create mode 100644 whups/templates/common-header.inc create mode 100644 whups/templates/menu.inc create mode 100644 whups/templates/prefs/sourceselect.inc create mode 100644 whups/templates/prevnext.inc create mode 100644 whups/templates/renderer/query/edit.inc create mode 100644 whups/templates/renderer/query/render.inc create mode 100644 whups/templates/renderer/querysetcurrenttype.inc create mode 100644 whups/templates/reports/stats.inc create mode 100644 whups/templates/rss/items.rss create mode 100644 whups/templates/ticket/watchers.inc create mode 100755 whups/templates/view/results.inc create mode 100644 whups/templates/view/savedqueries.inc create mode 100644 whups/themes/feed-rss.xsl create mode 100644 whups/themes/graphics/admin.png create mode 100644 whups/themes/graphics/az.png create mode 100644 whups/themes/graphics/create.png create mode 100644 whups/themes/graphics/favicon.ico create mode 100644 whups/themes/graphics/query.png create mode 100644 whups/themes/graphics/reports.png create mode 100644 whups/themes/graphics/search.png create mode 100644 whups/themes/graphics/whups.png create mode 100644 whups/themes/graphics/za.png create mode 100644 whups/themes/hordeweb/screen.css create mode 100644 whups/themes/screen.css create mode 100644 whups/themes/silver/graphics/admin.png create mode 100644 whups/themes/silver/graphics/az.png create mode 100644 whups/themes/silver/graphics/create.png create mode 100644 whups/themes/silver/graphics/favicon.ico create mode 100644 whups/themes/silver/graphics/query.png create mode 100644 whups/themes/silver/graphics/reports.png create mode 100644 whups/themes/silver/graphics/search.png create mode 100644 whups/themes/silver/graphics/whups.png create mode 100644 whups/themes/silver/graphics/za.png create mode 100644 whups/themes/silver/screen.css create mode 100644 whups/themes/silver/themed_graphics create mode 100644 whups/ticket/.htaccess create mode 100644 whups/ticket/comment.php create mode 100644 whups/ticket/create.php create mode 100644 whups/ticket/delete.php create mode 100644 whups/ticket/deleteAttachment.php create mode 100644 whups/ticket/index.php create mode 100644 whups/ticket/queue.php create mode 100644 whups/ticket/rss.php create mode 100644 whups/ticket/type.php create mode 100644 whups/ticket/update.php create mode 100644 whups/ticket/watch.php create mode 100644 whups/view.php diff --git a/whups/LICENSE b/whups/LICENSE new file mode 100644 index 000000000..07ac8a62a --- /dev/null +++ b/whups/LICENSE @@ -0,0 +1,25 @@ +Copyright 2001-2002, Robert E. Coyle +Copyright 2001-2009 The Horde Project. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE HORDE PROJECT +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/whups/README b/whups/README new file mode 100644 index 000000000..a56bdeea8 --- /dev/null +++ b/whups/README @@ -0,0 +1,143 @@ +What is Whups? +============== + +:Last update: $Date: 2008/09/02 16:13:13 $ +:Revision: $Revision: 1.10 $ +:Contact: horde@lists.horde.org + +.. contents:: Contents +.. section-numbering:: + +Whups is a Horde ticket-tracking application. It is very flexible in design, +and can be used for help-desk requests, tracking sofware development, and +anything else that needs to track a set of requests and their status. + +This software is OSI Certified Open Source Software. OSI Certified is a +certification mark of the `Open Source Initiative`_. + +.. _`Open Source Initiative`: http://www.opensource.org/ + + +Features +-------- + +Currently Whups supports the following features: + +* Support for multiple "Queues" (aka Projects). +* Custom ticket types, states, priorities, attributes per Queue. +* Create, update, assign, close tickets. +* Search for tickets matching specific criteria. +* A complex query building for building and saving/storing custom searches. +* Guest access (in addition to login access). +* E-mail notification of changes to tickets. +* Ticket creation and updating through e-mail messages. +* Permissions support. + + +Terminology +----------- + +Queues + Project name (or other major category name). This is the top level + structure. + +Types + Project Type, each Type has the following components: + + States + State (Stage) of the current item. For example: new, open, closed, + resolved, etc. + + Priorities + Priority of the current item. For example: Critical, High, Low, Normal, + Urgent, etc. Could also be abstracted (Red, Yellow, Green; 1, 2, 3; etc) + + Attributes + From a large set of attribute types, an arbitrary number of attributes can + be added, including attribute names, descriptions, whether they are + required etc. + + Form Replies + Reply texts for updating tickets, used for automatically filling ticket + comments with stock phrases. + +Responsible Users + Users responsible for a queue. These can be anyone, but should be Horde + users. Notifications only work with Horde users who have identities with an + email address set. + +Versions + Allows you to track multiple versions of the same project. Can be used for + actual versions (CVS HEAD, 1.0, etc), development cycles (planning, + prototyping, production), etc. + +Tickets + This is an "Instance" of a Type. + + +Obtaining Whups +------------------ + +Further information on Whups and the latest version can be obtained at + + http://www.horde.org/whups/ + + +Documentation +------------- + +The following documentation is available in the Whups distribution: + +:README_: This file +:LICENSE_: Copyright and license information +:`docs/CHANGES`_: Changes by release +:`docs/CREDITS`_: Project developers +:`docs/INSTALL`_: Installation instructions and notes +:`docs/TODO`_: Development TODO list + + +Installation +------------ + +Instructions for installing Whups can be found in the file INSTALL_ in the +``docs/`` directory of the Whups distribution. + + +Assistance +---------- + +If you encounter problems with Whups, help is available! + +The Horde Frequently Asked Questions List (FAQ), available on the Web at + + http://www.horde.org/faq/ + +The Horde Project runs a number of mailing lists, for individual applications +and for issues relating to the project as a whole. Information, archives, and +subscription information can be found at + + http://www.horde.org/mail/ + +Lastly, Horde developers, contributors and users also make occasional +appearances on IRC, on the channel #horde on the freenode Network +(irc.freenode.net). + + +Licensing +--------- + +For licensing and copyright information, please see the file LICENSE_ in the +Whups distribution. + +Thanks, + +The Whups team + + +.. _README: ?f=README.html +.. _LICENSE: http://www.horde.org/licenses/bsdl.php +.. _docs/CHANGES: ?f=CHANGES.html +.. _docs/CREDITS: ?f=CREDITS.html +.. _INSTALL: +.. _docs/INSTALL: ?f=INSTALL.html +.. _docs/TODO: ?f=TODO.html diff --git a/whups/admin/index.php b/whups/admin/index.php new file mode 100644 index 000000000..ecd3b039e --- /dev/null +++ b/whups/admin/index.php @@ -0,0 +1,1259 @@ + + */ + +@define('WHUPS_BASE', dirname(dirname(__FILE__))); +require_once WHUPS_BASE . '/lib/base.php'; + +if (!Horde_Auth::isAdmin('whups:admin')) { + Horde::authenticationFailureRedirect(); +} + +// Set up the page config vars. +$showExtraForm = null; + +// Setup vars with all relevant info. +$vars = Horde_Variables::getDefaultVariables(); +if (!$vars->exists('action')) { + $vars->set('action', 'queue'); +} + +// Admin actions. +$adminurl = Horde::selfUrl(false, false); +$tabs = new Horde_Ui_Tabs('action', $vars); +$tabs->addTab(_("_Edit Queues"), $adminurl, 'queue'); +$tabs->addTab(_("Edit _Types"), $adminurl, 'type'); +$tabs->addTab(_("Queue/Type Matri_x"), $adminurl, 'mtmatrix'); +$tabs->addTab(_("Sen_d Reminders"), $adminurl, 'reminders'); + +$renderer = new Horde_Form_Renderer(); + +// start the page +function _open($isopened = false) +{ + global $vars; + static $opened; + + if ($isopened) { + return $opened; + } + + if (is_null($opened)) { + global $registry, $prefs, $browser, $conf, $notification, $title, $tabs; + + $opened = true; + $title = _("Administration"); + require WHUPS_TEMPLATES . '/common-header.inc'; + require WHUPS_TEMPLATES . '/menu.inc'; + echo $tabs->render($vars->get('action')); + } +} + +function _editStateForms() +{ + global $vars, $renderer, $adminurl; + _open(); + $form1 = new EditStateStep1Form($vars); + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + echo '
'; + $form2 = new DefaultStateForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + echo '
'; + $form3 = new AddStateForm($vars); + $form3->renderActive($renderer, $vars, $adminurl, 'post'); +} + +function _editPriorityForms() +{ + global $vars, $renderer, $adminurl; + _open(); + $form1 = new EditPriorityStep1Form($vars); + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + echo '
'; + $form2 = new DefaultPriorityForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + echo '
'; + $form3 = new AddPriorityForm($vars); + $form3->renderActive($renderer, $vars, $adminurl, 'post'); +} + +switch ($vars->get('formname')) { +case 'addtypestep1form': + require_once WHUPS_BASE . '/lib/Forms/Admin/Type.php'; + $form1 = new AddTypeStep1Form($vars); + if ($form1->validate($vars)) { + // First, add the type + $tid = $whups_driver->addType($vars->get('name'), + $vars->get('description')); + if (is_a($tid, 'PEAR_Error')) { + Horde::fatal($tid, __FILE__, __LINE__); + } + + _open(); + $vars->add('type', $tid); + $form2 = new EditTypeStep2Form($vars); + $form2->title = 'addtypestep2form'; + $form2->open($renderer, $vars, $adminurl, 'post'); + + // render the stage 1 form readonly + $form1->preserve($vars); + $renderer->beginInactive(sprintf(_("Add Type %s"), _("- Stage 1"))); + $renderer->renderFormInactive($form1, $vars); + $renderer->end(); + + // render the second stage form + $renderer->beginActive(sprintf(_("Add Type %s"), _("- Stage 2"))); + $renderer->renderFormActive($form2, $vars); + $renderer->submit(); + $renderer->end(); + + $form2->close($renderer); + } else { + _open(); + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'addtypestep2form': + require_once WHUPS_BASE . '/lib/Forms/Admin/Type.php'; + $form1 = new AddTypeStep1Form($vars); + $form2 = new EditTypeStep2Form($vars); + $form2->_name = 'addtypestep2form'; + break; + +case 'edittypestep1form': + require_once WHUPS_BASE . '/lib/Forms/Admin/Type.php'; + $form1 = new EditTypeStep1Form($vars); + $vars->set('action', 'type'); + if ($form1->validate($vars)) { + switch ($vars->get('submitbutton')) { + case _("Edit Type"): + _open(); + $form2 = new EditTypeStep2Form($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + break; + + case _("Delete Type"): + _open(); + $form2 = new DeleteTypeForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + break; + + case _("Clone Type"): + _open(); + $form2 = new CloneTypeForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + break; + } + } else { + _open(); + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'clonetypeform': + require_once WHUPS_BASE . '/lib/Forms/Admin/Type.php'; + $form = new CloneTypeForm($vars); + if ($form->validate($vars)) { + // Create a new type and copy all attributes of the clone master to + // the new type. + $tid = $vars->get('type'); + $type = $whups_driver->getType($tid); + $states = $whups_driver->getAllStateInfo($tid); + $priorities = $whups_driver->getAllPriorityInfo($tid); + $attributes = $whups_driver->getAttributeInfoFortype($tid); + + // Create the new type. + $nid = $ntype = $whups_driver->addType($vars->get('name'), + $vars->get('description')); + + // Add the states. + foreach ($states as $s) { + $whups_driver->addState($nid, $s['state_name'], + $s['state_description'], + $s['state_category']); + } + + // Add the priorities. + foreach ($priorities as $p) { + $whups_driver->addPriority($nid, $p['priority_name'], + $p['priority_description']); + } + + // Add attributes. + foreach ($attributes as $a) { + $whups_driver->addAttributeDesc($nid, $a['attribute_name'], + $a['attribute_description']); + } + + $notification->push(sprintf(_("Successfully Cloned %s to %s."), + $type['name'], $vars->get('name')), + 'horde.success'); + header('Location: ' . Horde::applicationUrl('admin/?action=type', true)); + exit; + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'edittypeform': +case 'edittypestep2form': + require_once WHUPS_BASE . '/lib/Forms/Admin/Type.php'; + $form = new EditTypeStep2Form($vars); + if ($vars->get('formname') == 'edittypestep2form' && + $form->validate($vars)) { + $result = $whups_driver->updateType($vars->get('type'), + $vars->get('name'), + $vars->get('description')); + if (is_a($result, 'PEAR_Error')) { + $notification->push(_("There was an error modifying the type:") + . ' ' . $result->getMessage(), + 'horde.error'); + } else { + $notification->push(sprintf(_("The type \"%s\" has been modified."), + $vars->get('name')), + 'horde.success'); + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'createdefaultstates': + require_once WHUPS_BASE . '/lib/Forms/Admin/Type.php'; + $type = $vars->get('type'); + foreach ($conf['states'] as $state) { + if ($state['active'] == 'active') { + $whups_driver->addState($type, $state['name'], + $state['desc'], $state['category']); + } + } + + _open(); + $form = new EditTypeStep2Form($vars); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + break; + +case 'createdefaultpriorities': + require_once WHUPS_BASE . '/lib/Forms/Admin/Type.php'; + $type = $vars->get('type'); + foreach ($conf['priorities'] as $priority) { + if ($priority['active'] == 'active') { + $whups_driver->addPriority($type, $priority['name'], + $priority['desc']); + } + } + + _open(); + $form = new EditTypeStep2Form($vars); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + break; + +case 'deletetypeform': + require_once WHUPS_BASE . '/lib/Forms/Admin/Type.php'; + $form = new DeleteTypeForm($vars); + if ($form->validate($vars)) { + if ($vars->get('yesno') == 1) { + $result = $whups_driver->deleteType($vars->get('type')); + if (!is_a($result, 'PEAR_Error')) { + $notification->push(_("The type has been deleted."), + 'horde.success'); + } else { + $notification->push(_("There was an error deleting the type:") + . ' ' . $result->getMessage(), + 'horde.error'); + } + } else { + $notification->push(_("The type was not deleted."), + 'horde.message'); + } + $vars->set('action', 'type'); + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'addqueueform': + require_once WHUPS_BASE . '/lib/Forms/Admin/Queue.php'; + $form = new AddQueueForm($vars); + if ($form->validate($vars)) { + $result = $whups_driver->addQueue($vars->get('name'), + $vars->get('description'), + $vars->get('slug'), + $vars->get('email')); + if (!is_a($result, 'PEAR_Error')) { + $notification->push( + sprintf(_("The queue \"%s\" has been created."), + $vars->get('name')), + 'horde.success'); + + _open(); + $vars->set('queue', $result); + $form2 = new EditQueueStep2Form($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + } else { + $notification->push(_("There was an error creating the queue:") + . ' ' . $result->getMessage(), + 'horde.error'); + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'editqueuestep1form': + require_once WHUPS_BASE . '/lib/Forms/Admin/Queue.php'; + $form1 = new EditQueueStep1Form($vars); + if ($form1->validate($vars)) { + switch ($vars->get('submitbutton')) { + case _("Edit Queue"): + _open(); + $form2 = new EditQueueStep2Form($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + break; + + case _("Delete Queue"): + _open(); + $form2 = new DeleteQueueForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + break; + } + } else { + _open(); + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'editqueueform': +case 'editqueuestep2form': + require_once WHUPS_BASE . '/lib/Forms/Admin/Queue.php'; + $form = new EditQueueStep2Form($vars); + + if ($vars->get('formname') == 'editqueuestep2form' && + $form->validate($vars)) { + $result = $whups_driver->updateQueue($vars->get('queue'), + $vars->get('name'), + $vars->get('description'), + $vars->get('types'), + $vars->get('versioned'), + $vars->get('slug'), + $vars->get('email'), + $vars->get('default')); + if (!is_a($result, 'PEAR_Error')) { + $notification->push(_("The queue has been modified."), + 'horde.success'); + if (!$perms->exists('whups:queues:' . $vars->get('queue') . ':update')) { + $p = &$perms->newPermission('whups:queues:' + . $vars->get('queue') . ':update'); + $perms->addPermission($p); + } + if (!$perms->exists('whups:queues:' . $vars->get('queue') . ':assign')) { + $p = &$perms->newPermission('whups:queues:' + . $vars->get('queue') . ':assign'); + $perms->addPermission($p); + } + + _open(); + $form->renderInactive($renderer, $vars); + } else { + $notification->push(_("There was an error editing the queue:") + . ' ' . $result->getMessage(), + 'horde.error'); + } + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'deletequeueform': + require_once WHUPS_BASE . '/lib/Forms/Admin/Queue.php'; + $form = new DeleteQueueForm($vars); + if ($form->validate($vars)) { + if ($vars->get('yesno') == 1) { + $result = $whups_driver->deleteQueue($vars->get('queue')); + if (!is_a($result, 'PEAR_Error')) { + $notification->push( _("The queue has been deleted."), + 'horde.success'); + } else { + $notification->push(_("There was an error deleting the queue:") + . ' ' . $result->getMessage(), + 'horde.error'); + } + } else { + $notification->push(_("The queue was not deleted."), + 'horde.message'); + } + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'addstateform': + require_once WHUPS_BASE . '/lib/Forms/Admin/State.php'; + $vars->set('action', 'type'); + $form = new AddStateForm($vars); + if ($form->validate($vars)) { + $result = $whups_driver->addState($vars->get('type'), + $vars->get('name'), + $vars->get('description'), + $vars->get('category')); + if (!is_a($result, 'PEAR_Error')) { + $typename = $whups_driver->getType($vars->get('type')); + $typename = $typename['name']; + $notification->push( + sprintf(_("The state \"%s\" has been added to %s."), + $vars->get('name'), $typename), + 'horde.success'); + } else { + $notification->push(_("There was an error creating the state:") + . ' ' . $result->getMessage(), + 'horde.error'); + } + + $vars = new Horde_Variables(array('type' => $vars->get('type'))); + _editStateForms(); + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'editstatestep1form': + require_once WHUPS_BASE . '/lib/Forms/Admin/State.php'; + $vars->set('action', 'type'); + if (!$vars->get('submitbutton')) { + _editStateForms(); + } else { + _open(); + $form1 = new EditStateStep1Form($vars); + if ($form1->validate($vars)) { + switch ($vars->get('submitbutton')) { + case _("Edit State"): + $form2 = new EditStateStep2Form($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + break; + + case _("Delete State"): + $form2 = new DeleteStateForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + break; + } + } else { + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + } + } + break; + +case 'editstatestep2form': + require_once WHUPS_BASE . '/lib/Forms/Admin/State.php'; + $vars->set('action', 'type'); + $form = new EditStateStep2Form($vars); + if ($form->validate($vars)) { + $result = $whups_driver->updateState($vars->get('state'), + $vars->get('name'), + $vars->get('description'), + $vars->get('category')); + if (!is_a($result, 'PEAR_Error')) { + $notification->push(_("The state has been modified."), + 'horde.success'); + _open(); + $form->renderInactive($renderer, $vars); + } else { + $notification->push(_("There was an error editing the state:") + . ' ' . $result->getMessage(), + 'horde.error'); + } + + $vars = new Horde_Variables(array('type' => $vars->get('type'))); + _editStateForms(); + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'defaultstateform': + require_once WHUPS_BASE . '/lib/Forms/Admin/State.php'; + $vars->set('action', 'type'); + $form = new DefaultStateForm($vars); + if ($form->validate($vars)) { + $result = $whups_driver->setDefaultState($vars->get('type'), + $vars->get('state')); + if (is_a($result, 'PEAR_Error')) { + $notification->push( + _("There was an error setting the default state:") . ' ' + . $result->getMessage(), + 'horde.error'); + } else { + $notification->push(_("The default state has been set."), + 'horde.success'); + } + + _editStateForms(); + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'deletestateform': + require_once WHUPS_BASE . '/lib/Forms/Admin/State.php'; + $vars->set('action', 'type'); + $form = new DeleteStateForm($vars); + if ($form->validate($vars)) { + if ($vars->get('yesno') == 1) { + $result = $whups_driver->deleteState($vars->get('state')); + if (!is_a($result, 'PEAR_Error')) { + $notification->push(_("The state has been deleted."), + 'horde.success'); + } else { + $notification->push(_("There was an error deleting the state:") + . ' ' . $result->getMessage(), + 'horde.error'); + } + } else { + $notification->push(_("The state was not deleted."), + 'horde.message'); + } + + _editStateForms(); + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'addpriorityform': + require_once WHUPS_BASE . '/lib/Forms/Admin/Priority.php'; + $vars->set('action', 'type'); + $form = new AddPriorityForm($vars); + if ($form->validate($vars)) { + $result = $whups_driver->addPriority($vars->get('type'), + $vars->get('name'), + $vars->get('description')); + if (!is_a($result, 'PEAR_Error')) { + $typename = $whups_driver->getType($vars->get('type')); + $typename = $typename['name']; + $notification->push( + sprintf(_("The priority \"%s\" has been added to %s."), + $vars->get('name'), $typename), + 'horde.success'); + } else { + $notification->push( + _("There was an error creating the priority:") . ' ' + . $result->getMessage(), + 'horde.error'); + } + + $vars = new Horde_Variables(array('type' => $vars->get('type'))); + _editPriorityForms(); + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'editprioritystep1form': + require_once WHUPS_BASE . '/lib/Forms/Admin/Priority.php'; + $vars->set('action', 'type'); + if (!$vars->get('submitbutton')) { + _editPriorityForms(); + } else { + _open(); + $form1 = new EditPriorityStep1Form($vars); + if ($form1->validate($vars)) { + switch ($vars->get('submitbutton')) { + case _("Edit Priority"): + $form2 = new EditPriorityStep2Form($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + break; + + case _("Delete Priority"): + $form2 = new DeletePriorityForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + break; + } + } else { + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + } + } + break; + +case 'editprioritystep2form': + require_once WHUPS_BASE . '/lib/Forms/Admin/Priority.php'; + $vars->set('action', 'type'); + $form = new EditPriorityStep2Form($vars); + if ($form->validate($vars)) { + $result = $whups_driver->updatePriority($vars->get('priority'), + $vars->get('name'), + $vars->get('description')); + if (!is_a($result, 'PEAR_Error')) { + $notification->push(_("The priority has been modified."), + 'horde.success'); + + _open(); + $form->renderInactive($renderer, $vars); + } else { + $notification->push(_("There was an error editing the priority:") + . ' ' . $result->getMessage(), + 'horde.error'); + } + + $vars = new Horde_Variables(array('type' => $vars->get('type'))); + + _editPriorityForms(); + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'defaultpriorityform': + require_once WHUPS_BASE . '/lib/Forms/Admin/Priority.php'; + $vars->set('action', 'type'); + $form = new DefaultPriorityForm($vars); + if ($form->validate($vars)) { + $result = $whups_driver->setDefaultPriority($vars->get('type'), + $vars->get('priority')); + if (is_a($result, 'PEAR_Error')) { + $notification->push( + _("There was an error setting the default priority:") . ' ' + . $result->getMessage(), + 'horde.error'); + } else { + $notification->push(_("The default priority has been set."), + 'horde.success'); + } + + _editPriorityForms(); + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'deletepriorityform': + require_once WHUPS_BASE . '/lib/Forms/Admin/Priority.php'; + $vars->set('action', 'type'); + $form = new DeletePriorityForm($vars); + if ($form->validate($vars)) { + if ($vars->get('yesno') == 1) { + $result = $whups_driver->deletePriority($vars->get('priority')); + if (!is_a($result, 'PEAR_Error')) { + $notification->push(_("The priority has been deleted."), + 'horde.success'); + } else { + $notification->push( + _("There was an error deleting the priority:") . ' ' + . $result->getMessage(), + 'horde.error'); + } + } else { + $notification->push(_("The priority was not deleted."), + 'horde.message'); + } + + _editPriorityForms(); + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'adduserform': + require_once WHUPS_BASE . '/lib/Forms/Admin/User.php'; + $form = new AddUserForm($vars); + if ($form->validate($vars)) { + $info = $whups_driver->getQueue($vars->get('queue')); + $result = $whups_driver->addQueueUser($vars->get('queue'), + $vars->get('user')); + if (!is_a($result, 'PEAR_Error')) { + $user = $vars->get('user'); + if (is_array($user)) { + $userinfo = array(); + foreach ($user as $userID) { + $userinfo[] = Whups::formatUser($userID); + } + $userinfo = implode(', ', $userinfo); + } else { + $userinfo = Whups::formatUser($user); + } + $notification->push( + sprintf(_("%s added to those responsible for \"%s\""), + $userinfo, $info['name']), + 'horde.success'); + } else { + $notification->push( + sprintf(_("There was an error adding \"%s\" to the responsible list for \"%s\":"), + Whups::formatUser($vars->get('user')), + $info['name']) + . ' ' . $result->getMessage(), + 'horde.error'); + } + } + + _open(); + $form1 = new EditUserStep1Form($vars); + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + echo '
'; + $vars = new Horde_Variables(array('queue' => $vars->get('queue'))); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + break; + +case 'edituserform': + require_once WHUPS_BASE . '/lib/Forms/Admin/User.php'; + $form1 = new EditUserStep1Form($vars); + $form2 = new AddUserForm($vars); + + _open(); + + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + echo '
'; + + $vars = new Horde_Variables(array('queue' => $vars->get('queue'))); + $form2 = new AddUserForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + break; + +case 'edituserstep1form': + require_once WHUPS_BASE . '/lib/Forms/Admin/User.php'; + $form = new EditUserStep1Form($vars); + if ($form->validate($vars)) { + $info = $whups_driver->getQueue($vars->get('queue')); + $result = $whups_driver->removeQueueUser($vars->get('queue'), + $vars->get('user')); + if (!is_a($result, 'PEAR_Error')) { + $notification->push( + sprintf(_("\"%s\" is no longer among those responsible for \"%s\""), + Whups::formatUser($vars->get('user')), $info['name']), + 'horde.success'); + } else { + $notification->push( + sprintf(_("There was an error removing \"%s\" from the responsible list for \"%s\":"), + Whups::formatUser($vars->get('user')), $info['name']) + . ' ' . $result->getMessage(), + 'horde.error'); + } + } + + _open(); + $vars = new Horde_Variables(array('queue' => $vars->get('queue'))); + $form = new EditUserStep1Form($vars); + $form->renderActive($renderer, $vars, $adminurl, 'get'); + $form1 = new AddUserForm($vars); + $form1->renderActive($renderer, $vars, $adminurl, 'get'); + break; + +case 'addversionform': + require_once WHUPS_BASE . '/lib/Forms/Admin/Version.php'; + $form = new AddVersionForm($vars); + if ($form->validate($vars)) { + $result = $whups_driver->addVersion($vars->get('queue'), + $vars->get('name'), + $vars->get('description'), + $vars->get('active') == 'on'); + if (!is_a($result, 'PEAR_Error')) { + $queuename = $whups_driver->getQueue($vars->get('queue')); + $queuename = $queuename['name']; + $notification->push( + sprintf(_("The version \"%s\" has been added to %s."), + $vars->get('name'), $queuename), + 'horde.success'); + } else { + $notification->push(_("There was an error creating the version:") + . ' ' . $result->getMessage(), + 'horde.error'); + } + + _open(); + $vars = new Horde_Variables(array('queue' => $vars->get('queue'))); + $form1 = new EditVersionStep1Form($vars); + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + $form2 = new AddVersionForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'editversionstep1form': + require_once WHUPS_BASE . '/lib/Forms/Admin/Version.php'; + $form1 = new EditVersionStep1Form($vars); + + _open(); + + if (!$vars->get('submitbutton')) { + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + + $form2 = new AddVersionForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + } else { + if ($form1->validate($vars)) { + switch ($vars->get('submitbutton')) { + case _("Edit Version"): + $form2 = new EditVersionStep2Form($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + break; + + case _("Delete Version"): + $form2 = new DeleteVersionForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + break; + } + } else { + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + } + } + break; + +case 'editversionstep2form': + require_once WHUPS_BASE . '/lib/Forms/Admin/Version.php'; + $form = new EditVersionStep2Form($vars); + if ($form->validate($vars)) { + $result = $whups_driver->updateVersion($vars->get('version'), + $vars->get('name'), + $vars->get('description'), + $vars->get('active') == 'on'); + if (!is_a($result, 'PEAR_Error')) { + $notification->push(_("The version has been modified."), + 'horde.success'); + + _open(); + $form->renderInactive($renderer, $vars); + } else { + $notification->push(_("There was an error editing the version:") + . ' ' . $result->getMessage(), + 'horde.error'); + } + + _open(); + $vars = new Horde_Variables(array('queue' => $vars->get('queue'))); + $form1 = new EditVersionStep1Form($vars); + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + $form2 = new AddVersionForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'deleteversionform': + require_once WHUPS_BASE . '/lib/Forms/Admin/Version.php'; + $form = new DeleteVersionForm($vars); + if ($form->validate($vars)) { + if ($vars->get('yesno') == 1) { + $result = $whups_driver->deleteVersion($vars->get('version')); + if (!is_a($result, 'PEAR_Error')) { + $notification->push(_("The version has been deleted."), + 'horde.success'); + } else { + $notification->push(_("There was an error deleting the version:") + . ' ' . $result->getMessage(), + 'horde.error'); + } + } else { + $notification->push(_("The version was not deleted."), + 'horde.message'); + } + + _open(); + $form1 = new EditVersionStep1Form($vars); + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + $form2 = new AddVersionForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'addattributedescform': +case 'addattributedescform_reload': + require_once WHUPS_BASE . '/lib/Forms/Admin/Attribute.php'; + $form = new AddAttributeDescForm($vars); + $vars->set('action', 'type'); + if ($vars->get('formname') == 'addattributedescform' && + $form->validate($vars)) { + $result = $whups_driver->addAttributeDesc( + $vars->get('type'), + $vars->get('attribute_name'), + $vars->get('attribute_description'), + $vars->get('attribute_type'), + $vars->get('attribute_params'), + $vars->get('attribute_required')); + if (!is_a($result, 'PEAR_Error')) { + $typename = $whups_driver->getType($vars->get('type')); + $typename = $typename['name']; + $notification->push( + sprintf(_("The attribute \"%s\" has been added to %s."), + $vars->get('attribute_name'), $typename), + 'horde.success'); + $vars = new Horde_Variables(array('type' => $vars->get('type'))); + } else { + $notification->push(_("There was an error creating the attribute:") + . ' ' . $result->getMessage(), + 'horde.error'); + } + + _open(); + $form1 = new EditAttributeDescStep1Form($vars); + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + echo '
'; + $form2 = new AddAttributeDescForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'editattributedescstep1form': + require_once WHUPS_BASE . '/lib/Forms/Admin/Attribute.php'; + $form1 = new EditAttributeDescStep1Form($vars); + $vars->set('action', 'type'); + _open(); + if (!$vars->get('submitbutton')) { + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + echo '
'; + + $form2 = new AddAttributeDescForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + } else { + if ($form1->validate($vars)) { + switch ($vars->get('submitbutton')) { + case _("Edit Attribute"): + $form2 = new EditAttributeDescStep2Form($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + break; + + case _("Delete Attribute"): + $form2 = new DeleteAttributeDescForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + break; + } + } else { + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + } + } + break; + +case 'editattributedescstep2form': +case 'editattributedescstep2form_reload': + require_once WHUPS_BASE . '/lib/Forms/Admin/Attribute.php'; + $form = new EditAttributeDescStep2Form($vars); + $vars->set('action', 'type'); + if ($vars->get('formname') == 'editattributedescstep2form' && + $form->validate($vars)) { + $form->getInfo($vars, $info); + $result = $whups_driver->updateAttributeDesc( + $info['attribute'], + $info['attribute_name'], + $info['attribute_description'], + $info['attribute_type'], + $info['attribute_params'], + $info['attribute_required']); + if (!is_a($result, 'PEAR_Error')) { + $notification->push( _("The attribute has been modified."), + 'horde.success'); + + _open(); + $form->renderInactive($renderer, $vars); + echo '
'; + $vars = new Horde_Variables(array('type' => $vars->get('type'))); + } else { + $notification->push(_("There was an error editing the attribute:") + . ' ' . $result->getMessage(), + 'horde.error'); + } + + _open(); + $form1 = new EditAttributeDescStep1Form($vars); + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + echo '
'; + $form2 = new AddAttributeDescForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'deleteattributedescform': + require_once WHUPS_BASE . '/lib/Forms/Admin/Attribute.php'; + $form = new DeleteAttributeDescForm($vars); + if ($form->validate($vars)) { + if ($vars->get('yesno') == 1) { + $result = $whups_driver->deleteAttributeDesc($vars->get('attribute')); + if (!is_a($result, 'PEAR_Error')) { + $notification->push(_("The attribute has been deleted."), + 'horde.success'); + } else { + $notification->push( + _("There was an error deleting the attribute:") + . ' ' . $result->getMessage(), + 'horde.error'); + } + } else { + $notification->push(_("The attribute was not deleted."), + 'horde.message'); + } + + _open(); + $form1 = new EditAttributeDescStep1Form($vars); + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + $form2 = new AddAttributeDescForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'addreplyform': + require_once WHUPS_BASE . '/lib/Forms/Admin/Reply.php'; + $form = new AddReplyForm($vars); + $vars->set('action', 'type'); + if ($form->validate($vars)) { + $result = $whups_driver->addReply( + $vars->get('type'), + $vars->get('reply_name'), + $vars->get('reply_text')); + if (!is_a($result, 'PEAR_Error')) { + $typename = $whups_driver->getType($vars->get('type')); + $typename = $typename['name']; + $notification->push( + sprintf(_("The form reply \"%s\" has been added to %s."), + $vars->get('reply_name'), $typename), + 'horde.success'); + _open(); + $vars->set('reply', $result); + $form = new EditReplyStep2Form($vars); + $form->renderInactive($renderer, $vars); + } else { + $notification->push(_("There was an error creating the form reply:") + . ' ' . $result->getMessage(), + 'horde.error'); + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'editreplystep1form': + require_once WHUPS_BASE . '/lib/Forms/Admin/Reply.php'; + $form1 = new EditReplyStep1Form($vars); + $vars->set('action', 'type'); + _open(); + if (!$vars->get('submitbutton')) { + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + echo '
'; + + $form2 = new AddReplyForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + } else { + if ($form1->validate($vars)) { + switch ($vars->get('submitbutton')) { + case _("Edit Form Reply"): + $form2 = new EditReplyStep2Form($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + break; + + case _("Delete Form Reply"): + $form2 = new DeleteReplyForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + break; + } + } else { + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + } + } + break; + +case 'editreplystep2form': + require_once WHUPS_BASE . '/lib/Forms/Admin/Reply.php'; + $form = new EditReplyStep2Form($vars); + $vars->set('action', 'type'); + if ($vars->get('formname') == 'editreplystep2form' && + $form->validate($vars)) { + $result = $whups_driver->updateReply( + $vars->get('reply'), + $vars->get('reply_name'), + $vars->get('reply_text')); + if (is_a($result, 'PEAR_Error')) { + $notification->push(_("There was an error editing the form reply:") + . ' ' . $result->getMessage(), + 'horde.error'); + } else { + $notification->push( _("The form reply has been modified."), + 'horde.success'); + _open(); + $form->renderInactive($renderer, $vars); + echo '
'; + $vars = new Horde_Variables(array('type' => $vars->get('type'))); + } + + _open(); + $form1 = new EditReplyStep1Form($vars); + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + echo '
'; + $form2 = new AddReplyForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'deletereplyform': + require_once WHUPS_BASE . '/lib/Forms/Admin/Reply.php'; + $form = new DeleteReplyForm($vars); + if ($form->validate($vars)) { + if ($vars->get('yesno') == 1) { + $result = $whups_driver->deleteReply($vars->get('reply')); + if (!is_a($result, 'PEAR_Error')) { + $notification->push(_("The form reply has been deleted."), + 'horde.success'); + } else { + $notification->push( + _("There was an error deleting the form reply:") + . ' ' . $result->getMessage(), + 'horde.error'); + } + } else { + $notification->push(_("The form reply was not deleted."), + 'horde.message'); + } + + _open(); + $form1 = new EditReplyStep1Form($vars); + $form1->renderActive($renderer, $vars, $adminurl, 'post'); + echo '
'; + $form2 = new AddReplyForm($vars); + $form2->renderActive($renderer, $vars, $adminurl, 'post'); + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'sendreminderform': + require_once WHUPS_BASE . '/lib/Forms/Admin.php'; + $form = new SendReminderForm($vars); + if ($form->validate($vars)) { + $result = Whups::sendReminders($vars); + if (is_a($result, 'PEAR_Error')) { + $notification->push($result, 'horde.error'); + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } else { + $notification->push(_("Reminders were sent."), 'horde.success'); + } + } else { + _open(); + $form->renderActive($renderer, $vars, $adminurl, 'post'); + } + break; + +case 'mtmatrix': + $vars->set('action', 'mtmatrix'); + $queues = $whups_driver->getQueues(); + $types = $whups_driver->getAllTypes(); + $matrix = $vars->get('matrix'); + + // Validate data. + $pairs = array(); + if (!empty($matrix)) { + foreach ($matrix as $mid => $mtypes) { + if (isset($queues[$mid])) { + foreach ($mtypes as $tid => $on) { + if (isset($types[$tid])) { + $pairs[] = array($mid, $tid); + } + } + } + } + } + + $result = $whups_driver->updateTypesQueues($pairs); + if (is_a($result, 'PEAR_Error')) { + $notification->push($result, 'horde.error'); + } else { + $notification->push(_("Associations updated successfully."), + 'horde.success'); + } + break; +} + +if (!_open(true)) { + // Check for actions. + switch ($vars->get('action')) { + case 'type': + require_once WHUPS_BASE . '/lib/Forms/Admin/Type.php'; + if (count($whups_driver->getAllTypes())) { + $main1 = new EditTypeStep1Form($vars); + } + $main2 = new AddTypeStep1Form($vars); + break; + + case 'reminders': + require_once WHUPS_BASE . '/lib/Forms/Admin.php'; + $main1 = new SendReminderForm($vars); + break; + + case 'mtmatrix': + _open(); + $queues = $whups_driver->getQueues(); + $types = $whups_driver->getAllTypes(); + $tlink = Horde::applicationUrl('admin/?formname=edittypeform'); + $mlink = Horde::applicationUrl('admin/?formname=editqueueform'); + require WHUPS_TEMPLATES . '/admin/mtmatrix.inc'; + break; + + case 'queue': + require_once WHUPS_BASE . '/lib/Forms/Admin/Queue.php'; + if (count($whups_driver->getQueues())) { + $main1 = new EditQueueStep1Form($vars); + } + if ($registry->hasMethod('tickets/listQueues') == $registry->getApp()) { + $main2 = new AddQueueForm($vars); + } + break; + } + + _open(); + if (isset($main1)) { + $main1->renderActive($renderer, $vars, $adminurl, 'get'); + } + if (isset($main1) && isset($main2)) { + echo '
'; + } + if (isset($main2)) { + $main2->renderActive($renderer, $vars, $adminurl, 'get'); + } +} + +_open(); +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/whups/config/.cvsignore b/whups/config/.cvsignore new file mode 100644 index 000000000..dd1dda56f --- /dev/null +++ b/whups/config/.cvsignore @@ -0,0 +1,10 @@ +conf.php +conf.bak.php +create_email*.txt +hooks.php +menu.php +mime_drivers.php +notify_email*.txt +prefs.php +reminders.php +templates.php diff --git a/whups/config/.htaccess b/whups/config/.htaccess new file mode 100644 index 000000000..3a4288278 --- /dev/null +++ b/whups/config/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/whups/config/conf.php b/whups/config/conf.php new file mode 100644 index 000000000..4b10cef7a --- /dev/null +++ b/whups/config/conf.php @@ -0,0 +1,53 @@ + + + + + + sql + + + + + + + + + + + + false + + + /usr/share/games/figlet/fonts/big.flf + + + + + + + + + + false + false + new + + new + chronological + revchronological + + + true + 127.0.0.1 + 80 + + + + + + + User Preference Attributes + bug|ticket|issue + false + + + Menu Settings + + + + + + + + + + + + active + + + Unconfirmed + A ticket has been reported but not yet analyzed + unconfirmed + + + unconfirmed + new + assigned + resolved + + + + + + + active + + + Accepted + The ticket has been analyzed and accepted as valid. + new + + + unconfirmed + new + assigned + resolved + + + + + + + active + + + Assigned + Someone has accepted responsibility for the ticket. + assigned + + + unconfirmed + new + assigned + resolved + + + + + + + active + + + Resolved + The ticket has been resolved. + resolved + + + unconfirmed + new + assigned + resolved + + + + + + + active + + + Canceled + The ticket is no longer valid for one reason or another. + resolved + + + unconfirmed + new + assigned + resolved + + + + + + + inactive + + + + + + + + unconfirmed + new + assigned + resolved + + + + + + + inactive + + + + + + + + unconfirmed + new + assigned + resolved + + + + + + + inactive + + + + + + + + unconfirmed + new + assigned + resolved + + + + + + + + + + + + active + + + 1. Low + This is a very low priority ticket + + + + + active + + + 2. Medium + This is an important task, but not urgent. + + + + + active + + + 3. High + This ticket is very urgent + + + + + inactive + + + + + + + + + inactive + + + + + + + + + inactive + + + + + + + + + + diff --git a/whups/config/create_email.txt b/whups/config/create_email.txt new file mode 100644 index 000000000..a251e780e --- /dev/null +++ b/whups/config/create_email.txt @@ -0,0 +1,2 @@ +@@dont_reply@@@@ticket_url@@ +@@table@@@@comment@@ diff --git a/whups/config/create_email.txt.dist b/whups/config/create_email.txt.dist new file mode 100644 index 000000000..a251e780e --- /dev/null +++ b/whups/config/create_email.txt.dist @@ -0,0 +1,2 @@ +@@dont_reply@@@@ticket_url@@ +@@table@@@@comment@@ diff --git a/whups/config/hooks.php.dist b/whups/config/hooks.php.dist new file mode 100644 index 000000000..6afb4871c --- /dev/null +++ b/whups/config/hooks.php.dist @@ -0,0 +1,66 @@ + $common_fields, +// 'Attributes' => $attributes); +// } + + /** + * This is an example hook that intercepts ticket changes. + * + * If a comment has been added to a closed ticket, it will re-open the + * ticket, setting the state to "assigned". You might want to use numeric + * ids for the 'to' item in a real life hook. + */ +// public function ticket_update($ticket, $changes) +// { +// /* We only want to change the ticket state if it is closed, a comment +// * has been added, and the state hasn't been changed already. */ +// if (!empty($changes['comment']) && +// empty($changes['state']) && +// $ticket->get('state_category') == 'resolved') { +// /* Pick the first state from the state category 'assigned'. */ +// $states = $GLOBALS['whups_driver']->getStates($ticket->get('type'), +// 'assigned'); +// /* These three item have to exist in a change set. */ +// $changes['state'] = array( +// 'to' => key($states), +// 'from' => $ticket->get('state'), +// 'from_name' => $ticket->get('state_name')); +// } +// +// return $changes; +// } + +} diff --git a/whups/config/menu.php.dist b/whups/config/menu.php.dist new file mode 100644 index 000000000..c4510b2a8 --- /dev/null +++ b/whups/config/menu.php.dist @@ -0,0 +1,41 @@ + 'http://www.example.com/', + * 'text' => 'Example, Inc.', + * 'icon' => 'example.gif', + * 'icon_path' => 'http://www.example.com/images/', + * 'target' => '_blank', + * 'onclick' => '' + * ); + * + * You can also add a "separator" (a spacer) between menu items. To add a + * separator, simply add a new string to the $_menu array set to the text + * 'separator'. It should look like this: + * + * $_menu[] = 'separator'; + */ + +$_menu = array(); + +/* Add your custom entries below this line. */ diff --git a/whups/config/mime_drivers.php b/whups/config/mime_drivers.php new file mode 100644 index 000000000..436e9308d --- /dev/null +++ b/whups/config/mime_drivers.php @@ -0,0 +1,39 @@ + 'compressed.png'); diff --git a/whups/config/mime_drivers.php.dist b/whups/config/mime_drivers.php.dist new file mode 100644 index 000000000..436e9308d --- /dev/null +++ b/whups/config/mime_drivers.php.dist @@ -0,0 +1,39 @@ + 'compressed.png'); diff --git a/whups/config/notify_email.txt b/whups/config/notify_email.txt new file mode 100644 index 000000000..a251e780e --- /dev/null +++ b/whups/config/notify_email.txt @@ -0,0 +1,2 @@ +@@dont_reply@@@@ticket_url@@ +@@table@@@@comment@@ diff --git a/whups/config/notify_email.txt.dist b/whups/config/notify_email.txt.dist new file mode 100644 index 000000000..a251e780e --- /dev/null +++ b/whups/config/notify_email.txt.dist @@ -0,0 +1,2 @@ +@@dont_reply@@@@ticket_url@@ +@@table@@@@comment@@ diff --git a/whups/config/prefs.php b/whups/config/prefs.php new file mode 100644 index 000000000..7cabb9121 --- /dev/null +++ b/whups/config/prefs.php @@ -0,0 +1,175 @@ + _("General Options"), + 'label' => _("Display Options"), + 'desc' => _("Change display options such as how search results are sorted."), + 'members' => array('sortby', 'sortdir', 'comment_sort_dir', 'whups_default_view', 'summary_show_requested', 'summary_show_ticket_numbers', 'report_time_format', 'autolink_tickets') +); + +$prefGroups['notification'] = array( + 'column' => _("General Options"), + 'label' => _("Notification Options"), + 'desc' => _("Change options for email notifications of ticket activity."), + 'members' => array('email_others_only', 'email_comments_only')); + +if ($GLOBALS['registry']->hasMethod('contacts/sources')) { + $prefGroups['addressbooks'] = array( + 'column' => _("General Options"), + 'label' => _("Address Books"), + 'desc' => _("Select address book sources for adding and searching for addresses."), + 'members' => array('sourceselect'), + ); +} + + +// the layout of the bugs portal. +$_prefs['mybugs_layout'] = array( + 'value' => 'a:0:{}', + 'locked' => false, + 'shared' => false, + 'type' => 'implicit' +); + +// user preferred sorting column +$_prefs['sortby'] = array( + 'value' => 'id', + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array('id' => _("Id"), + 'summary' => _("Summary"), + 'state_name' => _("State"), + 'type_name' => _("Type"), + 'priority_name' => _("Priority"), + 'queue_name' => _("Queue"), + 'version_name' => _("Version"), + 'timestamp' => _("Created"), + 'date_assigned' => _("Assigned"), + 'date_resolved' => _("Resolved")), + 'desc' => _("Default sorting criteria:") +); + +// user preferred sorting direction +$_prefs['sortdir'] = array( + 'value' => 0, + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array(0 => _("Ascending"), + 1 => _("Descending")), + 'desc' => _("Default sorting direction:") +); + +// default view +$_prefs['whups_default_view'] = array( + 'value' => 'mybugs', + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array('mybugs' => _("My Tickets"), + 'search' => _("Search Tickets"), + 'ticket/create' => _("Create Ticket")), + 'desc' => _("Select the view to display after login:") +); + +// show requested tickets in the horde summary? +$_prefs['summary_show_requested'] = array( + 'value' => 1, + 'locked' => false, + 'shared' => false, + 'type' => 'checkbox', + 'desc' => _("Show tickets you have requested in the summary view?")); + +// show ticket ids in the horde summary? +$_prefs['summary_show_ticket_numbers'] = array( + 'value' => 1, + 'locked' => false, + 'shared' => false, + 'type' => 'checkbox', + 'desc' => _("Show ticket IDs in the summary view?") +); + +// Allow custom time/date formats in reports +$_prefs['report_time_format'] = array( + 'value' => '%m/%d/%y', + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array('%a %d %B' => _("Weekday Day Month"), + '%c' => _("Weekday Day Month HH:MM:SS TZ"), + '%m/%d/%y' => _("MM/DD/YY"), + '%m/%d/%y %H:%M:%S' => _("MM/DD/YY HH:MM:SS")), + 'desc' => _("Date/Time format for search results") +); + +// Skip notification of changes you added? +$_prefs['email_others_only'] = array( + 'value' => 1, + 'locked' => false, + 'shared' => false, + 'type' => 'checkbox', + 'desc' => _("Only notify me of ticket changes from other users?") +); + +// Skip notification without comments? +$_prefs['email_comments_only'] = array( + 'value' => 0, + 'locked' => false, + 'shared' => false, + 'type' => 'checkbox', + 'desc' => _("Only notify me of ticket changes with comments?") +); + +// AutoLink to tickets references in comments +$_prefs['autolink_tickets'] = array( + 'value' => 1, + 'locked' => false, + 'shared' => false, + 'type' => 'checkbox', + 'desc' => _("Autolink to other tickets in comments?") +); + +// Show ticket comments in ascending or descending order? +$_prefs['comment_sort_dir'] = array( + 'value' => 1, + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'desc' => _("Show comments in chronological order, or most recent first?"), + 'enum' => array(0 => _("Chronological (oldest first)"), + 1 => _("Most recent first")) +); + +// address book selection widget +$_prefs['sourceselect'] = array('type' => 'special'); + +// address book(s) to use when expanding addresses +// You can provide default values this way (note the \t and the double quotes): +// 'value' => "source_one\tsource_two" +// refer to turba/config/sources.php for possible source values +$_prefs['search_sources'] = array( + 'value' => "", + 'locked' => false, + 'shared' => false, + 'type' => 'implicit', +); + +// field(s) to use when expanding addresses +// This depends on the search_sources preference if you want to provide +// default values: +// 'value' => "source_one\tfield_one\tfield_two\nsource_two\tfield_three" +// will search the fields 'field_one' and 'field_two' in source_one and +// 'field_three' in source_two. +// refer to turba/config/sources.php for possible source and field values +$_prefs['search_fields'] = array( + 'value' => "", + 'locked' => false, + 'shared' => false, + 'type' => 'implicit', +); diff --git a/whups/config/prefs.php.dist b/whups/config/prefs.php.dist new file mode 100644 index 000000000..4a26feeee --- /dev/null +++ b/whups/config/prefs.php.dist @@ -0,0 +1,182 @@ + _("General Options"), + 'label' => _("Display Options"), + 'desc' => _("Change display options such as how search results are sorted."), + 'members' => array('sortby', 'sortdir', 'comment_sort_dir', 'whups_default_view', 'summary_show_requested', 'summary_show_ticket_numbers', 'report_time_format', 'autolink_tickets') +); + +$prefGroups['notification'] = array( + 'column' => _("General Options"), + 'label' => _("Notification Options"), + 'desc' => _("Change options for email notifications of ticket activity."), + 'members' => array('email_others_only', 'email_comments_only')); + +if ($GLOBALS['registry']->hasMethod('contacts/sources')) { + $prefGroups['addressbooks'] = array( + 'column' => _("General Options"), + 'label' => _("Address Books"), + 'desc' => _("Select address book sources for adding and searching for addresses."), + 'members' => array('sourceselect'), + ); +} + + +// the layout of the bugs portal. +$_prefs['mybugs_layout'] = array( + 'value' => 'a:0:{}', + 'locked' => false, + 'shared' => false, + 'type' => 'implicit' +); + +// user preferred sorting column +$_prefs['sortby'] = array( + 'value' => 'id', + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array('id' => _("Id"), + 'summary' => _("Summary"), + 'state_name' => _("State"), + 'type_name' => _("Type"), + 'priority_name' => _("Priority"), + 'queue_name' => _("Queue"), + 'version_name' => _("Version"), + 'timestamp' => _("Created"), + 'date_assigned' => _("Assigned"), + 'date_resolved' => _("Resolved")), + 'desc' => _("Default sorting criteria:") +); + +// user preferred sorting direction +$_prefs['sortdir'] = array( + 'value' => 0, + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array(0 => _("Ascending"), + 1 => _("Descending")), + 'desc' => _("Default sorting direction:") +); + +// default view +$_prefs['whups_default_view'] = array( + 'value' => 'mybugs', + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array('mybugs' => _("My Tickets"), + 'search' => _("Search Tickets"), + 'ticket/create' => _("Create Ticket")), + 'desc' => _("Select the view to display after login:") +); + +// show requested tickets in the horde summary? +$_prefs['summary_show_requested'] = array( + 'value' => 1, + 'locked' => false, + 'shared' => false, + 'type' => 'checkbox', + 'desc' => _("Show tickets you have requested in the summary view?"), +); + +// show ticket ids in the horde summary? +$_prefs['summary_show_ticket_numbers'] = array( + 'value' => 1, + 'locked' => false, + 'shared' => false, + 'type' => 'checkbox', + 'desc' => _("Show ticket IDs in the summary view?"), +); + +// Allow custom time/date formats in reports +$_prefs['report_time_format'] = array( + 'value' => '%m/%d/%y', + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'enum' => array( + '%a %d %B' => _("Weekday Day Month"), + '%c' => _("Weekday Day Month HH:MM:SS TZ"), + '%m/%d/%y' => _("MM/DD/YY"), + '%m/%d/%y %H:%M:%S' => _("MM/DD/YY HH:MM:SS"), + '%d/%m/%y' => _("DD/MM/YY"), + '%d/%m/%y %H:%M:%S' => _("DD/MM/YY HH:MM:SS"), + '%y/%m/%d' => _("YY/MM/DD"), + '%y/%m/%d %H:%M:%S' => _("YY/MM/DD HH:MM:SS"), + ), + 'desc' => _("Date/Time format for search results"), +); + +// Skip notification of changes you added? +$_prefs['email_others_only'] = array( + 'value' => 1, + 'locked' => false, + 'shared' => false, + 'type' => 'checkbox', + 'desc' => _("Only notify me of ticket changes from other users?"), +); + +// Skip notification without comments? +$_prefs['email_comments_only'] = array( + 'value' => 0, + 'locked' => false, + 'shared' => false, + 'type' => 'checkbox', + 'desc' => _("Only notify me of ticket changes with comments?") +); + +// AutoLink to tickets references in comments +$_prefs['autolink_tickets'] = array( + 'value' => 1, + 'locked' => false, + 'shared' => false, + 'type' => 'checkbox', + 'desc' => _("Autolink to other tickets in comments?") +); + +// Show ticket comments in ascending or descending order? +$_prefs['comment_sort_dir'] = array( + 'value' => 1, + 'locked' => false, + 'shared' => false, + 'type' => 'enum', + 'desc' => _("Show comments in chronological order, or most recent first?"), + 'enum' => array(0 => _("Chronological (oldest first)"), + 1 => _("Most recent first")) +); + +// address book selection widget +$_prefs['sourceselect'] = array('type' => 'special'); + +// address book(s) to use when expanding addresses +// You can provide default values this way (note the \t and the double quotes): +// 'value' => "source_one\tsource_two" +// refer to turba/config/sources.php for possible source values +$_prefs['search_sources'] = array( + 'value' => "", + 'locked' => false, + 'shared' => false, + 'type' => 'implicit', +); + +// field(s) to use when expanding addresses +// This depends on the search_sources preference if you want to provide +// default values: +// 'value' => "source_one\tfield_one\tfield_two\nsource_two\tfield_three" +// will search the fields 'field_one' and 'field_two' in source_one and +// 'field_three' in source_two. +// refer to turba/config/sources.php for possible source and field values +$_prefs['search_fields'] = array( + 'value' => "", + 'locked' => false, + 'shared' => false, + 'type' => 'implicit', +); diff --git a/whups/config/reminders.php.dist b/whups/config/reminders.php.dist new file mode 100644 index 000000000..55b238a4f --- /dev/null +++ b/whups/config/reminders.php.dist @@ -0,0 +1,46 @@ + A cron-style date specification defining how often + * the rule will be triggered. For example, + * '* 30 11 1-31&Mon *' would run any second, at half + * past the hour of 11, every Monday in the month, every + * month. + * + * 'server_name' => The hostname that reminder emails will be sent + * from. Necessary since $_SERVER['SERVER_NAME'] is + * not present when running from cron. You can ignore + * this if you've set an explicit server name in + * horde's conf.php in $conf['server']['name']. + * + * 'queue' => Which Whups queue are we looking at? + * + * 'unassigned' => What email address should we send notification of + * unassigned tickets to? Can be set to false or any + * empty value if no email is necessary. + * + * 'category' => An array of states to send reminders for. Any of + * 'unconfirmed', 'new', 'assigned', and 'resolved', + * though I doubt you'll want to send reminders for + * resolved tickets. + */ + +$reminders = array(); + +// Here's an example entry that will send reminders for queue number 1 +// every Monday at 5am, for everything but resolved tickets. +$reminders[] = array('frequency' => '* 0 5 1-31&Mon *', + 'server_name' => 'www.example.com', + 'queue' => 1, + 'unassigned' => false, + 'category' => array('unconfirmed', 'new', 'assigned')); diff --git a/whups/config/templates.php b/whups/config/templates.php new file mode 100644 index 000000000..0b9206c27 --- /dev/null +++ b/whups/config/templates.php @@ -0,0 +1,59 @@ + 'searchresults', + 'filename' => 'report.html', + 'name' => _("Simple HTML Report"), + 'sortby' => array('type_name', 'timestamp'), + 'sortdir' => array(0, 1), + 'template' => ' + + + + + + + + + + + + + + + + + + +
#TypeOwnersOpen DateDescription
' +); + +$_templates['csv'] = array( + 'type' => 'searchresults', + 'name' => _("Comma Separated Values (CSV file)"), + 'filename' => 'report.csv', + 'callback' => '_csvQuote', + 'template' => 'ID,Summary,State,Type,Priority,Queue,Version,Owners,Created,Assigned,Resolved +,,,,,,,,,, + +' +); + +if (!function_exists('_csvQuote')) { + function _csvQuote(&$data, $key) + { + if (strpos($data, ',') !== false) { + $data = '"' . str_replace('"', '\"', $data) . '"'; + } + } +} diff --git a/whups/config/templates.php.dist b/whups/config/templates.php.dist new file mode 100644 index 000000000..0b9206c27 --- /dev/null +++ b/whups/config/templates.php.dist @@ -0,0 +1,59 @@ + 'searchresults', + 'filename' => 'report.html', + 'name' => _("Simple HTML Report"), + 'sortby' => array('type_name', 'timestamp'), + 'sortdir' => array(0, 1), + 'template' => ' + + + + + + + + + + + + + + + + + + +
#TypeOwnersOpen DateDescription
' +); + +$_templates['csv'] = array( + 'type' => 'searchresults', + 'name' => _("Comma Separated Values (CSV file)"), + 'filename' => 'report.csv', + 'callback' => '_csvQuote', + 'template' => 'ID,Summary,State,Type,Priority,Queue,Version,Owners,Created,Assigned,Resolved +,,,,,,,,,, + +' +); + +if (!function_exists('_csvQuote')) { + function _csvQuote(&$data, $key) + { + if (strpos($data, ',') !== false) { + $data = '"' . str_replace('"', '\"', $data) . '"'; + } + } +} diff --git a/whups/data.php b/whups/data.php new file mode 100644 index 000000000..d83d3ccdd --- /dev/null +++ b/whups/data.php @@ -0,0 +1,66 @@ + + */ + +define('WHUPS_BASE', dirname(__FILE__)); +require_once WHUPS_BASE . '/lib/base.php'; +require_once 'Horde/Template.php'; +require WHUPS_BASE . '/config/templates.php'; + +if (!Horde_Auth::getAuth()) { + header('Location: ' . Horde::applicationUrl('search.php', true)); + exit; +} + +$tpl = Horde_Util::getFormData('template'); + +if (empty($_templates[$tpl])) { + Horde::fatal(_("The requested template does not exist."), __FILE__, __LINE__); +} +if ($_templates[$tpl]['type'] != 'searchresults') { + Horde::fatal(_("This is not a search results template."), __FILE__, __LINE__); +} + +// Fetch all unresolved tickets assigned to the current user. +$info = array('id' => explode(',', Horde_Util::getFormData('ids'))); +$tickets = $whups_driver->getTicketsByProperties($info); +foreach ($tickets as $id => $info) { + $tickets[$id]['#'] = $id + 1; + $tickets[$id]['link'] = Whups::urlFor('ticket', $info['id'], true, -1); + $tickets[$id]['date_created'] = strftime('%x', $info['timestamp']); + $tickets[$id]['owners'] = Whups::getOwners($info['id']); + $tickets[$id]['owner_name'] = Whups::getOwners($info['id'], false, true); + $tickets[$id]['owner_email'] = Whups::getOwners($info['id'], true, false); + if (!empty($info['date_assigned'])) { + $tickets[$id]['date_assigned'] = strftime('%x', $info['date_assigned']); + } + if (!empty($info['date_resolved'])) { + $tickets[$id]['date_resolved'] = strftime('%x', $info['date_resolved']); + } + + // If the template has a callback function defined for data + // filtering, call it now. + if (!empty($_templates[$tpl]['callback'])) { + array_walk($tickets[$id], $_templates[$tpl]['callback']); + } +} + +Whups::sortTickets($tickets, + isset($_templates[$tpl]['sortby']) ? $_templates[$tpl]['sortby'] : null, + isset($_templates[$tpl]['sortdir']) ? $_templates[$tpl]['sortdir'] : null); + +$template = new Horde_Template(); +$template->set('tickets', $tickets); +$template->set('now', strftime('%x')); +$template->set('values', Whups::getSearchResultColumns(null, true)); + +$browser->downloadHeaders(isset($_templates[$tpl]['filename']) ? $_templates[$tpl]['filename'] : 'report.html'); +echo $template->parse($_templates[$tpl]['template']); diff --git a/whups/docs/CHANGES b/whups/docs/CHANGES new file mode 100644 index 000000000..e86ffb0d6 --- /dev/null +++ b/whups/docs/CHANGES @@ -0,0 +1,356 @@ +-------- +v2.0-cvs +-------- + + + + +---------- +v1.0.2-cvs +---------- + + + + +------ +v1.0.1 +------ + +[jan] Fix Oracle SQL scripts. +[jan] Render private comments for everyone, but hide the comment text. +[jan] Add flag to disable old versions. +[jan] Apply simple markup highlighting on comments. +[jan] Save queue email addresses when editing queues (horde@hatzidakis.org, + Bug #7905). +[jan] Fix charset conversion of comments added with mail-filter.php + (thomas@gelf.net, Bug #7730). +[cjh] Show version changes in the ticket history. +[jan] Use all credentials and mailer settings when sending mails. +[cjh] Allow changing the queue version from the Update screen. +[cjh] Add more date formats to the report_time_format preference + (b5b5b5b5@centrum.sk, Request #7793). +[jan] Escape SQL wildcards in string queries. +[cjh] Enforce queue permissions in ticket-listing blocks (Bug #7614). +[cjh] Ensure the DB library is explicitly loaded (Bug #7647). +[jan] Add Turkish translation (Akif Dinc ). +[jan] Fix linking to queries if URL rewriting is turned off. + + +---- +v1.0 +---- + +[jan] Change group field in shares table to work with LDAP groups (Bug #6883). +[jan] Fix rendering attribute criteria in the query tree. +[jan] Generate a valid Message-ID. +[mjr] Fix an issue with searching on installations with a single queue that + was causing all existing tickets in the queue to be displayed on entering + the search page. + + +-------- +v1.0-RC2 +-------- + +[jan] Add date search criteria (Duck , Request #7274). +[cjh] Add an RSS feed of search results (Duck , Request #7259). +[jan] Group statistics by ticket type. +[jan] Add Precedence and Auto-Submitted headers to notification messages + (Request #7082). +[jan] Add In-Reply-To header to notification messages (Request #7103). +[jan] Add button to save searches as queries (Request #5921). +[jan] Add query slugs and RSS feeds (Request #5924). +[jan] Implement editing of query elements. +[mjr] Fix saving of queries. + + +-------- +v1.0-RC1 +-------- + +[jan] Remove attributes hooks. +[jan] Add form replies. +[jan] Add support for queue-specific notification messages. +[jan] Add email address per queue for ticket notifications. +[jan] Use highlightquotes filter for quoted comments. +[jan] Send notification messages in flowed text format (requires Horde 3.2.1). +[jan] Allow to specify field types and parameters for attributes. +[jan] Add a hook that is called if a ticket is being updated, for automatic + ticket changes. +[jan] Add auto-completion to retrieve requesters from the address book. +[jan] Add per-queue permission to manually set the ticket requester. +[jan] Deal with queue vs. admin permissions more consistently. +[jan] Add configuration option whether to include email headers in comments. +[cjh] Improve resource usage in datatree_to_sql share migration script + (Bug #6740). +[cjh] Add an upgrade script for the new SQL share driver (Request #6109). +[jan] Add preference to only receive notifications if a comment has been added. +[jan] Send personalized ticket notification messages. +[jan] Add addAttachment API method. +[jan] Add message templates for email notifications. +[jan] Sequentially number comments (Request #4895). +[jan] Unset resolved date when un-resolving tickets (Bug #6310). +[jan] Add mail sender as requester when using the --default-auth argument with + scripts/mail-filter.php. +[jan] Notify watchers that have just been added by email. +[jan] Add attributes search to query builder. +[jan] Rename API methods get_assigned_ticket_ids, get_requested_ticket_ids, + get_schema, add_tickets, and set_ticket_attributes. +[jan] Add --guess-queue argument to mail-filter.php. +[cjh] Use pretty URLs if Horde is configured for them (Request #5922). +[jan] Add configuration for default types, states, and priorities. +[mjr] Attribute values now show correctly in initial ticket notifications. +[jan] Add a hook to customize field grouping in the ticket views. +[cjh] Combine Type and Category selects in search form (php@ideacode.com, + Request #4928). +[jan] Show attribute changes in ticket history. +[jan] Allow scripts/mail-filter.php to process attachments. +[jan] Add ability to read messages from a mailbox to scripts/mail-filter.php. +[cjh] Don't re-use old attachment names even if the attachment has since been + deleted (Bug #4472). +[cjh] Store the guest user associated with transactions that only add an + attachment, with no comment text (Bug #2890). +[cjh] Include attribute values in ticket emails, including "diffs" for changes + (Bug #1083). +[cjh] When creating a ticket, preserve attachments uploaded in step 3 when + step 4 is used to assign the ticket (Bug #2514). +[cjh] When replying to a restricted comment, default to the same restriction + (Request #4902). +[cjh] Support split read and write databases (, Request #5926). +[jan] Add Lithuanian translation (Vilius Sumskas ). +[cjh] Add an addComment API method. +[jan] Add OpenSearch interface for direct ticket access through browser bars. +[jan] Move all Whups-specific hook examples from Horde's config/ directory. +[cjh] Rename whups_tickets_listeners to whups_ticket_listeners for consistency. +[cjh] Add a tree menu block (Jakob Schroeter ). +[cjh] On the search screen, only show types that are associated with queues + that are available/active (tinu@humbapa.ch, Request #4107). +[jan] Add Polish translation (Tadeusz Lesiecki , Piotr + Tarnowski ). +[jan] Add Ukrainian translation (Andriy Kopystyansky ). +[cjh] Ensure that a due date in a prior year doesn't make the EditTicketForm + invalid (Bug #4763). +[cjh] Remove saved searches (Request #4897). +[cjh] Calculate ticket date attributes when they change instead of on every + access (php@ideacode.com, Request #4893). +[cjh] Queries are now managed as shares, but the serialized bits are stored + and managed by Whups in their own dedicated table. +[jan] Allow guest access to query page. +[cjh] Smarter word wrapping in string representations of tickets + (Request #4510). +[cjh] Add a Queue Summary block showing queues with the number of open + tickets in each (Request #4628). +[cjh] Combine the People tab with the Update tab. +[cjh] Allow changing ticket queues as long as the user has DELETE permissions + on the current queue and EDIT permissions on the new queue + (tmerritt@email.arizona.edu, Request #4268). +[cjh] Add hours and minutes to due dates. +[cjh] Always use Summary for the ticket summary field label. +[jan] Add Slovenian translation (Duck ). +[cjh] Show the requester in search results (rodion (at) nezna (dot) com, + Bug #2820). +[cjh] Show either the Comment or Update tabs depending on permissions, + but not both. +[cjh] Report the last-updated date for tickets (Bug #2396). +[cjh] Tickets now have an optional due date field. +[cjh] New updateTicket API call (Ben Klang , Bug #4101). +[cjh] Check permissions when setting ticket attributes through an API call + (Ben Klang , Bug #4098). +[cjh] If guests can add tickets but not view them, don't tell them adding + failed (Bug #3630). +[cjh] Add Unassigned Tickets Horde_Block (Request #766). +[mas] Fix sorting in summary page to better handle dates. (Bug #2930) +[cjh] Add CAPTCHA support to the Add Comment and Create Ticket forms. +[cjh] Deliver RSS feeds in a way that supports USM + (http://www.kbcafe.com/rss/usm.html, Request #2593). +[cjh] processMail() now ignores emails that were generated by Whups + (Bug #3398). +[ben] Better support for MS-SQL. +[jan] Add Norwegian (Bokmal) translation (Torbjorn Grindhaug + ). +[cjh] "My Bugs" page is now a Horde_Block layout (Request #3202). +[cjh] Fix permissions checking for ticket comments when an admin user is the + one making the comment (Bug #2673). +[cjh] Delete searches by getvars string, not by name (Bug #3197). +[jan] Allow to assign tickets to foreign groups + (ronny.adsetts@amazinginternet.com, Request #2477). +[cjh] Add support for dynamic re-sorting of search results, including saving + the sort preferences on any changes. +[mas] Protect against HTML tags in the search results summary. +[jan] Allow other applications to provide versions. +[jan] Simplify UI for query editor and allow to search for versions. +[jan] Allow to send notification mails to queue-specific addresses (Marcus + Boerger ). +[jan] Allow other applications to provide queues. +[cjh] Add *-id arguments for type, priority, state, and queue to + mail-filter.php (Bug #2347). +[cjh] Add a link to return to the list of search results, along with the + previous/next links (Bug #1751). +[cjh] Fix the Quicksearch links. +[cjh] mail-filter.php now handles replies as well (Bug #280). +[cjh] Use the date_format preference for displaying TicketDetailsForm + as well (Bug #2151). +[jan] Add Russian translation (Illya Belov ). +[mas] Add ability to search by ticket requester. +[mas] Change any output of and tags to and for better + accessibility support. +[cjh] Add links to Update/Comment from individual transactions, which quote + that transaction's comment text (Bug #823). +[cjh] Add explicit permissions for assigning and updating tickets + (tmerritt@email.arizona.edu, Bug #1955). +[jan] Strike-through links to resolved tickets. +[jan] Make server name and port in mail-filter.php configurable (Bug #2004). +[cjh] Honor creator permissions on tickets (tmerritt@email.arizona.edu, + Bug #1945). +[cjh] Implement ticket watchers (tmerritt@email.arizona.edu, Bug #867). +[cjh] Enforce permissions on queues in reports, let guests see reports + if they have permissions (Bug #1812). +[cjh] Allow export templates to define a callback function for filtering + data. Includes an example for properly quoting CSV data (Bug #1774). +[jan] Use bind variables in the SQL driver (Bug #1701). +[cjh] Queries are stored as Horde_Share objects with full permissions. + (Bug #1481). +[cjh] Delete queue permissions when deleting a queue (Bug #1462). +[jan] Add MIME viewer for ZIP files. +[cjh] Queries can now be deleted (Bug #1193). +[cjh] Preserve the current search criteria when re-sorting results (Bug #1024). +[cjh] Link to ticket RSS feeds on all ticket display pages. +[cjh] Allow administrators to delete attachments (Bug #1252). +[cjh] Allow uploading an attachment when initially creating a ticket. +[cjh] Fix group-restricted comments (Bug #1225). +[jan] Add Brazilian Portuguese translation (Daniel V. Hoisel + ). +[cjh] Whups_Mail::processMail needs to use Whups_Ticket for ticket creation + to trigger email notifications, etc (Bug #1134). +[cjh] Allow inserting explicit Type filters into Query Builder queries + (Bug #434). +[cjh] Force users to choose a queue when creating tickets with the goal + of cutting down on misfiled tickets (Bug #588). +[cjh] Remove the Attachment tab, as it currently serves no purpose beyond + the Comment tab (Bug #868). +[cjh] Add a numeric log_value_num field for faster logs table comparisons + and for compatibility with databases that can't cast strings into + integer comparisons (Oracle, etc) (rvs (at) angara (dot) ru). +[jan] Add Finnish translation (Leena Heino ). +[jan] Add Spanish translation (Manuel Perez Ayala ). +[cjh] The way ticket histories are stored and retrieved has been completely + revamped to be quicker, more robust, and more complete. +[cjh] Add a 'summary' search option in the basic search form (Bug #269). +[cjh] Queue is now a valid query builder criterion. +[cjh] Add previous/next navigation when there's a current list of search + results to navigate through. +[cjh] Changing a ticket's queue now also allows setting a queue version. +[cjh] Group ticket histories by transaction, not by individual change. +[cjh] Show users their saved queries as well as saved searches. +[jan] Add Simplified Chinese translation (Liaobin ). +[cjh] Add a basic "Update" screen for changing summary, state, priority, + and adding attachments/comments, all at once. +[cjh] Finish renaming "module" to "queue" throughout the data and SQL. +[cjh] Add $conf['mail']['always_copy'] to allow Whups to always copy + a specific email address on ticket mail. +[cjh] Mail can be configured to come from a single email address now, + making it easier to allow Whups to post ticket email to a + mailing list, etc. +[cjh] Add a "DO NOT REPLY" note to generated emails if Whups isn't + configured to handle replies to ticket mail. +[cjh] Advertise permissions through the API. +[jan] Add Dutch translation (Stefan de Konink ). +[cjh] Make ticket owners available in search results again. +[jan] Allow uploading of attachments. +[cjh] Allow assigning tickets to groups. +[cjh] Add Set Type action to the details page (Bo Daley ). +[cjh] Allow clearing of all or individual searches (Bo Daley ). +[cjh] Start of a reminder-sending daemon. +[cjh] Allow assignment of a ticket to multiple users. +[cjh] Queue/Type matrix is now functional and allows very quick editing + of which ticket types are associated with each module. +[jan] Add Romanian translation (Eugen Hoanca ). +[cjh] Allow much more flexible configuration of who gets email on + various actions (Bo Daley ). +[cjh] Whups can now send out simple reminders. +[cjh] By giving users the 'whups:admin' permission, people can administer + individual queues in Whups, or just Whups as opposed to all of Horde. +[cjh] Allow multiple levels of sorting (first by date, then type, etc). +[cjh] Phrases in ticket comments can now be linked to the ticket in question + automatically (Mike Baptiste ). +[cjh] Use Horde_Template to generate configurable reports from + search result sets. +[cjh] Add a New Ticket link in the summary screen + (Brian Keifer ). +[cjh] Add a preference for not showing requested tickets in the summary + screen (Brian Keifer ). +[cjh] Prevent guest users from assigning tickets and make them enter + the ticket password to change state/priority. +[cjh] Guest users can now add tickets and add comments to tickets when + they have permissions to do so. +[cjh] We can now retrieve much more flexible datasets, such as the + average time it takes to resolve a ticket by developer, + requester, module, etc. +[cjh] Add a flexible set of stats, such as the average time a ticket + is unresolved. +[cjh] Add a much more flexible set of graphs, and a "My Bugs" + section for ticket summaries. +[cjh] Search results can now specify the results title header. +[cjh] Reports currently lacks pretty graphs, but now shows more useful + information - all assigned and requested tickets. +[cjh] Fix usage of Variables:: class. +[jan] Add Traditional Chinese translation (David Chang ). +[jan] Add Bulgarian translation (Miroslav Pendev ). +[cjh] Better enforcement of permissions on modules, especially + during searches. +[cjh] Add options for how many comments are sent in bug emails, + and in what order. +[cjh] Make sure that comments mailed to users don't include private + comments they aren't authorized to see. +[cjh] Clean up the format of generated emails to be much clearer. +[cjh] All email notification triggers now work. +[cjh] Add a standard Horde menu. +[cjh] Add an Options screen. +[cjh] Fix the Query Builder. +[cjh] Whups now uses the Horde FormSprocket:: API for all form handling. +[cjh] Ticket search results are now fully sortable, and a user preference. +[jan] Add French translation (Thierry Thomas). +[cjh] Use users' identities for showing names of requester, owner, etc. +[cjh] Include assigned and resolved dates in the search results view. +[cjh] Include date created, assigned, and resolved in the details view. +[cjh] Don't show resolved tickets in the summary. +[cjh] Require permission (whups:hiddenComments, at level Edit) to make + comments specific to a group. +[cjh] Display comments which are restricted differently. +[cjh] Add the ability to restrict viewing of a comment to a Group. +[cjh] Improve the reporting data that gets saved by a lot. +[jan] Add Czech translation. +[cjh] Fix some non-portable SQL. +[cjh] Add the option to keep track of different versions for a module. +[cjh] Fix problems when there are no types associated with a module. +[cjh] Default select lists which have only one value to that value. In + some cases this allows for auto-filling of forms (creating tickets). +[cjh] Include session ID in forms/links. +[cjh] Only show users queues which they have permissions for. +[cjh] Add a link from the edit queue section to edit the permissions on + that module. +[cjh] Add managing of which users can have tickets assigned to them, on a + per-module basis. +[cjh] Remove the sample data, as it poses sequence problems and isn't needed + now that the administration interface works. +[cjh] Don't create the sequence tables in whups.sql; PEAR needs to create + them itself to get implementation-specific details right. +[cjh] Administration interface - adding, deleting, and editing of modules, + types, states, and priorities all work now. +[jon] Adapt to the new Horde::img() syntax. +[cjh] Types can now map to multiple modules, instead of either one or global. + This is a much more flexible setup, and actually allows re-use of types. +[cjh] Added a SetType for collections of on/off values (a checkbox set). +[cjh] Use $registry->get() in place of other $registry->get + functions. +[cjh] Use WHUPS_TEMPLATES for template paths. +[jon] Enable the "portability" option in the SQL driver. +[jan] Remove the standard value for the language preference. The language to + fall back to should be set Horde wide in lang.php instead. +[cjh] Add API method and implementation for adding modules. +[rec] Add query builder, many UI improvements, more horde-style design. +[cjh] Apply patches from Alex L. for assignment, users, etc. +[avsm] Replace $conf['paths'] with the $registry equivalents. +[cjh] Convert short tags ( + +- Initial codebase +- Query builder + +Chuck Hagenbuch + +- Horde cleanup +- Reports generation +- Administration GUI + +Jan Schneider + +- Attachments +- E-mail support +- Form replies +- Stuff + + +Localization +============ + +====================== =============================================== +Brazilian Portuguese Daniel V. Hoisel +Bulgarian Miroslav Pendev +Chinese (Simplified) Liaobin +Chinese (Traditional) David Chang +Czech Pavel Chytil + Václav Hůla +Dutch Stefan de Konink + Han Spruyt +Finnish Leena Heino +French Thierry Thomas +Italian Fabio Pedretti +Lithuanian Vilius Šumskas +Norwegian (Bokmal) Torbjorn Grindhaug +Polish Tadeusz Lesiecki + Piotr Tarnowski +Romanian Eugen Hoanca +Russian Illya Belov + Alexey Zakharov +Slovenian Duck +Spanish Manuel Perez Ayala +Turkish Akif Dinc +Ukrainian Andriy Kopystyansky +====================== =============================================== diff --git a/whups/docs/INSTALL b/whups/docs/INSTALL new file mode 100644 index 000000000..952971e90 --- /dev/null +++ b/whups/docs/INSTALL @@ -0,0 +1,297 @@ +====================== + Installing Whups 1.0 +====================== + +:Last update: $Date: 2008/08/28 09:39:33 $ +:Revision: $Revision: 1.25 $ +:Contact: dev@lists.horde.org + +.. contents:: Contents +.. section-numbering:: + +This document contains instructions for installing the Whups web-based +ticket-tracking application on your system. + +For information on the capabilities and features of Whups, see the file +README_ in the top-level directory of the Whups distribution. + + +Obtaining Whups +=============== + +Whups can be obtained from the Horde website and FTP server, at + + http://www.horde.org/whups/ + + ftp://ftp.horde.org/pub/whups/ + +Or use the mirror closest to you: + + http://www.horde.org/mirrors.php + +Bleeding-edge development versions of Whups are available via CVS; see the +file `horde/docs/HACKING`_ in the Horde distribution, or the website +http://www.horde.org/source/, for information on accessing the Horde CVS +repository. + + +Prerequisites +============= + +To function properly, Whups **requires** the following: + +1. A working Horde installation. + + Whups runs within the `Horde Application Framework`_, a set of common + tools for Web applications written in PHP. You must install Horde before + installing Whups. + + .. Important:: Whups 1.0 requires version 3.2+ of the Horde Framework - + earlier versions of Horde will **not** work. + + .. _`Horde Application Framework`: http://www.horde.org/horde/ + + The Horde Framework can be obtained from the Horde website and FTP server, + at + + http://www.horde.org/horde/ + + ftp://ftp.horde.org/pub/horde/ + + Many of Whups's prerequisites are also Horde prerequisites. + + .. Important:: Be sure to have completed all of the steps in the + `horde/docs/INSTALL`_ file for the Horde Framework before + installing Whups. + +2. The following PHP capabilities: + + a. SQL support + + Whups stores its data in an SQL database. Build PHP with whichever SQL + driver you require; see the`horde/docs/INSTALL`_ file for details. + + +Installing Whups +================ + +Whups is written in PHP, and must be installed in a web-accessible directory. +The precise location of this directory will differ from system to system. +Conventionally, Whups is installed directly underneath Horde in the web +server's document tree. + +Since Whups is written in PHP, there is no compilation necessary; simply +expand the distribution where you want it to reside and rename the root +directory of the distribution to whatever you wish to appear in the URL. For +example, with the Apache web server's default document root of +``/usr/local/apache/htdocs``, you would type:: + + cd /usr/local/apache/htdocs/horde + tar zxvf /path/to/whups-h3-x.y.z.tar.gz + mv whups-h3-x.y.z whups + +and would then find Whups at the URL:: + + http://your-server/horde/whups/ + + +Configuring Whups +================= + +1. Configuring Horde for Whups + + a. Register the application + + In ``horde/config/registry.php``, find the ``applications['whups']`` + stanza. The default settings here should be okay, but you can change + them if desired. If you have changed the location of Whups relative to + Horde, either in the URL, in the filesystem or both, you must update the + ``fileroot`` and ``webroot`` settings to their correct values. + +2. Creating the database table + + The specific steps to create the Whups database table depend on which + database you've chosen to use. + + First, look in ``scripts/drivers/`` to see if a script already exists for + your database type. If so, you should be able to simply execute that script + as superuser in your database. + + If such a script does not exist, you'll need to build your own, using the + file ``whups.sql`` as a starting point. If you need assistance in creating + databases, you may wish to let us know on the Whups mailing list. + +3. Configuring Whups + + To configure Whups, change to the ``config/`` directory of the installed + distribution, and make copies of all of the configuration ``dist`` files + without the ``dist`` suffix:: + + cd config/ + for foo in *.dist; do cp $foo `basename $foo .dist`; done + + Or on Windows:: + + copy *.dist *. + + Documentation on the format and purpose of those files can be found in each + file. You may edit these files if you wish to customize Whups's appearance + and behavior. With one exception (``reminders.php``, in case you want to + automatically sent out reminders about open tickets) the defaults will be + correct for most sites. + + The ``create_email.txt`` and ``notify_email.txt`` files define how outgoing + email notifications about new respectively updated tickets look like. If + using non-ascii character in this file, it has to saved with UTF-8 + encoding. The following placeholders are available: + + :@@ticket_url@@: The link to the ticket page. + :@@table@@: The ticket summary table. + :@@comment@@: The last user comment if any, including leading + linebreaks. + :@@dont_reply@@: The message telling users to not reply, if enabled in + the configuration, including trailing line breaks. + :@@date@@: The current date. + :@@full_name@@: The full name of the notification recipient. + :@@auth_name@@: The full name of the user that updated the ticket. + + You can also specify queue-specific notification messages by creating + seperate files with the following naming convention: ``create_email_X.txt`` + will be used for ticket creation emails for queue "X"; + ``notify_email_Y.txt`` will be used for notification emails for queue "Y". + + You must login to Horde as a Horde Administrator to finish the + configuration of Whups. Use the Horde ``Administration`` menu item to get + to the administration page, and then click on the ``Configuration`` icon to + get the configuration page. Select ``Tickets`` from the selection list of + applications. Fill in or change any configuration values as needed. When + done click on ``Generate Tickets Configuration`` to generate the + ``conf.php`` file. If your web server doesn't have write permissions to the + Whups configuration directory or file, it will not be able to write the + file. In this case, go back to ``Configuration`` and choose one of the + other methods to create the configuration file ``whups/config/conf.php``. + + If you would like the ability to create and update tickets via + email, you will need to set up ``whups/scripts/mail-filter.php`` to + receive email from the appropriate addresses. This script takes a + number of arguments; see the script for more details. A typical + setup might be:: + + bugs |/path/to/horde/whups/scripts/mail-filter.php --queue-name=Bugs --type-name=Bug --state-name=New --priority-name=Low + + This will take in mail to the ``bugs`` address at your domain, and + create new tickets in the ``Bugs`` queue, with a type of ``Bug``, a + state of ``New``, and ``Low`` priority. Note that this must be a + valid combination of queue/type/state/priority names in your Whups + installation. If an email references an existing ticket (ticket + numbers are recognized in the subject line) it will be updated + instead. + + Note for international users: Whups uses GNU gettext to provide local + translations of text displayed by applications; the translations are found + in the ``po/`` directory. If a translation is not yet available for your + locale (and you wish to create one), see the ``horde/po/README`` file, or + if you're having trouble using a provided translation, please see the + `horde/docs/TRANSLATIONS`_ file for instructions. + +4. Testing Whups + + Use Whups to create your base data, create tickets, and modify + tickets. Test at least the following: + + - Creating a new project (queue) + - Creating ticket types, states, priorities for a project + - Adding a ticket + - Assigning a ticket + - Closing a ticket + +5. Creating tickets from email messages + + Whups provides functionality that can be used to create and update tickets + from email messages. One part of this functionality is the + ``mail-filter.php`` in the ``whups/scripts/`` directory. It can either be + installed inside the mail chain, or run as a standalone script against an + IMAP or POP3 server. It provides a list of all available command line + arguments if called with the ``--help`` argument: ``./mail-filter.php + --help``. + + If you use the arguments starting with ``--mail``, the script will login to + the provided IMAP or POP3 server and process all messages in the specified + folder. Any successfully processed messages will be deleted. An error + message will be displayed for any failed messages. Using the script in this + mode makes most sense when run regularly, e.g. by a cron job or the Windows + task planner. + + You can also install the script inside the mail chain. In this mode, the + script expects a single email message from standard input. A common + scenario would be to pipe all messages to a certain email address through + this script, e.g. through the forwarding or alias mechanism. An example + entry in ``/etc/alias`` could look like this:: + + bugs:"|/pathtohorde/whups/scripts/mail-filter.php -q 'Test Queue' -t mytype -p '1. Low' -s Unconfirmed" + + Even though this example uses "names" for the arguments, it's preferred to + use IDs, because those doesn't cause any problems with spaces, or non-ascii + characters. + + The script tries to determine the ticket number from the message, if a + ticket number hasn't been specified with the ``--ticket`` + argument. Currently it searches for strings looking like "[Bug #1]" in the + message subject. If a ticket number cannot be determined by any means, or + if a ticket with that number doesn't exist, a new ticket is created. + + The (Horde) user that will be used to create or update the ticket, will + also be determined by investigating the message. The email address used in + the ``From:`` header of the message will be looked up by searching all + identities of all users in the authentication backend. This only works if + the authentication backend is capable of listing users. If a user cannot be + determined this way, the user provided by the ``--default--auth`` argument, + if any, is used. Finally, if none has been provided, the user specified in + Whups' configuration (``$conf[mail][username]``) will be used. If there + still hasn't been a user determined at this point, the ticket will be + updated or created by the "guest" user, using the email address of the + ``From:`` header. This only works if guest access has been granted to both + Whups, and the queue specified with the ``--queue-name`` or ``--queue-id`` + parameters. + + Finally, you might want to to enable the setting in Whups' configuration, + below the "Email Settings" tab, that allows users to reply to ticket + emails. This setting removes the warning from the generated ticket emails + to *not* reply to those emails. And you should of course make sure that you + specify the correct email address here for the generated messages. It + should the address that you use for the mail pipe, or the IMAP/POP3 account + when calling ``mail-filter.php``. + + +Obtaining Support +================= + +If you encounter problems with Whups, help is available! + +The Horde Frequently Asked Questions List (FAQ), available on the Web at + + http://www.horde.org/faq/ + +The Horde Project runs a number of mailing lists, for individual applications +and for issues relating to the project as a whole. Information, archives, and +subscription information can be found at + + http://www.horde.org/mail/ + +Lastly, Horde developers, contributors and users may also be found on IRC, +on the channel #horde on the Freenode Network (irc.freenode.net). + +Please keep in mind that Whups is free software written by volunteers. +For information on reasonable support expectations, please read + + http://www.horde.org/support.php + +Thanks for using Whups! + +The Whups team + + +.. _README: ?f=README.html +.. _`horde/docs/HACKING`: ../../horde/docs/?f=HACKING.html +.. _`horde/docs/INSTALL`: ../../horde/docs/?f=INSTALL.html +.. _`horde/docs/TRANSLATIONS`: ../../horde/docs/?f=TRANSLATIONS.html diff --git a/whups/docs/RELEASE_NOTES b/whups/docs/RELEASE_NOTES new file mode 100644 index 000000000..fe4c4a226 --- /dev/null +++ b/whups/docs/RELEASE_NOTES @@ -0,0 +1,44 @@ +notes['fm']['focus'] = 4; + +/* Mailing list release notes. */ +$this->notes['ml']['changes'] = <<notes['fm']['changes'] = <<notes['name'] = 'Whups'; +$this->notes['list'] = 'horde'; +$this->notes['fm']['project'] = 'whups'; +$this->notes['fm']['branch'] = 'Default'; diff --git a/whups/docs/TODO b/whups/docs/TODO new file mode 100644 index 000000000..8d89fbf59 --- /dev/null +++ b/whups/docs/TODO @@ -0,0 +1,55 @@ +============================= + Whups Development TODO List +============================= + +:Last update: $Date: 2007/04/22 04:51:55 $ +:Revision: $Revision: 1.16 $ +:Contact: dev@lists.horde.org + +- Ability to take/steal tickets from other users in the list UI. + +- Ability to merge a ticket with another ticket (instead of marking as + duplicate). Histories of two tickets should be merged. + +- Better permissions integration. + +- Possible integration with other Horde queues (nag/turba/hermes), including + api support between them. + +- docs and help files... + +- Additional "work flow" support. + +- Handle attachments in Whups_Mail + +- States/Priorities (or whole types?) cloning: + + | > What if we had a "clone" feature? When editing states/priorities, just + | > being able to clone the states/priorities from another type into this + | > type? + | + | I now think that this would be a good idea. It's almost the same as + | Gary's template patch, but it should work in a slightly different way + | to better fit the workflow direction. + | + | When we have state transitions, it's more important that a type + | doesn't change as tickets flow through it because that could cause + | tickets to become inconsistent. However, it's very likely that as the + | type is being used, people see some way of making it fit the model + | more accurately. In that case, probably the best way to fix it is to + | copy the existing type into a new one. You can then modify the new + | type however you see fit then 'publish' the type and start creating + | tickets in it. Published types can't be altered. + | + | With the type templates, you could only copy particular types into new + | ones, instead of any type that you need to. + | + | However, with the templates, type were created as 'just a template', + | ie. one that shouldn't have tickets created. This can be quite + | useful, but instead of using an underscore prefix to identify it, I'd + | prefer to have a 'published' field in the table to represent types + | that can have tickets in it. A template could then be a normal, + | unpublished, type. + +- For project scheduling: + http://www.joelonsoftware.com/articles/fog0000000245.html diff --git a/whups/docs/UPGRADING b/whups/docs/UPGRADING new file mode 100644 index 000000000..e662dda02 --- /dev/null +++ b/whups/docs/UPGRADING @@ -0,0 +1,27 @@ +================= + Upgrading Whups +================= + +:Last update: $Date: 2009/09/07 09:56:43 $ +:Revision: $Revision: 1.1 $ +:Contact: horde@lists.horde.org + + +These are instructions to upgrade from earlier Whups versions. Please backup +your existing data before running any of the steps described below. You can't +use the updated data with your old Whups version anymore. + + +Upgrading Whups from 1.0 to 1.0.1 +================================= + +SQL Backends +------------ + +A field to store whether a version is still active has been added to the +default SQL table layout. + +Execute the provided SQL script to update your data to the new Whups version, +e.g.:: + + mysql --user=root --password= < scripts/upgrades/1.0_to_1.0.1.sql diff --git a/whups/docs/lighttpd-whups.conf b/whups/docs/lighttpd-whups.conf new file mode 100644 index 000000000..aa2e66bdb --- /dev/null +++ b/whups/docs/lighttpd-whups.conf @@ -0,0 +1,19 @@ +## This file should be reviewed prior to inclusion in your lighttpd +## configuration. Specifically, if you have whups somewhere other than +## /horde/whups you will need to edit the following rules to match your server +## configuration. + +## This file should be included in your lighttpd.conf file with the "include" +## directive. Example: +## include "path/to/lighttpd-whups.conf" +## The exact path you use will of course depend on your specific configuration. + +url.rewrite-once += ( + "^/horde/whups/queue/([0-9]+)/?(?:\?(.*))?$" => "/horde/whups/queue/index.php?id=$1&$2", + "^/horde/whups/queue/([0-9]+)/rss/?(?:\?(.*))?$" => "/horde/whups/queue/rss.php?id=$1&$2", + "^/horde/whups/queue/(a-zA-Z0-9_]+)/?(?:\?(.*))?$" => "/horde/whups/queue/index.php?slug=$1&$2", + "^/horde/whups/queue/(a-zA-Z0-9_]+)/rss/?(?:\?(.*))?$" => "/horde/whups/queue/rss.php?id=$1&2", + "^/horde/whups/ticket/([0-9]+)/?(?:\?(.*))?$" => "/horde/whups/ticket/index.php?id=$1&$2", + "^/horde/whups/ticket/([0-9]+)/rss/?(?:\?(.*))?$" => "/horde/whups/ticket/rss.php?id=$1&$2", + "^/horde/whups/ticket/([0-9]+)/([a-z]+)(\.php)?(?:\?(.*))?$" => "/horde/whups/ticket/$2.php?id=$1&$3" +) diff --git a/whups/index.php b/whups/index.php new file mode 100644 index 000000000..6bdc0b9d4 --- /dev/null +++ b/whups/index.php @@ -0,0 +1,31 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + */ + +define('WHUPS_BASE', dirname(__FILE__)); +$whups_configured = (is_readable(WHUPS_BASE . '/config/conf.php') && + is_readable(WHUPS_BASE . '/config/create_email.txt') && + is_readable(WHUPS_BASE . '/config/mime_drivers.php') && + is_readable(WHUPS_BASE . '/config/notify_email.txt') && + is_readable(WHUPS_BASE . '/config/prefs.php') && + is_readable(WHUPS_BASE . '/config/templates.php')); + +if (!$whups_configured) { + require WHUPS_BASE . '/../lib/Test.php'; + Horde_Test::configFilesMissing('Whups', WHUPS_BASE, + array('conf.php', 'mime_drivers.php', 'prefs.php'), + array('templates.php' => 'This file defines the templates that various parts of Whups use to format data.', + 'create_email.txt' => 'This is the template for ticket creation emails', + 'notify_email.txt' => 'This is the template for ticket notification emails', + )); +} + +require_once WHUPS_BASE . '/lib/base.php'; +require basename($prefs->getValue('whups_default_view') . '.php'); diff --git a/whups/lib/.htaccess b/whups/lib/.htaccess new file mode 100644 index 000000000..3a4288278 --- /dev/null +++ b/whups/lib/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/whups/lib/Ajax/Imple/ContactAutoCompleter.php b/whups/lib/Ajax/Imple/ContactAutoCompleter.php new file mode 100644 index 000000000..57c59ee83 --- /dev/null +++ b/whups/lib/Ajax/Imple/ContactAutoCompleter.php @@ -0,0 +1,162 @@ + + * @package Whups + */ + +class Whups_Ajax_Imple_ContactAutoCompleter extends Horde_Ajax_Imple_AutoCompleter +{ + + /** + * Attach the Imple object to a javascript event. + */ + protected function _attach($js_params) + { + $js_params['indicator'] = $this->_params['triggerId'] . '_loading_img'; + + $ret = array( + 'params' => $js_params, + 'raw_params' => array( + 'onSelect' => 'function (v) { if (!v.endsWith(";")) { v += ","; } return v + " "; }', + 'onType' => 'function (e) { return e.include("<") ? "" : e; }' + ) + ); + + $ret['ajax'] = 'ContactAutoCompleter'; + + return $ret; + } + + /** + * TODO + * + * @param array $args TODO + * + * @return string TODO + */ + public function handle($args, $post) + { + // Avoid errors if 'input' isn't set and short-circuit empty searches. + if (empty($args['input']) || + !($input = Horde_Util::getPost($args['input']))) { + return array(); + } + + return array_map('htmlspecialchars', self::expandAddresses($input)); + } + + /** + * Uses the Registry to expand names and return error information for + * any address that is either not valid or fails to expand. This function + * will not search if the address string is empty. + * + * @param string $addrString The name(s) or address(es) to expand. + * @param array $options Additional options: + *
+     * 'levenshtein' - (boolean) If true, will sort the results using the
+     *                 PHP levenshtein() scoring function.
+     * 
+ * + * @return array All matching addresses. + */ + static public function expandAddresses($addrString, $options = array()) + { + if (!preg_match('|[^\s]|', $addrString)) { + return array(); + } + + $addrString = reset(array_filter(array_map('trim', Horde_Mime_Address::explode($addrString, ',;')))); + $addr_list = self::getAddressList($addrString); + + if (empty($options['levenshtein'])) { + return $addr_list; + } + + $sort_list = array(); + foreach ($addr_list as $val) { + $sort_list[$val] = levenshtein($addrString, $val); + } + asort($sort_list, SORT_NUMERIC); + + return array_keys($sort_list); + } + + /** + * Uses the Registry to expand names and return error information for + * any address that is either not valid or fails to expand. + * + * @param string $search The term to search by. + * + * @return array All matching addresses. + */ + static public function getAddressList($search = '') + { + $sparams = self::getAddressSearchParams(); + try { + $res = $GLOBALS['registry']->call('contacts/search', array($search, $sparams['sources'], $sparams['fields'], false)); + } catch (Horde_Exception $e) { + Horde::logMessage($e, __FILE__, __LINE__, PEAR_LOG_ERR); + return array(); + } + + if (!count($res)) { + return array(); + } + + /* The first key of the result will be the search term. The matching + * entries are stored underneath this key. */ + $search = array(); + foreach (reset($res) as $val) { + if (!empty($val['email'])) { + if (strpos($val['email'], ',') !== false) { + $search[] = Horde_Mime_Address::encode($val['name'], 'personal') . ': ' . $val['email'] . ';'; + } else { + $mbox_host = explode('@', $val['email']); + if (isset($mbox_host[1])) { + $search[] = Horde_Mime_Address::writeAddress($mbox_host[0], $mbox_host[1], $val['name']); + } + } + } + } + + return $search; + } + + /** + * Determines parameters needed to do an address search + * + * @return array An array with two keys: 'sources' and 'fields'. + */ + static public function getAddressSearchParams() + { + $src = explode("\t", $GLOBALS['prefs']->getValue('search_sources')); + if ((count($src) == 1) && empty($src[0])) { + $src = array(); + } + + $fields = array(); + if (($val = $GLOBALS['prefs']->getValue('search_fields'))) { + $field_arr = explode("\n", $val); + foreach ($field_arr as $field) { + $field = trim($field); + if (!empty($field)) { + $tmp = explode("\t", $field); + if (count($tmp) > 1) { + $source = array_splice($tmp, 0, 1); + $fields[$source[0]] = $tmp; + } + } + } + } + + return array('sources' => $src, 'fields' => $fields); + } + +} diff --git a/whups/lib/Api.php b/whups/lib/Api.php new file mode 100644 index 000000000..c2b3a62cf --- /dev/null +++ b/whups/lib/Api.php @@ -0,0 +1,801 @@ + array( + 'name' => _("Queues"), + 'icon' => $registry->getImageDir() . '/whups.png', + 'browseable' => count( + Whups::permissionsFilter($whups_driver->getQueues(), + 'queue', Horde_Perms::READ)))); + } else { + $path = explode('/', $path); + Horde::logMessage(var_export($path, true), __FILE__, __LINE__); + $results = array(); + + switch ($path[0]) { + case 'queue': + $queues = Whups::permissionsFilter($whups_driver->getQueues(), + 'queue', Horde_Perms::SHOW); + if (count($path) == 1) { + foreach ($queues as $queue => $name) { + $results['whups/queue/' . $queue] = array( + 'name' => $name, + 'browseable' => true); + } + } else { + if (!Whups::hasPermission($queues[$path[1]], 'queue', + Horde_Perms::READ)) { + return PEAR::raiseError('permission denied'); + } + + $tickets = $whups_driver->getTicketsByProperties( + array('queue' => $path[1])); + foreach ($tickets as $ticket) { + $results['whups/queue/' . $path[1] . '/' . $ticket['id']] = array( + 'name' => $ticket['summary'], + 'browseable' => false); + } + } + break; + } + } + + return $results; + } + + /** + * Create a new queue. + * + * @param string $name The queue's name. + * + * @return integer The new queue id. + */ + public function addQueue($name) + { + require_once dirname(__FILE__) . '/base.php'; + if (Horde_Auth::isAdmin('whups:admin')) { + return $GLOBALS['whups_driver']->addQueue($name, ''); + } else { + return PEAR::raiseError('You must be an administrator to perform this action.'); + } + } + + /** + * Return the ids of all open tickets assigned to the current user. + * + * @return array Array of ticket ids. + */ + public function getAssignedTicketIds() + { + require_once dirname(__FILE__) . '/base.php'; + global $whups_driver; + + $info = array('owner' => 'user:' . Horde_Auth::getAuth(), 'nores' => true); + $tickets = $whups_driver->getTicketsByProperties($info); + if (is_a($tickets, 'PEAR_Error')) { + return $tickets; + } + $result = array(); + foreach ($tickets as $ticket) { + $result[] = $ticket['id']; + } + return $result; + } + + /** + * Return the ids of all open tickets that the current user created. + * + * @return array Array of ticket ids. + */ + public function getRequestedTicketIds() + { + require_once dirname(__FILE__) . '/base.php'; + global $whups_driver; + + $info = array('requester' => Horde_Auth::getAuth(), 'nores' => true); + $tickets = $whups_driver->getTicketsByProperties($info); + if (is_a($tickets, 'PEAR_Error')) { + return $tickets; + } + $result = array(); + foreach ($tickets as $ticket) { + $result[] = (int) $ticket['id']; + } + return $result; + } + + /** + * Create a new ticket. + * + * @param array $ticket_info An array of form variables representing all of the + * data collected by CreateStep1Form, CreateStep2Form, CreateStep3Form, and + * optionally CreateStep4Form. + * + * @return integer The new ticket id. + */ + public function addTicket($ticket_info) + { + require_once dirname(__FILE__) . '/base.php'; + require_once dirname(__FILE__) . '/Forms/CreateTicket.php'; + require_once dirname(__FILE__) . '/Ticket.php'; + global $whups_driver; + + if (!is_array($ticket_info)) { + return PEAR::raiseError('Invalid arguments'); + } + + $vars = new Horde_Variables($ticket_info); + + $form1 = new CreateStep1Form($vars); + $form2 = new CreateStep2Form($vars); + $form3 = new CreateStep3Form($vars); + + // FIXME: This is an almighty hack, but we can't have form + // tokens in rpc calls. + $form1->useToken(false); + $form2->useToken(false); + $form3->useToken(false); + + // Complain if we've been given bad parameters. + if (!$form1->validate($vars, true)) { + $f1 = var_export($form1->_errors, true); + return PEAR::raiseError("Invalid arguments ($f1)"); + } + if (!$form2->validate($vars, true)) { + $f2 = var_export($form2->_errors, true); + return PEAR::raiseError("Invalid arguments ($f2)"); + } + if (!$form3->validate($vars, true)) { + $f3 = var_export($form3->_errors, true); + return PEAR::raiseError("Invalid arguments ($f3)"); + } + + $form1->getInfo($vars, $info); + $form2->getInfo($vars, $info); + $form3->getInfo($vars, $info); + + // More checks if we're assigning the ticket at create-time. + if (Horde_Auth::getAuth() && $whups_driver->isCategory('assigned', $vars->get('state'))) { + $form4 = new CreateStep4Form($vars); + } + if (Auth::getAuth() && $whups_driver->isCategory('assigned', $vars->get('state'))) { + $form4 = new CreateStep4Form($vars); + $form4->useToken(false); + if (!$form4->validate($vars, true)) { + return PEAR::raiseError('Invalid arguments (' . var_export($form4->_errors, true) . ')'); + } + + $form4->getInfo($vars, $info); + } + + $ticket = Whups_Ticket::newTicket($info, Horde_Auth::getAuth()); + if (is_a($ticket, 'PEAR_Error')) { + return $ticket; + } else { + return $ticket->getId(); + } + } + + /** + * Update a ticket's properties. + * + * @param integer $ticket_id The id of the id to changes. + * @param array $ticket_info The attributes to set, from the EditTicketForm. + * + * @return boolean True + */ + public function updateTicket($ticket_id, $ticket_info) + { + require_once dirname(__FILE__) . '/base.php'; + require_once dirname(__FILE__) . '/Ticket.php'; + require_once dirname(__FILE__) . '/Forms/EditTicket.php'; + global $whups_driver; + + // Cast as an int for safety. + $ticket = Whups_Ticket::makeTicket((int)$ticket_id); + if (is_a($ticket, 'PEAR_Error')) { + // The ticket is either invalid or we don't have permission to + // read it. + return $ticket; + } + + // Check that we have permission to update the ticket + if (!Horde_Auth::getAuth() || + !Whups::hasPermission($ticket->get('queue'), 'queue', 'update')) { + return PEAR::raiseError(_('You do not have permission to update this ticket.')); + } + + // Populate $vars with existing ticket details. + $vars = new Horde_Variables(); + $ticket->setDetails($vars); + + // Copy new ticket details in. + foreach ($ticket_info as $detail => $newval) { + $vars->set($detail, $newval); + } + + // Create and populate the EditTicketForm for validation. API calls can't + // use form tokens and aren't the result of the EditTicketForm being + // submitted. + $editform = new EditTicketForm($vars, null, $ticket); + $editform->useToken(false); + $editform->setSubmitted(true); + + // Attempt to validate and update the ticket. + if (!$editform->validate($vars)) { + $form_errors = var_export($editform->_errors, true); + return PEAR::raiseError(sprintf(_("Invalid ticket data supplied: %s"), $form_errors)); + } + + $editform->getInfo($vars, $info); + + $ticket->change('summary', $info['summary']); + $ticket->change('state', $info['state']); + $ticket->change('priority', $info['priority']); + if (!empty($info['newcomment'])) { + $ticket->change('comment', $info['newcomment']); + } + + // Update attributes. + $whups_driver->setAttributes($info); + + // Add attachment if one was uploaded. + if (!empty($info['newattachment']['name'])) { + $ticket->change('attachment', + array('name' => $info['newattachment']['name'], + 'tmp_name' => $info['newattachment']['tmp_name'])); + } + + // If there was a new comment and permissions were specified on + // it, set them. + if (!empty($info['group'])) { + $ticket->change('comment-perms', $info['group']); + } + + $result = $ticket->commit(); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + + // Ticket updated successfully + return true; + } + + /** + * Add a comment to a ticket. + * + * @param integer $ticket_id The id of the ticket to comment on. + * @param string $comment The comment text to add. + * @param string $group (optional) Restrict this comment to a specific group. + * + * @return boolean True + */ + public function addComment($ticket_id, $comment, $group = null) + { + require_once dirname(__FILE__) . '/base.php'; + require_once WHUPS_BASE . '/lib/Ticket.php'; + + $ticket_id = (int)$ticket_id; + if (empty($ticket_id)) { + return PEAR::raiseError('Invalid ticket id'); + } + + $ticket = Whups_Ticket::makeTicket($ticket_id); + if (is_a($ticket, 'PEAR_Error')) { + return $ticket; + } + + if (empty($comment)) { + return PEAR::raiseError('Empty comments are not allowed'); + } + + // Add comment. + $ticket->change('comment', $comment); + + // Add comment permissions, if specified. + // @TODO: validate the user is allowed to specify this group + if (!empty($group)) { + $ticket->change('comment-perms', $group); + } + + $result = $ticket->commit(); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + + return true; + } + + /** + * Adds an attachment to a ticket. + * + * @param integer $ticket_id The ticket number. + * @param string $name The name of the attachment. + * @param string $data The attachment data. + * + * @return mixed True on success or PEAR_Error on failure. + */ + public function addAttachment($ticket_id, $name, $data) + { + require_once dirname(__FILE__) . '/base.php'; + require_once WHUPS_BASE . '/lib/Ticket.php'; + + $ticket_id = (int)$ticket_id; + if (empty($ticket_id)) { + return PEAR::raiseError(_("Invalid Ticket Id")); + } + + $ticket = Whups_Ticket::makeTicket($ticket_id); + if (is_a($ticket, 'PEAR_Error')) { + return $ticket; + } + + if (!strlen($name) || !strlen($data)) { + return PEAR::raiseError(_("Empty attachment")); + } + + $tmp_name = Horde_Util::getTempFile('whups', true, $GLOBALS['conf']['tmpdir']); + $fp = fopen($tmp_name, 'wb'); + fwrite($fp, $data); + fclose($fp); + + $ticket->change('attachment', + array('name' => $name, 'tmp_name' => $tmp_name)); + $result = $ticket->commit(); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + + return true; + } + + /** + * Set attributes for a ticket + * + * @TODO fold this into the updateTicket method + */ + public function setTicketAttributes($info) + { + require_once dirname(__FILE__) . '/base.php'; + global $whups_driver; + + if (!isset($info['ticket_id']) || !isset($info['attributes'])) { + return PEAR::raiseError(_("Invalid arguments: Must supply a ticket number and new attributes.")); + } + + $ticket = $whups_driver->getTicketDetails($info['ticket_id']); + if (is_a($ticket, "PEAR_Error")) { + // Either the ticket doesn't exist or the caller didn't have + // permission. + return $ticket; + } + + // Convert the RPC parameters into what we'd expect if we were + // posting the EditAttributes form. + $ainfo = array(); + foreach ($info['attributes'] as $attrib) { + if (!isset($attrib['id']) || !isset($attrib['value'])) { + return PEAR::raiseError(_("Invalid argument: Missing attribute name or value.")); + } + + $ainfo['a' . $attrib['id']] = $attrib['value']; + } + + $ainfo['id'] = $info['ticket_id']; + + return $whups_driver->setAttributes($ainfo); + } + + /** + * Get the types that Whups items can be listed as. + * + * @return array Array of list types. + */ + public function getListTypes() + { + return array('taskHash' => true); + } + + /** + * Get a list of items from whups as type $type. + * + * @param string $type The list type to use (@see getListTypes). Currently supported: 'taskHash' + * + * @return array An array of tickets. + */ + public function listAs($type) + { + switch ($type) { + case 'taskHash': + require_once dirname(__FILE__) . '/base.php'; + global $whups_driver; + $info = array('owner' => 'user:' . Horde_Auth::getAuth(), + 'nores' => true); + $tickets = $whups_driver->getTicketsByProperties($info); + if (is_a($tickets, 'PEAR_Error')) { + return $tickets; + } + $result = array(); + foreach ($tickets as $ticket) { + $view_link = Whups::urlFor('ticket', $ticket['id'], true); + $delete_link = Whups::urlFor('ticket_action', array('delete', $ticket['id']), true); + $complete_link = Whups::urlFor('ticket_action', array('update', $ticket['id']), true); + + $result['whups/' . $ticket['id']] = array( + 'task_id' => $ticket['id'], + 'priority' => $ticket['priority_name'], + 'tasklist_id' => '**EXTERNAL**', + 'completed' => ($ticket['state_category'] == 'resolved'), + 'name' => '[#' . $ticket['id'] . '] ' . $ticket['summary'], + 'desc' => null, + 'due' => null, + 'category' => null, + 'view_link' => $view_link, + 'delete_link' => $delete_link, + 'edit_link' => $view_link, + 'complete_link' => $complete_link + ); + } + break; + + default: + $result = array(); + break; + } + + return $result; + } + + /** + * Return a list of queues that the current user has read permissions for + * + * @return array Array of queue details + */ + public function listQueues() + { + require_once dirname(__FILE__) . '/base.php'; + return Whups::permissionsFilter($GLOBALS['whups_driver']->getQueuesInternal(), 'queue', Horde_Perms::SHOW); + } + + /** + * Get details for a queue + * + * @param array | integer $queue Either an array of queue ids or a single queue id. + * + * @return array An array of queue information (or an array of arrays, if multiple queues were passed). + */ + public function getQueueDetails($queue) + { + require_once dirname(__FILE__) . '/base.php'; + if (is_array($queue)) { + $queues = Whups::permissionsFilter($queue, 'queue_id'); + $details = array(); + foreach ($queues as $id) { + $details[$id] = $GLOBALS['whups_driver']->getQueueInternal($id); + } + return $details; + } + + $queues = Whups::permissionsFilter(array($queue), 'queue_id'); + if ($queues) { + return $GLOBALS['whups_driver']->getQueueInternal($queue); + } + + return array(); + } + + /** + * List the versions associated with a queue + * + * @param integer $queue The queue id to get versions for. + * + * @return array Array of queue versions + */ + public function listVersions($queue) + { + require_once dirname(__FILE__) . '/base.php'; + + $queues = Whups::permissionsFilter(array($queue), 'queue_id'); + if (!$queues) { + return array(); + } + + $versions = array(); + $version_list = $GLOBALS['whups_driver']->getVersionInfoInternal($queue); + foreach ($version_list as $version) { + $versions[] = array('id' => $version['version_id'], + 'name' => $version['version_name'], + 'description' => $version['version_description'], + 'active' => !empty($version['version_active']), + 'readonly' => false); + } + + usort($versions, array($this, '_sortVersions')); + + return $versions; + } + + private function _sortVersions($a, $b) + { + $a_number = (string)(int)$a['name'][0] === $a['name'][0]; + $b_number = (string)(int)$b['name'][0] === $b['name'][0]; + + if ($a_number && $b_number) { + return version_compare($b['name'], $a['name']); + } + if (!$a_number && !$b_number) { + return strcoll($b['name'], $a['name']); + } + return $a_number ? 1 : -1; + } + + /** + * Add a version to a queue + * + * @param integer $queue The queue id to add the version to. + * @param string $name The name of the new version. + * @param string $description The descriptive text for the new version. + * @param boolean $active Whether the version is still active. + */ + public function addVersion($queue, $name, $description, $active = true) + { + require_once dirname(__FILE__) . '/base.php'; + return $GLOBALS['whups_driver']->addVersion($queue, $name, $description, $active); + } + + /** + * Return the details for a queue version + * + * @param integer $version_id The version to fetch + * + * @return array Array of version details + */ + public function getVersionDetails($version_id) + { + require_once dirname(__FILE__) . '/base.php'; + return $GLOBALS['whups_driver']->getVersionInternal($version_id); + } + + /** + * Get the all tickets for a queue, optionally with a specific state. + * + * @param integer $queue_id The queue to get tickets for + * @param string $state The state filter, if any. + * + * @return array Array of tickets + */ + public function getTicketDetails($queue_id, $state = null) + { + require_once dirname(__FILE__) . '/base.php'; + global $whups_driver; + + $info['queue_id'] = $queue_id; + if (!empty($state)) { + $info['category'] = $state; + } + $tickets = $whups_driver->getTicketsByProperties($info); + + for ($i = 0; $i < count($tickets); $i++) { + $view_link = Whups::urlFor('ticket', $tickets[$i]['id'], true); + $delete_link = Whups::urlFor('ticket_action', array('delete', $tickets[$i]['id']), true); + $complete_link = Whups::urlFor('ticket_action', array('update', $tickets[$i]['id']), true); + + $tickets[$i] = array( + 'ticket_id' => $tickets[$i]['id'], + 'completed' => ($tickets[$i]['state_category'] == 'resolved'), + 'assigned' => ($tickets[$i]['state_category'] == 'assigned'), + 'name' => $tickets[$i]['queue_name'] . ' #' . + $tickets[$i]['id'] . ' - ' . $tickets[$i]['summary'], + 'state' => $tickets[$i]['state_name'], + 'type' => $tickets[$i]['type_name'], + 'priority' => $tickets[$i]['priority_name'], + 'desc' => null, + 'due' => null, + 'category' => null, + 'view_link' => $view_link, + 'delete_link' => $delete_link, + 'edit_link' => $view_link, + 'complete_link' => $complete_link + ); + } + + return $tickets; + } + + /** + * Permissions available from Whups + * + * @return array Permissions tree + */ + public function perms() + { + } + + /** + * List cost objects + * + * @param array $criteria The list criteria + * + * @return array Tickets (as cost objects) matching $criteria + */ + public function listCostObjects($criteria) + { + require_once dirname(__FILE__) . '/base.php'; + global $whups_driver; + + $info = array(); + if (!empty($criteria['user'])) { + $info['owner'] = 'user:' . Horde_Auth::getAuth(); + } + if (!empty($criteria['active'])) { + $info['nores'] = true; + } + if (!empty($criteria['id'])) { + $info['id'] = $criteria['id']; + } + + $tickets = $whups_driver->getTicketsByProperties($info); + if (is_a($tickets, 'PEAR_Error')) { + return $tickets; + } + $result = array(); + foreach ($tickets as $ticket) { + $result[$ticket['id']] = array('id' => $ticket['id'], + 'active' => ($ticket['state_category'] != 'resolved'), + 'name' => sprintf(_("Ticket %s - %s"), + $ticket['id'], + $ticket['summary'])); + + /* If the user has an estimate attribute, use that for cost object + * hour estimates. */ + $attributes = $whups_driver->getTicketAttributesWithNames($ticket['id']); + if (!is_a($attributes, 'PEAR_Error')) { + foreach ($attributes as $k => $v) { + if (strtolower($k) == _("estimated time")) { + if (!empty($v)) { + $result[$ticket['id']]['estimate'] = (double) $v; + } + } + } + } + } + ksort($result); + if (count($result) == 0) { + return array(); + } else { + return array(array('category' => _("Tickets"), + 'objects' => array_values($result))); + } + } + + /** + * List the ways that tickets can be treated as time objects + * + * @return array Array of time object types + */ + public function listTimeObjectCategories() + { + return array('created' => _("My tickets by creation date"), + 'assigned' => _("My tickets by assignment date"), + 'due' => _("My tickets by due date"), + 'resolved' => _("My tickets by resolution date")); + } + + /** + * Lists tickets with due dates as time objects. + * + * @param array $categories The time categories (from listTimeObjectCategories) to list. + * @param mixed $start The start date of the period. + * @param mixed $end The end date of the period. + */ + public function listTimeObjects($categories, $start, $end) + { + require_once dirname(__FILE__) . '/base.php'; + require_once WHUPS_BASE . '/lib/Ticket.php'; + global $whups_driver; + + $start = new Horde_Date($start); + $start_ts = $start->timestamp(); + $end = new Horde_Date($end); + $end_ts = $end->timestamp(); + + $criteria['owner'] = Whups::getOwnerCriteria(Horde_Auth::getAuth()); + + /* @TODO Use $categories */ + $category = 'due'; + switch ($category) { + case 'assigned': + $label = _("Assigned"); + $criteria['ass'] = true; + break; + + case 'created': + $label = _("Created"); + break; + + case 'due': + $label = _("Due"); + $criteria['nores'] = true; + break; + + case 'resolved': + $label = _("Resolved"); + $criteria['res'] = true; + break; + } + + $tickets = $whups_driver->getTicketsByProperties($criteria); + if (is_a($tickets, 'PEAR_Error')) { + return array(); + } + + $objects = array(); + foreach ($tickets as $ticket) { + switch ($category) { + case 'assigned': + $t_start = $ticket['date_assigned']; + break; + + case 'created': + $t_start = $ticket['timestamp']; + break; + + case 'due': + if (empty($ticket['due'])) { + continue 2; + } + $t_start = $ticket['due']; + break; + + case 'resolved': + $t_start = $ticket['date_resolved']; + break; + } + + if ($t_start + 1 < $start_ts || $t_start > $end_ts) { + continue; + } + $t = new Whups_Ticket($ticket['id'], $ticket); + $objects[$ticket['id']] = array( + 'title' => sprintf('%s: [#%s] %s', $label, $ticket['id'], $ticket['summary']), + 'description' => $t->toString(), + 'id' => $ticket['id'], + 'start' => date('Y-m-d\TH:i:s', $t_start), + 'end' => date('Y-m-d\TH:i:s', $t_start + 1), + 'params' => array('id' => $ticket['id']), + 'link' => Whups::urlFor('ticket', $ticket['id'], true)); + } + + return $objects; + } + +} \ No newline at end of file diff --git a/whups/lib/Application.php b/whups/lib/Application.php new file mode 100644 index 000000000..b46bea278 --- /dev/null +++ b/whups/lib/Application.php @@ -0,0 +1,72 @@ +getQueues(); + foreach ($queues as $id => $name) { + $perms['tree']['whups']['queues'][$id] = false; + $perms['title']['whups:queues:' . $id] = $name; + + $perms['tree']['whups']['queues'][$id]['update'] = false; + $perms['title']['whups:queues:' . $id . ':update'] = _("Update"); + $perms['type']['whups:queues:' . $id . ':update'] = 'boolean'; + $perms['params']['whups:queues:' . $id . ':update'] = array(); + + $perms['tree']['whups']['queues'][$id]['assign'] = false; + $perms['title']['whups:queues:' . $id . ':assign'] = _("Assign"); + $perms['type']['whups:queues:' . $id . ':assign'] = 'boolean'; + $perms['params']['whups:queues:' . $id . ':assign'] = array(); + + $perms['tree']['whups']['queues'][$id]['requester'] = false; + $perms['title']['whups:queues:' . $id . ':requester'] = _("Set Requester"); + $perms['type']['whups:queues:' . $id . ':requester'] = 'boolean'; + $perms['params']['whups:queues:' . $id . ':requester'] = array(); + } + + $perms['tree']['whups']['replies'] = array(); + $perms['title']['whups:replies'] = _("Form Replies"); + + /* Loop through type and replies and add their titles. */ + foreach ($whups_driver->getAllTypes() as $type_id => $type_name) { + foreach ($whups_driver->getReplies($type_id) as $reply_id => $reply) { + $perms['tree']['whups']['replies'][$reply_id] = false; + $perms['title']['whups:replies:' . $reply_id] = $type_name . ': ' . $reply['reply_name']; + } + } + + return $perms; + } + +} diff --git a/whups/lib/Block/myqueries.php b/whups/lib/Block/myqueries.php new file mode 100644 index 000000000..94c00efcb --- /dev/null +++ b/whups/lib/Block/myqueries.php @@ -0,0 +1,53 @@ +listQueries(Horde_Auth::getAuth(), true); + if (is_a($queries, 'PEAR_Error')) { + return $queries; + } + $myqueries = Whups_View::factory('SavedQueries', + array('results' => $queries)); + + $html = Horde_Util::bufferOutput(array($myqueries, 'html'), false); + if ($html) { + return $html; + } + return '

' . _("No queries have been saved.") . '

'; + } + +} diff --git a/whups/lib/Block/myrequests.php b/whups/lib/Block/myrequests.php new file mode 100644 index 000000000..919078609 --- /dev/null +++ b/whups/lib/Block/myrequests.php @@ -0,0 +1,72 @@ +getQueues(), 'queue', Horde_Perms::READ)); + $info = array('requester' => Horde_Auth::getAuth(), + 'notowner' => 'user:' . Horde_Auth::getAuth(), + 'nores' => true, + 'queue' => $queue_ids); + $requests = $whups_driver->getTicketsByProperties($info); + if (is_a($requests, 'PEAR_Error')) { + return $requests; + } + + if (!$requests) { + return '

' . _("You have no open requests.") . '

'; + } + + $html = ''; + $sortby = $prefs->getValue('sortby'); + $sortdirclass = ' class="' . ($prefs->getValue('sortdir') ? 'sortup' : 'sortdown') . '"'; + foreach (Whups::getSearchResultColumns('block') as $name => $column) { + $html .= '' . $name . ''; + } + $html .= ''; + + Whups::sortTickets($requests); + foreach ($requests as $ticket) { + $link = Horde::link(Whups::urlFor('ticket', $ticket['id'], true)); + $html .= '' . $link . htmlspecialchars($ticket['id']) . '' . + '' . $link . htmlspecialchars($ticket['summary']) . '' . + '' . htmlspecialchars($ticket['priority_name']) . '' . + '' . htmlspecialchars($ticket['state_name']) . ''; + } + + Horde::addScriptFile('tables.js', 'horde', true); + return '' . $html . '
'; + } + +} diff --git a/whups/lib/Block/mytickets.php b/whups/lib/Block/mytickets.php new file mode 100644 index 000000000..7cf29fb7e --- /dev/null +++ b/whups/lib/Block/mytickets.php @@ -0,0 +1,71 @@ +getQueues(), 'queue', Horde_Perms::READ)); + $info = array('owner' => Whups::getOwnerCriteria(Horde_Auth::getAuth()), + 'nores' => true, + 'queue' => $queue_ids); + $assigned = $whups_driver->getTicketsByProperties($info); + if (is_a($assigned, 'PEAR_Error')) { + return $assigned; + } + + if (!$assigned) { + return '

' . _("No tickets are assigned to you.") . '

'; + } + + $html = ''; + $sortby = $prefs->getValue('sortby'); + $sortdirclass = ' class="' . ($prefs->getValue('sortdir') ? 'sortup' : 'sortdown') . '"'; + foreach (Whups::getSearchResultColumns('block') as $name => $column) { + $html .= '' . $name . ''; + } + $html .= ''; + + Whups::sortTickets($assigned); + foreach ($assigned as $ticket) { + $link = Horde::link(Whups::urlFor('ticket', $ticket['id'], true)); + $html .= '' . $link . htmlspecialchars($ticket['id']) . '' . + '' . $link . htmlspecialchars($ticket['summary']) . '' . + '' . htmlspecialchars($ticket['priority_name']) . '' . + '' . htmlspecialchars($ticket['state_name']) . ''; + } + + Horde::addScriptFile('tables.js', 'horde', true); + return '' . $html . '
'; + } + +} diff --git a/whups/lib/Block/query.php b/whups/lib/Block/query.php new file mode 100644 index 000000000..135620dd7 --- /dev/null +++ b/whups/lib/Block/query.php @@ -0,0 +1,113 @@ +listQueries(Horde_Auth::getAuth()); + if (count($qParams)) { + $qType = 'enum'; + } else { + $qDefault = _("You have no saved queries."); + $qType = 'error'; + } + + return array('query' => array('type' => $qType, + 'name' => _("Query to run"), + 'default' => $qDefault, + 'values' => $qParams)); + } + + /** + * The title to go in this block. + * + * @return string The title text. + */ + function _title() + { + if (($query = $this->_getQuery()) && $query->name) { + return Horde::link(Whups::urlFor('query', empty($query->slug) ? array('id' => $query->id) : array('slug' => $query->slug))) + . htmlspecialchars($query->name) . ''; + } + return _("Query Results"); + } + + /** + * The content to go in this block. + * + * @return string The content. + */ + function _content() + { + global $whups_driver, $prefs; + + if (!($query = $this->_getQuery())) { + return '

' . _("No query to run") . '

'; + } + + $vars = Horde_Variables::getDefaultVariables(); + $tickets = $whups_driver->executeQuery($query, $vars); + if (is_a($tickets, 'PEAR_Error')) { + return $tickets; + } + + $html = ''; + $sortby = $prefs->getValue('sortby'); + $sortdirclass = ' class="' . ($prefs->getValue('sortdir') ? 'sortup' : 'sortdown') . '"'; + foreach (Whups::getSearchResultColumns('block') as $name => $column) { + $html .= '' . $name . ''; + } + $html .= ''; + + Whups::sortTickets($tickets); + foreach ($tickets as $ticket) { + $link = Horde::link(Whups::urlFor('ticket', $ticket['id'], true)); + $html .= '' . $link . htmlspecialchars($ticket['id']) . '' . + '' . $link . htmlspecialchars($ticket['summary']) . '' . + '' . htmlspecialchars($ticket['priority_name']) . '' . + '' . htmlspecialchars($ticket['state_name']) . ''; + } + + Horde::addScriptFile('tables.js', 'horde', true); + return '' . $html . '
'; + } + + function _getQuery() + { + if (empty($this->_params['query'])) { + return false; + } + + require_once dirname(__FILE__) . '/../base.php'; + require_once WHUPS_BASE . '/lib/Query.php'; + + $qManager = new Whups_QueryManager(); + $query = $qManager->getQuery($this->_params['query']); + if (is_a($query, 'PEAR_Error')) { + return false; + } + if (!$query->hasPermission(Horde_Auth::getAuth(), Horde_Perms::READ)) { + return false; + } + + return $query; + } + +} diff --git a/whups/lib/Block/queuecontents.php b/whups/lib/Block/queuecontents.php new file mode 100644 index 000000000..8216152c5 --- /dev/null +++ b/whups/lib/Block/queuecontents.php @@ -0,0 +1,115 @@ +getQueues(), 'queue', Horde_Perms::READ); + if (!$qParams) { + $qDefault = _("No queues available."); + $qType = 'error'; + } else { + $qType = 'enum'; + } + + return array('queue' => array('type' => $qType, + 'name' => _("Queue"), + 'default' => $qDefault, + 'values' => $qParams, + ), + ); + } + + /** + * The title to go in this block. + * + * @return string The title text. + */ + function _title() + { + if ($queue = $this->_getQueue()) { + return sprintf(_("Open Tickets in %s"), htmlspecialchars($queue['name'])); + } + return _("Queue Contents"); + } + + /** + * The content to go in this block. + * + * @return string The content + */ + function _content() + { + global $whups_driver, $prefs; + + if (!($queue = $this->_getQueue())) { + return '

' . _("No tickets in queue.") . '

'; + } + + $info = array('queue' => $this->_params['queue'], + 'nores' => true); + $tickets = $whups_driver->getTicketsByProperties($info); + if (is_a($tickets, 'PEAR_Error')) { + return $tickets; + } + + if (!$tickets) { + return '

' . _("No tickets in queue.") . '

'; + } + + $html = ''; + $sortby = $prefs->getValue('sortby'); + $sortdirclass = ' class="' . ($prefs->getValue('sortdir') ? 'sortup' : 'sortdown') . '"'; + foreach (Whups::getSearchResultColumns('block') as $name => $column) { + $html .= '' . $name . ''; + } + $html .= ''; + + Whups::sortTickets($tickets); + foreach ($tickets as $ticket) { + $link = Horde::link(Whups::urlFor('ticket', $ticket['id'], true)); + $html .= '' . $link . htmlspecialchars($ticket['id']) . '' . + '' . $link . htmlspecialchars($ticket['summary']) . '' . + '' . htmlspecialchars($ticket['priority_name']) . '' . + '' . htmlspecialchars($ticket['state_name']) . ''; + } + + Horde::addScriptFile('tables.js', 'horde', true); + return '' . $html . '
'; + } + + function _getQueue() + { + global $whups_driver; + require_once dirname(__FILE__) . '/../base.php'; + + if (empty($this->_params['queue'])) { + return false; + } + if (!Whups::permissionsFilter(array($this->_params['queue']), 'queue', Horde_Perms::READ)) { + return false; + } + $queue = $whups_driver->getQueue($this->_params['queue']); + if (is_a($queue, 'PEAR_Error')) { + return false; + } + return $queue; + } + +} diff --git a/whups/lib/Block/queuesummary.php b/whups/lib/Block/queuesummary.php new file mode 100644 index 000000000..d82da0896 --- /dev/null +++ b/whups/lib/Block/queuesummary.php @@ -0,0 +1,63 @@ +getQueues(), 'queue', Horde_Perms::READ); + $qsummary = $whups_driver->getQueueSummary(array_keys($queues)); + if (is_a($qsummary, 'PEAR_Error')) { + return $qsummary; + } + + if (!$qsummary) { + return '

' . _("There are no open tickets.") . '

'; + } + + $html = ''; + $sortby = 'queue_name'; + foreach (array('queue_name' => _("Queue"), 'open_tickets' => _("Open Tickets")) as $column => $name) { + $html .= '' . $name . ''; + } + $html .= ''; + + foreach ($qsummary as $queue) { + $html .= '' . Horde::link(Whups::urlFor('queue', $queue, true), $queue['description']) . htmlspecialchars($queue['name']) . '' . + '' . htmlspecialchars($queue['open_tickets']) . ''; + } + + Horde::addScriptFile('tables.js', 'horde', true); + return '' . $html . '
'; + } + +} diff --git a/whups/lib/Block/tree_menu.php b/whups/lib/Block/tree_menu.php new file mode 100644 index 000000000..89b02db1b --- /dev/null +++ b/whups/lib/Block/tree_menu.php @@ -0,0 +1,38 @@ +addNode($parent . '__new', + $parent, + _("New Ticket"), + $indent + 1, + false, + array('icon' => 'create.png', + 'icondir' => $registry->getImageDir(), + 'url' => Horde::applicationUrl('ticket/create.php'))); + + $tree->addNode($parent . '__search', + $parent, + _("Search"), + $indent + 1, + false, + array('icon' => 'search.png', + 'icondir' => $registry->getImageDir('horde'), + 'url' => Horde::applicationUrl('search.php'))); + } + +} diff --git a/whups/lib/Block/unassigned.php b/whups/lib/Block/unassigned.php new file mode 100644 index 000000000..c8f42c246 --- /dev/null +++ b/whups/lib/Block/unassigned.php @@ -0,0 +1,71 @@ +getQueues(), 'queue', Horde_Perms::READ)); + $info = array('notowner' => true, + 'nores' => true, + 'queue' => $queue_ids); + $unassigned = $whups_driver->getTicketsByProperties($info); + if (is_a($unassigned, 'PEAR_Error')) { + return $unassigned; + } + + if (!$unassigned) { + return '

' . _("No tickets are unassigned!") . '

'; + } + + $html = ''; + $sortby = $prefs->getValue('sortby'); + $sortdirclass = ' class="' . ($prefs->getValue('sortdir') ? 'sortup' : 'sortdown') . '"'; + foreach (Whups::getSearchResultColumns('block') as $name => $column) { + $html .= '' . $name . ''; + } + $html .= ''; + + Whups::sortTickets($unassigned); + foreach ($unassigned as $ticket) { + $link = Horde::link(Whups::urlFor('ticket', $ticket['id'], true)); + $html .= '' . $link . htmlspecialchars($ticket['id']) . '' . + '' . $link . htmlspecialchars($ticket['summary']) . '' . + '' . htmlspecialchars($ticket['priority_name']) . '' . + '' . htmlspecialchars($ticket['state_name']) . ''; + } + + Horde::addScriptFile('tables.js', 'horde', true); + return '' . $html . '
'; + } + +} diff --git a/whups/lib/Driver.php b/whups/lib/Driver.php new file mode 100644 index 000000000..2b30ebc1f --- /dev/null +++ b/whups/lib/Driver.php @@ -0,0 +1,558 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + * + * @todo Needs updating to include method stubs for all required methods, to + * indicate what methods need to be implemented by other backends. + * + * @author Robert E. Coyle + * @author Jan Schneider + * @package Whups + */ +class Whups_Driver { + + /** + * @var array + */ + var $_params; + + /** + */ + function Whups_Driver($params) + { + $this->_params = $params; + } + + /** + */ + function setAttributes($info, &$ticket) + { + $ticket_id = $ticket->getId(); + + foreach ($info as $name => $value) { + if (substr($name, 0, 10) == 'attribute_' && + $ticket->get($name) != $value) { + $attribute_id = (int)substr($name, 10); + $ticket->change($name, $value); + $this->_setAttributeValue($ticket_id, $attribute_id, $value); + $this->updateLog($ticket_id, Horde_Auth::getAuth(), array('attribute' => $attribute_id . ':' . $value)); + } + } + } + + /** + * @param integer $ticket_id + */ + function getHistory($ticket_id) + { + $rows = $this->_getHistory($ticket_id); + if (is_a($rows, 'PEAR_Error')) { + return $rows; + } + + $attributes = array(); + foreach ($rows as $row) { + if ($row['log_type'] == 'attribute' && + strpos($row['log_value'], ':')) { + $attributes[(int)$row['log_value']] = $row['attribute_name']; + } + } + + $history = array(); + foreach ($rows as $row) { + $label = null; + $value = $row['log_value']; + $transaction = $row['transaction_id']; + + $history[$transaction]['timestamp'] = $row['timestamp']; + $history[$transaction]['user_id'] = $row['user_id']; + $history[$transaction]['ticket_id'] = $row['ticket_id']; + + switch ($row['log_type']) { + case 'comment': + $history[$transaction]['comment'] = $row['comment_text']; + $history[$transaction]['changes'][] = array( + 'type' => $row['log_type'], + 'value' => $row['log_value'], + 'comment' => $row['comment_text']); + continue 2; + + case 'queue': + $label = $row['queue_name']; + break; + + case 'version': + $label = $row['version_name']; + break; + + case 'type': + $label = $row['type_name']; + break; + + case 'state': + $label = $row['state_name']; + break; + + case 'priority': + $label = $row['priority_name']; + break; + + case 'attribute': + continue 2; + + case 'due': + $label = $row['log_value_num']; + break; + + default: + if (strpos($row['log_type'], 'attribute_') === 0) { + $attribute = substr($row['log_type'], 10); + if (isset($attributes[$attribute])) { + $label = $attributes[$attribute]; + } else { + $label = sprintf(_("Attribute %d"), $attribute); + } + $history[$transaction]['changes'][] = array( + 'type' => 'attribute', + 'value' => $value, + 'label' => $label); + continue 2; + } + break; + } + + $history[$transaction]['changes'][] = array( + 'type' => $row['log_type'], + 'value' => $value, + 'label' => $label); + } + + return $history; + } + + /** + */ + function getQueue($queueId) + { + return $GLOBALS['registry']->call('tickets/getQueueDetails', + array($queueId)); + } + + /** + */ + function getQueues() + { + return $GLOBALS['registry']->call('tickets/listQueues'); + } + + /** + */ + function getVersionInfo($queue) + { + return $GLOBALS['registry']->call('tickets/listVersions', + array($queue)); + } + + /** + * Returns a hash of versions suitable for select lists. + */ + function getVersions($queue, $all = false) + { + if (empty($queue)) { + return array(); + } + + $versioninfo = $this->getVersionInfo($queue); + if (is_a($versioninfo, 'PEAR_Error')) { + return $versioninfo; + } + + $versions = array(); + $old_versions = false; + foreach ($versioninfo as $vinfo) { + if (!$all && !$vinfo['active']) { + $old_versions = $vinfo['id']; + continue; + } + $versions[$vinfo['id']] = $vinfo['name']; + if (!empty($vinfo['description'])) { + $versions[$vinfo['id']] .= ': ' . $vinfo['description']; + } + if ($all && !$vinfo['active']) { + $versions[$vinfo['id']] .= ' ' . _("(inactive)"); + } + } + + if ($old_versions) { + $versions[$old_versions] = _("Older? Please update first!"); + } + + return $versions; + } + + /** + */ + function getVersion($version) + { + return $GLOBALS['registry']->call('tickets/getVersionDetails', + array($version)); + } + + /** + */ + function getCategories() + { + return array('unconfirmed' => _("Unconfirmed"), + 'new' => _("New"), + 'assigned' => _("Assigned"), + 'resolved' => _("Resolved")); + } + + /** + * Returns the attributes for a specific ticket type. + * + * This method will check if external attributes need to be fetched from + * hooks or whether to use the standard ones defined within Whups. + * + * @params integer $type The ticket type. + * + * @return array List of attributes. + */ + function getAttributesForType($type = null) + { + $attributes = $this->_getAttributesForType($type); + if (is_a($attributes, 'PEAR_Error')) { + return $attributes; + } + + foreach ($attributes as $id => $attribute) { + $attributes[$id] = array( + 'human_name' => $attribute['attribute_name'], + 'type' => $attribute['attribute_type'], + 'required' => $attribute['attribute_required'], + 'readonly' => false, + 'desc' => $attribute['attribute_description'], + 'params' => $attribute['attribute_params']); + } + return $attributes; + } + + /** + * Returns the attributes for a specific ticket. + * + * This method will check if external attributes need to be fetched from + * hooks or whether to use the standard ones defined within Whups. + * + * @params integer $ticket_id The ticket ID. + * + * @return array List of attributes. + */ + function getAllTicketAttributesWithNames($ticket_id) + { + $ta = $this->_getAllTicketAttributesWithNames($ticket_id); + if (is_a($ta, 'PEAR_Error')) { + return $ta; + } + + $attributes = array(); + foreach ($ta as $id => $attribute) { + $attributes[$attribute['attribute_id']] = array( + 'id' => $attribute['attribute_id'], + 'human_name' => $attribute['attribute_name'], + 'type' => $attribute['attribute_type'], + 'required' => $attribute['attribute_required'], + 'readonly' => false, + 'desc' => $attribute['attribute_description'], + 'params' => $attribute['attribute_params'], + 'value' => $attribute['attribute_value']); + } + return $attributes; + } + + /** + * Deletes a queue. + * + * Should be called by driver subclasses after successful removal from the + * backend. Takes only care of cleaning up queue permissions. + * + * @param integer $queueId The id of the queue being deleted. + */ + function deleteQueue($queueId) + { + $perm = &$GLOBALS['perms']->getPermission("whups:queues:$queueId"); + if (is_a($perm, 'PEAR_Error')) { + return; + } + + return $GLOBALS['perms']->removePermission($perm, true); + } + + /** + * Deletes a form reply. + * + * Should be called by driver subclasses after successful removal from the + * backend. Takes only care of cleaning up reply permissions. + * + * @param integer $reply The id of the form reply being deleted. + */ + function deleteReply($reply) + { + $perm = &$GLOBALS['perms']->getPermission("whups:replies:$reply"); + if (is_a($perm, 'PEAR_Error')) { + return; + } + + return $GLOBALS['perms']->removePermission($perm, true); + } + + /** + */ + function filterTicketsByState($tickets, $state_category = array()) + { + /* Take a list of tickets and return only those of the specified + * state_category. */ + $tickets_filtered = array(); + foreach ($tickets as $ticket) { + foreach ($state_category as $state) { + if ($ticket['state_category'] == $state) { + $tickets_filtered[] = $ticket; + } + } + } + + return $tickets_filtered; + } + + /** + * Sends email notifications to a list of recipients. + * + * We do some ugly work in here to make sure that no one gets comments + * mailed to them that they shouldn't see (because of group permissions). + * + * @param integer $ticket_id The ticket id. + * @param array $recipients The list of recipients. + * @param string $subject The email subject. + * @param string $message The email message text. + * @param string $from The email sender. + * @param boolean $reminder Whether this is reminder email (no ticket + * changes). + * @param integer $queue_id The queue id. + * @param boolean $is_new Whether a ticket has been created, if + * notifying about a ticket. + */ + function mail($ticket_id, $recipients, $subject, $message, $from, + $reminder, $queue_id = null, $is_new = false) + { + global $conf, $registry, $prefs; + + /* Set up recipients and message headers. */ + if (!is_array($recipients)) { + $recipients = array($recipients); + } + + $mail = new Horde_Mime_Mail(); + $mail->addHeader('X-Whups-Generated', 1); + $mail->addHeader('User-Agent', 'Whups ' . $registry->getVersion()); + $mail->addHeader('Precedence', 'bulk'); + $mail->addHeader('Auto-Submitted', $reminder ? 'auto-generated' : 'auto-replied'); + + $mail_always = null; + if (!$reminder && !empty($conf['mail']['always_copy'])) { + $mail_always = $conf['mail']['always_copy']; + if (strpos($mail_always, '<@>') !== false) { + $ticket = Whups_Ticket::makeTicket($ticket_id); + if (!is_a($ticket, 'PEAR_Error')) { + $mail_always = str_replace('<@>', $ticket->get('queue_name'), $mail_always); + } else { + $mail_always = null; + } + } + if ($mail_always) { + $recipients[] = $mail_always; + } + } + + if ($queue_id) { + $queue = $this->getQueue($queue_id); + } else { + $queue = null; + } + + if ($queue && !empty($queue['email'])) { + $mail->addHeader('From', $queue['email']); + } elseif (!empty($conf['mail']['from_addr'])) { + $mail->addHeader('From', $conf['mail']['from_addr']); + } else { + $mail->addHeader('From', Whups::formatUser($from), Horde_Nls::getCharset()); + } + + $subject = (is_null($ticket_id) + ? '' + : '[' . $registry->get('name') . ' #' . $ticket_id . '] ') + . $subject; + $mail->addHeader('Subject', $subject, Horde_Nls::getCharset()); + + /* Get our array of comments, sorted in the appropriate order. */ + if (!is_null($ticket_id)) { + $comments = $this->getHistory($ticket_id); + if ($conf['mail']['commenthistory'] == 'new' && count($comments)) { + $comments = array_pop($comments); + $comments = array($comments); + } elseif ($conf['mail']['commenthistory'] != 'chronological') { + $comments = array_reverse($comments); + } + } else { + $comments = array(); + } + + /* Don't notify any email address more than once. */ + $seen_email_addresses = array(); + + foreach ($recipients as $user) { + if ($user == $from && $user == Horde_Auth::getAuth() && + $prefs->getValue('email_others_only')) { + continue; + } + + /* Make sure to check permissions as a guest for the 'always_copy' + * address, and as the recipient for all others. */ + $to = $full_name = ''; + if (!empty($mail_always) && $user == $mail_always) { + $mycomments = Whups::permissionsFilter( + $comments, 'comment', Horde_Perms::READ, ''); + $to = $mail_always; + } else { + $details = Whups::getUserAttributes($user); + if (!empty($details['email'])) { + $to = Whups::formatUser($details); + $mycomments = Whups::permissionsFilter( + $comments, 'comment', Horde_Perms::READ, $details['user']); + } + $full_name = $details['name']; + } + + /* We may have no recipients due to users excluding themselves + * from self notifies. */ + if (!$to) { + continue; + } + + $formattedComment = $this->formatComments($mycomments); + if (empty($formattedComment) && $prefs->getValue('email_comments_only')) { + continue; + } + + $addr_arr = Horde_Mime_Address::parseAddressList($to); + if (!is_a($addr_arr, 'PEAR_Error') && isset($addr_arr[0])) { + $bare_address = strtolower($addr_arr[0]['mailbox'] . '@' . $addr_arr[0]['host']); + if (!empty($seen_email_addresses[$bare_address])) { + continue; + } + $seen_email_addresses[$bare_address] = true; + + if (empty($full_name) && isset($addr_arr[0]['personal'])) { + $full_name = $addr_arr[0]['personal']; + } + } + + // use email address as fallback + if (empty($full_name)) { + $full_name = $to; + } + + $body = str_replace( + array('@@comment@@', '@@full_name@@'), + array("\n\n" . $formattedComment, $full_name), + $message); + $mail->setBody($body, Horde_Nls::getCharset()); + + $mail->addHeader('Message-ID', Horde_Mime::generateMessageId()); + if ($ticket_id) { + $message_id = ''; + if ($is_new) { + $mail->addHeader('Message-ID', $message_id); + } else { + $mail->addHeader('In-Reply-To', $message_id); + $mail->addHeader('References', $message_id); + } + } + + $mail->clearRecipients(); + $mail->addHeader('To', $to, Horde_Nls::getCharset()); + + try { + $mail->send(Horde::getMailerConfig(), true); + $entry = sprintf('%s Message sent to %s from "%s"', + $_SERVER['REMOTE_ADDR'], $to, + Horde_Auth::getAuth()); + Horde::logMessage($entry, __FILE__, __LINE__, PEAR_LOG_INFO); + } catch (Horde_Mime_Exception $e) { + Horde::logMessage($e, __FILE__, __LINE__, PEAR_LOG_ERR); + } + } + } + + /** + * Converts a changeset array to a plain text comment snippet. + * + * @param array $comments A changeset list. + * + * @return string The formatted comment text, if any. + */ + function formatComments($comments) + { + $text = ''; + foreach ($comments as $comment) { + if (empty($comment['comment_text'])) { + continue; + } + $text .= "\n" + . sprintf(_("%s (%s) wrote:"), + Whups::formatUser($comment['user_id']), + Horde_Form_Type_date::getFormattedTime( + $comment['timestamp'], '%Y-%m-%d %H:%M', false)) + . "\n\n" . $comment['comment_text'] . "\n\n\n"; + } + + return $text; + } + + /** + * Attempts to return a concrete Whups_Driver instance based on $driver. + * + * @param string $driver The type of concrete Driver subclass to return. + * @param array $params A hash containing any additional configuration or + * connection parameters a subclass might need. + * + * @return Whups_Driver The newly created concrete Whups_Driver instance. + */ + function factory($driver = null, $params = null) + { + if (is_null($driver)) { + $driver = $GLOBALS['conf']['tickets']['driver']; + } + + $driver = basename($driver); + $class = 'Whups_Driver_' . $driver; + if (!class_exists($class)) { + include dirname(__FILE__) . '/Driver/' . $driver . '.php'; + } + if (class_exists($class)) { + if (is_null($params)) { + $params = Horde::getDriverConfig('tickets', $driver); + } + return new $class($params); + } else { + return PEAR::raiseError(sprintf(_("No such backend \"%s\" found"), $driver)); + } + } + +} diff --git a/whups/lib/Driver/sql.php b/whups/lib/Driver/sql.php new file mode 100644 index 000000000..37a670616 --- /dev/null +++ b/whups/lib/Driver/sql.php @@ -0,0 +1,3057 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + * + * @author Robert E. Coyle + * @author Chuck Hagenbuch + * @package Whups + */ +class Whups_Driver_sql extends Whups_Driver { + + /** + * The database connection object. + * + * @var DB + */ + var $_db; + + /** + * Handle for the current database connection, used for writing. Defaults + * to the same handle as $_db if a separate write database is not required. + * + * @var DB + */ + var $_write_db; + + /** + * A mapping of attributes from generic Whups names to DB backend fields. + * + * @var array + */ + var $_map = array('id' => 'ticket_id', + 'summary' => 'ticket_summary', + 'requester' => 'user_id_requester', + 'queue' => 'queue_id', + 'version' => 'version_id', + 'type' => 'type_id', + 'state' => 'state_id', + 'priority' => 'priority_id', + 'timestamp' => 'ticket_timestamp', + 'due' => 'ticket_due', + 'date_updated' => 'date_updated', + 'date_assigned' => 'date_assigned', + 'date_resolved' => 'date_resolved', + ); + + /** + * Adds a new queue to the backend. + * + * @params string $name The queue name. + * @params string $description The queue description. + * @params string $slug The queue slug. + * @params string $email The queue email address. + * + * @return mixed The new queue_id || PEAR_Error + */ + function addQueue($name, $description, $slug = '', $email = '') + { + // Get a new unique id. + $new_id = $this->_write_db->nextId('whups_queues'); + if (is_a($new_id, 'PEAR_Error')) { + Horde::logMessage($new_id, __FILE__, __LINE__, PEAR_LOG_ERR); + return $new_id; + } + + // Check for slug uniqueness + if (!empty($slug)) { + $query = 'SELECT count(queue_slug) FROM whups_queues ' + . 'WHERE queue_slug = ?'; + $result = $this->_db->getOne($query, $slug); + if ($result > 0) { + return PEAR::raiseError(_("That queue slug is already taken. Please select another.")); + } + } + $query = 'INSERT INTO whups_queues ' + . '(queue_id, queue_name, queue_description, queue_slug, queue_email) ' + . 'VALUES (?, ?, ?, ?, ?)'; + $values = array( + $new_id, + Horde_String::convertCharset($name, Horde_Nls::getCharset(), + $this->_params['charset']), + Horde_String::convertCharset($description, Horde_Nls::getCharset(), + $this->_params['charset']), + $slug, + $email); + Horde::logMessage( + sprintf('Whups_Driver_sql::addQueue(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + return $new_id; + } + + function addType($name, $description) + { + // Get a new unique id. + $new_id = $this->_write_db->nextId('whups_types'); + if (is_a($new_id, 'PEAR_Error')) { + Horde::logMessage($new_id, __FILE__, __LINE__, PEAR_LOG_ERR); + return $new_id; + } + + $query = 'INSERT INTO whups_types' . + ' (type_id, type_name, type_description) VALUES (?, ?, ?)'; + $values = array($new_id, + Horde_String::convertCharset($name, Horde_Nls::getCharset(), + $this->_params['charset']), + Horde_String::convertCharset($description, Horde_Nls::getCharset(), + $this->_params['charset'])); + Horde::logMessage( + sprintf('Whups_Driver_sql::addType(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + return $new_id; + } + + function addState($typeId, $name, $description, $category) + { + // Get a new state id. + $new_id = $this->_write_db->nextId('whups_states'); + if (is_a($new_id, 'PEAR_Error')) { + Horde::logMessage($new_id, __FILE__, __LINE__, PEAR_LOG_ERR); + return $new_id; + } + + $query = 'INSERT INTO whups_states (state_id, type_id, state_name, ' + . 'state_description, state_category) VALUES (?, ?, ?, ?, ?)'; + $values = array($new_id, + $typeId, + Horde_String::convertCharset($name, Horde_Nls::getCharset(), + $this->_params['charset']), + Horde_String::convertCharset($description, Horde_Nls::getCharset(), + $this->_params['charset']), + Horde_String::convertCharset($category, Horde_Nls::getCharset(), + $this->_params['charset'])); + Horde::logMessage( + sprintf('Whups_Driver_sql::addState(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + return $new_id; + } + + function addPriority($typeId, $name, $description) + { + // Get a new priority id. + $new_id = $this->_write_db->nextId('whups_priorities'); + if (is_a($new_id, 'PEAR_Error')) { + Horde::logMessage($new_id, __FILE__, __LINE__, PEAR_LOG_ERR); + return $new_id; + } + + $query = 'INSERT INTO whups_priorities (priority_id, type_id, ' + . 'priority_name, priority_description) VALUES (?, ?, ?, ?)'; + $values = array($new_id, + $typeId, + Horde_String::convertCharset($name, Horde_Nls::getCharset(), + $this->_params['charset']), + Horde_String::convertCharset($description, Horde_Nls::getCharset(), + $this->_params['charset'])); + Horde::logMessage( + sprintf('Whups_Driver_sql::addPriority(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + return $new_id; + } + + /** + * Adds a new version to the specified queue. + * + * @param integer $queueId The queueId to add the version to. + * @param string $name The name of the new version. + * @param string $description The descriptive text for the new version. + * @param boolean $active Whether the version is still active. + * + * @return mixed The new version id || PEAR_Error + */ + function addVersion($queueId, $name, $description, $active) + { + // Get a new version id. + $new_id = $this->_write_db->nextId('whups_versions'); + if (is_a($new_id, 'PEAR_Error')) { + Horde::logMessage($new_id, __FILE__, __LINE__, PEAR_LOG_ERR); + return $new_id; + } + + $query = 'INSERT INTO whups_versions (version_id, queue_id, ' + . 'version_name, version_description, version_active) VALUES (?, ?, ?, ?, ?)'; + $values = array((int)$new_id, + (int)$queueId, + Horde_String::convertCharset($name, Horde_Nls::getCharset(), + $this->_params['charset']), + Horde_String::convertCharset($description, Horde_Nls::getCharset(), + $this->_params['charset']), + (int)$active); + Horde::logMessage( + sprintf('Whups_Driver_sql::addVersion(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + return $new_id; + } + + /** + * Adds a form reply to the backend. + * + * @param integer $type The ticket type id for which to add the new reply. + * @param string $name The reply name. + * @param string $text The reply text. + * + * @return integer The id of the new form reply. + */ + function addReply($type, $name, $text) + { + // Get a new reply id. + $new_id = $this->_write_db->nextId('whups_replies'); + if (is_a($new_id, 'PEAR_Error')) { + Horde::logMessage($new_id, __FILE__, __LINE__, PEAR_LOG_ERR); + return $new_id; + } + + $query = 'INSERT INTO whups_replies (type_id, reply_id, ' + . 'reply_name, reply_text) VALUES (?, ?, ?, ?)'; + $values = array($type, + $new_id, + Horde_String::convertCharset($name, Horde_Nls::getCharset(), + $this->_params['charset']), + Horde_String::convertCharset($text, Horde_Nls::getCharset(), + $this->_params['charset'])); + Horde::logMessage( + sprintf('Whups_Driver_sql::addReply(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + return $new_id; + } + + function addTicket(&$info, $requester) + { + $type = $info['type']; + $state = $info['state']; + $priority = $info['priority']; + $queue = $info['queue']; + $summary = $info['summary']; + $version = isset($info['version']) ? $info['version'] : null; + $due = isset($info['due']) ? $info['due'] : null; + $comment = $info['comment']; + $attributes = isset($info['attributes']) ? $info['attributes'] : array(); + + // Get the new unique ids for this ticket and the initial comment. + $ticketId = $this->_write_db->nextId('whups_tickets'); + if (is_a($ticketId, 'PEAR_Error')) { + Horde::logMessage($ticketId, __FILE__, __LINE__, PEAR_LOG_ERR); + return $ticketId; + } + + if (!empty($info['user_email'])) { + $requester = $ticketId * -1; + } + + // Create the ticket. + $query = 'INSERT INTO whups_tickets (ticket_id, ticket_summary, ' + . 'user_id_requester, type_id, state_id, priority_id, queue_id, ' + . 'ticket_timestamp, ticket_due, version_id)' + . ' VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'; + $values = array($ticketId, + Horde_String::convertCharset($summary, Horde_Nls::getCharset(), + $this->_params['charset']), + $requester, + $type, + $state, + $priority, + $queue, + time(), + $due, + $version); + Horde::logMessage( + sprintf('Whups_Driver_sql::addTicket(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + if ($requester < 0) { + $query = 'INSERT INTO whups_guests (guest_id, guest_email) ' + . 'VALUES (?, ?)'; + $values = array((string)$requester, $info['user_email']); + Horde::logMessage( + sprintf('Whups_Driver_sql::addTicket(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + } + + $commentId = $this->addComment( + $ticketId, $comment, $requester, + isset($info['user_email']) ? $info['user_email'] : null); + if (is_a($commentId, 'PEAR_Error')) { + Horde::logMessage($commentId, __FILE__, __LINE__, PEAR_LOG_ERR); + return $commentId; + } + + $transaction = $this->updateLog($ticketId, + $requester, + array('state' => $state, + 'priority' => $priority, + 'type' => $type, + 'summary' => $summary, + 'due' => $due, + 'comment' => $commentId, + 'queue' => $queue)); + if (is_a($transaction, 'PEAR_Error')) { + Horde::logMessage($transaction, __FILE__, __LINE__, PEAR_LOG_ERR); + return $transaction; + } + + // Store the last-transaction id in the ticket's info for later use if + // needed. + $info['last-transaction'] = $transaction; + + // Assign the ticket, if requested. + $owners = array_merge( + isset($info['owners']) ? $info['owners'] : array(), + isset($info['group_owners']) ? $info['group_owners'] : array()); + foreach ($owners as $owner) { + $this->addTicketOwner($ticketId, $owner); + $result = $this->updateLog($ticketId, $requester, + array('assign' => $owner), + $transaction); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + } + + // Add any supplied attributes for this ticket. + foreach ($attributes as $attribute_id => $attribute_value) { + $result = $this->_setAttributeValue($ticketId, + $attribute_id, + $attribute_value); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + $this->updateLog( + $ticketId, $requester, + array('attribute' => $attribute_id . ':' . $attribute_value, + 'attribute_' . $attribute_id => $attribute_value), + $transaction); + } + + return $ticketId; + } + + function addComment($ticket_id, $comment, $creator, $creator_email = null) + { + $id = $this->_write_db->nextId('whups_comments'); + if (is_a($id, 'PEAR_Error')) { + Horde::logMessage($id, __FILE__, __LINE__, PEAR_LOG_ERR); + return $id; + } + + if (empty($creator) || $creator < 0) { + $creator = '-' . $id . '_comment'; + } + + // Add the row. + $result = $this->_write_db->query('INSERT INTO whups_comments (comment_id, ticket_id, user_id_creator, comment_text, comment_timestamp)' . + ' VALUES (?, ?, ?, ?, ?)', + array((int)$id, + (int)$ticket_id, + $creator, + Horde_String::convertCharset($comment, Horde_Nls::getCharset(), $this->_params['charset']), + time())); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + if ($creator < 0 && !empty($creator_email)) { + $query = 'INSERT INTO whups_guests (guest_id, guest_email)' + . ' VALUES (?, ?)'; + $values = array((string)$creator, $creator_email); + Horde::logMessage( + sprintf('Whups_Driver_sql::addComment(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + } + + return $id; + } + + /** + * Update any details of a ticket that are stored in the main + * whups_tickets table. Does not update the ticket log (so that it can be + * used for things low-level enough to not show up there. In general, you + * should *always* update the log; Whups_Ticket::commit() will take care + * of this in most cases). + * + * @param integer $ticketId The id of the ticket to update. + * @param array $attributes The array of attributes (key => value) to + * change. + * + * @return boolean|PEAR_Error True or an error object. + */ + function updateTicket($ticketId, $attributes) + { + if (!count($attributes)) { + return true; + } + + $query = ''; + $values = array(); + foreach ($attributes as $field => $value) { + if (empty($this->_map[$field])) { + continue; + } + + $query .= $this->_map[$field] . ' = ?, '; + $values[] = Horde_String::convertCharset($value, Horde_Nls::getCharset(), $this->_params['charset']); + } + + /* Don't try to execute an empty query (if we didn't find any updates + * to make). */ + if (empty($query)) { + return; + } + + $query = 'UPDATE whups_tickets SET ' . substr($query, 0, -2) . ' WHERE ticket_id = ?'; + $values[] = (int)$ticketId; + + Horde::logMessage( + sprintf('Whups_Driver_sql::updateTicket(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_write_db->query($query, $values); + } + + function addTicketOwner($ticketId, $owner) + { + return $this->_write_db->query('INSERT INTO whups_ticket_owners (ticket_id, ticket_owner) VALUES (?, ?)', + array($ticketId, $owner)); + } + + function deleteTicketOwner($ticketId, $owner) + { + return $this->_write_db->query('DELETE FROM whups_ticket_owners WHERE ticket_owner = ? AND ticket_id = ?', + array($owner, $ticketId)); + } + + function deleteTicket($info) + { + global $conf; + + $id = (int)$info['id']; + + $tables = array('whups_ticket_listeners', + 'whups_logs', + 'whups_comments', + 'whups_tickets', + 'whups_attributes'); + + if (!empty($conf['vfs']['type'])) { + require_once 'VFS.php'; + $vfs = &VFS::singleton($conf['vfs']['type'], Horde::getDriverConfig('vfs')); + if (is_a($vfs, 'PEAR_Error')) { + return $vfs; + } else { + if ($vfs->isFolder(WHUPS_VFS_ATTACH_PATH, $id)) { + $result = $vfs->deleteFolder(WHUPS_VFS_ATTACH_PATH, $id, true); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + } + } + } + + // Attempt to clean up everything. + foreach ($tables as $table) { + $query = 'DELETE FROM ' . $table . ' WHERE ticket_id = ?'; + $values = array($id); + Horde::logMessage( + sprintf('Whups_Driver_sql::deleteTicket(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + } + + return true; + } + + function executeQuery($query, $vars, $get_details = true, $munge = true) + { + $this->jtables = array(); + $this->joins = array(); + + $where = $query->reduce($this, '_clauseFromQuery', $vars); + if (!$where) { + $GLOBALS['notification']->push(_("No query to run"), 'horde.message'); + return array(); + } + + if ($this->joins) { + $joins = implode(' ', $this->joins); + } else { + $joins = ''; + } + + $sql = "SELECT whups_tickets.ticket_id, 1 FROM whups_tickets $joins " + . "WHERE $where"; + + Horde::logMessage( + sprintf('Whups_Driver_sql::executeQuery(): query="%s"', $sql), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $ids = $this->_db->getAssoc($sql); + if (is_a($ids, 'PEAR_Error')) { + Horde::logMessage($ids, __FILE__, __LINE__, PEAR_LOG_ERR); + $GLOBALS['notification']->push($ids, 'horde.error'); + return array(); + } + $ids = array_keys($this->_db->getAssoc($sql)); + + if (!count($ids)) { + return array(); + } + + if ($get_details) { + $ids = $this->getTicketsByProperties(array('id' => $ids), $munge); + } + + return $ids; + } + + function _clauseFromQuery($args, $type, $criterion, $cvalue, $operator, $value) + { + switch ($type) { + case QUERY_TYPE_AND: + return $this->_concatClauses($args, 'AND'); + + case QUERY_TYPE_OR: + return $this->_concatClauses($args, 'OR'); + + case QUERY_TYPE_NOT: + return $this->_notClause($args); + + case QUERY_TYPE_CRITERION: + return $this->_criterionClause($criterion, $cvalue, $operator, $value); + } + } + + function _concatClauses($args, $conjunction) + { + $count = count($args); + + if ($count == 0) { + $result = ''; + } elseif ($count == 1) { + $result = $args[0]; + } else { + $result = '(' . $args[0] . ')'; + + for ($i = 1; $i < $count; $i++) { + if ($args[$i] != '') { + $result .= ' ' . $conjunction . ' (' . $args[$i] . ')'; + } + } + } + + return $result; + } + + function _notClause($args) + { + if (count($args) == 0) { + return ''; + } + + // TODO: put in a sanity check: count($args) should be 1 + // always. + return 'NOT (' . $args[0] . ')'; + } + + function _criterionClause($criterion, $cvalue, $operator, $value) + { + $func = ''; + $funcend = ''; + + switch ($operator) { + case OPERATOR_GREATER: $op = '>'; break; + case OPERATOR_LESS: $op = '<'; break; + case OPERATOR_EQUAL: $op = '='; break; + case OPERATOR_PATTERN: $op = 'LIKE'; break; + + case OPERATOR_CI_SUBSTRING: + $value = '%' . str_replace(array('%', '_'), array('\%', '\_'), $value) . '%'; + if ($this->_db->phptype == 'pgsql') { + $op = 'ILIKE'; + } else { + $op = 'LIKE'; + $func = 'LOWER('; + $funcend = ')'; + } + break; + + case OPERATOR_CS_SUBSTRING: + // FIXME: Does not work in Postgres. + $func = 'LOCATE(' . $this->_write_db->quote($value) . ', '; + $funcend = ')'; + $op = '>'; + $value = 0; + break; + + case OPERATOR_WORD: + // TODO: There might be a better way to avoid missing + // words at the start and end of the text field. + if ($this->_db->phptype == 'pgsql') { + $func = "' ' || "; + $funcend = " || ' '"; + } else { + $func = "CONCAT(' ', CONCAT("; + $funcend = ", ' '))"; + } + $op = 'LIKE'; + $value = '%' . str_replace(array('%', '_'), array('\%', '\_'), $value) . '%'; + break; + } + + $qvalue = $this->_write_db->quote($value); + $done = false; + $text = ''; + + switch ($criterion) { + case CRITERION_ID: + $text = "{$func}whups_tickets.ticket_id{$funcend}"; + break; + + case CRITERION_QUEUE: + $text = "{$func}whups_tickets.queue_id{$funcend}"; + break; + + case CRITERION_VERSION: + $text = "{$func}whups_tickets.version_id{$funcend}"; + break; + + case CRITERION_TYPE: + $text = "{$func}whups_tickets.type_id{$funcend}"; + break; + + case CRITERION_STATE: + $text = "{$func}whups_tickets.state_id{$funcend}"; + break; + + case CRITERION_PRIORITY: + $text = "{$func}whups_tickets.priority_id{$funcend}"; + break; + + case CRITERION_SUMMARY: + $text = "{$func}whups_tickets.ticket_summary{$funcend}"; + break; + + case CRITERION_TIMESTAMP: + $text = "{$func}whups_tickets.ticket_timestamp{$funcend}"; + break; + + case CRITERION_UPDATED: + $text = "{$func}whups_tickets.date_updated{$funcend}"; + break; + + case CRITERION_RESOLVED: + $text = "{$func}whups_tickets.date_resolved{$funcend}"; + break; + + case CRITERION_ASSIGNED: + $text = "{$func}whups_tickets.date_assigned{$funcend}"; + break; + + case CRITERION_DUE: + $text = "{$func}whups_tickets.ticket_due{$funcend}"; + break; + + case CRITERION_ATTRIBUTE: + $cvalue = (int)$cvalue; + + if (!isset($this->jtables['whups_attributes'])) { + $this->jtables['whups_attributes'] = 1; + } + $v = $this->jtables['whups_attributes']++; + + $this->joins[] = "LEFT JOIN whups_attributes wa$v ON (whups_tickets.ticket_id = wa$v.ticket_id AND wa$v.attribute_id = $cvalue)"; + $text = "{$func}wa$v.attribute_value{$funcend} $op $qvalue"; + $done = true; + break; + + case CRITERION_OWNERS: + if (!isset($this->jtables['whups_ticket_owners'])) { + $this->jtables['whups_ticket_owners'] = 1; + } + $v = $this->jtables['whups_ticket_owners']++; + + $this->joins[] = "LEFT JOIN whups_ticket_owners wto$v ON whups_tickets.ticket_id = wto$v.ticket_id"; + $qvalue = $this->_write_db->quote('user:' . $value); + $text = "{$func}wto$v.ticket_owner{$funcend} $op $qvalue"; + $done = true; + break; + + case CRITERION_REQUESTER: + if (!isset($this->jtables['whups_guests'])) { + $this->jtables['whups_guests'] = 1; + } + $v = $this->jtables['whups_guests']++; + + $this->joins[] = "LEFT JOIN whups_guests wg$v ON whups_tickets.user_id_requester = wg$v.guest_id"; + $text = "{$func}whups_tickets.user_id_requester{$funcend} $op $qvalue OR {$func}wg$v.guest_email{$funcend} $op $qvalue"; + $done = true; + break; + + case CRITERION_GROUPS: + if (!isset($this->jtables['whups_ticket_owners'])) { + $this->jtables['whups_ticket_owners'] = 1; + } + $v = $this->jtables['whups_ticket_owners']++; + + $this->joins[] = "LEFT JOIN whups_ticket_owners wto$v ON whups_tickets.ticket_id = wto$v.ticket_id"; + $qvalue = $this->_write_db->quote('group:' . $value); + $text = "{$func}wto$v.ticket_owner{$funcend} $op $qvalue"; + $done = true; + break; + + case CRITERION_ADDED_COMMENT: + if (!isset($this->jtables['whups_comments'])) { + $this->jtables['whups_comments'] = 1; + } + $v = $this->jtables['whups_comments']++; + + $this->joins[] = "LEFT JOIN whups_comments wc$v ON (whups_tickets.ticket_id = wc$v.ticket_id)"; + $text = "{$func}wc$v.user_id_creator{$funcend} $op $qvalue"; + $done = true; + break; + + case CRITERION_COMMENT: + if (!isset($this->jtables['whups_comments'])) { + $this->jtables['whups_comments'] = 1; + } + $v = $this->jtables['whups_comments']++; + + $this->joins[] = "LEFT JOIN whups_comments wc$v ON (whups_tickets.ticket_id = wc$v.ticket_id)"; + $text = "{$func}wc$v.comment_text{$funcend} $op $qvalue"; + $done = true; + break; + } + + if ($done == false) { + $text .= " $op $qvalue"; + } + + return $text; + } + + function getTicketsByProperties($info, $munge = true, $perowner = false) + { + // Search conditions. + $where = $this->_generateWhere( + 'whups_tickets', + array('ticket_id', 'type_id', 'state_id', 'priority_id', 'queue_id'), + $info, 'integer'); + + $where2 = $this->_generateWhere( + 'whups_tickets', array('user_id_requester'), $info, 'string'); + + if (empty($where)) { + $where = $where2; + } elseif (!empty($where2)) { + $where .= ' AND ' . $where2; + } + + // Add summary filter if present. + if (!empty($info['summary'])) { + $where = $this->_addWhere( + $where, 1, + 'LOWER(whups_tickets.ticket_summary) LIKE ' + . $this->_write_db->quote('%' . Horde_String::lower($info['summary']) . '%')); + } + + // Add date fields. + if (!empty($info['ticket_timestamp'])) { + $where = $this->_addDateWhere($where, $info['ticket_timestamp'], 'ticket_timestamp'); + } + if (!empty($info['date_updated'])) { + $where = $this->_addDateWhere($where, $info['date_updated'], 'date_updated'); + } + if (!empty($info['date_assigned'])) { + $where = $this->_addDateWhere($where, $info['date_assigned'], 'date_assigned'); + } + if (!empty($info['date_resolved'])) { + $where = $this->_addDateWhere($where, $info['date_resolved'], 'date_resolved'); + } + if (!empty($info['ticket_due'])) { + $where = $this->_addDateWhere($where, $info['ticket_due'], 'ticket_due'); + } + + $fields = array('ticket_id AS id', + 'ticket_summary AS summary', + 'user_id_requester', + 'state_id AS state', + 'type_id AS type', + 'priority_id AS priority', + 'queue_id AS queue', + 'date_updated', + 'date_assigned', + 'date_resolved', + 'version_id AS version'); + + $fields = $this->_prefixTableToColumns('whups_tickets', $fields) + . ', whups_tickets.ticket_timestamp AS timestamp, whups_tickets.ticket_due AS due'; + $tables = 'whups_tickets'; + $join = ''; + $groupby = 'whups_tickets.ticket_id, whups_tickets.ticket_summary, whups_tickets.user_id_requester, whups_tickets.state_id, whups_tickets.type_id, whups_tickets.priority_id, whups_tickets.queue_id, whups_tickets.ticket_timestamp, whups_tickets.ticket_due, whups_tickets.date_updated, whups_tickets.date_assigned, whups_tickets.date_resolved'; + + // State filters. + if (isset($info['category'])) { + if (is_array($info['category'])) { + $cat = ''; + foreach ($info['category'] as $category) { + if (!empty($cat)) { + $cat .= ' OR '; + } + $cat .= 'whups_states.state_category = ' + . $this->_write_db->quote($category); + } + $cat = ' AND (' . $cat . ')'; + } else { + $cat = isset($info['category']) + ? ' AND whups_states.state_category = ' + . $this->_write_db->quote($info['category']) + : ''; + } + } else { + $cat = ''; + } + + // Type filters. + if (isset($info['type_id'])) { + if (is_array($info['type_id'])) { + $t = array(); + foreach ($info['type_id'] as $type) { + $t[] = 'whups_tickets.type_id = ' + . $this->_write_db->quote($type); + } + $t = ' AND (' . implode(' OR ', $t) . ')'; + } else { + $t = isset($info['type_id']) + ? ' AND whups_tickets.type_id = ' + . $this->_write_db->quote($info['type_id']) + : ''; + } + + $this->_addWhere($where, $t, $t); + } + + $nouc = isset($info['nouc']) + ? " AND whups_states.state_category <> 'unconfirmed'" : ''; + $nores = isset($info['nores']) + ? " AND whups_states.state_category <> 'resolved'" : ''; + $nonew = isset($info['nonew']) + ? " AND whups_states.state_category <> 'new'" : ''; + $noass = isset($info['noass']) + ? " AND whups_states.state_category <> 'assigned'" : ''; + + $uc = isset($info['uc']) + ? " AND whups_states.state_category = 'unconfirmed'" : ''; + $res = isset($info['res']) + ? " AND whups_states.state_category = 'resolved'" : ''; + $new = isset($info['new']) + ? " AND whups_states.state_category = 'new'" : ''; + $ass = isset($info['ass']) + ? " AND whups_states.state_category = 'assigned'" : ''; + + // If there are any state filters, add them in. + if ($nouc || $nores || $nonew || $noass || + $uc || $res || $new || $ass || $cat) { + $where = $this->_addWhere($where, 1, "(whups_tickets.type_id = whups_states.type_id AND whups_tickets.state_id = whups_states.state_id$nouc$nores$nonew$noass$uc$res$new$ass$cat)"); + } + + // Initialize join clauses. + $join = ''; + + // Handle owner properties. + if (isset($info['owner'])) { + $join .= ' INNER JOIN whups_ticket_owners ON whups_tickets.ticket_id = whups_ticket_owners.ticket_id AND '; + if (is_array($info['owner'])) { + $clauses = array(); + foreach ($info['owner'] as $owner) { + $clauses[] = 'whups_ticket_owners.ticket_owner = ' + . $this->_write_db->quote($owner); + } + $join .= '(' . implode(' OR ', $clauses) . ')'; + } else { + $join .= 'whups_ticket_owners.ticket_owner = ' + . $this->_write_db->quote($info['owner']); + } + } + if (isset($info['notowner'])) { + if ($info['notowner'] === true) { + // Filter for tickets with no owner. + $join .= ' LEFT JOIN whups_ticket_owners ON whups_tickets.ticket_id = whups_ticket_owners.ticket_id AND whups_ticket_owners.ticket_owner IS NOT NULL'; + } else { + $join .= ' LEFT JOIN whups_ticket_owners ON whups_tickets.ticket_id = whups_ticket_owners.ticket_id AND whups_ticket_owners.ticket_owner = ' . $this->_write_db->quote($info['notowner']); + } + $where = $this->_addWhere($where, 1, + 'whups_ticket_owners.ticket_id IS NULL'); + } + + if ($munge) { + $myqueues = $GLOBALS['registry']->hasMethod('tickets/listQueues') == $GLOBALS['registry']->getApp(); + $myversions = $GLOBALS['registry']->hasMethod('tickets/listVersions') == $GLOBALS['registry']->getApp(); + $fields = "$fields, " . + 'whups_types.type_name AS type_name, ' . + 'whups_states.state_name AS state_name, ' . + 'whups_states.state_category AS state_category, ' . + 'whups_priorities.priority_name AS priority_name'; + + $join .= + ' INNER JOIN whups_types ON whups_tickets.type_id = whups_types.type_id' . + ' INNER JOIN whups_states ON whups_tickets.state_id = whups_states.state_id' . + ' INNER JOIN whups_priorities ON whups_tickets.priority_id = whups_priorities.priority_id' . + ' INNER JOIN whups_states state2 ON whups_tickets.type_id = state2.type_id'; + + $groupby .= ', whups_types.type_name, whups_states.state_name, whups_states.state_category'; + if ($myversions) { + $versions = array(); + $fields .= ', whups_versions.version_name AS version_name' + . ', whups_versions.version_description AS version_description' + . ', whups_versions.version_active AS version_active'; + $join .= ' LEFT JOIN whups_versions ON whups_tickets.version_id = whups_versions.version_id'; + $groupby .= ', whups_versions.version_name, whups_versions.version_description, whups_versions.version_active, whups_tickets.version_id'; + } + if ($myqueues) { + $queues = array(); + $fields .= ', whups_queues.queue_name AS queue_name'; + $join .= ' INNER JOIN whups_queues ON whups_tickets.queue_id = whups_queues.queue_id'; + $groupby .= ', whups_queues.queue_name'; + } + $groupby .= ', whups_priorities.priority_name'; + } + + if ($perowner) { + $join .= ' LEFT JOIN whups_ticket_owners ON whups_tickets.ticket_id = whups_ticket_owners.ticket_id'; + $fields .= ', whups_ticket_owners.ticket_owner AS owner'; + $groupby .= ', whups_ticket_owners.ticket_owner'; + } + + $query = "SELECT $fields FROM $tables$join " + . (!empty($where) ? "WHERE $where " : '') + . 'GROUP BY ' . $groupby; + Horde::logMessage( + sprintf('Whups_Driver_sql::getTicketsByProperties(): query="%s"', + $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $info = $this->_db->getAll($query, null, DB_FETCHMODE_ASSOC); + if (is_a($info, 'PEAR_Error')) { + Horde::logMessage($info, __FILE__, __LINE__, PEAR_LOG_ERR); + return $info; + } + + if (!count($info)) { + return array(); + } + + $info = Horde_String::convertCharset($info, $this->_params['charset']); + + $tickets = array(); + foreach ($info as $ticket) { + if ($munge) { + if (!$myqueues) { + if (!isset($queues[$ticket['queue']])) { + $queues[$ticket['queue']] = $GLOBALS['registry']->call( + 'tickets/getQueueDetails', + array($ticket['queue'])); + } + $ticket['queue_name'] = $queues[$ticket['queue']]['name']; + if (isset($queues[$ticket['queue']]['link'])) { + $ticket['queue_link'] = $queues[$ticket['queue']]['link']; + } + } + if (!$myversions) { + if (!isset($versions[$ticket['version']])) { + $versions[$ticket['version']] = $GLOBALS['registry']->call( + 'tickets/getVersionDetails', + array($ticket['version'])); + } + $ticket['version_name'] = $versions[$ticket['version']]['name']; + if (isset($versions[$ticket['version']]['link'])) { + $ticket['version_link'] = $versions[$ticket['version']]['link']; + } + } + } + $tickets[$ticket['id']] = $ticket; + } + + $owners = $this->getOwners(array_keys($tickets)); + if (is_a($owners, 'PEAR_Error')) { + return $owners; + } + foreach ($owners as $row) { + if (empty($tickets[$row['id']]['owners'])) { + $tickets[$row['id']]['owners'] = array(); + } + $tickets[$row['id']]['owners'][] = $row['owner']; + } + + $attributes = $this->getTicketAttributesWithNames(array_keys($tickets)); + foreach ($attributes as $row) { + $attribute_id = 'attribute_' . $row['attribute_id']; + $tickets[$row['id']][$attribute_id] = $row['attribute_value']; + $tickets[$row['id']][$attribute_id . '_name'] = $row['attribute_name']; + } + return array_values($tickets); + } + + function getTicketDetails($ticket, $checkPerms = true) + { + $result = $this->getTicketsByProperties(array('id' => $ticket)); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } elseif (!isset($result[0])) { + return PEAR::raiseError(sprintf(_("Ticket %s was not found."), + $ticket)); + } else { + $queues = Whups::permissionsFilter( + $this->getQueues(), 'queue', Horde_Perms::READ, Horde_Auth::getAuth(), + $result[0]['user_id_requester']); + if ($checkPerms && + !in_array($result[0]['queue'], array_flip($queues))) { + return PEAR::raiseError( + sprintf(_("You do not have permission to access this ticket (%s)."), + $ticket), + 0); + } + } + + return $result[0]; + } + + function getTicketState($ticket_id) + { + $query = 'SELECT whups_tickets.state_id, whups_states.state_category ' + . 'FROM whups_tickets INNER JOIN whups_states ' + . 'ON whups_tickets.state_id = whups_states.state_id ' + . 'WHERE ticket_id = ?'; + Horde::logMessage( + sprintf('Whups_Driver_sql::getTicketState(): query="%s"; values="%s"', + $query, $ticket_id), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $state = $this->_db->getRow($query, array($ticket_id), + DB_FETCHMODE_ASSOC); + if (is_a($state, 'PEAR_Error')) { + Horde::logMessage($state, __FILE__, __LINE__, PEAR_LOG_ERR); + } + return $state; + } + + function getGuestEmail($guest_id) + { + static $guestCache; + + if (!isset($guestCache[$guest_id])) { + $query = 'SELECT guest_email FROM whups_guests WHERE guest_id = ?'; + $values = array($guest_id); + Horde::logMessage( + sprintf('Whups_Driver_sql::getGuestEmail(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_db->getOne($query, $values); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + $guestCache[$guest_id] = Horde_String::convertCharset( + $result, $this->_params['charset']); + } + return $guestCache[$guest_id]; + } + + function _getHistory($ticket_id) + { + $where = 'whups_logs.ticket_id = ' . (int)$ticket_id; + $join = 'LEFT JOIN whups_comments + ON whups_logs.log_type = \'comment\' + AND whups_logs.log_value_num = whups_comments.comment_id + LEFT JOIN whups_versions + ON whups_logs.log_type = \'version\' + AND whups_logs.log_value_num = whups_versions.version_id + LEFT JOIN whups_states + ON whups_logs.log_type = \'state\' + AND whups_logs.log_value_num = whups_states.state_id + LEFT JOIN whups_priorities + ON whups_logs.log_type = \'priority\' + AND whups_logs.log_value_num = whups_priorities.priority_id + LEFT JOIN whups_types + ON whups_logs.log_type = \'type\' + AND whups_logs.log_value_num = whups_types.type_id + LEFT JOIN whups_attributes_desc + ON whups_logs.log_type = \'attribute\' + AND whups_logs.log_value_num = whups_attributes_desc.attribute_id'; + + $fields = $this->_prefixTableToColumns('whups_comments', + array('comment_text')) + . ', whups_logs.log_timestamp AS timestamp, whups_logs.ticket_id' + . ', whups_logs.log_type, whups_logs.log_value' + . ', whups_logs.log_value_num, whups_logs.log_id' + . ', whups_logs.transaction_id, whups_logs.user_id' + . ', whups_priorities.priority_name, whups_states.state_name, whups_versions.version_name' + . ', whups_types.type_name, whups_attributes_desc.attribute_name'; + + $query = "SELECT $fields FROM whups_logs $join WHERE $where " + . "ORDER BY whups_logs.transaction_id"; + Horde::logMessage(sprintf('Whups_Driver_sql::_getHistory(): query="%s"', + $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $history = $this->_db->getAll($query, null, DB_FETCHMODE_ASSOC); + if (is_a($history, 'PEAR_Error')) { + Horde::logMessage($history, __FILE__, __LINE__, PEAR_LOG_ERR); + return $history; + } + + $history = Horde_String::convertCharset($history, $this->_params['charset']); + for ($i = 0, $iMax = count($history); $i < $iMax; ++$i) { + if ($history[$i]['log_type'] == 'queue') { + $queue = $this->getQueue($history[$i]['log_value_num']); + $history[$i]['queue_name'] = $queue ? $queue['name'] : null; + } + } + + return $history; + } + + /** + * Return a list of queues with open tickets, and the number of + * open tickets in each. + * + * @param array $queues Array of queue ids to summarize. + */ + function getQueueSummary($queue_ids) + { + $qstring = (int)array_shift($queue_ids); + while ($queue_ids) { + $qstring .= ', ' . (int)array_shift($queue_ids); + } + + $sql = 'SELECT q.queue_id AS id, q.queue_slug AS slug, ' + . 'q.queue_name AS name, q.queue_description AS description, ' + . 'COUNT(t.ticket_id) AS open_tickets ' + . 'FROM whups_queues q LEFT JOIN whups_tickets t ' + . 'ON q.queue_id = t.queue_id ' + . 'INNER JOIN whups_states s ' + . 'ON (t.state_id = s.state_id AND s.state_category != \'resolved\') ' + . 'WHERE q.queue_id IN (' . $qstring . ') ' + . 'GROUP BY q.queue_id, q.queue_slug, q.queue_name, ' + . 'q.queue_description ORDER BY q.queue_name'; + Horde::logMessage( + sprintf('Whups_Driver_sql::getQueueSummary(): query="%s"', $sql), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $queues = $this->_db->getAll($sql, null, DB_FETCHMODE_ASSOC); + if (is_a($queues, 'PEAR_Error')) { + Horde::logMessage($queues, __FILE__, __LINE__, PEAR_LOG_ERR); + return $queues; + } + + return Horde_String::convertCharset($queues, $this->_params['charset']); + } + + function getQueueInternal($queueId) + { + static $queues; + + if (isset($queues[$queueId])) { + return $queues[$queueId]; + } + + $query = 'SELECT queue_id, queue_name, queue_description, ' + . 'queue_versioned, queue_slug, queue_email ' + . 'FROM whups_queues WHERE queue_id = ?'; + $values = array((int)$queueId); + Horde::logMessage( + sprintf('Whups_Driver_sql::getQueueInternal(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $queue = $this->_db->getRow($query, $values, DB_FETCHMODE_ASSOC); + if (is_a($queue, 'PEAR_Error')) { + Horde::logMessage($queue, __FILE__, __LINE__, PEAR_LOG_ERR); + return $queue; + } elseif (!$queue) { + return false; + } + + $queue = Horde_String::convertCharset($queue, $this->_params['charset']); + $queues[$queueId] = array('id' => (int)$queue['queue_id'], + 'name' => $queue['queue_name'], + 'description' => $queue['queue_description'], + 'versioned' => (bool)$queue['queue_versioned'], + 'slug' => $queue['queue_slug'], + 'email' => $queue['queue_email'], + 'readonly' => false); + + return $queues[$queueId]; + } + + function getQueueBySlugInternal($slug) + { + $query = 'SELECT queue_id, queue_name, queue_description, ' + . 'queue_versioned, queue_slug FROM whups_queues WHERE ' + . 'queue_slug = ?'; + $values = array((string)$slug); + Horde::logMessage( + sprintf('Whups_Driver_sql::getQueueInternal(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $queue = $this->_db->getAll($query, $values); + if (is_a($queue, 'PEAR_Error')) { + Horde::logMessage($queue, __FILE__, __LINE__, PEAR_LOG_ERR); + return $queue; + } elseif (!count($queue)) { + return $queue; + } + + $queue = Horde_String::convertCharset($queue, $this->_params['charset']); + $queue = $queue[0]; + return array('id' => $queue[0], + 'name' => $queue[1], + 'description' => $queue[2], + 'versioned' => $queue[3], + 'slug' => $queue[4], + 'readonly' => false); + } + + function getQueuesInternal() + { + static $internals; + + if ($internals) { + return $internals; + } + + $query = 'SELECT queue_id, queue_name FROM whups_queues ' + . 'ORDER BY queue_name'; + Horde::logMessage(sprintf('Whups_Driver_sql::getQueues(): query="%s"', + $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $queues = $this->_db->getAssoc($query); + if (is_a($queues, 'PEAR_Error')) { + Horde::logMessage($queues, __FILE__, __LINE__, PEAR_LOG_ERR); + return array(); + } + + $internals = Horde_String::convertCharset($queues, $this->_params['charset']); + return $internals; + } + + function updateQueue($queueId, $name, $description, $types, $versioned, + $slug = '', $email = '', $default = null) + { + global $registry; + + if ($registry->hasMethod('tickets/listQueues') == $registry->getApp()) { + // Is slug unique? + $query = 'SELECT count(queue_slug) FROM whups_queues WHERE queue_slug = ? AND queue_id <> ?'; + $result = $this->_db->getOne($query, array($slug, $queueId)); + if ($result > 0) { + return PEAR::raiseError(_("That queue slug is already taken. Please select another.")); + } + + // First update the queue entry itself. + $query = 'UPDATE whups_queues SET queue_name = ?, ' + . 'queue_description = ?, queue_versioned = ?, ' + . 'queue_slug = ?, queue_email = ? WHERE queue_id = ?'; + $values = array(Horde_String::convertCharset($name, + Horde_Nls::getCharset(), + $this->_params['charset']), + Horde_String::convertCharset($description, + Horde_Nls::getCharset(), + $this->_params['charset']), + (empty($versioned) ? 0 : 1), + $slug, + $email, + $queueId); + Horde::logMessage( + sprintf('Whups_Driver_sql::updateQueue(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + } + + // Clear all previous type-queue associations. + $query = 'DELETE FROM whups_types_queues WHERE queue_id = ?'; + $values = array($queueId); + Horde::logMessage( + sprintf('Whups_Driver_sql::updateQueue(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + // Add the new associations. + if (is_array($types)) { + foreach ($types as $typeId) { + $query = 'INSERT INTO whups_types_queues ' + . '(queue_id, type_id, type_default) VALUES (?, ?, ?)'; + $values = array($queueId, $typeId, $default == $typeId ? 1 : 0); + Horde::logMessage( + sprintf('Whups_Driver_sql::updateQueue(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + } + } + + return true; + } + + function getDefaultType($queue) + { + $query = 'SELECT type_id FROM whups_types_queues ' + . 'WHERE type_default = 1 AND queue_id = ?'; + Horde::logMessage( + sprintf('Whups_Driver_sql::setDefaultType(): query="%s"', $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $type = $this->_db->getOne($query, array($queue)); + if (is_a($type, 'PEAR_Error')) { + Horde::logMessage($type, __FILE__, __LINE__, PEAR_LOG_ERR); + return null; + } + return $type; + } + + /** + */ + function deleteQueue($queueId) + { + $tables = array('whups_queues_users', + 'whups_types_queues', + 'whups_versions', + 'whups_queues'); + foreach ($tables as $table) { + $query = 'DELETE FROM ' . $table . ' WHERE queue_id = ?'; + $values = array($queueId); + Horde::logMessage( + sprintf('Whups_Driver_sql::deleteQueue(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + } + + return parent::deleteQueue($queueId); + } + + /** + */ + function updateTypesQueues($tmPairs) + { + // Do this as a transaction. + $this->_write_db->autoCommit(false); + + // Delete existing associations. + $query = 'DELETE FROM whups_types_queues'; + Horde::logMessage( + sprintf('Whups_Driver_sql::updateTypesQueues(): query="%s"', $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + $this->_write_db->rollback(); + $this->_write_db->autoCommit(true); + return $result; + } + + // Insert new associations. + foreach ($tmPairs as $pair) { + $query = 'INSERT INTO whups_types_queues (queue_id, type_id) ' + . 'VALUES (?, ?)'; + $values = array((int)$pair[0], (int)$pair[1]); + Horde::logMessage( + sprintf('Whups_Driver_sql::updateTypesQueues(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + $this->_write_db->rollback(); + $this->_write_db->autoCommit(true); + return $result; + } + } + + $result = $this->_write_db->commit(); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + $this->_write_db->rollback(); + $this->_write_db->autoCommit(true); + return $result; + } + + $this->_write_db->autoCommit(true); + } + + function getQueueUsers($queueId) + { + $query = 'SELECT user_uid AS u1, user_uid AS u2 FROM whups_queues_users' + . ' WHERE queue_id = ? ORDER BY u1'; + $values = array($queueId); + Horde::logMessage( + sprintf('Whups_Driver_sql::getQueueUsers(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $users = $this->_db->getAssoc($query, false, $values); + if (is_a($users, 'PEAR_Error')) { + Horde::logMessage($users, __FILE__, __LINE__, PEAR_LOG_ERR); + return array(); + } + + return $users; + } + + function addQueueUser($queueId, $userId) + { + if (!is_array($userId)) { + $userId = array($userId); + } + foreach ($userId as $user) { + $query = 'INSERT INTO whups_queues_users (queue_id, user_uid) ' + . 'VALUES (?, ?)'; + $values = array($queueId, $user); + Horde::logMessage( + sprintf('Whups_Driver_sql::addQueueUser(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + } + return true; + } + + function removeQueueUser($queueId, $userId) + { + $query = 'DELETE FROM whups_queues_users' . + ' WHERE queue_id = ? AND user_uid = ?'; + $values = array($queueId, $userId); + Horde::logMessage( + sprintf('Whups_Driver_sql::removeQueueUser(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_write_db->query($query, $values); + } + + function getType($typeId) + { + if (empty($typeId)) { + return false; + } + $query = 'SELECT type_id, type_name, type_description ' + . 'FROM whups_types WHERE type_id = ?'; + $values = array($typeId); + Horde::logMessage( + sprintf('Whups_Driver_sql::getType(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $type = $this->_db->getAssoc($query, false, $values); + if (is_a($type, 'PEAR_Error')) { + Horde::logMessage($type, __FILE__, __LINE__, PEAR_LOG_ERR); + return $type; + } + + $type = Horde_String::convertCharset($type, $this->_params['charset']); + return array('id' => $typeId, + 'name' => isset($type[$typeId][0]) ? $type[$typeId][0] : '', + 'description' => isset($type[$typeId][1]) ? $type[$typeId][1] : ''); + } + + function getTypes($queueId) + { + $query = 'SELECT t.type_id, t.type_name ' + . 'FROM whups_types t, whups_types_queues tm ' + . 'WHERE tm.queue_id = ? AND tm.type_id = t.type_id ' + . 'ORDER BY t.type_name'; + $values = array($queueId); + Horde::logMessage( + sprintf('Whups_Driver_sql::getTypes(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $types = $this->_db->getAssoc($query, false, $values); + if (is_a($types, 'PEAR_Error')) { + Horde::logMessage($types, __FILE__, __LINE__, PEAR_LOG_ERR); + return array(); + } + + return Horde_String::convertCharset($types, $this->_params['charset']); + } + + function getTypeIds($queueId) + { + $query = 'SELECT type_id FROM whups_types_queues ' + . 'WHERE queue_id = ? ORDER BY type_id'; + $values = array($queueId); + Horde::logMessage( + sprintf('Whups_Driver_sql::getTypeIds(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_db->getAll($query, $values, DB_FETCHMODE_ASSOC); + } + + function getAllTypes() + { + $query = 'SELECT type_id, type_name FROM whups_types ORDER BY type_name'; + Horde::logMessage(sprintf('Whups_Driver_sql::getAllTypes(): query="%s"', + $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $types = $this->_db->getAssoc($query); + if (is_a($types, 'PEAR_Error')) { + Horde::logMessage($types, __FILE__, __LINE__, PEAR_LOG_ERR); + return array(); + } + + return Horde_String::convertCharset($types, $this->_params['charset']); + } + + function getAllTypeInfo() + { + $query = 'SELECT type_id, type_name, type_description ' + . 'FROM whups_types ORDER BY type_id'; + Horde::logMessage( + sprintf('Whups_Driver_sql::getAllTypeInfo(): query="%s"', $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $info = $this->_db->getAll($query, null, DB_FETCHMODE_ASSOC); + if (is_a($info, 'PEAR_Error')) { + Horde::logMessage($info, __FILE__, __LINE__, PEAR_LOG_ERR); + return $info; + } + + return Horde_String::convertCharset($info, $this->_params['charset']); + } + + function getTypeName($type) + { + $query = 'SELECT type_name FROM whups_types WHERE type_id = ?'; + $values = array($type); + Horde::logMessage( + sprintf('Whups_Driver_sql::getTypeName(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $name = $this->_db->getOne($query, $values); + if (is_a($name, 'PEAR_Error')) { + Horde::logMessage($name, __FILE__, __LINE__, PEAR_LOG_ERR); + return $name; + } + + return Horde_String::convertCharset($name, $this->_params['charset']); + } + + function updateType($typeId, $name, $description) + { + $query = 'UPDATE whups_types' . + ' SET type_name = ?, type_description = ? WHERE type_id = ?'; + $values = array(Horde_String::convertCharset($name, Horde_Nls::getCharset(), + $this->_params['charset']), + Horde_String::convertCharset($description, Horde_Nls::getCharset(), + $this->_params['charset']), + $typeId); + Horde::logMessage( + sprintf('Whups_Driver_sql::updateType(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_write_db->query($query, $values); + } + + function deleteType($typeId) + { + $values = array((int)$typeId); + + $query = 'DELETE FROM whups_states WHERE type_id = ?'; + Horde::logMessage( + sprintf('Whups_Driver_sql::deleteType(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $this->_write_db->query($query, $values); + + $query = 'DELETE FROM whups_priorities WHERE type_id = ?'; + Horde::logMessage( + sprintf('Whups_Driver_sql::deleteType(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $this->_write_db->query($query, $values); + + $query = 'DELETE FROM whups_attributes_desc WHERE type_id = ?'; + Horde::logMessage( + sprintf('Whups_Driver_sql::deleteType(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $this->_write_db->query($query, $values); + + $query = 'DELETE FROM whups_types WHERE type_id = ?'; + Horde::logMessage( + sprintf('Whups_Driver_sql::deleteType(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_write_db->query($query, $values); + } + + function getStates($type = null, $category = '', $notcategory = '') + { + $fields = 'state_id, state_name'; + $from = 'whups_states'; + $order = 'state_category, state_name'; + if (empty($type)) { + $fields .= ', whups_types.type_id, type_name'; + $from .= ' LEFT JOIN whups_types ON whups_states.type_id = whups_types.type_id'; + $where = ''; + $order = 'type_name, ' . $order; + } else { + $where = 'type_id = ' . $type; + } + + if (!is_array($category)) { + $where = $this->_addWhere($where, $category, 'state_category = ' . $this->_write_db->quote($category)); + } else { + $clauses = array(); + foreach ($category as $cat) { + $clauses[] = 'state_category = ' . $this->_write_db->quote($cat); + } + if (count($clauses)) + $where = $this->_addWhere($where, $cat, implode(' OR ', $clauses)); + } + + if (!is_array($notcategory)) { + $where = $this->_addWhere($where, $notcategory, 'state_category <> ' . $this->_write_db->quote($notcategory)); + } else { + $clauses = array(); + foreach ($notcategory as $notcat) { + $clauses[] = 'state_category <> ' . $this->_write_db->quote($notcat); + } + if (count($clauses)) { + $where = $this->_addWhere($where, $notcat, implode(' OR ', $clauses)); + } + } + if (!empty($where)) { + $where = ' WHERE ' . $where; + } + + $query = "SELECT $fields FROM $from$where ORDER BY $order"; + Horde::logMessage(sprintf('Whups_Driver_sql::getStates(): query="%s"', + $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $states = $this->_db->getAssoc($query); + if (is_a($states, 'PEAR_Error')) { + Horde::logMessage($states, __FILE__, __LINE__, PEAR_LOG_ERR); + return $states; + } + + if (empty($type)) { + foreach ($states as $id => $state) { + $states[$id] = $state[0] . ' (' . $state[2] . ')'; + } + } + + return Horde_String::convertCharset($states, $this->_params['charset']); + } + + function getState($stateId) + { + if (empty($stateId)) { + return false; + } + $query = 'SELECT state_id, state_name, state_description, ' + . 'state_category, type_id FROM whups_states WHERE state_id = ?'; + $values = array($stateId); + Horde::logMessage( + sprintf('Whups_Driver_sql::getState(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $state = $this->_db->getAssoc($query, false, $values); + if (is_a($state, 'PEAR_Error')) { + Horde::logMessage($state, __FILE__, __LINE__, PEAR_LOG_ERR); + return $state; + } + + $state = Horde_String::convertCharset($state, $this->_params['charset']); + return array( + 'id' => $stateId, + 'name' => isset($state[$stateId][0]) ? $state[$stateId][0] : '', + 'description' => isset($state[$stateId][1]) ? $state[$stateId][1] : '', + 'category' => isset($state[$stateId][2]) ? $state[$stateId][2] : '', + 'type' => isset($state[$stateId][3]) ? $state[$stateId][3] : ''); + } + + function getAllStateInfo($type) + { + $query = 'SELECT state_id, state_name, state_description, ' + . 'state_category FROM whups_states WHERE type_id = ? ' + . 'ORDER BY state_id'; + $values = array($type); + Horde::logMessage( + sprintf('Whups_Driver_sql::getAllStateInfo(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $info = $this->_db->getAll($query, $values, DB_FETCHMODE_ASSOC); + if (is_a($info, 'PEAR_Error')) { + Horde::logMessage($info, __FILE__, __LINE__, PEAR_LOG_ERR); + return $info; + } + + return Horde_String::convertCharset($info, $this->_params['charset']); + } + + function updateState($stateId, $name, $description, $category) + { + $query = 'UPDATE whups_states SET state_name = ?, ' + . 'state_description = ?, state_category = ? WHERE state_id = ?'; + $values = array(Horde_String::convertCharset($name, Horde_Nls::getCharset(), + $this->_params['charset']), + Horde_String::convertCharset($description, Horde_Nls::getCharset(), + $this->_params['charset']), + Horde_String::convertCharset($category, Horde_Nls::getCharset(), + $this->_params['charset']), + $stateId); + Horde::logMessage( + sprintf('Whups_Driver_sql::updateState(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_write_db->query($query, $values); + } + + function getDefaultState($type) + { + $query = 'SELECT state_id FROM whups_states ' + . 'WHERE state_default = 1 AND type_id = ?'; + $values = array($type); + Horde::logMessage( + sprintf('Whups_Driver_sql::getDefaultState(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_db->getOne($query, $values); + } + + function setDefaultState($type, $state) + { + $query = 'UPDATE whups_states SET state_default = 0 WHERE type_id = ?'; + $values = array($type); + Horde::logMessage( + sprintf('Whups_Driver_sql::setDefaultState(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + $query = 'UPDATE whups_states SET state_default = 1 WHERE state_id = ?'; + $values = array($state); + Horde::logMessage( + sprintf('Whups_Driver_sql::setDefaultState(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_write_db->query($query, $values); + } + + function deleteState($state_id) + { + $query = 'DELETE FROM whups_states WHERE state_id = ?'; + $values = array((int)$state_id); + Horde::logMessage( + sprintf('Whups_Driver_sql::deleteState(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_write_db->query($query, $values); + } + + /** + * Retrieve query details. + * + * @param integer $queryId + * + * @return array + */ + function getQuery($queryId) + { + if (empty($queryId)) { + return false; + } + $query = 'SELECT query_parameters, query_object FROM whups_queries ' + . 'WHERE query_id = ?'; + $values = array((int)$queryId); + Horde::logMessage( + sprintf('Whups_Driver_sql::getQuery(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $query = $this->_db->getRow($query, $values, DB_FETCHMODE_ASSOC); + if (is_a($query, 'PEAR_Error')) { + Horde::logMessage($query, __FILE__, __LINE__, PEAR_LOG_ERR); + return $query; + } + + return Horde_String::convertCharset($query, $this->_params['charset']); + } + + /** + * Save query details, inserting a new query row if necessary. + * + * @param Whups_Query $query + */ + function saveQuery($query) + { + $exists = $this->_db->getOne('SELECT 1 FROM whups_queries ' + . 'WHERE query_id = ' . (int)$query->id); + if (is_a($exists, 'PEAR_Error')) { + return $exists; + } + + if ($exists) { + $q = 'UPDATE whups_queries SET query_parameters = ?, ' + . 'query_object = ? WHERE query_id = ?'; + $values = array(serialize($query->parameters), + serialize($query->query), + $query->id); + } else { + + $q = 'INSERT INTO whups_queries (query_id, query_parameters, ' + . 'query_object) VALUES (?, ?, ?)'; + $values = array($query->id, serialize($query->parameters), + serialize($query->query)); + } + $values = Horde_String::convertCharset($values, Horde_Nls::getCharset(), + $this->_params['charset']); + Horde::logMessage( + sprintf('Whups_Driver_sql::saveQuery(): query="%s"; values="%s"', + $q, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_write_db->query($q, $values); + } + + /** + * Delete query details. + * + * @param integer $queryId + */ + function deleteQuery($queryId) + { + $query = 'DELETE FROM whups_queries WHERE query_id = ?'; + $values = array((int)$queryId); + Horde::logMessage( + sprintf('Whups_Driver_sql::deleteQuery(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_write_db->query($query, $values); + } + + function isCategory($category, $state_id) + { + $query = 'SELECT 1 FROM whups_states ' + . 'WHERE state_id = ? AND state_category = ?'; + $values = array((int)$state_id, $category); + Horde::logMessage( + sprintf('Whups_Driver_sql::isCategory(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_db->getOne($query, $values); + } + + function getAllPriorityInfo($type) + { + $query = 'SELECT priority_id, priority_name, priority_description ' + . 'FROM whups_priorities WHERE type_id = ? ORDER BY priority_id'; + $values = array((int)$type); + Horde::logMessage( + sprintf('Whups_Driver_sql::getAllPriorityInfo(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $info = $this->_db->getAll($query, $values, DB_FETCHMODE_ASSOC); + if (is_a($info, 'PEAR_Error')) { + Horde::logMessage($info, __FILE__, __LINE__, PEAR_LOG_ERR); + return $info; + } + + return Horde_String::convertCharset($info, $this->_params['charset']); + } + + function getPriorities($type = null) + { + $fields = 'priority_id, priority_name'; + $from = 'whups_priorities'; + $order = 'priority_name'; + if (empty($type)) { + $fields .= ', whups_types.type_id, type_name'; + $from .= ' LEFT JOIN whups_types ON whups_priorities.type_id = whups_types.type_id'; + $where = ''; + $order = 'type_name, ' . $order; + } else { + $where = ' WHERE type_id = ' . $type; + } + + $query = "SELECT $fields FROM $from$where ORDER BY $order"; + Horde::logMessage( + sprintf('SQL Query by Whups_Driver_sql::getPriorities(): query="%s"', + $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $priorities = $this->_db->getAssoc($query); + if (is_a($priorities, 'PEAR_Error')) { + Horde::logMessage($priorities, __FILE__, __LINE__, PEAR_LOG_ERR); + return $priorities; + } + + if (empty($type)) { + foreach ($priorities as $id => $priority) { + $priorities[$id] = $priority[0] . ' (' . $priority[2] . ')'; + } + } + + return Horde_String::convertCharset($priorities, $this->_params['charset']); + } + + function getPriority($priorityId) + { + if (empty($priorityId)) { + return false; + } + $query = 'SELECT priority_id, priority_name, priority_description, ' + . 'type_id FROM whups_priorities WHERE priority_id = ?'; + $values = array((int)$priorityId); + Horde::logMessage( + sprintf('Whups_Driver_sql::getPriority(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $priority = $this->_db->getAssoc($query, false, $values); + if (is_a($priority, 'PEAR_Error')) { + Horde::logMessage($priority, __FILE__, __LINE__, PEAR_LOG_ERR); + return $priority; + } + + $priority = Horde_String::convertCharset($priority, $this->_params['charset']); + return array('id' => $priorityId, + 'name' => isset($priority[$priorityId][0]) + ? $priority[$priorityId][0] : '', + 'description' => isset($priority[$priorityId][1]) + ? $priority[$priorityId][1] : '', + 'type' => isset($priority[$priorityId][2]) + ? $priority[$priorityId][2] : ''); + } + + function updatePriority($priorityId, $name, $description) + { + $query = 'UPDATE whups_priorities' . + ' SET priority_name = ?, priority_description = ?' . + ' WHERE priority_id = ?'; + $values = array(Horde_String::convertCharset($name, Horde_Nls::getCharset(), + $this->_params['charset']), + Horde_String::convertCharset($description, Horde_Nls::getCharset(), + $this->_params['charset']), + $priorityId); + Horde::logMessage( + sprintf('Whups_Driver_sql::updatePriority(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_write_db->query($query, $values); + } + + function getDefaultPriority($type) + { + $query = 'SELECT priority_id FROM whups_priorities ' + . 'WHERE priority_default = 1 AND type_id = ?'; + $values = array($type); + Horde::logMessage( + sprintf('Whups_Driver_sql::getDefaultPriority(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_db->getOne($query, $values); + } + + function setDefaultPriority($type, $priority) + { + $query = 'UPDATE whups_priorities SET priority_default = 0 ' + . 'WHERE type_id = ?'; + $values = array($type); + Horde::logMessage( + sprintf('Whups_Driver_sql::setDefaultPriority(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + $query = 'UPDATE whups_priorities SET priority_default = 1 ' + . 'WHERE priority_id = ?'; + $values = array($priority); + Horde::logMessage( + sprintf('Whups_Driver_sql::setDefaultPriority(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_write_db->query($query, $values); + } + + function deletePriority($priorityId) + { + $query = 'DELETE FROM whups_priorities WHERE priority_id = ?'; + $values = array($priorityId); + Horde::logMessage( + sprintf('Whups_Driver_sql::deletePriority(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_write_db->query($query, $values); + } + + function getVersionInfoInternal($queue) + { + $query = 'SELECT version_id, version_name, version_description, version_active ' + . 'FROM whups_versions WHERE queue_id = ?' + . ' ORDER BY version_id'; + $values = array($queue); + Horde::logMessage( + sprintf('Whups_Driver_sql::getVersionInfoInternal(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $info = $this->_db->getAll($query, $values, DB_FETCHMODE_ASSOC); + if (is_a($info, 'PEAR_Error')) { + Horde::logMessage($info, __FILE__, __LINE__, PEAR_LOG_ERR); + return $info; + } + + return Horde_String::convertCharset($info, $this->_params['charset']); + } + + function getVersionInternal($versionId) + { + if (empty($versionId)) { + return false; + } + $query = 'SELECT version_id, version_name, version_description, version_active'. + ' FROM whups_versions WHERE version_id = ?'; + $values = array($versionId); + Horde::logMessage( + sprintf('Whups_Driver_sql::getVersionInternal(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $version = $this->_db->getAssoc($query, false, $values); + if (is_a($version, 'PEAR_Error')) { + Horde::logMessage($version, __FILE__, __LINE__, PEAR_LOG_ERR); + return $version; + } + + $version = Horde_String::convertCharset($version, $this->_params['charset']); + return array('id' => $versionId, + 'name' => isset($version[$versionId][0]) + ? $version[$versionId][0] : '', + 'description' => isset($version[$versionId][1]) + ? $version[$versionId][1] : '', + 'active' => !empty($version[$versionId][2])); + } + + function updateVersion($versionId, $name, $description, $active) + { + $query = 'UPDATE whups_versions SET version_name = ?, ' + . 'version_description = ?, version_active = ? ' + . 'WHERE version_id = ?'; + $values = array(Horde_String::convertCharset($name, Horde_Nls::getCharset(), + $this->_params['charset']), + Horde_String::convertCharset($description, Horde_Nls::getCharset(), + $this->_params['charset']), + (int)$active, + (int)$versionId); + Horde::logMessage( + sprintf('Whups_Driver_sql::updateVersion(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_write_db->query($query, $values); + } + + function deleteVersion($versionId) + { + $query = 'DELETE FROM whups_versions WHERE version_id = ?'; + $values = array($versionId); + Horde::logMessage( + sprintf('Whups_Driver_sql::deleteVersion(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_write_db->query($query, $values); + } + + /** + * Returns all available form replies for a ticket type. + * + * @param integer $type A type id. + * + * @return array A hash with reply ids as keys and reply hashes as values. + */ + function getReplies($type) + { + $query = 'SELECT reply_id, reply_name, reply_text ' + . 'FROM whups_replies WHERE type_id = ? ORDER BY reply_name'; + $values = array((int)$type); + Horde::logMessage( + sprintf('Whups_Driver_sql::getReplies(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $info = $this->_db->getAssoc($query, false, $values, DB_FETCHMODE_ASSOC); + if (is_a($info, 'PEAR_Error')) { + Horde::logMessage($info, __FILE__, __LINE__, PEAR_LOG_ERR); + return $info; + } + + return Horde_String::convertCharset($info, $this->_params['charset']); + } + + /** + * Returns a form reply information hash. + * + * @param integer $reply_id A form reply id. + * + * @return array A hash with all form reply information. + */ + function getReply($reply_id) + { + $query = 'SELECT reply_name, reply_text, type_id ' + . 'FROM whups_replies WHERE reply_id = ?'; + $values = array((int)$reply_id); + Horde::logMessage( + sprintf('Whups_Driver_sql::getReply(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $reply = $this->_db->getRow($query, $values, DB_FETCHMODE_ASSOC); + if (is_a($reply, 'PEAR_Error')) { + Horde::logMessage($reply, __FILE__, __LINE__, PEAR_LOG_ERR); + return $reply; + } + + return Horde_String::convertCharset($reply, $this->_params['charset']); + } + + /** + * Updates a form reply in the backend. + * + * @param integer $reply A reply id. + * @param string $name The new reply name. + * @param string $text The new reply text. + */ + function updateReply($reply, $name, $text) + { + $query = 'UPDATE whups_replies SET reply_name = ?, ' + . 'reply_text = ? WHERE reply_id = ?'; + $values = array(Horde_String::convertCharset($name, Horde_Nls::getCharset(), + $this->_params['charset']), + Horde_String::convertCharset($text, Horde_Nls::getCharset(), + $this->_params['charset']), + $reply); + Horde::logMessage( + sprintf('Whups_Driver_sql::updateReply(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + } + return $result; + } + + /** + * Deletes a form reply from the backend. + * + * @param integer $reply A reply id. + */ + function deleteReply($reply) + { + $query = 'DELETE FROM whups_replies WHERE reply_id = ?'; + $values = array((int)$reply); + Horde::logMessage( + sprintf('Whups_Driver_sql::deleteReply(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + return parent::deleteReply($reply); + } + + function addListener($ticket, $user) + { + $query = 'INSERT INTO whups_ticket_listeners (ticket_id, user_uid)' . + ' VALUES (?, ?)'; + $values = array($ticket, $user); + Horde::logMessage( + sprintf('Whups_Driver_sql::addListener(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + return true; + } + + function deleteListener($ticket, $user) + { + $query = 'DELETE FROM whups_ticket_listeners WHERE ticket_id = ?' . + ' AND user_uid = ?'; + $values = array($ticket, $user); + Horde::logMessage( + sprintf('Whups_Driver_sql::deleteListener(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + return true; + } + + function getListeners($ticket, $withowners = true, $withrequester = true, + $withresponsible = false) + { + $query = 'SELECT DISTINCT l.user_uid' . + ' FROM whups_ticket_listeners l, whups_tickets t' . + ' WHERE (l.ticket_id = ?)'; + $values = array($ticket); + Horde::logMessage( + sprintf('Whups_Driver_sql::getListeners(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $users = $this->_db->getCol($query, 0, $values); + if (is_a($users, 'PEAR_Error')) { + Horde::logMessage($users, __FILE__, __LINE__, PEAR_LOG_ERR); + return array(); + } + $tinfo = $this->getTicketDetails($ticket); + if (is_a($tinfo, 'PEAR_Error')) { + Horde::logMessage($tinfo, __FILE__, __LINE__, PEAR_LOG_ERR); + return array(); + } + $requester = $tinfo['user_id_requester']; + if ($withresponsible) { + $users = array_merge($users, $this->getQueueUsers($tinfo['queue'])); + } + + // Tricky - handle case where owner = requester. + $owner_is_requester = false; + if (isset($tinfo['owners'])) { + foreach ($tinfo['owners'] as $owner) { + $owner = str_replace('user:', '', $owner); + if ($owner == $requester) { + $owner_is_requester = true; + } + if ($withowners) { + $users[$owner] = $owner; + } else { + if (isset($users[$owner])) { + unset($users[$owner]); + } + } + } + } + + if (!$withrequester) { + if (isset($users[$requester]) && (!$withowners || $owner_is_requester)) { + unset($users[$requester]); + } + } elseif (!empty($requester)) { + $users[$requester] = $requester; + } + + return $users; + } + + function addAttributeDesc($type_id, $name, $desc, $type, $params, $required) + { + // TODO: Make sure we're not adding a duplicate here (can be + // done in the db schema). + + // FIXME: This assumes that $type_id is a valid type id. + $new_id = $this->_write_db->nextId('whups_attributes_desc'); + if (is_a($new_id, 'PEAR_Error')) { + Horde::logMessage($new_id, __FILE__, __LINE__, PEAR_LOG_ERR); + return $new_id; + } + + $query = 'INSERT INTO whups_attributes_desc ' + . '(attribute_id, type_id, attribute_name, attribute_description, ' + . 'attribute_type, attribute_params, attribute_required)' + . ' VALUES (?, ?, ?, ?, ?, ?, ?)'; + $values = array($new_id, + $type_id, + Horde_String::convertCharset($name, Horde_Nls::getCharset(), + $this->_params['charset']), + Horde_String::convertCharset($desc, Horde_Nls::getCharset(), + $this->_params['charset']), + $type, + serialize( + Horde_String::convertCharset($params, Horde_Nls::getCharset(), + $this->_params['charset'])), + (int)($required == 'on')); + + Horde::logMessage( + sprintf('Whups_Driver_sql::addAttributeDesc(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + return $new_id; + } + + function updateAttributeDesc($attribute_id, $newname, $newdesc, $newtype, + $newparams, $newrequired) + { + $query = 'UPDATE whups_attributes_desc ' + . 'SET attribute_name = ?, attribute_description = ?, ' + . 'attribute_type = ?, attribute_params = ?, ' + . 'attribute_required = ? WHERE attribute_id = ?'; + $values = array(Horde_String::convertCharset($newname, Horde_Nls::getCharset(), + $this->_params['charset']), + Horde_String::convertCharset($newdesc, Horde_Nls::getCharset(), + $this->_params['charset']), + $newtype, + serialize( + Horde_String::convertCharset($newparams, + Horde_Nls::getCharset(), + $this->_params['charset'])), + (int)($newrequired == 'on'), + $attribute_id); + Horde::logMessage( + sprintf('Whups_Driver_sql::updateAttributeDesc(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_write_db->query($query, $values); + } + + function deleteAttributeDesc($attribute_id) + { + // FIXME: Which one of these returns the error, or do we have to check + // all of them for errors? + $this->_write_db->autoCommit(false); + $query = 'DELETE FROM whups_attributes_desc WHERE attribute_id = ?'; + $values = array($attribute_id); + Horde::logMessage( + sprintf('Whups_Driver_sql::deleteAttributeDesc(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $this->_write_db->query($query, $values); + $query = 'DELETE FROM whups_attributes WHERE attribute_id = ?'; + $values = array($attribute_id); + Horde::logMessage( + sprintf('Whups_Driver_sql::deleteAttributeDesc(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $this->_write_db->query($query, $values); + $this->_write_db->commit(); + $this->_write_db->autoCommit(true); + + return true; + } + + function getAllAttributes() + { + $query = 'SELECT attribute_id, attribute_name, attribute_description, ' + . 'type_id FROM whups_attributes_desc'; + Horde::logMessage( + sprintf('Whups_Driver_sql::getAllAttributes(): query="%s"', $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $attributes = $this->_db->getAssoc($query, false, array(), + DB_FETCHMODE_ASSOC); + if (is_a($attributes, 'PEAR_Error')) { + Horde::logMessage($attributes, __FILE__, __LINE__, PEAR_LOG_ERR); + return $attributes; + } + + return Horde_String::convertCharset($attributes, $this->_params['charset']); + } + + function getAttributeDesc($attribute_id) + { + if (empty($attribute_id)) { + return false; + } + + $query = 'SELECT attribute_id, attribute_name, attribute_description, ' + . 'attribute_type, attribute_params, attribute_required ' + . 'FROM whups_attributes_desc WHERE attribute_id = ?'; + $values = array($attribute_id); + Horde::logMessage( + sprintf('Whups_Driver_sql::getAttributeDesc(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $attribute = $this->_db->getRow($query, $values, DB_FETCHMODE_ASSOC); + if (is_a($attribute, 'PEAR_Error')) { + Horde::logMessage($attribute, __FILE__, __LINE__, PEAR_LOG_ERR); + return $attribute; + } + + return array( + 'id' => $attribute_id, + 'attribute_name' => Horde_String::convertCharset( + $attribute['attribute_name'], $this->_params['charset']), + 'attribute_description' => Horde_String::convertCharset( + $attribute['attribute_description'], $this->_params['charset']), + 'attribute_type' => empty($attribute['attribute_type']) + ? 'text' : $attribute['attribute_type'], + 'attribute_params' => Horde_String::convertCharset( + @unserialize($attribute['attribute_params']), + $this->_params['charset']), + 'attribute_required' => (bool)$attribute['attribute_required']); + } + + function getAttributeName($attribute_id) + { + $query = 'SELECT attribute_name FROM whups_attributes_desc ' + . 'WHERE attribute_id = ?'; + $values = array($attribute_id); + Horde::logMessage( + sprintf('Whups_Driver_sql::getAttributeName(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $name = $this->_db->getOne($query, $values); + if (is_a($name, 'PEAR_Error')) { + Horde::logMessage($name, __FILE__, __LINE__, PEAR_LOG_ERR); + return $name; + } + + return Horde_String::convertCharset($name, $this->_params['charset']); + } + + function _getAttributesForType($type = null, $raw = false) + { + $fields = 'attribute_id, attribute_name, attribute_description, ' + . 'attribute_type, attribute_params, attribute_required'; + $from = 'whups_attributes_desc'; + $order = 'attribute_name'; + if (empty($type)) { + $fields .= ', whups_types.type_id, type_name'; + $from .= ' LEFT JOIN whups_types ON ' + . 'whups_attributes_desc.type_id = whups_types.type_id'; + $where = ''; + $order = 'type_name, ' . $order; + } else { + $where = ' WHERE type_id = ' . (int)$type; + } + + $query = "SELECT $fields FROM $from$where ORDER BY $order"; + Horde::logMessage( + sprintf('Whups_Driver_sql::getAttributesForType(): query="%s"', + $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $attributes = $this->_db->getAssoc($query, false, null, + DB_FETCHMODE_ASSOC); + if (is_a($attributes, 'PEAR_Error')) { + Horde::logMessage($attributes, __FILE__, __LINE__, PEAR_LOG_ERR); + return $attributes; + } + + foreach ($attributes as $id => $attribute) { + if (empty($type) && !$raw) { + $attributes[$id]['attribute_name'] = + $attribute['attribute_name'] + . ' (' . $attribute['type_name'] . ')'; + } + $attributes[$id]['attribute_name'] = Horde_String::convertCharset( + $attribute['attribute_name'], $this->_params['charset']); + $attributes[$id]['attribute_description'] = Horde_String::convertCharset( + $attribute['attribute_description'], $this->_params['charset']); + $attributes[$id]['attribute_type'] = + empty($attribute['attribute_type']) + ? 'text' : $attribute['attribute_type']; + $attributes[$id]['attribute_params'] = Horde_String::convertCharset( + @unserialize($attribute['attribute_params']), + $this->_params['charset']); + $attributes[$id]['attribute_required'] = + (bool)$attribute['attribute_required']; + } + + return $attributes; + } + + function getAttributeNamesForType($type_id) + { + if (empty($type_id)) { + return array(); + } + $query = 'SELECT attribute_name FROM whups_attributes_desc ' + .'WHERE type_id = ? ORDER BY attribute_name'; + $values = array((int)$type_id); + Horde::logMessage( + sprintf('Whups_Driver_sql::getAttributeNamesForType(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $names = $this->_db->getAll($query, $values, DB_FETCHMODE_ASSOC); + if (is_a($names, 'PEAR_Error')) { + Horde::logMessage($names, __FILE__, __LINE__, PEAR_LOG_ERR); + return $names; + } + + return Horde_String::convertCharset($names, $this->_params['charset']); + } + + function getAttributeInfoForType($type_id) + { + $query = 'SELECT attribute_id, attribute_name, attribute_description ' + . 'FROM whups_attributes_desc WHERE type_id = ? ' + . 'ORDER BY attribute_id'; + $values = array((int)$type_id); + Horde::logMessage( + sprintf('Whups_Driver_sql::getAttributeNamesForType(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $info = $this->_db->getAll($query, $values, DB_FETCHMODE_ASSOC); + if (is_a($info, 'PEAR_Error')) { + Horde::logMessage($info, __FILE__, __LINE__, PEAR_LOG_ERR); + return $info; + } + + return Horde_String::convertCharset($info, $this->_params['charset']); + } + + function _setAttributeValue($ticket_id, $attribute_id, $attribute_value) + { + $db_attribute_value = Horde_String::convertCharset((string)$attribute_value, + Horde_Nls::getCharset(), + $this->_params['charset']); + + $this->_write_db->autoCommit(false); + $query = 'DELETE FROM whups_attributes ' + . 'WHERE ticket_id = ? AND attribute_id = ?'; + $values = array($ticket_id, $attribute_id); + Horde::logMessage( + sprintf('Whups_Driver_sql::_setAttributeValue(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $this->_write_db->query($query, $values); + + if (!empty($attribute_value)) { + $query = 'INSERT INTO whups_attributes' + . '(ticket_id, attribute_id, attribute_value)' + . ' VALUES (?, ?, ?)'; + $values = array($ticket_id, $attribute_id, $db_attribute_value); + Horde::logMessage( + sprintf('Whups_Driver_sql::_setAttributeValue(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $inserted = $this->_write_db->query($query, $values); + if (is_a($inserted, 'PEAR_Error')) { + Horde::logMessage($inserted, __FILE__, __LINE__, PEAR_LOG_ERR); + $this->_write_db->rollback(); + $this->_write_db->autoCommit(true); + return $inserted; + } + } + + $this->_write_db->commit(); + $this->_write_db->autoCommit(true); + } + + function getTicketAttributes($ticket_id) + { + if (is_array($ticket_id)) { + // No need to run a query for an empty array, and it would result + // in an invalid SQL query anyway. + if (!count($ticket_id)) { + return array(); + } + + $query = 'SELECT ticket_id AS id, attribute_id, attribute_value ' + . 'FROM whups_attributes WHERE ticket_id IN (' + . str_repeat('?, ', count($ticket_id) - 1) . '?)'; + Horde::logMessage( + sprintf('Whups_Driver_sql::getAttributes(): query="%s"', $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $attributes = $this->_db->getAll($query, $ticket_id, + DB_FETCHMODE_ASSOC); + } else { + $query = 'SELECT attribute_id, attribute_value' . + ' FROM whups_attributes WHERE ticket_id = ?'; + $values = array((int)$ticket_id); + Horde::logMessage( + sprintf('Whups_Driver_sql::getTicketAttributes(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $attributes = $this->_db->getAssoc($query, false, $values); + } + + if (is_a($attributes, 'PEAR_Error')) { + Horde::logMessage($attributes, __FILE__, __LINE__, PEAR_LOG_ERR); + return $attributes; + } + + return Horde_String::convertCharset($attributes, $this->_params['charset']); + } + + function getTicketAttributesWithNames($ticket_id) + { + if (is_array($ticket_id)) { + // No need to run a query for an empty array, and it would result + // in an invalid SQL query anyway. + if (!count($ticket_id)) { + return array(); + } + + $query = 'SELECT ticket_id AS id, d.attribute_name, ' + . 'a.attribute_id, a.attribute_value ' + . 'FROM whups_attributes a INNER JOIN whups_attributes_desc d ' + . 'ON (d.attribute_id = a.attribute_id)' + . 'WHERE a.ticket_id IN (' + . str_repeat('?, ', count($ticket_id) - 1) . '?)'; + Horde::logMessage( + sprintf('SQL Query by Whups_Driver_sql::getAttributes(): query="%s"', + $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $attributes = $this->_db->getAll($query, $ticket_id, + DB_FETCHMODE_ASSOC); + } else { + $query = 'SELECT d.attribute_name, a.attribute_value ' + . 'FROM whups_attributes a INNER JOIN whups_attributes_desc d ' + . 'ON (d.attribute_id = a.attribute_id)' + . 'WHERE a.ticket_id = ? ORDER BY d.attribute_name'; + $values = array((int)$ticket_id); + Horde::logMessage( + sprintf('Whups_Driver_sql::getTicketAttributesWithNames(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $attributes = $this->_db->getAssoc($query, false, $values); + } + if (is_a($attributes, 'PEAR_Error')) { + Horde::logMessage($attributes, __FILE__, __LINE__, PEAR_LOG_ERR); + return $attributes; + } + + return Horde_String::convertCharset($attributes, $this->_params['charset']); + } + + function _getAllTicketAttributesWithNames($ticket_id) + { + $query = 'SELECT d.attribute_id, d.attribute_name, ' + . 'd.attribute_description, d.attribute_type, d.attribute_params, ' + . 'd.attribute_required, a.attribute_value ' + . 'FROM whups_attributes_desc d ' + . 'LEFT JOIN whups_tickets t ON (t.ticket_id = ?) ' + . 'LEFT OUTER JOIN whups_attributes a ' + . 'ON (d.attribute_id = a.attribute_id AND a.ticket_id = ?) ' + . 'WHERE d.type_id = t.type_id ORDER BY d.attribute_name'; + $values = array($ticket_id, $ticket_id); + Horde::logMessage( + sprintf('Whups_Driver_sql::getAllTicketAttributesWithNames(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $attributes = $this->_db->getAll($query, $values, DB_FETCHMODE_ASSOC); + if (is_a($attributes, 'PEAR_Error')) { + Horde::logMessage($attributes, __FILE__, __LINE__, PEAR_LOG_ERR); + return $attributes; + } + + foreach ($attributes as $id => $attribute) { + $attributes[$id]['attribute_name'] = Horde_String::convertCharset( + $attribute['attribute_name'], $this->_params['charset']); + $attributes[$id]['attribute_description'] = Horde_String::convertCharset( + $attribute['attribute_description'], $this->_params['charset']); + $attributes[$id]['attribute_type'] = + empty($attribute['attribute_type']) + ? 'text' : $attribute['attribute_type']; + $attributes[$id]['attribute_params'] = Horde_String::convertCharset( + @unserialize($attribute['attribute_params']), + $this->_params['charset']); + $attributes[$id]['attribute_required'] = + (bool)$attribute['attribute_required']; + } + + return $attributes; + } + + function getOwners($ticketId) + { + if (is_array($ticketId)) { + // No need to run a query for an empty array, and it would + // result in an invalid SQL query anyway. + if (!count($ticketId)) { + return array(); + } + + $query = 'SELECT ticket_id AS id, ticket_owner AS owner ' + . 'FROM whups_ticket_owners WHERE ticket_id ' + . 'IN (' . str_repeat('?, ', count($ticketId) - 1) . '?)'; + $values = $ticketId; + Horde::logMessage( + sprintf('Whups_Driver_sql::getOwners(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_db->getAll($query, $values, DB_FETCHMODE_ASSOC); + } else { + $query = 'SELECT ticket_owner, ticket_owner ' + . 'FROM whups_ticket_owners WHERE ticket_id = ?'; + $values = array((int)$ticketId); + Horde::logMessage( + sprintf('Whups_Driver_sql::getOwners(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_db->getAssoc($query, false, $values); + } + } + + function updateLog($ticket_id, $user, $changes = array(), + $transactionId = null) + { + if (is_null($transactionId)) { + $transactionId = $this->newTransaction($user); + if (is_a($transactionId, 'PEAR_Error')) { + return $transactionId; + } + } + + foreach ($changes as $type => $value) { + $log_id = $this->_write_db->nextId('whups_logs'); + if (is_a($log_id, 'PEAR_Error')) { + return $log_id; + } + + $query = 'INSERT INTO whups_logs (log_id, transaction_id, ' + . 'ticket_id, log_timestamp, user_id, log_type, log_value, ' + . 'log_value_num) VALUES (?, ?, ?, ?, ?, ?, ?, ?)'; + $values = array( + (int)$log_id, + (int)$transactionId, + (int)$ticket_id, + time(), + (string)$user, + $type, + Horde_String::convertCharset((string)$value, Horde_Nls::getCharset(), + $this->_params['charset']), + (int)$value); + Horde::logMessage( + sprintf('Whups_Driver_sql::updateLog(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + } + + return $transactionId; + } + + /** + * Create a new transaction id for associating related entries in + * the whups_logs table. + * + * @return integer New transaction id. + */ + function newTransaction($creator, $creator_email = null) + { + $transactionId = $this->_write_db->nextId('whups_transactions'); + if (is_a($transactionId, 'PEAR_Error')) { + return $transactionId; + } + + if ((empty($creator) || $creator < 0) && !empty($creator_email)) { + $creator = '-' . $transactionId . '_transaction'; + $query = 'INSERT INTO whups_guests (guest_id, guest_email)' + . ' VALUES (?, ?)'; + $values = array((string)$creator, $creator_email); + Horde::logMessage( + sprintf('Whups_Driver_sql::newTransaction(): query="%s"; values="%s"', + $query, implode(',', $values)), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_write_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + } + + return $transactionId; + } + + /** + * Return the db object we're using. + * + * return DB Database object. + */ + function getDb() + { + return $this->_db; + } + + /** + */ + function initialise() + { + Horde::assertDriverConfig($this->_params, 'tickets', + array('phptype')); + + if (!isset($this->_params['database'])) { + $this->_params['database'] = ''; + } + if (!isset($this->_params['username'])) { + $this->_params['username'] = ''; + } + if (!isset($this->_params['hostspec'])) { + $this->_params['hostspec'] = ''; + } + + /* Connect to the SQL server using the supplied parameters. */ + require_once 'DB.php'; + $this->_write_db = &DB::connect($this->_params, + array('persistent' => !empty($this->_params['persistent']))); + if (is_a($this->_write_db, 'PEAR_Error')) { + Horde::fatal($this->_write_db, __FILE__, __LINE__); + } + + // Set DB portability options. + switch ($this->_write_db->phptype) { + case 'mssql': + $this->_write_db->setOption('portability', DB_PORTABILITY_LOWERCASE | DB_PORTABILITY_ERRORS | DB_PORTABILITY_RTRIM); + break; + default: + $this->_write_db->setOption('portability', DB_PORTABILITY_LOWERCASE | DB_PORTABILITY_ERRORS); + } + + /* Check if we need to set up the read DB connection + * seperately. */ + if (!empty($this->_params['splitread'])) { + $params = array_merge($this->_params, $this->_params['read']); + $this->_db = &DB::connect($params, + array('persistent' => !empty($params['persistent']))); + if (is_a($this->_db, 'PEAR_Error')) { + Horde::fatal($this->_db, __FILE__, __LINE__); + } + + // Set DB portability options. + switch ($this->_db->phptype) { + case 'mssql': + $this->_db->setOption('portability', DB_PORTABILITY_LOWERCASE | DB_PORTABILITY_ERRORS | DB_PORTABILITY_RTRIM); + break; + default: + $this->_db->setOption('portability', DB_PORTABILITY_LOWERCASE | DB_PORTABILITY_ERRORS); + } + } else { + /* Default to the same DB handle for reads. */ + $this->_db =& $this->_write_db; + } + + return true; + } + + function _generateWhere($table, $fields, &$info, $type) + { + $where = ''; + $this->_mapFields($info); + + foreach ($fields as $field) { + if (isset($info[$field])) { + $prop = $info[$field]; + if (is_array($info[$field])) { + $clauses = array(); + foreach ($prop as $pprop) { + if (@settype($pprop, $type)) { + $clauses[] = "$table.$field = " . $this->_write_db->quote($pprop); + } + } + if (count($clauses)) { + $where = $this->_addWhere($where, true, implode(' OR ', $clauses)); + } + } else { + $success = @settype($prop, $type); + $where = $this->_addWhere($where, !is_null($prop) && $success, "$table.$field = " . $this->_write_db->quote($prop)); + } + } + } + + foreach ($fields as $field) { + if (isset($info["not$field"])) { + $prop = $info["not$field"]; + + if (strpos($prop, ',') === false) { + $success = @settype($prop, $type); + $where = $this->_addWhere($where, $prop && $success, "$table.$field <> " . $this->_write_db->quote($prop)); + } else { + $set = explode(',', $prop); + + foreach ($set as $prop) { + $success = @settype($prop, $type); + $where = $this->_addWhere($where, $prop && $success, "$table.$field <> " . $this->_write_db->quote($prop)); + } + } + } + } + + return $where; + } + + function _mapFields(&$info) + { + foreach ($info as $key => $val) { + if ($key === 'id') { + $info['ticket_id'] = $info['id']; + unset($info['id']); + } elseif ($key === 'state' || + $key === 'type' || + $key === 'queue' || + $key === 'priority') { + $info[$key . '_id'] = $info[$key]; + unset($info[$key]); + } elseif ($key === 'requester') { + $info['user_id_' . $key] = $info[$key]; + unset($info[$key]); + } + } + } + + function _addWhere($where, $condition, $clause, $conjunction = 'AND') + { + if (!empty($condition)) { + if (!empty($where)) { + $where .= " $conjunction "; + } + + $where .= "($clause)"; + } + + return $where; + } + + function _addDateWhere($where, $data, $type) + { + if (is_array($data)) { + if (!empty($data['from'])) { + $where = $this->_addWhere($where, true, + $type . ' >= ' . (int)$data['from']); + } + if (!empty($data['to'])) { + $where = $this->_addWhere($where, true, + $type . ' <= ' . (int)$data['to']); + } + return $where; + } + + return $this->_addWhere($where, true, $type . ' = ' . (int)$data); + } + + function _prefixTableToColumns($table, $columns) + { + $join = ""; + + $clause = ''; + foreach ($columns as $column) { + $clause .= "$join$table.$column"; + $join = ', '; + } + + return $clause; + } + +} diff --git a/whups/lib/Forms/Action.php b/whups/lib/Forms/Action.php new file mode 100644 index 000000000..fa4bafadf --- /dev/null +++ b/whups/lib/Forms/Action.php @@ -0,0 +1,36 @@ + + * @package Horde_Form + */ +class Horde_Form_Action_whups_reload extends Horde_Form_Action { + + var $_trigger = array('onchange'); + + function getActionScript($form, $renderer, $varname) + { + Horde::addScriptFile('prototype.js', 'horde', true); + Horde::addScriptFile('effects.js', 'horde', true); + Horde::addScriptFile('redbox.js', 'horde', true); + return 'if (this.value) { document.' . $form->getName() + . '.formname.value=\'' . $this->_params['formname'] + . '\'; RedBox.loading(); document.' . $form->getName() + . '.submit() }'; + } + +} diff --git a/whups/lib/Forms/AddComment.php b/whups/lib/Forms/AddComment.php new file mode 100644 index 000000000..6157e5ef1 --- /dev/null +++ b/whups/lib/Forms/AddComment.php @@ -0,0 +1,59 @@ +addHidden('', 'id', 'int', true, true); + + if (!Horde_Auth::getAuth()) { + $this->addVariable(_("Your Email Address"), 'user_email', 'email', true); + if (!empty($conf['guests']['captcha'])) { + $this->addVariable(_("Spam protection"), 'captcha', 'figlet', true, null, null, array(Whups::getCAPTCHA(!$this->isSubmitted()), $conf['guests']['figlet_font'])); + } + } + $this->addVariable(_("Comment"), 'newcomment', 'longtext', false); + $this->addVariable(_("Attachment"), 'newattachment', 'file', false); + $this->addVariable(_("Watch this ticket"), 'add_watch', 'boolean', false); + + /* Group restrictions. */ + if (Horde_Auth::isAdmin('whups:admin') || + $GLOBALS['perms']->hasPermission('whups:hiddenComments', Horde_Auth::getAuth(), Horde_Perms::EDIT)) { + $groups = &Group::singleton(); + $mygroups = $groups->getGroupMemberships(Horde_Auth::getAuth()); + if ($mygroups) { + foreach (array_keys($mygroups) as $gid) { + $grouplist[$gid] = $groups->getGroupName($gid, true); + } + asort($grouplist); + $grouplist = array_merge(array(0 => _("This comment is visible to everyone")), $grouplist); + $this->addVariable(_("Make this comment visible only to members of a group?"), 'group', 'enum', true, false, null, array($grouplist)); + } + } + } + + function validate(&$vars, $canAutoFill = false) + { + global $conf; + + if (!parent::validate($vars, $canAutoFill)) { + if (!Horde_Auth::getAuth() && !empty($conf['guests']['captcha'])) { + $vars->remove('captcha'); + $this->removeVariable($varname = 'captcha'); + $this->insertVariableBefore('newcomment', _("Spam protection"), 'captcha', 'figlet', true, null, null, array(Whups::getCAPTCHA(true), $conf['guests']['figlet_font'])); + } + return false; + } + + return true; + } + +} diff --git a/whups/lib/Forms/Admin.php b/whups/lib/Forms/Admin.php new file mode 100644 index 000000000..baaa443f6 --- /dev/null +++ b/whups/lib/Forms/Admin.php @@ -0,0 +1,45 @@ + + * @package Whups + */ + +class SendReminderForm extends Horde_Form { + + function SendReminderForm(&$vars) + { + global $whups_driver; + + parent::Horde_Form($vars, _("Send Reminders")); + + $queues = Whups::permissionsFilter($whups_driver->getQueues(), 'queue', Horde_Perms::EDIT); + if (count($queues)) { + $modtype = 'enum'; + $type_params = array($queues); + } else { + $modtype = 'invalid'; + $type_params = array(_("There are no queues available.")); + } + + $this->addVariable(_("Send only for this list of ticket ids"), 'id', 'intlist', false); + $this->addVariable(_("For tickets from these queues"), 'queue', $modtype, false, false, null, $type_params); + + $cats = $whups_driver->getCategories(); + unset($cats['resolved']); + $categories = &$this->addVariable(_("For tickets which are"), 'category', 'multienum', false, false, null, array($cats, 3)); + $categories->setDefault(array('assigned')); + + $this->addVariable(_("Unassigned tickets"), 'unassigned', 'email', false, false, _("If you select any tickets that do not have an owner, who should we send email to?")); + } + +} diff --git a/whups/lib/Forms/Admin/Attribute.php b/whups/lib/Forms/Admin/Attribute.php new file mode 100644 index 000000000..db19595e7 --- /dev/null +++ b/whups/lib/Forms/Admin/Attribute.php @@ -0,0 +1,152 @@ + + * @package Whups + */ + +class AddAttributeDescForm extends Horde_Form { + + function AddAttributeDescForm(&$vars) + { + require_once dirname(__FILE__) . '/../Action.php'; + + parent::Horde_Form($vars, _("Add Attribute")); + + $this->addHidden('', 'type', 'int', true, true); + $this->addVariable(_("Attribute Name"), 'attribute_name', 'text', true); + $this->addVariable(_("Attribute Description"), 'attribute_description', + 'text', true); + $this->addVariable(_("Required Attribute?"), 'attribute_required', + 'boolean', false); + + $v = &$this->addVariable(_("Attribute Type"), 'attribute_type', 'enum', + true, false, null, + array(Whups::fieldTypeNames())); + $v->setDefault('text'); + $v->setAction(Horde_Form_Action::factory( + 'whups_reload', + array('formname' => 'addattributedescform_reload'))); + + $type = $vars->get('attribute_type'); + if (empty($type)) { + $type = 'text'; + } + foreach (Whups::fieldTypeParams($type) as $param => $info) { + $this->addVariable($info['label'], + 'attribute_params[' . $param . ']', + $info['type'], false); + } + } + +} + +class EditAttributeDescStep1Form extends Horde_Form { + + function EditAttributeDescStep1Form(&$vars) + { + parent::Horde_Form($vars, _("Edit or Delete Attributes")); + $this->setButtons(array(_("Edit Attribute"), _("Delete Attribute"))); + + $attributes = $GLOBALS['whups_driver']->getAttributesForType( + $vars->get('type')); + if ($attributes) { + $params = array(); + foreach ($attributes as $key => $attribute) { + $params[$key] = $attribute['human_name']; + } + $stype = 'enum'; + $type_params = array($params); + } else { + $stype = 'invalid'; + $type_params = array(_("There are no attribute types to edit")); + } + + $this->addHidden('', 'type', 'int', true, true); + $this->addVariable(_("Attribute Name"), 'attribute', $stype, true, + false, null, $type_params); + } + +} + +class EditAttributeDescStep2Form extends Horde_Form { + + function EditAttributeDescStep2Form(&$vars) + { + require_once dirname(__FILE__) . '/../Action.php'; + + parent::Horde_Form($vars, _("Edit Attribute")); + + $attribute = $vars->get('attribute'); + $info = $GLOBALS['whups_driver']->getAttributeDesc($attribute); + + $this->addHidden('', 'type', 'int', true, true); + $this->addHidden('', 'attribute', 'int', true, true); + $pname = &$this->addVariable(_("Attribute Name"), 'attribute_name', + 'text', true); + $pname->setDefault($info['attribute_name']); + $pdesc = &$this->addVariable(_("Attribute Description"), + 'attribute_description', 'text', true); + $pdesc->setDefault($info['attribute_description']); + $preq = &$this->addVariable(_("Required Attribute?"), + 'attribute_required', 'boolean', false); + $preq->setDefault($info['attribute_required']); + + $ptype = &$this->addVariable(_("Attribute Type"), 'attribute_type', + 'enum', true, false, null, + array(Whups::fieldTypeNames())); + $ptype->setAction( + Horde_Form_Action::factory( + 'whups_reload', + array('formname' => 'editattributedescstep2form_reload'))); + $ptype->setDefault($info['attribute_type']); + + $type = $vars->get('attribute_type'); + if (empty($type)) { + $type = $info['attribute_type']; + } + foreach (Whups::fieldTypeParams($type) as $param => $param_info) { + $pparam = &$this->addVariable($param_info['label'], + 'attribute_params[' . $param . ']', + $param_info['type'], false); + if (isset($info['attribute_params'][$param])) { + $pparam->setDefault($info['attribute_params'][$param]); + } + } + } + +} + +class DeleteAttributeDescForm extends Horde_Form { + + function DeleteAttributeDescForm(&$vars) + { + parent::Horde_Form($vars, _("Delete Attribute Confirmation")); + + $attribute = $vars->get('attribute'); + $info = $GLOBALS['whups_driver']->getAttributeDesc($attribute); + + $this->addHidden('', 'type', 'int', true, true); + $this->addHidden('', 'attribute', 'int', true, true); + $pname = &$this->addVariable(_("Attribute Name"), 'attribute_name', + 'text', false, true); + $pname->setDefault($info['attribute_name']); + $pdesc = &$this->addVariable(_("Attribute Description"), + 'attribute_description', 'text', false, + true); + $pdesc->setDefault($info['attribute_description']); + $this->addVariable( + _("Really delete this attribute? This may cause data problems!"), + 'yesno', 'enum', true, false, null, + array(array(0 => _("No"), 1 => _("Yes")))); + } + +} diff --git a/whups/lib/Forms/Admin/Priority.php b/whups/lib/Forms/Admin/Priority.php new file mode 100644 index 000000000..b925e84bb --- /dev/null +++ b/whups/lib/Forms/Admin/Priority.php @@ -0,0 +1,125 @@ + + * @package Whups + */ + +class AddPriorityForm extends Horde_Form { + + function AddPriorityForm(&$vars) + { + parent::Horde_Form($vars, _("Add Priority")); + + $this->addHidden('', 'type', 'int', true, true); + $this->addVariable(_("Priority Name"), 'name', 'text', true); + $this->addVariable(_("Priority Description"), 'description', 'text', true); + } + +} + +class EditPriorityStep1Form extends Horde_Form { + + function EditPriorityStep1Form(&$vars) + { + global $whups_driver; + + parent::Horde_Form($vars, _("Edit or Delete Priorities")); + $this->setButtons(array(_("Edit Priority"), _("Delete Priority"))); + + $priorities = $whups_driver->getPriorities($vars->get('type')); + if ($priorities) { + $stype = 'enum'; + $type_params = array($priorities); + } else { + $stype = 'invalid'; + $type_params = array(_("There are no priorities to edit")); + } + + $this->addHidden('', 'type', 'int', true, true); + $this->addVariable(_("Priority Name"), 'priority', $stype, true, false, null, $type_params); + } + +} + +class EditPriorityStep2Form extends Horde_Form { + + function EditPriorityStep2Form(&$vars) + { + global $whups_driver; + + parent::Horde_Form($vars, _("Edit Priority")); + + $priority = $vars->get('priority'); + $info = $whups_driver->getPriority($priority); + + $this->addHidden('', 'type', 'int', true, true); + $this->addHidden('', 'priority', 'int', true, true); + + $pname = &$this->addVariable(_("Priority Name"), 'name', 'text', true); + $pname->setDefault($info['name']); + + $pdesc = &$this->addVariable(_("Priority Description"), 'description', 'text', true); + $pdesc->setDefault($info['description']); + } + +} + +class DefaultPriorityForm extends Horde_Form { + + function DefaultPriorityForm(&$vars) + { + parent::Horde_Form($vars, _("Set Default Priority")); + + $this->setButtons(array(_("Set Default Priority"))); + + $priorities = $GLOBALS['whups_driver']->getPriorities($vars->get('type')); + if ($priorities) { + $stype = 'enum'; + $type_params = array($priorities); + } else { + $stype = 'invalid'; + $type_params = array(_("There are no priorities to edit")); + } + + $this->addHidden('', 'type', 'int', true, true); + $var = &$this->addVariable(_("Priority Name"), 'priority', $stype, false, + false, null, $type_params); + $var->setDefault($GLOBALS['whups_driver']->getDefaultPriority($vars->get('type'))); + } + +} + +class DeletePriorityForm extends Horde_Form { + + function DeletePriorityForm(&$vars) + { + global $whups_driver; + + parent::Horde_Form($vars, _("Delete Priority Confirmation")); + + $priority = $vars->get('priority'); + $info = $whups_driver->getPriority($priority); + + $this->addHidden('', 'type', 'int', true, true); + $this->addHidden('', 'priority', 'int', true, true); + + $pname = &$this->addVariable(_("Priority Name"), 'name', 'text', false, true); + $pname->setDefault($info['name']); + + $pdesc = &$this->addVariable(_("Priority Description"), 'description', 'text', false, true); + $pdesc->setDefault($info['description']); + + $yesno = array(array(0 => _("No"), 1 => _("Yes"))); + $this->addVariable(_("Really delete this priority? This may cause data problems!"), 'yesno', 'enum', true, false, null, $yesno); + } + +} diff --git a/whups/lib/Forms/Admin/Queue.php b/whups/lib/Forms/Admin/Queue.php new file mode 100644 index 000000000..b5b108653 --- /dev/null +++ b/whups/lib/Forms/Admin/Queue.php @@ -0,0 +1,180 @@ + + * @package Whups + */ + +class AddQueueForm extends Horde_Form { + + function AddQueueForm(&$vars) + { + parent::Horde_Form($vars, _("Add Queue")); + $this->appendButtons(_("Add Queue")); + + $this->addVariable(_("Queue Name"), 'name', 'text', true); + $this->addVariable(_("Queue Description"), 'description', 'text', true); + $this->addVariable( + _("Queue Slug"), 'slug', 'text', false, false, + sprintf(_("Slugs allows direct access to this queue's open tickets by visiting: %s.
Slug names may contain only letters, numbers or the _ (underscore) character."), + Horde::applicationUrl('queue/slugname', true)), + array('/^[a-zA-Z1-9_]*$/')); + $this->addVariable(_("Queue Email"), 'email', 'email', false, false, + _("This email address will be used when sending notifications for any queue tickets.")); + } + +} + +class EditQueueStep1Form extends Horde_Form { + + function EditQueueStep1Form(&$vars) + { + global $whups_driver, $registry; + + if ($registry->hasMethod('tickets/listQueues') == $registry->getApp()) { + parent::Horde_Form($vars, _("Edit or Delete Queues")); + $this->setButtons(array(_("Edit Queue"), _("Delete Queue"))); + } else { + parent::Horde_Form($vars, _("Edit Queues")); + $this->setButtons(array(_("Edit Queue"))); + } + + $queues = Whups::permissionsFilter($whups_driver->getQueues(), 'queue', + Horde_Perms::EDIT); + if ($queues) { + $modtype = 'enum'; + $type_params = array($queues); + } else { + $modtype = 'invalid'; + $type_params = array(_("There are no queues to edit")); + } + + $this->addVariable(_("Queue Name"), 'queue', $modtype, true, false, + null, $type_params); + } + +} + +class EditQueueStep2Form extends Horde_Form { + + function EditQueueStep2Form(&$vars) + { + global $whups_driver, $registry; + + parent::Horde_Form($vars); + + $queue = $vars->get('queue'); + $info = $whups_driver->getQueue($queue); + if (is_a($info, 'PEAR_Error')) { + $this->addVariable(_("Invalid Queue"), 'invalid', 'invalid', true, + false, null, array(_("Invalid Queue"))); + return; + } + + $this->setTitle(sprintf(_("Edit %s"), $info['name'])); + $this->addHidden('', 'queue', 'int', true, true); + + $mname = &$this->addVariable(_("Queue Name"), 'name', 'text', true, + $info['readonly']); + $mname->setDefault($info['name']); + + $mdesc = &$this->addVariable(_("Queue Description"), 'description', + 'text', true, $info['readonly']); + $mdesc->setDefault($info['description']); + + $mslug = &$this->addVariable(_("Queue Slug"), 'slug', 'text', false, + $info['readonly']); + $mslug->setDefault($info['slug']); + + $memail = &$this->addVariable(_("Queue Email"), 'email', 'email', + false, $info['readonly']); + $memail->setDefault($info['email']); + + $types = $whups_driver->getAllTypes(); + $mtypes = &$this->addVariable( + _("Ticket Types associated with this Queue"), 'types', 'set', true, + false, null, array($types)); + $mtypes->setDefault(array_keys($whups_driver->getTypes($queue))); + $mdefaults = &$this->addVariable(_("Default Ticket Type"), 'default', + 'enum', false, false, null, + array($types)); + $mdefaults->setDefault($whups_driver->getDefaultType($queue)); + + /* Versioned and version link. */ + $mversioned = &$this->addVariable( + _("Keep a set of versions for this queue?"), 'versioned', + 'boolean', false, $info['readonly']); + $mversioned->setDefault($info['versioned']); + if ($registry->hasMethod('tickets/listVersions') == $registry->getApp()) { + $versionlink = array( + 'text' => _("Edit the versions for this queue"), + 'url' => Horde_Util::addParameter(Horde::applicationUrl('admin/?formname=editversionstep1form'), 'queue', $queue)); + $this->addVariable('', 'link', 'link', false, true, null, + array($versionlink)); + } + + /* Usertype and usertype link. */ + $users = $whups_driver->getQueueUsers($queue); + $f_users = array(); + foreach ($users as $user) { + $f_users[$user] = Whups::formatUser($user); + } + asort($f_users); + $musers = &$this->addVariable(_("Users responsible for this Queue"), + 'users', 'set', false, true, null, + array($f_users)); + $musers->setDefault($whups_driver->getQueueUsers($queue)); + $userlink = array( + 'text' => _("Edit the users responsible for this queue"), + 'url' => Horde_Util::addParameter(Horde::applicationUrl('admin/?formname=edituserform'), 'queue', $queue)); + $this->addVariable('', 'link', 'link', false, true, null, + array($userlink)); + + /* Perms link. */ + if (Horde_Auth::isAdmin('whups:admin', Horde_Perms::EDIT)) { + $permslink = array( + 'text' => _("Edit the permissions on this queue"), + 'url' => Horde_Util::addParameter(Horde_Util::addParameter(Horde::url($GLOBALS['registry']->get('webroot', 'horde') . '/admin/perms/edit.php'), 'category', "whups:queues:$queue"), 'autocreate', '1')); + $this->addVariable('', 'link', 'link', false, true, null, + array($permslink)); + } + } + +} + +class DeleteQueueForm extends Horde_Form { + + function DeleteQueueForm(&$vars) + { + global $whups_driver; + + parent::Horde_Form($vars, _("Delete Queue Confirmation")); + + $queue = $vars->get('queue'); + $info = $whups_driver->getQueue($queue); + + $this->addHidden('', 'queue', 'int', true, true); + + $mname = &$this->addVariable(_("Queue Name"), 'name', 'text', false, + true); + $mname->setDefault($info['name']); + + $mdesc = &$this->addVariable(_("Queue Description"), 'description', + 'text', false, true); + $mdesc->setDefault($info['description']); + + $yesno = array(array(0 => _("No"), 1 => _("Yes"))); + $this->addVariable( + _("Really delete this queue? This may cause data problems!"), + 'yesno', 'enum', true, false, null, $yesno); + } + +} diff --git a/whups/lib/Forms/Admin/Reply.php b/whups/lib/Forms/Admin/Reply.php new file mode 100644 index 000000000..e8d9cce39 --- /dev/null +++ b/whups/lib/Forms/Admin/Reply.php @@ -0,0 +1,113 @@ + + * @package Whups + */ + +class AddReplyForm extends Horde_Form { + + function AddReplyForm(&$vars) + { + require_once dirname(__FILE__) . '/../Action.php'; + + parent::Horde_Form($vars, _("Add Form Reply")); + + $this->addHidden('', 'type', 'int', true, true); + $this->addVariable(_("Form Reply Name"), 'reply_name', 'text', true); + $this->addVariable(_("Form Reply Text"), 'reply_text', 'longtext', true); + } + +} + +class EditReplyStep1Form extends Horde_Form { + + function EditReplyStep1Form(&$vars) + { + parent::Horde_Form($vars, _("Edit or Delete Form Replies")); + $this->setButtons(array(_("Edit Form Reply"), _("Delete Form Reply"))); + + $replies = $GLOBALS['whups_driver']->getReplies($vars->get('type')); + if ($replies) { + $params = array(); + foreach ($replies as $key => $reply) { + $params[$key] = $reply['reply_name']; + } + $stype = 'enum'; + $type_params = array($params); + } else { + $stype = 'invalid'; + $type_params = array(_("There are no form replies to edit")); + } + + $this->addHidden('', 'type', 'int', true, true); + $this->addVariable(_("Form Reply Name"), 'reply', $stype, true, + false, null, $type_params); + } + +} + +class EditReplyStep2Form extends Horde_Form { + + function EditReplyStep2Form(&$vars) + { + require_once dirname(__FILE__) . '/../Action.php'; + + parent::Horde_Form($vars, _("Edit Form Reply")); + + $reply = $vars->get('reply'); + $info = $GLOBALS['whups_driver']->getReply($reply); + + $this->addHidden('', 'type', 'int', true, true); + $this->addHidden('', 'reply', 'int', true, true); + $pname = &$this->addVariable(_("Form Reply Name"), 'reply_name', + 'text', true); + $pname->setDefault($info['reply_name']); + $ptext = &$this->addVariable(_("Form Reply Text"), 'reply_text', + 'longtext', true); + $ptext->setDefault($info['reply_text']); + + /* Perms link. */ + if (Horde_Auth::isAdmin('whups:admin', Horde_Perms::EDIT)) { + $permslink = array( + 'text' => _("Edit the permissions on this form reply"), + 'url' => Horde_Util::addParameter(Horde_Util::addParameter(Horde::url($GLOBALS['registry']->get('webroot', 'horde') . '/admin/perms/edit.php'), 'category', "whups:replies:$reply"), 'autocreate', '1')); + $this->addVariable('', 'link', 'link', false, true, null, + array($permslink)); + } + } + +} + +class DeleteReplyForm extends Horde_Form { + + function DeleteReplyForm(&$vars) + { + parent::Horde_Form($vars, _("Delete Form Reply Confirmation")); + + $reply = $vars->get('reply'); + $info = $GLOBALS['whups_driver']->getReply($reply); + + $this->addHidden('', 'type', 'int', true, true); + $this->addHidden('', 'reply', 'int', true, true); + $pname = &$this->addVariable(_("Form Reply Name"), 'reply_name', + 'text', false, true); + $pname->setDefault($info['reply_name']); + $ptext = &$this->addVariable(_("Form Reply Text"), + 'reply_text', 'text', false, + true); + $ptext->setDefault($info['reply_text']); + $this->addVariable(_("Really delete this form reply?"), 'yesno', 'enum', + true, false, null, + array(array(0 => _("No"), 1 => _("Yes")))); + } + +} diff --git a/whups/lib/Forms/Admin/State.php b/whups/lib/Forms/Admin/State.php new file mode 100644 index 000000000..ad0d4d461 --- /dev/null +++ b/whups/lib/Forms/Admin/State.php @@ -0,0 +1,125 @@ + + * @package Whups + */ + +class AddStateForm extends Horde_Form { + + function AddStateForm(&$vars) + { + parent::Horde_Form($vars, _("Add State")); + + $this->addHidden('', 'type', 'int', true, true); + $this->addVariable(_("State Name"), 'name', 'text', true); + $this->addVariable(_("State Description"), 'description', 'text', true); + $this->addVariable(_("State Category"), 'category', 'enum', false, false, null, array($GLOBALS['whups_driver']->getCategories())); + } + +} + +class EditStateStep1Form extends Horde_Form { + + function EditStateStep1Form(&$vars) + { + parent::Horde_Form($vars, _("Edit or Delete States")); + $this->setButtons(array(_("Edit State"), _("Delete State"))); + + $states = $GLOBALS['whups_driver']->getStates($vars->get('type')); + if ($states) { + $stype = 'enum'; + $type_params = array($states); + } else { + $stype = 'invalid'; + $type_params = array(_("There are no states to edit")); + } + + $this->addHidden('', 'type', 'int', true, true); + $this->addVariable(_("State Name"), 'state', $stype, false, false, null, $type_params); + } + +} + +class EditStateStep2Form extends Horde_Form { + + function EditStateStep2Form(&$vars) + { + parent::Horde_Form($vars, _("Edit State")); + + $state = $vars->get('state'); + $info = $GLOBALS['whups_driver']->getState($state); + + $this->addHidden('', 'type', 'int', true, true); + $this->addHidden('', 'state', 'int', true, true); + + $sname = &$this->addVariable(_("State Name"), 'name', 'text', true); + $sname->setDefault($info['name']); + + $sdesc = &$this->addVariable(_("State Description"), 'description', 'text', true); + $sdesc->setDefault($info['description']); + + $scat = &$this->addVariable(_("State Category"), 'category', 'enum', true, false, null, array($GLOBALS['whups_driver']->getCategories())); + $scat->setDefault($info['category']); + } + +} + +class DefaultStateForm extends Horde_Form { + + function DefaultStateForm(&$vars) + { + parent::Horde_Form($vars, _("Set Default State")); + + $this->setButtons(array(_("Set Default State"))); + + $states = $GLOBALS['whups_driver']->getStates( + $vars->get('type'), + array('unconfirmed', 'new', 'assigned')); + if ($states) { + $stype = 'enum'; + $type_params = array($states); + } else { + $stype = 'invalid'; + $type_params = array(_("There are no states to edit")); + } + + $this->addHidden('', 'type', 'int', true, true); + $var = &$this->addVariable(_("State Name"), 'state', $stype, false, + false, null, $type_params); + $var->setDefault($GLOBALS['whups_driver']->getDefaultState($vars->get('type'))); + } + +} + +class DeleteStateForm extends Horde_Form { + + function DeleteStateForm(&$vars) + { + parent::Horde_Form($vars, _("Delete State Confirmation")); + + $state = $vars->get('state'); + $info = $GLOBALS['whups_driver']->getState($state); + + $this->addHidden('', 'type', 'int', true, true); + $this->addHidden('', 'state', 'int', true, true); + + $sname = &$this->addVariable(_("State Name"), 'name', 'text', false, true); + $sname->setDefault($info['name']); + + $sdesc = &$this->addVariable(_("State Description"), 'description', 'text', false, true); + $sdesc->setDefault($info['description']); + + $yesno = array(array(0 => _("No"), 1 => _("Yes"))); + $this->addVariable(_("Really delete this state? This may cause data problems!"), 'yesno', 'enum', true, false, null, $yesno); + } + +} diff --git a/whups/lib/Forms/Admin/Type.php b/whups/lib/Forms/Admin/Type.php new file mode 100644 index 000000000..621f3b29e --- /dev/null +++ b/whups/lib/Forms/Admin/Type.php @@ -0,0 +1,207 @@ + + * @package Whups + */ + +class AddTypeStep1Form extends Horde_Form { + + function AddTypeStep1Form(&$vars) + { + parent::Horde_Form($vars, _("Add Type")); + $this->appendButtons(_("Add Type")); + $this->addVariable(_("Type Name"), 'name', 'text', true); + $this->addVariable(_("Type Description"), 'description', 'text', true); + } + +} + +class EditTypeStep1Form extends Horde_Form { + + function EditTypeStep1Form(&$vars) + { + global $whups_driver; + + parent::Horde_Form($vars, _("Edit or Delete Types")); + $this->setButtons(array(_("Edit Type"), + _("Clone Type"), + _("Delete Type"))); + + $types = $whups_driver->getAllTypes(); + if ($types) { + $ttype = 'enum'; + $type_params = array($types); + } else { + $ttype = 'invalid'; + $type_params = array(_("There are no types to edit")); + } + + $this->addVariable(_("Type Name"), 'type', $ttype, true, false, null, + $type_params); + } + +} + +class EditTypeStep2Form extends Horde_Form { + + function EditTypeStep2Form(&$vars) + { + global $whups_driver; + + $type = $vars->get('type'); + $info = $whups_driver->getType($type); + + parent::Horde_Form($vars, sprintf(_("Edit %s"), $info['name'])); + + $this->addHidden('', 'type', 'int', true, true); + + $tname = &$this->addVariable(_("Type Name"), 'name', 'text', true); + $tname->setDefault($info['name']); + + $tdesc = &$this->addVariable(_("Type Description"), 'description', + 'text', true); + $tdesc->setDefault($info['description']); + + /* States. */ + $states = $whups_driver->getStates($type); + $tstates = &$this->addVariable(_("States for this Type"), 'state', + 'set', false, true, null, + array($states)); + $tstates->setDefault(array_keys($states)); + $statelink = array( + array('text' => _("Edit States"), + 'url' => Horde::applicationUrl('admin/?formname=editstatestep1form&type=' . $type))); + if (!count($states)) { + $statelink[] = array( + 'text' => _("Create Default States"), + 'url' => Horde::applicationUrl('admin/?formname=createdefaultstates&type=' . $type)); + } + $this->addVariable('', 'link', 'link', false, true, null, + array($statelink)); + + /* Priorities. */ + $priorities = $whups_driver->getPriorities($type); + $tpriorities = &$this->addVariable(_("Priorities for this Type"), + 'priority', 'set', false, true, null, + array($priorities)); + $tpriorities->setDefault(array_keys($priorities)); + $prioritylink = array( + array('text' => _("Edit Priorities"), + 'url' => Horde::applicationUrl('admin/?formname=editprioritystep1form&type=' . $type))); + if (!count($priorities)) { + $prioritylink[] = array( + 'text' => _("Create Default Priorities"), + 'url' => Horde::applicationUrl('admin/?formname=createdefaultpriorities&type=' . $type)); + } + $this->addVariable('', 'link', 'link', false, true, null, + array($prioritylink)); + + /* Attributes. */ + $attributes = $whups_driver->getAttributesForType($type); + $params = array(); + foreach ($attributes as $key => $attribute) { + $params[$key] = $attribute['human_name']; + } + $tattributes = &$this->addVariable(_("Attributes for this Type"), + 'attribute', 'set', false, true, + null, array($params)); + $tattributes->setDefault(array_keys($attributes)); + $attributelink = array( + 'text' => _("Edit Attributes"), + 'url' => Horde::applicationUrl('admin/?formname=editattributedescstep1form&type=' . $type)); + $this->addVariable('', 'link', 'link', false, true, null, + array($attributelink)); + + /* Form replies. */ + $replies = $whups_driver->getReplies($type); + $params = array(); + foreach ($replies as $key => $reply) { + $params[$key] = $reply['reply_name']; + } + $treplies = &$this->addVariable(_("Form Replies for this Type"), + 'reply', 'set', false, true, null, + array($params)); + $treplies->setDefault(array_keys($replies)); + $replylink = array( + 'text' => _("Edit Form Replies"), + 'url' => Horde::applicationUrl('admin/?formname=editreplystep1form&type=' . $type)); + $this->addVariable('', 'link', 'link', false, true, null, + array($replylink)); + } + +} + +class DeleteTypeForm extends Horde_Form { + + function DeleteTypeForm(&$vars) + { + global $whups_driver; + + parent::Horde_Form($vars, _("Delete Type Confirmation")); + + $type = $vars->get('type'); + $info = $whups_driver->getType($type); + + $this->addHidden('', 'type', 'int', true, true); + + $tname = &$this->addVariable(_("Type Name"), 'name', 'text', false, + true); + $tname->setDefault($info['name']); + + $tdesc = &$this->addVariable(_("Type Description"), 'description', + 'text', false, true); + $tdesc->setDefault($info['description']); + + $states = $whups_driver->getStates($type); + $tstates = &$this->addVariable(_("States for this Type"), 'state', + 'set', false, true, null, + array($states)); + $tstates->setDefault(array_keys($states)); + + $priorities = $whups_driver->getPriorities($type); + $tpriorities = &$this->addVariable(_("Priorities for this Type"), + 'priority', 'set', false, true, null, + array($priorities)); + $tpriorities->setDefault(array_keys($priorities)); + + $yesno = array(array(0 => _("No"), 1 => _("Yes"))); + $this->addVariable( + _("Really delete this type? This may cause data problems!"), + 'yesno', 'enum', true, false, null, $yesno); + } + +} + +class CloneTypeForm extends Horde_Form { + + function CloneTypeForm(&$vars) + { + global $whups_driver; + + $type = $vars->get('type'); + $info = $whups_driver->getType($type); + parent::Horde_Form($vars, + sprintf(_("Make a clone of %s"), $info['name'])); + + $this->setButtons(_("Clone")); + $this->addHidden('', 'type', 'int', true, true); + + $tname = &$this->addVariable(_("Name of the cloned copy"), 'name', + 'text', true); + $tname->setDefault(sprintf(_("Copy of %s"), $info['name'])); + + $tdesc = &$this->addVariable(_("Clone Description"), 'description', + 'text', true); + $tdesc->setDefault($info['description']); + } + +} diff --git a/whups/lib/Forms/Admin/User.php b/whups/lib/Forms/Admin/User.php new file mode 100644 index 000000000..a56c6abcb --- /dev/null +++ b/whups/lib/Forms/Admin/User.php @@ -0,0 +1,82 @@ + + * @package Whups + */ + +class AddUserForm extends Horde_Form { + + function AddUserForm(&$vars) + { + parent::Horde_Form($vars, _("Add Users")); + + $this->addHidden('', 'queue', 'int', true, true); + + global $conf, $whups_driver; + + $auth = Horde_Auth::singleton($conf['auth']['driver']); + if ($auth->hasCapability('list')) { + $queue = $vars->get('queue'); + $current = $whups_driver->getQueueUsers($queue); + + $list = $auth->listUsers(); + if (is_a($list, 'PEAR_Error')) { + $this->addVariable(_("User"), 'user', 'invalid', true, false, null, + array(sprintf(_("There was an error listing users: %s; %s"), $list->getMessage(), $list->getUserInfo()))); + } else { + sort($list); + $users = array(); + foreach ($list as $user) { + if (!isset($current[$user])) { + $users[$user] = Horde_Auth::removeHook($user); + } + } + $this->addVariable(_("User"), 'user', 'multienum', true, false, null, array($users)); + } + } else { + $this->addVariable(_("User"), 'user', 'text', true); + } + } + +} + +class EditUserStep1Form extends Horde_Form { + + function EditUserStep1Form(&$vars) + { + global $whups_driver; + + $this->appendButtons(_("Remove User")); + + parent::Horde_Form($vars, _("Responsible Users")); + + $queue = $vars->get('queue'); + $users = $whups_driver->getQueueUsers($queue); + $f_users = array(); + foreach ($users as $user) { + $f_users[$user] = Whups::formatUser($user); + } + if ($f_users) { + asort($f_users); + $usertype = 'enum'; + $type_params = array($f_users); + } else { + $usertype = 'invalid'; + $type_params = array(_("There are no users responsible for this queue.")); + } + + $this->addHidden('', 'queue', 'int', true, true); + $this->addVariable(_("Users responsible for this queue"), 'user', $usertype, true, false, null, $type_params); + } + +} diff --git a/whups/lib/Forms/Admin/Version.php b/whups/lib/Forms/Admin/Version.php new file mode 100644 index 000000000..87b4e0468 --- /dev/null +++ b/whups/lib/Forms/Admin/Version.php @@ -0,0 +1,104 @@ + + * @package Whups + */ + +class AddVersionForm extends Horde_Form { + + function AddVersionForm(&$vars) + { + parent::Horde_Form($vars, _("Add Version")); + + $this->addHidden('', 'queue', 'int', true, true); + $this->addVariable(_("Version Name"), 'name', 'text', true); + $this->addVariable(_("Version Description"), 'description', 'text', true); + $vactive = &$this->addVariable(_("Version Active?"), 'active', 'boolean', false); + $vactive->setDefault(true); + } + +} + +class EditVersionStep1Form extends Horde_Form { + + function EditVersionStep1Form(&$vars) + { + global $whups_driver; + + parent::Horde_Form($vars, _("Edit or Delete Versions")); + $this->setButtons(array(_("Edit Version"), _("Delete Version"))); + + $versions = $whups_driver->getVersions($vars->get('queue'), true); + if ($versions) { + $vtype = 'enum'; + $type_params = array($versions); + } else { + $vtype = 'invalid'; + $type_params = array(_("There are no versions to edit")); + } + + $this->addHidden('', 'queue', 'int', true, true); + $this->addVariable(_("Version Name"), 'version', $vtype, true, false, null, $type_params); + } + +} + +class EditVersionStep2Form extends Horde_Form { + + function EditVersionStep2Form(&$vars) + { + global $whups_driver; + + parent::Horde_Form($vars, _("Edit Version")); + + $version = $vars->get('version'); + $info = $whups_driver->getVersion($version); + + $this->addHidden('', 'queue', 'int', true, true); + $this->addHidden('', 'version', 'int', true, true); + + $vname = &$this->addVariable(_("Version Name"), 'name', 'text', true); + $vname->setDefault($info['name']); + + $vdesc = &$this->addVariable(_("Version Description"), 'description', 'text', true); + $vdesc->setDefault($info['description']); + $vactive = &$this->addVariable(_("Version Active?"), 'active', 'boolean', false); + $vactive->setDefault($info['active']); + } + +} + +class DeleteVersionForm extends Horde_Form { + + function DeleteVersionForm(&$vars) + { + global $whups_driver; + + parent::Horde_Form($vars, _("Delete Version Confirmation")); + + $version = $vars->get('version'); + $info = $whups_driver->getVersion($version); + + $this->addHidden('', 'queue', 'int', true, true); + $this->addHidden('', 'version', 'int', true, true); + + $vname = &$this->addVariable(_("Version Name"), 'name', 'text', false, true); + $vname->setDefault($info['name']); + + $vdesc = &$this->addVariable(_("Version Description"), 'description', 'text', false, true); + $vdesc->setDefault($info['description']); + + $yesno = array(array(0 => _("No"), 1 => _("Yes"))); + $this->addVariable(_("Really delete this version? This may cause data problems!"), 'yesno', 'enum', true, false, null, $yesno); + } + +} diff --git a/whups/lib/Forms/CreateTicket.php b/whups/lib/Forms/CreateTicket.php new file mode 100644 index 000000000..e2ae1ae79 --- /dev/null +++ b/whups/lib/Forms/CreateTicket.php @@ -0,0 +1,266 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + * + * @author Robert E. Coyle + * @package Whups + */ + +/** + * @package Whups + */ +class CreateStep1Form extends Horde_Form { + + var $_useFormToken = false; + + function CreateStep1Form(&$vars) + { + global $whups_driver; + + parent::Horde_Form($vars, _("Create Ticket - Step 1")); + + $queues = Whups::permissionsFilter($whups_driver->getQueues(), 'queue', + Horde_Perms::EDIT); + if (!$queues) { + $this->addVariable( + _("Queue Name"), 'queue', 'invalid', true, false, null, + array(_("There are no queues which you can create tickets in."))); + } else { + foreach (array_keys($queues) as $queue_id) { + $info = $whups_driver->getQueue($queue_id); + if (!empty($info['description'])) { + $queues[$queue_id] .= ' [' . $info['description'] . ']'; + } + } + + // Auto-select the only queue if only one option is available + if (count($queues) == 1) { + $vars->set('queue', array_pop(array_keys($queues))); + } + + require_once 'Horde/Form/Action.php'; + $queues = &$this->addVariable(_("Queue Name"), 'queue', 'enum', + true, false, null, + array($queues, _("Choose:"))); + $queues->setAction(Horde_Form_Action::factory('submit')); + } + } + +} + +/** + * @package Whups + */ +class CreateStep2Form extends Horde_Form { + + var $_useFormToken = false; + + function CreateStep2Form(&$vars) + { + global $whups_driver; + + parent::Horde_Form($vars, _("Create Ticket - Step 2")); + + $types = $whups_driver->getTypes($vars->get('queue')); + $info = $whups_driver->getQueue($vars->get('queue')); + $type = $whups_driver->getDefaultType($vars->get('queue')); + if (count($types) == 0) { + $typetype = 'invalid'; + $type_params = array(_("There are no ticket types associated with this queue; until there are, you cannot create any tickets in this queue.")); + } else { + $typetype = 'enum'; + $type_params = array($types); + if (empty($type) || !isset($types[$type])) { + $type_params[] = _("Choose:"); + } + } + $types = &$this->addVariable(_("Ticket Type"), 'type', $typetype, true, + false, null, $type_params); + $types->setDefault($type); + + if (!empty($info['versioned'])) { + $versions = $whups_driver->getVersions($vars->get('queue')); + if (count($versions) == 0) { + $vtype = 'invalid'; + $v_params = array(_("This queue requires that you specify a version, but there are no versions associated with it. Until versions are created for this queue, you will not be able to create tickets.")); + } else { + $vtype = 'enum'; + $v_params = array($versions); + } + $this->addVariable(_("Queue Version"), 'version', $vtype, true, + false, null, $v_params); + } else { + require_once 'Horde/Form/Action.php'; + $types->setAction(Horde_Form_Action::factory('submit')); + } + } + +} + +/** + * @package Whups + */ +class CreateStep3Form extends Horde_Form { + + function CreateStep3Form(&$vars) + { + global $whups_driver, $conf; + + parent::Horde_Form($vars, _("Create Ticket - Step 3")); + + $states = $whups_driver->getStates($vars->get('type'), 'unconfirmed'); + $attributes = $whups_driver->getAttributesForType($vars->get('type')); + + $queue = $vars->get('queue'); + $info = $whups_driver->getQueue($queue); + + if (Horde_Auth::getAuth()) { + $states2 = $whups_driver->getStates($vars->get('type'), + array('new', 'assigned')); + if (is_array($states2)) { + $states = $states + $states2; + } + } + + if (Whups::hasPermission($queue, 'queue', 'requester')) { + $this->addVariable(_("The Requester's Email Address"), 'user_email', + 'whups_email', false); + } elseif (!Horde_Auth::getAuth()) { + $this->addVariable(_("Your Email Address"), 'user_email', 'email', + true); + if (!empty($conf['guests']['captcha'])) { + $this->addVariable( + _("Spam protection"), 'captcha', 'figlet', true, null, null, + array(Whups::getCAPTCHA(!$this->isSubmitted()), + $conf['guests']['figlet_font'])); + } + } + + // Silently default the state if there is only one choice + if (count($states) == 1) { + $vars->set('state', reset(array_keys($states))); + $f_state = &$this->addHidden(_("Ticket State"), 'state', 'enum', + true, false, null, array($states)); + } else { + $f_state = &$this->addVariable(_("Ticket State"), 'state', 'enum', + true, false, null, array($states)); + $f_state->setDefault( + $whups_driver->getDefaultState($vars->get('type'))); + } + + $f_priority = &$this->addVariable( + _("Priority"), 'priority', 'enum', true, false, null, + array($whups_driver->getPriorities($vars->get('type')))); + $f_priority->setDefault( + $whups_driver->getDefaultPriority($vars->get('type'))); + $this->addVariable(_("Due Date"), 'due', 'datetime', false, false); + $this->addVariable(_("Summary"), 'summary', 'text', true, false); + $this->addVariable(_("Attachment"), 'newattachment', 'file', false); + $this->addVariable(_("Description"), 'comment', 'longtext', true); + foreach ($attributes as $attribute_id => $attribute_value) { + $this->addVariable($attribute_value['human_name'], + 'attributes[' . $attribute_id . ']', + $attribute_value['type'], + $attribute_value['required'], + $attribute_value['readonly'], + $attribute_value['desc'], + $attribute_value['params']); + } + } + + function validate(&$vars, $canAutoFill = false) + { + global $conf; + + if (!parent::validate($vars, $canAutoFill)) { + if (!Horde_Auth::getAuth() && !empty($conf['guests']['captcha'])) { + $vars->remove('captcha'); + $this->removeVariable($varname = 'captcha'); + $this->insertVariableBefore( + 'state', _("Spam protection"), 'captcha', 'figlet', true, + null, null, + array(Whups::getCAPTCHA(true), + $conf['guests']['figlet_font'])); + } + return false; + } + + return true; + } + +} + +/** + * @package Whups + */ +class CreateStep4Form extends Horde_Form { + + function CreateStep4Form(&$vars) + { + global $whups_driver, $conf; + + parent::Horde_Form($vars, _("Create Ticket - Step 4")); + + /* Preserve previously uploaded attachments. */ + $this->addHidden('', 'deferred_attachment', 'text', false); + + /* Groups. */ + $groups = &Group::singleton(); + if ($conf['prefs']['assign_all_groups']) { + $mygroups = $groups->listGroups(); + } else { + $mygroups = $groups->getGroupMemberships(Horde_Auth::getAuth()); + } + + $users = $whups_driver->getQueueUsers($vars->get('queue')); + $f_users = array(); + foreach ($users as $user) { + $f_users['user:' . $user] = Whups::formatUser($user); + } + + $f_groups = array(); + if (count($mygroups)) { + foreach ($mygroups as $id => $group) { + $f_groups['group:' . $id] = $group; + } + } + + if (count($f_users)) { + asort($f_users); + $owners = &$this->addVariable(_("Owners"), 'owners', 'multienum', + false, false, null, array($f_users)); + $owners->setDefault($whups_driver->getOwners($vars->get('id'))); + } + + if (count($f_groups)) { + asort($f_groups); + $group_owners = &$this->addVariable(_("Group Owners"), + 'group_owners', 'multienum', + false, false, null, + array($f_groups)); + $group_owners->setDefault( + $whups_driver->getOwners($vars->get('id'))); + } + + if (!count($f_users) && !count($f_groups)) { + $owner_params = array( + _("There are no users to which this ticket can be assigned.")); + $this->addVariable(_("Owners"), 'owners', 'invalid', false, false, + null, $owner_params); + } + } + +} + +/** + * @package Horde_Form + */ +class Horde_Form_Type_whups_email extends Horde_Form_Type_email {} diff --git a/whups/lib/Forms/EditTicket.php b/whups/lib/Forms/EditTicket.php new file mode 100644 index 000000000..6785c506c --- /dev/null +++ b/whups/lib/Forms/EditTicket.php @@ -0,0 +1,221 @@ + + * @package Whups + */ +class EditTicketForm extends Horde_Form { + + function EditTicketForm(&$vars, &$ticket, $title = '') + { + global $whups_driver; + + parent::Horde_Form($vars, $title); + $type = $vars->get('type'); + + $start_year = date('Y'); + if (is_numeric($d = $vars->get('due'))) { + $start_year = min($start_year, date('Y', $d)); + } + + $fields = array('summary'); + + $qinfo = $whups_driver->getQueue($vars->get('queue')); + if (!empty($qinfo['versioned'])) { + $fields[] = 'version'; + } + + $fields = array_merge($fields, array('state', 'priority', 'due')); + + $attributes = $ticket->addAttributes(); + if (is_a($attributes, 'PEAR_Error')) { + $attributes = array(); + } + foreach ($attributes as $attribute) { + $fields[] = 'attribute_' . $attribute['id']; + } + $fields = array_merge($fields, array('owner', 'attachments', 'comment')); + + $grouped_fields = array($fields); + $grouped_hook = false; + try { + $grouped_fields = Horde::callHook('group_fields', + array($ticket->get('type'), $fields), + 'whups'); + $grouped_hook = true; + } catch (Horde_Exception_HookNotSet $e) { + } catch (Horde_Exception $e) { + Horde::logMessage($e, __FILE__, __LINE__, PEAR_LOG_ERR); + } + + $this->addHidden('', 'id', 'int', true, true); + $this->addHidden('', 'type', 'int', true, true); + + foreach ($grouped_fields as $header => $fields) { + if ($grouped_hook) { + $this->addVariable($header, null, 'header', false); + } + foreach ($fields as $field) { + switch ($field) { + case 'summary': + $this->addVariable(_("Summary"), 'summary', 'text', true); + break; + + case 'version': + $versions = $whups_driver->getVersions($vars->get('queue')); + if (count($versions) == 0) { + $vtype = 'invalid'; + $v_params = array(_("This queue requires that you specify a version, but there are no versions associated with it. Until versions are created for this queue, you will not be able to create tickets.")); + } else { + $vtype = 'enum'; + $v_params = array($versions); + } + $this->addVariable(_("Queue Version"), 'version', $vtype, true, false, null, $v_params); + break; + + case 'state': + $this->addVariable(_("State"), 'state', 'enum', true, + false, null, + array($whups_driver->getStates($type))); + break; + + case 'priority': + $this->addVariable(_("Priority"), 'priority', 'enum', true, + false, null, + array($whups_driver->getPriorities($type))); + break; + + case 'due': + $this->addVariable(_("Due Date"), 'due', 'datetime', false, + false, null, + array($start_year)); + break; + + case 'owner': + if (Whups::hasPermission($vars->get('queue'), 'queue', + 'assign')) { + $groups = &Group::singleton(); + if ($GLOBALS['conf']['prefs']['assign_all_groups']) { + $mygroups = $groups->listGroups(); + } else { + $mygroups = $groups->getGroupMemberships(Horde_Auth::getAuth()); + } + + $f_users = array(); + $users = $whups_driver->getQueueUsers($vars->get('queue')); + foreach ($users as $user) { + $f_users['user:' . $user] = Whups::formatUser($user); + } + + $f_groups = array(); + if ($mygroups) { + foreach (array_keys($mygroups) as $id) { + $f_groups['group:' . $id] = $groups->getGroupName($id); + } + } + + if (count($f_users)) { + asort($f_users); + $owners = &$this->addVariable(_("Owners"), + 'owners', + 'multienum', + false, false, null, + array($f_users)); + $owners->setDefault($whups_driver->getOwners($vars->get('id'))); + } + + if (count($f_groups)) { + asort($f_groups); + $group_owners = &$this->addVariable(_("Group Owners"), + 'group_owners', + 'multienum', + false, false, + null, + array($f_groups)); + $group_owners->setDefault($whups_driver->getOwners($vars->get('id'))); + } + } + break; + + case 'attachments': + $this->addVariable(_("Attachment"), 'newattachment', + 'file', false); + break; + + case 'comment': + $cvar = &$this->addVariable(_("Comment"), 'newcomment', + 'longtext', false); + + /* Form replies. */ + $replies = Whups::permissionsFilter( + $whups_driver->getReplies($type), 'reply'); + if (count($replies) && !is_a($replies, 'PEAR_Error')) { + require_once 'Horde/Form/Action.php'; + $params = array(); + foreach ($replies as $key => $reply) { + $params[$key] = $reply['reply_name']; + } + $rvar = &$this->addVariable(_("Form Reply:"), 'reply', + 'enum', false, false, null, + array($params, true)); + $rvar->setAction(Horde_Form_Action::factory('reload')); + if ($vars->get('reply')) { + $reply = $vars->get('newcomment'); + if (strlen($reply)) { + $reply .= "\n\n"; + } + $reply .= $replies[$vars->get('reply')]['reply_text']; + $vars->set('newcomment', $reply); + $vars->remove('reply'); + } + } + + /* Comment permissions. */ + $groups = &Group::singleton(); + $mygroups = $groups->getGroupMemberships(Horde_Auth::getAuth()); + if ($mygroups) { + foreach (array_keys($mygroups) as $gid) { + $grouplist[$gid] = $groups->getGroupName($gid, true); + } + asort($grouplist); + $grouplist = array(0 => _("This comment is visible to everyone")) + $grouplist; + $this->addVariable(_("Make this comment visible only to members of a group?"), 'group', + 'enum', false, false, null, + array($grouplist)); + } + break; + + default: + /* Ticket attributes. */ + if ($ticket && + substr($field, 0, 10) == 'attribute_' && + isset($attributes[substr($field, 10)])) { + $attribute = $attributes[substr($field, 10)]; + $var = &$this->addVariable( + $attribute['human_name'], + 'attribute_' . $attribute['id'], + $attribute['type'], + $attribute['required'], + $attribute['readonly'], + $attribute['desc'], + $attribute['params']); + $var->setDefault($attribute['value']); + } + } + } + } + } + + function validate(&$vars) + { + if (!Horde_Auth::getAuth()) { + $this->setError('_auth', _("Permission Denied.")); + } + + return parent::validate($vars); + } + +} diff --git a/whups/lib/Forms/Query.php b/whups/lib/Forms/Query.php new file mode 100644 index 000000000..5102cb364 --- /dev/null +++ b/whups/lib/Forms/Query.php @@ -0,0 +1,476 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + * + * @author Robert E. Coyle + * @author Jan Schneider + * @package Whups + */ +class InsertBranchForm extends Horde_Form { + + function InsertBranchForm(&$vars) + { + parent::Horde_Form($vars, _("Insert Branch")); + + $branchtypes = array( + QUERY_TYPE_AND => _("And"), + QUERY_TYPE_OR => _("Or"), + QUERY_TYPE_NOT => _("Not")); + + $this->addHidden(null, 'path', 'text', false, true); + $this->addVariable(_("Branch Type"), 'type', 'enum', true, false, null, array($branchtypes)); + } + +} + +/** + * @package Whups + */ +class UserCriterionForm extends Horde_Form { + + function UserCriterionForm(&$vars) + { + parent::Horde_Form($vars, $vars->get('edit') ? _("Edit User Criterion") : _("Add User Criterion")); + + $this->addHidden('', 'edit', 'boolean', false); + $this->addVariable(_("User ID"), 'user', 'text', true); + $this->addVariable(_("Match Operator"), 'operator', 'enum', true, false, null, array(Whups_Query::textOperators())); + $this->addVariable(_("Search Owners"), 'owners', 'boolean', false); + $this->addVariable(_("Search Requester"), 'requester', 'boolean', false); + $this->addVariable(_("Search Comments"), 'comments', 'boolean', false); + } + + function execute(&$vars) + { + $path = $vars->get('path'); + $user = $vars->get('user'); + $operator = $vars->get('operator'); + $owners = $vars->get('owners'); + $requester = $vars->get('requester'); + $comments = $vars->get('comments'); + + // If we're adding more than one criterion, put them all under an OR + // node (which should be what is wanted in the general case). + if ((bool)$owners + (bool)$requester + (bool)$comments > 1) { + $path = $GLOBALS['whups_query']->insertBranch($path, QUERY_TYPE_OR); + } + + if ($owners) { + $GLOBALS['whups_query']->insertCriterion($path, CRITERION_OWNERS, null, $operator, $user); + } + + if ($requester) { + $GLOBALS['whups_query']->insertCriterion($path, CRITERION_REQUESTER, null, $operator, $user); + } + + if ($comments) { + $GLOBALS['whups_query']->insertCriterion($path, CRITERION_ADDED_COMMENT, null, $operator, $user); + } + + $this->unsetVars($vars); + } + +} + +/** + * @package Whups + */ +class GroupCriterionForm extends Horde_Form { + + function GroupCriterionForm(&$vars) + { + parent::Horde_Form($vars, $vars->get('edit') ? _("Edit Group Criterion") : _("Add Group Criterion")); + + $this->addHidden('', 'edit', 'boolean', false); + + $groups = &Group::singleton(); + $grouplist = $groups->listGroups(); + if (is_a($grouplist, 'PEAR_Error') || !count($grouplist)) { + $type_params = array(_("Could not find any groups.")); + $this->addVariable(_("Groups"), 'groups', 'invalid', false, false, null, $type_params); + } else { + $this->addVariable(_("Groups"), 'groups', 'enum', true, false, null, array($grouplist)); + } + } + + function execute(&$vars) + { + $path = $vars->get('path'); + $groups = $vars->get('groups'); + + if ($groups) { + $GLOBALS['whups_query']->insertCriterion($path, CRITERION_GROUPS, null, OPERATOR_EQUAL, $groups); + } + + $this->unsetVars($vars); + } + +} + +/** + * @package Whups + */ +class TextCriterionForm extends Horde_Form { + + function TextCriterionForm(&$vars) + { + parent::Horde_Form($vars, $vars->get('edit') ? _("Edit Text Criterion") : _("Add Text Criterion")); + + $this->addHidden('', 'edit', 'boolean', false); + $this->addVariable(_("Text"), 'text', 'text', true); + $this->addVariable(_("Match Operator"), 'operator', 'enum', true, false, null, array(Whups_Query::textOperators())); + $this->addVariable(_("Search Summary"), 'summary', 'boolean', false); + $this->addVariable(_("Search Comments"), 'comments', 'boolean', false); + } + + function execute(&$vars) + { + $path = $vars->get('path'); + $text = $vars->get('text'); + $operator = $vars->get('operator'); + $summary = $vars->get('summary'); + $comments = $vars->get('comments'); + + if ($summary && $comments) { + $path = $GLOBALS['whups_query']->insertBranch($path, QUERY_TYPE_OR); + } + + if ($summary) { + $GLOBALS['whups_query']->insertCriterion($path, CRITERION_SUMMARY, null, $operator, $text); + } + + if ($comments) { + $GLOBALS['whups_query']->insertCriterion($path, CRITERION_COMMENT, null, $operator, $text); + } + + $this->unsetVars($vars); + } + +} + +/** + * @package Whups + */ +class PropertyCriterionForm extends Horde_Form { + + function PropertyCriterionForm(&$vars) + { + global $whups_driver; + + parent::Horde_Form($vars, $vars->get('edit') ? _("Edit Property Criterion") : _("Add Property Criterion")); + + $this->addHidden('', 'edit', 'boolean', false); + $this->addVariable(_("Id"), 'id', 'intlist', false); + + /* Types. */ + $this->addVariable(_("Type"), 'ttype', 'enum', false, false, null, + array($whups_driver->getAllTypes(), _("Any"))); + + + /* Queues. */ + $queues = Whups::permissionsFilter($whups_driver->getQueues(), 'queue', Horde_Perms::READ); + if (count($queues)) { + $v = &$this->addVariable(_("Queue"), 'queue', 'enum', false, false, + null, array($queues, _("Any"))); + $v->setAction(Horde_Form_Action::factory('reload')); + if ($vars->get('queue')) { + $this->addVariable(_("Version"), 'version', 'enum', false, + false, null, + array($whups_driver->getVersions($vars->get('queue')), _("Any"))); + } + } + + /* States. */ + $states = $whups_driver->getStates(); + $this->addVariable(_("State"), 'state', 'enum', false, false, null, + array($states, _("Any"))); + + /* Priorities. */ + $priorities = $whups_driver->getPriorities(); + $this->addVariable(_("Priority"), 'priority', 'enum', false, false, + null, array($priorities, _("Any"))); + } + + function execute(&$vars) + { + $path = $vars->get('path'); + + $id = $vars->get('id'); + if (strlen(trim($id))) { + $newpath = $path; + $ids = split("[\\t\\n ,]+", $id); + + if (count($ids) > 1) { + $newpath = $GLOBALS['whups_query']->insertBranch($path, QUERY_TYPE_OR); + } + + foreach ($ids as $id) { + $GLOBALS['whups_query']->insertCriterion($newpath, CRITERION_ID, null, OPERATOR_EQUAL, $id); + } + } + + $queue = $vars->get('queue'); + if ($queue) { + $version = $vars->get('version'); + if ($version) { + $path = $GLOBALS['whups_query']->insertBranch($path, QUERY_TYPE_AND); + } + $GLOBALS['whups_query']->insertCriterion($path, CRITERION_QUEUE, null, OPERATOR_EQUAL, $queue); + if ($version) { + $GLOBALS['whups_query']->insertCriterion($path, CRITERION_VERSION, null, OPERATOR_EQUAL, $version); + } + } + + $type = $vars->get('ttype'); + if ($type) { + $GLOBALS['whups_query']->insertCriterion($path, CRITERION_TYPE, null, OPERATOR_EQUAL, $type); + } + + $state = $vars->get('state'); + if ($state) { + $GLOBALS['whups_query']->insertCriterion($path, CRITERION_STATE, null, OPERATOR_EQUAL, $state); + } + + $priority = $vars->get('priority'); + if ($priority) { + $GLOBALS['whups_query']->insertCriterion($path, CRITERION_PRIORITY, null, OPERATOR_EQUAL, $priority); + } + + $this->unsetVars($vars); + } + +} + +/** + * @package Whups + */ +class AttributeCriterionForm extends Horde_Form { + + /** + * List of all available attributes. + */ + var $attribs = array(); + + function AttributeCriterionForm(&$vars) + { + global $whups_driver; + + parent::Horde_Form($vars, $vars->get('edit') ? _("Edit Attribute Criterion") : _("Add Attribute Criterion")); + + $this->addHidden('', 'edit', 'boolean', false); + + $this->attribs = $whups_driver->getAttributesForType(); + if (is_a($this->attribs, 'PEAR_Error')) { + $this->addVariable(_("Search Attribute"), 'attribute', 'invalid', true, false, null, array($this->attribs->getMessage())); + } elseif ($this->attribs) { + $this->addVariable(_("Match"), 'text', 'text', true); + $this->addVariable(_("Match Operator"), 'operator', 'enum', true, false, null, array(Whups_Query::textOperators())); + + foreach ($this->attribs as $id => $attribute) { + $this->addVariable(sprintf(_("Search %s Attribute"), $attribute['human_name']), "a$id", 'boolean', false); + } + } else { + $this->addVariable(_("Search Attribute"), 'attribute', 'invalid', true, false, null, array(_("There are no attributes defined."))); + } + } + + function execute(&$vars) + { + $path = $vars->get('path'); + $text = $vars->get('text'); + $operator = $vars->get('operator'); + + $count = 0; + + $keys = array_keys($this->attribs); + foreach ($keys as $id) { + $count += $vars->exists("a$id") ? 1 : 0; + } + + if ($count > 1) { + $path = $GLOBALS['whups_query']->insertBranch($path, QUERY_TYPE_OR); + } + + foreach ($keys as $id) { + if ($vars->get("a$id")) { + $GLOBALS['whups_query']->insertCriterion($path, CRITERION_ATTRIBUTE, $id, $operator, $text); + } + } + + $this->unsetVars($vars); + } + +} + +/** + * @package Whups + */ +class DateCriterionForm extends Horde_Form { + + function DateCriterionForm(&$vars) + { + parent::Horde_Form($vars, $vars->get('edit') ? _("Edit Date Criterion") : _("Add Date Criterion")); + + $this->addHidden('', 'edit', 'boolean', false); + + $this->addVariable(_("Created from"), 'ticket_timestamp[from]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + $this->addVariable(_("Created to"), 'ticket_timestamp[to]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + + $this->addVariable(_("Updated from"), 'date_updated[from]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + $this->addVariable(_("Updated to"), 'date_updated[to]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + + $this->addVariable(_("Resolved from"), 'date_resolved[from]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + $this->addVariable(_("Resolved to"), 'date_resolved[to]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + + $this->addVariable(_("Assigned from"), 'date_assigned[from]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + $this->addVariable(_("Assigned to"), 'date_assigned[to]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + + $this->addVariable(_("Due from"), 'ticket_due[from]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + $this->addVariable(_("Due to"), 'ticket_due[to]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + } + + function execute(&$vars) + { + $path = $vars->get('path'); + $parent = false; + + $keys = array(CRITERION_TIMESTAMP => 'ticket_timestamp', + CRITERION_UPDATED => 'date_updated', + CRITERION_RESOLVED => 'date_resolved', + CRITERION_ASSIGNED => 'date_assigned', + CRITERION_DUE => 'ticket_due'); + + foreach ($keys as $key_id => $key_name) { + $date = $vars->get($key_name . '[from]'); + if (!empty($date['month'])) { + if (!$parent) { + $path = $GLOBALS['whups_query']->insertBranch($path, QUERY_TYPE_AND); + $parent = true; + } + $date = mktime(0, 0, 0, $date['month'], $date['day'], $date['year']); + $GLOBALS['whups_query']->insertCriterion($path, $key_id, null, OPERATOR_GREATER, $date); + } + $date = $vars->get($key_name . '[to]'); + if (!empty($date['month'])) { + if (!$parent) { + $path = $GLOBALS['whups_query']->insertBranch($path, QUERY_TYPE_AND); + $parent = true; + } + $date = mktime(0, 0, 0, $date['month'], $date['day'], $date['year']); + $GLOBALS['whups_query']->insertCriterion($path, $key_id, null, OPERATOR_LESS, $date); + } + } + + $this->unsetVars($vars); + } + +} + +/** + * @package Whups + */ +class ChooseQueryNameForSaveForm extends Horde_Form { + + function ChooseQueryNameForSaveForm(&$vars) + { + parent::Horde_Form($vars, _("Save Query")); + $this->setButtons(_("Save")); + + $v = &$this->addVariable(_("Query Name"), 'name', 'text', true); + $v->setDefault($GLOBALS['whups_query']->name); + $v = &$this->addVariable(_("Query Slug"), 'slug', 'text', false); + $v->setDefault($GLOBALS['whups_query']->slug); + } + + function execute(&$vars) + { + $GLOBALS['whups_query']->name = $vars->get('name'); + $GLOBALS['whups_query']->slug = $vars->get('slug'); + $result = $GLOBALS['whups_query']->save(); + + $this->unsetVars($vars); + } + +} + +/** + * @package Whups + */ +class ChooseQueryNameForLoadForm extends Horde_Form { + + function ChooseQueryNameForLoadForm(&$vars) + { + parent::Horde_Form($vars, _("Load Query")); + + $qManager = new Whups_QueryManager(); + $qParams = $qManager->listQueries(Horde_Auth::getAuth()); + if (count($qParams)) { + $qType = 'enum'; + } else { + $qType = 'invalid'; + $qParams = _("You have no saved queries."); + } + + $this->addVariable(_("Name"), 'name', $qType, true, false, null, array($qParams)); + } + + function execute(&$vars) + { + $qManager = new Whups_QueryManager(); + $query = $qManager->getQuery($vars->get('name')); + if (is_a($query, 'PEAR_Error')) { + $GLOBALS['notification']->push(sprintf(_("The query couldn't be loaded:"), $query->getMessage()), 'horde.error'); + } else { + $GLOBALS['whups_query'] = $query; + } + + $this->unsetVars($vars); + } + +} + +/** + * @package Whups + */ +class DeleteQueryForm extends Horde_Form { + + function DeleteQueryForm(&$vars) + { + parent::Horde_Form($vars, _("Delete Query?")); + + $yesno = array(array(0 => _("No"), 1 => _("Yes"))); + $this->addVariable(_("Really delete this query? This operation is not undoable."), 'yesno', 'enum', true, false, null, $yesno); + } + + function execute(&$vars) + { + global $notification; + + if ($vars->get('yesno')) { + if (!$GLOBALS['whups_query']->hasPermission(Horde_Auth::getAuth(), Horde_Perms::DELETE)) { + $notifications->push(sprintf(_("Permission denied.")), 'horde.error'); + } else { + $result = $GLOBALS['whups_query']->delete(); + if (is_a($result, 'PEAR_Error')) { + $notification->push(sprintf(_("The query \"%s\" couldn't be deleted: %s"), $GLOBALS['whups_query']->name, $result->getMessage()), 'horde.error'); + } else { + $notification->push(sprintf(_("The query \"%s\" has been deleted."), $GLOBALS['whups_query']->name), 'horde.success'); + $qManager = new Whups_QueryManager(); + unset($GLOBALS['whups_query']); + $GLOBALS['whups_query'] = $qManager->newQuery(); + } + } + } + + $this->unsetVars($vars); + } + +} diff --git a/whups/lib/Forms/QueryParameterForm.php b/whups/lib/Forms/QueryParameterForm.php new file mode 100644 index 000000000..dd3703f17 --- /dev/null +++ b/whups/lib/Forms/QueryParameterForm.php @@ -0,0 +1,26 @@ +parameters as $name) { + $this->addVariable($name, $name, 'text', true); + } + } + +} diff --git a/whups/lib/Forms/Search.php b/whups/lib/Forms/Search.php new file mode 100644 index 000000000..65a5ddd0b --- /dev/null +++ b/whups/lib/Forms/Search.php @@ -0,0 +1,101 @@ + + * @package Whups + */ +class SearchForm extends Horde_Form { + + var $_useFormToken = false; + + function SearchForm(&$vars) + { + parent::Horde_Form($vars); + + $this->setButtons(true); + $this->appendButtons(_("Save as Query")); + $this->setSection('attributes', _("Attributes")); + + $queues = Whups::permissionsFilter($GLOBALS['whups_driver']->getQueues(), 'queue', Horde_Perms::READ); + $queue_count = count($queues); + $types = array(); + if ($queue_count == 1) { + $types = $GLOBALS['whups_driver']->getTypes(key($queues)); + $this->addHidden('', 'queue', 'int', false, true); + $vars->set('queue', key($queues)); + } else { + if ($queue_count > 0) { + $modtype = 'enum'; + $queue_params = array(array('0' => _("Any")) + $queues); + foreach ($queues as $queueID => $name) { + $types = $types + $GLOBALS['whups_driver']->getTypes($queueID); + } + } else { + $modtype = 'invalid'; + $queue_params = array(_("There are no queues which you can search.")); + } + $this->addVariable(_("Queue"), 'queue', $modtype, false, false, null, $queue_params); + } + + $this->addVariable(_("Summary like"), 'summary', 'text', false); + + $states = array(); + foreach ($types as $typeID => $typeName) { + $states = $GLOBALS['whups_driver']->getAllStateInfo($typeID); + $list = array(); + foreach ($states as $state) { + $list[$state['state_id']] = $state['state_name']; + } + $this->addVariable($typeName, "states[$typeID]", 'multienum', false, false, null, array ($list, 4)); + } + + $this->setSection('dates', _("Dates")); + $this->addVariable(_("Created from"), 'ticket_timestamp[from]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + $this->addVariable(_("to"), 'ticket_timestamp[to]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + $this->addVariable(_("Updated from"), 'date_updated[from]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + $this->addVariable(_("to"), 'date_updated[to]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + $this->addVariable(_("Resolved from"), 'date_resolved[from]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + $this->addVariable(_("to"), 'date_resolved[to]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + $this->addVariable(_("Assigned from"), 'date_assigned[from]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + $this->addVariable(_("to"), 'date_assigned[to]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + $this->addVariable(_("Due from"), 'ticket_due[from]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + $this->addVariable(_("to"), 'ticket_due[to]', 'monthdayyear', false, false, null, array(date('Y') - 10)); + } + + /** + * Fetch the field values of the submitted form. + * + * @param Horde_Variables $vars A Horde_Variables instance, optional since Horde 3.2. + * @param array $info Array to be filled with the submitted field + * values. + */ + function getInfo($vars, &$info) + { + parent::getInfo($vars, $info); + + if (empty($info['queue'])) { + $info['queue'] = array_keys(Whups::permissionsFilter($GLOBALS['whups_driver']->getQueues(), 'queue', Horde_Perms::READ, Horde_Auth::getAuth(), Horde_Auth::getAuth())); + } + + if (empty($info['states'])) { + unset($info['states']); + } + + // ... if we were given a set of states + if (isset($info['states'])) { + // collect them into a list of state_id + $info['state_id'] = array(); + foreach ($info['states'] as $states) { + if (isset($states)) { + // because null === array_merge(array, null) + $info['state_id'] = array_merge($info['state_id'], $states); + } + } + unset($info['states']); + } + } + +} diff --git a/whups/lib/Forms/VarRenderer.php b/whups/lib/Forms/VarRenderer.php new file mode 100644 index 000000000..7823e8291 --- /dev/null +++ b/whups/lib/Forms/VarRenderer.php @@ -0,0 +1,43 @@ + + * @package Horde_UI + */ + +/** + * The Horde_UI_VarRenderer_whups class provides additional methods for + * rendering Horde_Form_Type_whups_email fields. + * + * @author Jan Schneider + * @package Horde_UI + */ +class Horde_Ui_VarRenderer_whups extends Horde_Ui_VarRenderer_Html { + + function _renderVarInput_whups_email($form, &$var, &$vars) + { + $name = $var->getVarName(); + + $imple = Horde_Ajax_Imple::factory(array('whups', 'ContactAutoCompleter'), array('triggerId' => $name)); + $imple->attach(); + return sprintf('', + $name, + $name, + @htmlspecialchars($var->getValue($vars)), + $this->_getActionScripts($form, $var)) + . ''; + } + +} diff --git a/whups/lib/MIME/Viewer/Zip.php b/whups/lib/MIME/Viewer/Zip.php new file mode 100644 index 000000000..7477ce38a --- /dev/null +++ b/whups/lib/MIME/Viewer/Zip.php @@ -0,0 +1,96 @@ + + * @author Michael Slusarz + * @author Jan Schneider + * @package Horde_MIME_Viewer + */ +class Whups_Horde_Mime_Viewer_zip extends Horde_Mime_Viewer_Zip +{ + /** + * Return the full rendered version of the Horde_Mime_Part object. + * + * URL parameters used by this function: + *
+     * 'zip_attachment' - (integer) The ZIP attachment to download.
+     * 
+ * + * @return array See Horde_Mime_Viewer_Driver::render(). + */ + protected function _render() + { + if (!Horde_Util::getFormData('zip_attachment')) { + $this->_callback = array(&$this, '_WhupsCallback'); + return parent::_render(); + } + + /* Send the requested file. Its position in the zip archive is located + * in 'zip_attachment'. */ + $data = $this->_mimepart->getContents(); + $zip = Horde_Compress::factory('zip'); + $fileKey = Horde_Util::getFormData('zip_attachment') - 1; + $zipInfo = $zip->decompress($data, array('action' => Horde_Compress_Zip::ZIP_LIST)); + + /* Verify that the requested file exists. */ + if (isset($zipInfo[$fileKey])) { + $text = $zip->decompress($data, array('action' => Horde_Compress_Zip::ZIP_DATA, 'info' => &$zipInfo, 'key' => $fileKey)); + if (!empty($text)) { + return array( + $this->_mimepart->getMimeId() => array( + 'data' => $text, + 'name' => basename($zipInfo[$fileKey]['name']), + 'status' => array(), + 'type' => 'application/octet-stream' + ) + ); + } + } + // TODO: Error reporting + return array(); + } + + /** + * Return the rendered inline version of the Horde_Mime_Part object. + * + * @return array See Horde_Mime_Viewer_Driver::render(). + */ + protected function _renderInline() + { + $this->_callback = array(&$this, '_WhupsCallback'); + return parent::_renderInline(); + } + + /** + * The function to use as a callback to _toHTML(). + * + * @param integer $key The position of the file in the zip archive. + * @param array $val The information array for the archived file. + * + * @return string The content-type of the output. + */ + protected function _WhupsCallback($key, $val) + { + $name = preg_replace('/( )+$/', '', $val['name']); + + if (!empty($val['size']) && (strstr($val['attr'], 'D') === false) && + ((($val['method'] == 0x8) && Horde_Util::extensionExists('zlib')) || + ($val['method'] == 0x0))) { + $mime_part = $this->_mimepart; + $mime_part->setName(basename($name)); + $val['name'] = str_replace($name, Horde::link(Horde_Util::addParameter(Horde::applicationUrl('view.php'), array('actionID' => 'view_file', 'type' => Horde_Util::getFormData('type'), 'file' => Horde_Util::getFormData('file'), 'ticket' => Horde_Util::getFormData('ticket'), 'zip_attachment' => $key + 1))) . $name . '', $val['name']); + } + + return $val; + } + +} diff --git a/whups/lib/Mail.php b/whups/lib/Mail.php new file mode 100644 index 000000000..3b4ed685c --- /dev/null +++ b/whups/lib/Mail.php @@ -0,0 +1,235 @@ + + * @author Jan Schneider + * @package Whups + */ +class Whups_Mail { + + /** + * Parse a MIME message and create a new ticket. + * + * @param string $text This is the full text of the MIME message. + * @param array $info An array of information for the new ticket. + * This should include: + * - 'queue' => queue id + * - 'type' => type id + * - 'state' => state id + * - 'priority' => priority id + * - 'ticket' => ticket id (prevents creation + * of new tickets) + * @param string $auth_user This will be the Horde user that creates the + * ticket. If null, we will try to deduce from + * the message's From: header. We do NOT default + * to Horde_Auth::getAuth(). + * + * @return Whups_Ticket | PEAR_Error Ticket or Error object. + */ + static public function processMail($text, $info, $auth_user = null) + { + global $conf; + + $message = Horde_Mime_Part::parseMessage($text); + + if (preg_match("/^(.*?)\r?\n\r?\n/s", $text, $matches)) { + $hdrText = $matches[1]; + } else { + $hdrText = $text; + } + $headers = Horde_Mime_Headers::parseHeaders($hdrText); + + // If this message was generated by Whups, don't process it. + if ($headers->getValue('X-Whups-Generated')) { + return true; + } + + // Use the message subject as the ticket summary. + $info['summary'] = $headers->getValue('subject'); + $from = $headers->getValue('from'); + + // Format the message into a comment. + $comment = _("Received message:") . "\n\n"; + if (!empty($GLOBALS['conf']['mail']['include_headers'])) { + foreach ($headers->toArray(array('nowrap' => true)) as $name => $vals) { + if (!in_array(strtolower($name), array('subject', 'from', 'to', 'cc', 'date'))) { + if (is_array($vals)) { + foreach ($vals as $val) { + $comment .= $name . ': ' . $val . "\n"; + } + } else { + $comment .= $name . ': ' . $vals . "\n"; + } + } + } + + $comment .= "\n"; + } + + // Look for the body part. + $body_id = $message->findBody(); + if ($body_id) { + $part = $message->getPart($body_id); + $comment .= Horde_String::convertCharset($part->transferDecode(), $part->getCharset()); + } else { + $comment .= _("[ Could not render body of message. ]"); + } + + $info['comment'] = $comment . "\n"; + + // Try to determine the Horde user for creating the ticket. + if (empty($auth_user)) { + $auth_user = self::_findAuthUser(Horde_Mime_Address::bareAddress($from)); + } + $author = $auth_user; + + if (empty($auth_user) && !empty($info['default_auth'])) { + $auth_user = $info['default_auth']; + if (!empty($from)) { + $info['user_email'] = $from; + } + } + + if (empty($auth_user) && !empty($conf['mail']['username'])) { + $auth_user = $conf['mail']['username']; + if (!empty($from)) { + $info['user_email'] = $from; + } + } + + // Authenticate as the correct Horde user. + if (!empty($auth_user) && $auth_user != Horde_Auth::getAuth()) { + Horde_Auth::setAuth($auth_user, array()); + } + + // See if we can match this message to an existing ticket. + if ($ticket = self::_findTicket($info)) { + $ticket->change('comment', $info['comment']); + $ticket->change('comment-email', $from); + $result = $ticket->commit($author); + if (is_a($result, 'PEAR_Error')) { + $result->addUserInfo(_("current user:") . ' ' . $auth_user); + return $result; + } + } elseif (!empty($info['ticket'])) { + // Didn't match an existing ticket though a ticket number had been + // specified. + return PEAR::raiseError(sprintf(_("Could not find ticket \"%s\"."), + $info['ticket'])); + } else { + if (!empty($info['guess-queue'])) { + // Try to guess the queue name for the new ticket from the + // message subject. + $queues = $GLOBALS['whups_driver']->getQueues(); + foreach ($queues as $queueId => $queueName) { + if (preg_match('/\b' . preg_quote($queueName, '/') . '\b/i', + $info['summary'])) { + $info['queue'] = $queueId; + break; + } + } + } + // Create a new ticket. + $ticket = Whups_Ticket::newTicket($info, $author); + if (is_a($ticket, 'PEAR_Error')) { + $ticket->addUserInfo(_("current user:") . ' ' . $auth_user); + return $ticket; + } + } + + // Extract attachments. + $dl_list = array_slice(array_keys($message->contentTypeMap()), 1); + foreach ($dl_list as $key) { + if (strpos($key, '.', 1) === false) { + $part = $message->getPart($key); + $part->transferDecodeContents(); + $tmp_name = Horde::getTempFile('whups'); + $fp = @fopen($tmp_name, 'wb'); + if (!$fp) { + Horde::logMessage(sprintf('Cannot open file %s for writing.', + $tmp_name), + __FILE__, __LINE__, PEAR_LOG_ERR); + return $ticket; + } + fwrite($fp, $part->getContents()); + fclose($fp); + $part_name = $part->getName(true); + $ticket->change('attachment', array('name' => $part_name, + 'tmp_name' => $tmp_name)); + $result = $ticket->commit(); + if (is_a($result, 'PEAR_Error')) { + $result->addUserInfo(_("current user:") . ' ' . $auth_user); + return $result; + } + } + } + } + + /** + * Returns the ticket number matching the provided information. + * + * @param array $info A hash with ticket information. + * + * @return integer The ticket number if has been passed in the subject, + * false otherwise. + */ + static protected function _findTicket($info) + { + if (!empty($info['ticket'])) { + $ticketnum = $info['ticket']; + } elseif (preg_match('/\[[\w\s]*#(\d+)\]/', $info['summary'], $matches)) { + $ticketnum = $matches[1]; + } else { + return false; + } + + $ticket = Whups_Ticket::makeTicket($ticketnum); + if (is_a($ticket, 'PEAR_Error')) { + return false; + } + + return $ticket; + } + + /** + * Searches the From: header for an email address contained in one + * of our users' identities. + * + * @param string $from The From address. + * + * @return string The Horde user name that matches the headers' From: + * address or null if the users can't be listed or no + * match has been found. + */ + static protected function _findAuthUser($from) + { + global $conf; + + require_once 'Horde/Identity.php'; + + $params = Horde::getDriverConfig('auth', $conf['auth']['driver']); + $auth = Horde_Auth::singleton($conf['auth']['driver'], $params); + if ($auth->hasCapability('list')) { + foreach ($auth->listUsers() as $user) { + $identity = &Identity::singleton('none', $user); + $addrs = $identity->getAll('from_addr'); + foreach ($addrs as $addr) { + if (strcasecmp($from, $addr) == 0) { + return $user; + } + } + } + } + + return false; + } + +} diff --git a/whups/lib/Query.php b/whups/lib/Query.php new file mode 100644 index 000000000..733bedc3e --- /dev/null +++ b/whups/lib/Query.php @@ -0,0 +1,1058 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + * + * @author Robert E. Coyle + * @author Jan Schneider + * @package Whups + */ + +/** Horde_Share */ +require_once 'Horde/Share.php'; + +/** Horde_Form_Action */ +require_once 'Horde/Form/Action.php'; + +/** Mode types. */ +define('QUERY_TYPE_AND', 1); +define('QUERY_TYPE_OR', 2); +define('QUERY_TYPE_NOT', 3); +define('QUERY_TYPE_CRITERION', 4); + +/** Criterion types. */ +define('CRITERION_ID', 1); +define('CRITERION_QUEUE', 2); +define('CRITERION_TYPE', 3); +define('CRITERION_STATE', 4); +define('CRITERION_PRIORITY', 5); +define('CRITERION_OWNERS', 7); +define('CRITERION_REQUESTER', 8); +define('CRITERION_GROUPS', 9); +define('CRITERION_ADDED_COMMENT', 11); +define('CRITERION_COMMENT', 12); +define('CRITERION_SUMMARY', 13); +define('CRITERION_ATTRIBUTE', 14); +define('CRITERION_VERSION', 15); +define('CRITERION_TIMESTAMP', 16); +define('CRITERION_UPDATED', 17); +define('CRITERION_RESOLVED', 18); +define('CRITERION_ASSIGNED', 19); +define('CRITERION_DUE', 20); + +/** Operators for integer fields. */ +define('OPERATOR_GREATER', 1); +define('OPERATOR_LESS', 2); +define('OPERATOR_EQUAL', 3); + +/** Operators for text fields. */ +define('OPERATOR_CI_SUBSTRING', 4); +define('OPERATOR_CS_SUBSTRING', 5); +define('OPERATOR_WORD', 6); +define('OPERATOR_PATTERN', 7); + +/** + * array( + * 'type' => QUERY_TYPE_... + * 'children' => array(...) unless type == QUERY_TYPE_CRITERION + * 'criterion' => CRITERION_... if type == QUERY_TYPE_CRITERION + * 'operator' => OPERATOR_... if type == QUERY_TYPE_CRITERION + * 'value' => other argument to operator of criterion + */ + +/** + * @package Whups + */ +class Whups_Query { + + /** + * @var Whups_QueryManager + */ + var $_qManager; + + /** + * Query id. + * + * @var integer + */ + var $id; + + /** + * The full name of the query. + * + * @var string + */ + var $name; + + /** + * The query slug (short name). + * + * @var string + */ + var $slug; + + /** + * @var array + */ + var $query = array('type' => QUERY_TYPE_AND, + 'children' => array()); + + /** + * @var array + */ + var $parameters = array(); + + /** + * Constructor + */ + function Whups_Query(&$qManager, $qDetails = array()) + { + $this->_qManager = &$qManager; + if (isset($qDetails['query_id'])) { + $this->id = $qDetails['query_id']; + } + if (isset($qDetails['query_name'])) { + $this->name = $qDetails['query_name']; + } + if (isset($qDetails['query_slug'])) { + $this->slug = $qDetails['query_slug']; + } + if (isset($qDetails['query_object'])) { + $this->query = @unserialize($qDetails['query_object']); + } + if (isset($qDetails['query_parameters'])) { + $this->parameters = @unserialize($qDetails['query_parameters']); + } + } + + /** + * @static + */ + function pathToString(&$path) + { + return implode(',', $path); + } + + /** + * @static + */ + function stringToPath($pathstring) + { + if (!strlen($pathstring)) { + return array(); + } + + return explode(',', $pathstring); + } + + /** + * Returns human readable descriptions of all operator types. + * + * @static + * + * @return array Hash with operator types and descriptions. + */ + function textOperators() + { + return array( + OPERATOR_EQUAL => _("Exact Match"), + OPERATOR_CI_SUBSTRING => _("Case Insensitive Substring"), + // OPERATOR_CS_SUBSTRING => _("Case Sensitive Substring"), + OPERATOR_WORD => _("Match Word"), + OPERATOR_PATTERN => _("Match Pattern")); + } + + /** + * Checks to see if a user has a given permission. + * + * @param string $userid The userid of the user. + * @param integer $permission A Horde_Perms::* constant to test for. + * @param string $creator The creator of the event. + * + * @return boolean Whether or not $userid has $permission. + */ + function hasPermission($userid, $permission, $creator = null) + { + return $this->_qManager->hasPermission($this->id, $userid, $permission, $creator); + } + + /** + * Saves any changes to this object to the backend + * permanently. New objects are added instead. + * + * @return boolean|PEAR_Error PEAR_Error on failure. + */ + function save() + { + return $this->_qManager->save($this); + } + + /** + * Delete this object from the backend permanently. + * + * @return boolean|PEAR_Error PEAR_Error on failure. + */ + function delete() + { + return $this->_qManager->delete($this); + } + + /** + * Tab operations for this query. + */ + function getTabs($vars) + { + // Create a few variables that are reused. + $queryurl = Horde::applicationUrl('query/index.php'); + $edit = $this->hasPermission(Horde_Auth::getAuth(), Horde_Perms::EDIT); + $delete = $this->hasPermission(Horde_Auth::getAuth(), Horde_Perms::DELETE); + + $tabs = new Horde_Ui_Tabs('action', $vars); + $tabs->addTab(_("Ne_w Query"), $queryurl, 'new'); + if (!$this->id || $edit) { + $tabs->addTab(_("_Edit Query"), $queryurl, 'edit'); + } + if ($this->id && $edit && empty($GLOBALS['conf']['share']['no_sharing'])) { + Horde::addScriptFile('popup.js', 'horde', true); + + $permsurl = $GLOBALS['registry']->get('webroot', 'horde') . '/services/shares/edit.php'; + $permsurl = Horde_Util::addParameter($permsurl, array('app' => 'whups', + 'cid' => $this->id)); + $tabs->addTab(_("Edit _Permissions"), $permsurl, array('tabname' => 'perms', + 'onclick' => 'popup(\'' . $permsurl . '\'); return false;', + 'target' => '_blank')); + } + $tabs->addTab(_("E_xecute Query"), Horde::applicationUrl('query/run.php'), 'run'); + $tabs->addTab(_("_Load Query"), $queryurl, 'load'); + if ((!$this->id && Horde_Auth::getAuth()) || + ($this->id && $edit)) { + $tabs->addTab(_("Sa_ve Query"), $queryurl, 'save'); + } + if ($this->id && $delete) { + $tabs->addTab(_("_Delete Query"), $queryurl, 'delete'); + } + + return $tabs; + } + + /** + * Operations. + */ + + function pathToForm(&$vars) + { + $path = Whups_Query::stringToPath($vars->get('path')); + $parent = null; + $qobj = $this->query; + + for ($i = 0, $c = count($path); $i < $c; $i++) { + $parent = $qobj; + $qobj = $qobj['children'][$path[$i]]; + } + + if ($qobj['type'] != QUERY_TYPE_CRITERION) { + // Search for any criteria that have been combined automatically + // with an AND or OR. + switch ($qobj['type']) { + case QUERY_TYPE_OR: + // Search for multiple ids. + $criteria = array(); + foreach ($qobj['children'] as $child) { + if ($child['type'] != QUERY_TYPE_CRITERION || + $child['criterion'] != CRITERION_ID) { + $criteria = false; + break; + } + $criteria[] = $child['value']; + } + if ($criteria) { + $vars->set('id', implode(',', $criteria)); + return 'props'; + } + + // Search for user criteria. + $criteria = array(); + $operator = $value = null; + foreach ($qobj['children'] as $child) { + if ($child['type'] != QUERY_TYPE_CRITERION || + ($child['criterion'] != CRITERION_OWNERS && + $child['criterion'] != CRITERION_REQUESTER && + $child['criterion'] != CRITERION_ADDED_COMMENT) || + (isset($operator) && $operator != $child['operator']) || + (isset($value) && $value != $child['value'])) { + $criteria = false; + break; + } + $criteria[] = $child['criterion']; + $operator = $child['operator']; + $value = $child['value']; + } + if ($criteria) { + $vars->set('user', $value); + $vars->set('operator', $operator); + foreach ($criteria as $criterion) { + switch ($criterion) { + case CRITERION_OWNERS: + $vars->set('owners', true); + break; + case CRITERION_REQUESTER: + $vars->set('requester', true); + break; + case CRITERION_ADDED_COMMENT: + $vars->set('comments', true); + break; + } + } + return 'user'; + } + + // Search for text criteria. + $criteria = array(); + $operator = $value = null; + foreach ($qobj['children'] as $child) { + if ($child['type'] != QUERY_TYPE_CRITERION || + ($child['criterion'] != CRITERION_COMMENT && + $child['criterion'] != CRITERION_SUMMARY) || + (isset($operator) && $operator != $child['operator']) || + (isset($value) && $value != $child['value'])) { + $criteria = false; + break; + } + $criteria[] = $child['criterion']; + $operator = $child['operator']; + $value = $child['value']; + } + if ($criteria) { + $vars->set('text', $value); + $vars->set('operator', $operator); + foreach ($criteria as $criterion) { + if ($criterion == CRITERION_COMMENT) { + $vars->set('comments', true); + } elseif ($criterion == CRITERION_SUMMARY) { + $vars->set('summary', true); + } + } + return 'text'; + } + + // Search for attributes. + $attribs = array_keys($GLOBALS['whups_driver']->getAttributesForType()); + $criteria = array(); + $operator = $value = null; + foreach ($qobj['children'] as $child) { + if ($child['type'] != QUERY_TYPE_CRITERION || + $child['criterion'] != CRITERION_ATTRIBUTE || + (isset($operator) && $operator != $child['operator']) || + (isset($value) && $value != $child['value']) || + !in_array($child['cvalue'], $attribs)) { + $criteria = false; + break; + } + $criteria[] = $child['cvalue']; + $operator = $child['operator']; + $value = $child['value']; + } + if ($criteria) { + $vars->set('text', $value); + $vars->set('operator', $operator); + foreach ($criteria as $criterion) { + $vars->set('a' . $criterion, true); + } + return 'attribs'; + } + break; + + case QUERY_TYPE_AND: + // Search for date criteria. + $criteria = false; + foreach ($qobj['children'] as $child) { + if ($child['type'] != QUERY_TYPE_CRITERION || + ($child['criterion'] != CRITERION_TIMESTAMP && + $child['criterion'] != CRITERION_UPDATED && + $child['criterion'] != CRITERION_RESOLVED && + $child['criterion'] != CRITERION_ASSIGNED && + $child['criterion'] != CRITERION_DUE)) { + $criteria = false; + break; + } + $criteria = true; + } + if ($criteria) { + foreach ($qobj['children'] as $child) { + switch ($child['criterion'] . $child['operator']) { + case CRITERION_TIMESTAMP . OPERATOR_GREATER: + $vars->set('ticket_timestamp[from]', $child['value']); + break; + case CRITERION_TIMESTAMP . OPERATOR_LESS: + $vars->set('ticket_timestamp[to]', $child['value']); + break; + case CRITERION_UPDATED . OPERATOR_GREATER: + $vars->set('date_updated[from]', $child['value']); + break; + case CRITERION_UPDATED . OPERATOR_LESS: + $vars->set('date_updated[to]', $child['value']); + break; + case CRITERION_RESOLVED . OPERATOR_GREATER: + $vars->set('date_resolved[from]', $child['value']); + break; + case CRITERION_RESOLVED . OPERATOR_LESS: + $vars->set('date_resolved[to]', $child['value']); + break; + case CRITERION_ASSIGNED . OPERATOR_GREATER: + $vars->set('date_assigned[from]', $child['value']); + break; + case CRITERION_ASSIGNED . OPERATOR_LESS: + $vars->set('date_assigned[to]', $child['value']); + break; + case CRITERION_DUE . OPERATOR_GREATER: + $vars->set('ticket_due[from]', $child['value']); + break; + case CRITERION_DUE . OPERATOR_LESS: + $vars->set('ticket_due[to]', $child['value']); + break; + } + } + return 'date'; + } + + // Search for version criterion. + if (count($qobj['children']) == 2 && + $qobj['children'][0]['type'] == QUERY_TYPE_CRITERION && + $qobj['children'][0]['criterion'] == CRITERION_QUEUE && + $qobj['children'][1]['type'] == QUERY_TYPE_CRITERION && + $qobj['children'][1]['criterion'] == CRITERION_VERSION) { + $vars->set('queue', $qobj['children'][0]['value']); + $vars->set('version', $qobj['children'][1]['value']); + return 'props'; + } + break; + } + return PEAR::raiseError(_("This query element cannot be edited.")); + } + + switch ($qobj['criterion']) { + case CRITERION_ID: + $multiple = false; + if ($parent && $parent['type'] == QUERY_TYPE_OR) { + $multiple = array(); + foreach ($parent['children'] as $child) { + if ($child['type'] != QUERY_TYPE_CRITERION || + $child['criterion'] != CRITERION_ID) { + $multiple = false; + break; + } + $multiple[] = $child['value']; + } + } + if ($multiple) { + array_pop($path); + $vars->set('path', Whups_Query::pathToString($path)); + $vars->set('id', implode(',', $multiple)); + } else { + $vars->set('id', $qobj['value']); + } + return 'props'; + + case CRITERION_QUEUE: + if ($parent && $parent['type'] == QUERY_TYPE_AND && + count($parent['children']) == 2 && + $parent['children'][1]['type'] == QUERY_TYPE_CRITERION && + $parent['children'][1]['criterion'] == CRITERION_VERSION) { + array_pop($path); + $vars->set('path', Whups_Query::pathToString($path)); + $vars->set('version', $parent['children'][1]['value']); + } + $vars->set('queue', $qobj['value']); + return 'props'; + + case CRITERION_VERSION: + array_pop($path); + $vars->set('path', Whups_Query::pathToString($path)); + $vars->set('queue', $parent['children'][0]['value']); + $vars->set('version', $qobj['value']); + return 'props'; + + case CRITERION_TYPE: + $vars->set('ttype', $qobj['value']); + return 'props'; + + case CRITERION_STATE: + $vars->set('state', $qobj['value']); + return 'props'; + + case CRITERION_PRIORITY: + $vars->set('priority', $qobj['value']); + return 'props'; + + case CRITERION_TIMESTAMP: + case CRITERION_UPDATED: + case CRITERION_RESOLVED: + case CRITERION_ASSIGNED: + case CRITERION_DUE: + $criteria = false; + if ($parent && $parent['type'] == QUERY_TYPE_AND) { + foreach ($parent['children'] as $child) { + if ($child['type'] != QUERY_TYPE_CRITERION || + ($child['criterion'] != CRITERION_TIMESTAMP && + $child['criterion'] != CRITERION_UPDATED && + $child['criterion'] != CRITERION_RESOLVED && + $child['criterion'] != CRITERION_ASSIGNED && + $child['criterion'] != CRITERION_DUE)) { + $criteria = false; + break; + } + $criteria = true; + } + } + if ($criteria) { + array_pop($path); + $vars->set('path', Whups_Query::pathToString($path)); + foreach ($parent['children'] as $child) { + switch ($child['criterion'] . $child['operator']) { + case CRITERION_TIMESTAMP . OPERATOR_GREATER: + $vars->set('ticket_timestamp[from]', $child['value']); + break; + case CRITERION_TIMESTAMP . OPERATOR_LESS: + $vars->set('ticket_timestamp[to]', $child['value']); + break; + case CRITERION_UPDATED . OPERATOR_GREATER: + $vars->set('date_updated[from]', $child['value']); + break; + case CRITERION_UPDATED . OPERATOR_LESS: + $vars->set('date_updated[to]', $child['value']); + break; + case CRITERION_RESOLVED . OPERATOR_GREATER: + $vars->set('date_resolved[from]', $child['value']); + break; + case CRITERION_RESOLVED . OPERATOR_LESS: + $vars->set('date_resolved[to]', $child['value']); + break; + case CRITERION_ASSIGNED . OPERATOR_GREATER: + $vars->set('date_assigned[from]', $child['value']); + break; + case CRITERION_ASSIGNED . OPERATOR_LESS: + $vars->set('date_assigned[to]', $child['value']); + break; + case CRITERION_DUE . OPERATOR_GREATER: + $vars->set('ticket_due[from]', $child['value']); + break; + case CRITERION_DUE . OPERATOR_LESS: + $vars->set('ticket_due[to]', $child['value']); + break; + } + } + } + return 'date'; + + case CRITERION_OWNERS: + case CRITERION_REQUESTER: + case CRITERION_ADDED_COMMENT: + $criteria = false; + if ($parent && $parent['type'] == QUERY_TYPE_OR) { + $criteria = array(); + foreach ($parent['children'] as $child) { + if ($child['type'] != QUERY_TYPE_CRITERION || + !in_array($child['criterion'], array(CRITERION_OWNERS, CRITERION_REQUESTER, CRITERION_ADDED_COMMENT))) { + $criteria = false; + break; + } + $criteria[] = $child['criterion']; + } + if ($criteria) { + array_pop($path); + $vars->set('path', Whups_Query::pathToString($path)); + } + } + if (!$criteria) { + $criteria = array($qobj['criterion']); + } + $vars->set('user', $qobj['value']); + $vars->set('operator', $qobj['operator']); + foreach ($criteria as $criterion) { + switch ($criterion) { + case CRITERION_OWNERS: + $vars->set('owners', true); + break; + case CRITERION_REQUESTER: + $vars->set('requester', true); + break; + case CRITERION_ADDED_COMMENT: + $vars->set('comments', true); + break; + } + } + return 'user'; + + case CRITERION_GROUPS: + $vars->set('groups', $qobj['value']); + return 'group'; + + case CRITERION_COMMENT: + case CRITERION_SUMMARY: + $criteria = false; + if ($parent && $parent['type'] == QUERY_TYPE_OR) { + $criteria = array(); + $operator = $value = null; + foreach ($parent['children'] as $child) { + if ($child['type'] != QUERY_TYPE_CRITERION || + ($child['criterion'] != CRITERION_COMMENT && + $child['criterion'] != CRITERION_SUMMARY) || + (isset($operator) && $operator != $child['operator']) || + (isset($value) && $value != $child['value'])) { + $criteria = false; + break; + } + $criteria[] = $child['criterion']; + $operator = $child['operator']; + $value = $child['value']; + } + if ($criteria) { + array_pop($path); + $vars->set('path', Whups_Query::pathToString($path)); + } + } + if (!$criteria) { + $criteria = array($qobj['criterion']); + } + $vars->set('text', $value); + $vars->set('operator', $operator); + foreach ($criteria as $criterion) { + if ($criterion == CRITERION_COMMENT) { + $vars->set('comments', true); + } elseif ($criterion == CRITERION_SUMMARY) { + $vars->set('summary', true); + } + } + return 'text'; + + case CRITERION_ATTRIBUTE: + $attribs = array_keys($GLOBALS['whups_driver']->getAttributesForType()); + $criteria = false; + if ($parent && $parent['type'] == QUERY_TYPE_OR) { + $criteria = array(); + $operator = $value = null; + foreach ($parent['children'] as $child) { + if ($child['type'] != QUERY_TYPE_CRITERION || + $child['criterion'] != CRITERION_ATTRIBUTE || + (isset($operator) && $operator != $child['operator']) || + (isset($value) && $value != $child['value']) || + !in_array($child['cvalue'], $attribs)) { + $criteria = false; + break; + } + $criteria[] = $child['cvalue']; + $operator = $child['operator']; + $value = $child['value']; + } + if ($criteria) { + array_pop($path); + $vars->set('path', Whups_Query::pathToString($path)); + } + } + if (!$criteria) { + $criteria = array($qobj['cvalue']); + } + $vars->set('text', $value); + $vars->set('operator', $operator); + foreach ($criteria as $criterion) { + $vars->set('a' . $criterion, true); + } + return 'attribs'; + } + + return PEAR::raiseError(_("This query element cannot be edited.")); + } + + function deleteNode($pathstring) + { + $path = Whups_Query::stringToPath($pathstring); + $qobj = &$this->query; + + if (!strlen($pathstring)) { + // Deleting the root node isn't supported. + $GLOBALS['notification']->push(_("Choose New Query instead of deleting the root node."), 'horde.warning'); + return false; + } else { + $count = count($path) - 1; + for ($i = 0; $i < $count; $i++) { + $qobj = &$qobj['children'][$path[$i]]; + } + + if (!empty($qobj['children'][$path[$count]]['value']) && + $this->_getParameterName($qobj['children'][$path[$count]]['value']) !== null) { + unset($this->parameters[array_search($pn, $this->parameters)]); + } + + array_splice($qobj['children'], $path[$count], 1); + } + } + + function hoist($pathstring) + { + $path = Whups_Query::stringToPath($pathstring); + $qobj = &$this->query; + + if (!strlen($pathstring)) { + // Can't hoist the root node. + } else { + $count = count($path) - 1; + + for ($i = 0; $i < $count; $i++) { + $qobj = &$qobj['children'][$path[$i]]; + } + + $cobj = &$qobj['children'][$path[$count]]; + + // TODO: make sure we're hoisting a branch. + array_splice($qobj['children'], $path[$count], 0, $cobj['children']); + array_splice($cobj['children'], 0, count($cobj['children'])); + } + } + + function insertBranch($pathstring, $type) + { + $path = Whups_Query::stringToPath($pathstring); + $qobj = &$this->query; + + $newbranch = array( + 'type' => $type, + 'children' => array()); + + $count = count($path); + + for ($i = 0; $i < $count; $i++) { + $qobj = &$qobj['children'][$path[$i]]; + } + + if (!isset($qobj['children']) || + !is_array($qobj['children'])) { + $qobj['children'] = array(); + } + + $qobj['children'][] = $newbranch; + $path[] = count($qobj['children']) - 1; + + return Whups_Query::pathToString($path); + } + + function insertCriterion($pathstring, $criterion, $cvalue, $operator, $value) + { + $path = Whups_Query::stringToPath($pathstring); + $qobj = &$this->query; + + $value = trim($value); + if ($value[0] == '"') { + // FIXME: The last character should be '"' as well. + $value = substr($value, 1, -1); + } else { + $pn = $this->_getParameterName($value); + if ($pn !== null) { + $this->parameters[] = $pn; + } + } + + $newbranch = array( + 'type' => QUERY_TYPE_CRITERION, + 'criterion' => $criterion, + 'cvalue' => $cvalue, + 'operator' => $operator, + 'value' => $value); + + $count = count($path); + for ($i = 0; $i < $count; $i++) { + $qobj = &$qobj['children'][$path[$i]]; + } + + $qobj['children'][] = $newbranch; + } + + /** + * Top down traversal. + */ + function walk(&$obj, $method) + { + $path = array(); + $more = array(); + $this->_walk($this->query, $more, $path, $obj, $method); + } + + /** + * @access private + */ + function _walk(&$node, &$more, &$path, &$obj, $method) + { + if ($node['type'] == QUERY_TYPE_CRITERION) { + $obj->$method($more, $path, QUERY_TYPE_CRITERION, $node['criterion'], + $node['cvalue'], $node['operator'], $node['value']); + } else { + $obj->$method($more, $path, $node['type'], null, null, null, null); + } + + if (isset($node['children'])) { + $count = count($node['children']); + + for ($i = 0; $i < $count; $i++) { + $path[] = $i; + $more[] = ($i < $count - 1); + $this->_walk($node['children'][$i], $more, $path, $obj, $method); + array_pop($more); + array_pop($path); + } + } + } + + /** + * Bottom up traversal. + */ + function reduce(&$obj, $method, &$vars) + { + return $this->_reduce($this->query, $obj, $method, $vars); + } + + /** + * @access private + */ + function _reduce(&$node, &$obj, $method, &$vars) + { + $args = array(); + + if (isset($node['children'])) { + $count = count($node['children']); + + for ($i = 0; $i < $count; $i++) { + $result = $this->_reduce($node['children'][$i], $obj, $method, $vars); + $args[] = $result; + } + } + + if ($node['type'] == QUERY_TYPE_CRITERION) { + $value = $node['value']; + + $pn = $this->_getParameterName($value); + if ($pn !== null) { + $value = $vars->get($pn); + } + + $result = $obj->$method($args, QUERY_TYPE_CRITERION, $node['criterion'], + $node['cvalue'], $node['operator'], $value); + } else { + $result = $obj->$method($args, $node['type'], null, null, null, null); + } + + return $result; + } + + /** + * @access private + */ + function _getParameterName($value) + { + if (strcmp(substr($value, 0, 2), '${')) + return null; + + $pn = substr($value, 2, -1); + if (!is_string($pn)) + $pn = null; + + return $pn; + } + +} + +/** + * @package Whups + */ +class Whups_QueryManager { + + /** + * Horde_Share instance for managing shares. + * + * @var Horde_Share + */ + var $_shareManager; + + /** + * Constructor. + */ + function Whups_QueryManager() + { + $this->_shareManager = &Horde_Share::singleton('whups'); + } + + /** + * Returns a specific query identified by its id. + * + * @param integer $queryId A query id. + * + * @return Whups_Query The matching query or null if not found. + */ + function getQuery($queryId) + { + $share = $this->_shareManager->getShareById($queryId); + if (is_a($share, 'PEAR_Error')) { + return $share; + } + + return $this->_getQuery($share); + } + + /** + * Returns a specific query identified by its slug name. + * + * @param string $slug A query slug. + * + * @return Whups_Query The matching query or null if not found. + */ + function getQueryBySlug($slug) + { + $shares = $this->_shareManager->listShares(Horde_Auth::getAuth(), Horde_Perms::READ, + array('slug' => $slug)); + if (is_a($shares, 'PEAR_Error')) { + return $shares; + } + if (!count($shares)) { + return; + } + + return $this->_getQuery(reset($shares)); + } + + /** + * Builds a query object from a share object. + * + * @param Horde_Share_Object $share A share object representing a query. + * + * @return Whups_Query The query object built from the share. + */ + function _getQuery($share) + { + $queryDetails = $GLOBALS['whups_driver']->getQuery($share->getId()); + if (is_a($queryDetails, 'PEAR_Error')) { + return $queryDetails; + } + + $queryDetails['query_id'] = $share->getId(); + $queryDetails['query_name'] = $share->get('name'); + $queryDetails['query_slug'] = $share->get('slug'); + + return new Whups_Query($this, $queryDetails); + } + + /** + * Checks to see if a user has a given permission to $queryId. + * + * @param integer $queryId The query to check. + * @param string $userid The userid of the user. + * @param integer $permission A Horde_Perms::* constant to test for. + * @param string $creator The creator of the event. + * + * @return boolean Whether or not $userid has $permission. + */ + function hasPermission($queryId, $userid, $permission, $creator = null) + { + $share = $this->_shareManager->getShareById($queryId); + if (is_a($share, 'PEAR_Error')) { + // If the share doesn't exist yet, then it has open perms. + return true; + } + return $share->hasPermission($userid, $permission, $creator); + } + + /** + * List queries. + */ + function listQueries($user, $return_slugs = false) + { + $shares = $this->_shareManager->listShares($user); + if (is_a($shares, 'PEAR_Error')) { + return $shares; + } + + $queries = array(); + foreach ($shares as $share) { + $queries[$share->getId()] = $return_slugs + ? array('name' => $share->get('name'), + 'slug' => $share->get('slug')) + : $share->get('name'); + } + + return $queries; + } + + /** + */ + function newQuery() + { + return new Whups_Query($this); + } + + /** + * @param Whups_Query $query The query to save. + */ + function save($query) + { + if ($query->id) { + // Query already exists; get its share and update the name + // if necessary. + $share = $this->_shareManager->getShareById($query->id); + if (is_a($share, 'PEAR_Error')) { + // Share has an id but doesn't exist; just throw an + // error. + return $share; + } + if ($share->get('name') != $query->name || + $share->get('slug') != $query->slug) { + $share->set('name', $query->name); + $share->set('slug', $query->slug); + $share->save(); + } + } else { + // Create a new share for the query. + $share = $this->_shareManager->newShare(md5(microtime())); + $share->set('name', $query->name); + $share->set('slug', $query->slug); + $result = $this->_shareManager->addShare($share); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + $query->id = $share->getId(); + } + + // Update the queries table. + $GLOBALS['whups_driver']->saveQuery($query); + } + + /** + * @param Whups_Query $query The query to delete. + */ + function delete($query) + { + if (!$query->id) { + // Queries that aren't saved yet shouldn't be able to be deleted. + return; + } + + $share = $this->_shareManager->getShareById($query->id); + if (is_a($share, 'PEAR_Error')) { + return $share; + } + + $result = $this->_shareManager->removeShare($share); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + + $result = $GLOBALS['whups_driver']->deleteQuery($query->id); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + + return true; + } + +} diff --git a/whups/lib/Renderer/Comment.php b/whups/lib/Renderer/Comment.php new file mode 100755 index 000000000..6f8e9279f --- /dev/null +++ b/whups/lib/Renderer/Comment.php @@ -0,0 +1,221 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + * + * @package Whups + */ +class Horde_Form_Renderer_Comment extends Horde_Form_Renderer { + + var $queue = null; + var $type = null; + var $state = null; + var $priority = null; + var $due = null; + + function begin($title) + { + $this->_sectionHeader($title); + echo '
'; + } + +} diff --git a/whups/lib/Renderer/Query.php b/whups/lib/Renderer/Query.php new file mode 100644 index 000000000..6e7e3f2ef --- /dev/null +++ b/whups/lib/Renderer/Query.php @@ -0,0 +1,252 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + * + * @package Whups + */ + +/*class Horde_Form_Renderer_QuerySetCurrentType extends Horde_Form_Renderer { + + function _renderForm(&$form, &$vars, $isActive) + { + global $whups_driver; + + $droptext = Horde_UI_VarRenderer_html::selectOptions($whups_driver->getAllTypes()); + include WHUPS_TEMPLATES . '/renderer/querysetcurrenttype.inc'; + } + + function submit() + { + // noop + } +}*/ + +class Horde_Form_Renderer_Query extends Horde_Form_Renderer { + + var $ticketTypes = null; + + var $attributes = null; + + function Horde_Form_Renderer_Query() + { + $this->ticketTypes = $GLOBALS['whups_driver']->getAllTypes(); + $this->attributes = $GLOBALS['whups_driver']->getAllAttributes(); + } + + function _renderBegin() + { + echo ''; + } + + function _renderForm(&$query, &$vars, $active) + { + $this->currentRow = 1; + $this->isActive = $active; + $this->currentPath = $vars->get('path'); + + $this->_renderBegin(); + $query->walk($this, '_renderRow'); + $this->_renderEnd(); + } + + function edit(&$operations, $formname, $id) + { + include WHUPS_TEMPLATES . '/renderer/query/edit.inc'; + } + + function _renderRow(&$more, &$path, $type, $criterion, $cvalue, $operator, $value) + { + global $whups_driver, $registry; + + $this->currentRow++; + + $pathstring = Whups_Query::pathToString($path); + + $depth = count($path); + $class = "item" . ($this->currentRow % 2); + + switch ($type) { + case QUERY_TYPE_AND: $text = _("And"); break; + case QUERY_TYPE_OR: $text = _("Or"); break; + case QUERY_TYPE_NOT: $text = _("Not"); break; + case QUERY_TYPE_CRITERION: + + switch ($criterion) { + case CRITERION_ID: $text = _("Id"); break; + case CRITERION_OWNERS: $text = _("Owners"); break; + case CRITERION_GROUPS: $text = _("Groups"); break; + case CRITERION_REQUESTER: $text = _("Requester"); break; + case CRITERION_ADDED_COMMENT: $text = _("Commentor"); break; + case CRITERION_COMMENT: $text = _("Comment"); break; + case CRITERION_SUMMARY: $text = _("Summary"); break; + + case CRITERION_QUEUE: + $queue = $whups_driver->getQueue($value); + if ($queue) { + $text = _("Queue"); + $value = $queue['name']; + } + break; + + case CRITERION_VERSION: + $version = $whups_driver->getVersion($value); + if ($version) { + $text = _("Version"); + $value = $version['name']; + } + break; + + case CRITERION_TYPE: + $text = _("Type"); + $value = $whups_driver->getTypeName($value); + break; + + case CRITERION_STATE: + // The value of the following depends on the type. + $state = $whups_driver->getState($value); + if ($state && isset($this->ticketTypes[$state['type']])) { + $text = '[' . $this->ticketTypes[$state['type']] . '] ' . + _("State"); + $value = $state['name']; + } + break; + + case CRITERION_PRIORITY: + $state = $whups_driver->getPriority($value); + $text = '[' . $this->ticketTypes[$state['type']] . '] ' . + _("Priority"); + $value = $state['name']; + break; + + case CRITERION_ATTRIBUTE: + // The value of the following depends on the type. + $aname = $whups_driver->getAttributeName($cvalue); + $type = $this->attributes[$cvalue]['type_id']; + $text = ''; + if (isset($this->ticketTypes[$type])) { + $text = '[' . $this->ticketTypes[$type] . '] '; + } + $text .= sprintf("Attribute \"%s\"", $aname); + break; + + case CRITERION_TIMESTAMP: + $text = _("Created"); + $value = strftime($GLOBALS['prefs']->getValue('report_time_format'), $value); + break; + + case CRITERION_UPDATED: + $text = _("Updated"); + $value = strftime($GLOBALS['prefs']->getValue('report_time_format'), $value); + break; + + case CRITERION_RESOLVED: + $text = _("Resolved"); + $value = strftime($GLOBALS['prefs']->getValue('report_time_format'), $value); + break; + + case CRITERION_ASSIGNED: + $text = _("Assigned"); + $value = strftime($GLOBALS['prefs']->getValue('report_time_format'), $value); + break; + + case CRITERION_DUE: + $text = _("Due"); + $value = strftime($GLOBALS['prefs']->getValue('report_time_format'), $value); + break; + } + + if (!isset($text)) { + $text = sprintf(_("Unknown node type %s"), $type); + break; + } + + $text .= ' '; + + switch ($operator) { + case OPERATOR_GREATER: + $text .= _("is greater than"); + break; + + case OPERATOR_LESS: + $text .= _("is less than"); + break; + + case OPERATOR_EQUAL: + $text .= _("is"); + break; + + case OPERATOR_CI_SUBSTRING: + $text .= _("contains (case insensitive) substring"); + break; + + case OPERATOR_CS_SUBSTRING: + $text .= _("contains (case sensitive) substring"); + break; + + case OPERATOR_WORD: + $text .= _("contains the word"); + break; + + case OPERATOR_PATTERN: + $text .= _("matches the pattern"); + break; + } + + $text .= " $value"; + break; + + default: + $text = sprintf(_("Unknown node type %s"), $type); + break; + } + + // Stick vertical-align: middle; on everything to make it look a + // little nicer. + $fimgattrs = 'height="20" width="0" style="vertical-align: middle;"'; + $imgattrs = 'height="20" width="20" style="vertical-align: middle;"'; + $imgdir = $registry->getImageDir('horde'); + + $space = ''; + $count = count($more); + + if ($count == 0) { + // Always have at least one image to make sure all rows are the + // same height. + $space = Horde::img('tree/blank.png', '', $fimgattrs, $imgdir) . "\n"; + } else { + for ($i = 0; $i < $count - 1; $i++) { + if ($more[$i] == 1) { + $space .= Horde::img('tree/line.png', '|', $imgattrs, $imgdir) . "\n"; + } else { + $space .= Horde::img('tree/blank.png', '', $imgattrs, $imgdir) . "\n"; + } + } + } + + if ($count > 0) { + if ($more[$count - 1] == 1) { + $space .= Horde::img('tree/join.png', '+', $imgattrs, $imgdir) . "\n"; + } else { + $space .= Horde::img('tree/joinbottom.png', '-', $imgattrs, $imgdir) . "\n"; + } + } + + $extra = ($this->isActive ? '' : ' disabled="disabled"'); + $extra .= ($pathstring == $this->currentPath ? ' checked="checked"' : ''); + include WHUPS_TEMPLATES . '/renderer/query/render.inc'; + } + + function _renderEnd() + { + echo '
'; + } + +} \ No newline at end of file diff --git a/whups/lib/Reports.php b/whups/lib/Reports.php new file mode 100644 index 000000000..64a4b9ab4 --- /dev/null +++ b/whups/lib/Reports.php @@ -0,0 +1,248 @@ + + * @package Whups + */ +class Whups_Reports { + + var $_backend; + + var $_opentickets; + + var $_closedtickets; + + var $_alltickets; + + function Whups_Reports($whups_driver) + { + $this->_backend = $whups_driver; + } + + function getDataSet($report) + { + $operation = 'inc'; + $state = null; + list($type, $field) = explode('|', $report); + if (substr($type, 0, 1) == '@') { + list($type, $operation, $state) = explode(':', substr($type, 1)); + } + $tickets = &$this->_getTicketSet($type, ($field == 'owner')); + + if (substr($field, 0, 7) == 'user_id' || $field == 'owner') { + $user = true; + } else { + $user = false; + } + + $dataset = array(); + foreach ($tickets as $info) { + switch ($state) { + case 'open': + require_once 'Date/Calc.php'; + + $date1 = getdate($info['date_resolved']); + $date2 = getdate($info['timestamp']); + $newdata = Date_Calc::dateDiff($date1['mday'], + $date1['mon'], + $date1['year'], + $date2['mday'], + $date2['mon'], + $date2['year']); + break; + + default: + $newdata = 1; + } + + if (empty($info[$field])) { + $this->_updateDataSet($dataset, _("None"), $newdata, $operation); + } else { + if ($user) { + $col = Whups::formatUser($info[$field], false); + } else { + $col = $info[$field]; + } + + $this->_updateDataSet($dataset, $col, $newdata, $operation); + } + } + + // Perform any necessary post-processing on the dataset - process + // averages, for example. + switch ($operation) { + case 'avg': + foreach ($dataset as $index => $data) { + $dataset[$index] = number_format(array_sum($data) / count($data), 2); + } + break; + } + + // Sort + ksort($dataset); + + // Return the final data. + return $dataset; + } + + function _updateDataSet(&$dataset, $index, $newdata, $operation) + { + if (isset($dataset[$index])) { + switch ($operation) { + case 'inc': + $dataset[$index] += $newdata; + break; + + case 'max': + case 'min': + $dataset[$index] = $operation($newdata, $dataset[$index]); + break; + + case 'avg': + $dataset[$index][] = $newdata; + break; + } + } else { + switch ($operation) { + case 'avg': + $dataset[$index] = array($newdata); + break; + + default: + $dataset[$index] = $newdata; + } + } + } + + /** + * Returns a time (max, min, avg) that tickets are in a particular state + * (open, assigned, etc.). + * + * @param string $operation One of 'max', 'min', or 'avg'. + * @param string $state The state to measure - 'open', etc. + * @param string $group_by A ticket property by which to group the + * results. + * + * @return integer|array The time value requested, or an array of values, + * if the $group_by parameter has been specified. + */ + function getTime($stat, $group_by = null) + { + list($operation, $state) = explode('|', $stat); + + $tickets = &$this->_getTicketSet('closed'); + if (!count($tickets)) { + return PEAR::raiseError(_("There is no data for this report.")); + } + + $dataset = array(); + if (empty($group_by)) { + $dataset[0] = array(); + } + foreach ($tickets as $info) { + if (is_null($info['date_resolved'])) { + continue; + } + + switch ($state) { + case 'open': + require_once 'Date/Calc.php'; + + $date1 = getdate($info['date_resolved']); + $date2 = getdate($info['timestamp']); + $diff = Date_Calc::dateDiff($date1['mday'], + $date1['mon'], + $date1['year'], + $date2['mday'], + $date2['mon'], + $date2['year']); + if (empty($group_by)) { + $dataset[0][] = $diff; + } else { + if (!isset($info[$group_by])) { + continue; + } + if (!isset($dataset[$info[$group_by]])) { + $dataset[$info[$group_by]] = array(); + } + $dataset[$info[$group_by]][] = $diff; + } + + break; + } + } + + if (!count($dataset) || (is_null($group_by) && !count($dataset[0]))) { + return 'N/A'; + } + + switch ($operation) { + case 'min': + case 'max': + foreach (array_keys($dataset) as $group) { + $dataset[$group] = $operation($dataset[$group]); + } + break; + + case 'avg': + foreach (array_keys($dataset) as $group) { + $dataset[$group] = round(array_sum($dataset[$group]) / count($dataset[$group]), 2); + } + break; + } + + if (empty($group_by)) { + $dataset = $dataset[0]; + } + + return $dataset; + } + + /** + * Loads a set of tickets, and cache the result inside the Whups_Reports:: + * object to save on database access. + * + * @access private + * + * @param string $type 'open', 'closed', or 'all' - the set of + * tickets to fetch. A previously cached set + * will be returned if it is available. + * @param boolean $expanded List tickets once for each owner of the + * ticket? + * + * @return array A reference to the cached ticket set. + */ + function &_getTicketSet($type, $expanded = false) + { + $queues = array_keys(Whups::permissionsFilter($this->_backend->getQueues(), 'queue')); + $expanded = (int)$expanded; + switch ($type) { + case 'open': + if (is_null($this->_opentickets[$expanded])) { + $this->_opentickets[$expanded] = $this->_backend->getTicketsByProperties(array('nores' => true, 'queue' => $queues), true, $expanded); + } + return $this->_opentickets[$expanded]; + + case 'closed': + if (is_null($this->_closedtickets[$expanded])) { + $this->_closedtickets[$expanded] = $this->_backend->getTicketsByProperties(array('res' => true, 'queue' => $queues), true, $expanded); + } + return $this->_closedtickets[$expanded]; + + case 'all': + if (is_null($this->_alltickets[$expanded])) { + $this->_alltickets[$expanded] = $this->_backend->getTicketsByProperties(array('queue' => $queues), true, $expanded); + } + return $this->_alltickets[$expanded]; + } + } + +} diff --git a/whups/lib/Scheduler/whups.php b/whups/lib/Scheduler/whups.php new file mode 100644 index 000000000..51938fc79 --- /dev/null +++ b/whups/lib/Scheduler/whups.php @@ -0,0 +1,47 @@ +_runtime = time(); + + // See if we need to include the reminders config file. + if (filemtime(WHUPS_BASE . '/config/reminders.php') > $this->_filestamp) { + $this->_filestamp = $this->_runtime; + include WHUPS_BASE . '/config/reminders.php'; + $this->_reminders = $reminders; + } + + foreach ($this->_reminders as $reminder) { + $ds = new Horde_Scheduler_cronDate($reminder['frequency']); + if ($ds->scheduledAt($this->_runtime)) { + if (!empty($reminder['server_name'])) { + $GLOBALS['conf']['server']['name'] = $reminder['server_name']; + } + $vars = new Horde_Variables($reminder); + Whups::sendReminders($vars); + } + } + } + +} diff --git a/whups/lib/Ticket.php b/whups/lib/Ticket.php new file mode 100644 index 000000000..f53b277b1 --- /dev/null +++ b/whups/lib/Ticket.php @@ -0,0 +1,1009 @@ + + * @author Jan Schneider + * @package Whups + */ +class Whups_Ticket { + + /** + * The id of the ticket this object wraps. + * + * @var integer + */ + var $_id; + + /** + * The current values of the ticket. + * + * @var array + */ + var $_details; + + /** + * Array of changes to make to the ticket. + * + * @var array + */ + var $_changes = array(); + + /** + * Returns a ticket object for an id. + * + * @static + * + * @param integer $id The ticket id. + * + * @return Whups_Ticket Either a Whups_Ticket object on success or a + * PEAR_Error object on failure. + */ + function makeTicket($id) + { + global $whups_driver; + + $details = $whups_driver->getTicketDetails($id); + if (is_a($details, 'PEAR_Error')) { + return $details; + } else { + $ticket = new Whups_Ticket($id, $details); + return $ticket; + } + } + + /** + * Creates a new ticket. + * + * Pretty bare wrapper around Whups_Driver::addTicket(). + * + * @static + * + * @param array $info A hash with ticket information. + * + * @return Whups_Ticket Either a Whups_Ticket object on success or a + * PEAR_Error object on failure. + */ + function newTicket($info, $requester) + { + global $whups_driver; + + if (!isset($info['type'])) { + $info['type'] = $whups_driver->getDefaultType($info['queue']); + if (is_null($info['type'])) { + $queue = $whups_driver->getQueue($info['queue']); + return PEAR::raiseError( + sprintf(_("No type for this ticket and no default type for queue \"%s\" specified."), + $queue['name'])); + } + } + if (!isset($info['state'])) { + $info['state'] = $whups_driver->getDefaultState($info['type']); + if (is_null($info['state'])) { + return PEAR::raiseError( + sprintf(_("No state for this ticket and no default state for ticket type \"%s\" specified."), + $whups_driver->getTypeName($info['type']))); + } + } + if (!isset($info['priority'])) { + $info['priority'] = $whups_driver->getDefaultPriority($info['type']); + if (is_null($info['priority'])) { + return PEAR::raiseError( + sprintf(_("No priority for this ticket and no default priority for ticket type \"%s\" specified."), + $whups_driver->getTypeName($info['type']))); + } + } + + $id = $whups_driver->addTicket($info, $requester); + if (is_a($id, 'PEAR_Error')) { + return $id; + } + + $details = $whups_driver->getTicketDetails($id, false); + if (is_a($details, 'PEAR_Error')) { + return $details; + } + + $ticket = new Whups_Ticket($id, $details); + + // Add attachment if one was uploaded. + if (!empty($info['newattachment']['name'])) { + $ticket->change( + 'attachment', + array('name' => $info['newattachment']['name'], + 'tmp_name' => $info['newattachment']['tmp_name'])); + } + + // Check for a deferred attachment upload. + if (!empty($info['deferred_attachment']) && + !empty($_SESSION['whups']['deferred_attachment'][$info['deferred_attachment']])) { + $ticket->change( + 'attachment', + array('name' => $info['deferred_attachment'], + 'tmp_name' => $_SESSION['whups']['deferred_attachment'][$info['deferred_attachment']])); + + unlink($_SESSION['whups']['deferred_attachment'][$info['deferred_attachment']]); + } + + // Send email notifications. + $ticket->notify($ticket->get('user_id_requester'), true); + + // Commit any changes (new attachments, etc.) + $ticket->commit($ticket->get('user_id_requester'), + $info['last-transaction'], false); + + return $ticket; + } + + /** + * Constructor. + * + * @param integer $id The ticket id. + * @param array $details The hash of ticket information. + */ + function Whups_Ticket($id, $details) + { + $this->_id = $id; + $this->_details = $details; + } + + /** + * Returns all ticket information. + * + * @return array The ticket information. + */ + function getDetails() + { + return $this->_details; + } + + /** + * Returns the ticket id. + * + * @return integer The ticket id. + */ + function getId() + { + return $this->_id; + } + + /** + * Returns a piece of information from this ticket. + * + * @param string $detail The detail to return. + * + * @return mixed The detail value. + */ + function get($detail) + { + return isset($this->_details[$detail]) + ? $this->_details[$detail] + : null; + } + + /** + * Changes a detail of the ticket to a new value. + * + * Never touches the backend; do not use for changes that you want to + * persist. + * + * @param string $detail The detail to change. + * @param string $value The new detail value. + */ + function set($detail, $value) + { + $this->_details[$detail] = $value; + } + + /** + * Tracks that a detail of the ticket should change, but does not actually + * make the change until commit() is called. + * + * @see commit() + * + * @param string $detail The detail to change. + * @param string $value The new detail value. + */ + function change($detail, $value) + { + $previous_value = isset($this->_details[$detail]) + ? $this->_details[$detail] + : ''; + if ($previous_value != $value) { + $this->_changes[$detail] = array( + 'from' => $this->get($detail), + 'from_name' => $this->get($detail . '_name'), + 'to' => $value); + } + } + + /** + * Goes through a list of built-up changes and commits them to the + * backend. + * + * This will send email updates by default, update the ticket log, etc. + * + * @see change() + * + * @param string $user The Horde user of the changes to be made. + * Defaults to the current user. + * @param integer $transaction The transaction these changes are part of. + * Defaults to a new transaction. + * @param boolean $notify Send ticket notifications? + * + * @return mixed True on success, PEAR_Error on failure. + */ + function commit($user = null, $transaction = null, $notify = true) + { + global $whups_driver; + + if (!count($this->_changes)) { + return true; + } + + if (is_null($user)) { + $user = Horde_Auth::getAuth(); + } + $author_email = isset($this->_changes['comment-email']['to']) + ? $this->_changes['comment-email']['to'] + : null; + + if (is_null($transaction)) { + // Get a new transaction id from the backend. + $transaction = $whups_driver->newTransaction($user, $author_email); + if (is_a($transaction, 'PEAR_Error')) { + return $transaction; + } + } + + // If this is a guest update, the comment id is going to map to the + // requester pseudo-username. + if ($user === false) { + $user = '-' . $transaction . '_transaction'; + } + + // Run hook before setting the dates. + try { + $this->_changes = Horde::callHook('ticket_update', array($this, $this->_changes), 'whups'); + } catch (Horde_Exception_HookNotSet $e) { + } + + // Update cached dates. + $timestamp = time(); + $this->_changes['date_updated'] = array('to' => $timestamp); + if (isset($this->_changes['state'])) { + $state = $whups_driver->getState($this->_changes['state']['to']); + if (is_a($state, 'PEAR_Error')) { + return $state; + } + if ($state['category'] == 'assigned') { + $this->_changes['date_assigned'] = array('to' => $timestamp); + $this->_changes['date_resolved'] = array('to' => null); + } elseif ($state['category'] == 'resolved') { + $this->_changes['date_resolved'] = array('to' => $timestamp); + } else { + $this->_changes['date_resolved'] = array('to' => null); + } + } + + $updates = array(); + foreach ($this->_changes as $detail => $values) { + $value = $values['to']; + switch ($detail) { + case 'owners': + // Fetch $oldOwners list; then loop through $value adding and + // deleting as needed. + $oldOwners = $whups_driver->getOwners($this->_id); + $this->_changes['oldowners'] = $oldOwners; + + foreach ($value as $owner) { + if (empty($oldOwners[$owner])) { + $whups_driver->addTicketOwner($this->_id, $owner); + $whups_driver->updateLog($this->_id, $user, + array('assign' => $owner), + $transaction); + } else { + // Remove $owner from the old owners list; anyone left + // in $oldOwners will be removed. + unset($oldOwners[$owner]); + } + } + + // Delete removed owners and log the removals. + if (is_array($oldOwners)) { + foreach ($oldOwners as $owner) { + $whups_driver->deleteTicketOwner($this->_id, $owner); + $whups_driver->updateLog($this->_id, $user, + array('unassign' => $owner), + $transaction); + } + } + break; + + case 'comment': + $commentId = $whups_driver->addComment($this->_id, $value, + $user, $author_email); + if (is_a($commentId, 'PEAR_Error')) { + return $commentId; + } + + // Store the comment id in the updates array for the log. + $updates['comment'] = $commentId; + if (!empty($this->_changes['comment-perms'])) { + $this->addCommentPerms( + $commentId, + $this->_changes['comment-perms']['to']); + } + break; + + case 'comment-email': + case 'comment-perms': + // Skip these, handled in the comment case. + break; + + case 'attachment': + $result = $this->addAttachment($value['name'], + $value['tmp_name']); + if (is_a($result, 'PEAR_Error')) { + return $result; + } else { + // Store the new file name in the updates array for the + // log. + $updates['attachment'] = $value['name']; + } + break; + + case 'delete-attachment': + $result = $this->deleteAttachment($value); + if (is_a($result, 'PEAR_Error')) { + return $result; + } else { + // Store the deleted file name in the updates array for + // the log. + $updates['delete-attachment'] = $value; + } + break; + + case 'queue': + // Reset version if new queue is not versioned. + $newqueue = $whups_driver->getQueue($value); + if (empty($newqueue['queue_versioned'])) { + $updates['version'] = 0; + } + $updates['queue'] = $value; + + default: + $updates[$detail] = $value; + } + } + + if (count($updates)) { + $result = $whups_driver->updateTicket($this->_id, $updates); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + + $result = $whups_driver->updateLog($this->_id, $user, $updates, + $transaction); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + } + + // Reload $this->_details to make sure we have the latest information. + // + // @todo Only touch the db if we have to. + $details = $whups_driver->getTicketDetails($this->_id); + if (is_a($details, 'PEAR_Error')) { + return $details; + } + $this->_details = array_merge($this->_details, $details); + + // Send notification emails to all ticket listeners. + if ($notify) { + $this->notify($user, false); + } + + // Reset the changes array. + $this->_changes = array(); + + return true; + } + + /** + * Adds an attachment to this ticket. + * + * @param string $attachment_name The name of the attachment. + * @param string $attachment_file The temporary file containing the data + * to be stored. + * + * @return mixed True on success or PEAR_Error on failure. + */ + function addAttachment(&$attachment_name, $attachment_file) + { + global $conf; + + if (!isset($conf['vfs']['type'])) { + return PEAR::raiseError(_("The VFS backend needs to be configured to enable attachment uploads."), 'horde.error'); + } + + require_once 'VFS.php'; + $vfs = &VFS::singleton($conf['vfs']['type'], + Horde::getDriverConfig('vfs')); + if (is_a($vfs, 'PEAR_Error')) { + return $vfs; + } + + // Get existing attachment names. + $used_names = $this->listAllAttachments(); + + $dir = WHUPS_VFS_ATTACH_PATH . '/' . $this->_id; + while ((array_search($attachment_name, $used_names) !== false) || + $vfs->exists($dir, $attachment_name)) { + if (preg_match('/(.*)\[(\d+)\](\.[^.]*)?$/', $attachment_name, + $match)) { + $attachment_name = $match[1] . '[' . ++$match[2] . ']'; + if (isset($match[3])) { + $attachment_name .= $match[3]; + } + } else { + $dot = strrpos($attachment_name, '.'); + if ($dot === false) { + $attachment_name .= '[1]'; + } else { + $attachment_name = substr($attachment_name, 0, $dot) + . '[1]' . substr($attachment_name, $dot); + } + } + } + + return $vfs->write($dir, $attachment_name, $attachment_file, true); + } + + /** + * Removes an attachment from this ticket. + * + * @param string $attachment_name The name of the attachment. + * + * @return mixed True on success or PEAR_Error on failure. + */ + function deleteAttachment($attachment_name) + { + global $conf; + + if (!isset($conf['vfs']['type'])) { + return PEAR::raiseError(_("The VFS backend needs to be configured to enable attachment uploads."), 'horde.error'); + } + + require_once 'VFS.php'; + $vfs = &VFS::singleton($conf['vfs']['type'], + Horde::getDriverConfig('vfs')); + if (is_a($vfs, 'PEAR_Error')) { + return $vfs; + } + + $dir = WHUPS_VFS_ATTACH_PATH . '/' . $this->_id; + if (!$vfs->exists($dir, $attachment_name)) { + return PEAR::raiseError(sprintf(_("Attachment %s not found."), + $attachment_name), + 'horde.error'); + } + + return $vfs->deleteFile($dir, $attachment_name); + } + + /** + * Returns a list of all files that have been attached to this ticket, + * whether they still exist or not. + */ + function listAllAttachments() + { + $files = array(); + $history = $GLOBALS['whups_driver']->getHistory($this->_id); + foreach ($history as $row) { + if (isset($row['changes'])) { + foreach ($row['changes'] as $change) { + if (isset($change['type']) && + $change['type'] == 'attachment') { + $files[] = $change['value']; + } + } + } + } + + return array_unique($files); + } + + /** + * Redirects the browser to this ticket's view. + */ + function show() + { + header('Location: ' . Whups::urlFor('ticket', $this->_id, true)); + exit; + } + + /** + * Sets exclusive read permissions on a comment to a certain group. + * + * @param integer $commentId The id of the comment to restrict. + * @param string $group The group name to limit access by. + */ + function addCommentPerms($commentId, $group) + { + if (!empty($group)) { + $perm = &$GLOBALS['perms']->newPermission('whups:comments:' + . $commentId); + $perm->addGroupPermission($group, Horde_Perms::READ, false); + return $GLOBALS['perms']->addPermission($perm); + } + } + + /** + * Sets all properties of the ticket necessary to display the + * TicketDetailsForm. + * + * @param Horde_Variables $vars The form variables object to set info in. + */ + function setDetails(&$vars) + { + $vars->set('id', $this->getId()); + foreach ($this->getDetails() as $varname => $value) { + $vars->set($varname, $value); + } + + /* User formatting. */ + $vars->set('user_id_requester', + Whups::formatUser($this->get('user_id_requester'))); + $vars->set('user_id_owner', Whups::getOwners($this->_id)); + + /* Attachments. */ + $attachments = array(); + $files = Whups::getAttachments($this->_id); + if ($files) { + if (is_a($files, 'PEAR_Error')) { + $GLOBALS['notification']->push($files); + } else { + foreach ($files as $file) { + $attachments[] = Whups::attachmentUrl( + $this->_id, $file, $this->_details['queue']); + } + } + $vars->set('attachments', implode("
\n", $attachments)); + } + } + + /** + * Notifies all appropriate people of the creation/update of this ticket. + * + * @param string $author Who created/changed the ticket? + * @param boolean $isNew Is this a new ticket or a change to an existing + * one? + * @param array $listeners The list of listener that should receive the + * notification. If empty, the list will be + * created automatically. + */ + function notify($author, $isNew, $listeners = array()) + { + global $conf, $whups_driver; + + /* Get the attributes for this ticket. */ + $attributes = $whups_driver->getAttributesForType($this->get('type')); + + $fields = array( + 'queue' => _("Queue"), + 'version' => _("Version"), + 'type' => _("Type"), + 'state' => _("State"), + 'priority' => _("Priority"), + 'due' => _("Due"), + ); + + $field_names = array_merge($fields, array(_("Created By"), + _("Updated By"), + _("Summary"), + _("Owners"), + _("New Attachment"), + _("Deleted Attachment"))); + foreach ($attributes as $attribute) { + $field_names[] = $attribute['human_name']; + } + + /* Find the longest translated field name. */ + $length = 0; + foreach ($field_names as $field_name) { + $length = max($length, Horde_String::length($field_name)); + } + $wrap_break = "\n" . str_repeat(' ', $length + 2) . '| '; + $wrap_width = 73 - $length; + + /* Ticket URL. */ + $url = sprintf(_("Ticket URL: %s"), + Whups::urlFor('ticket', $this->_id, true, -1)); + + /* Ticket properties. */ + $table = "------------------------------------------------------------------------------\n" + . ' ' . Horde_String::pad(_("Ticket"), $length) . ' | ' + . $this->_id . "\n" . ' ' + . Horde_String::pad($isNew ? _("Created By") : _("Updated By"), $length) + . ' | ' . Whups::formatUser($author) . "\n"; + if (isset($this->_changes['summary'])) { + $table .= '-' . Horde_String::pad(_("Summary"), $length) . ' | ' + . Horde_String::wrap($this->_changes['summary']['from'], + $wrap_width, $wrap_break) + . "\n" . '+' . Horde_String::pad(_("Summary"), $length) . ' | ' + . Horde_String::wrap($this->get('summary'), $wrap_width, $wrap_break) + . "\n"; + } else { + $table .= ' ' . Horde_String::pad(_("Summary"), $length) . ' | ' + . Horde_String::wrap($this->get('summary'), $wrap_width, $wrap_break) + . "\n"; + } + + foreach ($fields as $field => $label) { + if ($name = $this->get($field . '_name')) { + if (isset($this->_changes[$field])) { + $table .= '-' . Horde_String::pad($label, $length) . ' | ' + . Horde_String::wrap($this->_changes[$field]['from_name'], + $wrap_width, $wrap_break) + . "\n" . '+' . Horde_String::pad($label, $length) . ' | ' + . Horde_String::wrap($name, $wrap_width, $wrap_break) . "\n"; + } else { + $table .= ' ' . Horde_String::pad($label, $length) . ' | ' + . Horde_String::wrap($name, $wrap_width, $wrap_break) . "\n"; + } + } + } + + /* Attribute changes. */ + foreach ($attributes as $id => $attribute) { + $attribute_id = 'attribute_' . $id; + $label = $attribute['human_name']; + if (isset($this->_changes[$attribute_id])) { + $table .= '-' . Horde_String::pad($label, $length) . ' | ' + . Horde_String::wrap($this->_changes[$attribute_id]['from'], + $wrap_width, $wrap_break) + . "\n" . '+' . Horde_String::pad($label, $length) . ' | ' + . Horde_String::wrap($this->_changes[$attribute_id]['to'], + $wrap_width, $wrap_break) + . "\n"; + } else { + $table .= ' ' . Horde_String::pad($label, $length) . ' | ' + . Horde_String::wrap($this->get($attribute_id), + $wrap_width, $wrap_break) + . "\n"; + } + } + + /* Show any change in ticket owners. */ + $owners = $oldOwners = Horde_String::wrap( + Whups::getOwners($this->_id, false, true), + $wrap_width, $wrap_break); + if (isset($this->_changes['oldowners'])) { + $oldOwners = Horde_String::wrap( + Whups::getOwners($this->_id, false, true, + $this->_changes['oldowners']), + $wrap_width, $wrap_break); + } + if ($owners != $oldOwners) { + $table .= '-' . Horde_String::pad(_("Owners"), $length) . ' | ' + . $oldOwners . "\n" . '+' . Horde_String::pad(_("Owners"), $length) + . ' | ' . $owners . "\n"; + } else { + $table .= ' ' . Horde_String::pad(_("Owners"), $length) . ' | ' + . $owners . "\n"; + } + + /* New Attachments. */ + if (isset($this->_changes['attachment'])) { + $table .= '+' . Horde_String::pad(_("New Attachment"), $length) . ' | ' + . $this->_changes['attachment']['to']['name'] . "\n"; + } + + /* Deleted Attachments. */ + if (isset($this->_changes['delete-attachment'])) { + $table .= '+' . Horde_String::pad(_("Deleted Attachment"), $length) + . ' | ' . $this->_changes['delete-attachment']['to'] . "\n"; + } + + $table .= "------------------------------------------------------------------------------"; + + /* Add the "do not reply" tag if we don't monitor incoming mail. */ + if (empty($conf['mail']['reply'])) { + $dont_reply = _("DO NOT REPLY TO THIS MESSAGE. THIS EMAIL ADDRESS IS NOT MONITORED.") . "\n\n"; + } else { + $dont_reply = ''; + } + + /* Build message template. */ + $identity = &Horde_Prefs_Identity::singleton(); + $name = $identity->getValue('fullname'); + if (empty($name)) { + $name = Horde_Auth::getBareAuth(); + } + + /* Get queue specific notification message text, if available. */ + $message_file = WHUPS_BASE . '/config/' + . ($isNew ? 'create_email' : 'notify_email'); + if (file_exists($message_file . '_' . $this->get('queue') . '.txt')) { + $message_file .= '_' . $this->get('queue'); + } + $message_file .= '.txt'; + + /* Prepare message text. */ + $message = Horde_String::convertCharset(file_get_contents($message_file), + 'UTF-8'); + $message = str_replace( + array('@@ticket_url@@', + '@@table@@', + '@@dont_reply@@', + '@@date@@', + '@@auth_name@@'), + array($url, $table, $dont_reply, + strftime($GLOBALS['prefs']->getValue('date_format')), + $name), + $message); + + /* Include Re: if the ticket isn't new for easy + * filtering/eyeballing. */ + $subject = $this->get('summary'); + if (!$isNew) { + $subject = 'Re: ' . $subject; + } + + if (empty($listeners)) { + if ($conf['mail']['incl_resp'] || + !count($whups_driver->getOwners($this->_id))) { + /* Include all responsible. */ + $listeners = $whups_driver->getListeners($this->_id, true, + true, true); + } else { + /* Don't include all responsible unless ticket is assigned. */ + $listeners = $whups_driver->getListeners($this->_id, true, + true, false); + } + + /* Notify both old and new queue users if the queue has changed. */ + if (isset($this->_changes['queue'])) { + $listeners = array_merge( + $listeners, + $whups_driver->getQueueUsers( + $this->_changes['queue']['from_name'])); + } + } + + /* Pass off to Whups_Driver::mail() to do the actual comment fetching, + * permissions checks, etc. */ + $whups_driver->mail($this->_id, $listeners, $subject, $message, $author, + false, $this->get('queue'), $isNew); + } + + /** + * Returns a plain text representation of a ticket. + * + * @param string $author Who created/changed the ticket? + * @param boolean $isNew Is this a new ticket or a change to an existing + * one? + */ + function toString() + { + $fields = array('queue' => _("Queue"), + 'version' => _("Version"), + 'type' => _("Type"), + 'state' => _("State"), + 'priority' => _("Priority"), + 'due' => _("Due")); + + /* Find longest translated field name. */ + $length = 0; + foreach (array_merge($fields, array(_("Summary"), _("Owners"))) + as $field) { + $length = max($length, Horde_String::length($field)); + } + $wrap_break = "\n" . str_repeat(' ', $length + 2) . '| '; + $wrap_width = 73 - $length; + + /* Ticket properties. */ + $message = ' ' . Horde_String::pad(_("Ticket"), $length) . ' | ' + . $this->_id . "\n" . ' ' . Horde_String::pad(_("Summary"), $length) + . ' | ' . Horde_String::wrap($this->get('summary'), + $wrap_width, $wrap_break) + . "\n"; + + foreach ($fields as $field => $label) { + if ($name = $this->get($field . '_name')) { + $message .= ' ' . Horde_String::pad($label, $length) . ' | ' + . Horde_String::wrap($name, $wrap_width, $wrap_break) . "\n"; + } + } + + $message .= ' ' . Horde_String::pad(_("Owners"), $length) . ' | ' + . Horde_String::wrap(Whups::getOwners($this->_id, false, true), + $wrap_width, $wrap_break) + . "\n"; + + return $message; + } + + function __toString() + { + return $this->toString(); + } + + /** + * Adds ticket attribute values to the ticket's details, and returns the + * list of attributes. + * + * @return array List of ticket attribute hashes. + */ + function addAttributes() + { + $attributes = $GLOBALS['whups_driver']->getAllTicketAttributesWithNames($this->getId()); + if (is_a($attributes, 'PEAR_Error')) { + return $attributes; + } + + foreach ($attributes as $attribute_id => $attribute) { + $this->set('attribute_' . $attribute_id, $attribute['value']); + } + return $attributes; + } + +} + +/** + * @package Whups + */ +class TicketDetailsForm extends Horde_Form { + + /** + */ + function TicketDetailsForm(&$vars, &$ticket, $title = '') + { + parent::Horde_Form($vars, $title); + + $date_params = array($GLOBALS['prefs']->getValue('date_format')); + $fields = array('summary', 'queue', 'version', 'type', 'state', + 'priority', 'owner', 'requester', 'created', 'due', + 'updated', 'assigned', 'resolved', 'attachments'); + $attributes = $ticket->addAttributes(); + if (is_a($attributes, 'PEAR_Error')) { + $attributes = array(); + } + + foreach ($attributes as $attribute) { + $fields[] = 'attribute_' . $attribute['id']; + } + + $grouped_fields = array($fields); + $grouped_hook = false; + try { + $grouped_fields = Horde::callHook('group_fields', array($ticket->get('type'), $fields), 'whups'); + $grouped_hook = true; + } catch (Horde_Exception_HookNotSet $e) { + } catch (Horde_Exception $e) { + Horde::logMessage($e, __FILE__, __LINE__, PEAR_LOG_ERR); + } + + foreach ($grouped_fields as $header => $fields) { + if ($grouped_hook) { + $this->addVariable($header, null, 'header', false); + } + foreach ($fields as $field) { + switch ($field) { + case 'summary': + $this->addVariable(_("Summary"), 'summary', 'text', true); + break; + + case 'queue': + if ($vars->get('queue_link')) { + $this->addVariable( + _("Queue"), 'queue_link', 'link', + true, false, null, + array(array('url' => $vars->get('queue_link'), + 'text' => $vars->get('queue_name')))); + } else { + $this->addVariable(_("Queue"), 'queue_name', 'text', + true); + } + break; + + case 'version': + if ($vars->get('version_name')) { + if ($vars->get('version_link')) { + $this->addVariable( + _("Queue Version"), 'version_name', 'link', + true, false, null, + array( + array('url' => $vars->get('version_link'), + 'text' => $vars->get('version_name')))); + } else { + $this->addVariable(_("Queue Version"), + 'version_name', 'text', true); + } + } + break; + + case 'type': + $this->addVariable(_("Type"), 'type_name', 'text', true); + break; + + case 'state': + $this->addVariable(_("State"), 'state_name', 'text', true); + break; + + case 'priority': + $this->addVariable(_("Priority"), 'priority_name', 'text', + true); + break; + + case 'owner': + $owner = &$this->addVariable(_("Owners"), 'user_id_owner', + 'email', false, false, null, + array(false, true)); + $owner->setDefault(_("Unassigned")); + break; + + case 'requester': + $this->addVariable(_("Requester"), 'user_id_requester', + 'email', false, false, null, + array(false, true)); + break; + + case 'created': + $this->addVariable(_("Created"), 'timestamp', 'date', + false, false, null, $date_params); + break; + + case 'due': + $this->addVariable(_("Due"), 'due', 'datetime', false, + false, null, $date_params); + break; + + case 'updated': + $this->addVariable(_("Updated"), 'date_updated', 'date', + false, false, null, $date_params); + break; + + case 'assigned': + $this->addVariable(_("Assigned"), 'date_assigned', 'date', + false, false, null, $date_params); + break; + + case 'resolved': + $this->addVariable(_("Resolved"), 'date_resolved', 'date', + false, false, null, $date_params); + break; + + case 'attachments': + $this->addVariable(_("Attachments"), 'attachments', 'html', + false); + break; + + default: + if (substr($field, 0, 10) == 'attribute_' && + isset($attributes[substr($field, 10)])) { + $attribute = $attributes[substr($field, 10)]; + $var = &$this->addVariable( + $attribute['human_name'], + 'attribute_' . $attribute['id'], + $attribute['type'], $attribute['required'], + $attribute['readonly'], $attribute['desc'], + $attribute['params']); + $var->setDefault($attribute['value']); + } + break; + } + } + } + } + +} diff --git a/whups/lib/View.php b/whups/lib/View.php new file mode 100755 index 000000000..bfdb9f583 --- /dev/null +++ b/whups/lib/View.php @@ -0,0 +1,37 @@ + + * @package Whups + */ + +class Whups_View { + + var $_params; + + function Whups_View($params) + { + $this->_params = $params; + if (!isset($this->_params['title'])) { + $this->_params['title'] = ''; + } + } + + function factory($view, $params) + { + $view = basename($view); + $class = 'Whups_View_' . $view; + if (!class_exists($class)) { + include dirname(__FILE__) . '/View/' . $view . '.php'; + } + if (class_exists($class)) { + return new $class($params); + } else { + return PEAR::raiseError(sprintf(_("No such view \"%s\" found"), $view)); + } + } + +} diff --git a/whups/lib/View/Results.php b/whups/lib/View/Results.php new file mode 100755 index 000000000..d7aee2f11 --- /dev/null +++ b/whups/lib/View/Results.php @@ -0,0 +1,44 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * @author Robert E. Coyle + * @author Michael J. Rubinsky + * @package Whups + */ +class Whups_View_Results extends Whups_View { + + var $_id; + + function Whups_View_Results($params) + { + parent::Whups_View($params); + $this->_id = md5(uniqid(mt_rand())); + } + + function html() + { + Horde::addScriptFile('prototype.js', 'horde', true); + Horde::addScriptFile('tables.js', 'horde', true); + + global $prefs, $registry; + + $sortby = $prefs->getValue('sortby'); + $sortdir = $prefs->getValue('sortdir'); + $sortdirclass = $sortdir ? 'sortup' : 'sortdown'; + + $ids = array(); + foreach ($this->_params['results'] as $info) { + $ids[] = $info['id']; + } + $_SESSION['whups']['tickets'] = $ids; + + include WHUPS_TEMPLATES . '/view/results.inc'; + } + +} \ No newline at end of file diff --git a/whups/lib/View/SavedQueries.php b/whups/lib/View/SavedQueries.php new file mode 100755 index 000000000..b3f889271 --- /dev/null +++ b/whups/lib/View/SavedQueries.php @@ -0,0 +1,28 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + * + * @author Chuck Hagenbuch + * @author Michael J. Rubinsky + * @package Whups + */ +class Whups_View_SavedQueries extends Whups_View { + + // Need title, results in params. + function html($header = true) + { + if (!count($this->_params['results'])) { + return; + } + + include WHUPS_TEMPLATES . '/view/savedqueries.inc'; + + } + +} diff --git a/whups/lib/Whups.php b/whups/lib/Whups.php new file mode 100644 index 000000000..e1e37434d --- /dev/null +++ b/whups/lib/Whups.php @@ -0,0 +1,1004 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + * + * @package Whups + */ + +/** + * The virtual path to use for VFS data. + */ +define('WHUPS_VFS_ATTACH_PATH', '.horde/whups/attachments'); + +/** + * The Whups:: class provides functionality that all of Whups needs, + * or that should be encapsulated from other parts of the Whups + * system. + * + * @package Whups + */ +class Whups { + + function urlFor($controller, $data, $full = false, $append_session = 0) + { + $rewrite = isset($GLOBALS['conf']['urls']['pretty']) && + $GLOBALS['conf']['urls']['pretty'] == 'rewrite'; + + switch ($controller) { + case 'queue': + if ($rewrite) { + if (is_array($data)) { + if (isset($data['slug'])) { + $slug = $data['slug']; + } else { + $slug = $data['id']; + } + } else { + $slug = (int)$data; + } + return Horde::applicationUrl('queue/' . $slug, $full, $append_session); + } else { + if (is_array($data)) { + $id = $data['id']; + } else { + $id = $data; + } + return Horde::applicationUrl('queue/?id=' . $id, $full, $append_session); + } + break; + + case 'ticket': + $id = (int)$data; + if ($rewrite) { + return Horde::applicationUrl('ticket/' . $id, $full, $append_session); + } else { + return Horde::applicationUrl('ticket/?id=' . $id, $full, $append_session); + } + break; + + case 'ticket_rss': + $id = (int)$data; + if ($rewrite) { + return Horde::applicationUrl('ticket/' . $id . '/rss', $full, $append_session); + } else { + return Horde::applicationUrl('ticket/rss.php?id=' . $id, $full, $append_session); + } + break; + + case 'ticket_action': + list($controller, $id) = $data; + if ($rewrite) { + return Horde::applicationUrl('ticket/' . $id . '/' . $controller, $full, $append_session = 0); + } else { + return Horde::applicationUrl('ticket/' . $controller . '.php?id=' . $id, $full, $append_session = 0); + } + + case 'query': + case 'query_rss': + if ($rewrite) { + if (is_array($data)) { + if (isset($data['slug'])) { + $slug = $data['slug']; + } else { + $slug = $data['id']; + } + } else { + $slug = (int)$data; + } + $url = 'query/' . $slug; + if ($controller == 'query_rss') { + $url .= '/rss'; + } + return Horde::applicationUrl($url, $full, $append_session); + } else { + if (is_array($data)) { + if (isset($data['slug'])) { + $param = array('slug' => $data['slug']); + } else { + $param = array('query' => $data['id']); + } + } else { + $param = array('query' => $data); + } + $url = $controller == 'query' ? 'query/run.php' : 'query/rss.php'; + $url = Horde_Util::addParameter($url, $param); + return Horde::applicationUrl($url, $full, $append_session); + } + break; + } + } + + function sortTickets(&$tickets, $by = null, $dir = null) + { + if (is_null($by)) { + $by = $GLOBALS['prefs']->getValue('sortby'); + } + if (is_null($dir)) { + $dir = $GLOBALS['prefs']->getValue('sortdir'); + } + + Whups::sortBy($by); + Whups::sortDir($dir); + + usort($tickets, array('Whups', '_sort')); + } + + function sortBy($b = null) + { + static $by; + + if (!is_null($b)) { + $by = $b; + } else { + return $by; + } + } + + function sortDir($d = null) + { + static $dir; + + if (!is_null($d)) { + $dir = $d; + } else { + return $dir; + } + } + + function _sort($a, $b, $sortby = null, $sortdir = null) + { + static $by, $dir; + if (is_null($by)) { + $by = Whups::sortBy(); + $dir = Whups::sortDir(); + } + + if (is_null($sortby)) { + $sortby = $by; + } + if (is_null($sortdir)) { + $sortdir = $dir; + } + + if (is_array($sortby)) { + if (!isset($a[$sortby[0]])) { + $a[$sortby[0]] = null; + } + if (!isset($b[$sortby[0]])) { + $b[$sortby[0]] = null; + } + + if (!count($sortby)) { + return 0; + } elseif ($a[$sortby[0]] > $b[$sortby[0]]) { + return $sortdir[0] ? -1 : 1; + } elseif ($a[$sortby[0]] === $b[$sortby[0]]) { + array_shift($sortby); + array_shift($sortdir); + return Whups::_sort($a, $b, $sortby, $sortdir); + } else { + return $sortdir[0] ? 1 : -1; + } + } else { + $a_val = isset($a[$sortby]) ? $a[$sortby] : null; + $b_val = isset($b[$sortby]) ? $b[$sortby] : null; + + // Take care of the simplest case first + if ($a_val === $b_val) { + return 0; + } + + if ((is_numeric($a_val) || is_null($a_val)) && + (is_numeric($b_val) || is_null($b_val))) { + // Numeric comparison + if ($sortdir) { + return (int)($b_val > $a_val); + } else { + return (int)($a_val > $b_val); + } + } else { + // String comparison + if ($sortdir) { + return strcoll($b[$sortby], $a[$sortby]); + } else { + return strcoll($a[$sortby], $b[$sortby]); + } + } + } + } + + /** + * Returns a new or the current CAPTCHA string. + * + * @param boolean $new If true, a new CAPTCHA is created and returned. + * The current, to-be-confirmed string otherwise. + * + * @return string A CAPTCHA string. + */ + function getCAPTCHA($new = false) + { + if ($new || empty($_SESSION['whups']['CAPTCHA'])) { + $_SESSION['whups']['CAPTCHA'] = ''; + for ($i = 0; $i < 5; $i++) { + $_SESSION['whups']['CAPTCHA'] .= chr(rand(65, 90)); + } + } + return $_SESSION['whups']['CAPTCHA']; + } + + /** + * List all templates of a given type. + * + * @param string $type The kind of template ('searchresults', etc.) to list. + * + * @return array All templates of the requested type. + */ + function listTemplates($type) + { + $templates = array(); + + require WHUPS_BASE . '/config/templates.php'; + foreach ($_templates as $name => $info) { + if ($info['type'] == $type) { + $templates[$name] = $info['name']; + } + } + + return $templates; + } + + /** + * Get the current ticket - use the 'id' request variable to + * determine what to look for. Will redirect to the default view + * if the ticket isn't found or if permissions checks fail. + */ + function getCurrentTicket() + { + $id = preg_replace('|\D|', '', Horde_Util::getFormData('id')); + if (!$id) { + $GLOBALS['notification']->push(_("Invalid Ticket Id"), 'horde.error'); + header('Location: ' . Horde::applicationUrl($GLOBALS['prefs']->getValue('whups_default_view') . '.php', true)); + exit; + } + + $ticket = Whups_Ticket::makeTicket($id); + if (is_a($ticket, 'PEAR_Error')) { + if ($ticket->code === 0) { + // No permissions to this ticket. + $GLOBALS['notification']->push($ticket->getMessage(), 'horde.warning'); + $url = Horde::applicationUrl($GLOBALS['prefs']->getValue('whups_default_view') . '.php', true); + } else { + $GLOBALS['notification']->push($ticket->getMessage(), 'horde.error'); + $url = Horde::applicationUrl($GLOBALS['prefs']->getValue('whups_default_view') . '.php', true); + } + + header('Location: ' . $url); + exit; + } + + return $ticket; + } + + /** + * Get the tabs for navigating between ticket actions. + */ + function getTicketTabs(&$vars, $id) + { + $tabs = new Horde_Ui_Tabs(null, $vars); + $queue = $vars->get('queue'); + + $tabs->addTab(_("_History"), Whups::urlFor('ticket', $id), 'history'); + if (Whups::hasPermission($queue, 'queue', 'update')) { + $tabs->addTab(_("_Update"), + Whups::urlFor('ticket_action', array('update', $id)), + 'update'); + } else { + $tabs->addTab(_("_Comment"), + Whups::urlFor('ticket_action', array('comment', $id)), + 'comment'); + } + $tabs->addTab(_("_Watch"), + Whups::urlFor('ticket_action', array('watch', $id)), + 'watch'); + if (Whups::hasPermission($queue, 'queue', Horde_Perms::DELETE)) { + $tabs->addTab(_("S_et Queue"), + Whups::urlFor('ticket_action', array('queue', $id)), + 'queue'); + } + if (Whups::hasPermission($queue, 'queue', 'update')) { + $tabs->addTab(_("Set _Type"), + Whups::urlFor('ticket_action', array('type', $id)), + 'type'); + } + if (Whups::hasPermission($queue, 'queue', Horde_Perms::DELETE)) { + $tabs->addTab(_("_Delete"), + Whups::urlFor('ticket_action', array('delete', $id)), + 'delete'); + } + + return $tabs; + } + + /** + * Returns whether a user has a certain permission on a single resource. + * + * @param mixed $in A single resource to check. + * @param string $filter The kind of resource specified in + * $in, currently only 'queue'. + * @param string|integer $permission A permission, either 'assign' or + * 'update', or one of the PERM_* + * constants. + * @param string $user A user name. + * + * @return boolean True if the user has the specified permission. + */ + function hasPermission($in, $filter, $permission, $user = null) + { + global $perms; + + if (is_null($user)) { + $user = Horde_Auth::getAuth(); + } + + if ($permission == 'update' || + $permission == 'assign' || + $permission == 'requester') { + $admin = Horde_Auth::isAdmin('whups:admin', Horde_Perms::EDIT, $user); + } else { + $admin = Horde_Auth::isAdmin('whups:admin', $permission, $user); + } + + switch ($filter) { + case 'queue': + if ($admin) { + return true; + } + switch ($permission) { + case Horde_Perms::SHOW: + case Horde_Perms::READ: + case Horde_Perms::EDIT: + case Horde_Perms::DELETE: + if ($perms->hasPermission('whups:queues:' . $in, $user, + $permission)) { + return true; + } + break; + + default: + if ($perms->exists('whups:queues:' . $in . ':' . $permission)) { + if (($permission == 'update' || + $permission == 'assign' || + $permission == 'requester') && + $perms->getPermissions( + 'whups:queues:' . $in . ':' . $permission, $user)) { + return true; + } + } else { + // If the sub-permission doesn't exist, use the queue + // permission at an EDIT level and lock out guests. + if ($permission != 'requester' && + Horde_Auth::getAuth() && + $perms->hasPermission('whups:queues:' . $in, $user, + Horde_Perms::EDIT)) { + return true; + } + } + break; + } + break; + } + + return false; + } + + /** + * Filters a list of resources based on whether a user use certain + * permissions on it. + * + * @param array $in A list of resources to check. + * @param string $filter The kind of resource specified in $in, + * one of 'queue', 'queue_id', 'reply', or + * 'comment'. + * @param integer $permission A permission, one of the PERM_* constants. + * @param string $user A user name. + * @param string $creator The creator of an object in the resource, + * e.g. a ticket creator. + * + * @return array The list of resources matching the permission criteria. + */ + function permissionsFilter($in, $filter, $permission = Horde_Perms::READ, + $user = null, $creator = null) + { + global $perms; + + if (is_null($user)) { + $user = Horde_Auth::getAuth(); + } + + $admin = Horde_Auth::isAdmin('whups:admin', $permission, $user); + $out = array(); + + switch ($filter) { + case 'queue': + if ($admin) { + return $in; + } + foreach ($in as $queueID => $name) { + if ($perms->hasPermission('whups:queues:' . $queueID, $user, + $permission, $creator)) { + $out[$queueID] = $name; + } + } + break; + + case 'queue_id': + if ($admin) { + return $in; + } + foreach ($in as $queueID) { + if ($perms->hasPermission('whups:queues:' . $queueID, $user, + $permission, $creator)) { + $out[] = $queueID; + } + } + break; + + case 'reply': + if ($admin) { + return $in; + } + foreach ($in as $replyID => $name) { + if (!$perms->exists('whups:replies:' . $replyID) || + $perms->hasPermission('whups:replies:' . $replyID, + $user, $permission, $creator)) { + $out[$replyID] = $name; + } + } + break; + + case 'comment': + foreach ($in as $key => $row) { + foreach ($row as $rkey => $rval) { + if ($rkey != 'changes') { + $out[$key][$rkey] = $rval; + continue; + } + foreach ($rval as $i => $change) { + if ($change['type'] != 'comment' || + !$perms->exists('whups:comments:' . $change['value'])) { + $out[$key][$rkey][$i] = $change; + if (isset($change['comment'])) { + $out[$key]['comment_text'] = $change['comment']; + } + } elseif ($perms->exists('whups:comments:' . $change['value'])) { + $change['private'] = true; + $out[$key][$rkey][$i] = $change; + if (isset($change['comment'])) { + if ($admin || + $perms->hasPermission('whups:comments:' . $change['value'], + $user, Horde_Perms::READ, $creator)) { + $out[$key]['comment_text'] = $change['comment']; + } else { + $out[$key][$rkey][$i]['comment'] = _("[Hidden]"); + } + } + } + } + } + } + break; + + default: + $out = $in; + break; + } + + return $out; + } + + function getOwnerCriteria($user) + { + $criteria = array('user:' . $user); + $groups = &Group::singleton(); + $mygroups = $groups->getGroupMemberships(Horde_Auth::getAuth()); + foreach ($mygroups as $id => $group) { + $criteria[] = 'group:' . $id; + } + + return $criteria; + } + + /** + */ + function getUserAttributes($user = null) + { + static $results; + + if (is_null($user)) { + $user = Horde_Auth::getAuth(); + } elseif (empty($user)) { + return array('user' => '', + 'name' => '', + 'email' => ''); + } + + if (!isset($results[$user])) { + if (strpos($user, ':') !== false) { + list($type, $user) = explode(':', $user, 2); + } else { + $type = 'user'; + } + + // Default this; some of the cases below might change it. + $results[$user]['user'] = $user; + $results[$user]['type'] = $type; + + if ($type == 'user') { + if (substr($user, 0, 2) == '**') { + unset($results[$user]); + $user = substr($user, 2); + + $results[$user]['user'] = $user; + $results[$user]['name'] = ''; + $results[$user]['email'] = ''; + + try { + $addr_arr = Horde_Mime_Address::parseAddressList($user); + if (isset($addr_arr[0])) { + $results[$user]['name'] = isset($addr_arr[0]['personal']) + ? $addr_arr[0]['personal'] : ''; + $results[$user]['email'] = $addr_arr[0]['mailbox'] . '@' + . $addr_arr[0]['host']; + } + } catch (Horde_Mime_Exception $e) {} + } elseif ($user < 0) { + global $whups_driver; + + $results[$user]['user'] = ''; + $results[$user]['name'] = ''; + $results[$user]['email'] = $whups_driver->getGuestEmail($user); + + try { + $addr_arr = Horde_Mime_Address::parseAddressList($results[$user]['email']); + if (isset($addr_arr[0])) { + $results[$user]['name'] = isset($addr_arr[0]['personal']) + ? $addr_arr[0]['personal'] : ''; + $results[$user]['email'] = $addr_arr[0]['mailbox'] . '@' + . $addr_arr[0]['host']; + } + } catch (Horde_Mime_Exception $e) {} + } else { + $identity = &Horde_Prefs_Identity::singleton('none', $user); + + $results[$user]['name'] = $identity->getValue('fullname'); + $results[$user]['email'] = $identity->getValue('from_addr'); + } + } elseif ($type == 'group') { + $groups = &Group::singleton(); + $group = $groups->getGroupById($user); + if (is_a($group, 'PEAR_Error')) { + $results['user']['name'] = ''; + $results['user']['email'] = ''; + } else { + $results[$user]['user'] = $group->getShortName(); + $results[$user]['name'] = $group->getShortName(); + $results[$user]['email'] = $group->get('email'); + } + } + } + + return $results[$user]; + } + + /** + * Returns a user string from the user's name and email address. + * + * @param string|array $user A user name or a hash as returned from + * {@link Whups::getUserAttributes()}. + * @param boolean $showemail Whether to include the email address. + * @param boolean $showname Whether to include the full name. + * @param boolean $html Whether to "prettify" the result. If true, + * email addresses are obscured, the result is + * escaped for HTML output, and a group icon + * might be added. + */ + function formatUser($user = null, $showemail = true, $showname = true, + $html = false) + { + if (!is_null($user) && empty($user)) { + return ''; + } + + if (is_array($user)) { + $details = $user; + } else { + $details = Whups::getUserAttributes($user); + } + if (!empty($details['name'])) { + $name = $details['name']; + } else { + $name = $details['user']; + } + if (($showemail || empty($name) || !$showname) && + !empty($details['email'])) { + if ($html && strpos($details['email'], '@') !== false) { + $details['email'] = str_replace(array('@', '.'), + array(' (at) ', ' (dot) '), + $details['email']); + } + + if (!empty($name) && $showname) { + $name .= ' <' . $details['email'] . '>'; + } else { + $name = $details['email']; + } + } + + if ($html) { + $name = htmlspecialchars($name); + if ($details['type'] == 'group') { + $name = Horde::img('group.png', + !empty($details['name']) + ? $details['name'] + : $details['user'], + '', + $GLOBALS['registry']->getImageDir('horde')) + . $name; + } + } + + return $name; + } + + /** + * Returns the set of columns and their associated parameter from the + * backend that should be displayed to the user. The results can depend on + * the current user preferences and which search function was executed. + * + * @param integer $search_type The type of search that was executed. Must + * be one of the WHUPS_SEARCH_ constants + * defined above. + */ + function getSearchResultColumns($search_type = null) + { + if ($search_type == 'block') { + return array( + _("Id") => 'id', + _("Summary") => 'summary', + _("Priority") => 'priority_name', + _("State") => 'state_name'); + } + + return array( + _("Id") => 'id', + _("Summary") => 'summary', + _("State") => 'state_name', + _("Type") => 'type_name', + _("Priority") => 'priority_name', + _("Queue") => 'queue_name', + _("Requester") => 'user_id_requester', + _("Owners") => 'owners', + _("Created") => 'timestamp', + _("Updated") => 'date_updated', + _("Assigned") => 'date_assigned', + _("Resolved") => 'date_resolved', + ); + } + + /** + * Send reminders. One email per user. + * + * @param Horde_Variables &$vars The selection criteria. + */ + function sendReminders(&$vars) + { + global $whups_driver; + + // Fetch all unresolved tickets. + if ($vars->get('id')) { + $info = array('id' => $vars->get('id')); + } elseif ($vars->get('queue')) { + $info['queue'] = $vars->get('queue'); + if ($vars->get('category')) { + $info['category'] = $vars->get('category'); + } else { + // Make sure that resolved tickets aren't returned. + $info['category'] = array('unconfirmed', 'new', 'assigned'); + } + } else { + return PEAR::raiseError(_("You must select at least one queue to send reminders for.")); + } + + $tickets = $whups_driver->getTicketsByProperties($info); + Whups::sortTickets($tickets); + if (!count($tickets)) { + return PEAR::raiseError(_("No tickets matched your search criteria.")); + } + + $unassigned = $vars->get('unassigned'); + $remind = array(); + foreach ($tickets as $info) { + $info['link'] = Whups::urlFor('ticket', $info['id'], true, -1); + $owners = $whups_driver->getOwners($info['id']); + if (count($owners)) { + foreach ($owners as $owner) { + $remind[$owner][] = $info; + } + } elseif (!empty($unassigned)) { + $remind['**' . $unassigned][] = $info; + } + } + + foreach ($remind as $user => $utickets) { + if (empty($user) || !count($utickets)) { + continue; + } + $email = "\nHere is a summary of your open tickets:\n"; + foreach ($utickets as $info) { + if (!empty($email)) { + $email .= "\n"; + } + $email .= "------\n" + . 'Ticket #' . $info['id'] . ': ' . $info['summary'] . "\n" + . 'Opened: ' . strftime('%a %d %B', $info['timestamp']) + . Horde_Form_Type_date::getAgo($info['timestamp']) . "\n" + . 'State: ' . $info['state_name'] . "\n" + . 'Link: ' . $info['link'] . "\n"; + } + $email .= "\n"; + $subject = 'Reminder: Your open tickets'; + $whups_driver->mail(null, $user, $subject, $email, $user, true); + } + } + + /** + * Build Whups' list of menu items. + */ + function getMenu($returnType = 'object') + { + $menu = new Horde_Menu(); + + if (Horde_Auth::getAuth()) { + $menu->add(Horde::applicationUrl('mybugs.php'), sprintf(_("_My %s"), $GLOBALS['registry']->get('name')), 'whups.png', null, null, null, $GLOBALS['prefs']->getValue('whups_default_view') == 'mybugs' && strpos($_SERVER['PHP_SELF'], $GLOBALS['registry']->get('webroot') . '/index.php') !== false ? 'current' : null); + } + $menu->add(Horde::applicationUrl('search.php'), _("_Search"), 'search.png', null, null, null, $GLOBALS['prefs']->getValue('whups_default_view') == 'search' && strpos($_SERVER['PHP_SELF'], $GLOBALS['registry']->get('webroot') . '/index.php') !== false ? 'current' : null); + $menu->add(Horde::applicationUrl('ticket/create.php'), _("_New Ticket"), 'create.png', null, null, null, $GLOBALS['prefs']->getValue('whups_default_view') == 'ticket/create' && basename($_SERVER['PHP_SELF']) == 'index.php' ? 'current' : null); + $menu->add(Horde::applicationUrl('query/index.php'), _("_Query Builder"), 'query.png'); + $menu->add(Horde::applicationUrl('reports.php'), _("_Reports"), 'reports.png'); + + /* Administration. */ + if (Horde_Auth::isAdmin('whups:admin')) { + $menu->add(Horde::applicationUrl('admin/'), _("_Admin"), 'admin.png'); + } + + if ($returnType == 'object') { + return $menu; + } else { + return $menu->render(); + } + } + + /** + */ + function getAttachments($ticket, $name = null) + { + global $conf; + + if (empty($conf['vfs']['type'])) { + return false; + } + + require_once 'VFS.php'; + $vfs = &VFS::singleton($conf['vfs']['type'], Horde::getDriverConfig('vfs')); + if (is_a($vfs, 'PEAR_Error')) { + return $vfs; + } + + if ($vfs->isFolder(WHUPS_VFS_ATTACH_PATH, $ticket)) { + $files = $vfs->listFolder(WHUPS_VFS_ATTACH_PATH . '/' . $ticket); + if (is_null($name)) { + return $files; + } else { + foreach ($files as $file) { + if ($file['name'] == $name) { + return $file; + } + } + } + } + + return false; + } + + /** + */ + function attachmentUrl($ticket, $file, $queue) + { + $link = ''; + + // Can we view the attachment online? + $mime_part = new Horde_Mime_Part(); + $mime_part->setType(Horde_Mime_Magic::extToMime($file['type'])); + $viewer = Horde_Mime_Viewer::factory($mime_part); + if ($viewer && !is_a($viewer, 'Horde_Mime_Viewer_Default')) { + $url = Horde_Util::addParameter(Horde::applicationUrl('view.php'), + array('actionID' => 'view_file', + 'type' => $file['type'], + 'file' => $file['name'], + 'ticket' => $ticket)); + $link .= Horde::link($url, $file['name'], null, '_blank') . $file['name'] . ''; + } else { + $link .= $file['name']; + } + + // We can always download attachments. + $url_params = array('actionID' => 'download_file', + 'file' => $file['name'], + 'ticket' => $ticket); + $link .= ' ' . Horde::link(Horde::downloadUrl($file['name'], $url_params), $file['name']) . Horde::img('download.png', _("Download"), null, $GLOBALS['registry']->getImageDir('horde')) . ''; + + // Admins can delete attachments. + if (Whups::hasPermission($queue, 'queue', Horde_Perms::DELETE)) { + $url = Horde_Util::addParameter( + Horde::applicationUrl('ticket/deleteAttachment.php'), + array('file' => $file['name'], + 'id' => $ticket, + 'url' => Horde::selfUrl(true, false, true))); + $link .= ' ' . Horde::link($url, sprintf(_("Delete %s"), $file['name']), '', '', 'return window.confirm(\'' . addslashes(sprintf(_("Permanently delete %s?"), $file['name'])) . '\');') . + Horde::img('delete.png', sprintf(_("Delete %s"), $file['name']), null, $GLOBALS['registry']->getImageDir('horde')) . ''; + } + + return $link; + } + + function getOwners($ticket, $showemail = true, $showname = true, $owners = null) + { + if (is_null($owners)) { + global $whups_driver; + $owners = $whups_driver->getOwners($ticket); + if (is_a($owners, 'PEAR_Error')) { + Horde::logMessage($owners, __FILE__, __LINE__, PEAR_LOG_ERR); + return $owners->getMessage(); + } + } + + $results = array(); + foreach ($owners as $owner) { + $results[] = Whups::formatUser($owner, $showemail, $showname); + } + + return implode(', ', $results); + } + + /** + * Add inline javascript to the output buffer. + * + * @param mixed $script The script text to add (can be stored in an + * array also). + * + * @return string The javascript text to output, or empty if the page + * headers have not yet been sent. + */ + function addInlineScript($script) + { + if (is_array($script)) { + $script = implode(';', $script); + } + + $script = trim($script); + if (empty($script)) { + return; + } + + if (!isset($GLOBALS['__whups_inline_script'])) { + $GLOBALS['__whups_inline_script'] = array(); + } + $GLOBALS['__whups_inline_script'][] = $script; + + // If headers have already been sent, we need to output a + // \n"; + } + + $GLOBALS['__whups_inline_script'] = array(); + } + + /** + * Retruns the available field types including all type information from + * the Horde_Form classes. + * + * @return array The full field types array. + */ + function fieldTypes() + { + static $fields_array = array(); + if (!empty($fields_array)) { + return $fields_array; + } + + /* Fetch all declared classes. */ + require_once 'Horde/Form.php'; + $classes = get_declared_classes(); + + /* Filter for the Horde_Form_Type classes. */ + foreach ($classes as $class) { + if (strtolower(substr($class, 0, 16)) == 'horde_form_type_') { + $field_type = substr($class, 16); + /* Don't bother including the types that cannot be handled + * usefully. */ + $blacklist = array('invalid', 'addresslink', 'spacer', + 'description', 'captcha', 'figlet', + 'header'); + if (in_array($field_type, $blacklist)) { + continue; + } + $fields_array[$field_type] = @call_user_func( + array('Horde_Form_Type_' . $field_type, 'about')); + } + } + + return $fields_array; + } + + /** + * Returns the available field type names from the Horde_Form classes. + * + * @return array A hash The with available field types and names. + */ + function fieldTypeNames() + { + /* Fetch the field type information from the Horde_Form classes. */ + $fields = Whups::fieldTypes(); + + /* Strip out the name element from the array. */ + $available_fields = array(); + foreach ($fields as $field_type => $info) { + $available_fields[$field_type] = $info['name']; + } + + /* Sort for display purposes. */ + asort($available_fields); + + return $available_fields; + } + + /** + * Returns the parameters for a certain Horde_Form field type. + * + * @param string $field_type A field type. + * + * @return array A list of field type parameters. + */ + function fieldTypeParams($field_type) + { + $fields = Whups::fieldTypes(); + + return isset($fields[$field_type]['params']) + ? $fields[$field_type]['params'] + : array(); + } + +} diff --git a/whups/lib/base.php b/whups/lib/base.php new file mode 100644 index 000000000..ae466407c --- /dev/null +++ b/whups/lib/base.php @@ -0,0 +1,68 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + * + * @package Whups + */ + +// Check for a prior definition of HORDE_BASE (perhaps by an auto_prepend_file +// definition for site customization). +if (!defined('HORDE_BASE')) { + define('HORDE_BASE', dirname(__FILE__) . '/../..'); +} + +// Load the Horde Framework core, and set up inclusion paths. +require_once HORDE_BASE . '/lib/core.php'; + +// Registry. +$registry = Horde_Registry::singleton(); + +// Determine whups authentication type. +$authentication = Horde_Util::nonInputVar('whups_authentication'); + +try { + $registry->pushApp('whups', array('check_perms' => ($authentication != 'none'), 'logintasks' => true)); +} catch (Horde_Exception $e) { + Horde_Auth::authenticateFailure('whups', $e); +} + +$conf = &$GLOBALS['conf']; +define('WHUPS_TEMPLATES', $registry->get('templates')); + +// Notification system. +$notification = &Horde_Notification::singleton(); +$notification->attach('status'); + +// Find the base file path of Whups. +if (!defined('WHUPS_BASE')) { + define('WHUPS_BASE', dirname(__FILE__) . '/..'); +} + +// Whups base libraries. +require_once WHUPS_BASE . '/lib/Whups.php'; +require_once WHUPS_BASE . '/lib/Driver.php'; + +// Horde libraries. +require_once 'Horde/Group.php'; + +// Form libraries. +require_once 'Horde/Form.php'; +require_once 'Horde/Form/Renderer.php'; + +// Start output compression. +Horde::compressOutput(); + +// Whups backend. +$GLOBALS['whups_driver'] = Whups_Driver::factory(); +$GLOBALS['whups_driver']->initialise(); diff --git a/whups/lib/tests/ApiTest.php b/whups/lib/tests/ApiTest.php new file mode 100644 index 000000000..c88557e5c --- /dev/null +++ b/whups/lib/tests/ApiTest.php @@ -0,0 +1,36 @@ + + * @package Whups + * @subpackage UnitTests + */ +class Whups_ApiTest Extends Whups_TestBase { + function setUp() + { + parent::setUp(); + require_once WHUPS_BASE . '/lib/api.php'; + } + + function test_listQueues_returns_hash() + { + $GLOBALS['perms'] = new Whups_Test_Perms(); + $result = _whups_listQueues(); + + // Make sure it's not a PEAR_Error + $this->assertOk($result); + + // Validate the results + $this->assertEquals('queue one', $result[1]); + $this->assertEquals('queue three', $result[3]); + } + +} diff --git a/whups/lib/tests/TestBase.php b/whups/lib/tests/TestBase.php new file mode 100644 index 000000000..fc085cb27 --- /dev/null +++ b/whups/lib/tests/TestBase.php @@ -0,0 +1,108 @@ + + * @package Whups + * @subpackage UnitTests + */ +class Whups_TestBase Extends PHPUnit_Framework_TestCase { + + function setUp() + { + // TODO: Do we need to actually fake auth for any tests? + @define('AUTH_HANDLER', true); + @define('HORDE_BASE', dirname(__FILE__) . '/../../..'); + @define('WHUPS_BASE', dirname(__FILE__) . '/../..'); + require_once HORDE_BASE . '/lib/core.php'; + + // Need to ensure $browser is in the global scope. + $GLOBALS['browser'] = $browser; + + // Set up the CLI enviroment. + Horde_Cli::init(); + + // Need to load registry. For some reason including base.php doesn't + // work properly yet. ($registry is not set when prefs.php loads)? + $GLOBALS['registry'] = Horde_Registry::singleton(); + define('WHUPS_TEMPLATES', $GLOBALS['registry']->get('templates', 'whups')); + } + + /** + * Asserts that the supplied result is not a PEAR_Error + * + * Fails with a descriptive message if so + * @param mixed $result The value to check + * @return boolean Whether the assertion was successful + */ + function assertOk($result) + { + if (is_a($result, 'DB_Error')) { + $this->fail($result->getDebugInfo()); + return false; + } elseif (is_a($result, 'PEAR_Error')) { + $this->fail($result->getMessage()); + return false; + } + + return true; + } + +} + +class Whups_Driver_sql { + + var $_queues = array( + array('queue_id' => 1, + 'queue_name' => 'queue one', + 'queue_description' => 'queue one description', + 'queue_versioned' => 1), + array('queue_id' => 3, + 'queue_name' => 'queue three', + 'queue_description' => 'queue three description', + 'queue_versioned' => 0)); + + function initialise() + { + return true; + } + + function getQueuesInternal() + { + foreach ($this->_queues as $queue) { + $q[$queue['queue_id']] = $queue['queue_name']; + } + return $q; + } + +} + +/** + * Permissions class to use when we need to pretend we are checking permissions + * + * Must instantiate it, then overwrite the global $perms object before calling + * any method that needs to check permissions. + */ +class Whups_Test_Perms { + + function getPermissions($permission, $user = null, $creator = null) + { + return true; + } + + function exists($permission) + { + return true; + } + + function hasPermission($permission, $user, $perm, $creator = null) + { + return true; + } + +} + diff --git a/whups/locale/bg_BG/LC_MESSAGES/whups.mo b/whups/locale/bg_BG/LC_MESSAGES/whups.mo new file mode 100644 index 0000000000000000000000000000000000000000..9667c718ff3b947c9e7daa6c84488779098d77d2 GIT binary patch literal 77284 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 YYl3>UD3q_}#3#cMxfF!^{L0J!1prD$N&o-= literal 0 HcmV?d00001 diff --git a/whups/locale/cs_CZ/LC_MESSAGES/whups.mo b/whups/locale/cs_CZ/LC_MESSAGES/whups.mo new file mode 100644 index 0000000000000000000000000000000000000000..6c3ead7b2ccc5872745e1cb284f5d10c2ec59c9d GIT binary patch literal 171521 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 literal 0 HcmV?d00001 diff --git a/whups/locale/de_DE/LC_MESSAGES/whups.mo b/whups/locale/de_DE/LC_MESSAGES/whups.mo new file mode 100644 index 0000000000000000000000000000000000000000..d16377299a4de415b97a415dbfbfd2f9cffc6876 GIT binary patch literal 197368 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 literal 0 HcmV?d00001 diff --git a/whups/locale/en_US/help.xml b/whups/locale/en_US/help.xml new file mode 100644 index 000000000..fc472b968 --- /dev/null +++ b/whups/locale/en_US/help.xml @@ -0,0 +1,16 @@ + + + + + + Overview + Introduction + + Whups is a Horde ticket-tracking application. It is very flexible in design and can be used for help desk requests, tracking software development, and anything else which needs to track a set of requests and their status. + + + Whups has complex searching, reporting and charting, email notification triggers, and a simple permissions system. + + + + diff --git a/whups/locale/es_ES/LC_MESSAGES/whups.mo b/whups/locale/es_ES/LC_MESSAGES/whups.mo new file mode 100644 index 0000000000000000000000000000000000000000..e42c037b4d3e69cd90619bc5d81add54c5d17014 GIT binary patch literal 183534 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 literal 0 HcmV?d00001 diff --git a/whups/locale/es_ES/help.xml b/whups/locale/es_ES/help.xml new file mode 100644 index 000000000..b3f87e537 --- /dev/null +++ b/whups/locale/es_ES/help.xml @@ -0,0 +1,16 @@ + + + + + + Introducción + Introducción + + Whups es una aplicación de seguimiento de incidencias de Horde. Tiene un diseño muy flexible y se puede utilizar para solicitudes de asistencia, seguimiento de desarrollo de software y cualquier otra cosa que requiera controlar un conjunto de solicitudes y su estado. + + + Whups dispone de un complejo sistema de búsqueda, informes y gráficos, disparadores de notificación de correo y un sistema de permisos sencillo. + + + + diff --git a/whups/locale/fi_FI/LC_MESSAGES/whups.mo b/whups/locale/fi_FI/LC_MESSAGES/whups.mo new file mode 100644 index 0000000000000000000000000000000000000000..1dcf5ce7dae46f3490c52125ba396b3338a025d1 GIT binary patch literal 183921 zcmZ782i(t9|M>CCo{^Cix$Hf%NA})?Y-N*#6dB1Z6q1NiMkFOOAwpRtBPv2Ar9_mb zviiSX*E#p&@q7HQ$HV=+&iS12KJRnR=lfOneSecR<-7!bzD}2rkQY<7Nk}MlTSCI6 zSFBA)Sa2*MArmgd%=iZKIAIH>#eJ9ok6=bTjVbXb%!Ze-0w((`At4u5!aK1Q7Q{hV z2A@Uee-HEF2`r3%VF}Fhc|t;NY=|kaClkL6d;b*@Io+l0oyGrAug=SY111v<|eEQ^;g z58inyAz?07LDzi%eSRKYPma?G3DvL}w!=wS89&FanEtDTgihEGjpP03el-50Xx_ez z{)kC=M%QyAmeYJ4@{}3vmml4qqUbs*#QJJjgmN8B#D3_xc`Eu6x<6~syzfNkIf9pYIe z^)uQo`L_uPtuX_Z!LH~$)6jXAq5Jg#x~`AWd5)vwpTpAlE4u!?XG5M#q4AeP+t)<* zu^F0=HnF}7x{d*8`%&n)lVf=ndLCXv<5(J9g^sr#-Pg_Ner`kie}<0x4Hm&)&~;`1 zF1+u`qWNft_Uj)VADxe`XAS1Z_c0%Sjal$II`3`Yhq$t!app$znuyL{BGy+&~|2VMUV^nEoNJ;$?Sc?ssB{4Sb@qv-li#^-0yxc)--Db2aC?(BFEco=;@{($zog~c%akKue(z><{j$09fbjbk0U-aTmEj-vCOkN%C$ zlj?jJ|8`7Gxdght@|Xr|U^%RhRq+uli*I5_Jc-_qaz6!oU@gkeU>*E8)~CC`7?i7` zagK>D!Mc?9#ph`*hUd+r!>}UH=cD_4AlCnYt}DaO;rtfB5|nFVVeE%V`M~0o*I`jS ziRLrmQaBg6qovS$T`Srh-H)+Y2w%nY_#vjmLzoedq5E_u`ZuPbeB0&V9q2jAhxV_4 zX|WcX@5WdRTcPLdF|_~a=tQ*LbWDZM#rpZN{#A6m73licp!@tKI^TIrhrh@A8|e5M zehKy2(D?JA>#Br~R~>J|`j`RRqH%Ob^VA28XA;_e8hX#>#PVxsepW}fqVw)U*LfIy zzZ^r~9~aSa(*7Fa$by!0MDwHTDUOL)5sjxqv>SRJdShjL982RGbpK9c0sIeZV1X;) z9CSzb`7yNJ0`$CXNAq$8%VL_}LY!5w9_0?`c=NFXZo#^E+wWl?T4N&R$I+-dbQb9E4f$3AEj8bU&A)d0G|g z*P-`wFPeuGe}?#LV_(X1u_XS3?r)*L!h9vr`0AteEu!tBo$yZTd!XwYjh?#~(Dl5E z+3;Ff0Cu=IdX~j47{% z`LmpT8c<@1XN-$2;(&`23sbB{c8X&~_>R4ddJ% z&4oTsjFv>#R|$=y4(7&I=s6jHp0gEb+`G~Be2Tg8ESj(DX#SI33-8_RXt@TO-&R-( zdtptSiHZ0zy55UuzA|19_wWvMp6Y0Qb9DapXr3NG_jdpq|ETCBG;cFwc^0U2kKwzHf9g-br~G+HVII#cwg`{ctmst6*O0d!YTt#PY)U z{9QB;U!(UR-K}sBYoX&kjy_+E)$kL{gDL+D^XJEWlxw2<-v!IzP)x+dXx?{W3H%K2 z!kd^M^Cl!qde7a1wtE0w*9csOvoQx&NEX^P!{U^OpySPtC zKaZY|Tj=>rl`6!SA3X<^(f3hM2hGDKbe@ke1s+DnJBH@xG&;`rXr6wH<>cu?9&Sg^Utx4#Tch`4 zAo`x0jOJl>EYHVul$W9Vv>M&#&FJ`t(R*|TjrS&+zl`aVCEb_1(7e||>zkwN?v9?% zhtPPZqwQWq<60ieJ7W10G`=4&7ygFMmp((-pWJA_%INrQV*UMCiSk&q-#RppAEWbq z70VaUb=|;%m@Q-2-zsQ)qtX06jpku?^d-zrc?BBZd+5IJL-*zHSpOfI*9^CXd}c-C z&5QP{f{tGw&1dsi9*D*@3|-gLXulU@{dzPHAEE0zfzEpcjr(6LifJ+>OK5;)(dUn# zc^Hene`dw{HE2AW(RJ)b&;K9jJef0x^LH0|{tBb>6i3Ic60L)-w<((EHqq{}eh}J! z82a9O6divCn%{+JK9-~RV>NmX*T?#8X#3shx{smx`5Enh9liIdZx81#5Bj_``urYr z-GBhu5$MV)#-h*6q0(ME9#uo1_eA3wiH`pa8rM8@UtUMozX=`xL-c%nievF4x^Eq` zhxgCJXdb4c?}-)Y{%=O(-igk;7w^We(RF9OBfP(>qWO3LOX3);j4QAdo<_$_lOvq# z+~|DG(0={UeS8wD;aqh7gJ|5Jqv!eS=s9$qKcnluhMunsIYaqQOge99zVC_Urs#R< zjOM3Ld_F8bABWESESk3$(0P}|=c~|owxZ*Hh{k;wZT}sX!7J$c@5&X{(*gaSFf+Oq z6Dc1>*Z(`3-;BA#J{QJ9l$)dP!-vu5bI|wED)e6NLi4y6o&PMlu3ypneFKd*Ax~(Z z4t<^p&BL9sToheTMKqsvVtw0K?t$j}VYJ;7=={^MIL<=H-He{cJ!t#GX#20xI4_|2 zO?7ARHZ+bq(D)P4{$Fwl!^7_(feE#&3{WYA3b7uFq*${=z12Qd3q&2Um43=q93Ah9Yp6nhQ@yq&CdmN z-6`%0ac7O@LHiX%$1jfVPX)AnEi~?y=(ugrJlu!I+Z)aAFtqxsG&CvMU#&S=ze?RozJ&6AOV-gzwQZyec(RS~m<7~sE^`Q6t02=otG>>Ttgn6=} z=PwcMR|OrX7P{{G=s0cAex1)(!!cK{vl1bU9oW76jiUZk9%X!t(;H~QYrRxDY~66EUbjDVtM=w z-M^G2!o8}2N#_b(S0}8FeX$X~ip}sGI$zn6A+CEck#cJ+fkV;tEJW|?o9H>%iN^Cg zx^I^X)+I z@u$%f=)Ql0wm%oW6zl&)&+j#~UzW1LTA{u9oa$)|v&~}B;c}k;yPpN=a@m@5Z8R&gjkIuIT zo$qsWzSHP^_z@j1eff~@Z0NX^&^T(K``!?ZzYDs5{n7P4isoxFn(vp;c~(a^qT|1Z zeoxqqu4g~GPe-DsWBvK)ujsf}(fKmn9pcW5mW#!5W%NAMMc3I5jiVQOzDA(yeJ0k= zN8@<|-Ou&0{4UymC))l98s8~24?ki}yn^PVbcK+odT3snpyPEw??D$dKaZp1JdL)S zi;lMhlg=wT--cNKKH6_Tx~}8sIX{nn&q!7=+_!vaziQ}s4Pv=fv@<$iA9P*A&~;Bh z_h&jf|8wYmFF@mb6`SCjXr6yZ$4{sf)|VdL$IR$B+0cG@(0GcX@AbRU`6{9NQ47sa z8!Uny&~e6~^N+`pI0YSNZLEI}?YAq|??un`r|A3hdo+&RmBW0A(GqCC3h4M%aUj-0 z^YVJE-x$kV(RJ)Y^Lz};;V4n$HdK z`TN+8@?JE~oYg`;ilghOjLzQxn`2M({H;Rg*&UxBh~*!mm(ckCKh zKR%YHq5Ypj+r1I%H=^fc8+w0Fpy&QP`uThfJ%>5(3G2;=_OF1xH*2ABbU^pHXM8>s zUEi2kehU5korBJ|7VZB@tp5&;JE2yXKP`H%?nL8GM4wkf*HahQ{@%abn_{Y(E@(a4|G_}KdER5#AHac%h^nTon?(2PMzWSl<9!Kx} zQ|P>N(etnZ&C?n*-Yv0yH#+}8H12a~|10P@zlp}3uTIEEwP-DLzWQkUwrG4k(0TgA z@(?s{BVu_hn%9Zw`|~L@zUk;ccX=L5<0t64{=pKMp>Bw~GWxtOmc=1h5f?>2MaM~5 zFMJQJg`TTN(ELt9&&kWNel>c}wxi#_K1J92BYJ<6)erkv1dXRgEVn}2_eSG+9DCym zbiA|;!uQF%*q(Aj^xQ2#<9P=?AA8U|o{XMH_v0`0yx!I@Swbr;g^oKKjc+EJ_czeE zHlh7K!czDxx_=oPh4!V<`I=yH?2e6aDi**`&~Y!L`gXsRBM)Q-sY3Nq~eO?@GUlq$@Gj!g^(Q`T;ZTA#9-#j#5i_m%ZVqyFq z9Y1Zea9{60^HTxc&#LITZG;tYDEc|O4Be+==>A;9f|$N}vV`tf1|4SxI{s|*oGn80 zyCIf8K|im~#`1MEUs+m&^H3BmSC8e^XkL3^ZF~aF|8{iUhtPF@f!@n===|r={rwZ& zzqBnwzOtct%#DsyD%RhF=BqxMzroQ*(7cUC&+Dt`y4J_?esum*=(;YT=O;z0u>Wb$ zb96g;FZ0B5?PybUzI)O9cZm)_*Y_A2{}Zu14ZVlYq5YPi@4uDkJ=lo0Ka8Hglju45 z4&Aq((0*xKhxKPh+a;p&mx$%6==bEh=(_L6()b8E&ti04@1gVULGyA1o$m)Uzdxh% z-9X1n(I(`%Ao_XI0`1=${rnh$?#~Q#-bK;1=sG_{=Rb^|lMCp%yA@5*HndBN#*rO8 z4|&iyilOT*i{`N^I&Tv+j=pGILopGbLhr-MSU!rrSAIw1sMId3rw!Wfacqmr(0lp^ zdQS@88|H6>&fgM^uOqt7Zs{lr+m8tYTugr2v5(0Q`95AW@IXn7Di z&jR$`E=AY36+Ksb(ET}x-p{Ym_J5=C{D58B(`Z~TpyR!UN#EzuadxBaKf+3Q9BX2RPN7{BH1EBz22Q~0xDBh~ zU(qt1!{>27tU~=pwB1E)f`z+;bv=Zxa|Al?RCN5g=zea9_50Cyzlimx(Q|Pnmj6N5 zcU#x6zC2ixatZVvc0lvdEj}L*%OlbFCZY3hjrIG{{C%Zu{$-9Mfl^%;w zu7yc?$MTei;NAEtmcdWa^Lq=;f7b3HuLaO`^+4dQJ|b?LI@# z-DxzwAJO)|qn}Ivp>d|@8TKIuy1)6*`R+mU*AeYE7G3W&G@tX)&ygkQc)QSf_n`A0 zjGjP0kH16X_yHa7H+27Q#ro{`hjW~WiPYCX^WO~}uNT_>AvEqu=s5GxbuUBXT8ZXy zeSE$P?SBY8H(#Rb_zCaDztR0@_CWZ2?}hH;Q|LSk&~?2P-H4vsZRq}eh`xW0qvM}P z=f8^1le$-Uo*k_(g66kUEVqhwN9P%gu4@F^e**eBGz*w#e}cCAI(j9VqJPL=4s^a^X#2|1Cg}RQ zpyzN9-isr!G48`Uc-w&RK5m7bC{IPt`Pb-u`X0++ih*H2E27^oYNO|-3;I3y5iE_f zusCi**L4n!?=qIb>*)O`F(|y(%3>SJ52EXQ50mZ(n*T4+zbD*6&tcvN!+0go`l?tM zJEEUMW6*YM(f!(v&c7$tA4AW<8Fb&SqMtXn;`3^QL%&97-ddsi)d`JnaC|;KK7R^b z&vWQ`o`yMt3!D!s0(0Qhy`}tz5UxnuVU36cMqU$@0 zuI~bxx2x#+Nj@Z;=bY%cMbUk#h^4U&x~_5Y`EzJKUP0qrj>h*UI^S9}Z#&WWPN3~C zqIvoaUHA1^PWf<%ClfkeZgiad=shckuCF#4ciUL*hQ>bx9e)zqetL8Pny;1Udwe7M zJ^5WUAD^N9PGevE4vo9X(D3|z^xO=~KeMQjxS4H#FFg|aE#@P|gPxn~g8(r^%XkJI7?IxrBXGG_s z^DIK&$IH?8;x@G3DYV}?G+#f*@>O&nZlQV3^hg+|5E^eObe>vh9F5WQ)iKuhLC1dx zUH`~feh!`QrC7fd-Pdhs|9!FiIl5nG&~@KH&sp*j;r^sSgxojr&U!04%$Ao;mjoz1|=;wEp zvElP#3^t{F2nS-0apB*uKZ#FK{t;dOkSD@>^i?cE`Ae*ax6pOe9iJ>=9xlRSSmDW# zhpuQmqtSdX#Adh|9Vgj@urI|hk#cLa-OyN`iLQGMdae$j_xC)ykI5&7d{sjCcL>W;h%rjME7?n+V2%CjC;`eE}-+JnjGdUh&3qJLZ3g5iTFZ%z6rfA zpJGM4h_3IhDPcVg(Rq5u@^ti^tVHM8hvw~jOvDURLp-I?ay#@qJc6$4Wi$`(qwD(; z-KT$Ixx`ap{AOsp1JU=|6!hF|jrHH-2+IGV$;M2wnGRtc8oQAAXIku)&P*-{Y8rB`F_6_vIO%7Fd{jX5+Y3A3 z^O!U)y5G0Y4skTZu9OF(=W8E&fB!_^F9n_pe=1WgLz@=Z1UzDGsGv^@U^!8*wGJ!*27!=jhvL z9`<4d{29&jUGu{~2W^VJ&z{D6@lCY-OW-$&o~CovcPgtuX`m%`_7=4f8@bEO2jf0faGJ)#exKJ<7&&TJvUk;ydMbOWqQaB0AqVMtb*ag!r3hjEM^9)4i zAA)J|vG{yEnvW^y_lZrI4L?NVI*!hB4()#)&CjoBe1D_;GQ1Ma*y|6HjLEmqS(f89%G@euFJU1{A%P$GGL)$%qp5K|V zybGQGH2VI?ur!QY6}?ZLVtFju|7CQZchUI1#G-f$J*P#Mh5GtvoCDFgXQKD?^;o|r z)?Yx^oBXx#UM_;Z7aF2@8jjBM65fNm(D%Vjbp1`2hd2kKDuPqvN;3^f(+nALF94(fhFsJtu3>ylzAD@H2W( zZeJPBMSaXnxjA}HyQ1fCD0;5Pqy3)6RJa~JPn*$v?L^n}9lFl6Z-j9Qp?R)`w!aUJ zt0($>{Xz76PC(E3)9Cr0gSK0N_FIp}u@znKeso>OV)+buUN55KC0`ZJT{^UXEp&a2 zV!0!F?s{NKd=8y=UVOd^9e+J$!5wJ(PtouBDc%hGlLu{A9eqzUM%UX0UC$6S-ce}Y zCZYMAhKcw}bO+k*44S`-(Nu4R`b2cxQs_L*qW7ZhyJ0aLiLU=uG`}m*^>0J_?MCA| zh?Vd-*1-&`L%SAep4y}N=!33r6xweJI?k;4{6%#9x6pPQ(eGEg(9eTY=)U}ot~=A) zVLgS=_GQuMHPL-&k0r5ld_Eb?|8wZL%h36@$ND{JyvNb^?vLnu^8$L$uA%W}TNB2~ zi{`N`nx~fNc(TLc zpzq0#u{!>YzVC~y5AT-_==*0pI?rk}e;d%ee}cYmen9h=YD36pAvEum(Rr((^VLG* zY>JN82K`*>h{n|geQ)%SPRAmYS4WRwU&{Z)a*vJS`D8TCRcQPt(9ea`?}Ybs$!I4m zPW==tif^O$|vtHeN%=OME|kpKgh+ zcPSRbt?2vkEP4r!7gmM5b3Whu799cX@U-x=~-61{hgur+o?&(kXO z9KC~{tM}0J{z0rifac{>biIG0?b7WE>%ARae*vt4mC^e(42^pX+I|LlujZiVc_BK_ zt7!X`=zCy2+HM#6-uMW8ZyZO@_jl-d{}mno543%X55jmE(Dh_T`{hBO7md%$qVZIX z&uho}=IHqC(RDt6#xo*5pM;L{4BCHgeEw3bUlq&i(e?H~^U@bRr=!q*v(fpUNAtG~ZNC%9~0R|)M`6TMGuFlj%~{v*(KBhmSuK*yO8pD)6KlozAx`w-2~fmr?$Js01i=j0M5 z#TD!SLi3tzFaN$E8Gr9X;~BXx&V%N45t^U3(D625(!D{tB^*HS+d=eRoJBvs^6n4! zu>zK*+zNe9jl-mW9)f-z>_gY_Bl><#_fg10Vf6f0Mf=r6=kJdX<0IG#&tg$5_i@P6 zedznSPb@D$^SS~(4_h!1kHzPI#ODbILjJO$>n?!it$ef!dM@ul&-Vl9z70m(k3+w& zJcG`+5MR#nC52EK~YxDzjzdlCK*_l|rgpQN^aL9W`bl-EK;}t;jP%c^n zU3Vj_hMm!I=b)bpD=`t99SPrm9z;K1Ucv_W2|j?CKMmiLhhcZhuVH^oI2z&^5FL)L zV=OxFWHfK{WBuD`e4Ao<7rIX$#qtSs|IVQMdp3UeuAEM)agr2vP=sx{{<}Jl%A&xBQIEk3_9*DL<_n{Bkei(Z1$H)5T(DlB8 zp0{=A{0E~a(EIouI?h#e{*<4Gc(bGBQt0!V==e?1@w%ex8i}rBCOY1$=)4=z`Szjr z@hBF@uhDj?zX9Zzp;V55@BL(cjSZ{D=0>dLs1C7cGMBXBjlUis*Z*20CsR zG>-$Y1dhU_?=@JI@>cZTe~Z3n(|#G=b48*}(fJ3X{l=r`VScP%kG`+>pzGR?#&HDA z%W-s_XX5i;(7gPOj+<~Y$n*$@>TdA-3smZ2)f_X(0ei; zo&Swk-h!T=1L*#JfyR3U-H)s2e968J>q(F1sUB9wiP!@-V#_-%Op5c>Q@tbu#bIRA_FdCrFSR1@^`rWgADdlF0G z8npkZSWfd@xQ`Xl_r;LtbTnTp(0jfO?e`}-UV-n!`@Su@&lAx+%|!G00=hrT(R=oO zeEt=Bj=o3t`)4%Y3FksyGoa&SN9VZ{Q($w)&){=diP*U)>G=7$hho@gQT{FIK?i1kg;bJq@ye>6JY1oRwF!=(F% z#7TxeV?8|&s~Zi!#Zz6%h}L=`OtBSU{S1$&fgvVzTO92$3XP{ zjYZGR1~f01(SAA3hx%HWNcnN}y}l5QV;g$D&!F$WJAMlLQvq$)3p?Uublj8J3zJ_6 z-|PBf3CbJLbN&_DFU`fUo)T!DDx!byZHS(~L1^Bd#H4$RzDMVyd0dF@-|OgmcN=<+ zKSS^LuV_A#{T#--1IB&@1j4U--~}i??a}`;k*|^=dFP5Uqh^k9nd^HhrTzLqW!nvJ@_R${~f=CdGA8^ zqa-F`6LkLvqWKz%uKx*io;jHGxfbiUqUYlfw#0AIe3tn&w5yMPE_FrMHz<~eM<<~B zFdLnB5xTC|&~*XdIi-c|JzR{RWNqB0A1hH17Z6^VGkEc(bDO-ieN16wP0GY=CvKI8H&w ze;Ym5AENKO%jh}C_^i_!D{9Tvefe}s6;U?Sxj=zerV z$A1uA*D!P)_3gzlpigHi%9?d}4y$9`o4t)<~{5#zLD$&m9^D$^1mZA6Ihxoj})zH2H zI(|QN+&SoeuaD(}(M#xiF5^Gp`$H4-eexhW&jd`wH_&x_9P58U+vWH-+^f>~JmqHS zJYS*nUXA9w7RITHeqMD(^YJv=Zbf{)7fVzA5p9?4dieaTkL4(jz@_*a7QjX~Lfiu| zk@5^Q&bQF_@u%o`e_~xMa5MaS>fY!%U5P1hGx{Fc7R$$C`8e9{GI~yKqW3B7t#F=l zpy#t-v}&|vv=@4>N1}f(dJ;X43!{tCd$s~SXB*J>%%128Ohfr%^mnxXHT3)@{1?oP z##I4bM_u$i(g~e+C_4UhG~So7HLk;?dyU?=)O>2#J`Z}HE1~bFw&>?cFaEO`_Qkfi z2F=TVXk6)&B~Lncx1;O62hCq2v|UH^UOs@XYbd&oQRw{7MVF)ZZA*Oq4SIjCqVuFk z9>!0H#-9}(KQ}slVRW4pqfN0Ozjq1`(rY`d%4cJJp46dTNp!y|pyO3T=V^qlzaP5(M==p6pzW8Ud0L6)doOygPoSUU zH!x|x(}eg7qvx#}I&M9*eOs)HkHz|T(Y)=&^7swfFLT-uM=mT)xiC6^J9M2x(RDwG z#``q-{+o;DbrqWb9kKpM^au1lUysi-r3>rJkM3g;bi9h_d8>oY(=6H!&080Az5UVs z8jj{+Dmwo%blscLxc8y!Jcpi#oALP_>BBiIjK*6tmRq9h>4SbQk4EELfR6imEN_bC z-RQW-V)-IE-@oX%Su=!n7ee>1N-Q@;_rDwZejbb7m&NFN=Y!~J^uGOtt}{!dSDw@xk=zW-vp6l1qb!?60Ph$BSOr-t_y51~VLw<^){VSpM4P&_rI^Q7loDWCm z8yBBXjrH@;eO!WxxEh`R5SGO===YgS*^(#y?^>Io?}2Gp1m8yU`5Agnu10fa5BaK! z=CKzR!x?CPH=z4-1l{)^WBp|`-t>2b_1%HyuMir4iCC_H#$7Gi5Irw#(R0`n&Bsvm z{7i}Ub7OfqnzxPU_`9(&evJ0NJxAzQ0L@2vw7x#Np7!Yc4 z;yyIKPh$Bb8rL_m{xZ70>*&2nnKR_65Ei9e7kxeeoo^U=Z%3l@%|^#xfpc+VtZ$Ml z#N7kkpNG-*v(Wd=a&(;S==<^uH2-JNdwdaH$1OD847o!bdC>D(2>l*Y1>MK$Xuj&A z^W2N}8yM?Hq3@UJ=zJ^D`PQTRu^nCK!T9_ObiHTL@qa+azl83`Ewo?eJmI|ON81;R zmOlhr% zqtX5o(EXf>iMSA5_j_o3yU=z=&~ZMGo<`5dchT$U_}TM?`3s`^TouhvD|DQW==!^& zaX%Q#kD~9-DQG-P&~?0n?&rto{HM@$o{jYv(f7x7bUzB+72+rxy$5aI9G$N{y1pLh ze)mD&V~=4qT!*&5fPP;79_zE`kLy6k>4?sEKN{DA=(!(`_L~xY9o^rLumoO;=15GQ z^!Mz#==~dkWpFM!{s-uL@DntD-=X_?5zX`8XkJnl2>0v`bX~d7{N9Ciu`Kq*q1XXG zNB5yb!Ek@eMr)$uHH~&b_y0k>ilfnUKfF+Q@65tSDQ`mOEm=71cX>4a#%R24(f3w& zG(Tf8={53*#`uDlb@m|Uc&^-Q(uKQnf-_jQg`&Al^vn@JKfAo97{H8yaT`^m|n!G|%_P`oU=br_pn<9Nm{yX#Uru@oq!U`DbW8PQ~&iwEZ9G zK3iF_kIpj`&EI3_KEDwCB-SS{6UHlm_Aif)R~0=s_0Vzp zp!a=HEYC#OGZ)SOD)c<;M)&g++W%K{zq6DL?}4i5KJ`QA8;;KRIJ!@h(EL4(p7+_& zMQHm~@%cJ*{w?wOVf6iQ8qMR+v3w1EpQkSu;w*&byB2z$+r{$G=wvjW7t#5aqVK~u z(EG3vjej2+-!b&Op250!8J(|e`Ov=!8dqy{T|LqL=#QSaspvQ_qH!-r$KQy?u@mk8 zG1~4VI^U0I{C{FW%zAgQG8U)Y8Eroiop)9&&qv394b8(^bia0^>-`d)?+iN6ud#d+ zjr+C=$&>#37o{jQQ()mX7a0A`{Oclep+0bz+ zq35qAmc)AKemsQEH!7B&MAtC`UDsl)gd5RuenQ*-iuS*Xj+?wvFfC4|oC%Hhc{JW- zvAi0Mb32-c!&n+G$LDz}hjB}y^HoOUxd+|Xc4$5yK*xC)jbj2j&ok)Xr{-Y^T!+Q* z6c)wgRlg#Vv!Ze5M?Xi3 zqInpN#y=e$cL65iGVFr8(YW(f3;nC1`Kg1((-WO{0Q$Kx6pd##y1tjucy^=jiHqoZ zZm%BZtB0Qq(R=z6I?r`9Pibm|IPOB97e&`w9bH#lG~VXu zeC^TkdZPO_EY^=l^EMqT;(T;{2heuM(0qK0em-4C*O{|s%nO>=o|tqFVtGRJIW+Di z(bZ_)wxIESiOzQxJqH)ie5bxA^eckCr|(AFcSPUMJ<)j|N8cOM&~?0yehzL#(8GHPCn)qWjYhU4IXB-4mm;(fMCN&-E5`oHOWtoJZrog1)Cx)eYn4jut}m zR0i!=5k22E(fDh}asza{#@G#A?_O&HEEr7?+~s z?L+tP3-nz7ipKRPmd7+LLcXhECCY=*^Rooa`}@(0*pYJ1mLY#b(D%^@OvK6PelADP z{r*`013F&nR-wKSy3h5{_e}R#9)ZR`3zPO8eJ@=@^P91C$X^ajLAe-u-%6qRs20mD z(Q`dC zK7R~--#?GWwGeIhRxH00%lpv%ID(#+i&zT(Mc+3?+J*JiLgQx)a^t2Oz1lEVj@;T+jYd+I2c{eo0xR2(ev{IcE$`H!utDS zBITKAUe=)bdIz0vC%Vr4=)RmpREtUNQsk#y6v1VP(ph z?hErYMDyGRy%!J0`cY^eC!u+tAD?eP*S#}7KY_;gGkOkgqH$;J6!MoH-LJyv_mj$K zyH4o5{n7CzqU{!9d3+Pyztd=5&ZGNr8J+KDtk2vzue_nJQWzch8Bi6S<_qiuJ z&O_+A7#GVEqjS*yOVN9_2HlUn(NEENPNVHEq5J+Xx*wUlgm??1c_@j#4=SMT+oALJ zM91la#`7q;uT#)=v(P-fjK=XMnuib2dG@2@e1)#_ELOxnu_YGo8uI!Wde3HJYkU_y zpQ*Zqf4|TWn^1lRJK$&76pMEc4#&on-$V0|tVf6|WAsk+{aX_Kyl#!IX8;=Ks91g$ z&Hp0wJ@+QM&ONdID3+sq20iDQdxmjxpzAA&o`>pK4;!KVpGN0<0X?tF(KxoC_u**t z6c(fWJ$f%P+#mL*6xO6%5q<9rMeoyUH2xpZ^L7pEW5x%!+jp z_HuLs8rR2YT;HMV`WZb3x6pHvxmV~{7Ck?W&~wlVov%A4;=}0sWj30Z)v-zTH?AzeVHE)i1&YjzZ&o3XN}0baC`;G{4)>d>lpdaTcBD7c}la(eYFF4{_v1&sha@ea+DKbyuu~ zBhfhCLHBVtHpHLM@yiSd^VLB6HAlzkkAra(7RB!|5z`M0=d=_Sq1+tJ(=hb;Omx52 zU=`et#(N9B_gMyob(TWssfX_0z0m>aeHw@6>pAqiy^QwXgYN4$==u0DmVZaj>os(| zWDkbtInaC-#2Q!u9e)V=`7<$=7oqoZ9VVSGbR9d4y%4<>%{DmfOL25xYoPnl zGP<_MvwAUu5%rFPTs})@K1DKTMP~7V>mkRc(nd4Ogf*@v*^6P zVKK}!Ec|oiD(HND(RDn6=5Y*qj-NsE`3jo%4Okbqq37~OtWP&QjFT1JuS7JCn&{_c zujpX({ym1~e+)YAoajrqlJaZlx?4OF`nN;-bwkh71JQ@j_#Q|1Zzg(=md5&ZvAh>u z-{9Do`Pztd&3a)e$PSszlRO+R4nHo8O~E3>}-4VeY6it z;AJ#_IY))}e|dC&TcdGyK-Y0Ux<8Mi`!F>+7tPyJbpPLqZbsk7yV3S1qvz3e|AnqI z)#G73x1sN+9GHmZV|_a`4_(pry<&L~I?gb3KPRB`zle_W8oF=q$L9yoc+ST9tLQmP zIXaxPoanw*Lg#CMey?thj@uiZ?_qR3YiRyc zj|q7%gU;6&&37xbU1#)M^hM(ufUbWe`u-V@j2QP zdBOu&3cUxOnX7*kCP{aRu%%A?SBi_!VEM~|R!e23-nZ*>2QO%L(bM&ARS(ep6` zJ#UlIJgi0EN1vnj;vckq&KaS7X>`2$==-V*7Qjidyc|70htP2^qwCB4OvqCmH15t= z10O@@TZiWJb2JaXpm|FFY#6^XTHgr=;0W~GoJQ}@zv#J7oEhT24zfJoV7>OmrQ)u?k+o?pSDch;ITmrMwMYN6P2I{VR#?LkD!daa<@1s0CmOn!CaT&dLIp&3P)D5kF7MtKEY=k$_I2+6l>l_hXioU0g zp!@xAEa!MJ)YpwZh~DQHa6EpF1F`*r@cnQ*4yK%cVe*7+_ze1cq@7**)@8_G?8F!=ca@iJQ>k` zSuic;##C4keg7B7^f($_&lEJC7cn`$f%bn39d{%8etHj$|1kPKIUS$>9{m>`C*ida zZx(bN`O)`Lsc2nv-i~PA2BPn=$1w%If}W41==`6e@ti>4Z)f83Tj=>Ivplr#ho0*f z(D?SC=jt?;$CN9=J*M2Y3TcLHCDjy(eZM;8UDUj8(UL;7QOeU(f3}ew}KVX_4PvY_#ArPw_+lG zi{8UztHbj`SdVf`be>sQ4c|rM`W4M*p0~q%ZPEQ7gXVKabOn0ecVQ+xjQ0N;oiFX0 zaIZ_E{rg8pqT@UjU5cK+?Pxq7q38Dsdj4;sc}=@E#9tPDk90ym*T$gzUcfZC9qqRV zy$?rX{r9o{XY`!^joyO{>q7gy=y@*|%QeuyPc%Z$X(#mDJ&Y;v8Fas9qw{`<_CFB) z8Y@!1g5K}K>q9(c(Dl}f}r_lT^M)R-(tK%o={-@d;_PaPH-COj$%tG_<2D;8Y z*a(lIapc+(zJFB2l$2+n`!*Y0_dImnE79}41>K(`X#S5!zlr{cuICr@{9i-ky@k%7 zVQY9l=0@XhjAd~`tY3@8DSw5=k?OrLZw4$vxgfgUrsz2wjOP6rH1CVibu2^YTZ!g% z6FT0m=sxuP9z@sm6?)(Qh~>1~LVbR0N_~}Belj{A-H*4?_t?Q${|g#ds_nrd(MDLF z`hMvC&PUg=CYF!J=NGUw^?BY8@9jb8IeZa~^J7fJZ_)R6vK`42&SG(N-t;@ezL&%< zlpA76d=(w{V;qgSc7^z#M?YWIqw#%##+CYmun#4$KIMC{49<)0#!{4jL-#M=hv9Re zCAxnju{18ms(291Z_3@_+~r2kMI~H`_0V&50k`56oQiMmNuIC-%kK^AK8l?v|Bjx^ z=KI2Xup4?_N2BNR8O)7y*%#~Y8{hXv^SZaI3N*I+~3kLDrc$6-CW(RL-#ew8p2)*El35}%($@5>pq|7CQ%TWI^+4ut1- zpm7vJ`SaZDM^dbl$;eeul^AV`BMP^mA|?I^G-6jc9&$p#4vvdHx!GkDZIp z`5(+C#g`jBSH;nM)j~fXn_*de0$s;yEP~t6dC#K#{zT(XcQC9k5nXRtH0~!=YU^v|Je7*V5=X zwb5}KqWNfoN&ox^lTmI*r*8amh{3=0MI3)B$KMId_CGHmAI=chmAa{T@*n|&|dPy4@!r8a&4@Br|0 z8y1XnyoUXFo|U#g(Uz}$34if?IDe+{=Q_{-V9Yo8J$>vGMhXA9b>G|FlKGq zz0Ra5;`sLWCku5$a3%78%aO2_cxutc_rnp)M>#cP6^?U$NnP6*TWjW9%N%u?@0f$} zQ;&APVjlWGWV)@xfzpM10LiqvuUZSozeY^7e|9)D=whQnIWA|hne>TzXICaN} zXDZ{|L-{Jt*2FaykL`LfRuZcIK~m=A6q0`pzZ_OBxlaI@C@VD<=IBeMcwbTnaz9y@CnxO8^5RH_q}nP zFca?vo~_}}d2>i*7TWkTIId+zT(5NnX!kqg@4$B%X8_M$V(zlUk_$&-VXPF#_>p$? z?Z{6j+Fx>>_^cCcZ^b!63;rHWc|7%-X`6=M`}3d_<%*2?|Nktd{wcLxtYxv? zG9Ek@>uht8F<+(cNBmxZ-+TO@zKhH~ZO8NcEWcM|?rX#}kKaqtJ`e7pk3V^6^K*=? zT^#>Z%vseq_gAs)9?HFl{cYMWV7>{A<4-?+pF*25|0llZ8TU#4{2JT55}GDdX6$$A z|1f{X((e(*dq2)IEY5q4XL%WGL7X=gZTzW2xi4e-GlD)<_){|Woy=I3>6ef4CHmH- z>`yA{no?Ii#&MByYJT6s^M|P~7MdmOh!%=-S{%c?6L1}U{CS9ezY^mj>K~)8KePG$ z_4xY&+T9!bkB;-%W)-}=lLkw zzQMC+s4vc+h18E=t_9SOV(g!2TNU}o841(*eGGl7(rzB+r!GHzThg`;b+=P@l)mSv zuZREpxj_BFSeQave~$6|&Ddr>eT(v^CG9pc{{yt?%d=sWzar+N)cM`=Y353#>`y(` z^h6wM1nu6ZeRIkWGIuiC`STxRW~H2ywi~G%idm`iCmZ7oqwb$L-ZjR!oBk;&_l*5J z(bu0$l>g#c#W>$TjM1NV?=s&1en!W&%%abDDi6hRAIA;!>&Y5=QJ;c785yq>cBAgg z*zOX)x953j`p@E7B6Ivd+Rg($uB*!b11!BSy}u+lvB8oPr;s>-AWJTaEnD%(sRT39 zjHHQ2Gm|NnWjZXq_oc(qd+)vX-aAWOU}0%X*`@ryzjM!hWi+xA{{R2`X!LG5_uPK& zIp>~x-yXLW>CbWeR|9SvFsFgzTfn@{%i1UY;lTgE>!)(Hf&Co#e?#~!ao-X= z-{aTtG|$EzpJxKIpR}(h?>`bgN*@2tPtTM2%@9BMycay50bb9YN&7YO(DPc{o51mO zem|mIFY}J-yDJU=`!3=R0doep9!K0G!2N7buWWDVW%;H& zJTLZk2)^w9S4n$YywCHrkI$k?p9bd#2|qv{OO)}u;Cw4@J+G!->xtKc>ap}&+!uM< z*K&DXg!{pyzbonf3z(My^JMb8uBUw);n(r9Zu78Dc^<;OgY(m@O#u5j;_u^a@f_mxyox+7_b~a-;5QE3LE`_H zx;>t_1=8;WZj@h_-!qjb__mYJ6M#7d_YU442KM2&r%C%^;PiYITrGa_`IP7TMlYju zC{OjU6G-z!aL4CwxZgnDyB${yp91~|{GLVJqk*{x?-%gqs>TxP-}Jd3W%)K``Z4Jr zOX$-a&&8g{?Z9y};@SErT|(H!r2k*a`UrmCR^1%_4Y(go9(s0xa|ZZ>xF<-z5!kOO z4gQVbdM06dX2Ew8!beDVbKKkbodX^{yS$9gC#)HQ?EhutcQf#F6`(zf{Qo0i-y-ZI zp8wbI-^k+ybT{&NAMqc;{aDZYX5fDlxb?h&_=f_2Kd;MOfq6gSzaaeOUJk*<=g)*c z7JOCm`yFpRHwM@D3D+}E9e)judzud(68Gf}_dex`y9wUEk>3W=oJJ5^>h@fXunxbE z;ClyeJ(uviE%D!{j9&rwGx(i^|IVbXQ-<#lkBYiDN9=Jyw z=5*j5K{|$?HahA0fW) z^?0!(IY3!HLmodN{g;9N1$i6*?kl`E5f-1emrMRrfxjca{{`-L{ALJyu-Elrygy4^ zd|pEx{vABG^7JR**K^SQ``xdwM*;UMes}RQDvYg=(yM^!fb&(je?~g4=`0<}# z2fVBgA^*3L?)Aj~v&zQrJm5zh=Tm^&M3|n(19Lv%Y%7$WP55Dcw*dcpX)8U`_&ETtn31xp)4(_9*{WxJiBK`=!YY_KV-ftrOBmDHd zlsbGK_vOHS68{~*c}v_6<)`N-m{Q-yD>v%p2%yz5aQuSwv%r4Z z^ZNl|ucREmAzb@#Po~Vz;H~HGgvIBU%{#J#Pm-A?)73zaN;l z^LsG9=?VW&&&r5J@r$q(fd5xu-vZ1uzaB8(A&-0WzJTzb8raXyCpfILCPZlEe?feP7%^ zBF&9)&+)q>ZaqIF?S1j<`5d_41>8po+v{P!r|dTb_AZoJ&#gTC+rZ_YN#Lqp&(8w? z953hDp6&_$o+Z(3yiR{1>_NCcKpono-AcNbIR3Ki&K$?=!*ixe#1>ChxnF=6e9|^{`XC9QP&vYf!$^N%J(^)71H8q<{EycH9x>Gr9P8dfG1& z_GGWaJAwZcz|SM?-3hx5aZkekM#}QcTzNi7+OOqsU7L1^&*LcnzYupbaQxEqKasHa zlm1oUd?RV!!u!Xh`6y+s13Thn`MV=Ijkv23R>QxY-#Ng==R@F`_xv6Tp1b3JF8==o z&pSx-9q)(NI?Pvy{}R7{;WtT{{!IKUc>i0jZT2Zq z4cV3+2cCTnub|K4#;mb)J+J$7$nzlS-VWSmeqDZ5;v2wiBCiH<-*nisaqD?7aT{@8 zOxj!09(sNc%!euKFNpgO+$*>-BP@L#_Y-+P6!;^+pTiJLHJ#btdT)zkRN&GG%&D*@K z=7Ik*W%~j!cL7GvyZtTqGO#!1eJ6)k*hj(rb;p06hkp~e_-rMQ^YJ_qoIk<+Ag{aP zw}Sf_r19jX2LZF5_($>kVGd5Pi@@HJ-=hiN>G}LO^;z`9cgU6VgTNo5F30oUL7uM% z<^}lm;I-#Rq}6j1ey<|_XGGke_YZ-)F?sxwvb=}4o@Y4h5yC!AK2!W&3hZ6@jpF_= z<@plnpO5=>z+dX{7kFkj^Sp)YJA{1&_!scLAO5G)Ru_@a5AkmS->dn30RKZs^Ec1` zW5k^d?D^o=b3@WRk1#!7qD=Ycm892md-CXd`VSNKd&+b_{MYdKPm}IN;5nD~kG*{N zCGP#;eJc6PINq0%=7ywwgXbsQ+q{3zv;|S%Yokn{wu)qDbjtCe7-=~the8t!0{=s^Gm!g$C2)qz@JRqyTJ1Y-1+B) zzfyegj8PYGX7x?j6rX^*)3>R!eL z!tTRw!g1Y>dhEil=N2Azb;|r8@PCB3SAcJY_nRr>x#V{q`0j)I-Ta3X8e_!yu1^OcOFT}^^CBPjZ z>~^012DtZtGd^GTJkKTn2NSs6)7}=C-%|Ev_m_dY8(~wx-G|?^!Sf^H|3KIVaKE0k zHv{IblxGuh8~HuT(|(<>>*0SazteHIJrgzNbt>Gk}8xTh1oNEzP@{tLnLYQo=!|JH_Z|3s75KjZ zqvxIYZ%(=z`0mJ0&sqFB{Jun-p3_MGBIVlsFZYjt@8P%?ye&SC|Cjt;MA#H?zX1Qq z;Cl)9n&8=h`%>KJ1EXR;l5`Ix-`6?5cM^AV!gje|Wz_Qu{1=f{&jY}Fh&1`<)A*mR z%JQ7%@8E+jkoKqK7oRiT@e|-)Zo~VlH0GK}#wwX9RA0zC!r2RGS)4=sW;_r<63%H-bPtT`$UjRNm-^6`4-WTz{ zC$M^60A8;Ay`@_Ka|_BfPxuV@ zf8cq&fcM`CyFFpgqgAm4?j`tNOg_I2(WNsS z{uAK37`PvS=Sif!Bfpmtw%6mY2mC|43`%-!+}ETW-{Gg{Dd2sR=Xp=!_LJ@fydMCL zvx(F51m6FF{}I65KLpwT7GZj>PMRCRBqhQaoCSj&YPWEIT@J$Chzmze;sf=&D;7@z~`T5f%Ao=REn=V8M8JJLUu_c-BuiQfdAp2q?6 zXwpA}a6KOf?gHG?{O$qVkH|w$i{Ci@{BvvSb1lNQ^Lw?!eE_^a1m7HC-{-C8u$QC7 z`%#4bj6A-^G)h@P5jUGa{P?2YXkcs@LfRor*NMN%%g#i&sO~Lc@Nn|t`{NOP*!sqF1=0`YZ^zZUtt$#J~`_ty#kC^)W1 zS*A7UAQ;P?;WPu8#NCe_MHH>oVNHsBqbo2zxZ2Wux76(FDV_ru6uk^X>@9p>Pk{OT<`X}A*|j_ znysYKYA)0|No9$5(pzkGYe}cpZMT};`fQ_?%(ps;FyxZ-l1fsocWQIJR%c~&AmUJ^ zQLiR*i>>-xZFpR5sZwtwm1>o2xpAPPLZot1VFMG_&qv zrBh3)o%$gP-fZOB zp|q~5?yNNRl7|N9Rpxq$O3>|F-_Q3Ojg_p-E3H1A6&f#@ZM6=L=F)YOWomtuQZi1G zezQl980L1R+g+y387OVKnA%V(8<77`fR^gbey?U#ZP!|D#@BMCH@8@CE^JK5$is5u zPubH`{8uZ|uGJBhm{D1qt8{xMT93b8eePhb*VUj=I}V1??8z1VT3;D=lM_2*ozB?~ z$b8$7EO%PH+7`u)BzsyQtI55cQq?-`PQ7W_?Aofpsqnu-V69nc&ef8=430|AhQ>%T zt^wRxGQYsfwO+q%j`~6~*>BDn22)qn8CzheF4Y41+@M@@3WBgWkLewPdI|qSy(@ht z4ZS&MCD5>}%3Enz&DD=eVH2NO3~;Mc*AUe#*U$}-fmG1!RE?M=n<&iMw9c)p&U1@3 z+P<31))?BO$+)}*KifKNXe-T?B!yp3YctO1^=41~8Z)2{y+w-Et1m${VkxfZGX&{# z(W!Kj<6G6;xqxC{FW2e%*_zVV=j#-6ndXUEY0RiC`t7PFujOkAGOEZZt3hQPq-z!O zf-1F=Y)NKR@+F8_WucZVF*;RRGM(?VmdKEQbtpumQm5Og^K5N2*;-o`31bkd zYEXfdq)~4kv|&sNx`g<4r*)`aRlLYy*XUZZT<&m)HdmjAQjvp}01>rzf3{Jd3v+L@bczTG{}&-)rBgOT+aYD!t=OegPER6j z*nCOz&X>M+M)2j-s*QtW2`@w4s?{(!9(v>W-F{~vlTjx zV$oflS{PhekIpt)a}d+9WFGKFQe!#oB#Y4D*4$jbqj5NvcCvzJYm6lN!^W|#u{0zL zlG>oR7zeav#h6?P8HOtb{FT1~w*Wo&JrK8FY<~MId3m^RQY_RDQUGf*I8+6Dff|U;Gw^!cT6W@IR=u{npZiAw?`%E zLjS1Knt5$xpj*8Y&wOJTKw0@UU(#Nq0>U`7^yN)clT+KSY6Y@XSyA#~Hk{Wk&C!}O zk0#bKA9f7Xt13E`j5k{SDnolJnW!H*(x}O`y|tj%?)t)FFWCpN&V1!&YgxV+T3&<; z(bSkqVwB!VKD=+~XGY2}c}oJ_G(A-so1RQ2CrW`SWe7DzQjPZ!vAJM-InNg!1!}(D zfXo*G0vRFfm~0?)F@|C~uRIVfa%agLk^Jz-ozOP&RT`Df zlEtWhBClA~W>k_lZMGT@<7lB!wwju}=Jc?pLMQXA- zMkfqz7p5ocqrlR%sCOq6BTW~WTD+i|Us$XNSA}WQ5V@M{>P1ZGG5t?iS%V)c4`Uf) zt@TVm^H|Vym|d2p$5@TddQXH*!NNOBh85nh;P$Rp6xz@)8Oyj_`pyR};WqmWEH|}+ zzq`_$TkN!&^&^2Z?$Ub3vsYnojQImGByg$U=+z~cR6@(vy5}lOVrVyGso=>ZlS)Qy z&?HIE=2nAtZi+liPL-#V-K_=D-(p}!zKY>0znH2Ve1R({jV;jz8aic!blRkuFzjm! zj6yiAzC?RT#|)h&0^LEzS96ew8Hi;Rz&rv^zcs7q4}^Q6)v#AzQwx8qxv~UL zl|Xny!>{i5j5in&>phKS|9#Gd{!6rLqSFfBP2O#UH2r$!dg(B+7bl_OnRUVVpdSa z7>6nPGAwbuyC^E@Sr`@4^pYsh?az)Fxzq^kEJ%!N(zG1}MoozDhT$9AH&q^=oE$k* zHKge}{aK>Bb4*8D5alw~Fw9v+)$56YcI%Z*(-pXO8cQk`4TkPPE3k8$VY1BD5H3)- zv_!0i%Yl@U3AG>udWlIcNm#08r!jvS8EBAI8R)}8Cr+ghe_p<#rlDFQzbz19kWTgpke0j4iW zvNXoO4pJSt%4P4~;(@u9PWOt&7RHVXQ}v}v8|ee~$wpkh%^}%>?;|g7bup~ks)c@8 ztT1y@-hQsqX8JbZ(@;o=)W>vJHkwPvBL`>mBUZCEIcb1)uiG$=!$&dWgrmdc`o z6qs}?b$FM2fio0NJ5_P#C)MkN83i>>mRA9nR5(|$^4_mY-3kTE3iA)tXAs5k`V2x1 zuTOVrR(iSI*zu6HhmV#9SNM(R6n;4_31T2Mp^aJZkHAfaHpn3e!Pc~^LPw2SQ@C7A zr*=8|A%^GdO0sWkVsd}kJA4&phKi=*(X$7rT;93)*if3QWfbhI(Y2&Q)4&W&ZB8{f z*ILqgq4o3-ytFC7m~*L6&_!BEBhVH$s)Z0!cUcGuUo>T=6(^s$h7`8cfA4Zryb+^) zXtc{}YekE?+0IRhLCR3p4rl+x@iZxGt8qxH>ycV#wo<=b9QhH{XfTYnMEe30{iR)DGVr2>Lns-NPgRK=MwLE?Zx^W%WtGjL8i(r0bA$hN?U92_h{&NFVy=> zdW#X;3Qt4ENRDD3w=VW2X>6@`dW+H+Zk1*(po96YcU|e2%`Iu+JeZc0D9ED)$5|Wmal&Z zLCSfmtsS-k7L$-ur-E2o+KT8d?rst`4Ay<`T#f%TXcg<)H6t4S-2T%KTX6K7wR$q4 z#_3iX6SdgX`N9Q2$aZl?H4gqBD*q{w>Y6D6Jd}9oh;EB@l@sQgS zr>RmYRxAdi7co4DaU^V38;CO*a7L!+?Vh++L2D`65)mG~GNGy3>@~q8Xx{?S*_07B zGMEYC$E~R=@W!G?U7Jo`T4(8%IIN5@*Lj2z&1%@mR;SWg$!1Ji_$7M5w8$vhMN_m7 zfC^Q+p2tNrCT(Oz%a=#1FB=3X8A5?myr__xR-Iyr5S`{~kZ>hxq4YQj;clVUlbm!C zzz96r1+(V zw31?%IyHksaB)VH4HBlQr|L2hB@ugvL0Y95srddUi*QT(DRUK+_Zv0vZDZCHG8I>? zpdxAI+J&}b|A!GN^3M!OWpd9k&5EKfXwThxR7Gu|PhbwE0L#)+3Pn16C?%S^3)t7! zRD_DK(u|AnPBz(t=t67Y3(NgkQ2^AS<4DB|Xb-8kNZsxV+jE+t7P^9CWeIW=wK(H* zrSTg2lj+4)6ZEw~`hVI60%>3-+}M0jMWFJuy@E7iTVEPVkY?+~W+m%r;|=ZvuC>-< z5>kp>SXeUiA=A*~Im%rcU#wL1Pn0gaq(bW?sT#!t(V4XyY`V2f=FteCiy?LBxS8;% zDHa(AUDP@>1rxPv+%zq1nA21mE^HKRqD@r;?MPd!&b6^*nX2bi9&xZ1nhrzevItQo2H4i0vbIerlbM6f zgwdkW#MCO3HQ*T>sc~B@3{PaNAqp>}1C)o2-0rFJBG%%#VD6d*lt;90cqXnz*IgY22&hacHGD9&$V}}lkLrXd)7(YiK zw1KXOEa&-0Yt=C1tlzPrVD_mf4kn2uS>6|@@T4RQvK|DjFXEsC!Cg+DK32X%fLRs4&4SU1T+F~P!;Lt|e9JRe;2q?7>H=VT)&0rX5g;!cHg~eLormC$u_~iAw zYA~bCg$)^5WNW_C?ou*$q&p1+w3cSYDdB)5$^3-k;ekMfYBO{dfI15X9?dqzXf44Y z>$Sw5MNJE<1g8t6!zKIi@&!ij>1#otl=U~;a{? zO1B^>L>M|xb1S4!W8xyrG()&s$O;N$#HvM>+AL=51<^ZUqGm1&G&3zDIf}@9FroAF zD92#}2jGl~NDZ$+WmIf>VywF{DZ_R5+FE(STD7;|YnWM65if*LBU$sCW@G$BQ?XDh zGrP&H4Z#j)^%lF*EwsY_jVP|%LZLMugJziB6R1+=wErQsXbPc0EhsU-;;^Fxy($Pb zM=q>Wn`e@l6_Y53qhotLaHCd}i1Jvl6bC7wsi|x`{rP;DN<-x9TtNUBCR+m`&c=F6 z`<}L;p?02Q5NJ)K>|#R#{gBQcxkB+0zEl98z4Tdb=ClqX8IHHaKBwDO!B0vXhn?m; z+bT9~Aaj!w#IiG#?1TE@gkPwhGI>6!pSxuS|K>2WsRMWx9##_k-p_VkY4Q{ zlRHEnLq3}M6!}0?g=7h5#naQiraBA#nnODzHjg$&PnE|eTtvx7Bfmjq6=bVyU(?SCKRr3aF(ht$7Ynhz;U)zpKg0u=3824He8CwLWG7r#8a|iWiL{ z)NRb#N};b}q&K?a^CfcmiGpc#u0kvU_DbY$VDR;9)%M%yD6l0B%SM!d(iW&n#zDXg zq8$3wdRt4+N!_G2V#1>@a``eMhRVt)FdDAD36mw*erdj6Qg6d|&S~c&3!E=2WP%6(9t!+?>WDa&zq4R@8%9c~uZYtz&1KX@CSG8E91;51rfE+KZ ztcqPah=8~%v^9$i(999Rtf2}NF%C47SWU|#23=wi12SJg12D-c?MVxoA{!``=FEYa z3Y%KU)O|#8BRvJ|tK`@e5ga>xqz27Ru3Uo;jUSjP#`PD=XF(8FnOL*?FtNXYQbMS$ z6HyRV#TB6a5$OkmwtX}yw}Ks>*ekkNAdF#2SSIHL^#yionmjXb$dv`PJji@X4G|EM zx^Z@_nxgrA)NeIR;A)L_zQsE=N!m!8W8=FECHLUMP%gH2nsn889GKs019sPf3}lPx znr3>=R<)<_JRn1SY^lFBRVJE=yEidrFyW=W&TROKMcj?4-a-3``CvS1LU@&XIP zf^;}0kQv1jaAqBh%4iY3D^dg38Rd%sy@Ls1P13+aTO&5!-kg+ZwNZj$5TXU4#3m6m z+g~ud^A)rssA|pJ%w~-Nq%me%27eerx0|-A=u0DKY^jKm!H43s+^e;*EOrdV;LXE> zPaPh7S`21S9pT^P!B8&jCDdGK(qd_leJrY)Y^5#SDWmMvgE4}I)1lL;*_tKSw*6d% za}YsU2w00*1!o%Gn|5|E((N83K;{*K}K}rL> zVQd>ACYfOqCk`e#T{x&cs=nQu~(dz6dt9}Qgpl(y} z8%h(bhb#Q=RqUS|OlcB9tC)eZ>5%d$*@fBDY;w`m?xZ!V9nIqmeue`YsUy*z4a`$|EZMn%ss)+W&o=Wi)qp^AngV$@sjD@?Q9Ii_FKRChl}OInc1psC zkCJtXpo(NDT{sS#&hed?h9dP%+HnwUO5>~#x`pV=55O4altwH@Fdog+>87`*rJRCD zwJLc5`xAKSdS%P1n80h9R*yuk%Ax{hgXb?Jto5okauCvz9zb zZD3Xf&}IC7ZmAk`j!Jo8zxmavV@{`uwfh|yd3QhRo!Go^xUc%8}RaGEf(VQL18KdJ5c82 zn!;jCxrQyN&Dm=05XZ-C3|n=oPMe%}0|kpb+_=aArE6--nK#P7o|i7Q+zT2`&Jl?b z@QqYJGqtC0sId77-(cIN(D?395!xGiYsWlbeHZG&xIi zQ>v}#Xyz8pmbgFbMV3|yA-3&Yl+7G)=_7khz`04-P94_p9++Smsso6$R*_3(V?mZ} zVYp;SRAkutbW03-ywXIGKb+|FF`k$Z4Z>6+J1!}oRvZg9K1w0*P!lWcgTYB4bT>-d z@`tasjfAj$`%2sPCl`#(Bw^~>mY@jEwgZQ2bJ{lztkE_NH`YP))7$3y6^xQg+u(5Q zUsxFARsHRqk^G`J$&NJ?BRriMh6EI<&>(n9`Na$yf;40$_yh5`D02>C$gKwklw+>* ze#ge-hTIhncNkPy2r{P^CJ=rLcGle71LrTOF#&X2?Q})cq42YlQvu0kXfq1Cdp!~+N*HotD3>)iP%sl_Zor7hp8b z)+K8LP3L^9m}VXBq}EGJ8J+SuD%=&ea;G4Y<#g1rc$(fY4nVRd*uJWhZnBI3efG|6 zqAYM)ue1%$r_wkSCWh3KrEU5z(^0AF-B+M}0U&B+kO3gkSeH0xEDt5!Mt0Baox5=aR5`<#fw+6l{y4C zSE0-m9|%{$Lliv83PJ)7I8WKiKvdvDSJaFc>d=qNSf?#Y=f&O={3FXMQW8WnukxZg zphp2$*n{7g)J7LZlatJ%m7dWcv3-A7;s99doqH0q!tz!uJc%~Xg32RCgtHoqBu+Zk z<_`$N8d2Rj$N_Oz^krY7g?2|D#dM{#jVd9=^5$%6_^W+1QUmSkw5*r0R1xxd~9(wVX&+ur(|cTw^_jE^z?P` zpL(*U5ZVQ%r2z~k2q&CE++w9MZ#<&Iip6s$Ob?5DY1?6KlT3+-$gNF}Ac||O1O_0! zBO_p@69jS#g;9^ddEiIo1DCo@TQBV5BZri82Hlm3Mxk$Y6lX06Cb)z z_+o9ks0Gb-(Yu3bF`9T^!85Jvu7buW67!<@tC(sLa}*JQE1NLT(r8^-(1m*Oix34} z=un8vK6*6P$xvuhR%ib;uvWzYu_`<$*rabOkCk_eYXdxAL! zBUQ^VkZ_7>bs^%GfK4r`+o4L0gF1y6cb${Q{|2z|VT zsKcf0wb@P|+e;i+Na$a>g5qHZWq17`3obbroReL`-ZSMSm>FqLaL2h6R1mpv@ zE(9#FA|&Hu(=+2c$D((holV@A*ZIeEFkLN`3;Tz|!WftWoWjl)kSLeR7>U! z^C18Q_kbZ8U02sRL}6{J8F@>(*~w&f=lL`d5cm!!HVI4H5eFCfUvHOm+?=0V)yQRr zLO2#^)?m@7fi$2kicyfz)GE`}NS=roU9ZrSs=^SktR=_S4l(N?@7t}_S}lsp$^qwK z_rBP04uXyGO;jou8t)Hy!c6Ea!q#nlBq8c$#2+;vz7E=t< zO~7wTFMl>H2bx}VB5qrXl2+TW+Gq?6i*$??SPyN4$SR#7+UhJ&vjVGeu0q3ka*_7D z$5u*X9mVoyQ7gfMCk0(eBnRZ;8S&sWWIc?`<wdbG zQ8k|5!%JhTgkw{?15@DzLx3g$3#c8KV}h%drMm8_LM1e$>@#W4u+oX*h00@|5G@zfrho(~8+B_gyc8y6a^I*J9$ z6^sSKT7dySb>eT0Ltn#@1SQN>z{6599FyB|;SThb%;QZxLsVd3cR%Mb}m76S$(mvvX!@xBZjZww;HB6_^U<;e^Aq z44lx?pl}gtX9X=*X(!Zngd^~}24ZmuFGpo|8e8G7uHI}?g@w-O(bU|8E+~j$5kl+a zu&6^E+hR{gcyRi4ANXcFtaq6y_n9M;8weGxk&wFQhI~gdWewLX#NP~tUC=4Qf$y!ip+>i zS%`}xhx!~QsU+zyak&&EAUfc5a5CU@OW@9alQT#wrOCWX&zL)CHYXpFuw)yhaP~_4 za~{IS`_Vwk;Z%;u%^(uVce+PxP9#ZE{Jb&p!WMFg06``_3cwZp7RH4`@h}hFh+7k| z5>Eh*mL`ialH|0C`yGDclN0;GT5gaog({KOciU}0RA*OFh5?3`BTs z1Vk>108)&HdYwzgC>2EsMn2kKHGU$FRo!>O&1al*UZ`!fp=i#aGx7V{T+Cvgp|NHS z$@1s?qp>oxVUskMO)vsy>_%?QSgdN$y+^G#+U#0qBMS(&CCHD^FGj6yJM&W+z1F#< zNtG=8Pnl^8bLo#Lot4IzSk;Ue53sp!= zv&3`Qkv;L#U?OHZVWzp;sLhkTXsvvvG!xmg?6Z-jF0r=qF=IEwc6QeUKHHN|v4}+uxFj-z7O8!$ z5R4nI>~3e8f4T+xk7Eiq8lG?3{mEwV%>=7h5o!?(1B#aOisYM+o~ z_5N3s7sFW2ATMDVQMuEkxl_*>6cT4&o48w&Dcw#BrO8^@W-znU)XuAuu@0GlpH!klI*+6i}6= zFtbZ_ROiS<5kXbz`*_YaEYn$}k>1dBX@VdGz)xv@G2z$GVx>H>N6PA63Zob#8e+?1)(>=ggw}e=EB|b*r)@P2mNk_BZ#Oea6Ium z*z#d1w;>va5Jzr(?uMb>M+GgbPxY%|r@~_2=~vOZOj|VxZQW=BjCPQtAsIxhM9dZZ zbH1s|Dl7R3jl(2&Ah6t2qqqXa>~<;$;FH}hLR)DPZQn}iyvkBV8}8@H5|y0K<64YWGIFQC5COIfn3a-?!_u`4|X$HTDXr{u<+Q;T66 zcIO5#_-90(N<-e}N`?P^8AE7p$hzN}p{qW`--Tf}D!^u~q00feS)q$p7ybp_*F5Oz zAhd0}lUR|H6BfL?)?DCr0)?1%NRItFhHOE_JA<{4p*3XnK_pV?qKMM2I$EDyb*>U% zGL%f-3IAmum(iN}elxHU>$=Bzyqz!ElI%4Tx(-T+I zb}uySZhkB{*s35b5x4ChAK8WV;;#NOLUU=?N@ro^i1nB)AGZ3?Yjy@hycly6a-e&A zRqoxKy6vl>c2`=+__~sstaHVQSpuNFhTSqyFdeD6rlXa9I8Gd*qu$gY_J_-bw}dF2 z?zH1u1KzMyBL`R-huVYEvtuFmxCgJEuBq6Kt&grY$FW@6&9#SUad^*TKN1uJ<~E`a zGHwguNPlT}9m_x^uFs;G;O;L>9W^}`>0?Ic?m9M{y0fWQLlY1#5Y;Ui?u>f9+|8ny z)Ahf(016sYO0(cfbH`;NCgsd5a(9L5A)P|FhBR|#iR|jTgFrRIzhwWu-R6tNItQ7y zisdBA3K}$XhWiWLEomx*GU`_GXqpK+E~8VUZN>pi8;rM$HB7d1J*|##W~-|O(!T6& z9Y$$khuwC=ED^%+7zsO?V)}xRWp>=5vP6qF&>E`rcxPlO72G3!A)Q5xn4U!-Bk&mZ zHf3ILPD?9bfjab$#pSH(4(xsyw0wYZ1?Z-^dpajP3sfM^x6T2<8$n~`1nuZ3pe&^gGxS2GU>*}F5*fLg-#B-+5g`cp(GB&f zklmYT|7jPjm_vw{9D#GLLaBn7lZq)!=*Uak9VgIJ)FJwUKq?cfI7~dpBOi4)E_kl_Od^M>!xtS|C?8Cg z45E-$)k@I9o=d7mWw~yz6-in6k-!+9I4l^JG;BcG8q&}JCcW-=@arZJL4zq9G6W{o zEM|-u2A?K<5RFk?wb&Pha@rk#v`$ca*rz8lOrvDfW>}E}H?QI05S{*`7~jjR?QC!l z%D<+&4Uhbrm<7BNU0tKHlgQ$rhP1JTChN_rBd7?_ZfpuyTh^+Ei<>#vdWidnAYiuC z;jh4@J#72$H~(Xa5xmnd-z?wmyHG2sMQEM{wcQp1WR_ynCOGR@;!jl$r&^^Th^g*} zqd>^$?x35f9o8i+nuUtf^)a+BjT7%jXPOlw{Fd|(USH}jC418AQl`<9Fg?u<&I(}h z#!q*3gn+p+yCU0iP+AoC1c}3lUYW0ELIX4+cQw@%Rz3V$v_@$Pv62Jd!NGk`QT*l| z&!Qr@h$G=3CD$A+FjI0nBU8HTSG0MFoMta@~q4`z2VwXS6PTP zR1;gHx(|Y)o%c{Q-Lb1e@d_KIQ70(NdZaRI+cq2ZNMVXdRu!&L+8DkpDG@(6%O9X)k3ZbG0%V~WbO zrVIU}cpGI-6Vk$!%4VJxZD6JEbftGVx@-inAUj7?OWw7TR%4j2h9<#I(PS;Ip{yl= z*ao-VQxMMtO)(tRi~w?9lP(=%X*XZLp+d6>-a15cM;6kWnavsX20IR#Cc2D3*J|Q` z0jnXrno}QlaEms@EFzBRjr2f%IGHeh&}d2u{y<%_-G_!$TkE8Rgay$gpaX2!5J+vg z>H!;L-cS!|rC1xxve`md8^TQ@iZ+kkkx}qj>2yX&#WJXJzsaWQly1P4wQ_KY6%DR^ zwsB<9d;`VaQjiB12WJ#Qaf3!h1^0W!x#3&;x<+`zsk+jXjG#suu*Qvnb8WP^;#e$_ z{ky`NA-`;mGI6u0^a!%5^!1_7^_8X4l>R4M>^@GIJ9P}zSmE+bGtAC8lbqsF!GWq~ zu4Ff45VnRW@kf&AaQa1m<_=0EbB5ZZgGL*Z-G~dQhh?l^+Ecq| zhJOeA4j!ECN`wDeWVPAR&AZX3@{u8Nx&Xk+uwk|pCfNA-G-P~?);ScFFknogn)3O( z|B*B!+qD#4<;--KYnmwRF=&s>N}N~i#%ud5!r0KT(+C?wd%(Z2Y3imC_~|d>0K^ud zkF!K+Sf;uSkO!lgVQke}^*AAo41fuVQi+E9slxG3n|~Qhp?EgY(!2dE^LV3Rb_qWj zv>2(}%*T>Q*UIFIsY59C&RpY)M2ARi5~9{$IIF=Er~)>#ZQqR9%YLp17}v$<*2uJ) zCOr;BiW6jE#~KAl(i^!l321uPcsb$QODqHEWt9c$B+~@grS)O_$v_1p<>)JA!eaK!5k!{K-lc~Ziib)y3^iDs}#u#X;2B>UX+Ku1h;oyK+ zgWwnqYwai)!#`}uq?#axU4Fxw?rsL+5coVZIcD6$^aj&THL0sg<#H>nbhJk;evuxJ z!lI<|Mx-f0ATfM{Sgi6zxT9h~Sl)x~KnL@)8<(*!!4k4A+kJi zZ;(CHNp52-J*B}|9kR2%H*e$=b}&l5kzrdf=y}}RqzQd7@(>%N2n~vf_CXr5bQmIH zJUD+`Y403b7yWPPsQzACASAxYfXY3~wSVAz=0t&L`kjSunAY`p?c9WLKxSQhWKWl1qe z+D4ZeyI>J$WZJ7yAF&0Mt^;fJiah6laJfac#j$&0o+o~5h^B1y<> zl(c|{kHr>`SHo^1ni+o>0K1Fa`~`4Gl`({3WbBBVu5&JF;kJLy*LMq^>{fZfMG%Gh z>B*H<;OCp5FbM84r$*TTqOyHAY%p|2l0_kqNrOycK{)dkWg#%q{2W{^NZM4R-x>{+ zK#Yu;V{Adfj@NM^QrLBB;!VPaSXgKhzamb0P)m*yL@Z0$KGX$13AQSmy{&mwRO;GU zs9*kRW(hYhO>?uoWt8?LD4@RNe!bcfdWhZDh z1Dp#)S9_JJjChtU;8lrQ}NAuj&_ zAugQ=;gxL#WWk&|;Y0xW!hP<~iEUg-x2r}vg8FM>1EKBd+aW+>~P zj9yC92eRTL^TA+|6v4Nz|7Jg;D{E#LZ+7?oMlR!@>vOwbm3WwW8m-di3sw@6-JW|o zh_19BLoQQ-O~d-w4taF=gy$N(oa&hda=2^@Dho<2x6_GR5enTy!gqma3qk z9kp`>$kG6tKr^{TzpiRgu(}8JMdl35ns5nZ?{pG%FQwm{znC`na&ZzSAa0Uq$cigzN$3M zH+^Y5G$HIk*r-Hj=1Lqzaz#lWDHkV}ya;>YB5Q;bsXVAw2o{T_1z|~=UR(Mrc9?k; zfC-)&Hd>6Dj8@+)TcJ~nr~4Oz6v91b8|V0KkSdU%OSpqvhtg5+f7T2+{kg*5qT zl#8TPrQ7EQV?;GqArgUjwX_P*SmQkRp7I~Dyb_eHx{z6}j}z5bdk5A3)c*1e*BYX= zj5~-}G&6e4{28>CFn-wGTgWt_h~!c$FZA_cJKD4E_Ich~HPN`xpvKq@Hn$sMbEHYS zHD2h4I0bMWX%}soJ^0$vjElfB%fCace+qu_2@nI%3`x2t_XB-NmgV`9?8ZX{z zgTXiZ97p6M$Fk^Ry%zn`II#V{br|`wM=dgNQ~+J{QGhsSwv%kShgcT4PGX|SuX7gK z!3mc&VYD@DiAuq{VN&~qmLemsBoNxJA0HAAqHVQs&tFE#Rc&Xd0mp<3wkSHJjze(7 zuo``TsDJ?kr^H@?VrQ?8bUq-vSi%~~n%MZ6lxK>L+}$Q=Q2w}C8n{Q=Vtm~BR!eMM z4I`Sc@O_hFD(p$2_9y(XkuApKTmz!Uy(?vVUPW)u?#*;*Ncs$!o2+^Bj z!7zo9p}0vQQ9@m{G?A2X$1Te(u*ssy{zq*X3Uo|y%VC#jsAj1kiGObgrftt|G9n${_(KuVyJZKOzsF^0NBR5 z)bPZy5CFzpb&9n;*WX|^5nBwX2O$}w314lTVFr+=UjuIIXv zDf8d53xXL7kJfCX`;O#T18ivvBO=_07>BDuWT)WcT0V&XVv^n^C4-M`K?4QX8l%G& zYjOdUKMRD}!!AT>xx@Sy-vtXR@!Jn05x9g6kY)(hQjjmqk#s&W=m!bZ!Ec?j6B6^3 z%`DmyD30C5WW8TTxxBnQS_^krjG}+o#D^)WwGAO9wq!y8f3cqyithORY>yI+j!~xD zj#rZB46?CT8KS_|C@}27EIazt8+o^FHDYuCEr4#=v~)!YP=t=mh_Ij?h68rR04h$T za6i-)&YHk@C;Q?Vc$3v-(9OadbqOpjv=S<-kl1D$!mlso5lSWVb>9@!nvb9vXNFySO=H zKRRGQ*i;{}`4IjmQ8IJy#k%}19~M65M+$Qodmzx@<7PG7x+c7?-3bjTb(r`wE=!i} z7mFb)GeH0W9kPGZn$;00p6X*`zD9(0z|^E9U^^y8C@C zc1QN{wJu$QvyVla8GFi^Cr785p?GjGMA--Xv5yb!NiE>EP*zpG?8g`ET-!9>;liz! zf7dXlbn)m+oe~8;yBnn_$`9e3%Tv?S>E&0t2rDF)9z$ERK?@_7tufNSTYp+rk-2rx zY`4UBJWA#LL zLmiwJy1UPJm)$+hN5-@x1jv+ZaIh}*m zrbIjP;hY5LA44(>(Q>gFV_cvL?0X@%W)~)ka{9KF4#=!UkCnF_aws4hwTwj{hukHa zUF2RyeurTOLDYw3A*tT0tOI%oXs~|=WC0u4K!2f<&2Ha|VJTIM0psyhy|a+p^r11P zntM${nffxi?a`6C6unwwB;G@3JR&mO?wv6We~jG%lpU&-8G!=Bq2OSvl={NiEm|Hy zJWb&jeFrsa3aX_?VIe*IjAP;YcK0**`2y&DxtcJ&^K@K zF$0qsMuOnwHu+!~GhRw*DI26)qgpEn`8fl9o5D%Wdby0@0Gf%+6DHt+9>vaQMPEy+rz? zA+>3Or?dJV%XrnLI5-U%KJkjZw3;0$xlIa_d>lLD3Duj(Nt|BbLr@7bRHb8%)aob53cIVdST9OghZi`WUf&ynH&T`Icylm z*_+3UNinqoW$~j=G;6#QfOwjL(H!l@u-R)d*2HMru8U}AyW%=6n&bEXuF2G)CCPp)_J0%`h~P_dA$PMB+QPv@cWy5y?cja9JKX)Msa5c(qkf zI6P{}()y_=E$wW;RwAKt!p`+!__W{Zy$QRn#Q~j>of$AnvLxL!CgcZEP>M0Je_Hg! zjM}ciT;WTVMzc3+##>61(7*+Y@_+yWn;C7+Vmzy(Il(MTyGC8(p)@|!<_IB#t-+;P zt(LV5$mNgWmT=EPCW7uXt+?$@+2{+)Fn*R$9X4~QFkHmu9n`_zXzSy#Tx-M^9o^&C z>9|jYT-SwdM?ZlcUS63r#@JxkFgcNKpTxZotu_T949wzLDVH5%Z=;#;4U}A>U=SHF zNDx%lNRtuNjnQWs$LO)4gVm;v;OLT{GM^mf9A$Wg4ufCj!{ZB!I_9SKG5wvsc8%S7 z+`hqd$PWmVB@tAT-8JJt*imGHm9qWl)Rj|V+gD)Gu5cL^v{Yl71Trl;%$w_l2x0xu zN8rl`(b(j+BTMB5$0rVIIl{rdpB&sw9tfR|B{I~ILBgf&bfirasC8dQcu`5wIe`h) zW{OU~Y1I|uI+}#N57QTio7;o=25TKs5Z%fU^hN2YC~NS%EkS&vSUmd9|kwjpD_ z7@H^qSXG;?){&Ym?%LYU?Q7@V^k41*$=HecpwN>Fsj@sTiUi3cJq5y`rWhq%h9R>R z9BRovU25>f$H7oc&|s{^-Q>h%y2Tkhd=LWKLQ9*RHgn-tqYfKWZ1$caqY4ZJ#=rRN zo*`d(K6Qh~`4xJBKct~TawNg(vV{J4n9hO+4A;ttfUH8{irO;YbB9(P92R&lkfGwBj}6wRXN~ZIyL5l)}L^H zG)^@3_CL2N5&WsCe(>fuB|?a8Lo?NO-iwjKOB?r4hL$Kj04OUHKU_|MVK*F+RlLabc1~jQy zpmhg2sd2>z2sm77t9neY16}r!36^O@cJ0fjM~_oIBUz!4@`HHsJW_vW{03z-+V|6xO10y2(!6ZXNoC-H_Pq zI9!q#Dp5oS$BtMhqR`jv7b&OUYf$z92#+yl6|g4Th=AH#Tjsk2TQ{WwsOORGwQNjIa0TM`SP;3 z>rxqR?npR~R4Us?gY?3@mPv`8NcaDiv1|grG*4Qh!guZCRfzt!QiLOKscI%VoO-8T zquew8Ip>m{@3#gDu5_;iYaQ_r)Df5k&5wQ+R~?4iUmH^*qNSKS4^iIDR4%W(jnfRL zzA*%l$WG_YAb_?w(TnmA=MgDGH=30j)r_?Q4UsxmKf_)j{~EP$qS0l#8J#NDq%j`K z%?cDKyCCh$=iKyJ&KDNc_3OGj>+8Ck)^&Hc*1<%aSgkFbt+M%Xn=pe!XPjzD6HF}X z;4yR!!6lQ;(##@%l{(*fnJkZ-u^Ibkd97n{^xPP{3qK$oYrNs4rxqDa+;}4_Z1kK7 z3Zr1)nEec25Y8KssW3UNSulRpWHj>xKQe~)5FvRMuXQur=m@RkatlI(kLRM)DHP_aPn;e=N$t-CoVkAZkB`8?9xK_7e_&1gO{ypfKvMYRb zC_|ItK+no}3PxiIwpgj{R?OKy$q)rk2zVaMGih+8MOs$6NR5-p6azhqG2oSgww*Jp zgC$6pJYO5~S*LMEj6EjqCxvmIf`rA*mpwzD0;Vv)2JtdD6l|!iykX+k_bw zuQ9_glIdzU8nOndLlardhS>3Q@dI2C*=$a@yy{M7b7|6Tm6ArGvF*qeivE)tvO>vZD<~ zy{g$fw?9F7)25Mioz67rTGv@k%=9XLjSD+EM=`oV%C~VqUshNkNM>KP2sx|)*wsc& z2J180fE^dz(2SRvSdOV-UQT^OCvf=+Or-5@*ygb+02d{G);KZ^t#rDH{Uu&I*2ZJ4 zZbdPSA-fbZ1u6{v9I6zcICpXou~&;2bnCd4ISx3DOeqkkJB?|kQ4m@YaPs&4{hn5HBm|j-D$=(aLj!<3ZN$PIhP;D%!>gTY!HdmPD7S4T zgb`qOcoY_y%p_ftoof^~sn-E$dgi%Gf76d#B~C)9Irg_O&UOi7-GWIo!(} z4Vwx`(c!uf(?!x;RuHq9Qbt^bsGLl7w3CcY8{`9?%{oBU&L_!!#VSb?hI` z#z-brL16$nVQ$+x6qKA?6{U;l1}2?rRO#~TU2jG`!yj{=v)tU(*JFTM*QtlR4>GDp z<8UZRM_i>L>G7S0P+M{K%2;c;-LR!GAX-3}5ZRU*ankeJ7?CZ4akkJ=sGps#2v-i< zvVaXZy5(ZSiy;M7Gd&^Z8*;JxiC{&U3k8yTsM~GmN*R3?o*Jf0kN97e$>#ZiFi!Z4 zA$Ko3GZrv}tsm{phUP0wHy7pnzAElE4SOT;4j;o`m@9VvRI|nEkl{w=_G6)ivB4?K zsL3|TB&UB@iL?$$v&RVX??P5|bC7-C+pPKE54gK5?GjZt2*qJs#FgHc3@1X-L~mfY zq$^#d(J5R?fD3eLb##$Fr}0CnGr9-(?In#QV@AU!o<^zdK1m~xAckxhU}zZnStVl! zhC4nPeBm?Mc3~xm+|nmNnMNbm!|~#4L??)1x`O4vhSxd(*dTEfV&%bL9ZoF0Q6%nm z&qt)Y0botkBu?Xstr-#yZA#sVp4&Z6zYV7C8Xc@*UZk3|&={@@qUDVxC~jm#rtuQg zxS4D)n6MW`!D8Y7mYvUzlXmU0gpI0!HY*IYp%6KCJ(Bmr%sM*Njl~S>LLni03>rb%D(;;#oBv2YB&f6BYUN z;?M~RhYlSx5771n%Zl-MQ9fM?*K1HV1Bug)v8+qRRc2S+4M(flTdYp8NH)FGkzS~Z zMGeIouaXE9LLhM72nRA^GO7T%4Mzyr=jD5=DrK6+dEag2cRq@YoTUyjrVbiwzQ^hgN(U*?}|SGE>b&tl|JyWm(02Gew6zth54(DjF~# z)Z4zK=C#ROv>RPzyo792gk=a2Xv4muwMPa}keUJ(qzmq#S{eXMS#@1p4y&*_ulzR8 zK;pPHp01Pw@$BxhE;}1)cetdC52Q?YXbmO^ChBXJ#Yk;#k9i=uM-Q!r#}#jk4+}uL ziB%61C~L-{iGuCXK-M;s*J#0gx|9(bXZf7%djc9zHXJtE_N5kOO(PukfssM+Dico{MP(M0e2lqU#u1X70(i z&w~!>zWl5(Q!jOqwVD%P>&}S4=A_A3R5K;q#&5=w4+Tw$F6T-EU0)k*MQqRJHx$tBSd)gvZD`^O7@9XOaRt&~tm#T@ku}F4yFaQ%giBTG(eNaE4=H|L zAl=RzQ1=XNvm9zui3DzFa8ZdZENxXRMZW)rqF!TZyJ|Gq6)GlmL?z2n2llW8YY*LY zDTPbZ-hgcaMMZMl7QHg*bfAL~;app|;6&be~hEzqt)&^E3l0d{z z>dr8>V>^V{S0xUapa7zy!yiE}BId=5mjYuD!uL)KsJS|mZ5C5xMraP7BWs#oU0XT9 zs2i&Qr^^y#(2_6c0*S=V7%iZT#&Yi;NpJGmNUt@b^GS|pqcNQnjFacuuvnB$mkfc} znh1=(t5dFWh8nBmI`2h+*#(K`EbR!G1xbG0kd-6e>@1@~cJs%kC%w0>bQ3AZ3n%xa zS+V`rZp{6E$)>y1-5kW-Sg$nX|5<)~7lbaSDdG@N{Vr%#D|}+Q##v*&hLg2k+?Yz^ z!!TnLh(pP~fFMOcB6Y-G)|JwZ2DNaSCg6-U(uvqp&N_LNWAWbk1pz;7ZZUCKbGYkY zM^EDTMa_`j66Z&A5W8%JiR+GIv=uF{rZ0p`r)?E8n#W3IW*LmrqeFSsO@kgNCN^qE zPtwv2ZhmQC5mH~%GU_18Qqd+zSB8w#Rc7QeHj1Y+V&THD4K<7U&PZGelRpO%E6B$l z%s@Wqtb=lU-;S*u@jGlhLWS=TvdCib!8r;PxhI`)%H~r~tIVGi3#}bjX`G_s%JvDE z&$=}=2P;;_HuX`s=5cP}bq!J8!nL31&jw0r=_Mc4G z;#)&lb%|ziod(ya%yNP-q8DpW;f9y(l%9(}SbMaohsn#L56OTGd;M@liy8I?CMJ~F z6kIgBXtNXvb|yBeoxS>zn-%-A%(YM)agm5mt41Ln1ii445RMs8cK>Q4o4k%CbW*A} zXFpR#(mq=x@(g8EYU~x*LC$O~5|5d-av1OF+_P3vLk7l(&Bb^%zc%^6hs zX+U$s$quZ)WW||*(0M^ogZ`e@wT`pQgDxlCgw`pS>n+5kF3vySTcUrm?M=RJiZ!opREbM6%PRXA*-XghfQ^~bjB%p=(*5>B zG^W8W6rp~^hD7RBN9UEAA);)9Bw{R^@o&f_kq5>&z|9~|<=v~B+uHJcJ9_JBxHBN| zodL!E@Es_}5-}rJNnswD&@fyi(bLj8SfzjL{IUfINbrUE5!{*SwgBM^G2f$O`^|%x zk~9s*0_~_~W;MoMAK$a&oL2ov#mr~A^d810Diz=U9oek|Pq_K!QHi?(nCNU=Hn_@) zp=jERxjy<5m>G`B8?~{C90VNYuW=JTM@xcm9?YuAobq#@PR;|}(j1pE0vW1;#EvWepawkQfH*L!ur8qeEz<<{=#)}28C*hE1 z!k4Jya4;)OA5WPU=E(UG~TMC zvY4_n(1R-tZuYnNvO9WarFQ7^cxqg-U|E=*4$JK7tcHPXG6I!D6s*t!lgQPcg-mqH zI98<)f%MJxbD_mo=RX8!4J1Ld$`vY0>K(PJaseXkZyT0z`MDIC@3Kvowky5G%kpg& z(y)omb>>H@miUcu{q|tFs&*~R4cH6+QbafiVkD}Igg#YSA!_qjY)x1p>rLiQmzwXj(U_OhHnDU|c%YP=sRW7*(3#UKS4cZY! zRm#pd^R3upcDGM#k9;1s%NZk9HB>QHlu#_KEpSx*6ioO_*H~{0HBaRhjdO_;^0VYzKaZ) z^#_C3xC&R|?3>vRGc{+Qm0lZ4AGf=bV5q9+WnwrKX&swd_!W#pHpz5`4KYZfT`a*0 zX!DwmWu|C_Uk7i{jADrfxX*uabc2+AAbP#7x)?qj2OtM2axr=%stJ8uBHqvz&H3`} z8Bz?HEWQn`O1Lu#l7iJM2K7u@P!N*7EFw6cw4W>NIQ^qf&nP1On3t=bX)hfCa^`~8 zBBdLJi-kG{yso1;7SJkFOI29YTxEk#L@-#te`fp0nH%Jns>9AwZCk2K@u4zX;4VlK zR~$yKF@R}g@Nv;l6Z*Bc&%tnU!IA$I27v~-#^3tvHlO826}uiKU^0aeqiX^tCyd}2 zsCaz`84o&$p-`#$uq!l?NMjyN)vhNV*9Ks~s@)Tt@07Jocj{7TB~h5##FgDecd{*> zz9|J^&|ii)4E!+{;!PF{K(leHlAh-PufaODSssTT`Wh}Kx>6`;c zJ!43sb~BYRLa=o$l*gE^y}ib7EQsFMqpV2%{T(B z$)aru?Q5rT1JoK8FhRj!X{FgpuZB~DX4;(6{v)$BKO-16R-#cf5>cveE&ZS3-gdi< zDX;-MtkqDV?SB1Ol^WN|?vB!VCT4gt`CuP>K^YtZNU z{r|hFx*H%VCFiVXyey)-y1KevcJ24Q>rR`?rXPj&rRq>Lu=pS`qB7r(cfKAt%rXS6AQX3eykNX_wKAZED zpiPui)iK#=ejzzopQ~nc`N-fNL_F(5l4FImMjU`B$koSgeaVxFM#TuF8xkQU3ktY6 zwbt)D%Q@}X*)J&|)UNN_VdA;$g@A^e1)+xT&#Gg^zEkE4K?)n|!ST-FlbxN1D*IWx zEB)4g{bKsJxRG`>=Y&x#kbUP>%|z1baAN%<@<0k8-nvG^ka6l)^oY;L-pg;rlu1Z~N;dx!XK(me5GXDJa|(df*H6NjL_Y1oWi13@}sl$l5+BMee@SU zC1CZ(!39jTUiWXXqxtSDt>BN+s*%gLb*#_B+X{c%lpgk_j;?-Gs7wbtM|c+~D!DAS zb60&A^))YSF{G$S#?>fUx)oNuz|+I2vIfXM7S_W`{hWC#{9jLCzIkNQIg4% zJ!YiFZGU7h5184wi7aWF`4piVXmLQ8I+g%O8B6c3Qv-h-o)V$MW_WUV2zn565k<&k z`YJQ);B2@l-P*_Efuf6vY$KNq{47u4teh~RHyo4y^+&?8`7=KCpA-|WdlF9wtaOD& zAH>0DVI%y>F=Rwf*jW0}0Y*O#r(%-$Ig?_vg4Z7TPl@SO3Fp7cO#P$zU^?B77-0hF ze5Et3UV1{agL{w_pGM=GQthl!LLru>vXVXw&?_ zyp>W&?4pc)Ewr7Vkfg#fPFp%;Nt!zXV~l`Plli$`+;KiGrsz7qEez`eN2V1=zyHL4 z)lYrSaroT8{1f&A_Wn;Y@9>v81GFtW^_GuP{Rz+xziD=_l5^2L)`r~@$E||}@2Mh3 ziNW1fl2Xqp6F*w(V{OHzMm;Sl5W2$hIT6sE9ZY7S^*8SBN>b;1q{FG!M>=e)V6V!gYgP4$n|nTvVa+}QRS#wB)f7nGXJ zVB&GqLb5%U;L0!m_m>St5IR^WH?fkjm~)Spa#Tkv(-^F?n#)h@|11loU1BMxxQc~;thWxMbJ6?myAfQC%9uLWKQMPOeW*^-St*LLRB6&BXmiVc3{mEPHocsX z-7Yvu7TnFxzLD*R6 z!)DnoPdTM!Wqb;IMsB7E|5Z**2Eh)3L-Q#{cf2K8C5212YGATK_=TEip0jg&IwhXL zYiA%~=o_u)*|ENirVHqiH6=*bS8N7O<^mHaZJ0gHX)&Tt@D=&;S6?RCQ({q~L7W25 z@#V_;0f38k5C7ikarawnEuE{m+LPj;6HB*Vq2-Ox1+P}s?7-y%Q|%Zko+;F6<%8L3 zt7)>~pT!WX79o(W)^f%6mw|ueLEi8bgWX_r5|7?~)A4R{br7DE3}moXE+_f6ezay_ z&0DHzP1{WZ=$}w4@WCw=y%FTMAjVLK=h~CCRneNFNLh?zJb15&Dh(&9I5n@{OMY{} ziCn3aeW(plT5BaBWzKAuw>BfENzHDYHWx?Wxf{P;$^7Crz6Z~4X206aXt#Y7mMiTT zDx17x{#@`Eir~*ta&OSMj2)q$u~E~*4Q$XFl@GgFsP|4%f%F(S!U$o#$L7P_hZcp= z+~%O?qHoCVqpY8{jHxLuYk{eLmQ|Z+6^3xswr+Cf1*AXK&Yo-uX}LqH-;UD1y%TA6 zZ-3ZmL~;*>uS*x57E>^o(sjafWI8v#?A2ZP5;f$+;e>2qWUY~lp}O8g2^EKW^!tkL1I`o>c3TgeI{RJ9qR<| zC3OHrBxD)zbI?h-O@UIVwyV~?+sY&;NsPYrh5QhG-CvV6fvY5SYpBxXoot;#5&2QV zscCicWN(K*k!!a)$!w6Xl(Pf{6;sHqX>a~b=Np`Cqup4&CV6#r^23CG@~~_*;d`Dv z17AU9iUZ9dZvgA>nyi7{@lY_#D(_ zblGi|^TSSFr2}YAk`ErgSRASot7)3I!r)PzycP;?6?4mHtOKkP^9r{(PX?kU{Xm5_ z>XJV`nl(wS425i=mN@bgv+;O=Ge~=f)zV#6DD><+<~5sJ7wp(P9<+`>3AM7ylsp#w z1&T(odN4dnIeSBrSn{kWgaQ}7m0I`L5#f+&sd_6-EhEWEIxH+%>`{}+bwN~av$A3n zCJs$p>KNRln2_v7Rmp>ir;@+{j=A$&%F>Q(cWf+rpGy4*!@@WO4Kxe}1G7R8}#ywsH zQUP+K`Dd@tX)^DGS`fb+vC>sCX(!dbO_A)$&^=v}JQ!YqQ`9%A%gahLuz<@!j31QY>P$GZSfPB-s}087XvwB@U}_h0YSW_>|wUNJeX<-h|hr zRJ$d(@#^M@vfXl8Rx2Ao1q}!xEkunn)!;17zPz4DW7gX_?InxFX8q$C=g!pMY<%5& zdo%qkHg9iV#@F6sax!zIlw2=v{+GC)=>{3cPX`;MnE&kHyZ+45F3!b-xLw9)4%BY%4k~#+&^CNahA{WxeW$x`&R8ro-;HCLCjcFmnlwov>+<7?)?G4`kM7 z{ihQfUUN(88i*2Ch1qN#Z2K6UgzT2kIL4k@w!W;_KgTV$Pj0{Z;=^LL7%yNF-I6jU z_eQv<_Rs0p`g6v(B<~%Qd%ZZjT%Iql&t-?XxMWUK6HOI$f6kzkY9aUYg0alQRp;M# zPOC3AzJ0gw zukh7i#B(G=9@Q~Pqv17!(cJRdPt9u%he)Hj|Gh(k-=-XHJsq;vV?u6NZuWLSA4qK} zaM<9OqW{inv@fIYoayeX=X`cFy!cR)UVAhGy9ID!3oDP7El6Y+>m~g5PwPkg(Tz6? zijMJ^nI&B|)5-rcR*7#c0o<|SR`c6^!sh@aKw4FFp$d)9GB>7fnrNVMHr&+nUcGa1 z$!&ay4C!pP^W_C*9UksJ*57^q{psRj$w9n=ajI~oq}{z5le9KVyl&8rOD`v8O(q93 z0j&slW*-J;r<0j(1q@!OyeVl-(5Gjs8=Io(oPaE6bo97;2&Sy>aKwgV;rXAr&01GM_Uz)rp-e`Eq zejGzk$lrgYNrjvfbI=zpXmyHJ1JDY914vqz3H%Pf)lvVde>R&7TaVZtto8L7E+PR_ zyy(R=y)lIV;Se=EHkQ!J81M8U#{;I==y|U61;p z67?SBz_!!(pq?gIay!vBiV^{Sr&@*sWe@H#O(N4 zi(Nz~*)FYKu7Cb3_gpa2bV&f4$1|ga8DuJ&D68V=h{q zX&2wupHCfdyS;znGh6%h!SDiXQ*rfbIR*#miem)k`W+2!M2eU#{N=$s6z!&>3y5W_ zSeJS{MSuWebg3Ho_m<-M2#kHXxSoy{=lbZQgZ)ZQqB~EkLpFr)=^EvO(>t}FLa*?> zI{xnC)xo8wu(%Uyo4S6e#bTN}oECa3Jf*bz*HoHm1K zATa_wm)g2V2-Am9^mrL)O^f2PgyHSeuLpcuPb>m^>~)`w-JLgt<_MrFk05BY*e$%1TrJ&1^Y8#*Nh;L+ms}!x_ZtE;W5a0 zZ2Z2*M_oU2ZFDXsgCzFc-;I80+w=2>7mym-)QGCZs_<%yGR%et-56MK%!i2RL>SS z%h7aEogw%PM}W8jNZ3CQl2>H!n{R*n9}lYoh>kY!XadOQn=$fg^%6!ER3}!LV{ZVX zCFZ3IJjFTIQ4kW!t?xde-YT3FOeIwJDGdZlL}ZM;Ac_wnHfraTz%7n86pXV<(l2O# z#Vwv9(~W^jh~!4lz`5U-;=_C@rU@dF!EE{sjsH+qf&UZ?6I z#WTM&)f5sZEi`w;{#)KGr--mfsqXI-d8aR3FkQ}KHwRE=47>qhfnABe5;8kD!Oyg? zJZNFMcq#T;=odtn@~T@BVIzS@yaK2~e!91ok(F^xs~(t^>_ng<$u-g1r`9`1 zphzbo5t3*MbFo!8Hz~aGod6t#CitaQVkmFjCoZOx01l}!2xJJCQAJBZY6Wj9WKw%# zS39hXa8k8}r{Kw3_~id{fg-~Kne;P#C-LfCpj8d!+lp#6zc$AnezYp;YISCE`pM0) zkqhr8vWV1{J{#{#4E*G;zMEZbHciu0j&!=SqxCM3IbQl;_rTpuf3Fw*;XRs46hpMd zeZn$E^Z(>TjIQ7Ow)>Jw?(9^2>EcvhN(5zvY1vX{6tXJhU}WeVa|-lnUJ(V_E$oIq zPb~z{UvkN5W-Cod{eNd0?eQv8!6$Wn8?j&df?(m6c_vE-hbBu~5T- zg(erG8J_N#gwj&pwVBLDQ@2-@9R+N#`rUTr_S9I#hfc%{!Rq9!&Tj&SmEMVMWEQ)f z`+qx5BGUV8r7rNL!h09d+?!GHD4#+NkphVn#tteKNZ=~3qxjeszwAkBG|%lvE6ucD zlBm`F$g8cVJFgFW&1WP$G;I0mXSCg$y7zZUC!c+K<^9L^)ZNp8C9FQvjqD5YLp>yg zFD$0)MM<9=%Ggo(Z$KEu+rXNb-(mYo@!b-wLI)sb#ajAQfg|kDP;aijCkdC*-2u8< z5fZB=Yj_O!9jlYsXaf*LHjbb)4yE=IJ33_V))%b~k2l1x=^O6zEtRbg?1Q~WcuJv@ zfTYLAa9_Erdg_dthF^doLP06tjB1M`8Q=7Wzv#TlEhKtG*vBuwe;Ai;j49?&2G?`!kI4ucJfyH_V}pGB_AUJN#b|=%c#PhldOWyz4^zjF z4s&@7hesdqG7yjb_zcVRSm#g97MDw_R}e0T3Mn_!I0+tG`^@*9FR5Y@a6CV8pV$DD zR7Px~^7+~(0eYqf)nkyZyr@Ej6lMnsr!b({&aZ#LQZe!qtlc5 zjbxkPIiK;9#4U6vkFNm;oinUZLVRrG$hrgK;K%GmaH80Ad5rOAQoX{`z&VeHgli5_ zHaxz@@HxcWn`uVux~v}0FWxJ#lMB?h*!9218?ri>5W6EQF&R~Gh}A=al!n!lS5Nr2 z*Mr9zpuCghZa(mM3E7d+iG7I>Ad{R{Eu<0PL=MHfK0{fWF)_^&Y%lRwA#0qjSa$f? zK5`R$6GuZJ@DD4cHEj?CRE;K?6}n~1F1y&ifxAo^YmGb9+dQB6M0iM2}Fw5c?>bd>fB$e(C_z2u71D@$oj1S^N3my#Elhkd;u9EJqWx zQN;R!^T?cGTT|&uCiF#f8axAg8)yQh;il2-ItJHlxNYnaXkIc$e%@zOz+5t{a|8?9 zwDKH-m#@Vj$>?Jt!X4ak8BZ_jxiXlpp;j+#|THEb3a2?pSWFSQTDmt%F(+BF%{KUH_7QIxQ< zY%vW$xvS)9ggT_GQLRAf3);n=2AG=b$?S!=dJO7WFu z;`3h0=4EiI95oWqfg!azv6t8%(N)YogknG@{e{3N;npW_tAqI&dwTrfhr|7cP*se`9D&=AuHUE-`rq4ncP+Oe zi5<`ww1g65qw6Hz2O7iAu*SdmQprk)+7Vcj0|N=!wyXe>k!~IM=q7(tSI!PN9Z&v zSix#SV~Lm0jx9b#Nu=O8zzAm`<#6tfO{QY_;ePmXdC6Q^tX)|yv9+4}1`M%lwm&Ic!sgFHxq_S2 z{u)=vWX|DGF4*a4xU`F~xMuB{tYN99+Nu%;sW>bexqsJ+CjYhVA8v}FTFpAIAN=t6 z+h2bJc*JvDAt7_P(J{jh9uMCWh7Mz6R}NVAe3`vN$PtkqCZ?s_zm{ERw1AT%_Cw0A zDRvP+l|8sj5-QV%O<#EqIUrC*+}u_Mty0is?n-g7OiAhmzOaV$r}I{yyp~1*LSqTM z&@?5527T$n6|*CQXE2>io!G3N<4X=d5;`_ELG$_pIa9$@NDqheo%S)-Z1_?2fZ?rb zrr>i%gC+cnDRN9oxl4XHW*TyhRJK~jm{_`gH#i>1gD}V>+-0lma`E9zTj&Lc1AtwP zP32?dWkhOW-UG~S*s%ULJ!F;SkjN_O0<|4leaj&mO=Cg&*s$z;vgxFJ-AdrFiN=cW ziLnm>fkTByV(ND>Q0-1Y!nkzp z4um}4KgXwIk7x!nqu|| z6Hl@k^!lZ(fiybiW1+9iKiB|-3h~h{>lZ9*f6C+j88R~vUg-R#Y8T>UJQ;{ow9Zv+ zJPkVV0p>S$0<(qnB>r~jsfx$=G+$0g7AkpPz}V2+aLeo}D%Q);bEQJNY=C(IXb1|3 z7Ij@)vBI~Co$?c3X)8%;lDM2XovNL1@>kJtHX@7U%Jw_C(nqu;(Hn!aJe&|CML%53Tu+6^)+1^OiCYrm ziS4L@m2l!=ni5c{f$|2{yGM4=xua>Qm?ga1Th1Od-NrKuD$&+F)I!d_;NK0Y$@b6? zH>(H0lpcd?!6?#FAj*AmJq~l&db-+RSAuPI2u9cZhxgPeHVkzsL8cU=-GagToRa4Vc1ckOf*ByVeHyE}+DrsH0L;q(u3Fe)d3%8wf>i{hJMprWw!1`O9 z!#$@xfs!%3x~)~cw`!}eS*Y`Bfk{B4@y*hwTw|?QYc<06bTOS`6e5%=DbEWmCoc9J zzPfO*33CB38qgJ-2OvYHC-Wh4(c}uI>R_>85jy*{*mLw^_8^CB5k*(%6|>SBszfG< z@^GGQ&f)eNozW)giUn%55$gk8kitec=8W7LBEHZ&YU$Xu8ilS%=iC+b^Yjz}OHu+##=jq16aOYcI=F~zY*5(bA58G$oP5KwDA zlC+q>t0774iNx>E5NE+Ndw_6Y5@8r@3mC_!z=^8O4#@&)dAA6#d2lw?bm#~RySk-6 zp;E@Y@Rc-xg2nra`D`t8%vBVspseV40AquvPc3fKy z4eb!zETRC1D#DvA8^Rq@87q*HVpa*rHT@iZ4-AEd8}=a_dI&L{xBDAlxAkOCpe>

78y}rC1 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 literal 0 HcmV?d00001 diff --git a/whups/locale/fi_FI/help.xml b/whups/locale/fi_FI/help.xml new file mode 100644 index 000000000..6ceb72438 --- /dev/null +++ b/whups/locale/fi_FI/help.xml @@ -0,0 +1,14 @@ + + + + + Yleiskuva + Esittely + + Whups on Horden tikettien seuraamiseen tarkoitettu ohjelmisto. Ohjelmisto on suunniteltu varsin joustavaksi ja sitä voidaan käyttää help desk -pyyntöjen seuraamiseen, seuraamaan ohjelmiston kehitystä tai mihin tahansa muuhun toimintoon, jossa tarvitsee seurata pyyntöjä ja niiden tilaa. + + + Whups sisältää myös hakutoiminnon, raportoinnin ja kuvaajat, sähköposti-ilmoitukset ja yksinkertaisen lupajärjestelmän. + + + diff --git a/whups/locale/fr_FR/LC_MESSAGES/whups.mo b/whups/locale/fr_FR/LC_MESSAGES/whups.mo new file mode 100644 index 0000000000000000000000000000000000000000..312fd649cbc2e9b3231bf29bcf24b4ec14085b18 GIT binary patch literal 181653 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

gkccT5DMA!Ke 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

0rG~P&nbeRd(aqjl${mHnhfyNEfCP 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%0AahK3e(e&76Muc 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 z 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≫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

_%PYDNghAc=(&}lfXJW?NY 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 literal 0 HcmV?d00001 diff --git a/whups/locale/lt_LT/LC_MESSAGES/whups.mo b/whups/locale/lt_LT/LC_MESSAGES/whups.mo new file mode 100644 index 0000000000000000000000000000000000000000..a4577925db2546934482dee5f44741c1bed409b2 GIT binary patch literal 169046 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 X9UN*)78z4ZNJyPB1ZK!(rS<;-8KEd^ literal 0 HcmV?d00001 diff --git a/whups/locale/nb_NO/LC_MESSAGES/whups.mo b/whups/locale/nb_NO/LC_MESSAGES/whups.mo new file mode 100644 index 0000000000000000000000000000000000000000..f141c61ce9d99a8ba7ef700585d4e149050924e1 GIT binary patch literal 117713 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

SW%gK(4N68hPP)BYIu7(>x+^J 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 HHp2f8qRctX literal 0 HcmV?d00001 diff --git a/whups/locale/ro_RO/LC_MESSAGES/whups.mo b/whups/locale/ro_RO/LC_MESSAGES/whups.mo new file mode 100644 index 0000000000000000000000000000000000000000..e57d0920f4e60c167245a48566df78cd859e33a6 GIT binary patch literal 43980 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 literal 0 HcmV?d00001 diff --git a/whups/locale/ru_RU/LC_MESSAGES/whups.mo b/whups/locale/ru_RU/LC_MESSAGES/whups.mo new file mode 100644 index 0000000000000000000000000000000000000000..defbec195ec02a11c5a8b6cd3a60f4bc3abd28cc GIT binary patch literal 37042 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 L(T-^UDa8K+HK-np literal 0 HcmV?d00001 diff --git a/whups/locale/sl_SI/LC_MESSAGES/whups.mo b/whups/locale/sl_SI/LC_MESSAGES/whups.mo new file mode 100644 index 0000000000000000000000000000000000000000..8da044de10aba72cca7decfee966e44057da4558 GIT binary patch literal 157498 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"k*ek;rS z^fdIU&Pkmy6{|35ekr*+?r{E}~_7M{=y z-ZApZ=#v_NE%EySylvdWtYvCGER(LFq=%oh_com7jE%bSYF)loz5V& z<(c^8phYjM-UMS$E$Uzyifov!b&<}yQ-j5faF25r(nxW02%>Q2S`>&QqSF9fCCjQ=L7KWR(2nL|9A(lz!U9iNc55qtAk7PYqv}=E`GdMgrGA z2YQIYSeInYt=yV>s^J1H5C|Az$ERo4FM8TEJ|q=}3L!TZug<2YrLs+>a!j3MIHMYP zlBdC+O(`Q|K;?{33AJU%AC^&sMlhwp5MZm*LYTx^h$6hQH^n(zM2a-f9thi5ggFt% z-l*Ya(VgaSRJwSbJDf1lyjQ6yieU~kn5|V=90=XFAEY15?rKds!`<5fcZIgH!0bu} z5NFnJ-ELK?U5P4Aoj~};RuQH_FJ+{)s1aBQ4OAs;fWa2R4k3kFsL71V5N5br>bZ4H zQCvK+k@Uog;FU|id0jJvE-1KVZP29MJUBU)P*zA6Jp-RPuTJ}4QEP+ zKpC=q;9f|;NUQMGV5egdORsB7fO4QQ@CCK6{l-t&C z3^xSwlTcp*8Y{h6$ZOeAw!b$N_lNB`W`)$&NT3r$#g`lmIt21EYs=d`%=it*@|e-2 zWVwe!kvgtPZ%|L))dB40ZCy3O8M`6rbbW}ED&|2ZP~5tu$d$ai%ON#6H`(yaaYI)w znX7&smhH5n;{39oit!)Gbro20tpyW&t%V|m>Lf;f@=N(=;Y|xW>vcOC0{KuKpa6C( z2n&a$8w)enu!^`gz6)!RTss`>9v)ejniwmJDa~S&IWGEzh2&RBy)s$hOvzXcTFH8_ zE;^M$(Ut1NA_0&@ZAFSf6PB23J)Up!6E7Ye1t`J^=uyaPTV}L9;dLR&sbMYn zdd^^4$Q$3tXQWewE7{#-g_}+|1kZN|-I{Yf<~DIPd2pVSTk?_>6stM~$QM3~OA4~B zRMU2kAz;?5v@i+L(eqKxSxLY0M`sy>GfE*UcL9~oaQvYXK>cD$-4GOHWFapLF=BCZ zk28pBmDnn~IH=+*6Lt3q<{0gbjTLtU{Ux)?{eB`YxJ7^(xHh$8`=xz?HBE}JX)KI3{{j~(*;&B z4Q!(YZ0hK*N6v)nFbs0W*i3=Uuv^*JgcR;v7yDv?I=N3cF6*^xtqx z=JA7HW+x@Ta1ar?`o=y8uJm;uQ$|+3^ol|P;{;v2ol#we`qJf!i3F31%^0zUE(Z#`&uZgJvYKsYJ^kj8k}Z(iCKK>7`+Gh}pBnG> z5I`T)klQNKs@)7R*ML-fr_@QK( zR5∾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 literal 0 HcmV?d00001 diff --git a/whups/locale/tr_TR/LC_MESSAGES/whups.mo b/whups/locale/tr_TR/LC_MESSAGES/whups.mo new file mode 100644 index 0000000000000000000000000000000000000000..91bf68a0df9c4524b422aeeb9e7efac0430dccf6 GIT binary patch literal 162128 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 AJOBUy literal 0 HcmV?d00001 diff --git a/whups/locale/uk_UA/LC_MESSAGES/whups.mo b/whups/locale/uk_UA/LC_MESSAGES/whups.mo new file mode 100644 index 0000000000000000000000000000000000000000..8f7d80f9a586b91830a43b225cc353e9937709fe GIT binary patch literal 146245 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

W4VT3hdA4@drc?8!9i?4Eo>P*xK9e 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

{(XCkfivp<}^ngkBK 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

&DsTm$^Q34bf~`CZaohyPa?_e+V}P1vQB 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 literal 0 HcmV?d00001 diff --git a/whups/mybugs.php b/whups/mybugs.php new file mode 100644 index 000000000..cf83a79b2 --- /dev/null +++ b/whups/mybugs.php @@ -0,0 +1,59 @@ + + */ + +require_once dirname(__FILE__) . '/lib/base.php'; +require_once 'Horde/Block/Layout/View.php'; + +// @TODO: remove this when there are blocks useful to guests +// available. +if (!Horde_Auth::getAuth()) { + require WHUPS_BASE . '/search.php'; + exit; +} + +// Get refresh interval. +if ($r_time = $prefs->getValue('summary_refresh_time')) { + if ($browser->hasFeature('xmlhttpreq')) { + Horde::addScriptFile('prototype.js', 'horde', true); + } else { + $refresh_time = $r_time; + $refresh_url = Horde::applicationUrl('mybugs.php'); + } +} + +// Load layout from preferences for authenticated users, and a default +// block set for guests. +$mybugs_layout = @unserialize($prefs->getValue('mybugs_layout')); +if (!$mybugs_layout) { + if (Horde_Auth::isAuthenticated()) { + $mybugs_layout = array( + array(array('app' => 'whups', 'params' => array('type' => 'mytickets', 'params' => false), 'height' => 1, 'width' => 1)), + array(array('app' => 'whups', 'params' => array('type' => 'myrequests', 'params' => false), 'height' => 1, 'width' => 1)), + array(array('app' => 'whups', 'params' => array('type' => 'myqueries', 'params' => false), 'height' => 1, 'width' => 1))); + $prefs->setValue('mybugs_layout', serialize($mybugs_layout)); + } else { + // @TODO: show some blocks that are useful to guests. + $mybugs_layout = array(); + } +} +$layout = new Horde_Block_Layout_View( + $mybugs_layout, + Horde::applicationUrl('mybugs_edit.php'), + Horde::applicationUrl('mybugs.php', true)); +$layout_html = $layout->toHtml(); + +$title = sprintf(_("My %s"), $registry->get('name')); +$menuBottom = '

 
'; +require WHUPS_TEMPLATES . '/common-header.inc'; +require WHUPS_TEMPLATES . '/menu.inc'; +echo $layout_html; +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/whups/mybugs_edit.php b/whups/mybugs_edit.php new file mode 100644 index 000000000..df12af008 --- /dev/null +++ b/whups/mybugs_edit.php @@ -0,0 +1,37 @@ + + * @author Jan Schneider + * @author Mike Cochrane + */ + +@define('WHUPS_BASE', dirname(__FILE__)); +require_once WHUPS_BASE . '/lib/base.php'; +require_once 'Horde/Block/Collection.php'; +require_once 'Horde/Block/Layout/Manager.php'; + +// Instantiate the blocks objects. +$blocks = &Horde_Block_Collection::singleton('mybugs', array('whups')); +$layout = &Horde_Block_Layout_Manager::singleton('mybugs', $blocks, @unserialize($prefs->getValue('mybugs_layout'))); + +// Handle requested actions. +$layout->handle(Horde_Util::getFormData('action'), + (int)Horde_Util::getFormData('row'), + (int)Horde_Util::getFormData('col'), + Horde_Util::getFormData('url')); +if ($layout->updated()) { + $prefs->setValue('mybugs_layout', $layout->serialize()); +} + +$title = sprintf(_("My %s :: Add Content"), $registry->get('name')); +require WHUPS_TEMPLATES . '/common-header.inc'; +require WHUPS_TEMPLATES . '/menu.inc'; +require $registry->get('templates', 'horde') . '/portal/edit.inc'; +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/whups/opensearch.php b/whups/opensearch.php new file mode 100644 index 000000000..14a94373f --- /dev/null +++ b/whups/opensearch.php @@ -0,0 +1,52 @@ + + */ + +// Check for a prior definition of HORDE_BASE (perhaps by an +// auto_prepend_file definition for site customization). +if (!defined('HORDE_BASE')) { + @define('HORDE_BASE', dirname(__FILE__) . '/..'); +} + +// Load the Horde Framework core, and set up inclusion paths. +require_once HORDE_BASE . '/lib/core.php'; + +// Registry. +$registry = Horde_Registry::singleton(); +$registry->pushApp('whups'); + +// Url. +$url = Horde::applicationUrl('', true); + +// Name. +$name = $registry->get('name', 'whups') . ' (' . $url . ')'; + +// Icon. +$icon = base64_encode(file_get_contents($registry->get('themesfs', 'whups') . '/graphics/whups.png')); + +// Charset. +$charset = Horde_Nls::getCharset(); + +header('Content-Type: text/xml; charset=' . $charset); +echo << + $name + $url + + + + data:image/png;base64,$icon + $charset + + +PAYLOAD; diff --git a/whups/po/.cvsignore b/whups/po/.cvsignore new file mode 100644 index 000000000..fd8854c89 --- /dev/null +++ b/whups/po/.cvsignore @@ -0,0 +1 @@ +messages.po diff --git a/whups/po/README b/whups/po/README new file mode 100644 index 000000000..a4356a923 --- /dev/null +++ b/whups/po/README @@ -0,0 +1 @@ +see horde/po/README \ No newline at end of file diff --git a/whups/po/bg_BG.po b/whups/po/bg_BG.po new file mode 100644 index 000000000..d7a92f3c0 --- /dev/null +++ b/whups/po/bg_BG.po @@ -0,0 +1,1441 @@ +# Bulgarian translations for Whups package. +# Copyright 2002-2009 The Horde Project +# This file is distributed under the same license as the Whups package. +# Miroslav Pendev , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: Whups 0.0.1-cvs\n" +"POT-Creation-Date: 2002-09-14 00:38-0400\n" +"PO-Revision-Date: 2002-11-19 20:44-0500\n" +"Last-Translator: Miroslav Pendev \n" +"Language-Team: BG i18n@lists.horde.org\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CP1251\n" +"Content-Transfer-Encoding: 8bit\n" + +#, c-format +msgid "%s Admin" +msgstr "%s Àäìèíèñòðèðàíå" + +#, c-format +msgid "%s Standard" +msgstr "%s Ñòàíäàðò" + +#, c-format +msgid "%s days" +msgstr "%s äíè" + +#, c-format +msgid "'%s' is no longer among those responsible for '%s'" +msgstr "'%s' âå÷å íå å èçìåæäó îòãîâîðíèòå çà '%s'" + +#, c-format +msgid "'%s' is now among those responsible for '%s'" +msgstr "'%s' âå÷å e èçìåæäó îòãîâîðíèòå çà '%s'" + +#, c-format +msgid ", initial priority of '%s'." +msgstr ", íà÷àëåí ïðèîðèòåò '%s'." + +#, c-format +msgid ", priority changed to '%s'." +msgstr ", ñìåíåí ïðèîðèòåò êúì '%s'." + +#, c-format +msgid ", priority is '%s'." +msgstr ", ïðèîðèòåòà å '%s'." + +msgid "- Confirmation" +msgstr "Ïîòâúðæäåíèå" + +msgid "- Stage 1" +msgstr "- Åòàï 1" + +msgid "- Stage 2" +msgstr "- Åòàï 2" + +#, c-format +msgid "-Added By: %s\n" +msgstr "-Äîáàâåí îò: %s\n" + +#, c-format +msgid "-Assigned By: %s" +msgstr "-Âúçëîæåí îò: %s" + +#, c-format +msgid "-Assigned To: %s" +msgstr "-Âúçëîæåí íà: %s" + +#, c-format +msgid "-Comment by %s on %s:" +msgstr "-Êîìåíòàð îò %s íà %s:" + +#, c-format +msgid "-Created By: %s\n" +msgstr "-Ñúçäàäåí îò: %s\n" + +#, c-format +msgid "-Queue: %s" +msgstr "-Ìîäóë: %s" + +#, c-format +msgid "-Queue: %s\n" +msgstr "-Ìîäóë: %s\n" + +#, c-format +msgid "-New Priority: %s" +msgstr "-Íîâ ïðèîðèòåò: %s" + +#, c-format +msgid "-New State: %s" +msgstr "-Íîâî ñúñòîÿíèå: %s" + +#, c-format +msgid "-State: %s" +msgstr "-Ñúñòîÿíèå: %s" + +msgid "-Summary:" +msgstr "-Îáîáùåíèå" + +#, c-format +msgid "-Ticket %s" +msgstr "-Áþëåòèí %s" + +#, c-format +msgid "-Ticket %s\n" +msgstr "-Áþëåòèí %s\n" + +msgid "No summary" +msgstr "Íÿìà ðåçþìå" + +msgid "Add Attribute" +msgstr "Äîáàâè Àòðèáóòè" + +msgid "Add Attribute Criterion" +msgstr "Äîáàâè àòðèáóòåí êðèòåðèé" + +#, c-format +msgid "Add Attribute for '%s'" +msgstr "Äîáàâè àòðèáóò çà '%s'" + +msgid "Add Comment" +msgstr "Äîáàâè êîìåíòàð" + +msgid "Add Comment Succeeded" +msgstr "Óñïåøíî äîáàâÿíå íà êîìåíòàð" + +msgid "Add Criterion" +msgstr "Äîáàâè êðèòåðèé" + +msgid "Add Queue" +msgstr "Äîáàâè ìîäóë" + +msgid "Add Priority" +msgstr "Äîáàâè ïðèîðèòåò" + +#, c-format +msgid "Add Priority for '%s'" +msgstr "Äîáàâè ïðèîðèòåò çà '%s'" + +msgid "Add Property Criterion" +msgstr "Äîáàâè êðèòåðèé çà ñîáñòâåíîñò" + +msgid "Add State" +msgstr "Äîáàâè ñòàòóñ" + +#, c-format +msgid "Add State for '%s'" +msgstr "Äîáàâè ñòàòóñ çà '%s'" + +msgid "Add Subject" +msgstr "Äîáàâè òåìà" + +msgid "Add Text Criterion" +msgstr "Äîáàâè òåêñòîâ êðèòåðèé" + +#, c-format +msgid "Add Type %s" +msgstr "Äîáàâè òèï %s" + +msgid "Add User Criterion" +msgstr "Äîáàâè êðèòåðèé çà ïîòðåáèòåë" + +msgid "Add Version" +msgstr "Äîáàâè âåðñèÿ" + +#, c-format +msgid "Add Version for '%s'" +msgstr "Äîáàâè âåðñèÿ çà '%s'" + +#, c-format +msgid "Add Version to '%s'" +msgstr "Äîáàâè âåðñèÿ êúì '%s'" + +#, c-format +msgid "Add a user to '%s'" +msgstr "Äîáàâè ïîòðåáèòåë êúì '%s'" + +#, c-format +msgid "Adding your ticket failed: %s." +msgstr "Ãðåøêà ïðè äîáàâÿíå íà áþëåòèí: %s." + +msgid "Additional Comment" +msgstr "Äîïúëíèòåëåí êîìåíòàð" + +msgid "Admin" +msgstr "Àäìèíèíèñòðèðàíå" + +msgid "Admin Home" +msgstr "Àäìèí. ñòðàíèöà" + +msgid "Administration" +msgstr "Àäìèíèñòðàöèÿ" + +msgid "An appropriate person has been notified of this request." +msgstr "Ïîäõîäÿù ñëóæèòåë áåøå óâåäîìåí çà òàçè ìîëáà." + +msgid "And" +msgstr "Äîáàâè" + +msgid "Any" +msgstr "Âñÿêà" + +msgid "Any Group" +msgstr "Âñÿêà ãðóïà" + +msgid "Ascending" +msgstr "Íàðàñòâàùè" + +msgid "Assign Ticket" +msgstr "Âúçëàãàíå íà áþëåòèí" + +msgid "Assign Ticket Succeeded" +msgstr "Âúçëàãàíåòî íà áþëåòèíà áåøå óñïåøíî" + +msgid "Assigned" +msgstr "Âúçëîæåí" + +#, c-format +msgid "Assigned ticket to %s" +msgstr "Âúçëîæåí áþëåòèí íà %s" + +msgid "Assignee" +msgstr "Âúçëîæåí íà" + +msgid "Attribute Criteria" +msgstr "Àòðèáóòåí êðèòåðèé" + +msgid "Attribute Description" +msgstr "Îïèñàíèÿ íà àòðèáóò" + +msgid "Attribute Name" +msgstr "Èìå íà àòðèáóòè" + +msgid "Attributes for this Type" +msgstr "Àòðèáóòè çà òîçè òèï" + +msgid "Average days to close by Queue" +msgstr "Ñðåäåí áðîé äíè çà ïðèêëþ÷âàíå ïî ìîäóë" + +msgid "Average days to close by Owner" +msgstr "Ñðåäåí áðîé äíè çà ïðèêëþ÷âàíå ïî ïðèòåæàòåë" + +msgid "Average days to close by Requester" +msgstr "Ñðåäåí áðîé äíè çà ïðèêëþ÷âàíå ïî çàÿâèòåë" + +msgid "Average time a ticket is unresolved" +msgstr "Ñðåäåí áðîé äíè çà íåðàçðåøåí áþëåòèí" + +msgid "Barbie" +msgstr "Barbie" + +msgid "Branch Type" +msgstr "Áðàíø òèï" + +msgid "Brown" +msgstr "Brown" + +msgid "Burnt Orange" +msgstr "Burnt Orange" + +msgid "Camouflage" +msgstr "Camouflage" + +msgid "Case Insensitive Substring" +msgstr "Íå÷óâñòâèòåëåí êúì ðàçìåðà íà áóêâèòå ïîäñòðèíã" + +msgid "Case Sensitive Substring" +msgstr "×óâñòâèòåëåí êúì ðàçìåðà íà áóêâèòå ïîäñòðèíã" + +msgid "Change Ticket Type" +msgstr "Ñìÿíà íà òèïà íà áþëåòèíà" + +msgid "" +"Change display options such as the color scheme and how search results are " +"sorted." +msgstr "" +"Ñìÿíà íà äèñïëåé îïöèèòå, êàòî öâåòíà ñõåìà è êàê äà ñå ñîðòèðàò ðåçóëòàòèòå." + +msgid "Change options for email notifications of ticket activity." +msgstr "Ïðîìÿíà íà îïöèèòå çà email óâåäîìÿâàíå çà àêòèâíîñò ïî áþëåòèí." + +msgid "Cherry" +msgstr "Cherry" + +msgid "Choose Action:" +msgstr "Èçáåðè äåéñòâèå:" + +msgid "Comment" +msgstr "êîìåíòàð" + +msgid "Commentor" +msgstr "êîìåíòàð îò" + +msgid "Create Ticket" +msgstr "Ñúçäàé áþëåòèí" + +msgid "Create Ticket - Stage 1" +msgstr "Ñúçäàé áþëåòèí - Åòàï 1" + +msgid "Create Tickets" +msgstr "Ñúçäàé áþëåòèíè" + +msgid "Created" +msgstr "Ñúçäàäåí" + +msgid "Current Query" +msgstr "Òåêóùà çàÿâêà" + +msgid "Current Type" +msgstr "Òåêóù òèï" + +msgid "Date Criteria" +msgstr "Äàðà êðèòåðèé" + +msgid "Date/Time format for search results" +msgstr "Äàòà/÷àñ ôîðìàò çà ðåçóëòàòè îò òúðñåíå" + +msgid "Default sorting criteria:" +msgstr "Êðèòåðèè çà ñîðòèðàíå ïî ïîäðàçáèðàíå:" + +msgid "Default sorting direction:" +msgstr "Ïîñîêà íà ñîðòèðàíå ïî ïîäðàçáèðàíå:" + +msgid "Delete" +msgstr "Èçòðèé" + +msgid "Delete Attribute" +msgstr "Èçòðèé àòðèáóò" + +#, c-format +msgid "Delete Attribute %s" +msgstr "Èçòðèé àòðèáóò %s" + +msgid "Delete Attributes" +msgstr "Èçòðèé Àòðèáóòè" + +msgid "Delete Queue" +msgstr "Èçòðèé ìîäóë" + +#, c-format +msgid "Delete Queue %s" +msgstr "Èçòðèé ìîäóë %s" + +msgid "Delete Priority" +msgstr "Èçòðèé ïðèîðèòåò" + +#, c-format +msgid "Delete Priority %s" +msgstr "Èçòðèé ïðèîðèòåò %s" + +msgid "Delete State" +msgstr "Èçòðèé ñòàòóñ" + +#, c-format +msgid "Delete State %s" +msgstr "Èçòðèé ñòàòóñ %s" + +msgid "Delete Subject" +msgstr "Èçòðèé òåìà" + +#, c-format +msgid "Delete Subject %s" +msgstr "Èçòðèé òåìà %s" + +msgid "Delete Ticket" +msgstr "Èçòðèé áþëåòèí" + +msgid "Delete Ticket Succeeded" +msgstr "Èçòðèâàíåòî íà áþëåòèíà áåøå óñïåøíî" + +msgid "Delete Type" +msgstr "Èçòðèé òèï" + +#, c-format +msgid "Delete Type %s" +msgstr "Èçòðèé òèï %s" + +msgid "Delete Version" +msgstr "Èçòðèé âåðñèÿ" + +#, c-format +msgid "Delete Version %s" +msgstr "Èçòðèé âåðñèÿ %s" + +msgid "Descending" +msgstr "Íàìàëÿâàùè" + +msgid "Description" +msgstr "Îïèñàíèå" + +msgid "Display Options" +msgstr "Äèñïëåé Îïöèè" + +msgid "Edit" +msgstr "Ðåäàêöèÿ" + +msgid "Edit Attribute" +msgstr "Ðåäàêöèÿ íà àòðèáóò" + +#, c-format +msgid "Edit Attribute %s" +msgstr "Ðåäàêöèÿ íà àòðèáóò %s" + +msgid "Edit Attributes" +msgstr "Ðåäàêöèÿ Àòðèáóòè" + +#, c-format +msgid "Edit Attributes for '%s' %s" +msgstr "Ðåäàêòèðàé àòðèáóòèòå çà '%s' %s" + +msgid "Edit Queue" +msgstr "Ðåäàêòèðàé ìîäóë" + +#, c-format +msgid "Edit Queue %s" +msgstr "Ðåäàêòèðàé ìîäóë %s" + +msgid "Edit Queues" +msgstr "Ðåäàêòèðàé ìîäóëè" + +msgid "Edit Priorities" +msgstr "Ðåäàêòèðàé ïðèîðèòåòèòå" + +#, c-format +msgid "Edit Priorities for '%s' %s" +msgstr "Ðåäàêòèðàé ñâîéñòâàòà çà '%s' %s" + +msgid "Edit Priority" +msgstr "Ðåäàêòèðàé ïðèîðèòåò" + +#, c-format +msgid "Edit Priority %s" +msgstr "Ðåäàêòèðàé ïðèîðèòåò %s" + +msgid "Edit Query" +msgstr "Ðåäàêòèðàé çàÿâêà" + +msgid "Edit State" +msgstr "Ðåäàêòèðàé ñòàòóñ" + +#, c-format +msgid "Edit State %s" +msgstr "Ðåäàêòèðàé ñòàòóñ %s" + +msgid "Edit States" +msgstr "Ðåäàêöèÿ íà ñòàòóñè" + +#, c-format +msgid "Edit States for '%s' %s" +msgstr "Ðåäàêòèðàé ñòàòóñèòå çà '%s' %s" + +msgid "Edit Subject" +msgstr "Ðåäàêòèðàé òåìà" + +#, c-format +msgid "Edit Subject %s" +msgstr "Ðåäàêöèÿ íà òåìà %s " + +msgid "Edit Subjects" +msgstr "Ðåäàêòèðàé òåìè" + +msgid "Edit Type" +msgstr "Ðåäàêòèðàé òèï" + +#, c-format +msgid "Edit Type %s" +msgstr "Ðåäàêòèðàé òèï %s" + +msgid "Edit Types" +msgstr "Ðåäàêòèðàé òèïîâå" + +msgid "Edit Version" +msgstr "Ðåäàêòèðàé âåðñèÿ" + +#, c-format +msgid "Edit Version %s" +msgstr "Ðåäàêòèðàé âåðñèÿ %s" + +msgid "Edit Versions" +msgstr "Ðåäàêòèðàé âåðñèÿ" + +#, c-format +msgid "Edit Versions for '%s' %s" +msgstr "Ðåäàêöèÿ íà âåðñèèòå çà '%s' %s" + +msgid "Edit the permissions on this module" +msgstr "Ðåäàêöèÿ íà ïðàâàòà âúðõó òîçè ìîäóë" + +msgid "Edit the users responsible for this module" +msgstr "Ðåäàêòèðàé ïîòðåáèòåëèòå îòãîâîðíè çà òîçè ìîäóë" + +msgid "Edit the versions for this module" +msgstr "Ðåäàêòèðàé âåðñèèòå çà òîçè ìîäóë'" + +msgid "Enter the password that you set when you created this ticket." +msgstr "Âúâåäåòå ïàðîëàòà êîÿòî çàäàäîõòå ïðè ñúçäàâàíåòî íà òîçè áþëåòèí." + +#, c-format +msgid "Error: Unknown query form %s, defaulting to properties" +msgstr "" +"Ãðåøêà: Íåèçâåñòíà ôîðìà íà çàÿâêà %s, ùå ñå èçïîëçâàò ïîäðàçáèðàùèòå ñå " +"ñâîéñòâà" + +msgid "Exact Match" +msgstr "Òî÷íî ñúâïàäàíå" + +msgid "Execute Query" +msgstr "Èçïúëíè" + +msgid "Green" +msgstr "Green" + +msgid "Grey" +msgstr "Grey" + +msgid "Help" +msgstr "Ïîìîù" + +msgid "Hide Assigned" +msgstr "Ñêðèé âúçëîæåíèòå" + +msgid "Hide New" +msgstr "Ñêðèé íîâèòå" + +msgid "Hide Resolved" +msgstr "Ñêðèé ðåøåíèòå" + +msgid "Hide Unconfirmed" +msgstr "Ñêðèé íåïîòâúðäåíèòå" + +msgid "Hoist" +msgstr "Âäèãíè" + +msgid "Id" +msgstr "èäåíò." + +#, c-format +msgid "If you have recieved this mail in error, please contact %s." +msgstr "Àêî ñòå ïîëó÷èëè òîçè åìàéë ïîðàäè ãðåøêà, ìîëÿ ñâúðæåòå ñå ñ %s." + +#, c-format +msgid "Initial state of '%s'" +msgstr "Íà÷àëåí ñòàòóñ íà '%s'" + +msgid "Insert And" +msgstr "Âìúêíè È" + +msgid "Insert Branch" +msgstr "Âìúêíè Áðàíø" + +msgid "Insert Not" +msgstr "Âìúêíè Íå" + +msgid "Insert Or" +msgstr "Âìúêíè Èëè" + +msgid "Insert Query" +msgstr "Âìúêíè çàÿâêà" + +msgid "Keep a set of versions for this queue?" +msgstr "Äà ñå çàïàçè ëè íàáîðà îò âåðñèè çà òîçè ìîäóë?" + +msgid "Language" +msgstr "Åçèê" + +msgid "Light Blue" +msgstr "Light Blue" + +msgid "Load Query" +msgstr "Çàðåäè çàÿâêà" + +msgid "Login" +msgstr "Âõîä" + +msgid "MM/DD/YY" +msgstr "ÌÌ/ÄÄ/ÃÃ" + +msgid "MM/DD/YY HH:MM:SS" +msgstr "ÌÌ/ÄÄ/Ãà ××:ÌÌ:ÑÑ" + +msgid "Match" +msgstr "Ñúâïàäàù" + +msgid "Match Operator" +msgstr "Ñúâïàäàù îïåðàòîð" + +msgid "Match Pattern" +msgstr "Ñúâïàäàù ïðèìåð" + +msgid "Match Word" +msgstr "Ñúâïàäàùà äóìà" + +msgid "Maximum time a ticket is unresolved" +msgstr "Ìàêñèìàëíî âðåìå ïðåç êîåòî áþëåòèí å íåðàçðåøåí" + +msgid "Minimum time a ticket is unresolved" +msgstr "ìèíèìàëíî " + +msgid "Modified Attribute" +msgstr "Ïðîìåíåí àòðèáóò" + +msgid "Modified Queue" +msgstr "Ïðîìåíåí ìîäóë" + +msgid "Modified Priority" +msgstr "Ïðîìåíåí ïðèîðèòåò" + +msgid "Modified State" +msgstr "Ïðîìåíåí ñòàòóñ" + +msgid "Modified Subject" +msgstr "Ïðîìåíåíà òåìà" + +msgid "Modified Type" +msgstr "Ïðîìåíåí òèï" + +msgid "Modified Version" +msgstr "Âåðñèÿ íà ïðîìÿíàòà" + +msgid "Queue" +msgstr "Ìîäóë" + +msgid "Queue Description" +msgstr "Îïèñàíèå íà ìîäóë" + +msgid "Queue Name" +msgstr "Èìå íà ìîäóë" + +msgid "Queue Version" +msgstr "Ìîäóë âåðñèÿ" + +#, c-format +msgid "Queue: %s, Ticket: %s" +msgstr "Ìîäóë: %s, Áþëåòèí: %s" + +msgid "Move" +msgstr "Ïðåìåñòè" + +msgid "Mozilla" +msgstr "Mozilla" + +#, c-format +msgid "My %s" +msgstr "Ìîÿò %s" + +msgid "My Assigned Tickets" +msgstr "Ìîèòå Áþëåòèíè" + +msgid "My Bugs" +msgstr "Ìîèòå Áúãîâå" + +msgid "My Open Requests" +msgstr "Ìîèòå îòâîðåíè ìîëáè" + +msgid "My Searches" +msgstr "Ìîåòî òúðñåíå" + +msgid "Name" +msgstr "Èìå" + +msgid "New" +msgstr "Íîâè" + +msgid "New Priority" +msgstr "Íîâ ïðèîðèòåò" + +msgid "New Query" +msgstr "Íîâà çàÿâêà" + +msgid "New State" +msgstr "Íîâ ñòàòóñ" + +msgid "New Ticket" +msgstr "Íîâ áþëåòèí" + +#, c-format +msgid "New comment for ticket %s" +msgstr "Íîâ êîìåíòàð çà áþëåòèí %s" + +#, c-format +msgid "New ticket (%s): %s" +msgstr "Íîâ áþëåòèí (%s): %s" + +msgid "No" +msgstr "Íå" + +msgid "No configuration information specified for SQL Bugs." +msgstr "Íÿìà çàäàäåíà êîíôèãóðàöèÿ çà SQL áúãîâå." + +#, c-format +msgid "No such backend '%s' found" +msgstr "Íå áåøå íàìåðåí bakend '%s'" + +msgid "No such ticket." +msgstr "Íÿìà òàêúâ áþëåòèí." + +msgid "None" +msgstr "Íÿìà" + +msgid "Not" +msgstr "Íå" + +msgid "Not yet implemented..." +msgstr "Âñå îùå íå å ðàçðàáîòåíî..." + +msgid "Notification Options" +msgstr "Îïöèè çà óâåäîìÿâàíå" + +msgid "Only notify me of ticket changes from other users" +msgstr "Óâåäîìè ìå ñàìî ïðè ïðîìÿíà íà áþëåòèíà îò äðóãè ïîòðåáèòåëè" + +msgid "Open Tickets by Queue" +msgstr "Îòâîðåíè áþëåòèíè ïî ìîäóë" + +msgid "Open Tickets by Owner" +msgstr "Îòâîðåíè áþëåòèíè ïî ïðèòåæàòåë" + +msgid "Open Tickets by Priority" +msgstr "Îòâîðåíè áþëåòèíè ïî ïðèîðèòåò" + +msgid "Open Tickets by Requester" +msgstr "Îòâîðåí áþëåòèíè ïî çàÿâèòåë" + +msgid "Open Tickets by State" +msgstr "Îòâîðåíè áþëåòèíè ïî ñòàòóñ" + +msgid "Open Tickets by Type" +msgstr "Îòâîðåíè áþëåòèíè ïî òèï" + +msgid "Open Tickets by Version" +msgstr "Îòâîðåíè áþëåòèíè ïî âåðñèÿ" + +msgid "Options" +msgstr "Îïöèè" + +msgid "Or" +msgstr "èëè" + +msgid "Orange" +msgstr "Orange" + +msgid "Other Options" +msgstr "Äðóãè Îïöèè" + +msgid "Owner" +msgstr "Ïðèòåæàòåë" + +msgid "Path" +msgstr "Ïúò" + +msgid "Permission Denied." +msgstr "Ïðàâî íà äîñòúï îòêàçàí" + +msgid "" +"Pick a password that you will be able to use in the future to close or " +"otherwise modify this ticket. Type the password a second time to confirm it." +msgstr "" +"Èçáåðåòå ïàðîëà êîÿòî ùå èçïîëçâàòå â áúäåùå çà äà çàòâîðèòå èëè ïðîìåíÿòå " +"áþëåòèíà. Âúâåäåòå ïàðîëàòà äâà ïúòè çà äà ïîòâúðäèòå." + +msgid "Priorities for this Type" +msgstr "Ïðèîðèòåòè çà òîçè òèï" + +msgid "Priority" +msgstr "Ïðèîðèòåò" + +msgid "Priority Description" +msgstr "Îïèñàíèå íà ïðèîðèòåòà" + +msgid "Priority Name" +msgstr "Ïðèîðèòåò èìå" + +msgid "Private" +msgstr "×àñòåí" + +msgid "Property Criteria" +msgstr "Êðèòåðèé ñâîéñòâî" + +msgid "Query Builder" +msgstr "Èçãðàæäàíå íà çàÿâêè" + +msgid "Query Results" +msgstr "Ðåçóëòàòè îò òúðñåíåòî" + +msgid "Re-execute Query" +msgstr "Èçïúëíè ïîâòîðíî çàÿâêàòà" + +msgid "Really delete this attribute? This may cause data problems!!" +msgstr "" +"Äà ñå èçòðèå ëè òîçè àòðèáóò? Òîâà ìîæå äà äîâåäå äî ïðîáëåìè ñ äàííèòå!!" + +msgid "Really delete this queue? This may cause data problems!!" +msgstr "" +"Äà ñå èçòðèå ëè òîçè ìîäóë? Òîâà ìîæå äà äîâåäå äî ïðîáëåìè ñ äàííèòå!!" + +msgid "Really delete this priority? This may cause data problems!!" +msgstr "" +"Äà ñå èçòðèå ëè òîçè ïðèîðèòåò? Òîâà ìîæå äà äîâåäå äî ïðîáëåìè ñ äàííèòå!!" + +msgid "Really delete this state? This may cause data problems!!" +msgstr "" +"Äà ñå èçòðèå ëè òîçè ñòàòóñ? Òîâà ìîæå äà äîâåäå äî ïðîáëåìè ñ äàííèòå!!" + +msgid "Really delete this subject? This may cause data problems!!" +msgstr "Äà ñå èçòðèå ëè òàçè òåìà? Òîâà ìîæå äà äîâåäå äî ïðîáëåìè ñ äàííèòå!!" + +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "" +"Íàèñòèíà ëè èñêàòå äà ñå èçòðèå òîçè áþëåòèí? Íÿìà äà áúäå àðõèâèðàí è ùå " +"áúäå çàãóáåí íåâúçâðàòèìî." + +msgid "Really delete this type? This may cause data problems!!" +msgstr "Äà ñå èçòðèå ëè òîçè òèï? Òîâà ìîæå äà äîâåäå äî ïðîáëåìè ñ äàííèòå!!" + +msgid "Really delete this version? This may cause data problems!!" +msgstr "" +"Äà ñå èçòðèå ëè òàçè âåðñèÿ? Òîâà ìîæå äà äîâåäå äî ïðîáëåìè ñ äàííèòå!!" + +msgid "Refine Search" +msgstr "Äîïúëíè òúðñåíåòî" + +msgid "Refine search" +msgstr "Äîïúëíè òúðñåíåòî" + +msgid "Remove User" +msgstr "Ïðåìàõíè ïîòðåáèòåë" + +msgid "Reports" +msgstr "Ðàïîðòè" + +msgid "Requester" +msgstr "Çàÿâèòåë" + +msgid "Required 'database' not specified in bugs configuration." +msgstr "Íåîáõîäèìàòà 'database' íå å çàäàäåíà â êîíôèãóðàöèÿòà çà ïðîáëåìè." + +msgid "Required 'hostspec' not specified in bugs configuration." +msgstr "Íåîáõîäèìèÿ 'hostspec' íå å óêàçàí â êîíôèãóðàöèÿòà çà ïðîáëåìè." + +msgid "Required 'password' not specified in bugs configuration." +msgstr "Íåîáõîäèìàòà 'password' íå ñúùåñòâóâà â êîíôèãóðàöèÿ çà ïðîáëåìè." + +msgid "Required 'phptype' not specified in bugs configuration." +msgstr "Íåîáõîäèìèÿ 'phptype' íå å çàäàäåí â êîíôèãóðàöèÿòà çà ïðîáëåìè." + +msgid "Required 'username' not specified in bugs configuration." +msgstr "Íåîáõîäèìîòî 'username' íå å çàäàäåíî â êîíôèãóðàöèÿòà çà ïðîáëåìè." + +msgid "Resolved" +msgstr "Ðàçðåøåí" + +msgid "Restrict ticket subjects to a specified list?" +msgstr "Îãðàíè÷è òåìèòå íà áþëåòèíà äî ñïåöèôè÷åí ñïèñúê" + +msgid "Save Query" +msgstr "Çàïèøè çàÿâêà" + +msgid "Save these results as: " +msgstr "Çàïèøè òåçè ðåçóëòàòè êàòî:" + +msgid "Search" +msgstr "Òúðñè" + +#, c-format +msgid "Search %s Attribute" +msgstr "òúðñè %s Àòðèáóò" + +msgid "Search Assignee" +msgstr "Òúðñè âúçëîæåí íà" + +msgid "Search Attribute" +msgstr "Òúðñè Àòðèáóò" + +msgid "Search Comments" +msgstr "Òúðñè êîìåíòàð" + +msgid "Search Requester" +msgstr "Òúðñè çàÿâèòåë" + +msgid "Search Results" +msgstr "Ðåçóëòàòè îò òúðñåíåòî" + +msgid "Search Summary" +msgstr "Òúðñè â ðåçþìå" + +msgid "Search Tickets" +msgstr "Òúðñè áþëåòèíè" + +msgid "Select the view to display after login:" +msgstr "Èçáåðåòå èçãëåäà, êîéòî äà ñå âèæäà ñëåä âõîä:" + +msgid "Select your color scheme." +msgstr "Èçáåðåòå âàøàòà ñõåìà çà öâåòîâåòå." + +msgid "Select your preferred language:" +msgstr "Èçáåðåòå ïðåäïî÷èòàíèÿò îò Âàñ åçèê:" + +msgid "Set Priority" +msgstr "Èçáåðè ïðèîðèòåò" + +msgid "Set State" +msgstr "Èçáåðè ñòàòóñ" + +msgid "Set Ticket Attributes" +msgstr "Íàñòðîé àòðèáóòè çà áþëåòèí" + +msgid "Set Ticket Priority" +msgstr "Èçáåðè ïðèîðèòåò çà áþëåòèí" + +msgid "Set Ticket State Succeeded" +msgstr "Ñòàòóñà íà áþëåòèíà áåøå óñïåøíî íàñòðîåí" + +msgid "Set your preferred display language." +msgstr "Èçáåðåòå ïðåäïî÷èòàíèÿò îò Âàñ åçèê çà äèñïëåÿ." + +msgid "Show \"(X Days Ago)\" in Date field of search results?" +msgstr "Äà ñå ïîêàçâà ëè \"(X äíè íàçàä)\" â ïîëåòî Äàòà â ðåçóëòàòà?" + +msgid "Show ticket IDs in the summary view?" +msgstr "Äà ñå ïîêàçâàò ëè id íà áþëåòèíèòå â îáîáùåíèåòî?" + +msgid "Show tickets you have requested in the summary view?" +msgstr "Äà ñå ïîêàçâàò ëè èçèñêàíèòå áþëåòèíè â îáîáùåíèÿ èçãëåä?" + +msgid "Simple HTML Report" +msgstr "Îáèêíîâåí HTML ðàïîðò" + +msgid "Some of WHUPS's configuration files are missing:" +msgstr "Íÿêîé îò êîíôèãóðàöèîííèòå ôàéëîâå íà WHUPS ëèïñâàò:" + +msgid "Sort Direction" +msgstr "Ñîðòèðàíå" + +#, c-format +msgid "Sort by %s" +msgstr "ñîðòèðàíå ïî %s" + +msgid "State" +msgstr "Ñòàòóñ" + +msgid "State Category" +msgstr "Ñòàòóñ êàòåãîðèÿ" + +msgid "State Description" +msgstr "Ñòàòóñ îïèñàíèå" + +msgid "State Name" +msgstr "Ñòàòóñ äàòà" + +#, c-format +msgid "State changed to '%s'" +msgstr "Ñòàòóñ ïðîìåíåí íà '%s'" + +#, c-format +msgid "State is '%s'" +msgstr "Ñòàòóñà å '%s'" + +msgid "States for this Type" +msgstr "Ñòàòóñè çà òîçè òèï" + +msgid "Subject" +msgstr "Òåìà" + +msgid "Subject Name" +msgstr "Èìå íà òåìà" + +msgid "Subjects associated with this Queue" +msgstr "Òåìè àñîöèèðàíè ñ òîçè ìîäóë" + +msgid "Summary" +msgstr "Îáîáùåíèå" + +msgid "Sun" +msgstr "Sun" + +msgid "Text" +msgstr "Òåêñò" + +msgid "Text Criteria" +msgstr "Òåêñò êðèòåðèè" + +msgid "The attribute has been deleted." +msgstr "Àòðèáóòà áåøå èçòðèò." + +msgid "The attribute has been modified." +msgstr "Àòðèáóòà áåøå ïðîìåíåí." + +msgid "The attribute was not deleted." +msgstr "Àòðèáóòà íå áåøå èçòðèò." + +#, c-format +msgid "The attribute'%s' has been added to %s." +msgstr "Àòðèáóòà '%s' áåøå äîáàâåí êúì %s." + +#, c-format +msgid "The queue '%s' has been created." +msgstr "Ìîäóëúò '%s' áåøå ñúçäàäåí." + +msgid "The queue has been deleted." +msgstr "Ìîäóëúò áåøå èçòðèò." + +msgid "The queue has been modified." +msgstr "Ìîäóëúò áåøå ïðîìåíåí." + +msgid "The queue was not deleted." +msgstr "Ìîäóëúò íå áåøå èçòðèò." + +#, c-format +msgid "The priority '%s' has been added to %s." +msgstr "Ïðèîðèòåòúò '%s' áåøå äîáàâåí êúì %s." + +msgid "The priority has been deleted." +msgstr "Ïðèîðèòåòúò áåøå èçòðèò." + +msgid "The priority has been modified." +msgstr "Ïðèîðèòåòúò áåøå ìîäèôèöèðàí." + +msgid "The priority was not deleted." +msgstr "Ïðèîðèòåòúò íå áåøå èçòðèò." + +msgid "The requested template does not exist." +msgstr "Èçèñêàíèÿò øàáëîí íå ñúùåñòâóâà." + +#, c-format +msgid "The state '%s' has been added to %s." +msgstr "Ñòàòóñà '%s' áåøå äîáàâåí êúì %s." + +msgid "The state has been deleted." +msgstr "Ñòàòóñà áåøå èçòðèò." + +msgid "The state has been modified." +msgstr "Ñòàòóñà áåøå ïðîìåíåí." + +msgid "The state was not deleted." +msgstr "Ñòàòóñà íå áåøå èçòðèò." + +#, c-format +msgid "The subject '%s' has been added." +msgstr "Òåìàòà '%s' áåøå äîáàâåíà." + +msgid "The subject has been deleted." +msgstr "Òåìàòà áåøå èçòðèòà." + +msgid "The subject has been modified." +msgstr "Òåìàòà áåøå ïðîìåíåíà." + +msgid "The subject was not deleted." +msgstr "Òåìàòà íå áåøå èçòðèòà." + +#, c-format +msgid "The type '%s' has been modified." +msgstr "Òèïúò '%s' íå áåøå ïðîìåíåí." + +msgid "The type has been deleted." +msgstr "Òèïúò áåøå èçòðèò." + +msgid "The type was not deleted." +msgstr "Òèïúò íå áåøå èçòðèò." + +#, c-format +msgid "The version '%s' has been added to %s." +msgstr "Âåðñèÿòà '%s' áåøå äîáàâåíà êúì %s." + +msgid "The version has been deleted." +msgstr "Âåðñèÿòà áåøå èçòðèòà." + +msgid "The version has been modified." +msgstr "Âåðñèÿòà áåøå ïðîìåíåíà." + +msgid "The version was not deleted." +msgstr "Âåðñèÿòà íå áåøå èçòðèòà." + +msgid "There are no attribute types to edit" +msgstr "Íÿìà òèïîâå íà àòðèáóò çà ðåäàêòèðàíå." + +msgid "There are no attributes defined for the current type" +msgstr "Íÿìà äåôèíèðàíè àòðèáóòè çà òåêóùèÿò òèï." + +msgid "There are no queues to edit" +msgstr "Íÿìà ìîäóëè çà ðåäàêöèÿ." + +msgid "There are no queues which you can create tickets in." +msgstr "Íÿìà ìîäóëè çà êîèòî äà ñúçäàâàòå òèïîâå." + +msgid "There are no queues which you can search." +msgstr "Íÿìà ìîäóëè çà òúðñåíå." + +msgid "There are no priorities to edit" +msgstr "Íÿìà ïðèîðèòåòè çà ðåäàêöèÿ" + +msgid "There are no states to edit" +msgstr "Íÿìà ñòàòóñè çà ðåäàêöèÿ." + +msgid "There are no subjects to edit" +msgstr "Íÿìà òåìè çà ðåäàêöèÿ." + +msgid "" +"There are no ticket types associated with this module; until there are, you " +"cannot create any tickets in this module." +msgstr "" +"Íÿìà áþëåòèí àñîöèèðàí ñ òîçè ìîäóë; äîêàòî íÿìà Âèå íå ìîæåòå äà ñúçäàâàòå " +"áþëåòèíè â òîçè ìîäóë." + +msgid "There are no types to edit" +msgstr "Íÿìà òèïîâå çà ðåäàêòèðàíå." + +msgid "There are no users responsible for this module." +msgstr "Íÿìà ïîòðåáèòåëè îòãîâîðíè çà òîçè ìîäóë." + +msgid "There are no users to which this ticket can be assigned." +msgstr "Íÿìà ïîòðåáèòåëè íà êîèòî äà áúäå âúçëîæåí áþëåòèíà." + +msgid "There are no versions to edit" +msgstr "Íÿìà âåðñèÿ çà ðåäàêòèðàíå." + +msgid "There is no data for this graph." +msgstr "Íÿìà äàííè çà òàçè êðèâà." + +msgid "There is no data for this report." +msgstr "Íÿìà äàííè çà òîçè ðàïîðò." + +#, c-format +msgid "There was an error adding '%s' to the responsible list for '%s': %s" +msgstr "Ãðåøêà ïðè äîáàâÿíå íà '%s'êúì ñïèñúêà íà îòãîâîðíèòå çà '%s': %s" + +#, c-format +msgid "There was an error adding the subject: %s." +msgstr "Ãðåøêà ïðè äîáàâÿíå íà òåìàòà : %s." + +#, c-format +msgid "There was an error creating the attribute: %s." +msgstr "Ãðåøêà ïðè ñúçäàâàíå íà àòðèáóòà: %s." + +#, c-format +msgid "There was an error creating the module: %s." +msgstr "Ãðåøêà ïðè ñúçäàâàíå íà ìîäóëà: %s." + +#, c-format +msgid "There was an error creating the priority: %s." +msgstr "Ãðåøêà ïðè ñúçäàâàíå íà ïðèîðèòåò: %s." + +#, c-format +msgid "There was an error creating the state: %s." +msgstr "Ãðåøêà ïðè ñúçäàâàíå íà ñòàòóñà: %s." + +#, c-format +msgid "There was an error creating the version: %s." +msgstr "Ãðåøêà ïðè ñúçäàâàíå íà âåðñèÿòà: %s." + +#, c-format +msgid "There was an error deleting the attribute: %s." +msgstr "Ãðåøêà ïðè èçòðèâàíå íà àòðèáóòà: %s." + +#, c-format +msgid "There was an error deleting the module: %s." +msgstr "Ãðåøêà ïðè èçòðèâàíå íà ìîäóëà: %s." + +#, c-format +msgid "There was an error deleting the priority: %s." +msgstr "Ãðåøêà ïðè èçòðèâàíå íà ïðèîðèòåò: %s." + +#, c-format +msgid "There was an error deleting the state: %s." +msgstr "Ãðåøêà ïðè èçòðèâàíå íà ñòàòóñà: %s." + +#, c-format +msgid "There was an error deleting the subject: %s." +msgstr "Ãðåøêà ïðè èçòðèâàíåòî íà îáåêò: %s." + +#, c-format +msgid "There was an error deleting the ticket: %s" +msgstr "Ãðåøêà ïðè èçòðèâàíå íà áþëåòèí: %s" + +#, c-format +msgid "There was an error deleting the type: %s." +msgstr "Ãðåøêà ïðè èçòðèâàíå íà òèïà: %s." + +#, c-format +msgid "There was an error deleting the version: %s." +msgstr "Ãðåøêà ïðè èçòðèâàíå íà âåðñèÿòà: %s." + +#, c-format +msgid "There was an error editing the attribute: %s." +msgstr "Ãðåøêà ïðè ðåäàêòèðàíå íà àòðèáóòà: %s." + +#, c-format +msgid "There was an error editing the module: %s." +msgstr "Ãðåøêà ïðè ðåäàêòèðàíå íà ìîäóëà: %s." + +#, c-format +msgid "There was an error editing the priority: %s." +msgstr "Ãðåøêà ïðè ðåäàêòèðàíå íà ïðèîðèòåòà: %s." + +#, c-format +msgid "There was an error editing the state: %s." +msgstr "Ãðåøêà ïðè ðåäàêòèðàíå íà ñòàòóñà: %s." + +#, c-format +msgid "There was an error editing the subject: %s." +msgstr "Ãðåøêà ïðè ðåäàêòèðàíå íà òåìàòà: %s." + +#, c-format +msgid "There was an error editing the version: %s." +msgstr "Ãðåøêà ïðè ðåäàêòèðàíå íà âåðñèÿòà: %s." + +#, c-format +msgid "There was an error listing your assigned tickets: %s" +msgstr "Ãðåøêà ïðè ïîêàçâàíåòî íà ñïèñúêà ñ âúçëîæåíèòå áþëåòèíè: %s" + +#, c-format +msgid "There was an error listing your open requests: %s" +msgstr "Ãðåøêà ïðè ïîêàçâàíåòî íà ñïèñúêà ñ îòâîðåíè ìîëáè: %s" + +#, c-format +msgid "There was an error modifying the type: %s." +msgstr "Ãðåøêà ïðè ìîäèôèöèðàíå íà òèïà: %s." + +#, c-format +msgid "There was an error performing your search: %s" +msgstr "Ãðåøêà ïðè òúðñåíå: %s" + +#, c-format +msgid "There was an error removing '%s' from the responsible list for '%s': %s" +msgstr "Ãðåøêà ïðè ïðåìàõâàíåòî íà '%s' îò ñïèñúêà ñ îòãîâîðíèòå çà '%s': %s." + +msgid "" +"This file controls the default preferences for Whups, and also controls " +"which preferences users can alter." +msgstr "" +"Òîçè ôàéë ñúäúðæà íàñòðîéêèòå ïî ïîäðàçáèðàíå íà Whups è êîíòðîëèðà êîè îò " +"òÿõ ïîòðåáèòåëÿò ìîæå äà ïðîìåíÿ." + +msgid "" +"This file controls the stylesheet that is used to set colors and fonts in " +"addition to or overriding Horde defaults." +msgstr "" +"Òîçè ôàéë êîíòðîëèðà ñòèëîâåòå, êîéòî ñå èçïîëçâàò çà öâåòîâåòå è øðèôòîâåòå " +"â äîïúëíåíèå êúì ïîäðàçáèðàùèòå ñòèëîâå íà Horde." + +msgid "" +"This file defines the templates that various parts of Whups use to format " +"data." +msgstr "" +"Òîçè ôàéë äåôèíèðà øàáëîíèòå, êîèòî ðàçëè÷íèòå ÷àñòè íà Whups èçïîëçâàò çà äà" +" ôîðìàòèðàò äàííè" + +msgid "This is not a search results template." +msgstr "Òîâà íå å øàáëîí çà ðåçóëòàòè îò òúðñåíå." + +msgid "This is not a valid subject." +msgstr "Òîâà íå å âàëèäíà òåìà" + +msgid "" +"This is the main WHUPS configuration file. It contains paths and options for " +"all WHUPS scripts." +msgstr "" +"Òîâà å ãëàâíèÿ ôàéë çà êîíôèãóðèðàíå íà WHUPS. Òîé ñúäúðæà ïúòèùàòà è " +"îïöèèòå çà WHUPS ñêðèïòîâåòå." + +#, c-format +msgid "This mail was automatically generated by %s" +msgstr "Òîçè åìàéë áåøå àâòîìàòè÷íî ãåíåðèðàí îò %s" + +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this module, you will not " +"be able to create tickets." +msgstr "" +"Òîçè ìîäóë èçèñêâà äà çàäàäåòå âåðñèÿ, íî íÿìà âåðñèè àñîöèèðàíè ñ íåãî." +"Äîêàòî íÿìà âåðñèè, íå å âúçìîæíî äà ñúçäàâàòå áþëåòèíè." + +#, c-format +msgid "Ticket %s Comments" +msgstr "Áþëåòèí %s êîìåíòàðè" + +#, c-format +msgid "Ticket %s Details" +msgstr "Áþëåòèí %s äåòàéëè" + +#, c-format +msgid "Ticket %s has been assigned" +msgstr "Áþëåòèí %s áåøå âúçëîæåí" + +#, c-format +msgid "Ticket %s has changed priority" +msgstr "Áþëåòèí %s å ñúñ ñìåíåí ïðèîðèòåò" + +#, c-format +msgid "Ticket %s has changed state" +msgstr "Áþëåòèí %s e ñúñ ñìåíåí ñòàòóñ" + +#, c-format +msgid "Ticket %s was not found." +msgstr "Áþëåòèí %s íå áåøå íàìåðåí" + +msgid "Ticket Details" +msgstr "Áþëåòèí äåòàéëè" + +msgid "Ticket ID" +msgstr "Áþëåòèí ID" + +msgid "Ticket Password" +msgstr "Áþëåòèí Ïàðîëà" + +msgid "Ticket State" +msgstr "Áþëåòèí ñòàòóñ" + +msgid "Ticket Stats" +msgstr "Áþëåòèí ñòàòóñ" + +msgid "Ticket Summary" +msgstr "Áþëåòèí îáîáùåíèå" + +msgid "Ticket Type" +msgstr "Áþëåòèí òèï" + +msgid "Ticket Types associated with this Queue" +msgstr "Áþëåòèí òèïîâå àñîöèèðàíè ñ òîçè ìîäóë" + +msgid "Tickets assigned to you" +msgstr "Áþëåòèíè âúçëîæåíè íà Âàñ" + +msgid "Tickets which are" +msgstr "Áþëåòèíè êîèòî ñà" + +msgid "Tickets you requested" +msgstr "Áþëåòèíè êîèòî èçèñêàõòå" + +msgid "Type" +msgstr "Òèï" + +msgid "Type Description" +msgstr "Òèï îïèñàíèå" + +msgid "Type Name" +msgstr "Òèï èìå" + +msgid "Unassigned" +msgstr "Íåâúçëîæåí" + +msgid "Unconfirmed" +msgstr "Íåïîòâúðäåí" + +#, c-format +msgid "Unknown node type %s" +msgstr "Íåèçâåñòåí âúçëîâ òèï %s" + +msgid "User" +msgstr "Ïîòðåáèòåë" + +msgid "User Criteria" +msgstr "Ïîòðåáèòåëñêè êðèòåðèè" + +msgid "User ID" +msgstr "Ïîòðåáèòåë ID" + +msgid "User Options" +msgstr "Ïîòðåáèòåëñêè îïöèè" + +#, c-format +msgid "Users responsible for '%s'" +msgstr "Ïîòðåáèòåëè îòãîâîðíè çà '%s'" + +msgid "Users responsible for this Queue" +msgstr "Ïîòðåáèòåëè îòãîâîðíè çà òîçè ìîäóë" + +msgid "Users responsible for this module" +msgstr "Ïîòðåáèòåëè îòãîâîðíè çà òîçè ìîäóë" + +msgid "Version" +msgstr "Âåðñèÿ" + +msgid "Version Description" +msgstr "Îïèñàíèå íà ïðîáëåìà" + +msgid "Version Name" +msgstr "Âåðñèÿ èìå" + +msgid "View Graphs" +msgstr "Âèæ ãðàôèêàòà" + +msgid "Viewable only by members of" +msgstr "Ìîæå äà ñå ïðåãëåæäà ñàìî îò ÷ëåíîâå íà" + +msgid "WHUPS is not properly configured" +msgstr "WHUPS íå å êîíôèãóðèðàí êîðåêòíî" + +msgid "Weekday Day Month" +msgstr "Ðàáîòåí äåí ìåñåö" + +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "Ðàáîòåí äåí ìåñåö ××:ÌÌ:ÑÑ ×Ç" + +msgid "Yes" +msgstr "Äà" + +#, c-format +msgid "You do not have permission to access this ticket (%s)." +msgstr "Íÿìàòå ïðàâà çà äîñòúï äî òîçè áþëåòèí (%s)." + +msgid "You have no saved queries." +msgstr "Íÿìàòå çàïèñàíè çàÿâêè." + +msgid "Your Email Address" +msgstr "Âàøèÿ Email àäðåñ" + +msgid "Your Information" +msgstr "Èíôîðìàöèÿ çà Âàñ" + +msgid "Your Password" +msgstr "Âàøàòà Ïàðîëà" + +msgid "Your password is incorrect." +msgstr "Âàøàòà ïàðîëà íå å êîðåêòíà." + +#, c-format +msgid "Your ticket id is %s. " +msgstr "Âàøèÿò áþëåòèí id å %s." + +msgid "contains (case insensitive) substring" +msgstr "ñúäúðæà ñòðèíã íå÷óâñòâèòåëåí êúì ðàçìåðà íà áóêâèòå" + +msgid "contains (case sensitive) substring" +msgstr "ñúäúðæà ñòðèíã ÷óâñòâèòåëåí êúì ðàçìåðà íà áóêâèòå" + +msgid "contains the word" +msgstr "ñúäúðæà äóìàòà" + +msgid "is" +msgstr "å" + +msgid "is greater than" +msgstr "å ïî-ãîëÿì îò" + +msgid "is less than" +msgstr "å ïî-ìàëúê îò" + +msgid "matches the pattern" +msgstr "ñúâïàäà ñúñ óñëîâèÿòà" diff --git a/whups/po/cs_CZ.po b/whups/po/cs_CZ.po new file mode 100644 index 000000000..5d98f37d0 --- /dev/null +++ b/whups/po/cs_CZ.po @@ -0,0 +1,2473 @@ +# translation of cs_CZ.po to Èe¹tina +# Whups Czech Translation. +# Copyright 2002 Pavel Chytil. +# +# Pavel Chytil , 2002. +# Václav Hùla , 2008. +msgid "" +msgstr "" +"Project-Id-Version: cs_CZ\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-09-25 12:32+0200\n" +"PO-Revision-Date: 2008-11-26 16:45+0100\n" +"Last-Translator: Václav Hùla \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.2\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: admin/index.php:745 +#, php-format +msgid "\"%s\" is no longer among those responsible for \"%s\"" +msgstr "'%s' ji¾ nezodpovídá za '%s'" + +#: templates/menu.inc:5 +msgid "#Id" +msgstr "#Id" + +#: templates/ticket/watchers.inc:3 +#, php-format +msgid "%d people watching, %d people responsible" +msgstr "%d sledujících, %d zodpovídajících" + +#: queue/rss.php:96 +#, php-format +msgid "%s %s tickets in %s" +msgstr "%s %s lístkù v %s" + +#: queue/rss.php:100 +#, php-format +msgid "%s %s tickets in all queues" +msgstr "%s %s lístkù ve v¹ech frontách" + +#: lib/Renderer/Comment.php:120 +#, php-format +msgid "%s ⇒ %s" +msgstr "%s ⇒ %s" + +#: lib/Driver.php:497 +#, php-format +msgid "%s (%s) wrote:" +msgstr "%s (%s) napsal:" + +#: admin/index.php:700 +#, php-format +msgid "%s added to those responsible for \"%s\"" +msgstr "'%s' nyní zodpovídá za '%s'" + +#: templates/reports/stats.inc:15 +#, php-format +msgid "%s days" +msgstr "%s dnù" + +#: queue/rss.php:104 +#, php-format +msgid "%s tickets in %s" +msgstr "%s lístkù v %s" + +#: queue/rss.php:108 +#, php-format +msgid "%s tickets in all queues" +msgstr "%s lístkù ve v¹ech frontách" + +#: ticket/watch.php:60 +#, php-format +msgid "%s will be notified when this ticket is updated." +msgstr "%s bude upozornìn pøi zmìnì lístku" + +#: ticket/watch.php:72 +#, php-format +msgid "%s will no longer receive updates for this ticket." +msgstr "%s ji¾ nebude upozornìován pøi zmìnì lístku" + +#: admin/index.php:109 +msgid "- Stage 1" +msgstr "- krok 1" + +#: admin/index.php:114 +msgid "- Stage 2" +msgstr "- krok 2" + +#: scripts/mail-filter.php:172 +msgid "--queue-name or --queue-id must specify a valid and public queue." +msgstr "--queue-name or --queue-id musí být platná veøejná fronta" + +#: templates/prevnext.inc:16 +msgid "<>" +msgstr "Poslední>>" + +#: lib/Forms/Query.php:411 +msgid "Load Query" +msgstr "Nahrát dotaz" + +#: lib/Forms/VarRenderer.php:46 +msgid "Loading..." +msgstr "Nahrávání..." + +#: config/prefs.php.dist:106 +msgid "MM/DD/YY" +msgstr "MM/DD/RR" + +#: config/prefs.php.dist:107 +msgid "MM/DD/YY HH:MM:SS" +msgstr "MM/DD/RR HH:MM:SS" + +#: lib/Forms/Admin/Type.php:193 +#, php-format +msgid "Make a clone of %s" +msgstr "Naklonuj %s" + +#: lib/Forms/EditTicket.php:167 lib/Forms/AddComment.php:38 +msgid "Make this comment visible only to members of a group?" +msgstr "" + +#: lib/Forms/Query.php:274 +msgid "Match" +msgstr "Porovnání" + +#: lib/Forms/Query.php:45 lib/Forms/Query.php:129 lib/Forms/Query.php:275 +msgid "Match Operator" +msgstr "Operátor porovnání" + +#: lib/Query.php:167 +msgid "Match Pattern" +msgstr "Formát porovnání" + +#: lib/Query.php:166 +msgid "Match Word" +msgstr "Porovnat Slovo" + +#: reports.php:30 +msgid "Maximum time a ticket is unresolved" +msgstr "Nejdel¹í èas do uzavøení lístku" + +#: lib/Block/tree_menu.php:3 +msgid "Menu List" +msgstr "Seznam nabídky" + +#: reports.php:31 +msgid "Minimum time a ticket is unresolved" +msgstr "Nejkrat¹í èas do uzavøení lístku" + +#: config/prefs.php.dist:146 +msgid "Most recent first" +msgstr "Od nejnovìj¹ích" + +#: templates/prefs/sourceselect.inc:312 +msgid "Move down" +msgstr "Posunout dolù" + +#: templates/prefs/sourceselect.inc:310 +msgid "Move up" +msgstr "Posunout nahoru" + +#: ticket/queue.php:181 +#, php-format +msgid "Moved ticket %d to \"%s\"" +msgstr "Lístek %d pøesunut do \"%s\"" + +#: mybugs.php:54 +#, php-format +msgid "My %s" +msgstr "Moje %s" + +#: mybugs_edit.php:33 +#, php-format +msgid "My %s :: Add Content" +msgstr "Moje %s: Pøidat Komentáø" + +#: search.php:178 lib/Block/myqueries.php:3 lib/Block/myqueries.php:24 +msgid "My Queries" +msgstr "Moje Dotazy" + +#: lib/Block/myrequests.php:3 lib/Block/myrequests.php:24 +msgid "My Requests" +msgstr "Po¾adavky" + +#: lib/Block/mytickets.php:3 lib/Block/mytickets.php:24 +#: config/prefs.php.dist:75 +msgid "My Tickets" +msgstr "Moje lístky" + +#: lib/api.php:884 +msgid "My tickets by assignment date" +msgstr "Moje lístky podle data pøiøazení" + +#: lib/api.php:883 +msgid "My tickets by creation date" +msgstr "Moje lístky podle data vytvoøení" + +#: lib/api.php:885 +msgid "My tickets by due date" +msgstr "Moje lístky podle po¾adovaného data uzavøení" + +#: lib/api.php:886 +msgid "My tickets by resolution date" +msgstr "Moje lístky podle data uzavøení" + +#: lib/Forms/Query.php:422 +msgid "Name" +msgstr "Jméno" + +#: lib/Forms/Admin/Type.php:198 +msgid "Name of the cloned copy" +msgstr "Jméno kopie" + +#: lib/Query.php:216 +msgid "Ne_w Query" +msgstr "_Nový dotaz" + +#: lib/Driver.php:197 +msgid "New" +msgstr "Nové" + +#: lib/Ticket.php:618 lib/Ticket.php:711 +msgid "New Attachment" +msgstr "Nová pøíloha" + +#: lib/Renderer/Comment.php:58 lib/Renderer/Comment.php:62 +#, php-format +msgid "New Attachment: %s" +msgstr "Nová pøíloha: %s" + +#: ticket/queue.php:32 +msgid "New Queue" +msgstr "Pøesunout do fronty:" + +#: ticket/create.php:67 lib/Block/tree_menu.php:21 +msgid "New Ticket" +msgstr "Nový lístek" + +#: ticket/type.php:31 +msgid "New Type" +msgstr "Zmìnit typ na:" + +#: templates/prevnext.inc:26 +msgid "Next>" +msgstr "Dal¹í>" + +#: ticket/delete.php:33 lib/Forms/Query.php:449 lib/Forms/Admin/Version.php:96 +#: lib/Forms/Admin/State.php:121 lib/Forms/Admin/Priority.php:121 +#: lib/Forms/Admin/Queue.php:174 lib/Forms/Admin/Attribute.php:149 +#: lib/Forms/Admin/Reply.php:110 lib/Forms/Admin/Type.php:176 +msgid "No" +msgstr "Ne" + +#: lib/Ticket.php:100 +#, php-format +msgid "" +"No priority for this ticket and no default priority for ticket type \"%s\" " +"specified." +msgstr "Lístek nemá prioritu a lístky typu \"%s\" nemají výchozí prioritu." + +#: lib/Block/myqueries.php:46 +msgid "No queries have been saved." +msgstr "®ádné dotazy neulo¾eny" + +#: lib/Block/query.php:62 lib/Driver/sql.php:553 +msgid "No query to run" +msgstr "Nezadán ¾ádný dotaz" + +#: lib/Block/queuecontents.php:25 +msgid "No queues available." +msgstr "Není dostupná ¾ádná fronta" + +#: lib/Ticket.php:92 +#, php-format +msgid "" +"No state for this ticket and no default state for ticket type \"%s\" " +"specified." +msgstr "Lístek nemá zadaný stav a lístky typu \"%s\" nemají výchozí stav." + +#: reports.php:35 +msgid "No stats available." +msgstr "Nejsou k dospozici ¾ádné statistiky." + +#: lib/Driver.php:533 +#, php-format +msgid "No such backend \"%s\" found" +msgstr "backend '%s' nenalezen" + +#: lib/View.php:33 +#, php-format +msgid "No such view \"%s\" found" +msgstr "Pohled '%s' nenalezen" + +#: lib/Block/mytickets.php:45 +msgid "No tickets are assigned to you." +msgstr "Nemáte pøiøazeny ¾ádné lístky" + +#: lib/Block/unassigned.php:45 +msgid "No tickets are unassigned!" +msgstr "®ádné nepøiøazené lístky!" + +#: lib/Block/queuecontents.php:62 lib/Block/queuecontents.php:73 +msgid "No tickets in queue." +msgstr "Ve frontì nejsou ¾ádné lístky." + +#: lib/Whups.php:716 +msgid "No tickets matched your search criteria." +msgstr "Nastaveným filtrùm nevyhovuje ¾ádný lístek" + +#: lib/Ticket.php:84 +#, php-format +msgid "No type for this ticket and no default type for queue \"%s\" specified." +msgstr "Lístek nemá typ a lístky z fronty \"%s\" nemají výchozí typ." + +#: templates/prefs/sourceselect.inc:35 lib/Reports.php:67 +msgid "None" +msgstr "®ádný" + +#: lib/Renderer/Query.php:79 lib/Forms/Query.php:26 +msgid "Not" +msgstr "Není" + +#: config/prefs.php.dist:17 +msgid "Notification Options" +msgstr "Mo¾nosti upozoròování" + +#: config/prefs.php.dist:117 +msgid "Only notify me of ticket changes from other users?" +msgstr "Upozoròovat na zmìny jen od ostatních?" + +#: config/prefs.php.dist:126 +msgid "Only notify me of ticket changes with comments?" +msgstr "Upozoròovat jen na zmìny s komentáøi?" + +#: queue/rss.php:43 +msgid "Open" +msgstr "Otevøené" + +#: lib/Block/queuesummary.php:49 +msgid "Open Tickets" +msgstr "Otevøené lístky" + +#: reports.php:23 +msgid "Open Tickets by Owner" +msgstr "Otevøené lístky podle majitele" + +#: reports.php:21 +msgid "Open Tickets by Priority" +msgstr "Otevøené lístky podle priority" + +#: reports.php:18 +msgid "Open Tickets by Queue" +msgstr "Otevøené lístky podle fronty" + +#: reports.php:22 +msgid "Open Tickets by Requester" +msgstr "Otevøené lístky podle zadavatele" + +#: reports.php:19 +msgid "Open Tickets by State" +msgstr "Otevøené lístky podle stavu" + +#: reports.php:20 +msgid "Open Tickets by Type" +msgstr "Otevøené lístky podle typu" + +#: lib/Block/queuecontents.php:47 +#, php-format +msgid "Open Tickets in %s" +msgstr "Otevøené lístky v %s" + +#: queue/rss.php:119 queue/index.php:43 queue/index.php:57 +#, php-format +msgid "Open tickets in %s" +msgstr "Otevøené lístky v %s" + +#: queue/rss.php:121 +msgid "Open tickets in all queues." +msgstr "Otevøené lístky ve v¹ech frontách." + +#: lib/Renderer/Query.php:78 lib/Forms/Query.php:25 +msgid "Or" +msgstr "Nebo" + +#: lib/Whups.php:681 lib/Ticket.php:617 lib/Ticket.php:701 lib/Ticket.php:702 +#: lib/Ticket.php:705 lib/Ticket.php:812 lib/Ticket.php:833 lib/Ticket.php:958 +#: lib/Renderer/Query.php:84 lib/Forms/CreateTicket.php:225 +#: lib/Forms/CreateTicket.php:243 lib/Forms/EditTicket.php:104 +msgid "Owners" +msgstr "Vlastníci" + +#: lib/Whups.php:866 +#, php-format +msgid "Permanently delete %s?" +msgstr "Permanentnì smazat %s?" + +#: ticket/update.php:22 ticket/type.php:74 ticket/delete.php:51 +#: ticket/queue.php:131 ticket/deleteAttachment.php:21 +msgid "Permission Denied" +msgstr "Pøístup odepøen" + +#: ticket/delete.php:40 lib/Forms/EditTicket.php:197 +msgid "Permission Denied." +msgstr "Pøístup odepøen." + +#: query/run.php:44 query/index.php:31 lib/Forms/Query.php:459 +#, php-format +msgid "Permission denied." +msgstr "Pøístup odepøen." + +#: lib/Imple/ContactAutoCompleter.php:227 +msgid "Please resolve ambiguous or invalid addresses." +msgstr "Prosím opravte nejednoznaèné nebo neplatné adresy." + +#: lib/Forms/Admin/Type.php:93 lib/Forms/Admin/Type.php:171 +msgid "Priorities for this Type" +msgstr "Priority pro tento typ" + +#: ticket/type.php:66 ticket/queue.php:117 lib/Whups.php:669 lib/Whups.php:678 +#: lib/Ticket.php:610 lib/Ticket.php:807 lib/Ticket.php:953 +#: lib/Renderer/Query.php:125 lib/Forms/CreateTicket.php:147 +#: lib/Forms/EditTicket.php:68 lib/Forms/Query.php:198 +#: config/prefs.php.dist:49 +msgid "Priority" +msgstr "Priorita" + +#: lib/Renderer/Comment.php:115 +#, php-format +msgid "Priority ⇒ %s" +msgstr "Priorita ⇒ %s" + +#: lib/Forms/Admin/Priority.php:24 lib/Forms/Admin/Priority.php:70 +#: lib/Forms/Admin/Priority.php:118 +msgid "Priority Description" +msgstr "Popis priority" + +#: lib/Forms/Admin/Priority.php:23 lib/Forms/Admin/Priority.php:48 +#: lib/Forms/Admin/Priority.php:67 lib/Forms/Admin/Priority.php:94 +#: lib/Forms/Admin/Priority.php:115 +msgid "Priority Name" +msgstr "Jméno priority" + +#: search.php:178 +msgid "Public Queries" +msgstr "Veøejné dotazy" + +#: query/index.php:172 +msgid "Query Builder" +msgstr "Tvùrce dotazù" + +#: lib/Forms/Query.php:387 +msgid "Query Name" +msgstr "Jméno dotazu" + +#: lib/Forms/QueryParameterForm.php:20 +msgid "Query Parameters" +msgstr "Parametry dotazù" + +#: query/rss.php:63 query/run.php:79 lib/Block/query.php:3 +#: lib/Block/query.php:49 +msgid "Query Results" +msgstr "Výsledky vyhledávání" + +#: lib/Forms/Query.php:389 +msgid "Query Slug" +msgstr "Slug dotazu" + +#: lib/Block/query.php:33 +msgid "Query to run" +msgstr "Provést dotaz..." + +#: lib/Whups.php:679 lib/Ticket.php:606 lib/Ticket.php:803 lib/Ticket.php:918 +#: lib/Ticket.php:923 lib/Renderer/Query.php:94 lib/Forms/Query.php:181 +#: lib/Forms/Search.php:40 lib/Block/queuecontents.php:32 +#: lib/Block/queuesummary.php:49 config/prefs.php.dist:50 +msgid "Queue" +msgstr "Fronta" + +#: lib/Renderer/Comment.php:100 +#, php-format +msgid "Queue ⇒ %s" +msgstr "Fronta ⇒ %s" + +#: lib/Block/queuecontents.php:3 lib/Block/queuecontents.php:49 +msgid "Queue Contents" +msgstr "Obsah fronty:" + +#: lib/Forms/Admin/Queue.php:24 lib/Forms/Admin/Queue.php:89 +#: lib/Forms/Admin/Queue.php:170 +msgid "Queue Description" +msgstr "Popis fronty" + +#: lib/Forms/Admin/Queue.php:30 lib/Forms/Admin/Queue.php:97 +msgid "Queue Email" +msgstr "E-mail fronty" + +#: lib/Forms/CreateTicket.php:34 lib/Forms/CreateTicket.php:45 +#: lib/Forms/Admin/Queue.php:23 lib/Forms/Admin/Queue.php:60 +#: lib/Forms/Admin/Queue.php:85 lib/Forms/Admin/Queue.php:166 +msgid "Queue Name" +msgstr "Jméno fronty" + +#: lib/Forms/Admin/Queue.php:26 lib/Forms/Admin/Queue.php:93 +msgid "Queue Slug" +msgstr "Slug fronty" + +#: lib/Block/queuesummary.php:3 lib/Block/queuesummary.php:24 +msgid "Queue Summary" +msgstr "Shrnutí" + +#: ticket/queue.php:86 lib/Ticket.php:932 lib/Ticket.php:938 +#: lib/Forms/CreateTicket.php:93 +msgid "Queue Version" +msgstr "Verze fronty" + +#: admin/index.php:35 +msgid "Queue/Type Matri_x" +msgstr "Matice front/typù" + +#: templates/admin/mtmatrix.inc:6 +msgid "Queue/Type Matrix" +msgstr "Matice front/typù" + +#: lib/api.php:163 lib/api.php:781 +msgid "Queues" +msgstr "Fronty" + +#: templates/prevnext.inc:32 +msgid "Re_turn to Search Results" +msgstr "Zpìt na výsledky hledání?" + +#: lib/Forms/Admin/Attribute.php:147 +msgid "Really delete this attribute? This may cause data problems!" +msgstr "" +"Opravdu chcete vymazat tento atribut? Mù¾e to mít za následek problémy s " +"daty!!" + +#: lib/Forms/Admin/Reply.php:108 +msgid "Really delete this form reply?" +msgstr "Skuteènì odstranit tento vzor odpovìdi?" + +#: lib/Forms/Admin/Priority.php:122 +msgid "Really delete this priority? This may cause data problems!" +msgstr "" +"Opravdu chcete vymazat tuto prioritu? Mù¾e to mít za následek problémy s " +"daty!!" + +#: lib/Forms/Query.php:450 +msgid "Really delete this query? This operation is not undoable." +msgstr "Opravdu smazat tento dotaz? Tato operace je nevratná." + +#: lib/Forms/Admin/Queue.php:176 +msgid "Really delete this queue? This may cause data problems!" +msgstr "" +"Opravdu chcete vymazat tuto frontu? Mù¾e to mít za následek problémy s daty!!" + +#: lib/Forms/Admin/State.php:122 +msgid "Really delete this state? This may cause data problems!" +msgstr "" +"Opravdu chcete vymazat tento stav? Mù¾e to mít za následek problémy s daty!!" + +#: ticket/delete.php:34 +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "" +"Opravdu smazat tento lístek? Nebude archivován a bude definitivnì smazán." + +#: lib/Forms/Admin/Type.php:178 +msgid "Really delete this type? This may cause data problems!" +msgstr "" +"Opravdu chcete vymazat tento typ? Mù¾e to mít za následek problémy s daty!!" + +#: lib/Forms/Admin/Version.php:97 +msgid "Really delete this version? This may cause data problems!" +msgstr "" +"Opravdu chcete vymazat tuto verzi? Mù¾e to mít za následek problémy s daty!!" + +#: lib/Mail.php:217 +msgid "Received message:" +msgstr "Obdr¾ená zpráva:" + +#: search.php:162 +msgid "Refine Search" +msgstr "Pøedefinujte vyhledávání" + +#: admin/index.php:1170 +msgid "Reminders were sent." +msgstr "Upomínky rozeslány." + +#: lib/Forms/Admin/User.php:59 +msgid "Remove User" +msgstr "Odstranit u¾ivatele" + +#: ticket/watch.php:49 +msgid "Remove Watcher" +msgstr "Odstranit sledujícího" + +#: templates/prefs/sourceselect.inc:300 +msgid "Remove source" +msgstr "Odstranit zdroj" + +#: lib/Renderer/Comment.php:95 +msgid "Reply to this comment" +msgstr "Odpovìdìt na komentáø" + +#: reports.php:40 +msgid "Reports" +msgstr "Reporty" + +#: lib/Whups.php:680 lib/Ticket.php:965 lib/Renderer/Query.php:86 +msgid "Requester" +msgstr "Zadavatel" + +#: lib/Forms/Admin/Attribute.php:28 lib/Forms/Admin/Attribute.php:99 +msgid "Required Attribute?" +msgstr "Povinný atribut?" + +#: lib/Whups.php:685 lib/Ticket.php:991 lib/Driver.php:199 lib/api.php:927 +#: lib/Renderer/Query.php:151 config/prefs.php.dist:54 +msgid "Resolved" +msgstr "Vyøe¹eno" + +#: lib/Forms/Query.php:330 lib/Forms/Search.php:60 +msgid "Resolved from" +msgstr "Vyøe¹eno od" + +#: lib/Forms/Query.php:331 +msgid "Resolved to" +msgstr "Vyøe¹eno do" + +#: lib/Forms/Admin/User.php:61 +msgid "Responsible Users" +msgstr "Zodpovìdní U¾ivatelé" + +#: lib/Whups.php:306 +msgid "S_et Queue" +msgstr "Zmìna fronty" + +#: lib/Query.php:234 +msgid "Sa_ve Query" +msgstr "Ulo¾ dotaz" + +#: templates/view/results.inc:96 lib/Forms/Query.php:385 +msgid "Save" +msgstr "Ulo¾it" + +#: query/index.php:233 +msgid "Save Criterion" +msgstr "Ulo¾it kriterium" + +#: lib/Forms/Query.php:384 +msgid "Save Query" +msgstr "Ulo¾ dotaz" + +#: search.php:69 lib/Forms/Search.php:19 +msgid "Save as Query" +msgstr "Ulo¾ jako dotaz" + +#: search.php:155 lib/Block/tree_menu.php:30 +msgid "Search" +msgstr "Hledej" + +#: lib/Forms/Query.php:278 +#, php-format +msgid "Search %s Attribute" +msgstr "Vyhledávání %s" + +#: lib/Forms/Query.php:272 lib/Forms/Query.php:281 +msgid "Search Attribute" +msgstr "Atributy" + +#: lib/Forms/Query.php:48 lib/Forms/Query.php:131 +msgid "Search Comments" +msgstr "Komentáøe" + +#: lib/Forms/Query.php:46 +msgid "Search Owners" +msgstr "Majitelé" + +#: lib/Forms/Query.php:47 +msgid "Search Requester" +msgstr "Zadavatelé" + +#: search.php:147 search/rss.php:55 search/rss.php:59 +msgid "Search Results" +msgstr "Výsledky vyhledávání" + +#: templates/prevnext.inc:38 +#, php-format +msgid "Search Results: %s of %s" +msgstr "Výsledky vyhledávání %s z %s" + +#: lib/Forms/Query.php:130 +msgid "Search Summary" +msgstr "Shrnutí" + +#: config/prefs.php.dist:76 +msgid "Search Tickets" +msgstr "Hledání v lístcích" + +#: config/prefs.php.dist:25 +msgid "Select address book sources for adding and searching for addresses." +msgstr "Volba zdrojù adresáøe pro pøidávaní a vyhledávání adres." + +#: templates/prefs/sourceselect.inc:319 +msgid "Select all fields to search when expanding addresses." +msgstr "Vybrat v¹echna pole pro vyhledávání pøi expanzi adres." + +#: config/prefs.php.dist:78 +msgid "Select the view to display after login:" +msgstr "Vybrat zobrazení po pøihlá¹ení:" + +#: templates/prefs/sourceselect.inc:303 templates/prefs/sourceselect.inc:305 +msgid "Selected Address books:" +msgstr "Vybraný zdroj adresáøù:" + +#: admin/index.php:36 +msgid "Sen_d Reminders" +msgstr "Rozeslat upomínky" + +#: lib/Forms/Admin.php:23 +msgid "Send Reminders" +msgstr "Rozeslat upomínky" + +#: lib/Forms/Admin.php:34 +msgid "Send only for this list of ticket ids" +msgstr "Zasílat pouze pro tyto lístky:" + +#: lib/Forms/Admin/Priority.php:80 lib/Forms/Admin/Priority.php:82 +msgid "Set Default Priority" +msgstr "Zadejte výchozí prioritu" + +#: lib/Forms/Admin/State.php:80 lib/Forms/Admin/State.php:82 +msgid "Set Default State" +msgstr "Zadejte výchozí stav" + +#: ticket/queue.php:201 ticket/queue.php:210 ticket/queue.php:222 +msgid "Set Queue - Step 1" +msgstr "Zmìna fronty - krok 1" + +#: ticket/queue.php:202 ticket/queue.php:211 +msgid "Set Queue - Step 2" +msgstr "Zmìna fronty - krok 2" + +#: ticket/queue.php:212 +msgid "Set Queue - Step 3" +msgstr "Zmìna fronty - krok 3" + +#: ticket/queue.php:189 +#, php-format +msgid "Set Queue for %s" +msgstr "Zmìna fronty pro %s" + +#: lib/api.php:800 +msgid "Set Requester" +msgstr "Zadavatel" + +#: ticket/type.php:139 ticket/type.php:148 +msgid "Set Type - Step 1" +msgstr "Zmìna typu - krok 1" + +#: ticket/type.php:140 +msgid "Set Type - Step 2" +msgstr "Zmìna typu - krok 1" + +#: ticket/type.php:127 +#, php-format +msgid "Set Type for %s" +msgstr "Zmìna typu pro %s" + +#: lib/Whups.php:311 +msgid "Set _Type" +msgstr "Zmìna typu" + +#: config/prefs.php.dist:144 +msgid "Show comments in chronological order, or most recent first?" +msgstr "Zobrazit komentáøe chronologicky nebo od nejnovìj¹ích?" + +#: config/prefs.php.dist:95 +msgid "Show ticket IDs in the summary view?" +msgstr "Zobrazovat ID lístkù v pøehledech?" + +#: config/prefs.php.dist:87 +msgid "Show tickets you have requested in the summary view?" +msgstr "Zobrazovat po¾adované lístky v pøehledech?" + +#: config/templates.php.dist:16 +msgid "Simple HTML Report" +msgstr "Jednoduché HTML" + +#: lib/Forms/Admin/Queue.php:27 +#, php-format +msgid "" +"Slugs allows direct access to this queue's open tickets by visiting: %s. " +"
Slug names may contain only letters, numbers or the _ (underscore) " +"character." +msgstr "" +"Slugy umo¾òují pøímý pøístup na otevøené lístky v této frontì náv¹tìvou %s. " +"
Slugy mohou obsahovat jen ascii písmena, èísla a _ (podtr¾ítko)" + +#: templates/view/results.inc:37 templates/view/results.inc:41 +#, php-format +msgid "Sort by %s" +msgstr "Setøídit podle %s" + +#: lib/Forms/CreateTicket.php:136 lib/Forms/CreateTicket.php:175 +#: lib/Forms/AddComment.php:20 lib/Forms/AddComment.php:51 +msgid "Spam protection" +msgstr "Ochrana pøed spamem" + +#: ticket/type.php:65 ticket/queue.php:116 lib/Whups.php:670 lib/Whups.php:676 +#: lib/Ticket.php:609 lib/Ticket.php:806 lib/Ticket.php:949 +#: lib/Renderer/Query.php:117 lib/Forms/EditTicket.php:62 +#: lib/Forms/Query.php:193 config/prefs.php.dist:47 +msgid "State" +msgstr "Stav" + +#: lib/Renderer/Comment.php:110 +#, php-format +msgid "State ⇒ %s" +msgstr "Stav ⇒ '%s'" + +#: lib/Forms/Admin/State.php:25 lib/Forms/Admin/State.php:70 +msgid "State Category" +msgstr "Kategorie Stavu" + +#: lib/Forms/Admin/State.php:24 lib/Forms/Admin/State.php:67 +#: lib/Forms/Admin/State.php:118 +msgid "State Description" +msgstr "Popis Stavu" + +#: lib/Forms/Admin/State.php:23 lib/Forms/Admin/State.php:47 +#: lib/Forms/Admin/State.php:64 lib/Forms/Admin/State.php:96 +#: lib/Forms/Admin/State.php:115 +msgid "State Name" +msgstr "Jméno Stavu" + +#: lib/Forms/Admin/Type.php:76 lib/Forms/Admin/Type.php:165 +msgid "States for this Type" +msgstr "Stavy pro tento Typ" + +#: templates/ticket/watchers.inc:1 +msgid "Status" +msgstr "Stav" + +#: ticket/create.php:146 +msgid "Submit" +msgstr "Odeslat" + +#: query/run.php:93 query/run.php:94 +msgid "Subscribe to this query" +msgstr "Pøihlástit dotaz" + +#: admin/index.php:198 +#, php-format +msgid "Successfully Cloned %s to %s." +msgstr "Úspì¹nì naklonováno %s do %s" + +#: ticket/type.php:118 +msgid "Successfully changed ticket type." +msgstr "Typ lístku úspì¹ne zmìnìn." + +#: ticket/delete.php:30 lib/Whups.php:668 lib/Whups.php:675 lib/Ticket.php:616 +#: lib/Ticket.php:643 lib/Ticket.php:646 lib/Ticket.php:650 lib/Ticket.php:812 +#: lib/Ticket.php:821 lib/Ticket.php:912 lib/Renderer/Query.php:89 +#: lib/Forms/CreateTicket.php:152 lib/Forms/EditTicket.php:58 +#: config/prefs.php.dist:46 +msgid "Summary" +msgstr "Shrnutí" + +#: lib/Renderer/Comment.php:51 +#, php-format +msgid "Summary ⇒ %s" +msgstr "Shrnutí ⇒ '%s'" + +#: lib/Forms/Search.php:43 +msgid "Summary like" +msgstr "Shrnutí" + +#: lib/Renderer/Comment.php:79 +#, php-format +msgid "Taken from %s" +msgstr "Odebráno %s" + +#: lib/Forms/Query.php:128 +msgid "Text" +msgstr "Text" + +#: lib/Driver/sql.php:80 lib/Driver/sql.php:1306 +msgid "That queue slug is already taken. Please select another." +msgstr "Tento slug je ji¾ obsazen." + +#: lib/Forms/CreateTicket.php:129 +msgid "The Requester's Email Address" +msgstr "Emailová adresa zadavatele" + +#: view.php:58 lib/Ticket.php:439 lib/Ticket.php:487 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "Pro odesílání pøíloh musí být nastaven VSF systém." + +#: admin/index.php:906 +#, php-format +msgid "The attribute \"%s\" has been added to %s." +msgstr "Atribut '%s' byl pøidán do %s." + +#: admin/index.php:1006 +msgid "The attribute has been deleted." +msgstr "Atribut byl vymazán." + +#: admin/index.php:974 +msgid "The attribute has been modified." +msgstr "Atribut byl modifikován." + +#: admin/index.php:1015 +msgid "The attribute was not deleted." +msgstr "Atribut nebyl vymazán." + +#: admin/index.php:642 +msgid "The default priority has been set." +msgstr "Nastavena výchozí priorita." + +#: admin/index.php:506 +msgid "The default state has been set." +msgstr "Nastaven výchozí stav." + +#: admin/index.php:1043 +#, php-format +msgid "The form reply \"%s\" has been added to %s." +msgstr "Byla pøidán vzoru odpovìdi '%s' do %s." + +#: admin/index.php:1135 +msgid "The form reply has been deleted." +msgstr "Vzor odpovìdi byl vymazán." + +#: admin/index.php:1108 +msgid "The form reply has been modified." +msgstr "Vzor odpovìdi byl modifikován." + +#: admin/index.php:1144 +msgid "The form reply was not deleted." +msgstr "Vzor odpovìdi nebyl vymazán." + +#: admin/index.php:556 +#, php-format +msgid "The priority \"%s\" has been added to %s." +msgstr "Byla pøidána priorita '%s' do %s." + +#: admin/index.php:661 +msgid "The priority has been deleted." +msgstr "Priorita byla vymazána." + +#: admin/index.php:609 +msgid "The priority has been modified." +msgstr "Priorita byla modifikována." + +#: admin/index.php:670 +msgid "The priority was not deleted." +msgstr "Priorita nebyla vymazána." + +#: lib/Forms/Query.php:463 +#, php-format +msgid "The query \"%s\" couldn't be deleted: %s" +msgstr "Nelze smazat frontu \"%s\": %s" + +#: lib/Forms/Query.php:465 +#, php-format +msgid "The query \"%s\" has been deleted." +msgstr "Fronta \"%s\" byla vymazána." + +#: lib/Forms/Query.php:430 +#, php-format +msgid "The query couldn't be loaded:" +msgstr "Nelze nahrát dotaz" + +#: admin/index.php:300 +#, php-format +msgid "The queue \"%s\" has been created." +msgstr "Byla vytvoøena fronta '%s'" + +#: admin/index.php:392 +msgid "The queue has been deleted." +msgstr "Fronta smazána." + +#: admin/index.php:359 +msgid "The queue has been modified." +msgstr "Fronta upravena." + +#: admin/index.php:400 +msgid "The queue was not deleted." +msgstr "Fronta nebyla smazána" + +#: lib/MIME/Viewer/zip.php:58 +msgid "The requested file does not exist in the Zip attachment." +msgstr "Po¾adovaný soubor v zip pøíloze neexistuje." + +#: data.php:26 +msgid "The requested template does not exist." +msgstr "Po¾adovaný vzor neexistuje." + +#: admin/index.php:422 +#, php-format +msgid "The state \"%s\" has been added to %s." +msgstr "Stav '%s' byl pøidán do %s." + +#: admin/index.php:525 +msgid "The state has been deleted." +msgstr "Stav byl vymazán." + +#: admin/index.php:475 +msgid "The state has been modified." +msgstr "Stav byl modifikován." + +#: admin/index.php:533 +msgid "The state was not deleted." +msgstr "Stav nebyl vymazán." + +#: ticket/delete.php:78 +msgid "The ticket was not deleted." +msgstr "Lístek nebyl vymazán." + +#: admin/index.php:223 +#, php-format +msgid "The type \"%s\" has been modified." +msgstr "Typ '%s' byl modifikován." + +#: admin/index.php:272 +msgid "The type has been deleted." +msgstr "Typ byl vymazán." + +#: admin/index.php:280 +msgid "The type was not deleted." +msgstr "Typ nebyl vymazán." + +#: admin/index.php:776 +#, php-format +msgid "The version \"%s\" has been added to %s." +msgstr "Verze '%s' byla pøidána do %s." + +#: admin/index.php:865 +msgid "The version has been deleted." +msgstr "Verze byla vymazána." + +#: admin/index.php:835 +msgid "The version has been modified." +msgstr "Verze byla modifikována." + +#: admin/index.php:873 +msgid "The version was not deleted." +msgstr "Verze nebyla vymazána." + +#: lib/Forms/Admin/Attribute.php:70 +msgid "There are no attribute types to edit" +msgstr "Nejsou zde ¾ádné typy, které lze zmìnit" + +#: lib/Forms/Query.php:281 +msgid "There are no attributes defined." +msgstr "Nejsou definovány stavy." + +#: lib/Forms/Admin/Reply.php:48 +msgid "There are no form replies to edit" +msgstr "Nejsou zde ¾ádné vzory odpovìdi, které lze zmìnit" + +#: lib/Block/queuesummary.php:44 +msgid "There are no open tickets." +msgstr "®ádné otevøené lístky." + +#: lib/Forms/Admin/Priority.php:44 lib/Forms/Admin/Priority.php:90 +msgid "There are no priorities to edit" +msgstr "Nejsou zde ¾ádné priority, které lze zmìnit" + +#: lib/Forms/Admin.php:31 +msgid "There are no queues available." +msgstr "Není dostupná ¾ádná fronta" + +#: lib/Forms/Admin/Queue.php:57 +msgid "There are no queues to edit" +msgstr "Nejsou ¾ádné fronty k úpravì." + +#: lib/Forms/CreateTicket.php:35 +msgid "There are no queues which you can create tickets in." +msgstr "Není ¾ádná fronta, ve které mù¾ete vytváøet lístky." + +#: lib/Forms/Search.php:38 +msgid "There are no queues which you can search." +msgstr "Není ¾ádná fronta, ve které mù¾ete hledat." + +#: lib/Forms/Admin/State.php:43 lib/Forms/Admin/State.php:92 +msgid "There are no states to edit" +msgstr "Nejsou zde ¾ádné stavy, které lze zmìnit" + +#: lib/Forms/CreateTicket.php:72 +msgid "" +"There are no ticket types associated with this queue; until there are, you " +"cannot create any tickets in this queue." +msgstr "" +"Tato fronta nemá ¾ádné typy lístkù. Dokud se tyto typy nevytvoøí, není mo¾né " +"zadat lístek." + +#: lib/Forms/Admin/Type.php:45 +msgid "There are no types to edit" +msgstr "Nejsou zde ¾ádné typy, které lze zmìnit" + +#: lib/Forms/Admin/User.php:75 +msgid "There are no users responsible for this queue." +msgstr "Nejsou zde ¾ádní u¾ivatelé zodpovìdní za tuto frontu" + +#: lib/Forms/CreateTicket.php:242 +msgid "There are no users to which this ticket can be assigned." +msgstr "Není komu pøiøadit lístek" + +#: lib/Forms/Admin/Version.php:44 +msgid "There are no versions to edit" +msgstr "Nejsou zde ¾ádné verze, které lze zmìnit" + +#: lib/Reports.php:143 +msgid "There is no data for this report." +msgstr "Pro tento report nejdou k dispozici ¾ádná data" + +#: admin/index.php:705 +#, php-format +msgid "There was an error adding \"%s\" to the responsible list for \"%s\":" +msgstr "Nastala chyba pøi pøidávání '%s' do seznamu zodpovìdných pro '%s':" + +#: admin/index.php:911 +msgid "There was an error creating the attribute:" +msgstr "Nastala chyba pøi vytváøení atributu:" + +#: admin/index.php:1051 +msgid "There was an error creating the form reply:" +msgstr "Nastala chyba pøi vytváøení vzoru odpovìdi." + +#: admin/index.php:561 +msgid "There was an error creating the priority:" +msgstr "Nastala chyba pøi vytváøení priority:" + +#: admin/index.php:309 +msgid "There was an error creating the queue:" +msgstr "Nastala chyba pøi vytváøení fronty:" + +#: admin/index.php:426 +msgid "There was an error creating the state:" +msgstr "Nastala chyba pøi vytváøení stavu:" + +#: admin/index.php:780 +msgid "There was an error creating the version:" +msgstr "Nastala chyba pøi vytváøení verze:" + +#: admin/index.php:1010 +msgid "There was an error deleting the attribute:" +msgstr "Nastala chyba pøi vymázávání atributu:" + +#: admin/index.php:1139 +msgid "There was an error deleting the form reply:" +msgstr "Nastala chyba pøi vymázávání vzoru odpovìdi:" + +#: admin/index.php:665 +msgid "There was an error deleting the priority:" +msgstr "Nastala chyba pøi vymázávání priority:" + +#: admin/index.php:395 +msgid "There was an error deleting the queue:" +msgstr "Nastala chyba pøi mazání fronty:" + +#: admin/index.php:528 +msgid "There was an error deleting the state:" +msgstr "Nastala chyba pøi vymázávání stavu:" + +#: ticket/delete.php:75 +msgid "There was an error deleting the ticket:" +msgstr "Nastala chyba pøi vymázávání lístku:" + +#: admin/index.php:275 +msgid "There was an error deleting the type:" +msgstr "Nastala chyba pøi vymázávání typu:" + +#: admin/index.php:868 +msgid "There was an error deleting the version:" +msgstr "Nastala chyba pøi vymázávání verze:" + +#: admin/index.php:982 +msgid "There was an error editing the attribute:" +msgstr "Nastala chyba pøi zmìnì atributu:" + +#: admin/index.php:1104 +msgid "There was an error editing the form reply:" +msgstr "Nastala chyba pøi zmìnì vzoru odpovìdi:" + +#: admin/index.php:615 +msgid "There was an error editing the priority:" +msgstr "Nastala chyba pøi zmìnì priority:" + +#: admin/index.php:375 +msgid "There was an error editing the queue:" +msgstr "Nastala chyba pøi úpravì fronty:" + +#: admin/index.php:480 +msgid "There was an error editing the state:" +msgstr "Nastala chyba pøi zmìnì stavu:" + +#: admin/index.php:841 +msgid "There was an error editing the version:" +msgstr "Nastala chyba pøi zmìnì verze:" + +#: lib/Forms/Admin/User.php:35 +#, php-format +msgid "There was an error listing users: %s; %s" +msgstr "Nastala chyba výpisu u¾ivatelù: %s; %s" + +#: queue/index.php:52 +#, php-format +msgid "There was an error locating tickets in this queue: " +msgstr "Nastala chyba pøi hledání lískù: " + +#: admin/index.php:219 +msgid "There was an error modifying the type:" +msgstr "Nastala chyba pøi zmìnì typu:" + +#: search.php:140 +#, php-format +msgid "There was an error performing your search: %s" +msgstr "Chyba pøi hledání: %s" + +#: admin/index.php:750 +#, php-format +msgid "" +"There was an error removing \"%s\" from the responsible list for \"%s\":" +msgstr "Nastala chyba pøi odstraòování '%s' ze seznamu zodpovìdných pro '%s':" + +#: admin/index.php:638 +msgid "There was an error setting the default priority:" +msgstr "Nastala chyba pøi zmìnì implicitní priority." + +#: admin/index.php:502 +msgid "There was an error setting the default state:" +msgstr "Nastala chyba pøi nastavení výchozího stavu:" + +#: lib/Forms/EditTicket.php:166 lib/Forms/AddComment.php:37 +msgid "This comment is visible to everyone" +msgstr "" + +#: lib/Forms/Admin/Queue.php:31 +msgid "" +"This email address will be used when sending notifications for any queue " +"tickets." +msgstr "" + +#: data.php:29 +msgid "This is not a search results template." +msgstr "Toto není ¹ablona výsledkù hledání" + +#: lib/Query.php:435 lib/Query.php:668 +msgid "This query element cannot be edited." +msgstr "Nelze smazat tuto èást dotazu" + +#: ticket/queue.php:81 lib/Forms/CreateTicket.php:88 +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this queue, you will not " +"be able to create tickets." +msgstr "" +"Tato fronta vy¾aduje zadání verze, ale ¾ádná verze není k dispozici. Dokud " +"nebudou pro frontu vytvoøeny verze nebude mo¾no zadat lístek." + +#: lib/Ticket.php:638 lib/Ticket.php:820 +msgid "Ticket" +msgstr "Lístek" + +#: ticket/delete.php:71 +#, php-format +msgid "Ticket %d has been deleted." +msgstr "Lístek %d byl vymazán." + +#: lib/api.php:850 +#, php-format +msgid "Ticket %s - %s" +msgstr "Lístek %s - %s" + +#: lib/Driver/sql.php:1081 +#, php-format +msgid "Ticket %s was not found." +msgstr "Lístek %s nebyl nalezen." + +#: search.php:170 +msgid "Ticket Search" +msgstr "Prohledávání lístkù" + +#: lib/Forms/CreateTicket.php:142 +msgid "Ticket State" +msgstr "Stav oznámení" + +#: templates/reports/stats.inc:1 +msgid "Ticket Stats" +msgstr "Statistiky lístkù" + +#: lib/Forms/CreateTicket.php:80 +msgid "Ticket Type" +msgstr "Typ oznámení" + +#: lib/Forms/Admin/Queue.php:103 +msgid "Ticket Types associated with this Queue" +msgstr "Typy asociované s touto frontou" + +#: lib/Ticket.php:633 +#, php-format +msgid "Ticket URL: %s" +msgstr "URL lístku: %s" + +#: ticket/update.php:94 +msgid "Ticket Updated" +msgstr "Lístek upraven" + +#: lib/api.php:871 +msgid "Tickets" +msgstr "Lístky" + +#: query/rss.php:70 +#, php-format +msgid "Tickets matching the query \"%s\"." +msgstr "" + +#: templates/prefs/sourceselect.inc:322 +msgid "" +"To select multiple fields, hold down the Control (PC) or Command (Mac) while " +"clicking." +msgstr "" +"Pokud si pøejete vybrat více polí, zmáèknìte a dr¾te klávesu Control (PC) " +"nebo Command (Mac) a kliknìte na polo¾ku." + +#: ticket/queue.php:89 lib/Whups.php:677 lib/Ticket.php:608 lib/Ticket.php:805 +#: lib/Ticket.php:945 lib/Renderer/Query.php:108 lib/Forms/Query.php:174 +#: config/prefs.php.dist:48 +msgid "Type" +msgstr "Typ" + +#: lib/Renderer/Comment.php:105 +#, php-format +msgid "Type ⇒ %s" +msgstr "Typ ⇒ %s" + +#: lib/Forms/Admin/Type.php:23 lib/Forms/Admin/Type.php:70 +#: lib/Forms/Admin/Type.php:160 +msgid "Type Description" +msgstr "Popis Typu" + +#: lib/Forms/Admin/Type.php:22 lib/Forms/Admin/Type.php:48 +#: lib/Forms/Admin/Type.php:67 lib/Forms/Admin/Type.php:156 +msgid "Type Name" +msgstr "Jméno Typu" + +#: search/rss.php:39 +#, php-format +msgid "Type: %s; State: %s" +msgstr "Typ: %s; stav: %s" + +#: lib/Ticket.php:961 +msgid "Unassigned" +msgstr "Nepøiøazené" + +#: lib/Block/unassigned.php:3 lib/Block/unassigned.php:24 +msgid "Unassigned Tickets" +msgstr "Nepøiøazené lístky" + +#: lib/Forms/Admin.php:42 +msgid "Unassigned tickets" +msgstr "Nepøiøazené lístky" + +#: lib/Driver.php:196 +msgid "Unconfirmed" +msgstr "Nepotvrzen" + +#: lib/Renderer/Query.php:167 lib/Renderer/Query.php:207 +#, php-format +msgid "Unknown node type %s" +msgstr "Neznámý typ uzlu %s" + +#: lib/api.php:790 +msgid "Update" +msgstr "Aktualizovat" + +#: ticket/update.php:108 +#, php-format +msgid "Update %s" +msgstr "Aktualizovat %s" + +#: templates/admin/mtmatrix.inc:29 +msgid "Update Associations" +msgstr "Ulozit" + +#: lib/Whups.php:683 lib/Ticket.php:981 lib/Renderer/Query.php:146 +msgid "Updated" +msgstr "Upraveno" + +#: lib/Ticket.php:615 lib/Ticket.php:640 +msgid "Updated By" +msgstr "Upravil" + +#: lib/Forms/Query.php:327 lib/Forms/Search.php:58 +msgid "Updated from" +msgstr "Upraveno od" + +#: lib/Forms/Query.php:328 +msgid "Updated to" +msgstr "Upraveno do" + +#: lib/Forms/Admin/User.php:34 lib/Forms/Admin/User.php:44 +#: lib/Forms/Admin/User.php:47 +msgid "User" +msgstr "U¾ivatel" + +#: lib/Forms/Query.php:44 +msgid "User ID" +msgstr "U¾ivatel" + +#: lib/Forms/Admin/Queue.php:131 +msgid "Users responsible for this Queue" +msgstr "U¾ivatelé zodpovìdní za tuto frontu" + +#: lib/Forms/Admin/User.php:79 +msgid "Users responsible for this queue" +msgstr "U¾ivatelé zodpovìdní za tuto frontu" + +#: lib/Ticket.php:607 lib/Ticket.php:804 lib/Renderer/Query.php:102 +#: lib/Forms/Query.php:185 config/prefs.php.dist:51 +msgid "Version" +msgstr "Verze" + +#: lib/Forms/Admin/Version.php:24 lib/Forms/Admin/Version.php:70 +#: lib/Forms/Admin/Version.php:93 +msgid "Version Description" +msgstr "Popis Verze" + +#: lib/Forms/Admin/Version.php:23 lib/Forms/Admin/Version.php:48 +#: lib/Forms/Admin/Version.php:67 lib/Forms/Admin/Version.php:90 +msgid "Version Name" +msgstr "Jméno Verze" + +#: ticket/type.php:43 ticket/queue.php:50 +msgid "Viewable only by members of" +msgstr "Povoleno prohlí¾et pouze èleny skupiny" + +#: lib/Forms/AddComment.php:25 +msgid "Watch this ticket" +msgstr "Sledovat tento lístek?" + +#: ticket/watch.php:78 +#, php-format +msgid "Watchers for %s" +msgstr "Sledující %s" + +#: config/prefs.php.dist:104 +msgid "Weekday Day Month" +msgstr "Den v týdnu Den Mìsíc" + +#: config/prefs.php.dist:105 +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "Den v týdnu Den Mìsíc HH:MM:SS Zóna" + +#: ticket/delete.php:33 lib/Forms/Query.php:449 lib/Forms/Admin/Version.php:96 +#: lib/Forms/Admin/State.php:121 lib/Forms/Admin/Priority.php:121 +#: lib/Forms/Admin/Queue.php:174 lib/Forms/Admin/Attribute.php:149 +#: lib/Forms/Admin/Reply.php:110 lib/Forms/Admin/Type.php:176 +msgid "Yes" +msgstr "Ano" + +#: view.php:54 +#, php-format +msgid "You are not allowed to view ticket %d." +msgstr "Nejste oprávnìni prohlí¾et lístek %d" + +#: lib/Driver/sql.php:1090 +#, php-format +msgid "You do not have permission to access this ticket (%s)." +msgstr "Nedostateèná práva pro prohlí¾ení tohoto lístku (%s)" + +#: lib/api.php:375 +msgid "You do not have permission to update this ticket." +msgstr "Nedostateèná práva pro úpravu lístku" + +#: lib/Block/myrequests.php:46 +msgid "You have no open requests." +msgstr "Nemáte ¾ádné otevøené po¾adavky" + +#: lib/Forms/Query.php:419 lib/Block/query.php:28 +msgid "You have no saved queries." +msgstr "Nemáte ¾ádné ulo¾ené dotazy" + +#: lib/Whups.php:710 +msgid "You must select at least one queue to send reminders for." +msgstr "Musíte nejdøíve vybrat alespoò jednu frontu," + +#: lib/Forms/CreateTicket.php:132 lib/Forms/AddComment.php:18 +msgid "Your Email Address" +msgstr "Va¹e emailová adresa" + +#: ticket/create.php:60 +#, php-format +msgid "" +"Your ticket ID is %s. An appropriate person has been notified of this " +"request." +msgstr "" +"Vá¹ lístek má ID %s. Nále¾itá osoba byla informována ohlednì tohoto " +"po¾adavku." + +#: lib/Mail.php:244 +msgid "[ Could not render body of message. ]" +msgstr "[ zprávu se nepovedlo zobrazit ]" + +#: lib/Whups.php:774 +msgid "_Admin" +msgstr "_Admin" + +#: lib/Whups.php:298 +msgid "_Comment" +msgstr "_Komentáø" + +#: query/index.php:157 +msgid "_Date Criteria" +msgstr "Kriterium _Data" + +#: lib/Whups.php:316 +msgid "_Delete" +msgstr "_Smazat" + +#: lib/Query.php:237 +msgid "_Delete Query" +msgstr "Vyma¾ frontu" + +#: lib/Query.php:218 +msgid "_Edit Query" +msgstr "_Uprav dotaz" + +#: admin/index.php:33 +msgid "_Edit Queues" +msgstr "Zmìò fronty" + +#: templates/menu.inc:5 +msgid "_Go" +msgstr "Pøejít" + +#: query/index.php:156 +msgid "_Group Criteria" +msgstr "Filtry _skupin" + +#: lib/Whups.php:292 +msgid "_History" +msgstr "_Historie" + +#: lib/Query.php:231 +msgid "_Load Query" +msgstr "_Nahraj dotaz" + +#: lib/Whups.php:765 +#, php-format +msgid "_My %s" +msgstr "_Moje %s" + +#: lib/Whups.php:768 +msgid "_New Ticket" +msgstr "_Nový lístek" + +#: query/index.php:154 +msgid "_Property Criteria" +msgstr "Filtry _vlastností" + +#: lib/Whups.php:769 +msgid "_Query Builder" +msgstr "Tvùrce dotazù" + +#: lib/Whups.php:770 +msgid "_Reports" +msgstr "_Reporty" + +#: lib/Whups.php:767 +msgid "_Search" +msgstr "_Vyhledat" + +#: query/index.php:158 +msgid "_Text Criteria" +msgstr "Filtry _textu" + +#: lib/Whups.php:294 +msgid "_Update" +msgstr "Aktualizovat" + +#: query/index.php:155 +msgid "_User Criteria" +msgstr "Filtry _u¾ivatelù" + +#: lib/Whups.php:302 +msgid "_Watch" +msgstr "_Sledovat" + +#: lib/Renderer/Query.php:187 +msgid "contains (case insensitive) substring" +msgstr "obsahuje znakový øetìzec (nerozli¹ující velká a malá písmena)" + +#: lib/Renderer/Query.php:191 +msgid "contains (case sensitive) substring" +msgstr "obsahuje znakový øetìzec (rozli¹ující velká a malá písmena)" + +#: lib/Renderer/Query.php:195 +msgid "contains the word" +msgstr "obsahuje slovo" + +#: lib/Mail.php:94 lib/Mail.php:118 lib/Mail.php:146 +msgid "current user:" +msgstr "Souèasný u¾ivatel" + +#: lib/api.php:859 +msgid "estimated time" +msgstr "odhad èasu" + +#: lib/Renderer/Query.php:183 +msgid "is" +msgstr "je" + +#: lib/Renderer/Query.php:175 +msgid "is greater than" +msgstr "je vìt¹í ne¾" + +#: lib/Renderer/Query.php:179 +msgid "is less than" +msgstr "je men¹í ne¾" + +#: lib/Renderer/Query.php:199 +msgid "matches the pattern" +msgstr "odpovídá vzoru" + +#: lib/Forms/Search.php:57 lib/Forms/Search.php:59 lib/Forms/Search.php:61 +#: lib/Forms/Search.php:63 lib/Forms/Search.php:65 +msgid "to" +msgstr "" diff --git a/whups/po/de_DE.po b/whups/po/de_DE.po new file mode 100644 index 000000000..eecc9fff4 --- /dev/null +++ b/whups/po/de_DE.po @@ -0,0 +1,2516 @@ +# German translations for Whups. +# Copyright 2002-2009 The Horde Project +# This file is distributed under the same license as the Whups package. +# Jan Schneider , 2002-2008. +# +# query: Abfrage +# search: Suche +# queue: Warteschlange +# resolve: erledigen +msgid "" +msgstr "" +"Project-Id-Version: Whups 1.0-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-09-15 15:35+0200\n" +"PO-Revision-Date: 2009-11-19 17:01+0100\n" +"Last-Translator: Jan Schneider \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: admin/index.php:745 +#, php-format +msgid "\"%s\" is no longer among those responsible for \"%s\"" +msgstr "\"%s\" gehört nicht mehr zu den Verantwortlichen für \"%s\"" + +#: templates/menu.inc:5 +msgid "#Id" +msgstr "#Id" + +#: templates/ticket/watchers.inc:3 +#, php-format +msgid "%d people watching, %d people responsible" +msgstr "%d Beobachter, %d Verantwortliche" + +#: queue/rss.php:96 +#, php-format +msgid "%s %s tickets in %s" +msgstr "%s %s Tickets in %s" + +#: queue/rss.php:100 +#, php-format +msgid "%s %s tickets in all queues" +msgstr "%s %s Tickets in allen Warteschlangen." + +#: lib/Renderer/Comment.php:120 +#, php-format +msgid "%s ⇒ %s" +msgstr "%s ⇒ %s" + +#: lib/Driver.php:497 +#, php-format +msgid "%s (%s) wrote:" +msgstr "%s (%s) hat geschrieben:" + +#: admin/index.php:700 +#, php-format +msgid "%s added to those responsible for \"%s\"" +msgstr "%s gehört jetzt zu den Verantwortlichen für \"%s\"" + +#: templates/reports/stats.inc:15 +#, php-format +msgid "%s days" +msgstr "%s Tage" + +#: queue/rss.php:104 +#, php-format +msgid "%s tickets in %s" +msgstr "%s Tickets in %s" + +#: queue/rss.php:108 +#, php-format +msgid "%s tickets in all queues" +msgstr "%s Tickets in allen Warteschlangen" + +#: ticket/watch.php:60 +#, php-format +msgid "%s will be notified when this ticket is updated." +msgstr "%s wird bei einer Aktualisierung dieses Tickets benachrichtigt." + +#: ticket/watch.php:72 +#, php-format +msgid "%s will no longer receive updates for this ticket." +msgstr "%s wird keine Benachrichtigungen mehr über dieses Ticket erhalten." + +#: admin/index.php:109 +msgid "- Stage 1" +msgstr "- Schritt 1" + +#: admin/index.php:114 +msgid "- Stage 2" +msgstr "- Schritt 2" + +#: scripts/mail-filter.php:172 +msgid "--queue-name or --queue-id must specify a valid and public queue." +msgstr "" +"--queue-name oder --queue-id müssen eine gültige und öffentliche " +"Warteschlange bezeichnen." + +#: templates/prevnext.inc:16 +msgid "<>" +msgstr "Ende>>" + +#: lib/Forms/Query.php:411 +msgid "Load Query" +msgstr "Abfrage laden" + +#: lib/Forms/VarRenderer.php:46 +msgid "Loading..." +msgstr "Lade..." + +#: config/prefs.php.dist:106 +msgid "MM/DD/YY" +msgstr "MM/TT/JJ" + +#: config/prefs.php.dist:107 +msgid "MM/DD/YY HH:MM:SS" +msgstr "MM/TT/JJ HH:MM" + +#: lib/Forms/Admin/Type.php:193 +#, php-format +msgid "Make a clone of %s" +msgstr "Kopie von %s erstellen" + +#: lib/Forms/EditTicket.php:167 lib/Forms/AddComment.php:38 +msgid "Make this comment visible only to members of a group?" +msgstr "" +"Diesen Kommentar nur für Mitglieder einer bestimmten Gruppe sichtbar machen?" + +#: lib/Forms/Query.php:274 +msgid "Match" +msgstr "Suchbegriff" + +#: lib/Forms/Query.php:45 lib/Forms/Query.php:129 lib/Forms/Query.php:275 +msgid "Match Operator" +msgstr "Suchoperation" + +#: lib/Query.php:167 +msgid "Match Pattern" +msgstr "Suchmuster" + +#: lib/Query.php:166 +msgid "Match Word" +msgstr "Suchwort" + +#: reports.php:30 +msgid "Maximum time a ticket is unresolved" +msgstr "Längste Zeit bis ein Ticket erledigt wurde" + +#: lib/Block/tree_menu.php:3 +msgid "Menu List" +msgstr "Menüliste" + +#: reports.php:31 +msgid "Minimum time a ticket is unresolved" +msgstr "Kürzeste Zeit bis ein Ticket erledigt wurde" + +#: config/prefs.php.dist:146 +msgid "Most recent first" +msgstr "Neueste zuerst" + +#: templates/prefs/sourceselect.inc:312 +msgid "Move down" +msgstr "Nach unten" + +#: templates/prefs/sourceselect.inc:310 +msgid "Move up" +msgstr "Nach oben" + +#: ticket/queue.php:181 +#, php-format +msgid "Moved ticket %d to \"%s\"" +msgstr "Ticket %d nach \"%s\" verschoben" + +#: mybugs.php:54 +#, php-format +msgid "My %s" +msgstr "Meine %s" + +#: mybugs_edit.php:33 +#, php-format +msgid "My %s :: Add Content" +msgstr "Meine %s :: Inhalt hinzfügen" + +#: search.php:178 lib/Block/myqueries.php:3 lib/Block/myqueries.php:24 +msgid "My Queries" +msgstr "Meine Abfragen" + +#: lib/Block/myrequests.php:3 lib/Block/myrequests.php:24 +msgid "My Requests" +msgstr "Meine Anfragen" + +#: lib/Block/mytickets.php:3 lib/Block/mytickets.php:24 +#: config/prefs.php.dist:75 +msgid "My Tickets" +msgstr "Meine Tickets" + +#: lib/api.php:884 +msgid "My tickets by assignment date" +msgstr "Meine Tickets nach Zuweisungsdatum" + +#: lib/api.php:883 +msgid "My tickets by creation date" +msgstr "Meine Tickets nach Erstelldatum" + +#: lib/api.php:885 +msgid "My tickets by due date" +msgstr "Meine Tickets nach Fälligkeitsdatum" + +#: lib/api.php:886 +msgid "My tickets by resolution date" +msgstr "Meine Tickets nach Erledigungsdatum" + +#: lib/Forms/Query.php:422 +msgid "Name" +msgstr "Name" + +#: lib/Forms/Admin/Type.php:198 +msgid "Name of the cloned copy" +msgstr "Name der Kopie" + +#: lib/Query.php:216 +msgid "Ne_w Query" +msgstr "Ne_ue Abfrage" + +#: lib/Driver.php:197 +msgid "New" +msgstr "Neu" + +#: lib/Ticket.php:618 lib/Ticket.php:711 +msgid "New Attachment" +msgstr "Neue Anlage" + +#: lib/Renderer/Comment.php:58 lib/Renderer/Comment.php:62 +#, php-format +msgid "New Attachment: %s" +msgstr "Neue Anlage: %s" + +#: ticket/queue.php:32 +msgid "New Queue" +msgstr "Neue Warteschlange" + +#: ticket/create.php:67 lib/Block/tree_menu.php:21 +msgid "New Ticket" +msgstr "Neues Ticket" + +#: ticket/type.php:31 +msgid "New Type" +msgstr "Neuer Typ" + +#: templates/prevnext.inc:26 +msgid "Next>" +msgstr "Weiter>" + +#: ticket/delete.php:33 lib/Forms/Query.php:449 lib/Forms/Admin/Version.php:96 +#: lib/Forms/Admin/State.php:121 lib/Forms/Admin/Priority.php:121 +#: lib/Forms/Admin/Queue.php:174 lib/Forms/Admin/Attribute.php:149 +#: lib/Forms/Admin/Reply.php:110 lib/Forms/Admin/Type.php:176 +msgid "No" +msgstr "Nein" + +#: lib/Ticket.php:100 +#, php-format +msgid "" +"No priority for this ticket and no default priority for ticket type \"%s\" " +"specified." +msgstr "" +"Es wurden keine Priorität für dieses Ticket und keine Standard-Priorität für " +"den Ticket-Typ \"%s\" angegeben." + +#: lib/Block/myqueries.php:46 +msgid "No queries have been saved." +msgstr "Es wurden keine Abfragen gespeichert." + +#: lib/Block/query.php:62 lib/Driver/sql.php:553 +msgid "No query to run" +msgstr "Kein Abfrage durchzuführen" + +#: lib/Block/queuecontents.php:25 +msgid "No queues available." +msgstr "Keine Afbragen verfügbar." + +#: lib/Ticket.php:92 +#, php-format +msgid "" +"No state for this ticket and no default state for ticket type \"%s\" " +"specified." +msgstr "" +"Es wurden kein Status für dieses Ticket und kein Standard-Status für den " +"Ticket-Typ \"%s\" angegeben." + +#: reports.php:35 +msgid "No stats available." +msgstr "Keine Statistiken verfügbar." + +#: lib/Driver.php:533 +#, php-format +msgid "No such backend \"%s\" found" +msgstr "Ein Backend \"%s\" konnte nicht gefunden werden" + +#: lib/View.php:33 +#, php-format +msgid "No such view \"%s\" found" +msgstr "Eine Darstellung \"%s\" konnte nicht gefunden werden" + +#: lib/Block/mytickets.php:45 +msgid "No tickets are assigned to you." +msgstr "Keine Tickets sind Ihnen zugewiesen." + +#: lib/Block/unassigned.php:45 +msgid "No tickets are unassigned!" +msgstr "Keine Tickets ohne Zuweisung!" + +#: lib/Block/queuecontents.php:62 lib/Block/queuecontents.php:73 +msgid "No tickets in queue." +msgstr "Keine Tickets in der Warteschlange." + +#: lib/Whups.php:716 +msgid "No tickets matched your search criteria." +msgstr "Keine Tickets entsprachen Ihren Suchkriterien." + +#: lib/Ticket.php:84 +#, php-format +msgid "No type for this ticket and no default type for queue \"%s\" specified." +msgstr "" +"Es wurden kein Typ für dieses Ticket und kein Standard-Typ für die " +"Warteschlange \"%s\" angegeben." + +#: templates/prefs/sourceselect.inc:35 lib/Reports.php:67 +msgid "None" +msgstr "Keine" + +#: lib/Renderer/Query.php:79 lib/Forms/Query.php:26 +msgid "Not" +msgstr "Nicht" + +#: config/prefs.php.dist:17 +msgid "Notification Options" +msgstr "Benachrichtigungs-Einstellungen" + +#: config/prefs.php.dist:117 +msgid "Only notify me of ticket changes from other users?" +msgstr "Nur über Ticketänderungen durch andere Benutzer benachrichtigen?" + +#: config/prefs.php.dist:126 +msgid "Only notify me of ticket changes with comments?" +msgstr "Nur über Ticketänderungen durch andere Benutzer benachrichtigen?" + +#: queue/rss.php:43 +msgid "Open" +msgstr "Offen" + +#: lib/Block/queuesummary.php:49 +msgid "Open Tickets" +msgstr "Offene Tickets" + +#: reports.php:23 +msgid "Open Tickets by Owner" +msgstr "Offene Tickets nach Zuständigen" + +#: reports.php:21 +msgid "Open Tickets by Priority" +msgstr "Offene Tickets nach Priorität" + +#: reports.php:18 +msgid "Open Tickets by Queue" +msgstr "Offene Tickets nach Warteschlange" + +#: reports.php:22 +msgid "Open Tickets by Requester" +msgstr "Offene Tickets nach Anfrager" + +#: reports.php:19 +msgid "Open Tickets by State" +msgstr "Offene Tickets nach Status" + +#: reports.php:20 +msgid "Open Tickets by Type" +msgstr "Offene Tickets nach Typ" + +#: lib/Block/queuecontents.php:47 +#, php-format +msgid "Open Tickets in %s" +msgstr "Offene Tickets in %s" + +#: queue/rss.php:119 queue/index.php:43 queue/index.php:57 +#, php-format +msgid "Open tickets in %s" +msgstr "Offene Tickets in %s" + +#: queue/rss.php:121 +msgid "Open tickets in all queues." +msgstr "Offene Tickets in allen Warteschlangen" + +#: lib/Renderer/Query.php:78 lib/Forms/Query.php:25 +msgid "Or" +msgstr "Oder" + +#: lib/Whups.php:681 lib/Ticket.php:617 lib/Ticket.php:701 lib/Ticket.php:702 +#: lib/Ticket.php:705 lib/Ticket.php:812 lib/Ticket.php:833 lib/Ticket.php:958 +#: lib/Renderer/Query.php:84 lib/Forms/CreateTicket.php:225 +#: lib/Forms/CreateTicket.php:243 lib/Forms/EditTicket.php:104 +msgid "Owners" +msgstr "Zuständige" + +#: lib/Whups.php:866 +#, php-format +msgid "Permanently delete %s?" +msgstr "%s unwiederbringlich löschen?" + +#: ticket/update.php:22 ticket/type.php:74 ticket/delete.php:51 +#: ticket/queue.php:131 ticket/deleteAttachment.php:21 +msgid "Permission Denied" +msgstr "Zugriff verweigert" + +#: ticket/delete.php:40 lib/Forms/EditTicket.php:197 +msgid "Permission Denied." +msgstr "Zugriff verweigert." + +#: query/run.php:44 query/index.php:31 lib/Forms/Query.php:459 +#, php-format +msgid "Permission denied." +msgstr "Zugriff verweigert." + +#: lib/Imple/ContactAutoCompleter.php:227 +msgid "Please resolve ambiguous or invalid addresses." +msgstr "Bitte mehrdeutige oder ungültige Adressen korrigieren." + +#: lib/Forms/Admin/Type.php:93 lib/Forms/Admin/Type.php:171 +msgid "Priorities for this Type" +msgstr "Prioritäten für diesen Typ" + +#: ticket/type.php:66 ticket/queue.php:117 lib/Whups.php:669 lib/Whups.php:678 +#: lib/Ticket.php:610 lib/Ticket.php:807 lib/Ticket.php:953 +#: lib/Renderer/Query.php:125 lib/Forms/CreateTicket.php:147 +#: lib/Forms/EditTicket.php:68 lib/Forms/Query.php:198 +#: config/prefs.php.dist:49 +msgid "Priority" +msgstr "Priorität" + +#: lib/Renderer/Comment.php:115 +#, php-format +msgid "Priority ⇒ %s" +msgstr "Priorität ⇒ %s" + +#: lib/Forms/Admin/Priority.php:24 lib/Forms/Admin/Priority.php:70 +#: lib/Forms/Admin/Priority.php:118 +msgid "Priority Description" +msgstr "Prioritätbeschreibung" + +#: lib/Forms/Admin/Priority.php:23 lib/Forms/Admin/Priority.php:48 +#: lib/Forms/Admin/Priority.php:67 lib/Forms/Admin/Priority.php:94 +#: lib/Forms/Admin/Priority.php:115 +msgid "Priority Name" +msgstr "Prioritätbezeichnung" + +#: search.php:178 +msgid "Public Queries" +msgstr "Öffentliche Abfragen" + +#: query/index.php:172 +msgid "Query Builder" +msgstr "Abfrageeditor" + +#: lib/Forms/Query.php:387 +msgid "Query Name" +msgstr "Abfragename" + +#: lib/Forms/QueryParameterForm.php:20 +msgid "Query Parameters" +msgstr "Abfrageparameter" + +#: query/rss.php:63 query/run.php:79 lib/Block/query.php:3 +#: lib/Block/query.php:49 +msgid "Query Results" +msgstr "Abfrageergebnisse" + +#: lib/Forms/Query.php:389 +msgid "Query Slug" +msgstr "Abfragekurzname" + +#: lib/Block/query.php:33 +msgid "Query to run" +msgstr "Durchzuführende Abfrage" + +#: lib/Whups.php:679 lib/Ticket.php:606 lib/Ticket.php:803 lib/Ticket.php:918 +#: lib/Ticket.php:923 lib/Renderer/Query.php:94 lib/Forms/Query.php:181 +#: lib/Forms/Search.php:40 lib/Block/queuecontents.php:32 +#: lib/Block/queuesummary.php:49 config/prefs.php.dist:50 +msgid "Queue" +msgstr "Warteschlange" + +#: lib/Renderer/Comment.php:100 +#, php-format +msgid "Queue ⇒ %s" +msgstr "Warteschlange ⇒ %s" + +#: lib/Block/queuecontents.php:3 lib/Block/queuecontents.php:49 +msgid "Queue Contents" +msgstr "Warteschlangeninhalte" + +#: lib/Forms/Admin/Queue.php:24 lib/Forms/Admin/Queue.php:89 +#: lib/Forms/Admin/Queue.php:170 +msgid "Queue Description" +msgstr "Warteschlangenbeschreibung" + +#: lib/Forms/Admin/Queue.php:30 lib/Forms/Admin/Queue.php:97 +msgid "Queue Email" +msgstr "Warteschlangen-E-Mail-Adresse" + +#: lib/Forms/CreateTicket.php:34 lib/Forms/CreateTicket.php:45 +#: lib/Forms/Admin/Queue.php:23 lib/Forms/Admin/Queue.php:60 +#: lib/Forms/Admin/Queue.php:85 lib/Forms/Admin/Queue.php:166 +msgid "Queue Name" +msgstr "Warteschlangenname" + +#: lib/Forms/Admin/Queue.php:26 lib/Forms/Admin/Queue.php:93 +msgid "Queue Slug" +msgstr "Warteschlangenkurzname" + +#: lib/Block/queuesummary.php:3 lib/Block/queuesummary.php:24 +msgid "Queue Summary" +msgstr "Warteschlangenbeschreibung" + +#: ticket/queue.php:86 lib/Ticket.php:932 lib/Ticket.php:938 +#: lib/Forms/CreateTicket.php:93 +msgid "Queue Version" +msgstr "Version" + +#: admin/index.php:35 +msgid "Queue/Type Matri_x" +msgstr "Warteschlange/Typ Matri_x" + +#: templates/admin/mtmatrix.inc:6 +msgid "Queue/Type Matrix" +msgstr "Warteschlange/Typ Matrix" + +#: lib/api.php:163 lib/api.php:781 +msgid "Queues" +msgstr "Warteschlangen" + +#: templates/prevnext.inc:32 +msgid "Re_turn to Search Results" +msgstr "_Zurück zu Suchergebnissen" + +#: lib/Forms/Admin/Attribute.php:147 +msgid "Really delete this attribute? This may cause data problems!" +msgstr "" +"Soll dieses Attribut wirlich gelöscht werden? Das kann Datenprobleme " +"verursachen!" + +#: lib/Forms/Admin/Reply.php:108 +msgid "Really delete this form reply?" +msgstr "Diese Standardantwort wirklich löschen?" + +#: lib/Forms/Admin/Priority.php:122 +msgid "Really delete this priority? This may cause data problems!" +msgstr "" +"Soll diese Priorität wirlich gelöscht werden? Das kann Datenprobleme " +"verursachen!" + +#: lib/Forms/Query.php:450 +msgid "Really delete this query? This operation is not undoable." +msgstr "" +"Diese Abfrage wirklich löschen? Dieser Vorgang kann nicht rückgängig gemacht " +"werden." + +#: lib/Forms/Admin/Queue.php:176 +msgid "Really delete this queue? This may cause data problems!" +msgstr "" +"Soll dieses Warteschlange wirklich gelöscht werden? Das kann zu " +"Datenproblemen führen!" + +#: lib/Forms/Admin/State.php:122 +msgid "Really delete this state? This may cause data problems!" +msgstr "" +"Soll dieser Status wirlich gelöscht werden? Das kann Datenprobleme " +"verursachen!" + +#: ticket/delete.php:34 +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "" +"Dieses Ticket wirklich löschen? Es wird nicht archiviert, sondern geht für " +"immer verloren." + +#: lib/Forms/Admin/Type.php:178 +msgid "Really delete this type? This may cause data problems!" +msgstr "" +"Soll dieser Typ wirlich gelöscht werden? Das kann Datenprobleme verursachen!" + +#: lib/Forms/Admin/Version.php:97 +msgid "Really delete this version? This may cause data problems!" +msgstr "" +"Soll diese Version wirlich gelöscht werden? Das kann Datenprobleme " +"verursachen!" + +#: lib/Mail.php:217 +msgid "Received message:" +msgstr "Empfangene Nachricht:" + +#: search.php:162 +msgid "Refine Search" +msgstr "Suche verfeinern" + +#: admin/index.php:1170 +msgid "Reminders were sent." +msgstr "Erinnerungen wurden verschickt." + +#: lib/Forms/Admin/User.php:59 +msgid "Remove User" +msgstr "Benutzer entfernen" + +#: ticket/watch.php:49 +msgid "Remove Watcher" +msgstr "Beobachter entfernen" + +#: templates/prefs/sourceselect.inc:300 +msgid "Remove source" +msgstr "Quelle entfernen" + +#: lib/Renderer/Comment.php:95 +msgid "Reply to this comment" +msgstr "Diesen Kommentar beantworten" + +#: reports.php:40 +msgid "Reports" +msgstr "Berichte" + +#: lib/Whups.php:680 lib/Ticket.php:965 lib/Renderer/Query.php:86 +msgid "Requester" +msgstr "Anfrager" + +#: lib/Forms/Admin/Attribute.php:28 lib/Forms/Admin/Attribute.php:99 +msgid "Required Attribute?" +msgstr "Notwendiges Attribute?" + +#: lib/Whups.php:685 lib/Ticket.php:991 lib/Driver.php:199 lib/api.php:927 +#: lib/Renderer/Query.php:150 config/prefs.php.dist:54 +msgid "Resolved" +msgstr "Erledigt" + +#: lib/Forms/Query.php:330 lib/Forms/Search.php:60 +msgid "Resolved from" +msgstr "Erledigt seit" + +#: lib/Forms/Query.php:331 +msgid "Resolved to" +msgstr "Erledigt bis" + +#: lib/Forms/Admin/User.php:61 +msgid "Responsible Users" +msgstr "Verantwortliche Benutzer" + +#: lib/Whups.php:306 +msgid "S_et Queue" +msgstr "_Warteschlange festlegen" + +#: lib/Query.php:234 +msgid "Sa_ve Query" +msgstr "Abfrage s_peichern" + +#: templates/view/results.inc:96 lib/Forms/Query.php:385 +msgid "Save" +msgstr "Speichern" + +#: query/index.php:233 +msgid "Save Criterion" +msgstr "Kriterium speichern" + +#: lib/Forms/Query.php:384 +msgid "Save Query" +msgstr "Abfrage speichern" + +#: search.php:69 lib/Forms/Search.php:19 +msgid "Save as Query" +msgstr "Als Abfrage speichern" + +#: search.php:155 lib/Block/tree_menu.php:30 +msgid "Search" +msgstr "Suche" + +#: lib/Forms/Query.php:278 +#, php-format +msgid "Search %s Attribute" +msgstr "Attribut %s durchsuchen" + +#: lib/Forms/Query.php:272 lib/Forms/Query.php:281 +msgid "Search Attribute" +msgstr "Attribut suchen" + +#: lib/Forms/Query.php:48 lib/Forms/Query.php:131 +msgid "Search Comments" +msgstr "Kommentare durchsuchen" + +#: lib/Forms/Query.php:46 +msgid "Search Owners" +msgstr "Zuständige durchsuchen" + +#: lib/Forms/Query.php:47 +msgid "Search Requester" +msgstr "Anfrager durchsuchen" + +#: search.php:147 search/rss.php:55 search/rss.php:59 +msgid "Search Results" +msgstr "Suchergebnisse" + +#: templates/prevnext.inc:38 +#, php-format +msgid "Search Results: %s of %s" +msgstr "Suchergebnisse: %s von %s" + +#: lib/Forms/Query.php:130 +msgid "Search Summary" +msgstr "Zusammenfassungen durchsuchen" + +#: config/prefs.php.dist:76 +msgid "Search Tickets" +msgstr "Tickets suchen" + +#: config/prefs.php.dist:25 +msgid "Select address book sources for adding and searching for addresses." +msgstr "" +"Wählen Sie die Adressbücher zum Suchen nach und Hinzufügen von neuen " +"Adressen aus." + +#: templates/prefs/sourceselect.inc:319 +msgid "Select all fields to search when expanding addresses." +msgstr "Wählen Sie die Felder aus, in denen nach Namen gesucht werden soll." + +#: config/prefs.php.dist:78 +msgid "Select the view to display after login:" +msgstr "" +"Wählen Sie die Standardansicht aus, die nach dem Anmelden angezeigt werden " +"soll:" + +#: templates/prefs/sourceselect.inc:303 templates/prefs/sourceselect.inc:305 +msgid "Selected Address books:" +msgstr "Ausgewählte Adressbücher:" + +#: admin/index.php:36 +msgid "Sen_d Reminders" +msgstr "Erinner_ungen versenden" + +#: lib/Forms/Admin.php:23 +msgid "Send Reminders" +msgstr "Erinnerungen versenden" + +#: lib/Forms/Admin.php:34 +msgid "Send only for this list of ticket ids" +msgstr "Nur für diese Liste von Ticket-IDs versenden" + +#: lib/Forms/Admin/Priority.php:80 lib/Forms/Admin/Priority.php:82 +msgid "Set Default Priority" +msgstr "Standardpriorität festlegen" + +#: lib/Forms/Admin/State.php:80 lib/Forms/Admin/State.php:82 +msgid "Set Default State" +msgstr "Standardstatus festlegen" + +#: ticket/queue.php:201 ticket/queue.php:210 ticket/queue.php:222 +msgid "Set Queue - Step 1" +msgstr "Warteschlange festlegen - Schritt 1" + +#: ticket/queue.php:202 ticket/queue.php:211 +msgid "Set Queue - Step 2" +msgstr "Warteschlange festlegen - Schritt 2" + +#: ticket/queue.php:212 +msgid "Set Queue - Step 3" +msgstr "Warteschlange festlegen - Schritt 3" + +#: ticket/queue.php:189 +#, php-format +msgid "Set Queue for %s" +msgstr "Warteschlange für %s festlegen" + +#: lib/api.php:800 +msgid "Set Requester" +msgstr "Anfrager festlegen" + +#: ticket/type.php:139 ticket/type.php:148 +msgid "Set Type - Step 1" +msgstr "Typ festlegen - Schritt 1" + +#: ticket/type.php:140 +msgid "Set Type - Step 2" +msgstr "Typ festlegen - Schritt 2" + +#: ticket/type.php:127 +#, php-format +msgid "Set Type for %s" +msgstr "Typ für %s festlegen" + +#: lib/Whups.php:311 +msgid "Set _Type" +msgstr "_Typ festlegen" + +#: config/prefs.php.dist:144 +msgid "Show comments in chronological order, or most recent first?" +msgstr "" +"Kommentare in chronologischer Reihenfolge anzeigen oder neueste zuerst?" + +#: config/prefs.php.dist:95 +msgid "Show ticket IDs in the summary view?" +msgstr "Ticket-IDs auf der Portalseite anzeigen?" + +#: config/prefs.php.dist:87 +msgid "Show tickets you have requested in the summary view?" +msgstr "Tickets, die Sie erstellt haben, auf der Portalseite anzeigen?" + +#: config/templates.php.dist:16 +msgid "Simple HTML Report" +msgstr "Einfacher HTML-Bericht" + +#: lib/Forms/Admin/Queue.php:27 +#, php-format +msgid "" +"Slugs allows direct access to this queue's open tickets by visiting: %s. " +"
Slug names may contain only letters, numbers or the _ (underscore) " +"character." +msgstr "" +"Kurznamen ermöglichen den direkten Zugriff auf die offenen Tickets einer " +"Warteschlange über: %s.
Kurznamen dürfen Buchstaben, Zahlen und " +"Unterstriche enthalten." + +#: templates/view/results.inc:37 templates/view/results.inc:41 +#, php-format +msgid "Sort by %s" +msgstr "Sortieren nach %s" + +#: lib/Forms/CreateTicket.php:136 lib/Forms/CreateTicket.php:175 +#: lib/Forms/AddComment.php:20 lib/Forms/AddComment.php:51 +msgid "Spam protection" +msgstr "Spamschutz" + +#: ticket/type.php:65 ticket/queue.php:116 lib/Whups.php:670 lib/Whups.php:676 +#: lib/Ticket.php:609 lib/Ticket.php:806 lib/Ticket.php:949 +#: lib/Renderer/Query.php:117 lib/Forms/EditTicket.php:62 +#: lib/Forms/Query.php:193 config/prefs.php.dist:47 +msgid "State" +msgstr "Status" + +#: lib/Renderer/Comment.php:110 +#, php-format +msgid "State ⇒ %s" +msgstr "Status ⇒ %s" + +#: lib/Forms/Admin/State.php:25 lib/Forms/Admin/State.php:70 +msgid "State Category" +msgstr "Statuskategorie" + +#: lib/Forms/Admin/State.php:24 lib/Forms/Admin/State.php:67 +#: lib/Forms/Admin/State.php:118 +msgid "State Description" +msgstr "Statusbeschreibung" + +#: lib/Forms/Admin/State.php:23 lib/Forms/Admin/State.php:47 +#: lib/Forms/Admin/State.php:64 lib/Forms/Admin/State.php:96 +#: lib/Forms/Admin/State.php:115 +msgid "State Name" +msgstr "Statusbezeichnung" + +#: lib/Forms/Admin/Type.php:76 lib/Forms/Admin/Type.php:165 +msgid "States for this Type" +msgstr "Status für diesen Typ" + +#: templates/ticket/watchers.inc:1 +msgid "Status" +msgstr "Status" + +#: ticket/create.php:146 +msgid "Submit" +msgstr "Abschicken" + +#: query/run.php:93 query/run.php:94 +msgid "Subscribe to this query" +msgstr "Diese Abfrage abonnieren" + +#: admin/index.php:198 +#, php-format +msgid "Successfully Cloned %s to %s." +msgstr "%s wurde erfolgreich nach %s kopiert." + +#: ticket/type.php:118 +msgid "Successfully changed ticket type." +msgstr "Tickettyp erfolgreich geändert." + +#: ticket/delete.php:30 lib/Whups.php:668 lib/Whups.php:675 lib/Ticket.php:616 +#: lib/Ticket.php:643 lib/Ticket.php:646 lib/Ticket.php:650 lib/Ticket.php:812 +#: lib/Ticket.php:821 lib/Ticket.php:912 lib/Renderer/Query.php:89 +#: lib/Forms/CreateTicket.php:152 lib/Forms/EditTicket.php:58 +#: config/prefs.php.dist:46 +msgid "Summary" +msgstr "Zusammenfassung" + +#: lib/Renderer/Comment.php:51 +#, php-format +msgid "Summary ⇒ %s" +msgstr "Zusammenfassung ⇒ %s" + +#: lib/Forms/Search.php:43 +msgid "Summary like" +msgstr "Zusammenfassung" + +#: lib/Renderer/Comment.php:79 +#, php-format +msgid "Taken from %s" +msgstr "Genommen von %s" + +#: lib/Forms/Query.php:128 +msgid "Text" +msgstr "Text" + +#: lib/Driver/sql.php:80 lib/Driver/sql.php:1306 +msgid "That queue slug is already taken. Please select another." +msgstr "Dieser Kurzname ist bereits vergeben. Bitte wählen Sie einen anderen." + +#: lib/Forms/CreateTicket.php:129 +msgid "The Requester's Email Address" +msgstr "Die E-Mail-Adresse des Anfragers" + +#: view.php:58 lib/Ticket.php:439 lib/Ticket.php:487 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "" +"Das VFS-Backend muss konfiguriert sein, um das Hochladen von Dateien zu " +"erlauben." + +#: admin/index.php:906 +#, php-format +msgid "The attribute \"%s\" has been added to %s." +msgstr "Das Attribut \"%s\" wurde zu %s hinzugefügt." + +#: admin/index.php:1006 +msgid "The attribute has been deleted." +msgstr "Das Attribut wurde gelöscht." + +#: admin/index.php:974 +msgid "The attribute has been modified." +msgstr "Das Attribut wurde geändert." + +#: admin/index.php:1015 +msgid "The attribute was not deleted." +msgstr "Das Attribut wurde nicht gelöscht." + +#: admin/index.php:642 +msgid "The default priority has been set." +msgstr "Die Standard-Priorität wurde gespeichert." + +#: admin/index.php:506 +msgid "The default state has been set." +msgstr "Der Standard-Status wurde gespeichert." + +#: admin/index.php:1043 +#, php-format +msgid "The form reply \"%s\" has been added to %s." +msgstr "Die Standardantwort \"%s\" wurde zu %s hinzugefügt." + +#: admin/index.php:1135 +msgid "The form reply has been deleted." +msgstr "Der Standardantwort wurde gelöscht." + +#: admin/index.php:1108 +msgid "The form reply has been modified." +msgstr "Die Standardantwort wurde geändert." + +#: admin/index.php:1144 +msgid "The form reply was not deleted." +msgstr "Die Standardantwort wurde nicht gelöscht." + +#: admin/index.php:556 +#, php-format +msgid "The priority \"%s\" has been added to %s." +msgstr "Die Priorität \"%s\" wurde zu %s hinzugefügt." + +#: admin/index.php:661 +msgid "The priority has been deleted." +msgstr "Die Priorität wurde gelöscht." + +#: admin/index.php:609 +msgid "The priority has been modified." +msgstr "Die Priorität wurde geändert." + +#: admin/index.php:670 +msgid "The priority was not deleted." +msgstr "Die Priorität wurde nicht gelöscht." + +#: lib/Forms/Query.php:463 +#, php-format +msgid "The query \"%s\" couldn't be deleted: %s" +msgstr "Die Abfrage \"%s\" konnte nicht gelöscht werden: %s" + +#: lib/Forms/Query.php:465 +#, php-format +msgid "The query \"%s\" has been deleted." +msgstr "Die Abfrage \"%s\" wurde gelöscht." + +#: lib/Forms/Query.php:430 +#, php-format +msgid "The query couldn't be loaded:" +msgstr "Die Abfrage konnte nicht geladen werden:" + +#: admin/index.php:300 +#, php-format +msgid "The queue \"%s\" has been created." +msgstr "Die Warteschlange \"%s\" wurde erstellt." + +#: admin/index.php:392 +msgid "The queue has been deleted." +msgstr "Die Warteschlange wurde gelöscht." + +#: admin/index.php:359 +msgid "The queue has been modified." +msgstr "Die Warteschlange wurde geändert." + +#: admin/index.php:400 +msgid "The queue was not deleted." +msgstr "Die Warteschlange wurde nicht gelöscht." + +#: lib/MIME/Viewer/zip.php:58 +msgid "The requested file does not exist in the Zip attachment." +msgstr "Die ausgewählte Datei existiert nicht in dem ZIP-Anhang." + +#: data.php:26 +msgid "The requested template does not exist." +msgstr "Die ausgewählte Vorlage existiert nicht." + +#: admin/index.php:422 +#, php-format +msgid "The state \"%s\" has been added to %s." +msgstr "Der Status \"%s\" wurde zu %s hinzugefügt." + +#: admin/index.php:525 +msgid "The state has been deleted." +msgstr "Der Status wurde gelöscht." + +#: admin/index.php:475 +msgid "The state has been modified." +msgstr "Der Status wurde geändert." + +#: admin/index.php:533 +msgid "The state was not deleted." +msgstr "Der Status wurde nicht gelöscht." + +#: ticket/delete.php:78 +msgid "The ticket was not deleted." +msgstr "Das Ticket wurde nicht gelöscht." + +#: admin/index.php:223 +#, php-format +msgid "The type \"%s\" has been modified." +msgstr "Der Typ \"%s\" wurde geändert." + +#: admin/index.php:272 +msgid "The type has been deleted." +msgstr "Der Typ wurde gelöscht." + +#: admin/index.php:280 +msgid "The type was not deleted." +msgstr "Der Typ wurde nicht gelöscht." + +#: admin/index.php:776 +#, php-format +msgid "The version \"%s\" has been added to %s." +msgstr "Die Version \"%s\" wurde zu %s hinzugefügt." + +#: admin/index.php:865 +msgid "The version has been deleted." +msgstr "Die Version wurde gelöscht." + +#: admin/index.php:835 +msgid "The version has been modified." +msgstr "Die Version wurde geändert." + +#: admin/index.php:873 +msgid "The version was not deleted." +msgstr "Die Version wurde nicht gelöscht." + +#: lib/Forms/Admin/Attribute.php:70 +msgid "There are no attribute types to edit" +msgstr "Keine Attributarten zum Bearbeiten" + +#: lib/Forms/Query.php:281 +msgid "There are no attributes defined." +msgstr "Es sind keine Attribute angelegt." + +#: lib/Forms/Admin/Reply.php:48 +msgid "There are no form replies to edit" +msgstr "Es gibt keine Standardantworten, die bearbeitet werden können" + +#: lib/Block/queuesummary.php:44 +msgid "There are no open tickets." +msgstr "Es gibt keine offenen Tickets." + +#: lib/Forms/Admin/Priority.php:44 lib/Forms/Admin/Priority.php:90 +msgid "There are no priorities to edit" +msgstr "Keine Prioritäten zum Bearbeiten" + +#: lib/Forms/Admin.php:31 +msgid "There are no queues available." +msgstr "Es sind keine Warteschlangen verfügbar." + +#: lib/Forms/Admin/Queue.php:57 +msgid "There are no queues to edit" +msgstr "Keine Warteschlangen zum Bearbeiten" + +#: lib/Forms/CreateTicket.php:35 +msgid "There are no queues which you can create tickets in." +msgstr "Es gibt keine Warteschlangen, für die Sie Tickets erstellen dürfen." + +#: lib/Forms/Search.php:38 +msgid "There are no queues which you can search." +msgstr "Es gibt keine Warteschlangen, die Sie durchsuchen dürfen." + +#: lib/Forms/Admin/State.php:43 lib/Forms/Admin/State.php:92 +msgid "There are no states to edit" +msgstr "Kein Status zum Bearbeiten" + +#: lib/Forms/CreateTicket.php:72 +msgid "" +"There are no ticket types associated with this queue; until there are, you " +"cannot create any tickets in this queue." +msgstr "" +"Dieser Warteschlange sind keine Tickettypen zugeordnet; solange können sie " +"keine Tickets für diese Warteschlange erstellen." + +#: lib/Forms/Admin/Type.php:45 +msgid "There are no types to edit" +msgstr "Keine Typen zum Bearbeiten" + +#: lib/Forms/Admin/User.php:75 +msgid "There are no users responsible for this queue." +msgstr "Für diese Warteschlange ist kein Benutzer verantwortlich." + +#: lib/Forms/CreateTicket.php:242 +msgid "There are no users to which this ticket can be assigned." +msgstr "Es gibt keine Benutzer, denen dieses Ticket zugewiesen werden kann." + +#: lib/Forms/Admin/Version.php:44 +msgid "There are no versions to edit" +msgstr "Keine Versionen zum Bearbeiten" + +#: lib/Reports.php:143 +msgid "There is no data for this report." +msgstr "Es liegen keine Daten für diesen Bericht vor." + +#: admin/index.php:705 +#, php-format +msgid "There was an error adding \"%s\" to the responsible list for \"%s\":" +msgstr "" +"Beim Hinzufügen von \"%s\" zu der Liste der Verantwortlichen für \"%s\" ist " +"ein Problem aufgetreten:" + +#: admin/index.php:911 +msgid "There was an error creating the attribute:" +msgstr "Beim Erstellen des Attributs ist ein Fehler aufgetreten:" + +#: admin/index.php:1051 +msgid "There was an error creating the form reply:" +msgstr "Beim Erstellen der Standardantwort ist ein Fehler aufgetreten:" + +#: admin/index.php:561 +msgid "There was an error creating the priority:" +msgstr "Beim Erstellen der Priorität ist ein Fehler aufgetreten:" + +#: admin/index.php:309 +msgid "There was an error creating the queue:" +msgstr "Beim Erstellen der Warteschlange ist ein Fehler aufgetreten:" + +#: admin/index.php:426 +msgid "There was an error creating the state:" +msgstr "Beim Erstellen des Status ist ein Fehler aufgetreten:" + +#: admin/index.php:780 +msgid "There was an error creating the version:" +msgstr "Beim Erstellen der Version ist ein Fehler aufgetreten:" + +#: admin/index.php:1010 +msgid "There was an error deleting the attribute:" +msgstr "Beim Löschen des Attributs ist ein Fehler aufgetreten:" + +#: admin/index.php:1139 +msgid "There was an error deleting the form reply:" +msgstr "Beim Löschen der Standardantwort ist ein Fehler aufgetreten:" + +#: admin/index.php:665 +msgid "There was an error deleting the priority:" +msgstr "Beim Löschen der Priorität ist ein Fehler aufgetreten:" + +#: admin/index.php:395 +msgid "There was an error deleting the queue:" +msgstr "Beim Löschen der Warteschlange ist ein Fehler aufgetreten:" + +#: admin/index.php:528 +msgid "There was an error deleting the state:" +msgstr "Beim Löschen des Status ist ein Fehler aufgetreten:" + +#: ticket/delete.php:75 +msgid "There was an error deleting the ticket:" +msgstr "Beim Löschen des Tickets ist ein Fehler aufgetreten:" + +#: admin/index.php:275 +msgid "There was an error deleting the type:" +msgstr "Beim Löschen des Typs ist ein Fehler aufgetreten:" + +#: admin/index.php:868 +msgid "There was an error deleting the version:" +msgstr "Beim Löschen der Version ist ein Fehler aufgetreten:" + +#: admin/index.php:982 +msgid "There was an error editing the attribute:" +msgstr "Beim Bearbeiten des Attributs ist ein Fehler aufgetreten:" + +#: admin/index.php:1104 +msgid "There was an error editing the form reply:" +msgstr "Beim Bearbeiten der Standardantwort ist ein Fehler aufgetreten:" + +#: admin/index.php:615 +msgid "There was an error editing the priority:" +msgstr "Beim Bearbeiten der Priorität ist ein Fehler aufgetreten:" + +#: admin/index.php:375 +msgid "There was an error editing the queue:" +msgstr "Beim Bearbeiten der Warteschlange ist ein Fehler aufgetreten:" + +#: admin/index.php:480 +msgid "There was an error editing the state:" +msgstr "Beim Bearbeiten des Status ist ein Fehler aufgetreten:" + +#: admin/index.php:841 +msgid "There was an error editing the version:" +msgstr "Beim Bearbeiten der Version ist ein Fehler aufgetreten:" + +#: lib/Forms/Admin/User.php:35 +#, php-format +msgid "There was an error listing users: %s; %s" +msgstr "Beim Anzeigen der Benutzer ist ein Fehler aufgetreten: %s; %s" + +#: queue/index.php:52 +#, php-format +msgid "There was an error locating tickets in this queue: " +msgstr "" +"Beim Suchen von Tickets in dieser Warteschlange ist ein Fehler aufgetreten: " + +#: admin/index.php:219 +msgid "There was an error modifying the type:" +msgstr "Beim Bearbeiten des Typs ist ein Fehler aufgetreten:" + +#: search.php:140 +#, php-format +msgid "There was an error performing your search: %s" +msgstr "Bei der Ausführung Ihrer Suchanfrage ist ein Fehler aufgetreten: %s" + +#: admin/index.php:750 +#, php-format +msgid "" +"There was an error removing \"%s\" from the responsible list for \"%s\":" +msgstr "" +"Beim Löschen von \"%s\" aus der Liste der Verantwortlichen für \"%s\" ist " +"ein Fehler aufgetreten:" + +#: admin/index.php:638 +msgid "There was an error setting the default priority:" +msgstr "Beim Festlegen der Standard-Priorität ist ein Fehler aufgetreten:" + +#: admin/index.php:502 +msgid "There was an error setting the default state:" +msgstr "Beim Festlegen des Standard-Status ist ein Fehler aufgetreten:" + +#: lib/Forms/EditTicket.php:166 lib/Forms/AddComment.php:37 +msgid "This comment is visible to everyone" +msgstr "Dieser Kommentar ist für jedermann sichtbar" + +#: lib/Forms/Admin/Queue.php:31 +msgid "" +"This email address will be used when sending notifications for any queue " +"tickets." +msgstr "" +"Diese E-Mail-Adresse wird zum Versenden aller Benachrichtigungen für diese " +"Warteschlange benutzt." + +#: data.php:29 +msgid "This is not a search results template." +msgstr "Dies ist keine Vorlage für Suchergebnisse." + +#: lib/Query.php:435 lib/Query.php:668 +msgid "This query element cannot be edited." +msgstr "Diese Abfragekriterium kann nicht bearbeitet werden." + +#: ticket/queue.php:81 lib/Forms/CreateTicket.php:88 +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this queue, you will not " +"be able to create tickets." +msgstr "" +"Für diese Warteschlange müssen Sie eine Version angeben, aber es sind noch " +"keine Versionen zugeordnet. Solange keine Versionen erzeugt worden sind, " +"können Sie keine Tickets anlegen." + +#: lib/Ticket.php:638 lib/Ticket.php:820 +msgid "Ticket" +msgstr "Ticket" + +#: ticket/delete.php:71 +#, php-format +msgid "Ticket %d has been deleted." +msgstr "Das Ticket %d wurde gelöscht." + +#: lib/api.php:850 +#, php-format +msgid "Ticket %s - %s" +msgstr "Ticket %s - %s" + +#: lib/Driver/sql.php:1081 +#, php-format +msgid "Ticket %s was not found." +msgstr "Ticket %s nicht gefunden." + +#: search.php:170 +msgid "Ticket Search" +msgstr "Ticketsuche" + +#: lib/Forms/CreateTicket.php:142 +msgid "Ticket State" +msgstr "Ticket-Status" + +#: templates/reports/stats.inc:1 +msgid "Ticket Stats" +msgstr "Ticket-Statistiken" + +#: lib/Forms/CreateTicket.php:80 +msgid "Ticket Type" +msgstr "Ticket-Typ" + +#: lib/Forms/Admin/Queue.php:103 +msgid "Ticket Types associated with this Queue" +msgstr "Dieser Warteschlange zugehörige Tickettypen" + +#: lib/Ticket.php:633 +#, php-format +msgid "Ticket URL: %s" +msgstr "Ticket-URL: %s" + +#: ticket/update.php:94 +msgid "Ticket Updated" +msgstr "Ticket aktualisiert" + +#: lib/api.php:871 +msgid "Tickets" +msgstr "Tickets" + +#: query/rss.php:70 +#, php-format +msgid "Tickets matching the query \"%s\"." +msgstr "Zur Abfrage \"%s\" passende Tickets." + +#: templates/prefs/sourceselect.inc:322 +msgid "" +"To select multiple fields, hold down the Control (PC) or Command (Mac) while " +"clicking." +msgstr "" +"Halten Sie beim Klicken Strg (PC) bzw. Command (Mac) gedrückt, um mehrere " +"Einträge auszuwählen." + +#: ticket/queue.php:89 lib/Whups.php:677 lib/Ticket.php:608 lib/Ticket.php:805 +#: lib/Ticket.php:945 lib/Renderer/Query.php:108 lib/Forms/Query.php:174 +#: config/prefs.php.dist:48 +msgid "Type" +msgstr "Typ" + +#: lib/Renderer/Comment.php:105 +#, php-format +msgid "Type ⇒ %s" +msgstr "Typ ⇒ %s" + +#: lib/Forms/Admin/Type.php:23 lib/Forms/Admin/Type.php:70 +#: lib/Forms/Admin/Type.php:160 +msgid "Type Description" +msgstr "Typbeschreibung" + +#: lib/Forms/Admin/Type.php:22 lib/Forms/Admin/Type.php:48 +#: lib/Forms/Admin/Type.php:67 lib/Forms/Admin/Type.php:156 +msgid "Type Name" +msgstr "Typbezeichnung" + +#: search/rss.php:39 +#, php-format +msgid "Type: %s; State: %s" +msgstr "Typ: %s; Status: %s" + +#: lib/Ticket.php:961 +msgid "Unassigned" +msgstr "Nicht zugewiesen" + +#: lib/Block/unassigned.php:3 lib/Block/unassigned.php:24 +msgid "Unassigned Tickets" +msgstr "Nicht zugewiesene Tickets" + +#: lib/Forms/Admin.php:42 +msgid "Unassigned tickets" +msgstr "Nicht zugewiesene Tickets" + +#: lib/Driver.php:196 +msgid "Unconfirmed" +msgstr "Unbestätigt" + +#: lib/Renderer/Query.php:166 lib/Renderer/Query.php:206 +#, php-format +msgid "Unknown node type %s" +msgstr "Unbekannter Knotentyp %s" + +#: lib/api.php:790 +msgid "Update" +msgstr "Aktualisierung" + +#: ticket/update.php:108 +#, php-format +msgid "Update %s" +msgstr "%s aktualisieren" + +#: templates/admin/mtmatrix.inc:29 +msgid "Update Associations" +msgstr "Zuordnungen aktualisieren" + +#: lib/Whups.php:683 lib/Ticket.php:981 lib/Renderer/Query.php:145 +msgid "Updated" +msgstr "Aktualisiert" + +#: lib/Ticket.php:615 lib/Ticket.php:640 +msgid "Updated By" +msgstr "Aktualisiert Von" + +#: lib/Forms/Query.php:327 lib/Forms/Search.php:58 +msgid "Updated from" +msgstr "Aktualisiert seit" + +#: lib/Forms/Query.php:328 +msgid "Updated to" +msgstr "Aktualisiert bis" + +#: lib/Forms/Admin/User.php:34 lib/Forms/Admin/User.php:44 +#: lib/Forms/Admin/User.php:47 +msgid "User" +msgstr "Benutzer" + +#: lib/Forms/Query.php:44 +msgid "User ID" +msgstr "Benutzerkennung" + +#: lib/Forms/Admin/Queue.php:131 +msgid "Users responsible for this Queue" +msgstr "Für diese Warteschlange verantwortliche Benutzer" + +#: lib/Forms/Admin/User.php:79 +msgid "Users responsible for this queue" +msgstr "Für diese Warteschlange verantwortliche Benutzer" + +#: lib/Ticket.php:607 lib/Ticket.php:804 lib/Renderer/Query.php:102 +#: lib/Forms/Query.php:185 config/prefs.php.dist:51 +msgid "Version" +msgstr "Version" + +#: lib/Forms/Admin/Version.php:24 lib/Forms/Admin/Version.php:70 +#: lib/Forms/Admin/Version.php:93 +msgid "Version Description" +msgstr "Versionsbeschreibung" + +#: lib/Forms/Admin/Version.php:23 lib/Forms/Admin/Version.php:48 +#: lib/Forms/Admin/Version.php:67 lib/Forms/Admin/Version.php:90 +msgid "Version Name" +msgstr "Versionsbezeichnung" + +#: ticket/type.php:43 ticket/queue.php:50 +msgid "Viewable only by members of" +msgstr "Nur einsehbar für Mitglieder von" + +#: lib/Forms/AddComment.php:25 +msgid "Watch this ticket" +msgstr "Dieses Ticket beobachten" + +#: ticket/watch.php:78 +#, php-format +msgid "Watchers for %s" +msgstr "Beobachter für %s" + +#: config/prefs.php.dist:104 +msgid "Weekday Day Month" +msgstr "Wochentag Tag Monat" + +#: config/prefs.php.dist:105 +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "Wochentag Tag Monat HH:MM:SS TZ" + +#: ticket/delete.php:33 lib/Forms/Query.php:449 lib/Forms/Admin/Version.php:96 +#: lib/Forms/Admin/State.php:121 lib/Forms/Admin/Priority.php:121 +#: lib/Forms/Admin/Queue.php:174 lib/Forms/Admin/Attribute.php:149 +#: lib/Forms/Admin/Reply.php:110 lib/Forms/Admin/Type.php:176 +msgid "Yes" +msgstr "Ja" + +#: view.php:54 +#, php-format +msgid "You are not allowed to view ticket %d." +msgstr "Sie haben keine Berechtigung das Ticket %d anzuzeigen." + +#: lib/Driver/sql.php:1090 +#, php-format +msgid "You do not have permission to access this ticket (%s)." +msgstr "Sie haben nicht genügend Rechte, um dieses Ticket (%s) anzuzeigen." + +#: lib/api.php:375 +msgid "You do not have permission to update this ticket." +msgstr "Sie haben nicht genügend Rechte, um dieses Ticket zu aktualisieren." + +#: lib/Block/myrequests.php:46 +msgid "You have no open requests." +msgstr "Sie haben keine offenen Anfragen." + +#: lib/Forms/Query.php:419 lib/Block/query.php:28 +msgid "You have no saved queries." +msgstr "Sie haben keine gespeicherten Abfragen." + +#: lib/Whups.php:710 +msgid "You must select at least one queue to send reminders for." +msgstr "" +"Sie müssen erst mindestens ein Warteschlange auswählen, für die Erinnerungen " +"verschickt werden sollen." + +#: lib/Forms/CreateTicket.php:132 lib/Forms/AddComment.php:18 +msgid "Your Email Address" +msgstr "Ihre E-Mail-Adresse" + +#: ticket/create.php:60 +#, php-format +msgid "" +"Your ticket ID is %s. An appropriate person has been notified of this " +"request." +msgstr "" +"Ihre Ticketnummer lautet %s. Eine zuständige Person wurde benachrichtigt." + +#: lib/Mail.php:244 +msgid "[ Could not render body of message. ]" +msgstr "[ Der Nachrichtentext konnte nicht dargestellt werden. ]" + +#: lib/Whups.php:774 +msgid "_Admin" +msgstr "A_dministration" + +#: lib/Whups.php:298 +msgid "_Comment" +msgstr "_Kommentar" + +#: query/index.php:157 +msgid "_Date Criteria" +msgstr "Datums_kriterien" + +#: lib/Whups.php:316 +msgid "_Delete" +msgstr "Lös_chen" + +#: lib/Query.php:237 +msgid "_Delete Query" +msgstr "Abfrage löschen" + +#: lib/Query.php:218 +msgid "_Edit Query" +msgstr "Abfrage bea_rbeiten" + +#: admin/index.php:33 +msgid "_Edit Queues" +msgstr "_Warteschlangen bearbeiten" + +#: templates/menu.inc:5 +msgid "_Go" +msgstr "_Los" + +#: query/index.php:156 +msgid "_Group Criteria" +msgstr "_Gruppenkriterien" + +#: lib/Whups.php:292 +msgid "_History" +msgstr "_Geschichte" + +#: lib/Query.php:231 +msgid "_Load Query" +msgstr "Ab_frage laden" + +#: lib/Whups.php:765 +#, php-format +msgid "_My %s" +msgstr "_Meine %s" + +#: lib/Whups.php:768 +msgid "_New Ticket" +msgstr "_Neues Ticket" + +#: query/index.php:154 +msgid "_Property Criteria" +msgstr "Eigens_chaftenkriterien" + +#: lib/Whups.php:769 +msgid "_Query Builder" +msgstr "_Abfrageeditor" + +#: lib/Whups.php:770 +msgid "_Reports" +msgstr "_Berichte" + +#: lib/Whups.php:767 +msgid "_Search" +msgstr "_Suche" + +#: query/index.php:158 +msgid "_Text Criteria" +msgstr "_Textkriterien" + +#: lib/Whups.php:294 +msgid "_Update" +msgstr "Akt_ualisierung" + +#: query/index.php:155 +msgid "_User Criteria" +msgstr "Benut_zerkriterien" + +#: lib/Whups.php:302 +msgid "_Watch" +msgstr "Be_obachten" + +#: lib/Renderer/Query.php:186 +msgid "contains (case insensitive) substring" +msgstr "enthält Teilzeichenkette (Groß-/Kleinschreibung ignoriert)" + +#: lib/Renderer/Query.php:190 +msgid "contains (case sensitive) substring" +msgstr "enthält Teilzeichenkette (Groß-/Kleinschreibung beachtet)" + +#: lib/Renderer/Query.php:194 +msgid "contains the word" +msgstr "enthält das Wort" + +#: lib/Mail.php:94 lib/Mail.php:118 lib/Mail.php:146 +msgid "current user:" +msgstr "aktueller Benutzer:" + +#: lib/api.php:859 +msgid "estimated time" +msgstr "geschätzte Zeit" + +#: lib/Renderer/Query.php:182 +msgid "is" +msgstr "ist" + +#: lib/Renderer/Query.php:174 +msgid "is greater than" +msgstr "ist größer als" + +#: lib/Renderer/Query.php:178 +msgid "is less than" +msgstr "ist kleiner als" + +#: lib/Renderer/Query.php:198 +msgid "matches the pattern" +msgstr "entspricht dem Muster" + +#: lib/Forms/Search.php:57 lib/Forms/Search.php:59 lib/Forms/Search.php:61 +#: lib/Forms/Search.php:63 lib/Forms/Search.php:65 +msgid "to" +msgstr "bis" diff --git a/whups/po/es_ES.po b/whups/po/es_ES.po new file mode 100644 index 000000000..3a4f3d5af --- /dev/null +++ b/whups/po/es_ES.po @@ -0,0 +1,2155 @@ +# Spanish translations for whups package +# Traducciones al español para el paquete whups. +# Copyright 2008-2009 The Horde Project +# This file is distributed under the same license as the whups package. +# Automatically generated, 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: Whups 1.0-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-03-16 09:38+0100\n" +"PO-Revision-Date: 2008-03-16 09:38+0100\n" +"Last-Translator: Manuel P. Ayala \n" +"Language-Team: i18n@lists.horde.org\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/index.php:720 +#, php-format +msgid "\"%s\" is no longer among those responsible for \"%s\"" +msgstr "\"%s\" ya no está entre los encargados de \"%s\"" + +#: templates/menu.inc:5 +msgid "#Id" +msgstr "#Id" + +#: templates/ticket/watchers.inc:3 +#, php-format +msgid "%d people watching, %d people responsible" +msgstr "%d observadores, %d encargados" + +#: queue/rss.php:96 +#, php-format +msgid "%s %s tickets in %s" +msgstr "%s %s incidencias en %s" + +#: queue/rss.php:100 +#, php-format +msgid "%s %s tickets in all queues" +msgstr "%s %s incidencias en todas las colas" + +#: lib/Renderer/Comment.php:119 +#, php-format +msgid "%s ⇒ %s" +msgstr "%s ⇒ %s" + +#: lib/Driver.php:427 +#, php-format +msgid "%s (%s) wrote:" +msgstr "%s (%s) escribió:" + +#: admin/index.php:677 +#, php-format +msgid "%s added to those responsible for \"%s\"" +msgstr "Se ha añadido a %s a los encargados de \"%s\"" + +#: templates/reports/stats.inc:17 +#, php-format +msgid "%s days" +msgstr "%s días" + +#: queue/rss.php:104 +#, php-format +msgid "%s tickets in %s" +msgstr "%s incidencias en %s" + +#: queue/rss.php:108 +#, php-format +msgid "%s tickets in all queues" +msgstr "%s incidencias en todas las colas" + +#: ticket/watch.php:59 +#, php-format +msgid "%s will be notified when this ticket is updated." +msgstr "Se notificará a %s cuando se actualice esta incidencia" + +#: ticket/watch.php:71 +#, php-format +msgid "%s will no longer receive updates for this ticket." +msgstr "%s no recibirá más actualizaciones de esta incidencia." + +#: admin/index.php:109 +msgid "- Stage 1" +msgstr "- Etapa 1" + +#: admin/index.php:114 +msgid "- Stage 2" +msgstr "- Etapa 2" + +#: scripts/mail-filter.php:172 +msgid "--queue-name or --queue-id must specify a valid and public queue." +msgstr "" +"--nombre-de-cola o --id-de-cola tienen que indicar una cola pública válida." + +#: templates/prevnext.inc:16 +msgid "<>" +msgstr "Último>>" + +#: lib/Forms/Query.php:340 +msgid "Load Query" +msgstr "Cargar consulta" + +#: config/.bak/prefs.php.dist:97 +msgid "MM/DD/YY" +msgstr "DD/MM/YY" + +#: config/.bak/prefs.php.dist:98 +msgid "MM/DD/YY HH:MM:SS" +msgstr "DD/MM/YY HH:MM:SS" + +#: lib/Forms/Admin.php:348 +#, php-format +msgid "Make a clone of %s" +msgstr "Realizar un duplicado de %s" + +#: lib/Forms/Query.php:270 +msgid "Match" +msgstr "Coincidencia" + +#: lib/Forms/Query.php:43 lib/Forms/Query.php:129 lib/Forms/Query.php:271 +msgid "Match Operator" +msgstr "Operador de coincidencia" + +#: lib/Query.php:54 +msgid "Match Pattern" +msgstr "Patrón de coincidencia" + +#: lib/Query.php:53 +msgid "Match Word" +msgstr "Palabra coincidente" + +#: lib/Reports.php:20 +msgid "Maximum time a ticket is unresolved" +msgstr "Tiempo máximo sin resolver una incidencia" + +#: lib/Block/tree_menu.php:3 +msgid "Menu List" +msgstr "Listado del menú" + +#: lib/Reports.php:21 +msgid "Minimum time a ticket is unresolved" +msgstr "Tiempo mínimo sin resolver una incidencia" + +#: config/.bak/prefs.php.dist:128 +msgid "Most recent first" +msgstr "Recientes primero" + +#: ticket/queue.php:174 +#, php-format +msgid "Moved ticket %d to \"%s\"" +msgstr "Se ha trasladado la incidencia %d a \"%s\"" + +#: mybugs.php:51 +#, php-format +msgid "My %s" +msgstr "Mis %s" + +#: mybugs_edit.php:32 +#, php-format +msgid "My %s :: Add Content" +msgstr "Mi %s :: Añadir contenido" + +#: search.php:106 lib/Block/myqueries.php:3 lib/Block/myqueries.php:24 +msgid "My Queries" +msgstr "Mis consultas" + +#: lib/Block/myrequests.php:3 lib/Block/myrequests.php:24 +msgid "My Requests" +msgstr "Mis solicitudes" + +#: lib/Block/mytickets.php:3 lib/Block/mytickets.php:24 +#: config/.bak/prefs.php.dist:66 +msgid "My Tickets" +msgstr "Mis incidencias" + +#: lib/api.php:960 +msgid "My tickets by assignment date" +msgstr "Mis incidencias por fecha de asignación" + +#: lib/api.php:959 +msgid "My tickets by creation date" +msgstr "Mis incidencias por fecha de creación" + +#: lib/api.php:961 +msgid "My tickets by due date" +msgstr "Mis incidencias por fecha de vencimiento" + +#: lib/api.php:962 +msgid "My tickets by resolution date" +msgstr "Mis incidencias por fecha de resolución" + +#: lib/Forms/Query.php:319 lib/Forms/Query.php:351 +msgid "Name" +msgstr "Nombre" + +#: lib/Forms/Admin.php:353 +msgid "Name of the cloned copy" +msgstr "Nombre del duplicado" + +#: lib/Query.php:184 +msgid "Ne_w Query" +msgstr "Aña_dir" + +#: lib/Driver.php:195 +msgid "New" +msgstr "Nueva" + +#: lib/Ticket.php:578 lib/Ticket.php:642 +msgid "New Attachment" +msgstr "Añadir adjunto" + +#: lib/Renderer/Comment.php:58 lib/Renderer/Comment.php:61 +#, php-format +msgid "New Attachment: %s" +msgstr "Añadir adjunto: %s" + +#: ticket/queue.php:31 +msgid "New Queue" +msgstr "Nueva cola" + +#: lib/Block/tree_menu.php:21 ticket/create.php:60 +msgid "New Ticket" +msgstr "Añadir" + +#: ticket/type.php:34 +msgid "New Type" +msgstr "Nuevo tipo" + +#: templates/prevnext.inc:26 +msgid "Next>" +msgstr "Siguiente>" + +#: lib/Forms/Query.php:378 lib/Forms/Admin.php:142 lib/Forms/Admin.php:334 +#: lib/Forms/Admin.php:469 lib/Forms/Admin.php:580 lib/Forms/Admin.php:666 +#: lib/Forms/Admin.php:758 ticket/delete.php:37 +msgid "No" +msgstr "No" + +#: lib/Ticket.php:99 +#, php-format +msgid "" +"No priority for this ticket and no default priority for ticket type \"%s\" " +"specified." +msgstr "" +"No se ha indicado una prioridad para esta incidencia y las incidencias de " +"tipo \"%s\" carecen de prioridad por omisión." + +#: lib/Block/myqueries.php:46 +msgid "No queries have been saved." +msgstr "No se ha guardado ninguna consulta." + +#: lib/Block/query.php:64 lib/Driver/sql.php:467 +msgid "No query to run" +msgstr "No hay consultas a realizar" + +#: lib/Block/queuecontents.php:25 +msgid "No queues available." +msgstr "No se dispone de colas." + +#: lib/Ticket.php:91 +#, php-format +msgid "" +"No state for this ticket and no default state for ticket type \"%s\" " +"specified." +msgstr "" +"No se ha indicado un estado para esta incidencia y las incidencias de tipo " +"\"%s\" carecen de estado por omisión." + +#: reports.php:19 +msgid "No stats available." +msgstr "No se dispone de estadísticas." + +#: lib/Driver.php:463 +#, php-format +msgid "No such backend \"%s\" found" +msgstr "No se encontró el motor \"%s\"" + +#: lib/View.php:33 +#, php-format +msgid "No such view \"%s\" found" +msgstr "No se encontró la vista \"%s\"" + +#: lib/Block/mytickets.php:45 +msgid "No tickets are assigned to you." +msgstr "No se le han asignado incidencias." + +#: lib/Block/unassigned.php:45 +msgid "No tickets are unassigned!" +msgstr "¡No hay incidencias sin asignar!" + +#: lib/Block/queuecontents.php:62 lib/Block/queuecontents.php:73 +msgid "No tickets in queue." +msgstr "No hay incidencias en la cola." + +#: lib/Whups.php:597 +msgid "No tickets matched your search criteria." +msgstr "No hay incidencias que coincidan con su búsqueda." + +#: lib/Ticket.php:83 +#, php-format +msgid "No type for this ticket and no default type for queue \"%s\" specified." +msgstr "" +"Esta incidencia no tiene tipo y no se ha indicado un tipo por omisión para " +"la cola \"%s\"." + +#: lib/Reports.php:88 +msgid "None" +msgstr "Ninguna" + +#: lib/Forms/Query.php:23 lib/Renderer/Query.php:79 +msgid "Not" +msgstr "No" + +#: query.php:80 +msgid "Not yet implemented." +msgstr "Aún no se ha desarrollado." + +#: config/.bak/prefs.php.dist:17 +msgid "Notification Options" +msgstr "Opciones de aviso" + +#: config/.bak/prefs.php.dist:108 +msgid "Only notify me of ticket changes from other users" +msgstr "" +"Comunicarme sólo los cambios de incidencias realizados por otros usuarios" + +#: queue/rss.php:43 +msgid "Open" +msgstr "Abierta" + +#: lib/Block/queuesummary.php:48 +msgid "Open Tickets" +msgstr "Incidencias abiertas" + +#: lib/Reports.php:11 +msgid "Open Tickets by Owner" +msgstr "Incidencias abiertas por propietario" + +#: lib/Reports.php:9 +msgid "Open Tickets by Priority" +msgstr "Incidencias abiertas por prioridad" + +#: lib/Reports.php:6 +msgid "Open Tickets by Queue" +msgstr "Incidencias abiertas por cola" + +#: lib/Reports.php:10 +msgid "Open Tickets by Requester" +msgstr "Incidencias abiertas por solicitante" + +#: lib/Reports.php:7 +msgid "Open Tickets by State" +msgstr "Incidencias abiertas por estado" + +#: lib/Reports.php:8 +msgid "Open Tickets by Type" +msgstr "Incidencias abiertas por tipo" + +#: lib/Block/queuecontents.php:47 +#, php-format +msgid "Open Tickets in %s" +msgstr "Incidencias abiertas en %s" + +#: queue/index.php:43 queue/index.php:57 queue/rss.php:119 +#, php-format +msgid "Open tickets in %s" +msgstr "Incidencias abiertas en %s" + +#: queue/rss.php:121 +msgid "Open tickets in all queues." +msgstr "Incidencias abiertas en todas las colas." + +#: lib/Forms/Query.php:22 lib/Renderer/Query.php:78 +msgid "Or" +msgstr "O" + +#: config/.bak/prefs.php.dist:9 config/.bak/prefs.php.dist:16 +msgid "Other Options" +msgstr "Otras opciones" + +#: lib/Whups.php:562 lib/Ticket.php:577 lib/Ticket.php:634 lib/Ticket.php:635 +#: lib/Ticket.php:637 lib/Ticket.php:731 lib/Ticket.php:748 lib/Ticket.php:857 +#: lib/Forms/EditTicket.php:102 lib/Forms/CreateTicket.php:196 +#: lib/Forms/CreateTicket.php:208 lib/Renderer/Query.php:84 +msgid "Owners" +msgstr "Propietarios" + +#: lib/Whups.php:745 +#, php-format +msgid "Permanently delete %s?" +msgstr "¿Eliminar definitivamente %s?" + +#: ticket/delete.php:17 ticket/queue.php:124 ticket/update.php:23 +#: ticket/deleteAttachment.php:17 ticket/type.php:17 +msgid "Permission Denied" +msgstr "Permiso denegado" + +#: lib/Forms/EditTicket.php:172 ticket/delete.php:44 +msgid "Permission Denied." +msgstr "Permiso denegado." + +#: runquery.php:37 query.php:32 lib/Forms/Query.php:388 +#, php-format +msgid "Permission denied." +msgstr "Permiso denegado." + +#: lib/Forms/Admin.php:285 lib/Forms/Admin.php:331 +msgid "Priorities for this Type" +msgstr "Prioridades de este tipo" + +#: lib/Whups.php:550 lib/Whups.php:559 lib/Ticket.php:570 lib/Ticket.php:725 +#: lib/Ticket.php:853 lib/Forms/Query.php:197 lib/Forms/EditTicket.php:65 +#: lib/Forms/CreateTicket.php:124 lib/Renderer/Query.php:125 +#: ticket/queue.php:110 ticket/type.php:69 config/.bak/prefs.php.dist:40 +msgid "Priority" +msgstr "Prioridad" + +#: lib/Renderer/Comment.php:114 +#, php-format +msgid "Priority ⇒ %s" +msgstr "Prioridad ⇒ %s" + +#: lib/Forms/Admin.php:483 lib/Forms/Admin.php:529 lib/Forms/Admin.php:577 +msgid "Priority Description" +msgstr "Descripción de la prioridad" + +#: lib/Forms/Admin.php:482 lib/Forms/Admin.php:507 lib/Forms/Admin.php:526 +#: lib/Forms/Admin.php:553 lib/Forms/Admin.php:574 +msgid "Priority Name" +msgstr "Nombre de la prioridad" + +#: query.php:156 +msgid "Query Builder" +msgstr "Consultas" + +#: lib/Forms/QueryParameterForm.php:20 +msgid "Query Parameters" +msgstr "Parámetros de la consulta" + +#: runquery.php:72 lib/Block/query.php:3 lib/Block/query.php:51 +msgid "Query Results" +msgstr "Resultados de la consulta" + +#: lib/Block/query.php:33 +msgid "Query to run" +msgstr "Consulta a realizar" + +#: lib/Whups.php:560 lib/Ticket.php:566 lib/Ticket.php:721 lib/Ticket.php:820 +#: lib/Ticket.php:825 lib/Forms/Query.php:180 lib/Forms/Search.php:36 +#: lib/Renderer/Query.php:94 lib/Block/queuecontents.php:32 +#: lib/Block/queuesummary.php:48 config/.bak/prefs.php.dist:41 +msgid "Queue" +msgstr "Cola" + +#: lib/Renderer/Comment.php:99 +#, php-format +msgid "Queue ⇒ %s" +msgstr "Cola ⇒ %s" + +#: lib/Block/queuecontents.php:3 lib/Block/queuecontents.php:49 +msgid "Queue Contents" +msgstr "Contenido de la cola" + +#: lib/Forms/Admin.php:24 lib/Forms/Admin.php:82 lib/Forms/Admin.php:139 +msgid "Queue Description" +msgstr "Descripción de la cola" + +#: lib/Forms/Admin.php:23 lib/Forms/Admin.php:56 lib/Forms/Admin.php:79 +#: lib/Forms/Admin.php:136 lib/Forms/CreateTicket.php:27 +#: lib/Forms/CreateTicket.php:37 +msgid "Queue Name" +msgstr "Nombre de la cola" + +#: lib/Forms/Admin.php:25 lib/Forms/Admin.php:85 +msgid "Queue Slug" +msgstr "ID de seguimiento" + +#: lib/Block/queuesummary.php:3 lib/Block/queuesummary.php:24 +msgid "Queue Summary" +msgstr "Resumen" + +#: lib/Ticket.php:832 lib/Ticket.php:838 lib/Forms/CreateTicket.php:82 +#: ticket/queue.php:79 +msgid "Queue Version" +msgstr "Versión de la cola" + +#: admin/index.php:36 +msgid "Queue/Type Matri_x" +msgstr "Matri_z de Colas/Tipos" + +#: templates/admin/mtmatrix.inc:6 +msgid "Queue/Type Matrix" +msgstr "Matriz de Colas/Tipos" + +#: lib/api.php:179 lib/api.php:885 +msgid "Queues" +msgstr "Colas" + +#: templates/prevnext.inc:32 +msgid "Re_turn to Search Results" +msgstr "Volver a resul_tados de la búsqueda" + +#: lib/Forms/Admin.php:759 +msgid "Really delete this attribute? This may cause data problems!" +msgstr "" +"¿Eliminar realmente este atributo? ¡Puede ocasionar problemas de datos!" + +#: lib/Forms/Admin.php:581 +msgid "Really delete this priority? This may cause data problems!" +msgstr "" +"¿Eliminar realmente esta prioridad? ¡Puede ocasionar problemas de datos!" + +#: lib/Forms/Query.php:379 +msgid "Really delete this query? This operation is not undoable." +msgstr "" +"¿Eliminar realmente esta consulta? Esta operación no se puede deshacer." + +#: lib/Forms/Admin.php:143 +msgid "Really delete this queue? This may cause data problems!" +msgstr "¿Eliminar realmente esta cola? ¡Puede ocasionar problemas de datos!" + +#: lib/Forms/Admin.php:470 +msgid "Really delete this state? This may cause data problems!" +msgstr "¿Eliminar realmente este estado? ¡Puede ocasionar problemas de datos!" + +#: ticket/delete.php:38 +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "" +"¿Eliminar realmente esta incidencia? NO se archivará y se perderá " +"definitivamente." + +#: lib/Forms/Admin.php:335 +msgid "Really delete this type? This may cause data problems!" +msgstr "¿Eliminar realmente este tipo? ¡Puede ocasionar problemas de datos!" + +#: lib/Forms/Admin.php:667 +msgid "Really delete this version? This may cause data problems!" +msgstr "¿Eliminar realmente esta versión? ¡Puede ocasionar problemas de datos!" + +#: lib/Mail.php:175 +msgid "Received message:" +msgstr "Mensaje recibido:" + +#: search.php:87 +msgid "Refine Search" +msgstr "Concretar búsqueda" + +#: admin/index.php:991 +msgid "Reminders were sent." +msgstr "Se enviaron recordatorios." + +#: lib/Forms/Admin.php:192 +msgid "Remove User" +msgstr "Eliminar usuario" + +#: ticket/watch.php:48 +msgid "Remove Watcher" +msgstr "Eliminar Observador" + +#: lib/Renderer/Comment.php:94 +msgid "Reply to this comment" +msgstr "Contestar a este comentario" + +#: reports.php:24 +msgid "Reports" +msgstr "Informes" + +#: lib/Whups.php:561 lib/Ticket.php:864 lib/Renderer/Query.php:86 +msgid "Requester" +msgstr "Solicitante" + +#: lib/Driver.php:197 lib/api.php:1003 lib/Whups.php:566 lib/Ticket.php:890 +#: config/.bak/prefs.php.dist:45 +msgid "Resolved" +msgstr "Resuelta" + +#: lib/Forms/Admin.php:194 +msgid "Responsible Users" +msgstr "Usuarios encargados" + +#: lib/Forms/EditTicket.php:142 +msgid "Restrict Comment to:" +msgstr "Restringir comentarios a:" + +#: lib/Whups.php:268 +msgid "S_et Queue" +msgstr "_Establecer cola" + +#: lib/Query.php:202 +msgid "Sa_ve Query" +msgstr "_Guardar" + +#: templates/view/results.inc:36 lib/Forms/Query.php:317 +msgid "Save" +msgstr "Guardar" + +#: lib/Forms/Query.php:316 +msgid "Save Query" +msgstr "Guardar consulta" + +#: templates/view/results.inc:30 +msgid "Save these results as: " +msgstr "Guardar estos resultados como: " + +#: search.php:55 lib/Block/tree_menu.php:30 +msgid "Search" +msgstr "Buscar" + +#: lib/Forms/Query.php:274 +#, php-format +msgid "Search %s Attribute" +msgstr "Buscar atributo %s" + +#: lib/Forms/Query.php:277 +msgid "Search Attribute" +msgstr "Buscar atributo" + +#: lib/Forms/Query.php:46 lib/Forms/Query.php:131 +msgid "Search Comments" +msgstr "Buscar comentarios" + +#: lib/Forms/Query.php:44 +msgid "Search Owners" +msgstr "Buscar propietarios" + +#: lib/Forms/Query.php:45 +msgid "Search Requester" +msgstr "Buscar solicitante" + +#: search.php:79 +msgid "Search Results" +msgstr "Resultados de la búsqueda" + +#: templates/prevnext.inc:38 +#, php-format +msgid "Search Results: %s of %s" +msgstr "Resultados de la búsqueda: %s de %s" + +#: lib/Forms/Query.php:130 +msgid "Search Summary" +msgstr "Resumen de la búsqueda" + +#: config/.bak/prefs.php.dist:67 +msgid "Search Tickets" +msgstr "Buscar incidencias" + +#: config/.bak/prefs.php.dist:69 +msgid "Select the view to display after login:" +msgstr "Seleccione la vista mostrada al entrar:" + +#: admin/index.php:37 +msgid "Sen_d Reminders" +msgstr "_Enviar recordatorios" + +#: lib/Forms/Admin.php:770 +msgid "Send Reminders" +msgstr "Enviar recordatorios" + +#: lib/Forms/Admin.php:781 +msgid "Send only for this list of ticket ids" +msgstr "Enviar sólo a este conjunto de ids de incidencias" + +#: lib/Forms/Admin.php:539 lib/Forms/Admin.php:541 +msgid "Set Default Priority" +msgstr "Establecer prioridad por omisión" + +#: lib/Forms/Admin.php:428 lib/Forms/Admin.php:430 +msgid "Set Default State" +msgstr "Establecer estado por omisión" + +#: ticket/queue.php:194 ticket/queue.php:203 ticket/queue.php:215 +msgid "Set Queue - Step 1" +msgstr "Establecer cola - Paso 1" + +#: ticket/queue.php:195 ticket/queue.php:204 +msgid "Set Queue - Step 2" +msgstr "Establecer cola - Paso 2" + +#: ticket/queue.php:205 +msgid "Set Queue - Step 3" +msgstr "Establecer cola - Paso 3" + +#: ticket/queue.php:182 +#, php-format +msgid "Set Queue for %s" +msgstr "Establecer cola para %s" + +#: ticket/type.php:136 ticket/type.php:145 +msgid "Set Type - Step 1" +msgstr "Establecer tipo - Paso 1" + +#: ticket/type.php:137 +msgid "Set Type - Step 2" +msgstr "Establecer tipo - Paso 2" + +#: ticket/type.php:124 +#, php-format +msgid "Set Type for %s" +msgstr "Establecer tipo para %s" + +#: lib/Whups.php:272 +msgid "Set _Type" +msgstr "Establecer _tipo" + +#: config/.bak/prefs.php.dist:126 +msgid "Show comments in chronological order, or most recent first?" +msgstr "" +"¿Mostrar los comentarios en orden cronológico o primero los más recientes?" + +#: config/.bak/prefs.php.dist:86 +msgid "Show ticket IDs in the summary view?" +msgstr "¿Mostrar los IDs de incidencias en la vista de resumen?" + +#: config/.bak/prefs.php.dist:78 +msgid "Show tickets you have requested in the summary view?" +msgstr "¿Mostrar las incidencias solicitadas en la vista de resumen?" + +#: config/.bak/templates.php.dist:16 +msgid "Simple HTML Report" +msgstr "Informe HTML simple" + +#: lib/Forms/Admin.php:26 +#, php-format +msgid "" +"Slugs allows direct access to this queue's open tickets by visiting: %s. " +"
Slug names may contain only letters, numbers or the _ (underscore) " +"character." +msgstr "" +"El ID de seguimiento (slugname) permite acceder directamente a las " +"indicencias abiertas de esta cola visitando: %s.
Los IDs de " +"seguimiento sólo pueden contener letras, números o el carácter _ (subrayado)." + +#: templates/view/results.inc:51 templates/view/results.inc:55 +#, php-format +msgid "Sort by %s" +msgstr "Ordenar por %s" + +#: lib/Forms/AddComment.php:20 lib/Forms/AddComment.php:51 +#: lib/Forms/CreateTicket.php:118 lib/Forms/CreateTicket.php:149 +msgid "Spam protection" +msgstr "Protección anti spam" + +#: lib/Whups.php:551 lib/Whups.php:557 lib/Ticket.php:569 lib/Ticket.php:724 +#: lib/Ticket.php:849 lib/Forms/Query.php:192 lib/Forms/EditTicket.php:59 +#: lib/Renderer/Query.php:117 ticket/queue.php:109 ticket/type.php:68 +#: config/.bak/prefs.php.dist:38 +msgid "State" +msgstr "Estado" + +#: lib/Renderer/Comment.php:109 +#, php-format +msgid "State ⇒ %s" +msgstr "Estado ⇒ %s" + +#: lib/Forms/Admin.php:373 lib/Forms/Admin.php:418 +msgid "State Category" +msgstr "Categoría del estado" + +#: lib/Forms/Admin.php:372 lib/Forms/Admin.php:415 lib/Forms/Admin.php:466 +msgid "State Description" +msgstr "Descripción del estado" + +#: lib/Forms/Admin.php:371 lib/Forms/Admin.php:395 lib/Forms/Admin.php:412 +#: lib/Forms/Admin.php:444 lib/Forms/Admin.php:463 +msgid "State Name" +msgstr "Nombre del estado" + +#: lib/Forms/Admin.php:275 lib/Forms/Admin.php:327 +msgid "States for this Type" +msgstr "Estados de este tipo" + +#: templates/ticket/watchers.inc:1 +msgid "Status" +msgstr "Estado" + +#: ticket/create.php:137 +msgid "Submit" +msgstr "Enviar" + +#: admin/index.php:195 +#, php-format +msgid "Successfully Cloned %s to %s." +msgstr "Se ha duplicado correctamente %s como %s." + +#: ticket/type.php:115 +msgid "Successfully changed ticket type." +msgstr "Se ha cambiado correctamente el tipo de incidencia." + +#: lib/Whups.php:549 lib/Whups.php:556 lib/Ticket.php:576 lib/Ticket.php:599 +#: lib/Ticket.php:600 lib/Ticket.php:602 lib/Ticket.php:731 lib/Ticket.php:739 +#: lib/Ticket.php:815 lib/Forms/EditTicket.php:55 +#: lib/Forms/CreateTicket.php:127 lib/Renderer/Query.php:89 +#: ticket/delete.php:34 config/.bak/prefs.php.dist:37 +msgid "Summary" +msgstr "Resumen" + +#: lib/Renderer/Comment.php:51 +#, php-format +msgid "Summary ⇒ %s" +msgstr "Resumen ⇒ %s" + +#: lib/Forms/Search.php:39 +msgid "Summary like" +msgstr "Resumen contiene" + +#: lib/Renderer/Comment.php:78 +#, php-format +msgid "Taken from %s" +msgstr "Obtenido de %s" + +#: lib/Forms/Query.php:128 +msgid "Text" +msgstr "Texto" + +#: lib/Driver/sql.php:77 lib/Driver/sql.php:1142 +msgid "That queue slug is already taken. Please select another." +msgstr "Este ID de seguimiento ya está en uso. Seleccione otro." + +#: view.php:55 lib/Ticket.php:409 lib/Ticket.php:454 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "Hay que configurar el motor VFS para permitir la carga de adjuntos." + +#: admin/index.php:869 +#, php-format +msgid "The attribute \"%s\" has been added to %s." +msgstr "Se ha añadido el atributo \"%s\" a %s." + +#: admin/index.php:958 +msgid "The attribute has been deleted." +msgstr "Se ha eliminado el atributo." + +#: admin/index.php:927 +msgid "The attribute has been modified." +msgstr "Se ha modificado el atributo." + +#: admin/index.php:967 +msgid "The attribute was not deleted." +msgstr "No se ha eliminado el atributo." + +#: admin/index.php:621 +msgid "The default priority has been set." +msgstr "Se ha establecido la prioridad por omisión." + +#: admin/index.php:490 +msgid "The default state has been set." +msgstr "Se ha establecido el estado por omisión." + +#: admin/index.php:538 +#, php-format +msgid "The priority \"%s\" has been added to %s." +msgstr "Se ha añadido la prioridad \"%s\" a %s." + +#: admin/index.php:639 +msgid "The priority has been deleted." +msgstr "Se ha eliminado la prioridad." + +#: admin/index.php:589 +msgid "The priority has been modified." +msgstr "Se ha modificado la prioridad." + +#: admin/index.php:648 +msgid "The priority was not deleted." +msgstr "No se eliminó la prioridad." + +#: lib/Forms/Query.php:392 +#, php-format +msgid "The query \"%s\" couldn't be deleted: %s" +msgstr "No se pudo eliminar la cola \"%s\": %s" + +#: lib/Forms/Query.php:394 +#, php-format +msgid "The query \"%s\" has been deleted." +msgstr "Se ha eliminado la cola \"%s\"." + +#: lib/Forms/Query.php:359 +#, php-format +msgid "The query couldn't be loaded:" +msgstr "No se pudo cargar la consulta:" + +#: admin/index.php:291 +#, php-format +msgid "The queue \"%s\" has been created." +msgstr "Se ha creado la cola \"%s\"." + +#: admin/index.php:380 +msgid "The queue has been deleted." +msgstr "Se ha eliminado la cola." + +#: admin/index.php:348 +msgid "The queue has been modified." +msgstr "Se ha modificado la cola." + +#: admin/index.php:388 +msgid "The queue was not deleted." +msgstr "No se eliminó la cola." + +#: lib/MIME/Viewer/zip.php:58 +msgid "The requested file does not exist in the Zip attachment." +msgstr "El archivo solicitado no existe en el adjunto Zip." + +#: data.php:26 +msgid "The requested template does not exist." +msgstr "La plantilla solicitada no existe." + +#: admin/index.php:409 +#, php-format +msgid "The state \"%s\" has been added to %s." +msgstr "Se ha añadido el estado \"%s\" a %s." + +#: admin/index.php:508 +msgid "The state has been deleted." +msgstr "Se ha eliminado el estado." + +#: admin/index.php:460 +msgid "The state has been modified." +msgstr "Se ha modificado el estado." + +#: admin/index.php:516 +msgid "The state was not deleted." +msgstr "No se eliminó el estado." + +#: ticket/delete.php:75 +msgid "The ticket was not deleted." +msgstr "No se eliminó la incidencia." + +#: admin/index.php:219 +#, php-format +msgid "The type \"%s\" has been modified." +msgstr "Se ha modificado el tipo \"%s\"." + +#: admin/index.php:265 +msgid "The type has been deleted." +msgstr "Se ha eliminado el tipo." + +#: admin/index.php:273 +msgid "The type was not deleted." +msgstr "No se eliminó el tipo." + +#: admin/index.php:750 +#, php-format +msgid "The version \"%s\" has been added to %s." +msgstr "Se ha añadido la versión \"%s\" a %s." + +#: admin/index.php:836 +msgid "The version has been deleted." +msgstr "Se ha eliminado la versión." + +#: admin/index.php:807 +msgid "The version has been modified." +msgstr "Se ha modificado la versión." + +#: admin/index.php:844 +msgid "The version was not deleted." +msgstr "No se eliminó la versión." + +#: lib/Forms/Admin.php:706 +msgid "There are no attribute types to edit" +msgstr "No hay tipos de atributo a modificar." + +#: lib/Forms/Query.php:277 +msgid "There are no attributes defined." +msgstr "No se han definido atributos." + +#: lib/Block/queuesummary.php:43 +msgid "There are no open tickets." +msgstr "No hay incidencias abiertas." + +#: lib/Forms/Admin.php:503 lib/Forms/Admin.php:549 +msgid "There are no priorities to edit" +msgstr "No hay prioridades a modificar" + +#: lib/Forms/Admin.php:778 +msgid "There are no queues available." +msgstr "No hay colas disponibles." + +#: lib/Forms/Admin.php:53 +msgid "There are no queues to edit" +msgstr "No hay colas a modificar" + +#: lib/Forms/CreateTicket.php:27 +msgid "There are no queues which you can create tickets in." +msgstr "No hay colas a las que pueda añadir incidencias." + +#: lib/Forms/Search.php:34 +msgid "There are no queues which you can search." +msgstr "No hay colas en las que pueda buscar." + +#: lib/Forms/Admin.php:391 lib/Forms/Admin.php:440 +msgid "There are no states to edit" +msgstr "No hay estados a modificar" + +#: lib/Forms/CreateTicket.php:62 +msgid "" +"There are no ticket types associated with this queue; until there are, you " +"cannot create any tickets in this queue." +msgstr "" +"No hay tipos de incidencias asociados a esta cola; mientras no los haya no " +"podrá añadir incidencias a la misma." + +#: lib/Forms/Admin.php:246 +msgid "There are no types to edit" +msgstr "No hay tipos a modificar" + +#: lib/Forms/Admin.php:208 +msgid "There are no users responsible for this queue." +msgstr "No hay usuarios encargados de esta cola." + +#: lib/Forms/CreateTicket.php:207 +msgid "There are no users to which this ticket can be assigned." +msgstr "No hay usuarios a los que asignar esta incidencia." + +#: lib/Forms/Admin.php:614 +msgid "There are no versions to edit" +msgstr "No hay versiones a modificar" + +#: lib/Reports.php:161 +msgid "There is no data for this report." +msgstr "No hay datos para este informe." + +#: admin/index.php:682 +#, php-format +msgid "There was an error adding \"%s\" to the responsible list for \"%s\":" +msgstr "" +"Se produjo un error al añadir a \"%s\" a la lista de encargados de \"%s\":" + +#: admin/index.php:874 +msgid "There was an error creating the attribute:" +msgstr "Se produjo un error al crear el atributo:" + +#: admin/index.php:543 +msgid "There was an error creating the priority:" +msgstr "Se produjo un error al crear la prioridad:" + +#: admin/index.php:300 +msgid "There was an error creating the queue:" +msgstr "Se produjo un error al crear la cola:" + +#: admin/index.php:413 +msgid "There was an error creating the state:" +msgstr "Se produjo un error al crear el estado:" + +#: admin/index.php:754 +msgid "There was an error creating the version:" +msgstr "Se produjo un error al crear la versión:" + +#: admin/index.php:962 +msgid "There was an error deleting the attribute:" +msgstr "Se produjo un error al eliminar el atributo:" + +#: admin/index.php:643 +msgid "There was an error deleting the priority:" +msgstr "Se produjo un error al eliminar la prioridad:" + +#: admin/index.php:383 +msgid "There was an error deleting the queue:" +msgstr "Se produjo un error al eliminar la cola:" + +#: admin/index.php:511 +msgid "There was an error deleting the state:" +msgstr "Se produjo un error al eliminar el estado:" + +#: ticket/delete.php:72 +#, php-format +msgid "There was an error deleting the ticket: %s" +msgstr "Se produjo un error al eliminar la incidencia: %s" + +#: admin/index.php:268 +msgid "There was an error deleting the type:" +msgstr "Se produjo un error al eliminar el tipo:" + +#: admin/index.php:839 +msgid "There was an error deleting the version:" +msgstr "Se produjo un error al eliminar la versión:" + +#: admin/index.php:935 +msgid "There was an error editing the attribute:" +msgstr "Se produjo un error al modificar el atributo:" + +#: admin/index.php:595 +msgid "There was an error editing the priority:" +msgstr "Se produjo un error al modificar la prioridad:" + +#: admin/index.php:364 +msgid "There was an error editing the queue:" +msgstr "Se produjo un error al modificar la cola:" + +#: admin/index.php:465 +msgid "There was an error editing the state:" +msgstr "Se produjo un error al modificar el estado:" + +#: admin/index.php:813 +msgid "There was an error editing the version:" +msgstr "Se produjo un error al modificar la versión:" + +#: lib/Forms/Admin.php:168 +#, php-format +msgid "There was an error listing users: %s; %s" +msgstr "Se produjo un error al listar los usuarios: %s; %s" + +#: queue/index.php:52 +#, php-format +msgid "There was an error locating tickets in this queue: " +msgstr "Se produjo un error al localizar las incidencias de esta cola:" + +#: admin/index.php:215 +msgid "There was an error modifying the type:" +msgstr "Se produjo un error al modificar el tipo:" + +#: search.php:72 +#, php-format +msgid "There was an error performing your search: %s" +msgstr "Se produjo un error al realizar la búsqueda: %s" + +#: admin/index.php:725 +#, php-format +msgid "" +"There was an error removing \"%s\" from the responsible list for \"%s\":" +msgstr "" +"Se produjo un error al eliminar a \"%s\" de la lista de encargados de \"%s\":" + +#: admin/index.php:617 +msgid "There was an error setting the default priority:" +msgstr "Se produjo un error al establecer la prioridad por omisión:" + +#: admin/index.php:486 +msgid "There was an error setting the default state:" +msgstr "Se produjo un error al establecer el estado por omisión:" + +#: data.php:29 +msgid "This is not a search results template." +msgstr "Ésta no es una plantilla de resultados de búsqueda." + +#: lib/Forms/CreateTicket.php:77 ticket/queue.php:74 +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this queue, you will not " +"be able to create tickets." +msgstr "" +"Esta cola precisa que indique una versión, pero no se le han asociado " +"versiones. Hasta que no se creen versiones para esta cola, no podrá generar " +"incidencias." + +#: lib/Ticket.php:596 lib/Ticket.php:738 +msgid "Ticket" +msgstr "Incidencia" + +#: ticket/delete.php:68 +#, php-format +msgid "Ticket %d has been deleted." +msgstr "Se ha eliminado la incidencia %d." + +#: lib/api.php:931 +#, php-format +msgid "Ticket %s - %s" +msgstr "Incidencia %s - %s" + +#: lib/Driver/sql.php:954 +#, php-format +msgid "Ticket %s was not found." +msgstr "No se encontró la incidencia %s." + +#: search.php:98 +msgid "Ticket Search" +msgstr "Búsqueda de incidencias" + +#: lib/Forms/CreateTicket.php:122 +msgid "Ticket State" +msgstr "Estado de la incidencia" + +#: templates/reports/stats.inc:3 +msgid "Ticket Stats" +msgstr "Estadísticas de incidencias" + +#: lib/Forms/CreateTicket.php:70 +msgid "Ticket Type" +msgstr "Tipo de incidencia" + +#: lib/Forms/Admin.php:89 +msgid "Ticket Types associated with this Queue" +msgstr "Tipos de incidencias asociadas a esta cola" + +#: lib/Ticket.php:592 +#, php-format +msgid "Ticket URL: %s" +msgstr "URL de la incidencia: %s" + +#: ticket/update.php:96 +msgid "Ticket Updated" +msgstr "Incidencia actualizada" + +#: lib/api.php:952 +msgid "Tickets" +msgstr "Incidencias" + +#: lib/Whups.php:558 lib/Ticket.php:568 lib/Ticket.php:723 lib/Ticket.php:845 +#: lib/Forms/Query.php:173 lib/Renderer/Query.php:108 ticket/queue.php:82 +#: config/.bak/prefs.php.dist:39 +msgid "Type" +msgstr "Tipo" + +#: lib/Renderer/Comment.php:104 +#, php-format +msgid "Type ⇒ %s" +msgstr "Tipo ⇒ %s" + +#: lib/Forms/Admin.php:226 lib/Forms/Admin.php:270 lib/Forms/Admin.php:323 +msgid "Type Description" +msgstr "Descripción del tipo" + +#: lib/Forms/Admin.php:225 lib/Forms/Admin.php:249 lib/Forms/Admin.php:267 +#: lib/Forms/Admin.php:320 +msgid "Type Name" +msgstr "Nombre del tipo" + +#: lib/Ticket.php:860 +msgid "Unassigned" +msgstr "Sin asignar" + +#: lib/Block/unassigned.php:3 lib/Block/unassigned.php:24 +msgid "Unassigned Tickets" +msgstr "Incidencias sin asignar" + +#: lib/Forms/Admin.php:789 +msgid "Unassigned tickets" +msgstr "Incidencias sin asignar" + +#: lib/Driver.php:194 +msgid "Unconfirmed" +msgstr "Sin confirmar" + +#: lib/Renderer/Query.php:141 lib/Renderer/Query.php:181 +#, php-format +msgid "Unknown node type %s" +msgstr "Nodo tipo %s desconocido" + +#: lib/api.php:899 +msgid "Update" +msgstr "Actualizar" + +#: ticket/update.php:110 +#, php-format +msgid "Update %s" +msgstr "Actualizar %s" + +#: templates/admin/mtmatrix.inc:29 +msgid "Update Associations" +msgstr "Actualizar asociaciones" + +#: lib/Whups.php:564 lib/Ticket.php:880 +msgid "Updated" +msgstr "Actualizada" + +#: lib/Ticket.php:575 lib/Ticket.php:597 +msgid "Updated By" +msgstr "Actualizado por" + +#: lib/Forms/Admin.php:167 lib/Forms/Admin.php:177 lib/Forms/Admin.php:180 +msgid "User" +msgstr "Usuario" + +#: lib/Forms/Query.php:42 +msgid "User ID" +msgstr "ID de usuario" + +#: lib/Forms/Admin.php:109 +msgid "Users responsible for this Queue" +msgstr "Usuarios encargados de esta cola" + +#: lib/Forms/Admin.php:212 +msgid "Users responsible for this queue" +msgstr "Usuarios encargados de esta cola" + +#: lib/Ticket.php:567 lib/Ticket.php:722 lib/Forms/Query.php:184 +#: lib/Renderer/Query.php:102 config/.bak/prefs.php.dist:42 +msgid "Version" +msgstr "Versión" + +#: lib/Forms/Admin.php:594 lib/Forms/Admin.php:640 lib/Forms/Admin.php:663 +msgid "Version Description" +msgstr "Descripción de la versión" + +#: lib/Forms/Admin.php:593 lib/Forms/Admin.php:618 lib/Forms/Admin.php:637 +#: lib/Forms/Admin.php:660 +msgid "Version Name" +msgstr "Nombre de la versión" + +#: lib/Forms/AddComment.php:38 ticket/queue.php:45 ticket/type.php:46 +msgid "Viewable only by members of" +msgstr "Visible sólo por los miembros de" + +#: lib/Forms/AddComment.php:25 +msgid "Watch this ticket" +msgstr "Observar esta incidencia" + +#: ticket/watch.php:77 +#, php-format +msgid "Watchers for %s" +msgstr "Observadores de %s" + +#: config/.bak/prefs.php.dist:95 +msgid "Weekday Day Month" +msgstr "Día de la semana Día Mes" + +#: config/.bak/prefs.php.dist:96 +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "Día de la semana Día Mes HH:MM:SS TZ" + +#: lib/Forms/Query.php:378 lib/Forms/Admin.php:142 lib/Forms/Admin.php:334 +#: lib/Forms/Admin.php:469 lib/Forms/Admin.php:580 lib/Forms/Admin.php:666 +#: lib/Forms/Admin.php:758 ticket/delete.php:37 +msgid "Yes" +msgstr "Sí" + +#: view.php:51 +#, php-format +msgid "You are not allowed to view ticket %d." +msgstr "No se le permite ver la incidencia %d." + +#: lib/Driver/sql.php:963 +#, php-format +msgid "You do not have permission to access this ticket (%s)." +msgstr "No dispone de permisos para acceder a esta incidencia (%s)." + +#: lib/api.php:546 +msgid "You do not have permission to update this ticket." +msgstr "No dispone de permisos para actualizar esta incidencia." + +#: lib/Block/myrequests.php:46 +msgid "You have no open requests." +msgstr "No ha abierto solicitudes." + +#: lib/Forms/Query.php:348 lib/Block/query.php:28 +msgid "You have no saved queries." +msgstr "No tiene consultas guardadas." + +#: lib/Whups.php:591 +msgid "You must select at least one queue to send reminders for." +msgstr "" +"Tiene que seleccionar al menos una cola de la que enviar recordatorios." + +#: lib/Forms/AddComment.php:18 lib/Forms/CreateTicket.php:116 +msgid "Your Email Address" +msgstr "Su dirección de correo" + +#: ticket/create.php:53 +#, php-format +msgid "" +"Your ticket ID is %s. An appropriate person has been notified of this " +"request." +msgstr "" +"El ID de su incidencia es %s. Se ha notificado su solicitud a la persona " +"adecuada." + +#: lib/Mail.php:198 +msgid "[ Could not render body of message. ]" +msgstr "[ No se pudo generar el cuerpo del mensaje. ]" + +#: lib/Whups.php:654 +msgid "_Admin" +msgstr "_Administrar" + +#: lib/Whups.php:263 +msgid "_Comment" +msgstr "_Comentario" + +#: lib/Whups.php:273 +msgid "_Delete" +msgstr "_Eliminar" + +#: lib/Query.php:205 +msgid "_Delete Query" +msgstr "_Eliminar consulta" + +#: lib/Query.php:186 +msgid "_Edit Query" +msgstr "Modi_ficar" + +#: admin/index.php:34 +msgid "_Edit Queues" +msgstr "Modificar co_las" + +#: templates/menu.inc:5 +msgid "_Go" +msgstr "_Ir" + +#: query.php:140 +msgid "_Group Criteria" +msgstr "Criterios de gru_pos" + +#: lib/Whups.php:259 +msgid "_History" +msgstr "_Historial" + +#: lib/Query.php:199 +msgid "_Load Query" +msgstr "Ca_rgar" + +#: lib/Whups.php:645 +#, php-format +msgid "_My %s" +msgstr "_Mis %s" + +#: lib/Whups.php:648 +msgid "_New Ticket" +msgstr "_Añadir" + +#: query.php:138 +msgid "_Property Criteria" +msgstr "Criterios de prop_iedades" + +#: lib/Whups.php:649 +msgid "_Query Builder" +msgstr "_Consultas" + +#: lib/Whups.php:650 +msgid "_Reports" +msgstr "_Informes" + +#: lib/Whups.php:647 +msgid "_Search" +msgstr "_Buscar" + +#: query.php:142 +msgid "_Text Criteria" +msgstr "Criterios de te_xto" + +#: lib/Whups.php:261 +msgid "_Update" +msgstr "Act_ualizar" + +#: query.php:139 +msgid "_User Criteria" +msgstr "Criterios de _usuarios" + +#: lib/Whups.php:265 +msgid "_Watch" +msgstr "_Observar" + +#: lib/Renderer/Query.php:161 +msgid "contains (case insensitive) substring" +msgstr "contenga la subcadena (sin diferenciar may. de min.)" + +#: lib/Renderer/Query.php:165 +msgid "contains (case sensitive) substring" +msgstr "contenga la subcadena (diferenciando may. de min.)" + +#: lib/Renderer/Query.php:169 +msgid "contains the word" +msgstr "contenga la palabra" + +#: lib/Mail.php:88 lib/Mail.php:107 lib/Mail.php:133 +msgid "current user:" +msgstr "usuario actual:" + +#: lib/api.php:940 +msgid "estimated time" +msgstr "tiempo estimado" + +#: lib/Renderer/Query.php:157 +msgid "is" +msgstr "es" + +#: lib/Renderer/Query.php:149 +msgid "is greater than" +msgstr "es mayor que" + +#: lib/Renderer/Query.php:153 +msgid "is less than" +msgstr "es menor que" + +#: lib/Renderer/Query.php:173 +msgid "matches the pattern" +msgstr "cumple el patrón" diff --git a/whups/po/fi_FI.po b/whups/po/fi_FI.po new file mode 100644 index 000000000..8d48287cc --- /dev/null +++ b/whups/po/fi_FI.po @@ -0,0 +1,2484 @@ +# Finnish translation for Whups. +# Copyright +# Leena Heino , 2004-2008. +# +msgid "" +msgstr "" +"Project-Id-Version: Whups 1.0-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-09-24 17:02+0300\n" +"PO-Revision-Date: 2008-09-12 12:59+0200\n" +"Last-Translator: Leena Heino \n" +"Language-Team: Finnish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: admin/index.php:745 +#, php-format +msgid "\"%s\" is no longer among those responsible for \"%s\"" +msgstr "\"%s\" ei ole enää tästä asiasta vastuullisten joukossa \"%s\"" + +#: templates/menu.inc:5 +msgid "#Id" +msgstr "#Id" + +#: templates/ticket/watchers.inc:3 +#, php-format +msgid "%d people watching, %d people responsible" +msgstr "%d henkilö tarkkailemassa, %d henkilöä vastuullisena" + +#: queue/rss.php:96 +#, php-format +msgid "%s %s tickets in %s" +msgstr "%s %s tikettiä jonossa %s" + +#: queue/rss.php:100 +#, php-format +msgid "%s %s tickets in all queues" +msgstr "%s %s tikettiä kaikissa jonoissa" + +#: lib/Renderer/Comment.php:120 +#, php-format +msgid "%s ⇒ %s" +msgstr "%s ⇒ %s" + +#: lib/Driver.php:497 +#, php-format +msgid "%s (%s) wrote:" +msgstr "%s (%s) kirjoitti:" + +#: admin/index.php:700 +#, php-format +msgid "%s added to those responsible for \"%s\"" +msgstr "%s lisäsi vastuulliset \"%s\"" + +#: templates/reports/stats.inc:15 +#, php-format +msgid "%s days" +msgstr "%s päivää" + +#: queue/rss.php:104 +#, php-format +msgid "%s tickets in %s" +msgstr "%s tikettiä jonossa %s" + +#: queue/rss.php:108 +#, php-format +msgid "%s tickets in all queues" +msgstr "%s tikettiä kaikissa jonoissa" + +#: ticket/watch.php:60 +#, php-format +msgid "%s will be notified when this ticket is updated." +msgstr "%s:lle ilmoitetaan kun tätä tikettiä on päivitetty." + +#: ticket/watch.php:72 +#, php-format +msgid "%s will no longer receive updates for this ticket." +msgstr "%s ei enää saa tietoja koskien tätä tikettiä." + +#: admin/index.php:109 +msgid "- Stage 1" +msgstr "- Vaihe 1" + +#: admin/index.php:114 +msgid "- Stage 2" +msgstr "- Vaihe 2" + +#: scripts/mail-filter.php:172 +msgid "--queue-name or --queue-id must specify a valid and public queue." +msgstr "" +"--queue-name tai --queue-id määritellä jonon, joka on kelvollinen ja " +"julkinen." + +#: templates/prevnext.inc:16 +msgid "<>" +msgstr "Viimeinen>>" + +#: lib/Forms/Query.php:411 +msgid "Load Query" +msgstr "Lataa kysely" + +#: lib/Forms/VarRenderer.php:46 +msgid "Loading..." +msgstr "Ladataan..." + +#: config/prefs.php.dist:106 +msgid "MM/DD/YY" +msgstr "MM/PP/VV" + +#: config/prefs.php.dist:107 +msgid "MM/DD/YY HH:MM:SS" +msgstr "MM/PP/VV TT:MM:SS" + +#: lib/Forms/Admin/Type.php:193 +#, php-format +msgid "Make a clone of %s" +msgstr "Tee kloonaus %s:stä" + +#: lib/Forms/AddComment.php:38 lib/Forms/EditTicket.php:167 +msgid "Make this comment visible only to members of a group?" +msgstr "Laita tämä kommentti näkymään vain ryhmän jäsenille." + +#: lib/Forms/Query.php:274 +msgid "Match" +msgstr "Täsmää" + +#: lib/Forms/Query.php:45 lib/Forms/Query.php:129 lib/Forms/Query.php:275 +msgid "Match Operator" +msgstr "Täsmäävä operaattori" + +#: lib/Query.php:167 +msgid "Match Pattern" +msgstr "Täsmää malliin" + +#: lib/Query.php:166 +msgid "Match Word" +msgstr "Täsmäävä sana" + +#: reports.php:30 +msgid "Maximum time a ticket is unresolved" +msgstr "Pisin aika, jonka tiketti on ollut selvittämättä" + +#: lib/Block/tree_menu.php:3 +msgid "Menu List" +msgstr "Valikkolista" + +#: reports.php:31 +msgid "Minimum time a ticket is unresolved" +msgstr "Lyhin aika, jonka tiketti on ollut selvittämättä" + +#: config/prefs.php.dist:146 +msgid "Most recent first" +msgstr "Tuorein ensin" + +#: templates/prefs/sourceselect.inc:312 +msgid "Move down" +msgstr "Siirrä alas" + +#: templates/prefs/sourceselect.inc:310 +msgid "Move up" +msgstr "Siirrä ylös" + +#: ticket/queue.php:181 +#, php-format +msgid "Moved ticket %d to \"%s\"" +msgstr "Siirrettiin tiketti %d \"%s\":lle" + +#: mybugs.php:54 +#, php-format +msgid "My %s" +msgstr "Minun %s" + +#: mybugs_edit.php:33 +#, php-format +msgid "My %s :: Add Content" +msgstr "Minun %s :: Lisää sisältö" + +#: search.php:178 lib/Block/myqueries.php:3 lib/Block/myqueries.php:24 +msgid "My Queries" +msgstr "Minun kyselyt" + +#: lib/Block/myrequests.php:3 lib/Block/myrequests.php:24 +msgid "My Requests" +msgstr "Minun pyynnöt" + +#: lib/Block/mytickets.php:3 lib/Block/mytickets.php:24 +#: config/prefs.php.dist:75 +msgid "My Tickets" +msgstr "Minun tiketit" + +#: lib/api.php:884 +msgid "My tickets by assignment date" +msgstr "Minun tiketit määräyspäivän mukaan" + +#: lib/api.php:883 +msgid "My tickets by creation date" +msgstr "Minun tiketit luontipäivän mukaan" + +#: lib/api.php:885 +msgid "My tickets by due date" +msgstr "Minun tiketit määräpäivän mukaan" + +#: lib/api.php:886 +msgid "My tickets by resolution date" +msgstr "Minun tiketit selvityspäivän mukaan" + +#: lib/Forms/Query.php:422 +msgid "Name" +msgstr "Nimi" + +#: lib/Forms/Admin/Type.php:198 +msgid "Name of the cloned copy" +msgstr "Kloonatun kopion nimi" + +#: lib/Query.php:216 +msgid "Ne_w Query" +msgstr "Uu_si kysely" + +#: lib/Driver.php:197 +msgid "New" +msgstr "Uusi" + +#: lib/Ticket.php:618 lib/Ticket.php:711 +msgid "New Attachment" +msgstr "Uusi liite" + +#: lib/Renderer/Comment.php:58 lib/Renderer/Comment.php:62 +#, php-format +msgid "New Attachment: %s" +msgstr "Uusi liite: %s" + +#: ticket/queue.php:32 +msgid "New Queue" +msgstr "Uusi jono" + +#: ticket/create.php:67 lib/Block/tree_menu.php:21 +msgid "New Ticket" +msgstr "Uusi tiketti" + +#: ticket/type.php:31 +msgid "New Type" +msgstr "Uuti tyyppi" + +#: templates/prevnext.inc:26 +msgid "Next>" +msgstr "Seuraava>" + +#: ticket/delete.php:33 lib/Forms/Query.php:449 +#: lib/Forms/Admin/Attribute.php:149 lib/Forms/Admin/Priority.php:121 +#: lib/Forms/Admin/Queue.php:174 lib/Forms/Admin/Reply.php:110 +#: lib/Forms/Admin/State.php:121 lib/Forms/Admin/Type.php:176 +#: lib/Forms/Admin/Version.php:96 +msgid "No" +msgstr "Ei" + +#: lib/Ticket.php:100 +#, php-format +msgid "" +"No priority for this ticket and no default priority for ticket type \"%s\" " +"specified." +msgstr "" +"Tälle tiketille tai tikettityypille \"%s\" ei ole määritelty oletustyyppiä." + +#: lib/Block/myqueries.php:46 +msgid "No queries have been saved." +msgstr "Ei kyselyitä talletettuna." + +#: lib/Driver/sql.php:553 lib/Block/query.php:62 +msgid "No query to run" +msgstr "Ei kyselyitä ajettavaksi" + +#: lib/Block/queuecontents.php:25 +msgid "No queues available." +msgstr "Ei jonoja saatavilla." + +#: lib/Ticket.php:92 +#, php-format +msgid "" +"No state for this ticket and no default state for ticket type \"%s\" " +"specified." +msgstr "" +"Tälle tikettityypille \"%s\" ei ole määritelty tilatietoja eikä " +"oletustilatietoja." + +#: reports.php:35 +msgid "No stats available." +msgstr "Tilastoja ei ole saatavilla." + +#: lib/Driver.php:533 +#, php-format +msgid "No such backend \"%s\" found" +msgstr "Taustajärjestelmää \"%s\" ei löytynyt" + +#: lib/View.php:33 +#, php-format +msgid "No such view \"%s\" found" +msgstr "Näkymää \"%s\" ei löytynyt" + +#: lib/Block/mytickets.php:45 +msgid "No tickets are assigned to you." +msgstr "Sinulle ei ole määrätty tikettejä." + +#: lib/Block/unassigned.php:45 +msgid "No tickets are unassigned!" +msgstr "Määrittelemättömiä tikettejä ei ole." + +#: lib/Block/queuecontents.php:62 lib/Block/queuecontents.php:73 +msgid "No tickets in queue." +msgstr "Ei tikettejä tässä jonossa" + +#: lib/Whups.php:716 +msgid "No tickets matched your search criteria." +msgstr "Yksikään tiketti ei vastannut hakukriteetereitäsi." + +#: lib/Ticket.php:84 +#, php-format +msgid "No type for this ticket and no default type for queue \"%s\" specified." +msgstr "" +"Tälle tiketille tai tälle jonolle \"%s\" ei ole määritelty oletustyyppiä." + +#: templates/prefs/sourceselect.inc:35 lib/Reports.php:67 +msgid "None" +msgstr "Ei mitään" + +#: lib/Renderer/Query.php:79 lib/Forms/Query.php:26 +msgid "Not" +msgstr "Ei" + +#: config/prefs.php.dist:17 +msgid "Notification Options" +msgstr "Ilmoituksen asetukset" + +#: config/prefs.php.dist:117 +msgid "Only notify me of ticket changes from other users?" +msgstr "Ilmoita minulle vain jos muut muuttavat tikettejä?" + +#: config/prefs.php.dist:126 +msgid "Only notify me of ticket changes with comments?" +msgstr "Ilmoita minulle vain jos muut muuttavat kommentteja?" + +#: queue/rss.php:43 +msgid "Open" +msgstr "Avoin" + +#: lib/Block/queuesummary.php:49 +msgid "Open Tickets" +msgstr "Avoimet tiketit" + +#: reports.php:23 +msgid "Open Tickets by Owner" +msgstr "Avoimet tiketit omistajan mukaan" + +#: reports.php:21 +msgid "Open Tickets by Priority" +msgstr "Avoimet tiketit prioriteetin mukan" + +#: reports.php:18 +msgid "Open Tickets by Queue" +msgstr "Avoiment tiketit jonon mukaan" + +#: reports.php:22 +msgid "Open Tickets by Requester" +msgstr "Avoimet tiketit asiakkaan mukaan" + +#: reports.php:19 +msgid "Open Tickets by State" +msgstr "Avoimet tiketit tilan mukaan" + +#: reports.php:20 +msgid "Open Tickets by Type" +msgstr "Avoimet tiketit tyypin mukaan" + +#: lib/Block/queuecontents.php:47 +#, php-format +msgid "Open Tickets in %s" +msgstr "Avoimet tiketit jonossa %s" + +#: queue/index.php:43 queue/index.php:57 queue/rss.php:119 +#, php-format +msgid "Open tickets in %s" +msgstr "Avoimet tiketit jonossa %s" + +#: queue/rss.php:121 +msgid "Open tickets in all queues." +msgstr "Avoimia tikettejä kaikissa jonoissa" + +#: lib/Renderer/Query.php:78 lib/Forms/Query.php:25 +msgid "Or" +msgstr "Tai" + +#: lib/Ticket.php:617 lib/Ticket.php:701 lib/Ticket.php:702 lib/Ticket.php:705 +#: lib/Ticket.php:812 lib/Ticket.php:833 lib/Ticket.php:958 lib/Whups.php:681 +#: lib/Renderer/Query.php:84 lib/Forms/CreateTicket.php:225 +#: lib/Forms/CreateTicket.php:243 lib/Forms/EditTicket.php:104 +msgid "Owners" +msgstr "Omistajat" + +#: lib/Whups.php:866 +#, php-format +msgid "Permanently delete %s?" +msgstr "Poistetaanko pysyvästi %s?" + +#: ticket/delete.php:51 ticket/deleteAttachment.php:21 ticket/queue.php:131 +#: ticket/type.php:74 ticket/update.php:22 +msgid "Permission Denied" +msgstr "Käyttö kielletty" + +#: ticket/delete.php:40 lib/Forms/EditTicket.php:197 +msgid "Permission Denied." +msgstr "Käyttö kielletty." + +#: lib/Forms/Query.php:459 query/index.php:31 query/run.php:44 +#, php-format +msgid "Permission denied." +msgstr "Käyttö kielletty." + +#: lib/Imple/ContactAutoCompleter.php:227 +msgid "Please resolve ambiguous or invalid addresses." +msgstr "Korjaa epäselvä tai virheellinen osoite." + +#: lib/Forms/Admin/Type.php:93 lib/Forms/Admin/Type.php:171 +msgid "Priorities for this Type" +msgstr "Prioriteetit tälle tyypille" + +#: ticket/queue.php:117 ticket/type.php:66 lib/Ticket.php:610 +#: lib/Ticket.php:807 lib/Ticket.php:953 lib/Whups.php:669 lib/Whups.php:678 +#: lib/Renderer/Query.php:125 lib/Forms/CreateTicket.php:147 +#: lib/Forms/EditTicket.php:68 lib/Forms/Query.php:198 +#: config/prefs.php.dist:49 +msgid "Priority" +msgstr "Prioriteetti" + +#: lib/Renderer/Comment.php:115 +#, php-format +msgid "Priority ⇒ %s" +msgstr "Prioriteetti &rJärj; %s" + +#: lib/Forms/Admin/Priority.php:24 lib/Forms/Admin/Priority.php:70 +#: lib/Forms/Admin/Priority.php:118 +msgid "Priority Description" +msgstr "Prioriteetin kuvaus" + +#: lib/Forms/Admin/Priority.php:23 lib/Forms/Admin/Priority.php:48 +#: lib/Forms/Admin/Priority.php:67 lib/Forms/Admin/Priority.php:94 +#: lib/Forms/Admin/Priority.php:115 +msgid "Priority Name" +msgstr "Prioriteetin nimi" + +#: search.php:178 +msgid "Public Queries" +msgstr "Julkiset kyselyt" + +#: query/index.php:172 +msgid "Query Builder" +msgstr "Kyselynrakentaja" + +#: lib/Forms/Query.php:387 +msgid "Query Name" +msgstr "Kyselyn nimi" + +#: lib/Forms/QueryParameterForm.php:20 +msgid "Query Parameters" +msgstr "Kyselyn parametrit" + +#: lib/Block/query.php:3 lib/Block/query.php:49 query/rss.php:63 +#: query/run.php:79 +msgid "Query Results" +msgstr "Kyselyn tulokset" + +#: lib/Forms/Query.php:389 +msgid "Query Slug" +msgstr "Kyselyn luoti" + +#: lib/Block/query.php:33 +msgid "Query to run" +msgstr "Ajettava kysely" + +#: lib/Ticket.php:606 lib/Ticket.php:803 lib/Ticket.php:918 lib/Ticket.php:923 +#: lib/Whups.php:679 lib/Renderer/Query.php:94 lib/Forms/Query.php:181 +#: lib/Forms/Search.php:40 lib/Block/queuecontents.php:32 +#: lib/Block/queuesummary.php:49 config/prefs.php.dist:50 +msgid "Queue" +msgstr "Jono" + +#: lib/Renderer/Comment.php:100 +#, php-format +msgid "Queue ⇒ %s" +msgstr "Jono &rJärj; %s" + +#: lib/Block/queuecontents.php:3 lib/Block/queuecontents.php:49 +msgid "Queue Contents" +msgstr "Jonojen sisältö" + +#: lib/Forms/Admin/Queue.php:24 lib/Forms/Admin/Queue.php:89 +#: lib/Forms/Admin/Queue.php:170 +msgid "Queue Description" +msgstr "Jonon kuvaus" + +#: lib/Forms/Admin/Queue.php:30 lib/Forms/Admin/Queue.php:97 +msgid "Queue Email" +msgstr "Jonon sähköpostiosoite" + +#: lib/Forms/CreateTicket.php:34 lib/Forms/CreateTicket.php:45 +#: lib/Forms/Admin/Queue.php:23 lib/Forms/Admin/Queue.php:60 +#: lib/Forms/Admin/Queue.php:85 lib/Forms/Admin/Queue.php:166 +msgid "Queue Name" +msgstr "Jonon nimi" + +#: lib/Forms/Admin/Queue.php:26 lib/Forms/Admin/Queue.php:93 +msgid "Queue Slug" +msgstr "Jono luoti" + +#: lib/Block/queuesummary.php:3 lib/Block/queuesummary.php:24 +msgid "Queue Summary" +msgstr "Jonon yhteenveto" + +#: ticket/queue.php:86 lib/Ticket.php:932 lib/Ticket.php:938 +#: lib/Forms/CreateTicket.php:93 +msgid "Queue Version" +msgstr "Jonon versio" + +#: admin/index.php:35 +msgid "Queue/Type Matri_x" +msgstr "Jono/Tyyppi matrii_si" + +#: templates/admin/mtmatrix.inc:6 +msgid "Queue/Type Matrix" +msgstr "Jono/Tyyppi matriisi" + +#: lib/api.php:163 lib/api.php:781 +msgid "Queues" +msgstr "Jonot" + +#: templates/prevnext.inc:32 +msgid "Re_turn to Search Results" +msgstr "Pa_laa haun tulokset" + +#: lib/Forms/Admin/Attribute.php:147 +msgid "Really delete this attribute? This may cause data problems!" +msgstr "" +"Poistetaanko todella tämä atribuutti? Tämä voi aiheuttaa ongelmia tiedoissa!" + +#: lib/Forms/Admin/Reply.php:108 +msgid "Really delete this form reply?" +msgstr "Poistetaanko todella tämä lomakevastaus?" + +#: lib/Forms/Admin/Priority.php:122 +msgid "Really delete this priority? This may cause data problems!" +msgstr "" +"Poistetaanko todella tämä prioriteetti? Tämä voi aiheuttaa ongelmia " +"tiedoissa!" + +#: lib/Forms/Query.php:450 +msgid "Really delete this query? This operation is not undoable." +msgstr "Poistetaanko todella tämä kysely? Tätä operaatio ei voi perua." + +#: lib/Forms/Admin/Queue.php:176 +msgid "Really delete this queue? This may cause data problems!" +msgstr "Poistetaanko todella tämä jono? Tämä voi aiheuttaa ongelmia tiedoissa!" + +#: lib/Forms/Admin/State.php:122 +msgid "Really delete this state? This may cause data problems!" +msgstr "" +"Poistetaanko todella tämä tila? Tämä voi aiheuttaa ongelmia tiedoissa!" + +#: ticket/delete.php:34 +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "" +"Poistetaanko todella tämä tiketti? Sitä ei arkistoida, joten se häviää " +"lopullisesti." + +#: lib/Forms/Admin/Type.php:178 +msgid "Really delete this type? This may cause data problems!" +msgstr "" +"Poistetaanko todella tämä tyyppi? Tämä voi aiheuttaa ongelmia tiedoissa!" + +#: lib/Forms/Admin/Version.php:97 +msgid "Really delete this version? This may cause data problems!" +msgstr "" +"Poistetaanko todella tämä versio? Tämä voi aiheuttaa ongelmia tiedoissa!" + +#: lib/Mail.php:217 +msgid "Received message:" +msgstr "Saatu vastaus:" + +#: search.php:162 +msgid "Refine Search" +msgstr "Tarkenna hakua" + +#: admin/index.php:1170 +msgid "Reminders were sent." +msgstr "Muistutukset lähetettiin." + +#: lib/Forms/Admin/User.php:59 +msgid "Remove User" +msgstr "Poista käyttäjä" + +#: ticket/watch.php:49 +msgid "Remove Watcher" +msgstr "Poista tarkkailija" + +#: templates/prefs/sourceselect.inc:300 +msgid "Remove source" +msgstr "Poista lähde" + +#: lib/Renderer/Comment.php:95 +msgid "Reply to this comment" +msgstr "Vastaa tähän kommenttiin" + +#: reports.php:40 +msgid "Reports" +msgstr "Raportit" + +#: lib/Ticket.php:965 lib/Whups.php:680 lib/Renderer/Query.php:86 +msgid "Requester" +msgstr "Asiakas" + +#: lib/Forms/Admin/Attribute.php:28 lib/Forms/Admin/Attribute.php:99 +msgid "Required Attribute?" +msgstr "Vaadittu atribuutti?" + +#: lib/Driver.php:199 lib/Ticket.php:991 lib/Whups.php:685 lib/api.php:927 +#: lib/Renderer/Query.php:151 config/prefs.php.dist:54 +msgid "Resolved" +msgstr "Selvitetty" + +#: lib/Forms/Query.php:330 lib/Forms/Search.php:60 +msgid "Resolved from" +msgstr "Selvitetty alkaen" + +#: lib/Forms/Query.php:331 +msgid "Resolved to" +msgstr "Selvitetty viimeistään" + +#: lib/Forms/Admin/User.php:61 +msgid "Responsible Users" +msgstr "Vastuulliset käyttäjät" + +#: lib/Whups.php:306 +msgid "S_et Queue" +msgstr "As_eta jono" + +#: lib/Query.php:234 +msgid "Sa_ve Query" +msgstr "Talleta k_ysely" + +#: templates/view/results.inc:96 lib/Forms/Query.php:385 +msgid "Save" +msgstr "Talleta" + +#: query/index.php:233 +msgid "Save Criterion" +msgstr "Talleta kriteeri" + +#: lib/Forms/Query.php:384 +msgid "Save Query" +msgstr "Talleta kysely" + +#: search.php:69 lib/Forms/Search.php:19 +msgid "Save as Query" +msgstr "Talleta kyselynä" + +#: search.php:155 lib/Block/tree_menu.php:30 +msgid "Search" +msgstr "Haku" + +#: lib/Forms/Query.php:278 +#, php-format +msgid "Search %s Attribute" +msgstr "Hae %s atribuuttia" + +#: lib/Forms/Query.php:272 lib/Forms/Query.php:281 +msgid "Search Attribute" +msgstr "Hae atribuutti" + +#: lib/Forms/Query.php:48 lib/Forms/Query.php:131 +msgid "Search Comments" +msgstr "Hae kommenttia" + +#: lib/Forms/Query.php:46 +msgid "Search Owners" +msgstr "Hae omistajia" + +#: lib/Forms/Query.php:47 +msgid "Search Requester" +msgstr "Hae asiakasta" + +#: search.php:147 search/rss.php:55 search/rss.php:59 +msgid "Search Results" +msgstr "Haun tulokset" + +#: templates/prevnext.inc:38 +#, php-format +msgid "Search Results: %s of %s" +msgstr "Haun tulokset %s / %s" + +#: lib/Forms/Query.php:130 +msgid "Search Summary" +msgstr "Hae yhteenvetoa" + +#: config/prefs.php.dist:76 +msgid "Search Tickets" +msgstr "Hae tikettiä" + +#: config/prefs.php.dist:25 +msgid "Select address book sources for adding and searching for addresses." +msgstr "Valitse osoitekirjalähteet osoitteiden lisäykselle ja haulle." + +#: templates/prefs/sourceselect.inc:319 +msgid "Select all fields to search when expanding addresses." +msgstr "Valitse kaikki ne kentät, joista etsitään laajennettavia osoitteita." + +#: config/prefs.php.dist:78 +msgid "Select the view to display after login:" +msgstr "Valitse sisäänkirjautumisen jälkeen näytettävä näkymä:" + +#: templates/prefs/sourceselect.inc:303 templates/prefs/sourceselect.inc:305 +msgid "Selected Address books:" +msgstr "Valitut osoitekirjat:" + +#: admin/index.php:36 +msgid "Sen_d Reminders" +msgstr "Lähe_tä muistutukset" + +#: lib/Forms/Admin.php:23 +msgid "Send Reminders" +msgstr "Lähetä muistutukset" + +#: lib/Forms/Admin.php:34 +msgid "Send only for this list of ticket ids" +msgstr "Lähetä vain tälle lista tikettien id:stä" + +#: lib/Forms/Admin/Priority.php:80 lib/Forms/Admin/Priority.php:82 +msgid "Set Default Priority" +msgstr "Aseta oletusprioriteetti" + +#: lib/Forms/Admin/State.php:80 lib/Forms/Admin/State.php:82 +msgid "Set Default State" +msgstr "Aseta oletustila" + +#: ticket/queue.php:201 ticket/queue.php:210 ticket/queue.php:222 +msgid "Set Queue - Step 1" +msgstr "Aseta jono - Askel 1" + +#: ticket/queue.php:202 ticket/queue.php:211 +msgid "Set Queue - Step 2" +msgstr "Aseta jono - Askel 2" + +#: ticket/queue.php:212 +msgid "Set Queue - Step 3" +msgstr "Aseta jono - Askel 3" + +#: ticket/queue.php:189 +#, php-format +msgid "Set Queue for %s" +msgstr "Aseta jono %s:lle" + +#: lib/api.php:800 +msgid "Set Requester" +msgstr "Hae asiakasta" + +#: ticket/type.php:139 ticket/type.php:148 +msgid "Set Type - Step 1" +msgstr "Aseta tyyppi - Askel 1" + +#: ticket/type.php:140 +msgid "Set Type - Step 2" +msgstr "Aseta tyyppi - Askel 2" + +#: ticket/type.php:127 +#, php-format +msgid "Set Type for %s" +msgstr "Aseta tyyppi %s:lle" + +#: lib/Whups.php:311 +msgid "Set _Type" +msgstr "Aseta _tyyppi" + +#: config/prefs.php.dist:144 +msgid "Show comments in chronological order, or most recent first?" +msgstr "Näytä kommentit kronologisessa järjestyksess, tai uusin esin." + +#: config/prefs.php.dist:95 +msgid "Show ticket IDs in the summary view?" +msgstr "Näytä tiketti id:t yhteenvetonäkymässä." + +#: config/prefs.php.dist:87 +msgid "Show tickets you have requested in the summary view?" +msgstr "Näytä aloittamasi tiketit yhteevetonäkymässä." + +#: config/templates.php.dist:16 +msgid "Simple HTML Report" +msgstr "Yksinkertainen raportti HTML-muodossa" + +#: lib/Forms/Admin/Queue.php:27 +#, php-format +msgid "" +"Slugs allows direct access to this queue's open tickets by visiting: %s. " +"
Slug names may contain only letters, numbers or the _ (underscore) " +"character." +msgstr "" +"Luoti mahdollistaa suoran yhteyden tämän jonon avoimiin tiketteihin " +"käymällä: %s.
Luotien nimet voi sisältää vain kirjaimia, numeroita " +"tai _ (alaviiva) -merkin." + +#: templates/view/results.inc:37 templates/view/results.inc:41 +#, php-format +msgid "Sort by %s" +msgstr "Järjestä %s mukaan" + +#: lib/Forms/CreateTicket.php:136 lib/Forms/CreateTicket.php:175 +#: lib/Forms/AddComment.php:20 lib/Forms/AddComment.php:51 +msgid "Spam protection" +msgstr "Roskapostisuojaus" + +#: ticket/queue.php:116 ticket/type.php:65 lib/Ticket.php:609 +#: lib/Ticket.php:806 lib/Ticket.php:949 lib/Whups.php:670 lib/Whups.php:676 +#: lib/Renderer/Query.php:117 lib/Forms/EditTicket.php:62 +#: lib/Forms/Query.php:193 config/prefs.php.dist:47 +msgid "State" +msgstr "Tila" + +#: lib/Renderer/Comment.php:110 +#, php-format +msgid "State ⇒ %s" +msgstr "Tila ⇒ %s" + +#: lib/Forms/Admin/State.php:25 lib/Forms/Admin/State.php:70 +msgid "State Category" +msgstr "Tilan kategoria" + +#: lib/Forms/Admin/State.php:24 lib/Forms/Admin/State.php:67 +#: lib/Forms/Admin/State.php:118 +msgid "State Description" +msgstr "Tilan kuvaus" + +#: lib/Forms/Admin/State.php:23 lib/Forms/Admin/State.php:47 +#: lib/Forms/Admin/State.php:64 lib/Forms/Admin/State.php:96 +#: lib/Forms/Admin/State.php:115 +msgid "State Name" +msgstr "Tilan nimi" + +#: lib/Forms/Admin/Type.php:76 lib/Forms/Admin/Type.php:165 +msgid "States for this Type" +msgstr "Tilat tälle tyypille" + +#: templates/ticket/watchers.inc:1 +msgid "Status" +msgstr "Tila" + +#: ticket/create.php:146 +msgid "Submit" +msgstr "Lähetä" + +#: query/run.php:93 query/run.php:94 +msgid "Subscribe to this query" +msgstr "Tilaa tämä kysely" + +#: admin/index.php:198 +#, php-format +msgid "Successfully Cloned %s to %s." +msgstr "Onnistuttiin kloonaamaan %s %s:ksi." + +#: ticket/type.php:118 +msgid "Successfully changed ticket type." +msgstr "Tiketin tyypin muutos onnistui." + +#: ticket/delete.php:30 lib/Ticket.php:616 lib/Ticket.php:643 +#: lib/Ticket.php:646 lib/Ticket.php:650 lib/Ticket.php:812 lib/Ticket.php:821 +#: lib/Ticket.php:912 lib/Whups.php:668 lib/Whups.php:675 +#: lib/Renderer/Query.php:89 lib/Forms/CreateTicket.php:152 +#: lib/Forms/EditTicket.php:58 config/prefs.php.dist:46 +msgid "Summary" +msgstr "Yhteenveto" + +#: lib/Renderer/Comment.php:51 +#, php-format +msgid "Summary ⇒ %s" +msgstr "Yheenveto &rJärj; %s" + +#: lib/Forms/Search.php:43 +msgid "Summary like" +msgstr "Yhteenveto kuten" + +#: lib/Renderer/Comment.php:79 +#, php-format +msgid "Taken from %s" +msgstr "Otettiin %s:ltä" + +#: lib/Forms/Query.php:128 +msgid "Text" +msgstr "Teksti" + +#: lib/Driver/sql.php:80 lib/Driver/sql.php:1306 +msgid "That queue slug is already taken. Please select another." +msgstr "Tämä jonoluoti on jo varattu. Valitse joku toinen." + +#: lib/Forms/CreateTicket.php:129 +msgid "The Requester's Email Address" +msgstr "Asiakkaan sähköpostiosoite" + +#: view.php:58 lib/Ticket.php:439 lib/Ticket.php:487 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "" +"VFS-taustajärjestelmä pitää olla asennettu ennenkuin voi tuoda liitteitä." + +#: admin/index.php:906 +#, php-format +msgid "The attribute \"%s\" has been added to %s." +msgstr "Atribuutti \"%s\" on lisätty %s:lle." + +#: admin/index.php:1006 +msgid "The attribute has been deleted." +msgstr "Atribuutti on poistettu." + +#: admin/index.php:974 +msgid "The attribute has been modified." +msgstr "Atribuuttia on muokattu" + +#: admin/index.php:1015 +msgid "The attribute was not deleted." +msgstr "Atribuuttia ei poistettu." + +#: admin/index.php:642 +msgid "The default priority has been set." +msgstr "Oletusprioriteetti on asetettu." + +#: admin/index.php:506 +msgid "The default state has been set." +msgstr "Oletustila on asetettu." + +#: admin/index.php:1043 +#, php-format +msgid "The form reply \"%s\" has been added to %s." +msgstr "Lomakevastaus \"%s\" on lisätty %s:lle." + +#: admin/index.php:1135 +msgid "The form reply has been deleted." +msgstr "Lomakevastaus on poistettu." + +#: admin/index.php:1108 +msgid "The form reply has been modified." +msgstr "Lomakevastausta on muokattu." + +#: admin/index.php:1144 +msgid "The form reply was not deleted." +msgstr "Lomakevastausta ei poistettu." + +#: admin/index.php:556 +#, php-format +msgid "The priority \"%s\" has been added to %s." +msgstr "Prioriteetti \"%s\" on lisätty %s:lle." + +#: admin/index.php:661 +msgid "The priority has been deleted." +msgstr "Prioriteetti on poistettu." + +#: admin/index.php:609 +msgid "The priority has been modified." +msgstr "Prioriteettia on muokattu." + +#: admin/index.php:670 +msgid "The priority was not deleted." +msgstr "Prioriteettiä ei poistettu." + +#: lib/Forms/Query.php:463 +#, php-format +msgid "The query \"%s\" couldn't be deleted: %s" +msgstr "Kyselyä \"%s\" ei voitu poistaa: %s" + +#: lib/Forms/Query.php:465 +#, php-format +msgid "The query \"%s\" has been deleted." +msgstr "Kysely \"%s\" on poistettu." + +#: lib/Forms/Query.php:430 +#, php-format +msgid "The query couldn't be loaded:" +msgstr "Kyselyä ei voitu ladata." + +#: admin/index.php:300 +#, php-format +msgid "The queue \"%s\" has been created." +msgstr "Jono \"%s\" on luotu." + +#: admin/index.php:392 +msgid "The queue has been deleted." +msgstr "Jono on poistettu." + +#: admin/index.php:359 +msgid "The queue has been modified." +msgstr "Jonoa on muokattu." + +#: admin/index.php:400 +msgid "The queue was not deleted." +msgstr "Jonoa ei poistettu." + +#: lib/MIME/Viewer/zip.php:58 +msgid "The requested file does not exist in the Zip attachment." +msgstr "Pyydettyä tiedostoa ei ole Zip-liitteessä." + +#: data.php:26 +msgid "The requested template does not exist." +msgstr "Pyydettyä mallia ei ole olemassa." + +#: admin/index.php:422 +#, php-format +msgid "The state \"%s\" has been added to %s." +msgstr "Tila \"%s\" on lisätty %s:lle." + +#: admin/index.php:525 +msgid "The state has been deleted." +msgstr "Tila on poistettu." + +#: admin/index.php:475 +msgid "The state has been modified." +msgstr "Tilaa on muokattu." + +#: admin/index.php:533 +msgid "The state was not deleted." +msgstr "Tilaa ei poistettu." + +#: ticket/delete.php:78 +msgid "The ticket was not deleted." +msgstr "Tikettiä ei poistettu." + +#: admin/index.php:223 +#, php-format +msgid "The type \"%s\" has been modified." +msgstr "Tyyppiä \"%s\" on muokattu." + +#: admin/index.php:272 +msgid "The type has been deleted." +msgstr "Tyyppi on poistettu." + +#: admin/index.php:280 +msgid "The type was not deleted." +msgstr "Tyyppiä ei poistettu." + +#: admin/index.php:776 +#, php-format +msgid "The version \"%s\" has been added to %s." +msgstr "Versio \"%s\" on lisätty %s:lle." + +#: admin/index.php:865 +msgid "The version has been deleted." +msgstr "Versio on poistettu." + +#: admin/index.php:835 +msgid "The version has been modified." +msgstr "Versiota on muokattu." + +#: admin/index.php:873 +msgid "The version was not deleted." +msgstr "Versiota ei poistettu." + +#: lib/Forms/Admin/Attribute.php:70 +msgid "There are no attribute types to edit" +msgstr "Ei ole atribuuttityyppejä muokattavaksi." + +#: lib/Forms/Query.php:281 +msgid "There are no attributes defined." +msgstr "Ei ole määritelty atribuutteja." + +#: lib/Forms/Admin/Reply.php:48 +msgid "There are no form replies to edit" +msgstr "Ei ole lomakevastauksia muokattavaksi" + +#: lib/Block/queuesummary.php:44 +msgid "There are no open tickets." +msgstr "Ei ole avoimia tikettejä" + +#: lib/Forms/Admin/Priority.php:44 lib/Forms/Admin/Priority.php:90 +msgid "There are no priorities to edit" +msgstr "Ei ole prioriteettejä muokattavaksi" + +#: lib/Forms/Admin.php:31 +msgid "There are no queues available." +msgstr "Ei ole jonoja saatavilla." + +#: lib/Forms/Admin/Queue.php:57 +msgid "There are no queues to edit" +msgstr "Ei ole jonoja muokattavaksi" + +#: lib/Forms/CreateTicket.php:35 +msgid "There are no queues which you can create tickets in." +msgstr "Ei ole jonoja, johon voit luoda tikettejä." + +#: lib/Forms/Search.php:38 +msgid "There are no queues which you can search." +msgstr "Ei ole jonoja, joista voit etsiä." + +#: lib/Forms/Admin/State.php:43 lib/Forms/Admin/State.php:92 +msgid "There are no states to edit" +msgstr "Ei ole tiloja muokattavaksi" + +#: lib/Forms/CreateTicket.php:72 +msgid "" +"There are no ticket types associated with this queue; until there are, you " +"cannot create any tickets in this queue." +msgstr "" +"Tähän jonoon ei ole assosioitu tikettityyppejä: Voit luoda tikettejä vasta " +"tikettityypit on määritelty." + +#: lib/Forms/Admin/Type.php:45 +msgid "There are no types to edit" +msgstr "Ei ole tyyppejä muokattavaksi" + +#: lib/Forms/Admin/User.php:75 +msgid "There are no users responsible for this queue." +msgstr "Tälle jonolle ei ole vastuuhenkilöitä." + +#: lib/Forms/CreateTicket.php:242 +msgid "There are no users to which this ticket can be assigned." +msgstr "Ei ole käyttäjiä joille tämä tiketti voidään määrätä." + +#: lib/Forms/Admin/Version.php:44 +msgid "There are no versions to edit" +msgstr "Ei ole versioita editoitaviksi" + +#: lib/Reports.php:143 +msgid "There is no data for this report." +msgstr "Ei ole tietoja tähän raporttiin." + +#: admin/index.php:705 +#, php-format +msgid "There was an error adding \"%s\" to the responsible list for \"%s\":" +msgstr "" +"Tapahtui virhe lisättäessä \"%s\" vastuullisten henkilöiden listalle \"%s\":" + +#: admin/index.php:911 +msgid "There was an error creating the attribute:" +msgstr "Tapahtui virhe luotaessa atribuuttia:" + +#: admin/index.php:1051 +msgid "There was an error creating the form reply:" +msgstr "Tapahtui virhe luotaessa lomakevastausta:" + +#: admin/index.php:561 +msgid "There was an error creating the priority:" +msgstr "Tapahtui virhe luotaessa prioriteettiä:" + +#: admin/index.php:309 +msgid "There was an error creating the queue:" +msgstr "Tapahtui virhe luotaessa jonoa:" + +#: admin/index.php:426 +msgid "There was an error creating the state:" +msgstr "Tapahtui virhe luotaessa tilaa:" + +#: admin/index.php:780 +msgid "There was an error creating the version:" +msgstr "Tapahtui virhe luotaessa versiota:" + +#: admin/index.php:1010 +msgid "There was an error deleting the attribute:" +msgstr "Tapahtui virhe poistettaesssa atribuuttia:" + +#: admin/index.php:1139 +msgid "There was an error deleting the form reply:" +msgstr "Tapahtui virhe poistettaessa lomakevastausta:" + +#: admin/index.php:665 +msgid "There was an error deleting the priority:" +msgstr "Tapahtui virhe poistettaessa prioriteettiä:" + +#: admin/index.php:395 +msgid "There was an error deleting the queue:" +msgstr "Tapahtui virhe poistettaessa jonoa:" + +#: admin/index.php:528 +msgid "There was an error deleting the state:" +msgstr "Tapahtui virhe poistettaessa tilaa:" + +#: ticket/delete.php:75 +msgid "There was an error deleting the ticket:" +msgstr "Tapahtui virhe poistettaessa tikettiä:" + +#: admin/index.php:275 +msgid "There was an error deleting the type:" +msgstr "Tapahtui virhe poistettaessa tyyppiä:" + +#: admin/index.php:868 +msgid "There was an error deleting the version:" +msgstr "Tapahtui virhe poistettaessa versiota:" + +#: admin/index.php:982 +msgid "There was an error editing the attribute:" +msgstr "Tapahtui virhe muokattaessa atribuuttia:" + +#: admin/index.php:1104 +msgid "There was an error editing the form reply:" +msgstr "Tapahtui virhe muokattaessa lomakevastausta:" + +#: admin/index.php:615 +msgid "There was an error editing the priority:" +msgstr "Tapahtui virhe muokattaessa prioriteettiä:" + +#: admin/index.php:375 +msgid "There was an error editing the queue:" +msgstr "Tapahtui virhe muokattaessa jonoa:" + +#: admin/index.php:480 +msgid "There was an error editing the state:" +msgstr "Tapahtui virhe muokattaessa tilaa:" + +#: admin/index.php:841 +msgid "There was an error editing the version:" +msgstr "Tapahtui virhe muokattaessa versiota:" + +#: lib/Forms/Admin/User.php:35 +#, php-format +msgid "There was an error listing users: %s; %s" +msgstr "Tapahtui virhe käyttäjiä listatessa: %s; %s" + +#: queue/index.php:52 +#, php-format +msgid "There was an error locating tickets in this queue: " +msgstr "Tapahtui virhe etsittäessä tikettejä tästä jonosta: " + +#: admin/index.php:219 +msgid "There was an error modifying the type:" +msgstr "Tapahtui virhe muokattaessa tyyppiä:" + +#: search.php:140 +#, php-format +msgid "There was an error performing your search: %s" +msgstr "Tapahtui virhe tehtäessä hakuasi: %s" + +#: admin/index.php:750 +#, php-format +msgid "" +"There was an error removing \"%s\" from the responsible list for \"%s\":" +msgstr "" +"Tapahtui virhe poistettaessa \"%s\" vastuuhenkilöiden listatalta \"%s\":" + +#: admin/index.php:638 +msgid "There was an error setting the default priority:" +msgstr "Tapahtui virhe muokattaessa oletusprioriteettiä:" + +#: admin/index.php:502 +msgid "There was an error setting the default state:" +msgstr "Tapahtui virhe muokattaessa oletustilaa:" + +#: lib/Forms/AddComment.php:37 lib/Forms/EditTicket.php:166 +msgid "This comment is visible to everyone" +msgstr "Tämä komentti näkyy kaikille" + +#: lib/Forms/Admin/Queue.php:31 +msgid "" +"This email address will be used when sending notifications for any queue " +"tickets." +msgstr "" +"Tätä sähköpostiosoitetta käytetään kun lähdetetään ilmoituksia jonojen " +"tiketeistä." + +#: data.php:29 +msgid "This is not a search results template." +msgstr "Tämä ei ole malli hakutuloksille." + +#: lib/Query.php:435 lib/Query.php:668 +msgid "This query element cannot be edited." +msgstr "Tämän kyselyelementtiä ei voi muokata." + +#: ticket/queue.php:81 lib/Forms/CreateTicket.php:88 +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this queue, you will not " +"be able to create tickets." +msgstr "" +"Tämä jono vaatii että annat version, mutta jonoon ei ole assosioitu " +"versiotietoja. Tähän jonoon voi luoda tikettejä vasta kun siihen on liitetty " +"versiotiedot." + +#: lib/Ticket.php:638 lib/Ticket.php:820 +msgid "Ticket" +msgstr "Tiketti" + +#: ticket/delete.php:71 +#, php-format +msgid "Ticket %d has been deleted." +msgstr "Tiketti %d on poistettu." + +#: lib/api.php:850 +#, php-format +msgid "Ticket %s - %s" +msgstr "Tiketti %s - %s" + +#: lib/Driver/sql.php:1081 +#, php-format +msgid "Ticket %s was not found." +msgstr "Tikettiä %s ei löytynyt." + +#: search.php:170 +msgid "Ticket Search" +msgstr "Tikettien haku" + +#: lib/Forms/CreateTicket.php:142 +msgid "Ticket State" +msgstr "Tiketin tila" + +#: templates/reports/stats.inc:1 +msgid "Ticket Stats" +msgstr "Tikettien tilastot" + +#: lib/Forms/CreateTicket.php:80 +msgid "Ticket Type" +msgstr "Tiketin tyyppi" + +#: lib/Forms/Admin/Queue.php:103 +msgid "Ticket Types associated with this Queue" +msgstr "Tähän jonoon assosioidut tikettityypit" + +#: lib/Ticket.php:633 +#, php-format +msgid "Ticket URL: %s" +msgstr "Tiketti URL: %s" + +#: ticket/update.php:94 +msgid "Ticket Updated" +msgstr "Tiketti päivitetty" + +#: lib/api.php:871 +msgid "Tickets" +msgstr "Tiketit" + +#: query/rss.php:70 +#, php-format +msgid "Tickets matching the query \"%s\"." +msgstr "Kyselyä \"%s\" vastaavat tiketit." + +#: templates/prefs/sourceselect.inc:322 +msgid "" +"To select multiple fields, hold down the Control (PC) or Command (Mac) while " +"clicking." +msgstr "" +"Valitaksesi useita kenttiä, pidä pohjassa Control (PC) tai Command (Mac) kun " +"valitset napsauttamalla." + +#: ticket/queue.php:89 lib/Ticket.php:608 lib/Ticket.php:805 +#: lib/Ticket.php:945 lib/Whups.php:677 lib/Renderer/Query.php:108 +#: lib/Forms/Query.php:174 config/prefs.php.dist:48 +msgid "Type" +msgstr "Tyyppi" + +#: lib/Renderer/Comment.php:105 +#, php-format +msgid "Type ⇒ %s" +msgstr "Tyyppi ⇒ %s" + +#: lib/Forms/Admin/Type.php:23 lib/Forms/Admin/Type.php:70 +#: lib/Forms/Admin/Type.php:160 +msgid "Type Description" +msgstr "Tyypin kuvaus" + +#: lib/Forms/Admin/Type.php:22 lib/Forms/Admin/Type.php:48 +#: lib/Forms/Admin/Type.php:67 lib/Forms/Admin/Type.php:156 +msgid "Type Name" +msgstr "Tyypin nimi" + +#: search/rss.php:39 +#, php-format +msgid "Type: %s; State: %s" +msgstr "Tyyppi: %s; Tila: %s" + +#: lib/Ticket.php:961 +msgid "Unassigned" +msgstr "Määrittelemätön" + +#: lib/Block/unassigned.php:3 lib/Block/unassigned.php:24 +msgid "Unassigned Tickets" +msgstr "Määrittelemättömät tiketit" + +#: lib/Forms/Admin.php:42 +msgid "Unassigned tickets" +msgstr "Määrittelemättömät tiketit" + +#: lib/Driver.php:196 +msgid "Unconfirmed" +msgstr "Varmistamaton" + +#: lib/Renderer/Query.php:167 lib/Renderer/Query.php:207 +#, php-format +msgid "Unknown node type %s" +msgstr "Tuntematon node tyyppi %s" + +#: lib/api.php:790 +msgid "Update" +msgstr "Päivitä" + +#: ticket/update.php:108 +#, php-format +msgid "Update %s" +msgstr "Päivitä %s" + +#: templates/admin/mtmatrix.inc:29 +msgid "Update Associations" +msgstr "Päivitä assosiaatiot" + +#: lib/Ticket.php:981 lib/Whups.php:683 lib/Renderer/Query.php:146 +msgid "Updated" +msgstr "Päivitetty" + +#: lib/Ticket.php:615 lib/Ticket.php:640 +msgid "Updated By" +msgstr "Päivittäjä" + +#: lib/Forms/Query.php:327 lib/Forms/Search.php:58 +msgid "Updated from" +msgstr "Päivitetty alkaen" + +#: lib/Forms/Query.php:328 +msgid "Updated to" +msgstr "Päivitetty viimeistään" + +#: lib/Forms/Admin/User.php:34 lib/Forms/Admin/User.php:44 +#: lib/Forms/Admin/User.php:47 +msgid "User" +msgstr "Käyttäjä" + +#: lib/Forms/Query.php:44 +msgid "User ID" +msgstr "Käyttäjä ID" + +#: lib/Forms/Admin/Queue.php:131 +msgid "Users responsible for this Queue" +msgstr "Tämän jonon vastuukäyttäjät" + +#: lib/Forms/Admin/User.php:79 +msgid "Users responsible for this queue" +msgstr "Tämän jonon vastuukäyttäjät" + +#: lib/Ticket.php:607 lib/Ticket.php:804 lib/Renderer/Query.php:102 +#: lib/Forms/Query.php:185 config/prefs.php.dist:51 +msgid "Version" +msgstr "Versio" + +#: lib/Forms/Admin/Version.php:24 lib/Forms/Admin/Version.php:70 +#: lib/Forms/Admin/Version.php:93 +msgid "Version Description" +msgstr "Version kuvaus" + +#: lib/Forms/Admin/Version.php:23 lib/Forms/Admin/Version.php:48 +#: lib/Forms/Admin/Version.php:67 lib/Forms/Admin/Version.php:90 +msgid "Version Name" +msgstr "Version nimi" + +#: ticket/queue.php:50 ticket/type.php:43 +msgid "Viewable only by members of" +msgstr "Näytetään vain jäsenille" + +#: lib/Forms/AddComment.php:25 +msgid "Watch this ticket" +msgstr "Tarkkaile tätä tikettiä" + +#: ticket/watch.php:78 +#, php-format +msgid "Watchers for %s" +msgstr "Tarkkailijat %s:lle" + +#: config/prefs.php.dist:104 +msgid "Weekday Day Month" +msgstr "Viikonpäivä Päivä Kuukausi" + +#: config/prefs.php.dist:105 +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "Viikonpäivä Päivä Kuukausi TT:MM:SS TZ" + +#: ticket/delete.php:33 lib/Forms/Query.php:449 +#: lib/Forms/Admin/Attribute.php:149 lib/Forms/Admin/Priority.php:121 +#: lib/Forms/Admin/Queue.php:174 lib/Forms/Admin/Reply.php:110 +#: lib/Forms/Admin/State.php:121 lib/Forms/Admin/Type.php:176 +#: lib/Forms/Admin/Version.php:96 +msgid "Yes" +msgstr "Kyllä" + +#: view.php:54 +#, php-format +msgid "You are not allowed to view ticket %d." +msgstr "Sinulla ei ole oikeuksia nähdä tätä tikettiä %d." + +#: lib/Driver/sql.php:1090 +#, php-format +msgid "You do not have permission to access this ticket (%s)." +msgstr "Sinulla ei ole oikeuksia tähän tikettiin (%s)" + +#: lib/api.php:375 +msgid "You do not have permission to update this ticket." +msgstr "Sinulla ei ole oikeuksia päivittää tätä tikettiä." + +#: lib/Block/myrequests.php:46 +msgid "You have no open requests." +msgstr "Sinulla ei ole avoimia pyyntöjä." + +#: lib/Forms/Query.php:419 lib/Block/query.php:28 +msgid "You have no saved queries." +msgstr "Sinulla ei ole talletettuja kyselyitä." + +#: lib/Whups.php:710 +msgid "You must select at least one queue to send reminders for." +msgstr "Sinun pitää valita ainakin yksi jono johon lähetetän muistutukset." + +#: lib/Forms/CreateTicket.php:132 lib/Forms/AddComment.php:18 +msgid "Your Email Address" +msgstr "Sähköpostiosoitteesi" + +#: ticket/create.php:60 +#, php-format +msgid "" +"Your ticket ID is %s. An appropriate person has been notified of this " +"request." +msgstr "" +"Tikettisi ID on %s. Ilmoitus uudesta tiketistä on lähetetty " +"vastuuhenkilöille." + +#: lib/Mail.php:244 +msgid "[ Could not render body of message. ]" +msgstr "[ Ei voitu renderöidä viestin leipätekstiä ]" + +#: lib/Whups.php:774 +msgid "_Admin" +msgstr "_Ylläpito" + +#: lib/Whups.php:298 +msgid "_Comment" +msgstr "_Kommentti" + +#: query/index.php:157 +msgid "_Date Criteria" +msgstr "_Päivämäärän kriteeri" + +#: lib/Whups.php:316 +msgid "_Delete" +msgstr "_Poista" + +#: lib/Query.php:237 +msgid "_Delete Query" +msgstr "_Poista kysely" + +#: lib/Query.php:218 +msgid "_Edit Query" +msgstr "_Muokkaa kyselyä" + +#: admin/index.php:33 +msgid "_Edit Queues" +msgstr "_Muokkaa jonoja" + +#: templates/menu.inc:5 +msgid "_Go" +msgstr "_Mene" + +#: query/index.php:156 +msgid "_Group Criteria" +msgstr "_Ryhmäkriteeri" + +#: lib/Whups.php:292 +msgid "_History" +msgstr "_Historia" + +#: lib/Query.php:231 +msgid "_Load Query" +msgstr "_Lataa kysely" + +#: lib/Whups.php:765 +#, php-format +msgid "_My %s" +msgstr "_Oma %s" + +#: lib/Whups.php:768 +msgid "_New Ticket" +msgstr "_Uusi tiketti" + +#: query/index.php:154 +msgid "_Property Criteria" +msgstr "_Ominaisuuden kriteeri" + +#: lib/Whups.php:769 +msgid "_Query Builder" +msgstr "_Kyselynrakentaja" + +#: lib/Whups.php:770 +msgid "_Reports" +msgstr "_Raportit" + +#: lib/Whups.php:767 +msgid "_Search" +msgstr "_Haku" + +#: query/index.php:158 +msgid "_Text Criteria" +msgstr "_Tekstin kriteeri" + +#: lib/Whups.php:294 +msgid "_Update" +msgstr "_Päivitä" + +#: query/index.php:155 +msgid "_User Criteria" +msgstr "_Käyttäjä kriteeri" + +#: lib/Whups.php:302 +msgid "_Watch" +msgstr "_Tarkkaile" + +#: lib/Renderer/Query.php:187 +msgid "contains (case insensitive) substring" +msgstr "sisältää (kirjainkokoriippumattoman) osamerkkijonon" + +#: lib/Renderer/Query.php:191 +msgid "contains (case sensitive) substring" +msgstr "sisältää (kirjainkokoriippuvan) osamerkkijonon" + +#: lib/Renderer/Query.php:195 +msgid "contains the word" +msgstr "sisältää sanan" + +#: lib/Mail.php:94 lib/Mail.php:118 lib/Mail.php:146 +msgid "current user:" +msgstr "nykyinen käyttäjä:" + +#: lib/api.php:859 +msgid "estimated time" +msgstr "arvioitu aika" + +#: lib/Renderer/Query.php:183 +msgid "is" +msgstr "on" + +#: lib/Renderer/Query.php:175 +msgid "is greater than" +msgstr "on suurempi kuin" + +#: lib/Renderer/Query.php:179 +msgid "is less than" +msgstr "on pienempi kuin" + +#: lib/Renderer/Query.php:199 +msgid "matches the pattern" +msgstr "täsmää malliin" + +#: lib/Forms/Search.php:57 lib/Forms/Search.php:59 lib/Forms/Search.php:61 +#: lib/Forms/Search.php:63 lib/Forms/Search.php:65 +msgid "to" +msgstr " - " diff --git a/whups/po/fr_FR.po b/whups/po/fr_FR.po new file mode 100644 index 000000000..27ac303be --- /dev/null +++ b/whups/po/fr_FR.po @@ -0,0 +1,1519 @@ +# WHUPS French translation. +# Copyright 2002 Thierry Thomas . +# This file is distributed under the same license as the WHUPS package. +# Thierry Thomas , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: Whups-0.0.1-cvs\n" +"POT-Creation-Date: 2003-06-23 11:17+0200\n" +"PO-Revision-Date: 2003-06-22 23:21+0200\n" +"Last-Translator: Thierry Thomas \n" +"Language-Team: French \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#, c-format +msgid "%s added to those responsible for '%s'" +msgstr "%s fait désormais partie des responsables de « %s »" + +#, c-format +msgid "%s days" +msgstr " (il y a %s jours)" + +#, c-format +msgid "'%s' is no longer among those responsible for '%s'" +msgstr "« %s » ne fait plus partie des responsables de « %s »" + +msgid "- Stage 1" +msgstr "- Étape 1" + +msgid "- Stage 2" +msgstr "- Étape 2" + +#, c-format +msgid "-Added By: %s\n" +msgstr "-Ajouté par : %s\n" + +#, c-format +msgid "-Assigned By: %s" +msgstr "-Assigné par : %s" + +#, c-format +msgid "-Assigned To: %s" +msgstr "-Assigner à  : %s" + +#, c-format +msgid "-Comment by %s on %s:" +msgstr "-Commentaire par %s sur %s :" + +#, c-format +msgid "-Created By: %s\n" +msgstr "-Créé par : %s\n" + +#, c-format +msgid "-Queue: %s" +msgstr "-Queue : %s" + +#, c-format +msgid "-Queue: %s\n" +msgstr "-Queue : %s\n" + +#, c-format +msgid "-New Priority: %s" +msgstr "-Nouvelle priorité : %s" + +#, c-format +msgid "-New State: %s" +msgstr "-Nouvel état : %s" + +#, c-format +msgid "-State: %s" +msgstr "-État  : %s" + +msgid "-Summary:" +msgstr "-Résumé :" + +#, c-format +msgid "-Ticket %s" +msgstr "-Ticket %s" + +#, c-format +msgid "-Ticket %s\n" +msgstr "-Ticket %s\n" + +msgid "1. Low" +msgstr "1. Bas" + +msgid "2. Medium" +msgstr "2. Moyen" + +msgid "3. High" +msgstr "3. Haut" + +msgid "No summary" +msgstr "Pas de résumé" + +msgid "A ticket has been reported but not yet analyzed." +msgstr "Un ticket a été pris en compte mais pas encore analysé." + +msgid "Accepted" +msgstr "Accepté" + +msgid "Add Attribute Criterion" +msgstr "Ajouter un critère sur l'attribut" + +msgid "Add Attribute" +msgstr "Ajouter un attribut" + +msgid "Add Comment Succeeded" +msgstr "Commentaire ajouté" + +msgid "Add Comment" +msgstr "Ajouter un commentaire" + +msgid "Add Criterion" +msgstr "Ajouter un critère" + +msgid "Add Queue" +msgstr "Ajouter un module" + +msgid "Add Priority" +msgstr "Ajouter une priorité" + +msgid "Add Property Criterion" +msgstr "Ajouter un critère sur la propriété" + +msgid "Add State" +msgstr "Ajouter un état" + +msgid "Add Subject" +msgstr "Ajouter un sujet" + +msgid "Add Text Criterion" +msgstr "Ajouter un critère sur le texte" + +#, c-format +msgid "Add Type %s" +msgstr "Ajouter le type %s" + +msgid "Add Type" +msgstr "Ajouter un type" + +msgid "Add User Criterion" +msgstr "Ajouter un critère sur l'utilisateur" + +msgid "Add Users" +msgstr "Ajouter des utilisateurs" + +msgid "Add Version" +msgstr "Ajouter une version" + +#, c-format +msgid "Adding your ticket failed: %s." +msgstr "L'ajout de votre ticket a échoué : %s." + +msgid "Additional Comment" +msgstr "Commentaire additionnel" + +msgid "Admin" +msgstr "Admin." + +msgid "Administration" +msgstr "Administration" + +msgid "An appropriate person has been notified of this request." +msgstr "Cette requête a été notifiée à la personne appropriée." + +msgid "And" +msgstr "Et" + +msgid "Any Group" +msgstr "Groupe quelconque" + +msgid "Any" +msgstr "Quelconque" + +msgid "Ascending" +msgstr "Croissant" + +msgid "Assign Ticket Succeeded" +msgstr "Assignation du ticket réussie" + +msgid "Assign Ticket" +msgstr "Assigner un ticket" + +#, c-format +msgid "Assigned ticket to %s" +msgstr "Assigner un ticket à %s" + +msgid "Assigned" +msgstr "Assigné" + +msgid "Assignee" +msgstr "Responsable" + +msgid "Associations updated successfully." +msgstr "Associations mises à jour." + +msgid "Attribute Criteria" +msgstr "Critère d'attribut" + +msgid "Attribute Description" +msgstr "Description de l'attribut" + +msgid "Attribute Name" +msgstr "Nom de l'attribut" + +msgid "Attributes for this Type" +msgstr "Attribut pour ce type" + +msgid "Autolink to other tickets in comments" +msgstr "Lien vers d'autres tickets dans les commentaires" + +msgid "Average days to close by Queue" +msgstr "Délai moyen de clôture par modules" + +msgid "Average days to close by Owner" +msgstr "Délai moyen de clôture par propriétaires" + +msgid "Average days to close by Requester" +msgstr "Délai moyen de clôture par demandeurs" + +msgid "Average time a ticket is unresolved" +msgstr "Délai moyen des tickets non résolus" + +msgid "Branch Type" +msgstr "Type de branche" + +msgid "Canceled" +msgstr "Annulé" + +msgid "Case Insensitive Substring" +msgstr "Sous-chaîne non sensible à la casse" + +msgid "Case Sensitive Substring" +msgstr "Sous-chaîne sensible à la casse" + +msgid "Change Ticket Type" +msgstr "Modifier le type du ticket" + +msgid "Change display options such as how search results are sorted." +msgstr "" +"Changer les options d'affichage de la même manière que l'ordre des résultats " +"de recherches." + +msgid "" +"Change display options such as the color scheme and how search results are " +"sorted." +msgstr "" +"Changer les options d'affichage tels que le thème coloré et la manière dont " +"les résultats de recherches sont classés." + +msgid "Change options for email notifications of ticket activity." +msgstr "" +"Changer les options de notifications par courrier de l'activité des tickets." + +msgid "Change" +msgstr "Modifier" + +msgid "Choose Action:" +msgstr "Choisir une action :" + +msgid "Chronological (oldest first)" +msgstr "Chronologique (les plus ancien en premier)" + +msgid "Clone Description" +msgstr "Description du clone" + +msgid "Clone Type" +msgstr "Type de clone" + +msgid "Clone" +msgstr "Dupliquer" + +msgid "Comma Separated Values (CSV file)" +msgstr "Texte CSV (fichier CSV)" + +#, c-format +msgid "Comment from %s on %s" +msgstr "Commentaire de %s sur %s" + +msgid "Comment" +msgstr "Commentaire" + +msgid "Commentor" +msgstr "Commentateur" + +#, c-format +msgid "Copy of %s" +msgstr "Copie de %s" + +msgid "Create Default Priorities" +msgstr "Créer les priorités par défaut" + +msgid "Create Default States" +msgstr "Créer les états par défaut" + +msgid "Create Ticket - Stage 1" +msgstr "Créer un ticket - Étape 1" + +msgid "Create Ticket - Stage 2" +msgstr "Créer un ticket - Étape 2" + +msgid "Create Ticket - Stage 3" +msgstr "Créer un ticket - Étape 3" + +msgid "Create Ticket - Stage 4" +msgstr "Créer un ticket - Étape 4" + +msgid "Create Ticket" +msgstr "Créer un ticket" + +msgid "Create Tickets" +msgstr "Créer des tickets" + +msgid "Created" +msgstr "Créé" + +msgid "Current Query" +msgstr "Requête courante" + +msgid "Current Type" +msgstr "Type courant" + +msgid "Date Criteria" +msgstr "Critère sur la date" + +msgid "Date/Time format for search results" +msgstr "Format de la date et de l'heure pour les résultats de recherche" + +msgid "Default sorting criteria:" +msgstr "Critère de classement par défaut" + +msgid "Default sorting direction:" +msgstr "Sens de classement par défaut" + +msgid "Delete Attribute Confirmation" +msgstr "Confirmation de la suppression de l'attribut" + +msgid "Delete Attribute" +msgstr "Supprimer l'attribut" + +msgid "Delete Queue Confirmation" +msgstr "Confirmation de la suppression de module" + +msgid "Delete Queue" +msgstr "Supprimer le module" + +msgid "Delete Priority Confirmation" +msgstr "Confirmation de la suppression de priorité" + +msgid "Delete Priority" +msgstr "Supprimer la priorité" + +msgid "Delete State Confirmation" +msgstr "Confirmation de la suppression de l'état" + +msgid "Delete State" +msgstr "Supprimer l'état" + +msgid "Delete Subject Confirmation" +msgstr "Confirmation de la suppression du sujet" + +msgid "Delete Subject" +msgstr "Supprimer le sujet" + +msgid "Delete Ticket Succeeded" +msgstr "Suppression du ticket effectué" + +msgid "Delete Ticket" +msgstr "Supprimer un ticket" + +msgid "Delete Type Confirmation" +msgstr "Confirmation de la suppression du type" + +msgid "Delete Type" +msgstr "Supprimer le type" + +msgid "Delete Version Confirmation" +msgstr "Confirmation de la suppression de la version" + +msgid "Delete Version" +msgstr "Supprimer la version" + +msgid "Delete" +msgstr "Supprimer" + +msgid "Descending" +msgstr "Décroissant" + +msgid "Description" +msgstr "Description" + +msgid "Display Options" +msgstr "Options d'affichage" + +#, c-format +msgid "Edit %s" +msgstr "Éditer %s" + +msgid "Edit Attribute" +msgstr "Éditer l'attribut" + +msgid "Edit Attributes" +msgstr "Éditer les attributs" + +msgid "Edit Queue" +msgstr "Éditer le module" + +msgid "Edit Queues" +msgstr "Éditer des modules" + +msgid "Edit Priorities" +msgstr "Éditer les priorités" + +msgid "Edit Priority" +msgstr "Éditer la priorité" + +msgid "Edit Query" +msgstr "Éditer une requête" + +msgid "Edit State" +msgstr "Éditer l'état" + +msgid "Edit States" +msgstr "Éditer les états" + +msgid "Edit Subject" +msgstr "Éditer le sujet" + +msgid "Edit Subjects" +msgstr "Éditer les sujets" + +msgid "Edit Type" +msgstr "Éditer le type" + +msgid "Edit Types" +msgstr "Éditer les types" + +msgid "Edit Version" +msgstr "Éditer la version" + +msgid "Edit or Delete Attributes" +msgstr "Éditer ou supprimer les attributs" + +msgid "Edit or Delete Queues" +msgstr "Éditer ou supprimer les modules" + +msgid "Edit or Delete Priorities" +msgstr "Éditer ou supprimer les priorités" + +msgid "Edit or Delete States" +msgstr "Éditer ou supprimer les états" + +msgid "Edit or Delete Subjects" +msgstr "Éditer ou supprimer les sujets" + +msgid "Edit or Delete Types" +msgstr "Éditer ou supprimer les types" + +msgid "Edit or Delete Versions" +msgstr "Éditer ou supprimer les versions" + +msgid "Edit the permissions on this module" +msgstr "Éditer les permissions de ce module" + +msgid "Edit the users responsible for this module" +msgstr "Éditer les utilisateurs responsables pour ce module" + +msgid "Edit the versions for this module" +msgstr "Éditer les versions de ce module" + +msgid "Edit" +msgstr "Éditer" + +#, c-format +msgid "Error: Unknown query form %s, defaulting to properties" +msgstr "" +"Erreur : formulaire de recherche %s inconnu, utilisation des propriétés par " +"défaut" + +msgid "Exact Match" +msgstr "Correspondance exacte" + +msgid "Execute Query" +msgstr "Exécution de la requête" + +msgid "For tickets from these modules" +msgstr "Pour les tickets de ce module" + +msgid "For tickets which are" +msgstr "Pour les tickets qui sont" + +msgid "Go" +msgstr "Lancer" + +msgid "Help" +msgstr "Aide" + +msgid "Hide Assigned" +msgstr "Cacher les tickets affectés" + +msgid "Hide New" +msgstr "Cacher les nouveaux" + +msgid "Hide Resolved" +msgstr "Cacher les résolus" + +msgid "Hide Unconfirmed" +msgstr "Cacher les non-confirmés" + +msgid "Hoist" +msgstr "Monter" + +msgid "Id" +msgstr "Id." + +#, c-format +msgid "If you believe you have recieved this mail in error, please contact %s." +msgstr "Si vous avez reçu ce courrier par erreur, veuillez contacter %s." + +msgid "" +"If you don't select any categories, no filtering will be done on ticket " +"category." +msgstr "" +"Si vous ne sélectionnez aucune catégorie, aucun filtre ne sera appliqué sur " +"la catégorie." + +msgid "" +"If you don't select any types, no filtering will be done on ticket type." +msgstr "" +"Si vous ne sélectionnez aucun type, aucun filtre ne sera appliqué sur le " +"type de ticket." + +msgid "" +"If you select any tickets that do not have an owner, who should we send " +"email to?" +msgstr "" +"Si vous sélectionnez un ticket sans propriétaire, à qui envoyer le courrier ?" + +#, c-format +msgid "Initial priority of '%s' set by %s on %s." +msgstr "Priorité initiale de « %s » modifié par %s sur %s." + +#, c-format +msgid "Initial state of '%s' set by %s on %s" +msgstr "État initial de « %s » modifié par %s sur %s" + +msgid "Insert And" +msgstr "Insérer « Et »" + +msgid "Insert Branch" +msgstr "Insérer une branche" + +msgid "Insert Not" +msgstr "Insérer « Non »" + +msgid "Insert Or" +msgstr "Insérer « Ou »" + +msgid "Insert Query" +msgstr "Insérer une requête »" + +msgid "Keep a set of versions for this queue?" +msgstr "Conserver un jeu de versions pour ce module ?" + +msgid "Language" +msgstr "Langue" + +msgid "Load Query" +msgstr "Charger une requête" + +msgid "Login" +msgstr "Connexion" + +msgid "MM/DD/YY HH:MM:SS" +msgstr "MM/JJ/AA HH:MM:SS" + +msgid "MM/DD/YY" +msgstr "MM/JJ/AA" + +#, c-format +msgid "Make a clone of %s" +msgstr "Dupliquer %s" + +msgid "Match Operator" +msgstr "Faire correspondre l'opérateur" + +msgid "Match Pattern" +msgstr "Faire correspondre le motif" + +msgid "Match Word" +msgstr "Faire correspondre le mot" + +msgid "Match" +msgstr "Correspond" + +msgid "Maximum time a ticket is unresolved" +msgstr "Temps maximum pour un ticket non résolu" + +msgid "Minimum time a ticket is unresolved" +msgstr "Temps minimum pour un ticket non résolu" + +msgid "Queue Description" +msgstr "Description du module" + +msgid "Queue Name" +msgstr "Nom de module" + +msgid "Queue Version" +msgstr "Version du module" + +msgid "Queue" +msgstr "Queue" + +msgid "Queue/Type Matrix" +msgstr "Matrice Queue/Type" + +#, c-format +msgid "Queue: %s, Ticket: %s, Category: %s, Type: %s" +msgstr "Queue : %s, Ticket : %s, Catégorie : %s, Type : %s" + +msgid "Most recent first" +msgstr "Les plus récent en premier" + +msgid "Move" +msgstr "Déplacer" + +#, c-format +msgid "My %s" +msgstr "Mon %s" + +msgid "My Assigned Tickets" +msgstr "Les tickets qui me sont assignés" + +msgid "My Bugs" +msgstr "Mes tickets" + +msgid "My Open Requests" +msgstr "Mes requête en cours" + +msgid "My Searches" +msgstr "Mes requêtes" + +msgid "Name of the cloned copy" +msgstr "Nom du clone" + +msgid "Name" +msgstr "Nom" + +msgid "Name, Email Report" +msgstr "Nom, rapport par courrier" + +msgid "New Priority" +msgstr "Nouvelle priorité" + +msgid "New Query" +msgstr "Nouvelle requête" + +msgid "New State" +msgstr "Nouvel état" + +msgid "New Ticket" +msgstr "Nouveau tickets" + +#, c-format +msgid "New comment for ticket %s" +msgstr "Nouveau commentaire pour le ticket %s" + +#, c-format +msgid "New ticket (%s): %s" +msgstr "Nouveau ticket (%s) : %s" + +msgid "New" +msgstr "Nouveau" + +msgid "No configuration information specified for SQL Bugs." +msgstr "Pas d'information de configuration spécifiée pour la base de Whups." + +msgid "No stats available." +msgstr "Aucun état disponible." + +#, c-format +msgid "No such backend '%s' found" +msgstr "Aucune interface « %s »" + +msgid "No such ticket." +msgstr "Aucun ticket de ce type." + +msgid "No tickets matched your search criteria." +msgstr "Aucun ticket ne correspond à vos critères de recherche." + +msgid "No tickets to display" +msgstr "Aucun ticket a afficher" + +msgid "No" +msgstr "Non" + +msgid "None" +msgstr "Aucun" + +msgid "Not yet implemented..." +msgstr "Pas encore implémenté..." + +msgid "Not" +msgstr "Non" + +msgid "Notification Options" +msgstr "Options de notification" + +msgid "Only notify me of ticket changes from other users" +msgstr "" +"Me notifier uniquement des changements portant sur les tickets d'autres " +"utilisateurs" + +msgid "Open Tickets by Queue" +msgstr "Mes ticket ouvert par module" + +msgid "Open Tickets by Owner" +msgstr "Tickets ouvert par propriétaire" + +msgid "Open Tickets by Priority" +msgstr "Ticket ouvert par priorité" + +msgid "Open Tickets by Requester" +msgstr "Ticket ouvert par demandeur" + +msgid "Open Tickets by State" +msgstr "Ticket ouvert par état" + +msgid "Open Tickets by Type" +msgstr "Ticket ouvert par type" + +msgid "Open Tickets by Version" +msgstr "Ticket ouvert par version" + +msgid "Options" +msgstr "Options" + +msgid "Or" +msgstr "Ou" + +msgid "Other Options" +msgstr "Autres options" + +msgid "Owners" +msgstr "Propriétaire" + +msgid "Path" +msgstr "Chemin" + +msgid "Permission Denied." +msgstr "Permission refusée." + +msgid "Priorities for this Type" +msgstr "Priorités pour ce type" + +msgid "Priority Description" +msgstr "Description de la priorité" + +msgid "Priority Name" +msgstr "Nom de la priorité" + +#, c-format +msgid "Priority changed to '%s' by %s on %s." +msgstr "Priorité passée à « %s » par %s sur %s." + +msgid "Priority" +msgstr "Priorité" + +msgid "Private" +msgstr "Privé" + +msgid "Property Criteria" +msgstr "critère de priorité" + +msgid "Query Builder" +msgstr "Construction de requête" + +msgid "Query Parameters" +msgstr "Paramètre de recherche" + +msgid "Query Results" +msgstr "Résultat de la recherche" + +msgid "Re-execute Query" +msgstr "Ré-exécution de la requête" + +msgid "Really delete this attribute? This may cause data problems!!" +msgstr "" +"Suppression définitive de cet état ? Cela peut provoquer des problèmes avec " +"les données !" + +msgid "Really delete this queue? This may cause data problems!!" +msgstr "" +"Suppression définitive de ce module ? Cela peut provoquer des problèmes avec " +"les données !" + +msgid "Really delete this priority? This may cause data problems!!" +msgstr "" +"Suppression définitive de cette priorité ? Cela peut provoquer des problèmes " +"avec les données !" + +msgid "Really delete this state? This may cause data problems!!" +msgstr "" +"Suppression définitive de cet état ? Cela peut provoquer des problèmes avec " +"les données !" + +msgid "Really delete this subject? This may cause data problems!!" +msgstr "" +"Suppression définitive de ce sujet ? Cela peut provoquer des problèmes avec " +"les données !" + +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "" +"Suppression définitive de ce ticket ? Il NE sera PAS archivé, et sera perdu " +"définitivement." + +msgid "Really delete this type? This may cause data problems!!" +msgstr "" +"Suppression définitive de ce type ? Cela peut provoquer des problèmes avec " +"les données !" + +msgid "Really delete this version? This may cause data problems!!" +msgstr "" +"Suppression définitive de cette version ? Cela peut provoquer des problèmes " +"avec les données !" + +msgid "Refine Search" +msgstr "Affiner la recherche" + +msgid "Refine search" +msgstr "Affiner la recherche" + +msgid "Reminders were sent." +msgstr "Les rappels on été envoyés." + +msgid "Remove User" +msgstr "Retirer un utilisateur" + +msgid "Reports" +msgstr "Rapport" + +msgid "Requester" +msgstr "Demandeur" + +msgid "Required 'database' not specified in bugs configuration." +msgstr "" +"Le paramètre obligatoire 'database' n'est pas spécifié dans la configuration " +"de Whups." + +msgid "Required 'hostspec' not specified in bugs configuration." +msgstr "" +"Le paramètre obligatoire 'hostspec' n'est pas spécifié dans la configuration " +"de Whups." + +msgid "Required 'password' not specified in bugs configuration." +msgstr "" +"Le paramètre obligatoire 'password' n'est pas spécifié dans la configuration " +"de Whups." + +msgid "Required 'phptype' not specified in bugs configuration." +msgstr "" +"Le paramètre obligatoire 'phptype' n'est pas spécifié dans la configuration " +"de Whups." + +msgid "Required 'username' not specified in bugs configuration." +msgstr "" +"Le paramètre obligatoire 'username' n'est pas spécifié dans la configuration " +"de Whups." + +msgid "Resolved" +msgstr "Résolu" + +msgid "Responsible Users" +msgstr "Utilisateurs responsables" + +msgid "Restrict ticket subjects to a specified list?" +msgstr "Restreindre les sujets des tickets à une liste définie ?" + +msgid "Save Query" +msgstr "Enregistrer la requête ?" + +msgid "Save these results as: " +msgstr "Sauver ses résultats en : " + +msgid "Save" +msgstr "Enregistrer" + +#, c-format +msgid "Search %s Attribute" +msgstr "Rechercher l'attribut %s" + +msgid "Search Assignee" +msgstr "Rechercher une personne affectée" + +msgid "Search Attribute" +msgstr "Attribut de recherche" + +msgid "Search Comments" +msgstr "Rechercher des commentaires" + +msgid "Search Requester" +msgstr "Rechercher un demandeur" + +msgid "Search Results" +msgstr "Résultats de recherche" + +msgid "Search Summary" +msgstr "Rechercher un résumé" + +msgid "Search Tickets" +msgstr "Rechercher des tickets" + +msgid "Search" +msgstr "Recherche" + +msgid "Select the view to display after login:" +msgstr "Sélectionnez la vue à afficher après l'identification" + +msgid "Select your preferred language:" +msgstr "Sélectionnez votre langue de travail :" + +msgid "Send Reminders" +msgstr "Envoyer des rappels" + +msgid "Send only for this list of ticket ids" +msgstr "Envoyer seulement pour cette liste d'identifiants de tickets" + +msgid "Set Priority" +msgstr "Affecter une priorité" + +msgid "Set State" +msgstr "Affecter un état" + +msgid "Set Ticket Attributes" +msgstr "Affecter un attribut au ticket" + +msgid "Set Ticket Priority" +msgstr "Affecter une priorité au ticket" + +msgid "Set Ticket State Succeeded" +msgstr "État du ticket mis à jour" + +msgid "Set your preferred display language." +msgstr "Affecter la langue utilisée pour l'affichage." + +msgid "Show \"(X Days Ago)\" in Date field of search results?" +msgstr "" +"Afficher « (Il y a n jours) » dans les champs de type date des résultats de " +"recherche ?" + +msgid "Show comments in chronological order, or most recent first?" +msgstr "" +"Afficher les commentaires par ordre chronologique, ou les plus récents en " +"premier ?" + +msgid "Show ticket IDs in the summary view?" +msgstr "Afficher les identifiants des tickets sur la vue du sommaire ?" + +msgid "Show tickets you have requested in the summary view?" +msgstr "Afficher les tickets demandés sur la vue du sommaire ?" + +msgid "Simple HTML Report" +msgstr "Rapport HTML simple" + +msgid "Some of Whups' configuration files are missing:" +msgstr "Il manque certains fichiers de configuration de WHUPS :" + +msgid "Someone has accepted responsibility for the ticket." +msgstr "Quelqu'un a accepté la responsabilité pour le ticket." + +msgid "Sort Direction" +msgstr "Direction du classement" + +#, c-format +msgid "Sort by %s" +msgstr "Classer par %s" + +msgid "State Category" +msgstr "Catégorie de l'état" + +msgid "State Description" +msgstr "Description de l'état" + +msgid "State Name" +msgstr "Nom de l'état" + +#, c-format +msgid "State changed to '%s' by %s on %s" +msgstr "État modifié en « %s » par %s sur %s" + +msgid "State" +msgstr "État" + +msgid "States for this Type" +msgstr "États pour ce type" + +msgid "Subject Name" +msgstr "Nom du sujet" + +msgid "Subject" +msgstr "Sujet" + +msgid "Subjects associated with this Queue" +msgstr "Sujets associés à ce module" + +msgid "Submit" +msgstr "Envoi" + +#, c-format +msgid "Successfully Cloned %s to %s." +msgstr "Duplication effective de %s vers %s." + +msgid "Summary" +msgstr "Résumé" + +msgid "Text Criteria" +msgstr "Critère textuel" + +msgid "Text" +msgstr "Texte" + +#, c-format +msgid "The attribute '%s' has been added to %s." +msgstr "L'attribut « %s » a été ajouté à %s." + +msgid "The attribute has been deleted." +msgstr "L'attribut a été supprimé." + +msgid "The attribute has been modified." +msgstr "L'attribut a été modifié." + +msgid "The attribute was not deleted." +msgstr "L'attribut n'a pas été supprimé." + +#, c-format +msgid "The queue '%s' has been created." +msgstr "Le queue « %s » a été créé." + +msgid "The queue has been deleted." +msgstr "Le queue a été supprimé." + +msgid "The queue has been modified." +msgstr "Le queue a été modifié." + +msgid "The queue was not deleted." +msgstr "Le queue n'a pas été supprimé." + +#, c-format +msgid "The priority '%s' has been added to %s." +msgstr "La priorité « %s » a été ajoutée à %s." + +msgid "The priority has been deleted." +msgstr "La priorité a été supprimée." + +msgid "The priority has been modified." +msgstr "La priorité a été modifiée." + +msgid "The priority was not deleted." +msgstr "La priorité n'a pas été supprimée." + +msgid "The requested template does not exist." +msgstr "Le modèle demandé n'existe pas." + +#, c-format +msgid "The state '%s' has been added to %s." +msgstr "L'état « %s » a été ajouté à %s." + +msgid "The state has been deleted." +msgstr "L'état a été supprimé." + +msgid "The state has been modified." +msgstr "L'état a été modifié." + +msgid "The state was not deleted." +msgstr "L'état n'a pas été supprimé." + +#, c-format +msgid "The subject '%s' has been added." +msgstr "Le sujet « %s » a été ajouté." + +msgid "The subject has been deleted." +msgstr "Le sujet a été supprimé." + +msgid "The subject has been modified." +msgstr "Le sujet a été modifié." + +msgid "The subject was not deleted." +msgstr "Le sujet n'a pas été supprimé." + +msgid "The ticket has been analyzed and accepted as valid." +msgstr "Le ticket a été analysé et validé." + +msgid "The ticket has been resolved." +msgstr "Le type a été résolu." + +msgid "The ticket is no longer valid for one reason or another." +msgstr "Le ticket n'est plus valide pour une raison quelconque." + +msgid "The ticket is very urgent." +msgstr "Le ticket est très urgent." + +msgid "The ticket was not deleted." +msgstr "Le ticket n'a pas été supprimé." + +#, c-format +msgid "The type '%s' has been modified." +msgstr "Le type « %s » a été modifié." + +msgid "The type has been deleted." +msgstr "Le type a été supprimé." + +msgid "The type was not deleted." +msgstr "Le type n'a pas été supprimé." + +#, c-format +msgid "The version '%s' has been added to %s." +msgstr "La version « %s » a été ajoutée à %s." + +msgid "The version has been deleted." +msgstr "La version a été supprimée." + +msgid "The version has been modified." +msgstr "La version a été modifiée." + +msgid "The version was not deleted." +msgstr "La version n'a pas été supprimée." + +msgid "There are no attribute types to edit" +msgstr "Aucun type d'attribut à éditer" + +msgid "There are no attributes defined for the current type" +msgstr "Il n'y a aucun attribut défini pour le type courant" + +msgid "There are no queues available." +msgstr "Il n'y a aucun queue disponible." + +msgid "There are no queues to edit" +msgstr "Aucun queue à éditer" + +msgid "There are no queues which you can create tickets in." +msgstr "Il n'y a aucun queues pour lequel vous pouvez créer un ticket." + +msgid "There are no queues which you can search." +msgstr "Il n'y a aucun queues dans lequel vous pouvez rechercher." + +msgid "There are no priorities to edit" +msgstr "Aucune priorité à éditer" + +msgid "There are no states to edit" +msgstr "Aucun état à éditer" + +msgid "There are no subjects to edit" +msgstr "Aucun sujet à éditer" + +msgid "" +"There are no ticket types associated with this module; until there are, you " +"cannot create any tickets in this module." +msgstr "" +"Il n'y a aucun type de ticket associé à ce module ; tant qu'il n'y en aura " +"pas, vous ne pourrez associer aucun ticket à ce module." + +msgid "There are no types to edit" +msgstr "Aucun type à éditer" + +msgid "There are no users responsible for this module." +msgstr "Aucun utilisateur n'est responsable de ce module." + +msgid "There are no users to which this ticket can be assigned." +msgstr "Il n'y a aucun utilisateur à qui ce ticket peut être assigne." + +msgid "There are no versions to edit" +msgstr "Aucune version à éditer" + +msgid "There is no data for this graph." +msgstr "Aucune donnée ne correspond à ce graphique." + +msgid "There is no data for this report." +msgstr "Aucune donnée ne correspond à ce rapport." + +#, c-format +msgid "There was an error adding '%s' to the responsible list for '%s': %s" +msgstr "" +"Une erreur s'est produite lors de l'ajout de « %s » à la liste des " +"responsables de « %s » : %s" + +#, c-format +msgid "There was an error adding the subject: %s." +msgstr "Une erreur s'est produite lors de l'ajout du sujet : %s." + +#, c-format +msgid "There was an error creating the attribute: %s." +msgstr "Une erreur s'est produite lors de la création de l'attribut : %s." + +#, c-format +msgid "There was an error creating the module: %s." +msgstr "Une erreur s'est produite lors de la création du module : %s." + +#, c-format +msgid "There was an error creating the priority: %s." +msgstr "Une erreur s'est produite lors de la création de la priorité : %s." + +#, c-format +msgid "There was an error creating the state: %s." +msgstr "Une erreur s'est produite lors de la création de l'état : %s." + +#, c-format +msgid "There was an error creating the version: %s." +msgstr "Une erreur s'est produite lors de la création de la version : %s." + +#, c-format +msgid "There was an error deleting the attribute: %s." +msgstr "Une erreur s'est produite lors de la suppression de l'attribut : %s." + +#, c-format +msgid "There was an error deleting the module: %s." +msgstr "Une erreur s'est produite lors de la suppression du module : %s." + +#, c-format +msgid "There was an error deleting the priority: %s." +msgstr "Une erreur s'est produite lors de la suppression de la priorité : %s." + +#, c-format +msgid "There was an error deleting the state: %s." +msgstr "Une erreur s'est produite lors de la suppression de l'état : %s." + +#, c-format +msgid "There was an error deleting the subject: %s." +msgstr "Une erreur s'est produite lors de la suppression du sujet : %s." + +#, c-format +msgid "There was an error deleting the ticket: %s" +msgstr "Une erreur s'est produite lors de la suppression du ticket : %s." + +#, c-format +msgid "There was an error deleting the type: %s." +msgstr "Une erreur s'est produite lors de la suppression du type : %s." + +#, c-format +msgid "There was an error deleting the version: %s." +msgstr "Une erreur s'est produite lors de la suppression de la version : %s." + +#, c-format +msgid "There was an error editing the attribute: %s." +msgstr "Une erreur s'est produite lors de l'édition de l'attribut : %s." + +#, c-format +msgid "There was an error editing the module: %s." +msgstr "Une erreur s'est produite lors de l'édition du module : %s." + +#, c-format +msgid "There was an error editing the priority: %s." +msgstr "Une erreur s'est produite lors de l'édition de la priorité : %s." + +#, c-format +msgid "There was an error editing the state: %s." +msgstr "Une erreur s'est produite lors de l'édition de l'état : %s." + +#, c-format +msgid "There was an error editing the subject: %s." +msgstr "Une erreur s'est produite lors de l'édition du sujet : %s." + +#, c-format +msgid "There was an error editing the version: %s." +msgstr "Une erreur s'est produite lors de l'édition de la version : %s." + +#, c-format +msgid "There was an error listing your assigned tickets: %s" +msgstr "" +"Une erreur s'est produite lors de la récupération des tickets qui vous sont " +"assignés : %s." + +#, c-format +msgid "There was an error listing your open requests: %s" +msgstr "Une erreur s'est produite en listant vos requêtes ouvertes : %s" + +#, c-format +msgid "There was an error modifying the type: %s." +msgstr "Une erreur s'est produite lors de la modification du type : %s." + +#, c-format +msgid "There was an error performing your search: %s" +msgstr "Une erreur s'est produite lors de votre recherche : %s" + +#, c-format +msgid "There was an error removing '%s' from the responsible list for '%s': %s" +msgstr "" +"Une erreur s'est produite lors du retrait de « %s » de la liste des " +"responsables de « %s » : %s." + +msgid "" +"This file controls the default preferences for Whups, and also controls " +"which preferences users can alter." +msgstr "" +"Ce fichier contrôle les préférences de Whups, ainsi que les préférences " +"modifiables par les utilisateurs." + +msgid "" +"This file controls the stylesheet that is used to set colors and fonts in " +"addition to or overriding Horde defaults." +msgstr "" +"Ce fichier contrôle la feuille de style utilisée pour positionner les " +"couleurs et les polices supplémentaires ou en remplacement des défauts de " +"Horde." + +msgid "" +"This file defines the templates that various parts of Whups use to format " +"data." +msgstr "" +"Ce fichier définit les gabarits de mise en forme des données utilisables par " +"Whups à différents endroits." + +msgid "This is a very low priority ticket." +msgstr "Ceci est ticket de très faible priorité." + +msgid "This is an important task, but not urgent." +msgstr "Ceci est une tâche importante, mais non urgente." + +msgid "This is not a search results template." +msgstr "Il n'y pas de gabarit de résultat de recherche." + +msgid "This is not a valid subject." +msgstr "Sujet invalide." + +msgid "" +"This is the main Whups configuration file. It contains paths and options for " +"all Whups scripts." +msgstr "" +"C'est le fichier de configuration principal de WHUPS. Il contient les " +"chemins et les options de tous les scripts de WHUPS." + +#, c-format +msgid "This mail was automatically generated by %s" +msgstr "Ce courrier a été généré automatiquement par %s" + +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this module, you will not " +"be able to create tickets." +msgstr "" +"Ce queue nécessite que vous spécifiez une version, mais aucune version n'est " +"associée avec lui. Tant qu'il n'y aura pas de versions créées pour ce " +"module, vous ne pourrez pas créer de ticket." + +msgid "Ticket #" +msgstr "Ticket N°" + +#, c-format +msgid "Ticket %s Comments" +msgstr "Commentaires sur le ticket %s" + +#, c-format +msgid "Ticket %s Details" +msgstr "Détails du ticket %s" + +#, c-format +msgid "Ticket %s has been assigned" +msgstr "Le ticket %s a été affecté" + +#, c-format +msgid "Ticket %s has changed priority" +msgstr "La priorité du ticket %s a été modifiée" + +#, c-format +msgid "Ticket %s has changed state" +msgstr "L'état du ticket %s a été modifié" + +#, c-format +msgid "Ticket %s was not found." +msgstr "Le ticket %s n'a pas été trouvé." + +msgid "Ticket Details" +msgstr "Détails du ticket" + +msgid "Ticket ID" +msgstr "Id. du ticket" + +msgid "Ticket State" +msgstr "État du ticket" + +msgid "Ticket Stats" +msgstr "État du ticket" + +msgid "Ticket Summary" +msgstr "Résumé du ticket" + +msgid "Ticket Type" +msgstr "Type de ticket" + +msgid "Ticket Types associated with this Queue" +msgstr "Types de ticket associés à ce module" + +msgid "Tickets assigned to you" +msgstr "Les tickets à votre charge" + +msgid "Tickets which are" +msgstr "Ticket qui sont" + +msgid "Tickets you requested" +msgstr "Les tickets que vous avez demandé" + +msgid "Type Description" +msgstr "Description du type" + +msgid "Type Name" +msgstr "Nom du type" + +msgid "Type" +msgstr "Type" + +msgid "Types" +msgstr "Types" + +msgid "Unassigned tickets" +msgstr "Ticket non assigné" + +msgid "Unassigned" +msgstr "Non affecté" + +msgid "Unconfirmed" +msgstr "Non confirmé" + +#, c-format +msgid "Unknown node type %s" +msgstr "Type de nœud %s inconnu" + +msgid "Update Associations" +msgstr "Mettre à jour les associations" + +msgid "User Criteria" +msgstr "Critère utilisateur" + +msgid "User ID" +msgstr "ID Utilisateur" + +msgid "User Options" +msgstr "Options utilisateur" + +msgid "User" +msgstr "Utilisateur" + +msgid "Users responsible for this Queue" +msgstr "Utilisateurs responsables de ce module" + +msgid "Users responsible for this module" +msgstr "Utilisateurs responsables de ce module" + +msgid "Version Description" +msgstr "Description de la version" + +msgid "Version Name" +msgstr "Nom de la version" + +msgid "Version" +msgstr "Version" + +msgid "View Graphs" +msgstr "Voir les graphiques" + +msgid "Viewable only by members of" +msgstr "Consultable uniquement par les membres de" + +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "Jour ouvrable Jour Mois HH:MM:SS FH" + +msgid "Weekday Day Month" +msgstr "Jour ouvrable Jour Mois" + +msgid "Whups is not properly configured" +msgstr "WHUPS n'est pas configuré correctement" + +msgid "Yes" +msgstr "Oui" + +#, c-format +msgid "You do not have permission to access this ticket (%s)." +msgstr "Vous n'avez pas la permission d'accéder ce ticket (%s)." + +msgid "You have no saved queries." +msgstr "Vous n'avez aucune requête sauvegardée." + +msgid "You must select at least one queue to send reminders for." +msgstr "" +"Vous devez sélectionner au moins un queue pour lequel envoyer des rappels." + +msgid "Your Email Address" +msgstr "Votre adresse électronique" + +msgid "Your Information" +msgstr "Vos données" + +#, c-format +msgid "Your ticket id is %s. " +msgstr "L'identifiant de votre ticket est %s." + +msgid "contains (case insensitive) substring" +msgstr "contient une sous-chaîne (non sensible à la casse)" + +msgid "contains (case sensitive) substring" +msgstr "contient une sous-chaîne (sensible à la casse)" + +msgid "contains the word" +msgstr "contient le mot" + +msgid "is greater than" +msgstr "est supérieur à" + +msgid "is less than" +msgstr "est inférieur à" + +msgid "is" +msgstr "est" + +msgid "matches the pattern" +msgstr "correspond au motif" diff --git a/whups/po/it_IT.po b/whups/po/it_IT.po new file mode 100644 index 000000000..74be01c6c --- /dev/null +++ b/whups/po/it_IT.po @@ -0,0 +1,2286 @@ +# Italian translations for Whups package. +# Copyright 2008-2009 The Horde Project +# This file is distributed under the same license as the Whups package. +# Fabio Pedretti , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: Whups 1.0-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-06-16 15:57+0200\n" +"PO-Revision-Date: 2008-06-23 17:43+0200\n" +"Last-Translator: Fabio Pedretti \n" +"Language-Team: Italian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/index.php:745 +#, php-format +msgid "\"%s\" is no longer among those responsible for \"%s\"" +msgstr "\"%s\" non è più tra i responsabili di \"%s\"" + +#: templates/menu.inc:5 +msgid "#Id" +msgstr "#Id" + +#: templates/ticket/watchers.inc:3 +#, php-format +msgid "%d people watching, %d people responsible" +msgstr "%d persone stanno guardando, %d persone sono responsabili" + +#: queue/rss.php:96 +#, php-format +msgid "%s %s tickets in %s" +msgstr "%s %s ticket in %s" + +#: queue/rss.php:100 +#, php-format +msgid "%s %s tickets in all queues" +msgstr "%s %s ticket in tutte le code" + +#: lib/Renderer/Comment.php:119 +#, php-format +msgid "%s ⇒ %s" +msgstr "%s ⇒ %s" + +#: lib/Driver.php:480 +#, php-format +msgid "%s (%s) wrote:" +msgstr "%s (%s) ha scritto:" + +#: admin/index.php:700 +#, php-format +msgid "%s added to those responsible for \"%s\"" +msgstr "%s aggiunto tra i responsabili di \"%s\"" + +#: templates/reports/stats.inc:17 +#, php-format +msgid "%s days" +msgstr "%s giorni" + +#: queue/rss.php:104 +#, php-format +msgid "%s tickets in %s" +msgstr "%s ticket in %s" + +#: queue/rss.php:108 +#, php-format +msgid "%s tickets in all queues" +msgstr "%s ticket in tutte le code" + +#: ticket/watch.php:59 +#, php-format +msgid "%s will be notified when this ticket is updated." +msgstr "%s sarà avvisato quando questo ticket sarà aggiornato." + +#: ticket/watch.php:71 +#, php-format +msgid "%s will no longer receive updates for this ticket." +msgstr "%s non riceverà a lungo aggiornamento per questo ticket." + +#: admin/index.php:109 +msgid "- Stage 1" +msgstr "- Fase 1" + +#: admin/index.php:114 +msgid "- Stage 2" +msgstr "- Fase 2" + +#: scripts/mail-filter.php:172 +msgid "--queue-name or --queue-id must specify a valid and public queue." +msgstr "--queue-name o --queue-id deve specificare una coda valida e pubblica." + +#: templates/prevnext.inc:16 +msgid "<>" +msgstr "Ultimo>>" + +#: lib/Forms/Query.php:340 +msgid "Load Query" +msgstr "Carica Richiesta" + +#: lib/Forms/VarRenderer.php:46 +msgid "Loading..." +msgstr "Caricamento..." + +#: config/prefs.php.dist:106 +msgid "MM/DD/YY" +msgstr "MM/GG/AA" + +#: config/prefs.php.dist:107 +msgid "MM/DD/YY HH:MM:SS" +msgstr "MM/GG/AA OO:MM:SS" + +#: lib/Forms/Admin/Type.php:145 +#, php-format +msgid "Make a clone of %s" +msgstr "Fai una copia di %s" + +#: lib/Forms/Query.php:270 +msgid "Match" +msgstr "Abbina" + +#: lib/Forms/Query.php:43 lib/Forms/Query.php:129 lib/Forms/Query.php:271 +msgid "Match Operator" +msgstr "Abbina Operatore" + +#: lib/Query.php:54 +msgid "Match Pattern" +msgstr "Abbina modello" + +#: lib/Query.php:53 +msgid "Match Word" +msgstr "Abbina Parola" + +#: lib/Reports.php:20 +msgid "Maximum time a ticket is unresolved" +msgstr "Tempo massimo, un ticket non è risolto" + +#: lib/Block/tree_menu.php:3 +msgid "Menu List" +msgstr "Lista Menu" + +#: lib/Reports.php:21 +msgid "Minimum time a ticket is unresolved" +msgstr "Tempo Minimo, un ticket non è risolto" + +#: config/prefs.php.dist:146 +msgid "Most recent first" +msgstr "Più recente prima" + +#: templates/prefs/sourceselect.inc:312 +msgid "Move down" +msgstr "Sposta giù" + +#: templates/prefs/sourceselect.inc:310 +msgid "Move up" +msgstr "Sposta su" + +#: ticket/queue.php:180 +#, php-format +msgid "Moved ticket %d to \"%s\"" +msgstr "Ticket %d mosso in \"%s\"" + +#: mybugs.php:54 +#, php-format +msgid "My %s" +msgstr "Mio %s" + +#: mybugs_edit.php:33 +#, php-format +msgid "My %s :: Add Content" +msgstr "Mio %s:: Aggiungi Contenuto" + +#: search.php:106 lib/Block/myqueries.php:3 lib/Block/myqueries.php:24 +msgid "My Queries" +msgstr "Mie Richieste" + +#: lib/Block/myrequests.php:3 lib/Block/myrequests.php:24 +msgid "My Requests" +msgstr "Mie Richieste" + +#: lib/Block/mytickets.php:3 lib/Block/mytickets.php:24 +#: config/prefs.php.dist:75 +msgid "My Tickets" +msgstr "Miei Ticket" + +#: lib/api.php:967 +msgid "My tickets by assignment date" +msgstr "Miei ticket per data di assegnazione" + +#: lib/api.php:966 +msgid "My tickets by creation date" +msgstr "Miei ticket per data di creazione" + +#: lib/api.php:968 +msgid "My tickets by due date" +msgstr "Miei ticket per data di scadenza" + +#: lib/api.php:969 +msgid "My tickets by resolution date" +msgstr "Mie ticket per data di risoluzione" + +#: lib/Forms/Query.php:319 lib/Forms/Query.php:351 +msgid "Name" +msgstr "Nome" + +#: lib/Forms/Admin/Type.php:150 +msgid "Name of the cloned copy" +msgstr "Nome della copia" + +#: lib/Query.php:184 +msgid "Ne_w Query" +msgstr "_Nuova Richiesta" + +#: lib/Driver.php:197 +msgid "New" +msgstr "Nuovo" + +#: lib/Ticket.php:618 lib/Ticket.php:711 +msgid "New Attachment" +msgstr "Nuovo Allegato" + +#: lib/Renderer/Comment.php:57 lib/Renderer/Comment.php:61 +#, php-format +msgid "New Attachment: %s" +msgstr "Nuovo Allegato: %s" + +#: ticket/queue.php:31 +msgid "New Queue" +msgstr "Nuova Coda" + +#: ticket/create.php:66 lib/Block/tree_menu.php:21 +msgid "New Ticket" +msgstr "Nuovo Ticket" + +#: ticket/type.php:30 +msgid "New Type" +msgstr "Nuovo Tipo" + +#: templates/prevnext.inc:26 +msgid "Next>" +msgstr "Prossimo>" + +#: ticket/delete.php:32 lib/Forms/Query.php:378 +#: lib/Forms/Admin/Attribute.php:149 lib/Forms/Admin/Priority.php:121 +#: lib/Forms/Admin/Queue.php:174 lib/Forms/Admin/State.php:121 +#: lib/Forms/Admin/Type.php:131 lib/Forms/Admin/Version.php:96 +msgid "No" +msgstr "No" + +#: lib/Ticket.php:100 +#, php-format +msgid "" +"No priority for this ticket and no default priority for ticket type \"%s\" " +"specified." +msgstr "" +"Nessuna priorità per questo ticket e nessuna priorità di default per il tipo " +"di ticket \"%s\" specificato." + +#: lib/Block/myqueries.php:46 +msgid "No queries have been saved." +msgstr "Non è stata salvata nessuna richiesta." + +#: lib/Driver/sql.php:514 lib/Block/query.php:64 +msgid "No query to run" +msgstr "Nessuna richiesta da caricare" + +#: lib/Block/queuecontents.php:25 +msgid "No queues available." +msgstr "Nessuna coda disponibile." + +#: lib/Ticket.php:92 +#, php-format +msgid "" +"No state for this ticket and no default state for ticket type \"%s\" " +"specified." +msgstr "" +"Nessuno stato per questo ticket e nessuno stato di deafult per il tipo di " +"ticket \"%s\" specificato." + +#: reports.php:19 +msgid "No stats available." +msgstr "Statistiche non disponibili." + +#: lib/Driver.php:516 +#, php-format +msgid "No such backend \"%s\" found" +msgstr "Nessun backend \"%s\" trovato" + +#: lib/View.php:33 +#, php-format +msgid "No such view \"%s\" found" +msgstr "Non abbastanza viste \"%s\" trovate" + +#: lib/Block/mytickets.php:45 +msgid "No tickets are assigned to you." +msgstr "Non hai assegnato nessun ticket" + +#: lib/Block/unassigned.php:45 +msgid "No tickets are unassigned!" +msgstr "Nessun ticket assegnato!" + +#: lib/Block/queuecontents.php:62 lib/Block/queuecontents.php:73 +msgid "No tickets in queue." +msgstr "Nessun ticket in coda." + +#: lib/Whups.php:671 +msgid "No tickets matched your search criteria." +msgstr "Nessun ticket abbinato ai criteri di ricerca." + +#: lib/Ticket.php:84 +#, php-format +msgid "No type for this ticket and no default type for queue \"%s\" specified." +msgstr "" +"Nessun tipo per questo ticket e nessun tipo predefinito per la coda \"%s\" " +"specificata." + +#: templates/prefs/sourceselect.inc:35 lib/Reports.php:88 +msgid "None" +msgstr "Nessuno" + +#: lib/Renderer/Query.php:79 lib/Forms/Query.php:23 +msgid "Not" +msgstr "Not" + +#: query.php:80 +msgid "Not yet implemented." +msgstr "Non ancora implementato" + +#: config/prefs.php.dist:17 +msgid "Notification Options" +msgstr "Opzioni di Notifica" + +#: config/prefs.php.dist:117 +msgid "Only notify me of ticket changes from other users?" +msgstr "Avvisa solo per cambiamenti di ticket fatti da altri utenti?" + +#: config/prefs.php.dist:126 +msgid "Only notify me of ticket changes with comments?" +msgstr "Avvisa solo per cambiamenti di ticket con commento" + +#: queue/rss.php:43 +msgid "Open" +msgstr "Apri" + +#: lib/Block/queuesummary.php:49 +msgid "Open Tickets" +msgstr "Apri Ticket" + +#: lib/Reports.php:11 +msgid "Open Tickets by Owner" +msgstr "Apri Ticket dal Proprietario" + +#: lib/Reports.php:9 +msgid "Open Tickets by Priority" +msgstr "Aori Ticket dalla priorità" + +#: lib/Reports.php:6 +msgid "Open Tickets by Queue" +msgstr "Apri Ticket dalla Coda" + +#: lib/Reports.php:10 +msgid "Open Tickets by Requester" +msgstr "Apri Ticket dalla Richiesta" + +#: lib/Reports.php:7 +msgid "Open Tickets by State" +msgstr "Apri Ticket dallo Stato" + +#: lib/Reports.php:8 +msgid "Open Tickets by Type" +msgstr "Apri Ticket dal Tipo" + +#: lib/Block/queuecontents.php:47 +#, php-format +msgid "Open Tickets in %s" +msgstr "Apri Ticket in %s" + +#: queue/index.php:43 queue/index.php:57 queue/rss.php:119 +#, php-format +msgid "Open tickets in %s" +msgstr "Apri ticket in %s" + +#: queue/rss.php:121 +msgid "Open tickets in all queues." +msgstr "Apri ticket in tutte le code" + +#: lib/Renderer/Query.php:78 lib/Forms/Query.php:22 +msgid "Or" +msgstr "O" + +#: lib/Ticket.php:617 lib/Ticket.php:701 lib/Ticket.php:702 lib/Ticket.php:705 +#: lib/Ticket.php:812 lib/Ticket.php:833 lib/Ticket.php:958 lib/Whups.php:636 +#: lib/Renderer/Query.php:84 lib/Forms/CreateTicket.php:224 +#: lib/Forms/CreateTicket.php:242 lib/Forms/EditTicket.php:104 +msgid "Owners" +msgstr "Proprietari" + +#: lib/Whups.php:821 +#, php-format +msgid "Permanently delete %s?" +msgstr "Cancella definitivamente %s?" + +#: ticket/delete.php:50 ticket/deleteAttachment.php:20 ticket/queue.php:130 +#: ticket/type.php:73 ticket/update.php:21 +msgid "Permission Denied" +msgstr "Permesso Negato" + +#: ticket/delete.php:39 lib/Forms/EditTicket.php:173 +msgid "Permission Denied." +msgstr "Permesso Negato." + +#: query.php:32 runquery.php:37 lib/Forms/Query.php:388 +#, php-format +msgid "Permission denied." +msgstr "Permesso Negato" + +#: lib/Imple/ContactAutoCompleter.php:227 +msgid "Please resolve ambiguous or invalid addresses." +msgstr "Correggi gli indirizzi ambigui o non validi." + +#: lib/Forms/Admin/Type.php:82 lib/Forms/Admin/Type.php:128 +msgid "Priorities for this Type" +msgstr "Priorità per questo Tipo" + +#: ticket/queue.php:116 ticket/type.php:65 lib/Ticket.php:610 +#: lib/Ticket.php:807 lib/Ticket.php:953 lib/Whups.php:624 lib/Whups.php:633 +#: lib/Renderer/Query.php:125 lib/Forms/CreateTicket.php:146 +#: lib/Forms/EditTicket.php:68 lib/Forms/Query.php:197 +#: config/prefs.php.dist:49 +msgid "Priority" +msgstr "Priotità" + +#: lib/Renderer/Comment.php:114 +#, php-format +msgid "Priority ⇒ %s" +msgstr "Priorità ⇒ %s" + +#: lib/Forms/Admin/Priority.php:24 lib/Forms/Admin/Priority.php:70 +#: lib/Forms/Admin/Priority.php:118 +msgid "Priority Description" +msgstr "Descrizione Priorità" + +#: lib/Forms/Admin/Priority.php:23 lib/Forms/Admin/Priority.php:48 +#: lib/Forms/Admin/Priority.php:67 lib/Forms/Admin/Priority.php:94 +#: lib/Forms/Admin/Priority.php:115 +msgid "Priority Name" +msgstr "Nome Priorità" + +#: search.php:106 +msgid "Public Queries" +msgstr "Richieste Pubbliche" + +#: query.php:156 +msgid "Query Builder" +msgstr "Costruttore di richieste" + +#: lib/Forms/QueryParameterForm.php:20 +msgid "Query Parameters" +msgstr "Parametri di Richiesta" + +#: runquery.php:72 lib/Block/query.php:3 lib/Block/query.php:51 +msgid "Query Results" +msgstr "Risultati Richiesta" + +#: lib/Block/query.php:33 +msgid "Query to run" +msgstr "Richieste da caricare" + +#: lib/Ticket.php:606 lib/Ticket.php:803 lib/Ticket.php:918 lib/Ticket.php:923 +#: lib/Whups.php:634 lib/Renderer/Query.php:94 lib/Forms/Query.php:180 +#: lib/Forms/Search.php:36 lib/Block/queuecontents.php:32 +#: lib/Block/queuesummary.php:49 config/prefs.php.dist:50 +msgid "Queue" +msgstr "Coda" + +#: lib/Renderer/Comment.php:99 +#, php-format +msgid "Queue ⇒ %s" +msgstr "Coda ⇒ %s" + +#: lib/Block/queuecontents.php:3 lib/Block/queuecontents.php:49 +msgid "Queue Contents" +msgstr "Contenuto Coda" + +#: lib/Forms/Admin/Queue.php:24 lib/Forms/Admin/Queue.php:89 +#: lib/Forms/Admin/Queue.php:170 +msgid "Queue Description" +msgstr "Descrizione Coda" + +#: lib/Forms/Admin/Queue.php:30 lib/Forms/Admin/Queue.php:97 +msgid "Queue Email" +msgstr "Coda Email" + +#: lib/Forms/CreateTicket.php:33 lib/Forms/CreateTicket.php:44 +#: lib/Forms/Admin/Queue.php:23 lib/Forms/Admin/Queue.php:60 +#: lib/Forms/Admin/Queue.php:85 lib/Forms/Admin/Queue.php:166 +msgid "Queue Name" +msgstr "Nome Coda" + +#: lib/Forms/Admin/Queue.php:26 lib/Forms/Admin/Queue.php:93 +msgid "Queue Slug" +msgstr "Slug Coda" + +#: lib/Block/queuesummary.php:3 lib/Block/queuesummary.php:24 +msgid "Queue Summary" +msgstr "Riassunto Coda" + +#: ticket/queue.php:85 lib/Ticket.php:932 lib/Ticket.php:938 +#: lib/Forms/CreateTicket.php:92 +msgid "Queue Version" +msgstr "Versione Coda" + +#: admin/index.php:35 +msgid "Queue/Type Matri_x" +msgstr "Coda/Tipo _Matrice" + +#: templates/admin/mtmatrix.inc:6 +msgid "Queue/Type Matrix" +msgstr "Coda/Tipo Matrice" + +#: lib/api.php:175 lib/api.php:887 +msgid "Queues" +msgstr "Code" + +#: templates/prevnext.inc:32 +msgid "Re_turn to Search Results" +msgstr "_Ritorna ai Risultati di Ricerca" + +#: lib/Forms/Admin/Attribute.php:147 +msgid "Really delete this attribute? This may cause data problems!" +msgstr "" +"Sicuro di voler eliminare questo attributo? Questo potrebbe causare problemi " +"nei dati!" + +#: lib/Forms/Admin/Priority.php:122 +msgid "Really delete this priority? This may cause data problems!" +msgstr "" +"Sicuro di voler eliminare questa priorità? Questo potrebbe causare problemi " +"nei dati!" + +#: lib/Forms/Query.php:379 +msgid "Really delete this query? This operation is not undoable." +msgstr "" +"Sicuro di voler eliminare questa richiesta? L'operazione non può essere " +"annullata." + +#: lib/Forms/Admin/Queue.php:176 +msgid "Really delete this queue? This may cause data problems!" +msgstr "" +"Sicuro di voler eliminare questa coda? Questo potrebbe causare problemi nei " +"dati!" + +#: lib/Forms/Admin/State.php:122 +msgid "Really delete this state? This may cause data problems!" +msgstr "" +"Sicuro di voler eliminare questo stato? Questo potrebbe causare problemi nei " +"dati!" + +#: ticket/delete.php:33 +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "" +"Sicuro di voler eliminare questo ticket? L'ticket NON sarà archiviato e sarà " +"perso." + +#: lib/Forms/Admin/Type.php:132 +msgid "Really delete this type? This may cause data problems!" +msgstr "" +"Sicuro di voler eliminare questo tipo? Questo potrebbe causare problemi nei " +"dati!" + +#: lib/Forms/Admin/Version.php:97 +msgid "Really delete this version? This may cause data problems!" +msgstr "" +"Sicuro di voler eliminare questa versione? Questo potrebbe causare problemi " +"nei dati!" + +#: lib/Mail.php:217 +msgid "Received message:" +msgstr "Messaggi ricevuti" + +#: search.php:87 +msgid "Refine Search" +msgstr "Raffina Ricerca" + +#: admin/index.php:1039 +msgid "Reminders were sent." +msgstr "Ricorda dove spedito." + +#: lib/Forms/Admin/User.php:59 +msgid "Remove User" +msgstr "Elimina Utente" + +#: ticket/watch.php:48 +msgid "Remove Watcher" +msgstr "Elimina Spettatore" + +#: templates/prefs/sourceselect.inc:300 +msgid "Remove source" +msgstr "Elimina la sorgente" + +#: lib/Renderer/Comment.php:94 +msgid "Reply to this comment" +msgstr "Rispondi a questo commento" + +#: reports.php:24 +msgid "Reports" +msgstr "Rapporti" + +#: lib/Ticket.php:965 lib/Whups.php:635 lib/Renderer/Query.php:86 +msgid "Requester" +msgstr "Richiedente" + +#: lib/Forms/Admin/Attribute.php:28 lib/Forms/Admin/Attribute.php:99 +msgid "Required Attribute?" +msgstr "Attributo Richiesto?" + +#: lib/Driver.php:199 lib/Ticket.php:991 lib/Whups.php:640 lib/api.php:1010 +#: config/prefs.php.dist:54 +msgid "Resolved" +msgstr "Risolto" + +#: lib/Forms/Admin/User.php:61 +msgid "Responsible Users" +msgstr "Utente Responsabile" + +#: lib/Forms/EditTicket.php:143 +msgid "Restrict Comment to:" +msgstr "Restringi Commenti a:" + +#: lib/Whups.php:275 +msgid "S_et Queue" +msgstr "_Imposta Coda" + +#: lib/Query.php:202 +msgid "Sa_ve Query" +msgstr "Sal_va Richiesta" + +#: templates/view/results.inc:36 lib/Forms/Query.php:317 +msgid "Save" +msgstr "Salva" + +#: lib/Forms/Query.php:316 +msgid "Save Query" +msgstr "Salva Richiesta" + +#: templates/view/results.inc:30 +msgid "Save these results as: " +msgstr "Salva questi risultati come:" + +#: search.php:55 lib/Block/tree_menu.php:30 +msgid "Search" +msgstr "Cerca" + +#: lib/Forms/Query.php:274 +#, php-format +msgid "Search %s Attribute" +msgstr "Cerca Attributo %s" + +#: lib/Forms/Query.php:277 +msgid "Search Attribute" +msgstr "Cerca Attributo" + +#: lib/Forms/Query.php:46 lib/Forms/Query.php:131 +msgid "Search Comments" +msgstr "Cerca Commenti" + +#: lib/Forms/Query.php:44 +msgid "Search Owners" +msgstr "Cerca Proprietari" + +#: lib/Forms/Query.php:45 +msgid "Search Requester" +msgstr "Cerca Richiedenti" + +#: search.php:79 +msgid "Search Results" +msgstr "Risultati Ricerca" + +#: templates/prevnext.inc:38 +#, php-format +msgid "Search Results: %s of %s" +msgstr "Risultati Ricerca: %s of %s" + +#: lib/Forms/Query.php:130 +msgid "Search Summary" +msgstr "Riassunto Ricerca" + +#: config/prefs.php.dist:76 +msgid "Search Tickets" +msgstr "Cerca ticket" + +#: config/prefs.php.dist:25 +msgid "Select address book sources for adding and searching for addresses." +msgstr "Seleziona le fonti della rubrica per aggiungere e cercare indirizzi." + +#: templates/prefs/sourceselect.inc:319 +msgid "Select all fields to search when expanding addresses." +msgstr "" +"Scegli l'ordine in cui ricercare le rubriche quando espandi gli indirizzi" + +#: config/prefs.php.dist:78 +msgid "Select the view to display after login:" +msgstr "Scegli la visualizzazione da mostrare dopo l'accesso:" + +#: templates/prefs/sourceselect.inc:303 templates/prefs/sourceselect.inc:305 +msgid "Selected Address books:" +msgstr "Rubriche Selezionate:" + +#: admin/index.php:36 +msgid "Sen_d Reminders" +msgstr "_Spedisci Promemoria" + +#: lib/Forms/Admin.php:23 +msgid "Send Reminders" +msgstr "Spedisci Promemoria" + +#: lib/Forms/Admin.php:34 +msgid "Send only for this list of ticket ids" +msgstr "Spedisci solo per questa lista di Id di ticket" + +#: lib/Forms/Admin/Priority.php:80 lib/Forms/Admin/Priority.php:82 +msgid "Set Default Priority" +msgstr "Imposta Priorità di Default" + +#: lib/Forms/Admin/State.php:80 lib/Forms/Admin/State.php:82 +msgid "Set Default State" +msgstr "Imposta Stato di Default" + +#: ticket/queue.php:200 ticket/queue.php:209 ticket/queue.php:221 +msgid "Set Queue - Step 1" +msgstr "Imposta Coda - Passo 1" + +#: ticket/queue.php:201 ticket/queue.php:210 +msgid "Set Queue - Step 2" +msgstr "Imposta Coda - Passo 2" + +#: ticket/queue.php:211 +msgid "Set Queue - Step 3" +msgstr "Imposta Coda - Passo 3" + +#: ticket/queue.php:188 +#, php-format +msgid "Set Queue for %s" +msgstr "Imposta Coda per %s" + +#: lib/api.php:906 +msgid "Set Requester" +msgstr "Imposta Richiedente" + +#: ticket/type.php:138 ticket/type.php:147 +msgid "Set Type - Step 1" +msgstr "Imposta Tipo - Passo 1" + +#: ticket/type.php:139 +msgid "Set Type - Step 2" +msgstr "Imposta Tipo - Passo 2" + +#: ticket/type.php:126 +#, php-format +msgid "Set Type for %s" +msgstr "Imposta Tipo per %s" + +#: lib/Whups.php:280 +msgid "Set _Type" +msgstr "Imposta _Tipo" + +#: config/prefs.php.dist:144 +msgid "Show comments in chronological order, or most recent first?" +msgstr "Mostra commenti in ordine cronologico, o prima il più recente?" + +#: config/prefs.php.dist:95 +msgid "Show ticket IDs in the summary view?" +msgstr "Mostra Id ticket nella vista del sommario?" + +#: config/prefs.php.dist:87 +msgid "Show tickets you have requested in the summary view?" +msgstr "Mostra ticket richiesti nella vista del sommario?" + +#: config/templates.php.dist:16 +msgid "Simple HTML Report" +msgstr "Semplice Rapporto HTML" + +#: lib/Forms/Admin/Queue.php:27 +#, php-format +msgid "" +"Slugs allows direct access to this queue's open tickets by visiting: %s. " +"
Slug names may contain only letters, numbers or the _ (underscore) " +"character." +msgstr "" +"Permetti l'accesso diretto alla coda aperta dagli ticket visitati: %s.
I nomi possono contenere solo lettere, numeri o il carattere _ " +"(underscore) " + +#: templates/view/results.inc:51 templates/view/results.inc:55 +#, php-format +msgid "Sort by %s" +msgstr "Ordina per %s" + +#: lib/Forms/AddComment.php:20 lib/Forms/AddComment.php:51 +#: lib/Forms/CreateTicket.php:135 lib/Forms/CreateTicket.php:174 +msgid "Spam protection" +msgstr "Protezione Spam" + +#: ticket/queue.php:115 ticket/type.php:64 lib/Ticket.php:609 +#: lib/Ticket.php:806 lib/Ticket.php:949 lib/Whups.php:625 lib/Whups.php:631 +#: lib/Renderer/Query.php:117 lib/Forms/EditTicket.php:62 +#: lib/Forms/Query.php:192 config/prefs.php.dist:47 +msgid "State" +msgstr "Stato" + +#: lib/Renderer/Comment.php:109 +#, php-format +msgid "State ⇒ %s" +msgstr "Stato ⇒ %s" + +#: lib/Forms/Admin/State.php:25 lib/Forms/Admin/State.php:70 +msgid "State Category" +msgstr "Stato Categoria" + +#: lib/Forms/Admin/State.php:24 lib/Forms/Admin/State.php:67 +#: lib/Forms/Admin/State.php:118 +msgid "State Description" +msgstr "Descrizione Stato" + +#: lib/Forms/Admin/State.php:23 lib/Forms/Admin/State.php:47 +#: lib/Forms/Admin/State.php:64 lib/Forms/Admin/State.php:96 +#: lib/Forms/Admin/State.php:115 +msgid "State Name" +msgstr "Nome Stato" + +#: lib/Forms/Admin/Type.php:72 lib/Forms/Admin/Type.php:124 +msgid "States for this Type" +msgstr "Stato per questo tipo" + +#: templates/ticket/watchers.inc:1 +msgid "Status" +msgstr "Stato" + +#: ticket/create.php:145 +msgid "Submit" +msgstr "Invio" + +#: admin/index.php:198 +#, php-format +msgid "Successfully Cloned %s to %s." +msgstr "Clonazione di %s in %s eseguita con successo" + +#: ticket/type.php:117 +msgid "Successfully changed ticket type." +msgstr "Camnio tipo di ticket eseguito con successo." + +#: ticket/delete.php:29 lib/Ticket.php:616 lib/Ticket.php:643 +#: lib/Ticket.php:646 lib/Ticket.php:650 lib/Ticket.php:812 lib/Ticket.php:821 +#: lib/Ticket.php:912 lib/Whups.php:623 lib/Whups.php:630 +#: lib/Renderer/Query.php:89 lib/Forms/CreateTicket.php:151 +#: lib/Forms/EditTicket.php:58 config/prefs.php.dist:46 +msgid "Summary" +msgstr "Breve Riassunto" + +#: lib/Renderer/Comment.php:50 +#, php-format +msgid "Summary ⇒ %s" +msgstr "Sommario ⇒ %s" + +#: lib/Forms/Search.php:39 +msgid "Summary like" +msgstr "Sommario tipo" + +#: lib/Renderer/Comment.php:78 +#, php-format +msgid "Taken from %s" +msgstr "Preso da %s" + +#: lib/Forms/Query.php:128 +msgid "Text" +msgstr "Testo" + +#: lib/Driver/sql.php:80 lib/Driver/sql.php:1230 +msgid "That queue slug is already taken. Please select another." +msgstr "Quella coda slug è già presa. Per favore sceglierne un'altra." + +#: lib/Forms/CreateTicket.php:128 +msgid "The Requester's Email Address" +msgstr "Indirizzo Email richiedente" + +#: view.php:55 lib/Ticket.php:439 lib/Ticket.php:487 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "" +"VFS backend necessita di essere configurato per abilitare l'upload di " +"allegati." + +#: admin/index.php:906 +#, php-format +msgid "The attribute \"%s\" has been added to %s." +msgstr "L'attributo \"%s\" è stato aggiunto a %s." + +#: admin/index.php:1005 +msgid "The attribute has been deleted." +msgstr "L'attributo è stato eliminato." + +#: admin/index.php:973 +msgid "The attribute has been modified." +msgstr "L'attributo è stato modificato." + +#: admin/index.php:1014 +msgid "The attribute was not deleted." +msgstr "L'attributo non è stato eliminato." + +#: admin/index.php:642 +msgid "The default priority has been set." +msgstr "La priorità di Default è stata impostata." + +#: admin/index.php:506 +msgid "The default state has been set." +msgstr "Lo stato di Default è stato impostato." + +#: admin/index.php:556 +#, php-format +msgid "The priority \"%s\" has been added to %s." +msgstr "La priorità \"%s\" è stata aggiunta a %s." + +#: admin/index.php:661 +msgid "The priority has been deleted." +msgstr "La priorità è stata eliminata." + +#: admin/index.php:609 +msgid "The priority has been modified." +msgstr "La priorità è stata modificata." + +#: admin/index.php:670 +msgid "The priority was not deleted." +msgstr "La priorità non era eliminata." + +#: lib/Forms/Query.php:392 +#, php-format +msgid "The query \"%s\" couldn't be deleted: %s" +msgstr "La richiesta \"%s\" non può essere elimata: %s" + +#: lib/Forms/Query.php:394 +#, php-format +msgid "The query \"%s\" has been deleted." +msgstr "La richiesta \"%s\" è stata eliminata." + +#: lib/Forms/Query.php:359 +#, php-format +msgid "The query couldn't be loaded:" +msgstr "La richiesta non può essere caricata:" + +#: admin/index.php:300 +#, php-format +msgid "The queue \"%s\" has been created." +msgstr "la coda \"%s\" è stata creata." + +#: admin/index.php:392 +msgid "The queue has been deleted." +msgstr "La coda è stata eliminata." + +#: admin/index.php:359 +msgid "The queue has been modified." +msgstr "La coda è stata eliminata." + +#: admin/index.php:400 +msgid "The queue was not deleted." +msgstr "La coda non è stata eliminata." + +#: lib/MIME/Viewer/zip.php:58 +msgid "The requested file does not exist in the Zip attachment." +msgstr "Il file richiesto non esiste nell'allegato zip." + +#: data.php:26 +msgid "The requested template does not exist." +msgstr "Il template richiesto non esiste." + +#: admin/index.php:422 +#, php-format +msgid "The state \"%s\" has been added to %s." +msgstr "Lo stato \"%s\" è stato aggiunto a %s." + +#: admin/index.php:525 +msgid "The state has been deleted." +msgstr "Lo stato è stato eliminato." + +#: admin/index.php:475 +msgid "The state has been modified." +msgstr "Lo stato è stato modificato." + +#: admin/index.php:533 +msgid "The state was not deleted." +msgstr "lo stato non è stato eliminato." + +#: ticket/delete.php:77 +msgid "The ticket was not deleted." +msgstr "L'ticket non è stato eliminato." + +#: admin/index.php:223 +#, php-format +msgid "The type \"%s\" has been modified." +msgstr "Il tipo \"%s\" è stato modificato." + +#: admin/index.php:272 +msgid "The type has been deleted." +msgstr "Il tipo è stato eliminato." + +#: admin/index.php:280 +msgid "The type was not deleted." +msgstr "Il tipo non è stato eliminato" + +#: admin/index.php:776 +#, php-format +msgid "The version \"%s\" has been added to %s." +msgstr "la versione \"%s\" è stata aggiunta a %s." + +#: admin/index.php:865 +msgid "The version has been deleted." +msgstr "La versione è stata eliminata." + +#: admin/index.php:835 +msgid "The version has been modified." +msgstr "La versione è stata modificata." + +#: admin/index.php:873 +msgid "The version was not deleted." +msgstr "la versione non è stata eliminata." + +#: lib/Forms/Admin/Attribute.php:70 +msgid "There are no attribute types to edit" +msgstr "Non ci sono tipi di attributi da modificare" + +#: lib/Forms/Query.php:277 +msgid "There are no attributes defined." +msgstr "Non ci sono attributi definiti." + +#: lib/Block/queuesummary.php:44 +msgid "There are no open tickets." +msgstr "Non ci sono ticket aperti." + +#: lib/Forms/Admin/Priority.php:44 lib/Forms/Admin/Priority.php:90 +msgid "There are no priorities to edit" +msgstr "Non ci sono priorità da modificare" + +#: lib/Forms/Admin.php:31 +msgid "There are no queues available." +msgstr "Non ci sono code disponibili." + +#: lib/Forms/Admin/Queue.php:57 +msgid "There are no queues to edit" +msgstr "Non ci sono code da modificare" + +#: lib/Forms/CreateTicket.php:34 +msgid "There are no queues which you can create tickets in." +msgstr "Non ci sono code nelle quali è possibile creare ticket." + +#: lib/Forms/Search.php:34 +msgid "There are no queues which you can search." +msgstr "Non ci sono code che puoi cercare." + +#: lib/Forms/Admin/State.php:43 lib/Forms/Admin/State.php:92 +msgid "There are no states to edit" +msgstr "Non ci sono stati da modificare" + +#: lib/Forms/CreateTicket.php:71 +msgid "" +"There are no ticket types associated with this queue; until there are, you " +"cannot create any tickets in this queue." +msgstr "" +"Non ci sono tipi di ticket associati con questa coda; fino a che non ci " +"saranno non si potrà creare nessun ticket in questa coda." + +#: lib/Forms/Admin/Type.php:43 +msgid "There are no types to edit" +msgstr "Non ci sono tipi da modificare." + +#: lib/Forms/Admin/User.php:75 +msgid "There are no users responsible for this queue." +msgstr "Non ci sono utenti responsabili per questa coda." + +#: lib/Forms/CreateTicket.php:241 +msgid "There are no users to which this ticket can be assigned." +msgstr "Non ci sono utenti ai quali può essere assegnato questo ticket." + +#: lib/Forms/Admin/Version.php:44 +msgid "There are no versions to edit" +msgstr "Non ci sono versioni da modificare" + +#: lib/Reports.php:161 +msgid "There is no data for this report." +msgstr "Non ci sono dati per questo rapporto." + +#: admin/index.php:705 +#, php-format +msgid "There was an error adding \"%s\" to the responsible list for \"%s\":" +msgstr "" +"Si è verificato un errore aggiungendo \"%s\" alla lista responsabile per \"%s" +"\":" + +#: admin/index.php:911 +msgid "There was an error creating the attribute:" +msgstr "Si è verificato un errore nella creazione dell'attributo:" + +#: admin/index.php:561 +msgid "There was an error creating the priority:" +msgstr "Si è verificato un errore nella creazione della priorità:" + +#: admin/index.php:309 +msgid "There was an error creating the queue:" +msgstr "Si è verificato un errore nella creazione della coda:" + +#: admin/index.php:426 +msgid "There was an error creating the state:" +msgstr "Si è verificato un errore nella creazione dello stato:" + +#: admin/index.php:780 +msgid "There was an error creating the version:" +msgstr "Si è verificato un errore nella creazione della versione:" + +#: admin/index.php:1009 +msgid "There was an error deleting the attribute:" +msgstr "Si è verificato un errore durante l'eliminazione dell'attributo:" + +#: admin/index.php:665 +msgid "There was an error deleting the priority:" +msgstr "Si è verificato un errore durante l'eliminazione della priorità:" + +#: admin/index.php:395 +msgid "There was an error deleting the queue:" +msgstr "Si è verificato un errore durante l'eliminazione della coda:" + +#: admin/index.php:528 +msgid "There was an error deleting the state:" +msgstr "Si è verificato un errore durante l'eliminazione dello stato:" + +#: ticket/delete.php:74 +#, php-format +msgid "There was an error deleting the ticket: %s" +msgstr "Si è verificato un errore durante l'eliminazione dell'ticket: %s" + +#: admin/index.php:275 +msgid "There was an error deleting the type:" +msgstr "Si è verificato un errore durante l'eliminazione del tipo:" + +#: admin/index.php:868 +msgid "There was an error deleting the version:" +msgstr "Si è verificato un errore durante l'eliminazione della versione:" + +#: admin/index.php:981 +msgid "There was an error editing the attribute:" +msgstr "Si è verificato un errore durante la modifica dell'attributo:" + +#: admin/index.php:615 +msgid "There was an error editing the priority:" +msgstr "Si è verificato un errore durante la modifica della priorità:" + +#: admin/index.php:375 +msgid "There was an error editing the queue:" +msgstr "Si è verificato un errore durante la modifica della coda:" + +#: admin/index.php:480 +msgid "There was an error editing the state:" +msgstr "Si è verificato un errore durante la modifica dello stato:" + +#: admin/index.php:841 +msgid "There was an error editing the version:" +msgstr "Si è verificato un errore durante la modifica della versione:" + +#: lib/Forms/Admin/User.php:35 +#, php-format +msgid "There was an error listing users: %s; %s" +msgstr "" +"Si è verificato un errore durante la catalogazione degli utenti: %s; %s" + +#: queue/index.php:52 +#, php-format +msgid "There was an error locating tickets in this queue: " +msgstr "" +"Si è verificato un errore durante la localizzazione degli ticket in questa " +"coda:" + +#: admin/index.php:219 +msgid "There was an error modifying the type:" +msgstr "Si è verificato un errore durante la modifica del tipo:" + +#: search.php:72 +#, php-format +msgid "There was an error performing your search: %s" +msgstr "Si è verificato un errore durante la ricerca: %s" + +#: admin/index.php:750 +#, php-format +msgid "" +"There was an error removing \"%s\" from the responsible list for \"%s\":" +msgstr "" +"Si è verificato un errore durante la rimozione di \"%s\" dalla lista dei " +"responsabili di \"%s\":" + +#: admin/index.php:638 +msgid "There was an error setting the default priority:" +msgstr "" +"Si è verificato un errore durante l'impostazione delle priorità di default:" + +#: admin/index.php:502 +msgid "There was an error setting the default state:" +msgstr "" +"Si è verificato un errore durante l'impostazione dello stato di default:" + +#: lib/Forms/Admin/Queue.php:31 +msgid "" +"This email address will be used when sending notifications for any queue " +"tickets." +msgstr "" +"Questo indirizzo email sarà usato per mandare notificazioni da qualsiasi " +"ticket della coda." + +#: data.php:29 +msgid "This is not a search results template." +msgstr "Questo non è un risultato di ricerca template." + +#: ticket/queue.php:80 lib/Forms/CreateTicket.php:87 +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this queue, you will not " +"be able to create tickets." +msgstr "" +"Questa coda richiede che venga specificata una versione, non c'è nessuna " +"versione associata con essa. Fino a che una versino non sarà creata per " +"questa coda, non sarà possibile creare ticket." + +#: lib/Ticket.php:638 lib/Ticket.php:820 +msgid "Ticket" +msgstr "Ticket" + +#: ticket/delete.php:70 +#, php-format +msgid "Ticket %d has been deleted." +msgstr "Ticket %d è stato eliminato." + +#: lib/api.php:938 +#, php-format +msgid "Ticket %s - %s" +msgstr "Ticket %s - %s" + +#: lib/Driver/sql.php:1005 +#, php-format +msgid "Ticket %s was not found." +msgstr "L'ticket %s non è stato trovato." + +#: search.php:98 +msgid "Ticket Search" +msgstr "Cerca ticket" + +#: lib/Forms/CreateTicket.php:141 +msgid "Ticket State" +msgstr "Stato ticket" + +#: templates/reports/stats.inc:3 +msgid "Ticket Stats" +msgstr "Statistiche ticket" + +#: lib/Forms/CreateTicket.php:79 +msgid "Ticket Type" +msgstr "Tipo ticket" + +#: lib/Forms/Admin/Queue.php:103 +msgid "Ticket Types associated with this Queue" +msgstr "Tipo ticket associato a questa coda" + +#: lib/Ticket.php:633 +#, php-format +msgid "Ticket URL: %s" +msgstr "URL ticket: %s" + +#: ticket/update.php:93 +msgid "Ticket Updated" +msgstr "Ticket aggiornato" + +#: lib/api.php:959 +msgid "Tickets" +msgstr "Ticket" + +#: templates/prefs/sourceselect.inc:322 +msgid "" +"To select multiple fields, hold down the Control (PC) or Command (Mac) while " +"clicking." +msgstr "" +"Per selezioni multiple, cliccare tenendo premuto CTRL (PC) o Command (Mac)." + +#: ticket/queue.php:88 lib/Ticket.php:608 lib/Ticket.php:805 +#: lib/Ticket.php:945 lib/Whups.php:632 lib/Renderer/Query.php:108 +#: lib/Forms/Query.php:173 config/prefs.php.dist:48 +msgid "Type" +msgstr "Tipo" + +#: lib/Renderer/Comment.php:104 +#, php-format +msgid "Type ⇒ %s" +msgstr "Tipo ⇒ %s" + +#: lib/Forms/Admin/Type.php:23 lib/Forms/Admin/Type.php:67 +#: lib/Forms/Admin/Type.php:120 +msgid "Type Description" +msgstr "Descrizione Tipo" + +#: lib/Forms/Admin/Type.php:22 lib/Forms/Admin/Type.php:46 +#: lib/Forms/Admin/Type.php:64 lib/Forms/Admin/Type.php:117 +msgid "Type Name" +msgstr "Nome Tipo" + +#: lib/Ticket.php:961 +msgid "Unassigned" +msgstr "Non assegnato" + +#: lib/Block/unassigned.php:3 lib/Block/unassigned.php:24 +msgid "Unassigned Tickets" +msgstr "Ticket non assegnati" + +#: lib/Forms/Admin.php:42 +msgid "Unassigned tickets" +msgstr "Ticket non assegnato" + +#: lib/Driver.php:196 +msgid "Unconfirmed" +msgstr "Non confermato" + +#: lib/Renderer/Query.php:141 lib/Renderer/Query.php:181 +#, php-format +msgid "Unknown node type %s" +msgstr "Tipo di nodo %s non conosciuto" + +#: lib/api.php:896 +msgid "Update" +msgstr "Aggiorna" + +#: ticket/update.php:107 +#, php-format +msgid "Update %s" +msgstr "Aggiorna %s" + +#: templates/admin/mtmatrix.inc:29 +msgid "Update Associations" +msgstr "Update associazioni" + +#: lib/Ticket.php:981 lib/Whups.php:638 +msgid "Updated" +msgstr "Updated" + +#: lib/Ticket.php:615 lib/Ticket.php:640 +msgid "Updated By" +msgstr "Updated da" + +#: lib/Forms/Admin/User.php:34 lib/Forms/Admin/User.php:44 +#: lib/Forms/Admin/User.php:47 +msgid "User" +msgstr "Utente" + +#: lib/Forms/Query.php:42 +msgid "User ID" +msgstr "Nome utente" + +#: lib/Forms/Admin/Queue.php:131 +msgid "Users responsible for this Queue" +msgstr "Utenti responsabili per questa coda" + +#: lib/Forms/Admin/User.php:79 +msgid "Users responsible for this queue" +msgstr "Utenti responsabili per questa coda." + +#: lib/Ticket.php:607 lib/Ticket.php:804 lib/Renderer/Query.php:102 +#: lib/Forms/Query.php:184 config/prefs.php.dist:51 +msgid "Version" +msgstr "Versione" + +#: lib/Forms/Admin/Version.php:24 lib/Forms/Admin/Version.php:70 +#: lib/Forms/Admin/Version.php:93 +msgid "Version Description" +msgstr "Descrizione Versione" + +#: lib/Forms/Admin/Version.php:23 lib/Forms/Admin/Version.php:48 +#: lib/Forms/Admin/Version.php:67 lib/Forms/Admin/Version.php:90 +msgid "Version Name" +msgstr "Nome Versione" + +#: ticket/queue.php:49 ticket/type.php:42 lib/Forms/AddComment.php:38 +msgid "Viewable only by members of" +msgstr "Visualizzabile solo dai membri di" + +#: lib/Forms/AddComment.php:25 +msgid "Watch this ticket" +msgstr "Guarda questo ticket" + +#: ticket/watch.php:77 +#, php-format +msgid "Watchers for %s" +msgstr "Spettatori per %s" + +#: config/prefs.php.dist:104 +msgid "Weekday Day Month" +msgstr "Giorno settimana Giorno Mese" + +#: config/prefs.php.dist:105 +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "Giorno settimana Giorno Mese OO:MM:SS TZ" + +#: ticket/delete.php:32 lib/Forms/Query.php:378 +#: lib/Forms/Admin/Attribute.php:149 lib/Forms/Admin/Priority.php:121 +#: lib/Forms/Admin/Queue.php:174 lib/Forms/Admin/State.php:121 +#: lib/Forms/Admin/Type.php:131 lib/Forms/Admin/Version.php:96 +msgid "Yes" +msgstr "Si" + +#: view.php:51 +#, php-format +msgid "You are not allowed to view ticket %d." +msgstr "Non sei autorizzato a vedere l'ticket %d." + +#: lib/Driver/sql.php:1014 +#, php-format +msgid "You do not have permission to access this ticket (%s)." +msgstr "Non hai permesso di accedere a questo ticket (%s)." + +#: lib/api.php:548 +msgid "You do not have permission to update this ticket." +msgstr "Non hai permesso di aggiornare questo ticket." + +#: lib/Block/myrequests.php:46 +msgid "You have no open requests." +msgstr "Non hai delle richieste aperte." + +#: lib/Forms/Query.php:348 lib/Block/query.php:28 +msgid "You have no saved queries." +msgstr "Non hai delle richieste salvate." + +#: lib/Whups.php:665 +msgid "You must select at least one queue to send reminders for." +msgstr "Devi selezionare come minimo una coda per mandare promemoria." + +#: lib/Forms/AddComment.php:18 lib/Forms/CreateTicket.php:131 +msgid "Your Email Address" +msgstr "Tuo Indirizzo Email" + +#: ticket/create.php:59 +#, php-format +msgid "" +"Your ticket ID is %s. An appropriate person has been notified of this " +"request." +msgstr "" +"Il tuo Id ticket è %s. Una persona appropriata è stata notificata di questa " +"richiesta." + +#: lib/Mail.php:244 +msgid "[ Could not render body of message. ]" +msgstr "[ Non è possibile aprire il corpo del messaggio. ]" + +#: lib/Whups.php:729 +msgid "_Admin" +msgstr "_Amministratore" + +#: lib/Whups.php:267 +msgid "_Comment" +msgstr "_Commento" + +#: lib/Whups.php:285 +msgid "_Delete" +msgstr "_Elimina" + +#: lib/Query.php:205 +msgid "_Delete Query" +msgstr "E_limina Richiesta" + +#: lib/Query.php:186 +msgid "_Edit Query" +msgstr "_Modifica Richiesta" + +#: admin/index.php:33 +msgid "_Edit Queues" +msgstr "_Modifica Code" + +#: templates/menu.inc:5 +msgid "_Go" +msgstr "V_ai a" + +#: query.php:140 +msgid "_Group Criteria" +msgstr "_Criterio Gruppo" + +#: lib/Whups.php:261 +msgid "_History" +msgstr "_Storia" + +#: lib/Query.php:199 +msgid "_Load Query" +msgstr "_Carica Richiesta" + +#: lib/Whups.php:720 +#, php-format +msgid "_My %s" +msgstr "_Mio %s" + +#: lib/Whups.php:723 +msgid "_New Ticket" +msgstr "_Nuovo Ticket" + +#: query.php:138 +msgid "_Property Criteria" +msgstr "_Proprietà criterio" + +#: lib/Whups.php:724 +msgid "_Query Builder" +msgstr "_Costruttore di Richieste" + +#: lib/Whups.php:725 +msgid "_Reports" +msgstr "_Rapporti" + +#: lib/Whups.php:722 +msgid "_Search" +msgstr "_Cerca" + +#: query.php:142 +msgid "_Text Criteria" +msgstr "Criterio di _Testo" + +#: lib/Whups.php:263 +msgid "_Update" +msgstr "_Aggiorna" + +#: query.php:139 +msgid "_User Criteria" +msgstr "Criterio _Utente" + +#: lib/Whups.php:271 +msgid "_Watch" +msgstr "_Guarda" + +#: lib/Renderer/Query.php:161 +msgid "contains (case insensitive) substring" +msgstr "contiene (case insensitive) sottostringhe" + +#: lib/Renderer/Query.php:165 +msgid "contains (case sensitive) substring" +msgstr "contiene (case sensitive) sottostringhe" + +#: lib/Renderer/Query.php:169 +msgid "contains the word" +msgstr "contiene la parola" + +#: lib/Mail.php:94 lib/Mail.php:118 lib/Mail.php:146 +msgid "current user:" +msgstr "utente corrente" + +#: lib/api.php:947 +msgid "estimated time" +msgstr "tempo stimato" + +#: lib/Renderer/Query.php:157 +msgid "is" +msgstr "è" + +#: lib/Renderer/Query.php:149 +msgid "is greater than" +msgstr "è più grande di" + +#: lib/Renderer/Query.php:153 +msgid "is less than" +msgstr "è meno di" + +#: lib/Renderer/Query.php:173 +msgid "matches the pattern" +msgstr "abbina il disegno" diff --git a/whups/po/lt_LT.po b/whups/po/lt_LT.po new file mode 100644 index 000000000..387c6207a --- /dev/null +++ b/whups/po/lt_LT.po @@ -0,0 +1,2006 @@ +# Lithuanian translations for Whups package. +# Copyright 2007-2009 The Horde Project +# This file is distributed under the same license as the Whups package. +# Vilius Sumskas , 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: Whups 1.0-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2007-11-23 16:44+0200\n" +"PO-Revision-Date: 2007-11-23 16:45+0200\n" +"Last-Translator: Vilius Sumskas \n" +"Language-Team: Lithuanian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-13\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%" +"100<10 || n%100>=20) ? 1 : 2);\n" + +#: admin/index.php:605 +#, php-format +msgid "\"%s\" is no longer among those responsible for \"%s\"" +msgstr "\"%s\" jau nebeatsakingas uþ \"%s\"" + +#: templates/menu.inc:5 +msgid "#Id" +msgstr "#Id" + +#: templates/ticket/watchers.inc:3 +#, php-format +msgid "%d people watching, %d people responsible" +msgstr "Stebi %d asmenø, %d asmenys yra atsakingi" + +#: lib/Driver.php:368 +#, php-format +msgid "%s (%s) wrote:" +msgstr "%s (%s) raðë:" + +#: admin/index.php:569 +#, php-format +msgid "%s added to those responsible for \"%s\"" +msgstr "%s nuo ðiol atsakingas uþ \"%s\"" + +#: templates/reports/stats.inc:17 +#, php-format +msgid "%s days" +msgstr "%s dienos" + +#: ticket/watch.php:58 +#, php-format +msgid "%s will be notified when this ticket is updated." +msgstr "%s gaus praneðimus apie bilieto atnaujinimà." + +#: ticket/watch.php:70 +#, php-format +msgid "%s will no longer receive updates for this ticket." +msgstr "%s daugiau nebegaus praneðimø apie bilieto atnaujinimà." + +#: admin/index.php:82 +msgid "- Stage 1" +msgstr "- 1 þingsnis" + +#: admin/index.php:87 +msgid "- Stage 2" +msgstr "- 2 þingnis" + +#: templates/prevnext.inc:12 +msgid "<>" +msgstr "Paskutinis>>" + +#: lib/Query.php:888 +msgid "Load Query" +msgstr "Uþkrauti uþklausà" + +#: config/prefs.php.dist:97 +msgid "MM/DD/YY" +msgstr "MM/DD/YY" + +#: config/prefs.php.dist:98 +msgid "MM/DD/YY HH:MM:SS" +msgstr "MM/DD/YY HH:MM:SS" + +#: lib/Forms/Admin.php:333 +#, php-format +msgid "Make a clone of %s" +msgstr "Kopijuoti %s" + +#: lib/Query.php:818 +msgid "Match" +msgstr "Atitinka" + +#: lib/Query.php:592 lib/Query.php:678 lib/Query.php:819 +msgid "Match Operator" +msgstr "Atitikimo operatorius" + +#: lib/Query.php:54 +msgid "Match Pattern" +msgstr "Atitinkanti forma" + +#: lib/Query.php:53 +msgid "Match Word" +msgstr "Atitinkantis þodis" + +#: lib/Reports.php:20 +msgid "Maximum time a ticket is unresolved" +msgstr "Maksimalus neiðspræsto bilieto laikas" + +#: lib/Block/tree_menu.php:3 +msgid "Menu List" +msgstr "Meniu sàraðas" + +#: lib/Reports.php:21 +msgid "Minimum time a ticket is unresolved" +msgstr "Minimalus neiðspræsto bilieto laikas" + +#: config/prefs.php.dist:128 +msgid "Most recent first" +msgstr "Ið pradþiø naujausi" + +#: ticket/queue.php:174 +#, php-format +msgid "Moved ticket %d to \"%s\"" +msgstr "Bilietas %d perkeltas á \"%s\"" + +#: mybugs.php:52 +#, php-format +msgid "My %s" +msgstr "Mano %s" + +#: mybugs_edit.php:32 +#, php-format +msgid "My %s :: Add Content" +msgstr "Mano %s :: Pridëti turiná" + +#: search.php:106 lib/Block/myqueries.php:3 lib/Block/myqueries.php:24 +msgid "My Queries" +msgstr "Mano uþklausos" + +#: lib/Block/myrequests.php:3 lib/Block/myrequests.php:24 +msgid "My Requests" +msgstr "Mano praðymai" + +#: lib/Block/mytickets.php:3 lib/Block/mytickets.php:24 +#: config/prefs.php.dist:66 +msgid "My Tickets" +msgstr "Mano bilietai" + +#: lib/api.php:902 +msgid "My tickets by assignment date" +msgstr "Mano bilietai pagal paskyrimo datà" + +#: lib/api.php:901 +msgid "My tickets by creation date" +msgstr "Mano bilietai pagal sukûrimo datà" + +#: lib/api.php:903 +msgid "My tickets by due date" +msgstr "Mano bilietai pagal vykdymo datà" + +#: lib/api.php:904 +msgid "My tickets by resolution date" +msgstr "Mano bilietai pagal iðsprendimo datà" + +#: lib/Query.php:867 lib/Query.php:899 +msgid "Name" +msgstr "Pavadinimas" + +#: lib/Forms/Admin.php:338 +msgid "Name of the cloned copy" +msgstr "Kopijos pavadinimas" + +#: lib/Query.php:184 +msgid "Ne_w Query" +msgstr "Nauja uþklausa" + +#: lib/Driver.php:164 +msgid "New" +msgstr "Naujas" + +#: lib/Ticket.php:494 lib/Ticket.php:539 +msgid "New Attachment" +msgstr "Naujas prikabintas failas" + +#: templates/comment.inc:53 templates/comment.inc:55 +#, php-format +msgid "New Attachment: %s" +msgstr "Naujas prikabintas failas: %s" + +#: ticket/queue.php:31 +msgid "New Queue" +msgstr "Nauja eilë" + +#: ticket/create.php:60 lib/Block/tree_menu.php:21 +msgid "New Ticket" +msgstr "Naujas bilietas" + +#: ticket/type.php:34 +msgid "New Type" +msgstr "Naujas tipas" + +#: templates/prevnext.inc:16 +msgid "Next>" +msgstr "Toliau>" + +#: ticket/delete.php:37 lib/Query.php:926 lib/Forms/Admin.php:127 +#: lib/Forms/Admin.php:319 lib/Forms/Admin.php:435 lib/Forms/Admin.php:521 +#: lib/Forms/Admin.php:607 lib/Forms/Admin.php:699 +msgid "No" +msgstr "Ne" + +#: lib/Block/myqueries.php:44 +msgid "No queries have been saved." +msgstr "Neiðsaugota nei viena uþklausa." + +#: lib/Block/query.php:64 lib/Driver/sql.php:420 +msgid "No query to run" +msgstr "Uþklausø nëra" + +#: lib/Block/queuecontents.php:25 +msgid "No queues available." +msgstr "Eiliø nëra." + +#: reports.php:19 +msgid "No stats available." +msgstr "Statistikos nëra." + +#: lib/Driver.php:404 +#, php-format +msgid "No such backend \"%s\" found" +msgstr "Posistemë \"%s\" nerasta" + +#: lib/Block/mytickets.php:45 +msgid "No tickets are assigned to you." +msgstr "Jums nepaskirtas nei vienas bilietas." + +#: lib/Block/unassigned.php:45 +msgid "No tickets are unassigned!" +msgstr "Nepaskirtø bilietø nëra!" + +#: lib/Block/queuecontents.php:62 lib/Block/queuecontents.php:73 +msgid "No tickets in queue." +msgstr "Eilëje bilietø nëra." + +#: lib/Whups.php:530 +msgid "No tickets matched your search criteria." +msgstr "Nerastas nei vienas bilietas atitinkantis jûsø paieðkà." + +#: lib/Reports.php:88 +msgid "None" +msgstr "Nëra" + +#: lib/Query.php:572 templates/queryrenderer.inc:92 +msgid "Not" +msgstr "Ne" + +#: query.php:79 +msgid "Not yet implemented." +msgstr "Dar nerealizuota." + +#: config/prefs.php.dist:17 +msgid "Notification Options" +msgstr "Praneðimø nustatymai" + +#: config/prefs.php.dist:108 +msgid "Only notify me of ticket changes from other users" +msgstr "Perspëti mane tik jeigu bilietà keièia kiti vartotojai" + +#: lib/Block/queuesummary.php:48 +msgid "Open Tickets" +msgstr "Atviri bilietai" + +#: lib/Reports.php:11 +msgid "Open Tickets by Owner" +msgstr "Atviri bilietai pagal savininkà" + +#: lib/Reports.php:9 +msgid "Open Tickets by Priority" +msgstr "Atviri bilietai pagal svarbà" + +#: lib/Reports.php:6 +msgid "Open Tickets by Queue" +msgstr "Atviri bilietai pagal eilæ" + +#: lib/Reports.php:10 +msgid "Open Tickets by Requester" +msgstr "Atviri bilietai pagal uþsakovà" + +#: lib/Reports.php:7 +msgid "Open Tickets by State" +msgstr "Atviri bilietai pagal bûsenà" + +#: lib/Reports.php:8 +msgid "Open Tickets by Type" +msgstr "Atviri bilietai pagal tipà" + +#: lib/Block/queuecontents.php:47 +#, php-format +msgid "Open Tickets in %s" +msgstr "Atviri bilietai eilëje %s" + +#: lib/Query.php:571 templates/queryrenderer.inc:91 +msgid "Or" +msgstr "Arba" + +#: config/prefs.php.dist:9 config/prefs.php.dist:16 +msgid "Other Options" +msgstr "Kiti nustatymai" + +#: lib/Whups.php:495 lib/Ticket.php:493 lib/Ticket.php:531 lib/Ticket.php:532 +#: lib/Ticket.php:534 lib/Ticket.php:604 lib/Ticket.php:621 lib/Ticket.php:669 +#: lib/Forms/CreateTicket.php:186 lib/Forms/CreateTicket.php:198 +#: lib/Forms/EditTicket.php:73 templates/queryrenderer.inc:97 +msgid "Owners" +msgstr "Savininkai" + +#: lib/Whups.php:678 +#, php-format +msgid "Permanently delete %s?" +msgstr "Visiðkai iðtrinti %s?" + +#: ticket/update.php:23 ticket/delete.php:17 ticket/type.php:17 +#: ticket/queue.php:124 ticket/deleteAttachment.php:17 +msgid "Permission Denied" +msgstr "Neuþtenka teisiø" + +#: ticket/delete.php:44 lib/Forms/EditTicket.php:104 +msgid "Permission Denied." +msgstr "Neuþtenka teisiø." + +#: query.php:31 runquery.php:38 lib/Query.php:936 +#, php-format +msgid "Permission denied." +msgstr "Neuþtenka teisiø." + +#: lib/Forms/Admin.php:270 lib/Forms/Admin.php:316 +msgid "Priorities for this Type" +msgstr "Ðio tipo svarbos" + +#: ticket/type.php:69 ticket/queue.php:110 lib/Whups.php:483 lib/Whups.php:492 +#: lib/Ticket.php:484 lib/Ticket.php:598 lib/Ticket.php:667 lib/Query.php:746 +#: lib/Forms/CreateTicket.php:118 lib/Forms/EditTicket.php:30 +#: templates/queryrenderer.inc:138 config/prefs.php.dist:40 +msgid "Priority" +msgstr "Svarba" + +#: templates/comment.inc:98 +#, php-format +msgid "Priority ⇒ %s" +msgstr "Svarba ⇒ %s" + +#: lib/Forms/Admin.php:449 lib/Forms/Admin.php:495 lib/Forms/Admin.php:518 +msgid "Priority Description" +msgstr "Svarbos apraðymas" + +#: lib/Forms/Admin.php:448 lib/Forms/Admin.php:473 lib/Forms/Admin.php:492 +#: lib/Forms/Admin.php:515 +msgid "Priority Name" +msgstr "Svarbos pavadinimas" + +#: query.php:155 +msgid "Query Builder" +msgstr "Uþklausos" + +#: lib/Forms/QueryParameterForm.php:20 +msgid "Query Parameters" +msgstr "Uþklausos parametrai" + +#: runquery.php:81 lib/Block/query.php:3 lib/Block/query.php:51 +msgid "Query Results" +msgstr "Uþklausos rezultatai" + +#: lib/Block/query.php:33 +msgid "Query to run" +msgstr "Paleisti uþklausà" + +#: lib/Whups.php:493 lib/Ticket.php:480 lib/Ticket.php:594 lib/Ticket.php:648 +#: lib/Ticket.php:652 lib/Query.php:729 lib/Block/queuesummary.php:48 +#: lib/Block/queuecontents.php:32 lib/Forms/Search.php:38 +#: templates/queryrenderer.inc:107 config/prefs.php.dist:41 +msgid "Queue" +msgstr "Eilë" + +#: templates/comment.inc:86 +#, php-format +msgid "Queue ⇒ %s" +msgstr "Eilë ⇒ %s" + +#: lib/Block/queuecontents.php:3 lib/Block/queuecontents.php:49 +msgid "Queue Contents" +msgstr "Eilës turinys" + +#: lib/Forms/Admin.php:24 lib/Forms/Admin.php:73 lib/Forms/Admin.php:124 +msgid "Queue Description" +msgstr "Eilës apraðymas" + +#: lib/Forms/CreateTicket.php:27 lib/Forms/CreateTicket.php:37 +#: lib/Forms/Admin.php:23 lib/Forms/Admin.php:52 lib/Forms/Admin.php:70 +#: lib/Forms/Admin.php:121 +msgid "Queue Name" +msgstr "Eilës pavadinimas" + +#: lib/Block/queuesummary.php:3 lib/Block/queuesummary.php:24 +msgid "Queue Summary" +msgstr "Eilës santrauka" + +#: ticket/queue.php:79 lib/Ticket.php:657 lib/Ticket.php:661 +#: lib/Forms/CreateTicket.php:77 +msgid "Queue Version" +msgstr "Eilës versija" + +#: admin/index.php:36 +msgid "Queue/Type Matri_x" +msgstr "Eilës/Tipo matrica" + +#: templates/admin/mtmatrix.inc:6 +msgid "Queue/Type Matrix" +msgstr "Eilës/Tipo matrica" + +#: lib/api.php:167 lib/api.php:827 +msgid "Queues" +msgstr "Eilës" + +#: lib/Forms/Admin.php:700 +msgid "Really delete this attribute? This may cause data problems!" +msgstr "Ar tikrai iðtrinti ðá atributà? Tai sukels problemø su duomenimis!" + +#: lib/Forms/Admin.php:522 +msgid "Really delete this priority? This may cause data problems!" +msgstr "Ar tikrai iðtrinti ðià svarbà? Tai sukels problemø su duomenimis!" + +#: lib/Query.php:927 +msgid "Really delete this query? This operation is not undoable." +msgstr "Ar tikrai iðtrinti ðià uþklausà? Graþinti atgal nebegalësite." + +#: lib/Forms/Admin.php:128 +msgid "Really delete this queue? This may cause data problems!" +msgstr "Ar tikrai iðtrinti ðià eilæ? Tai sukels problemø su duomenimis!" + +#: lib/Forms/Admin.php:436 +msgid "Really delete this state? This may cause data problems!" +msgstr "Ar tikrai iðtrinti ðià bûsenà? Tai sukels problemø su duomenimis!" + +#: ticket/delete.php:38 +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "" +"Ar tikrai iðtrinti ðá bilietà? Jis NËRA archyvuojamas ir bus iðtrintas " +"amþiams." + +#: lib/Forms/Admin.php:320 +msgid "Really delete this type? This may cause data problems!" +msgstr "Ar tikrai iðtrinti ðá tipà? Tai sukels problemø su duomenimis!" + +#: lib/Forms/Admin.php:608 +msgid "Really delete this version? This may cause data problems!" +msgstr "Ar tikrai iðtrinti ðià versijà? Tai sukels problemø su duomenimis!" + +#: search.php:87 +msgid "Refine Search" +msgstr "Pakeisti paieðkà" + +#: admin/index.php:854 +msgid "Reminders were sent." +msgstr "Priminimai iðsiøsti." + +#: lib/Forms/Admin.php:177 +msgid "Remove User" +msgstr "Iðtrinti vartotojà" + +#: ticket/watch.php:48 +msgid "Remove Watcher" +msgstr "Iðtrinti stebëtojà" + +#: templates/comment.inc:81 +msgid "Reply to this comment" +msgstr "Atsakyti á ðá komentarà" + +#: reports.php:24 +msgid "Reports" +msgstr "Raportai" + +#: lib/Whups.php:494 lib/Ticket.php:672 templates/queryrenderer.inc:99 +msgid "Requester" +msgstr "Uþsakovas" + +#: lib/Whups.php:499 lib/Driver.php:166 lib/Ticket.php:679 lib/api.php:945 +#: config/prefs.php.dist:45 +msgid "Resolved" +msgstr "Iðspræsta" + +#: lib/Forms/Admin.php:179 +msgid "Responsible Users" +msgstr "Atsakingi vartotojai" + +#: lib/Forms/EditTicket.php:97 +msgid "Restrict Comment to:" +msgstr "Leisti komentuoti tik:" + +#: templates/prevnext.inc:26 +msgid "Return to Search Results" +msgstr "Gráþti á paieðkos rezultatus" + +#: lib/Whups.php:201 +msgid "S_et Queue" +msgstr "Nustatyti eilæ" + +#: lib/Query.php:202 +msgid "Sa_ve Query" +msgstr "Iðsaugoti uþklausà" + +#: lib/Query.php:865 templates/searchresults.inc:79 +msgid "Save" +msgstr "Iðsaugoti" + +#: lib/Query.php:864 +msgid "Save Query" +msgstr "Iðsaugoti uþklausà" + +#: templates/searchresults.inc:73 +msgid "Save these results as: " +msgstr "Iðsaugoti ðiuos rezultatus kaip: " + +#: search.php:26 lib/Block/tree_menu.php:30 +msgid "Search" +msgstr "Ieðkoti" + +#: lib/Query.php:822 +#, php-format +msgid "Search %s Attribute" +msgstr "Ieðkoti %s atributo" + +#: lib/Query.php:825 +msgid "Search Attribute" +msgstr "Ieðkoti atribute" + +#: lib/Query.php:595 lib/Query.php:680 +msgid "Search Comments" +msgstr "Ieðkoti komentaruose" + +#: lib/Query.php:593 +msgid "Search Owners" +msgstr "Ieðkoti tarp savininkø" + +#: lib/Query.php:594 +msgid "Search Requester" +msgstr "Ieðkoti tarp uþsakovø" + +#: search.php:82 +msgid "Search Results" +msgstr "Paieðkos rezultatai" + +#: templates/prevnext.inc:22 +#, php-format +msgid "Search Results: %s of %s" +msgstr "Paieðkos rezultatai: %s ið %s" + +#: lib/Query.php:679 +msgid "Search Summary" +msgstr "Paieðkos santrauka" + +#: config/prefs.php.dist:67 +msgid "Search Tickets" +msgstr "Bilietø paieðka" + +#: config/prefs.php.dist:69 +msgid "Select the view to display after login:" +msgstr "Pasirinkite, kurá puslapá rodyti po prisijungimo:" + +#: admin/index.php:37 +msgid "Sen_d Reminders" +msgstr "Siøsti priminimus" + +#: lib/Forms/Admin.php:711 +msgid "Send Reminders" +msgstr "Siøsti priminimus" + +#: lib/Forms/Admin.php:722 +msgid "Send only for this list of ticket ids" +msgstr "Siøsti tik bilietams su ðiais id" + +#: ticket/queue.php:195 ticket/queue.php:204 ticket/queue.php:216 +msgid "Set Queue - Step 1" +msgstr "Eilës nustatymas - 1 þingsnis" + +#: ticket/queue.php:196 ticket/queue.php:205 +msgid "Set Queue - Step 2" +msgstr "Eilës nustatymas - 2 þingsnis" + +#: ticket/queue.php:206 +msgid "Set Queue - Step 3" +msgstr "Eilës nustatymas - 3 þingsnis" + +#: ticket/queue.php:182 +#, php-format +msgid "Set Queue for %s" +msgstr "%s eilës nustatymas" + +#: ticket/type.php:137 ticket/type.php:146 +msgid "Set Type - Step 1" +msgstr "Tipo nustatymas - 1 þingsnis" + +#: ticket/type.php:138 +msgid "Set Type - Step 2" +msgstr "Tipo nustatymas - 2 þingsnis" + +#: ticket/type.php:124 +#, php-format +msgid "Set Type for %s" +msgstr "%s tipo nustatymas" + +#: lib/Whups.php:205 +msgid "Set _Type" +msgstr "Nustatyti tipà" + +#: config/prefs.php.dist:126 +msgid "Show comments in chronological order, or most recent first?" +msgstr "Rodyti komentarus chronologine tvarka ar ið pradþiø naujausius?" + +#: config/prefs.php.dist:86 +msgid "Show ticket IDs in the summary view?" +msgstr "Santraukoje rodyti bilietø ID?" + +#: config/prefs.php.dist:78 +msgid "Show tickets you have requested in the summary view?" +msgstr "Santraukoje rodyti jûsø sukurtus bilietus?" + +#: config/templates.php.dist:16 +msgid "Simple HTML Report" +msgstr "Paprastas HTML raportas" + +#: templates/searchresults.inc:98 templates/searchresults.inc:101 +#, php-format +msgid "Sort by %s" +msgstr "Rûðiuoti pagal %s" + +#: lib/Forms/CreateTicket.php:113 lib/Forms/CreateTicket.php:142 +#: lib/Forms/AddComment.php:20 lib/Forms/AddComment.php:51 +msgid "Spam protection" +msgstr "Apsauga nuo ðiukðliø" + +#: ticket/type.php:68 ticket/queue.php:109 lib/Whups.php:484 lib/Whups.php:490 +#: lib/Ticket.php:483 lib/Ticket.php:597 lib/Ticket.php:666 lib/Query.php:741 +#: lib/Forms/EditTicket.php:29 templates/queryrenderer.inc:130 +#: config/prefs.php.dist:38 +msgid "State" +msgstr "Bûsena" + +#: templates/comment.inc:94 +#, php-format +msgid "State ⇒ %s" +msgstr "Bûsena ⇒ %s" + +#: lib/Forms/Admin.php:360 lib/Forms/Admin.php:409 +msgid "State Category" +msgstr "Bûsenos kategorija" + +#: lib/Forms/Admin.php:359 lib/Forms/Admin.php:406 lib/Forms/Admin.php:432 +msgid "State Description" +msgstr "Bûsenos apraðymas" + +#: lib/Forms/Admin.php:358 lib/Forms/Admin.php:384 lib/Forms/Admin.php:403 +#: lib/Forms/Admin.php:429 +msgid "State Name" +msgstr "Bûsenos pavadinimas" + +#: lib/Forms/Admin.php:260 lib/Forms/Admin.php:312 +msgid "States for this Type" +msgstr "Ðio tipo bûsena" + +#: templates/ticket/watchers.inc:1 +msgid "Status" +msgstr "Bûsena" + +#: ticket/create.php:124 +msgid "Submit" +msgstr "Ávesti" + +#: admin/index.php:162 +#, php-format +msgid "Successfully Cloned %s to %s." +msgstr "%s sëkmingai nukopijuotas á %s." + +#: ticket/type.php:115 +msgid "Successfully changed ticket type." +msgstr "Bilieto tipas sëkmingai pakeistas." + +#: ticket/delete.php:34 lib/Whups.php:482 lib/Whups.php:489 lib/Ticket.php:492 +#: lib/Ticket.php:508 lib/Ticket.php:509 lib/Ticket.php:511 lib/Ticket.php:604 +#: lib/Ticket.php:612 lib/Ticket.php:646 lib/Forms/CreateTicket.php:120 +#: lib/Forms/EditTicket.php:28 templates/queryrenderer.inc:102 +#: config/prefs.php.dist:37 +msgid "Summary" +msgstr "Pavadinimas" + +#: templates/comment.inc:47 +#, php-format +msgid "Summary ⇒ %s" +msgstr "Pavadinimas ⇒ %s" + +#: lib/Forms/Search.php:41 +msgid "Summary like" +msgstr "Pavadinimas" + +#: templates/comment.inc:69 +#, php-format +msgid "Taken from %s" +msgstr "Paimta ið %s" + +#: lib/Query.php:677 +msgid "Text" +msgstr "Tekstas" + +#: view.php:55 lib/Ticket.php:356 lib/Ticket.php:394 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "Prikabintø failø galimybei turi bûti ájungta VFS posistemë." + +#: admin/index.php:739 +#, php-format +msgid "The attribute \"%s\" has been added to %s." +msgstr "Atributas \"%s\" pridëtas á %s." + +#: admin/index.php:825 +msgid "The attribute has been deleted." +msgstr "Atributas iðtrintas." + +#: admin/index.php:794 +msgid "The attribute has been modified." +msgstr "Atributas pakeistas." + +#: admin/index.php:830 +msgid "The attribute was not deleted." +msgstr "Atributas neiðtrintas." + +#: admin/index.php:451 +#, php-format +msgid "The priority \"%s\" has been added to %s." +msgstr "Svarba \"%s\" pridëta á %s." + +#: admin/index.php:532 +msgid "The priority has been deleted." +msgstr "Svarba iðtrinta." + +#: admin/index.php:504 +msgid "The priority has been modified." +msgstr "Svarba pakeistas." + +#: admin/index.php:537 +msgid "The priority was not deleted." +msgstr "Svarba neiðtrinta." + +#: lib/Query.php:940 +#, php-format +msgid "The query \"%s\" couldn't be deleted: %s" +msgstr "Nepavyko iðtrinti uþklausos \"%s\": %s" + +#: lib/Query.php:942 +#, php-format +msgid "The query \"%s\" has been deleted." +msgstr "Uþklausa \"%s\" iðtrinta." + +#: lib/Query.php:907 +#, php-format +msgid "The query couldn't be loaded:" +msgstr "Nepavyko uþkrauti uþklausos:" + +#: admin/index.php:241 +#, php-format +msgid "The queue \"%s\" has been created." +msgstr "Eilë \"%s\" sukurta." + +#: admin/index.php:320 +msgid "The queue has been deleted." +msgstr "Eilë iðtrinta." + +#: admin/index.php:292 +msgid "The queue has been modified." +msgstr "Eilë pakeista." + +#: admin/index.php:325 +msgid "The queue was not deleted." +msgstr "Eilë neiðtrinta." + +#: lib/MIME/Viewer/zip.php:58 +msgid "The requested file does not exist in the Zip attachment." +msgstr "Ðios bylos nëra Zip archyve." + +#: data.php:26 +msgid "The requested template does not exist." +msgstr "Nurodytas ðablonas neegzistuoja." + +#: admin/index.php:340 +#, php-format +msgid "The state \"%s\" has been added to %s." +msgstr "Bûsena \"%s\" pridëta á %s." + +#: admin/index.php:423 +msgid "The state has been deleted." +msgstr "Bûsena iðtrinta." + +#: admin/index.php:394 +msgid "The state has been modified." +msgstr "Bûsena pakeista." + +#: admin/index.php:428 +msgid "The state was not deleted." +msgstr "Bûsena neiðtrinta." + +#: ticket/delete.php:75 +msgid "The ticket was not deleted." +msgstr "Bilietas neiðtrintas." + +#: admin/index.php:180 +#, php-format +msgid "The type \"%s\" has been modified." +msgstr "Tipas \"%s\" pakeistas." + +#: admin/index.php:222 +msgid "The type has been deleted." +msgstr "Tipas iðtrintas." + +#: admin/index.php:227 +msgid "The type was not deleted." +msgstr "Tipas neiðtrintas." + +#: admin/index.php:629 +#, php-format +msgid "The version \"%s\" has been added to %s." +msgstr "Versija \"%s\" pridëta á %s." + +#: admin/index.php:711 +msgid "The version has been deleted." +msgstr "Versija iðtrinta." + +#: admin/index.php:683 +msgid "The version has been modified." +msgstr "Versija pakeista." + +#: admin/index.php:716 +msgid "The version was not deleted." +msgstr "Versija neiðtrinta." + +#: lib/Forms/Admin.php:647 +msgid "There are no attribute types to edit" +msgstr "Atributø tipø redagavimui nëra" + +#: lib/Query.php:825 +msgid "There are no attributes defined for the current type" +msgstr "Ðiam tipui nëra apraðytø atributø" + +#: lib/Block/queuesummary.php:43 +msgid "There are no open tickets." +msgstr "Atvirø bilietø nëra." + +#: lib/Forms/Admin.php:469 +msgid "There are no priorities to edit" +msgstr "Svarbø redagavimui nëra" + +#: lib/Forms/Admin.php:719 +msgid "There are no queues available." +msgstr "Eiliø nëra." + +#: lib/Forms/Admin.php:49 +msgid "There are no queues to edit" +msgstr "Eiliø redagavimui nëra" + +#: lib/Forms/CreateTicket.php:27 +msgid "There are no queues which you can create tickets in." +msgstr "Eiliø, kuriose galite kurti bilietus, nëra." + +#: lib/Forms/Search.php:36 +msgid "There are no queues which you can search." +msgstr "Eiliø, kuriose galite ieðkoti, nëra." + +#: lib/Forms/Admin.php:380 +msgid "There are no states to edit" +msgstr "Bûsenø redagavimui nëra" + +#: lib/Forms/CreateTicket.php:61 +msgid "" +"There are no ticket types associated with this queue; until there are, you " +"cannot create any tickets in this queue." +msgstr "" +"Su ðia eile nëra susietø tipø; kol tai nebus padaryta, jûs negalësite ðioje " +"eilëje kurti naujø bilietø." + +#: lib/Forms/Admin.php:231 +msgid "There are no types to edit" +msgstr "Tipø redagavimui nëra" + +#: lib/Forms/Admin.php:193 +msgid "There are no users responsible for this queue." +msgstr "Vartotojø, atsakingø uþ ðià eilæ, nëra." + +#: lib/Forms/CreateTicket.php:197 +msgid "There are no users to which this ticket can be assigned." +msgstr "Vartotojø, kuriems gali bûti paskirti bilietai, nëra." + +#: lib/Forms/Admin.php:555 +msgid "There are no versions to edit" +msgstr "Versijø redagavimui nëra" + +#: lib/Reports.php:161 +msgid "There is no data for this report." +msgstr "Ðiam raportui neuþtenka duomenø." + +#: admin/index.php:571 +#, php-format +msgid "There was an error adding \"%s\" to the responsible list for \"%s\": %s" +msgstr "Klaida pridedant \"%s\" kaip atsakingà uþ \"%s\": %s" + +#: admin/index.php:742 +#, php-format +msgid "There was an error creating the attribute: %s." +msgstr "Klaida kuriant atributà: %s." + +#: admin/index.php:453 +#, php-format +msgid "There was an error creating the priority: %s." +msgstr "Klaida kuriant svarbà: %s." + +#: admin/index.php:249 +#, php-format +msgid "There was an error creating the queue: %s." +msgstr "Klaida kuriant eilæ: %s." + +#: admin/index.php:342 +#, php-format +msgid "There was an error creating the state: %s." +msgstr "Klaida kuriant bûsenà: %s." + +#: admin/index.php:631 +#, php-format +msgid "There was an error creating the version: %s." +msgstr "Klaida kuriant versijà: %s." + +#: admin/index.php:827 +#, php-format +msgid "There was an error deleting the attribute: %s." +msgstr "Klaida trinant atributà: %s." + +#: admin/index.php:534 +#, php-format +msgid "There was an error deleting the priority: %s." +msgstr "Klaida trinant svarbà: %s." + +#: admin/index.php:322 +#, php-format +msgid "There was an error deleting the queue: %s." +msgstr "Klaida trinant eilæ: %s." + +#: admin/index.php:425 +#, php-format +msgid "There was an error deleting the state: %s." +msgstr "Klaida trinant bûsenà: %s." + +#: ticket/delete.php:72 +#, php-format +msgid "There was an error deleting the ticket: %s" +msgstr "Klaida trinant bilietà: %s" + +#: admin/index.php:224 +#, php-format +msgid "There was an error deleting the type: %s." +msgstr "Klaida trinant tipà: %s." + +#: admin/index.php:713 +#, php-format +msgid "There was an error deleting the version: %s." +msgstr "Klaida trinant versijà: %s." + +#: admin/index.php:802 +#, php-format +msgid "There was an error editing the attribute: %s." +msgstr "Klaida keièiant atributà: %s." + +#: admin/index.php:509 +#, php-format +msgid "There was an error editing the priority: %s." +msgstr "Klaida keièiant svarbà: %s." + +#: admin/index.php:306 +#, php-format +msgid "There was an error editing the queue: %s." +msgstr "Klaida keièiant eilæ: %s." + +#: admin/index.php:399 +#, php-format +msgid "There was an error editing the state: %s." +msgstr "Klaida keièiant bûsenà: %s." + +#: admin/index.php:688 +#, php-format +msgid "There was an error editing the version: %s." +msgstr "Klaida keièiant versijà: %s." + +#: lib/Forms/Admin.php:153 +#, php-format +msgid "There was an error listing users: %s; %s" +msgstr "Klaida parodant vartotojø sàraðà: %s; %s" + +#: admin/index.php:178 +#, php-format +msgid "There was an error modifying the type: %s." +msgstr "Klaida keièiant tipà:: %s." + +#: search.php:76 +#, php-format +msgid "There was an error performing your search: %s" +msgstr "Klaida atliekant jûsø paieðkà: %s" + +#: admin/index.php:607 +#, php-format +msgid "" +"There was an error removing \"%s\" from the responsible list for \"%s\": %s" +msgstr "Klaida trinant \"%s\" ið atsakingø uþ \"%s\" sàraðo: %s" + +#: data.php:29 +msgid "This is not a search results template." +msgstr "Tai nëra paieðkos rezultatø ðablonas." + +#: ticket/queue.php:74 lib/Forms/CreateTicket.php:72 +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this queue, you will not " +"be able to create tickets." +msgstr "" +"Ðioje eilëje reikia nurodyti versijas, taèiau su ja nesusieta jokia versija. " +"Jûs negalësite kurti naujø bilietø tol, kol eilei nebus sukurtos versijos." + +#: lib/Ticket.php:505 lib/Ticket.php:611 +msgid "Ticket" +msgstr "Bilietas" + +#: ticket/delete.php:68 +#, php-format +msgid "Ticket %d has been deleted." +msgstr "Bilietas %d iðtrintas." + +#: lib/api.php:873 +#, php-format +msgid "Ticket %s - %s" +msgstr "Bilietas %s - %s" + +#: lib/Driver/sql.php:871 +#, php-format +msgid "Ticket %s was not found." +msgstr "Bilietas %s nerastas." + +#: search.php:98 +msgid "Ticket Search" +msgstr "Bilieto paieðka" + +#: lib/Forms/CreateTicket.php:117 +msgid "Ticket State" +msgstr "Bilieto bûsena" + +#: templates/reports/stats.inc:3 +msgid "Ticket Stats" +msgstr "Bilieto statistika" + +#: lib/Forms/CreateTicket.php:66 +msgid "Ticket Type" +msgstr "Bilieto tipas" + +#: lib/Forms/Admin.php:76 +msgid "Ticket Types associated with this Queue" +msgstr "Bilietø tipai susieti su ðia eile" + +#: lib/Ticket.php:501 +#, php-format +msgid "Ticket URL: %s\n" +msgstr "Bilieto URL: %s\n" + +#: ticket/update.php:82 +msgid "Ticket Updated" +msgstr "Bilietas atnaujintas" + +#: lib/api.php:894 +msgid "Tickets" +msgstr "Bilietai" + +#: lib/Forms/Search.php:43 +msgid "Tickets which are" +msgstr "Bilietai kurie yra" + +#: ticket/queue.php:82 lib/Whups.php:491 lib/Ticket.php:482 lib/Ticket.php:596 +#: lib/Ticket.php:665 lib/Query.php:722 templates/queryrenderer.inc:121 +#: config/prefs.php.dist:39 +msgid "Type" +msgstr "Tipas" + +#: templates/comment.inc:90 +#, php-format +msgid "Type ⇒ %s" +msgstr "Tipas ⇒ %s" + +#: lib/Forms/Admin.php:211 lib/Forms/Admin.php:255 lib/Forms/Admin.php:308 +msgid "Type Description" +msgstr "Tipo apraðymas" + +#: lib/Forms/Admin.php:210 lib/Forms/Admin.php:234 lib/Forms/Admin.php:252 +#: lib/Forms/Admin.php:305 +msgid "Type Name" +msgstr "Tipo pavadinimas" + +#: lib/Forms/Search.php:46 +msgid "Types" +msgstr "Tipai" + +#: lib/Ticket.php:670 +msgid "Unassigned" +msgstr "Nepaskirtas" + +#: lib/Block/unassigned.php:3 lib/Block/unassigned.php:24 +msgid "Unassigned Tickets" +msgstr "Nepaskirti bilietai" + +#: lib/Forms/Admin.php:730 +msgid "Unassigned tickets" +msgstr "Nepaskirti bilietai" + +#: lib/Driver.php:163 +msgid "Unconfirmed" +msgstr "Nepatvirtintas" + +#: templates/queryrenderer.inc:148 templates/queryrenderer.inc:188 +#, php-format +msgid "Unknown node type %s" +msgstr "Neþinomas ðakos tipas %s" + +#: lib/api.php:841 +msgid "Update" +msgstr "Atnaujinti" + +#: ticket/update.php:97 +#, php-format +msgid "Update %s" +msgstr "Atnaujinti %s" + +#: templates/admin/mtmatrix.inc:29 +msgid "Update Associations" +msgstr "Atnaujinti sàsajas" + +#: lib/Whups.php:497 lib/Ticket.php:677 +msgid "Updated" +msgstr "Atnaujintas" + +#: lib/Ticket.php:491 lib/Ticket.php:506 +msgid "Updated By" +msgstr "Atnaujinta" + +#: lib/Forms/Admin.php:152 lib/Forms/Admin.php:162 lib/Forms/Admin.php:165 +msgid "User" +msgstr "Vartotojas" + +#: lib/Query.php:591 +msgid "User ID" +msgstr "Vartotojo ID" + +#: lib/Forms/Admin.php:94 +msgid "Users responsible for this Queue" +msgstr "Vartotojø atsakingi uþ ðià eilæ" + +#: lib/Forms/Admin.php:197 +msgid "Users responsible for this queue" +msgstr "Vartotojø atsakingi uþ ðià eilæ" + +#: lib/Ticket.php:481 lib/Ticket.php:595 lib/Query.php:733 +#: templates/queryrenderer.inc:115 config/prefs.php.dist:42 +msgid "Version" +msgstr "Versija" + +#: lib/Forms/Admin.php:535 lib/Forms/Admin.php:581 lib/Forms/Admin.php:604 +msgid "Version Description" +msgstr "Versijos apraðymas" + +#: lib/Forms/Admin.php:534 lib/Forms/Admin.php:559 lib/Forms/Admin.php:578 +#: lib/Forms/Admin.php:601 +msgid "Version Name" +msgstr "Versijos pavadinimas" + +#: ticket/type.php:46 ticket/queue.php:45 lib/Forms/AddComment.php:38 +msgid "Viewable only by members of" +msgstr "Gali perþiûrëti tik grupës nariai" + +#: lib/Forms/AddComment.php:25 +msgid "Watch this ticket" +msgstr "Stebëti ðá bilietà" + +#: ticket/watch.php:76 +#, php-format +msgid "Watchers for %s" +msgstr "%s stebëtojai" + +#: config/prefs.php.dist:95 +msgid "Weekday Day Month" +msgstr "Savaitës diena Diena Mënuo" + +#: config/prefs.php.dist:96 +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "Savaitës diena Diena Mënuo HH:MM:SS LZ" + +#: ticket/delete.php:37 lib/Query.php:926 lib/Forms/Admin.php:127 +#: lib/Forms/Admin.php:319 lib/Forms/Admin.php:435 lib/Forms/Admin.php:521 +#: lib/Forms/Admin.php:607 lib/Forms/Admin.php:699 +msgid "Yes" +msgstr "Taip" + +#: view.php:51 +msgid "You are not allowed to view this ticket." +msgstr "Jûs neturite teisiø matyti ðio bilieto." + +#: lib/Driver/sql.php:874 +#, php-format +msgid "You do not have permission to access this ticket (%s)." +msgstr "Jûs neturite teisiø perþiûrëti ðio bilieto (%s)." + +#: lib/api.php:570 +msgid "You do not have permission to update this ticket." +msgstr "Jûs neturite teisiø keisti ðio bilieto." + +#: lib/Block/myrequests.php:46 +msgid "You have no open requests." +msgstr "Jûs neturite atvirø bilietø apie kuriuos praneðëte jûs pats." + +#: lib/Query.php:896 lib/Block/query.php:28 +msgid "You have no saved queries." +msgstr "Jûs neturite iðsaugotø uþklausø." + +#: lib/Whups.php:524 +msgid "You must select at least one queue to send reminders for." +msgstr "Priminimø iðsiuntimui turite pasirinkti bent vienà eilæ." + +#: lib/Forms/CreateTicket.php:111 lib/Forms/AddComment.php:18 +msgid "Your Email Address" +msgstr "Jûsø el. paðto adresas" + +#: ticket/create.php:53 +#, php-format +msgid "" +"Your ticket ID is %s. An appropriate person has been notified of this " +"request." +msgstr "" +"Jûsø bilieto ID yra %s. Apie ðià uþklausà buvo praneðta atsakingam asmeniui." + +#: lib/Whups.php:587 +msgid "_Admin" +msgstr "Valdymas" + +#: lib/Whups.php:196 +msgid "_Comment" +msgstr "Komentaras" + +#: lib/Whups.php:206 +msgid "_Delete" +msgstr "Iðtrinti" + +#: lib/Query.php:205 +msgid "_Delete Query" +msgstr "Iðtrinti uþklausà" + +#: lib/Query.php:186 +msgid "_Edit Query" +msgstr "Keisti uþklausà" + +#: admin/index.php:34 +msgid "_Edit Queues" +msgstr "Keisti eiles" + +#: templates/menu.inc:5 +msgid "_Go" +msgstr "Rodyti" + +#: query.php:139 +msgid "_Group Criteria" +msgstr "Grupës kriterijus" + +#: lib/Whups.php:192 +msgid "_History" +msgstr "Istorija" + +#: lib/Query.php:199 +msgid "_Load Query" +msgstr "Uþkrauti uþklausà" + +#: lib/Whups.php:578 +#, php-format +msgid "_My %s" +msgstr "Mano %s" + +#: lib/Whups.php:581 +msgid "_New Ticket" +msgstr "Naujas bilietas" + +#: query.php:137 +msgid "_Property Criteria" +msgstr "Savybës kriterijus" + +#: lib/Whups.php:582 +msgid "_Query Builder" +msgstr "Uþklausos" + +#: lib/Whups.php:583 +msgid "_Reports" +msgstr "Raportai" + +#: lib/Whups.php:580 +msgid "_Search" +msgstr "_Ieðkoti" + +#: query.php:141 +msgid "_Text Criteria" +msgstr "Teksto kriterijus" + +#: lib/Whups.php:194 +msgid "_Update" +msgstr "Atnaujinti" + +#: query.php:138 +msgid "_User Criteria" +msgstr "Vartotojo kriterijus" + +#: lib/Whups.php:198 +msgid "_Watch" +msgstr "Stebëti" + +#: templates/queryrenderer.inc:168 +msgid "contains (case insensitive) substring" +msgstr "turi tekstà (didþiosios/maþosios nesvarbu)" + +#: templates/queryrenderer.inc:172 +msgid "contains (case sensitive) substring" +msgstr "turi tekstà (didþiosios/maþosios svarbu)" + +#: templates/queryrenderer.inc:176 +msgid "contains the word" +msgstr "turi þodá" + +#: lib/api.php:882 +msgid "estimated time" +msgstr "numatytas laikas" + +#: templates/queryrenderer.inc:164 +msgid "is" +msgstr "yra" + +#: templates/queryrenderer.inc:156 +msgid "is greater than" +msgstr "didesnis nei" + +#: templates/queryrenderer.inc:160 +msgid "is less than" +msgstr "maþesnis nei" + +#: templates/queryrenderer.inc:180 +msgid "matches the pattern" +msgstr "atitinka formà" diff --git a/whups/po/nb_NO.po b/whups/po/nb_NO.po new file mode 100644 index 000000000..225e0c2c4 --- /dev/null +++ b/whups/po/nb_NO.po @@ -0,0 +1,2040 @@ +# Whups - Norwegian translation +# Copyright 2006-2009 The Horde Project +# This file is distributed under the same license as the Whups package. +# Torbjorn Grindhaug , 2006. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Whups 1.0-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2006-01-09 15:33+0100\n" +"PO-Revision-Date: 2006-01-09 10:31+0100\n" +"Last-Translator: Torbjorn Grindhaug \n" +"Language-Team: Norwegian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin.php:603 +#, php-format +msgid "\"%s\" is no longer among those responsible for \"%s\"" +msgstr "\"%s\" er ikke lenger blant de ansvarlige for \"%s\"" + +#: templates/menu.inc:5 +msgid "#Id" +msgstr "#Id" + +#: lib/Driver.php:277 +#, php-format +msgid "%s (%s) wrote:" +msgstr "%s (%s) skrev:" + +#: admin.php:567 +#, php-format +msgid "%s added to those responsible for \"%s\"" +msgstr "%s er lagt til de som er ansvarlig for \"%s\"" + +#: templates/reports/stats.inc:17 +#, php-format +msgid "%s days" +msgstr "%s dager" + +#: ticket/watch.php:58 +#, php-format +msgid "%s will be notified when this ticket is updated." +msgstr "%s vil få beskjed når denne saken er oppdatert." + +#: ticket/watch.php:70 +#, php-format +msgid "%s will no longer receive updates for this ticket." +msgstr "%s vil ikke lenger få beskjed om oppdateringer på denne saken." + +#: admin.php:81 +msgid "- Stage 1" +msgstr "- Steg 1" + +#: admin.php:86 +msgid "- Stage 2" +msgstr "- Steg 2" + +#: scripts/mail-filter.php:164 +msgid "--priority-name or --priority-id must specify a valid Priority." +msgstr "--priority-name eller --priority-id må angi en gyldig prioritet." + +#: scripts/mail-filter.php:158 +msgid "--queue-name or --queue-id must specify a valid Queue." +msgstr "--queue-name eller --queue-id må angi en gyldig kø." + +#: scripts/mail-filter.php:167 +msgid "--state-name or --state-id must specify a valid State." +msgstr "--state-name eller --state-id må angi en gyldig tilstand." + +#: scripts/mail-filter.php:161 +msgid "--type-name or --type-id must specify a valid Type." +msgstr "--type-name eller --type-id må angi en gyldig type." + +#: templates/prevnext.inc:12 +msgid "<Forrige" + +#: view.php:55 +#, php-format +msgid "Access denied to %s" +msgstr "Tilgang nektet til %s" + +#: lib/Admin.php:709 +msgid "Add Attribute" +msgstr "Ny egenskap" + +#: lib/Query.php:764 +msgid "Add Attribute Criterion" +msgstr "Legg til kriterie for egenskap" + +#: mybugs.php:54 +msgid "Add Content" +msgstr "Legg til innhold" + +#: query.php:205 +msgid "Add Criterion" +msgstr "Legg til kriterie" + +#: lib/Query.php:590 +msgid "Add Group Criterion" +msgstr "Legg til gruppekriterie" + +#: lib/Admin.php:533 +msgid "Add Priority" +msgstr "Ny prioritet" + +#: lib/Query.php:669 +msgid "Add Property Criterion" +msgstr "Legg til kriteriegenskap" + +#: lib/Admin.php:102 lib/Admin.php:103 +msgid "Add Queue" +msgstr "Ny kø" + +#: lib/Admin.php:441 +msgid "Add State" +msgstr "Ny tilstand" + +#: lib/Admin.php:14 lib/Admin.php:15 +msgid "Add Subject" +msgstr "Nytt emne" + +#: lib/Query.php:625 +msgid "Add Text Criterion" +msgstr "Legg til tekstkriterie" + +#: lib/Admin.php:298 lib/Admin.php:299 +msgid "Add Type" +msgstr "Ny type" + +#: admin.php:81 admin.php:86 +#, php-format +msgid "Add Type %s" +msgstr "Legg til type %s" + +#: lib/Query.php:537 +msgid "Add User Criterion" +msgstr "Nytt brukerkriterie" + +#: lib/Admin.php:229 +msgid "Add Users" +msgstr "Legg til brukere" + +#: lib/Admin.php:621 +msgid "Add Version" +msgstr "Legg til versjon" + +#: ticket/watch.php:47 +msgid "Add Watcher" +msgstr "Legg til overvåker" + +#: ticket/create.php:154 +#, php-format +msgid "Adding your ticket failed: %s." +msgstr "Feil ved innlegging av din sak: %s." + +#: admin.php:54 lib/api.php:694 +msgid "Administration" +msgstr "Administrering" + +#: templates/queryrenderer.inc:90 lib/Query.php:518 +msgid "And" +msgstr "And" + +#: search.php:39 search.php:103 search.php:105 search.php:120 search.php:136 +#: search.php:138 lib/Query.php:675 lib/Query.php:683 lib/Query.php:688 +#: lib/Query.php:695 lib/Query.php:700 +msgid "Any" +msgstr "Any" + +#: ticket/update.php:75 ticket/people.php:90 ticket/type.php:45 +#: ticket/comment.php:41 ticket/queue.php:50 +msgid "Any Group" +msgstr "Alle grupper" + +#: config/prefs.php.dist:55 +msgid "Ascending" +msgstr "Stigende" + +#: lib/api.php:709 +msgid "Assign" +msgstr "Tildel" + +#: ticket/people.php:128 +msgid "Assign Ticket Succeeded" +msgstr "Tildeling av sak utført" + +#: lib/Whups.php:479 lib/Ticket.php:601 lib/Driver.php:142 +#: config/prefs.php.dist:44 +msgid "Assigned" +msgstr "Tildelt" + +#: templates/comment.inc:66 +#, php-format +msgid "Assigned to %s" +msgstr "Tildelt til %s" + +#: admin.php:955 +msgid "Associations updated successfully." +msgstr "Koblingene er oppdatert." + +#: ticket/update.php:64 ticket/comment.php:29 lib/Create.php:124 +msgid "Attachment" +msgstr "Vedlegg" + +#: ticket/deleteAttachment.php:29 +#, php-format +msgid "Attachment %s deleted." +msgstr "Vedlegget %s ble slettet." + +#: lib/Ticket.php:388 +#, php-format +msgid "Attachment %s not found." +msgstr "Fant ikke vedlegget %s." + +#: lib/Ticket.php:603 +msgid "Attachments" +msgstr "Vedlegg" + +#: query.php:139 +msgid "Attribute Criteria" +msgstr "Egenskapskriterier" + +#: lib/Admin.php:713 lib/Admin.php:759 lib/Admin.php:782 +msgid "Attribute Description" +msgstr "Beskrivelse av egenskap" + +#: lib/Admin.php:712 lib/Admin.php:737 lib/Admin.php:756 lib/Admin.php:779 +msgid "Attribute Name" +msgstr "Navn på egenskap" + +#: lib/Admin.php:370 +msgid "Attributes for this Type" +msgstr "Egenskaper til denne typen" + +#: config/prefs.php.dist:126 +msgid "Autolink to other tickets in comments?" +msgstr "Automatisk link til andre saker i kommentarer?" + +#: lib/Reports.php:12 +msgid "Average days to close by Owner" +msgstr "Snittdager for ferdigstilling etter eier" + +#: lib/Reports.php:14 +msgid "Average days to close by Queue" +msgstr "Snittdager for ferdigstilling etter kø" + +#: lib/Reports.php:13 +msgid "Average days to close by Requester" +msgstr "Snittdager for ferdigstilling etter innmelder" + +#: lib/Reports.php:19 +msgid "Average time a ticket is unresolved" +msgstr "Gjennomsnittstid en sak er uløst" + +#: lib/Query.php:523 +msgid "Branch Type" +msgstr "Grentype" + +#: lib/Query.php:56 +msgid "Case Insensitive Substring" +msgstr "Delstreng (ikke skill mellom store/små bokstaver)" + +#: templates/queryrenderer.inc:27 +msgid "Change" +msgstr "Endre" + +#: config/prefs.php.dist:11 +msgid "Change display options such as how search results are sorted." +msgstr "Endre hvordan visning av søkeresultater er sortert." + +#: config/prefs.php.dist:18 +msgid "Change options for email notifications of ticket activity." +msgstr "Endre valg for epostmeldinger av saksaktivitet." + +#: query.php:142 +msgid "Choose Action:" +msgstr "Velg handling:" + +#: lib/Query.php:161 +msgid "Choose New Query instead of deleting the root node." +msgstr "Velg Ny Spørring istedetfor å slette rotnoden." + +#: lib/Create.php:33 lib/Create.php:67 +msgid "Choose:" +msgstr "Velg:" + +#: config/prefs.php.dist:136 +msgid "Chronological (oldest first)" +msgstr "Kronologisk (eldste først)" + +#: templates/savedsearches.inc:27 +msgid "Clear All Searches" +msgstr "Fjern alle søk" + +#: lib/Admin.php:421 +msgid "Clone" +msgstr "Klon" + +#: lib/Admin.php:427 +msgid "Clone Description" +msgstr "Kloningsbeskrivelse" + +#: admin.php:120 lib/Admin.php:313 +msgid "Clone Type" +msgstr "Kloningstype" + +#: config/templates.php.dist:43 +msgid "Comma Separated Values (CSV file)" +msgstr "Kommaseparerte verdier (CSV-fil)" + +#: templates/queryrenderer.inc:101 templates/comment.inc:90 +#: templates/comment.inc:121 ticket/update.php:65 ticket/people.php:78 +#: ticket/type.php:35 ticket/comment.php:28 ticket/queue.php:38 +#: lib/Whups.php:193 +msgid "Comment" +msgstr "Kommentar" + +#: ticket/comment.php:94 +msgid "Comment added" +msgstr "Kommentar lagt til" + +#: ticket/comment.php:100 +#, php-format +msgid "Comment on %s" +msgstr "Kommentar på %s" + +#: templates/queryrenderer.inc:100 +msgid "Commentor" +msgstr "Kommentør" + +#: lib/Admin.php:425 +#, php-format +msgid "Copy of %s" +msgstr "Kopi av %s" + +#: lib/MIME/Viewer/zip.php:54 +msgid "Could not extract the requested file from the Zip archive." +msgstr "Kunne ikke pakke ut den forespurte filen fra Zip-arkivet." + +#: lib/Query.php:595 +msgid "Could not find any groups." +msgstr "Fant ingen grupper." + +#: lib/Mail.php:86 +#, php-format +msgid "Could not find ticket \"%s\"." +msgstr "Fant ikke sak \"%s\"." + +#: lib/Admin.php:364 +msgid "Create Default Priorities" +msgstr "Opprett standardprioriteter" + +#: lib/Admin.php:354 +msgid "Create Default States" +msgstr "Opprett standardtilstander" + +#: config/prefs.php.dist:68 +msgid "Create Ticket" +msgstr "Opprett sak" + +#: lib/Create.php:23 +msgid "Create Ticket - Step 1" +msgstr "Opprett sak - Steg 1" + +#: lib/Create.php:58 +msgid "Create Ticket - Step 2" +msgstr "Opprett sak - Steg 2" + +#: lib/Create.php:98 +msgid "Create Ticket - Step 3" +msgstr "Opprett sak - Steg 3" + +#: lib/Create.php:142 +msgid "Create Ticket - Step 4" +msgstr "Opprett sak - Steg 4" + +#: lib/Whups.php:478 lib/Ticket.php:600 config/prefs.php.dist:43 +msgid "Created" +msgstr "Opprettet" + +#: lib/Ticket.php:471 lib/Ticket.php:486 +msgid "Created By" +msgstr "Opprettet av" + +#: query.php:195 query.php:212 +msgid "Current Query" +msgstr "Gjeldende spørring" + +#: templates/queryrenderer.inc:25 +msgid "Current Ticket Type" +msgstr "Gjeldende sakstype" + +#: lib/Ticket.php:531 +msgid "DO NOT REPLY TO THIS MESSAGE. THIS EMAIL ADDRESS IS NOT MONITORED." +msgstr "IKKE SVAR PÅ DENNE MELDINGEN. DENNEN EPOSTADRESSEN BLIR IKKE LEST." + +#: config/prefs.php.dist:99 +msgid "Date/Time format for search results" +msgstr "Dato/klokkeformat for søkeresultater" + +#: config/prefs.php.dist:46 +msgid "Default sorting criteria:" +msgstr "Standard sorteringskriterier:" + +#: config/prefs.php.dist:57 +msgid "Default sorting direction:" +msgstr "Standard sorteringsrekkefølge:" + +#: query.php:143 lib/Whups.php:202 +msgid "Delete" +msgstr "Slett" + +#: lib/Whups.php:649 lib/Whups.php:650 +#, php-format +msgid "Delete %s" +msgstr "Slett %s" + +#: ticket/delete.php:58 +#, php-format +msgid "Delete %s?" +msgstr "Slette %s?" + +#: admin.php:847 lib/Admin.php:725 +msgid "Delete Attribute" +msgstr "Slett egenskap" + +#: lib/Admin.php:771 +msgid "Delete Attribute Confirmation" +msgstr "Bekreft sletting av egenskap" + +#: admin.php:485 lib/Admin.php:549 +msgid "Delete Priority" +msgstr "Slett prioritet" + +#: lib/Admin.php:595 +msgid "Delete Priority Confirmation" +msgstr "Bekreft sletting av prioritet" + +#: lib/Query.php:145 +msgid "Delete Query" +msgstr "Slett spørring" + +#: lib/Query.php:882 +msgid "Delete Query?" +msgstr "Slette spørring?" + +#: admin.php:268 lib/Admin.php:119 +msgid "Delete Queue" +msgstr "Slett kø" + +#: lib/Admin.php:204 +msgid "Delete Queue Confirmation" +msgstr "Bekreft sletting av kø" + +#: templates/savedsearches.inc:45 templates/savedsearches.inc:46 +msgid "Delete Search" +msgstr "Slett søk" + +#: admin.php:375 lib/Admin.php:458 +msgid "Delete State" +msgstr "Slett tilstand" + +#: lib/Admin.php:507 +msgid "Delete State Confirmation" +msgstr "Bekreft sletting av tilstand" + +#: admin.php:646 lib/Admin.php:29 +msgid "Delete Subject" +msgstr "Slett emne" + +#: lib/Admin.php:80 +msgid "Delete Subject Confirmation" +msgstr "Bekreft sletting av emne" + +#: admin.php:114 lib/Admin.php:313 +msgid "Delete Type" +msgstr "Slett type" + +#: lib/Admin.php:384 +msgid "Delete Type Confirmation" +msgstr "Bekreft sletting av type" + +#: admin.php:738 lib/Admin.php:637 +msgid "Delete Version" +msgstr "Slett versjon" + +#: lib/Admin.php:683 +msgid "Delete Version Confirmation" +msgstr "Bekreft sletting av versjon" + +#: lib/Ticket.php:476 lib/Ticket.php:522 +msgid "Deleted Attachment" +msgstr "Slettet vedlegg" + +#: templates/comment.inc:62 +#, php-format +msgid "Deleted Attachment: %s" +msgstr "Slettet vedlegg: %s" + +#: config/prefs.php.dist:56 +msgid "Descending" +msgstr "Synkende" + +#: lib/Create.php:125 +msgid "Description" +msgstr "Beskrivelse" + +#: config/prefs.php.dist:10 +msgid "Display Options" +msgstr "Visningsvalg" + +#: lib/Whups.php:641 +msgid "Download" +msgstr "Last ned" + +#: query.php:144 +msgid "Edit" +msgstr "Rediger" + +#: lib/Admin.php:148 lib/Admin.php:338 +#, php-format +msgid "Edit %s" +msgstr "Rediger %s" + +#: admin.php:842 lib/Admin.php:725 lib/Admin.php:748 +msgid "Edit Attribute" +msgstr "Rediger egenskap" + +#: lib/Admin.php:372 +msgid "Edit Attributes" +msgstr "Rediger egenskaper" + +#: lib/Query.php:134 +msgid "Edit Permissions" +msgstr "Rediger tilganger" + +#: lib/Admin.php:362 +msgid "Edit Priorities" +msgstr "Rediger prioriteringer" + +#: admin.php:480 lib/Admin.php:549 lib/Admin.php:572 +msgid "Edit Priority" +msgstr "Rediger prioritering" + +#: lib/Query.php:126 +msgid "Edit Query" +msgstr "Rediger spørring" + +#: admin.php:262 lib/Admin.php:119 lib/Admin.php:122 +msgid "Edit Queue" +msgstr "Rediger kø" + +#: admin.php:32 lib/Admin.php:121 +msgid "Edit Queues" +msgstr "Rediger køer" + +#: admin.php:370 lib/Admin.php:458 lib/Admin.php:481 +msgid "Edit State" +msgstr "Rediger tilstand" + +#: lib/Admin.php:352 +msgid "Edit States" +msgstr "Rediger tilstander" + +#: admin.php:641 lib/Admin.php:29 lib/Admin.php:51 +msgid "Edit Subject" +msgstr "Rediger emne" + +#: admin.php:34 +msgid "Edit Subjects" +msgstr "Rediger emner" + +#: admin.php:108 lib/Admin.php:313 +msgid "Edit Type" +msgstr "Rediger type" + +#: admin.php:33 +msgid "Edit Types" +msgstr "Rediger typer" + +#: admin.php:733 lib/Admin.php:637 lib/Admin.php:660 +msgid "Edit Version" +msgstr "Rediger versjon" + +#: lib/Admin.php:724 +msgid "Edit or Delete Attributes" +msgstr "Rediger eller slett egenskaper" + +#: lib/Admin.php:548 +msgid "Edit or Delete Priorities" +msgstr "Rediger eller slett prioriteringer" + +#: lib/Admin.php:118 +msgid "Edit or Delete Queues" +msgstr "Rediger eller slett køer" + +#: lib/Admin.php:457 +msgid "Edit or Delete States" +msgstr "Rediger eller slett tilstander" + +#: lib/Admin.php:28 +msgid "Edit or Delete Subjects" +msgstr "Rediger eller slett emner" + +#: lib/Admin.php:312 +msgid "Edit or Delete Types" +msgstr "Rediger eller slett typer" + +#: lib/Admin.php:636 +msgid "Edit or Delete Versions" +msgstr "Rediger eller slett versjoner" + +#: lib/Admin.php:191 +msgid "Edit the permissions on this queue" +msgstr "Rediger tilganger til denne køen" + +#: lib/Admin.php:186 +msgid "Edit the users responsible for this queue" +msgstr "Endre brukere som er ansvarlig for denne køen" + +#: lib/Admin.php:165 +msgid "Edit the versions for this queue" +msgstr "Rediger versjoner for denne køen" + +#: ticket/watch.php:23 +msgid "Email address to notify" +msgstr "Epostadresse som skal varsles" + +#: ticket/watch.php:35 +msgid "Email address to remove" +msgstr "Epostadresser som skal fjernes" + +#: query.php:171 +#, php-format +msgid "Error: Unknown query form %s, defaulting to properties" +msgstr "Feil: Ukjent spørreform %s, går tilbake til standard" + +#: lib/Query.php:55 +msgid "Exact Match" +msgstr "Nøyaktig treff" + +#: runquery.php:69 runquery.php:83 lib/Query.php:138 +msgid "Execute Query" +msgstr "Kjør spørring" + +#: lib/Admin.php:809 +msgid "For tickets from these queues" +msgstr "For saker fra disse køene" + +#: lib/Admin.php:813 +msgid "For tickets which are" +msgstr "For saker som er" + +#: templates/menu.inc:5 lib/Block/summary.php:42 +msgid "Go" +msgstr "Kjør" + +#: lib/Block/summary.php:42 +msgid "GoTo: " +msgstr "Gå til: " + +#: query.php:136 +msgid "Group Criteria" +msgstr "Gruppekriterier" + +#: ticket/people.php:66 lib/Create.php:173 +msgid "Group Owners" +msgstr "Gruppeeiere" + +#: templates/queryrenderer.inc:98 lib/Query.php:596 lib/Query.php:598 +msgid "Groups" +msgstr "Grupper" + +#: lib/api.php:697 +msgid "Hidden Comments" +msgstr "Skjulte kommentarer" + +#: ticket/index.php:43 lib/Whups.php:189 +msgid "History" +msgstr "Historikk" + +#: query.php:145 +msgid "Hoist" +msgstr "Rykk opp ett nivå" + +#: templates/queryrenderer.inc:96 lib/Whups.php:470 lib/Query.php:671 +#: config/prefs.php.dist:36 +msgid "Id" +msgstr "Id" + +#: search.php:52 +msgid "" +"If you don't select any categories, no filtering will be done on ticket " +"category." +msgstr "" +"Hvis du ikke velger noen kategorier vil ingen filtrering bli utført på denne " +"sakskategorien." + +#: search.php:55 +msgid "" +"If you don't select any types, no filtering will be done on ticket type." +msgstr "" +"Hvis du ikke velger noen typer, vil ingen filtrering bli utført på denne " +"sakstypen." + +#: lib/Admin.php:816 +msgid "" +"If you select any tickets that do not have an owner, who should we send " +"email to?" +msgstr "" +"Hvis du velger meldinger som ikke har noen eier, hvem skal vi da sende epost " +"til?" + +#: query.php:146 +msgid "Insert And" +msgstr "Sett inn AND" + +#: lib/Query.php:515 +msgid "Insert Branch" +msgstr "Sett inn gren" + +#: query.php:148 +msgid "Insert Not" +msgstr "Sett inn NOT" + +#: query.php:147 +msgid "Insert Or" +msgstr "Sett inn OR" + +#: lib/Whups.php:160 +msgid "Invalid Ticket Id" +msgstr "Ugyldig saksid" + +#: lib/Admin.php:162 +msgid "Keep a set of versions for this queue?" +msgstr "Behold et versjonssett av denne køen?" + +#: templates/prevnext.inc:17 +msgid "Last>>" +msgstr "Siste>>" + +#: lib/Query.php:139 lib/Query.php:842 +msgid "Load Query" +msgstr "Laste inn spørring" + +#: config/prefs.php.dist:97 +msgid "MM/DD/YY" +msgstr "MM/DD/ÅÅ" + +#: config/prefs.php.dist:98 +msgid "MM/DD/YY HH:MM:SS" +msgstr "MM/DD/ÅÅ TT:MM:SS" + +#: lib/Admin.php:419 +#, php-format +msgid "Make a clone of %s" +msgstr "Lag en kloning av %s" + +#: lib/Query.php:770 +msgid "Match" +msgstr "Treff" + +#: lib/Query.php:540 lib/Query.php:628 lib/Query.php:771 +msgid "Match Operator" +msgstr "Sammenligningstype" + +#: lib/Query.php:59 +msgid "Match Pattern" +msgstr "Sammenlign mønster" + +#: lib/Query.php:58 +msgid "Match Word" +msgstr "Sammenlign ord" + +#: lib/Reports.php:20 +msgid "Maximum time a ticket is unresolved" +msgstr "Maksimal tid en sak er uløst" + +#: lib/Reports.php:21 +msgid "Minimum time a ticket is unresolved" +msgstr "Minimumstid en sak er uløst" + +#: config/prefs.php.dist:137 +msgid "Most recent first" +msgstr "Nyeste først" + +#: ticket/queue.php:173 +#, php-format +msgid "Moved ticket %d to \"%s\"" +msgstr "Flyttet sak %d til \"%s\"" + +#: mybugs.php:51 +#, php-format +msgid "My %s" +msgstr "Mine %s" + +#: mybugs_edit.php:121 +#, php-format +msgid "My %s :: Add Content" +msgstr "Mine %s :: Legg til innhold" + +#: search.php:192 lib/Block/myqueries.php:3 lib/Block/myqueries.php:26 +msgid "My Queries" +msgstr "Mine spørringer" + +#: search.php:187 lib/Block/mysearches.php:3 lib/Block/mysearches.php:24 +msgid "My QuickSearches" +msgstr "Mine hurtigsøk" + +#: lib/Block/myrequests.php:3 lib/Block/myrequests.php:24 +msgid "My Requests" +msgstr "Mine forespørsler" + +#: lib/Block/mytickets.php:3 lib/Block/mytickets.php:24 +#: config/prefs.php.dist:66 +msgid "My Tickets" +msgstr "Mine saker" + +#: lib/Ticket.php:537 +#, php-format +msgid "NEW: %s" +msgstr "NY: %s" + +#: lib/Query.php:819 lib/Query.php:857 +msgid "Name" +msgstr "Navn" + +#: lib/Admin.php:424 +msgid "Name of the cloned copy" +msgstr "Navn på den klonede kopien" + +#: lib/Driver.php:141 +msgid "New" +msgstr "Ny" + +#: lib/Ticket.php:475 lib/Ticket.php:517 +msgid "New Attachment" +msgstr "Nytt vedlegg" + +#: templates/comment.inc:55 templates/comment.inc:57 +#, php-format +msgid "New Attachment: %s" +msgstr "Nytt vedlegg: %s" + +#: lib/Query.php:124 lib/Block/myqueries.php:28 +msgid "New Query" +msgstr "Ny spørring" + +#: ticket/queue.php:37 +msgid "New Queue" +msgstr "Ny kø" + +#: ticket/people.php:75 +msgid "New State" +msgstr "Ny tilstand" + +#: ticket/create.php:27 lib/Block/summary.php:27 +msgid "New Ticket" +msgstr "Ny sak" + +#: ticket/type.php:34 +msgid "New Type" +msgstr "Ny type" + +#: templates/prevnext.inc:16 +msgid "Next>" +msgstr "Neste>" + +#: ticket/delete.php:37 lib/Admin.php:90 lib/Admin.php:217 lib/Admin.php:405 +#: lib/Admin.php:521 lib/Admin.php:609 lib/Admin.php:697 lib/Admin.php:785 +#: lib/Query.php:884 +msgid "No" +msgstr "Nei" + +#: lib/Block/myqueries.php:49 +msgid "No queries have been saved" +msgstr "Ingen spørringer har blitt lagret" + +#: clearsearch.php:34 +msgid "No searches cleared." +msgstr "Ingen søk fjernet." + +#: lib/Block/mysearches.php:43 +msgid "No searches have been saved" +msgstr "Ingen søk har blitt lagret" + +#: reports.php:17 +msgid "No stats available." +msgstr "Ingen statistikk tilgjengelig." + +#: lib/Driver.php:318 +#, php-format +msgid "No such backend \"%s\" found" +msgstr "Fant ikke backend \"%s\"" + +#: lib/Block/mytickets.php:50 lib/Block/summary.php:87 +#: lib/Block/myrequests.php:51 +msgid "No summary" +msgstr "Intet sammendrag" + +#: lib/Block/mytickets.php:60 lib/Block/myrequests.php:61 +msgid "No tickets are assigned to you." +msgstr "Det er ingen saker som er tildelt deg" + +#: lib/Whups.php:510 +msgid "No tickets matched your search criteria." +msgstr "Ingen saker inneholdt dine søkekriterier." + +#: lib/Block/summary.php:74 +msgid "No tickets to display" +msgstr "Ingen saker å vise" + +#: lib/Reports.php:88 +msgid "None" +msgstr "Ingen" + +#: templates/queryrenderer.inc:92 lib/Query.php:520 +msgid "Not" +msgstr "Ikke" + +#: query.php:77 +msgid "Not yet implemented." +msgstr "Foreløpig ikke implementert" + +#: config/prefs.php.dist:17 +msgid "Notification Options" +msgstr "Varslingsvalg" + +#: config/prefs.php.dist:117 +msgid "Only notify me of ticket changes from other users" +msgstr "Bare varsle meg ved saksendringer fra andre brukere" + +#: lib/Reports.php:11 +msgid "Open Tickets by Owner" +msgstr "Åpne saker etter eier" + +#: lib/Reports.php:9 +msgid "Open Tickets by Priority" +msgstr "Åpne saker etter prioritet" + +#: lib/Reports.php:6 +msgid "Open Tickets by Queue" +msgstr "Åpne saker etter kø" + +#: lib/Reports.php:10 +msgid "Open Tickets by Requester" +msgstr "Åpne saker etter innmelder" + +#: lib/Reports.php:7 +msgid "Open Tickets by State" +msgstr "Åpne saker etter tilstand" + +#: lib/Reports.php:8 +msgid "Open Tickets by Type" +msgstr "Åpne saker etter type" + +#: templates/queryrenderer.inc:91 lib/Query.php:519 +msgid "Or" +msgstr "Eller" + +#: config/prefs.php.dist:9 config/prefs.php.dist:16 +msgid "Other Options" +msgstr "Andre valg" + +#: templates/queryrenderer.inc:97 ticket/people.php:60 ticket/people.php:72 +#: lib/Create.php:167 lib/Create.php:179 lib/Whups.php:477 lib/Ticket.php:474 +#: lib/Ticket.php:509 lib/Ticket.php:510 lib/Ticket.php:512 lib/Ticket.php:596 +msgid "Owners" +msgstr "Eiere" + +#: lib/Whups.php:196 +msgid "People" +msgstr "Personer" + +#: lib/Whups.php:649 +#, php-format +msgid "Permanently delete %s?" +msgstr "Slette %s for godt?" + +#: ticket/update.php:22 ticket/people.php:21 ticket/type.php:17 +#: ticket/delete.php:17 ticket/queue.php:17 ticket/deleteAttachment.php:17 +msgid "Permission Denied" +msgstr "Tilgang nektet" + +#: ticket/update.php:83 ticket/delete.php:44 +msgid "Permission Denied." +msgstr "Tilgang nektet." + +#: runquery.php:35 query.php:29 lib/Query.php:894 +msgid "Permission denied." +msgstr "Tilgang nektet." + +#: lib/Admin.php:360 lib/Admin.php:402 +msgid "Priorities for this Type" +msgstr "Prioriteter for denne typen" + +#: templates/queryrenderer.inc:138 ticket/update.php:52 ticket/type.php:69 +#: ticket/queue.php:116 lib/Create.php:122 lib/Whups.php:474 +#: lib/Ticket.php:466 lib/Ticket.php:594 lib/Query.php:699 +#: config/prefs.php.dist:40 +msgid "Priority" +msgstr "Prioritet" + +#: templates/comment.inc:99 +#, php-format +msgid "Priority ⇒ %s" +msgstr "Prioritet ⇒ %s" + +#: lib/Admin.php:537 lib/Admin.php:583 lib/Admin.php:606 +msgid "Priority Description" +msgstr "Prioritetsbeskrivelse" + +#: lib/Admin.php:536 lib/Admin.php:561 lib/Admin.php:580 lib/Admin.php:603 +msgid "Priority Name" +msgstr "Prioritetsnavn" + +#: query.php:134 +msgid "Property Criteria" +msgstr "Egenskapskriterier" + +#: query.php:152 +msgid "Query Builder" +msgstr "Spørringsgenerator" + +#: lib/Query.php:95 +msgid "Query Parameters" +msgstr "Spørringsparametre" + +#: runquery.php:77 +msgid "Query Results" +msgstr "Spørringsresultater" + +#: search.php:48 templates/queryrenderer.inc:107 lib/Whups.php:475 +#: lib/Ticket.php:463 lib/Ticket.php:575 lib/Ticket.php:579 lib/Query.php:682 +#: config/prefs.php.dist:41 +msgid "Queue" +msgstr "Kø" + +#: templates/comment.inc:107 +#, php-format +msgid "Queue ⇒ %s" +msgstr "Kø ⇒ %s" + +#: lib/Admin.php:106 lib/Admin.php:155 lib/Admin.php:214 +msgid "Queue Description" +msgstr "Købeskrivelse" + +#: lib/Admin.php:105 lib/Admin.php:134 lib/Admin.php:152 lib/Admin.php:211 +#: lib/Create.php:33 lib/Create.php:41 +msgid "Queue Name" +msgstr "Kønavn" + +#: ticket/queue.php:85 lib/Create.php:80 lib/Ticket.php:584 lib/Ticket.php:588 +msgid "Queue Version" +msgstr "Køversjon" + +#: admin.php:35 templates/admin/mtmatrix.inc:6 +msgid "Queue/Type Matrix" +msgstr "Kø/type-matrise" + +#: search.php:139 +#, php-format +msgid "Queue: %s, Ticket: %s, Category: %s, Type: %s, Summary: %s" +msgstr "Kø: %s, Sak: %s, Kategori: %s, Type: %s, Sammendrag: %s" + +#: lib/api.php:156 lib/api.php:700 +msgid "Queues" +msgstr "Køer" + +#: lib/Ticket.php:539 +#, php-format +msgid "RESOLVED: %s" +msgstr "LØST: %s" + +#: lib/Admin.php:786 +msgid "Really delete this attribute? This may cause data problems!" +msgstr "" +"Ønsker du virkelig å slette denne egenskapen? Det kan forårsake " +"dataproblemer!" + +#: lib/Admin.php:610 +msgid "Really delete this priority? This may cause data problems!" +msgstr "" +"Ønsker du virkelig å slette denne prioriteten? Det kan forårsake " +"dataproblemer!" + +#: lib/Query.php:885 +msgid "Really delete this query? This operation is not undoable." +msgstr "" +"Ønsker du virkelig å slette denne spørringen? Handlingen kan ikke gjøres om." + +#: lib/Admin.php:218 +msgid "Really delete this queue? This may cause data problems!" +msgstr "" +"Ønsker du virkelig å slette denne køen? Det kan forårsake dataproblemer!" + +#: lib/Admin.php:522 +msgid "Really delete this state? This may cause data problems!" +msgstr "" +"Ønsker du virkelig å slette denne tilstanden? Det kan forårsake " +"dataproblemer!" + +#: lib/Admin.php:91 +msgid "Really delete this subject? This may cause data problems!" +msgstr "" +"Ønsker du virkelig å slette dette emnet? Det kan forårsake dataproblemer!" + +#: ticket/delete.php:38 +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "Ønsker du virkelig å slette denne saken? Den vil IKKE bli arkivert!" + +#: lib/Admin.php:406 +msgid "Really delete this type? This may cause data problems!" +msgstr "" +"Ønsker du virkelig å slette denne typen? Det kan forårsake dataproblemer!" + +#: lib/Admin.php:698 +msgid "Really delete this version? This may cause data problems!" +msgstr "" +"Ønsker du virkelig å slette denne versjonen? Det kan forårsake dataproblemer!" + +#: search.php:169 +msgid "Refine Search" +msgstr "Endre søk" + +#: admin.php:922 +msgid "Reminders were sent." +msgstr "Påminnelser ble sendt." + +#: lib/Admin.php:267 +msgid "Remove User" +msgstr "Fjern bruker" + +#: ticket/watch.php:48 +msgid "Remove Watcher" +msgstr "Fjern overvåker" + +#: reports.php:22 +msgid "Reports" +msgstr "Rapporter" + +#: templates/queryrenderer.inc:99 lib/Ticket.php:599 +msgid "Requester" +msgstr "Innmelder" + +#: lib/Whups.php:480 lib/Ticket.php:602 lib/Driver.php:143 +#: config/prefs.php.dist:45 +msgid "Resolved" +msgstr "Løst" + +#: lib/Admin.php:269 +msgid "Responsible Users" +msgstr "Ansvarlige brukere" + +#: ticket/update.php:76 +msgid "Restrict Comment to:" +msgstr "Begrens kommentar til:" + +#: lib/Admin.php:170 +msgid "Restrict ticket subjects to a specified list?" +msgstr "Begrense saksemner til en angitt liste?" + +#: templates/prevnext.inc:25 +msgid "Return to Search Results" +msgstr "Returner til søkeresultater" + +#: templates/searchresults.inc:94 +msgid "Save" +msgstr "Lagre" + +#: lib/Query.php:142 lib/Query.php:817 +msgid "Save Query" +msgstr "Lagre spørring" + +#: templates/searchresults.inc:88 +msgid "Save these results as: " +msgstr "Lagre resultatene som: " + +#: lib/Query.php:774 +#, php-format +msgid "Search %s Attribute" +msgstr "Søk %s egenskap" + +#: lib/Query.php:777 +msgid "Search Attribute" +msgstr "Søkeegenskap" + +#: lib/Query.php:543 lib/Query.php:630 +msgid "Search Comments" +msgstr "Søkekommentarer" + +#: lib/Query.php:541 +msgid "Search Owners" +msgstr "Søkeeiere" + +#: lib/Query.php:542 +msgid "Search Requester" +msgstr "Søkeinnmelder" + +#: search.php:164 +msgid "Search Results" +msgstr "Søkeresultater" + +#: templates/prevnext.inc:21 +#, php-format +msgid "Search Results: %s of %s" +msgstr "Søkeresultater: %s av %s" + +#: lib/Query.php:629 +msgid "Search Summary" +msgstr "Søkesammendrag" + +#: search.php:64 search.php:180 config/prefs.php.dist:67 +msgid "Search Tickets" +msgstr "Søk i saker" + +#: clearsearch.php:27 +msgid "Search cleared." +msgstr "Søk fjernet." + +#: clearsearch.php:30 +msgid "Searches cleared." +msgstr "Søk fjernet." + +#: config/prefs.php.dist:69 +msgid "Select the view to display after login:" +msgstr "Velg hva som skal vises etter pålogging:" + +#: admin.php:36 lib/Admin.php:797 +msgid "Send Reminders" +msgstr "Send påminnelser" + +#: lib/Admin.php:808 +msgid "Send only for this list of ticket ids" +msgstr "Bare send for denne listens saksnumre" + +#: lib/Whups.php:200 +msgid "Set Queue" +msgstr "Angi kø" + +#: ticket/queue.php:194 ticket/queue.php:203 ticket/queue.php:215 +msgid "Set Queue - Step 1" +msgstr "Angi kø - Steg 1" + +#: ticket/queue.php:195 ticket/queue.php:204 +msgid "Set Queue - Step 2" +msgstr "Angi kø - Steg 2" + +#: ticket/queue.php:205 +msgid "Set Queue - Step 3" +msgstr "Angi kø - Steg 3" + +#: ticket/queue.php:181 +#, php-format +msgid "Set Queue for %s" +msgstr "Angi kø for %s" + +#: lib/Whups.php:201 +msgid "Set Type" +msgstr "Angi type" + +#: ticket/type.php:137 ticket/type.php:146 +msgid "Set Type - Step 1" +msgstr "Angi type - Steg 1" + +#: ticket/type.php:138 +msgid "Set Type - Step 2" +msgstr "Angi type - Steg 2" + +#: ticket/type.php:124 +#, php-format +msgid "Set Type for %s" +msgstr "Angi type for %s" + +#: config/prefs.php.dist:108 +msgid "Show \"(X Days Ago)\" in Date field of search results?" +msgstr "Vis \"(X Dager siden)\" i datofeltet til søkeresultatene?" + +#: config/prefs.php.dist:135 +msgid "Show comments in chronological order, or most recent first?" +msgstr "Vis kommentarer i kronologisk rekkefølge, eller nyeste først?" + +#: config/prefs.php.dist:86 +msgid "Show ticket IDs in the summary view?" +msgstr "Vis saksnumre i sammendragsvisningen?" + +#: config/prefs.php.dist:78 +msgid "Show tickets you have requested in the summary view?" +msgstr "Vis saker du har forespurt i sammendragsvisningen?" + +#: config/templates.php.dist:16 +msgid "Simple HTML Report" +msgstr "Enkel HTML-rapport" + +#: templates/searchresults.inc:113 templates/searchresults.inc:116 +#, php-format +msgid "Sort by %s" +msgstr "Sorter etter %s" + +#: templates/queryrenderer.inc:130 ticket/update.php:49 ticket/type.php:68 +#: ticket/queue.php:115 lib/Whups.php:472 lib/Ticket.php:465 +#: lib/Ticket.php:593 lib/Query.php:694 config/prefs.php.dist:38 +msgid "State" +msgstr "Tilstand" + +#: templates/comment.inc:95 +#, php-format +msgid "State ⇒ %s" +msgstr "Tilstand ⇒ %s" + +#: lib/Admin.php:446 lib/Admin.php:495 +msgid "State Category" +msgstr "Tilstandskategori" + +#: lib/Admin.php:445 lib/Admin.php:492 lib/Admin.php:518 +msgid "State Description" +msgstr "Beskrivelse av tilstand" + +#: lib/Admin.php:444 lib/Admin.php:470 lib/Admin.php:489 lib/Admin.php:515 +msgid "State Name" +msgstr "Tilstandsnavn" + +#: lib/Admin.php:350 lib/Admin.php:398 +msgid "States for this Type" +msgstr "Tilstander for denne typen" + +#: lib/Create.php:123 config/prefs.php.dist:37 +msgid "Subject" +msgstr "Emne" + +#: lib/Admin.php:17 lib/Admin.php:40 lib/Admin.php:65 lib/Admin.php:87 +msgid "Subject Name" +msgstr "Navn på emne" + +#: lib/Admin.php:174 +msgid "Subjects associated with this Queue" +msgstr "Emner knyttet til denne køen" + +#: ticket/create.php:102 +msgid "Submit" +msgstr "Send" + +#: admin.php:161 +#, php-format +msgid "Successfully Cloned %s to %s." +msgstr "Klonet %s til %s." + +#: ticket/type.php:115 +msgid "Successfully changed ticket type." +msgstr "Endre sakstypen." + +#: templates/queryrenderer.inc:102 ticket/update.php:46 ticket/delete.php:34 +#: lib/Whups.php:471 lib/Ticket.php:473 lib/Ticket.php:488 lib/Ticket.php:489 +#: lib/Ticket.php:491 lib/Ticket.php:573 +msgid "Summary" +msgstr "Sammendrag" + +#: templates/comment.inc:49 +#, php-format +msgid "Summary ⇒ %s" +msgstr "Sammendrag ⇒ %s" + +#: search.php:50 +msgid "Summary like" +msgstr "Sammendrag liknende" + +#: templates/comment.inc:71 +#, php-format +msgid "Taken from %s" +msgstr "Tatt fra %s" + +#: lib/Query.php:627 +msgid "Text" +msgstr "Tekst" + +#: query.php:138 +msgid "Text Criteria" +msgstr "Tekstkriterier" + +#: view.php:44 lib/Ticket.php:339 lib/Ticket.php:377 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "VFS-driveren må være konfigurert for å kunne laste opp vedlegg." + +#: admin.php:811 +#, php-format +msgid "The attribute \"%s\" has been added to %s." +msgstr "Egenskapen \"%s\" har blitt lagt til %s." + +#: admin.php:893 +msgid "The attribute has been deleted." +msgstr "Egenskapen har blitt slettet." + +#: admin.php:864 +msgid "The attribute has been modified." +msgstr "Egenskapen har blitt endret." + +#: admin.php:898 +msgid "The attribute was not deleted." +msgstr "Egenskapen ble ikke slettet." + +#: admin.php:449 +#, php-format +msgid "The priority \"%s\" has been added to %s." +msgstr "Prioriteten \"%s\" har blit lagt til %s." + +#: admin.php:530 +msgid "The priority has been deleted." +msgstr "Prioriteten har blitt slettet." + +#: admin.php:502 +msgid "The priority has been modified." +msgstr "Prioriteten har blitt endret." + +#: admin.php:535 +msgid "The priority was not deleted." +msgstr "Prioriteten ble ikke slettet." + +#: lib/Query.php:898 +#, php-format +msgid "The query \"%s\" couldn't be deleted: %s" +msgstr "Spørringen \"%s\" kunne ikke bli slettet: %s" + +#: lib/Query.php:900 +#, php-format +msgid "The query \"%s\" has been deleted." +msgstr "Spørringen \"%s\" har blitt slettet." + +#: lib/Query.php:865 +msgid "The query couldn't be loaded:" +msgstr "Spørringen kunne ikke bli lastet inn:" + +#: admin.php:240 +#, php-format +msgid "The queue \"%s\" has been created." +msgstr "Spørringen \"%s\" har blitt opprettet." + +#: admin.php:318 +msgid "The queue has been deleted." +msgstr "Køen har blitt slettet." + +#: admin.php:290 +msgid "The queue has been modified." +msgstr "Køen har blitt endret." + +#: admin.php:323 +msgid "The queue was not deleted." +msgstr "Køen ble ikke slettet." + +#: lib/MIME/Viewer/zip.php:60 +msgid "The requested file does not exist in the Zip attachment." +msgstr "Den forespurte filen eksisterer ikke i den vedlagte Zip-filen." + +#: data.php:24 +msgid "The requested template does not exist." +msgstr "Den forespurte malen eksisterer ikke." + +#: admin.php:338 +#, php-format +msgid "The state \"%s\" has been added to %s." +msgstr "Tilstanden \"%s\" har blitt lagt til %s." + +#: admin.php:421 +msgid "The state has been deleted." +msgstr "Tilstanden har blitt slettet." + +#: admin.php:392 +msgid "The state has been modified." +msgstr "Tilstanden har blitt endret." + +#: admin.php:426 +msgid "The state was not deleted." +msgstr "Tilstanden ble ikke slettet." + +#: admin.php:625 +#, php-format +msgid "The subject \"%s\" has been added." +msgstr "Emnet \"%s\" har blitt lagt til." + +#: admin.php:681 +msgid "The subject has been deleted." +msgstr "Emnet har blitt slettet." + +#: admin.php:662 +msgid "The subject has been modified." +msgstr "Emnet har blitt endret." + +#: admin.php:686 +msgid "The subject was not deleted." +msgstr "Emnet ble ikke slettet." + +#: ticket/delete.php:75 +msgid "The ticket was not deleted." +msgstr "Saken ble ikke slettet." + +#: admin.php:179 +#, php-format +msgid "The type \"%s\" has been modified." +msgstr "Typen \"%s\" har blitt endret." + +#: admin.php:221 +msgid "The type has been deleted." +msgstr "Typen har blitt slettet." + +#: admin.php:226 +msgid "The type was not deleted." +msgstr "Typen ble ikke slettet." + +#: admin.php:701 +#, php-format +msgid "The version \"%s\" has been added to %s." +msgstr "Versjonen \"%s\" har blitt lagt til %s." + +#: admin.php:783 +msgid "The version has been deleted." +msgstr "Versjonen har blitt slettet." + +#: admin.php:755 +msgid "The version has been modified." +msgstr "Versjonen har blitt endret." + +#: admin.php:788 +msgid "The version was not deleted." +msgstr "Versjonen ble ikke slettet." + +#: lib/Admin.php:733 +msgid "There are no attribute types to edit" +msgstr "Det finnes ingen egenskaper å redigere" + +#: lib/Query.php:777 +msgid "There are no attributes defined for the current type" +msgstr "Det finnes ingen egenskaper definert for den gjeldende typen" + +#: lib/Admin.php:557 +msgid "There are no priorities to edit" +msgstr "Det finnes ingen prioriteringer å redigere" + +#: lib/Admin.php:805 +msgid "There are no queues available." +msgstr "Det finnes ingen køer tilgjengelig." + +#: lib/Admin.php:131 +msgid "There are no queues to edit" +msgstr "Det finnes ingen køer å redigere" + +#: lib/Create.php:41 +msgid "There are no queues which you can create tickets in." +msgstr "Det finnes ingen køer du kan opprettet saker i." + +#: search.php:42 +msgid "There are no queues which you can search." +msgstr "Det finnes ingen køer du kan søke i." + +#: lib/Admin.php:466 +msgid "There are no states to edit" +msgstr "Det finnes ingen tilstander å redigere" + +#: lib/Admin.php:37 +msgid "There are no subjects to edit" +msgstr "Det finnes ingen emner å redigere" + +#: lib/Create.php:64 +msgid "" +"There are no ticket types associated with this queue; until there are, you " +"cannot create any tickets in this queue." +msgstr "" +"Det er ingen sakstyper knyttet til denne køen; inntil det er så kan du ikke " +"opprette noen saker i denne køen." + +#: lib/Admin.php:321 +msgid "There are no types to edit" +msgstr "Det finnes ingen typer å redigere" + +#: lib/Admin.php:283 +msgid "There are no users responsible for this queue." +msgstr "Ingen brukere er ansvarlige for denne køen." + +#: ticket/people.php:71 lib/Create.php:178 +msgid "There are no users to which this ticket can be assigned." +msgstr "Det finnes ingen brukere denne køen kan knyttes opp mot." + +#: lib/Admin.php:645 +msgid "There are no versions to edit" +msgstr "Det finnes ingen versjoner å redigere" + +#: graph.php:30 +msgid "There is no data for this graph." +msgstr "Det finnes ikke data for denne grafen." + +#: lib/Reports.php:161 +msgid "There is no data for this report." +msgstr "Det finnes ikke data for denne rapporten " + +#: admin.php:569 +#, php-format +msgid "There was an error adding \"%s\" to the responsible list for \"%s\": %s" +msgstr "" +"Det oppstod en feil når \"%s\" skulle legges til listen over ansvarlige for " +"\"%s\": %s" + +#: admin.php:627 +#, php-format +msgid "There was an error adding the subject: %s." +msgstr "Det oppstod en feil når emnet %s skulle legges til." + +#: admin.php:814 +#, php-format +msgid "There was an error creating the attribute: %s." +msgstr "Det oppstod en feil under oppretting av egenskapen: %s." + +#: admin.php:451 +#, php-format +msgid "There was an error creating the priority: %s." +msgstr "Det oppstod en feil under oppretting av prioriteten: %s." + +#: admin.php:248 +#, php-format +msgid "There was an error creating the queue: %s." +msgstr "Det oppstod en feil under oppretting av køen: %s." + +#: admin.php:340 +#, php-format +msgid "There was an error creating the state: %s." +msgstr "Det oppstod en feil under oppretting av tilstanden: %s." + +#: admin.php:703 +#, php-format +msgid "There was an error creating the version: %s." +msgstr "Det oppstod en feil under oppretting av versjonen: %s." + +#: admin.php:895 +#, php-format +msgid "There was an error deleting the attribute: %s." +msgstr "Det oppstod en feil ved sletting av egenskapen: %s." + +#: admin.php:532 +#, php-format +msgid "There was an error deleting the priority: %s." +msgstr "Det oppstod en feil ved sletting av prioriteten: %s." + +#: admin.php:320 +#, php-format +msgid "There was an error deleting the queue: %s." +msgstr "Det oppstod en feil ved sletting av køen: %s." + +#: admin.php:423 +#, php-format +msgid "There was an error deleting the state: %s." +msgstr "Det oppstod en feil ved sletting av tilstanden: %s." + +#: admin.php:683 +#, php-format +msgid "There was an error deleting the subject: %s." +msgstr "Det oppstod en feil ved sletting av emnet: %s." + +#: ticket/delete.php:72 +#, php-format +msgid "There was an error deleting the ticket: %s" +msgstr "Det oppstod en feil ved sletting av saken: %s." + +#: admin.php:223 +#, php-format +msgid "There was an error deleting the type: %s." +msgstr "Det oppstod en feil ved sletting av typen: %s." + +#: admin.php:785 +#, php-format +msgid "There was an error deleting the version: %s." +msgstr "Det oppstod en feil ved sletting av versjonen: %s." + +#: admin.php:871 +#, php-format +msgid "There was an error editing the attribute: %s." +msgstr "Det oppstod en feil ved redigering av egenskapen: %s." + +#: admin.php:507 +#, php-format +msgid "There was an error editing the priority: %s." +msgstr "Det oppstod en feil ved redigering av prioriteten: %s." + +#: admin.php:304 +#, php-format +msgid "There was an error editing the queue: %s." +msgstr "Det oppstod en feil ved redigering av køen: %s." + +#: admin.php:397 +#, php-format +msgid "There was an error editing the state: %s." +msgstr "Det oppstod en feil ved redigering av tilstanden: %s." + +#: admin.php:667 +#, php-format +msgid "There was an error editing the subject: %s." +msgstr "Det oppstod en feil ved redigering av emnet: %s." + +#: admin.php:760 +#, php-format +msgid "There was an error editing the version: %s." +msgstr "Det oppstod en feil ved redigering av versjonen: %s." + +#: lib/Admin.php:243 +#, php-format +msgid "There was an error listing users: %s; %s" +msgstr "Det oppstod en feil ved visning av brukerliste: %s; %s" + +#: admin.php:177 +#, php-format +msgid "There was an error modifying the type: %s." +msgstr "Det oppstod en feil under modifisering av typen: %s." + +#: search.php:158 +#, php-format +msgid "There was an error performing your search: %s" +msgstr "Det oppstod en feil ved utføring av søket: %s" + +#: admin.php:605 +#, php-format +msgid "" +"There was an error removing \"%s\" from the responsible list for \"%s\": %s" +msgstr "" +"Det oppstod en feil ved fjerning av \"%s\" fra listen over ansvarlige for \"%" +"s\": %s" + +#: data.php:27 +msgid "This is not a search results template." +msgstr "Dette er ikke en mal for søkeresultater." + +#: lib/Admin.php:57 +msgid "This is not a valid subject." +msgstr "Dette er ikke et gyldig emne." + +#: ticket/queue.php:80 lib/Create.php:75 +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this queue, you will not " +"be able to create tickets." +msgstr "" +"Denne køen krever at du angir en versjon, men det finnes ingen versjoner " +"knyttet til den. Inntil versjoner er opprettet for denne køen vil du ikke " +"kunne opprette nye saker." + +#: lib/Ticket.php:485 +msgid "Ticket" +msgstr "Sak" + +#: ticket/delete.php:68 +#, php-format +msgid "Ticket %d has been deleted." +msgstr "Sak %d er blitt slettet." + +#: lib/api.php:746 +#, php-format +msgid "Ticket %s - %s" +msgstr "Sak %s - %s" + +#: lib/Driver/sql.php:869 +#, php-format +msgid "Ticket %s was not found." +msgstr "Sak %s ble ikke funnet." + +#: search.php:49 +msgid "Ticket ID" +msgstr "Saksnr" + +#: lib/Create.php:121 +msgid "Ticket State" +msgstr "Sakstilstand" + +#: templates/reports/stats.inc:3 +msgid "Ticket Stats" +msgstr "Saksstatistikk" + +#: lib/Block/summary.php:3 +msgid "Ticket Summary" +msgstr "Sakssammendrag" + +#: lib/Create.php:69 +msgid "Ticket Type" +msgstr "Sakstype" + +#: lib/Admin.php:158 +msgid "Ticket Types associated with this Queue" +msgstr "Sakstyper knyttet til denne køen" + +#: lib/Ticket.php:481 +#, php-format +msgid "Ticket URL: %s\n" +msgstr "SaksURL: %s\n" + +#: ticket/update.php:137 +msgid "Ticket Updated" +msgstr "Sak oppdatert" + +#: lib/api.php:767 +msgid "Tickets" +msgstr "Saker" + +#: lib/Block/summary.php:51 +msgid "Tickets assigned to you" +msgstr "Saker som er tildelt deg" + +#: search.php:52 +msgid "Tickets which are" +msgstr "Saker som er" + +#: lib/Block/summary.php:68 +msgid "Tickets you requested" +msgstr "Saker du forespurte" + +#: templates/queryrenderer.inc:121 ticket/queue.php:88 lib/Whups.php:473 +#: lib/Ticket.php:467 lib/Ticket.php:592 lib/Query.php:674 +#: config/prefs.php.dist:39 +msgid "Type" +msgstr "Type" + +#: templates/comment.inc:103 +#, php-format +msgid "Type ⇒ %s" +msgstr "Type ⇒ %s" + +#: lib/Admin.php:301 lib/Admin.php:345 lib/Admin.php:394 +msgid "Type Description" +msgstr "Typebeskrivelse" + +#: lib/Admin.php:300 lib/Admin.php:324 lib/Admin.php:342 lib/Admin.php:391 +msgid "Type Name" +msgstr "Typenavn" + +#: search.php:55 +msgid "Types" +msgstr "Typer" + +#: lib/Ticket.php:597 +msgid "Unassigned" +msgstr "Ikke tildelt" + +#: lib/Admin.php:816 +msgid "Unassigned tickets" +msgstr "Ikke tildelte saker" + +#: lib/Driver.php:140 +msgid "Unconfirmed" +msgstr "Ubekreftet" + +#: templates/queryrenderer.inc:148 templates/queryrenderer.inc:188 +#, php-format +msgid "Unknown node type %s" +msgstr "Ukjent nodetype %s" + +#: templates/comment.inc:84 lib/Whups.php:191 lib/api.php:714 +msgid "Update" +msgstr "Oppdater" + +#: ticket/update.php:153 +#, php-format +msgid "Update %s" +msgstr "Oppdater %s" + +#: templates/admin/mtmatrix.inc:29 +msgid "Update Associations" +msgstr "Oppdater koblinger" + +#: ticket/people.php:134 +#, php-format +msgid "Update People for %s" +msgstr "Oppdater personer for %s" + +#: lib/Ticket.php:472 lib/Ticket.php:486 +msgid "Updated By" +msgstr "Oppdatert av" + +#: lib/Admin.php:242 lib/Admin.php:252 lib/Admin.php:255 +msgid "User" +msgstr "Bruker" + +#: query.php:135 +msgid "User Criteria" +msgstr "Brukerkriterier" + +#: lib/Query.php:539 +msgid "User ID" +msgstr "BrukerID" + +#: lib/Admin.php:184 +msgid "Users responsible for this Queue" +msgstr "Brukere ansvarlige for denne køen" + +#: lib/Admin.php:287 +msgid "Users responsible for this queue" +msgstr "Brukere asvarlige for denne køen" + +#: templates/queryrenderer.inc:115 lib/Whups.php:476 lib/Ticket.php:464 +#: lib/Query.php:686 config/prefs.php.dist:42 +msgid "Version" +msgstr "Versjon" + +#: lib/Admin.php:625 lib/Admin.php:671 lib/Admin.php:694 +msgid "Version Description" +msgstr "Versjonsbeskrivelse" + +#: lib/Admin.php:624 lib/Admin.php:649 lib/Admin.php:668 lib/Admin.php:691 +msgid "Version Name" +msgstr "Versjonsnavn" + +#: templates/reports/graphs.inc:13 +msgid "View Graphs" +msgstr "Vis grafer" + +#: ticket/people.php:91 ticket/type.php:46 ticket/comment.php:42 +#: ticket/queue.php:51 +msgid "Viewable only by members of" +msgstr "Kun synlig for medlemmer av" + +#: lib/Whups.php:194 +msgid "Watch" +msgstr "Overvåk" + +#: ticket/watch.php:76 +#, php-format +msgid "Watchers for %s" +msgstr "Overvåkere for %s" + +#: config/prefs.php.dist:95 +msgid "Weekday Day Month" +msgstr "Ukedag Dag Måned" + +#: config/prefs.php.dist:96 +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "Ukedag Dag Måned TT:MM:SS TZ" + +#: ticket/delete.php:37 lib/Admin.php:90 lib/Admin.php:217 lib/Admin.php:405 +#: lib/Admin.php:521 lib/Admin.php:609 lib/Admin.php:697 lib/Admin.php:785 +#: lib/Query.php:884 +msgid "Yes" +msgstr "Ja" + +#: mybugs_edit.php:67 +#, php-format +msgid "You are not allowed to create more than %d blocks." +msgstr "Du har ikke lov til å lage flere enn %d blokker." + +#: view.php:40 +msgid "You are not allowed to view this ticket." +msgstr "Du har ikke lov til å se på denne saken." + +#: lib/Driver/sql.php:872 +#, php-format +msgid "You do not have permission to access this ticket (%s)." +msgstr "Du har ikke rettigheter til å gå inn på denne saken (%s)." + +#: lib/Query.php:854 +msgid "You have no saved queries." +msgstr "Du har ingen lagrede spørringer." + +#: lib/Whups.php:504 +msgid "You must select at least one queue to send reminders for." +msgstr "Du må velge minst en kø det skal sendes påminnelser for." + +#: ticket/comment.php:26 lib/Create.php:35 +msgid "Your Email Address" +msgstr "Din epostadresse" + +#: ticket/create.php:157 +#, php-format +msgid "" +"Your ticket ID is %s. An appropriate person has been notified of this " +"request." +msgstr "" +"Ditt saksnummer er %s. En kyndig person har fått en melding om denne " +"forespørselen." + +#: lib/Whups.php:569 +msgid "_Admin" +msgstr "_Admin" + +#: lib/Whups.php:558 +#, php-format +msgid "_My %s" +msgstr "_Mine %s" + +#: lib/Whups.php:561 +msgid "_New Ticket" +msgstr "_Ny Sak" + +#: lib/Whups.php:563 +msgid "_Query Builder" +msgstr "Spørringsgenerator" + +#: lib/Whups.php:565 +msgid "_Reports" +msgstr "_Rapporter" + +#: lib/Whups.php:560 +msgid "_Search" +msgstr "Søk" + +#: templates/queryrenderer.inc:168 +msgid "contains (case insensitive) substring" +msgstr "inneholder (case insensitiv) substreng" + +#: templates/queryrenderer.inc:172 +msgid "contains (case sensitive) substring" +msgstr "inneholder (case sensitive) substreng" + +#: templates/queryrenderer.inc:176 +msgid "contains the word" +msgstr "inneholder ordet" + +#: scripts/mail-filter.php:176 +#, php-format +msgid "error processing message: %s" +msgstr "feil ved prosessering av melding: %s" + +#: lib/api.php:755 +msgid "estimated time" +msgstr "estimert tid" + +#: templates/queryrenderer.inc:164 +msgid "is" +msgstr "er" + +#: templates/queryrenderer.inc:156 +msgid "is greater than" +msgstr "er større enn" + +#: templates/queryrenderer.inc:160 +msgid "is less than" +msgstr "er mindre enn" + +#: templates/queryrenderer.inc:180 +msgid "matches the pattern" +msgstr "er likt mønsteret" diff --git a/whups/po/nl_NL.po b/whups/po/nl_NL.po new file mode 100644 index 000000000..53e7e2575 --- /dev/null +++ b/whups/po/nl_NL.po @@ -0,0 +1,2029 @@ +# Dutch translation for Whups +# Copyright 2004-2009 The Horde Project +# This file is distributed under the same license as the Whups package. +# Stefan de Konink , 2004. (Initial Version) +# Updated Han Spruyt, 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: Whups-0.0.1-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2005-11-28 15:02+0100\n" +"PO-Revision-Date: 2004-01-16 00:30+0100\n" +"Last-Translator: Stefan de Konink \n" +"Language-Team: Dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin.php:603 +#, php-format +msgid "\"%s\" is no longer among those responsible for \"%s\"" +msgstr "\"%s\" is niet langer verantwoordelijk voor '%s'" + +#: templates/menu.inc:5 +msgid "#Id" +msgstr "#Id" + +#: lib/Driver.php:278 +#, php-format +msgid "%s (%s) wrote:" +msgstr "%s (%s) schreef:" + +#: admin.php:567 +#, php-format +msgid "%s added to those responsible for \"%s\"" +msgstr "%s toegevoegd aan de verantwoordelijken voor \"%s\"" + +#: templates/reports/stats.inc:17 +#, php-format +msgid "%s days" +msgstr "%s dagen" + +#: ticket/watch.php:58 +#, php-format +msgid "%s will be notified when this ticket is updated." +msgstr "%s krijgt een melding dat deze ticket is bijgewerkt." + +#: ticket/watch.php:70 +#, php-format +msgid "%s will no longer receive updates for this ticket." +msgstr "%s krijgt niet langer meldingen over bewerking van deze ticket." + +#: admin.php:81 +msgid "- Stage 1" +msgstr "- Stap 1" + +#: admin.php:86 +msgid "- Stage 2" +msgstr "- Stap 2" + +#: scripts/mail-filter.php:158 +msgid "--priority or --priority-id must specify a valid Priority." +msgstr "--prioriteit of --prioriteit-id moet een geldigen Prioriteit zijn." + +#: scripts/mail-filter.php:152 +msgid "--queue or --queue-id must specify a valid Queue." +msgstr "--queue of --queue-id moet een geldige Queue zijn." + +#: scripts/mail-filter.php:161 +msgid "--state or --state-id must specify a valid State." +msgstr "--status of --status-id moet een geldige Status zijn." + +#: scripts/mail-filter.php:155 +msgid "--type or --type-id must specify a valid Type." +msgstr "--type of --type-id moet een geldig Type zijn." + +#: templates/prevnext.inc:12 +msgid "<No summary" +msgstr "Geen samenvatting" + +#: view.php:55 +#, php-format +msgid "Access denied to %s" +msgstr "Toegang geweigerd voor %s" + +#: lib/Admin.php:709 +msgid "Add Attribute" +msgstr "Voeg adtribuut toe" + +#: lib/Query.php:764 +msgid "Add Attribute Criterion" +msgstr "Voeg Attribuut Criterium toe" + +#: query.php:199 +msgid "Add Criterion" +msgstr "Voeg Criterium toe" + +#: lib/Query.php:590 +msgid "Add Group Criterion" +msgstr "Voeg Groepscriterium toe" + +#: lib/Admin.php:533 +msgid "Add Priority" +msgstr "Voeg Prioriteit toe" + +#: lib/Query.php:669 +msgid "Add Property Criterion" +msgstr "Voeg Eigenschapscriterium toe" + +#: lib/Admin.php:102 lib/Admin.php:103 +msgid "Add Queue" +msgstr "Voeg Queue toe" + +#: lib/Admin.php:441 +msgid "Add State" +msgstr "Voeg Status toe" + +#: lib/Admin.php:14 lib/Admin.php:15 +msgid "Add Subject" +msgstr "Voeg Onderwerp toe" + +#: lib/Query.php:625 +msgid "Add Text Criterion" +msgstr "Voeg Tekst Criterium toe" + +#: lib/Admin.php:298 lib/Admin.php:299 +msgid "Add Type" +msgstr "Voeg Type toe" + +#: admin.php:81 admin.php:86 +#, php-format +msgid "Add Type %s" +msgstr "Voeg Type %s toe" + +#: lib/Query.php:537 +msgid "Add User Criterion" +msgstr "Voeg Gebruiker Criterium toe" + +#: lib/Admin.php:229 +msgid "Add Users" +msgstr "Voeg Gebruikers toe" + +#: lib/Admin.php:621 +msgid "Add Version" +msgstr "Voeg Versie toe" + +#: ticket/watch.php:47 +msgid "Add Watcher" +msgstr "Voeg 'Kijker' toe" + +#: ticket/create.php:154 +#, php-format +msgid "Adding your ticket failed: %s." +msgstr "Toevoegen van incident mislukt: %s." + +#: admin.php:54 lib/api.php:687 +msgid "Administration" +msgstr "Administratie" + +#: templates/queryrenderer.inc:90 lib/Query.php:518 +msgid "And" +msgstr "En" + +#: search.php:39 search.php:99 search.php:101 search.php:116 search.php:132 +#: lib/Query.php:675 lib/Query.php:683 lib/Query.php:688 lib/Query.php:695 +#: lib/Query.php:700 +msgid "Any" +msgstr "Elke" + +#: ticket/update.php:75 ticket/people.php:81 ticket/type.php:45 +#: ticket/comment.php:41 ticket/queue.php:50 +msgid "Any Group" +msgstr "Elke Groep" + +#: config/prefs.php.dist:47 +msgid "Ascending" +msgstr "Oplopend" + +#: lib/api.php:702 +msgid "Assign" +msgstr "Toewijzen" + +#: ticket/people.php:119 +msgid "Assign Ticket Succeeded" +msgstr "Incident Toegewezen" + +#: lib/Whups.php:464 lib/Ticket.php:600 lib/Driver.php:142 +#: config/prefs.php.dist:36 +msgid "Assigned" +msgstr "Toegewezen" + +#: templates/comment.inc:62 +#, php-format +msgid "Assigned to %s" +msgstr "Toegewezen aan: %s" + +#: admin.php:953 +msgid "Associations updated successfully." +msgstr "Koppelingen succesvol bijgewerkt." + +#: ticket/update.php:64 ticket/comment.php:29 lib/Create.php:124 +msgid "Attachment" +msgstr "Bijlage" + +#: ticket/deleteAttachment.php:29 +#, php-format +msgid "Attachment %s deleted." +msgstr "Bijlage %s is verwijderd." + +#: lib/Ticket.php:387 +#, php-format +msgid "Attachment %s not found." +msgstr "Bijlage %s niet gevonden." + +#: lib/Ticket.php:602 +msgid "Attachments" +msgstr "Bijlagen" + +#: query.php:133 +msgid "Attribute Criteria" +msgstr "Attribuut Criterium" + +#: lib/Admin.php:713 lib/Admin.php:759 lib/Admin.php:782 +msgid "Attribute Description" +msgstr "Attribuut Omschrijving" + +#: lib/Admin.php:712 lib/Admin.php:737 lib/Admin.php:756 lib/Admin.php:779 +msgid "Attribute Name" +msgstr "Attribuut naam" + +#: lib/Admin.php:370 +msgid "Attributes for this Type" +msgstr "Attributen voor dit Type" + +#: config/prefs.php.dist:118 +msgid "Autolink to other tickets in comments?" +msgstr "Autolink naar andere incidenten in reacties?" + +#: lib/Reports.php:12 +msgid "Average days to close by Owner" +msgstr "Gemiddeld aantal dagen om door een Eigenaar te sluiten" + +#: lib/Reports.php:14 +msgid "Average days to close by Queue" +msgstr "Gemiddeld aantal dagen om door een Queue te sluiten" + +#: lib/Reports.php:13 +msgid "Average days to close by Requester" +msgstr "Gemiddeld aantal dagen om door Melder te sluiten" + +#: lib/Reports.php:19 +msgid "Average time a ticket is unresolved" +msgstr "Gemiddelde behandel tijd voor een onopgesost incident" + +#: lib/Query.php:523 +msgid "Branch Type" +msgstr "Type Onderdeel" + +#: lib/Query.php:56 +msgid "Case Insensitive Substring" +msgstr "Niet Hoofdlettergevoelig Deelwoord" + +#: templates/queryrenderer.inc:27 +msgid "Change" +msgstr "Verander" + +#: config/prefs.php.dist:11 +msgid "Change display options such as how search results are sorted." +msgstr "" +"Verander weergave instellingen zoals hoe zoekresultaten zijn gesorteerd." + +#: config/prefs.php.dist:18 +msgid "Change options for email notifications of ticket activity." +msgstr "Verander opties voor e-mail meldingen bij incident activiteit." + +#: query.php:136 +msgid "Choose Action:" +msgstr "Kies Actie:" + +#: lib/Query.php:161 +msgid "Choose New Query instead of deleting the root node." +msgstr "Selecteer Nieuwe Query in plaats van verwijderen van de root ingang" + +#: lib/Create.php:33 lib/Create.php:67 +msgid "Choose:" +msgstr "Selecteer:" + +#: config/prefs.php.dist:128 +msgid "Chronological (oldest first)" +msgstr "Chronologisch (oudste eerst)" + +#: templates/savedsearches.inc:27 +msgid "Clear All Searches" +msgstr "Wis alle Zoekopdrachten" + +#: lib/Admin.php:421 +msgid "Clone" +msgstr "Dubbel" + +#: lib/Admin.php:427 +msgid "Clone Description" +msgstr "Dubbele Beschrijving" + +#: admin.php:120 lib/Admin.php:313 +msgid "Clone Type" +msgstr "Dubbel Type" + +#: config/templates.php.dist:43 +msgid "Comma Separated Values (CSV file)" +msgstr "Komma Gescheiden Waarden (CSV bestand)" + +#: templates/queryrenderer.inc:101 templates/comment.inc:86 +#: templates/comment.inc:117 ticket/update.php:65 ticket/people.php:72 +#: ticket/type.php:35 ticket/comment.php:28 ticket/queue.php:38 +#: lib/Whups.php:193 +msgid "Comment" +msgstr "Reactie" + +#: ticket/comment.php:94 +msgid "Comment added" +msgstr "Reactie toegevoegd" + +#: ticket/comment.php:100 +#, php-format +msgid "Comment on %s" +msgstr "Reactie op %s" + +#: templates/queryrenderer.inc:100 +msgid "Commentor" +msgstr "Uitlegger" + +#: lib/Admin.php:425 +#, php-format +msgid "Copy of %s" +msgstr "Kopie van %s" + +#: lib/MIME/Viewer/zip.php:54 +msgid "Could not extract the requested file from the Zip archive." +msgstr "Kon het gewenste bestand niet uit het zip-bestand halen." + +#: lib/Query.php:595 +msgid "Could not find any groups." +msgstr "Kon geen groepen vinden." + +#: lib/Mail.php:86 +#, php-format +msgid "Could not find ticket \"%s\"." +msgstr "Kon incident \"%s\" niet vinden." + +#: lib/Admin.php:364 +msgid "Create Default Priorities" +msgstr "Maak Standaard Prioriteitet" + +#: lib/Admin.php:354 +msgid "Create Default States" +msgstr "Maak Standaard Staten" + +#: config/prefs.php.dist:60 +msgid "Create Ticket" +msgstr "Maak Incident" + +#: lib/Create.php:23 +msgid "Create Ticket - Step 1" +msgstr "Maak Incident - Stap 1" + +#: lib/Create.php:58 +msgid "Create Ticket - Step 2" +msgstr "Maak Incident - Stap 2" + +#: lib/Create.php:98 +msgid "Create Ticket - Step 3" +msgstr "Maak Incident - Stap 3" + +#: lib/Create.php:142 +msgid "Create Ticket - Step 4" +msgstr "Maak Incident - Stap 4" + +#: lib/Whups.php:463 lib/Ticket.php:599 config/prefs.php.dist:35 +msgid "Created" +msgstr "Aangemaakt" + +#: lib/Ticket.php:470 lib/Ticket.php:485 +msgid "Created By" +msgstr "Gemaakt Door" + +#: query.php:189 query.php:206 +msgid "Current Query" +msgstr "Huidige Zoekopdracht" + +#: templates/queryrenderer.inc:25 +msgid "Current Ticket Type" +msgstr "Huidig Incident Type" + +#: lib/Ticket.php:530 +msgid "DO NOT REPLY TO THIS MESSAGE. THIS EMAIL ADDRESS IS NOT MONITORED." +msgstr "BEANTWOORD DIT BERICHT NIET. HET RETOURADRES IS NIET GELDIG" + +#: config/prefs.php.dist:91 +msgid "Date/Time format for search results" +msgstr "Datum/Tijd formaat voor zoek resultaten" + +#: config/prefs.php.dist:38 +msgid "Default sorting criteria:" +msgstr "Standaard sorteer criteria:" + +#: config/prefs.php.dist:49 +msgid "Default sorting direction:" +msgstr "Standaard sorteer richting:" + +#: query.php:137 lib/Whups.php:204 +msgid "Delete" +msgstr "Verwijderen" + +#: lib/Whups.php:632 lib/Whups.php:633 +#, php-format +msgid "Delete %s" +msgstr "Verwijder %s" + +#: ticket/delete.php:58 +#, php-format +msgid "Delete %s?" +msgstr "Verwijder %s?" + +#: admin.php:847 lib/Admin.php:725 +msgid "Delete Attribute" +msgstr "Verwijder Attribuut" + +#: lib/Admin.php:771 +msgid "Delete Attribute Confirmation" +msgstr "Verwijder Attribuut Bevestiging" + +#: admin.php:485 lib/Admin.php:549 +msgid "Delete Priority" +msgstr "Verwijder Prioriteit" + +#: lib/Admin.php:595 +msgid "Delete Priority Confirmation" +msgstr "Verwijder Prioriteit Bevestiging" + +#: lib/Query.php:145 +msgid "Delete Query" +msgstr "Verwijder Query" + +#: lib/Query.php:882 +msgid "Delete Query?" +msgstr "Verwijder Query?" + +#: admin.php:268 lib/Admin.php:119 +msgid "Delete Queue" +msgstr "Verwijder Queue" + +#: lib/Admin.php:204 +msgid "Delete Queue Confirmation" +msgstr "Verwijder Queue Bevestiging" + +#: templates/savedsearches.inc:45 templates/savedsearches.inc:46 +msgid "Delete Search" +msgstr "Verwijder Zoekopdracht" + +#: admin.php:375 lib/Admin.php:458 +msgid "Delete State" +msgstr "Verwijder Status" + +#: lib/Admin.php:507 +msgid "Delete State Confirmation" +msgstr "Verwijder Status Bevestiging" + +#: admin.php:646 lib/Admin.php:29 +msgid "Delete Subject" +msgstr "Verwijder Onderwerp" + +#: lib/Admin.php:80 +msgid "Delete Subject Confirmation" +msgstr "Verwijder Onderwerp Bevestiging" + +#: admin.php:114 lib/Admin.php:313 +msgid "Delete Type" +msgstr "Verwijder Type" + +#: lib/Admin.php:384 +msgid "Delete Type Confirmation" +msgstr "Verwijder Type Bevestiging" + +#: admin.php:738 lib/Admin.php:637 +msgid "Delete Version" +msgstr "Verwijder Versie" + +#: lib/Admin.php:683 +msgid "Delete Version Confirmation" +msgstr "Verwijder Versie Bevestiging" + +#: lib/Ticket.php:475 lib/Ticket.php:521 +msgid "Deleted Attachment" +msgstr "Bijlage verwijderd" + +#: templates/comment.inc:58 +#, php-format +msgid "Deleted Attachment: %s" +msgstr "Bijlage \"%s\" is verwijderd." + +#: config/prefs.php.dist:48 +msgid "Descending" +msgstr "Aflopend" + +#: lib/Create.php:125 +msgid "Description" +msgstr "Omschrijving" + +#: config/prefs.php.dist:10 +msgid "Display Options" +msgstr "Weergave Opties" + +#: lib/Whups.php:624 +msgid "Download" +msgstr "Download" + +#: query.php:138 +msgid "Edit" +msgstr "Bewerk" + +#: lib/Admin.php:148 lib/Admin.php:338 +#, php-format +msgid "Edit %s" +msgstr "Bewerk %s" + +#: admin.php:842 lib/Admin.php:725 lib/Admin.php:748 +msgid "Edit Attribute" +msgstr "Bewerk Attribuut" + +#: lib/Admin.php:372 +msgid "Edit Attributes" +msgstr "Bewerk Attributen" + +#: lib/Query.php:134 +msgid "Edit Permissions" +msgstr "Rechten bewerken" + +#: lib/Admin.php:362 +msgid "Edit Priorities" +msgstr "Bewerk Prioriteiten" + +#: admin.php:480 lib/Admin.php:549 lib/Admin.php:572 +msgid "Edit Priority" +msgstr "Bewerk Prioriteit" + +#: lib/Query.php:126 +msgid "Edit Query" +msgstr "Bewerk Zoekopdracht" + +#: admin.php:262 lib/Admin.php:119 lib/Admin.php:122 +msgid "Edit Queue" +msgstr "Bewerk Queue" + +#: admin.php:32 lib/Admin.php:121 +msgid "Edit Queues" +msgstr "Bewerk Queues" + +#: admin.php:370 lib/Admin.php:458 lib/Admin.php:481 +msgid "Edit State" +msgstr "Bewerk Status" + +#: lib/Admin.php:352 +msgid "Edit States" +msgstr "Bewerk Statussen" + +#: admin.php:641 lib/Admin.php:29 lib/Admin.php:51 +msgid "Edit Subject" +msgstr "Bewerk Onderwerp" + +#: admin.php:34 +msgid "Edit Subjects" +msgstr "Bewerk Onderwerpen" + +#: admin.php:108 lib/Admin.php:313 +msgid "Edit Type" +msgstr "Bewerk Type" + +#: admin.php:33 +msgid "Edit Types" +msgstr "Bewerk Types" + +#: admin.php:733 lib/Admin.php:637 lib/Admin.php:660 +msgid "Edit Version" +msgstr "Bewerk Versie" + +#: lib/Admin.php:724 +msgid "Edit or Delete Attributes" +msgstr "Bewerk of Verwijder Attributen" + +#: lib/Admin.php:548 +msgid "Edit or Delete Priorities" +msgstr "Bewerk of Verwijder Prioriteiten" + +#: lib/Admin.php:118 +msgid "Edit or Delete Queues" +msgstr "Bewerk of Verwijder Queues" + +#: lib/Admin.php:457 +msgid "Edit or Delete States" +msgstr "Bewerk of Verwijder Statussen" + +#: lib/Admin.php:28 +msgid "Edit or Delete Subjects" +msgstr "Bewerk of Verwijder Onderwerpen" + +#: lib/Admin.php:312 +msgid "Edit or Delete Types" +msgstr "Bewerk of Verwijder Types" + +#: lib/Admin.php:636 +msgid "Edit or Delete Versions" +msgstr "Bewerk of Verwijder Versies" + +#: lib/Admin.php:191 +msgid "Edit the permissions on this queue" +msgstr "Bewerk de recheten op deze queue" + +#: lib/Admin.php:186 +msgid "Edit the users responsible for this queue" +msgstr "Bewerk de gebruikers die verantwoordelijk zijn voor deze queue" + +#: lib/Admin.php:165 +msgid "Edit the versions for this queue" +msgstr "Bewerk de versies voor deze queue" + +#: ticket/watch.php:23 +msgid "Email address to notify" +msgstr "E-mailadres voor melding" + +#: ticket/watch.php:35 +msgid "Email address to remove" +msgstr "Te verwijderen E-mailadres" + +#: query.php:165 +#, php-format +msgid "Error: Unknown query form %s, defaulting to properties" +msgstr "" +"Fout: Onbekende zoek formulier %s, standaard eigenschappen worden gebruikt" + +#: lib/Query.php:55 +msgid "Exact Match" +msgstr "Exacte Overeenkomst" + +#: runquery.php:69 runquery.php:83 lib/Query.php:138 +msgid "Execute Query" +msgstr "Uitvoeren Zoekopdracht" + +#: lib/Admin.php:809 +msgid "For tickets from these queues" +msgstr "Voor incidenten van deze queues" + +#: lib/Admin.php:813 +msgid "For tickets which are" +msgstr "Voor incidenten die zijn" + +#: templates/menu.inc:5 lib/Block/summary.php:29 +msgid "Go" +msgstr "Start" + +#: query.php:130 +msgid "Group Criteria" +msgstr "Criteria Eigenschap" + +#: ticket/people.php:60 lib/Create.php:169 +msgid "Group Owners" +msgstr "Groep Eigenaren" + +#: templates/queryrenderer.inc:98 lib/Query.php:596 lib/Query.php:598 +msgid "Groups" +msgstr "Groepen" + +#: lib/api.php:690 +msgid "Hidden Comments" +msgstr "Verborgen reacties" + +#: ticket/index.php:43 lib/Whups.php:189 +msgid "History" +msgstr "Geschiedenis" + +#: query.php:139 +msgid "Hoist" +msgstr "Omhoog Halen" + +#: templates/queryrenderer.inc:96 lib/Whups.php:455 lib/Query.php:671 +#: config/prefs.php.dist:28 +msgid "Id" +msgstr "Nummer" + +#: search.php:52 +msgid "" +"If you don't select any categories, no filtering will be done on ticket " +"category." +msgstr "" +"Wanneer U geen categorien selecteerd, zullen geen filters worden geplaatst " +"op het incident." + +#: search.php:55 +msgid "" +"If you don't select any types, no filtering will be done on ticket type." +msgstr "" +"Wanneer U geen types selecteerd, zullen geen filters worden geplaatst op het " +"incident type." + +#: lib/Admin.php:816 +msgid "" +"If you select any tickets that do not have an owner, who should we send " +"email to?" +msgstr "" +"Wie moet een mail ontvangen als u incidenten selecteert zonder eigenaar." + +#: query.php:140 +msgid "Insert And" +msgstr "Invoegen en" + +#: lib/Query.php:515 +msgid "Insert Branch" +msgstr "Onderdeel Invoegen" + +#: query.php:142 +msgid "Insert Not" +msgstr "Niet invoegen" + +#: query.php:141 +msgid "Insert Or" +msgstr "Invoegen of" + +#: lib/Whups.php:160 +msgid "Invalid Ticket Id" +msgstr "Ongeldig Incident Id" + +#: lib/Admin.php:162 +msgid "Keep a set of versions for this queue?" +msgstr "Houd versies bij voor deze Queue" + +#: templates/prevnext.inc:17 +msgid "Last>>" +msgstr "Laatste>>" + +#: lib/Query.php:139 lib/Query.php:842 +msgid "Load Query" +msgstr "Laad Zoekopdracht" + +#: config/prefs.php.dist:89 +msgid "MM/DD/YY" +msgstr "MM/DD/YY" + +#: config/prefs.php.dist:90 +msgid "MM/DD/YY HH:MM:SS" +msgstr "MM/DD/YY HH:MM:SS" + +#: lib/Admin.php:419 +#, php-format +msgid "Make a clone of %s" +msgstr "Maak een dubbele van %s" + +#: lib/Query.php:770 +msgid "Match" +msgstr "Overeenkomst" + +#: lib/Query.php:540 lib/Query.php:628 lib/Query.php:771 +msgid "Match Operator" +msgstr "Gelijkheids Teken" + +#: lib/Query.php:59 +msgid "Match Pattern" +msgstr "Overeenkomstig Patroon" + +#: lib/Query.php:58 +msgid "Match Word" +msgstr "Overeenkomstig Woord" + +#: lib/Reports.php:20 +msgid "Maximum time a ticket is unresolved" +msgstr "Maximale tijd dat een incident niet is opgelost" + +#: lib/Reports.php:21 +msgid "Minimum time a ticket is unresolved" +msgstr "Minimum tijd totdat een incident wordt opgelost" + +#: config/prefs.php.dist:129 +msgid "Most recent first" +msgstr "Meest recente eerst" + +#: ticket/queue.php:173 +#, php-format +msgid "Moved ticket %d to \"%s\"" +msgstr "Incident %d verplaatst naar \"%s\"" + +#: mybugs.php:65 +#, php-format +msgid "My %s" +msgstr "Mijn %s" + +#: mybugs.php:44 +msgid "My Assigned Tickets" +msgstr "Mijn Toegewezen Incidenten" + +#: mybugs.php:60 +msgid "My Open Requests" +msgstr "Mijn Open Opmerkingen" + +#: mybugs.php:83 search.php:186 lib/Block/myqueries.php:3 +#: lib/Block/myqueries.php:26 +msgid "My Queries" +msgstr "Mijn Zoekopdrachten" + +#: mybugs.php:79 search.php:182 lib/Block/mysearches.php:3 +#: lib/Block/mysearches.php:24 +msgid "My QuickSearches" +msgstr "Mijn Snelzoekopdrachten" + +#: config/prefs.php.dist:58 +msgid "My Tickets" +msgstr "Mijn Incidenten" + +#: lib/Ticket.php:536 +#, php-format +msgid "NEW: %s" +msgstr "NIEUW: %s" + +#: lib/Query.php:819 lib/Query.php:857 +msgid "Name" +msgstr "Naam" + +#: lib/Admin.php:424 +msgid "Name of the cloned copy" +msgstr "Naam of de dubbele kopie" + +#: lib/Driver.php:141 +msgid "New" +msgstr "Nieuw" + +#: lib/Ticket.php:474 lib/Ticket.php:516 +msgid "New Attachment" +msgstr "Nieuwe Bijlage" + +#: templates/comment.inc:51 templates/comment.inc:53 +#, php-format +msgid "New Attachment: %s" +msgstr "Nieuwe Bijlage: %s" + +#: lib/Query.php:124 lib/Block/myqueries.php:27 lib/Block/myqueries.php:28 +msgid "New Query" +msgstr "Nieuwe Zoekopdracht" + +#: ticket/queue.php:37 +msgid "New Queue" +msgstr "Nieuwe Queue" + +#: ticket/people.php:69 +msgid "New State" +msgstr "Nieuwe Status" + +#: ticket/create.php:27 lib/Block/summary.php:28 +msgid "New Ticket" +msgstr "Nieuwe Ticket" + +#: ticket/type.php:34 +msgid "New Type" +msgstr "Nieuw Type" + +#: templates/prevnext.inc:16 +msgid "Next>" +msgstr "Volgende>" + +#: ticket/delete.php:37 lib/Admin.php:90 lib/Admin.php:217 lib/Admin.php:405 +#: lib/Admin.php:521 lib/Admin.php:609 lib/Admin.php:697 lib/Admin.php:785 +#: lib/Query.php:884 +msgid "No" +msgstr "Nee" + +#: clearsearch.php:34 +msgid "No searches cleared." +msgstr "Geen zoekopdrachen verwijderd." + +#: reports.php:17 +msgid "No stats available." +msgstr "Geen statussen beschikbaar." + +#: lib/Driver.php:319 +#, php-format +msgid "No such backend \"%s\" found" +msgstr "Geen backend \"%s\" gevonden" + +#: lib/Whups.php:495 +msgid "No tickets matched your search criteria." +msgstr "Geen incidenten kwamen overeen met Uw zoekopdracht." + +#: lib/Block/summary.php:75 +msgid "No tickets to display" +msgstr "Geen incidenten om weer te geven" + +#: lib/Reports.php:88 +msgid "None" +msgstr "Geen" + +#: templates/queryrenderer.inc:92 lib/Query.php:520 +msgid "Not" +msgstr "Niet" + +#: query.php:71 +msgid "Not yet implemented." +msgstr "Nog niet geïmplementeerd" + +#: config/prefs.php.dist:17 +msgid "Notification Options" +msgstr "Meldings Opties" + +#: config/prefs.php.dist:109 +msgid "Only notify me of ticket changes from other users" +msgstr "Stel me op de hoogte als incidenten van andere gebruikers veranderen" + +#: lib/Reports.php:11 +msgid "Open Tickets by Owner" +msgstr "Open Incidenten per Eigenaar" + +#: lib/Reports.php:9 +msgid "Open Tickets by Priority" +msgstr "Open Incidenten per Prioriteit" + +#: lib/Reports.php:6 +msgid "Open Tickets by Queue" +msgstr "Open Incidenten per Queue" + +#: lib/Reports.php:10 +msgid "Open Tickets by Requester" +msgstr "Open Incidenten per Aanvrager" + +#: lib/Reports.php:7 +msgid "Open Tickets by State" +msgstr "Open Incidenten per Status" + +#: lib/Reports.php:8 +msgid "Open Tickets by Type" +msgstr "Open Incidenten per Type" + +#: templates/queryrenderer.inc:91 lib/Query.php:519 +msgid "Or" +msgstr "Of" + +#: config/prefs.php.dist:9 config/prefs.php.dist:16 +msgid "Other Options" +msgstr "Andere Opties" + +#: templates/queryrenderer.inc:97 ticket/people.php:54 ticket/people.php:66 +#: lib/Create.php:163 lib/Create.php:175 lib/Whups.php:462 lib/Ticket.php:473 +#: lib/Ticket.php:508 lib/Ticket.php:509 lib/Ticket.php:511 lib/Ticket.php:595 +msgid "Owners" +msgstr "Eigenaars" + +#: lib/Whups.php:196 +msgid "People" +msgstr "Mensen" + +#: lib/Whups.php:632 +#, php-format +msgid "Permanently delete %s?" +msgstr "%s definitief verwijderen?" + +#: ticket/update.php:22 ticket/people.php:21 ticket/type.php:17 +#: ticket/delete.php:17 ticket/queue.php:17 ticket/deleteAttachment.php:17 +msgid "Permission Denied" +msgstr "Toegang geweigerd" + +#: ticket/update.php:83 ticket/delete.php:44 +msgid "Permission Denied." +msgstr "Toegang Geweigerd." + +#: runquery.php:35 query.php:29 lib/Query.php:894 +#, php-format +msgid "Permission denied." +msgstr "Toegang geweigerd" + +#: lib/Admin.php:360 lib/Admin.php:402 +msgid "Priorities for this Type" +msgstr "Prioriteiten voor dit Type" + +#: templates/queryrenderer.inc:132 ticket/update.php:52 ticket/type.php:69 +#: ticket/queue.php:116 lib/Create.php:122 lib/Whups.php:459 +#: lib/Ticket.php:465 lib/Ticket.php:593 lib/Query.php:699 +#: config/prefs.php.dist:32 +msgid "Priority" +msgstr "Prioriteit" + +#: templates/comment.inc:95 +#, php-format +msgid "Priority ⇒ %s" +msgstr "Prioriteit ⇒ %s" + +#: lib/Admin.php:537 lib/Admin.php:583 lib/Admin.php:606 +msgid "Priority Description" +msgstr "Prioriteit Beschrijving" + +#: lib/Admin.php:536 lib/Admin.php:561 lib/Admin.php:580 lib/Admin.php:603 +msgid "Priority Name" +msgstr "Prioriteit Naam" + +#: query.php:128 +msgid "Property Criteria" +msgstr "Criteria Eigenschap" + +#: query.php:146 +msgid "Query Builder" +msgstr "Zoekopdracht Bouwer" + +#: lib/Query.php:95 +msgid "Query Parameters" +msgstr "Zoekopdracht Parameters" + +#: runquery.php:77 +msgid "Query Results" +msgstr "Zoekopdracht Resultaten" + +#: search.php:48 templates/queryrenderer.inc:105 lib/Whups.php:460 +#: lib/Ticket.php:462 lib/Ticket.php:574 lib/Ticket.php:578 lib/Query.php:682 +#: config/prefs.php.dist:33 +msgid "Queue" +msgstr "Queue" + +#: templates/comment.inc:103 +#, php-format +msgid "Queue ⇒ %s" +msgstr "Queue ⇒ %s" + +#: lib/Admin.php:106 lib/Admin.php:155 lib/Admin.php:214 +msgid "Queue Description" +msgstr "Queue Beschrijving" + +#: lib/Admin.php:105 lib/Admin.php:134 lib/Admin.php:152 lib/Admin.php:211 +#: lib/Create.php:33 lib/Create.php:41 +msgid "Queue Name" +msgstr "Queue Naam" + +#: ticket/queue.php:85 lib/Create.php:80 lib/Ticket.php:583 lib/Ticket.php:587 +msgid "Queue Version" +msgstr "Queue Versie" + +#: admin.php:35 templates/admin/mtmatrix.inc:6 +msgid "Queue/Type Matrix" +msgstr "Queue/Type Matrix" + +#: search.php:134 +#, php-format +msgid "Queue: %s, Ticket: %s, Category: %s, Type: %s" +msgstr "Queue: %s, Incident: %s, Categorie: %s, Type: %s" + +#: lib/api.php:152 lib/api.php:693 +msgid "Queues" +msgstr "Queues" + +#: lib/Ticket.php:538 +#, php-format +msgid "RESOLVED: %s" +msgstr "OPGELOST: %s" + +#: lib/Admin.php:786 +msgid "Really delete this attribute? This may cause data problems!" +msgstr "" +"Wilt u dit attribuut echt verwijderen? Dit kan dataproblemen opleveren!!" + +#: lib/Admin.php:610 +msgid "Really delete this priority? This may cause data problems!" +msgstr "" +"Wilt u deze prioriteit echt verwijderen? Dit kan dataproblemen opleveren!!" + +#: lib/Query.php:885 +msgid "Really delete this query? This operation is not undoable." +msgstr "" +"Zoekopdracht echt verwijderen? Deze bewerking kan niet ongedaan gemaakt " +"worden." + +#: lib/Admin.php:218 +msgid "Really delete this queue? This may cause data problems!" +msgstr "Wilt u deze queue echt verwijderen? Dit kan dataproblemen opleveren!!" + +#: lib/Admin.php:522 +msgid "Really delete this state? This may cause data problems!" +msgstr "Wilt u deze status echt wissen? Dit kan dataproblemen opleveren!!" + +#: lib/Admin.php:91 +msgid "Really delete this subject? This may cause data problems!" +msgstr "Wilt u dit onderwerp echt wissen? Dit kan dataproblemen opleveren!!" + +#: ticket/delete.php:38 +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "" +"Wilt u dit incident echt wissen? Het zal NIET worden gearchiveerd, en zal " +"permanent verdwijnen." + +#: lib/Admin.php:406 +msgid "Really delete this type? This may cause data problems!" +msgstr "Wilt u dit type echt wissen? Dit kan dataproblemen opleveren!!" + +#: lib/Admin.php:698 +msgid "Really delete this version? This may cause data problems!" +msgstr "Wilt u deze versie echt verwijderen? Dit kan dataproblemen opleveren!!" + +#: search.php:164 +msgid "Refine Search" +msgstr "Verfijn Zoekopdracht" + +#: admin.php:922 +msgid "Reminders were sent." +msgstr "Herinneringen zijn verzonden." + +#: lib/Admin.php:267 +msgid "Remove User" +msgstr "Verwijder Gebruiker" + +#: ticket/watch.php:48 +msgid "Remove Watcher" +msgstr "Verwijder 'Kijker'" + +#: reports.php:22 +msgid "Reports" +msgstr "Rapportages" + +#: templates/queryrenderer.inc:99 lib/Ticket.php:598 +msgid "Requester" +msgstr "Aanvrager" + +#: lib/Whups.php:465 lib/Ticket.php:601 lib/Driver.php:143 +#: config/prefs.php.dist:37 +msgid "Resolved" +msgstr "Opgelost" + +#: lib/Admin.php:269 +msgid "Responsible Users" +msgstr "Verantwoordelijke Gebruikers" + +#: ticket/update.php:76 +msgid "Restrict Comment to:" +msgstr "Beperk Reactie tot:" + +#: lib/Admin.php:170 +msgid "Restrict ticket subjects to a specified list?" +msgstr "Begrens incident onderwerpen tot een specifieke lijst?" + +#: templates/prevnext.inc:25 +msgid "Return to Search Results" +msgstr "Terug naar Zoekresultaten" + +#: templates/searchresults.inc:54 +msgid "Save" +msgstr "Opslaan" + +#: lib/Query.php:142 lib/Query.php:817 +msgid "Save Query" +msgstr "Sla zoekopdracht op" + +#: templates/searchresults.inc:48 +msgid "Save these results as: " +msgstr "Sla deze resultaten op als:" + +#: lib/Query.php:774 +#, php-format +msgid "Search %s Attribute" +msgstr "Zoek %s Attribuut" + +#: lib/Query.php:777 +msgid "Search Attribute" +msgstr "Zoek Attribuut" + +#: lib/Query.php:543 lib/Query.php:630 +msgid "Search Comments" +msgstr "Zoek Reacties" + +#: lib/Query.php:541 +msgid "Search Owners" +msgstr "Zoek Eigenaars" + +#: lib/Query.php:542 +msgid "Search Requester" +msgstr "Zoek Aanvrager" + +#: search.php:159 +msgid "Search Results" +msgstr "Zoek Resultaten" + +#: templates/prevnext.inc:21 +#, php-format +msgid "Search Results: %s of %s" +msgstr "Zoekresultaten: %s van %s" + +#: lib/Query.php:629 +msgid "Search Summary" +msgstr "Zoek Samenvatting" + +#: search.php:64 search.php:175 config/prefs.php.dist:59 +msgid "Search Tickets" +msgstr "Zoek Insidenten" + +#: clearsearch.php:27 +msgid "Search cleared." +msgstr "Zoekopdracht verwijderd" + +#: clearsearch.php:30 +msgid "Searches cleared." +msgstr "Zoekopdrachten verwijderd." + +#: config/prefs.php.dist:61 +msgid "Select the view to display after login:" +msgstr "Selecteer het beeld dat moet weergeven worden na het inloggen:" + +#: admin.php:36 lib/Admin.php:797 +msgid "Send Reminders" +msgstr "Zend Herinneringen" + +#: lib/Admin.php:808 +msgid "Send only for this list of ticket ids" +msgstr "Zend alleen voor deze lijst van incident nummers" + +#: lib/Whups.php:200 +msgid "Set Queue" +msgstr "Zet Queue" + +#: ticket/queue.php:194 ticket/queue.php:203 ticket/queue.php:215 +msgid "Set Queue - Step 1" +msgstr "Zet Queue - Stap 1" + +#: ticket/queue.php:195 ticket/queue.php:204 +msgid "Set Queue - Step 2" +msgstr "Zet Queue - Stap 2" + +#: ticket/queue.php:205 +msgid "Set Queue - Step 3" +msgstr "Zet Queue - Stap 3" + +#: ticket/queue.php:181 +#, php-format +msgid "Set Queue for %s" +msgstr "Zet Queue voor %s" + +#: lib/Whups.php:203 +msgid "Set Type" +msgstr "Zet Type" + +#: ticket/type.php:137 ticket/type.php:146 +msgid "Set Type - Step 1" +msgstr "Zet Type - Stap 1" + +#: ticket/type.php:138 +msgid "Set Type - Step 2" +msgstr "Zet Type - Stap 2" + +#: ticket/type.php:124 +#, php-format +msgid "Set Type for %s" +msgstr "Zet Type voor %s" + +#: config/prefs.php.dist:100 +msgid "Show \"(X Days Ago)\" in Date field of search results?" +msgstr "" +"Laat \"(X Dagen Geleden)\" zien in het Datum veld van de zoekresultaten?" + +#: config/prefs.php.dist:127 +msgid "Show comments in chronological order, or most recent first?" +msgstr "" +"Moeten de reacties in chronologische volgorde worden weergeven, of moet de " +"recentste eerst?" + +#: config/prefs.php.dist:78 +msgid "Show ticket IDs in the summary view?" +msgstr "Laat incident nummers in samenvattings weergave zien?" + +#: config/prefs.php.dist:70 +msgid "Show tickets you have requested in the summary view?" +msgstr "Laat incidenten die U heeft opgevraagd zien in samenvattings weergave?" + +#: config/templates.php.dist:16 +msgid "Simple HTML Report" +msgstr "Simpel HTML Rapport" + +#: templates/searchresults.inc:75 +msgid "Sort Direction" +msgstr "Sorteer Richting" + +#: templates/searchresults.inc:76 templates/searchresults.inc:80 +#, php-format +msgid "Sort by %s" +msgstr "Sorteer op %s" + +#: templates/queryrenderer.inc:125 ticket/update.php:49 ticket/type.php:68 +#: ticket/queue.php:115 lib/Whups.php:457 lib/Ticket.php:464 +#: lib/Ticket.php:592 lib/Query.php:694 config/prefs.php.dist:30 +msgid "State" +msgstr "Status" + +#: templates/comment.inc:91 +#, php-format +msgid "State ⇒ %s" +msgstr "Status ⇒ %s" + +#: lib/Admin.php:446 lib/Admin.php:495 +msgid "State Category" +msgstr "Status Categorie" + +#: lib/Admin.php:445 lib/Admin.php:492 lib/Admin.php:518 +msgid "State Description" +msgstr "Status Omschrijving" + +#: lib/Admin.php:444 lib/Admin.php:470 lib/Admin.php:489 lib/Admin.php:515 +msgid "State Name" +msgstr "Status Naam" + +#: lib/Admin.php:350 lib/Admin.php:398 +msgid "States for this Type" +msgstr "Status voor dit Type" + +#: lib/Create.php:123 config/prefs.php.dist:29 +msgid "Subject" +msgstr "Onderwerp" + +#: lib/Admin.php:17 lib/Admin.php:40 lib/Admin.php:65 lib/Admin.php:87 +msgid "Subject Name" +msgstr "Onderwerp Naam" + +#: lib/Admin.php:174 +msgid "Subjects associated with this Queue" +msgstr "Onderwerp gekoppeld aan deze Queue" + +#: ticket/create.php:102 +msgid "Submit" +msgstr "Toevoegen" + +#: admin.php:161 +#, php-format +msgid "Successfully Cloned %s to %s." +msgstr "Succesvol %s gekopieerd naar %s." + +#: ticket/type.php:115 +msgid "Successfully changed ticket type." +msgstr "Incidenttype gewijzigd." + +#: templates/queryrenderer.inc:102 ticket/update.php:46 ticket/delete.php:34 +#: lib/Whups.php:456 lib/Ticket.php:472 lib/Ticket.php:487 lib/Ticket.php:488 +#: lib/Ticket.php:490 lib/Ticket.php:572 +msgid "Summary" +msgstr "Samenvatting" + +#: templates/comment.inc:45 +#, php-format +msgid "Summary ⇒ %s" +msgstr "Samenvatting ⇒ %s" + +#: search.php:50 +msgid "Summary like" +msgstr "Samengevat als" + +#: templates/comment.inc:67 +#, php-format +msgid "Taken from %s" +msgstr "Overgenomen van %s" + +#: lib/Query.php:627 +msgid "Text" +msgstr "Tekst" + +#: query.php:132 +msgid "Text Criteria" +msgstr "Tekst Criteria" + +#: view.php:44 lib/Ticket.php:338 lib/Ticket.php:376 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "" +"De VFS backend heeft een configuratie nodig om uploaden van bijlagen te " +"gebruiken." + +#: admin.php:811 +#, php-format +msgid "The attribute \"%s\" has been added to %s." +msgstr "Het attribuut \"%s\" is toegevoegd aan %s." + +#: admin.php:893 +msgid "The attribute has been deleted." +msgstr "Het attribuut is verwijderd." + +#: admin.php:864 +msgid "The attribute has been modified." +msgstr "Het attribuut is veranderd." + +#: admin.php:898 +msgid "The attribute was not deleted." +msgstr "Het attribuut is niet verwijderd." + +#: admin.php:449 +#, php-format +msgid "The priority \"%s\" has been added to %s." +msgstr "Prioriteit \"%s\" is toegevoegd aan %s." + +#: admin.php:530 +msgid "The priority has been deleted." +msgstr "De prioriteit is gewist." + +#: admin.php:502 +msgid "The priority has been modified." +msgstr "De prioriteit is veranderd." + +#: admin.php:535 +msgid "The priority was not deleted." +msgstr "De prioriteit is niet verwijderd." + +#: lib/Query.php:898 +#, php-format +msgid "The query \"%s\" couldn't be deleted: %s" +msgstr "Zoekopdracht \"%s\" kon niet worden verwijderd: %s" + +#: lib/Query.php:900 +#, php-format +msgid "The query \"%s\" has been deleted." +msgstr "Zoekopdracht \"%s\" is verwijderd." + +#: lib/Query.php:865 +#, php-format +msgid "The query couldn't be loaded:" +msgstr "Zoekopdracht kon niet worden geladen." + +#: admin.php:240 +#, php-format +msgid "The queue \"%s\" has been created." +msgstr "De queue \"%s\" is gemaakt." + +#: admin.php:318 +msgid "The queue has been deleted." +msgstr "De queue is verwijderd." + +#: admin.php:290 +msgid "The queue has been modified." +msgstr "De queue is veranderd." + +#: admin.php:323 +msgid "The queue was not deleted." +msgstr "De queue is niet verwijderd." + +#: lib/MIME/Viewer/zip.php:60 +msgid "The requested file does not exist in the Zip attachment." +msgstr "Het gevraagde bestand bestaat niet in de Zip bijlage." + +#: data.php:24 +msgid "The requested template does not exist." +msgstr "Het opgevraagde sjabloon bestaat niet." + +#: admin.php:338 +#, php-format +msgid "The state \"%s\" has been added to %s." +msgstr "Status \"%s\" is toegevoegd aan %s.'" + +#: admin.php:421 +msgid "The state has been deleted." +msgstr "De status is verwijderd." + +#: admin.php:392 +msgid "The state has been modified." +msgstr "De status is gewijzigd." + +#: admin.php:426 +msgid "The state was not deleted." +msgstr "De status was niet verwijderd." + +#: admin.php:625 +#, php-format +msgid "The subject \"%s\" has been added." +msgstr "Onderwerp \"%s\" is toegevoegd." + +#: admin.php:681 +msgid "The subject has been deleted." +msgstr "Het onderwerp is verwijderd." + +#: admin.php:662 +msgid "The subject has been modified." +msgstr "Het onderwerp is veranderd." + +#: admin.php:686 +msgid "The subject was not deleted." +msgstr "Het onderwerp is niet verwijderd." + +#: ticket/delete.php:75 +msgid "The ticket was not deleted." +msgstr "Het incident is niet verwijderd." + +#: admin.php:179 +#, php-format +msgid "The type \"%s\" has been modified." +msgstr "Het type \"%s\" is veranderd." + +#: admin.php:221 +msgid "The type has been deleted." +msgstr "Het type is verwijderd." + +#: admin.php:226 +msgid "The type was not deleted." +msgstr "Het type is niet verwijderd." + +#: admin.php:701 +#, php-format +msgid "The version \"%s\" has been added to %s." +msgstr "Versie \"%s\" is toegevoegd aan %s." + +#: admin.php:783 +msgid "The version has been deleted." +msgstr "De versie is verwijderd." + +#: admin.php:755 +msgid "The version has been modified." +msgstr "De versie is veranderd." + +#: admin.php:788 +msgid "The version was not deleted." +msgstr "De versie is niet verwijderd." + +#: lib/Admin.php:733 +msgid "There are no attribute types to edit" +msgstr "Er zijn geen attribuut typen om te bewerken" + +#: lib/Query.php:777 +msgid "There are no attributes defined for the current type" +msgstr "Er zijn geen attributen gedefineerd voor het huidige type" + +#: lib/Admin.php:557 +msgid "There are no priorities to edit" +msgstr "Er zijn geen prioriteiten om te bewerken" + +#: lib/Admin.php:805 +msgid "There are no queues available." +msgstr "Er zijn geen queues beschikbaar." + +#: lib/Admin.php:131 +msgid "There are no queues to edit" +msgstr "Er zijn geen queues om te bewerken" + +#: lib/Create.php:41 +msgid "There are no queues which you can create tickets in." +msgstr "Er zijn geen queues waar U incidenten kunt melden." + +#: search.php:42 +msgid "There are no queues which you can search." +msgstr "Er zijn geen queues die U kunt zoeken." + +#: lib/Admin.php:466 +msgid "There are no states to edit" +msgstr "Er zijn geen statussen om te bewerken" + +#: lib/Admin.php:37 +msgid "There are no subjects to edit" +msgstr "Er zijn geen onderwerpen om te bewerken" + +#: lib/Create.php:64 +msgid "" +"There are no ticket types associated with this queue; until there are, you " +"cannot create any tickets in this queue." +msgstr "" +"Er zijn geen incidenttypen gekoppeld aan deze queue; daarom kunt U geen " +"incidenten in deze queue zetten." + +#: lib/Admin.php:321 +msgid "There are no types to edit" +msgstr "Er zijn geen types om te bewerken" + +#: lib/Admin.php:283 +msgid "There are no users responsible for this queue." +msgstr "Er zijn geen gebruikers verantwoordelijk voor deze queue." + +#: ticket/people.php:65 lib/Create.php:174 +msgid "There are no users to which this ticket can be assigned." +msgstr "Er zijn geen gebruikers aan wie dit incident kan worden toegewezen." + +#: lib/Admin.php:645 +msgid "There are no versions to edit" +msgstr "Er zijn geen versies om te bewerken" + +#: graph.php:30 +msgid "There is no data for this graph." +msgstr "Er is geen data voor deze grafiek." + +#: lib/Reports.php:161 +msgid "There is no data for this report." +msgstr "Er is geen data voor die rapport." + +#: admin.php:569 +#, php-format +msgid "There was an error adding \"%s\" to the responsible list for \"%s\": %s" +msgstr "" +"Er was een fout bij het toevoegen van '%s' aan de lijst van " +"verantwoordelijken voor '%s': %s" + +#: admin.php:627 +#, php-format +msgid "There was an error adding the subject: %s." +msgstr "Er was een fout tijdens het toevoegen van het onderwerp: %s." + +#: admin.php:814 +#, php-format +msgid "There was an error creating the attribute: %s." +msgstr "Er was een fout tijdens het toevoegen van het attribuut: %s." + +#: admin.php:451 +#, php-format +msgid "There was an error creating the priority: %s." +msgstr "Er was een fout tijdens het toevoegen van de prioriteit: %s." + +#: admin.php:248 +#, php-format +msgid "There was an error creating the queue: %s." +msgstr "Fout bij het aanmaken van queue: %s." + +#: admin.php:340 +#, php-format +msgid "There was an error creating the state: %s." +msgstr "Fout bij het maken van status: %s." + +#: admin.php:703 +#, php-format +msgid "There was an error creating the version: %s." +msgstr "Fout bij het maken van versie: %s." + +#: admin.php:895 +#, php-format +msgid "There was an error deleting the attribute: %s." +msgstr "Fout bij het verwijderen van attribuut: %s." + +#: admin.php:532 +#, php-format +msgid "There was an error deleting the priority: %s." +msgstr "Fout bij het verwijderen van prioriteit: %s." + +#: admin.php:320 +#, php-format +msgid "There was an error deleting the queue: %s." +msgstr "Fout bij het verwijderen van queue: %s." + +#: admin.php:423 +#, php-format +msgid "There was an error deleting the state: %s." +msgstr "Er was een fout tijdens het verwijderen van de status: %s." + +#: admin.php:683 +#, php-format +msgid "There was an error deleting the subject: %s." +msgstr "Fout bij het verwijderen van onderwerp: %s." + +#: ticket/delete.php:72 +#, php-format +msgid "There was an error deleting the ticket: %s" +msgstr "Fout bij het verwijderen van incident: %s." + +#: admin.php:223 +#, php-format +msgid "There was an error deleting the type: %s." +msgstr "Fout bij het verwijderen van type: %s." + +#: admin.php:785 +#, php-format +msgid "There was an error deleting the version: %s." +msgstr "Fout bij het verwijderen van versie: %s." + +#: admin.php:871 +#, php-format +msgid "There was an error editing the attribute: %s." +msgstr "Fout bij het bewerken van attribuut: %s." + +#: admin.php:507 +#, php-format +msgid "There was an error editing the priority: %s." +msgstr "Fout bij het bewerken van priority: %s." + +#: admin.php:304 +#, php-format +msgid "There was an error editing the queue: %s." +msgstr "Fout bij bet bewerken van queue: %s." + +#: admin.php:397 +#, php-format +msgid "There was an error editing the state: %s." +msgstr "Fout bij het bewerken van status: %s." + +#: admin.php:667 +#, php-format +msgid "There was an error editing the subject: %s." +msgstr "Fout bij het bewerken van onderwerp: %s." + +#: admin.php:760 +#, php-format +msgid "There was an error editing the version: %s." +msgstr "Fout bij het bewerken van versie: %s." + +#: lib/Admin.php:243 +#, php-format +msgid "There was an error listing users: %s; %s" +msgstr "Fout bij het weergeven van gebruikers: %s; %s" + +#: mybugs.php:39 +#, php-format +msgid "There was an error listing your assigned tickets: %s" +msgstr "Fout bij het weergeven van uw toegewezen tickets: %s" + +#: mybugs.php:55 +#, php-format +msgid "There was an error listing your open requests: %s" +msgstr "Fout bij het weergeven van uw open aanvragen: %s" + +#: admin.php:177 +#, php-format +msgid "There was an error modifying the type: %s." +msgstr "Fout bij het veranderen van type: %s" + +#: search.php:153 +#, php-format +msgid "There was an error performing your search: %s" +msgstr "Fout bij het uitvoeren van zoekopdracht: %s" + +#: admin.php:605 +#, php-format +msgid "" +"There was an error removing \"%s\" from the responsible list for \"%s\": %s" +msgstr "" +"Fout bij het verwijderen van \"%s\" uit de lijst van verantwoordelijken voor " +"'%s': %s" + +#: data.php:27 +msgid "This is not a search results template." +msgstr "Dit is geen zoek resultaat sjabloon." + +#: lib/Admin.php:57 +msgid "This is not a valid subject." +msgstr "Dit is geen geldig onderwerp." + +#: ticket/queue.php:80 lib/Create.php:75 +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this queue, you will not " +"be able to create tickets." +msgstr "" +"Deze queue vereist dat U een versie opgeeft, maar er zijn geen versies " +"gekoppeld. Totdat er versies zijn aangelegd voor deze queue, kunt u geen " +"tickets maken." + +#: lib/Ticket.php:484 +msgid "Ticket" +msgstr "Incidenten" + +#: ticket/delete.php:68 +#, php-format +msgid "Ticket %d has been deleted." +msgstr "Incident %d is verwijderd." + +#: lib/api.php:739 +#, php-format +msgid "Ticket %s - %s" +msgstr "Incident %s - %s" + +#: lib/Driver/sql.php:871 +#, php-format +msgid "Ticket %s was not found." +msgstr "Incident %s is niet gevonden." + +#: search.php:49 +msgid "Ticket ID" +msgstr "Incident Nummer" + +#: lib/Create.php:121 +msgid "Ticket State" +msgstr "Incident Status" + +#: templates/reports/stats.inc:3 +msgid "Ticket Stats" +msgstr "Incident Statussen" + +#: lib/Block/summary.php:3 +msgid "Ticket Summary" +msgstr "Incident Samenvatting" + +#: lib/Create.php:69 +msgid "Ticket Type" +msgstr "Incident Type" + +#: lib/Admin.php:158 +msgid "Ticket Types associated with this Queue" +msgstr "Incident Type gekoppeld met deze Queue" + +#: lib/Ticket.php:480 +#, php-format +msgid "Ticket URL: %s\n" +msgstr "Incident URL: %s\n" + +#: ticket/update.php:137 +msgid "Ticket Updated" +msgstr "Incident Gewijzigd" + +#: lib/api.php:760 +msgid "Tickets" +msgstr "Tickets" + +#: lib/Block/summary.php:52 +msgid "Tickets assigned to you" +msgstr "Incidenten toegewezen aan u" + +#: search.php:52 +msgid "Tickets which are" +msgstr "Incidenten welke zijn" + +#: lib/Block/summary.php:69 +msgid "Tickets you requested" +msgstr "Incidenten die u heeft opgevraagd" + +#: templates/queryrenderer.inc:117 ticket/queue.php:88 lib/Whups.php:458 +#: lib/Ticket.php:466 lib/Ticket.php:591 lib/Query.php:674 +#: config/prefs.php.dist:31 +msgid "Type" +msgstr "Type" + +#: templates/comment.inc:99 +#, php-format +msgid "Type ⇒ %s" +msgstr "Type ⇒ %s" + +#: lib/Admin.php:301 lib/Admin.php:345 lib/Admin.php:394 +msgid "Type Description" +msgstr "Type Omschrijving" + +#: lib/Admin.php:300 lib/Admin.php:324 lib/Admin.php:342 lib/Admin.php:391 +msgid "Type Name" +msgstr "Type Naam" + +#: search.php:55 +msgid "Types" +msgstr "Types" + +#: lib/Ticket.php:596 +msgid "Unassigned" +msgstr "Niet toegewezen" + +#: lib/Admin.php:816 +msgid "Unassigned tickets" +msgstr "Niet toegewezen incidenten" + +#: lib/Driver.php:140 +msgid "Unconfirmed" +msgstr "Niet bevestigd" + +#: templates/queryrenderer.inc:171 +#, php-format +msgid "Unknown node type %s" +msgstr "Onbekende node type %s" + +#: templates/comment.inc:80 lib/Whups.php:191 lib/api.php:707 +msgid "Update" +msgstr "Bijwerken" + +#: ticket/update.php:153 +#, php-format +msgid "Update %s" +msgstr "%s bijwerken" + +#: templates/admin/mtmatrix.inc:29 +msgid "Update Associations" +msgstr "Werk koppelingen bij" + +#: ticket/people.php:125 +#, php-format +msgid "Update People for %s" +msgstr "Bijwerken van Verantwoordelijken voor %s." + +#: lib/Ticket.php:471 lib/Ticket.php:485 +msgid "Updated By" +msgstr "Bijgewerkt door" + +#: lib/Admin.php:242 lib/Admin.php:252 lib/Admin.php:255 +msgid "User" +msgstr "Gebruiker" + +#: query.php:129 +msgid "User Criteria" +msgstr "Gebruiker Criteria" + +#: lib/Query.php:539 +msgid "User ID" +msgstr "Gebruikers nummer" + +#: lib/Admin.php:184 +msgid "Users responsible for this Queue" +msgstr "Gebruikers verantwoordelijk voor deze Queue" + +#: lib/Admin.php:287 +msgid "Users responsible for this queue" +msgstr "Gebruikers, verantwoordelijk voor deze Queue" + +#: templates/queryrenderer.inc:111 lib/Whups.php:461 lib/Ticket.php:463 +#: lib/Query.php:686 config/prefs.php.dist:34 +msgid "Version" +msgstr "Versie" + +#: lib/Admin.php:625 lib/Admin.php:671 lib/Admin.php:694 +msgid "Version Description" +msgstr "Versie Beschrijving" + +#: lib/Admin.php:624 lib/Admin.php:649 lib/Admin.php:668 lib/Admin.php:691 +msgid "Version Name" +msgstr "Versie Naam" + +#: templates/reports/graphs.inc:13 +msgid "View Graphs" +msgstr "Bekijk Grafieken" + +#: ticket/people.php:82 ticket/type.php:46 ticket/comment.php:42 +#: ticket/queue.php:51 +msgid "Viewable only by members of" +msgstr "Alleen zichtbaar door een lid van" + +#: lib/Whups.php:194 +msgid "Watch" +msgstr "Bewaak" + +#: ticket/watch.php:76 +#, php-format +msgid "Watchers for %s" +msgstr "'Bewakers' voor %s" + +#: config/prefs.php.dist:87 +msgid "Weekday Day Month" +msgstr "Weekdag Dag Maand" + +#: config/prefs.php.dist:88 +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "Weekdag Dag Maand HH:MM:SS TZ" + +#: ticket/delete.php:37 lib/Admin.php:90 lib/Admin.php:217 lib/Admin.php:405 +#: lib/Admin.php:521 lib/Admin.php:609 lib/Admin.php:697 lib/Admin.php:785 +#: lib/Query.php:884 +msgid "Yes" +msgstr "Ja" + +#: view.php:40 +msgid "You are not allowed to view this ticket." +msgstr "U mag dit incident niet te bekijken." + +#: lib/Driver/sql.php:874 +#, php-format +msgid "You do not have permission to access this ticket (%s)." +msgstr "U heeft geen permissie om dit incident te bekijken (%s)." + +#: lib/Query.php:854 +msgid "You have no saved queries." +msgstr "U heeft geen opgeslagen zoekopdrachten." + +#: lib/Whups.php:489 +msgid "You must select at least one queue to send reminders for." +msgstr "U moet minimaal een queue selectere om een herinnering voor te zenden." + +#: ticket/comment.php:26 lib/Create.php:35 +msgid "Your Email Address" +msgstr "Uw E-Mail adres" + +#: ticket/create.php:157 +#, php-format +msgid "" +"Your ticket ID is %s. An appropriate person has been notified of this " +"request." +msgstr "Uw incident ID is %s. Een melding is naar juiste persoon gestuurd." + +#: lib/Whups.php:554 +msgid "_Admin" +msgstr "Beheer" + +#: lib/Whups.php:543 +#, php-format +msgid "_My %s" +msgstr "_Mijn %s" + +#: lib/Whups.php:546 +msgid "_New Ticket" +msgstr "_Nieuw Incident" + +#: lib/Whups.php:548 +msgid "_Query Builder" +msgstr "_Zoekopdracht Bouwer" + +#: lib/Whups.php:550 +msgid "_Reports" +msgstr "_Rapportages" + +#: lib/Whups.php:545 +msgid "_Search" +msgstr "_Zoeken" + +#: templates/queryrenderer.inc:154 +msgid "contains (case insensitive) substring" +msgstr "bevat een (niet-hoofdletter gevoelig) deelwoord" + +#: templates/queryrenderer.inc:157 +msgid "contains (case sensitive) substring" +msgstr "bevat een (hoofdletter gevoelige) deelwoord" + +#: templates/queryrenderer.inc:160 +msgid "contains the word" +msgstr "bevat het woord" + +#: scripts/mail-filter.php:173 +#, php-format +msgid "error processing message: %s" +msgstr "Fout bij verwerken van bericht: %s" + +#: lib/api.php:748 +msgid "estimated time" +msgstr "geschatte tijd" + +#: templates/queryrenderer.inc:151 +msgid "is" +msgstr "is gelijk aan" + +#: templates/queryrenderer.inc:145 +msgid "is greater than" +msgstr "is groter dan" + +#: templates/queryrenderer.inc:148 +msgid "is less than" +msgstr "is kleiner dan" + +#: templates/queryrenderer.inc:163 +msgid "matches the pattern" +msgstr "voldoet aan het zoekpatroon " diff --git a/whups/po/pl_PL.po b/whups/po/pl_PL.po new file mode 100644 index 000000000..abf061c90 --- /dev/null +++ b/whups/po/pl_PL.po @@ -0,0 +1,2014 @@ +# Polish translations for Whups package +# Polskie tlumaczenia dla pakietu Whups. +# Copyright 2007-2009 The Horde Project +# This file is distributed under the same license as the Whups package. +# Automatically generated, 2007. +# Tadeusz Lesiecki , 2007. +# Piotr Tarnowski , 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: Whups 1.0-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2007-06-27 13:00+0200\n" +"PO-Revision-Date: 2007-03-31 09:57+0200\n" +"Last-Translator: Piotr Tarnowski \n" +"Language-Team: Polish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#: admin/index.php:605 +#, php-format +msgid "\"%s\" is no longer among those responsible for \"%s\"" +msgstr "\"%s\" nie jest ju¿ wspó³odpowiedzialny za \"%s\"" + +#: templates/menu.inc:5 +msgid "#Id" +msgstr "#Id" + +#: templates/ticket/watchers.inc:3 +#, php-format +msgid "%d people watching, %d people responsible" +msgstr "%d ludzi obserwuj±cych, %d ludzi odpowiedzialnych" + +#: lib/Driver.php:368 +#, php-format +msgid "%s (%s) wrote:" +msgstr "%s (%s) napisa³:" + +#: admin/index.php:569 +#, php-format +msgid "%s added to those responsible for \"%s\"" +msgstr "%s dodany do odpowiedzialnych za \"%s\"" + +#: templates/reports/stats.inc:17 +#, php-format +msgid "%s days" +msgstr "%s dni" + +#: ticket/watch.php:58 +#, php-format +msgid "%s will be notified when this ticket is updated." +msgstr "%s zostanie poinformowany o aktualizacji zg³oszenia." + +#: ticket/watch.php:70 +#, php-format +msgid "%s will no longer receive updates for this ticket." +msgstr "" +"%s nie bêdzie ju¿ otrzymywaæ informacji o aktualizacji tego zg³oszenia." + +#: admin/index.php:82 +msgid "- Stage 1" +msgstr "- Faza 1" + +#: admin/index.php:87 +msgid "- Stage 2" +msgstr "- Faza 2" + +#: scripts/mail-filter.php:164 +msgid "--priority-name or --priority-id must specify a valid Priority." +msgstr "" +"--nazwa-priorytetu lub --id-priorytetu musi okre¶laæ prawid³owy priorytet" + +#: scripts/mail-filter.php:158 +msgid "--queue-name or --queue-id must specify a valid Queue." +msgstr "--nazwa-kolejki lub --id-kolejki musi okre¶laæ prawid³ow± kolejkê." + +#: scripts/mail-filter.php:167 +msgid "--state-name or --state-id must specify a valid State." +msgstr "--nazwa-statusu lub --id-statusu musi okre¶laæ prawid³owy status." + +#: scripts/mail-filter.php:161 +msgid "--type-name or --type-id must specify a valid Type." +msgstr "--nazwa-typu lub --id-typu musi okre¶laæ prawid³owy typ." + +#: templates/prevnext.inc:12 +msgid "<>" +msgstr "" + +#: lib/Query.php:888 +msgid "Load Query" +msgstr "" + +#: config/prefs.php.dist:97 +msgid "MM/DD/YY" +msgstr "" + +#: config/prefs.php.dist:98 +msgid "MM/DD/YY HH:MM:SS" +msgstr "" + +#: lib/Forms/Admin.php:333 +#, php-format +msgid "Make a clone of %s" +msgstr "" + +#: lib/Query.php:818 +msgid "Match" +msgstr "" + +#: lib/Query.php:592 lib/Query.php:678 lib/Query.php:819 +msgid "Match Operator" +msgstr "" + +#: lib/Query.php:54 +msgid "Match Pattern" +msgstr "" + +#: lib/Query.php:53 +msgid "Match Word" +msgstr "" + +#: lib/Reports.php:20 +msgid "Maximum time a ticket is unresolved" +msgstr "" + +#: lib/Reports.php:21 +msgid "Minimum time a ticket is unresolved" +msgstr "" + +#: config/prefs.php.dist:128 +msgid "Most recent first" +msgstr "" + +#: ticket/queue.php:174 +#, php-format +msgid "Moved ticket %d to \"%s\"" +msgstr "" + +#: mybugs.php:52 +#, php-format +msgid "My %s" +msgstr "" + +#: mybugs_edit.php:32 +#, php-format +msgid "My %s :: Add Content" +msgstr "" + +#: search.php:106 lib/Block/myqueries.php:3 lib/Block/myqueries.php:24 +msgid "My Queries" +msgstr "Moje zapytania" + +#: lib/Block/myrequests.php:3 lib/Block/myrequests.php:24 +msgid "My Requests" +msgstr "Moje zg³oszenia" + +#: lib/Block/mytickets.php:3 lib/Block/mytickets.php:24 +#: config/prefs.php.dist:66 +msgid "My Tickets" +msgstr "Moje zg³oszenia" + +#: lib/api.php:854 +msgid "My tickets by assignment date" +msgstr "" + +#: lib/api.php:853 +msgid "My tickets by creation date" +msgstr "" + +#: lib/api.php:855 +msgid "My tickets by due date" +msgstr "" + +#: lib/api.php:856 +msgid "My tickets by resolution date" +msgstr "" + +#: lib/Query.php:867 lib/Query.php:899 +msgid "Name" +msgstr "Nazwa" + +#: lib/Forms/Admin.php:338 +msgid "Name of the cloned copy" +msgstr "" + +#: lib/Query.php:184 +msgid "Ne_w Query" +msgstr "" + +#: lib/Driver.php:164 +msgid "New" +msgstr "Nowy" + +#: lib/Ticket.php:494 lib/Ticket.php:539 +msgid "New Attachment" +msgstr "" + +#: templates/comment.inc:53 templates/comment.inc:55 +#, php-format +msgid "New Attachment: %s" +msgstr "" + +#: ticket/queue.php:31 +msgid "New Queue" +msgstr "" + +#: ticket/create.php:60 +msgid "New Ticket" +msgstr "" + +#: ticket/type.php:34 +msgid "New Type" +msgstr "" + +#: templates/prevnext.inc:16 +msgid "Next>" +msgstr "" + +#: lib/Query.php:926 lib/Forms/Admin.php:127 lib/Forms/Admin.php:319 +#: lib/Forms/Admin.php:435 lib/Forms/Admin.php:521 lib/Forms/Admin.php:607 +#: lib/Forms/Admin.php:699 ticket/delete.php:37 +msgid "No" +msgstr "Nie" + +#: lib/Block/myqueries.php:44 +msgid "No queries have been saved." +msgstr "Nie zapisano ¿adnych zapytañ." + +#: lib/Block/query.php:64 lib/Driver/sql.php:420 +msgid "No query to run" +msgstr "" + +#: lib/Block/queuecontents.php:25 +msgid "No queues available." +msgstr "" + +#: reports.php:19 +msgid "No stats available." +msgstr "" + +#: lib/Driver.php:404 +#, php-format +msgid "No such backend \"%s\" found" +msgstr "" + +#: lib/Block/mytickets.php:45 +msgid "No tickets are assigned to you." +msgstr "Nie ma ¿adnych przypisanych do Ciebie zg³oszeñ." + +#: lib/Block/unassigned.php:45 +msgid "No tickets are unassigned!" +msgstr "Brak nieprzypisanych zg³oszeñ!" + +#: lib/Block/queuecontents.php:62 lib/Block/queuecontents.php:73 +msgid "No tickets in queue." +msgstr "Brak zg³oszeñ w kolejce." + +#: lib/Whups.php:532 +msgid "No tickets matched your search criteria." +msgstr "¯adne zg³oszenia nie pasuj± do Twoich kryteriów wyszukiwania." + +#: lib/Reports.php:88 +msgid "None" +msgstr "Brak" + +#: lib/Query.php:572 templates/queryrenderer.inc:92 +msgid "Not" +msgstr "Nie" + +#: query.php:79 +msgid "Not yet implemented." +msgstr "Jeszcze nie zaimplementowano." + +#: config/prefs.php.dist:17 +msgid "Notification Options" +msgstr "Opcje powiadamiania" + +#: config/prefs.php.dist:108 +msgid "Only notify me of ticket changes from other users" +msgstr "" + +#: lib/Block/queuesummary.php:48 +msgid "Open Tickets" +msgstr "" + +#: lib/Reports.php:11 +msgid "Open Tickets by Owner" +msgstr "" + +#: lib/Reports.php:9 +msgid "Open Tickets by Priority" +msgstr "" + +#: lib/Reports.php:6 +msgid "Open Tickets by Queue" +msgstr "" + +#: lib/Reports.php:10 +msgid "Open Tickets by Requester" +msgstr "" + +#: lib/Reports.php:7 +msgid "Open Tickets by State" +msgstr "" + +#: lib/Reports.php:8 +msgid "Open Tickets by Type" +msgstr "" + +#: lib/Block/queuecontents.php:47 +#, php-format +msgid "Open Tickets in %s" +msgstr "" + +#: lib/Query.php:571 templates/queryrenderer.inc:91 +msgid "Or" +msgstr "" + +#: config/prefs.php.dist:9 config/prefs.php.dist:16 +msgid "Other Options" +msgstr "Inne opcje" + +#: lib/Ticket.php:493 lib/Ticket.php:531 lib/Ticket.php:532 lib/Ticket.php:534 +#: lib/Ticket.php:604 lib/Ticket.php:621 lib/Ticket.php:669 lib/Whups.php:497 +#: lib/Forms/CreateTicket.php:186 lib/Forms/CreateTicket.php:198 +#: lib/Forms/EditTicket.php:73 templates/queryrenderer.inc:97 +msgid "Owners" +msgstr "" + +#: lib/Whups.php:680 +#, php-format +msgid "Permanently delete %s?" +msgstr "" + +#: ticket/update.php:23 ticket/delete.php:17 ticket/type.php:17 +#: ticket/deleteAttachment.php:17 ticket/queue.php:124 +msgid "Permission Denied" +msgstr "Dostêp zabroniony" + +#: lib/Forms/EditTicket.php:104 ticket/delete.php:44 +msgid "Permission Denied." +msgstr "" + +#: runquery.php:38 query.php:31 lib/Query.php:936 +#, php-format +msgid "Permission denied." +msgstr "" + +#: lib/Forms/Admin.php:270 lib/Forms/Admin.php:316 +msgid "Priorities for this Type" +msgstr "" + +#: lib/Query.php:746 lib/Ticket.php:484 lib/Ticket.php:598 lib/Ticket.php:667 +#: lib/Whups.php:485 lib/Whups.php:494 lib/Forms/CreateTicket.php:118 +#: lib/Forms/EditTicket.php:30 templates/queryrenderer.inc:138 +#: ticket/type.php:69 ticket/queue.php:110 config/prefs.php.dist:40 +msgid "Priority" +msgstr "Priorytet" + +#: templates/comment.inc:98 +#, php-format +msgid "Priority ⇒ %s" +msgstr "" + +#: lib/Forms/Admin.php:449 lib/Forms/Admin.php:495 lib/Forms/Admin.php:518 +msgid "Priority Description" +msgstr "" + +#: lib/Forms/Admin.php:448 lib/Forms/Admin.php:473 lib/Forms/Admin.php:492 +#: lib/Forms/Admin.php:515 +msgid "Priority Name" +msgstr "" + +#: query.php:155 +msgid "Query Builder" +msgstr "" + +#: lib/Forms/QueryParameterForm.php:20 +msgid "Query Parameters" +msgstr "" + +#: runquery.php:81 lib/Block/query.php:3 lib/Block/query.php:51 +msgid "Query Results" +msgstr "" + +#: lib/Block/query.php:33 +msgid "Query to run" +msgstr "" + +#: lib/Query.php:729 lib/Ticket.php:480 lib/Ticket.php:594 lib/Ticket.php:648 +#: lib/Ticket.php:652 lib/Whups.php:495 lib/Block/queuecontents.php:32 +#: lib/Block/queuesummary.php:48 lib/Forms/Search.php:33 +#: templates/queryrenderer.inc:107 config/prefs.php.dist:41 +msgid "Queue" +msgstr "" + +#: templates/comment.inc:86 +#, php-format +msgid "Queue ⇒ %s" +msgstr "" + +#: lib/Block/queuecontents.php:3 lib/Block/queuecontents.php:49 +msgid "Queue Contents" +msgstr "" + +#: lib/Forms/Admin.php:24 lib/Forms/Admin.php:73 lib/Forms/Admin.php:124 +msgid "Queue Description" +msgstr "" + +#: lib/Forms/Admin.php:23 lib/Forms/Admin.php:52 lib/Forms/Admin.php:70 +#: lib/Forms/Admin.php:121 lib/Forms/CreateTicket.php:27 +#: lib/Forms/CreateTicket.php:37 +msgid "Queue Name" +msgstr "" + +#: lib/Block/queuesummary.php:3 lib/Block/queuesummary.php:24 +msgid "Queue Summary" +msgstr "" + +#: lib/Ticket.php:657 lib/Ticket.php:661 lib/Forms/CreateTicket.php:77 +#: ticket/queue.php:79 +msgid "Queue Version" +msgstr "" + +#: admin/index.php:36 +msgid "Queue/Type Matri_x" +msgstr "" + +#: templates/admin/mtmatrix.inc:6 +msgid "Queue/Type Matrix" +msgstr "" + +#: lib/api.php:160 lib/api.php:779 +msgid "Queues" +msgstr "" + +#: lib/Forms/Admin.php:700 +msgid "Really delete this attribute? This may cause data problems!" +msgstr "" + +#: lib/Forms/Admin.php:522 +msgid "Really delete this priority? This may cause data problems!" +msgstr "" + +#: lib/Query.php:927 +msgid "Really delete this query? This operation is not undoable." +msgstr "" + +#: lib/Forms/Admin.php:128 +msgid "Really delete this queue? This may cause data problems!" +msgstr "" + +#: lib/Forms/Admin.php:436 +msgid "Really delete this state? This may cause data problems!" +msgstr "" + +#: ticket/delete.php:38 +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "" + +#: lib/Forms/Admin.php:320 +msgid "Really delete this type? This may cause data problems!" +msgstr "" + +#: lib/Forms/Admin.php:608 +msgid "Really delete this version? This may cause data problems!" +msgstr "" + +#: search.php:87 +msgid "Refine Search" +msgstr "" + +#: admin/index.php:854 +msgid "Reminders were sent." +msgstr "" + +#: lib/Forms/Admin.php:177 +msgid "Remove User" +msgstr "" + +#: ticket/watch.php:48 +msgid "Remove Watcher" +msgstr "" + +#: templates/comment.inc:81 +msgid "Reply to this comment" +msgstr "" + +#: reports.php:24 +msgid "Reports" +msgstr "" + +#: lib/Ticket.php:672 lib/Whups.php:496 templates/queryrenderer.inc:99 +msgid "Requester" +msgstr "" + +#: lib/Driver.php:166 lib/api.php:897 lib/Ticket.php:679 lib/Whups.php:501 +#: config/prefs.php.dist:45 +msgid "Resolved" +msgstr "Rozwi±zany" + +#: lib/Forms/Admin.php:179 +msgid "Responsible Users" +msgstr "" + +#: lib/Forms/EditTicket.php:97 +msgid "Restrict Comment to:" +msgstr "" + +#: templates/prevnext.inc:26 +msgid "Return to Search Results" +msgstr "" + +#: lib/Whups.php:203 +msgid "S_et Queue" +msgstr "" + +#: lib/Query.php:202 +msgid "Sa_ve Query" +msgstr "" + +#: lib/Query.php:865 templates/searchresults.inc:80 +msgid "Save" +msgstr "Zapisz" + +#: lib/Query.php:864 +msgid "Save Query" +msgstr "" + +#: templates/searchresults.inc:74 +msgid "Save these results as: " +msgstr "" + +#: search.php:26 +msgid "Search" +msgstr "Szukaj" + +#: lib/Query.php:822 +#, php-format +msgid "Search %s Attribute" +msgstr "" + +#: lib/Query.php:825 +msgid "Search Attribute" +msgstr "" + +#: lib/Query.php:595 lib/Query.php:680 +msgid "Search Comments" +msgstr "" + +#: lib/Query.php:593 +msgid "Search Owners" +msgstr "" + +#: lib/Query.php:594 +msgid "Search Requester" +msgstr "" + +#: search.php:82 +msgid "Search Results" +msgstr "Wyniki wyszukiwania" + +#: templates/prevnext.inc:22 +#, php-format +msgid "Search Results: %s of %s" +msgstr "" + +#: lib/Query.php:679 +msgid "Search Summary" +msgstr "" + +#: config/prefs.php.dist:67 +msgid "Search Tickets" +msgstr "" + +#: config/prefs.php.dist:69 +msgid "Select the view to display after login:" +msgstr "" + +#: admin/index.php:37 +msgid "Sen_d Reminders" +msgstr "" + +#: lib/Forms/Admin.php:711 +msgid "Send Reminders" +msgstr "" + +#: lib/Forms/Admin.php:722 +msgid "Send only for this list of ticket ids" +msgstr "" + +#: ticket/queue.php:195 ticket/queue.php:204 ticket/queue.php:216 +msgid "Set Queue - Step 1" +msgstr "" + +#: ticket/queue.php:196 ticket/queue.php:205 +msgid "Set Queue - Step 2" +msgstr "" + +#: ticket/queue.php:206 +msgid "Set Queue - Step 3" +msgstr "" + +#: ticket/queue.php:182 +#, php-format +msgid "Set Queue for %s" +msgstr "" + +#: ticket/type.php:137 ticket/type.php:146 +msgid "Set Type - Step 1" +msgstr "" + +#: ticket/type.php:138 +msgid "Set Type - Step 2" +msgstr "" + +#: ticket/type.php:124 +#, php-format +msgid "Set Type for %s" +msgstr "" + +#: lib/Whups.php:207 +msgid "Set _Type" +msgstr "" + +#: config/prefs.php.dist:126 +msgid "Show comments in chronological order, or most recent first?" +msgstr "" + +#: config/prefs.php.dist:86 +msgid "Show ticket IDs in the summary view?" +msgstr "" + +#: config/prefs.php.dist:78 +msgid "Show tickets you have requested in the summary view?" +msgstr "" + +#: config/templates.php.dist:16 +msgid "Simple HTML Report" +msgstr "" + +#: templates/searchresults.inc:99 templates/searchresults.inc:102 +#, php-format +msgid "Sort by %s" +msgstr "Sortuj po %s" + +#: lib/Forms/AddComment.php:20 lib/Forms/AddComment.php:51 +#: lib/Forms/CreateTicket.php:113 lib/Forms/CreateTicket.php:142 +msgid "Spam protection" +msgstr "" + +#: lib/Query.php:741 lib/Ticket.php:483 lib/Ticket.php:597 lib/Ticket.php:666 +#: lib/Whups.php:486 lib/Whups.php:492 lib/Forms/EditTicket.php:29 +#: templates/queryrenderer.inc:130 ticket/type.php:68 ticket/queue.php:109 +#: config/prefs.php.dist:38 +msgid "State" +msgstr "" + +#: templates/comment.inc:94 +#, php-format +msgid "State ⇒ %s" +msgstr "" + +#: lib/Forms/Admin.php:360 lib/Forms/Admin.php:409 +msgid "State Category" +msgstr "" + +#: lib/Forms/Admin.php:359 lib/Forms/Admin.php:406 lib/Forms/Admin.php:432 +msgid "State Description" +msgstr "" + +#: lib/Forms/Admin.php:358 lib/Forms/Admin.php:384 lib/Forms/Admin.php:403 +#: lib/Forms/Admin.php:429 +msgid "State Name" +msgstr "" + +#: lib/Forms/Admin.php:260 lib/Forms/Admin.php:312 +msgid "States for this Type" +msgstr "" + +#: templates/ticket/watchers.inc:1 +msgid "Status" +msgstr "Status" + +#: ticket/create.php:124 +msgid "Submit" +msgstr "Wy¶lij" + +#: admin/index.php:162 +#, php-format +msgid "Successfully Cloned %s to %s." +msgstr "" + +#: ticket/type.php:115 +msgid "Successfully changed ticket type." +msgstr "" + +#: lib/Ticket.php:492 lib/Ticket.php:508 lib/Ticket.php:509 lib/Ticket.php:511 +#: lib/Ticket.php:604 lib/Ticket.php:612 lib/Ticket.php:646 lib/Whups.php:484 +#: lib/Whups.php:491 lib/Forms/CreateTicket.php:120 +#: lib/Forms/EditTicket.php:28 templates/queryrenderer.inc:102 +#: ticket/delete.php:34 config/prefs.php.dist:37 +msgid "Summary" +msgstr "Podsumowanie" + +#: templates/comment.inc:47 +#, php-format +msgid "Summary ⇒ %s" +msgstr "" + +#: lib/Forms/Search.php:36 +msgid "Summary like" +msgstr "" + +#: templates/comment.inc:69 +#, php-format +msgid "Taken from %s" +msgstr "" + +#: lib/Query.php:677 +msgid "Text" +msgstr "Tekst" + +#: view.php:55 lib/Ticket.php:356 lib/Ticket.php:394 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "Aby wgrywaæ za³±czniki musi byæ skonfigurowany backend VFS." + +#: admin/index.php:739 +#, php-format +msgid "The attribute \"%s\" has been added to %s." +msgstr "" + +#: admin/index.php:825 +msgid "The attribute has been deleted." +msgstr "" + +#: admin/index.php:794 +msgid "The attribute has been modified." +msgstr "" + +#: admin/index.php:830 +msgid "The attribute was not deleted." +msgstr "" + +#: admin/index.php:451 +#, php-format +msgid "The priority \"%s\" has been added to %s." +msgstr "" + +#: admin/index.php:532 +msgid "The priority has been deleted." +msgstr "" + +#: admin/index.php:504 +msgid "The priority has been modified." +msgstr "" + +#: admin/index.php:537 +msgid "The priority was not deleted." +msgstr "" + +#: lib/Query.php:940 +#, php-format +msgid "The query \"%s\" couldn't be deleted: %s" +msgstr "" + +#: lib/Query.php:942 +#, php-format +msgid "The query \"%s\" has been deleted." +msgstr "" + +#: lib/Query.php:907 +#, php-format +msgid "The query couldn't be loaded:" +msgstr "" + +#: admin/index.php:241 +#, php-format +msgid "The queue \"%s\" has been created." +msgstr "" + +#: admin/index.php:320 +msgid "The queue has been deleted." +msgstr "" + +#: admin/index.php:292 +msgid "The queue has been modified." +msgstr "" + +#: admin/index.php:325 +msgid "The queue was not deleted." +msgstr "" + +#: lib/MIME/Viewer/zip.php:59 +msgid "The requested file does not exist in the Zip attachment." +msgstr "¯±dany plik nie wystêpuje w za³±czniku Zip." + +#: data.php:26 +msgid "The requested template does not exist." +msgstr "" + +#: admin/index.php:340 +#, php-format +msgid "The state \"%s\" has been added to %s." +msgstr "" + +#: admin/index.php:423 +msgid "The state has been deleted." +msgstr "" + +#: admin/index.php:394 +msgid "The state has been modified." +msgstr "" + +#: admin/index.php:428 +msgid "The state was not deleted." +msgstr "" + +#: ticket/delete.php:75 +msgid "The ticket was not deleted." +msgstr "" + +#: admin/index.php:180 +#, php-format +msgid "The type \"%s\" has been modified." +msgstr "" + +#: admin/index.php:222 +msgid "The type has been deleted." +msgstr "" + +#: admin/index.php:227 +msgid "The type was not deleted." +msgstr "" + +#: admin/index.php:629 +#, php-format +msgid "The version \"%s\" has been added to %s." +msgstr "" + +#: admin/index.php:711 +msgid "The version has been deleted." +msgstr "" + +#: admin/index.php:683 +msgid "The version has been modified." +msgstr "" + +#: admin/index.php:716 +msgid "The version was not deleted." +msgstr "" + +#: lib/Forms/Admin.php:647 +msgid "There are no attribute types to edit" +msgstr "" + +#: lib/Query.php:825 +msgid "There are no attributes defined for the current type" +msgstr "" + +#: lib/Block/queuesummary.php:43 +msgid "There are no open tickets." +msgstr "" + +#: lib/Forms/Admin.php:469 +msgid "There are no priorities to edit" +msgstr "" + +#: lib/Forms/Admin.php:719 +msgid "There are no queues available." +msgstr "" + +#: lib/Forms/Admin.php:49 +msgid "There are no queues to edit" +msgstr "" + +#: lib/Forms/CreateTicket.php:27 +msgid "There are no queues which you can create tickets in." +msgstr "" + +#: lib/Forms/Search.php:31 +msgid "There are no queues which you can search." +msgstr "" + +#: lib/Forms/Admin.php:380 +msgid "There are no states to edit" +msgstr "" + +#: lib/Forms/CreateTicket.php:61 +msgid "" +"There are no ticket types associated with this queue; until there are, you " +"cannot create any tickets in this queue." +msgstr "" + +#: lib/Forms/Admin.php:231 +msgid "There are no types to edit" +msgstr "" + +#: lib/Forms/Admin.php:193 +msgid "There are no users responsible for this queue." +msgstr "" + +#: lib/Forms/CreateTicket.php:197 +msgid "There are no users to which this ticket can be assigned." +msgstr "" + +#: lib/Forms/Admin.php:555 +msgid "There are no versions to edit" +msgstr "" + +#: lib/Reports.php:161 +msgid "There is no data for this report." +msgstr "" + +#: admin/index.php:571 +#, php-format +msgid "There was an error adding \"%s\" to the responsible list for \"%s\": %s" +msgstr "" + +#: admin/index.php:742 +#, php-format +msgid "There was an error creating the attribute: %s." +msgstr "" + +#: admin/index.php:453 +#, php-format +msgid "There was an error creating the priority: %s." +msgstr "" + +#: admin/index.php:249 +#, php-format +msgid "There was an error creating the queue: %s." +msgstr "" + +#: admin/index.php:342 +#, php-format +msgid "There was an error creating the state: %s." +msgstr "" + +#: admin/index.php:631 +#, php-format +msgid "There was an error creating the version: %s." +msgstr "" + +#: admin/index.php:827 +#, php-format +msgid "There was an error deleting the attribute: %s." +msgstr "" + +#: admin/index.php:534 +#, php-format +msgid "There was an error deleting the priority: %s." +msgstr "" + +#: admin/index.php:322 +#, php-format +msgid "There was an error deleting the queue: %s." +msgstr "" + +#: admin/index.php:425 +#, php-format +msgid "There was an error deleting the state: %s." +msgstr "" + +#: ticket/delete.php:72 +#, php-format +msgid "There was an error deleting the ticket: %s" +msgstr "" + +#: admin/index.php:224 +#, php-format +msgid "There was an error deleting the type: %s." +msgstr "" + +#: admin/index.php:713 +#, php-format +msgid "There was an error deleting the version: %s." +msgstr "" + +#: admin/index.php:802 +#, php-format +msgid "There was an error editing the attribute: %s." +msgstr "" + +#: admin/index.php:509 +#, php-format +msgid "There was an error editing the priority: %s." +msgstr "" + +#: admin/index.php:306 +#, php-format +msgid "There was an error editing the queue: %s." +msgstr "" + +#: admin/index.php:399 +#, php-format +msgid "There was an error editing the state: %s." +msgstr "" + +#: admin/index.php:688 +#, php-format +msgid "There was an error editing the version: %s." +msgstr "" + +#: lib/Forms/Admin.php:153 +#, php-format +msgid "There was an error listing users: %s; %s" +msgstr "" + +#: admin/index.php:178 +#, php-format +msgid "There was an error modifying the type: %s." +msgstr "" + +#: search.php:76 +#, php-format +msgid "There was an error performing your search: %s" +msgstr "" + +#: admin/index.php:607 +#, php-format +msgid "" +"There was an error removing \"%s\" from the responsible list for \"%s\": %s" +msgstr "" + +#: data.php:29 +msgid "This is not a search results template." +msgstr "" + +#: lib/Forms/CreateTicket.php:72 ticket/queue.php:74 +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this queue, you will not " +"be able to create tickets." +msgstr "" + +#: lib/Ticket.php:505 lib/Ticket.php:611 +msgid "Ticket" +msgstr "Zg³oszenia" + +#: ticket/delete.php:68 +#, php-format +msgid "Ticket %d has been deleted." +msgstr "" + +#: lib/api.php:825 +#, php-format +msgid "Ticket %s - %s" +msgstr "" + +#: lib/Driver/sql.php:866 +#, php-format +msgid "Ticket %s was not found." +msgstr "" + +#: search.php:98 +msgid "Ticket Search" +msgstr "Wyszukiwanie zg³oszeñ" + +#: lib/Forms/CreateTicket.php:117 +msgid "Ticket State" +msgstr "" + +#: templates/reports/stats.inc:3 +msgid "Ticket Stats" +msgstr "" + +#: lib/Forms/CreateTicket.php:66 +msgid "Ticket Type" +msgstr "" + +#: lib/Forms/Admin.php:76 +msgid "Ticket Types associated with this Queue" +msgstr "" + +#: lib/Ticket.php:501 +#, php-format +msgid "Ticket URL: %s\n" +msgstr "" + +#: ticket/update.php:82 +msgid "Ticket Updated" +msgstr "" + +#: lib/api.php:846 +msgid "Tickets" +msgstr "Zg³oszenia" + +#: lib/Forms/Search.php:38 +msgid "Tickets which are" +msgstr "Zg³oszenia, które s±" + +#: lib/Query.php:722 lib/Ticket.php:482 lib/Ticket.php:596 lib/Ticket.php:665 +#: lib/Whups.php:493 templates/queryrenderer.inc:121 ticket/queue.php:82 +#: config/prefs.php.dist:39 +msgid "Type" +msgstr "Typ" + +#: templates/comment.inc:90 +#, php-format +msgid "Type ⇒ %s" +msgstr "" + +#: lib/Forms/Admin.php:211 lib/Forms/Admin.php:255 lib/Forms/Admin.php:308 +msgid "Type Description" +msgstr "" + +#: lib/Forms/Admin.php:210 lib/Forms/Admin.php:234 lib/Forms/Admin.php:252 +#: lib/Forms/Admin.php:305 +msgid "Type Name" +msgstr "" + +#: lib/Forms/Search.php:41 +msgid "Types" +msgstr "" + +#: lib/Ticket.php:670 +msgid "Unassigned" +msgstr "" + +#: lib/Block/unassigned.php:3 lib/Block/unassigned.php:24 +msgid "Unassigned Tickets" +msgstr "" + +#: lib/Forms/Admin.php:730 +msgid "Unassigned tickets" +msgstr "" + +#: lib/Driver.php:163 +msgid "Unconfirmed" +msgstr "Niepotwierdzone" + +#: templates/queryrenderer.inc:148 templates/queryrenderer.inc:188 +#, php-format +msgid "Unknown node type %s" +msgstr "" + +#: lib/api.php:793 +msgid "Update" +msgstr "Zaktualizuj" + +#: ticket/update.php:97 +#, php-format +msgid "Update %s" +msgstr "Aktualizuj %s" + +#: templates/admin/mtmatrix.inc:29 +msgid "Update Associations" +msgstr "" + +#: lib/Ticket.php:677 lib/Whups.php:499 +msgid "Updated" +msgstr "" + +#: lib/Ticket.php:491 lib/Ticket.php:506 +msgid "Updated By" +msgstr "" + +#: lib/Forms/Admin.php:152 lib/Forms/Admin.php:162 lib/Forms/Admin.php:165 +msgid "User" +msgstr "U¿ytkownik" + +#: lib/Query.php:591 +msgid "User ID" +msgstr "" + +#: lib/Forms/Admin.php:94 +msgid "Users responsible for this Queue" +msgstr "" + +#: lib/Forms/Admin.php:197 +msgid "Users responsible for this queue" +msgstr "" + +#: lib/Query.php:733 lib/Ticket.php:481 lib/Ticket.php:595 +#: templates/queryrenderer.inc:115 config/prefs.php.dist:42 +msgid "Version" +msgstr "" + +#: lib/Forms/Admin.php:535 lib/Forms/Admin.php:581 lib/Forms/Admin.php:604 +msgid "Version Description" +msgstr "" + +#: lib/Forms/Admin.php:534 lib/Forms/Admin.php:559 lib/Forms/Admin.php:578 +#: lib/Forms/Admin.php:601 +msgid "Version Name" +msgstr "" + +#: lib/Forms/AddComment.php:38 ticket/type.php:46 ticket/queue.php:45 +msgid "Viewable only by members of" +msgstr "" + +#: lib/Forms/AddComment.php:25 +msgid "Watch this ticket" +msgstr "" + +#: ticket/watch.php:76 +#, php-format +msgid "Watchers for %s" +msgstr "" + +#: config/prefs.php.dist:95 +msgid "Weekday Day Month" +msgstr "" + +#: config/prefs.php.dist:96 +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "" + +#: lib/Query.php:926 lib/Forms/Admin.php:127 lib/Forms/Admin.php:319 +#: lib/Forms/Admin.php:435 lib/Forms/Admin.php:521 lib/Forms/Admin.php:607 +#: lib/Forms/Admin.php:699 ticket/delete.php:37 +msgid "Yes" +msgstr "Tak" + +#: view.php:51 +msgid "You are not allowed to view this ticket." +msgstr "" + +#: lib/Driver/sql.php:869 +#, php-format +msgid "You do not have permission to access this ticket (%s)." +msgstr "" + +#: lib/api.php:527 +msgid "You do not have permission to update this ticket." +msgstr "" + +#: lib/Block/myrequests.php:46 +msgid "You have no open requests." +msgstr "Nie masz otwartych zg³oszeñ." + +#: lib/Query.php:896 lib/Block/query.php:28 +msgid "You have no saved queries." +msgstr "" + +#: lib/Whups.php:526 +msgid "You must select at least one queue to send reminders for." +msgstr "" + +#: lib/Forms/AddComment.php:18 lib/Forms/CreateTicket.php:111 +msgid "Your Email Address" +msgstr "Twój adres email" + +#: ticket/create.php:53 +#, php-format +msgid "" +"Your ticket ID is %s. An appropriate person has been notified of this " +"request." +msgstr "" + +#: lib/Whups.php:589 +msgid "_Admin" +msgstr "" + +#: lib/Whups.php:198 +msgid "_Comment" +msgstr "" + +#: lib/Whups.php:208 +msgid "_Delete" +msgstr "Usuñ" + +#: lib/Query.php:205 +msgid "_Delete Query" +msgstr "" + +#: lib/Query.php:186 +msgid "_Edit Query" +msgstr "" + +#: admin/index.php:34 +msgid "_Edit Queues" +msgstr "" + +#: templates/menu.inc:5 +msgid "_Go" +msgstr "" + +#: query.php:139 +msgid "_Group Criteria" +msgstr "" + +#: lib/Whups.php:194 +msgid "_History" +msgstr "" + +#: lib/Query.php:199 +msgid "_Load Query" +msgstr "" + +#: lib/Whups.php:580 +#, php-format +msgid "_My %s" +msgstr "_Moje %s" + +#: lib/Whups.php:583 +msgid "_New Ticket" +msgstr "_Nowe zg³oszenie" + +#: query.php:137 +msgid "_Property Criteria" +msgstr "" + +#: lib/Whups.php:584 +msgid "_Query Builder" +msgstr "Konstruktor zapytañ" + +#: lib/Whups.php:585 +msgid "_Reports" +msgstr "_Raporty" + +#: lib/Whups.php:582 +msgid "_Search" +msgstr "_Szukaj" + +#: query.php:141 +msgid "_Text Criteria" +msgstr "" + +#: lib/Whups.php:196 +msgid "_Update" +msgstr "" + +#: query.php:138 +msgid "_User Criteria" +msgstr "" + +#: lib/Whups.php:200 +msgid "_Watch" +msgstr "" + +#: templates/queryrenderer.inc:168 +msgid "contains (case insensitive) substring" +msgstr "" + +#: templates/queryrenderer.inc:172 +msgid "contains (case sensitive) substring" +msgstr "" + +#: templates/queryrenderer.inc:176 +msgid "contains the word" +msgstr "" + +#: scripts/mail-filter.php:176 +#, php-format +msgid "error processing message: %s" +msgstr "" + +#: lib/api.php:834 +msgid "estimated time" +msgstr "" + +#: templates/queryrenderer.inc:164 +msgid "is" +msgstr "" + +#: templates/queryrenderer.inc:156 +msgid "is greater than" +msgstr "" + +#: templates/queryrenderer.inc:160 +msgid "is less than" +msgstr "" + +#: templates/queryrenderer.inc:180 +msgid "matches the pattern" +msgstr "" diff --git a/whups/po/pt_BR.po b/whups/po/pt_BR.po new file mode 100644 index 000000000..71e8b1cf1 --- /dev/null +++ b/whups/po/pt_BR.po @@ -0,0 +1,1898 @@ +# Portuguese translations for horde package +# Traduções em português para o pacote horde. +# Copyright 2005-2009 The Horde Project +# This file is distributed under the same license as the horde package. +# Automatically generated, 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: Whups 1.0-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2005-01-03 18:00+0300\n" +"PO-Revision-Date: 2005-01-21 12:09+0100\n" +"Last-Translator: Daniel V. Hoisel \n" +"Language-Team: i18n@lists.horde.org\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: templates/menu.inc:6 +msgid "#Id" +msgstr "#Id" + +#: admin.php:554 +#, php-format +msgid "%s added to those responsible for '%s'" +msgstr "%s adicionado pela responsabilidade de %s" + +#: templates/reports/stats.inc:20 +#, php-format +msgid "%s days" +msgstr "%s dias" + +#: admin.php:591 +#, php-format +msgid "'%s' is no longer among those responsible for '%s'" +msgstr "%s não é atualmente responsável por %s" + +#: admin.php:78 +msgid "- Stage 1" +msgstr "- Estágio 1" + +#: admin.php:83 +msgid "- Stage 2" +msgstr "- Estágio 2" + +#: scripts/mail-filter.php:98 +msgid "--priority option must be supplied." +msgstr "--a opção de prioridade deve ser informada." + +#: scripts/mail-filter.php:70 +msgid "--queue option must be supplied." +msgstr "--a opção de fila deve ser informada." + +#: scripts/mail-filter.php:112 +msgid "--state option must be supplied." +msgstr "--a opção de estágio deve ser informada." + +#: scripts/mail-filter.php:84 +msgid "--type option must be supplied." +msgstr "--a opção tipo deve ser informada." + +#: lib/Block/summary.php:89 +msgid "No summary" +msgstr "Sem sumário" + +#: view.php:55 +#, php-format +msgid "Access denied to %s" +msgstr "Acesso negado para %s" + +#: lib/Admin.php:702 +msgid "Add Attribute" +msgstr "Adicionar atributo" + +#: lib/Query.php:649 +msgid "Add Attribute Criterion" +msgstr "Adicionar critério de atributo" + +#: query.php:169 +msgid "Add Criterion" +msgstr "Adicionar critério" + +#: lib/Query.php:488 +msgid "Add Group Criterion" +msgstr "Adicionar critério de grupo" + +#: lib/Admin.php:526 +msgid "Add Priority" +msgstr "Adicionar prioridade" + +#: lib/Query.php:570 +msgid "Add Property Criterion" +msgstr "Adicionar prioridade de critério" + +#: lib/Admin.php:102 lib/Admin.php:103 +msgid "Add Queue" +msgstr "Adicionar fila" + +#: lib/Admin.php:434 +msgid "Add State" +msgstr "Adicionar estado" + +#: lib/Admin.php:14 lib/Admin.php:15 +msgid "Add Subject" +msgstr "Adicionar assunto" + +#: lib/Query.php:526 +msgid "Add Text Criterion" +msgstr "Adicionar texto do critério" + +#: lib/Admin.php:291 lib/Admin.php:292 +msgid "Add Type" +msgstr "Adicionar tipo" + +#: admin.php:78 admin.php:83 +#, php-format +msgid "Add Type %s" +msgstr "Adicioar tipo %s" + +#: lib/Query.php:433 +msgid "Add User Criterion" +msgstr "Adicionar critério de usuário" + +#: lib/Admin.php:222 +msgid "Add Users" +msgstr "Adicionar usuários" + +#: lib/Admin.php:614 +msgid "Add Version" +msgstr "Adicionar versão" + +#: ticket/create.php:154 +#, php-format +msgid "Adding your ticket failed: %s." +msgstr "Falha ao adicionar seu ticket: %s." + +#: admin.php:51 +msgid "Administration" +msgstr "Administração" + +#: templates/queryrenderer.inc:95 lib/Query.php:383 +msgid "And" +msgstr "e" + +#: search.php:39 search.php:87 search.php:88 search.php:104 search.php:121 +#: lib/Query.php:577 lib/Query.php:585 lib/Query.php:589 lib/Query.php:592 +msgid "Any" +msgstr "Qualquer um" + +#: ticket/update.php:67 ticket/people.php:73 ticket/type.php:41 +#: ticket/comment.php:36 ticket/queue.php:46 +msgid "Any Group" +msgstr "Qualquer grupo" + +#: config/prefs.php.dist:47 +msgid "Ascending" +msgstr "Ascendente" + +#: ticket/people.php:116 +msgid "Assign Ticket Succeeded" +msgstr "Assinatura do ticket bem-sucedida" + +#: lib/Whups.php:405 lib/Ticket.php:506 lib/Driver.php:98 +#: config/prefs.php.dist:36 +msgid "Assigned" +msgstr "Assinado" + +#: admin.php:941 +msgid "Associations updated successfully." +msgstr "Associações atualizadas com sucesso." + +#: ticket/update.php:60 ticket/comment.php:28 lib/Ticket.php:402 +#: lib/Ticket.php:448 +msgid "Attachment" +msgstr "Anexo" + +#: lib/Ticket.php:508 +msgid "Attachments" +msgstr "Anexos" + +#: query.php:40 +msgid "Attribute Criteria" +msgstr "Critério do atributo" + +#: lib/Admin.php:706 lib/Admin.php:752 lib/Admin.php:775 +msgid "Attribute Description" +msgstr "Descrição do atributo" + +#: lib/Admin.php:705 lib/Admin.php:730 lib/Admin.php:749 lib/Admin.php:772 +msgid "Attribute Name" +msgstr "Nome do atributo" + +#: lib/Admin.php:363 +msgid "Attributes for this Type" +msgstr "Atributos para este tipo" + +#: config/prefs.php.dist:118 +msgid "Autolink to other tickets in comments?" +msgstr "Ligar automaticamente para outros tickets nos comentários " + +#: lib/Reports.php:9 +msgid "Average days to close by Owner" +msgstr "Média de dias para fechar por Proprietário" + +#: lib/Reports.php:11 +msgid "Average days to close by Queue" +msgstr "Média de dias para fechar por fila" + +#: lib/Reports.php:10 +msgid "Average days to close by Requester" +msgstr "Média de dias para fechar por Requisitante" + +#: lib/Reports.php:13 +msgid "Average time a ticket is unresolved" +msgstr "Tempo médio em que um ticket fica sem solução" + +#: scripts/mail-filter.php:94 +#, php-format +msgid "Bad type `%s' for queue." +msgstr "Tipo `%s' ruim para fila" + +#: lib/Query.php:388 +msgid "Branch Type" +msgstr "" + +#: lib/Query.php:52 +msgid "Case Insensitive Substring" +msgstr "Sequência não sensível ao caso" + +#: templates/queryrenderer.inc:27 +msgid "Change" +msgstr "Alterar" + +#: lib/Query.php:402 +msgid "Change Ticket Type" +msgstr "Alterar tipo do ticket" + +#: config/prefs.php.dist:11 +msgid "Change display options such as how search results are sorted." +msgstr "Alterar opções de exibição de como as pesquisas serão classificadas" + +#: config/prefs.php.dist:18 +msgid "Change options for email notifications of ticket activity." +msgstr "Alterar as opções para notificações por e-mail da atividade do ticket" + +#: query.php:43 +msgid "Choose Action:" +msgstr "Escolher ação:" + +#: lib/Create.php:27 +msgid "Choose:" +msgstr "Escolher" + +#: config/prefs.php.dist:128 +msgid "Chronological (oldest first)" +msgstr "Cronológica (antigas primeiro)" + +#: templates/savedsearches.inc:28 +msgid "Clear All Searches" +msgstr "Limpar todas as pesquisas" + +#: lib/Admin.php:414 +msgid "Clone" +msgstr "Clonar" + +#: lib/Admin.php:420 +msgid "Clone Description" +msgstr "Descrição do clone" + +#: admin.php:117 lib/Admin.php:306 +msgid "Clone Type" +msgstr "Clonar tipo" + +#: config/templates.php.dist:43 +msgid "Comma Separated Values (CSV file)" +msgstr "Valores separados por vírgula (arquivo CSV)" + +#: templates/queryrenderer.inc:108 templates/comment.inc:89 +#: ticket/update.php:61 ticket/people.php:68 ticket/type.php:35 +#: ticket/comment.php:27 ticket/queue.php:38 lib/Whups.php:194 +msgid "Comment" +msgstr "Comentário" + +#: ticket/comment.php:86 +msgid "Comment added" +msgstr "Comentário adicionado" + +#: ticket/comment.php:92 +#, php-format +msgid "Comment on %s" +msgstr "Comentário em %s" + +#: templates/queryrenderer.inc:107 +msgid "Commentor" +msgstr "Comentarista" + +#: lib/Admin.php:418 +#, php-format +msgid "Copy of %s" +msgstr "Copia de %s" + +#: lib/Query.php:493 +msgid "Could not find any groups." +msgstr "Não encontrei nenhum grupo" + +#: lib/Admin.php:357 +msgid "Create Default Priorities" +msgstr "Criar prioridades padrão" + +#: lib/Admin.php:347 +msgid "Create Default States" +msgstr "Criar Estados padrão" + +#: config/prefs.php.dist:60 +msgid "Create Ticket" +msgstr "Criar ticket" + +#: lib/Create.php:23 +msgid "Create Ticket - Step 1" +msgstr "Criar ticket - Passo 1" + +#: lib/Create.php:52 +msgid "Create Ticket - Step 2" +msgstr "Criar ticket - Passo 2" + +#: lib/Create.php:92 +msgid "Create Ticket - Step 3" +msgstr "Criar ticket - Passo 3" + +#: lib/Create.php:135 +msgid "Create Ticket - Step 4" +msgstr "Criar ticket - Passo 4" + +#: lib/Whups.php:404 lib/Ticket.php:505 config/prefs.php.dist:35 +msgid "Created" +msgstr "Criado" + +#: lib/Ticket.php:398 lib/Ticket.php:412 +msgid "Created By" +msgstr "Criado por" + +#: query.php:159 query.php:182 +msgid "Current Query" +msgstr "Consulta atual" + +#: templates/queryrenderer.inc:25 +msgid "Current Ticket Type" +msgstr "Tipo do ticket atualmente" + +#: lib/Query.php:404 +msgid "Current Type" +msgstr "Tipo atual" + +#: lib/Ticket.php:457 +msgid "DO NOT REPLY TO THIS MESSAGE. THIS EMAIL ADDRESS IS NOT MONITORED." +msgstr "NÃO RESPONDA A ESTA MENSAGEM. ESTE E-MAIL NÃO É MONITORADO" + +#: config/prefs.php.dist:91 +msgid "Date/Time format for search results" +msgstr "Formato de data/hora para resultado das pesquisas" + +#: config/prefs.php.dist:38 +msgid "Default sorting criteria:" +msgstr "Critério de classificação padrão" + +#: config/prefs.php.dist:49 +msgid "Default sorting direction:" +msgstr "Direção de classificação padrão" + +#: query.php:44 lib/Whups.php:202 +msgid "Delete" +msgstr "Apagar" + +#: ticket/delete.php:58 +#, php-format +msgid "Delete %s?" +msgstr "Apagar %s?" + +#: admin.php:835 lib/Admin.php:718 +msgid "Delete Attribute" +msgstr "Apagar atributo" + +#: lib/Admin.php:764 +msgid "Delete Attribute Confirmation" +msgstr "Confirmação para apagar atributo" + +#: admin.php:472 lib/Admin.php:542 +msgid "Delete Priority" +msgstr "Apagar prioridade" + +#: lib/Admin.php:588 +msgid "Delete Priority Confirmation" +msgstr "Confirmação para apagar prioridade" + +#: admin.php:265 lib/Admin.php:118 +msgid "Delete Queue" +msgstr "Apagar fila" + +#: lib/Admin.php:197 +msgid "Delete Queue Confirmation" +msgstr "Confirmação para apagar fila" + +#: templates/savedsearches.inc:45 templates/savedsearches.inc:46 +msgid "Delete Search" +msgstr "Apagar pesquisa" + +#: admin.php:362 lib/Admin.php:451 +msgid "Delete State" +msgstr "Apagar estado" + +#: lib/Admin.php:500 +msgid "Delete State Confirmation" +msgstr "Confirmação para apagar estado" + +#: admin.php:634 lib/Admin.php:29 +msgid "Delete Subject" +msgstr "Apagar assunto" + +#: lib/Admin.php:80 +msgid "Delete Subject Confirmation" +msgstr "Confirmação para apagar assunto" + +#: admin.php:111 lib/Admin.php:306 +msgid "Delete Type" +msgstr "Apagar tipo" + +#: lib/Admin.php:377 +msgid "Delete Type Confirmation" +msgstr "Confirmacão para apagar tipo" + +#: admin.php:726 lib/Admin.php:630 +msgid "Delete Version" +msgstr "Apagar versão" + +#: lib/Admin.php:676 +msgid "Delete Version Confirmation" +msgstr "Confirmação para apagar versão" + +#: config/prefs.php.dist:48 +msgid "Descending" +msgstr "Decrescente" + +#: lib/Create.php:118 +msgid "Description" +msgstr "Descrição" + +#: config/prefs.php.dist:10 +msgid "Display Options" +msgstr "Opções de exibição" + +#: lib/Whups.php:554 +msgid "Download" +msgstr "Download" + +#: query.php:45 +msgid "Edit" +msgstr "Editar" + +#: lib/Admin.php:143 lib/Admin.php:331 +#, php-format +msgid "Edit %s" +msgstr "Editar %s" + +#: admin.php:830 lib/Admin.php:718 lib/Admin.php:741 +msgid "Edit Attribute" +msgstr "Editar atributo" + +#: lib/Admin.php:365 +msgid "Edit Attributes" +msgstr "Editar atributos" + +#: lib/Admin.php:355 +msgid "Edit Priorities" +msgstr "Editar prioridades" + +#: admin.php:467 lib/Admin.php:542 lib/Admin.php:565 +msgid "Edit Priority" +msgstr "Editar prioridade" + +#: runquery.php:23 +msgid "Edit Query" +msgstr "Editar consulta" + +#: admin.php:259 lib/Admin.php:118 +msgid "Edit Queue" +msgstr "Editar fila" + +#: admin.php:29 +msgid "Edit Queues" +msgstr "Editar filas" + +#: admin.php:357 lib/Admin.php:451 lib/Admin.php:474 +msgid "Edit State" +msgstr "Editar estado" + +#: lib/Admin.php:345 +msgid "Edit States" +msgstr "Editar estados" + +#: admin.php:629 lib/Admin.php:29 lib/Admin.php:51 +msgid "Edit Subject" +msgstr "Editar assunto" + +#: admin.php:31 +msgid "Edit Subjects" +msgstr "Editar assuntos" + +#: admin.php:105 lib/Admin.php:306 +msgid "Edit Type" +msgstr "Editar tipo" + +#: admin.php:30 +msgid "Edit Types" +msgstr "Editar tipos" + +#: admin.php:721 lib/Admin.php:630 lib/Admin.php:653 +msgid "Edit Version" +msgstr "Editar versão" + +#: lib/Admin.php:717 +msgid "Edit or Delete Attributes" +msgstr "Editar ou apagar atributos" + +#: lib/Admin.php:541 +msgid "Edit or Delete Priorities" +msgstr "Editar ou apagar prioridades" + +#: lib/Admin.php:117 +msgid "Edit or Delete Queues" +msgstr "Editar ou apagar filas" + +#: lib/Admin.php:450 +msgid "Edit or Delete States" +msgstr "Editar ou apagar Estados" + +#: lib/Admin.php:28 +msgid "Edit or Delete Subjects" +msgstr "Editar ou apagar assuntos" + +#: lib/Admin.php:305 +msgid "Edit or Delete Types" +msgstr "Editar ou apagar tipos" + +#: lib/Admin.php:629 +msgid "Edit or Delete Versions" +msgstr "Editar ou apagar versões" + +#: lib/Admin.php:184 +msgid "Edit the permissions on this queue" +msgstr "Editar as permissões desta fila" + +#: lib/Admin.php:179 +msgid "Edit the users responsible for this queue" +msgstr "Editar os usuários responsáveis por esta fila" + +#: lib/Admin.php:159 +msgid "Edit the versions for this queue" +msgstr "Editar as versões para esta fila" + +#: query.php:146 +#, php-format +msgid "Error: Unknown query form %s, defaulting to properties" +msgstr "" +"Erro: Formulário de consulta %s desconhecido, padranizando para propriedades" + +#: lib/Query.php:51 +msgid "Exact Match" +msgstr "Coincidência exata" + +#: runquery.php:73 runquery.php:87 query.php:29 +msgid "Execute Query" +msgstr "Executar consulta" + +#: templates/prevnext.inc:12 +msgid "First" +msgstr "Primeiro" + +#: lib/Admin.php:802 +msgid "For tickets from these queues" +msgstr "Para tickets desta fila" + +#: lib/Admin.php:806 +msgid "For tickets which are" +msgstr "Para tickets que são" + +#: templates/menu.inc:6 lib/Block/summary.php:29 +msgid "Go" +msgstr "Ir" + +#: query.php:37 +msgid "Group Criteria" +msgstr "Critério do grupo" + +#: ticket/people.php:58 lib/Create.php:162 +msgid "Group Owners" +msgstr "Proprietários do grupo" + +#: templates/queryrenderer.inc:105 lib/Query.php:494 lib/Query.php:496 +msgid "Groups" +msgstr "Grupos" + +#: lib/api.php:619 +msgid "Hidden Comments" +msgstr "Ocultar comentários" + +#: ticket/index.php:43 lib/Whups.php:190 +msgid "History" +msgstr "História" + +#: query.php:46 +msgid "Hoist" +msgstr "" + +#: templates/queryrenderer.inc:103 lib/Whups.php:397 lib/Query.php:572 +#: config/prefs.php.dist:28 +msgid "Id" +msgstr "Id" + +#: search.php:52 +msgid "" +"If you don't select any categories, no filtering will be done on ticket " +"category." +msgstr "" + +#: search.php:55 +msgid "" +"If you don't select any types, no filtering will be done on ticket type." +msgstr "" + +#: lib/Admin.php:809 +msgid "" +"If you select any tickets that do not have an owner, who should we send " +"email to?" +msgstr "" + +#: query.php:47 +msgid "Insert And" +msgstr "Inserir And" + +#: lib/Query.php:380 +msgid "Insert Branch" +msgstr "Inserir Branch" + +#: query.php:49 +msgid "Insert Not" +msgstr "Inserir Not" + +#: query.php:48 +msgid "Insert Or" +msgstr "Inserir Or" + +#: lib/Whups.php:161 +msgid "Invalid Ticket Id" +msgstr "Identificação do ticket inválida" + +#: lib/Admin.php:157 +msgid "Keep a set of versions for this queue?" +msgstr "Manter um configuração de versão para esta fila?" + +#: templates/prevnext.inc:17 +msgid "Last" +msgstr "Última" + +#: runquery.php:25 query.php:30 lib/Query.php:731 +msgid "Load Query" +msgstr "Ler consulta" + +#: config/prefs.php.dist:89 +msgid "MM/DD/YY" +msgstr "MM/DD/AA" + +#: config/prefs.php.dist:90 +msgid "MM/DD/YY HH:MM:SS" +msgstr "MM/DD/AA HH:MM:SS" + +#: lib/Admin.php:412 +#, php-format +msgid "Make a clone of %s" +msgstr "Fazer um clone de %s" + +#: lib/Query.php:655 +msgid "Match" +msgstr "Coincidir" + +#: lib/Query.php:436 lib/Query.php:529 lib/Query.php:656 +msgid "Match Operator" +msgstr "Operador de coincidência" + +#: lib/Query.php:55 +msgid "Match Pattern" +msgstr "Modelo de coincidência" + +#: lib/Query.php:54 +msgid "Match Word" +msgstr "Palavra de coincidência" + +#: lib/Reports.php:14 +msgid "Maximum time a ticket is unresolved" +msgstr "Tempo máximo para um ticket ficar sem solução" + +#: lib/Reports.php:15 +msgid "Minimum time a ticket is unresolved" +msgstr "Tempo mínimo para um ticket ficar sem solução" + +#: config/prefs.php.dist:129 +msgid "Most recent first" +msgstr "Mais novos primeiro" + +#: ticket/queue.php:171 +#, php-format +msgid "Moved ticket %d to '%s'" +msgstr "Ticket %d movido para '%s'" + +#: mybugs.php:43 +msgid "My Assigned Tickets" +msgstr "Meus tickets assinados" + +#: mybugs.php:59 +msgid "My Open Requests" +msgstr "Meus pedidos abertos" + +#: mybugs.php:81 search.php:189 lib/Block/myqueries.php:3 +#: lib/Block/myqueries.php:26 +msgid "My Queries" +msgstr "Minhas consultas" + +#: mybugs.php:78 search.php:186 lib/Block/mysearches.php:3 +#: lib/Block/mysearches.php:24 +msgid "My QuickSearches" +msgstr "Minhas pesquisas rápidas" + +#: config/prefs.php.dist:58 +msgid "My Tickets" +msgstr "Meus tickets" + +#: lib/Ticket.php:463 +#, php-format +msgid "NEW: %s" +msgstr "NOVO: %s" + +#: lib/Query.php:707 lib/Query.php:742 +msgid "Name" +msgstr "Nome" + +#: lib/Admin.php:417 +msgid "Name of the cloned copy" +msgstr "Nome da cópia clonada" + +#: lib/Driver.php:97 +msgid "New" +msgstr "Novo" + +#: query.php:28 lib/Block/myqueries.php:27 lib/Block/myqueries.php:28 +msgid "New Query" +msgstr "Nova consulta" + +#: ticket/queue.php:37 +msgid "New Queue" +msgstr "Nova fila" + +#: ticket/people.php:67 +msgid "New State" +msgstr "Novo estado" + +#: ticket/create.php:27 lib/Block/summary.php:28 +msgid "New Ticket" +msgstr "Novo ticket" + +#: ticket/type.php:34 +msgid "New Type" +msgstr "Novo tipo" + +#: templates/prevnext.inc:16 +msgid "Next" +msgstr "Próximo" + +#: ticket/delete.php:37 lib/Admin.php:90 lib/Admin.php:210 lib/Admin.php:398 +#: lib/Admin.php:514 lib/Admin.php:602 lib/Admin.php:690 lib/Admin.php:778 +msgid "No" +msgstr "Não" + +#: clearsearch.php:34 +msgid "No searches cleared." +msgstr "Nenhuma pesquisa limpa." + +#: reports.php:17 +msgid "No stats available." +msgstr "Nenhuma estatistica disponível" + +#: lib/Driver.php:254 +#, php-format +msgid "No such backend '%s' found" +msgstr "Nenhum backend '%s' encontrado" + +#: lib/Whups.php:436 +msgid "No tickets matched your search criteria." +msgstr "Nenhum ticket coincide com seu critério de pesquisa" + +#: lib/Block/summary.php:75 +msgid "No tickets to display" +msgstr "Nenhum ticket para mostrar" + +#: lib/Reports.php:79 +msgid "None" +msgstr "Nenhum" + +#: templates/queryrenderer.inc:97 lib/Query.php:385 +msgid "Not" +msgstr "Não" + +#: query.php:79 +msgid "Not yet implemented..." +msgstr "Não implementado ainda..." + +#: config/prefs.php.dist:17 +msgid "Notification Options" +msgstr "Opções de notificação" + +#: config/prefs.php.dist:109 +msgid "Only notify me of ticket changes from other users" +msgstr "Apenas notifique-me das mudanças dos tickets de outros usuários" + +#: lib/Reports.php:8 +msgid "Open Tickets by Owner" +msgstr "Tickets abertos por Proprietário" + +#: lib/Reports.php:6 +msgid "Open Tickets by Priority" +msgstr "Tickets abertos por Prioridade" + +#: lib/Reports.php:3 +msgid "Open Tickets by Queue" +msgstr "Tickets abertos por Fila" + +#: lib/Reports.php:7 +msgid "Open Tickets by Requester" +msgstr "Tickets abertos por Requisitante" + +#: lib/Reports.php:4 +msgid "Open Tickets by State" +msgstr "Tickets abertos por Estado" + +#: lib/Reports.php:5 +msgid "Open Tickets by Type" +msgstr "Tickets abertos por Tipo" + +#: templates/queryrenderer.inc:96 lib/Query.php:384 +msgid "Or" +msgstr "Ou" + +#: config/prefs.php.dist:9 config/prefs.php.dist:16 +msgid "Other Options" +msgstr "Outras opções" + +#: templates/queryrenderer.inc:104 ticket/people.php:52 ticket/people.php:64 +#: lib/Create.php:156 lib/Create.php:168 lib/Whups.php:403 lib/Ticket.php:401 +#: lib/Ticket.php:440 lib/Ticket.php:441 lib/Ticket.php:443 lib/Ticket.php:501 +msgid "Owners" +msgstr "Proprietários" + +#: lib/Query.php:387 +msgid "Path" +msgstr "Caminho" + +#: lib/Whups.php:197 +msgid "People" +msgstr "Pessoas" + +#: ticket/update.php:17 ticket/people.php:17 ticket/type.php:17 +#: ticket/delete.php:17 ticket/queue.php:17 +msgid "Permission Denied" +msgstr "Permissão negada" + +#: ticket/update.php:78 ticket/delete.php:44 +msgid "Permission Denied." +msgstr "Permissão negada." + +#: templates/prevnext.inc:13 +msgid "Prev" +msgstr "Anterior" + +#: lib/Admin.php:353 lib/Admin.php:395 +msgid "Priorities for this Type" +msgstr "Prioridades para este tipo" + +#: templates/queryrenderer.inc:128 ticket/update.php:48 ticket/type.php:68 +#: ticket/queue.php:111 lib/Create.php:116 lib/Whups.php:401 +#: lib/Ticket.php:393 lib/Ticket.php:423 lib/Ticket.php:499 lib/Query.php:592 +#: config/prefs.php.dist:32 +msgid "Priority" +msgstr "Prioridade" + +#: templates/comment.inc:68 +#, php-format +msgid "Priority ⇒ %s" +msgstr "Prioridade ⇒ %s" + +#: lib/Admin.php:530 lib/Admin.php:576 lib/Admin.php:599 +msgid "Priority Description" +msgstr "Descrição da prioridade" + +#: lib/Admin.php:529 lib/Admin.php:554 lib/Admin.php:573 lib/Admin.php:596 +msgid "Priority Name" +msgstr "Nome da prioridade" + +#: query.php:35 +msgid "Property Criteria" +msgstr "Critério da propriedade" + +#: query.php:127 +msgid "Query Builder" +msgstr "Construtor de consultas" + +#: lib/Query.php:118 +msgid "Query Parameters" +msgstr "Parâmetros da consulta" + +#: runquery.php:81 +msgid "Query Results" +msgstr "Resultados da consulta" + +#: search.php:48 templates/queryrenderer.inc:112 lib/Whups.php:402 +#: lib/Ticket.php:390 lib/Ticket.php:420 lib/Ticket.php:490 lib/Query.php:577 +#: config/prefs.php.dist:33 +msgid "Queue" +msgstr "Fila" + +#: templates/comment.inc:76 +#, php-format +msgid "Queue ⇒ %s" +msgstr "Fila ⇒ %s" + +#: lib/Admin.php:106 lib/Admin.php:150 lib/Admin.php:207 +msgid "Queue Description" +msgstr "Descrição da fila" + +#: lib/Admin.php:105 lib/Admin.php:129 lib/Admin.php:147 lib/Admin.php:204 +#: lib/Create.php:27 lib/Create.php:35 +msgid "Queue Name" +msgstr "Nome da fila" + +#: ticket/queue.php:84 lib/Create.php:74 lib/Ticket.php:493 +msgid "Queue Version" +msgstr "Versão da fila" + +#: scripts/mail-filter.php:80 +#, php-format +msgid "Queue `%s' does not exist." +msgstr "Fila `%s' não existe." + +#: admin.php:32 templates/admin/mtmatrix.inc:6 +msgid "Queue/Type Matrix" +msgstr "Matriz de fila/tipo" + +#: search.php:137 +#, php-format +msgid "Queue: %s, Ticket: %s, Category: %s, Type: %s" +msgstr "Fila: %s, ticket: %s, categoria: %s, tipo: %s" + +#: lib/api.php:122 lib/api.php:622 +msgid "Queues" +msgstr "Filas" + +#: lib/Ticket.php:465 +#, php-format +msgid "RESOLVED: %s" +msgstr "Resolvido: %s" + +#: runquery.php:24 +msgid "Re-execute Query" +msgstr "Reexecutar consulta" + +#: lib/Admin.php:779 +msgid "Really delete this attribute? This may cause data problems!" +msgstr "Apagar com certeza este atributo? Isto pode causar problemas de dados!" + +#: lib/Admin.php:603 +msgid "Really delete this priority? This may cause data problems!" +msgstr "" +"Apagar com certeza esta prioridade? Isto pode causar problemas de dados!" + +#: lib/Admin.php:211 +msgid "Really delete this queue? This may cause data problems!" +msgstr "Apagar com certeza esta fila? Isto pode causar problemas de dados!" + +#: lib/Admin.php:515 +msgid "Really delete this state? This may cause data problems!" +msgstr "Apagar com certeza este estado? Isto pode causar problemas de dados!" + +#: lib/Admin.php:91 +msgid "Really delete this subject? This may cause data problems!" +msgstr "Apagar com certeza este assunto? Isto pode causar problemas de dados!" + +#: ticket/delete.php:38 +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "Apagar com certeza este ticket? Isto pode causar problemas de dados!" + +#: lib/Admin.php:399 +msgid "Really delete this type? This may cause data problems!" +msgstr "Apagar com certeza este tipo? Isto pode causar problemas de dados!" + +#: lib/Admin.php:691 +msgid "Really delete this version? This may cause data problems!" +msgstr "Apagar com certeza esta versão? Isto pode causa problemas de dados!" + +#: search.php:167 +msgid "Refine Search" +msgstr "Refinar pesquisa" + +#: admin.php:910 +msgid "Reminders were sent." +msgstr "" + +#: lib/Admin.php:260 +msgid "Remove User" +msgstr "Remover usuário" + +#: reports.php:22 +msgid "Reports" +msgstr "Relatórios" + +#: templates/queryrenderer.inc:106 lib/Ticket.php:504 +msgid "Requester" +msgstr "Requisitante" + +#: lib/Whups.php:406 lib/Ticket.php:507 lib/Driver.php:99 +#: config/prefs.php.dist:37 +msgid "Resolved" +msgstr "Resolvido" + +#: lib/Admin.php:262 +msgid "Responsible Users" +msgstr "Usuários responsáveis" + +#: ticket/update.php:71 +msgid "Restrict Comment to:" +msgstr "Restingir comentário para:" + +#: lib/Admin.php:163 +msgid "Restrict ticket subjects to a specified list?" +msgstr "Restringir assuntos de tickets de uma lista específica?" + +#: templates/searchresults.inc:51 +msgid "Save" +msgstr "Salvar" + +#: runquery.php:26 query.php:31 lib/Query.php:705 +msgid "Save Query" +msgstr "Salvar consulta" + +#: templates/searchresults.inc:45 +msgid "Save these results as: " +msgstr "Salvar este resultado como: " + +#: lib/Query.php:659 +#, php-format +msgid "Search %s Attribute" +msgstr "Pesquisar %s atributo" + +#: lib/Query.php:662 +msgid "Search Attribute" +msgstr "Pesquisar atributo" + +#: lib/Query.php:439 lib/Query.php:531 +msgid "Search Comments" +msgstr "Pesquisar comentários" + +#: lib/Query.php:437 +msgid "Search Owners" +msgstr "Pesquisar proprietários" + +#: lib/Query.php:438 +msgid "Search Requester" +msgstr "Pesquisa por requisitante" + +#: search.php:162 +msgid "Search Results" +msgstr "Resultados da pesquisa" + +#: templates/prevnext.inc:26 +#, php-format +msgid "Search Results: %s of %s" +msgstr "Resultados da pesquisa: %s de %s" + +#: lib/Query.php:530 +msgid "Search Summary" +msgstr "Sumário da pesquisa" + +#: search.php:64 search.php:179 config/prefs.php.dist:59 +msgid "Search Tickets" +msgstr "Pesquisar tickets" + +#: clearsearch.php:27 +msgid "Search cleared." +msgstr "Pesquisa limpa" + +#: clearsearch.php:30 +msgid "Searches cleared." +msgstr "Pesquisas limpas" + +#: config/prefs.php.dist:61 +msgid "Select the view to display after login:" +msgstr "Selecione o que ver depois do login:" + +#: admin.php:33 lib/Admin.php:790 +msgid "Send Reminders" +msgstr "Enviar lembretes" + +#: lib/Admin.php:801 +msgid "Send only for this list of ticket ids" +msgstr "Enviar apenas para esta lista de tickets ids" + +#: lib/Whups.php:198 +msgid "Set Queue" +msgstr "Configurar fila" + +#: ticket/queue.php:192 ticket/queue.php:201 ticket/queue.php:213 +msgid "Set Queue - Step 1" +msgstr "Configurar fila - passo 1" + +#: ticket/queue.php:193 ticket/queue.php:202 +msgid "Set Queue - Step 2" +msgstr "Configurar fila - passo 2" + +#: ticket/queue.php:203 +msgid "Set Queue - Step 3" +msgstr "Configurar fila - passo 3" + +#: ticket/queue.php:179 +#, php-format +msgid "Set Queue for %s" +msgstr "Configurar fila para %s" + +#: lib/Whups.php:201 +msgid "Set Type" +msgstr "Configurar tipo" + +#: ticket/type.php:140 ticket/type.php:149 +msgid "Set Type - Step 1" +msgstr "Configurar tipo - passo 1" + +#: ticket/type.php:141 +msgid "Set Type - Step 2" +msgstr "Configurar tipo - passo 2" + +#: ticket/type.php:127 +#, php-format +msgid "Set Type for %s" +msgstr "Configurar tipo para %s" + +#: config/prefs.php.dist:100 +msgid "Show \"(X Days Ago)\" in Date field of search results?" +msgstr "Mostrar \"(X dias atrás)\" no campo Data no resultado da pesquisa?" + +#: config/prefs.php.dist:127 +msgid "Show comments in chronological order, or most recent first?" +msgstr "Mostrar comentários na ordem cronológica, ou a mais recente primeiro?" + +#: config/prefs.php.dist:78 +msgid "Show ticket IDs in the summary view?" +msgstr "Mostrar IDs dos tickets no sumário " + +#: config/prefs.php.dist:70 +msgid "Show tickets you have requested in the summary view?" +msgstr "Mostrar tickets que você requisitou no sumário?" + +#: config/templates.php.dist:16 +msgid "Simple HTML Report" +msgstr "Relatório HTML simples" + +#: templates/searchresults.inc:75 +msgid "Sort Direction" +msgstr "Direção de classificação" + +#: templates/searchresults.inc:76 templates/searchresults.inc:80 +#, php-format +msgid "Sort by %s" +msgstr "Classificado por %s" + +#: templates/queryrenderer.inc:123 ticket/update.php:45 ticket/type.php:67 +#: ticket/queue.php:110 lib/Whups.php:399 lib/Ticket.php:392 +#: lib/Ticket.php:422 lib/Ticket.php:498 lib/Query.php:589 +#: config/prefs.php.dist:30 +msgid "State" +msgstr "Estado" + +#: templates/comment.inc:64 +#, php-format +msgid "State ⇒ %s" +msgstr "Estado ⇒ %s" + +#: lib/Admin.php:439 lib/Admin.php:488 +msgid "State Category" +msgstr "Categoria do estado" + +#: lib/Admin.php:438 lib/Admin.php:485 lib/Admin.php:511 +msgid "State Description" +msgstr "Descrição do estado" + +#: lib/Admin.php:437 lib/Admin.php:463 lib/Admin.php:482 lib/Admin.php:508 +msgid "State Name" +msgstr "Nome do estado" + +#: lib/Admin.php:343 lib/Admin.php:391 +msgid "States for this Type" +msgstr "Estados para este tipo" + +#: lib/Create.php:117 config/prefs.php.dist:29 +msgid "Subject" +msgstr "Assunto" + +#: lib/Admin.php:17 lib/Admin.php:40 lib/Admin.php:65 lib/Admin.php:87 +msgid "Subject Name" +msgstr "Nome do assunto" + +#: lib/Admin.php:167 +msgid "Subjects associated with this Queue" +msgstr "Assuntos associados com esta fila" + +#: ticket/create.php:102 +msgid "Submit" +msgstr "Enviar" + +#: admin.php:158 +#, php-format +msgid "Successfully Cloned %s to %s." +msgstr "%s clonado com sucesso para %s." + +#: ticket/type.php:118 +msgid "Successfully changed ticket type." +msgstr "Tipo do ticket alterado com sucesso." + +#: templates/queryrenderer.inc:109 ticket/update.php:42 ticket/delete.php:34 +#: lib/Whups.php:398 lib/Ticket.php:400 lib/Ticket.php:414 lib/Ticket.php:415 +#: lib/Ticket.php:417 lib/Ticket.php:489 +msgid "Summary" +msgstr "Sumário" + +#: templates/comment.inc:40 +#, php-format +msgid "Summary ⇒ %s" +msgstr "Sumário ⇒ %s" + +#: search.php:50 +msgid "Summary like" +msgstr "Sumário como" + +#: templates/comment.inc:54 +#, php-format +msgid "Taken from %s" +msgstr "Pego de %s" + +#: lib/Query.php:528 +msgid "Text" +msgstr "Texto" + +#: query.php:39 +msgid "Text Criteria" +msgstr "Critério do Texto" + +#: view.php:44 lib/Ticket.php:295 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "O backend VFS precisa ser configurado para ativar envio de anexos." + +#: admin.php:799 +#, php-format +msgid "The attribute '%s' has been added to %s." +msgstr "O atributo '%s' foi adicionado para %s." + +#: admin.php:881 +msgid "The attribute has been deleted." +msgstr "O atributo foi apagado." + +#: admin.php:852 +msgid "The attribute has been modified." +msgstr "O artibuto foi modificado." + +#: admin.php:886 +msgid "The attribute was not deleted." +msgstr "O atributo não foi apagado." + +#: admin.php:436 +#, php-format +msgid "The priority '%s' has been added to %s." +msgstr "A prioridade '%s' foi adicionada para %s." + +#: admin.php:517 +msgid "The priority has been deleted." +msgstr "A prioridade foi apagada." + +#: admin.php:489 +msgid "The priority has been modified." +msgstr "A prioridade foi modificada." + +#: admin.php:522 +msgid "The priority was not deleted." +msgstr "A prioriadade não foi modificada." + +#: admin.php:237 +#, php-format +msgid "The queue '%s' has been created." +msgstr "A fila '%s' foi criada." + +#: admin.php:305 +msgid "The queue has been deleted." +msgstr "A fila foi apagada." + +#: admin.php:287 +msgid "The queue has been modified." +msgstr "A fila foi modificada." + +#: admin.php:310 +msgid "The queue was not deleted." +msgstr "A fila não foi apagada." + +#: data.php:24 +msgid "The requested template does not exist." +msgstr "O modelo pedido não existe." + +#: admin.php:325 +#, php-format +msgid "The state '%s' has been added to %s." +msgstr "O estado '%s' foi adicionado para %s." + +#: admin.php:408 +msgid "The state has been deleted." +msgstr "O estado foi apagado." + +#: admin.php:379 +msgid "The state has been modified." +msgstr "O estado foi modificado." + +#: admin.php:413 +msgid "The state was not deleted." +msgstr "O estado não foi apagado." + +#: admin.php:613 +#, php-format +msgid "The subject '%s' has been added." +msgstr "O assunto '%s' foi adicionado." + +#: admin.php:669 +msgid "The subject has been deleted." +msgstr "O assunto foi apagado." + +#: admin.php:650 +msgid "The subject has been modified." +msgstr "O assunto foi modificado." + +#: admin.php:674 +msgid "The subject was not deleted." +msgstr "O assunto não foi apagado." + +#: ticket/delete.php:75 +msgid "The ticket was not deleted." +msgstr "O ticket foi apagado." + +#: admin.php:176 +#, php-format +msgid "The type '%s' has been modified." +msgstr "O tipo '%s' foi modificado." + +#: admin.php:218 +msgid "The type has been deleted." +msgstr "O tipo foi apagado." + +#: admin.php:223 +msgid "The type was not deleted." +msgstr "O tipo não foi apagado." + +#: admin.php:689 +#, php-format +msgid "The version '%s' has been added to %s." +msgstr "A versão '%s' foi adicionada para %s." + +#: admin.php:771 +msgid "The version has been deleted." +msgstr "A versão foi apagada." + +#: admin.php:743 +msgid "The version has been modified." +msgstr "A versão foi modificada." + +#: admin.php:776 +msgid "The version was not deleted." +msgstr "A versão não foi apagada." + +#: lib/Admin.php:726 +msgid "There are no attribute types to edit" +msgstr "Não há tipos de atributos para editar" + +#: lib/Query.php:662 +msgid "There are no attributes defined for the current type" +msgstr "Não há atributos definidos para o tipo atual" + +#: lib/Admin.php:550 +msgid "There are no priorities to edit" +msgstr "Não há prioridades para editar" + +#: lib/Admin.php:798 +msgid "There are no queues available." +msgstr "Não há filas disponíveis" + +#: lib/Admin.php:126 +msgid "There are no queues to edit" +msgstr "Não há filas para editar" + +#: lib/Create.php:35 +msgid "There are no queues which you can create tickets in." +msgstr "Não há filas em que se possa criar tickets" + +#: search.php:42 +msgid "There are no queues which you can search." +msgstr "Não há filas em que se possa pesquisar" + +#: lib/Admin.php:459 +msgid "There are no states to edit" +msgstr "Não há estados para editar" + +#: lib/Admin.php:37 +msgid "There are no subjects to edit" +msgstr "Não há assuntos para editar" + +#: lib/Create.php:58 +msgid "" +"There are no ticket types associated with this queue; until there are, you " +"cannot create any tickets in this queue." +msgstr "" + +#: lib/Admin.php:314 +msgid "There are no types to edit" +msgstr "Não há tipos para editar" + +#: lib/Admin.php:276 +msgid "There are no users responsible for this queue." +msgstr "Não há usuários responsáveis por esta fila." + +#: ticket/people.php:63 lib/Create.php:167 +msgid "There are no users to which this ticket can be assigned." +msgstr "Não há usuários que possam assinar este ticket." + +#: lib/Admin.php:638 +msgid "There are no versions to edit" +msgstr "Não há versões para editar" + +#: graph.php:30 +msgid "There is no data for this graph." +msgstr "Não há dados para este gráfico." + +#: lib/Reports.php:154 +msgid "There is no data for this report." +msgstr "Não há dados para este relatório." + +#: admin.php:556 +#, php-format +msgid "There was an error adding '%s' to the responsible list for '%s': %s" +msgstr "Houve um erro ao adicionar '%s' para a lista responsável por '%s': %s" + +#: admin.php:615 +#, php-format +msgid "There was an error adding the subject: %s." +msgstr "Houve um erro ao adicionar o assunto: %s." + +#: admin.php:802 +#, php-format +msgid "There was an error creating the attribute: %s." +msgstr "Houve um erro ao criar o atributo: %s." + +#: admin.php:438 +#, php-format +msgid "There was an error creating the priority: %s." +msgstr "Houve um erro ao criar a prioridade: %s." + +#: admin.php:245 +#, php-format +msgid "There was an error creating the queue: %s." +msgstr "Houve um erro ao criar a fila: %s." + +#: admin.php:327 +#, php-format +msgid "There was an error creating the state: %s." +msgstr "Houve um erro ao criar o estado: %s." + +#: admin.php:691 +#, php-format +msgid "There was an error creating the version: %s." +msgstr "Houve um erro ao criar a versão: %s." + +#: admin.php:883 +#, php-format +msgid "There was an error deleting the attribute: %s." +msgstr "Houve um erro ao apagar o atributo: %s." + +#: admin.php:519 +#, php-format +msgid "There was an error deleting the priority: %s." +msgstr "Houve um erro ao apagar o a prioridade: %s." + +#: admin.php:307 +#, php-format +msgid "There was an error deleting the queue: %s." +msgstr "Houve um erro ao apagar a fila: %s." + +#: admin.php:410 +#, php-format +msgid "There was an error deleting the state: %s." +msgstr "Houve um erro ao apagar o estado: %s." + +#: admin.php:671 +#, php-format +msgid "There was an error deleting the subject: %s." +msgstr "Houve um erro ao apagar o assunto: %s." + +#: ticket/delete.php:72 +#, php-format +msgid "There was an error deleting the ticket: %s" +msgstr "Houve um erro ao apagar o ticket: %s" + +#: admin.php:220 +#, php-format +msgid "There was an error deleting the type: %s." +msgstr "Houve um erro ao apagar o tipo: %s." + +#: admin.php:773 +#, php-format +msgid "There was an error deleting the version: %s." +msgstr "Houve um erro ao apagar a versão: %s." + +#: admin.php:859 +#, php-format +msgid "There was an error editing the attribute: %s." +msgstr "Houve um erro ao editar o atributo: %s." + +#: admin.php:494 +#, php-format +msgid "There was an error editing the priority: %s." +msgstr "Houve um erro ao editar a prioridade: %s." + +#: admin.php:291 +#, php-format +msgid "There was an error editing the queue: %s." +msgstr "Houve um erro ao editar a fila: %s." + +#: admin.php:384 +#, php-format +msgid "There was an error editing the state: %s." +msgstr "Houve um erro ao editar o estado: %s." + +#: admin.php:655 +#, php-format +msgid "There was an error editing the subject: %s." +msgstr "Houve um erro ao editar o assunto: %s." + +#: admin.php:748 +#, php-format +msgid "There was an error editing the version: %s." +msgstr "Houve um erro ao editar a versão: %s." + +#: lib/Admin.php:236 +#, php-format +msgid "There was an error listing users: %s; %s" +msgstr "Houve um erro ao listar os usuários: %s; %s" + +#: mybugs.php:38 +#, php-format +msgid "There was an error listing your assigned tickets: %s" +msgstr "Houve um erro ao listar seus tickets assinados: %s" + +#: mybugs.php:54 +#, php-format +msgid "There was an error listing your open requests: %s" +msgstr "Houve um erro ao listar seus pedidos abertos: %s" + +#: admin.php:174 +#, php-format +msgid "There was an error modifying the type: %s." +msgstr "Houve um erro ao modificar o tipo: %s." + +#: search.php:156 +#, php-format +msgid "There was an error performing your search: %s" +msgstr "Houve um erro ao fazer sua pesquisa: %s" + +#: admin.php:593 +#, php-format +msgid "There was an error removing '%s' from the responsible list for '%s': %s" +msgstr "Houve um erro ao remover '%s' da lista de responsabilidade de '%s': %s" + +#: data.php:27 +msgid "This is not a search results template." +msgstr "Este não é um modelo de resultado de pesquisa." + +#: lib/Admin.php:57 +msgid "This is not a valid subject." +msgstr "Este não é um assunto válido." + +#: ticket/queue.php:79 lib/Create.php:69 +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this queue, you will not " +"be able to create tickets." +msgstr "" + +#: lib/Ticket.php:411 +msgid "Ticket" +msgstr "Ticket" + +#: ticket/delete.php:68 +#, php-format +msgid "Ticket %d has been deleted." +msgstr "Ticket %d foi apagado" + +#: lib/Driver/sql.php:783 +#, php-format +msgid "Ticket %s was not found." +msgstr "Ticket %s não foi encontrado" + +#: search.php:49 +msgid "Ticket ID" +msgstr "Identificação do ticket" + +#: lib/Create.php:115 +msgid "Ticket State" +msgstr "Status do ticket" + +#: templates/reports/stats.inc:4 +msgid "Ticket Stats" +msgstr "Estatísticas do ticket" + +#: lib/Block/summary.php:3 +msgid "Ticket Summary" +msgstr "Sumário do ticket" + +#: lib/Create.php:63 +msgid "Ticket Type" +msgstr "Tipo do ticket" + +#: lib/Admin.php:153 +msgid "Ticket Types associated with this Queue" +msgstr "Tipos de tickets associados com esta fila" + +#: lib/Ticket.php:407 +#, php-format +msgid "Ticket URL: %s\n" +msgstr "URL do ticket: %s\n" + +#: ticket/update.php:127 +msgid "Ticket Updated" +msgstr "Ticket atualizado" + +#: lib/Block/summary.php:52 +msgid "Tickets assigned to you" +msgstr "Tickets assinados por você" + +#: search.php:52 +msgid "Tickets which are" +msgstr "Tickets que são" + +#: lib/Block/summary.php:69 +msgid "Tickets you requested" +msgstr "Tickets que você requisitou" + +#: templates/queryrenderer.inc:117 ticket/queue.php:87 lib/Whups.php:400 +#: lib/Ticket.php:394 lib/Ticket.php:424 lib/Ticket.php:497 lib/Query.php:583 +#: config/prefs.php.dist:31 +msgid "Type" +msgstr "Tipo" + +#: templates/comment.inc:72 +#, php-format +msgid "Type ⇒ %s" +msgstr "Tipo ⇒ %s" + +#: lib/Admin.php:294 lib/Admin.php:338 lib/Admin.php:387 +msgid "Type Description" +msgstr "Descrição do tipo" + +#: lib/Admin.php:293 lib/Admin.php:317 lib/Admin.php:335 lib/Admin.php:384 +msgid "Type Name" +msgstr "Nome do tipo" + +#: search.php:55 +msgid "Types" +msgstr "Tipos" + +#: lib/Ticket.php:502 +msgid "Unassigned" +msgstr "Não assinado" + +#: lib/Admin.php:809 +msgid "Unassigned tickets" +msgstr "Tickets não assinados" + +#: lib/Driver.php:96 +msgid "Unconfirmed" +msgstr "Não confirmado" + +#: templates/queryrenderer.inc:153 +#, php-format +msgid "Unknown node type %s" +msgstr "tipo de nó desconhecido %s" + +#: lib/Whups.php:192 +msgid "Update" +msgstr "Atualizar" + +#: ticket/update.php:149 +#, php-format +msgid "Update %s" +msgstr "Atualizar %s" + +#: templates/admin/mtmatrix.inc:28 +msgid "Update Associations" +msgstr "Atualizar associações" + +#: ticket/people.php:122 +#, php-format +msgid "Update People for %s" +msgstr "Atualizar pessoas para %s" + +#: lib/Ticket.php:399 lib/Ticket.php:412 +msgid "Updated By" +msgstr "Atualizado por" + +#: lib/Query.php:584 +msgid "" +"Use the Change Ticket Type form to switch the current Ticket Type. If you " +"select \"Any\" here, the criteria you add will search every kind of ticket. " +"If you choose the current ticket type, you will be limiting this branch of " +"your search to that type." +msgstr "" + +#: lib/Admin.php:235 lib/Admin.php:245 lib/Admin.php:248 +msgid "User" +msgstr "Usuário" + +#: query.php:36 +msgid "User Criteria" +msgstr "Critério do usuário" + +#: lib/Query.php:435 +msgid "User ID" +msgstr "Identificação do usuário" + +#: lib/Admin.php:177 +msgid "Users responsible for this Queue" +msgstr "Usuários responsáveis por esta fila" + +#: lib/Admin.php:280 +msgid "Users responsible for this queue" +msgstr "Usuários responsáveis por esta fila" + +#: lib/Ticket.php:391 lib/Ticket.php:421 config/prefs.php.dist:34 +msgid "Version" +msgstr "Versão" + +#: lib/Admin.php:618 lib/Admin.php:664 lib/Admin.php:687 +msgid "Version Description" +msgstr "Descrição da versão" + +#: lib/Admin.php:617 lib/Admin.php:642 lib/Admin.php:661 lib/Admin.php:684 +msgid "Version Name" +msgstr "Nome da versão" + +#: templates/reports/graphs.inc:14 +msgid "View Graphs" +msgstr "Ver gráficos" + +#: ticket/people.php:77 ticket/type.php:45 ticket/comment.php:40 +#: ticket/queue.php:50 +msgid "Viewable only by members of" +msgstr "Visível apenas por membros de" + +#: config/prefs.php.dist:87 +msgid "Weekday Day Month" +msgstr "Dia da semana Dia Mês" + +#: config/prefs.php.dist:88 +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "Dia da semana Dia Mês HH:MM:SS TZ" + +#: ticket/delete.php:37 lib/Admin.php:90 lib/Admin.php:210 lib/Admin.php:398 +#: lib/Admin.php:514 lib/Admin.php:602 lib/Admin.php:690 lib/Admin.php:778 +msgid "Yes" +msgstr "Sim" + +#: view.php:40 +msgid "You are not allowed to view this ticket." +msgstr "Você não tem permissão para ver este ticket." + +#: lib/Driver/sql.php:786 +#, php-format +msgid "You do not have permission to access this ticket (%s)." +msgstr "Você não tem permissão para acessar este ticket (%s)." + +#: lib/Query.php:739 +msgid "You have no saved queries." +msgstr "Você não salvou as consultas" + +#: lib/Whups.php:430 +msgid "You must select at least one queue to send reminders for." +msgstr "Você deve selecionar ao menos uma fila para enviar lembretes" + +#: ticket/comment.php:25 lib/Create.php:29 +msgid "Your Email Address" +msgstr "Seu e-mail" + +#: ticket/create.php:157 +#, php-format +msgid "" +"Your ticket ID is %s. An appropriate person has been notified of this " +"request." +msgstr "" + +#: templates/prevnext.inc:13 +msgid "[< Prev]" +msgstr "[< Anterior]" + +#: templates/prevnext.inc:12 +msgid "[<< First]" +msgstr "[<< Primeira]" + +#: templates/prevnext.inc:17 +msgid "[Last >>]" +msgstr "[Última >>]" + +#: templates/prevnext.inc:16 +msgid "[Next >]" +msgstr "[Próxima >]" + +#: lib/Whups.php:497 +msgid "_Admin" +msgstr "_Administração" + +#: lib/Whups.php:486 +#, php-format +msgid "_My %s" +msgstr "_Meus %s" + +#: lib/Whups.php:489 +msgid "_New Ticket" +msgstr "_Novo ticket" + +#: lib/Whups.php:491 +msgid "_Query Builder" +msgstr "_Construtor de consultas" + +#: lib/Whups.php:492 +msgid "_Reports" +msgstr "_Relatórios" + +#: lib/Whups.php:488 +msgid "_Search" +msgstr "_Pesquisa" + +#: scripts/mail-filter.php:108 +#, php-format +msgid "bad priority `%s' for type." +msgstr "Prioridade `%s' ruim para tipo." + +#: scripts/mail-filter.php:122 +#, php-format +msgid "Estado `%s' ruim para tipo." +msgstr "" + +#: templates/queryrenderer.inc:143 +msgid "contains (case insensitive) substring" +msgstr "contem sequência (sensível ao caso)" + +#: templates/queryrenderer.inc:144 +msgid "contains (case sensitive) substring" +msgstr "contem sequência (sensível ao caso)" + +#: templates/queryrenderer.inc:145 +msgid "contains the word" +msgstr "contem palavra" + +#: scripts/mail-filter.php:133 +#, php-format +msgid "error processing message: %s" +msgstr "erro ao processar mensagem: %s" + +#: templates/queryrenderer.inc:142 +msgid "is" +msgstr "é" + +#: templates/queryrenderer.inc:140 +msgid "is greater than" +msgstr "é maior que" + +#: templates/queryrenderer.inc:141 +msgid "is less than" +msgstr "é menor que" + +#: templates/queryrenderer.inc:146 +msgid "matches the pattern" +msgstr "coincide com o padrão" diff --git a/whups/po/ro_RO.po b/whups/po/ro_RO.po new file mode 100644 index 000000000..51211cb70 --- /dev/null +++ b/whups/po/ro_RO.po @@ -0,0 +1,1676 @@ +# Romanian translations for Whups package. +# Copyright 2003-2009 The Horde Project +# This file is distributed under the same license as the Whups package. +# Eugen Hoanca , 2003. +# +msgid "" +msgstr "" +"Project-Id-Version: Whups 0.0.1\n" +"POT-Creation-Date: 2003-03-04 13:46+0100\n" +"PO-Revision-Date: 2003-03-27 10:54+0200\n" +"Last-Translator: Eugen Hoanca \n" +"Language-Team: Romanian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: templates/reports/stats.inc:20 +msgid "%s days" +msgstr "%s zile" + +#: admin.php:544 +msgid "'%s' added to those responsible for '%s'" +msgstr "'%s' adaugat la responsabilii pentru '%s'" + +#: admin.php:583 +msgid "'%s' is no longer among those responsible for '%s'" +msgstr "'%s' nu mai este responsabil pentru '%s'" + +#: templates/comment.inc:53 +msgid ", initial priority of '%s'." +msgstr ", prioritate initiala a '%s'." + +#: templates/comment.inc:56 +msgid ", priority changed to '%s'." +msgstr ", prioritate schimbata in '%s'." + +#: templates/comment.inc:59 +msgid ", priority is '%s'." +msgstr ", prioritatea este '%s'." + +#: admin.php:110 +msgid "- Stage 1" +msgstr "- Faza 1" + +#: admin.php:115 +msgid "- Stage 2" +msgstr "- Faza 2" + +#: lib/Driver.php:89 +msgid "-Added By: %s\n" +msgstr "-Adaugat de: %s\n" + +#: lib/Driver.php:108 +msgid "-Assigned By: %s" +msgstr "-Atribuit de: %s" + +#: lib/Driver.php:107 +msgid "-Assigned To: %s" +msgstr "-Atribuit lui: %s" + +#: lib/Driver.php:199 +msgid "-Comment by %s on %s:" +msgstr "-Comentariu de %s la %s:" + +#: lib/Driver.php:74 +msgid "-Created By: %s\n" +msgstr "-Creat de: %s\n" + +#: lib/Driver.php:106 lib/Driver.php:126 lib/Driver.php:144 +msgid "-Queue: %s" +msgstr "-Modul: %s" + +#: lib/Driver.php:73 lib/Driver.php:88 +msgid "-Queue: %s\n" +msgstr "-Modul: %s\n" + +#: lib/Driver.php:145 +msgid "-New Priority: %s" +msgstr "-Prioritate noua: %s" + +#: lib/Driver.php:127 +msgid "-New State: %s" +msgstr "-Stare noua: %s" + +#: lib/Driver.php:109 +msgid "-State: %s" +msgstr "-Stare: %s" + +#: lib/Driver.php:75 lib/Driver.php:90 lib/Driver.php:110 lib/Driver.php:128 +#: lib/Driver.php:146 +msgid "-Summary:" +msgstr "Cuprins:" + +#: lib/Driver.php:105 lib/Driver.php:125 lib/Driver.php:143 +msgid "-Ticket %s" +msgstr "-Tichet %s" + +#: lib/Driver.php:72 lib/Driver.php:87 +msgid "-Ticket %s\n" +msgstr "-Tichet %s\n" + +#: lib/api.php:148 +msgid "No summary" +msgstr "Fara cuprins" + +#: lib/Admin.php:675 +msgid "Add Attribute" +msgstr "Adaugare atribut" + +#: lib/Query.php:542 +msgid "Add Attribute Criterion" +msgstr "Adaugare criteriu atribut" + +#: details.php:44 +msgid "Add Comment" +msgstr "Adaugare comentariu" + +#: details.php:101 +msgid "Add Comment Succeeded" +msgstr "Adaugare reusita de comentariu" + +#: query.php:191 +msgid "Add Criterion" +msgstr "Adaugare criteriu" + +#: lib/Admin.php:99 lib/Admin.php:100 +msgid "Add Queue" +msgstr "Adaugare modul" + +#: lib/Admin.php:501 +msgid "Add Priority" +msgstr "Adaugare prioritate" + +#: lib/Query.php:487 +msgid "Add Property Criterion" +msgstr "Adaugare criteriu de proprietate" + +#: lib/Admin.php:403 +msgid "Add State" +msgstr "Adaugare stare" + +#: lib/Admin.php:14 lib/Admin.php:15 +msgid "Add Subject" +msgstr "Adaugare subiect" + +#: lib/Query.php:443 +msgid "Add Text Criterion" +msgstr "Adaugare criteriu text" + +#: lib/Admin.php:279 lib/Admin.php:280 +msgid "Add Type" +msgstr "Adaugare tip" + +#: admin.php:110 admin.php:115 +msgid "Add Type %s" +msgstr "Adaugare tip %s" + +#: lib/Query.php:391 +msgid "Add User Criterion" +msgstr "Adaugare criteriu utilizator" + +#: lib/Admin.php:217 +msgid "Add Users" +msgstr "Adaugare utilizatori" + +#: lib/Admin.php:588 +msgid "Add Version" +msgstr "Adaugare versiune" + +#: create.php:151 +msgid "Adding your ticket failed: %s." +msgstr "Adaugarea tichetului esuata: %s." + +#: lib/Search.php:177 +msgid "Additional Comment" +msgstr "Comentariu aditional" + +#: lib/api.php:81 templates/menu/menu.inc:23 +msgid "Admin" +msgstr "Admin" + +#: lib/Whups.php:24 lib/Whups.php:25 admin.php:81 +msgid "Administration" +msgstr "Administrare" + +#: create.php:158 +msgid "An appropriate person has been notified of this request." +msgstr "Persoana potrivita a fost notificata de aceasta cerere." + +#: lib/Query.php:343 templates/queryrenderer.inc:90 +msgid "And" +msgstr "Si" + +#: lib/Query.php:490 lib/Query.php:491 lib/Search.php:26 lib/Search.php:54 +#: lib/Search.php:55 search.php:50 search.php:51 search.php:53 search.php:67 +msgid "Any" +msgstr "Orice" + +#: lib/Search.php:124 lib/Search.php:170 lib/Search.php:245 lib/Search.php:287 +#: lib/Search.php:351 +msgid "Any Group" +msgstr "Orice grup" + +#: config/prefs.php.dist:58 +msgid "Ascending" +msgstr "Crescator" + +#: details.php:46 +msgid "Assign Ticket" +msgstr "Atribuire tichet" + +#: details.php:144 +msgid "Assign Ticket Succeeded" +msgstr "Atribuire tichet reusita" + +#: lib/Whups.php:313 lib/Search.php:96 lib/Driver.php:64 +#: config/prefs.php.dist:47 +msgid "Assigned" +msgstr "Atribuit" + +#: lib/Driver/sql.php:235 +msgid "Assigned ticket to %s" +msgstr "Tichet atribuit lui %s" + +#: lib/Create.php:128 lib/Search.php:175 +msgid "Assignee" +msgstr "Atribuire" + +#: query.php:47 +msgid "Attribute Criteria" +msgstr "Criteriu atribut" + +#: lib/Admin.php:679 lib/Admin.php:723 lib/Admin.php:748 +msgid "Attribute Description" +msgstr "Descriere atribut" + +#: lib/Admin.php:678 lib/Admin.php:701 lib/Admin.php:720 lib/Admin.php:745 +msgid "Attribute Name" +msgstr "Nume atribut" + +#: lib/Admin.php:348 +msgid "Attributes for this Type" +msgstr "Atribute pentru acest Tip" + +#: config/prefs.php.dist:129 +msgid "Autolink to other tickets in comments" +msgstr "Link automat pentru alte tichete in comentarii" + +#: reports.php:22 +msgid "Average time a ticket is unresolved" +msgstr "Tim mediu in care un tichet nu er rezolvat" + +#: lib/Query.php:350 +msgid "Branch Type" +msgstr "Tip ramura" + +#: lib/Query.php:44 +msgid "Case Insensitive Substring" +msgstr "Subsir caz insenzitiv" + +#: lib/Query.php:45 +msgid "Case Sensitive Substring" +msgstr "Subsir caz senzitiv" + +#: templates/queryrenderer.inc:25 +msgid "Change" +msgstr "Schimba" + +#: lib/Query.php:361 +msgid "Change Ticket Type" +msgstr "Shimba tip tichet" + +#: config/prefs.php.dist:14 +msgid "" +"Change display options such as the color scheme and how search results are " +"sorted." +msgstr "" +"Schimbare optiuni afisaj precum schema de culor si modul in care rezultatele " +" cautarii sunt sortate." + +#: config/prefs.php.dist:21 +msgid "Change options for email notifications of ticket activity." +msgstr "Schimbare optiuni pentru notificari e-mail ale activitatzii tichetului." + +#: query.php:53 +msgid "Choose Action:" +msgstr "Alegere actiune:" + +#: config/prefs.php.dist:139 +msgid "Chronological (oldest first)" +msgstr "Cronologic (cele mai vechi primele)" + +#: config/templates.php.dist:59 +msgid "Comma Separated Values (CSV file)" +msgstr "Valori separate prin virgula (fisier CSV)" + +#: lib/Search.php:132 lib/Search.php:255 lib/Search.php:297 lib/Search.php:330 +#: lib/Search.php:365 templates/queryrenderer.inc:104 +msgid "Comment" +msgstr "Comentariu" + +#: templates/queryrenderer.inc:103 +msgid "Commentor" +msgstr "Comentator" + +#: lib/Whups.php:18 lib/Whups.php:19 config/prefs.php.dist:71 +msgid "Create Ticket" +msgstr "Creare Tichet" + +#: lib/Create.php:22 +msgid "Create Ticket - Stage 1" +msgstr "Creare tichet - Faza 1" + +#: lib/Create.php:43 +msgid "Create Ticket - Stage 2" +msgstr "Creare tichet - Faza 2" + +#: lib/Create.php:73 +msgid "Create Ticket - Stage 3" +msgstr "Creare tichet - Faza 3" + +#: lib/Create.php:113 +msgid "Create Ticket - Stage 4" +msgstr "Creare tichet - Faza 4" + +#: create.php:31 +msgid "Create Tickets" +msgstr "Creare tichete" + +#: lib/Whups.php:312 lib/Search.php:95 config/prefs.php.dist:46 +msgid "Created" +msgstr "Creat" + +#: query.php:182 query.php:197 +msgid "Current Query" +msgstr "Chestionare curenta" + +#: lib/Query.php:366 +msgid "Current Type" +msgstr "Tip curent" + +#: query.php:45 +msgid "Date Criteria" +msgstr "Criteriu data" + +#: config/prefs.php.dist:102 +msgid "Date/Time format for search results" +msgstr "Format Data/Timp pentru rezultate cautare" + +#: config/prefs.php.dist:49 +msgid "Default sorting criteria:" +msgstr "Criteriu implicit de sortare:" + +#: config/prefs.php.dist:60 +msgid "Default sorting direction:" +msgstr "Directie implicita de sortare:" + +#: query.php:54 +msgid "Delete" +msgstr "Stergere" + +#: lib/Admin.php:691 admin.php:847 +msgid "Delete Attribute" +msgstr "Stergere atribut" + +#: lib/Admin.php:735 +msgid "Delete Attribute Confirmation" +msgstr "Confirmare stergere atribut" + +#: lib/Admin.php:115 admin.php:235 +msgid "Delete Queue" +msgstr "Stergere modul" + +#: lib/Admin.php:191 +msgid "Delete Queue Confirmation" +msgstr "Confirmare stergere modul" + +#: lib/Admin.php:517 admin.php:456 +msgid "Delete Priority" +msgstr "Stergere prioritate" + +#: lib/Admin.php:561 +msgid "Delete Priority Confirmation" +msgstr "Confirmare stergere prioritate" + +#: lib/Admin.php:423 admin.php:338 +msgid "Delete State" +msgstr "Stergere stare" + +#: lib/Admin.php:473 +msgid "Delete State Confirmation" +msgstr "Confirmare stergere stare" + +#: lib/Admin.php:29 admin.php:630 +msgid "Delete Subject" +msgstr "Sterge subiect" + +#: lib/Admin.php:76 +msgid "Delete Subject Confirmation" +msgstr "Confirmare stergere subiect" + +#: details.php:54 +msgid "Delete Ticket" +msgstr "Stergere tichet" + +#: details.php:222 +msgid "Delete Ticket Succeeded" +msgstr "Stergere tichet reusita" + +#: lib/Admin.php:295 admin.php:145 +msgid "Delete Type" +msgstr "Stergere tip" + +#: lib/Admin.php:361 +msgid "Delete Type Confirmation" +msgstr "Confirmare stergere tip" + +#: lib/Admin.php:604 admin.php:730 +msgid "Delete Version" +msgstr "Stergere versiune" + +#: lib/Admin.php:648 +msgid "Delete Version Confirmation" +msgstr "Confirmare stergere versiune" + +#: config/prefs.php.dist:59 +msgid "Descending" +msgstr "Descrescator" + +#: lib/Create.php:102 +msgid "Description" +msgstr "Descriere" + +#: config/prefs.php.dist:13 +msgid "Display Options" +msgstr "Optiuni afisaj" + +#: query.php:55 +msgid "Edit" +msgstr "Editare" + +#: lib/Admin.php:138 lib/Admin.php:318 +msgid "Edit %s" +msgstr "Editare %s" + +#: lib/Admin.php:691 lib/Admin.php:712 admin.php:842 +msgid "Edit Attribute" +msgstr "Editare atribut" + +#: lib/Admin.php:330 details.php:52 +msgid "Edit Attributes" +msgstr "Editare atribute" + +#: lib/Admin.php:115 admin.php:229 +msgid "Edit Queue" +msgstr "Editare modul" + +#: admin.php:57 +msgid "Edit Queues" +msgstr "Editare module" + +#: lib/Admin.php:326 lib/Admin.php:374 +msgid "Edit Priorities" +msgstr "Editare prioritati" + +#: lib/Admin.php:517 lib/Admin.php:538 admin.php:451 +msgid "Edit Priority" +msgstr "Editare proritate" + +#: runquery.php:21 +msgid "Edit Query" +msgstr "Editare chestionare" + +#: lib/Admin.php:423 lib/Admin.php:444 admin.php:333 +msgid "Edit State" +msgstr "Editare stare" + +#: lib/Admin.php:322 lib/Admin.php:370 +msgid "Edit States" +msgstr "Editare stari" + +#: lib/Admin.php:29 lib/Admin.php:49 admin.php:625 +msgid "Edit Subject" +msgstr "Editare subiect" + +#: admin.php:59 +msgid "Edit Subjects" +msgstr "Editare subiecte" + +#: lib/Admin.php:295 admin.php:139 +msgid "Edit Type" +msgstr "Editare tip" + +#: admin.php:58 +msgid "Edit Types" +msgstr "Editare tipuri" + +#: lib/Admin.php:604 lib/Admin.php:625 admin.php:725 +msgid "Edit Version" +msgstr "Editare versiune" + +#: lib/Admin.php:690 +msgid "Edit or Delete Attributes" +msgstr "Editare sau stergere atribute" + +#: lib/Admin.php:114 +msgid "Edit or Delete Queues" +msgstr "Editare sau stergere module" + +#: lib/Admin.php:516 +msgid "Edit or Delete Priorities" +msgstr "Editare sau stergere prioritati" + +#: lib/Admin.php:422 +msgid "Edit or Delete States" +msgstr "Editare sau stergere stari" + +#: lib/Admin.php:28 +msgid "Edit or Delete Subjects" +msgstr "Editare sau stergere subiecte" + +#: lib/Admin.php:294 +msgid "Edit or Delete Types" +msgstr "Editare sau stergere tipuri" + +#: lib/Admin.php:603 +msgid "Edit or Delete Versions" +msgstr "Editare sau stergere versiuni" + +#: lib/Admin.php:153 +msgid "Edit the permissions on this module" +msgstr "Editare permisiuni pentru acest modul" + +#: lib/Admin.php:151 +msgid "Edit the users responsible for this module" +msgstr "Editare utilizatori responsabili pentru acest modul" + +#: lib/Admin.php:152 +msgid "Edit the versions for this module" +msgstr "Editare versiuni pentru modul" + +#: query.php:171 +msgid "Error: Unknown query form %s, defaulting to properties" +msgstr "Eroare: chestionar necunoscut %s, intoarcere la proprietati" + +#: lib/Query.php:43 +msgid "Exact Match" +msgstr "Potrivire exacta" + +#: runquery.php:68 runquery.php:84 query.php:37 +msgid "Execute Query" +msgstr "Executa chestionare" + +#: lib/Admin.php:774 +msgid "For tickets from these modules" +msgstr "Pentru tichete din aceste module" + +#: lib/Admin.php:776 +msgid "For tickets which are" +msgstr "Pentru tichete care sunt" + +#: templates/menu/menu.inc:37 +msgid "Help" +msgstr "Ajutor" + +#: lib/Search.php:65 +msgid "Hide Assigned" +msgstr "Ascunde Atribuite" + +#: lib/Search.php:64 +msgid "Hide New" +msgstr "Ascunde noi" + +#: lib/Search.php:66 +msgid "Hide Resolved" +msgstr "Ascunde rezolvate" + +#: lib/Search.php:63 +msgid "Hide Unconfirmed" +msgstr "Ascunde neconfirmate" + +#: query.php:57 +msgid "Hoist" +msgstr "Ridicare" + +#: lib/Whups.php:305 lib/Query.php:493 templates/queryrenderer.inc:98 +#: config/prefs.php.dist:39 +msgid "Id" +msgstr "Id" + +#: lib/Driver.php:159 +msgid "If you believe you have recieved this mail in error, please contact %s." +msgstr "Daca ati primit acest mail din greseala, contactati %s." + +#: lib/Admin.php:779 +msgid "" +"If you select any tickets that do not have an owner, who should we send " +"email to?" +msgstr "" +"Daca selectati tichete fara proprietar, cui ar trebui trimis email ?" + +#: templates/comment.inc:43 +msgid "Initial state of '%s'" +msgstr "Stare initiala de '%s'" + +#: query.php:58 +msgid "Insert And" +msgstr "Inserare si" + +#: lib/Query.php:340 +msgid "Insert Branch" +msgstr "Inserare ramura" + +#: query.php:60 +msgid "Insert Not" +msgstr "Inserare nu" + +#: query.php:59 +msgid "Insert Or" +msgstr "Inserare sau" + +#: query.php:61 +msgid "Insert Query" +msgstr "Inserare chestionare" + +#: lib/Admin.php:166 +msgid "Keep a set of versions for this queue?" +msgstr "Pastrare set de versiuni pentru acest modul?" + +#: config/prefs.php.dist:6 +msgid "Language" +msgstr "Limba" + +#: lib/Query.php:621 runquery.php:23 query.php:38 +msgid "Load Query" +msgstr "Incarcare chestionare" + +#: templates/menu/menu.inc:28 +msgid "Login" +msgstr "Intrare" + +#: config/prefs.php.dist:100 +msgid "MM/DD/YY" +msgstr "LL/ZZ/AA" + +#: config/prefs.php.dist:101 +msgid "MM/DD/YY HH:MM:SS" +msgstr "LL/ZZ/AA OO:MM:SS" + +#: lib/Query.php:550 +msgid "Match" +msgstr "Potrivire" + +#: lib/Query.php:396 lib/Query.php:448 lib/Query.php:551 +msgid "Match Operator" +msgstr "Operator potrivire" + +#: lib/Query.php:47 +msgid "Match Pattern" +msgstr "Potrivire sablon" + +#: lib/Query.php:46 +msgid "Match Word" +msgstr "Potrivire cuvant" + +#: reports.php:23 +msgid "Maximum time a ticket is unresolved" +msgstr "Timp maxim de nerezolvare a unui tichet" + +#: reports.php:24 +msgid "Minimum time a ticket is unresolved" +msgstr "Timp minim de nerezolvare a unui tichet" + +#: lib/Whups.php:310 templates/queryrenderer.inc:99 config/prefs.php.dist:44 +msgid "Queue" +msgstr "Modul" + +#: lib/Admin.php:103 lib/Admin.php:160 lib/Admin.php:203 +msgid "Queue Description" +msgstr "Descriere modul" + +#: lib/Admin.php:102 lib/Admin.php:124 lib/Admin.php:157 lib/Admin.php:200 +#: lib/Create.php:26 lib/Create.php:31 lib/Search.php:39 lib/Search.php:80 +msgid "Queue Name" +msgstr "Nume modul" + +#: lib/Create.php:61 lib/Search.php:83 +msgid "Queue Version" +msgstr "Versiune modul" + +#: admin.php:60 +msgid "Queue/Type Matrix" +msgstr "Modul/Tip Matrice" + +#: search.php:73 +msgid "Queue: %s, Ticket: %s, Category %s" +msgstr "Modul: %s, Tichet: %s, Categorie %s" + +#: config/prefs.php.dist:140 +msgid "Most recent first" +msgstr "Cele mai recente primele" + +#: query.php:56 +msgid "Move" +msgstr "Mutare" + +#: mybugs.php:22 templates/menu/menu.inc:8 +msgid "My %s" +msgstr "%s mea(mele)" + +#: mybugs.php:44 +msgid "My Assigned Tickets" +msgstr "Tichetele atribuite mie" + +#: config/prefs.php.dist:69 +msgid "My Bugs" +msgstr "Problemele mele" + +#: mybugs.php:61 +msgid "My Open Requests" +msgstr "Cererile deschise ale mele" + +#: search.php:121 +msgid "My Searches" +msgstr "Cautarile mele" + +#: lib/Query.php:600 lib/Query.php:635 +msgid "Name" +msgstr "Nume" + +#: config/templates.php.dist:44 +msgid "Name, Email Report" +msgstr "Nume, raport email" + +#: lib/Driver.php:63 +msgid "New" +msgstr "Nou(a)" + +#: lib/Search.php:296 lib/Search.php:329 +msgid "New Priority" +msgstr "Prioritate noua" + +#: query.php:36 +msgid "New Query" +msgstr "Chestionare noua" + +#: lib/Search.php:176 lib/Search.php:254 +msgid "New State" +msgstr "Stare noua" + +#: lib/Block/summary.php:41 lib/api.php:107 templates/menu/menu.inc:11 +msgid "New Ticket" +msgstr "Tichet nou" + +#: lib/Driver.php:85 +msgid "New comment for ticket %s" +msgstr "Comentariu nou pentru tichetul %s" + +#: lib/Driver.php:70 +msgid "New ticket (%s): %s" +msgstr "Tichet nou (%s): %s" + +#: lib/Admin.php:81 lib/Admin.php:196 lib/Admin.php:366 lib/Admin.php:478 +#: lib/Admin.php:566 lib/Admin.php:653 lib/Admin.php:740 lib/Search.php:209 +msgid "No" +msgstr "Nu" + +#: lib/Driver/sql.php:1303 +msgid "No configuration information specified for SQL Bugs." +msgstr "Nici o configuratie specificata pentru problemele SQL." + +#: lib/Driver.php:56 +msgid "No such backend '%s' found" +msgstr "Nici un suport '%s' gasit" + +#: details.php:34 +msgid "No such ticket." +msgstr "Nici un asemenea tichet." + +#: lib/Whups.php:342 +msgid "No tickets matched your search criteria." +msgstr "Nici un tichet nu s-a potrivit criteriului de cautare." + +#: lib/Block/summary.php:90 +msgid "No tickets to display" +msgstr "Nici un tichet de afisat" + +#: lib/Reports.php:64 +msgid "None" +msgstr "Nici unul" + +#: lib/Query.php:345 templates/queryrenderer.inc:92 +msgid "Not" +msgstr "Nu" + +#: query.php:95 +msgid "Not yet implemented..." +msgstr "Neimplementat inca..." + +#: config/prefs.php.dist:20 +msgid "Notification Options" +msgstr "Optiuni notificari" + +#: config/prefs.php.dist:120 +msgid "Only notify me of ticket changes from other users" +msgstr "Notificare numai la schimbari tichet de catre alti utilizatori" + +#: templates/menu/menu.inc:18 +msgid "Options" +msgstr "Optiuni" + +#: lib/Query.php:344 templates/queryrenderer.inc:91 +msgid "Or" +msgstr "Sau" + +#: config/prefs.php.dist:12 config/prefs.php.dist:19 +msgid "Other Options" +msgstr "Alte optiuni" + +#: lib/Whups.php:314 lib/Search.php:91 templates/queryrenderer.inc:101 +msgid "Owner" +msgstr "Proprietar" + +#: lib/Query.php:349 +msgid "Path" +msgstr "Cale" + +#: lib/Search.php:186 lib/Search.php:222 lib/Search.php:264 lib/Search.php:306 +msgid "Permission Denied." +msgstr "Permisiune neacordata." + +#: lib/Admin.php:344 lib/Admin.php:387 +msgid "Priorities for this Type" +msgstr "Prioritati pentru acest tip" + +#: lib/Create.php:100 lib/Whups.php:309 lib/Query.php:495 lib/Search.php:60 +#: lib/Search.php:89 templates/queryrenderer.inc:114 config/prefs.php.dist:43 +msgid "Priority" +msgstr "Prioritate" + +#: lib/Admin.php:505 lib/Admin.php:549 lib/Admin.php:574 +msgid "Priority Description" +msgstr "Descriere Prioritate" + +#: lib/Admin.php:504 lib/Admin.php:527 lib/Admin.php:546 lib/Admin.php:571 +msgid "Priority Name" +msgstr "Nume prioritate" + +#: templates/comment.inc:82 +msgid "Private" +msgstr "Privat" + +#: query.php:43 +msgid "Property Criteria" +msgstr "Criteriu proprietate" + +#: lib/Whups.php:12 lib/Whups.php:13 query.php:143 templates/menu/menu.inc:13 +msgid "Query Builder" +msgstr "Creator chestionare" + +#: lib/Query.php:101 +msgid "Query Parameters" +msgstr "Parametri chestionare" + +#: runquery.php:73 +msgid "Query Results" +msgstr "Rezultate chestionare" + +#: runquery.php:22 +msgid "Re-execute Query" +msgstr "Re-executare chestionare" + +#: lib/Admin.php:751 +msgid "Really delete this attribute? This may cause data problems!!" +msgstr "Stergere sigura a acestui atribut? Poate cauza probleme datelor!!" + +#: lib/Admin.php:206 +msgid "Really delete this queue? This may cause data problems!!" +msgstr "Stergere sigura a acestui modul? Poate cauza probleme datelor!!" + +#: lib/Admin.php:577 +msgid "Really delete this priority? This may cause data problems!!" +msgstr "Stergere sigura a acestei prioritati? Poate cauza probleme datelor!!" + +#: lib/Admin.php:490 +msgid "Really delete this state? This may cause data problems!!" +msgstr "Stergere sigura a acestei stari? Poate cauza probleme datelor!!" + +#: lib/Admin.php:88 +msgid "Really delete this subject? This may cause data problems!!" +msgstr "Stergere sigura a acestui subiect? Poate cauza probleme datelor!!" + +#: lib/Search.php:216 +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "" +"Stergere sigura a acestui tichet? NU va fi arhivat, si va disparea definitiv." + +#: lib/Admin.php:390 +msgid "Really delete this type? This may cause data problems!!" +msgstr "Stergere sigura a acestui tip? Poate cauza probleme datelor!!" + +#: lib/Admin.php:664 +msgid "Really delete this version? This may cause data problems!!" +msgstr "" + +#: search.php:105 +msgid "Refine Search" +msgstr "Redefinire cautare" + +#: search.php:103 +msgid "Refine search" +msgstr "Redefinire cautare" + +#: admin.php:928 +msgid "Reminders were sent." +msgstr "Aducerile aminte au fost trimise." + +#: lib/Admin.php:250 +msgid "Remove User" +msgstr "Sterge utilizator" + +#: lib/Whups.php:30 lib/Whups.php:31 reports.php:26 templates/menu/menu.inc:14 +msgid "Reports" +msgstr "Rapoarte" + +#: lib/Search.php:94 templates/queryrenderer.inc:102 +msgid "Requester" +msgstr "Solicitator" + +#: lib/Driver/sql.php:1318 +msgid "Required 'database' not specified in bugs configuration." +msgstr "'database' nespecificat in configuratia bugurilor." + +#: lib/Driver/sql.php:1309 +msgid "Required 'hostspec' not specified in bugs configuration." +msgstr "'hostspec' nespecificat in configuratia bugurilor." + +#: lib/Driver/sql.php:1315 +msgid "Required 'password' not specified in bugs configuration." +msgstr "'pasword' nespecificat in configuratia bugurilor." + +#: lib/Driver/sql.php:1306 +msgid "Required 'phptype' not specified in bugs configuration." +msgstr "'phptype' nespecificat in configuratia bugurilor." + +#: lib/Driver/sql.php:1312 +msgid "Required 'username' not specified in bugs configuration." +msgstr "'username' nespecificat in configuratia bugurilor." + +#: lib/Whups.php:315 lib/Search.php:97 lib/Driver.php:65 +#: config/prefs.php.dist:48 +msgid "Resolved" +msgstr "" + +#: lib/Admin.php:252 +msgid "Responsible Users" +msgstr "Utilizatori responsabili" + +#: lib/Admin.php:170 +msgid "Restrict ticket subjects to a specified list?" +msgstr "Restrange subiectele tichetelor la o lista specificata?" + +#: templates/searchresults.inc:47 +msgid "Save" +msgstr "Salvare" + +#: lib/Query.php:598 runquery.php:24 query.php:39 +msgid "Save Query" +msgstr "Salvare chestionare" + +#: templates/searchresults.inc:41 +msgid "Save these results as: " +msgstr "Salvare rezultate ca:" + +#: search.php:126 templates/menu/menu.inc:10 +msgid "Search" +msgstr "Cautare" + +#: lib/Query.php:554 +msgid "Search %s Attribute" +msgstr "Cautare atribut %s" + +#: lib/Query.php:397 +msgid "Search Assignee" +msgstr "Cautare atribuit" + +#: lib/Query.php:558 +msgid "Search Attribute" +msgstr "Cautare atribut" + +#: lib/Query.php:399 lib/Query.php:450 +msgid "Search Comments" +msgstr "Cautare comentarii" + +#: lib/Query.php:398 +msgid "Search Requester" +msgstr "Cautare solicitator" + +#: search.php:96 +msgid "Search Results" +msgstr "Rezultate cautare" + +#: lib/Query.php:449 +msgid "Search Summary" +msgstr "Cautare cuprins" + +#: lib/Whups.php:6 lib/Whups.php:7 search.php:27 search.php:124 +#: config/prefs.php.dist:70 +msgid "Search Tickets" +msgstr "Cautare tichete" + +#: config/prefs.php.dist:72 +msgid "Select the view to display after login:" +msgstr "Selectare tip vizualizare dupa intrare:" + +#: config/prefs.php.dist:30 +msgid "Select your preferred language:" +msgstr "Selectare limba favorita:" + +#: lib/Admin.php:762 admin.php:61 +msgid "Send Reminders" +msgstr "Trimite memorandum" + +#: lib/Admin.php:773 +msgid "Send only for this list of ticket ids" +msgstr "Trimitere doar pentru aceasta lista de id-uri tichete" + +#: details.php:48 details.php:50 +msgid "Set Priority" +msgstr "Setare prioritate" + +#: details.php:47 +msgid "Set State" +msgstr "Setare stare" + +#: details.php:205 +msgid "Set Ticket Attributes" +msgstr "Setare atribute tichet" + +#: details.php:124 details.php:184 +msgid "Set Ticket Priority" +msgstr "Setare prioritate tichet" + +#: details.php:164 +msgid "Set Ticket State Succeeded" +msgstr "Setare stare tichet reusita" + +#: config/prefs.php.dist:7 +msgid "Set your preferred display language." +msgstr "Setare limba favorita." + +#: config/prefs.php.dist:111 +msgid "Show \"(X Days Ago)\" in Date field of search results?" +msgstr "Afisare \"(Acum X zile)\" in campul Data al rezultatelor cautarii?" + +#: config/prefs.php.dist:138 +msgid "Show comments in chronological order, or most recent first?" +msgstr "Afisare comentarii cronologic, sau cele mai recente primele?" + +#: config/prefs.php.dist:89 +msgid "Show ticket IDs in the summary view?" +msgstr "Afisare ID-uri tichete in cuprins?" + +#: config/prefs.php.dist:81 +msgid "Show tickets you have requested in the summary view?" +msgstr "Afisare tichete solicitate in cuprins?" + +#: config/templates.php.dist:16 +msgid "Simple HTML Report" +msgstr "Raport HTML simplu" + +#: templates/index/notconfigured.inc:39 +msgid "Some of WHUPS's configuration files are missing:" +msgstr "Anumite fisiere de configurare WHUPS lipsesc:" + +#: templates/searchresults.inc:71 +msgid "Sort Direction" +msgstr "Directie sortare" + +#: templates/searchresults.inc:72 templates/searchresults.inc:76 +msgid "Sort by %s" +msgstr "Sortare dupa %s" + +#: lib/Whups.php:307 lib/Query.php:494 templates/queryrenderer.inc:109 +#: config/prefs.php.dist:41 +msgid "State" +msgstr "Stare" + +#: lib/Admin.php:411 lib/Admin.php:461 +msgid "State Category" +msgstr "Categorie stare" + +#: lib/Admin.php:410 lib/Admin.php:458 lib/Admin.php:487 +msgid "State Description" +msgstr "Descriere stare" + +#: lib/Admin.php:409 lib/Admin.php:433 lib/Admin.php:455 lib/Admin.php:484 +msgid "State Name" +msgstr "Nume stare" + +#: templates/comment.inc:46 +msgid "State changed to '%s'" +msgstr "Stare schimbata in '%s'" + +#: templates/comment.inc:49 +msgid "State is '%s'" +msgstr "Starea este '%s'" + +#: lib/Admin.php:340 lib/Admin.php:384 +msgid "States for this Type" +msgstr "Stare pentru acest tip" + +#: lib/Create.php:101 config/prefs.php.dist:40 +msgid "Subject" +msgstr "Subiect" + +#: lib/Admin.php:17 lib/Admin.php:38 lib/Admin.php:61 lib/Admin.php:85 +msgid "Subject Name" +msgstr "Nume subiect" + +#: lib/Admin.php:173 +msgid "Subjects associated with this Queue" +msgstr "Subiecte asociate cu acest modul" + +#: create.php:101 +msgid "Submit" +msgstr "Trimitere" + +#: lib/Whups.php:306 templates/queryrenderer.inc:105 +msgid "Summary" +msgstr "Cuprins" + +#: lib/Query.php:447 +msgid "Text" +msgstr "Text" + +#: query.php:46 +msgid "Text Criteria" +msgstr "Criteriu text" + +#: admin.php:809 +msgid "The attribute '%s' has been added to %s." +msgstr "Atributul '%s' a fost adaugat la '%s'." + +#: admin.php:897 +msgid "The attribute has been deleted." +msgstr "Atributul a fost sters." + +#: admin.php:866 +msgid "The attribute has been modified." +msgstr "Atributul a fost modificat." + +#: admin.php:902 +msgid "The attribute was not deleted." +msgstr "Atributul nu a fost sters." + +#: admin.php:205 +msgid "The queue '%s' has been created." +msgstr "Modulul '%s' a fost creat." + +#: admin.php:277 +msgid "The queue has been deleted." +msgstr "Modulul a fost sters." + +#: admin.php:257 +msgid "The queue has been modified." +msgstr "Modulul a fost modificat." + +#: admin.php:282 +msgid "The queue was not deleted." +msgstr "Modulul nu a fost sters." + +#: admin.php:418 +msgid "The priority '%s' has been added to %s." +msgstr "Prioritatea '%s' a fost adaugata la %s." + +#: admin.php:505 +msgid "The priority has been deleted." +msgstr "Prioritatea a fost stearsa." + +#: admin.php:475 +msgid "The priority has been modified." +msgstr "Prioritatea a fost modificata." + +#: admin.php:510 +msgid "The priority was not deleted." +msgstr "Prioritatea nu a fost stearsa." + +#: data.php:24 +msgid "The requested template does not exist." +msgstr "Modelul solicitat nu exista." + +#: admin.php:299 +msgid "The state '%s' has been added to %s." +msgstr "Starea '%s' a fost adaugata la %s." + +#: admin.php:388 +msgid "The state has been deleted." +msgstr "Starea a fost stearsa." + +#: admin.php:357 +msgid "The state has been modified." +msgstr "Starea a fost modificata." + +#: admin.php:393 +msgid "The state was not deleted." +msgstr "Starea nu a fost stearsa" + +#: admin.php:607 +msgid "The subject '%s' has been added." +msgstr "Subiectul '%s' a fost adaugat." + +#: admin.php:669 +msgid "The subject has been deleted." +msgstr "Subiectul a fost sters." + +#: admin.php:648 +msgid "The subject has been modified." +msgstr "Subiectul a fost modificat." + +#: admin.php:674 +msgid "The subject was not deleted." +msgstr "Subiectul nu a fost sters." + +#: admin.php:167 +msgid "The type '%s' has been modified." +msgstr "Tipul '%s' a fost modificat." + +#: admin.php:185 +msgid "The type has been deleted." +msgstr "Tipul a fost sters" + +#: admin.php:190 +msgid "The type was not deleted." +msgstr "Tipul nu a fost sters." + +#: admin.php:691 +msgid "The version '%s' has been added to %s." +msgstr "Versiunea '%s' a fost adaugata la %s." + +#: admin.php:779 +msgid "The version has been deleted." +msgstr "Versiunea a fost stearsa." + +#: admin.php:749 +msgid "The version has been modified." +msgstr "Versiunea a fost modificata." + +#: admin.php:784 +msgid "The version was not deleted." +msgstr "Versiunea nu a fost stearsa." + +#: lib/Admin.php:697 +msgid "There are no attribute types to edit" +msgstr "Nu exista tipuri de atribute de editat" + +#: lib/Query.php:557 +msgid "There are no attributes defined for the current type" +msgstr "Nu exista atribute definite pentru tipul curent" + +#: lib/Admin.php:768 +msgid "There are no queues available." +msgstr "Nu exista queue disponibile." + +#: lib/Admin.php:121 +msgid "There are no queues to edit" +msgstr "Nu exista queue de editat" + +#: lib/Create.php:31 +msgid "There are no queues which you can create tickets in." +msgstr "Nu exista queue in care sa se creeze tichete." + +#: lib/Search.php:30 +msgid "There are no queues which you can search." +msgstr "Nu exista queue pe care sa se caute." + +#: lib/Admin.php:523 +msgid "There are no priorities to edit" +msgstr "Nu exista prioritati editabile" + +#: lib/Admin.php:429 +msgid "There are no states to edit" +msgstr "Nu exista stari editabile" + +#: lib/Admin.php:35 +msgid "There are no subjects to edit" +msgstr "Nu exista subiecte editabile" + +#: lib/Create.php:48 +msgid "" +"There are no ticket types associated with this module; until there are, you " +"cannot create any tickets in this module." +msgstr "" +"Nu exista nici un tip de tichet asociat cu acest modul; pana vor exista, " +"nu puteti crea nici un tichet in acest modul." + +#: lib/Admin.php:301 +msgid "There are no types to edit" +msgstr "Nu exista tipuri editabile" + +#: lib/Admin.php:264 +msgid "There are no users responsible for this module." +msgstr "Nu exista utilizatori responsabili pentru acest modul." + +#: lib/Create.php:125 lib/Search.php:164 +msgid "There are no users to which this ticket can be assigned." +msgstr "Nu exista utilizatori caruia sa li se atribuie acest tichet." + +#: lib/Admin.php:610 +msgid "There are no versions to edit" +msgstr "Nu exista versiuni editabile" + +#: lib/Reports.php:143 +msgid "There is no data for this report." +msgstr "Nu exista date pentru acest raport." + +#: admin.php:546 +msgid "There was an error adding '%s' to the responsible list for '%s': %s" +msgstr "S-a produs o eroare de adaugare '%s' in lista responsabili pentru '%s': %s" + +#: admin.php:609 +msgid "There was an error adding the subject: %s." +msgstr "S-a produs o eroare in adaugarea subiectului: %s." + +#: admin.php:812 +msgid "There was an error creating the attribute: %s." +msgstr "S-a produs o eroare in crearea atributului: %s" + +#: admin.php:213 +msgid "There was an error creating the module: %s." +msgstr "S-a produs o eroare la crearea modulului: %s" + +#: admin.php:420 +msgid "There was an error creating the priority: %s." +msgstr "S-a produs o eroare la crearea prioritatii: %s." + +#: admin.php:301 +msgid "There was an error creating the state: %s." +msgstr "S-a produs o eroare la crearea starii: %s." + +#: admin.php:693 +msgid "There was an error creating the version: %s." +msgstr "S-a produs o eroare la crearea versiunii: %s." + +#: admin.php:899 +msgid "There was an error deleting the attribute: %s." +msgstr "S-a produs o eroare la stergerea atributului: %s" + +#: admin.php:279 +msgid "There was an error deleting the module: %s." +msgstr "S-a produs o eroare la stergerea modulului: %s." + +#: admin.php:507 +msgid "There was an error deleting the priority: %s." +msgstr "S-a produs o eroare la stergerea prioritatii: %s." + +#: admin.php:390 +msgid "There was an error deleting the state: %s." +msgstr "S-a produs o eroare la stergerea starii: %s." + +#: admin.php:671 +msgid "There was an error deleting the subject: %s." +msgstr "S-a produs o eroare la stergerea subiectului: %s." + +#: details.php:227 +msgid "There was an error deleting the ticket: %s" +msgstr "S-a produs o eroare la stergerea tichetului: %s" + +#: admin.php:187 +msgid "There was an error deleting the type: %s." +msgstr "S-a produs o eroare la stergerea tipului: %s." + +#: admin.php:781 +msgid "There was an error deleting the version: %s." +msgstr "S-a produs o eroare la stergerea versiunii: %s." + +#: admin.php:873 +msgid "There was an error editing the attribute: %s." +msgstr "S-a produs o eroare la editarea atributului: %s." + +#: admin.php:261 +msgid "There was an error editing the module: %s." +msgstr "S-a produs o eroare la editarea modulului: %s." + +#: admin.php:480 +msgid "There was an error editing the priority: %s." +msgstr "S-a produs o eroare la editarea prioritatii: %s." + +#: admin.php:362 +msgid "There was an error editing the state: %s." +msgstr "S-a produs o eroare la editarea starii: %s." + +#: admin.php:653 +msgid "There was an error editing the subject: %s." +msgstr "S-a produs o eroare la editarea subiectului: %s." + +#: admin.php:754 +msgid "There was an error editing the version: %s." +msgstr "S-a produs o eroare la editarea versiunii: %s." + +#: mybugs.php:40 +msgid "There was an error listing your assigned tickets: %s" +msgstr "S-a produs o eroare la listarea propriilor tichete: %s" + +#: mybugs.php:57 +msgid "There was an error listing your open requests: %s" +msgstr "S-a produs o eroare la listarea propriilor cereri deschise: %s" + +#: admin.php:165 +msgid "There was an error modifying the type: %s." +msgstr "S-a produs o eroare la modificarea tipului: %s." + +#: search.php:89 +msgid "There was an error performing your search: %s" +msgstr "S-a produs o eroare la efectuarea cautarii: %s" + +#: admin.php:585 +msgid "There was an error removing '%s' from the responsible list for '%s': %s" +msgstr "S-a produs o eroare la stergerea '%s' din lista responsabili pentru '%s': %s" + +#: templates/index/notconfigured.inc:58 +msgid "" +"This file controls the default preferences for Whups, and also controls " +"which preferences users can alter." +msgstr "" +"Acest fisier controleaza atat preferintele implicite pentru Whups, cat " +"si alte preferinte pentru utilizatori." + +#: templates/index/notconfigured.inc:51 +msgid "" +"This file controls the stylesheet that is used to set colors and fonts in " +"addition to or overriding Horde defaults." +msgstr "" +"Acest fisier controleaza schemva de culori si fonturi diferite de cele " +"implicite Horde." + +#: templates/index/notconfigured.inc:65 +msgid "" +"This file defines the templates that various parts of Whups use to format " +"data." +msgstr "" +"Acest fisier defineste modelele pe care diverse parti din Whups le " +"utilizeaza pentru formatarea datelor." + +#: data.php:27 +msgid "This is not a search results template." +msgstr "Acesta nu este un model de rezultate de cautare." + +#: lib/Admin.php:54 +msgid "This is not a valid subject." +msgstr "Acesta nu este un subiect valid." + +#: templates/index/notconfigured.inc:44 +msgid "" +"This is the main WHUPS configuration file. It contains paths and options for " +"all WHUPS scripts." +msgstr "" +"Acesta este principalul fisier de configurare WHUPS. Contine caile si " +"optiunile pentru toate scripturile WHUPS." + +#: lib/Driver.php:156 +msgid "This mail was automatically generated by %s" +msgstr "Acest mail a fost generat automat de %s" + +#: lib/Create.php:57 +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this module, you will not " +"be able to create tickets." +msgstr "" +"Acest modul necesita specificare de versiune, dar nu exista versiuni asociate " +"cu el. Pana versiunile vor fi create pentru acest modul, nu veti putea " +"sa creati tichete." + +#: details.php:291 +msgid "Ticket %s Comments" +msgstr "Comentarii tichet %s" + +#: details.php:284 +msgid "Ticket %s Details" +msgstr "Detalii tichet %s" + +#: lib/Driver.php:103 +msgid "Ticket %s has been assigned" +msgstr "Tichetul %s a fost atribuit" + +#: lib/Driver.php:141 +msgid "Ticket %s has changed priority" +msgstr "Tichetul %s si-a schimbat prioritatea" + +#: lib/Driver.php:123 +msgid "Ticket %s has changed state" +msgstr "Tichetul %s si-a schimbat starea" + +#: lib/Driver/sql.php:603 +msgid "Ticket %s was not found." +msgstr "Tichetul %s nu a fost gasit." + +#: details.php:236 +msgid "Ticket Details" +msgstr "Detalii tichet" + +#: lib/Search.php:38 +msgid "Ticket ID" +msgstr "ID tichet" + +#: lib/Create.php:99 lib/Search.php:57 lib/Search.php:88 +msgid "Ticket State" +msgstr "Stare tichet" + +#: templates/reports/stats.inc:4 +msgid "Ticket Stats" +msgstr "Stare tichet" + +#: lib/Search.php:79 lib/Search.php:213 lib/api.php:69 +msgid "Ticket Summary" +msgstr "Cuprins tichet" + +#: lib/Create.php:52 lib/Search.php:87 +msgid "Ticket Type" +msgstr "Tip tichet" + +#: lib/Admin.php:163 +msgid "Ticket Types associated with this Queue" +msgstr "Tipuri tichet asociate cu acest modul" + +#: lib/Block/summary.php:68 lib/api.php:117 +msgid "Tickets assigned to you" +msgstr "Tickete atribuite tie" + +#: lib/Search.php:40 +msgid "Tickets which are" +msgstr "Tichete care sunt" + +#: lib/Block/summary.php:84 lib/api.php:133 +msgid "Tickets you requested" +msgstr "Tichete solicitate" + +#: lib/Whups.php:308 templates/queryrenderer.inc:100 config/prefs.php.dist:42 +msgid "Type" +msgstr "Tip" + +#: lib/Admin.php:283 lib/Admin.php:337 lib/Admin.php:381 +msgid "Type Description" +msgstr "Descriere tip" + +#: lib/Admin.php:282 lib/Admin.php:304 lib/Admin.php:334 lib/Admin.php:378 +msgid "Type Name" +msgstr "Nume tip" + +#: lib/Search.php:92 +msgid "Unassigned" +msgstr "Neatribuit" + +#: lib/Admin.php:779 +msgid "Unassigned tickets" +msgstr "Tichete neatribuite" + +#: lib/Driver.php:62 +msgid "Unconfirmed" +msgstr "Neconfirmat" + +#: templates/queryrenderer.inc:139 +msgid "Unknown node type %s" +msgstr "Tip nod %s necunoscut" + +#: lib/Admin.php:236 lib/Admin.php:238 +msgid "User" +msgstr "Utilizator" + +#: query.php:44 +msgid "User Criteria" +msgstr "Criteriu utilizator" + +#: lib/Query.php:395 +msgid "User ID" +msgstr "ID utilizator" + +#: prefs.php:34 +msgid "User Options" +msgstr "Optiuni utilizator" + +#: lib/Admin.php:176 +msgid "Users responsible for this Queue" +msgstr "Utilizatori responsabili pentru acest modul" + +#: lib/Admin.php:268 +msgid "Users responsible for this module" +msgstr "Utilizatori responsabili pentru acest modul" + +#: lib/Whups.php:311 config/prefs.php.dist:45 +msgid "Version" +msgstr "Versiune" + +#: lib/Admin.php:592 lib/Admin.php:636 lib/Admin.php:661 +msgid "Version Description" +msgstr "Descriere versiune" + +#: lib/Admin.php:591 lib/Admin.php:614 lib/Admin.php:633 lib/Admin.php:658 +msgid "Version Name" +msgstr "Nume versiune" + +#: lib/Search.php:135 lib/Search.php:179 lib/Search.php:257 lib/Search.php:299 +#: lib/Search.php:367 +msgid "Viewable only by members of" +msgstr "Vizualizabil doar de membri ai" + +#: templates/index/notconfigured.inc:4 +msgid "WHUPS is not properly configured" +msgstr "WHUPS nu este corect configurat" + +#: config/prefs.php.dist:98 +msgid "Weekday Day Month" +msgstr "Zi_saptamana Zi Luna" + +#: config/prefs.php.dist:99 +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "Zi_saptamana Zi Luna OO:MM:SS ZT" + +#: lib/Admin.php:81 lib/Admin.php:196 lib/Admin.php:366 lib/Admin.php:478 +#: lib/Admin.php:566 lib/Admin.php:653 lib/Admin.php:740 lib/Search.php:209 +msgid "Yes" +msgstr "Da" + +#: lib/Driver/sql.php:606 +msgid "You do not have permission to access this ticket (%s)." +msgstr "Nu aveti permisiunea de a accesa acest tichet (%s)." + +#: lib/Query.php:632 +msgid "You have no saved queries." +msgstr "Nu aveti chestionari salvate." + +#: lib/Whups.php:336 +msgid "You must select at least one queue to send reminders for." +msgstr "Trebuie sa selectati cel putin un modul pentru care se trimit memorandumuri." + +#: lib/Create.php:28 lib/Search.php:130 lib/Search.php:328 +msgid "Your Email Address" +msgstr "Adresa ta de e-mail" + +#: config/prefs.php.dist:5 +msgid "Your Information" +msgstr "Detalii personale" + +#: create.php:157 +msgid "Your ticket id is %s. " +msgstr "Id-ul tichetului tau este %s." + +#: templates/queryrenderer.inc:129 +msgid "contains (case insensitive) substring" +msgstr "contine (caz insenzitiv) subsirul" + +#: templates/queryrenderer.inc:130 +msgid "contains (case sensitive) substring" +msgstr "contine (caz senzitiv) subsirul" + +#: templates/queryrenderer.inc:131 +msgid "contains the word" +msgstr "contine cuvantul" + +#: templates/queryrenderer.inc:128 +msgid "is" +msgstr "este" + +#: templates/queryrenderer.inc:126 +msgid "is greater than" +msgstr "este mai mare ca" + +#: templates/queryrenderer.inc:127 +msgid "is less than" +msgstr "este mai mic ca" + +#: templates/queryrenderer.inc:132 +msgid "matches the pattern" +msgstr "se potriveste tiparului" diff --git a/whups/po/ru_RU.po b/whups/po/ru_RU.po new file mode 100644 index 000000000..9a0b5e784 --- /dev/null +++ b/whups/po/ru_RU.po @@ -0,0 +1,2210 @@ +# Russian translations for Whups package +# Copyright +# Illya Belov +# Alexey Zakharov , 2006 +# +msgid "" +msgstr "" +"Project-Id-Version: Whups 1.0-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2005-12-25 20:01+0200\n" +"PO-Revision-Date: 2006-01-15 11:00+0200\n" +"Last-Translator: Alexey Zakharov \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CP1251\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin.php:603 +#, php-format +msgid "\"%s\" is no longer among those responsible for \"%s\"" +msgstr "" + +#: templates/menu.inc:5 +msgid "#Id" +msgstr "" + +#: lib/Driver.php:278 +#, php-format +msgid "%s (%s) wrote:" +msgstr "%s (%s) íàïèñàë:" + +#: admin.php:567 +#, php-format +msgid "%s added to those responsible for \"%s\"" +msgstr "" + +#: templates/reports/stats.inc:17 +#, php-format +msgid "%s days" +msgstr "%s äíåé" + +#: ticket/watch.php:58 +#, php-format +msgid "%s will be notified when this ticket is updated." +msgstr "%s áóäåò óâåäîìëåí ïðè îáíîâëåíèè ýòîãî çàïðîñà" + +#: ticket/watch.php:70 +#, php-format +msgid "%s will no longer receive updates for this ticket." +msgstr "%s áîëüøå íå áóäåò ïîëó÷àòü óâåäîìëåíèÿ ïî ýòîìó çàïðîñó" + +#: admin.php:81 +msgid "- Stage 1" +msgstr "- Øàã 1" + +#: admin.php:86 +msgid "- Stage 2" +msgstr "- Øàã 2" + +#: scripts/mail-filter.php:164 +msgid "--priority-name or --priority-id must specify a valid Priority." +msgstr "" + +#: scripts/mail-filter.php:158 +msgid "--queue-name or --queue-id must specify a valid Queue." +msgstr "" + +#: scripts/mail-filter.php:167 +msgid "--state-name or --state-id must specify a valid State." +msgstr "" + +#: scripts/mail-filter.php:161 +msgid "--type-name or --type-id must specify a valid Type." +msgstr "" + +#: templates/prevnext.inc:12 +#, fuzzy +msgid "<No summary" +msgstr "" + +#: view.php:55 +#, php-format +msgid "Access denied to %s" +msgstr "Äîñòóï çàïðåùåí äëÿ %s" + +#: lib/Admin.php:709 +msgid "Add Attribute" +msgstr "Äîáàâèòü àòòðèáóò" + +#: lib/Query.php:764 +msgid "Add Attribute Criterion" +msgstr "" + +#: query.php:205 +msgid "Add Criterion" +msgstr "Äîáàâèòü êðèòåðèé" + +#: lib/Query.php:590 +msgid "Add Group Criterion" +msgstr "Äîáàâèòü êðèòåðèè ãðóïïû" + +#: lib/Admin.php:533 +msgid "Add Priority" +msgstr "Äîáàâèòü ïðèîðèòåò" + +#: lib/Query.php:669 +msgid "Add Property Criterion" +msgstr "Äîáàâèòü êðèòåðèè ñâîéñòâà" + +#: lib/Admin.php:102 lib/Admin.php:103 +msgid "Add Queue" +msgstr "Äîáàâèòü Òåìó" + +#: lib/Admin.php:441 +msgid "Add State" +msgstr "Äîáàâèòü ñîñòîÿíèå" + +#: lib/Admin.php:14 lib/Admin.php:15 +msgid "Add Subject" +msgstr "Äîáàâèòü çàãëàâèå" + +#: lib/Query.php:625 +msgid "Add Text Criterion" +msgstr "Äîáàâèòü êðèòåðèè òåêñòà" + +#: lib/Admin.php:298 lib/Admin.php:299 +msgid "Add Type" +msgstr "Äîáàâèòü òèï" + +#: admin.php:81 admin.php:86 +#, php-format +msgid "Add Type %s" +msgstr "Äîáàâèòü òèï %s" + +#: lib/Query.php:537 +msgid "Add User Criterion" +msgstr "Äîáàâèòü êðèòåðèè ïîëüçîâàòåëÿ" + +#: lib/Admin.php:229 +msgid "Add Users" +msgstr "Äîáàâèòü ïîëüçîâàòåëåé" + +#: lib/Admin.php:621 +msgid "Add Version" +msgstr "Äîáàâèòü âåðñèþ" + +# fuzzy +#: ticket/watch.php:47 +msgid "Add Watcher" +msgstr "Äîáàâèòü" + +#: ticket/create.php:154 +#, php-format +msgid "Adding your ticket failed: %s." +msgstr "" + +#: admin.php:54 lib/api.php:694 +msgid "Administration" +msgstr "Àäìèíèñòðèðîâàíèå" + +# fuzzy +#: templates/queryrenderer.inc:90 lib/Query.php:518 +msgid "And" +msgstr "È" + +#: search.php:39 search.php:103 search.php:105 search.php:120 search.php:136 +#: search.php:138 lib/Query.php:675 lib/Query.php:683 lib/Query.php:688 +#: lib/Query.php:695 lib/Query.php:700 +msgid "Any" +msgstr "- Íå âàæíî -" + +# fuzzy +#: ticket/update.php:75 ticket/people.php:90 ticket/type.php:45 +#: ticket/comment.php:41 ticket/queue.php:50 +msgid "Any Group" +msgstr "Ëþáûå ãðóïïû" + +#: config/prefs.php.dist:47 +msgid "Ascending" +msgstr "Ïî âîçðîñòàíèþ" + +#: lib/api.php:709 +#, fuzzy +msgid "Assign" +msgstr " ðàáîòå" + +#: ticket/people.php:128 +msgid "Assign Ticket Succeeded" +msgstr "" + +#: lib/Whups.php:473 lib/Ticket.php:601 lib/Driver.php:142 +#: config/prefs.php.dist:36 +msgid "Assigned" +msgstr " ðàáîòå" + +#: templates/comment.inc:66 +#, php-format +msgid "Assigned to %s" +msgstr "" + +#: admin.php:955 +msgid "Associations updated successfully." +msgstr "" + +#: ticket/update.php:64 ticket/comment.php:29 lib/Create.php:124 +msgid "Attachment" +msgstr "Âëîæåíèå" + +#: ticket/deleteAttachment.php:29 +#, php-format +msgid "Attachment %s deleted." +msgstr "Âëîæåíèå %s óäàëåíî" + +#: lib/Ticket.php:388 +#, php-format +msgid "Attachment %s not found." +msgstr "Âëîæåíèå %s íå íàéäåíî" + +#: lib/Ticket.php:603 +msgid "Attachments" +msgstr "Âëîæåíèÿ" + +#: query.php:139 +msgid "Attribute Criteria" +msgstr "Àòòðèáóòû" + +# fuzzy +#: lib/Admin.php:713 lib/Admin.php:759 lib/Admin.php:782 +msgid "Attribute Description" +msgstr "Îïèñàíèå" + +#: lib/Admin.php:712 lib/Admin.php:737 lib/Admin.php:756 lib/Admin.php:779 +msgid "Attribute Name" +msgstr "Àòòðèáóò" + +#: lib/Admin.php:370 +msgid "Attributes for this Type" +msgstr "Àòòðèáóòû äëÿ ýòîãî Òèïà" + +#: config/prefs.php.dist:118 +msgid "Autolink to other tickets in comments?" +msgstr "Àâòîìàòè÷åñêèå ññûëêè íà äðóãèå çàïðîñû â êîìåíòàðèÿõ" + +#: lib/Reports.php:12 +msgid "Average days to close by Owner" +msgstr "Ñðåäíåå âðåìÿ ðåøåíèÿ ïî Îòâåòñòâåííûì" + +#: lib/Reports.php:14 +msgid "Average days to close by Queue" +msgstr "Ñðåäíåå âðåìÿ ðåøåíèÿ ïî Òåìå" + +#: lib/Reports.php:13 +msgid "Average days to close by Requester" +msgstr "Ñðåäíåå âðåìÿ ðåøåíèÿ ïî Çàïðîñèâøåìó" + +#: lib/Reports.php:19 +msgid "Average time a ticket is unresolved" +msgstr "Ñðåäíåå âðåìÿ ðåøåíèÿ çàïðîñà" + +#: lib/Query.php:523 +msgid "Branch Type" +msgstr "" + +#: lib/Query.php:56 +msgid "Case Insensitive Substring" +msgstr "÷àñòè÷íîå áåç ó÷åòà ðåãèñòðà" + +#: templates/queryrenderer.inc:27 +#, fuzzy +msgid "Change" +msgstr "Îòìåíèòü èçìåíåíèÿ\n" + +#: config/prefs.php.dist:11 +msgid "Change display options such as how search results are sorted." +msgstr "" +"Èçìåíèòü íàñòðîéêè îòîáðàæåíèÿ, íàïðèìåð ïîðÿäîê ñîðòèðîâêè ðåçóëüòàòîâ " +"ïîèñêà" + +#: config/prefs.php.dist:18 +msgid "Change options for email notifications of ticket activity." +msgstr "Èçìåíèòü íàñòðîéêè ðàññûëêè óâåäîìëåíèé ïî ýëåêòðîííîé ïî÷òå" + +#: query.php:142 +msgid "Choose Action:" +msgstr "Äåéñòâèå:" + +#: lib/Query.php:161 +msgid "Choose New Query instead of deleting the root node." +msgstr "" + +#: lib/Create.php:33 lib/Create.php:67 +msgid "Choose:" +msgstr "Âûáîð:" + +#: config/prefs.php.dist:128 +msgid "Chronological (oldest first)" +msgstr " õðîíîëîãè÷åñêîì ïîðÿäêå" + +#: templates/savedsearches.inc:27 +msgid "Clear All Searches" +msgstr "Î÷èñòèòü âñå ïîèñêîâûå çàïðîñû" + +#: lib/Admin.php:421 +msgid "Clone" +msgstr "Êëîíèðîâàòü" + +#: lib/Admin.php:427 +msgid "Clone Description" +msgstr "Êëîíèðîâàòü îïèñàíèå:" + +#: admin.php:120 lib/Admin.php:313 +msgid "Clone Type" +msgstr "Êëîíèðîâàòü òèï" + +#: config/templates.php.dist:43 +msgid "Comma Separated Values (CSV file)" +msgstr "CSV-ôàéë" + +#: templates/queryrenderer.inc:101 templates/comment.inc:90 +#: templates/comment.inc:121 ticket/update.php:65 ticket/people.php:78 +#: ticket/type.php:35 ticket/comment.php:28 ticket/queue.php:38 +#: lib/Whups.php:193 +msgid "Comment" +msgstr "Êîììåíòàðèé" + +#: ticket/comment.php:94 +msgid "Comment added" +msgstr "Êîììåíòàðèé äîáàâëåí" + +#: ticket/comment.php:100 +#, php-format +msgid "Comment on %s" +msgstr "Êîììåíòàðèé äëÿ %s" + +#: templates/queryrenderer.inc:100 +msgid "Commentor" +msgstr "Êîììåíòàòîð" + +#: lib/Admin.php:425 +#, php-format +msgid "Copy of %s" +msgstr "" + +#: lib/MIME/Viewer/zip.php:54 +msgid "Could not extract the requested file from the Zip archive." +msgstr "" + +#: lib/Query.php:595 +msgid "Could not find any groups." +msgstr "Íåò ãðóïï" + +#: lib/Mail.php:86 +#, fuzzy, php-format +msgid "Could not find ticket \"%s\"." +msgstr "Íå ìîãó îòêðûòü ìîäóëü Maintenance_Task %s" + +# fuzzy +#: lib/Admin.php:364 +msgid "Create Default Priorities" +msgstr "Ñîçäàòü ïðèîðèòåòû ïî óìîë÷àíèþ" + +#: lib/Admin.php:354 +msgid "Create Default States" +msgstr "Ñîçäàòü ñîñòîÿíèÿ ïî óìîë÷àíèþ" + +#: config/prefs.php.dist:60 +msgid "Create Ticket" +msgstr "Ñîçäàòü çàïðîñ" + +#: lib/Create.php:23 +msgid "Create Ticket - Step 1" +msgstr "Ñîçäàíèå çàïðîñà - Øàã 1" + +#: lib/Create.php:58 +msgid "Create Ticket - Step 2" +msgstr "Ñîçäàíèå çàïðîñà - Øàã 2" + +#: lib/Create.php:98 +msgid "Create Ticket - Step 3" +msgstr "Ñîçäàíèå çàïðîñà - Øàã 3" + +#: lib/Create.php:142 +msgid "Create Ticket - Step 4" +msgstr "Ñîçäàíèå çàïðîñà - Øàã 4" + +#: lib/Whups.php:472 lib/Ticket.php:600 config/prefs.php.dist:35 +msgid "Created" +msgstr "Ñîçäàíî" + +#: lib/Ticket.php:471 lib/Ticket.php:486 +#, fuzzy +msgid "Created By" +msgstr "Ñîçäàíî" + +# fuzzy +#: query.php:195 query.php:212 +msgid "Current Query" +msgstr "Òåêóùàÿ Òåìà" + +#: templates/queryrenderer.inc:25 +msgid "Current Ticket Type" +msgstr "" + +#: lib/Ticket.php:531 +msgid "DO NOT REPLY TO THIS MESSAGE. THIS EMAIL ADDRESS IS NOT MONITORED." +msgstr "ÍÅ ÎÒÂÅ×ÀÉÒÅ ÍÀ ÝÒÎ ÑÎÎÁÙÅÍÈÅ. ÝÒÎÒ EMAIL ÀÄÐÅÑ ÍÅ ÏÐÎÑÌÀÒÐÈÂÀÅÒÑß." + +#: config/prefs.php.dist:91 +msgid "Date/Time format for search results" +msgstr "Ôîðìàò äàòû/âðåìåíè äëÿ ðåçóëüòàòîâ ïîèñêà" + +#: config/prefs.php.dist:38 +msgid "Default sorting criteria:" +msgstr "Ñîðòèðîâêà ïî óìîë÷àíèþ:" + +#: config/prefs.php.dist:49 +msgid "Default sorting direction:" +msgstr "Íàïðàâëåíèå ñîðòèðîâêè ïî óìîë÷àíèþ:" + +#: query.php:143 lib/Whups.php:202 +msgid "Delete" +msgstr "Óäàëèòü" + +#: lib/Whups.php:641 lib/Whups.php:642 +#, php-format +msgid "Delete %s" +msgstr "Óäàëèòü %s" + +#: ticket/delete.php:58 +#, php-format +msgid "Delete %s?" +msgstr "Óäàëèòü %s?" + +#: admin.php:847 lib/Admin.php:725 +msgid "Delete Attribute" +msgstr "Óäàëèòü àòðèáóò" + +#: lib/Admin.php:771 +msgid "Delete Attribute Confirmation" +msgstr "Ïîäòâåðæäåíèå óäàëåíèÿ àòðèáóòà" + +#: admin.php:485 lib/Admin.php:549 +msgid "Delete Priority" +msgstr "Óäàëèòü ïðèîðèòåò" + +#: lib/Admin.php:595 +msgid "Delete Priority Confirmation" +msgstr "Ïîäòâåðæäåíèå óäàëåíèÿ ïðèîðèòåòà" + +#: lib/Query.php:145 +msgid "Delete Query" +msgstr "Óäàëèòü çàïðîñ" + +#: lib/Query.php:882 +msgid "Delete Query?" +msgstr "Óäàëèòü çàïðîñ?" + +#: admin.php:268 lib/Admin.php:119 +msgid "Delete Queue" +msgstr "Óäàëèòü Òåìó" + +#: lib/Admin.php:204 +msgid "Delete Queue Confirmation" +msgstr "Ïîäòâåðæäåíèå óäàëåíèÿ Òåìû" + +#: templates/savedsearches.inc:45 templates/savedsearches.inc:46 +msgid "Delete Search" +msgstr "Óäàëèòü ïîèñê" + +#: admin.php:375 lib/Admin.php:458 +msgid "Delete State" +msgstr "Óäàëèòü ñîñòîÿíèå" + +#: lib/Admin.php:507 +msgid "Delete State Confirmation" +msgstr "Ïîäòâåðæäåíèå óäàëåíèÿ ñîñòîÿíèÿ" + +#: admin.php:646 lib/Admin.php:29 +msgid "Delete Subject" +msgstr "Óäàëèòü òåìó" + +#: lib/Admin.php:80 +msgid "Delete Subject Confirmation" +msgstr "Ïîäòâåðæäåíèå óäàëåíèÿ òåìû" + +#: admin.php:114 lib/Admin.php:313 +msgid "Delete Type" +msgstr "Óäàëèòü òèï" + +#: lib/Admin.php:384 +msgid "Delete Type Confirmation" +msgstr "Ïîäòâåðæäåíèå óäàëåíèÿ òèïà" + +#: admin.php:738 lib/Admin.php:637 +msgid "Delete Version" +msgstr "Óäàëèòü âåðñèþ" + +#: lib/Admin.php:683 +msgid "Delete Version Confirmation" +msgstr "Ïîäòâåðæäåíèå óäàëåíèÿ âåðñèè" + +#: lib/Ticket.php:476 lib/Ticket.php:522 +msgid "Deleted Attachment" +msgstr "Óäàëèòü âëîæåíèå" + +#: templates/comment.inc:62 +#, php-format +msgid "Deleted Attachment: %s" +msgstr "Óäàëèòü âëîæåíèå: %s" + +#: config/prefs.php.dist:48 +msgid "Descending" +msgstr "Ïî óáûâàíèþ" + +#: lib/Create.php:125 +msgid "Description" +msgstr "Îïèñàíèå:" + +# fuzzy +#: config/prefs.php.dist:10 +msgid "Display Options" +msgstr "Íàñòðîéêè îòîáðàæåíèÿ" + +#: lib/Whups.php:633 +msgid "Download" +msgstr "Ñêà÷àòü" + +#: query.php:144 +msgid "Edit" +msgstr "Ðåäàêòèðîâàíèå" + +#: lib/Admin.php:148 lib/Admin.php:338 +#, php-format +msgid "Edit %s" +msgstr "Ðåäàêòèðîâàíèå %s" + +#: admin.php:842 lib/Admin.php:725 lib/Admin.php:748 +msgid "Edit Attribute" +msgstr "Ðåäàêòèðîâàòü àòòðèáóò" + +#: lib/Admin.php:372 +msgid "Edit Attributes" +msgstr "Ðåäàêòèðîâàòü àòòðèáóòû" + +#: lib/Query.php:134 +msgid "Edit Permissions" +msgstr "Ðåäàêòèðîâàòü ïðàâà" + +#: lib/Admin.php:362 +msgid "Edit Priorities" +msgstr "Ðåäàêòèðîâàòü ïðèîðèòåòû" + +#: admin.php:480 lib/Admin.php:549 lib/Admin.php:572 +msgid "Edit Priority" +msgstr "Ðåäàêòèðîâàòü ïðèîðèòåò" + +#: lib/Query.php:126 +msgid "Edit Query" +msgstr "Ðåäàêòèðîâàòü" + +#: admin.php:262 lib/Admin.php:119 lib/Admin.php:122 +msgid "Edit Queue" +msgstr "Ðåäàêòèðîâàòü Òåìó" + +#: admin.php:32 lib/Admin.php:121 +msgid "Edit Queues" +msgstr "Ðåäàêòèðîâàòü Òåìû" + +#: admin.php:370 lib/Admin.php:458 lib/Admin.php:481 +msgid "Edit State" +msgstr "Ðåäàêòèðîâàòü ñîñòîÿíèå" + +#: lib/Admin.php:352 +msgid "Edit States" +msgstr "Ðåäàêòèðîâàòü ñîñòîÿíèÿ" + +#: admin.php:641 lib/Admin.php:29 lib/Admin.php:51 +msgid "Edit Subject" +msgstr "Ðåäàêòèðîâàòü çàãëàâèÿ" + +#: admin.php:34 +msgid "Edit Subjects" +msgstr "Ðåäàêòèðîâàòü çàãëàâèÿ" + +#: admin.php:108 lib/Admin.php:313 +msgid "Edit Type" +msgstr "Ðåäàêòèðîâàòü òèï" + +#: admin.php:33 +msgid "Edit Types" +msgstr "Ðåäàêòèðîâàòü òèïû" + +#: admin.php:733 lib/Admin.php:637 lib/Admin.php:660 +msgid "Edit Version" +msgstr "Ðåäàêòèðîâàòü âåðñèþ" + +#: lib/Admin.php:724 +msgid "Edit or Delete Attributes" +msgstr "Äîáàâëåíè èëè Óäàëåíèå Àòòðèáóò" + +#: lib/Admin.php:548 +msgid "Edit or Delete Priorities" +msgstr "Ðåäàêòèðîâàíèå èëè Óäàëåíèå Ïðèîðèòåòîâ" + +#: lib/Admin.php:118 +msgid "Edit or Delete Queues" +msgstr "Ðåäàêòèðîâàíèå èëè Óäàëåíèå Òåì" + +#: lib/Admin.php:457 +msgid "Edit or Delete States" +msgstr "Ðåäàêòèðîâàíèå èëè Óäàëåíèå Ñîñòîÿíèé" + +#: lib/Admin.php:28 +msgid "Edit or Delete Subjects" +msgstr "Ðåäàêòèðîâàíèå èëè Óäàëåíèå Çàãëàâèé" + +#: lib/Admin.php:312 +msgid "Edit or Delete Types" +msgstr "Ðåäàêòèðîâàíèå èëè Óäàëåíèå Òèïîâ" + +#: lib/Admin.php:636 +msgid "Edit or Delete Versions" +msgstr "Ðåäàêòèðîâàíèå èëè Óäàëåíèå Âåðñèé" + +#: lib/Admin.php:191 +msgid "Edit the permissions on this queue" +msgstr "Ðåäàêòèðîâàòü ïðàâà äëÿ ýòîé òåìû" + +#: lib/Admin.php:186 +msgid "Edit the users responsible for this queue" +msgstr "Ðåäàêòèðîâàòü ïîëüçîâàòåëåé îòâåòñâåííûõ çà ýòó òåìó" + +#: lib/Admin.php:165 +msgid "Edit the versions for this queue" +msgstr "Ðåäàêòèðîâàòü âåðñèè äëÿ ýòîé òåìû" + +# fuzzy +#: ticket/watch.php:23 +msgid "Email address to notify" +msgstr "Äîáàâèòü àäðåñ:" + +# fuzzy +#: ticket/watch.php:35 +msgid "Email address to remove" +msgstr "Èñêëþ÷èòü àäðåñ:" + +#: query.php:171 +#, php-format +msgid "Error: Unknown query form %s, defaulting to properties" +msgstr "" + +#: lib/Query.php:55 +msgid "Exact Match" +msgstr "Ïîëíîå" + +#: runquery.php:69 runquery.php:83 lib/Query.php:138 +msgid "Execute Query" +msgstr "Âûïîëíèòü" + +#: lib/Admin.php:809 +msgid "For tickets from these queues" +msgstr "Äëÿ Çàïðîñîâ ïî Òåìå" + +#: lib/Admin.php:813 +msgid "For tickets which are" +msgstr "Äëÿ Çàïðîñîâ, êîòîðûå" + +#: templates/menu.inc:5 lib/Block/summary.php:29 +msgid "Go" +msgstr "->" + +#: query.php:136 +msgid "Group Criteria" +msgstr "Ãðóïïû" + +# fuzzy +#: ticket/people.php:66 lib/Create.php:173 +#, fuzzy +msgid "Group Owners" +msgstr "Ãðóïïû" + +#: templates/queryrenderer.inc:98 lib/Query.php:596 lib/Query.php:598 +msgid "Groups" +msgstr "Ãðóïïû" + +#: lib/api.php:697 +#, fuzzy +msgid "Hidden Comments" +msgstr "Êîìïàíèÿ" + +#: ticket/index.php:43 lib/Whups.php:189 +msgid "History" +msgstr "Èñòîðèÿ" + +#: query.php:145 +#, fuzzy +msgid "Hoist" +msgstr "Íàñòðîéêè" + +#: templates/queryrenderer.inc:96 lib/Whups.php:464 lib/Query.php:671 +#: config/prefs.php.dist:28 +msgid "Id" +msgstr "" + +#: search.php:52 +msgid "" +"If you don't select any categories, no filtering will be done on ticket " +"category." +msgstr "" +"Åñëè âû íå âûáåðèòå íè îäíîãî ñîñòîÿíèÿ - Çàïðîñû íå áóäóò ôèëüòðîâàòüñÿ ïî " +"ñîñòîÿíèþ" + +#: search.php:55 +msgid "" +"If you don't select any types, no filtering will be done on ticket type." +msgstr "" +"Åñëè âû íå âûáåðèòå íè îäíîãî òèïà - Çàïðîñû íå áóäóò ôèëüòðîâàòüñÿ ïî òèïó" + +#: lib/Admin.php:816 +msgid "" +"If you select any tickets that do not have an owner, who should we send " +"email to?" +msgstr "" +"Ïðè âûáîðå Çàïðîñà, êîòîðîìó íå íàçíà÷åí âëàäåëåö - êîìó ïîëûëàòü e-mail?" + +# fuzzy +#: query.php:146 +msgid "Insert And" +msgstr "Äîáàâèòü È" + +#: lib/Query.php:515 +#, fuzzy +msgid "Insert Branch" +msgstr "Ñîîáùåíèå" + +# fuzzy +#: query.php:148 +msgid "Insert Not" +msgstr "Äîáàâèòü ÍÅ" + +# fuzzy +#: query.php:147 +msgid "Insert Or" +msgstr "Äîáàâèòü ÈËÈ" + +#: lib/Whups.php:160 +msgid "Invalid Ticket Id" +msgstr "Íåâåðíûé ID Çàïðîñà" + +#: lib/Admin.php:162 +msgid "Keep a set of versions for this queue?" +msgstr "Ïîääåðæêà ðàçíûõ âåðñèé äëÿ ýòîé òåìû?" + +#: templates/prevnext.inc:17 +#, fuzzy +msgid "Last>>" +msgstr "Ïîñëåäíèé" + +#: lib/Query.php:139 lib/Query.php:842 +msgid "Load Query" +msgstr "Çàãðóçèòü" + +#: config/prefs.php.dist:89 +msgid "MM/DD/YY" +msgstr "ÌÌ/ÄÄ/ÃÃ" + +#: config/prefs.php.dist:90 +msgid "MM/DD/YY HH:MM:SS" +msgstr "ÌÌ/ÄÄ/Ãà ××:ÌÌ:ÑÑ" + +#: lib/Admin.php:419 +#, php-format +msgid "Make a clone of %s" +msgstr "Ñäåëàòü êëîí %s" + +#: lib/Query.php:770 +#, fuzzy +msgid "Match" +msgstr "Ïîèñê" + +#: lib/Query.php:540 lib/Query.php:628 lib/Query.php:771 +msgid "Match Operator" +msgstr "Ñîâïàäåíèå" + +#: lib/Query.php:59 +msgid "Match Pattern" +msgstr "Ìàñêà" + +#: lib/Query.php:58 +msgid "Match Word" +msgstr "Ñëîâî" + +#: lib/Reports.php:20 +msgid "Maximum time a ticket is unresolved" +msgstr "Ìàêñèìàëüíîå âðåìÿ ðåøåíèÿ çàïðîñà" + +#: lib/Reports.php:21 +msgid "Minimum time a ticket is unresolved" +msgstr "Ìèíèìàëüíîå âðåìÿ ðåøåíèÿ çàïðîñà" + +#: config/prefs.php.dist:129 +msgid "Most recent first" +msgstr "Ñíà÷àëà ñâåæèå" + +#: ticket/queue.php:173 +#, php-format +msgid "Moved ticket %d to \"%s\"" +msgstr "" + +#: mybugs.php:65 +#, php-format +msgid "My %s" +msgstr "" + +#: mybugs.php:44 +msgid "My Assigned Tickets" +msgstr "Çàïðîñû ìíå" + +# fuzzy +#: mybugs.php:60 +msgid "My Open Requests" +msgstr "Çàïðîñû îò ìåíÿ" + +#: mybugs.php:83 search.php:191 lib/Block/myqueries.php:3 +#: lib/Block/myqueries.php:26 +msgid "My Queries" +msgstr "Ìîè çàïðîñû" + +#: mybugs.php:79 search.php:187 lib/Block/mysearches.php:3 +#: lib/Block/mysearches.php:24 +msgid "My QuickSearches" +msgstr "Áûñòðûé ïîèñê" + +#: config/prefs.php.dist:58 +msgid "My Tickets" +msgstr "Ìîè çàïðîñû" + +#: lib/Ticket.php:537 +#, php-format +msgid "NEW: %s" +msgstr "ÍÎÂÛÉ: %s" + +#: lib/Query.php:819 lib/Query.php:857 +msgid "Name" +msgstr "Èìÿ" + +#: lib/Admin.php:424 +msgid "Name of the cloned copy" +msgstr "Èìÿ êëîíèðîâàííîé êîïèè" + +#: lib/Driver.php:141 +msgid "New" +msgstr "Íîâûå" + +#: lib/Ticket.php:475 lib/Ticket.php:517 +msgid "New Attachment" +msgstr "Íîâîå âëîæåíèå" + +#: templates/comment.inc:55 templates/comment.inc:57 +#, php-format +msgid "New Attachment: %s" +msgstr "Íîâîå âëîæåíèå: %s" + +# fuzzy +#: lib/Query.php:124 lib/Block/myqueries.php:27 lib/Block/myqueries.php:28 +msgid "New Query" +msgstr "Íîâûé" + +#: ticket/queue.php:37 +msgid "New Queue" +msgstr "Íîâàÿ Òåìà" + +#: ticket/people.php:75 +msgid "New State" +msgstr "Íîâîå ñîñòîÿíèå" + +#: ticket/create.php:27 lib/Block/summary.php:28 +msgid "New Ticket" +msgstr "Äîáàâèòü" + +#: ticket/type.php:34 +msgid "New Type" +msgstr "" + +#: templates/prevnext.inc:16 +#, fuzzy +msgid "Next>" +msgstr "Äàëåå" + +#: ticket/delete.php:37 lib/Admin.php:90 lib/Admin.php:217 lib/Admin.php:405 +#: lib/Admin.php:521 lib/Admin.php:609 lib/Admin.php:697 lib/Admin.php:785 +#: lib/Query.php:884 +msgid "No" +msgstr "Íåò" + +#: clearsearch.php:34 +msgid "No searches cleared." +msgstr "" + +#: reports.php:17 +#, fuzzy +msgid "No stats available." +msgstr "Íåò äîñòóïíûõ íàñòðîåê." + +#: lib/Driver.php:319 +#, fuzzy, php-format +msgid "No such backend \"%s\" found" +msgstr "Àäðåñàò óâåäîìëåíèÿ %s íå íàéäåí." + +#: lib/Whups.php:504 +msgid "No tickets matched your search criteria." +msgstr "Íå íàéäåíî Çàïðîñîâ â ñîîòâåòñòâèè ñ óñëîâèÿìè ïîèñêà" + +#: lib/Block/summary.php:75 +msgid "No tickets to display" +msgstr "Íåò çàìå÷àíèé äëÿ îòîáðàæåíèÿ" + +#: lib/Reports.php:88 +#, fuzzy +msgid "None" +msgstr "Òåëåôîí" + +#: templates/queryrenderer.inc:92 lib/Query.php:520 +#, fuzzy +msgid "Not" +msgstr "Íåò" + +#: query.php:77 +#, fuzzy +msgid "Not yet implemented." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Íîâîå ñîîáùåíèå" + +#: config/prefs.php.dist:17 +msgid "Notification Options" +msgstr "Íàñòðîéêè îïîâåùåíèÿ" + +#: config/prefs.php.dist:109 +msgid "Only notify me of ticket changes from other users" +msgstr "Îïîâåùàòü ìåíÿ òîëüêî ïðè èçìåíåíèè çàïðîñà äðóãèìè ïîëüçîâàòåëÿìè" + +#: lib/Reports.php:11 +msgid "Open Tickets by Owner" +msgstr "Îòóðûòûå çàïðîñû ïî Îòâåòñòâåííûì" + +#: lib/Reports.php:9 +msgid "Open Tickets by Priority" +msgstr "Îòêðûòûå çàïðîñû ïî Ïðèîðèòåòó" + +#: lib/Reports.php:6 +msgid "Open Tickets by Queue" +msgstr "Îòêðûòûå çàïðîñû ïî Òåìå" + +#: lib/Reports.php:10 +msgid "Open Tickets by Requester" +msgstr "Îòêðûòûå çàïðîñû ïî Çàïðîñèâøåìó" + +#: lib/Reports.php:7 +msgid "Open Tickets by State" +msgstr "Îòêðûòûå çàïðîñû ïî Ñîñòîÿíèþ" + +#: lib/Reports.php:8 +msgid "Open Tickets by Type" +msgstr "Îòêðûòûå çàïðîñû ïî Òèïó" + +#: templates/queryrenderer.inc:91 lib/Query.php:519 +msgid "Or" +msgstr "" + +# fuzzy +#: config/prefs.php.dist:9 config/prefs.php.dist:16 +msgid "Other Options" +msgstr "Íàñòðîéêè ïîëüçîâàòåëÿ" + +#: templates/queryrenderer.inc:97 ticket/people.php:60 ticket/people.php:72 +#: lib/Create.php:167 lib/Create.php:179 lib/Whups.php:471 lib/Ticket.php:474 +#: lib/Ticket.php:509 lib/Ticket.php:510 lib/Ticket.php:512 lib/Ticket.php:596 +msgid "Owners" +msgstr "Âëàäåëåö" + +#: lib/Whups.php:196 +#, fuzzy +msgid "People" +msgstr "Ñöåíàðèé" + +#: lib/Whups.php:641 +#, fuzzy, php-format +msgid "Permanently delete %s?" +msgstr "Íåâîçìîæíî ñîåäèíèòüñÿ ñ SQL ñåðâåðîì." + +#: ticket/update.php:22 ticket/people.php:21 ticket/type.php:17 +#: ticket/delete.php:17 ticket/queue.php:17 ticket/deleteAttachment.php:17 +#, fuzzy +msgid "Permission Denied" +msgstr "Íàñòðîéêè ïîëüçîâàòåëÿ" + +#: ticket/update.php:83 ticket/delete.php:44 +#, fuzzy +msgid "Permission Denied." +msgstr "Ñîîáùåíèå" + +#: runquery.php:35 query.php:29 lib/Query.php:894 +#, fuzzy, php-format +msgid "Permission denied." +msgstr "Íàñòðîéêè ïîëüçîâàòåëÿ" + +#: lib/Admin.php:360 lib/Admin.php:402 +msgid "Priorities for this Type" +msgstr "Ïðèîðèòåòû äëÿ ýòîãî òèïà:" + +#: templates/queryrenderer.inc:138 ticket/update.php:52 ticket/type.php:69 +#: ticket/queue.php:116 lib/Create.php:122 lib/Whups.php:468 +#: lib/Ticket.php:466 lib/Ticket.php:594 lib/Query.php:699 +#: config/prefs.php.dist:32 +msgid "Priority" +msgstr "Ïðèîðèòåò" + +#: templates/comment.inc:99 +#, php-format +msgid "Priority ⇒ %s" +msgstr "Ïðèîðèòåò ⇒ %s" + +# fuzzy +#: lib/Admin.php:537 lib/Admin.php:583 lib/Admin.php:606 +msgid "Priority Description" +msgstr "Îïèñàíèå" + +# fuzzy +# fuzzy +#: lib/Admin.php:536 lib/Admin.php:561 lib/Admin.php:580 lib/Admin.php:603 +msgid "Priority Name" +msgstr "Ïðèîðèòåò" + +#: query.php:134 +msgid "Property Criteria" +msgstr "Ñâîéñòâà" + +#: query.php:152 +msgid "Query Builder" +msgstr "" + +#: lib/Query.php:95 +#, fuzzy +msgid "Query Parameters" +msgstr "Èìÿ" + +#: runquery.php:77 +#, fuzzy +msgid "Query Results" +msgstr "Ñáðîñèòü" + +#: search.php:48 templates/queryrenderer.inc:107 lib/Whups.php:469 +#: lib/Ticket.php:463 lib/Ticket.php:575 lib/Ticket.php:579 lib/Query.php:682 +#: config/prefs.php.dist:33 +msgid "Queue" +msgstr "Òåìà" + +#: templates/comment.inc:107 +#, php-format +msgid "Queue ⇒ %s" +msgstr "Òåìà ⇒ %s" + +#: lib/Admin.php:106 lib/Admin.php:155 lib/Admin.php:214 +msgid "Queue Description" +msgstr "Îïèñàíèå Òåìû" + +#: lib/Admin.php:105 lib/Admin.php:134 lib/Admin.php:152 lib/Admin.php:211 +#: lib/Create.php:33 lib/Create.php:41 +msgid "Queue Name" +msgstr "Òåìà" + +#: ticket/queue.php:85 lib/Create.php:80 lib/Ticket.php:584 lib/Ticket.php:588 +msgid "Queue Version" +msgstr "Âåðñèÿ" + +#: admin.php:35 templates/admin/mtmatrix.inc:6 +msgid "Queue/Type Matrix" +msgstr "Òåìà/Òèï" + +#: search.php:139 +#, php-format +msgid "Queue: %s, Ticket: %s, Category: %s, Type: %s, Summary: %s" +msgstr "" + +#: lib/api.php:156 lib/api.php:700 +msgid "Queues" +msgstr "Òåìû" + +#: lib/Ticket.php:539 +#, php-format +msgid "RESOLVED: %s" +msgstr "ÂÛÏÎËÍÅÍÎ: %s" + +#: lib/Admin.php:786 +msgid "Really delete this attribute? This may cause data problems!" +msgstr "Äåéñòâèòåëüíî óäàëèòü ýòîò àòòðèáóò? Âîçìîæíû ïðîáëåìû ñ äàííûìè!" + +#: lib/Admin.php:610 +msgid "Really delete this priority? This may cause data problems!" +msgstr "Äåéñòâèòåëüíî óäàëèòü ýòîò ïðèîðèòåò? Âîçìîæíû ïðîáëåìû ñ äàííûìè!" + +#: lib/Query.php:885 +msgid "Really delete this query? This operation is not undoable." +msgstr "Äåéñòâèòåëüíî óäàëèòü ýòîò çàïðîñ? Âîçìîæíû ïðîáëåìû ñ äàííûìè!" + +#: lib/Admin.php:218 +msgid "Really delete this queue? This may cause data problems!" +msgstr "Äåéñòâèòåëüíî óäàëèòü ýòó òåìó? Âîçìîæíû ïðîáëåìû ñ äàííûìè!" + +#: lib/Admin.php:522 +msgid "Really delete this state? This may cause data problems!" +msgstr "Äåéñòâèòåëüíî óäàëèòü ýòî ñîñòîÿíèå? Âîçìîæíû ïðîáëåìû ñ äàííûìè!" + +#: lib/Admin.php:91 +msgid "Really delete this subject? This may cause data problems!" +msgstr "Äåéñòâèòåëüíî óäàëèòü ýòî çàãëàâèå? Âîçìîæíû ïðîáëåìû ñ äàííûìè!" + +#: ticket/delete.php:38 +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "" + +#: lib/Admin.php:406 +msgid "Really delete this type? This may cause data problems!" +msgstr "" + +#: lib/Admin.php:698 +msgid "Really delete this version? This may cause data problems!" +msgstr "" + +#: search.php:169 +msgid "Refine Search" +msgstr "Ïîèñê" + +#: admin.php:922 +msgid "Reminders were sent." +msgstr "" + +# fuzzy +#: lib/Admin.php:267 +msgid "Remove User" +msgstr "Óäàëèòü" + +#: ticket/watch.php:48 +#, fuzzy +msgid "Remove Watcher" +msgstr "Óäàëèòü ïàðó" + +#: reports.php:22 +#, fuzzy +msgid "Reports" +msgstr "Èìïîðò" + +#: templates/queryrenderer.inc:99 lib/Ticket.php:599 +msgid "Requester" +msgstr "Äîáàâèë" + +#: lib/Whups.php:474 lib/Ticket.php:602 lib/Driver.php:143 +#: config/prefs.php.dist:37 +msgid "Resolved" +msgstr "Âûïîëíåíî" + +#: lib/Admin.php:269 +msgid "Responsible Users" +msgstr "" + +#: ticket/update.php:76 +msgid "Restrict Comment to:" +msgstr "" + +#: lib/Admin.php:170 +msgid "Restrict ticket subjects to a specified list?" +msgstr "Îãðàíè÷èòü çàãëàâèÿ çàïðîñîâ ñïèñêîì?" + +# fuzzy, php-format +#: templates/prevnext.inc:25 +#, fuzzy +msgid "Return to Search Results" +msgstr "Ðåçóëüòàò ïîèñêà" + +# #-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-# +# fuzzy +# fuzzy +#: templates/searchresults.inc:96 +msgid "Save" +msgstr "Ñîõðàíèòü" + +#: lib/Query.php:142 lib/Query.php:817 +msgid "Save Query" +msgstr "Çàïèñàòü" + +#: templates/searchresults.inc:90 +msgid "Save these results as: " +msgstr "Ñîõðàíèòü ðåçóëüòàò êàê:" + +#: lib/Query.php:774 +#, php-format +msgid "Search %s Attribute" +msgstr "" + +# fuzzy, php-format +# fuzzy +#: lib/Query.php:777 +msgid "Search Attribute" +msgstr "Ïîèñê àòòðèáóòà:" + +# fuzzy +#: lib/Query.php:543 lib/Query.php:630 +msgid "Search Comments" +msgstr "Èñêàòü â êîììåíòàðèÿõ" + +# fuzzy, php-format +# fuzzy +#: lib/Query.php:541 +msgid "Search Owners" +msgstr "Èñêàòü â Îòâåòñòâåííûõ" + +# fuzzy +#: lib/Query.php:542 +msgid "Search Requester" +msgstr "Èñêàòü â Çàïðîñèâøèõ" + +# fuzzy, php-format +#: search.php:164 +msgid "Search Results" +msgstr "Ðåçóëüòàò ïîèñêà" + +#: templates/prevnext.inc:21 +#, php-format +msgid "Search Results: %s of %s" +msgstr "Ðåçóëüòàò ïîèñêà: %s èç %s" + +# fuzzy +#: lib/Query.php:629 +msgid "Search Summary" +msgstr "Êðàòêîå îáîáùåíèå:" + +# fuzzy, php-format +#: search.php:64 search.php:180 config/prefs.php.dist:59 +msgid "Search Tickets" +msgstr "Ïîèñê" + +#: clearsearch.php:27 +msgid "Search cleared." +msgstr "" + +#: clearsearch.php:30 +msgid "Searches cleared." +msgstr "" + +# fuzzy +#: config/prefs.php.dist:61 +msgid "Select the view to display after login:" +msgstr "Ðåæèì ðàáîòû ïîñëå âõîäà â Çàïðîñû:" + +#: admin.php:36 lib/Admin.php:797 +msgid "Send Reminders" +msgstr "Îòïðàâëåíèå íàïîìèíàíèé" + +#: lib/Admin.php:808 +msgid "Send only for this list of ticket ids" +msgstr "Îòïðàâëÿòü òîëüêî äëÿ óêàçàííûõ çàïðîñîâ:" + +#: lib/Whups.php:200 +msgid "Set Queue" +msgstr "Çàäàòü Òåìó" + +#: ticket/queue.php:194 ticket/queue.php:203 ticket/queue.php:215 +msgid "Set Queue - Step 1" +msgstr "" + +#: ticket/queue.php:195 ticket/queue.php:204 +msgid "Set Queue - Step 2" +msgstr "" + +#: ticket/queue.php:205 +msgid "Set Queue - Step 3" +msgstr "" + +#: ticket/queue.php:181 +#, php-format +msgid "Set Queue for %s" +msgstr "" + +#: lib/Whups.php:201 +msgid "Set Type" +msgstr "" + +#: ticket/type.php:137 ticket/type.php:146 +msgid "Set Type - Step 1" +msgstr "" + +#: ticket/type.php:138 +msgid "Set Type - Step 2" +msgstr "" + +#: ticket/type.php:124 +#, php-format +msgid "Set Type for %s" +msgstr "" + +#: config/prefs.php.dist:100 +msgid "Show \"(X Days Ago)\" in Date field of search results?" +msgstr "Ïîêàçûâàòü (õ Äíåé íàçàä) â Äàòå ïðè ïîèñêå?" + +#: config/prefs.php.dist:127 +msgid "Show comments in chronological order, or most recent first?" +msgstr "Ïîêàçûâàòü êîììåíòàðèè â õðîíîëîãè÷åñêîì ïîðÿäêå, èëè ñíà÷àëà ñâåæèå?" + +#: config/prefs.php.dist:78 +msgid "Show ticket IDs in the summary view?" +msgstr "Ïîêàçûâàòü ID Çàïðîñà â Îáùåì îáçîðå?" + +#: config/prefs.php.dist:70 +msgid "Show tickets you have requested in the summary view?" +msgstr "Ïîêàçûâàòü Çàïðîñû îò Âàñ â Îáùåì îáçîðå?" + +#: config/templates.php.dist:16 +msgid "Simple HTML Report" +msgstr "Ïðîñòîé HTML îò÷åò" + +#: templates/searchresults.inc:115 templates/searchresults.inc:118 +#, fuzzy, php-format +msgid "Sort by %s" +msgstr "Èìïîðò" + +#: templates/queryrenderer.inc:130 ticket/update.php:49 ticket/type.php:68 +#: ticket/queue.php:115 lib/Whups.php:466 lib/Ticket.php:465 +#: lib/Ticket.php:593 lib/Query.php:694 config/prefs.php.dist:30 +msgid "State" +msgstr "Ñîñòîÿíèå" + +#: templates/comment.inc:95 +#, php-format +msgid "State ⇒ %s" +msgstr "Ñîñòîÿíèå ⇒ %s" + +# fuzzy +#: lib/Admin.php:446 lib/Admin.php:495 +msgid "State Category" +msgstr "Êàòåãîðèÿ" + +# fuzzy +#: lib/Admin.php:445 lib/Admin.php:492 lib/Admin.php:518 +msgid "State Description" +msgstr "Îïèñàíèå" + +# fuzzy +#: lib/Admin.php:444 lib/Admin.php:470 lib/Admin.php:489 lib/Admin.php:515 +msgid "State Name" +msgstr "Ñîñòîÿíèå" + +#: lib/Admin.php:350 lib/Admin.php:398 +msgid "States for this Type" +msgstr "Ñîñòîÿíèÿ äëÿ ýòîãî òèïà:" + +#: lib/Create.php:123 config/prefs.php.dist:29 +msgid "Subject" +msgstr "Çàãëàâèå" + +#: lib/Admin.php:17 lib/Admin.php:40 lib/Admin.php:65 lib/Admin.php:87 +msgid "Subject Name" +msgstr "Çàãëàâèå" + +#: lib/Admin.php:174 +msgid "Subjects associated with this Queue" +msgstr "Çàãëàâèÿ, äîïóñòèìûå â äàííîé Òåìå" + +# fuzzy +#: ticket/create.php:102 +msgid "Submit" +msgstr " ÎÊ " + +#: admin.php:161 +#, fuzzy, php-format +msgid "Successfully Cloned %s to %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: ticket/type.php:115 +msgid "Successfully changed ticket type." +msgstr "" + +#: templates/queryrenderer.inc:102 ticket/update.php:46 ticket/delete.php:34 +#: lib/Whups.php:465 lib/Ticket.php:473 lib/Ticket.php:488 lib/Ticket.php:489 +#: lib/Ticket.php:491 lib/Ticket.php:573 +msgid "Summary" +msgstr "Ñâîäêà" + +#: templates/comment.inc:49 +#, php-format +msgid "Summary ⇒ %s" +msgstr "Ñâîäêà ⇒ %s" + +#: search.php:50 +msgid "Summary like" +msgstr "Ñâîäêà ñîäåðæèò òåêñò" + +#: templates/comment.inc:71 +#, php-format +msgid "Taken from %s" +msgstr "" + +# fuzzy +#: lib/Query.php:627 +msgid "Text" +msgstr "Òåêñò" + +#: query.php:138 +msgid "Text Criteria" +msgstr "Òåêñò" + +#: view.php:44 lib/Ticket.php:339 lib/Ticket.php:377 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "" + +#: admin.php:811 +#, php-format +msgid "The attribute \"%s\" has been added to %s." +msgstr "" + +#: admin.php:893 +msgid "The attribute has been deleted." +msgstr "" + +#: admin.php:864 +msgid "The attribute has been modified." +msgstr "" + +#: admin.php:898 +#, fuzzy +msgid "The attribute was not deleted." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Íîâîå ñîîáùåíèå" + +#: admin.php:449 +#, php-format +msgid "The priority \"%s\" has been added to %s." +msgstr "" + +#: admin.php:530 +msgid "The priority has been deleted." +msgstr "" + +#: admin.php:502 +msgid "The priority has been modified." +msgstr "" + +#: admin.php:535 +msgid "The priority was not deleted." +msgstr "" + +#: lib/Query.php:898 +#, php-format +msgid "The query \"%s\" couldn't be deleted: %s" +msgstr "" + +#: lib/Query.php:900 +#, php-format +msgid "The query \"%s\" has been deleted." +msgstr "" + +#: lib/Query.php:865 +#, php-format +msgid "The query couldn't be loaded:" +msgstr "" + +#: admin.php:240 +#, php-format +msgid "The queue \"%s\" has been created." +msgstr "" + +#: admin.php:318 +msgid "The queue has been deleted." +msgstr "" + +#: admin.php:290 +msgid "The queue has been modified." +msgstr "" + +#: admin.php:323 +msgid "The queue was not deleted." +msgstr "" + +#: lib/MIME/Viewer/zip.php:60 +msgid "The requested file does not exist in the Zip attachment." +msgstr "" + +#: data.php:24 +#, fuzzy +msgid "The requested template does not exist." +msgstr "Àäðåñàò óâåäîìëåíèÿ %s íå íàéäåí." + +#: admin.php:338 +#, php-format +msgid "The state \"%s\" has been added to %s." +msgstr "" + +#: admin.php:421 +msgid "The state has been deleted." +msgstr "" + +#: admin.php:392 +msgid "The state has been modified." +msgstr "" + +#: admin.php:426 +#, fuzzy +msgid "The state was not deleted." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Íîâîå ñîîáùåíèå" + +#: admin.php:625 +#, php-format +msgid "The subject \"%s\" has been added." +msgstr "Çàãëàâèå %s áûëî äîáàâëåíî" + +#: admin.php:681 +msgid "The subject has been deleted." +msgstr "Çàãëàâèå áûëî óäàëåíî" + +#: admin.php:662 +msgid "The subject has been modified." +msgstr "Çàãëàâèå èçìåíåíî" + +#: admin.php:686 +#, fuzzy +msgid "The subject was not deleted." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Íîâîå ñîîáùåíèå" + +#: ticket/delete.php:75 +#, fuzzy +msgid "The ticket was not deleted." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Íîâîå ñîîáùåíèå" + +#: admin.php:179 +#, php-format +msgid "The type \"%s\" has been modified." +msgstr "" + +#: admin.php:221 +msgid "The type has been deleted." +msgstr "" + +#: admin.php:226 +#, fuzzy +msgid "The type was not deleted." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Íîâîå ñîîáùåíèå" + +#: admin.php:701 +#, php-format +msgid "The version \"%s\" has been added to %s." +msgstr "" + +#: admin.php:783 +#, fuzzy +msgid "The version has been deleted." +msgstr "Âàøè íàñòðîéêè áûëè îáíîâëåíû." + +#: admin.php:755 +msgid "The version has been modified." +msgstr "" + +#: admin.php:788 +#, fuzzy +msgid "The version was not deleted." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Íîâîå ñîîáùåíèå" + +#: lib/Admin.php:733 +msgid "There are no attribute types to edit" +msgstr "Íåò àòòðèáóòîâ" + +#: lib/Query.php:777 +msgid "There are no attributes defined for the current type" +msgstr "Íåò àòòðèáóòîâ, îïðåäåëåííûõ äëÿ äàííîãî òèïà" + +# fuzzy +#: lib/Admin.php:557 +msgid "There are no priorities to edit" +msgstr "Íåò ïðèîðèòåòîâ" + +# fuzzy +#: lib/Admin.php:805 +msgid "There are no queues available." +msgstr "Íåò äîñòóïíûõ òåì." + +#: lib/Admin.php:131 +msgid "There are no queues to edit" +msgstr "Íåò òåì" + +#: lib/Create.php:41 +msgid "There are no queues which you can create tickets in." +msgstr "Íåò òåì" + +#: search.php:42 +msgid "There are no queues which you can search." +msgstr "Íåò òåì" + +#: lib/Admin.php:466 +msgid "There are no states to edit" +msgstr "Íåò ñîñòîÿíèé" + +#: lib/Admin.php:37 +msgid "There are no subjects to edit" +msgstr "Íåò çàãëàâèé" + +#: lib/Create.php:64 +msgid "" +"There are no ticket types associated with this queue; until there are, you " +"cannot create any tickets in this queue." +msgstr "Íåò òåì" + +#: lib/Admin.php:321 +#, fuzzy +msgid "There are no types to edit" +msgstr "Íåò äîñòóïíûõ íàñòðîåê." + +#: lib/Admin.php:283 +msgid "There are no users responsible for this queue." +msgstr "Íåò îòâåòñòâåííûõ çà äàííóþ Òåìó" + +#: ticket/people.php:71 lib/Create.php:178 +msgid "There are no users to which this ticket can be assigned." +msgstr "Íåò ïîëüçîâàòåëåé çà êåì ìîæíî çàêðåïèòü ýòî çàìå÷àíèå" + +#: lib/Admin.php:645 +msgid "There are no versions to edit" +msgstr "Íåò âåðñèé äëÿ ðåäàêòèðîâàíèÿ" + +#: graph.php:30 +msgid "There is no data for this graph." +msgstr "Íåò äàííûõ äëÿ ýòîãî ãðàôèêà" + +#: lib/Reports.php:161 +msgid "There is no data for this report." +msgstr "Íåò äàííûõ äëÿ ýòîãî îò÷åòà" + +#: admin.php:569 +#, fuzzy, php-format +msgid "There was an error adding \"%s\" to the responsible list for \"%s\": %s" +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:627 +#, fuzzy, php-format +msgid "There was an error adding the subject: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:814 +#, fuzzy, php-format +msgid "There was an error creating the attribute: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:451 +#, fuzzy, php-format +msgid "There was an error creating the priority: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:248 +#, fuzzy, php-format +msgid "There was an error creating the queue: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:340 +#, fuzzy, php-format +msgid "There was an error creating the state: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:703 +#, fuzzy, php-format +msgid "There was an error creating the version: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:895 +#, fuzzy, php-format +msgid "There was an error deleting the attribute: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:532 +#, fuzzy, php-format +msgid "There was an error deleting the priority: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:320 +#, fuzzy, php-format +msgid "There was an error deleting the queue: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:423 +#, fuzzy, php-format +msgid "There was an error deleting the state: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:683 +#, fuzzy, php-format +msgid "There was an error deleting the subject: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: ticket/delete.php:72 +#, fuzzy, php-format +msgid "There was an error deleting the ticket: %s" +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:223 +#, fuzzy, php-format +msgid "There was an error deleting the type: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:785 +#, fuzzy, php-format +msgid "There was an error deleting the version: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:871 +#, fuzzy, php-format +msgid "There was an error editing the attribute: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:507 +#, fuzzy, php-format +msgid "There was an error editing the priority: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:304 +#, fuzzy, php-format +msgid "There was an error editing the queue: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:397 +#, fuzzy, php-format +msgid "There was an error editing the state: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:667 +#, fuzzy, php-format +msgid "There was an error editing the subject: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:760 +#, fuzzy, php-format +msgid "There was an error editing the version: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: lib/Admin.php:243 +#, fuzzy, php-format +msgid "There was an error listing users: %s; %s" +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: mybugs.php:39 +#, fuzzy, php-format +msgid "There was an error listing your assigned tickets: %s" +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: mybugs.php:55 +#, fuzzy, php-format +msgid "There was an error listing your open requests: %s" +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:177 +#, fuzzy, php-format +msgid "There was an error modifying the type: %s." +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: search.php:158 +#, fuzzy, php-format +msgid "There was an error performing your search: %s" +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: admin.php:605 +#, fuzzy, php-format +msgid "" +"There was an error removing \"%s\" from the responsible list for \"%s\": %s" +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Ïðîáëåìà ïðè ïðîñìîòðå çàïðîøåííîãî ïèñüìà." + +#: data.php:27 +msgid "This is not a search results template." +msgstr "" + +#: lib/Admin.php:57 +#, fuzzy +msgid "This is not a valid subject." +msgstr "Ýòî çíà÷åíèå äîëæíî áûòü ÷èñëîì." + +#: ticket/queue.php:80 lib/Create.php:75 +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this queue, you will not " +"be able to create tickets." +msgstr "" + +#: lib/Ticket.php:485 +#, fuzzy +msgid "Ticket" +msgstr "Çàãîëîâîê" + +#: ticket/delete.php:68 +#, php-format +msgid "Ticket %d has been deleted." +msgstr "" + +#: lib/api.php:746 +#, fuzzy, php-format +msgid "Ticket %s - %s" +msgstr "Çàïðîñû" + +#: lib/Driver/sql.php:869 +#, fuzzy, php-format +msgid "Ticket %s was not found." +msgstr "Àäðåñàò óâåäîìëåíèÿ %s íå íàéäåí." + +#: search.php:49 +msgid "Ticket ID" +msgstr "ID çàìå÷àíèÿ" + +#: lib/Create.php:121 +msgid "Ticket State" +msgstr "Ñîñòîÿíèå" + +#: templates/reports/stats.inc:3 +msgid "Ticket Stats" +msgstr "Ñòàòèñòèêà ïî çàïðîñàì:" + +#: lib/Block/summary.php:3 +#, fuzzy +msgid "Ticket Summary" +msgstr "Ãëàâíàÿ" + +#: lib/Create.php:69 +msgid "Ticket Type" +msgstr "Òèï çàïðîñà" + +#: lib/Admin.php:158 +msgid "Ticket Types associated with this Queue" +msgstr "Òèïû çàïðîñîâ, äîïóñòèìûå ïî ýòîé Òåìå" + +#: lib/Ticket.php:481 +#, php-format +msgid "Ticket URL: %s\n" +msgstr "" + +#: ticket/update.php:137 +#, fuzzy +msgid "Ticket Updated" +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Áûñòðûé ñòàðò" + +#: lib/api.php:767 +msgid "Tickets" +msgstr "Çàïðîñû" + +#: lib/Block/summary.php:52 +msgid "Tickets assigned to you" +msgstr "" + +#: search.php:52 +msgid "Tickets which are" +msgstr "Ñîñòîÿíèå" + +#: lib/Block/summary.php:69 +msgid "Tickets you requested" +msgstr "" + +#: templates/queryrenderer.inc:121 ticket/queue.php:88 lib/Whups.php:467 +#: lib/Ticket.php:467 lib/Ticket.php:592 lib/Query.php:674 +#: config/prefs.php.dist:31 +msgid "Type" +msgstr "Òèï" + +#: templates/comment.inc:103 +#, php-format +msgid "Type ⇒ %s" +msgstr "Òèï ⇒ %s" + +#: lib/Admin.php:301 lib/Admin.php:345 lib/Admin.php:394 +msgid "Type Description" +msgstr "Îïèñàíèå òèïà" + +#: lib/Admin.php:300 lib/Admin.php:324 lib/Admin.php:342 lib/Admin.php:391 +msgid "Type Name" +msgstr "Èìÿ òèïà" + +#: search.php:55 +msgid "Types" +msgstr "Òèï" + +#: lib/Ticket.php:597 +msgid "Unassigned" +msgstr "Íå íàçíà÷åí" + +#: lib/Admin.php:816 +msgid "Unassigned tickets" +msgstr "Íåíàçíà÷åííûå Çàïðîñû" + +#: lib/Driver.php:140 +msgid "Unconfirmed" +msgstr "Íåïîäòâåðæäåíî" + +#: templates/queryrenderer.inc:148 templates/queryrenderer.inc:188 +#, php-format +msgid "Unknown node type %s" +msgstr "" + +#: templates/comment.inc:84 lib/Whups.php:191 lib/api.php:714 +#, fuzzy +msgid "Update" +msgstr "Îáíîâèòü" + +#: ticket/update.php:153 +#, fuzzy, php-format +msgid "Update %s" +msgstr "Ñîõðàíèòü íàñòðîéêè" + +#: templates/admin/mtmatrix.inc:29 +msgid "Update Associations" +msgstr "Îáíîâèòü àññîöèàöèè" + +#: ticket/people.php:134 +#, fuzzy, php-format +msgid "Update People for %s" +msgstr "Ñîõðàíèòü íàñòðîéêè" + +#: lib/Ticket.php:472 lib/Ticket.php:486 +#, fuzzy +msgid "Updated By" +msgstr "" +"#-#-#-#-# ru_RU.po (Horde v2.1) #-#-#-#-#\n" +"#-#-#-#-# ru_RU.po (IMP v3.1) #-#-#-#-#\n" +"Áûñòðûé ñòàðò" + +# fuzzy +#: lib/Admin.php:242 lib/Admin.php:252 lib/Admin.php:255 +msgid "User" +msgstr "Ïîëüçîâàòåëü" + +# fuzzy +#: query.php:135 +msgid "User Criteria" +msgstr "Ïîëüçîâàòåëü" + +# fuzzy +#: lib/Query.php:539 +msgid "User ID" +msgstr "ID ïîëüçîâàòåëÿ" + +#: lib/Admin.php:184 +msgid "Users responsible for this Queue" +msgstr "Îòâåòñòâåííûå ïî äàííîé òåìå" + +#: lib/Admin.php:287 +msgid "Users responsible for this queue" +msgstr "Îòâåòñòâåííûå ïî äàííîé òåìå" + +# fuzzy +#: templates/queryrenderer.inc:115 lib/Whups.php:470 lib/Ticket.php:464 +#: lib/Query.php:686 config/prefs.php.dist:34 +msgid "Version" +msgstr "Âåðñèÿ" + +# fuzzy +#: lib/Admin.php:625 lib/Admin.php:671 lib/Admin.php:694 +msgid "Version Description" +msgstr "Îïèñàíèå âåðñèè" + +# fuzzy +#: lib/Admin.php:624 lib/Admin.php:649 lib/Admin.php:668 lib/Admin.php:691 +msgid "Version Name" +msgstr "Íàçâàíèå âåðñèè" + +#: templates/reports/graphs.inc:13 +msgid "View Graphs" +msgstr "Ïðîñìîòð ãðàôèêîâ:" + +#: ticket/people.php:91 ticket/type.php:46 ticket/comment.php:42 +#: ticket/queue.php:51 +msgid "Viewable only by members of" +msgstr "" + +# fuzzy +#: lib/Whups.php:194 +msgid "Watch" +msgstr "Îòñëåæèâàíèå" + +# fuzzy, php-format +# fuzzy, php-format +#: ticket/watch.php:76 +msgid "Watchers for %s" +msgstr "Îòñëåæèâàþùèå çàïðîñ %s" + +#: config/prefs.php.dist:87 +msgid "Weekday Day Month" +msgstr "Äåíü íåäåëè, Äåíü, Ìåñÿö" + +#: config/prefs.php.dist:88 +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "Äåíü íåäåëè, Äåíü, Ìåñÿö, ××:ÌÌ:ÑÑ" + +#: ticket/delete.php:37 lib/Admin.php:90 lib/Admin.php:217 lib/Admin.php:405 +#: lib/Admin.php:521 lib/Admin.php:609 lib/Admin.php:697 lib/Admin.php:785 +#: lib/Query.php:884 +msgid "Yes" +msgstr "Äà" + +#: view.php:40 +msgid "You are not allowed to view this ticket." +msgstr "" + +#: lib/Driver/sql.php:872 +#, php-format +msgid "You do not have permission to access this ticket (%s)." +msgstr "" + +# fuzzy +#: lib/Query.php:854 +#, fuzzy +msgid "You have no saved queries." +msgstr "Âû âûøëè èç ñèñòåìû." + +#: lib/Whups.php:498 +msgid "You must select at least one queue to send reminders for." +msgstr "" + +# fuzzy +#: ticket/comment.php:26 lib/Create.php:35 +msgid "Your Email Address" +msgstr "Âàø Email:" + +#: ticket/create.php:157 +#, php-format +msgid "" +"Your ticket ID is %s. An appropriate person has been notified of this " +"request." +msgstr "" +"ID Âàøåãî çàìå÷àíèÿ %s. Îòâåòñâåííûå ëèöà áóäóò èçâåùåíû î Âàøåì çàïðîñå." + +#: lib/Whups.php:563 +msgid "_Admin" +msgstr "" + +#: lib/Whups.php:552 +#, php-format +msgid "_My %s" +msgstr "Ìîè %s" + +#: lib/Whups.php:555 +msgid "_New Ticket" +msgstr "Äîáàâèòü" + +#: lib/Whups.php:557 +msgid "_Query Builder" +msgstr "Ïîñòðîèòü îò÷åò" + +#: lib/Whups.php:559 +msgid "_Reports" +msgstr "Ãðàôèêè" + +#: lib/Whups.php:554 +msgid "_Search" +msgstr "Ïîèñê" + +#: templates/queryrenderer.inc:168 +msgid "contains (case insensitive) substring" +msgstr "" + +#: templates/queryrenderer.inc:172 +msgid "contains (case sensitive) substring" +msgstr "" + +#: templates/queryrenderer.inc:176 +#, fuzzy +msgid "contains the word" +msgstr "Ïàðîëü" + +#: scripts/mail-filter.php:176 +#, php-format +msgid "error processing message: %s" +msgstr "" + +#: lib/api.php:755 +msgid "estimated time" +msgstr "" + +#: templates/queryrenderer.inc:164 +msgid "is" +msgstr "" + +#: templates/queryrenderer.inc:156 +msgid "is greater than" +msgstr "" + +#: templates/queryrenderer.inc:160 +msgid "is less than" +msgstr "" + +#: templates/queryrenderer.inc:180 +msgid "matches the pattern" +msgstr "" diff --git a/whups/po/sl_SI.po b/whups/po/sl_SI.po new file mode 100644 index 000000000..8463ec0be --- /dev/null +++ b/whups/po/sl_SI.po @@ -0,0 +1,2078 @@ +# Slovenian translations for Whups packaga +# Slovenski prevod Whups paketa +# Copyright 2006-2009 The Horde Project +# This file is distributed under the same license as the horde package. +# Automatically generated, 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: whups\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2006-07-25 11:30+0200\n" +"PO-Revision-Date: 2006-04-30 10:32+0100\n" +"Last-Translator: duck@obala.net\n" +"Language-Team: sl_SI \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin.php:603 +#, php-format +msgid "\"%s\" is no longer among those responsible for \"%s\"" +msgstr "\"%s\" ni več zadolžene za \"%s\"" + +#: templates/menu.inc:5 +msgid "#Id" +msgstr "#Id" + +#: lib/Driver.php:307 +#, php-format +msgid "%s (%s) wrote:" +msgstr "%s (%s) je napisal:" + +#: admin.php:567 +#, php-format +msgid "%s added to those responsible for \"%s\"" +msgstr "%s je bil dodan med zadolžene za \"%s\"" + +#: templates/reports/stats.inc:17 +#, php-format +msgid "%s days" +msgstr "%s dni" + +#: ticket/watch.php:58 +#, php-format +msgid "%s will be notified when this ticket is updated." +msgstr "%s bo opozoren ob spremembi te prijave." + +#: ticket/watch.php:70 +#, php-format +msgid "%s will no longer receive updates for this ticket." +msgstr "%s ne bo več dobilval opozoril ob spremembi te prijave." + +#: admin.php:81 +msgid "- Stage 1" +msgstr "- Korak 1" + +#: admin.php:86 +msgid "- Stage 2" +msgstr "- Korak 2" + +#: scripts/mail-filter.php:164 +msgid "--priority-name or --priority-id must specify a valid Priority." +msgstr "" + +#: scripts/mail-filter.php:158 +msgid "--queue-name or --queue-id must specify a valid Queue." +msgstr "" + +#: scripts/mail-filter.php:167 +msgid "--state-name or --state-id must specify a valid State." +msgstr "" + +#: scripts/mail-filter.php:161 +msgid "--type-name or --type-id must specify a valid Type." +msgstr "" + +#: templates/prevnext.inc:12 +msgid "<>" +msgstr "Zadnji>>" + +#: lib/Query.php:842 +msgid "Load Query" +msgstr "Prikliči poizvedbo" + +#: config/prefs.php.dist:97 +msgid "MM/DD/YY" +msgstr "MM/DD/LL" + +#: config/prefs.php.dist:98 +msgid "MM/DD/YY HH:MM:SS" +msgstr "MM/DD/LL UU:MM::SS" + +#: lib/Admin.php:419 +#, php-format +msgid "Make a clone of %s" +msgstr "Podvoji %s" + +#: lib/Query.php:770 +msgid "Match" +msgstr "Ustreza" + +#: lib/Query.php:540 lib/Query.php:628 lib/Query.php:771 +msgid "Match Operator" +msgstr "Operator primerjanja" + +#: lib/Query.php:59 +msgid "Match Pattern" +msgstr "Primerjaj z" + +#: lib/Query.php:58 +msgid "Match Word" +msgstr "Prejaj besedo" + +#: lib/Reports.php:20 +msgid "Maximum time a ticket is unresolved" +msgstr "Največ časa nereÅ¡enih prijav" + +#: lib/Reports.php:21 +msgid "Minimum time a ticket is unresolved" +msgstr "Najhitreje reÅ¡ena prijava" + +#: config/prefs.php.dist:128 +msgid "Most recent first" +msgstr "NajnovejÅ¡e na prvem mestu" + +#: ticket/queue.php:173 +#, fuzzy, php-format +msgid "Moved ticket %d to \"%s\"" +msgstr "Premaknjena %s v \"%s\"" + +#: mybugs.php:51 +#, php-format +msgid "My %s" +msgstr "Moje %s" + +#: mybugs_edit.php:30 +#, php-format +msgid "My %s :: Add Content" +msgstr "Moje %s :: Dodaj vsebino" + +#: search.php:192 lib/Block/myqueries.php:3 lib/Block/myqueries.php:26 +msgid "My Queries" +msgstr "Moje poizvedbe" + +#: search.php:187 lib/Block/mysearches.php:3 lib/Block/mysearches.php:24 +msgid "My QuickSearches" +msgstr "Moja hitra iskanja" + +#: lib/Block/myrequests.php:3 lib/Block/myrequests.php:24 +msgid "My Requests" +msgstr "Moji zahtevki" + +#: lib/Block/mytickets.php:3 lib/Block/mytickets.php:24 +#: config/prefs.php.dist:66 +msgid "My Tickets" +msgstr "Moje prijave" + +#: lib/Ticket.php:537 +#, fuzzy, php-format +msgid "NEW: %s" +msgstr "NOVA: %S" + +#: lib/Query.php:819 lib/Query.php:857 +msgid "Name" +msgstr "Ime" + +#: lib/Admin.php:424 +msgid "Name of the cloned copy" +msgstr "Ime podvojenega" + +#: lib/Query.php:124 +msgid "Ne_w Query" +msgstr "Nova poizvedba" + +#: lib/Driver.php:160 +msgid "New" +msgstr "Novo" + +#: lib/Ticket.php:475 lib/Ticket.php:517 +msgid "New Attachment" +msgstr "Nova priponka" + +#: templates/comment.inc:55 templates/comment.inc:57 +#, php-format +msgid "New Attachment: %s" +msgstr "Nova priponka: %s" + +#: lib/Block/myqueries.php:28 +msgid "New Query" +msgstr "Nova poizvedba" + +#: ticket/queue.php:37 +msgid "New Queue" +msgstr "Nova skupina" + +#: ticket/people.php:75 +msgid "New State" +msgstr "Nov status" + +#: ticket/create.php:27 lib/Block/summary.php:27 +msgid "New Ticket" +msgstr "Nova prijava" + +#: ticket/type.php:34 +msgid "New Type" +msgstr "Nov tip" + +#: templates/prevnext.inc:16 +msgid "Next>" +msgstr "Naslednji>" + +#: ticket/delete.php:37 lib/Admin.php:90 lib/Admin.php:217 lib/Admin.php:405 +#: lib/Admin.php:521 lib/Admin.php:609 lib/Admin.php:697 lib/Admin.php:785 +#: lib/Query.php:884 +msgid "No" +msgstr "Ne" + +#: lib/Block/myqueries.php:49 +msgid "No queries have been saved" +msgstr "Ni shranjenih poizvedb" + +#: clearsearch.php:34 +msgid "No searches cleared." +msgstr "Ni počiščenih iskanj" + +#: lib/Block/mysearches.php:43 +msgid "No searches have been saved" +msgstr "Ni shranjeih iskanj" + +#: reports.php:17 +msgid "No stats available." +msgstr "Ni razpoložljivih statusov" + +#: lib/Driver.php:348 +#, php-format +msgid "No such backend \"%s\" found" +msgstr "Ne najdem vira podatkov \"%s\"" + +#: lib/Block/mytickets.php:50 lib/Block/summary.php:87 +#: lib/Block/myrequests.php:51 +msgid "No summary" +msgstr "Ni povzetka" + +#: lib/Block/mytickets.php:60 lib/Block/myrequests.php:61 +msgid "No tickets are assigned to you." +msgstr "Ni vam dodljenih prijav" + +#: lib/Whups.php:529 +msgid "No tickets matched your search criteria." +msgstr "NI prijav ki bi ustrezale iskalnim pogojem." + +#: lib/Block/summary.php:74 +msgid "No tickets to display" +msgstr "Ni prijav za priz" + +#: lib/Reports.php:88 +msgid "None" +msgstr "Nič" + +#: templates/queryrenderer.inc:92 lib/Query.php:520 +msgid "Not" +msgstr "Ne" + +#: query.php:77 +msgid "Not yet implemented." +msgstr "Ni podprto" + +#: config/prefs.php.dist:17 +msgid "Notification Options" +msgstr "Nastavitve javljanja" + +#: config/prefs.php.dist:108 +msgid "Only notify me of ticket changes from other users" +msgstr "Javi mi samo če je prijava spremenjena od drugega uporabnika" + +#: lib/Reports.php:11 +msgid "Open Tickets by Owner" +msgstr "Odprte prijeva po uporabnika" + +#: lib/Reports.php:9 +msgid "Open Tickets by Priority" +msgstr "Odprte prijave po prioriteti" + +#: lib/Reports.php:6 +msgid "Open Tickets by Queue" +msgstr "Odprte prijave po skupini" + +#: lib/Reports.php:10 +msgid "Open Tickets by Requester" +msgstr "Odprte prijave po prijavitelju" + +#: lib/Reports.php:7 +msgid "Open Tickets by State" +msgstr "Odprte prijave statusu" + +#: lib/Reports.php:8 +msgid "Open Tickets by Type" +msgstr "Odprte prijave tipu" + +#: templates/queryrenderer.inc:91 lib/Query.php:519 +msgid "Or" +msgstr "Ali" + +#: config/prefs.php.dist:9 config/prefs.php.dist:16 +msgid "Other Options" +msgstr "Ostale nastavitve" + +#: templates/queryrenderer.inc:97 ticket/people.php:60 ticket/people.php:72 +#: lib/Whups.php:496 lib/Ticket.php:474 lib/Ticket.php:509 lib/Ticket.php:510 +#: lib/Ticket.php:512 lib/Ticket.php:596 lib/Forms/CreateTicket.php:187 +#: lib/Forms/CreateTicket.php:199 +msgid "Owners" +msgstr "Zadolženi" + +#: lib/Whups.php:668 +#, php-format +msgid "Permanently delete %s?" +msgstr "Dokončno izbriÅ¡em %s?" + +#: ticket/update.php:22 ticket/people.php:21 ticket/type.php:17 +#: ticket/delete.php:17 ticket/queue.php:17 ticket/deleteAttachment.php:17 +msgid "Permission Denied" +msgstr "Dostop zavrnjen" + +#: ticket/update.php:83 ticket/delete.php:44 +msgid "Permission Denied." +msgstr "Dostop zavrnjen." + +#: runquery.php:35 query.php:29 lib/Query.php:894 +#, php-format +msgid "Permission denied." +msgstr "Dostop zavrnjen." + +#: lib/Admin.php:360 lib/Admin.php:402 +msgid "Priorities for this Type" +msgstr "Prioritete za tip" + +#: templates/queryrenderer.inc:138 ticket/update.php:52 ticket/type.php:69 +#: ticket/queue.php:116 lib/Whups.php:493 lib/Ticket.php:466 +#: lib/Ticket.php:594 lib/Query.php:699 lib/Forms/CreateTicket.php:126 +#: config/prefs.php.dist:40 +msgid "Priority" +msgstr "Prioriteta" + +#: templates/comment.inc:99 +#, php-format +msgid "Priority ⇒ %s" +msgstr "Priorteta ⇒ %s" + +#: lib/Admin.php:537 lib/Admin.php:583 lib/Admin.php:606 +msgid "Priority Description" +msgstr "Opis prioritete" + +#: lib/Admin.php:536 lib/Admin.php:561 lib/Admin.php:580 lib/Admin.php:603 +msgid "Priority Name" +msgstr "Ime prioritete" + +#: query.php:153 +msgid "Query Builder" +msgstr "Tvorec poizvedb" + +#: lib/Query.php:95 +msgid "Query Parameters" +msgstr "Lastnosti poizvedve" + +#: runquery.php:77 +msgid "Query Results" +msgstr "Rezultati poizvedbe" + +#: search.php:48 templates/queryrenderer.inc:107 lib/Whups.php:494 +#: lib/Ticket.php:463 lib/Ticket.php:575 lib/Ticket.php:579 lib/Query.php:682 +#: config/prefs.php.dist:41 +msgid "Queue" +msgstr "Skupina" + +#: templates/comment.inc:107 +#, php-format +msgid "Queue ⇒ %s" +msgstr "Skupina ⇒ %s" + +#: lib/Admin.php:106 lib/Admin.php:155 lib/Admin.php:214 +msgid "Queue Description" +msgstr "Odpis skupine" + +#: lib/Admin.php:105 lib/Admin.php:134 lib/Admin.php:152 lib/Admin.php:211 +#: lib/Forms/CreateTicket.php:27 lib/Forms/CreateTicket.php:37 +msgid "Queue Name" +msgstr "Ime skupine" + +#: ticket/queue.php:85 lib/Ticket.php:584 lib/Ticket.php:588 +#: lib/Forms/CreateTicket.php:77 +msgid "Queue Version" +msgstr "Verzije skupine" + +#: admin.php:35 +msgid "Queue/Type Matri_x" +msgstr "Matrica Skupin/Tipov" + +#: templates/admin/mtmatrix.inc:6 +msgid "Queue/Type Matrix" +msgstr "Matrica Skupin/Tipov" + +#: search.php:139 +#, php-format +msgid "Queue: %s, Ticket: %s, Category: %s, Type: %s, Summary: %s" +msgstr "Skupina: %s, Prijava: %s, Kategorija: %s, Tip: %s, Povzetek: %s" + +#: lib/api.php:156 lib/api.php:700 +msgid "Queues" +msgstr "Skupine" + +#: lib/Ticket.php:539 +#, fuzzy, php-format +msgid "RESOLVED: %s" +msgstr "REÅ ENA: %S" + +#: lib/Admin.php:786 +msgid "Really delete this attribute? This may cause data problems!" +msgstr "" +"Resnično želite izbrisati to lastnost? Lahko povzroči probleme v podatkih." + +#: lib/Admin.php:610 +msgid "Really delete this priority? This may cause data problems!" +msgstr "" +"Resnično želite izbrisati to prioriteto? Lahko povzroči probleme v podatkih." + +#: lib/Query.php:885 +msgid "Really delete this query? This operation is not undoable." +msgstr "" +"Resnično želite izbrisati to poizvedbo? Lahko povzroči probleme v podatkih." + +#: lib/Admin.php:218 +msgid "Really delete this queue? This may cause data problems!" +msgstr "" +"Resnično želite izbrisati to skupino? Lahko povzroči probleme v podatkih." + +#: lib/Admin.php:522 +msgid "Really delete this state? This may cause data problems!" +msgstr "" +"Resnično želite izbrisati ta status? Lahko povzroči probleme v podatkih." + +#: lib/Admin.php:91 +msgid "Really delete this subject? This may cause data problems!" +msgstr "" +"Resnično želite izbrisati ta postavko? Lahko povzroči probleme v podatkih." + +#: ticket/delete.php:38 +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "" +"Resnično želite izrisati to prijavo? Podatki bodo v celoti odstranjenih za " +"vedno." + +#: lib/Admin.php:406 +msgid "Really delete this type? This may cause data problems!" +msgstr "Resnično želite izbrisati ta tip? Lahko povzroči probleme v podatkih." + +#: lib/Admin.php:698 +msgid "Really delete this version? This may cause data problems!" +msgstr "" +"Resnično želite izbrisati to verzijo? Lahko povzroči probleme v podatkih." + +#: search.php:169 +msgid "Refine Search" +msgstr "Bolj točno iskanje" + +#: admin.php:922 +msgid "Reminders were sent." +msgstr "Opomniki so bili poslani." + +#: lib/Admin.php:267 +msgid "Remove User" +msgstr "Odstrani uproabnika" + +#: ticket/watch.php:48 +msgid "Remove Watcher" +msgstr "Odstrani sleditelja" + +#: reports.php:22 +msgid "Reports" +msgstr "Poročila" + +#: templates/queryrenderer.inc:99 lib/Ticket.php:599 +msgid "Requester" +msgstr "Prijavitelj" + +#: lib/Whups.php:499 lib/Ticket.php:602 lib/Driver.php:162 +#: config/prefs.php.dist:45 +msgid "Resolved" +msgstr "ReÅ¡ena" + +#: lib/Admin.php:269 +msgid "Responsible Users" +msgstr "Odgovorni uporabniki" + +#: ticket/update.php:76 +msgid "Restrict Comment to:" +msgstr "Omeji komentarje na:" + +#: lib/Admin.php:170 +msgid "Restrict ticket subjects to a specified list?" +msgstr "Omeji prijave postavk na določen spisek?" + +#: templates/prevnext.inc:25 +msgid "Return to Search Results" +msgstr "Vrni se na rezultate iskanja" + +#: lib/Whups.php:219 +msgid "S_et Queue" +msgstr "Določi skupino" + +#: lib/Query.php:142 +msgid "Sa_ve Query" +msgstr "Shrani poizvedbo" + +#: templates/searchresults.inc:94 +msgid "Save" +msgstr "Shrani" + +#: lib/Query.php:817 +msgid "Save Query" +msgstr "Shrani poizvedbo" + +#: templates/searchresults.inc:88 +msgid "Save these results as: " +msgstr "Shrani rezultate kot: " + +#: lib/Query.php:774 +#, fuzzy, php-format +msgid "Search %s Attribute" +msgstr "Išči &s lastnost" + +#: lib/Query.php:777 +msgid "Search Attribute" +msgstr "Išči lastnost" + +#: lib/Query.php:543 lib/Query.php:630 +msgid "Search Comments" +msgstr "Išči komentar" + +#: lib/Query.php:541 +msgid "Search Owners" +msgstr "Išči lastnike" + +#: lib/Query.php:542 +msgid "Search Requester" +msgstr "Išči prijavitelja" + +#: search.php:164 +msgid "Search Results" +msgstr "Rezltati iskanja" + +#: templates/prevnext.inc:21 +#, php-format +msgid "Search Results: %s of %s" +msgstr "Rezltati iskanja: %s of %s" + +#: lib/Query.php:629 +msgid "Search Summary" +msgstr "Povzetek iskanja" + +#: search.php:64 search.php:180 config/prefs.php.dist:67 +msgid "Search Tickets" +msgstr "Išči prijave" + +#: clearsearch.php:27 +msgid "Search cleared." +msgstr "Iskanje počiščeno." + +#: clearsearch.php:30 +msgid "Searches cleared." +msgstr "Iskanja počiščena." + +#: config/prefs.php.dist:69 +msgid "Select the view to display after login:" +msgstr "Izberi prgled ob prijavi:" + +#: admin.php:36 +msgid "Sen_d Reminders" +msgstr "PoÅ¡lji opomnike" + +#: lib/Admin.php:797 +msgid "Send Reminders" +msgstr "PoÅ¡lji opomnike" + +#: lib/Admin.php:808 +msgid "Send only for this list of ticket ids" +msgstr "PoÅ¡lji opomnike samo za prijave Å¡tevilka (id):" + +#: ticket/queue.php:194 ticket/queue.php:203 ticket/queue.php:215 +msgid "Set Queue - Step 1" +msgstr "Nastavi skupino - Korak 1" + +#: ticket/queue.php:195 ticket/queue.php:204 +msgid "Set Queue - Step 2" +msgstr "Nastavi skupino - Korak 2" + +#: ticket/queue.php:205 +msgid "Set Queue - Step 3" +msgstr "Nastavi skupino - Korak 3" + +#: ticket/queue.php:181 +#, php-format +msgid "Set Queue for %s" +msgstr "Nastavi skupino za %s" + +#: ticket/type.php:137 ticket/type.php:146 +msgid "Set Type - Step 1" +msgstr "Nastavi tip - Korak 1" + +#: ticket/type.php:138 +msgid "Set Type - Step 2" +msgstr "Nastavi tip - Korak 2" + +#: ticket/type.php:124 +#, php-format +msgid "Set Type for %s" +msgstr "Nastavi tipe za %s" + +#: lib/Whups.php:220 +msgid "Set _Type" +msgstr "Nastavi tip" + +#: config/prefs.php.dist:126 +msgid "Show comments in chronological order, or most recent first?" +msgstr "" +"Prikaž komentarje v kronoloÅ¡kem vrsnem redu ali najnovejÅ¡i naj bodo prvi?" + +#: config/prefs.php.dist:86 +msgid "Show ticket IDs in the summary view?" +msgstr "Prikaži IDje prijav v pregledu povzetkov?" + +#: config/prefs.php.dist:78 +msgid "Show tickets you have requested in the summary view?" +msgstr "Prikaži svoje prijave v povzetku?" + +#: config/templates.php.dist:16 +msgid "Simple HTML Report" +msgstr "Enostaveno HTML poročilo" + +#: templates/searchresults.inc:113 templates/searchresults.inc:116 +#, php-format +msgid "Sort by %s" +msgstr "Razvrsti po %s" + +#: lib/Forms/CreateTicket.php:121 lib/Forms/CreateTicket.php:143 +#: lib/Forms/AddComment.php:20 lib/Forms/AddComment.php:51 +msgid "Spam protection" +msgstr "Spam Zaščita" + +#: templates/queryrenderer.inc:130 ticket/update.php:49 ticket/type.php:68 +#: ticket/queue.php:115 lib/Whups.php:491 lib/Ticket.php:465 +#: lib/Ticket.php:593 lib/Query.php:694 config/prefs.php.dist:38 +msgid "State" +msgstr "Status" + +#: templates/comment.inc:95 +#, php-format +msgid "State ⇒ %s" +msgstr "Status ⇒ %s" + +#: lib/Admin.php:446 lib/Admin.php:495 +msgid "State Category" +msgstr "Kategorija statusa" + +#: lib/Admin.php:445 lib/Admin.php:492 lib/Admin.php:518 +msgid "State Description" +msgstr "Opis statusa" + +#: lib/Admin.php:444 lib/Admin.php:470 lib/Admin.php:489 lib/Admin.php:515 +msgid "State Name" +msgstr "Ime statusa" + +#: lib/Admin.php:350 lib/Admin.php:398 +msgid "States for this Type" +msgstr "Statusi za tip" + +#: lib/Forms/CreateTicket.php:127 config/prefs.php.dist:37 +msgid "Subject" +msgstr "Naslov" + +#: lib/Admin.php:17 lib/Admin.php:40 lib/Admin.php:65 lib/Admin.php:87 +msgid "Subject Name" +msgstr "Ime postavke" + +#: lib/Admin.php:174 +msgid "Subjects associated with this Queue" +msgstr "Postavka povezana k tej skupini" + +#: ticket/create.php:102 +msgid "Submit" +msgstr "PoÅ¡lji" + +#: admin.php:161 +#, php-format +msgid "Successfully Cloned %s to %s." +msgstr "UspeÅ¡no podvojen %s v %s." + +#: ticket/type.php:115 +msgid "Successfully changed ticket type." +msgstr "UspeÅ¡no spremenjen tip prijave" + +#: templates/queryrenderer.inc:102 ticket/update.php:46 ticket/delete.php:34 +#: lib/Whups.php:490 lib/Ticket.php:473 lib/Ticket.php:488 lib/Ticket.php:489 +#: lib/Ticket.php:491 lib/Ticket.php:573 +msgid "Summary" +msgstr "Povzetek" + +#: templates/comment.inc:49 +#, php-format +msgid "Summary ⇒ %s" +msgstr "Povzetek ⇒ %s" + +#: search.php:50 +msgid "Summary like" +msgstr "Povzetek podoben" + +#: templates/comment.inc:71 +#, php-format +msgid "Taken from %s" +msgstr "Vzet iz %s" + +#: lib/Query.php:627 +msgid "Text" +msgstr "Besedilo" + +#: view.php:44 lib/Ticket.php:339 lib/Ticket.php:377 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "VFS vir podatkov mora biti nastavljen če želite uporabljati priponke" + +#: admin.php:811 +#, php-format +msgid "The attribute \"%s\" has been added to %s." +msgstr "Lastnost \"%s\" je bila dodana k %s" + +#: admin.php:893 +msgid "The attribute has been deleted." +msgstr "Lastnost je bila zbrisana." + +#: admin.php:864 +msgid "The attribute has been modified." +msgstr "Lastnost je bila spremenjena." + +#: admin.php:898 +msgid "The attribute was not deleted." +msgstr "Lastnost ni bila izbisana." + +#: admin.php:449 +#, php-format +msgid "The priority \"%s\" has been added to %s." +msgstr "Prioriteta \"%s\" je bila dodana k %s." + +#: admin.php:530 +msgid "The priority has been deleted." +msgstr "Prioriteta je bila izbrisana." + +#: admin.php:502 +msgid "The priority has been modified." +msgstr "Prioriteta je bila spremenjena." + +#: admin.php:535 +msgid "The priority was not deleted." +msgstr "Prioriteta ni bila izbrisana." + +#: lib/Query.php:898 +#, php-format +msgid "The query \"%s\" couldn't be deleted: %s" +msgstr "POizvedbe \"%s\" ni mogoče izbrisati: %s" + +#: lib/Query.php:900 +#, php-format +msgid "The query \"%s\" has been deleted." +msgstr "Poizvedba \"%s\" je bila izbrisana." + +#: lib/Query.php:865 +#, php-format +msgid "The query couldn't be loaded:" +msgstr "Poizvedba ne more biti naložena:" + +#: admin.php:240 +#, php-format +msgid "The queue \"%s\" has been created." +msgstr "Skupina \"%s\" je bila tvorjena." + +#: admin.php:318 +msgid "The queue has been deleted." +msgstr "Skupina \"%s\" je bila izbrisana." + +#: admin.php:290 +msgid "The queue has been modified." +msgstr "Skupina je bila spremenjena." + +#: admin.php:323 +msgid "The queue was not deleted." +msgstr "Skupina je ni bila izbrisana." + +#: lib/MIME/Viewer/zip.php:60 +msgid "The requested file does not exist in the Zip attachment." +msgstr "zahtevana priponka ne obstaja v ZIP datoteki." + +#: data.php:24 +msgid "The requested template does not exist." +msgstr "Zahtevana Å¡ablona ne obstaja." + +#: admin.php:338 +#, php-format +msgid "The state \"%s\" has been added to %s." +msgstr "Status \"%s\" je bil dodan k %s." + +#: admin.php:421 +msgid "The state has been deleted." +msgstr "Status je bil izbrisan." + +#: admin.php:392 +msgid "The state has been modified." +msgstr "Status je bil spremenjen." + +#: admin.php:426 +msgid "The state was not deleted." +msgstr "Status ni bil izbrisan." + +#: admin.php:625 +#, php-format +msgid "The subject \"%s\" has been added." +msgstr "Postavka \"%s\" je bila dodana." + +#: admin.php:681 +msgid "The subject has been deleted." +msgstr "Postavka je bila izbrisana." + +#: admin.php:662 +msgid "The subject has been modified." +msgstr "Postavka je bila spremenjena." + +#: admin.php:686 +msgid "The subject was not deleted." +msgstr "Postavka ni bila izbrisana." + +#: ticket/delete.php:75 +msgid "The ticket was not deleted." +msgstr "Prijava ni bila izbrisana." + +#: admin.php:179 +#, php-format +msgid "The type \"%s\" has been modified." +msgstr "Tip \"%s\" je bil spremenjen." + +#: admin.php:221 +msgid "The type has been deleted." +msgstr "Tip je bil izbrisan." + +#: admin.php:226 +msgid "The type was not deleted." +msgstr "Tip ni bil izbrisan." + +#: admin.php:701 +#, php-format +msgid "The version \"%s\" has been added to %s." +msgstr "Verzija \"%s\" has je vila dodana k %s." + +#: admin.php:783 +msgid "The version has been deleted." +msgstr "Verzija je bila izbrisana." + +#: admin.php:755 +msgid "The version has been modified." +msgstr "Verzija je bila spremenjena." + +#: admin.php:788 +msgid "The version was not deleted." +msgstr "Verzija ni bila izbrisana." + +#: lib/Admin.php:733 +msgid "There are no attribute types to edit" +msgstr "Ni lastnosti tipa za urejanje" + +#: lib/Query.php:777 +msgid "There are no attributes defined for the current type" +msgstr "Ni nastavljenih lastnosti za trenutni tip" + +#: lib/Admin.php:557 +msgid "There are no priorities to edit" +msgstr "Ni prioritet za urejanje" + +#: lib/Admin.php:805 +msgid "There are no queues available." +msgstr "Ni skupin na voljo." + +#: lib/Admin.php:131 +msgid "There are no queues to edit" +msgstr "Ni skupin za urejanja" + +#: lib/Forms/CreateTicket.php:27 +msgid "There are no queues which you can create tickets in." +msgstr "Ni skupin v katerih lahko tvorite prijave." + +#: search.php:42 +msgid "There are no queues which you can search." +msgstr "Ni skupin v katerih bi lahko iskali." + +#: lib/Admin.php:466 +msgid "There are no states to edit" +msgstr "Ni statusov za urejanje" + +#: lib/Admin.php:37 +msgid "There are no subjects to edit" +msgstr "Ni postavk za urejanje." + +#: lib/Forms/CreateTicket.php:61 +msgid "" +"There are no ticket types associated with this queue; until there are, you " +"cannot create any tickets in this queue." +msgstr "" +"Ni tipov povezanih s to skupino; dokler niso, ne morete tvoriti prijav v " +"njej." + +#: lib/Admin.php:321 +msgid "There are no types to edit" +msgstr "Ni tipov za urejanje" + +#: lib/Admin.php:283 +msgid "There are no users responsible for this queue." +msgstr "Ni odgovorih za to skupino." + +#: ticket/people.php:71 lib/Forms/CreateTicket.php:198 +msgid "There are no users to which this ticket can be assigned." +msgstr "Ni odgovornih katerim bi lahko dodelili prijavo." + +#: lib/Admin.php:645 +msgid "There are no versions to edit" +msgstr "Ni verzij za urejanje." + +#: graph.php:30 +msgid "There is no data for this graph." +msgstr "Ni podatkov za pripravo grafa." + +#: lib/Reports.php:161 +msgid "There is no data for this report." +msgstr "Ni podatkov za pripravo poročila.s" + +#: admin.php:569 +#, php-format +msgid "There was an error adding \"%s\" to the responsible list for \"%s\": %s" +msgstr "PriÅ¡lo je do napake pri dodajanju \"%s\" med odgovorne za \"%s\": %s" + +#: admin.php:627 +#, php-format +msgid "There was an error adding the subject: %s." +msgstr "PriÅ¡lo je do napake pri dodajanju postavke: %s." + +#: admin.php:814 +#, php-format +msgid "There was an error creating the attribute: %s." +msgstr "PriÅ¡lo je do napake pri dodajanju atributa: %s." + +#: admin.php:451 +#, php-format +msgid "There was an error creating the priority: %s." +msgstr "PriÅ¡lo je do napake pri tvorjenju prioritete: %s" + +#: admin.php:248 +#, php-format +msgid "There was an error creating the queue: %s." +msgstr "PriÅ¡lo je do napake pri tvorjenju skupine: %s." + +#: admin.php:340 +#, php-format +msgid "There was an error creating the state: %s." +msgstr "PriÅ¡lo je do napake pri tvorjenju statusa: %s" + +#: admin.php:703 +#, php-format +msgid "There was an error creating the version: %s." +msgstr "PriÅ¡lo je do napake pri tvorjenju verzije: %s" + +#: admin.php:895 +#, php-format +msgid "There was an error deleting the attribute: %s." +msgstr "PriÅ¡lo je do napake pri izbrisu lastnosti: %s" + +#: admin.php:532 +#, php-format +msgid "There was an error deleting the priority: %s." +msgstr "PriÅ¡lo je do napake pri izbrisu prioritete: %s" + +#: admin.php:320 +#, php-format +msgid "There was an error deleting the queue: %s." +msgstr "PriÅ¡lo je do napake pri izbrisu statusa: %s" + +#: admin.php:423 +#, php-format +msgid "There was an error deleting the state: %s." +msgstr "PriÅ¡lo je do napake pri izbrisu statusa: %s" + +#: admin.php:683 +#, php-format +msgid "There was an error deleting the subject: %s." +msgstr "PriÅ¡lo je do napake pri brisanju postavke: %s." + +#: ticket/delete.php:72 +#, php-format +msgid "There was an error deleting the ticket: %s" +msgstr "PriÅ¡lo je do napake pri izbrisu priajve: %s" + +#: admin.php:223 +#, php-format +msgid "There was an error deleting the type: %s." +msgstr "PriÅ¡lo je do napake pri izbrisu tipa: %s" + +#: admin.php:785 +#, php-format +msgid "There was an error deleting the version: %s." +msgstr "PriÅ¡lo je do napake pri urejanju verzije: %s" + +#: admin.php:871 +#, php-format +msgid "There was an error editing the attribute: %s." +msgstr "PriÅ¡lo je do napake pri urejanju lastnosti: %s" + +#: admin.php:507 +#, php-format +msgid "There was an error editing the priority: %s." +msgstr "PriÅ¡lo je do napake pri urejanju prioritete: %s" + +#: admin.php:304 +#, php-format +msgid "There was an error editing the queue: %s." +msgstr "PriÅ¡lo je do napake pri urejanju skupine: %s." + +#: admin.php:397 +#, php-format +msgid "There was an error editing the state: %s." +msgstr "PriÅ¡lo je do napake pri urejanju statusa: %s" + +#: admin.php:667 +#, php-format +msgid "There was an error editing the subject: %s." +msgstr "PriÅ¡lo je do napake pri urejanju posavke: %s." + +#: admin.php:760 +#, php-format +msgid "There was an error editing the version: %s." +msgstr "PriÅ¡lo je do napake pri urejanju verzije: %s" + +#: lib/Admin.php:243 +#, fuzzy, php-format +msgid "There was an error listing users: %s; %s" +msgstr "PriÅ¡lo je do napake pri branju spiska uporabnikov: %s." + +#: admin.php:177 +#, php-format +msgid "There was an error modifying the type: %s." +msgstr "PriÅ¡lo je do napake pri spreminjanju tipa: %s" + +#: search.php:158 +#, php-format +msgid "There was an error performing your search: %s" +msgstr "PriÅ¡lo je do napake pri izvjanju iskanja: %s" + +#: admin.php:605 +#, php-format +msgid "" +"There was an error removing \"%s\" from the responsible list for \"%s\": %s" +msgstr "PriÅ¡lo je do napake brisanju \"%s\" iz spiska odgovornih za \"%s\": %s" + +#: data.php:27 +msgid "This is not a search results template." +msgstr "Ni rezultatov iskanja v tej Å¡abloni." + +#: lib/Admin.php:57 +msgid "This is not a valid subject." +msgstr "Ni veljavne postavke." + +#: ticket/queue.php:80 lib/Forms/CreateTicket.php:72 +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this queue, you will not " +"be able to create tickets." +msgstr "" +"Te skupine zahtevajo določitev veruije, ampak ni vezij povezanih z njimi." +"Dokler niso ne morete tvorit prijav v njih." + +#: lib/Ticket.php:485 +msgid "Ticket" +msgstr "Prijava" + +#: ticket/delete.php:68 +#, php-format +msgid "Ticket %d has been deleted." +msgstr "Prijava %d je bila izbrisana." + +#: lib/api.php:746 +#, php-format +msgid "Ticket %s - %s" +msgstr "Prijava %s - %s" + +#: lib/Driver/sql.php:869 +#, php-format +msgid "Ticket %s was not found." +msgstr "Ne najdem prijave %s" + +#: search.php:49 +msgid "Ticket ID" +msgstr "Priajva Å t." + +#: lib/Forms/CreateTicket.php:125 +msgid "Ticket State" +msgstr "Satus prijave" + +#: templates/reports/stats.inc:3 +msgid "Ticket Stats" +msgstr "Prijava oddana" + +#: lib/Block/summary.php:3 +msgid "Ticket Summary" +msgstr "Povzetek prijave" + +#: lib/Forms/CreateTicket.php:66 +msgid "Ticket Type" +msgstr "Tip prijave" + +#: lib/Admin.php:158 +msgid "Ticket Types associated with this Queue" +msgstr "Tip prijav povezani s to skupino" + +#: lib/Ticket.php:481 +#, php-format +msgid "Ticket URL: %s\n" +msgstr "Podrobnosti prijave: %s\n" + +#: ticket/update.php:137 +msgid "Ticket Updated" +msgstr "Prijava žurirana" + +#: lib/api.php:767 +msgid "Tickets" +msgstr "Prijave" + +#: lib/Block/summary.php:51 +msgid "Tickets assigned to you" +msgstr "Tebi dodeljene prijave" + +#: search.php:52 +msgid "Tickets which are" +msgstr "Prijave so" + +#: lib/Block/summary.php:68 +msgid "Tickets you requested" +msgstr "Od vas oddane prijave" + +#: templates/queryrenderer.inc:121 ticket/queue.php:88 lib/Whups.php:492 +#: lib/Ticket.php:467 lib/Ticket.php:592 lib/Query.php:674 +#: config/prefs.php.dist:39 +msgid "Type" +msgstr "Tip" + +#: templates/comment.inc:103 +#, php-format +msgid "Type ⇒ %s" +msgstr "Tip ⇒ %s" + +#: lib/Admin.php:301 lib/Admin.php:345 lib/Admin.php:394 +msgid "Type Description" +msgstr "Opis tipa" + +#: lib/Admin.php:300 lib/Admin.php:324 lib/Admin.php:342 lib/Admin.php:391 +msgid "Type Name" +msgstr "Ime tipa" + +#: search.php:55 +msgid "Types" +msgstr "Tipi" + +#: lib/Ticket.php:597 +msgid "Unassigned" +msgstr "Nedodeljena" + +#: lib/Admin.php:816 +msgid "Unassigned tickets" +msgstr "Nedodljene prijave" + +#: lib/Driver.php:159 +msgid "Unconfirmed" +msgstr "Nepotrjene" + +#: templates/queryrenderer.inc:148 templates/queryrenderer.inc:188 +#, php-format +msgid "Unknown node type %s" +msgstr "Neznan vozel prijave %s" + +#: templates/comment.inc:84 lib/api.php:714 +msgid "Update" +msgstr "Ažuriraj" + +#: ticket/update.php:153 +#, php-format +msgid "Update %s" +msgstr "Ažuriraj %s" + +#: templates/admin/mtmatrix.inc:29 +msgid "Update Associations" +msgstr "Ažuriraj povezavo" + +#: ticket/people.php:134 +#, php-format +msgid "Update People for %s" +msgstr "Ažuriraj odgovorne za %s" + +#: lib/Ticket.php:472 lib/Ticket.php:486 +msgid "Updated By" +msgstr "Spremenjena od" + +#: lib/Admin.php:242 lib/Admin.php:252 lib/Admin.php:255 +msgid "User" +msgstr "Uporabnik" + +#: lib/Query.php:539 +msgid "User ID" +msgstr "Uporabnik" + +#: lib/Admin.php:184 +msgid "Users responsible for this Queue" +msgstr "Uporabiki odgovorni za to kupino" + +#: lib/Admin.php:287 +msgid "Users responsible for this queue" +msgstr "Uporabiki odgovorni za to kupino" + +#: templates/queryrenderer.inc:115 lib/Whups.php:495 lib/Ticket.php:464 +#: lib/Query.php:686 config/prefs.php.dist:42 +msgid "Version" +msgstr "Verzija" + +#: lib/Admin.php:625 lib/Admin.php:671 lib/Admin.php:694 +msgid "Version Description" +msgstr "Opis verzije" + +#: lib/Admin.php:624 lib/Admin.php:649 lib/Admin.php:668 lib/Admin.php:691 +msgid "Version Name" +msgstr "Ime verzije" + +#: templates/reports/graphs.inc:13 +msgid "View Graphs" +msgstr "Preglej grafe" + +#: ticket/people.php:91 ticket/type.php:46 ticket/queue.php:51 +#: lib/Forms/AddComment.php:38 +msgid "Viewable only by members of" +msgstr "Prikazani samo člani od" + +#: lib/Forms/AddComment.php:25 +msgid "Watch this ticket" +msgstr "Sledi tej prijavi" + +#: ticket/watch.php:76 +#, php-format +msgid "Watchers for %s" +msgstr "Sleditelji prijave %s" + +#: config/prefs.php.dist:95 +msgid "Weekday Day Month" +msgstr "Dan v tednu, Dan, Mesec" + +#: config/prefs.php.dist:96 +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "Dan v tednu, Dan, Mesec UU:MM::SS TZ" + +#: ticket/delete.php:37 lib/Admin.php:90 lib/Admin.php:217 lib/Admin.php:405 +#: lib/Admin.php:521 lib/Admin.php:609 lib/Admin.php:697 lib/Admin.php:785 +#: lib/Query.php:884 +msgid "Yes" +msgstr "Da" + +#: view.php:40 +msgid "You are not allowed to view this ticket." +msgstr "Nimate pravic za pogled te prijave." + +#: lib/Driver/sql.php:872 +#, php-format +msgid "You do not have permission to access this ticket (%s)." +msgstr "Nimate pravic za dostop do prijave (%s)." + +#: lib/Query.php:854 +msgid "You have no saved queries." +msgstr "Nimate shranjenih poizvedb." + +#: lib/Whups.php:523 +msgid "You must select at least one queue to send reminders for." +msgstr "Izbrati morate vsaj eno skupino za poslati oponike." + +#: lib/Forms/CreateTicket.php:119 lib/Forms/AddComment.php:18 +msgid "Your Email Address" +msgstr "VaÅ¡ elektronski naslov" + +#: ticket/create.php:157 +#, php-format +msgid "" +"Your ticket ID is %s. An appropriate person has been notified of this " +"request." +msgstr "" +"VaÅ¡a prijava Å¡t. ID je %s. Ustrezena odgovorna oseba je bila obveščena o tem " +"zahtevku." + +#: lib/Whups.php:588 +msgid "_Admin" +msgstr "Administracija" + +#: lib/Whups.php:212 +msgid "_Comment" +msgstr "Komentar" + +#: lib/Whups.php:221 +msgid "_Delete" +msgstr "IzbriÅ¡i" + +#: lib/Query.php:145 +msgid "_Delete Query" +msgstr "IzbriÅ¡i poizvedbo" + +#: lib/Query.php:126 +msgid "_Edit Query" +msgstr "Uredi poizvedbo" + +#: admin.php:32 +msgid "_Edit Queues" +msgstr "Uredi skupine" + +#: query.php:137 +msgid "_Group Criteria" +msgstr "Skupine" + +#: lib/Query.php:139 +msgid "_Load Query" +msgstr "Naloži poizvedbo" + +#: lib/Whups.php:577 +#, php-format +msgid "_My %s" +msgstr "Moje %s" + +#: lib/Whups.php:580 +msgid "_New Ticket" +msgstr "Tvori prijavo" + +#: lib/Whups.php:215 +msgid "_People" +msgstr "Odgovorni" + +#: query.php:135 +msgid "_Property Criteria" +msgstr "Osnovno" + +#: lib/Whups.php:582 +msgid "_Query Builder" +msgstr "Tvorec poizvedb" + +#: lib/Whups.php:584 +msgid "_Reports" +msgstr "Poročila" + +#: lib/Whups.php:579 +msgid "_Search" +msgstr "Išči" + +#: query.php:139 +msgid "_Text Criteria" +msgstr "Opis" + +#: lib/Whups.php:210 +msgid "_Update" +msgstr "Ažuriraj" + +#: query.php:136 +msgid "_User Criteria" +msgstr "Uporabniki" + +#: lib/Whups.php:213 +msgid "_Watch" +msgstr "Sledi" + +#: templates/queryrenderer.inc:168 +msgid "contains (case insensitive) substring" +msgstr "vsebuje zvezo (neobčutljivo na velike/male)" + +#: templates/queryrenderer.inc:172 +msgid "contains (case sensitive) substring" +msgstr "vsebuje zvezo (občutljivo na velike/male)" + +#: templates/queryrenderer.inc:176 +msgid "contains the word" +msgstr "vsebuje besede" + +#: scripts/mail-filter.php:176 +#, php-format +msgid "error processing message: %s" +msgstr "napaka v procesiranju sporočila: %s" + +#: lib/api.php:755 +msgid "estimated time" +msgstr "predviden čas" + +#: templates/queryrenderer.inc:164 +msgid "is" +msgstr "je" + +#: templates/queryrenderer.inc:156 +msgid "is greater than" +msgstr "je večji od" + +#: templates/queryrenderer.inc:160 +msgid "is less than" +msgstr "je manjÅ¡i od" + +#: templates/queryrenderer.inc:180 +msgid "matches the pattern" +msgstr "ustreza primerjavi" diff --git a/whups/po/tr_TR.po b/whups/po/tr_TR.po new file mode 100644 index 000000000..a6074ec0a --- /dev/null +++ b/whups/po/tr_TR.po @@ -0,0 +1,2452 @@ +# Turkish translations for Whups package +# whups paketi için Türkçe çeviriler. +# Copyright 2008-2009 The Horde Project +# This file is distributed under the same license as the Whups package. +# Akif Dinc , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: Whups H3 (2.0-cvs)\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-10-30 16:08+0100\n" +"PO-Revision-Date: 2008-10-31 18:30+0100\n" +"Last-Translator: Akif Dinc \n" +"Language-Team: i18n@lists.horde.org\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-9\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: admin/index.php:745 +#, php-format +msgid "\"%s\" is no longer among those responsible for \"%s\"" +msgstr "\"%s\" artýk \"%s\" sorumlular arasýna girmiyor" + +#: templates/menu.inc:5 +msgid "#Id" +msgstr "#Id" + +#: templates/ticket/watchers.inc:3 +#, php-format +msgid "%d people watching, %d people responsible" +msgstr "%d þahýs takip ediyor, %d þahýs sorumlu" + +#: queue/rss.php:96 +#, php-format +msgid "%s %s tickets in %s" +msgstr "%s %s bilet var %s'de" + +#: queue/rss.php:100 +#, php-format +msgid "%s %s tickets in all queues" +msgstr "tüm kuyruklarda %s %s bilet var" + +#: lib/Renderer/Comment.php:120 +#, php-format +msgid "%s ⇒ %s" +msgstr "%s ⇒ %s" + +#: lib/Driver.php:497 +#, php-format +msgid "%s (%s) wrote:" +msgstr "%s (%s) dediki:" + +#: admin/index.php:700 +#, php-format +msgid "%s added to those responsible for \"%s\"" +msgstr "%s \"%s\" için sorumlulara eklenmiþtir" + +#: templates/reports/stats.inc:15 +#, php-format +msgid "%s days" +msgstr "%s gün" + +#: queue/rss.php:104 +#, php-format +msgid "%s tickets in %s" +msgstr "%s bilet var %s'de" + +#: queue/rss.php:108 +#, php-format +msgid "%s tickets in all queues" +msgstr "Tüm kuyruklarda %s bilet var" + +#: ticket/watch.php:60 +#, php-format +msgid "%s will be notified when this ticket is updated." +msgstr "bu bilet güncelleþtirildiðinde %s bilgilendirilecektir" + +#: ticket/watch.php:72 +#, php-format +msgid "%s will no longer receive updates for this ticket." +msgstr "%s'ye güncelleþtirme bilgileri artýk iletilmiyecektir" + +#: admin/index.php:109 +msgid "- Stage 1" +msgstr "- 1 Basamak" + +#: admin/index.php:114 +msgid "- Stage 2" +msgstr "- 2 Basamak" + +#: scripts/mail-filter.php:172 +msgid "--queue-name or --queue-id must specify a valid and public queue." +msgstr "" + +#: templates/prevnext.inc:16 +msgid "<>" +msgstr "Son>>" + +#: lib/Forms/Query.php:411 +msgid "Load Query" +msgstr "Sorgulamayý Yükle" + +#: lib/Forms/VarRenderer.php:46 +msgid "Loading..." +msgstr "Yükleniyor..." + +#: config/prefs.php.dist:106 +msgid "MM/DD/YY" +msgstr "AA/GG/YY" + +#: config/prefs.php.dist:107 +msgid "MM/DD/YY HH:MM:SS" +msgstr "AA/GG/YY SS:DD:SS" + +#: lib/Forms/Admin/Type.php:193 +#, php-format +msgid "Make a clone of %s" +msgstr "%s'i klonla" + +#: lib/Forms/AddComment.php:38 lib/Forms/EditTicket.php:167 +msgid "Make this comment visible only to members of a group?" +msgstr "Bu yorum sadece üyesi olan gruplara mý gösterilsin?" + +#: lib/Forms/Query.php:274 +msgid "Match" +msgstr "Eþleþen" + +#: lib/Forms/Query.php:45 lib/Forms/Query.php:129 lib/Forms/Query.php:275 +msgid "Match Operator" +msgstr "" + +#: lib/Query.php:167 +msgid "Match Pattern" +msgstr "Eþleþen Örüntü" + +#: lib/Query.php:166 +msgid "Match Word" +msgstr "Eþleþen Kelime" + +#: reports.php:30 +msgid "Maximum time a ticket is unresolved" +msgstr "En çok iþgal etmiþ açýk bilet zamaný" + +#: lib/Block/tree_menu.php:3 +msgid "Menu List" +msgstr "" + +#: reports.php:31 +msgid "Minimum time a ticket is unresolved" +msgstr "En az iþgal etmiþ açýk bilet zamaný" + +#: config/prefs.php.dist:146 +msgid "Most recent first" +msgstr "En sonu ilk yap" + +#: templates/prefs/sourceselect.inc:312 +msgid "Move down" +msgstr "Aþaðý indir" + +#: templates/prefs/sourceselect.inc:310 +msgid "Move up" +msgstr "Yukarý çýkar" + +#: ticket/queue.php:181 +#, php-format +msgid "Moved ticket %d to \"%s\"" +msgstr "%d biletini \"%s\" aktar" + +#: mybugs.php:54 +#, php-format +msgid "My %s" +msgstr "Benim %s" + +#: mybugs_edit.php:33 +#, php-format +msgid "My %s :: Add Content" +msgstr "Benim %s :: Ýçerik Ekle" + +#: search.php:178 lib/Block/myqueries.php:3 lib/Block/myqueries.php:24 +msgid "My Queries" +msgstr "Benim Sorgulamalarým" + +#: lib/Block/myrequests.php:3 lib/Block/myrequests.php:24 +msgid "My Requests" +msgstr "Benim Baþvurularým " + +#: lib/Block/mytickets.php:3 lib/Block/mytickets.php:24 +#: config/prefs.php.dist:75 +msgid "My Tickets" +msgstr "Benim Biletlerim" + +#: lib/api.php:884 +msgid "My tickets by assignment date" +msgstr "" + +#: lib/api.php:883 +msgid "My tickets by creation date" +msgstr "" + +#: lib/api.php:885 +msgid "My tickets by due date" +msgstr "" + +#: lib/api.php:886 +msgid "My tickets by resolution date" +msgstr "" + +#: lib/Forms/Query.php:422 +msgid "Name" +msgstr "Ad" + +#: lib/Forms/Admin/Type.php:198 +msgid "Name of the cloned copy" +msgstr "Klonlanmýþ kopyanýn adý" + +#: lib/Query.php:216 +msgid "Ne_w Query" +msgstr "Ye_ni Sorgulama" + +#: lib/Driver.php:197 +msgid "New" +msgstr "Yeni" + +#: lib/Ticket.php:618 lib/Ticket.php:711 +msgid "New Attachment" +msgstr "Yeni Ek" + +#: lib/Renderer/Comment.php:58 lib/Renderer/Comment.php:62 +#, php-format +msgid "New Attachment: %s" +msgstr "Yeni Ek: %s" + +#: ticket/queue.php:32 +msgid "New Queue" +msgstr "Yeni Kuyruk" + +#: ticket/create.php:67 lib/Block/tree_menu.php:21 +msgid "New Ticket" +msgstr "Yeni Bilet" + +#: ticket/type.php:31 +msgid "New Type" +msgstr "Yeni Tür" + +#: templates/prevnext.inc:26 +msgid "Next>" +msgstr "Sonra>" + +#: ticket/delete.php:33 lib/Forms/Query.php:449 lib/Forms/Admin/Queue.php:174 +#: lib/Forms/Admin/State.php:121 lib/Forms/Admin/Type.php:176 +#: lib/Forms/Admin/Reply.php:110 lib/Forms/Admin/Version.php:96 +#: lib/Forms/Admin/Attribute.php:149 lib/Forms/Admin/Priority.php:121 +msgid "No" +msgstr "" + +#: lib/Ticket.php:100 +#, php-format +msgid "" +"No priority for this ticket and no default priority for ticket type \"%s\" " +"specified." +msgstr "" + +#: lib/Block/myqueries.php:46 +msgid "No queries have been saved." +msgstr "Kaydedilmiþ sorgulamalar yok" + +#: lib/Block/query.php:62 lib/Driver/sql.php:553 +msgid "No query to run" +msgstr "Ýþlenebilineçek sorgulamalar yok" + +#: lib/Block/queuecontents.php:25 +msgid "No queues available." +msgstr "Kullanýlabileçek sorgulamalar yok" + +#: lib/Ticket.php:92 +#, php-format +msgid "" +"No state for this ticket and no default state for ticket type \"%s\" " +"specified." +msgstr "" +"Bu bilet için durum yok ve varsayýlan durumda bu bilet türü olan\"%s\" için " +"belirlenmemiþ." + +#: reports.php:35 +msgid "No stats available." +msgstr "Mevcut istatistik yok" + +#: lib/Driver.php:533 +#, php-format +msgid "No such backend \"%s\" found" +msgstr "" + +#: lib/View.php:33 +#, php-format +msgid "No such view \"%s\" found" +msgstr "" + +#: lib/Block/mytickets.php:45 +msgid "No tickets are assigned to you." +msgstr "Size atanmýþ bilet yok" + +#: lib/Block/unassigned.php:45 +msgid "No tickets are unassigned!" +msgstr "Atanmamýþ bilet yok!" + +#: lib/Block/queuecontents.php:62 lib/Block/queuecontents.php:73 +msgid "No tickets in queue." +msgstr "Kuyrukta bilet yok." + +#: lib/Whups.php:720 +msgid "No tickets matched your search criteria." +msgstr "Arama kriterlerinize uyan bilet yok." + +#: lib/Ticket.php:84 +#, php-format +msgid "No type for this ticket and no default type for queue \"%s\" specified." +msgstr "" + +#: templates/prefs/sourceselect.inc:35 lib/Reports.php:67 +msgid "None" +msgstr "Hiç" + +#: lib/Forms/Query.php:26 lib/Renderer/Query.php:79 +msgid "Not" +msgstr "Hayýr" + +#: config/prefs.php.dist:17 +msgid "Notification Options" +msgstr "Bilgilendirilme Ayarlarý" + +#: config/prefs.php.dist:117 +msgid "Only notify me of ticket changes from other users?" +msgstr "Sadece diðer kullanýcýlarýn deðiþmiþ biletleri mi bana bildirilsin?" + +#: config/prefs.php.dist:126 +msgid "Only notify me of ticket changes with comments?" +msgstr "Sadece yorumlarý deðiþmiþ bileler mi bana bildirilsin?" + +#: queue/rss.php:43 +msgid "Open" +msgstr "Açýk" + +#: lib/Block/queuesummary.php:49 +msgid "Open Tickets" +msgstr "Açýk Biletler" + +#: reports.php:23 +msgid "Open Tickets by Owner" +msgstr "Sahibine Göre Açýk Biletler" + +#: reports.php:21 +msgid "Open Tickets by Priority" +msgstr "Önceliklere Göre Açýk Biletler" + +#: reports.php:18 +msgid "Open Tickets by Queue" +msgstr "Kuyruða Göre Açýk Bilet" + +#: reports.php:22 +msgid "Open Tickets by Requester" +msgstr "Baþvuruculara Göre Henüz Açýk Biletler" + +#: reports.php:19 +msgid "Open Tickets by State" +msgstr "Duruma Göre Açýk Biletler" + +#: reports.php:20 +msgid "Open Tickets by Type" +msgstr "" + +#: lib/Block/queuecontents.php:47 +#, php-format +msgid "Open Tickets in %s" +msgstr "%s'de Benim Sonuçlandýrýlmamýþ Biletlerim" + +#: queue/index.php:43 queue/index.php:57 queue/rss.php:119 +#, php-format +msgid "Open tickets in %s" +msgstr "%s'de açýk biletler" + +#: queue/rss.php:121 +msgid "Open tickets in all queues." +msgstr "Tüm kuyruklardaki açýk biletler" + +#: lib/Forms/Query.php:25 lib/Renderer/Query.php:78 +msgid "Or" +msgstr "Veya" + +#: lib/Whups.php:685 lib/Ticket.php:617 lib/Ticket.php:701 lib/Ticket.php:702 +#: lib/Ticket.php:705 lib/Ticket.php:812 lib/Ticket.php:833 lib/Ticket.php:958 +#: lib/Forms/EditTicket.php:104 lib/Forms/CreateTicket.php:225 +#: lib/Forms/CreateTicket.php:243 lib/Renderer/Query.php:84 +msgid "Owners" +msgstr "Sahipler" + +#: lib/Whups.php:870 +#, php-format +msgid "Permanently delete %s?" +msgstr "%s tamamen silinsin mi?" + +#: ticket/delete.php:51 ticket/type.php:74 ticket/queue.php:131 +#: ticket/update.php:22 ticket/deleteAttachment.php:21 +msgid "Permission Denied" +msgstr "Eriþim Ýzni Engellendi" + +#: ticket/delete.php:40 lib/Forms/EditTicket.php:197 +msgid "Permission Denied." +msgstr "Eriþim Ýzni Engellendi." + +#: lib/Forms/Query.php:459 query/run.php:44 query/index.php:31 +#, php-format +msgid "Permission denied." +msgstr "Eriþim izni engellendi." + +#: lib/Imple/ContactAutoCompleter.php:227 +msgid "Please resolve ambiguous or invalid addresses." +msgstr "" + +#: lib/Forms/Admin/Type.php:93 lib/Forms/Admin/Type.php:171 +msgid "Priorities for this Type" +msgstr "" + +#: ticket/type.php:66 ticket/queue.php:117 lib/Whups.php:673 lib/Whups.php:682 +#: lib/Ticket.php:610 lib/Ticket.php:807 lib/Ticket.php:953 +#: lib/Forms/EditTicket.php:68 lib/Forms/CreateTicket.php:147 +#: lib/Forms/Query.php:198 lib/Renderer/Query.php:125 config/prefs.php.dist:49 +msgid "Priority" +msgstr "Öncelik" + +#: lib/Renderer/Comment.php:115 +#, php-format +msgid "Priority ⇒ %s" +msgstr "Öncelik ⇒ %s" + +#: lib/Forms/Admin/Priority.php:24 lib/Forms/Admin/Priority.php:70 +#: lib/Forms/Admin/Priority.php:118 +msgid "Priority Description" +msgstr "Öncelik Tanýmlamasý" + +#: lib/Forms/Admin/Priority.php:23 lib/Forms/Admin/Priority.php:48 +#: lib/Forms/Admin/Priority.php:67 lib/Forms/Admin/Priority.php:94 +#: lib/Forms/Admin/Priority.php:115 +msgid "Priority Name" +msgstr "Öncelik Adý" + +#: search.php:178 +msgid "Public Queries" +msgstr "Herkese Açýk Sorgulamalar" + +#: query/index.php:172 +msgid "Query Builder" +msgstr "Sorgulama Kurucusu" + +#: lib/Forms/Query.php:387 +msgid "Query Name" +msgstr "Sorgulama Adý" + +#: lib/Forms/QueryParameterForm.php:20 +msgid "Query Parameters" +msgstr "Sorgulama Parametreleri" + +#: lib/Block/query.php:3 lib/Block/query.php:49 query/run.php:79 +#: query/rss.php:63 +msgid "Query Results" +msgstr "Sorgulama Sonuçlarý" + +#: lib/Forms/Query.php:389 +msgid "Query Slug" +msgstr "" + +#: lib/Block/query.php:33 +msgid "Query to run" +msgstr "Çalýþtýrýlmasý istenilen sorgulama" + +#: lib/Whups.php:683 lib/Ticket.php:606 lib/Ticket.php:803 lib/Ticket.php:918 +#: lib/Ticket.php:923 lib/Block/queuecontents.php:32 +#: lib/Block/queuesummary.php:49 lib/Forms/Query.php:181 +#: lib/Forms/Search.php:40 lib/Renderer/Query.php:94 config/prefs.php.dist:50 +msgid "Queue" +msgstr "Kuyruk" + +#: lib/Renderer/Comment.php:100 +#, php-format +msgid "Queue ⇒ %s" +msgstr "Sorgulama ⇒ %s" + +#: lib/Block/queuecontents.php:3 lib/Block/queuecontents.php:49 +msgid "Queue Contents" +msgstr "Kuyruðun Ýçindekiler" + +#: lib/Forms/Admin/Queue.php:24 lib/Forms/Admin/Queue.php:89 +#: lib/Forms/Admin/Queue.php:170 +msgid "Queue Description" +msgstr "Kuyruk Betimlemesi" + +#: lib/Forms/Admin/Queue.php:30 lib/Forms/Admin/Queue.php:97 +msgid "Queue Email" +msgstr "Kuyruk Epostasý" + +#: lib/Forms/CreateTicket.php:34 lib/Forms/CreateTicket.php:45 +#: lib/Forms/Admin/Queue.php:23 lib/Forms/Admin/Queue.php:60 +#: lib/Forms/Admin/Queue.php:85 lib/Forms/Admin/Queue.php:166 +msgid "Queue Name" +msgstr "Kuyruk Adý" + +#: lib/Forms/Admin/Queue.php:26 lib/Forms/Admin/Queue.php:93 +msgid "Queue Slug" +msgstr "" + +#: lib/Block/queuesummary.php:3 lib/Block/queuesummary.php:24 +msgid "Queue Summary" +msgstr "Kuyruk Özeti" + +#: ticket/queue.php:86 lib/Ticket.php:932 lib/Ticket.php:938 +#: lib/Forms/CreateTicket.php:93 +msgid "Queue Version" +msgstr "Kuyruk Sürümü" + +#: admin/index.php:35 +msgid "Queue/Type Matri_x" +msgstr "Kuyruk/Türü Dize_y" + +#: templates/admin/mtmatrix.inc:6 +msgid "Queue/Type Matrix" +msgstr "Kuyruk/Türü Dizey" + +#: lib/api.php:163 lib/api.php:781 +msgid "Queues" +msgstr "Kuyruklar" + +#: templates/prevnext.inc:32 +msgid "Re_turn to Search Results" +msgstr "A_rama Sonuçlarýna Geri Dön" + +#: lib/Forms/Admin/Attribute.php:147 +msgid "Really delete this attribute? This may cause data problems!" +msgstr "" + +#: lib/Forms/Admin/Reply.php:108 +msgid "Really delete this form reply?" +msgstr "" + +#: lib/Forms/Admin/Priority.php:122 +msgid "Really delete this priority? This may cause data problems!" +msgstr "" + +#: lib/Forms/Query.php:450 +msgid "Really delete this query? This operation is not undoable." +msgstr "" + +#: lib/Forms/Admin/Queue.php:176 +msgid "Really delete this queue? This may cause data problems!" +msgstr "" + +#: lib/Forms/Admin/State.php:122 +msgid "Really delete this state? This may cause data problems!" +msgstr "" + +#: ticket/delete.php:34 +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "" +"Bu bilet gerçekten silinsin mi? Arþive atýlmayacak ve tamamen yok olaçaktýr." + +#: lib/Forms/Admin/Type.php:178 +msgid "Really delete this type? This may cause data problems!" +msgstr "" + +#: lib/Forms/Admin/Version.php:97 +msgid "Really delete this version? This may cause data problems!" +msgstr "" + +#: lib/Mail.php:218 +msgid "Received message:" +msgstr "Alýnmýþ Ýleti" + +#: search.php:162 +msgid "Refine Search" +msgstr "Aramayý derinleþtir" + +#: admin/index.php:1170 +msgid "Reminders were sent." +msgstr "Hatýrlatýcýlar gönderildi." + +#: lib/Forms/Admin/User.php:59 +msgid "Remove User" +msgstr "Kullanýcýyý Sil" + +#: ticket/watch.php:49 +msgid "Remove Watcher" +msgstr "Takipciyi Sil" + +#: templates/prefs/sourceselect.inc:300 +msgid "Remove source" +msgstr "Kaynaðý Sil" + +#: lib/Renderer/Comment.php:95 +msgid "Reply to this comment" +msgstr "Bu yoruma yanýt ver" + +#: reports.php:40 +msgid "Reports" +msgstr "Raporlar" + +#: lib/Whups.php:684 lib/Ticket.php:965 lib/Renderer/Query.php:86 +msgid "Requester" +msgstr "Baþvurucu" + +#: lib/Forms/Admin/Attribute.php:28 lib/Forms/Admin/Attribute.php:99 +msgid "Required Attribute?" +msgstr "" + +#: lib/Whups.php:689 lib/api.php:927 lib/Driver.php:199 lib/Ticket.php:991 +#: lib/Renderer/Query.php:151 config/prefs.php.dist:54 +msgid "Resolved" +msgstr "Çözülmüþ" + +#: lib/Forms/Query.php:330 lib/Forms/Search.php:60 +msgid "Resolved from" +msgstr "Tarihinden Beri Çözülmüþ" + +#: lib/Forms/Query.php:331 +msgid "Resolved to" +msgstr "Tarihine Kadar Çözülmüþ" + +#: lib/Forms/Admin/User.php:61 +msgid "Responsible Users" +msgstr "Sorumlu Kullanýcýlar" + +#: lib/Whups.php:310 +msgid "S_et Queue" +msgstr "Kuyruðu Belirle" + +#: lib/Query.php:234 +msgid "Sa_ve Query" +msgstr "Sorgulamayý _Kaydet" + +#: templates/view/results.inc:96 lib/Forms/Query.php:385 +msgid "Save" +msgstr "Kaydet" + +#: query/index.php:233 +msgid "Save Criterion" +msgstr "Kriteri Kaydet" + +#: lib/Forms/Query.php:384 +msgid "Save Query" +msgstr "Sorgulamayý kaydet" + +#: search.php:69 lib/Forms/Search.php:19 +msgid "Save as Query" +msgstr "Sorgulama olarak Kaydet" + +#: search.php:155 lib/Block/tree_menu.php:30 +msgid "Search" +msgstr "Ara" + +#: lib/Forms/Query.php:278 +#, php-format +msgid "Search %s Attribute" +msgstr "" + +#: lib/Forms/Query.php:272 lib/Forms/Query.php:281 +msgid "Search Attribute" +msgstr "" + +#: lib/Forms/Query.php:48 lib/Forms/Query.php:131 +msgid "Search Comments" +msgstr "Yorumlarý Ara" + +#: lib/Forms/Query.php:46 +msgid "Search Owners" +msgstr "Sahipleri Ara" + +#: lib/Forms/Query.php:47 +msgid "Search Requester" +msgstr "Baþvuraný Ara" + +#: search.php:147 search/rss.php:55 search/rss.php:59 +msgid "Search Results" +msgstr "Arama Sonuçlarý" + +#: templates/prevnext.inc:38 +#, php-format +msgid "Search Results: %s of %s" +msgstr "Arama Sonuçlarý: %s / %s" + +#: lib/Forms/Query.php:130 +msgid "Search Summary" +msgstr "Özetete Göre Ara" + +#: config/prefs.php.dist:76 +msgid "Search Tickets" +msgstr "Bilet Ara" + +#: config/prefs.php.dist:25 +msgid "Select address book sources for adding and searching for addresses." +msgstr "Adres rehberi kaynaklarýný eklemek ve aramak için seçin." + +#: templates/prefs/sourceselect.inc:319 +msgid "Select all fields to search when expanding addresses." +msgstr "" + +#: config/prefs.php.dist:78 +msgid "Select the view to display after login:" +msgstr "" + +#: templates/prefs/sourceselect.inc:303 templates/prefs/sourceselect.inc:305 +msgid "Selected Address books:" +msgstr "Seçilmiþ Adresrehberleri:" + +#: admin/index.php:36 +msgid "Sen_d Reminders" +msgstr "_Hatýrlatýcý Gönder" + +#: lib/Forms/Admin.php:23 +msgid "Send Reminders" +msgstr "Hatýrlatýcý Gönder" + +#: lib/Forms/Admin.php:34 +msgid "Send only for this list of ticket ids" +msgstr "" + +#: lib/Forms/Admin/Priority.php:80 lib/Forms/Admin/Priority.php:82 +msgid "Set Default Priority" +msgstr "Standart Önceliði Belirle" + +#: lib/Forms/Admin/State.php:80 lib/Forms/Admin/State.php:82 +msgid "Set Default State" +msgstr "Varsayýlan Durumu Belirle" + +#: ticket/queue.php:201 ticket/queue.php:210 ticket/queue.php:222 +msgid "Set Queue - Step 1" +msgstr "Kuyruk Ayarla - 1 Adým" + +#: ticket/queue.php:202 ticket/queue.php:211 +msgid "Set Queue - Step 2" +msgstr "Kuyruk Ayarla - 2 Adým" + +#: ticket/queue.php:212 +msgid "Set Queue - Step 3" +msgstr "Kuyruk Ayarla - 3 Adým" + +#: ticket/queue.php:189 +#, php-format +msgid "Set Queue for %s" +msgstr "%s için Kuyruðu belirle" + +#: lib/api.php:800 +msgid "Set Requester" +msgstr "Baþvuraný Belirle" + +#: ticket/type.php:139 ticket/type.php:148 +msgid "Set Type - Step 1" +msgstr "" + +#: ticket/type.php:140 +msgid "Set Type - Step 2" +msgstr "" + +#: ticket/type.php:127 +#, php-format +msgid "Set Type for %s" +msgstr "%s için Türü belirle" + +#: lib/Whups.php:315 +msgid "Set _Type" +msgstr "Türü Ayarla" + +#: config/prefs.php.dist:144 +msgid "Show comments in chronological order, or most recent first?" +msgstr "" + +#: config/prefs.php.dist:95 +msgid "Show ticket IDs in the summary view?" +msgstr "Özet görünümde bilet ID'leri gösterilsin mi?" + +#: config/prefs.php.dist:87 +msgid "Show tickets you have requested in the summary view?" +msgstr "Baþvuduðunuz biletler özet bakýþýnda gösterilsin mi?" + +#: config/templates.php.dist:16 +msgid "Simple HTML Report" +msgstr "Basit HTML Rapor" + +#: lib/Forms/Admin/Queue.php:27 +#, php-format +msgid "" +"Slugs allows direct access to this queue's open tickets by visiting: %s. " +"
Slug names may contain only letters, numbers or the _ (underscore) " +"character." +msgstr "" + +#: templates/view/results.inc:37 templates/view/results.inc:41 +#, php-format +msgid "Sort by %s" +msgstr "%s göre sirala" + +#: lib/Forms/AddComment.php:20 lib/Forms/AddComment.php:51 +#: lib/Forms/CreateTicket.php:136 lib/Forms/CreateTicket.php:175 +msgid "Spam protection" +msgstr "Ýstenilmeyen Ýleti önlemi" + +#: ticket/type.php:65 ticket/queue.php:116 lib/Whups.php:674 lib/Whups.php:680 +#: lib/Ticket.php:609 lib/Ticket.php:806 lib/Ticket.php:949 +#: lib/Forms/EditTicket.php:62 lib/Forms/Query.php:193 +#: lib/Renderer/Query.php:117 config/prefs.php.dist:47 +msgid "State" +msgstr "Durum" + +#: lib/Renderer/Comment.php:110 +#, php-format +msgid "State ⇒ %s" +msgstr "Durum ⇒ %s" + +#: lib/Forms/Admin/State.php:25 lib/Forms/Admin/State.php:70 +msgid "State Category" +msgstr "Durum Kategorisi" + +#: lib/Forms/Admin/State.php:24 lib/Forms/Admin/State.php:67 +#: lib/Forms/Admin/State.php:118 +msgid "State Description" +msgstr "Durum Betimlemesi" + +#: lib/Forms/Admin/State.php:23 lib/Forms/Admin/State.php:47 +#: lib/Forms/Admin/State.php:64 lib/Forms/Admin/State.php:96 +#: lib/Forms/Admin/State.php:115 +msgid "State Name" +msgstr "Durum Adý" + +#: lib/Forms/Admin/Type.php:76 lib/Forms/Admin/Type.php:165 +msgid "States for this Type" +msgstr "Bu durum için türler" + +#: templates/ticket/watchers.inc:1 +msgid "Status" +msgstr "Statüsü" + +#: ticket/create.php:146 +msgid "Submit" +msgstr "Gönder" + +#: query/run.php:93 query/run.php:94 +msgid "Subscribe to this query" +msgstr "Bu sorgulamaya üye ol" + +#: admin/index.php:198 +#, php-format +msgid "Successfully Cloned %s to %s." +msgstr "%s'in %s'e klonlanmasý baþarýlý gerçekleþtirildi" + +#: ticket/type.php:118 +msgid "Successfully changed ticket type." +msgstr "Bilet türü baþarýyla deðiþtirildi" + +#: ticket/delete.php:30 lib/Whups.php:672 lib/Whups.php:679 lib/Ticket.php:616 +#: lib/Ticket.php:643 lib/Ticket.php:646 lib/Ticket.php:650 lib/Ticket.php:812 +#: lib/Ticket.php:821 lib/Ticket.php:912 lib/Forms/EditTicket.php:58 +#: lib/Forms/CreateTicket.php:152 lib/Renderer/Query.php:89 +#: config/prefs.php.dist:46 +msgid "Summary" +msgstr "Özet" + +#: lib/Renderer/Comment.php:51 +#, php-format +msgid "Summary ⇒ %s" +msgstr "Özet ⇒ %s" + +#: lib/Forms/Search.php:43 +msgid "Summary like" +msgstr "Özetine benzeyen" + +#: lib/Renderer/Comment.php:79 +#, php-format +msgid "Taken from %s" +msgstr "%s'den alýnma" + +#: lib/Forms/Query.php:128 +msgid "Text" +msgstr "" + +#: lib/Driver/sql.php:80 lib/Driver/sql.php:1306 +msgid "That queue slug is already taken. Please select another." +msgstr "" + +#: lib/Forms/CreateTicket.php:129 +msgid "The Requester's Email Address" +msgstr "Baþvurucunun Eposta Adresi" + +#: view.php:58 lib/Ticket.php:439 lib/Ticket.php:487 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "" + +#: admin/index.php:906 +#, php-format +msgid "The attribute \"%s\" has been added to %s." +msgstr "" + +#: admin/index.php:1006 +msgid "The attribute has been deleted." +msgstr "" + +#: admin/index.php:974 +msgid "The attribute has been modified." +msgstr "" + +#: admin/index.php:1015 +msgid "The attribute was not deleted." +msgstr "" + +#: admin/index.php:642 +msgid "The default priority has been set." +msgstr "" + +#: admin/index.php:506 +msgid "The default state has been set." +msgstr "" + +#: admin/index.php:1043 +#, php-format +msgid "The form reply \"%s\" has been added to %s." +msgstr "" + +#: admin/index.php:1135 +msgid "The form reply has been deleted." +msgstr "" + +#: admin/index.php:1108 +msgid "The form reply has been modified." +msgstr "" + +#: admin/index.php:1144 +msgid "The form reply was not deleted." +msgstr "" + +#: admin/index.php:556 +#, php-format +msgid "The priority \"%s\" has been added to %s." +msgstr "" + +#: admin/index.php:661 +msgid "The priority has been deleted." +msgstr "" + +#: admin/index.php:609 +msgid "The priority has been modified." +msgstr "" + +#: admin/index.php:670 +msgid "The priority was not deleted." +msgstr "" + +#: lib/Forms/Query.php:463 +#, php-format +msgid "The query \"%s\" couldn't be deleted: %s" +msgstr "" + +#: lib/Forms/Query.php:465 +#, php-format +msgid "The query \"%s\" has been deleted." +msgstr "" + +#: lib/Forms/Query.php:430 +#, php-format +msgid "The query couldn't be loaded:" +msgstr "" + +#: admin/index.php:300 +#, php-format +msgid "The queue \"%s\" has been created." +msgstr "" + +#: admin/index.php:392 +msgid "The queue has been deleted." +msgstr "" + +#: admin/index.php:359 +msgid "The queue has been modified." +msgstr "" + +#: admin/index.php:400 +msgid "The queue was not deleted." +msgstr "" + +#: lib/MIME/Viewer/zip.php:58 +msgid "The requested file does not exist in the Zip attachment." +msgstr "" + +#: data.php:26 +msgid "The requested template does not exist." +msgstr "" + +#: admin/index.php:422 +#, php-format +msgid "The state \"%s\" has been added to %s." +msgstr "" + +#: admin/index.php:525 +msgid "The state has been deleted." +msgstr "" + +#: admin/index.php:475 +msgid "The state has been modified." +msgstr "" + +#: admin/index.php:533 +msgid "The state was not deleted." +msgstr "Durum silinmedi." + +#: ticket/delete.php:78 +msgid "The ticket was not deleted." +msgstr "Bilet silinmedi." + +#: admin/index.php:223 +#, php-format +msgid "The type \"%s\" has been modified." +msgstr "" + +#: admin/index.php:272 +msgid "The type has been deleted." +msgstr "" + +#: admin/index.php:280 +msgid "The type was not deleted." +msgstr "" + +#: admin/index.php:776 +#, php-format +msgid "The version \"%s\" has been added to %s." +msgstr "" + +#: admin/index.php:865 +msgid "The version has been deleted." +msgstr "" + +#: admin/index.php:835 +msgid "The version has been modified." +msgstr "" + +#: admin/index.php:873 +msgid "The version was not deleted." +msgstr "" + +#: lib/Forms/Admin/Attribute.php:70 +msgid "There are no attribute types to edit" +msgstr "" + +#: lib/Forms/Query.php:281 +msgid "There are no attributes defined." +msgstr "" + +#: lib/Forms/Admin/Reply.php:48 +msgid "There are no form replies to edit" +msgstr "" + +#: lib/Block/queuesummary.php:44 +msgid "There are no open tickets." +msgstr "" + +#: lib/Forms/Admin/Priority.php:44 lib/Forms/Admin/Priority.php:90 +msgid "There are no priorities to edit" +msgstr "" + +#: lib/Forms/Admin.php:31 +msgid "There are no queues available." +msgstr "" + +#: lib/Forms/Admin/Queue.php:57 +msgid "There are no queues to edit" +msgstr "" + +#: lib/Forms/CreateTicket.php:35 +msgid "There are no queues which you can create tickets in." +msgstr "" + +#: lib/Forms/Search.php:38 +msgid "There are no queues which you can search." +msgstr "" + +#: lib/Forms/Admin/State.php:43 lib/Forms/Admin/State.php:92 +msgid "There are no states to edit" +msgstr "" + +#: lib/Forms/CreateTicket.php:72 +msgid "" +"There are no ticket types associated with this queue; until there are, you " +"cannot create any tickets in this queue." +msgstr "" + +#: lib/Forms/Admin/Type.php:45 +msgid "There are no types to edit" +msgstr "" + +#: lib/Forms/Admin/User.php:75 +msgid "There are no users responsible for this queue." +msgstr "" + +#: lib/Forms/CreateTicket.php:242 +msgid "There are no users to which this ticket can be assigned." +msgstr "" + +#: lib/Forms/Admin/Version.php:44 +msgid "There are no versions to edit" +msgstr "" + +#: lib/Reports.php:143 +msgid "There is no data for this report." +msgstr "Bu rapor için veri bulunmamakta." + +#: admin/index.php:705 +#, php-format +msgid "There was an error adding \"%s\" to the responsible list for \"%s\":" +msgstr "" + +#: admin/index.php:911 +msgid "There was an error creating the attribute:" +msgstr "" + +#: admin/index.php:1051 +msgid "There was an error creating the form reply:" +msgstr "" + +#: admin/index.php:561 +msgid "There was an error creating the priority:" +msgstr "" + +#: admin/index.php:309 +msgid "There was an error creating the queue:" +msgstr "" + +#: admin/index.php:426 +msgid "There was an error creating the state:" +msgstr "" + +#: admin/index.php:780 +msgid "There was an error creating the version:" +msgstr "" + +#: admin/index.php:1010 +msgid "There was an error deleting the attribute:" +msgstr "" + +#: admin/index.php:1139 +msgid "There was an error deleting the form reply:" +msgstr "" + +#: admin/index.php:665 +msgid "There was an error deleting the priority:" +msgstr "" + +#: admin/index.php:395 +msgid "There was an error deleting the queue:" +msgstr "" + +#: admin/index.php:528 +msgid "There was an error deleting the state:" +msgstr "" + +#: ticket/delete.php:75 +msgid "There was an error deleting the ticket:" +msgstr "" + +#: admin/index.php:275 +msgid "There was an error deleting the type:" +msgstr "" + +#: admin/index.php:868 +msgid "There was an error deleting the version:" +msgstr "" + +#: admin/index.php:982 +msgid "There was an error editing the attribute:" +msgstr "" + +#: admin/index.php:1104 +msgid "There was an error editing the form reply:" +msgstr "" + +#: admin/index.php:615 +msgid "There was an error editing the priority:" +msgstr "" + +#: admin/index.php:375 +msgid "There was an error editing the queue:" +msgstr "" + +#: admin/index.php:480 +msgid "There was an error editing the state:" +msgstr "" + +#: admin/index.php:841 +msgid "There was an error editing the version:" +msgstr "" + +#: lib/Forms/Admin/User.php:35 +#, php-format +msgid "There was an error listing users: %s; %s" +msgstr "" + +#: queue/index.php:52 +#, php-format +msgid "There was an error locating tickets in this queue: " +msgstr "" + +#: admin/index.php:219 +msgid "There was an error modifying the type:" +msgstr "" + +#: search.php:140 +#, php-format +msgid "There was an error performing your search: %s" +msgstr "" + +#: admin/index.php:750 +#, php-format +msgid "" +"There was an error removing \"%s\" from the responsible list for \"%s\":" +msgstr "" + +#: admin/index.php:638 +msgid "There was an error setting the default priority:" +msgstr "" + +#: admin/index.php:502 +msgid "There was an error setting the default state:" +msgstr "" + +#: lib/Forms/AddComment.php:37 lib/Forms/EditTicket.php:166 +msgid "This comment is visible to everyone" +msgstr "Bu yorum herkese açýk" + +#: lib/Forms/Admin/Queue.php:31 +msgid "" +"This email address will be used when sending notifications for any queue " +"tickets." +msgstr "" +"Bu eposta adresi bir kuyruk için gönderilen bilgiler için kullanýlacaktýr." + +#: data.php:29 +msgid "This is not a search results template." +msgstr "" + +#: lib/Query.php:435 lib/Query.php:668 +msgid "This query element cannot be edited." +msgstr "" + +#: ticket/queue.php:81 lib/Forms/CreateTicket.php:88 +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this queue, you will not " +"be able to create tickets." +msgstr "" + +#: lib/Ticket.php:638 lib/Ticket.php:820 +msgid "Ticket" +msgstr "Bilet" + +#: ticket/delete.php:71 +#, php-format +msgid "Ticket %d has been deleted." +msgstr "Bilet %d baþarýyla silinmiþtir." + +#: lib/api.php:850 +#, php-format +msgid "Ticket %s - %s" +msgstr "" + +#: lib/Driver/sql.php:1081 +#, php-format +msgid "Ticket %s was not found." +msgstr "Bilet %s bulunamadý." + +#: search.php:170 +msgid "Ticket Search" +msgstr "Bilet Ara" + +#: lib/Forms/CreateTicket.php:142 +msgid "Ticket State" +msgstr "Bilet Durumu" + +#: templates/reports/stats.inc:1 +msgid "Ticket Stats" +msgstr "Bilet Ýstatistikleri" + +#: lib/Forms/CreateTicket.php:80 +msgid "Ticket Type" +msgstr "Bilet Türü" + +#: lib/Forms/Admin/Queue.php:103 +msgid "Ticket Types associated with this Queue" +msgstr "" + +#: lib/Ticket.php:633 +#, php-format +msgid "Ticket URL: %s" +msgstr "Bilet URL'si: %s" + +#: ticket/update.php:94 +msgid "Ticket Updated" +msgstr "Bilet Güncelleþtirildi" + +#: lib/api.php:871 +msgid "Tickets" +msgstr "Biletler" + +#: query/rss.php:70 +#, php-format +msgid "Tickets matching the query \"%s\"." +msgstr "" + +#: templates/prefs/sourceselect.inc:322 +msgid "" +"To select multiple fields, hold down the Control (PC) or Command (Mac) while " +"clicking." +msgstr "" + +#: ticket/queue.php:89 lib/Whups.php:681 lib/Ticket.php:608 lib/Ticket.php:805 +#: lib/Ticket.php:945 lib/Forms/Query.php:174 lib/Renderer/Query.php:108 +#: config/prefs.php.dist:48 +msgid "Type" +msgstr "Tür" + +#: lib/Renderer/Comment.php:105 +#, php-format +msgid "Type ⇒ %s" +msgstr "" + +#: lib/Forms/Admin/Type.php:23 lib/Forms/Admin/Type.php:70 +#: lib/Forms/Admin/Type.php:160 +msgid "Type Description" +msgstr "Tür Tanýmlamasý" + +#: lib/Forms/Admin/Type.php:22 lib/Forms/Admin/Type.php:48 +#: lib/Forms/Admin/Type.php:67 lib/Forms/Admin/Type.php:156 +msgid "Type Name" +msgstr "Tür Adý" + +#: search/rss.php:39 +#, php-format +msgid "Type: %s; State: %s" +msgstr "" + +#: lib/Ticket.php:961 +msgid "Unassigned" +msgstr "Atanmamýþ" + +#: lib/Block/unassigned.php:3 lib/Block/unassigned.php:24 +msgid "Unassigned Tickets" +msgstr "Atanmamýþ Biletler" + +#: lib/Forms/Admin.php:42 +msgid "Unassigned tickets" +msgstr "Atanmamýþ biletler" + +#: lib/Driver.php:196 +msgid "Unconfirmed" +msgstr "Tastiklenmemiþ" + +#: lib/Renderer/Query.php:167 lib/Renderer/Query.php:207 +#, php-format +msgid "Unknown node type %s" +msgstr "" + +#: lib/api.php:790 +msgid "Update" +msgstr "Güncelle" + +#: ticket/update.php:108 +#, php-format +msgid "Update %s" +msgstr "%s Güncelle" + +#: templates/admin/mtmatrix.inc:29 +msgid "Update Associations" +msgstr "Ýliþkiyi Güncelle" + +#: lib/Whups.php:687 lib/Ticket.php:981 lib/Renderer/Query.php:146 +msgid "Updated" +msgstr "Güncelleþtirilme" + +#: lib/Ticket.php:615 lib/Ticket.php:640 +msgid "Updated By" +msgstr "Þahýs Tarafýndan Güncelleþtirildi" + +#: lib/Forms/Query.php:327 lib/Forms/Search.php:58 +msgid "Updated from" +msgstr "Tarihinden beri Güncelleþtirilme" + +#: lib/Forms/Query.php:328 +msgid "Updated to" +msgstr "Tarihine kadar Güncelleþtirilme" + +#: lib/Forms/Admin/User.php:34 lib/Forms/Admin/User.php:44 +#: lib/Forms/Admin/User.php:47 +msgid "User" +msgstr "Kullanýcý" + +#: lib/Forms/Query.php:44 +msgid "User ID" +msgstr "Kullanýcý ID'si" + +#: lib/Forms/Admin/Queue.php:131 +msgid "Users responsible for this Queue" +msgstr "Bu Kuyrukdan sorumlu kullanýcýlar" + +#: lib/Forms/Admin/User.php:79 +msgid "Users responsible for this queue" +msgstr "Bu kuyruktan sorumlu kullanýcýlar" + +#: lib/Ticket.php:607 lib/Ticket.php:804 lib/Forms/Query.php:185 +#: lib/Renderer/Query.php:102 config/prefs.php.dist:51 +msgid "Version" +msgstr "Sürüm" + +#: lib/Forms/Admin/Version.php:24 lib/Forms/Admin/Version.php:70 +#: lib/Forms/Admin/Version.php:93 +msgid "Version Description" +msgstr "Sürüm Tanýmlamasý" + +#: lib/Forms/Admin/Version.php:23 lib/Forms/Admin/Version.php:48 +#: lib/Forms/Admin/Version.php:67 lib/Forms/Admin/Version.php:90 +msgid "Version Name" +msgstr "Sürüm Adý" + +#: ticket/type.php:43 ticket/queue.php:50 +msgid "Viewable only by members of" +msgstr "Sadece þu grublarin üyeleri tarafýndan izlenebilsin" + +#: lib/Forms/AddComment.php:25 +msgid "Watch this ticket" +msgstr "Bu bileti takip et" + +#: ticket/watch.php:78 +#, php-format +msgid "Watchers for %s" +msgstr "%s takip edenler" + +#: config/prefs.php.dist:104 +msgid "Weekday Day Month" +msgstr "Ýþgünü Gün Ay" + +#: config/prefs.php.dist:105 +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "Ýþgünü Gün Ay SS:DD:SS TZ" + +#: ticket/delete.php:33 lib/Forms/Query.php:449 lib/Forms/Admin/Queue.php:174 +#: lib/Forms/Admin/State.php:121 lib/Forms/Admin/Type.php:176 +#: lib/Forms/Admin/Reply.php:110 lib/Forms/Admin/Version.php:96 +#: lib/Forms/Admin/Attribute.php:149 lib/Forms/Admin/Priority.php:121 +msgid "Yes" +msgstr "Evet" + +#: view.php:54 +#, php-format +msgid "You are not allowed to view ticket %d." +msgstr "%d biletini bakmaya izniniz yok." + +#: lib/Driver/sql.php:1090 +#, php-format +msgid "You do not have permission to access this ticket (%s)." +msgstr "Ýzniniz bu biletin (%s) eriþimine yok." + +#: lib/api.php:375 +msgid "You do not have permission to update this ticket." +msgstr "Bu bileti güncelleþtirmeye izniniz yok" + +#: lib/Block/myrequests.php:46 +msgid "You have no open requests." +msgstr "Mevcut açýk baþvurularýnýz yok." + +#: lib/Block/query.php:28 lib/Forms/Query.php:419 +msgid "You have no saved queries." +msgstr "Kaydedilmiþ sorgulamalarýnýz yok." + +#: lib/Whups.php:714 +msgid "You must select at least one queue to send reminders for." +msgstr "" + +#: lib/Forms/AddComment.php:18 lib/Forms/CreateTicket.php:132 +msgid "Your Email Address" +msgstr "Eposta adresiniz" + +#: ticket/create.php:60 +#, php-format +msgid "" +"Your ticket ID is %s. An appropriate person has been notified of this " +"request." +msgstr "Bilet ID'niz %s. Bu baþvuru için sorumlu bir þahýsa haber verildi." + +#: lib/Mail.php:245 +msgid "[ Could not render body of message. ]" +msgstr "" + +#: lib/Whups.php:778 +msgid "_Admin" +msgstr "_Yönetim" + +#: lib/Whups.php:302 +msgid "_Comment" +msgstr "_Yorum" + +#: query/index.php:157 +msgid "_Date Criteria" +msgstr "_Veri Kriterleri" + +#: lib/Whups.php:320 +msgid "_Delete" +msgstr "_Sil" + +#: lib/Query.php:237 +msgid "_Delete Query" +msgstr "Sorgulamayý _Sil" + +#: lib/Query.php:218 +msgid "_Edit Query" +msgstr "Sorgulamayý _Düzenle" + +#: admin/index.php:33 +msgid "_Edit Queues" +msgstr "Kuyruklarý _Düzenle" + +#: templates/menu.inc:5 +msgid "_Go" +msgstr "" + +#: query/index.php:156 +msgid "_Group Criteria" +msgstr "Kriterleri _Gruplaþtýr" + +#: lib/Whups.php:296 +msgid "_History" +msgstr "_Geçmiþ" + +#: lib/Query.php:231 +msgid "_Load Query" +msgstr "Sorgulamalarý _Yükle" + +#: lib/Whups.php:769 +#, php-format +msgid "_My %s" +msgstr "_Benim %s" + +#: lib/Whups.php:772 +msgid "_New Ticket" +msgstr "_Yeni Bilet" + +#: query/index.php:154 +msgid "_Property Criteria" +msgstr "Ö_zellik Kriteri" + +#: lib/Whups.php:773 +msgid "_Query Builder" +msgstr "_Sorgulama Kurucusu" + +#: lib/Whups.php:774 +msgid "_Reports" +msgstr "_Raporlar" + +#: lib/Whups.php:771 +msgid "_Search" +msgstr "_Ara" + +#: query/index.php:158 +msgid "_Text Criteria" +msgstr "_Yazý Kriteri" + +#: lib/Whups.php:298 +msgid "_Update" +msgstr "_Güncelle" + +#: query/index.php:155 +msgid "_User Criteria" +msgstr "_Kullanýcý Kriteri" + +#: lib/Whups.php:306 +msgid "_Watch" +msgstr "_Takip" + +#: lib/Renderer/Query.php:187 +msgid "contains (case insensitive) substring" +msgstr "" + +#: lib/Renderer/Query.php:191 +msgid "contains (case sensitive) substring" +msgstr "" + +#: lib/Renderer/Query.php:195 +msgid "contains the word" +msgstr "" + +#: lib/Mail.php:95 lib/Mail.php:119 lib/Mail.php:147 +msgid "current user:" +msgstr "mevcut kullanýcý:" + +#: lib/api.php:859 +msgid "estimated time" +msgstr "tahmin zaman" + +#: lib/Renderer/Query.php:183 +msgid "is" +msgstr "" + +#: lib/Renderer/Query.php:175 +msgid "is greater than" +msgstr "" + +#: lib/Renderer/Query.php:179 +msgid "is less than" +msgstr "" + +#: lib/Renderer/Query.php:199 +msgid "matches the pattern" +msgstr "" + +#: lib/Forms/Search.php:57 lib/Forms/Search.php:59 lib/Forms/Search.php:61 +#: lib/Forms/Search.php:63 lib/Forms/Search.php:65 +msgid "to" +msgstr "" diff --git a/whups/po/uk_UA.po b/whups/po/uk_UA.po new file mode 100644 index 000000000..c4652b1ec --- /dev/null +++ b/whups/po/uk_UA.po @@ -0,0 +1,2461 @@ +# Ukrainian translations for Whups package. +# Copyright 2008-2009 The Horde Project +# This file is distributed under the same license as the Whups package. +# Automatically generated, 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: Whups 1.0-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-11-28 12:45+0200\n" +"PO-Revision-Date: 2008-12-05 12:00+0200\n" +"Last-Translator: Andriy Kopystyansky \n" +"Language-Team: Ukrainian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CP1251\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" +"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: admin/index.php:745 +#, php-format +msgid "\"%s\" is no longer among those responsible for \"%s\"" +msgstr "\"%s\" á³ëüøå íå º ñåðåä â³äïîâ³äàëüíèõ çà \"%s\"" + +#: templates/menu.inc:5 +msgid "#Id" +msgstr "" + +#: templates/ticket/watchers.inc:3 +#, php-format +msgid "%d people watching, %d people responsible" +msgstr "%d îñ³á ñïîñòåð³ãàþòü, %d îñîáà â³äïîâ³äàëüíà" + +#: queue/rss.php:96 +#, php-format +msgid "%s %s tickets in %s" +msgstr "%s %s òàðíàí³â â %s" + +#: queue/rss.php:100 +#, php-format +msgid "%s %s tickets in all queues" +msgstr "%s %s òàðãàí³â ó âñ³õ ÷åðãàõ" + +#: lib/Renderer/Comment.php:120 +#, php-format +msgid "%s ⇒ %s" +msgstr "" + +#: lib/Driver.php:497 +#, php-format +msgid "%s (%s) wrote:" +msgstr "%s (%s) íàïèñàâ:" + +#: admin/index.php:700 +#, php-format +msgid "%s added to those responsible for \"%s\"" +msgstr "%s äîäàíèé äî â³äïîâ³äàëüíèõ çà \"%s\"" + +#: templates/reports/stats.inc:15 +#, php-format +msgid "%s days" +msgstr "%s äí³â" + +#: queue/rss.php:104 +#, php-format +msgid "%s tickets in %s" +msgstr "%s òàðãàí³â â %s" + +#: queue/rss.php:108 +#, php-format +msgid "%s tickets in all queues" +msgstr "%s òàðãàí³â ó âñ³õ ÷åðãàõ" + +#: ticket/watch.php:60 +#, php-format +msgid "%s will be notified when this ticket is updated." +msgstr "%s áóäå ïîâ³äîìëåíèé ïðè îíîâëåíí³ öüîãî çàïèòó." + +#: ticket/watch.php:72 +#, php-format +msgid "%s will no longer receive updates for this ticket." +msgstr "%s á³ëüøå íå îòðèìóâàòèìå îíîâëåíü ùîäî öüîãî çàïèòó." + +#: admin/index.php:109 +msgid "- Stage 1" +msgstr "- Ñòàä³ÿ 1" + +#: admin/index.php:114 +msgid "- Stage 2" +msgstr "- Ñòàä³ÿ 2" + +#: scripts/mail-filter.php:172 +msgid "--queue-name or --queue-id must specify a valid and public queue." +msgstr "" + +#: templates/prevnext.inc:16 +msgid "<>" +msgstr "" + +#: lib/Forms/Query.php:411 +msgid "Load Query" +msgstr "" + +#: lib/Forms/VarRenderer.php:46 +msgid "Loading..." +msgstr "Çàâàíòàæóþ..." + +#: config/prefs.php.dist:106 +msgid "MM/DD/YY" +msgstr "" + +#: config/prefs.php.dist:107 +msgid "MM/DD/YY HH:MM:SS" +msgstr "" + +#: lib/Forms/Admin/Type.php:193 +#, php-format +msgid "Make a clone of %s" +msgstr "" + +#: lib/Forms/AddComment.php:38 lib/Forms/EditTicket.php:167 +msgid "Make this comment visible only to members of a group?" +msgstr "Çðîáèòè öåé êîìåíòàð âèäèìèì ò³ëüêè äëÿ ÷ëåí³â ãðóïè?" + +#: lib/Forms/Query.php:274 +msgid "Match" +msgstr "" + +#: lib/Forms/Query.php:45 lib/Forms/Query.php:129 lib/Forms/Query.php:275 +msgid "Match Operator" +msgstr "" + +#: lib/Query.php:167 +msgid "Match Pattern" +msgstr "" + +#: lib/Query.php:166 +msgid "Match Word" +msgstr "" + +#: reports.php:30 +msgid "Maximum time a ticket is unresolved" +msgstr "Ìàêñèìàëüíèé ÷àñ, çà ÿêèé òàðãàí íå áóâ âèð³øåíèé" + +#: lib/Block/tree_menu.php:3 +msgid "Menu List" +msgstr "Ñïèñîê ìåíþ" + +#: reports.php:31 +msgid "Minimum time a ticket is unresolved" +msgstr "̳í³ìàëüíèé ÷àñ, çà ÿêèé òàðãàí íå áóâ âèð³øåíèé" + +#: config/prefs.php.dist:146 +msgid "Most recent first" +msgstr "Ñïî÷àòêó ñâ³æ³ø³" + +#: templates/prefs/sourceselect.inc:312 +msgid "Move down" +msgstr "Äîíèçó" + +#: templates/prefs/sourceselect.inc:310 +msgid "Move up" +msgstr "Äîãîðè" + +#: ticket/queue.php:181 +#, php-format +msgid "Moved ticket %d to \"%s\"" +msgstr "Ïåðåíåñåíî òàðãàíà %d äî \"%s\"" + +#: mybugs.php:54 +#, php-format +msgid "My %s" +msgstr "Ìî¿ %s" + +#: mybugs_edit.php:33 +#, php-format +msgid "My %s :: Add Content" +msgstr "Ìî¿ %s :: Äîäàòè êîíòåíò" + +#: search.php:178 lib/Block/myqueries.php:3 lib/Block/myqueries.php:24 +msgid "My Queries" +msgstr "Ìî¿ çàïèòè" + +#: lib/Block/myrequests.php:3 lib/Block/myrequests.php:24 +msgid "My Requests" +msgstr "" + +#: lib/Block/mytickets.php:3 lib/Block/mytickets.php:24 +#: config/prefs.php.dist:75 +msgid "My Tickets" +msgstr "Ìî¿ òàðãàíè" + +#: lib/api.php:884 +msgid "My tickets by assignment date" +msgstr "Ìî¿ òàðãàíè ïî äàò³ ïðèçíà÷åííÿ" + +#: lib/api.php:883 +msgid "My tickets by creation date" +msgstr "Ìî¿ òàðãàíè ïî äàò³ ñòâîðåííÿ" + +#: lib/api.php:885 +msgid "My tickets by due date" +msgstr "Ìî¿ òàðãàíè çà ïåð³îäîì 䳿" + +#: lib/api.php:886 +msgid "My tickets by resolution date" +msgstr "Ìî¿ òàðãàíè ïî äàò³ âèð³øåííÿ" + +#: lib/Forms/Query.php:422 +msgid "Name" +msgstr "²ì'ÿ" + +#: lib/Forms/Admin/Type.php:198 +msgid "Name of the cloned copy" +msgstr "" + +#: lib/Query.php:216 +msgid "Ne_w Query" +msgstr "Íîâèé çàïèò" + +#: lib/Driver.php:197 +msgid "New" +msgstr "Íîâèé" + +#: lib/Ticket.php:618 lib/Ticket.php:711 +msgid "New Attachment" +msgstr "Íîâèé äîäàòîê" + +#: lib/Renderer/Comment.php:58 lib/Renderer/Comment.php:62 +#, php-format +msgid "New Attachment: %s" +msgstr "Íîâèé äîäàòîê: %s" + +#: ticket/queue.php:32 +msgid "New Queue" +msgstr "Íîâà ÷åðãà" + +#: ticket/create.php:67 lib/Block/tree_menu.php:21 +msgid "New Ticket" +msgstr "Íîâèé òàðãàí" + +#: ticket/type.php:31 +msgid "New Type" +msgstr "Íîâèé òèï" + +#: templates/prevnext.inc:26 +msgid "Next>" +msgstr "Íàñòóïíèé>" + +#: ticket/delete.php:33 lib/Forms/Query.php:449 +#: lib/Forms/Admin/Priority.php:121 lib/Forms/Admin/State.php:121 +#: lib/Forms/Admin/Reply.php:110 lib/Forms/Admin/Attribute.php:149 +#: lib/Forms/Admin/Type.php:176 lib/Forms/Admin/Version.php:96 +#: lib/Forms/Admin/Queue.php:174 +msgid "No" +msgstr "ͳ" + +#: lib/Ticket.php:100 +#, php-format +msgid "" +"No priority for this ticket and no default priority for ticket type \"%s\" " +"specified." +msgstr "" + +#: lib/Block/myqueries.php:46 +msgid "No queries have been saved." +msgstr "" + +#: lib/Driver/sql.php:553 lib/Block/query.php:62 +msgid "No query to run" +msgstr "" + +#: lib/Block/queuecontents.php:25 +msgid "No queues available." +msgstr "Íåìà äîñòóïíèõ ÷åðã." + +#: lib/Ticket.php:92 +#, php-format +msgid "" +"No state for this ticket and no default state for ticket type \"%s\" " +"specified." +msgstr "" + +#: reports.php:35 +msgid "No stats available." +msgstr "Íåìà ñòàòèñòè÷íèõ äàíèõ." + +#: lib/Driver.php:533 +#, php-format +msgid "No such backend \"%s\" found" +msgstr "" + +#: lib/View.php:33 +#, php-format +msgid "No such view \"%s\" found" +msgstr "" + +#: lib/Block/mytickets.php:45 +msgid "No tickets are assigned to you." +msgstr "Æîäíîãî òàðãàíà Âàì íå ïðèçíà÷åíî." + +#: lib/Block/unassigned.php:45 +msgid "No tickets are unassigned!" +msgstr "Æîäíîãî ïðèçíà÷åíîãî òàðãàíà!" + +#: lib/Block/queuecontents.php:62 lib/Block/queuecontents.php:73 +msgid "No tickets in queue." +msgstr "Æîäíîãî òàðãàíà â ÷åðç³." + +#: lib/Whups.php:716 +msgid "No tickets matched your search criteria." +msgstr "Æîäåí òàðãàí íå â³äïîâ³äຠêðèòåð³þ ïîøóêó." + +#: lib/Ticket.php:84 +#, php-format +msgid "No type for this ticket and no default type for queue \"%s\" specified." +msgstr "" + +#: templates/prefs/sourceselect.inc:35 lib/Reports.php:67 +msgid "None" +msgstr "Æîäåí" + +#: lib/Renderer/Query.php:79 lib/Forms/Query.php:26 +msgid "Not" +msgstr "Íå" + +#: config/prefs.php.dist:17 +msgid "Notification Options" +msgstr "Îïö³¿ îïîâ³ùåíü" + +#: config/prefs.php.dist:117 +msgid "Only notify me of ticket changes from other users?" +msgstr "Ñïîâ³ùàòè ìåíå ò³ëüêè êîëè òàðãàí çì³íåíèé ³íøèìè îñîáàìè?" + +#: config/prefs.php.dist:126 +msgid "Only notify me of ticket changes with comments?" +msgstr "Ñïîâ³ùàòè ìåíå ò³ëüêè êîëè òàðãàí çì³íåíèé ç êîìåíòàðåì?" + +#: queue/rss.php:43 +msgid "Open" +msgstr "" + +#: lib/Block/queuesummary.php:49 +msgid "Open Tickets" +msgstr "" + +#: reports.php:23 +msgid "Open Tickets by Owner" +msgstr "" + +#: reports.php:21 +msgid "Open Tickets by Priority" +msgstr "" + +#: reports.php:18 +msgid "Open Tickets by Queue" +msgstr "" + +#: reports.php:22 +msgid "Open Tickets by Requester" +msgstr "" + +#: reports.php:19 +msgid "Open Tickets by State" +msgstr "" + +#: reports.php:20 +msgid "Open Tickets by Type" +msgstr "" + +#: lib/Block/queuecontents.php:47 +#, php-format +msgid "Open Tickets in %s" +msgstr "" + +#: queue/rss.php:119 queue/index.php:43 queue/index.php:57 +#, php-format +msgid "Open tickets in %s" +msgstr "³äêðèò³ òàðãàíè â %s" + +#: queue/rss.php:121 +msgid "Open tickets in all queues." +msgstr "" + +#: lib/Renderer/Query.php:78 lib/Forms/Query.php:25 +msgid "Or" +msgstr "Àáî" + +#: lib/Whups.php:681 lib/Ticket.php:617 lib/Ticket.php:701 lib/Ticket.php:702 +#: lib/Ticket.php:705 lib/Ticket.php:812 lib/Ticket.php:833 lib/Ticket.php:958 +#: lib/Renderer/Query.php:84 lib/Forms/CreateTicket.php:225 +#: lib/Forms/CreateTicket.php:243 lib/Forms/EditTicket.php:104 +msgid "Owners" +msgstr "Âëàñíèêè" + +#: lib/Whups.php:866 +#, php-format +msgid "Permanently delete %s?" +msgstr "Íàçàâæäè âèòåðòè %s?" + +#: ticket/type.php:74 ticket/delete.php:51 ticket/deleteAttachment.php:21 +#: ticket/update.php:22 ticket/queue.php:131 +msgid "Permission Denied" +msgstr "Äîñòóï çàáîðîíåíèé" + +#: ticket/delete.php:40 lib/Forms/EditTicket.php:197 +msgid "Permission Denied." +msgstr "Äîñòóï çàáîðîíåíèé." + +#: lib/Forms/Query.php:459 query/run.php:44 query/index.php:31 +#, php-format +msgid "Permission denied." +msgstr "Äîñòóï çàáîðîíåíèé." + +#: lib/Imple/ContactAutoCompleter.php:227 +msgid "Please resolve ambiguous or invalid addresses." +msgstr "Áóäü-ëàñêà, âèïðàâòå íåêîðåêòí³ àäðåñè." + +#: lib/Forms/Admin/Type.php:93 lib/Forms/Admin/Type.php:171 +msgid "Priorities for this Type" +msgstr "Ïð³îðèòåòè äëÿ öüîãî òèïó" + +#: ticket/type.php:66 ticket/queue.php:117 lib/Whups.php:669 lib/Whups.php:678 +#: lib/Ticket.php:610 lib/Ticket.php:807 lib/Ticket.php:953 +#: lib/Renderer/Query.php:125 lib/Forms/Query.php:198 +#: lib/Forms/CreateTicket.php:147 lib/Forms/EditTicket.php:68 +#: config/prefs.php.dist:49 +msgid "Priority" +msgstr "Ïð³îðèòåò" + +#: lib/Renderer/Comment.php:115 +#, php-format +msgid "Priority ⇒ %s" +msgstr "Ïð³îðèòåò ⇒ %s" + +#: lib/Forms/Admin/Priority.php:24 lib/Forms/Admin/Priority.php:70 +#: lib/Forms/Admin/Priority.php:118 +msgid "Priority Description" +msgstr "Îïèñ ïð³îðèòåòó" + +#: lib/Forms/Admin/Priority.php:23 lib/Forms/Admin/Priority.php:48 +#: lib/Forms/Admin/Priority.php:67 lib/Forms/Admin/Priority.php:94 +#: lib/Forms/Admin/Priority.php:115 +msgid "Priority Name" +msgstr "Íàçâà ïð³îðèòåòó" + +#: search.php:178 +msgid "Public Queries" +msgstr "Ïóáë³÷í³ çàïèòè" + +#: query/index.php:172 +msgid "Query Builder" +msgstr "" + +#: lib/Forms/Query.php:387 +msgid "Query Name" +msgstr "Íàçâà çàïèòó" + +#: lib/Forms/QueryParameterForm.php:20 +msgid "Query Parameters" +msgstr "Ïàðàìåòðè çàïèòó" + +#: lib/Block/query.php:3 lib/Block/query.php:49 query/rss.php:63 +#: query/run.php:79 +msgid "Query Results" +msgstr "Ðåçóëüòàòè çàïèòó" + +#: lib/Forms/Query.php:389 +msgid "Query Slug" +msgstr "" + +#: lib/Block/query.php:33 +msgid "Query to run" +msgstr "" + +#: lib/Whups.php:679 lib/Ticket.php:606 lib/Ticket.php:803 lib/Ticket.php:918 +#: lib/Ticket.php:923 lib/Renderer/Query.php:94 lib/Block/queuesummary.php:49 +#: lib/Block/queuecontents.php:32 lib/Forms/Query.php:181 +#: lib/Forms/Search.php:40 config/prefs.php.dist:50 +msgid "Queue" +msgstr "×åðãà" + +#: lib/Renderer/Comment.php:100 +#, php-format +msgid "Queue ⇒ %s" +msgstr "×åðãà ⇒ %s" + +#: lib/Block/queuecontents.php:3 lib/Block/queuecontents.php:49 +msgid "Queue Contents" +msgstr "Êîíòåíò ÷åðãè" + +#: lib/Forms/Admin/Queue.php:24 lib/Forms/Admin/Queue.php:89 +#: lib/Forms/Admin/Queue.php:170 +msgid "Queue Description" +msgstr "Îïèñ ÷åðãè" + +#: lib/Forms/Admin/Queue.php:30 lib/Forms/Admin/Queue.php:97 +msgid "Queue Email" +msgstr "Å-ïîøòà ÷åðãè" + +#: lib/Forms/CreateTicket.php:34 lib/Forms/CreateTicket.php:45 +#: lib/Forms/Admin/Queue.php:23 lib/Forms/Admin/Queue.php:60 +#: lib/Forms/Admin/Queue.php:85 lib/Forms/Admin/Queue.php:166 +msgid "Queue Name" +msgstr "Íàçâà ÷åðãè" + +#: lib/Forms/Admin/Queue.php:26 lib/Forms/Admin/Queue.php:93 +msgid "Queue Slug" +msgstr "" + +#: lib/Block/queuesummary.php:3 lib/Block/queuesummary.php:24 +msgid "Queue Summary" +msgstr "Àíîòàö³ÿ ÷åðãè" + +#: ticket/queue.php:86 lib/Ticket.php:932 lib/Ticket.php:938 +#: lib/Forms/CreateTicket.php:93 +msgid "Queue Version" +msgstr "Âåðñ³ÿ ÷åðãè" + +#: admin/index.php:35 +msgid "Queue/Type Matri_x" +msgstr "Ìàòðèöÿ ×åðãà/Òèï" + +#: templates/admin/mtmatrix.inc:6 +msgid "Queue/Type Matrix" +msgstr "Ìàòðèöÿ ×åðãà/Òèï" + +#: lib/api.php:163 lib/api.php:781 +msgid "Queues" +msgstr "×åðãè" + +#: templates/prevnext.inc:32 +msgid "Re_turn to Search Results" +msgstr "Ïîâåðíóòèñÿ äî ðåçóëüòàò³â ïîøóêó" + +#: lib/Forms/Admin/Attribute.php:147 +msgid "Really delete this attribute? This may cause data problems!" +msgstr "Ñïðàâä³ âèòåðòè öåé àòðèáóò? Öå ìîæå ñïðè÷èíèòè ïðîáëåìó ç äàíèìè!" + +#: lib/Forms/Admin/Reply.php:108 +msgid "Really delete this form reply?" +msgstr "" + +#: lib/Forms/Admin/Priority.php:122 +msgid "Really delete this priority? This may cause data problems!" +msgstr "Ñïðàâä³ âèòåðòè öåé ïð³îðèòåò? Öå ìîæå ñïðè÷èíèòè ïðîáëåìó ç äàíèìè!" + +#: lib/Forms/Query.php:450 +msgid "Really delete this query? This operation is not undoable." +msgstr "" + +#: lib/Forms/Admin/Queue.php:176 +msgid "Really delete this queue? This may cause data problems!" +msgstr "Ñïðàâä³ âèòåðòè öþ ÷åðãó? Öå ìîæå ñïðè÷èíèòè ïðîáëåìó ç äàíèìè!" + +#: lib/Forms/Admin/State.php:122 +msgid "Really delete this state? This may cause data problems!" +msgstr "Ñïðàâä³ âèòåðòè öåé ñòàí? Öå ìîæå ñïðè÷èíèòè ïðîáëåìó ç äàíèìè!" + +#: ticket/delete.php:34 +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "" +"Ñïðàâä³ âèòåðòè öüîãî òàðãàíà? ³í íå áóäà àðõ³âîâàíèé ³ áóäå âòðà÷åíèé " +"íàçàâæäè." + +#: lib/Forms/Admin/Type.php:178 +msgid "Really delete this type? This may cause data problems!" +msgstr "Ñïðàâä³ âèòåðòè öåé òèï? Öå ìîæå ñïðè÷èíèòè ïðîáëåìó ç äàíèìè!" + +#: lib/Forms/Admin/Version.php:97 +msgid "Really delete this version? This may cause data problems!" +msgstr "Ñïðàâä³ âèòåðòè öþ âåðñ³þ? Öå ìîæå ñïðè÷èíèòè ïðîáëåìó ç äàíèìè!" + +#: lib/Mail.php:217 +msgid "Received message:" +msgstr "Îòðèìàí³ ëèñòè:" + +#: search.php:162 +msgid "Refine Search" +msgstr "Óòî÷íèòè ïîøóê" + +#: admin/index.php:1170 +msgid "Reminders were sent." +msgstr "Íàãàäóâàííÿ ðîç³ñëàíî." + +#: lib/Forms/Admin/User.php:59 +msgid "Remove User" +msgstr "Âèäàëèòè êîðèñòóâà÷à" + +#: ticket/watch.php:49 +msgid "Remove Watcher" +msgstr "Âèäàëèòè ñïîñòåð³ãà÷à" + +#: templates/prefs/sourceselect.inc:300 +msgid "Remove source" +msgstr "Âèäàëèòè äæåðåëî" + +#: lib/Renderer/Comment.php:95 +msgid "Reply to this comment" +msgstr "³äïîâ³ñòè íà öåé êîìåíòàð" + +#: reports.php:40 +msgid "Reports" +msgstr "Çâ³òè" + +#: lib/Whups.php:680 lib/Ticket.php:965 lib/Renderer/Query.php:86 +msgid "Requester" +msgstr "Çàìîâíèê" + +#: lib/Forms/Admin/Attribute.php:28 lib/Forms/Admin/Attribute.php:99 +msgid "Required Attribute?" +msgstr "Íåîáõ³äíèé àòðèáóò?" + +#: lib/Whups.php:685 lib/api.php:927 lib/Ticket.php:991 lib/Driver.php:199 +#: lib/Renderer/Query.php:151 config/prefs.php.dist:54 +msgid "Resolved" +msgstr "Âèêîíàíèé" + +#: lib/Forms/Query.php:330 lib/Forms/Search.php:60 +msgid "Resolved from" +msgstr "" + +#: lib/Forms/Query.php:331 +msgid "Resolved to" +msgstr "" + +#: lib/Forms/Admin/User.php:61 +msgid "Responsible Users" +msgstr "³äïîâ³äàëüí³ êîðèñòóâà÷³" + +#: lib/Whups.php:306 +msgid "S_et Queue" +msgstr "Âñòàíîâèòè ÷åðãó" + +#: lib/Query.php:234 +msgid "Sa_ve Query" +msgstr "Çáåðåãòè çàïèò" + +#: templates/view/results.inc:96 lib/Forms/Query.php:385 +msgid "Save" +msgstr "Çáåðåãòè" + +#: query/index.php:233 +msgid "Save Criterion" +msgstr "Çáåðåãòè êðèòåð³é" + +#: lib/Forms/Query.php:384 +msgid "Save Query" +msgstr "Çáåðåãòè çàïèò" + +#: search.php:69 lib/Forms/Search.php:19 +msgid "Save as Query" +msgstr "Çáåðåãòè ÿê Çàïèò" + +#: search.php:155 lib/Block/tree_menu.php:30 +msgid "Search" +msgstr "Ïîøóê" + +#: lib/Forms/Query.php:278 +#, php-format +msgid "Search %s Attribute" +msgstr "Çíàéòè %s àòðèáóò" + +#: lib/Forms/Query.php:272 lib/Forms/Query.php:281 +msgid "Search Attribute" +msgstr "" + +#: lib/Forms/Query.php:48 lib/Forms/Query.php:131 +msgid "Search Comments" +msgstr "" + +#: lib/Forms/Query.php:46 +msgid "Search Owners" +msgstr "" + +#: lib/Forms/Query.php:47 +msgid "Search Requester" +msgstr "" + +#: search.php:147 search/rss.php:55 search/rss.php:59 +msgid "Search Results" +msgstr "Ðåçóëüòàòè ïîøóêó" + +#: templates/prevnext.inc:38 +#, php-format +msgid "Search Results: %s of %s" +msgstr "Ðåçóëüòàòè ïîøóêó: %s ç %s" + +#: lib/Forms/Query.php:130 +msgid "Search Summary" +msgstr "" + +#: config/prefs.php.dist:76 +msgid "Search Tickets" +msgstr "Ïîøóê òàðãàí³â" + +#: config/prefs.php.dist:25 +msgid "Select address book sources for adding and searching for addresses." +msgstr "Âêàæ³òü àäðåñíèêè äëÿ ïîøóêó ³ äîäàâàííÿ àäðåñ." + +#: templates/prefs/sourceselect.inc:319 +msgid "Select all fields to search when expanding addresses." +msgstr "Âèáåð³òü âñ³ ïîëÿ äëÿ ïîøóêó ïðè ðîçêðèòò³ àäðåñ." + +#: config/prefs.php.dist:78 +msgid "Select the view to display after login:" +msgstr "Âèáåð³òü âèä, ÿêèé ïîêàçàòè ï³ñëÿ âõîäó:" + +#: templates/prefs/sourceselect.inc:303 templates/prefs/sourceselect.inc:305 +msgid "Selected Address books:" +msgstr "Âèáðàí³ Àäðåñíèêè:" + +#: admin/index.php:36 +msgid "Sen_d Reminders" +msgstr "" + +#: lib/Forms/Admin.php:23 +msgid "Send Reminders" +msgstr "" + +#: lib/Forms/Admin.php:34 +msgid "Send only for this list of ticket ids" +msgstr "" + +#: lib/Forms/Admin/Priority.php:80 lib/Forms/Admin/Priority.php:82 +msgid "Set Default Priority" +msgstr "Âñòàíîâèòè òèïîâèé ïð³îðèòåò" + +#: lib/Forms/Admin/State.php:80 lib/Forms/Admin/State.php:82 +msgid "Set Default State" +msgstr "Âñòàíîâèòè òèïîâèé ñòàí" + +#: ticket/queue.php:201 ticket/queue.php:210 ticket/queue.php:222 +msgid "Set Queue - Step 1" +msgstr "Âñòàíîâèòè ÷åðãó - Êðîê 1" + +#: ticket/queue.php:202 ticket/queue.php:211 +msgid "Set Queue - Step 2" +msgstr "Âñòàíîâèòè ÷åðãó - Êðîê 2" + +#: ticket/queue.php:212 +msgid "Set Queue - Step 3" +msgstr "Âñòàíîâèòè ÷åðãó - Êðîê 3" + +#: ticket/queue.php:189 +#, php-format +msgid "Set Queue for %s" +msgstr "Âñòàíîâèòè ÷åðãó äëÿ %s" + +#: lib/api.php:800 +msgid "Set Requester" +msgstr "Âñòàíîâèòè àâòîðà" + +#: ticket/type.php:139 ticket/type.php:148 +msgid "Set Type - Step 1" +msgstr "Âñòàíîâèòè òèï - Êðîê 1" + +#: ticket/type.php:140 +msgid "Set Type - Step 2" +msgstr "Âñòàíîâ³òü òèï - Êðîê 2" + +#: ticket/type.php:127 +#, php-format +msgid "Set Type for %s" +msgstr "Âñòàíîâèòè òèï äëÿ %s" + +#: lib/Whups.php:311 +msgid "Set _Type" +msgstr "Âñòàíîâèòè òèï" + +#: config/prefs.php.dist:144 +msgid "Show comments in chronological order, or most recent first?" +msgstr "Ïîêàçóâàòè êîìåíòàð³ â õðîíîëîã³÷íîìó ïîðÿäêó, ÷è ñïåðøó ñâ³æ³ø³?" + +#: config/prefs.php.dist:95 +msgid "Show ticket IDs in the summary view?" +msgstr "" + +#: config/prefs.php.dist:87 +msgid "Show tickets you have requested in the summary view?" +msgstr "" + +#: config/templates.php.dist:16 +msgid "Simple HTML Report" +msgstr "Ïðîñòèé HTML çâ³ò" + +#: lib/Forms/Admin/Queue.php:27 +#, php-format +msgid "" +"Slugs allows direct access to this queue's open tickets by visiting: %s. " +"
Slug names may contain only letters, numbers or the _ (underscore) " +"character." +msgstr "" + +#: templates/view/results.inc:37 templates/view/results.inc:41 +#, php-format +msgid "Sort by %s" +msgstr "Ñîðòóâàòè ïî %s" + +#: lib/Forms/AddComment.php:20 lib/Forms/AddComment.php:51 +#: lib/Forms/CreateTicket.php:136 lib/Forms/CreateTicket.php:175 +msgid "Spam protection" +msgstr "Çàõèñò â³ä ñïàìó" + +#: ticket/type.php:65 ticket/queue.php:116 lib/Whups.php:670 lib/Whups.php:676 +#: lib/Ticket.php:609 lib/Ticket.php:806 lib/Ticket.php:949 +#: lib/Renderer/Query.php:117 lib/Forms/Query.php:193 +#: lib/Forms/EditTicket.php:62 config/prefs.php.dist:47 +msgid "State" +msgstr "Ñòàí" + +#: lib/Renderer/Comment.php:110 +#, php-format +msgid "State ⇒ %s" +msgstr "Ñòàí ⇒ %s" + +#: lib/Forms/Admin/State.php:25 lib/Forms/Admin/State.php:70 +msgid "State Category" +msgstr "Êàòåãîð³ÿ ñòàíó" + +#: lib/Forms/Admin/State.php:24 lib/Forms/Admin/State.php:67 +#: lib/Forms/Admin/State.php:118 +msgid "State Description" +msgstr "Îïèñ ñòàíó" + +#: lib/Forms/Admin/State.php:23 lib/Forms/Admin/State.php:47 +#: lib/Forms/Admin/State.php:64 lib/Forms/Admin/State.php:96 +#: lib/Forms/Admin/State.php:115 +msgid "State Name" +msgstr "Íàçâà ñòàíó" + +#: lib/Forms/Admin/Type.php:76 lib/Forms/Admin/Type.php:165 +msgid "States for this Type" +msgstr "Ñòàíè äëÿ öüîãî òèïó" + +#: templates/ticket/watchers.inc:1 +msgid "Status" +msgstr "Ñòàòóñ" + +#: ticket/create.php:146 +msgid "Submit" +msgstr "³ä³ñëàòè" + +#: query/run.php:93 query/run.php:94 +msgid "Subscribe to this query" +msgstr "" + +#: admin/index.php:198 +#, php-format +msgid "Successfully Cloned %s to %s." +msgstr "" + +#: ticket/type.php:118 +msgid "Successfully changed ticket type." +msgstr "Óñï³øíî çì³íåíî òèï òàðãàíà." + +#: ticket/delete.php:30 lib/Whups.php:668 lib/Whups.php:675 lib/Ticket.php:616 +#: lib/Ticket.php:643 lib/Ticket.php:646 lib/Ticket.php:650 lib/Ticket.php:812 +#: lib/Ticket.php:821 lib/Ticket.php:912 lib/Renderer/Query.php:89 +#: lib/Forms/CreateTicket.php:152 lib/Forms/EditTicket.php:58 +#: config/prefs.php.dist:46 +msgid "Summary" +msgstr "Ðåçþìå" + +#: lib/Renderer/Comment.php:51 +#, php-format +msgid "Summary ⇒ %s" +msgstr "Ðåçþìå ⇒ %s" + +#: lib/Forms/Search.php:43 +msgid "Summary like" +msgstr "" + +#: lib/Renderer/Comment.php:79 +#, php-format +msgid "Taken from %s" +msgstr "Çàáðàíî â³ä %s" + +#: lib/Forms/Query.php:128 +msgid "Text" +msgstr "Òåêñò" + +#: lib/Driver/sql.php:80 lib/Driver/sql.php:1306 +msgid "That queue slug is already taken. Please select another." +msgstr "" + +#: lib/Forms/CreateTicket.php:129 +msgid "The Requester's Email Address" +msgstr "Àäðåñà å-ïîøòè çàìîâíèêà" + +#: view.php:58 lib/Ticket.php:439 lib/Ticket.php:487 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "" +"VFS áóôåð ìóñèòü áóòè ñêîíô³ãóðîâàíèé, ùîá äîçâîëèòè çàêà÷óâàííÿ äîäàòê³â." + +#: admin/index.php:906 +#, php-format +msgid "The attribute \"%s\" has been added to %s." +msgstr "Àòðèáóò \"%s\" äîäàíî äî %s." + +#: admin/index.php:1006 +msgid "The attribute has been deleted." +msgstr "Àòðèáóò âèòåðòî." + +#: admin/index.php:974 +msgid "The attribute has been modified." +msgstr "Àòðèáóò ìîäèô³êîâàíî." + +#: admin/index.php:1015 +msgid "The attribute was not deleted." +msgstr "Àòðèáóò íå âèòåðòî." + +#: admin/index.php:642 +msgid "The default priority has been set." +msgstr "Âñòàíîâëåíî òèïîâèé ïð³îðèòåò." + +#: admin/index.php:506 +msgid "The default state has been set." +msgstr "Âñòàíîâëåíî òèïîâèé ñòàí." + +#: admin/index.php:1043 +#, php-format +msgid "The form reply \"%s\" has been added to %s." +msgstr "" + +#: admin/index.php:1135 +msgid "The form reply has been deleted." +msgstr "" + +#: admin/index.php:1108 +msgid "The form reply has been modified." +msgstr "" + +#: admin/index.php:1144 +msgid "The form reply was not deleted." +msgstr "" + +#: admin/index.php:556 +#, php-format +msgid "The priority \"%s\" has been added to %s." +msgstr "Ïð³îðèòåò \"%s\" äîäàíî äî %s." + +#: admin/index.php:661 +msgid "The priority has been deleted." +msgstr "Ïð³îðèòåò âèòåðòî." + +#: admin/index.php:609 +msgid "The priority has been modified." +msgstr "Ïð³îðèòåò ìîäèô³êîâàíî." + +#: admin/index.php:670 +msgid "The priority was not deleted." +msgstr "Ïð³îðèòåò íå âèòåðòèé." + +#: lib/Forms/Query.php:463 +#, php-format +msgid "The query \"%s\" couldn't be deleted: %s" +msgstr "" + +#: lib/Forms/Query.php:465 +#, php-format +msgid "The query \"%s\" has been deleted." +msgstr "" + +#: lib/Forms/Query.php:430 +#, php-format +msgid "The query couldn't be loaded:" +msgstr "" + +#: admin/index.php:300 +#, php-format +msgid "The queue \"%s\" has been created." +msgstr "×åðãó \"%s\" ñòâîðåíî." + +#: admin/index.php:392 +msgid "The queue has been deleted." +msgstr "×åðãó âèòåðòî." + +#: admin/index.php:359 +msgid "The queue has been modified." +msgstr "×åðãó ìîäèô³êîâàíî." + +#: admin/index.php:400 +msgid "The queue was not deleted." +msgstr "×åðãó íå âèòåðòî." + +#: lib/MIME/Viewer/zip.php:58 +msgid "The requested file does not exist in the Zip attachment." +msgstr "Âêàçàíèé ôàéë íå ³ñíóº â Zip-äîäàòêó." + +#: data.php:26 +msgid "The requested template does not exist." +msgstr "Âêàçàíîãî øàáëîíó íå ³ñíóº." + +#: admin/index.php:422 +#, php-format +msgid "The state \"%s\" has been added to %s." +msgstr "Ñòàí \"%s\" äîäàíî äî %s." + +#: admin/index.php:525 +msgid "The state has been deleted." +msgstr "Ñòàí âèòåðòî." + +#: admin/index.php:475 +msgid "The state has been modified." +msgstr "Ñòàí ìîäèô³êîâàíî." + +#: admin/index.php:533 +msgid "The state was not deleted." +msgstr "Ñòàí íå âèòåðòî." + +#: ticket/delete.php:78 +msgid "The ticket was not deleted." +msgstr "Òàðãàíà íå âèòåðòî." + +#: admin/index.php:223 +#, php-format +msgid "The type \"%s\" has been modified." +msgstr "Òèï \"%s\" ìîäèô³êîâàíî." + +#: admin/index.php:272 +msgid "The type has been deleted." +msgstr "Òèï âèòåðòî." + +#: admin/index.php:280 +msgid "The type was not deleted." +msgstr "Òèï íå âèòåðòî." + +#: admin/index.php:776 +#, php-format +msgid "The version \"%s\" has been added to %s." +msgstr "Âåðñ³þ \"%s\" äîäàíî äî %s." + +#: admin/index.php:865 +msgid "The version has been deleted." +msgstr "Âåðñ³þ âèòåðòî." + +#: admin/index.php:835 +msgid "The version has been modified." +msgstr "Âåðñ³þ ìîäèô³êîâàíî." + +#: admin/index.php:873 +msgid "The version was not deleted." +msgstr "Âåðñ³þ íå âèòåðòî." + +#: lib/Forms/Admin/Attribute.php:70 +msgid "There are no attribute types to edit" +msgstr "Íåìà æîäíîãî òèïó àòðèáóòà äëÿ ðåäàãóâàííÿ" + +#: lib/Forms/Query.php:281 +msgid "There are no attributes defined." +msgstr "Íå âèçíà÷åíî æîäíîãî àòðèáóòà." + +#: lib/Forms/Admin/Reply.php:48 +msgid "There are no form replies to edit" +msgstr "" + +#: lib/Block/queuesummary.php:44 +msgid "There are no open tickets." +msgstr "" + +#: lib/Forms/Admin/Priority.php:44 lib/Forms/Admin/Priority.php:90 +msgid "There are no priorities to edit" +msgstr "" + +#: lib/Forms/Admin.php:31 +msgid "There are no queues available." +msgstr "Íåìà æîäíî¿ äîñòóïíî¿ ÷åðãè." + +#: lib/Forms/Admin/Queue.php:57 +msgid "There are no queues to edit" +msgstr "Íåìà æîäíî¿ ÷åðãè äëÿ ðåäàãóâàííÿ" + +#: lib/Forms/CreateTicket.php:35 +msgid "There are no queues which you can create tickets in." +msgstr "Íåìà æîäíî¿ ÷åðãè, â ÿêó Âè ìîæåòå ïîäàòè òàðãàíà." + +#: lib/Forms/Search.php:38 +msgid "There are no queues which you can search." +msgstr "Íåìà æîäíî¿ ÷åðãè, äîñòóïíî¿ Âàì äëÿ ïîøóêó." + +#: lib/Forms/Admin/State.php:43 lib/Forms/Admin/State.php:92 +msgid "There are no states to edit" +msgstr "Íåìà ñòàí³â äëÿ ðåäàãóâàííÿ" + +#: lib/Forms/CreateTicket.php:72 +msgid "" +"There are no ticket types associated with this queue; until there are, you " +"cannot create any tickets in this queue." +msgstr "" +"Íå âèçíà÷åíî æîäíîãî òèïó òàðãàíà, àñîö³éîâàíîãî ç ö³ºþ ÷åðãîþ; ïîêè íå áóäå " +"âèçíà÷åíî, âè íå çìîæåòå ïîäàâàòè òàðãàí³â ó öþ ÷åðãó." + +#: lib/Forms/Admin/Type.php:45 +msgid "There are no types to edit" +msgstr "Íåìà òèï³â äëÿ ðåäàãóâàííÿ" + +#: lib/Forms/Admin/User.php:75 +msgid "There are no users responsible for this queue." +msgstr "Íåìà æîäíîãî â³äïîâ³äàëüíîãî çà öþ ÷åðãó." + +#: lib/Forms/CreateTicket.php:242 +msgid "There are no users to which this ticket can be assigned." +msgstr "Íåìà æîäíîãî êîðèñòóâà÷à, êîìó ìîæíà ïðèçíà÷èòè öüîãî òàðãàíà." + +#: lib/Forms/Admin/Version.php:44 +msgid "There are no versions to edit" +msgstr "Íåìà âåðñ³é äëÿ ðåäàãóâàííÿ" + +#: lib/Reports.php:143 +msgid "There is no data for this report." +msgstr "" + +#: admin/index.php:705 +#, php-format +msgid "There was an error adding \"%s\" to the responsible list for \"%s\":" +msgstr "" +"Òðàïèëàñü ïîìèëêà ïðè äîäàâàíí³ \"%s\" äî ñïèñêó â³äïîâ³äàëüíèõ çà \"%s\":" + +#: admin/index.php:911 +msgid "There was an error creating the attribute:" +msgstr "Òðàïèëàñü ïîìèëêà ñòâîðåííÿ àòðèáóòà:" + +#: admin/index.php:1051 +msgid "There was an error creating the form reply:" +msgstr "" + +#: admin/index.php:561 +msgid "There was an error creating the priority:" +msgstr "Òðàïèëàñü ïîìèëêà ïðè ñòâîðåíí³ ïð³îðèòåòó:" + +#: admin/index.php:309 +msgid "There was an error creating the queue:" +msgstr "Òðàïèëàñü ïîìèëêà ïðè ñòâîðåíí³ ÷åðãè:" + +#: admin/index.php:426 +msgid "There was an error creating the state:" +msgstr "Òðàïèëàñü ïîìèëêà ïðè ñòâîðåíí³ ñòàíó:" + +#: admin/index.php:780 +msgid "There was an error creating the version:" +msgstr "Òðàïèëàñü ïîìèëêà ïðè ñòâîðåíí³ âåðñ³¿:" + +#: admin/index.php:1010 +msgid "There was an error deleting the attribute:" +msgstr "Òðàïèëàñü ïîìèëêà ïðè âèòèðàíí³ àòðèáóòà:" + +#: admin/index.php:1139 +msgid "There was an error deleting the form reply:" +msgstr "" + +#: admin/index.php:665 +msgid "There was an error deleting the priority:" +msgstr "Òðàïèëàñü ïîìèëêà ïðè âèòèðàíí³ ïð³îðèòåòó:" + +#: admin/index.php:395 +msgid "There was an error deleting the queue:" +msgstr "Òðàïèëàñü ïîìèëêà ïðè âèòèðàíí³ ÷åðãè:" + +#: admin/index.php:528 +msgid "There was an error deleting the state:" +msgstr "Òðàïèëàñü ïîìèëêà ïðè âèòèðàíí³ ñòàíó:" + +#: ticket/delete.php:75 +msgid "There was an error deleting the ticket:" +msgstr "Òðàïèëàñü ïîìèëêà ïðè âèòèðàíí³ òàðãàíà:" + +#: admin/index.php:275 +msgid "There was an error deleting the type:" +msgstr "Òðàïèëàñü ïîìèëêà ïðè âèòèðàíí³ òèïó:" + +#: admin/index.php:868 +msgid "There was an error deleting the version:" +msgstr "Òðàïèëàñü ïîìèëêà ïðè âèòèðàíí³ âåðñ³¿:" + +#: admin/index.php:982 +msgid "There was an error editing the attribute:" +msgstr "Òðàïèëàñü ïîìèëêà ðåäàãóâàííÿ àòðèáóòà:" + +#: admin/index.php:1104 +msgid "There was an error editing the form reply:" +msgstr "" + +#: admin/index.php:615 +msgid "There was an error editing the priority:" +msgstr "Òðàïèëàñü ïîìèëêà ðåäàãóâàííÿ ïð³îðèòåòó:" + +#: admin/index.php:375 +msgid "There was an error editing the queue:" +msgstr "Òðàïèëàñü ïîìèëêà ðåäàãóâàííÿ ÷åðãè:" + +#: admin/index.php:480 +msgid "There was an error editing the state:" +msgstr "Òðàïèëàñü ïîìèëêà ðåäàãóâàííÿ ñòàíó:" + +#: admin/index.php:841 +msgid "There was an error editing the version:" +msgstr "Òðàïèëàñü ïîìèëêà ðåäàãóâàííÿ âåðñ³¿:" + +#: lib/Forms/Admin/User.php:35 +#, php-format +msgid "There was an error listing users: %s; %s" +msgstr "Òðàïèëàñü ïîìèëêà ïåðåãëÿäó êîðèñòóâà÷³â: %s; %s" + +#: queue/index.php:52 +#, php-format +msgid "There was an error locating tickets in this queue: " +msgstr "Òðàïèëàñü ïîìèëêà çíàõîäæííÿ òàðãàí³â ó ö³é ÷åðç³: " + +#: admin/index.php:219 +msgid "There was an error modifying the type:" +msgstr "Òðàïèëàñü ïîìèëêà ïðè çì³í³ òèïó:" + +#: search.php:140 +#, php-format +msgid "There was an error performing your search: %s" +msgstr "Òðàïèëàñü ïîìèëêà ïðè âèêîíàíí³ âàøîãî ïîøóêó: %s" + +#: admin/index.php:750 +#, php-format +msgid "" +"There was an error removing \"%s\" from the responsible list for \"%s\":" +msgstr "" +"Òðàïèëàñü ïîìèëêà ïðè âèäàëåíí³ \"%s\" ç³ ñïèñêó â³äïîâ³äàëüíèõ çà \"%s\":" + +#: admin/index.php:638 +msgid "There was an error setting the default priority:" +msgstr "Òðàïèëàñü ïîìèëêà âñòàíîâëåííÿ òèïîâîãî ïð³îðèòåòó:" + +#: admin/index.php:502 +msgid "There was an error setting the default state:" +msgstr "Òðàïèëàñü ïîìèëêà âñòàíîâëåííÿ òèïîâîãî ñòàíó:" + +#: lib/Forms/AddComment.php:37 lib/Forms/EditTicket.php:166 +msgid "This comment is visible to everyone" +msgstr "Öåé êîìåíòàð âèäèìèé äëÿ âñ³õ" + +#: lib/Forms/Admin/Queue.php:31 +msgid "" +"This email address will be used when sending notifications for any queue " +"tickets." +msgstr "" + +#: data.php:29 +msgid "This is not a search results template." +msgstr "" + +#: lib/Query.php:435 lib/Query.php:668 +msgid "This query element cannot be edited." +msgstr "Öåé åëåìåíò çàïèòó íå ìîæíà ðåäàãóâàòè." + +#: ticket/queue.php:81 lib/Forms/CreateTicket.php:88 +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this queue, you will not " +"be able to create tickets." +msgstr "" + +#: lib/Ticket.php:638 lib/Ticket.php:820 +msgid "Ticket" +msgstr "Òàðãàí" + +#: ticket/delete.php:71 +#, php-format +msgid "Ticket %d has been deleted." +msgstr "Òàðãàíà %d âèòåðòî." + +#: lib/api.php:850 +#, php-format +msgid "Ticket %s - %s" +msgstr "Òàðãàí %s - %s" + +#: lib/Driver/sql.php:1081 +#, php-format +msgid "Ticket %s was not found." +msgstr "Òàðãàíà %s íå çíàéäåíî." + +#: search.php:170 +msgid "Ticket Search" +msgstr "Ïîøóê òàðãàíà" + +#: lib/Forms/CreateTicket.php:142 +msgid "Ticket State" +msgstr "Ñòàí òàðãàíà" + +#: templates/reports/stats.inc:1 +msgid "Ticket Stats" +msgstr "" + +#: lib/Forms/CreateTicket.php:80 +msgid "Ticket Type" +msgstr "Òèï òàðãàíà" + +#: lib/Forms/Admin/Queue.php:103 +msgid "Ticket Types associated with this Queue" +msgstr "Òèïè òàðãàí³â, àñîö³éîâàí³ ç ö³ºþ ÷åðãîþ" + +#: lib/Ticket.php:633 +#, php-format +msgid "Ticket URL: %s" +msgstr "URL òàðãàíà: %s" + +#: ticket/update.php:94 +msgid "Ticket Updated" +msgstr "Òàðãàíà îíîâëåíî" + +#: lib/api.php:871 +msgid "Tickets" +msgstr "Òàðãàíè" + +#: query/rss.php:70 +#, php-format +msgid "Tickets matching the query \"%s\"." +msgstr "" + +#: templates/prefs/sourceselect.inc:322 +msgid "" +"To select multiple fields, hold down the Control (PC) or Command (Mac) while " +"clicking." +msgstr "" +"Äëÿ âèáîðó ê³ëüêîõ ïîë³â óòðèìóéòå íàòèñíåíîþ êëàâ³øó Control (PC) àáî " +"Command (Mac)." + +#: ticket/queue.php:89 lib/Whups.php:677 lib/Ticket.php:608 lib/Ticket.php:805 +#: lib/Ticket.php:945 lib/Renderer/Query.php:108 lib/Forms/Query.php:174 +#: config/prefs.php.dist:48 +msgid "Type" +msgstr "Òèï" + +#: lib/Renderer/Comment.php:105 +#, php-format +msgid "Type ⇒ %s" +msgstr "Òèï ⇒ %s" + +#: lib/Forms/Admin/Type.php:23 lib/Forms/Admin/Type.php:70 +#: lib/Forms/Admin/Type.php:160 +msgid "Type Description" +msgstr "Îïèñ òèïó" + +#: lib/Forms/Admin/Type.php:22 lib/Forms/Admin/Type.php:48 +#: lib/Forms/Admin/Type.php:67 lib/Forms/Admin/Type.php:156 +msgid "Type Name" +msgstr "Íàçâà òèïó" + +#: search/rss.php:39 +#, php-format +msgid "Type: %s; State: %s" +msgstr "Òèï: %s; Ñòàí: %s" + +#: lib/Ticket.php:961 +msgid "Unassigned" +msgstr "Íåðèçíà÷åíèé" + +#: lib/Block/unassigned.php:3 lib/Block/unassigned.php:24 +msgid "Unassigned Tickets" +msgstr "Íåïðèçíà÷åí³ òàðãàíè" + +#: lib/Forms/Admin.php:42 +msgid "Unassigned tickets" +msgstr "Íåïðèçíà÷åí³ òàðãàíè" + +#: lib/Driver.php:196 +msgid "Unconfirmed" +msgstr "Íå ï³äòâåðäæåíèé" + +#: lib/Renderer/Query.php:167 lib/Renderer/Query.php:207 +#, php-format +msgid "Unknown node type %s" +msgstr "" + +#: lib/api.php:790 +msgid "Update" +msgstr "Îíîâèòè" + +#: ticket/update.php:108 +#, php-format +msgid "Update %s" +msgstr "Îíîâèòè %s" + +#: templates/admin/mtmatrix.inc:29 +msgid "Update Associations" +msgstr "Îíîâèòè àñîö³àö³¿" + +#: lib/Whups.php:683 lib/Ticket.php:981 lib/Renderer/Query.php:146 +msgid "Updated" +msgstr "Îíîâëåíî" + +#: lib/Ticket.php:615 lib/Ticket.php:640 +msgid "Updated By" +msgstr "Îíîâëåíî" + +#: lib/Forms/Query.php:327 lib/Forms/Search.php:58 +msgid "Updated from" +msgstr "" + +#: lib/Forms/Query.php:328 +msgid "Updated to" +msgstr "" + +#: lib/Forms/Admin/User.php:34 lib/Forms/Admin/User.php:44 +#: lib/Forms/Admin/User.php:47 +msgid "User" +msgstr "Êîðèñòóâà÷" + +#: lib/Forms/Query.php:44 +msgid "User ID" +msgstr "ID êîðèñòóâà÷à" + +#: lib/Forms/Admin/Queue.php:131 +msgid "Users responsible for this Queue" +msgstr "Êîðèñòóâà÷³, â³äïîâ³äàëüí³ çà öþ ÷åðãó" + +#: lib/Forms/Admin/User.php:79 +msgid "Users responsible for this queue" +msgstr "Êîðèñòóâà÷³, â³äïîâ³äàëüí³ çà öþ ÷åðãó" + +#: lib/Ticket.php:607 lib/Ticket.php:804 lib/Renderer/Query.php:102 +#: lib/Forms/Query.php:185 config/prefs.php.dist:51 +msgid "Version" +msgstr "Âåðñ³ÿ" + +#: lib/Forms/Admin/Version.php:24 lib/Forms/Admin/Version.php:70 +#: lib/Forms/Admin/Version.php:93 +msgid "Version Description" +msgstr "Îïèñ âåðñ³¿" + +#: lib/Forms/Admin/Version.php:23 lib/Forms/Admin/Version.php:48 +#: lib/Forms/Admin/Version.php:67 lib/Forms/Admin/Version.php:90 +msgid "Version Name" +msgstr "Íàçâà âåðñ³¿" + +#: ticket/type.php:43 ticket/queue.php:50 +msgid "Viewable only by members of" +msgstr "" + +#: lib/Forms/AddComment.php:25 +msgid "Watch this ticket" +msgstr "Ñïîñòåð³ãàòè çà öèì òàðãàíîì" + +#: ticket/watch.php:78 +#, php-format +msgid "Watchers for %s" +msgstr "Ñïîñòåð³ãà÷³ çà %s" + +#: config/prefs.php.dist:104 +msgid "Weekday Day Month" +msgstr "" + +#: config/prefs.php.dist:105 +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "" + +#: ticket/delete.php:33 lib/Forms/Query.php:449 +#: lib/Forms/Admin/Priority.php:121 lib/Forms/Admin/State.php:121 +#: lib/Forms/Admin/Reply.php:110 lib/Forms/Admin/Attribute.php:149 +#: lib/Forms/Admin/Type.php:176 lib/Forms/Admin/Version.php:96 +#: lib/Forms/Admin/Queue.php:174 +msgid "Yes" +msgstr "Òàê" + +#: view.php:54 +#, php-format +msgid "You are not allowed to view ticket %d." +msgstr "Âàì íå äîçâîëåíî îãëÿäàòè òàðãàíà %d." + +#: lib/Driver/sql.php:1090 +#, php-format +msgid "You do not have permission to access this ticket (%s)." +msgstr "Ó Âàñ íåìà ïðàâà äîñòóïó äî öüîãî òàðãàíà (%s)." + +#: lib/api.php:375 +msgid "You do not have permission to update this ticket." +msgstr "Ó Âàñ íåìà ïðàâà îíîâëþâàòè öüîãî òàðãàíà." + +#: lib/Block/myrequests.php:46 +msgid "You have no open requests." +msgstr "" + +#: lib/Block/query.php:28 lib/Forms/Query.php:419 +msgid "You have no saved queries." +msgstr "" + +#: lib/Whups.php:710 +msgid "You must select at least one queue to send reminders for." +msgstr "" + +#: lib/Forms/AddComment.php:18 lib/Forms/CreateTicket.php:132 +msgid "Your Email Address" +msgstr "Âàøà àäðåñà å-ïîøòè" + +#: ticket/create.php:60 +#, php-format +msgid "" +"Your ticket ID is %s. An appropriate person has been notified of this " +"request." +msgstr "Íîìåð Âàøîãî òàðãàíà - %s. ³äïîâ³äíà îñîáà ñïîâ³ùåíà ïðî Âàø çàïèò." + +#: lib/Mail.php:244 +msgid "[ Could not render body of message. ]" +msgstr "[ Íå ìîæó â³äîáðàçèòè ò³ëî ëèñòà. ]" + +#: lib/Whups.php:774 +msgid "_Admin" +msgstr "Àäì³í" + +#: lib/Whups.php:298 +msgid "_Comment" +msgstr "Êîìåíòàð" + +#: query/index.php:157 +msgid "_Date Criteria" +msgstr "Êðèòåð³é äàòè" + +#: lib/Whups.php:316 +msgid "_Delete" +msgstr "Âèòåðòè" + +#: lib/Query.php:237 +msgid "_Delete Query" +msgstr "Âèòåðòè çàïèò" + +#: lib/Query.php:218 +msgid "_Edit Query" +msgstr "" + +#: admin/index.php:33 +msgid "_Edit Queues" +msgstr "Ðåäàãóâàòè ÷åðãè" + +#: templates/menu.inc:5 +msgid "_Go" +msgstr "" + +#: query/index.php:156 +msgid "_Group Criteria" +msgstr "" + +#: lib/Whups.php:292 +msgid "_History" +msgstr "²ñòîð³ÿ" + +#: lib/Query.php:231 +msgid "_Load Query" +msgstr "" + +#: lib/Whups.php:765 +#, php-format +msgid "_My %s" +msgstr "_Mî¿ %s" + +#: lib/Whups.php:768 +msgid "_New Ticket" +msgstr "Íîâèé òàðãàí" + +#: query/index.php:154 +msgid "_Property Criteria" +msgstr "" + +#: lib/Whups.php:769 +msgid "_Query Builder" +msgstr "" + +#: lib/Whups.php:770 +msgid "_Reports" +msgstr "Çâ³òè" + +#: lib/Whups.php:767 +msgid "_Search" +msgstr "Ïîøóê" + +#: query/index.php:158 +msgid "_Text Criteria" +msgstr "" + +#: lib/Whups.php:294 +msgid "_Update" +msgstr "Îíîâèòè" + +#: query/index.php:155 +msgid "_User Criteria" +msgstr "" + +#: lib/Whups.php:302 +msgid "_Watch" +msgstr "Íàãëÿä" + +#: lib/Renderer/Query.php:187 +msgid "contains (case insensitive) substring" +msgstr "" + +#: lib/Renderer/Query.php:191 +msgid "contains (case sensitive) substring" +msgstr "" + +#: lib/Renderer/Query.php:195 +msgid "contains the word" +msgstr "ì³ñòèòü ñëîâî" + +#: lib/Mail.php:94 lib/Mail.php:118 lib/Mail.php:146 +msgid "current user:" +msgstr "Ïîòî÷íèé êîðèñòóâà÷:" + +#: lib/api.php:859 +msgid "estimated time" +msgstr "ïðîãíîçîâàíèé ÷àñ" + +#: lib/Renderer/Query.php:183 +msgid "is" +msgstr "º" + +#: lib/Renderer/Query.php:175 +msgid "is greater than" +msgstr "á³ëüøå, í³æ" + +#: lib/Renderer/Query.php:179 +msgid "is less than" +msgstr "ìåíøå, í³æ" + +#: lib/Renderer/Query.php:199 +msgid "matches the pattern" +msgstr "" + +#: lib/Forms/Search.php:57 lib/Forms/Search.php:59 lib/Forms/Search.php:61 +#: lib/Forms/Search.php:63 lib/Forms/Search.php:65 +msgid "to" +msgstr "äî" diff --git a/whups/po/whups.pot b/whups/po/whups.pot new file mode 100644 index 000000000..713db1bd8 --- /dev/null +++ b/whups/po/whups.pot @@ -0,0 +1,2364 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright YEAR Horde Project +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-08-01 10:45+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/index.php:745 +#, php-format +msgid "\"%s\" is no longer among those responsible for \"%s\"" +msgstr "" + +#: templates/menu.inc:5 +msgid "#Id" +msgstr "" + +#: templates/ticket/watchers.inc:3 +#, php-format +msgid "%d people watching, %d people responsible" +msgstr "" + +#: queue/rss.php:96 +#, php-format +msgid "%s %s tickets in %s" +msgstr "" + +#: queue/rss.php:100 +#, php-format +msgid "%s %s tickets in all queues" +msgstr "" + +#: lib/Renderer/Comment.php:120 +#, php-format +msgid "%s ⇒ %s" +msgstr "" + +#: lib/Driver.php:481 +#, php-format +msgid "%s (%s) wrote:" +msgstr "" + +#: admin/index.php:700 +#, php-format +msgid "%s added to those responsible for \"%s\"" +msgstr "" + +#: templates/reports/stats.inc:17 +#, php-format +msgid "%s days" +msgstr "" + +#: queue/rss.php:104 +#, php-format +msgid "%s tickets in %s" +msgstr "" + +#: queue/rss.php:108 +#, php-format +msgid "%s tickets in all queues" +msgstr "" + +#: ticket/watch.php:60 +#, php-format +msgid "%s will be notified when this ticket is updated." +msgstr "" + +#: ticket/watch.php:72 +#, php-format +msgid "%s will no longer receive updates for this ticket." +msgstr "" + +#: admin/index.php:109 +msgid "- Stage 1" +msgstr "" + +#: admin/index.php:114 +msgid "- Stage 2" +msgstr "" + +#: scripts/mail-filter.php:172 +msgid "--queue-name or --queue-id must specify a valid and public queue." +msgstr "" + +#: templates/prevnext.inc:16 +msgid "<>" +msgstr "" + +#: lib/Forms/Query.php:345 +msgid "Load Query" +msgstr "" + +#: lib/Forms/VarRenderer.php:46 +msgid "Loading..." +msgstr "" + +#: config/prefs.php.dist:106 +msgid "MM/DD/YY" +msgstr "" + +#: config/prefs.php.dist:107 +msgid "MM/DD/YY HH:MM:SS" +msgstr "" + +#: lib/Forms/Admin/Type.php:193 +#, php-format +msgid "Make a clone of %s" +msgstr "" + +#: lib/Forms/Query.php:272 +msgid "Match" +msgstr "" + +#: lib/Forms/Query.php:45 lib/Forms/Query.php:129 lib/Forms/Query.php:273 +msgid "Match Operator" +msgstr "" + +#: lib/Query.php:162 +msgid "Match Pattern" +msgstr "" + +#: lib/Query.php:161 +msgid "Match Word" +msgstr "" + +#: lib/Reports.php:20 +msgid "Maximum time a ticket is unresolved" +msgstr "" + +#: lib/Block/tree_menu.php:3 +msgid "Menu List" +msgstr "" + +#: lib/Reports.php:21 +msgid "Minimum time a ticket is unresolved" +msgstr "" + +#: config/prefs.php.dist:146 +msgid "Most recent first" +msgstr "" + +#: templates/prefs/sourceselect.inc:312 +msgid "Move down" +msgstr "" + +#: templates/prefs/sourceselect.inc:310 +msgid "Move up" +msgstr "" + +#: ticket/queue.php:181 +#, php-format +msgid "Moved ticket %d to \"%s\"" +msgstr "" + +#: mybugs.php:54 +#, php-format +msgid "My %s" +msgstr "" + +#: mybugs_edit.php:33 +#, php-format +msgid "My %s :: Add Content" +msgstr "" + +#: search.php:130 lib/Block/myqueries.php:3 lib/Block/myqueries.php:24 +msgid "My Queries" +msgstr "" + +#: lib/Block/myrequests.php:3 lib/Block/myrequests.php:24 +msgid "My Requests" +msgstr "" + +#: lib/Block/mytickets.php:3 lib/Block/mytickets.php:24 +#: config/prefs.php.dist:75 +msgid "My Tickets" +msgstr "" + +#: lib/api.php:978 +msgid "My tickets by assignment date" +msgstr "" + +#: lib/api.php:977 +msgid "My tickets by creation date" +msgstr "" + +#: lib/api.php:979 +msgid "My tickets by due date" +msgstr "" + +#: lib/api.php:980 +msgid "My tickets by resolution date" +msgstr "" + +#: lib/Forms/Query.php:356 +msgid "Name" +msgstr "" + +#: lib/Forms/Admin/Type.php:198 +msgid "Name of the cloned copy" +msgstr "" + +#: lib/Query.php:211 +msgid "Ne_w Query" +msgstr "" + +#: lib/Driver.php:197 +msgid "New" +msgstr "" + +#: lib/Ticket.php:618 lib/Ticket.php:711 +msgid "New Attachment" +msgstr "" + +#: lib/Renderer/Comment.php:58 lib/Renderer/Comment.php:62 +#, php-format +msgid "New Attachment: %s" +msgstr "" + +#: ticket/queue.php:32 +msgid "New Queue" +msgstr "" + +#: ticket/create.php:67 lib/Block/tree_menu.php:21 +msgid "New Ticket" +msgstr "" + +#: ticket/type.php:31 +msgid "New Type" +msgstr "" + +#: templates/prevnext.inc:26 +msgid "Next>" +msgstr "" + +#: ticket/delete.php:33 lib/Forms/Query.php:383 lib/Forms/Admin/Version.php:96 +#: lib/Forms/Admin/State.php:121 lib/Forms/Admin/Priority.php:121 +#: lib/Forms/Admin/Queue.php:174 lib/Forms/Admin/Attribute.php:149 +#: lib/Forms/Admin/Reply.php:110 lib/Forms/Admin/Type.php:176 +msgid "No" +msgstr "" + +#: lib/Ticket.php:100 +#, php-format +msgid "" +"No priority for this ticket and no default priority for ticket type \"%s\" " +"specified." +msgstr "" + +#: lib/Block/myqueries.php:46 +msgid "No queries have been saved." +msgstr "" + +#: lib/Block/query.php:64 lib/Driver/sql.php:553 +msgid "No query to run" +msgstr "" + +#: lib/Block/queuecontents.php:25 +msgid "No queues available." +msgstr "" + +#: lib/Ticket.php:92 +#, php-format +msgid "" +"No state for this ticket and no default state for ticket type \"%s\" " +"specified." +msgstr "" + +#: reports.php:19 +msgid "No stats available." +msgstr "" + +#: lib/Driver.php:517 +#, php-format +msgid "No such backend \"%s\" found" +msgstr "" + +#: lib/View.php:33 +#, php-format +msgid "No such view \"%s\" found" +msgstr "" + +#: lib/Block/mytickets.php:45 +msgid "No tickets are assigned to you." +msgstr "" + +#: lib/Block/unassigned.php:45 +msgid "No tickets are unassigned!" +msgstr "" + +#: lib/Block/queuecontents.php:62 lib/Block/queuecontents.php:73 +msgid "No tickets in queue." +msgstr "" + +#: lib/Whups.php:716 +msgid "No tickets matched your search criteria." +msgstr "" + +#: lib/Ticket.php:84 +#, php-format +msgid "No type for this ticket and no default type for queue \"%s\" specified." +msgstr "" + +#: templates/prefs/sourceselect.inc:35 lib/Reports.php:88 +msgid "None" +msgstr "" + +#: lib/Renderer/Query.php:79 lib/Forms/Query.php:26 +msgid "Not" +msgstr "" + +#: config/prefs.php.dist:17 +msgid "Notification Options" +msgstr "" + +#: config/prefs.php.dist:117 +msgid "Only notify me of ticket changes from other users?" +msgstr "" + +#: config/prefs.php.dist:126 +msgid "Only notify me of ticket changes with comments?" +msgstr "" + +#: queue/rss.php:43 +msgid "Open" +msgstr "" + +#: lib/Block/queuesummary.php:49 +msgid "Open Tickets" +msgstr "" + +#: lib/Reports.php:11 +msgid "Open Tickets by Owner" +msgstr "" + +#: lib/Reports.php:9 +msgid "Open Tickets by Priority" +msgstr "" + +#: lib/Reports.php:6 +msgid "Open Tickets by Queue" +msgstr "" + +#: lib/Reports.php:10 +msgid "Open Tickets by Requester" +msgstr "" + +#: lib/Reports.php:7 +msgid "Open Tickets by State" +msgstr "" + +#: lib/Reports.php:8 +msgid "Open Tickets by Type" +msgstr "" + +#: lib/Block/queuecontents.php:47 +#, php-format +msgid "Open Tickets in %s" +msgstr "" + +#: queue/rss.php:119 queue/index.php:43 queue/index.php:57 +#, php-format +msgid "Open tickets in %s" +msgstr "" + +#: queue/rss.php:121 +msgid "Open tickets in all queues." +msgstr "" + +#: lib/Renderer/Query.php:78 lib/Forms/Query.php:25 +msgid "Or" +msgstr "" + +#: lib/Whups.php:681 lib/Ticket.php:617 lib/Ticket.php:701 lib/Ticket.php:702 +#: lib/Ticket.php:705 lib/Ticket.php:812 lib/Ticket.php:833 lib/Ticket.php:958 +#: lib/Renderer/Query.php:84 lib/Forms/CreateTicket.php:225 +#: lib/Forms/CreateTicket.php:243 lib/Forms/EditTicket.php:104 +msgid "Owners" +msgstr "" + +#: lib/Whups.php:866 +#, php-format +msgid "Permanently delete %s?" +msgstr "" + +#: ticket/update.php:22 ticket/type.php:74 ticket/delete.php:51 +#: ticket/queue.php:131 ticket/deleteAttachment.php:21 +msgid "Permission Denied" +msgstr "" + +#: ticket/delete.php:40 lib/Forms/EditTicket.php:196 +msgid "Permission Denied." +msgstr "" + +#: query/run.php:44 query/index.php:31 lib/Forms/Query.php:393 +#, php-format +msgid "Permission denied." +msgstr "" + +#: lib/Imple/ContactAutoCompleter.php:227 +msgid "Please resolve ambiguous or invalid addresses." +msgstr "" + +#: lib/Forms/Admin/Type.php:93 lib/Forms/Admin/Type.php:171 +msgid "Priorities for this Type" +msgstr "" + +#: ticket/type.php:66 ticket/queue.php:117 lib/Whups.php:669 lib/Whups.php:678 +#: lib/Ticket.php:610 lib/Ticket.php:807 lib/Ticket.php:953 +#: lib/Renderer/Query.php:125 lib/Forms/CreateTicket.php:147 +#: lib/Forms/EditTicket.php:68 lib/Forms/Query.php:198 +#: config/prefs.php.dist:49 +msgid "Priority" +msgstr "" + +#: lib/Renderer/Comment.php:115 +#, php-format +msgid "Priority ⇒ %s" +msgstr "" + +#: lib/Forms/Admin/Priority.php:24 lib/Forms/Admin/Priority.php:70 +#: lib/Forms/Admin/Priority.php:118 +msgid "Priority Description" +msgstr "" + +#: lib/Forms/Admin/Priority.php:23 lib/Forms/Admin/Priority.php:48 +#: lib/Forms/Admin/Priority.php:67 lib/Forms/Admin/Priority.php:94 +#: lib/Forms/Admin/Priority.php:115 +msgid "Priority Name" +msgstr "" + +#: search.php:130 +msgid "Public Queries" +msgstr "" + +#: query/index.php:172 +msgid "Query Builder" +msgstr "" + +#: lib/Forms/Query.php:321 +msgid "Query Name" +msgstr "" + +#: lib/Forms/QueryParameterForm.php:20 +msgid "Query Parameters" +msgstr "" + +#: query/rss.php:63 query/run.php:79 lib/Block/query.php:3 +#: lib/Block/query.php:51 +msgid "Query Results" +msgstr "" + +#: lib/Forms/Query.php:323 +msgid "Query Slug" +msgstr "" + +#: lib/Block/query.php:33 +msgid "Query to run" +msgstr "" + +#: lib/Whups.php:679 lib/Ticket.php:606 lib/Ticket.php:803 lib/Ticket.php:918 +#: lib/Ticket.php:923 lib/Renderer/Query.php:94 lib/Forms/Query.php:181 +#: lib/Forms/Search.php:39 lib/Block/queuecontents.php:32 +#: lib/Block/queuesummary.php:49 config/prefs.php.dist:50 +msgid "Queue" +msgstr "" + +#: lib/Renderer/Comment.php:100 +#, php-format +msgid "Queue ⇒ %s" +msgstr "" + +#: lib/Block/queuecontents.php:3 lib/Block/queuecontents.php:49 +msgid "Queue Contents" +msgstr "" + +#: lib/Forms/Admin/Queue.php:24 lib/Forms/Admin/Queue.php:89 +#: lib/Forms/Admin/Queue.php:170 +msgid "Queue Description" +msgstr "" + +#: lib/Forms/Admin/Queue.php:30 lib/Forms/Admin/Queue.php:97 +msgid "Queue Email" +msgstr "" + +#: lib/Forms/CreateTicket.php:34 lib/Forms/CreateTicket.php:45 +#: lib/Forms/Admin/Queue.php:23 lib/Forms/Admin/Queue.php:60 +#: lib/Forms/Admin/Queue.php:85 lib/Forms/Admin/Queue.php:166 +msgid "Queue Name" +msgstr "" + +#: lib/Forms/Admin/Queue.php:26 lib/Forms/Admin/Queue.php:93 +msgid "Queue Slug" +msgstr "" + +#: lib/Block/queuesummary.php:3 lib/Block/queuesummary.php:24 +msgid "Queue Summary" +msgstr "" + +#: ticket/queue.php:86 lib/Ticket.php:932 lib/Ticket.php:938 +#: lib/Forms/CreateTicket.php:93 +msgid "Queue Version" +msgstr "" + +#: admin/index.php:35 +msgid "Queue/Type Matri_x" +msgstr "" + +#: templates/admin/mtmatrix.inc:6 +msgid "Queue/Type Matrix" +msgstr "" + +#: lib/api.php:175 lib/api.php:887 +msgid "Queues" +msgstr "" + +#: templates/prevnext.inc:32 +msgid "Re_turn to Search Results" +msgstr "" + +#: lib/Forms/Admin/Attribute.php:147 +msgid "Really delete this attribute? This may cause data problems!" +msgstr "" + +#: lib/Forms/Admin/Reply.php:108 +msgid "Really delete this form reply?" +msgstr "" + +#: lib/Forms/Admin/Priority.php:122 +msgid "Really delete this priority? This may cause data problems!" +msgstr "" + +#: lib/Forms/Query.php:384 +msgid "Really delete this query? This operation is not undoable." +msgstr "" + +#: lib/Forms/Admin/Queue.php:176 +msgid "Really delete this queue? This may cause data problems!" +msgstr "" + +#: lib/Forms/Admin/State.php:122 +msgid "Really delete this state? This may cause data problems!" +msgstr "" + +#: ticket/delete.php:34 +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "" + +#: lib/Forms/Admin/Type.php:178 +msgid "Really delete this type? This may cause data problems!" +msgstr "" + +#: lib/Forms/Admin/Version.php:97 +msgid "Really delete this version? This may cause data problems!" +msgstr "" + +#: lib/Mail.php:217 +msgid "Received message:" +msgstr "" + +#: search.php:114 +msgid "Refine Search" +msgstr "" + +#: admin/index.php:1170 +msgid "Reminders were sent." +msgstr "" + +#: lib/Forms/Admin/User.php:59 +msgid "Remove User" +msgstr "" + +#: ticket/watch.php:49 +msgid "Remove Watcher" +msgstr "" + +#: templates/prefs/sourceselect.inc:300 +msgid "Remove source" +msgstr "" + +#: lib/Renderer/Comment.php:95 +msgid "Reply to this comment" +msgstr "" + +#: reports.php:24 +msgid "Reports" +msgstr "" + +#: lib/Whups.php:680 lib/Ticket.php:965 lib/Renderer/Query.php:86 +msgid "Requester" +msgstr "" + +#: lib/Forms/Admin/Attribute.php:28 lib/Forms/Admin/Attribute.php:99 +msgid "Required Attribute?" +msgstr "" + +#: lib/Whups.php:685 lib/Ticket.php:991 lib/Driver.php:199 lib/api.php:1021 +#: config/prefs.php.dist:54 +msgid "Resolved" +msgstr "" + +#: lib/Forms/Admin/User.php:61 +msgid "Responsible Users" +msgstr "" + +#: lib/Forms/EditTicket.php:166 +msgid "Restrict Comment to:" +msgstr "" + +#: lib/Whups.php:306 +msgid "S_et Queue" +msgstr "" + +#: lib/Query.php:229 +msgid "Sa_ve Query" +msgstr "" + +#: templates/view/results.inc:96 lib/Forms/Query.php:319 +msgid "Save" +msgstr "" + +#: query/index.php:229 +msgid "Save Criterion" +msgstr "" + +#: lib/Forms/Query.php:318 +msgid "Save Query" +msgstr "" + +#: search.php:69 lib/Forms/Search.php:19 +msgid "Save as Query" +msgstr "" + +#: search.php:107 lib/Block/tree_menu.php:30 +msgid "Search" +msgstr "" + +#: lib/Forms/Query.php:276 +#, php-format +msgid "Search %s Attribute" +msgstr "" + +#: lib/Forms/Query.php:279 +msgid "Search Attribute" +msgstr "" + +#: lib/Forms/Query.php:48 lib/Forms/Query.php:131 +msgid "Search Comments" +msgstr "" + +#: lib/Forms/Query.php:46 +msgid "Search Owners" +msgstr "" + +#: lib/Forms/Query.php:47 +msgid "Search Requester" +msgstr "" + +#: search.php:99 +msgid "Search Results" +msgstr "" + +#: templates/prevnext.inc:38 +#, php-format +msgid "Search Results: %s of %s" +msgstr "" + +#: lib/Forms/Query.php:130 +msgid "Search Summary" +msgstr "" + +#: config/prefs.php.dist:76 +msgid "Search Tickets" +msgstr "" + +#: config/prefs.php.dist:25 +msgid "Select address book sources for adding and searching for addresses." +msgstr "" + +#: templates/prefs/sourceselect.inc:319 +msgid "Select all fields to search when expanding addresses." +msgstr "" + +#: config/prefs.php.dist:78 +msgid "Select the view to display after login:" +msgstr "" + +#: templates/prefs/sourceselect.inc:303 templates/prefs/sourceselect.inc:305 +msgid "Selected Address books:" +msgstr "" + +#: admin/index.php:36 +msgid "Sen_d Reminders" +msgstr "" + +#: lib/Forms/Admin.php:23 +msgid "Send Reminders" +msgstr "" + +#: lib/Forms/Admin.php:34 +msgid "Send only for this list of ticket ids" +msgstr "" + +#: lib/Forms/Admin/Priority.php:80 lib/Forms/Admin/Priority.php:82 +msgid "Set Default Priority" +msgstr "" + +#: lib/Forms/Admin/State.php:80 lib/Forms/Admin/State.php:82 +msgid "Set Default State" +msgstr "" + +#: ticket/queue.php:201 ticket/queue.php:210 ticket/queue.php:222 +msgid "Set Queue - Step 1" +msgstr "" + +#: ticket/queue.php:202 ticket/queue.php:211 +msgid "Set Queue - Step 2" +msgstr "" + +#: ticket/queue.php:212 +msgid "Set Queue - Step 3" +msgstr "" + +#: ticket/queue.php:189 +#, php-format +msgid "Set Queue for %s" +msgstr "" + +#: lib/api.php:906 +msgid "Set Requester" +msgstr "" + +#: ticket/type.php:139 ticket/type.php:148 +msgid "Set Type - Step 1" +msgstr "" + +#: ticket/type.php:140 +msgid "Set Type - Step 2" +msgstr "" + +#: ticket/type.php:127 +#, php-format +msgid "Set Type for %s" +msgstr "" + +#: lib/Whups.php:311 +msgid "Set _Type" +msgstr "" + +#: config/prefs.php.dist:144 +msgid "Show comments in chronological order, or most recent first?" +msgstr "" + +#: config/prefs.php.dist:95 +msgid "Show ticket IDs in the summary view?" +msgstr "" + +#: config/prefs.php.dist:87 +msgid "Show tickets you have requested in the summary view?" +msgstr "" + +#: config/templates.php.dist:16 +msgid "Simple HTML Report" +msgstr "" + +#: lib/Forms/Admin/Queue.php:27 +#, php-format +msgid "" +"Slugs allows direct access to this queue's open tickets by visiting: %s. " +"
Slug names may contain only letters, numbers or the _ (underscore) " +"character." +msgstr "" + +#: templates/view/results.inc:37 templates/view/results.inc:41 +#, php-format +msgid "Sort by %s" +msgstr "" + +#: lib/Forms/CreateTicket.php:136 lib/Forms/CreateTicket.php:175 +#: lib/Forms/AddComment.php:20 lib/Forms/AddComment.php:51 +msgid "Spam protection" +msgstr "" + +#: ticket/type.php:65 ticket/queue.php:116 lib/Whups.php:670 lib/Whups.php:676 +#: lib/Ticket.php:609 lib/Ticket.php:806 lib/Ticket.php:949 +#: lib/Renderer/Query.php:117 lib/Forms/EditTicket.php:62 +#: lib/Forms/Query.php:193 config/prefs.php.dist:47 +msgid "State" +msgstr "" + +#: lib/Renderer/Comment.php:110 +#, php-format +msgid "State ⇒ %s" +msgstr "" + +#: lib/Forms/Admin/State.php:25 lib/Forms/Admin/State.php:70 +msgid "State Category" +msgstr "" + +#: lib/Forms/Admin/State.php:24 lib/Forms/Admin/State.php:67 +#: lib/Forms/Admin/State.php:118 +msgid "State Description" +msgstr "" + +#: lib/Forms/Admin/State.php:23 lib/Forms/Admin/State.php:47 +#: lib/Forms/Admin/State.php:64 lib/Forms/Admin/State.php:96 +#: lib/Forms/Admin/State.php:115 +msgid "State Name" +msgstr "" + +#: lib/Forms/Admin/Type.php:76 lib/Forms/Admin/Type.php:165 +msgid "States for this Type" +msgstr "" + +#: templates/ticket/watchers.inc:1 +msgid "Status" +msgstr "" + +#: ticket/create.php:146 +msgid "Submit" +msgstr "" + +#: query/run.php:93 query/run.php:94 +msgid "Subscribe to this query" +msgstr "" + +#: admin/index.php:198 +#, php-format +msgid "Successfully Cloned %s to %s." +msgstr "" + +#: ticket/type.php:118 +msgid "Successfully changed ticket type." +msgstr "" + +#: ticket/delete.php:30 lib/Whups.php:668 lib/Whups.php:675 lib/Ticket.php:616 +#: lib/Ticket.php:643 lib/Ticket.php:646 lib/Ticket.php:650 lib/Ticket.php:812 +#: lib/Ticket.php:821 lib/Ticket.php:912 lib/Renderer/Query.php:89 +#: lib/Forms/CreateTicket.php:152 lib/Forms/EditTicket.php:58 +#: config/prefs.php.dist:46 +msgid "Summary" +msgstr "" + +#: lib/Renderer/Comment.php:51 +#, php-format +msgid "Summary ⇒ %s" +msgstr "" + +#: lib/Forms/Search.php:42 +msgid "Summary like" +msgstr "" + +#: lib/Renderer/Comment.php:79 +#, php-format +msgid "Taken from %s" +msgstr "" + +#: lib/Forms/Query.php:128 +msgid "Text" +msgstr "" + +#: lib/Driver/sql.php:80 lib/Driver/sql.php:1269 +msgid "That queue slug is already taken. Please select another." +msgstr "" + +#: lib/Forms/CreateTicket.php:129 +msgid "The Requester's Email Address" +msgstr "" + +#: view.php:58 lib/Ticket.php:439 lib/Ticket.php:487 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "" + +#: admin/index.php:906 +#, php-format +msgid "The attribute \"%s\" has been added to %s." +msgstr "" + +#: admin/index.php:1006 +msgid "The attribute has been deleted." +msgstr "" + +#: admin/index.php:974 +msgid "The attribute has been modified." +msgstr "" + +#: admin/index.php:1015 +msgid "The attribute was not deleted." +msgstr "" + +#: admin/index.php:642 +msgid "The default priority has been set." +msgstr "" + +#: admin/index.php:506 +msgid "The default state has been set." +msgstr "" + +#: admin/index.php:1043 +#, php-format +msgid "The form reply \"%s\" has been added to %s." +msgstr "" + +#: admin/index.php:1135 +msgid "The form reply has been deleted." +msgstr "" + +#: admin/index.php:1108 +msgid "The form reply has been modified." +msgstr "" + +#: admin/index.php:1144 +msgid "The form reply was not deleted." +msgstr "" + +#: admin/index.php:556 +#, php-format +msgid "The priority \"%s\" has been added to %s." +msgstr "" + +#: admin/index.php:661 +msgid "The priority has been deleted." +msgstr "" + +#: admin/index.php:609 +msgid "The priority has been modified." +msgstr "" + +#: admin/index.php:670 +msgid "The priority was not deleted." +msgstr "" + +#: lib/Forms/Query.php:397 +#, php-format +msgid "The query \"%s\" couldn't be deleted: %s" +msgstr "" + +#: lib/Forms/Query.php:399 +#, php-format +msgid "The query \"%s\" has been deleted." +msgstr "" + +#: lib/Forms/Query.php:364 +#, php-format +msgid "The query couldn't be loaded:" +msgstr "" + +#: admin/index.php:300 +#, php-format +msgid "The queue \"%s\" has been created." +msgstr "" + +#: admin/index.php:392 +msgid "The queue has been deleted." +msgstr "" + +#: admin/index.php:359 +msgid "The queue has been modified." +msgstr "" + +#: admin/index.php:400 +msgid "The queue was not deleted." +msgstr "" + +#: lib/MIME/Viewer/zip.php:58 +msgid "The requested file does not exist in the Zip attachment." +msgstr "" + +#: data.php:26 +msgid "The requested template does not exist." +msgstr "" + +#: admin/index.php:422 +#, php-format +msgid "The state \"%s\" has been added to %s." +msgstr "" + +#: admin/index.php:525 +msgid "The state has been deleted." +msgstr "" + +#: admin/index.php:475 +msgid "The state has been modified." +msgstr "" + +#: admin/index.php:533 +msgid "The state was not deleted." +msgstr "" + +#: ticket/delete.php:78 +msgid "The ticket was not deleted." +msgstr "" + +#: admin/index.php:223 +#, php-format +msgid "The type \"%s\" has been modified." +msgstr "" + +#: admin/index.php:272 +msgid "The type has been deleted." +msgstr "" + +#: admin/index.php:280 +msgid "The type was not deleted." +msgstr "" + +#: admin/index.php:776 +#, php-format +msgid "The version \"%s\" has been added to %s." +msgstr "" + +#: admin/index.php:865 +msgid "The version has been deleted." +msgstr "" + +#: admin/index.php:835 +msgid "The version has been modified." +msgstr "" + +#: admin/index.php:873 +msgid "The version was not deleted." +msgstr "" + +#: lib/Forms/Admin/Attribute.php:70 +msgid "There are no attribute types to edit" +msgstr "" + +#: lib/Forms/Query.php:279 +msgid "There are no attributes defined." +msgstr "" + +#: lib/Forms/Admin/Reply.php:48 +msgid "There are no form replies to edit" +msgstr "" + +#: lib/Block/queuesummary.php:44 +msgid "There are no open tickets." +msgstr "" + +#: lib/Forms/Admin/Priority.php:44 lib/Forms/Admin/Priority.php:90 +msgid "There are no priorities to edit" +msgstr "" + +#: lib/Forms/Admin.php:31 +msgid "There are no queues available." +msgstr "" + +#: lib/Forms/Admin/Queue.php:57 +msgid "There are no queues to edit" +msgstr "" + +#: lib/Forms/CreateTicket.php:35 +msgid "There are no queues which you can create tickets in." +msgstr "" + +#: lib/Forms/Search.php:37 +msgid "There are no queues which you can search." +msgstr "" + +#: lib/Forms/Admin/State.php:43 lib/Forms/Admin/State.php:92 +msgid "There are no states to edit" +msgstr "" + +#: lib/Forms/CreateTicket.php:72 +msgid "" +"There are no ticket types associated with this queue; until there are, you " +"cannot create any tickets in this queue." +msgstr "" + +#: lib/Forms/Admin/Type.php:45 +msgid "There are no types to edit" +msgstr "" + +#: lib/Forms/Admin/User.php:75 +msgid "There are no users responsible for this queue." +msgstr "" + +#: lib/Forms/CreateTicket.php:242 +msgid "There are no users to which this ticket can be assigned." +msgstr "" + +#: lib/Forms/Admin/Version.php:44 +msgid "There are no versions to edit" +msgstr "" + +#: lib/Reports.php:161 +msgid "There is no data for this report." +msgstr "" + +#: admin/index.php:705 +#, php-format +msgid "There was an error adding \"%s\" to the responsible list for \"%s\":" +msgstr "" + +#: admin/index.php:911 +msgid "There was an error creating the attribute:" +msgstr "" + +#: admin/index.php:1051 +msgid "There was an error creating the form reply:" +msgstr "" + +#: admin/index.php:561 +msgid "There was an error creating the priority:" +msgstr "" + +#: admin/index.php:309 +msgid "There was an error creating the queue:" +msgstr "" + +#: admin/index.php:426 +msgid "There was an error creating the state:" +msgstr "" + +#: admin/index.php:780 +msgid "There was an error creating the version:" +msgstr "" + +#: admin/index.php:1010 +msgid "There was an error deleting the attribute:" +msgstr "" + +#: admin/index.php:1139 +msgid "There was an error deleting the form reply:" +msgstr "" + +#: admin/index.php:665 +msgid "There was an error deleting the priority:" +msgstr "" + +#: admin/index.php:395 +msgid "There was an error deleting the queue:" +msgstr "" + +#: admin/index.php:528 +msgid "There was an error deleting the state:" +msgstr "" + +#: ticket/delete.php:75 +msgid "There was an error deleting the ticket:" +msgstr "" + +#: admin/index.php:275 +msgid "There was an error deleting the type:" +msgstr "" + +#: admin/index.php:868 +msgid "There was an error deleting the version:" +msgstr "" + +#: admin/index.php:982 +msgid "There was an error editing the attribute:" +msgstr "" + +#: admin/index.php:1104 +msgid "There was an error editing the form reply:" +msgstr "" + +#: admin/index.php:615 +msgid "There was an error editing the priority:" +msgstr "" + +#: admin/index.php:375 +msgid "There was an error editing the queue:" +msgstr "" + +#: admin/index.php:480 +msgid "There was an error editing the state:" +msgstr "" + +#: admin/index.php:841 +msgid "There was an error editing the version:" +msgstr "" + +#: lib/Forms/Admin/User.php:35 +#, php-format +msgid "There was an error listing users: %s; %s" +msgstr "" + +#: queue/index.php:52 +#, php-format +msgid "There was an error locating tickets in this queue: " +msgstr "" + +#: admin/index.php:219 +msgid "There was an error modifying the type:" +msgstr "" + +#: search.php:92 +#, php-format +msgid "There was an error performing your search: %s" +msgstr "" + +#: admin/index.php:750 +#, php-format +msgid "" +"There was an error removing \"%s\" from the responsible list for \"%s\":" +msgstr "" + +#: admin/index.php:638 +msgid "There was an error setting the default priority:" +msgstr "" + +#: admin/index.php:502 +msgid "There was an error setting the default state:" +msgstr "" + +#: lib/Forms/Admin/Queue.php:31 +msgid "" +"This email address will be used when sending notifications for any queue " +"tickets." +msgstr "" + +#: data.php:29 +msgid "This is not a search results template." +msgstr "" + +#: lib/Query.php:377 lib/Query.php:550 +msgid "This query element cannot be edited." +msgstr "" + +#: ticket/queue.php:81 lib/Forms/CreateTicket.php:88 +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this queue, you will not " +"be able to create tickets." +msgstr "" + +#: lib/Ticket.php:638 lib/Ticket.php:820 +msgid "Ticket" +msgstr "" + +#: ticket/delete.php:71 +#, php-format +msgid "Ticket %d has been deleted." +msgstr "" + +#: lib/api.php:949 +#, php-format +msgid "Ticket %s - %s" +msgstr "" + +#: lib/Driver/sql.php:1044 +#, php-format +msgid "Ticket %s was not found." +msgstr "" + +#: search.php:122 +msgid "Ticket Search" +msgstr "" + +#: lib/Forms/CreateTicket.php:142 +msgid "Ticket State" +msgstr "" + +#: templates/reports/stats.inc:3 +msgid "Ticket Stats" +msgstr "" + +#: lib/Forms/CreateTicket.php:80 +msgid "Ticket Type" +msgstr "" + +#: lib/Forms/Admin/Queue.php:103 +msgid "Ticket Types associated with this Queue" +msgstr "" + +#: lib/Ticket.php:633 +#, php-format +msgid "Ticket URL: %s" +msgstr "" + +#: ticket/update.php:94 +msgid "Ticket Updated" +msgstr "" + +#: lib/api.php:970 +msgid "Tickets" +msgstr "" + +#: query/rss.php:70 +#, php-format +msgid "Tickets matching the query \"%s\"." +msgstr "" + +#: templates/prefs/sourceselect.inc:322 +msgid "" +"To select multiple fields, hold down the Control (PC) or Command (Mac) while " +"clicking." +msgstr "" + +#: ticket/queue.php:89 lib/Whups.php:677 lib/Ticket.php:608 lib/Ticket.php:805 +#: lib/Ticket.php:945 lib/Renderer/Query.php:108 lib/Forms/Query.php:174 +#: config/prefs.php.dist:48 +msgid "Type" +msgstr "" + +#: lib/Renderer/Comment.php:105 +#, php-format +msgid "Type ⇒ %s" +msgstr "" + +#: lib/Forms/Admin/Type.php:23 lib/Forms/Admin/Type.php:70 +#: lib/Forms/Admin/Type.php:160 +msgid "Type Description" +msgstr "" + +#: lib/Forms/Admin/Type.php:22 lib/Forms/Admin/Type.php:48 +#: lib/Forms/Admin/Type.php:67 lib/Forms/Admin/Type.php:156 +msgid "Type Name" +msgstr "" + +#: lib/Ticket.php:961 +msgid "Unassigned" +msgstr "" + +#: lib/Block/unassigned.php:3 lib/Block/unassigned.php:24 +msgid "Unassigned Tickets" +msgstr "" + +#: lib/Forms/Admin.php:42 +msgid "Unassigned tickets" +msgstr "" + +#: lib/Driver.php:196 +msgid "Unconfirmed" +msgstr "" + +#: lib/Renderer/Query.php:141 lib/Renderer/Query.php:181 +#, php-format +msgid "Unknown node type %s" +msgstr "" + +#: lib/api.php:896 +msgid "Update" +msgstr "" + +#: ticket/update.php:108 +#, php-format +msgid "Update %s" +msgstr "" + +#: templates/admin/mtmatrix.inc:29 +msgid "Update Associations" +msgstr "" + +#: lib/Whups.php:683 lib/Ticket.php:981 +msgid "Updated" +msgstr "" + +#: lib/Ticket.php:615 lib/Ticket.php:640 +msgid "Updated By" +msgstr "" + +#: lib/Forms/Admin/User.php:34 lib/Forms/Admin/User.php:44 +#: lib/Forms/Admin/User.php:47 +msgid "User" +msgstr "" + +#: lib/Forms/Query.php:44 +msgid "User ID" +msgstr "" + +#: lib/Forms/Admin/Queue.php:131 +msgid "Users responsible for this Queue" +msgstr "" + +#: lib/Forms/Admin/User.php:79 +msgid "Users responsible for this queue" +msgstr "" + +#: lib/Ticket.php:607 lib/Ticket.php:804 lib/Renderer/Query.php:102 +#: lib/Forms/Query.php:185 config/prefs.php.dist:51 +msgid "Version" +msgstr "" + +#: lib/Forms/Admin/Version.php:24 lib/Forms/Admin/Version.php:70 +#: lib/Forms/Admin/Version.php:93 +msgid "Version Description" +msgstr "" + +#: lib/Forms/Admin/Version.php:23 lib/Forms/Admin/Version.php:48 +#: lib/Forms/Admin/Version.php:67 lib/Forms/Admin/Version.php:90 +msgid "Version Name" +msgstr "" + +#: ticket/type.php:43 ticket/queue.php:50 lib/Forms/AddComment.php:38 +msgid "Viewable only by members of" +msgstr "" + +#: lib/Forms/AddComment.php:25 +msgid "Watch this ticket" +msgstr "" + +#: ticket/watch.php:78 +#, php-format +msgid "Watchers for %s" +msgstr "" + +#: config/prefs.php.dist:104 +msgid "Weekday Day Month" +msgstr "" + +#: config/prefs.php.dist:105 +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "" + +#: ticket/delete.php:33 lib/Forms/Query.php:383 lib/Forms/Admin/Version.php:96 +#: lib/Forms/Admin/State.php:121 lib/Forms/Admin/Priority.php:121 +#: lib/Forms/Admin/Queue.php:174 lib/Forms/Admin/Attribute.php:149 +#: lib/Forms/Admin/Reply.php:110 lib/Forms/Admin/Type.php:176 +msgid "Yes" +msgstr "" + +#: view.php:54 +#, php-format +msgid "You are not allowed to view ticket %d." +msgstr "" + +#: lib/Driver/sql.php:1053 +#, php-format +msgid "You do not have permission to access this ticket (%s)." +msgstr "" + +#: lib/api.php:548 +msgid "You do not have permission to update this ticket." +msgstr "" + +#: lib/Block/myrequests.php:46 +msgid "You have no open requests." +msgstr "" + +#: lib/Forms/Query.php:353 lib/Block/query.php:28 +msgid "You have no saved queries." +msgstr "" + +#: lib/Whups.php:710 +msgid "You must select at least one queue to send reminders for." +msgstr "" + +#: lib/Forms/CreateTicket.php:132 lib/Forms/AddComment.php:18 +msgid "Your Email Address" +msgstr "" + +#: ticket/create.php:60 +#, php-format +msgid "" +"Your ticket ID is %s. An appropriate person has been notified of this " +"request." +msgstr "" + +#: lib/Mail.php:244 +msgid "[ Could not render body of message. ]" +msgstr "" + +#: lib/Whups.php:774 +msgid "_Admin" +msgstr "" + +#: lib/Whups.php:298 +msgid "_Comment" +msgstr "" + +#: lib/Whups.php:316 +msgid "_Delete" +msgstr "" + +#: lib/Query.php:232 +msgid "_Delete Query" +msgstr "" + +#: lib/Query.php:213 +msgid "_Edit Query" +msgstr "" + +#: admin/index.php:33 +msgid "_Edit Queues" +msgstr "" + +#: templates/menu.inc:5 +msgid "_Go" +msgstr "" + +#: query/index.php:156 +msgid "_Group Criteria" +msgstr "" + +#: lib/Whups.php:292 +msgid "_History" +msgstr "" + +#: lib/Query.php:226 +msgid "_Load Query" +msgstr "" + +#: lib/Whups.php:765 +#, php-format +msgid "_My %s" +msgstr "" + +#: lib/Whups.php:768 +msgid "_New Ticket" +msgstr "" + +#: query/index.php:154 +msgid "_Property Criteria" +msgstr "" + +#: lib/Whups.php:769 +msgid "_Query Builder" +msgstr "" + +#: lib/Whups.php:770 +msgid "_Reports" +msgstr "" + +#: lib/Whups.php:767 +msgid "_Search" +msgstr "" + +#: query/index.php:158 +msgid "_Text Criteria" +msgstr "" + +#: lib/Whups.php:294 +msgid "_Update" +msgstr "" + +#: query/index.php:155 +msgid "_User Criteria" +msgstr "" + +#: lib/Whups.php:302 +msgid "_Watch" +msgstr "" + +#: lib/Renderer/Query.php:161 +msgid "contains (case insensitive) substring" +msgstr "" + +#: lib/Renderer/Query.php:165 +msgid "contains (case sensitive) substring" +msgstr "" + +#: lib/Renderer/Query.php:169 +msgid "contains the word" +msgstr "" + +#: lib/Mail.php:94 lib/Mail.php:118 lib/Mail.php:146 +msgid "current user:" +msgstr "" + +#: lib/api.php:958 +msgid "estimated time" +msgstr "" + +#: lib/Renderer/Query.php:157 +msgid "is" +msgstr "" + +#: lib/Renderer/Query.php:149 +msgid "is greater than" +msgstr "" + +#: lib/Renderer/Query.php:153 +msgid "is less than" +msgstr "" + +#: lib/Renderer/Query.php:173 +msgid "matches the pattern" +msgstr "" diff --git a/whups/po/zh_CN.po b/whups/po/zh_CN.po new file mode 100644 index 000000000..47c5037bf --- /dev/null +++ b/whups/po/zh_CN.po @@ -0,0 +1,2049 @@ +# Whups Traditional Chinese Translation +# Copyright 2002 David Chang. +# David Chang , 2002. +# liaobin ,2004 +# +msgid "" +msgstr "" +"Project-Id-Version: whups\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2004-03-22 16:07+0100\n" +"PO-Revision-Date: 2003-01-08 10:53+0100\n" +"Last-Translator: liaobin \n" +"Language-Team: Chinese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=GB2312\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin.php:597 +#, fuzzy, php-format +msgid "%s added to those responsible for '%s'" +msgstr "'%s' ÏÖÔÚ½«¶Ô '%s' µ£¸ºÔðÈÎ" + +#: templates/reports/stats.inc:20 +#, php-format +msgid "%s days" +msgstr "%s Ìì" + +#: templates/comment.inc:55 +#, php-format +msgid "%s removed from this ticket by %s on %s" +msgstr "%s ÒÑɾ³ý´Ó´Ë¹¤×÷µ¥±»%sÔÚ%s" + +#: admin.php:636 +#, php-format +msgid "'%s' is no longer among those responsible for '%s'" +msgstr "'%s' ½«²»ÔÙ¶Ô '%s' µ£¸ºÔðÈÎ" + +#: admin.php:79 +msgid "- Stage 1" +msgstr "- ²½Öè 1" + +#: admin.php:84 +msgid "- Stage 2" +msgstr "- ²½Öè 2" + +#: scripts/mail-filter.php:98 +msgid "--priority option must be supplied." +msgstr "--ÓÅÏȼ¶Ñ¡Ïî±ØÐë±»Ö§³Ö¡£" + +#: scripts/mail-filter.php:70 +msgid "--queue option must be supplied." +msgstr "" + +#: scripts/mail-filter.php:112 +msgid "--state option must be supplied." +msgstr "--״̬ѡÏî±ØÐë±»Ö§³Ö¡£" + +#: scripts/mail-filter.php:84 +msgid "--type option must be supplied." +msgstr "--ÀàÐÍÑ¡Ïî±ØÐë±»Ö§³Ö¡£" + +#: lib/Driver.php:277 +#, php-format +msgid "-Added By: %s\n" +msgstr "-±»: %s ÐÂÔö\n" + +#: lib/Driver.php:322 lib/Driver.php:343 lib/Driver.php:364 lib/Driver.php:384 +#, php-format +msgid "-Client: %s" +msgstr "-¿Í»§£º %s" + +#: lib/Driver.php:257 lib/Driver.php:275 +#, php-format +msgid "-Client: %s\n" +msgstr "-¿Í»§£º %s\n" + +#: lib/Driver.php:259 +#, php-format +msgid "-Created By: %s\n" +msgstr "-±»: %s ½¨Á¢\n" + +#: lib/Driver.php:345 +#, php-format +msgid "-New Priority: %s" +msgstr "-н¨ÓÅÏÈȨ: %s" + +#: lib/Driver.php:386 +#, php-format +msgid "-New Queue: %s" +msgstr "-н¨¶ÓÁÐ: %s" + +#: lib/Driver.php:324 +#, php-format +msgid "-New State: %s" +msgstr "-н¨×´Ì¬: %s" + +#: lib/Driver.php:366 +#, fuzzy, php-format +msgid "-New Type: %s" +msgstr "-н¨×´Ì¬: %s" + +#: lib/Driver.php:320 lib/Driver.php:341 lib/Driver.php:362 +#, php-format +msgid "-Queue: %s" +msgstr "-¶ÓÁÐ: %s" + +#: lib/Driver.php:255 lib/Driver.php:273 +#, php-format +msgid "-Queue: %s\n" +msgstr "-¶ÓÁÐ: %s\n" + +#: lib/Driver.php:260 lib/Driver.php:278 lib/Driver.php:325 lib/Driver.php:346 +#: lib/Driver.php:367 lib/Driver.php:387 +msgid "-Summary:" +msgstr "-ÕªÒª:" + +#: lib/Driver.php:319 lib/Driver.php:340 lib/Driver.php:361 lib/Driver.php:382 +#, php-format +msgid "-Ticket %s" +msgstr "-¹¤×÷µ¥ %s" + +#: lib/Driver.php:254 lib/Driver.php:272 +#, php-format +msgid "-Ticket %s\n" +msgstr "-¹¤×÷µ¥ %s\n" + +#: lib/api.php:171 +msgid "No summary" +msgstr "ûÓÐÕªÒª" + +#: view.php:55 +#, php-format +msgid "Access denied to %s" +msgstr "ûÓÐȨÏÞ %s" + +#: lib/Admin.php:719 +msgid "Add Attribute" +msgstr "ÐÂÔöÊôÐÔ" + +#: lib/Query.php:536 +msgid "Add Attribute Criterion" +msgstr "ÐÂÔöÊôÐÔ¹æÔò" + +#: details.php:39 +msgid "Add Comment" +msgstr "ÐÂÔöÆÀÂÛ" + +#: details.php:105 +msgid "Add Comment Succeeded" +msgstr "ÐÂÔöÆÀÂ۳ɹ¦" + +#: query.php:178 +msgid "Add Criterion" +msgstr "ÐÂÔö¹æÔò" + +#: lib/Admin.php:543 +msgid "Add Priority" +msgstr "ÐÂÔöÓÅÏÈȨ" + +#: lib/Query.php:481 +msgid "Add Property Criterion" +msgstr "ÐÂÔöÌØÐÔ¹æÔò" + +#: lib/Admin.php:102 lib/Admin.php:103 +msgid "Add Queue" +msgstr "ÐÂÔö¶ÓÁÐ" + +#: lib/Admin.php:451 +msgid "Add State" +msgstr "ÐÂÔö״̬" + +#: lib/Admin.php:14 lib/Admin.php:15 +msgid "Add Subject" +msgstr "ÐÂÔöÖ÷Ìâ" + +#: lib/Query.php:440 +msgid "Add Text Criterion" +msgstr "ÐÂÔöÄÚÈݹæÔò" + +#: lib/Admin.php:308 lib/Admin.php:309 +msgid "Add Type" +msgstr "ÐÂÔöÀàÐÍ" + +#: admin.php:79 admin.php:84 +#, php-format +msgid "Add Type %s" +msgstr "ÐÂÔöÀàÐÍ %s" + +#: lib/Query.php:389 +msgid "Add User Criterion" +msgstr "ÐÂÔöÓû§¹æÔò" + +#: lib/Admin.php:245 +msgid "Add Users" +msgstr "ÐÂÔöÓû§" + +#: lib/Admin.php:631 +msgid "Add Version" +msgstr "ÐÂÔö°æ±¾" + +#: lib/Driver.php:189 +#, php-format +msgid "Added a %s link to %s." +msgstr "ÒÑÌí¼Ó%sÁ¬½Óµ½'%s" + +#: create.php:147 +#, php-format +msgid "Adding your ticket failed: %s." +msgstr "ÐÂÔö¹¤×÷µ¥Ê§°Ü: %s." + +#: lib/Search.php:175 lib/Search.php:236 +msgid "Additional Comment" +msgstr "¸½¼ÓÆÀÂÛ" + +#: templates/menu/menu.inc:23 lib/api.php:146 +msgid "Admin" +msgstr "¹ÜÀí" + +#: admin.php:50 +msgid "Administration" +msgstr "¹ÜÀí" + +#: create.php:153 +msgid "An appropriate person has been notified of this request." +msgstr "ÔÚÕâ´ÎµÄͶƱÖÐÒÑ֪ͨһλÊʵ±µÄÈËÔ±" + +#: templates/queryrenderer.inc:97 lib/Query.php:345 +msgid "And" +msgstr "ÇÒ" + +#: search.php:49 search.php:59 search.php:62 search.php:78 search.php:95 +#: lib/Query.php:487 lib/Query.php:491 lib/Search.php:29 lib/Search.php:71 +#: lib/Search.php:75 +msgid "Any" +msgstr "ÈκÏ" + +#: lib/Search.php:152 lib/Search.php:181 lib/Search.php:240 lib/Search.php:316 +#: lib/Search.php:356 lib/Search.php:414 lib/Search.php:483 lib/Search.php:585 +msgid "Any Group" +msgstr "ÈκÎÓû§×é" + +#: config/prefs.php.dist:47 +msgid "Ascending" +msgstr "ÓÉÏÈÖÁºó" + +#: details.php:42 +msgid "Assign Ticket" +msgstr "·ÖÅ乤×÷µ¥" + +#: details.php:173 +msgid "Assign Ticket Succeeded" +msgstr "·ÖÅ乤×÷µ¥³É¹¦" + +#: lib/Whups.php:321 lib/Search.php:116 lib/Driver.php:74 +#: config/prefs.php.dist:36 +msgid "Assigned" +msgstr "ÒÑ·ÖÅä" + +#: lib/Driver.php:301 +#, php-format +msgid "Assigned By : %s" +msgstr "±»: %s ·ÖÅä" + +#: lib/Driver.php:300 +#, php-format +msgid "Assigned To : %s" +msgstr "ÒÑ·ÖÅ䏸: %s" + +#: admin.php:1012 +msgid "Associations updated successfully." +msgstr "ÁªÏµ¸üгɹ¦¡£" + +#: lib/Search.php:174 +msgid "Attachment" +msgstr "¸½¼þ" + +#: templates/comment.inc:105 +#, php-format +msgid "Attachment '%s' uploaded by %s on %s" +msgstr "¸½¼þ%sÒѱ»%sÔÚ%sÉÏ´«" + +#: details.php:129 +msgid "Attachment successfully uploaded" +msgstr "¸½¼þÒѳɹ¦ÉÏ´«" + +#: lib/Search.php:118 +msgid "Attachments" +msgstr "¸½¼þ" + +#: query.php:40 +msgid "Attribute Criteria" +msgstr "ÊôÐÔ¹æÔò" + +#: lib/Admin.php:723 lib/Admin.php:769 lib/Admin.php:792 +msgid "Attribute Description" +msgstr "ÊôÐÔÃèÊö" + +#: lib/Admin.php:722 lib/Admin.php:747 lib/Admin.php:766 lib/Admin.php:789 +msgid "Attribute Name" +msgstr "ÊôÐÔÃû³Æ" + +#: lib/Admin.php:380 +msgid "Attributes for this Type" +msgstr "´ËÊôÐÔµÄ״̬" + +#: config/prefs.php.dist:118 +msgid "Autolink to other tickets in comments?" +msgstr "ÔÚÆÀÂÛÖÐ×Ô¶¯Á¬½Óµ½ÆäËü¹¤×÷µ¥?" + +#: lib/Reports.php:9 +msgid "Average days to close by Owner" +msgstr "ÒÔÓµÓÐÕ߯½¾ùÈÕÊý¹Ø±Õ" + +#: lib/Reports.php:11 +msgid "Average days to close by Queue" +msgstr "ÒÔ¶ÓÁÐÆ½¾ùÈÕÊý¹Ø±Õ" + +#: lib/Reports.php:10 +msgid "Average days to close by Requester" +msgstr "ÒÔͶƱÕ߯½¾ùÈÕÊý¹Ø±Õ" + +#: lib/Reports.php:13 +msgid "Average time a ticket is unresolved" +msgstr "ÒÔδ½â¾öƽ¾ùÈÕÊý¹Ø±Õ" + +#: scripts/mail-filter.php:94 +#, php-format +msgid "Bad type `%s' for queue." +msgstr "¶ÓÁдíÎóµÄÀàÐÍ%s" + +#: lib/Query.php:350 +msgid "Branch Type" +msgstr "·ÖÖ§ÀàÐÍ" + +#: lib/Admin.php:156 +msgid "Can tickets in this Queue be assigned to any client?" +msgstr "ÔÚÕâ¸ö¶ÓÁÐÖеŤ×÷µ¥ÄÜ·ÖÅ䏸Èκοͻ§Âð£¿" + +#: lib/Query.php:44 +msgid "Case Insensitive Substring" +msgstr "×Ó×Ö·û´®²»·Ö´óСд" + +#: lib/Query.php:45 +msgid "Case Sensitive Substring" +msgstr "×Ó×Ö·û´®Çø·Ö´óСд" + +#: templates/queryrenderer.inc:28 +msgid "Change" +msgstr "±ä¸ü" + +#: lib/Query.php:361 +msgid "Change Ticket Type" +msgstr "±ä¸ü¹¤×÷µ¥ÀàÐÍ" + +#: config/prefs.php.dist:11 +#, fuzzy +msgid "Change display options such as how search results are sorted." +msgstr "¸ü¸ÄÏÔʾѡÏî, Èç³ÊÏÖ·ç¸ñ,²éÕÒ½á¹ûÈçºÎÅÅÐòµÈ." + +#: config/prefs.php.dist:18 +msgid "Change options for email notifications of ticket activity." +msgstr "¹¤×÷µ¥»î¶¯µÄÓʼþ֪ͨѡÏî±ä¸ü." + +#: query.php:45 +msgid "Choose Action:" +msgstr "Ñ¡Ôñ»î¶¯:" + +#: config/prefs.php.dist:128 +msgid "Chronological (oldest first)" +msgstr "°´Äê´ú˳Ðò(ÀϵÄÓÅÏÈ)" + +#: templates/savedsearches.inc:23 +msgid "Clear All Searches" +msgstr "Çå¿ÕËùÓвéѯ" + +#: lib/Create.php:70 lib/Search.php:51 lib/Search.php:104 +msgid "Client" +msgstr "¿Í»§" + +#: lib/Driver.php:298 +#, php-format +msgid "Client : %s" +msgstr "¿Í»§ £º%s" + +#: lib/Search.php:516 +msgid "Clients" +msgstr "¿Í»§" + +#: lib/Admin.php:431 +msgid "Clone" +msgstr "¿Ë¡" + +#: lib/Admin.php:437 +msgid "Clone Description" +msgstr "¿Ë¡ÃèÊö" + +#: admin.php:120 lib/Admin.php:323 +msgid "Clone Type" +msgstr "¿Ë¡ÀàÐÍ" + +#: config/templates.php.dist:43 +msgid "Comma Separated Values (CSV file)" +msgstr "¶ººÅ·Ö¸ôÖµ (CSV ÀàÐÍÎļþ)" + +#: templates/queryrenderer.inc:111 lib/Search.php:145 lib/Search.php:310 +#: lib/Search.php:350 lib/Search.php:390 lib/Search.php:408 lib/Search.php:477 +#: lib/Search.php:579 +msgid "Comment" +msgstr "ÆÀÂÛ" + +#: lib/Driver.php:451 +#, fuzzy, php-format +msgid "Comment by %s on %s:" +msgstr "-%s ÓÚ %s ÆÀÂÛ:" + +#: templates/comment.inc:153 +#, fuzzy, php-format +msgid "Comment from %s on %s" +msgstr "-%s ÓÚ %s ÆÀÂÛ:" + +#: templates/queryrenderer.inc:110 +msgid "Commentor" +msgstr "ÆÀÂÛÕß" + +#: lib/Admin.php:435 +#, php-format +msgid "Copy of %s" +msgstr "%sµÄ¿½±´" + +#: lib/Admin.php:374 +msgid "Create Default Priorities" +msgstr "½¨Á¢Ä¬ÈÏÓÅÏȼ¶" + +#: lib/Admin.php:364 +msgid "Create Default States" +msgstr "½¨Á¢Ä¬Èϲ½Öè" + +#: config/prefs.php.dist:60 +msgid "Create Ticket" +msgstr "½¨Á¢¹¤×÷µ¥" + +#: lib/Create.php:24 +msgid "Create Ticket - Step 1" +msgstr "½¨Á¢¹¤×÷µ¥ - ²½Öè 1" + +#: lib/Create.php:50 +msgid "Create Ticket - Step 2" +msgstr "½¨Á¢¹¤×÷µ¥ - ²½Öè 2" + +#: lib/Create.php:95 +msgid "Create Ticket - Step 3" +msgstr "½¨Á¢¹¤×÷µ¥ - ²½Öè 3" + +#: lib/Create.php:131 +msgid "Create Ticket - Step 4" +msgstr "½¨Á¢¹¤×÷µ¥ - ²½Öè 4" + +#: lib/Whups.php:320 lib/Search.php:115 config/prefs.php.dist:35 +msgid "Created" +msgstr "Òѽ¨Á¢" + +#: query.php:168 query.php:185 +msgid "Current Query" +msgstr "Ŀǰ²éѯ" + +#: templates/queryrenderer.inc:26 +msgid "Current Ticket Type" +msgstr "Ŀǰ¹¤×÷µ¥ÀàÐÍ" + +#: lib/Query.php:363 +msgid "Current Type" +msgstr "ĿǰÀàÐÍ" + +#: config/prefs.php.dist:91 +msgid "Date/Time format for search results" +msgstr "ÒÔ ÈÕÆÚ/ʱ¼ä Ϊ²éÕÒ½á¹ûµÄ¸ñʽ" + +#: config/prefs.php.dist:38 +msgid "Default sorting criteria:" +msgstr "Ô¤ÉèÅÅÁйæÔò:" + +#: config/prefs.php.dist:49 +msgid "Default sorting direction:" +msgstr "Ô¤ÉèÅÅÁз½Ïò:" + +#: query.php:46 +msgid "Delete" +msgstr "ɾ³ý" + +#: admin.php:900 lib/Admin.php:735 +msgid "Delete Attribute" +msgstr "ɾ³ýÊôÐÔ" + +#: lib/Admin.php:781 +msgid "Delete Attribute Confirmation" +msgstr "ɾ³ýÊôÐÔÈ·ÈÏ" + +#: admin.php:509 lib/Admin.php:559 +msgid "Delete Priority" +msgstr "ɾ³ýÓÅÏÈȨ" + +#: lib/Admin.php:605 +msgid "Delete Priority Confirmation" +msgstr "ɾ³ýÓÅÏÈȨȷÈÏ" + +#: admin.php:277 lib/Admin.php:118 +msgid "Delete Queue" +msgstr "ɾ³ý¶ÓÁÐ" + +#: lib/Admin.php:220 +msgid "Delete Queue Confirmation" +msgstr "ɾ³ý¶ÓÁÐÈ·ÈÏ" + +#: templates/savedsearches.inc:29 templates/savedsearches.inc:30 +msgid "Delete Search" +msgstr "ɾ³ý²éѯ" + +#: admin.php:391 lib/Admin.php:468 +msgid "Delete State" +msgstr "ɾ³ý״̬" + +#: lib/Admin.php:517 +msgid "Delete State Confirmation" +msgstr "ɾ³ý״̬ȷÈÏ" + +#: admin.php:683 lib/Admin.php:29 +msgid "Delete Subject" +msgstr "ɾ³ýÖ÷Ìâ" + +#: lib/Admin.php:80 +msgid "Delete Subject Confirmation" +msgstr "ɾ³ýÖ÷ÌâÈ·ÈÏ" + +#: details.php:52 +msgid "Delete Ticket" +msgstr "ɾ³ý¹¤×÷µ¥" + +#: details.php:350 +msgid "Delete Ticket Succeeded" +msgstr "ɾ³ý¹¤×÷µ¥³É¹¦" + +#: admin.php:114 lib/Admin.php:323 +msgid "Delete Type" +msgstr "ɾ³ýÀàÐÍ" + +#: lib/Admin.php:394 +msgid "Delete Type Confirmation" +msgstr "ɾ³ýÀàÐÍÈ·ÈÏ" + +#: admin.php:783 lib/Admin.php:647 +msgid "Delete Version" +msgstr "ɾ³ý°æ±¾" + +#: lib/Admin.php:693 +msgid "Delete Version Confirmation" +msgstr "ɾ³ý°æ±¾È·ÈÏ" + +#: config/prefs.php.dist:48 +msgid "Descending" +msgstr "½µÐò" + +#: lib/Create.php:120 +msgid "Description" +msgstr "ÃèÊö" + +#: config/prefs.php.dist:10 +msgid "Display Options" +msgstr "ÏÔʾѡÏî" + +#: lib/Whups.php:451 +msgid "Download" +msgstr "ÏÂÔØ" + +#: query.php:47 +msgid "Edit" +msgstr "±à¼­" + +#: lib/Admin.php:143 lib/Admin.php:348 +#, php-format +msgid "Edit %s" +msgstr "±à¼­ %s" + +#: admin.php:895 lib/Admin.php:735 lib/Admin.php:758 +msgid "Edit Attribute" +msgstr "±à¼­ÊôÐÔ" + +#: details.php:49 lib/Admin.php:382 +msgid "Edit Attributes" +msgstr "±à¼­ÊôÐÔ" + +#: lib/Admin.php:372 +msgid "Edit Priorities" +msgstr "±à¼­ÓÅÏÈȨ" + +#: admin.php:504 lib/Admin.php:559 lib/Admin.php:582 +msgid "Edit Priority" +msgstr "±à¼­ÓÅÏÈȨ" + +#: runquery.php:24 +msgid "Edit Query" +msgstr "±à¼­²éѯ" + +#: admin.php:271 lib/Admin.php:118 +msgid "Edit Queue" +msgstr "±à¼­¶ÓÁÐ" + +#: admin.php:28 +msgid "Edit Queues" +msgstr "±à¼­¶ÓÁÐ" + +#: admin.php:386 lib/Admin.php:468 lib/Admin.php:491 +msgid "Edit State" +msgstr "±à¼­×´Ì¬" + +#: lib/Admin.php:362 +msgid "Edit States" +msgstr "±à¼­×´Ì¬" + +#: admin.php:678 lib/Admin.php:29 lib/Admin.php:51 +msgid "Edit Subject" +msgstr "±à¼­Ö÷Ìâ" + +#: admin.php:30 +msgid "Edit Subjects" +msgstr "±à¼­Ö÷Ìâ" + +#: admin.php:108 lib/Admin.php:323 +msgid "Edit Type" +msgstr "±à¼­ÀàÐÍ" + +#: admin.php:29 +msgid "Edit Types" +msgstr "±à¼­ÀàÐÍ" + +#: admin.php:778 lib/Admin.php:647 lib/Admin.php:670 +msgid "Edit Version" +msgstr "±à¼­°æ±¾" + +#: lib/Admin.php:734 +msgid "Edit or Delete Attributes" +msgstr "±à¼­»òɾ³ýÊôÐÔ" + +#: lib/Admin.php:558 +msgid "Edit or Delete Priorities" +msgstr "±à¼­»òɾ³ýÓÅÏÈȨ" + +#: lib/Admin.php:117 +msgid "Edit or Delete Queues" +msgstr "±à¼­»òɾ³ý¶ÓÁÐ" + +#: lib/Admin.php:467 +msgid "Edit or Delete States" +msgstr "±à¼­»òɾ³ý״̬" + +#: lib/Admin.php:28 +msgid "Edit or Delete Subjects" +msgstr "±à¼­»òɾ³ýÖ÷Ìâ" + +#: lib/Admin.php:322 +msgid "Edit or Delete Types" +msgstr "±à¼­»òɾ³ýÀàÐÍ" + +#: lib/Admin.php:646 +msgid "Edit or Delete Versions" +msgstr "±à¼­»òɾ³ý°æ±¾" + +#: lib/Admin.php:196 +msgid "Edit the permissions on this queue" +msgstr "±à¼­´Ë¶ÓÁеÄȨÏÞ" + +#: lib/Admin.php:191 +msgid "Edit the users responsible for this queue" +msgstr "±à¼­´Ë¶ÓÁеĸºÔðÈË" + +#: lib/Admin.php:171 +msgid "Edit the versions for this queue" +msgstr "±à¼­´Ë¶ÓÁеİ汾" + +#: lib/Search.php:45 +#, php-format +msgid "Error fetching clients: %s" +msgstr "»ñÈ¡¿Í»§´íÎó£º%s" + +#: query.php:156 +#, php-format +msgid "Error: Unknown query form %s, defaulting to properties" +msgstr "´íÎó: À´×Ô %s µÄδ֪²éѯ,Ô¤ÉèΪÐÔÖÊ" + +#: lib/Query.php:43 +msgid "Exact Match" +msgstr "¾«È·Æ¥Åä" + +#: runquery.php:70 runquery.php:86 query.php:30 +msgid "Execute Query" +msgstr "Ö´Ðвéѯ" + +#: lib/Admin.php:819 +msgid "For tickets from these queues" +msgstr "" + +#: lib/Admin.php:823 +msgid "For tickets which are" +msgstr "" + +#: templates/menu/menu.inc:48 +msgid "Go" +msgstr "תµ½" + +#: lib/Create.php:158 lib/Search.php:226 +msgid "Group Owners" +msgstr "Óû§×éÓµÓÐÕß" + +#: templates/menu/menu.inc:37 +msgid "Help" +msgstr "°ïÖú" + +#: lib/api.php:707 +msgid "Hidden Comments" +msgstr "Òþ²ØÆÀÂÛ" + +#: lib/Search.php:81 +msgid "Hide Assigned" +msgstr "Òþ²ØÒÑ·ÖÅä" + +#: lib/Search.php:80 +msgid "Hide New" +msgstr "Òþ²ØÐ½¨" + +#: lib/Search.php:82 +msgid "Hide Resolved" +msgstr "Òþ²ØÒѽâ¾ö" + +#: lib/Search.php:79 +msgid "Hide Unconfirmed" +msgstr "Òþ²ØÎ´È·ÈÏ" + +#: query.php:49 +msgid "Hoist" +msgstr "ÉýÆð" + +#: templates/queryrenderer.inc:105 lib/Whups.php:313 lib/Query.php:483 +#: config/prefs.php.dist:28 +msgid "Id" +msgstr "Id" + +#: lib/Admin.php:159 +#, fuzzy +msgid "If not, select clients associated with this Queue" +msgstr "ÓëÕâ¸ö¶ÓÁÐÏà¹ØÁªµÄÖ÷Ìâ" + +#: lib/Driver.php:405 +#, php-format +msgid "If you believe you have recieved this mail in error, please contact %s." +msgstr "Èç¹ûÄú¾õµÃÊÕµÄÕâ·âÐżþÓдíÎó,ÇëÓë %s ÁªÂç." + +#: lib/Search.php:54 +msgid "" +"If you don't select any categories, no filtering will be done on ticket " +"category." +msgstr "" + +#: lib/Search.php:57 +msgid "" +"If you don't select any types, no filtering will be done on ticket type." +msgstr "" + +#: lib/Admin.php:826 +msgid "" +"If you select any tickets that do not have an owner, who should we send " +"email to?" +msgstr "" + +#: templates/comment.inc:74 +#, fuzzy, php-format +msgid "Initial priority of '%s' set by %s on %s" +msgstr ", ³õʼÓÅÏÈȨ '%s'." + +#: templates/comment.inc:94 +#, php-format +msgid "Initial queue of '%s' set by %s on %s" +msgstr "" + +#: templates/comment.inc:64 +#, fuzzy, php-format +msgid "Initial state of '%s' set by %s on %s" +msgstr "'%s' µÄ³õʼ״̬" + +#: templates/comment.inc:84 +#, fuzzy, php-format +msgid "Initial type of '%s' set by %s on %s" +msgstr "'%s' µÄ³õʼ״̬" + +#: query.php:50 +msgid "Insert And" +msgstr "²åÈëÇÒ" + +#: lib/Query.php:342 +msgid "Insert Branch" +msgstr "²åÈë·ÖÖ§" + +#: query.php:52 +msgid "Insert Not" +msgstr "²åÈë²»ÊÇ" + +#: query.php:51 +msgid "Insert Or" +msgstr "²åÈë»ò" + +#: query.php:53 +msgid "Insert Query" +msgstr "²åÈë²éѯ" + +#: lib/Admin.php:169 +msgid "Keep a set of versions for this queue?" +msgstr "Ϊ´Ë¶ÓÁй̶¨Ò»×é°æ±¾?" + +#: lib/Driver.php:191 +msgid "Link added." +msgstr "Á¬½ÓÒÑÌí¼õ¡£" + +#: runquery.php:26 query.php:31 lib/Query.php:612 +msgid "Load Query" +msgstr "¼ÓÔØ²éѯ" + +#: templates/menu/menu.inc:28 +msgid "Login" +msgstr "µÇ¼" + +#: config/prefs.php.dist:89 +msgid "MM/DD/YY" +msgstr "ÔÂ/ÈÕ/Äê" + +#: config/prefs.php.dist:90 +msgid "MM/DD/YY HH:MM:SS" +msgstr "ÔÂ/ÈÕ/Äê ʱ:·Ö:Ãë" + +#: lib/Admin.php:429 +#, php-format +msgid "Make a clone of %s" +msgstr "´´½¨%sµÄ¿Ë¡" + +#: lib/Query.php:542 +msgid "Match" +msgstr "Æ¥Åä" + +#: lib/Query.php:392 lib/Query.php:443 lib/Query.php:543 +msgid "Match Operator" +msgstr "Æ¥Åä·û" + +#: lib/Query.php:47 +msgid "Match Pattern" +msgstr "ÓëÑù±¾Æ¥Åä" + +#: lib/Query.php:46 +msgid "Match Word" +msgstr "Óë×Ö·û´®Æ¥Åä" + +#: lib/Reports.php:14 +msgid "Maximum time a ticket is unresolved" +msgstr "Ò»¸ö¹¤×÷µ¥Î´½â¾öµÄ×î´óʱ¼ä" + +#: lib/Reports.php:15 +msgid "Minimum time a ticket is unresolved" +msgstr "Ò»¸ö¹¤×÷µ¥Î´½â¾öµÄ×îСʱ¼ä" + +#: config/prefs.php.dist:129 +msgid "Most recent first" +msgstr "×î½üµÄÓÅÏÈ" + +#: query.php:48 +msgid "Move" +msgstr "ÒÆ¶¯" + +#: details.php:332 +#, php-format +msgid "Moved ticket %d to '%s'" +msgstr "ÒÆ¶¯¹¤×÷µ¥%dµ½%s" + +#: mybugs.php:61 templates/menu/menu.inc:8 +#, php-format +msgid "My %s" +msgstr "ÎÒµÄ %s" + +#: mybugs.php:42 +msgid "My Assigned Tickets" +msgstr "ÎÒµÄÒÑ·ÖÅ乤×÷µ¥" + +#: mybugs.php:58 +msgid "My Open Requests" +msgstr "ÎÒËù¿ª·ÅµÄͶƱ" + +#: mybugs.php:75 search.php:176 +msgid "My Searches" +msgstr "ÎҵIJéÕÒ" + +#: config/prefs.php.dist:58 +msgid "My Tickets" +msgstr "ÎҵŤ×÷µ¥" + +#: lib/Query.php:591 lib/Query.php:628 +msgid "Name" +msgstr "Ãû³Æ" + +#: lib/Admin.php:434 +msgid "Name of the cloned copy" +msgstr "¿Ë¡¿½±´µÄÃû³Æ" + +#: lib/Driver.php:73 +msgid "New" +msgstr "ÐÂÔö" + +#: lib/Search.php:348 lib/Search.php:388 +msgid "New Priority" +msgstr "ÐÂÔöÓÅÏÈȨ" + +#: query.php:29 +msgid "New Query" +msgstr "ÐÂÔö²éѯ" + +#: lib/Search.php:476 +#, fuzzy +msgid "New Queue" +msgstr "ÐÂÔö²éѯ" + +#: lib/Search.php:235 lib/Search.php:308 +msgid "New State" +msgstr "ÐÂÔö״̬" + +#: create.php:26 templates/menu/menu.inc:11 lib/Block/summary.php:24 +msgid "New Ticket" +msgstr "ÐÂÔö¹¤×÷µ¥" + +#: lib/Search.php:407 +msgid "New Type" +msgstr "ÐÂÔöÀàÐÍ" + +#: lib/Driver.php:270 +#, php-format +msgid "New comment for ticket %s" +msgstr "ÐÂÔö¹¤×÷µ¥ %s µÄÆÀÂÛ" + +#: lib/Driver.php:252 +#, php-format +msgid "New ticket (%s): %s" +msgstr "ÐÂÔö¹¤×÷µ¥ (%s): %s" + +#: lib/Admin.php:90 lib/Admin.php:233 lib/Admin.php:415 lib/Admin.php:531 +#: lib/Admin.php:619 lib/Admin.php:707 lib/Admin.php:795 lib/Search.php:280 +msgid "No" +msgstr "·ñ" + +#: clearsearch.php:34 +msgid "No searches cleared." +msgstr "ûÓвéѯ±»Çå¿Õ¡£" + +#: reports.php:17 +msgid "No stats available." +msgstr "ûÓÐÓÐЧµÄ״̬¡£" + +#: lib/Driver.php:66 +#, php-format +msgid "No such backend '%s' found" +msgstr "ÕÒ²»µ½·þÎñ¶Ë '%s'" + +#: details.php:23 +msgid "No such ticket." +msgstr "Î޴˹¤×÷µ¥." + +#: lib/Whups.php:352 +msgid "No tickets matched your search criteria." +msgstr "ûÓй¤×÷µ¥·ûºÏÄúµÄ²éѯÌõ¼þ¡£" + +#: lib/Block/summary.php:75 +msgid "No tickets to display" +msgstr "ûÓй¤×÷µ¥¿ÉÒÔÏÔʾ" + +#: lib/Reports.php:79 +msgid "None" +msgstr "ÎÞ" + +#: templates/queryrenderer.inc:99 lib/Query.php:347 +msgid "Not" +msgstr "²»ÊÇ" + +#: query.php:86 +msgid "Not yet implemented..." +msgstr "ÉÐδÍê³É..." + +#: config/prefs.php.dist:17 +msgid "Notification Options" +msgstr "֪ͨѡÏî" + +#: config/prefs.php.dist:109 +msgid "Only notify me of ticket changes from other users" +msgstr "¹¤×÷µ¥±»ÆäËüÈ˱ä¸üʱֻ֪ͨÎÒ" + +#: lib/Reports.php:8 +msgid "Open Tickets by Owner" +msgstr "ÒÔÓµÓÐÕß¿ªÆô¹¤×÷µ¥" + +#: lib/Reports.php:6 +msgid "Open Tickets by Priority" +msgstr "ÒÔÓÅÏÈȨ¿ªÆô¹¤×÷µ¥" + +#: lib/Reports.php:3 +msgid "Open Tickets by Queue" +msgstr "ÒÔ¶ÓÁпªÆô¹¤×÷µ¥" + +#: lib/Reports.php:7 +msgid "Open Tickets by Requester" +msgstr "ÒÔͶƱÕß¿ªÆô¹¤×÷µ¥" + +#: lib/Reports.php:4 +msgid "Open Tickets by State" +msgstr "ÒÔ״̬¿ªÆô¹¤×÷µ¥" + +#: lib/Reports.php:5 +msgid "Open Tickets by Type" +msgstr "ÒÔÀàÐÍ¿ªÆô¹¤×÷µ¥" + +#: templates/menu/menu.inc:18 +msgid "Options" +msgstr "Ñ¡Ïî" + +#: templates/queryrenderer.inc:98 lib/Query.php:346 +msgid "Or" +msgstr "»ò" + +#: config/prefs.php.dist:9 config/prefs.php.dist:16 +msgid "Other Options" +msgstr "ÆäËüÑ¡Ïî" + +#: templates/queryrenderer.inc:108 +msgid "Owner" +msgstr "ÓµÓÐÕß" + +#: lib/Search.php:111 +msgid "Owner(s)" +msgstr "ÓµÓÐÕß" + +#: lib/Create.php:152 lib/Create.php:164 lib/Whups.php:319 lib/Search.php:220 +#: lib/Search.php:232 +msgid "Owners" +msgstr "ÓµÓÐÕß" + +#: lib/Query.php:349 +msgid "Path" +msgstr "·¾¶" + +#: lib/Search.php:251 lib/Search.php:287 lib/Search.php:327 lib/Search.php:367 +#: lib/Search.php:425 lib/Search.php:456 lib/Search.php:494 lib/Search.php:525 +#: lib/Search.php:551 +msgid "Permission Denied." +msgstr "ûÓÐȨÏÞ¡£" + +#: lib/Admin.php:370 lib/Admin.php:412 +msgid "Priorities for this Type" +msgstr "´ËÀàÐ͵ÄÓÅÏÈȨ" + +#: templates/queryrenderer.inc:121 lib/Create.php:118 lib/Whups.php:317 +#: lib/Query.php:492 lib/Search.php:76 lib/Search.php:109 lib/Search.php:450 +#: lib/Search.php:545 config/prefs.php.dist:32 +msgid "Priority" +msgstr "ÓÅÏÈȨ" + +#: lib/Admin.php:547 lib/Admin.php:593 lib/Admin.php:616 +msgid "Priority Description" +msgstr "ÓÅÏÈȨµÄÃèÊö" + +#: lib/Admin.php:546 lib/Admin.php:571 lib/Admin.php:590 lib/Admin.php:613 +msgid "Priority Name" +msgstr "ÓÅÏÈȨµÄÃû³Æ" + +#: templates/comment.inc:77 +#, fuzzy, php-format +msgid "Priority changed to '%s' by %s on %s" +msgstr ", ÓÅÏÈȨ±ä¸üΪ '%s'." + +#: templates/comment.inc:152 +msgid "Private" +msgstr "˽ÓеÄ" + +#: query.php:36 +msgid "Property Criteria" +msgstr "ÐÔÖʹæÔò" + +#: query.php:133 templates/menu/menu.inc:13 +msgid "Query Builder" +msgstr "²éѯ½¨Á¢Õß" + +#: lib/Query.php:101 +msgid "Query Parameters" +msgstr "²éÕÒ²ÎÊý" + +#: runquery.php:75 +msgid "Query Results" +msgstr "²éÕÒ½á¹û" + +#: templates/queryrenderer.inc:106 lib/Whups.php:318 config/prefs.php.dist:33 +msgid "Queue" +msgstr "¶ÓÁÐ" + +#: lib/Driver.php:296 +#, fuzzy, php-format +msgid "Queue : %s" +msgstr "-¶ÓÁÐ: %s" + +#: lib/Admin.php:106 lib/Admin.php:150 lib/Admin.php:230 +msgid "Queue Description" +msgstr "¶ÓÁÐÃèÊö" + +#: lib/Admin.php:105 lib/Admin.php:129 lib/Admin.php:147 lib/Admin.php:227 +#: lib/Create.php:28 lib/Create.php:36 lib/Search.php:39 lib/Search.php:96 +msgid "Queue Name" +msgstr "¶ÓÁÐÃû³Æ" + +#: lib/Create.php:83 lib/Search.php:99 +msgid "Queue Version" +msgstr "¶ÓÁа汾" + +#: scripts/mail-filter.php:80 +#, fuzzy, php-format +msgid "Queue `%s' does not exist." +msgstr "µãÑ¡µÄÑù°å²¢²»´æÔÚ." + +#: templates/comment.inc:97 +#, fuzzy, php-format +msgid "Queue changed to '%s' by %s on %s" +msgstr "״̬Òѱä¸üΪ '%s'" + +#: admin.php:31 templates/admin/mtmatrix.inc:6 +msgid "Queue/Type Matrix" +msgstr "" + +#: search.php:102 +#, php-format +msgid "Queue: %s, Client: %s, Ticket: %s, Category: %s, Type: %s" +msgstr "" + +#: search.php:104 +#, fuzzy, php-format +msgid "Queue: %s, Ticket: %s, Category: %s, Type: %s" +msgstr "¶ÓÁÐ: %s ¹¤×÷µ¥: %s" + +#: lib/api.php:710 +msgid "Queues" +msgstr "¶ÓÁÐ" + +#: runquery.php:25 +msgid "Re-execute Query" +msgstr "ÖØÐÂÖ´Ðвéѯ" + +#: lib/Admin.php:796 +msgid "Really delete this attribute? This may cause data problems!!" +msgstr "È·¶¨ÒªÉ¾³ýÕâ¸öÊôÐÔ£¿ ÕâÓпÉÄܵ¼ÖÂÊý¾ÝÉϵÄÎÊÌâ !!" + +#: lib/Admin.php:620 +msgid "Really delete this priority? This may cause data problems!!" +msgstr "È·¶¨ÒªÉ¾³ýÕâ¸öÓÅÏÈ£¿ ÕâÓпÉÄܵ¼ÖÂÊý¾ÝÉϵÄÎÊÌâ !!" + +#: lib/Admin.php:234 +msgid "Really delete this queue? This may cause data problems!!" +msgstr "È·¶¨ÒªÉ¾³ýÕâ¸ö¶ÓÁУ¿ ÕâÓпÉÄܵ¼ÖÂÊý¾ÝÉϵÄÎÊÌâ !!" + +#: lib/Admin.php:532 +msgid "Really delete this state? This may cause data problems!!" +msgstr "È·¶¨ÒªÉ¾³ýÕâ¸ö״̬£¿ ÕâÓпÉÄܵ¼ÖÂÊý¾ÝÉϵÄÎÊÌâ !!" + +#: lib/Admin.php:91 +msgid "Really delete this subject? This may cause data problems!!" +msgstr "È·¶¨ÒªÉ¾³ýÕâÖ÷Ì⣿ ÕâÓпÉÄܵ¼ÖÂÊý¾ÝÉϵÄÎÊÌâ !!" + +#: lib/Search.php:281 +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "È·¶¨ÒªÉ¾³ýÕâ¸ö¹¤×÷µ¥? ¹¤×÷µ¥ÉÐδ±¸·ÝÒò´Ë½«ÓÀ¾Ãɾ³ý." + +#: lib/Admin.php:416 +msgid "Really delete this type? This may cause data problems!!" +msgstr "È·¶¨ÒªÉ¾³ýÕâ¸öÀàÐÍ£¿ ÕâÓпÉÄܵ¼ÖÂÊý¾ÝÉϵÄÎÊÌâ !!" + +#: lib/Admin.php:708 +msgid "Really delete this version? This may cause data problems!!" +msgstr "È·¶¨ÒªÉ¾³ýÕâ¸ö°æ±¾£¿ ÕâÓпÉÄܵ¼ÖÂÊý¾ÝÉϵÄÎÊÌâ !!" + +#: search.php:153 +msgid "Refine Search" +msgstr "¸ß¼¶²éÕÒ" + +#: search.php:151 +msgid "Refine search" +msgstr "¸ß¼¶²éÕÒ" + +#: admin.php:981 +msgid "Reminders were sent." +msgstr "" + +#: lib/Admin.php:277 +msgid "Remove User" +msgstr "ɾ³ýÓû§" + +#: reports.php:22 templates/menu/menu.inc:14 +msgid "Reports" +msgstr "±¨±í" + +#: templates/queryrenderer.inc:109 lib/Search.php:114 +msgid "Requester" +msgstr "ͶƱÕß" + +#: lib/Whups.php:322 lib/Search.php:117 lib/Driver.php:75 +#: config/prefs.php.dist:37 +msgid "Resolved" +msgstr "Òѽâ¾ö" + +#: lib/Admin.php:279 +#, fuzzy +msgid "Responsible Users" +msgstr "ɾ³ýÓû§" + +#: lib/Admin.php:175 +msgid "Restrict ticket subjects to a specified list?" +msgstr "ÏÞÖÆ¹¤×÷µ¥Ö÷Ìâ¸øÌØ¶¨µÄÃûµ¥?" + +#: templates/searchresults.inc:47 +msgid "Save" +msgstr "±£´æ" + +#: runquery.php:27 query.php:32 lib/Query.php:589 +msgid "Save Query" +msgstr "±£´æ²éѯ" + +#: templates/searchresults.inc:41 +msgid "Save these results as: " +msgstr "Áí´æÕâЩ½á¹ûΪ: " + +#: search.php:170 templates/menu/menu.inc:10 +msgid "Search" +msgstr "²éÕÒ" + +#: lib/Query.php:546 +#, php-format +msgid "Search %s Attribute" +msgstr "²éÕÒ %s ÊôÐÔ" + +#: lib/Query.php:549 +msgid "Search Attribute" +msgstr "²éÕÒÊôÐÔ" + +#: lib/Query.php:395 lib/Query.php:445 +msgid "Search Comments" +msgstr "²éÕÒÆÀÂÛ" + +#: lib/Query.php:393 +msgid "Search Owners" +msgstr "²éÕÒÓµÓÐÕß" + +#: lib/Query.php:394 +msgid "Search Requester" +msgstr "²éÕÒͶƱÕß" + +#: search.php:144 +msgid "Search Results" +msgstr "²éÕÒ½á¹û" + +#: lib/Query.php:444 +msgid "Search Summary" +msgstr "²éÕÒÕªÒª" + +#: search.php:26 search.php:168 config/prefs.php.dist:59 +msgid "Search Tickets" +msgstr "²éÕÒ¹¤×÷µ¥" + +#: clearsearch.php:27 +msgid "Search cleared." +msgstr "²éÕÒÒÑÇå³ý" + +#: clearsearch.php:30 +msgid "Searches cleared." +msgstr "²éÕÒÒÑÇå³ý" + +#: config/prefs.php.dist:61 +msgid "Select the view to display after login:" +msgstr "Ñ¡ÔñµÇ¼ºóµÄÏÔʾ·½Ê½:" + +#: admin.php:32 lib/Admin.php:807 +msgid "Send Reminders" +msgstr "" + +#: lib/Admin.php:818 +msgid "Send only for this list of ticket ids" +msgstr "" + +#: details.php:44 details.php:47 +msgid "Set Priority" +msgstr "ÉèÖÃÓÅÏÈȨ" + +#: details.php:45 +msgid "Set Queue" +msgstr "ÉèÖöÓÁÐ" + +#: details.php:43 +msgid "Set State" +msgstr "ÉèÖÃ״̬" + +#: details.php:234 +msgid "Set Ticket Attributes" +msgstr "ÉèÖù¤×÷µ¥ÊôÐÔ" + +#: details.php:153 details.php:213 +msgid "Set Ticket Priority" +msgstr "ÉèÖù¤×÷µ¥ÓÅÏÈȨ" + +#: details.php:193 +msgid "Set Ticket State Succeeded" +msgstr "ÉèÖù¤×÷µ¥×´Ì¬³É¹¦" + +#: details.php:269 +msgid "Set Ticket Type" +msgstr "ÉèÖù¤×÷µ¥ÀàÐÍ" + +#: details.php:51 +msgid "Set Type" +msgstr "ÉèÖÃÀàÐÍ" + +#: config/prefs.php.dist:100 +msgid "Show \"(X Days Ago)\" in Date field of search results?" +msgstr "ÔÚ²éÕÒ½á¹ûÖÐÏÔʾ\"(¼¸Ììºó)\"µÄÈÕÆÚ×Ö¶Î?" + +#: config/prefs.php.dist:127 +msgid "Show comments in chronological order, or most recent first?" +msgstr "" + +#: config/prefs.php.dist:78 +msgid "Show ticket IDs in the summary view?" +msgstr "ÓÚÕªÒªÏÔʾÖÐÏÔʾ¹¤×÷µ¥Ê¶±ðÂë?" + +#: config/prefs.php.dist:70 +msgid "Show tickets you have requested in the summary view?" +msgstr "ÓÚÕªÒªÏÔʾÖÐÏÔʾÄúËùµãÑ¡µÄ¹¤×÷µ¥?" + +#: config/templates.php.dist:16 +msgid "Simple HTML Report" +msgstr "¼òµ¥µÄ HTML ±¨±í" + +#: templates/searchresults.inc:72 +msgid "Sort Direction" +msgstr "ÅÅÁз½Ïò" + +#: templates/searchresults.inc:73 templates/searchresults.inc:77 +#, php-format +msgid "Sort by %s" +msgstr "ÒÑ %s ÅÅÁÐ" + +#: templates/queryrenderer.inc:116 lib/Whups.php:315 lib/Query.php:488 +#: lib/Search.php:449 lib/Search.php:544 config/prefs.php.dist:30 +msgid "State" +msgstr "״̬" + +#: lib/Driver.php:302 +#, fuzzy, php-format +msgid "State : %s" +msgstr "-״̬: %s" + +#: lib/Admin.php:456 lib/Admin.php:505 +msgid "State Category" +msgstr "״̬·ÖÀà" + +#: lib/Admin.php:455 lib/Admin.php:502 lib/Admin.php:528 +msgid "State Description" +msgstr "״̬ÃèÊö" + +#: lib/Admin.php:454 lib/Admin.php:480 lib/Admin.php:499 lib/Admin.php:525 +msgid "State Name" +msgstr "״̬Ãû³Æ" + +#: templates/comment.inc:67 +#, fuzzy, php-format +msgid "State changed to '%s' by %s on %s" +msgstr "״̬Òѱä¸üΪ '%s'" + +#: lib/Admin.php:360 lib/Admin.php:408 +msgid "States for this Type" +msgstr "´ËÀàÐ͵Ä״̬" + +#: lib/Create.php:119 config/prefs.php.dist:29 +msgid "Subject" +msgstr "Ö÷Ìâ" + +#: lib/Admin.php:17 lib/Admin.php:40 lib/Admin.php:65 lib/Admin.php:87 +msgid "Subject Name" +msgstr "Ö÷ÌâÃû³Æ" + +#: lib/Admin.php:179 +msgid "Subjects associated with this Queue" +msgstr "ÓëÕâ¸ö¶ÓÁÐÏà¹ØÁªµÄÖ÷Ìâ" + +#: create.php:96 +msgid "Submit" +msgstr "Ìá½»" + +#: admin.php:163 +#, php-format +msgid "Successfully Cloned %s to %s." +msgstr "Òѳɹ¦¿Ë¡%sΪ%s" + +#: templates/queryrenderer.inc:112 lib/Whups.php:314 +msgid "Summary" +msgstr "ÕªÒª" + +#: lib/Driver.php:304 +msgid "Summary:" +msgstr "ÕªÒª:" + +#: lib/Query.php:442 +msgid "Text" +msgstr "ÄÚÈÝ" + +#: query.php:39 +msgid "Text Criteria" +msgstr "ÄÚÈݹæÔò" + +#: view.php:44 lib/Driver.php:218 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "VFS·þÎñÆ÷ÐèÒªÅäÖÃÔÊÐí¸½¼þÉÏ´«¡£" + +#: admin.php:862 +#, php-format +msgid "The attribute '%s' has been added to %s." +msgstr "´ËÊôÐÔ '%s' Òѱ»ÐÂÔöµ½ %s." + +#: admin.php:950 +msgid "The attribute has been deleted." +msgstr "´ËÊôÐÔÒѱ»É¾³ý." + +#: admin.php:919 +msgid "The attribute has been modified." +msgstr "´ËÊôÐÔÒѱ»ÐÞ¸Ä." + +#: admin.php:955 +msgid "The attribute was not deleted." +msgstr "´ËÊôÐÔ²¢Î´±»É¾³ý." + +#: admin.php:471 +#, php-format +msgid "The priority '%s' has been added to %s." +msgstr "´ËÓÅÏÈȨ '%s' Òѱ»ÐÂÔöµ½ %s." + +#: admin.php:558 +msgid "The priority has been deleted." +msgstr "´ËÓÅÏÈȨÒѱ»É¾³ý." + +#: admin.php:528 +msgid "The priority has been modified." +msgstr "´ËÓÅÏÈȨÒѱ»ÐÞ¸Ä." + +#: admin.php:563 +msgid "The priority was not deleted." +msgstr "´ËÓÅÏÈȨ²¢Î´±»É¾³ý." + +#: admin.php:247 +#, php-format +msgid "The queue '%s' has been created." +msgstr "´Ë¶ÓÁÐ '%s' Òѱ»½¨Á¢." + +#: admin.php:330 +msgid "The queue has been deleted." +msgstr "´Ë¶ÓÁÐÒѱ»É¾³ý." + +#: admin.php:310 +msgid "The queue has been modified." +msgstr "´Ë¶ÓÁÐÒѱ»ÐÞ¸Ä." + +#: admin.php:335 +msgid "The queue was not deleted." +msgstr "´Ë¶ÓÁв¢Î´±»É¾³ý." + +#: data.php:24 +msgid "The requested template does not exist." +msgstr "µãÑ¡µÄÑù°å²¢²»´æÔÚ." + +#: admin.php:352 +#, php-format +msgid "The state '%s' has been added to %s." +msgstr "´Ë״̬ '%s' Òѱ»ÐÂÔöµ½ %s." + +#: admin.php:441 +msgid "The state has been deleted." +msgstr "´Ë״̬Òѱ»É¾³ý." + +#: admin.php:410 +msgid "The state has been modified." +msgstr "´Ë״̬Òѱ»ÐÞ¸Ä." + +#: admin.php:446 +msgid "The state was not deleted." +msgstr "´Ë״̬²¢Î´±»É¾³ý." + +#: admin.php:660 +#, php-format +msgid "The subject '%s' has been added." +msgstr "´ËÖ÷Ìâ '%s' Òѱ»ÐÂÔö." + +#: admin.php:722 +msgid "The subject has been deleted." +msgstr "´ËÖ÷ÌâÒѱ»É¾³ý." + +#: admin.php:701 +msgid "The subject has been modified." +msgstr "´ËÖ÷ÌâÒѱ»ÐÞ¸Ä." + +#: admin.php:727 +msgid "The subject was not deleted." +msgstr "´ËÖ÷ÌⲢδ±»É¾³ý." + +#: details.php:359 +msgid "The ticket was not deleted." +msgstr "´Ë¹¤×÷µ¥Î´±»É¾³ý." + +#: admin.php:182 +#, php-format +msgid "The type '%s' has been modified." +msgstr "´ËÀàÐÍ '%s' Òѱ»ÐÞ¸Ä." + +#: admin.php:226 +msgid "The type has been deleted." +msgstr "´ËÀàÐÍÒѱ»É¾³ý." + +#: admin.php:231 +msgid "The type was not deleted." +msgstr "´ËÀàÐͲ¢Î´±»É¾³ý." + +#: admin.php:744 +#, php-format +msgid "The version '%s' has been added to %s." +msgstr "´Ë°æ±¾ '%s' Òѱ»Ôö¼Óµ½ %s." + +#: admin.php:832 +msgid "The version has been deleted." +msgstr "´Ë°æ±¾Òѱ»É¾³ý." + +#: admin.php:802 +msgid "The version has been modified." +msgstr "´Ë°æ±¾Òѱ»ÐÞ¸Ä." + +#: admin.php:837 +msgid "The version was not deleted." +msgstr "´Ë°æ±¾²¢Î´±»É¾³ý." + +#: lib/Admin.php:743 +msgid "There are no attribute types to edit" +msgstr "ûÓÐÊôÐÔÀàÐͿɹ©±à¼­" + +#: lib/Query.php:549 +msgid "There are no attributes defined for the current type" +msgstr "ĿǰÕâ¸öÀàÐÍûÓж¨ÒåÊôÐÔ." + +#: lib/Create.php:65 +#, fuzzy +msgid "" +"There are no clients associated with this module; until there are, you " +"cannot create any tickets in this module." +msgstr "" +"ûÓй¤×÷µ¥ÀàÐÍͬÕâ¸ö¶ÓÁйØÁª£»³ý·ÇÓÐÒ»¸ö¹ØÁª£¬·ñÔòÄú²»ÄÜÔڴ˶ÓÁÐÖд´½¨Èκι¤" +"×÷µ¥¡£" + +#: lib/Admin.php:567 +msgid "There are no priorities to edit" +msgstr "ûÓÐÓÅÏÈȨ¿É¹©±à¼­" + +#: lib/Admin.php:815 +msgid "There are no queues available." +msgstr "ûÓÐÓÐЧ¶ÓÁÐ" + +#: lib/Admin.php:126 +msgid "There are no queues to edit" +msgstr "ûÓжÓÁпɹ©±à¼­" + +#: lib/Create.php:36 +msgid "There are no queues which you can create tickets in." +msgstr "ûÓжÓÁпɹ©Äú½¨Á¢¹¤×÷µ¥." + +#: lib/Search.php:32 +msgid "There are no queues which you can search." +msgstr "ûÓжÓÁпɹ©Äú²éÕÒ." + +#: lib/Admin.php:476 +msgid "There are no states to edit" +msgstr "ûÓÐ״̬¿É¹©±à¼­" + +#: lib/Admin.php:37 +msgid "There are no subjects to edit" +msgstr "ûÓÐÖ÷Ìâ¿É¹©±à¼­" + +#: lib/Create.php:57 +msgid "" +"There are no ticket types associated with this module; until there are, you " +"cannot create any tickets in this module." +msgstr "" +"ûÓй¤×÷µ¥ÀàÐÍͬÕâ¸ö¶ÓÁйØÁª£»³ý·ÇÓÐÒ»¸ö¹ØÁª£¬·ñÔòÄú²»ÄÜÔڴ˶ÓÁÐÖд´½¨Èκι¤" +"×÷µ¥¡£" + +#: lib/Admin.php:331 +msgid "There are no types to edit" +msgstr "ûÓÐÀàÐͿɹ©±à¼­" + +#: lib/Admin.php:293 +msgid "There are no users responsible for this queue." +msgstr "Õâ¸ö¶ÓÁÐûÓиºÔðÈË." + +#: lib/Create.php:163 lib/Search.php:231 +msgid "There are no users to which this ticket can be assigned." +msgstr "Ôڴ˹¤×÷µ¥ÖÐûÓÐÓû§¿É¹©·ÖÅä." + +#: lib/Admin.php:655 +msgid "There are no versions to edit" +msgstr "ûÓа汾¿É¹©±à¼­" + +#: graph.php:30 +msgid "There is no data for this graph." +msgstr "´ËͼÐÎÖÐûÓÐÊý¾Ý." + +#: lib/Reports.php:154 +msgid "There is no data for this report." +msgstr "´Ë±¨±íÖÐûÓÐÊý¾Ý." + +#: admin.php:599 +#, php-format +msgid "There was an error adding '%s' to the responsible list for '%s': %s" +msgstr "ÐÂÔö '%s' µ½¸ºÔðÃûµ¥ '%s': %s ʱ·¢ÉúÒ»¸ö´íÎó" + +#: admin.php:662 +#, php-format +msgid "There was an error adding the subject: %s." +msgstr "ÐÂÔöÖ÷Ìâ: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:865 +#, php-format +msgid "There was an error creating the attribute: %s." +msgstr "½¨Á¢ÊôÐÔ: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:473 +#, php-format +msgid "There was an error creating the priority: %s." +msgstr "½¨Á¢ÓÅÏÈȨ: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:255 +#, php-format +msgid "There was an error creating the queue: %s." +msgstr "½¨Á¢¶ÓÁÐ: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:354 +#, php-format +msgid "There was an error creating the state: %s." +msgstr "½¨Á¢×´Ì¬: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:746 +#, php-format +msgid "There was an error creating the version: %s." +msgstr "½¨Á¢°æ±¾: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:952 +#, php-format +msgid "There was an error deleting the attribute: %s." +msgstr "ɾ³ýÊôÐÔ: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:560 +#, php-format +msgid "There was an error deleting the priority: %s." +msgstr "ɾ³ýÓÅÏÈȨ: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:332 +#, php-format +msgid "There was an error deleting the queue: %s." +msgstr "ɾ³ý¶ÓÁÐ: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:443 +#, php-format +msgid "There was an error deleting the state: %s." +msgstr "ɾ³ý״̬: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:724 +#, php-format +msgid "There was an error deleting the subject: %s." +msgstr "ɾ³ýÖ÷Ìâ: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: details.php:355 +#, php-format +msgid "There was an error deleting the ticket: %s" +msgstr "ɾ³ý¹¤×÷µ¥: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:228 +#, php-format +msgid "There was an error deleting the type: %s." +msgstr "ɾ³ýÀàÐÍ: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:834 +#, php-format +msgid "There was an error deleting the version: %s." +msgstr "ɾ³ý°æ±¾: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:926 +#, php-format +msgid "There was an error editing the attribute: %s." +msgstr "±à¼­ÊôÐÔ: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:533 +#, php-format +msgid "There was an error editing the priority: %s." +msgstr "±à¼­ÓÅÏÈȨ: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:314 +#, php-format +msgid "There was an error editing the queue: %s." +msgstr "±à¼­¶ÓÁÐ: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:415 +#, php-format +msgid "There was an error editing the state: %s." +msgstr "±à¼­×´Ì¬: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:706 +#, php-format +msgid "There was an error editing the subject: %s." +msgstr "±à¼­Ö÷Ìâ: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:807 +#, php-format +msgid "There was an error editing the version: %s." +msgstr "±à¼­°æ±¾: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: mybugs.php:37 +#, php-format +msgid "There was an error listing your assigned tickets: %s" +msgstr "ÁгöÄúÒÑ·ÖÅäµÄ¹¤×÷µ¥: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: mybugs.php:53 +#, php-format +msgid "There was an error listing your open requests: %s" +msgstr "ÁгöÄúËù¿ª·ÅµÄͶƱ: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:180 +#, php-format +msgid "There was an error modifying the type: %s." +msgstr "ÐÞ¸ÄÀàÐÍ: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: search.php:137 +#, php-format +msgid "There was an error performing your search: %s" +msgstr "Ö´ÐвéÕÒ: %s ʱ·¢ÉúÒ»¸ö´íÎó." + +#: admin.php:638 +#, php-format +msgid "There was an error removing '%s' from the responsible list for '%s': %s" +msgstr "ɾ³ý '%s' ×Ô¸ºÔðÃûµ¥ '%s': %s ʱ·¢ÉúÒ»¸ö´íÎó" + +#: data.php:27 +msgid "This is not a search results template." +msgstr "Õâ²»ÊÇÒ»¸ö²éÕÒ½á¹ûµÄÄ£°æ." + +#: lib/Admin.php:57 +msgid "This is not a valid subject." +msgstr "Õâ²»ÊÇÒ»¸öºÏ·¨µÄÖ÷Ìâ." + +#: lib/Driver.php:402 +#, php-format +msgid "This mail was automatically generated by %s" +msgstr "ÕâÊÇÒ»·âÓÉ %s ×Ô¶¯²úÉúµÄÐżþ" + +#: lib/Create.php:78 +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this module, you will not " +"be able to create tickets." +msgstr "" +"Õâ¸ö¶ÓÁбØÐëÒªÄúΪËüÖ¸¶¨Ò»¸ö°æ±¾,µ«ÊDz¢Ã»Óа汾ÓëÆäÏà¹ØÁª.Äú½«ÎÞ·¨½¨Á¢¹¤×÷µ¥," +"Ö±µ½ÄúΪ´ËÒ»¶ÓÁн¨Á¢°æ±¾." + +#: lib/Driver.php:295 +#, php-format +msgid "Ticket : %s" +msgstr "¹¤×÷µ¥ £º %s" + +#: templates/menu/menu.inc:48 +msgid "Ticket #" +msgstr "¹¤×÷µ¥ #" + +#: details.php:534 +#, php-format +msgid "Ticket %s Comments" +msgstr "¹¤×÷µ¥ %s µÄÆÀÂÛ" + +#: details.php:527 +#, php-format +msgid "Ticket %s Details" +msgstr "¹¤×÷µ¥ %s µÄϸ½Ú" + +#: lib/Driver.php:291 +#, php-format +msgid "Ticket %s has been assigned" +msgstr "¹¤×÷µ¥ %s µÄ·ÖÅäÒѱä¸ü" + +#: lib/Driver.php:380 +#, php-format +msgid "Ticket %s has changed module" +msgstr "¹¤×÷µ¥ %s µÄÄ£¿éÒѱä¸ü" + +#: lib/Driver.php:338 +#, php-format +msgid "Ticket %s has changed priority" +msgstr "¹¤×÷µ¥ %s µÄÓÅÏÈȨÒѱä¸ü" + +#: lib/Driver.php:317 +#, php-format +msgid "Ticket %s has changed state" +msgstr "¹¤×÷µ¥ %s µÄ״̬Òѱä¸ü" + +#: lib/Driver.php:359 +#, php-format +msgid "Ticket %s has changed type" +msgstr "¹¤×÷µ¥ %s µÄÀàÐÍÒѱä¸ü" + +#: lib/Driver/sql.php:898 +#, php-format +msgid "Ticket %s was not found." +msgstr "ÕÒ²»µ½¹¤×÷µ¥ %s ." + +#: details.php:367 +msgid "Ticket Details" +msgstr "¹¤×÷µ¥Ï¸½Ú" + +#: lib/Search.php:38 +msgid "Ticket ID" +msgstr "¹¤×÷µ¥Ê¶±ðºÅÂë" + +#: lib/Create.php:117 lib/Search.php:72 lib/Search.php:108 +msgid "Ticket State" +msgstr "¹¤×÷µ¥×´Ì¬" + +#: templates/reports/stats.inc:4 +msgid "Ticket Stats" +msgstr "¹¤×÷µ¥Í³¼Æ" + +#: lib/Search.php:95 lib/Search.php:277 lib/api.php:139 +msgid "Ticket Summary" +msgstr "¹¤×÷µ¥ÕªÒª" + +#: lib/Create.php:72 lib/Search.php:107 +msgid "Ticket Type" +msgstr "¹¤×÷µ¥ÀàÐÍ" + +#: lib/Admin.php:165 +msgid "Ticket Types associated with this Queue" +msgstr "Óë´Ë¶ÓÁÐÓйØÁªµÄ¹¤×÷µ¥ÀàÐÍ" + +#: lib/Driver.php:293 +#, fuzzy, php-format +msgid "Ticket URL: %s" +msgstr "-¹¤×÷µ¥ %s" + +#: templates/comment.inc:50 +#, php-format +msgid "Ticket assigned to %s by %s on %s" +msgstr "¹¤×÷µ¥ÒÑ·ÖÅ䏸%s±»%sÔÚ%s" + +#: lib/Block/summary.php:52 +msgid "Tickets assigned to you" +msgstr "ÒÑ·ÖÅ䏸ÄúµÄ¹¤×÷µ¥" + +#: lib/Search.php:54 +msgid "Tickets which are" +msgstr "" + +#: lib/Block/summary.php:69 +msgid "Tickets you requested" +msgstr "ÄúÒѵãÑ¡µÄ¹¤×÷µ¥" + +#: templates/queryrenderer.inc:107 lib/Whups.php:316 lib/Search.php:519 +#: config/prefs.php.dist:31 +msgid "Type" +msgstr "ÀàÐÍ" + +#: lib/Admin.php:311 lib/Admin.php:355 lib/Admin.php:404 +msgid "Type Description" +msgstr "ÀàÐÍÃèÊö" + +#: lib/Admin.php:310 lib/Admin.php:334 lib/Admin.php:352 lib/Admin.php:401 +msgid "Type Name" +msgstr "ÀàÐÍÃû³Æ" + +#: templates/comment.inc:87 +#, fuzzy, php-format +msgid "Type changed to '%s' by %s on %s" +msgstr "״̬Òѱä¸üΪ '%s'" + +#: lib/Search.php:57 +msgid "Types" +msgstr "ÀàÐÍ" + +#: lib/Search.php:112 +msgid "Unassigned" +msgstr "δ±»·ÖÅä" + +#: lib/Admin.php:826 +msgid "Unassigned tickets" +msgstr "δ·ÖÅäµÄ¹¤×÷µ¥" + +#: lib/Driver.php:72 +msgid "Unconfirmed" +msgstr "δȷÈÏ" + +#: templates/queryrenderer.inc:146 +#, php-format +msgid "Unknown node type %s" +msgstr "δ֪µÄ½Úµã(node)ÀàÐÍ %s" + +#: templates/admin/mtmatrix.inc:28 +msgid "Update Associations" +msgstr "¸üйØÁª" + +#: details.php:40 +msgid "Upload Attachment" +msgstr "ÉÏ´«¸½¼þ" + +#: lib/Admin.php:263 lib/Admin.php:265 +msgid "User" +msgstr "Óû§" + +#: query.php:37 +msgid "User Criteria" +msgstr "Óû§¹æÔò" + +#: lib/Query.php:391 +msgid "User ID" +msgstr "Óû§ID" + +#: lib/Admin.php:189 +msgid "Users responsible for this Queue" +msgstr "¶ÓÁиºÔðÈË" + +#: lib/Admin.php:297 +msgid "Users responsible for this queue" +msgstr "¶ÓÁиºÔðÈË" + +#: config/prefs.php.dist:34 +msgid "Version" +msgstr "°æ±¾" + +#: lib/Admin.php:635 lib/Admin.php:681 lib/Admin.php:704 +msgid "Version Description" +msgstr "°æ±¾ÃèÊö" + +#: lib/Admin.php:634 lib/Admin.php:659 lib/Admin.php:678 lib/Admin.php:701 +msgid "Version Name" +msgstr "°æ±¾Ãû³Æ" + +#: templates/reports/graphs.inc:14 +msgid "View Graphs" +msgstr "ÏÔʾͼÐÎ" + +#: lib/Search.php:156 lib/Search.php:185 lib/Search.php:244 lib/Search.php:320 +#: lib/Search.php:360 lib/Search.php:418 lib/Search.php:487 lib/Search.php:589 +msgid "Viewable only by members of" +msgstr "Ö»ÓгÉÔ±¿ÉÒÔÏÔʾ" + +#: config/prefs.php.dist:87 +msgid "Weekday Day Month" +msgstr "ÐÇÆÚ ÈÕ ÔÂ" + +#: config/prefs.php.dist:88 +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "ÐÇÆÚ ÈÕ Ô ʱ:·Ö:Ãë Ê±Çø" + +#: lib/Admin.php:90 lib/Admin.php:233 lib/Admin.php:415 lib/Admin.php:531 +#: lib/Admin.php:619 lib/Admin.php:707 lib/Admin.php:795 lib/Search.php:280 +msgid "Yes" +msgstr "ÊÇ" + +#: details.php:75 view.php:40 +msgid "You are not allowed to view this ticket." +msgstr "ÄúûÓв鿴´Ë¹¤×÷µ¥µÄȨÏÞ." + +#: lib/Driver/sql.php:901 +#, php-format +msgid "You do not have permission to access this ticket (%s)." +msgstr "ÄúûÓдæÈ¡´Ë¹¤×÷µ¥ (%s) µÄȨÏÞ." + +#: lib/Query.php:625 +msgid "You have no saved queries." +msgstr "ûÓÐÄúµÄÒѱ£´æ²éѯÊý¾Ý." + +#: lib/Whups.php:346 +msgid "You must select at least one queue to send reminders for." +msgstr "" + +#: lib/Admin.php:206 +msgid "You must select clients." +msgstr "Äú±ØÐëÑ¡ÔñÒ»¸ö¿Í»§" + +#: lib/Create.php:30 lib/Search.php:143 lib/Search.php:172 lib/Search.php:385 +msgid "Your Email Address" +msgstr "ÄúµÄµç×ÓÓʼþµØÖ·" + +#: create.php:152 +#, php-format +msgid "Your ticket id is %s. " +msgstr "ÄúµÄ¹¤×÷µ¥Ê¶±ðºÅÂëΪ %s. " + +#: scripts/mail-filter.php:108 +#, fuzzy, php-format +msgid "bad priority `%s' for type." +msgstr "´ËÀàÐ͵ÄÓÅÏÈȨ" + +#: scripts/mail-filter.php:122 +#, fuzzy, php-format +msgid "bad state `%s' for type." +msgstr "´ËÀàÐ͵Ä״̬" + +#: templates/queryrenderer.inc:136 +msgid "contains (case insensitive) substring" +msgstr "°üº¬(²»·Ö´óСд)×Ó×Ö·û´®" + +#: templates/queryrenderer.inc:137 +msgid "contains (case sensitive) substring" +msgstr "°üº¬(Çø·Ö´óСд)×Ó×Ö·û´®" + +#: templates/queryrenderer.inc:138 +msgid "contains the word" +msgstr "°üº¬Õâ¸ö×Ö" + +#: scripts/mail-filter.php:133 +#, php-format +msgid "error processing message: %s" +msgstr "" + +#: templates/queryrenderer.inc:135 +msgid "is" +msgstr "ÊÇ" + +#: templates/queryrenderer.inc:133 +msgid "is greater than" +msgstr "´óÓÚ" + +#: templates/queryrenderer.inc:134 +msgid "is less than" +msgstr "СÓÚ" + +#: templates/queryrenderer.inc:139 +msgid "matches the pattern" +msgstr "ÓëÑù±¾Æ¥Åä" diff --git a/whups/po/zh_TW.po b/whups/po/zh_TW.po new file mode 100644 index 000000000..9d1dffde1 --- /dev/null +++ b/whups/po/zh_TW.po @@ -0,0 +1,2321 @@ +# Whups Traditional Chinese Translation +# Copyright 2002 David Chang.±i¨}¤å,¥xÆW +# David Chang , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: whups 1.0\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-06-25 09:07+0800\n" +"PO-Revision-Date: 2008-03-20 10:53+0100\n" +"Last-Translator: David Chang \n" +"Language-Team: Traditional Chinese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=BIG5\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: admin/index.php:745 +#, php-format +msgid "\"%s\" is no longer among those responsible for \"%s\"" +msgstr "\"%s\"±N¤£¦A¹ï\"%s\"¾á­t³d¥ô" + +#: templates/menu.inc:5 +msgid "#Id" +msgstr "#³æ¸¹" + +#: templates/ticket/watchers.inc:3 +#, php-format +msgid "%d people watching, %d people responsible" +msgstr "%d ­Ó¤HÆ[¹î, %d ­Ó¤H©Ó¿ì" + +#: queue/rss.php:96 +msgid "%s %s tickets in %s" +msgstr "%s %s Ápô³æ©ó %s" + +#: queue/rss.php:100 +#, php-format +msgid "%s %s tickets in all queues" +msgstr "%s %s Ápô³æ¦b©Ò¦³¤ÀÃþ" + +#: lib/Renderer/Comment.php:120 +#, php-format +msgid "%s ⇒ %s" +msgstr "%s ⇒ %s" + +#: lib/Driver.php:481 +#, php-format +msgid "%s (%s) wrote:" +msgstr "%s (%s) µû½×:" + +#: admin/index.php:700 +#, php-format +msgid "%s added to those responsible for \"%s\"" +msgstr "%s¤w¥[¤J\"%s\"ªº©Ó¿ì¦W³æ¤¤" + +#: templates/reports/stats.inc:17 +#, php-format +msgid "%s days" +msgstr "%s ¤Ñ" + +#: queue/rss.php:104 +#, php-format +msgid "%s tickets in %s" +msgstr "%s Ápô³æ¦b %s" + +#: queue/rss.php:108 +#, php-format +msgid "%s tickets in all queues" +msgstr "%s Ápô³æ¦b©Ò¦³¤ÀÃþ¤¤" + +#: ticket/watch.php:60 +#, php-format +msgid "%s will be notified when this ticket is updated." +msgstr "Ápô³æÅܧó®É±N¦Û°Ê³qª¾%s." + +#: ticket/watch.php:72 +#, php-format +msgid "%s will no longer receive updates for this ticket." +msgstr "Ápô³æÅܧó®É%s±N¤£¦A¦¬¨ì³qª¾." + +#: admin/index.php:109 +msgid "- Stage 1" +msgstr "- ¨BÆJ 1" + +#: admin/index.php:114 +msgid "- Stage 2" +msgstr "- ¨BÆJ 2" + +#: scripts/mail-filter.php:172 +msgid "--queue-name or --queue-id must specify a valid and public queue." +msgstr "--queue-name ©Î --queue-id ¥²¶·«ü©w¤@­Ó¦³®Ä»P¶}©ñªº¤ÀÃþ." + +#: templates/prevnext.inc:16 +msgid "<>" +msgstr "³Ì«áµ§>>" + +#: lib/Forms/Query.php:341 +msgid "Load Query" +msgstr "¸ü¤J" + +#: lib/Forms/VarRenderer.php:46 +msgid "Loading..." +msgstr "¸ü¤J¤¤..." + +#: config/prefs.php.dist:106 +msgid "MM/DD/YY" +msgstr "¤ë/¤é/¦~" + +#: config/prefs.php.dist:107 +msgid "MM/DD/YY HH:MM:SS" +msgstr "¤ë/¤é/¦~ ®É:¤À:¬í" + +#: lib/Forms/Admin/Type.php:193 +#, php-format +msgid "Make a clone of %s" +msgstr "½Æ»s %s" + +#: lib/Forms/Query.php:271 +msgid "Match" +msgstr "§k¦X" + +#: lib/Forms/Query.php:44 lib/Forms/Query.php:130 lib/Forms/Query.php:272 +msgid "Match Operator" +msgstr "§k¦Xµ{«×" + +#: lib/Query.php:55 +msgid "Match Pattern" +msgstr "»P¼Ë¥»§k¦X" + +#: lib/Query.php:54 +msgid "Match Word" +msgstr "»P¦r¦ê§k¦X" + +#: lib/Reports.php:20 +msgid "Maximum time a ticket is unresolved" +msgstr "¥¼¸Ñ¨M³Ìªø¤Ñ¼Æ" + +#: lib/Block/tree_menu.php:3 +msgid "Menu List" +msgstr "¥\¯àªí" + +#: lib/Reports.php:21 +msgid "Minimum time a ticket is unresolved" +msgstr "¥¼¸Ñ¨M³Ìµu¤Ñ¼Æ" + +#: config/prefs.php.dist:146 +msgid "Most recent first" +msgstr "³Ìªñªº¤@µ§" + +#: templates/prefs/sourceselect.inc:312 +msgid "Move down" +msgstr "¤U²¾" + +#: templates/prefs/sourceselect.inc:310 +msgid "Move up" +msgstr "¤W²¾" + +#: ticket/queue.php:181 +#, php-format +msgid "Moved ticket %d to \"%s\"" +msgstr "·h²¾Ápô³æ %d ¨ì \"%s\"" + +#: mybugs.php:54 +#, php-format +msgid "My %s" +msgstr "§Úªº%s" + +#: mybugs_edit.php:33 +#, php-format +msgid "My %s :: Add Content" +msgstr "§Úªº %s :: ·s¼W¤º®e" + +#: search.php:106 lib/Block/myqueries.php:3 lib/Block/myqueries.php:24 +msgid "My Queries" +msgstr "§Úªº¬d¸ß" + +#: lib/Block/myrequests.php:3 lib/Block/myrequests.php:24 +msgid "My Requests" +msgstr "§Ú©Ò«Ø¥ßªºÁpô³æ" + +#: lib/Block/mytickets.php:3 lib/Block/mytickets.php:24 +#: config/prefs.php.dist:75 +msgid "My Tickets" +msgstr "«ü¬£µ¹§ÚªºÁpô³æ" + +#: lib/api.php:978 +msgid "My tickets by assignment date" +msgstr "§ÚªºÁpô³æ¨Ì«ü¬£¤é" + +#: lib/api.php:977 +msgid "My tickets by creation date" +msgstr "§ÚªºÁpô³æ¨Ì«Ø¥ß¤é" + +#: lib/api.php:979 +msgid "My tickets by due date" +msgstr "§ÚªºÁpô³æ¨Ì¦³®Ä´Á" + +#: lib/api.php:980 +msgid "My tickets by resolution date" +msgstr "§ÚªºÁpô³æ¨Ì¸Ñ¨M¤é" + +#: lib/Forms/Query.php:320 lib/Forms/Query.php:352 +msgid "Name" +msgstr "¦WºÙ" + +#: lib/Forms/Admin/Type.php:198 +msgid "Name of the cloned copy" +msgstr "½Æ»s«áªº¦WºÙ" + +#: lib/Query.php:185 +msgid "Ne_w Query" +msgstr "·s¼W_w" + +#: lib/Driver.php:197 +msgid "New" +msgstr "·s¼W" + +#: lib/Ticket.php:618 lib/Ticket.php:711 +msgid "New Attachment" +msgstr "·s¼Wªþ¥ó" + +#: lib/Renderer/Comment.php:58 lib/Renderer/Comment.php:62 +#, php-format +msgid "New Attachment: %s" +msgstr "·s¼Wªþ¥ó: %s" + +#: ticket/queue.php:32 +msgid "New Queue" +msgstr "¤ÀÃþ" + +#: ticket/create.php:67 lib/Block/tree_menu.php:21 +msgid "New Ticket" +msgstr "·s¼WÁpô³æ" + +#: ticket/type.php:31 +msgid "New Type" +msgstr "Ãþ«¬" + +#: templates/prevnext.inc:26 +msgid "Next>" +msgstr "¤U¤@µ§>" + +#: ticket/delete.php:33 lib/Forms/Query.php:379 lib/Forms/Admin/Version.php:96 +#: lib/Forms/Admin/State.php:121 lib/Forms/Admin/Priority.php:121 +#: lib/Forms/Admin/Queue.php:174 lib/Forms/Admin/Attribute.php:149 +#: lib/Forms/Admin/Reply.php:110 lib/Forms/Admin/Type.php:176 +msgid "No" +msgstr "§_" + +#: lib/Ticket.php:100 +#, php-format +msgid "" +"No priority for this ticket and no default priority for ticket type \"%s\" " +"specified." +msgstr "³o­ÓÃþ«¬ \"%s\" ©|¥¼³]©wÀu¥ýÅv¥H¤Î¹w³]Àu¥ýÅv." + +#: lib/Block/myqueries.php:46 +msgid "No queries have been saved." +msgstr "¨S¦³¥ô¦ó¬d¸ß³QÀx¦s." + +#: lib/Block/query.php:64 lib/Driver/sql.php:553 +msgid "No query to run" +msgstr "µL¬d¸ß¥i¨Ñ°õ¦æ" + +#: lib/Block/queuecontents.php:25 +msgid "No queues available." +msgstr "µL¥i¥Îªº¤ÀÃþ." + +#: lib/Ticket.php:92 +#, php-format +msgid "" +"No state for this ticket and no default state for ticket type \"%s\" " +"specified." +msgstr "³o­ÓÁpô³æ \"%s\" ©|¥¼³]©wª¬ºA¥H¤Î¹w³]ª¬ºA." + +#: reports.php:19 +msgid "No stats available." +msgstr "µL¥i¥Î¤§²Î­pªí." + +#: lib/Driver.php:517 +#, php-format +msgid "No such backend \"%s\" found" +msgstr "µL¦¹¦øªAºÝ \"%s\"" + +#: lib/View.php:33 +msgid "No such view \"%s\" found" +msgstr "§ä¤£¨ìÀ˵ø \"%s\"" + +#: lib/Block/mytickets.php:45 +msgid "No tickets are assigned to you." +msgstr "µL¥ô¦óÁpô³æ«ü¬£µ¹§A." + +#: lib/Block/unassigned.php:45 +msgid "No tickets are unassigned!" +msgstr "µL¥ô¦ó¥¼«ü¬£ªºÁpô³æ!" + +#: lib/Block/queuecontents.php:62 lib/Block/queuecontents.php:73 +msgid "No tickets in queue." +msgstr "¤ÀÃþ¤¤¨S¦³Ápô³æ." + +#: lib/Whups.php:686 +msgid "No tickets matched your search criteria." +msgstr "¨S¦³Ápô³æ²Å¦X·j´M±ø¥ó." + +#: lib/Ticket.php:84 +#, php-format +msgid "No type for this ticket and no default type for queue \"%s\" specified." +msgstr "³o­ÓÃþ§O \"%s\" ©|¥¼³]©wÃþ«¬¥H¤Î¹w³]Ãþ«¬." + +#: templates/prefs/sourceselect.inc:35 lib/Reports.php:88 +msgid "None" +msgstr "µL" + +#: lib/Renderer/Query.php:79 lib/Forms/Query.php:24 +msgid "Not" +msgstr "¤£¬O" + +#: query.php:80 +msgid "Not yet implemented." +msgstr "©|¥¼§¹¦¨." + +#: config/prefs.php.dist:17 +msgid "Notification Options" +msgstr "³qª¾¿ï¶µ" + +#: config/prefs.php.dist:117 +msgid "Only notify me of ticket changes from other users?" +msgstr "Ápô³æ³Q¨ä¥L¤HÅܧó®É¥u³qª¾§Ú?" + +#: config/prefs.php.dist:126 +msgid "Only notify me of ticket changes with comments?" +msgstr "Ápô³æ³Q¥[µùµû½×®É¥u³qª¾§Ú?" + +#: queue/rss.php:43 +msgid "Open" +msgstr "¶}±Ò" + +#: lib/Block/queuesummary.php:49 +msgid "Open Tickets" +msgstr "©|¥¼µ²®×ªºÁpô³æ" + +#: lib/Reports.php:11 +msgid "Open Tickets by Owner" +msgstr "©|¥¼µ²®×ªºÁpô³æ--¥H¾Ö¦³ªÌ¬°°ò·Ç" + +#: lib/Reports.php:9 +msgid "Open Tickets by Priority" +msgstr "©|¥¼µ²®×ªºÁpô³æ--¥HÀu¥ýÅv¬°°ò·Ç" + +#: lib/Reports.php:6 +msgid "Open Tickets by Queue" +msgstr "©|¥¼µ²®×ªºÁpô³æ--¥H¤ÀÃþ¬°°ò·Ç" + +#: lib/Reports.php:10 +msgid "Open Tickets by Requester" +msgstr "©|¥¼µ²®×ªºÁpô³æ--¥H«Ø¥ß¤H­û¬°°ò·Ç" + +#: lib/Reports.php:7 +msgid "Open Tickets by State" +msgstr "©|¥¼µ²®×ªºÁpô³æ--¥Hª¬ºA¬°°ò·Ç" + +#: lib/Reports.php:8 +msgid "Open Tickets by Type" +msgstr "©|¥¼µ²®×ªºÁpô³æ--¥HÃþ«¬¬°°ò·Ç" + +#: lib/Block/queuecontents.php:47 +#, php-format +msgid "Open Tickets in %s" +msgstr "%s ¤¤©|¥¼µ²®×ªºÁpô³æ" + +#: queue/rss.php:119 queue/index.php:43 queue/index.php:57 +#, php-format +msgid "Open tickets in %s" +msgstr "%s ¤¤©|¥¼µ²®×ªºÁpô³æ" + +#: queue/rss.php:121 +msgid "Open tickets in all queues." +msgstr "¥þ³¡¥¼µ²®×ªºÁpô³æ." + +#: lib/Renderer/Query.php:78 lib/Forms/Query.php:23 +msgid "Or" +msgstr "©Î" + +#: lib/Whups.php:651 lib/Ticket.php:617 lib/Ticket.php:701 lib/Ticket.php:702 +#: lib/Ticket.php:705 lib/Ticket.php:812 lib/Ticket.php:833 lib/Ticket.php:958 +#: lib/Renderer/Query.php:84 lib/Forms/CreateTicket.php:225 +#: lib/Forms/CreateTicket.php:243 lib/Forms/EditTicket.php:104 +msgid "Owners" +msgstr "©Ó¿ì¤H­û" + +#: lib/Whups.php:836 +#, php-format +msgid "Permanently delete %s?" +msgstr "¥Ã¤[§R°£%s?" + +#: ticket/update.php:22 ticket/type.php:74 ticket/delete.php:51 +#: ticket/queue.php:131 ticket/deleteAttachment.php:21 +msgid "Permission Denied" +msgstr "¦s¨ú¾D©Ú" + +#: ticket/delete.php:40 lib/Forms/EditTicket.php:196 +msgid "Permission Denied." +msgstr "¦s¨ú¾D©Ú." + +#: runquery.php:37 query.php:32 lib/Forms/Query.php:389 +#, php-format +msgid "Permission denied." +msgstr "¦s¨ú¾D©Ú" + +#: lib/Imple/ContactAutoCompleter.php:227 +msgid "Please resolve ambiguous or invalid addresses." +msgstr "½Ð­«·s¿é¤J¥¿½Tªº¹q¶l¦a§}." + +#: lib/Forms/Admin/Type.php:93 lib/Forms/Admin/Type.php:171 +msgid "Priorities for this Type" +msgstr "¦¹Ãþ«¬ªºÀu¥ýÅv" + +#: ticket/type.php:66 ticket/queue.php:117 lib/Whups.php:639 lib/Whups.php:648 +#: lib/Ticket.php:610 lib/Ticket.php:807 lib/Ticket.php:953 +#: lib/Renderer/Query.php:125 lib/Forms/CreateTicket.php:147 +#: lib/Forms/EditTicket.php:68 lib/Forms/Query.php:198 +#: config/prefs.php.dist:49 +msgid "Priority" +msgstr "Àu¥ýÅv" + +#: lib/Renderer/Comment.php:115 +#, php-format +msgid "Priority ⇒ %s" +msgstr "Àu¥ýÅv ⇒ %s" + +#: lib/Forms/Admin/Priority.php:24 lib/Forms/Admin/Priority.php:70 +#: lib/Forms/Admin/Priority.php:118 +msgid "Priority Description" +msgstr "Àu¥ýÅvªº´y­z" + +#: lib/Forms/Admin/Priority.php:23 lib/Forms/Admin/Priority.php:48 +#: lib/Forms/Admin/Priority.php:67 lib/Forms/Admin/Priority.php:94 +#: lib/Forms/Admin/Priority.php:115 +msgid "Priority Name" +msgstr "Àu¥ýÅvªº¦WºÙ" + +#: search.php:106 +msgid "Public Queries" +msgstr "¤½¶}¬d¸ß" + +#: query.php:156 +msgid "Query Builder" +msgstr "¬d¸ß²£¥Í¾¹" + +#: lib/Forms/QueryParameterForm.php:20 +msgid "Query Parameters" +msgstr "¬d¸ß°Ñ¼Æ" + +#: runquery.php:72 lib/Block/query.php:3 lib/Block/query.php:51 +msgid "Query Results" +msgstr "¬d¸ßµ²ªG" + +#: lib/Block/query.php:33 +msgid "Query to run" +msgstr "°õ¦æ" + +#: lib/Whups.php:649 lib/Ticket.php:606 lib/Ticket.php:803 lib/Ticket.php:918 +#: lib/Ticket.php:923 lib/Renderer/Query.php:94 lib/Forms/Query.php:181 +#: lib/Forms/Search.php:36 lib/Block/queuecontents.php:32 +#: lib/Block/queuesummary.php:49 config/prefs.php.dist:50 +msgid "Queue" +msgstr "¤ÀÃþ" + +#: lib/Renderer/Comment.php:100 +#, php-format +msgid "Queue ⇒ %s" +msgstr "¤ÀÃþ ⇒ %s" + +#: lib/Block/queuecontents.php:3 lib/Block/queuecontents.php:49 +msgid "Queue Contents" +msgstr "¤ÀÃþ¤º®e" + +#: lib/Forms/Admin/Queue.php:24 lib/Forms/Admin/Queue.php:89 +#: lib/Forms/Admin/Queue.php:170 +msgid "Queue Description" +msgstr "¤ÀÃþ´y­z" + +#: lib/Forms/Admin/Queue.php:30 lib/Forms/Admin/Queue.php:97 +msgid "Queue Email" +msgstr "¤ÀÃþªº Email ¦a§}" + +#: lib/Forms/CreateTicket.php:34 lib/Forms/CreateTicket.php:45 +#: lib/Forms/Admin/Queue.php:23 lib/Forms/Admin/Queue.php:60 +#: lib/Forms/Admin/Queue.php:85 lib/Forms/Admin/Queue.php:166 +msgid "Queue Name" +msgstr "¤ÀÃþ¦WºÙ" + +#: lib/Forms/Admin/Queue.php:26 lib/Forms/Admin/Queue.php:93 +msgid "Queue Slug" +msgstr "¤ÀÃþ¼ÐÃD" + +#: lib/Block/queuesummary.php:3 lib/Block/queuesummary.php:24 +msgid "Queue Summary" +msgstr "¤ÀÃþºK­n" + +#: ticket/queue.php:86 lib/Ticket.php:932 lib/Ticket.php:938 +#: lib/Forms/CreateTicket.php:93 +msgid "Queue Version" +msgstr "¤ÀÃþª©¥»" + +#: admin/index.php:35 +msgid "Queue/Type Matri_x" +msgstr "¤ÀÃþ/Ãþ«¬ ÃöÁp_x" + +#: templates/admin/mtmatrix.inc:6 +msgid "Queue/Type Matrix" +msgstr "¤ÀÃþ/Ãþ«¬ ÃöÁp" + +#: lib/api.php:175 lib/api.php:887 +msgid "Queues" +msgstr "¤ÀÃþ" + +#: templates/prevnext.inc:32 +msgid "Re_turn to Search Results" +msgstr "¦^·j´Mµ²ªG_t" + +#: lib/Forms/Admin/Attribute.php:147 +msgid "Really delete this attribute? This may cause data problems!" +msgstr "½T©w­n§R°£³o­ÓÄݩʡH ³o¦³¥i¯à¾É­P¸ê®Æ¤Wªº°ÝÃD !!" + +#: lib/Forms/Admin/Reply.php:108 +msgid "Really delete this form reply?" +msgstr "½T©w§R°£¦¹¦^Âм˥»?" + +#: lib/Forms/Admin/Priority.php:122 +msgid "Really delete this priority? This may cause data problems!" +msgstr "½T©w­n§R°£³o­ÓÀu¥ý¡H ³o¦³¥i¯à¾É­P¸ê®Æ¤Wªº°ÝÃD !!" + +#: lib/Forms/Query.php:380 +msgid "Really delete this query? This operation is not undoable." +msgstr "¯uªº­n§R°£³o­Ó¬d¸ß¶Ü? ³o¶µ¾Þ§@±NµLªk«ì´_." + +#: lib/Forms/Admin/Queue.php:176 +msgid "Really delete this queue? This may cause data problems!" +msgstr "½T©w­n§R°£³o­Ó¤ÀÃþ¡H ³o¦³¥i¯à¾É­P¸ê®Æ¤Wªº°ÝÃD !!" + +#: lib/Forms/Admin/State.php:122 +msgid "Really delete this state? This may cause data problems!" +msgstr "½T©w­n§R°£³o­Óª¬ºA¡H ³o¦³¥i¯à¾É­P¸ê®Æ¤Wªº°ÝÃD !!" + +#: ticket/delete.php:34 +msgid "" +"Really delete this ticket? It will NOT be archived, and will be gone forever." +msgstr "½T©w­n§R°£³o­ÓÁpô³æ? Ápô³æ©|¥¼³Æ¥÷¦]¦¹±N¥Ã¤[§R°£." + +#: lib/Forms/Admin/Type.php:178 +msgid "Really delete this type? This may cause data problems!" +msgstr "½T©w­n§R°£³o­ÓÃþ«¬¡H ³o¦³¥i¯à¾É­P¸ê®Æ¤Wªº°ÝÃD !!" + +#: lib/Forms/Admin/Version.php:97 +msgid "Really delete this version? This may cause data problems!" +msgstr "½T©w­n§R°£³o­Óª©¥»¡H ³o¦³¥i¯à¾É­P¸ê®Æ¤Wªº°ÝÃD !!" + +#: lib/Mail.php:217 +msgid "Received message:" +msgstr "¤wŪ¨úªº¶l¥ó:" + +#: search.php:87 +msgid "Refine Search" +msgstr "­«·s·j´M" + +#: admin/index.php:1169 +msgid "Reminders were sent." +msgstr "´£¥Ü¤w°e¥X." + +#: lib/Forms/Admin/User.php:59 +msgid "Remove User" +msgstr "²¾°£¨Ï¥ÎªÌ" + +#: ticket/watch.php:49 +msgid "Remove Watcher" +msgstr "²¾°£­q¾\ªÌ" + +#: templates/prefs/sourceselect.inc:300 +msgid "Remove source" +msgstr "²¾°£³q°T¿ý" + +#: lib/Renderer/Comment.php:95 +msgid "Reply to this comment" +msgstr "¦^ÂÐ" + +#: reports.php:24 +msgid "Reports" +msgstr "³øªí" + +#: lib/Whups.php:650 lib/Ticket.php:965 lib/Renderer/Query.php:86 +msgid "Requester" +msgstr "«Ø¥ß¤H­û" + +#: lib/Forms/Admin/Attribute.php:28 lib/Forms/Admin/Attribute.php:99 +msgid "Required Attribute?" +msgstr "¥²¶·­nªºÄÝ©Ê?" + +#: lib/Whups.php:655 lib/Ticket.php:991 lib/Driver.php:199 lib/api.php:1021 +#: config/prefs.php.dist:54 +msgid "Resolved" +msgstr "¤w¸Ñ¨M" + +#: lib/Forms/Admin/User.php:61 +msgid "Responsible Users" +msgstr "©Ó¿ì¤H­û" + +#: lib/Forms/EditTicket.php:166 +msgid "Restrict Comment to:" +msgstr "¥iÀ˵ø¦¹µû½×ªº¸s²Õ:" + +#: lib/Whups.php:276 +msgid "S_et Queue" +msgstr "³]©w¤ÀÃþ_e" + +#: lib/Query.php:203 +msgid "Sa_ve Query" +msgstr "Àx¦s_v" + +#: templates/view/results.inc:36 lib/Forms/Query.php:318 +msgid "Save" +msgstr "Àx¦s" + +#: lib/Forms/Query.php:317 +msgid "Save Query" +msgstr "Àx¦s" + +#: templates/view/results.inc:30 +msgid "Save these results as: " +msgstr "¥t¦s³o¨Çµ²ªG¬°: " + +#: search.php:55 lib/Block/tree_menu.php:30 +msgid "Search" +msgstr "·j´M" + +#: lib/Forms/Query.php:275 +#, php-format +msgid "Search %s Attribute" +msgstr "·j´M %s ÄÝ©Ê" + +#: lib/Forms/Query.php:278 +msgid "Search Attribute" +msgstr "·j´MÄÝ©Ê" + +#: lib/Forms/Query.php:47 lib/Forms/Query.php:132 +msgid "Search Comments" +msgstr "·j´Mµû½×" + +#: lib/Forms/Query.php:45 +msgid "Search Owners" +msgstr "·j´M¾Ö¦³ªÌ" + +#: lib/Forms/Query.php:46 +msgid "Search Requester" +msgstr "·j´M«Ø¥ß¤H­û" + +#: search.php:79 +msgid "Search Results" +msgstr "·j´Mµ²ªG" + +#: templates/prevnext.inc:38 +#, php-format +msgid "Search Results: %s of %s" +msgstr "·j´Mµ²ªG: %s ¦@ %s" + +#: lib/Forms/Query.php:131 +msgid "Search Summary" +msgstr "·j´MºK­n" + +#: config/prefs.php.dist:76 +msgid "Search Tickets" +msgstr "·j´MÁpô³æ" + +#: config/prefs.php.dist:25 +msgid "Select address book sources for adding and searching for addresses." +msgstr "¿ï¾Ü³q°T¿ý¥H·j´M¤Î·s¼W¦a§}." + +#: templates/prefs/sourceselect.inc:319 +msgid "Select all fields to search when expanding addresses." +msgstr "·í°õ¦æ©m¦WÁr´ú®É,¿ï¾Ü©Ò¦³Äæ¦ì¥H§Q·j´M." + +#: config/prefs.php.dist:78 +msgid "Select the view to display after login:" +msgstr "¿ï¾Üµn¤J«áªºÀ˵ø¤è¦¡:" + +#: templates/prefs/sourceselect.inc:303 templates/prefs/sourceselect.inc:305 +msgid "Selected Address books:" +msgstr "¤w¿ï¾Üªº³q°T¿ý:" + +#: admin/index.php:36 +msgid "Sen_d Reminders" +msgstr "¶Ç°e´£¥Ü_d" + +#: lib/Forms/Admin.php:23 +msgid "Send Reminders" +msgstr "¶Ç°e´£¥Ü" + +#: lib/Forms/Admin.php:34 +msgid "Send only for this list of ticket ids" +msgstr "¥u¶Ç°e³o¨Ç½s¸¹ªºÁpô³æ" + +#: lib/Forms/Admin/Priority.php:80 lib/Forms/Admin/Priority.php:82 +msgid "Set Default Priority" +msgstr "³]©w¬°¹w³]ªºÀu¥ýÅv" + +#: lib/Forms/Admin/State.php:80 lib/Forms/Admin/State.php:82 +msgid "Set Default State" +msgstr "³]©w¬°¹w³]ªºª¬ºA" + +#: ticket/queue.php:201 ticket/queue.php:210 ticket/queue.php:222 +msgid "Set Queue - Step 1" +msgstr "³]©w¤ÀÃþ - ¨BÆJ 1" + +#: ticket/queue.php:202 ticket/queue.php:211 +msgid "Set Queue - Step 2" +msgstr "³]©w¤ÀÃþ - ¨BÆJ 2" + +#: ticket/queue.php:212 +msgid "Set Queue - Step 3" +msgstr "³]©w¤ÀÃþ - ¨BÆJ 3" + +#: ticket/queue.php:189 +#, php-format +msgid "Set Queue for %s" +msgstr "³]©w %s ªº¤ÀÃþ" + +#: lib/api.php:906 +msgid "Set Requester" +msgstr "³]©w«Ø¥ß¤H­û" + +#: ticket/type.php:139 ticket/type.php:148 +msgid "Set Type - Step 1" +msgstr "³]©wÃþ«¬ - ¨BÆJ 1" + +#: ticket/type.php:140 +msgid "Set Type - Step 2" +msgstr "³]©wÃþ«¬ - ¨BÆJ 2" + +#: ticket/type.php:127 +#, php-format +msgid "Set Type for %s" +msgstr "³]©w %s ªºÃþ«¬" + +#: lib/Whups.php:281 +msgid "Set _Type" +msgstr "³]©wÃþ«¬_T" + +#: config/prefs.php.dist:144 +msgid "Show comments in chronological order, or most recent first?" +msgstr "«ö¦~¥N¶¶§Ç,©ÎªÌ³Ìªñªº¤@­Ó¨ÓÅã¥Üµû½×?" + +#: config/prefs.php.dist:95 +msgid "Show ticket IDs in the summary view?" +msgstr "©óºK­nÀ˵ø¤¤Åã¥ÜÁpô³æ¸¹½X?" + +#: config/prefs.php.dist:87 +msgid "Show tickets you have requested in the summary view?" +msgstr "©óºK­nÀ˵ø¤¤Åã¥Ü§A©ÒÂI¿ïªºÁpô³æ?" + +#: config/templates.php.dist:16 +msgid "Simple HTML Report" +msgstr "²³æªº HTML ³øªí" + +#: lib/Forms/Admin/Queue.php:27 +#, php-format +msgid "" +"Slugs allows direct access to this queue's open tickets by visiting: %s. " +"
Slug names may contain only letters, numbers or the _ (underscore) " +"character." +msgstr "" +"§Ö±¶ºô§}´£¨Ñ¤@­Óª½±µ¦s¨ú¦¹Ãþ§O¤¤¥¼µ²®×Ápô³æªººô§}: %s
§Ö±¶ºô§}¥i¥H¬O¥ô" +"¦ó­^¤å,¼Æ¦r©Î¬O _ (©³½u)©Ò²Õ¦¨." + +#: templates/view/results.inc:51 templates/view/results.inc:55 +#, php-format +msgid "Sort by %s" +msgstr "¤w %s ±Æ¦C" + +#: lib/Forms/CreateTicket.php:136 lib/Forms/CreateTicket.php:175 +#: lib/Forms/AddComment.php:20 lib/Forms/AddComment.php:51 +msgid "Spam protection" +msgstr "Spam ¨¾Å@" + +#: ticket/type.php:65 ticket/queue.php:116 lib/Whups.php:640 lib/Whups.php:646 +#: lib/Ticket.php:609 lib/Ticket.php:806 lib/Ticket.php:949 +#: lib/Renderer/Query.php:117 lib/Forms/EditTicket.php:62 +#: lib/Forms/Query.php:193 config/prefs.php.dist:47 +msgid "State" +msgstr "ª¬ºA" + +#: lib/Renderer/Comment.php:110 +#, php-format +msgid "State ⇒ %s" +msgstr "ª¬ºA ⇒ %s" + +#: lib/Forms/Admin/State.php:25 lib/Forms/Admin/State.php:70 +msgid "State Category" +msgstr "ª¬ºA¤ÀÃþ" + +#: lib/Forms/Admin/State.php:24 lib/Forms/Admin/State.php:67 +#: lib/Forms/Admin/State.php:118 +msgid "State Description" +msgstr "ª¬ºAªº´y­z" + +#: lib/Forms/Admin/State.php:23 lib/Forms/Admin/State.php:47 +#: lib/Forms/Admin/State.php:64 lib/Forms/Admin/State.php:96 +#: lib/Forms/Admin/State.php:115 +msgid "State Name" +msgstr "ª¬ºA¦WºÙ" + +#: lib/Forms/Admin/Type.php:76 lib/Forms/Admin/Type.php:165 +msgid "States for this Type" +msgstr "¦¹Ãþ«¬ªºª¬ºA" + +#: templates/ticket/watchers.inc:1 +msgid "Status" +msgstr "ª¬ºA" + +#: ticket/create.php:146 +msgid "Submit" +msgstr "´£¥æ" + +#: admin/index.php:198 +#, php-format +msgid "Successfully Cloned %s to %s." +msgstr "¤w¦¨¥\ªº½Æ»s %s ¨ì %s ." + +#: ticket/type.php:118 +msgid "Successfully changed ticket type." +msgstr "Ápô³æªºÃþ«¬¤wÅܧ󧹦¨." + +#: ticket/delete.php:30 lib/Whups.php:638 lib/Whups.php:645 lib/Ticket.php:616 +#: lib/Ticket.php:643 lib/Ticket.php:646 lib/Ticket.php:650 lib/Ticket.php:812 +#: lib/Ticket.php:821 lib/Ticket.php:912 lib/Renderer/Query.php:89 +#: lib/Forms/CreateTicket.php:152 lib/Forms/EditTicket.php:58 +#: config/prefs.php.dist:46 +msgid "Summary" +msgstr "ºK­n" + +#: lib/Renderer/Comment.php:51 +#, php-format +msgid "Summary ⇒ %s" +msgstr "ºK­n ⇒ %s" + +#: lib/Forms/Search.php:39 +msgid "Summary like" +msgstr "ºK­n¬Û¦ü" + +#: lib/Renderer/Comment.php:79 +#, php-format +msgid "Taken from %s" +msgstr "¸Ñ°£ %s ªº«ü¬£" + +#: lib/Forms/Query.php:129 +msgid "Text" +msgstr "¤º®e" + +#: lib/Driver/sql.php:80 lib/Driver/sql.php:1269 +msgid "That queue slug is already taken. Please select another." +msgstr "¸ÓÃþ§Oªº§Ö±¶ºô§}¤w¨Ï¥Î. ½Ð¥t¿ï¨ä¥L." + +#: lib/Forms/CreateTicket.php:129 +msgid "The Requester's Email Address" +msgstr "«Ø¥ß¤H­ûªº Email" + +#: view.php:58 lib/Ticket.php:439 lib/Ticket.php:487 +msgid "The VFS backend needs to be configured to enable attachment uploads." +msgstr "­n±Ò¥Îªþ¥ó¤W¶Ç¥\¯à«e,µêÀÀÀɮרt²Î(VFS)¦øªAºÝ¥²¶·³]©w§¹¦¨." + +#: admin/index.php:906 +#, php-format +msgid "The attribute \"%s\" has been added to %s." +msgstr "ÄÝ©Ê\"%s\"¤w³Q·s¼W¨ì%s." + +#: admin/index.php:1005 +msgid "The attribute has been deleted." +msgstr "¦¹Äݩʤw³Q§R°£." + +#: admin/index.php:973 +msgid "The attribute has been modified." +msgstr "¦¹Äݩʤw³Q­×§ï." + +#: admin/index.php:1014 +msgid "The attribute was not deleted." +msgstr "¦¹Äݩʨå¼³Q§R°£." + +#: admin/index.php:642 +msgid "The default priority has been set." +msgstr "¹w³]ªºÀu¥ýÅv¤w³]©w§¹¦¨." + +#: admin/index.php:506 +msgid "The default state has been set." +msgstr "¹w³]ªºª¬ºA¤w³]©w§¹¦¨." + +#: admin/index.php:1042 +msgid "The form reply \"%s\" has been added to %s." +msgstr "¦^Âм˥» \"%s\" ¤w³Q·s¼W¨ì %s." + +#: admin/index.php:1134 +msgid "The form reply has been deleted." +msgstr "¦^Âм˥»¤w¸g§R°£." + +#: admin/index.php:1107 +msgid "The form reply has been modified." +msgstr "¦^Âм˥»¤w³Q­×§ï." + +#: admin/index.php:1143 +msgid "The form reply was not deleted." +msgstr "¦^Âм˥»¨Ã¥¼³Q§R°£." + +#: admin/index.php:556 +#, php-format +msgid "The priority \"%s\" has been added to %s." +msgstr "Àu¥ýÅv\"%s\"¤w³Q·s¼W¨ì%s." + +#: admin/index.php:661 +msgid "The priority has been deleted." +msgstr "¦¹Àu¥ýÅv¤w³Q§R°£." + +#: admin/index.php:609 +msgid "The priority has been modified." +msgstr "¦¹Àu¥ýÅv¤w³Q­×§ï." + +#: admin/index.php:670 +msgid "The priority was not deleted." +msgstr "¦¹Àu¥ýÅv¨Ã¥¼³Q§R°£." + +#: lib/Forms/Query.php:393 +#, php-format +msgid "The query \"%s\" couldn't be deleted: %s" +msgstr "¬d¸ß\"%s\"µLªk³Q§R°£:%s" + +#: lib/Forms/Query.php:395 +#, php-format +msgid "The query \"%s\" has been deleted." +msgstr "¬d¸ß\"%s\"¤w³Q§R°£." + +#: lib/Forms/Query.php:360 +#, php-format +msgid "The query couldn't be loaded:" +msgstr "¬d¸ßµLªk³Q¸ü¤J:" + +#: admin/index.php:300 +#, php-format +msgid "The queue \"%s\" has been created." +msgstr "¤ÀÃþ\"%s\"¤w³Q«Ø¥ß." + +#: admin/index.php:392 +msgid "The queue has been deleted." +msgstr "¦¹¤ÀÃþ¤w³Q§R°£." + +#: admin/index.php:359 +msgid "The queue has been modified." +msgstr "¦¹¤ÀÃþ¤w³Q­×§ï." + +#: admin/index.php:400 +msgid "The queue was not deleted." +msgstr "¦¹¤ÀÃþ¨Ã¥¼³Q§R°£." + +#: lib/MIME/Viewer/zip.php:58 +msgid "The requested file does not exist in the Zip attachment." +msgstr "¦b Zip ªþ¥ó¤¤§ä¤£¨ì©Ò¶·­nªºÀÉ®×." + +#: data.php:26 +msgid "The requested template does not exist." +msgstr "ÂI¿ïªº¼ËªO¨Ã¤£¦s¦b." + +#: admin/index.php:422 +#, php-format +msgid "The state \"%s\" has been added to %s." +msgstr "ª¬ºA\"%s\"¤w³Q·s¼W¨ì%s." + +#: admin/index.php:525 +msgid "The state has been deleted." +msgstr "¦¹ª¬ºA¤w³Q§R°£." + +#: admin/index.php:475 +msgid "The state has been modified." +msgstr "¦¹ª¬ºA¤w³Q­×§ï." + +#: admin/index.php:533 +msgid "The state was not deleted." +msgstr "¦¹ª¬ºA¨Ã¥¼³Q§R°£." + +#: ticket/delete.php:78 +msgid "The ticket was not deleted." +msgstr "Ápô³æ¨Ã¥¼³Q§R°£." + +#: admin/index.php:223 +#, php-format +msgid "The type \"%s\" has been modified." +msgstr "Ãþ«¬\"%s\"¤w³Q­×§ï." + +#: admin/index.php:272 +msgid "The type has been deleted." +msgstr "¦¹Ãþ«¬¤w³Q§R°£." + +#: admin/index.php:280 +msgid "The type was not deleted." +msgstr "¦¹Ãþ«¬¨Ã¥¼³Q§R°£." + +#: admin/index.php:776 +#, php-format +msgid "The version \"%s\" has been added to %s." +msgstr "ª©¥»\"%s\"¤w³Q¼W¥[¨ì%s." + +#: admin/index.php:865 +msgid "The version has been deleted." +msgstr "¦¹ª©¥»¤w³Q§R°£." + +#: admin/index.php:835 +msgid "The version has been modified." +msgstr "¦¹ª©¥»¤w³Q­×§ï." + +#: admin/index.php:873 +msgid "The version was not deleted." +msgstr "¦¹ª©¥»¨Ã¥¼³Q§R°£." + +#: lib/Forms/Admin/Attribute.php:70 +msgid "There are no attribute types to edit" +msgstr "¨S¦³ÄÝ©ÊÃþ«¬¥i¨Ñ½s¿è" + +#: lib/Forms/Query.php:278 +msgid "There are no attributes defined." +msgstr "¨S¦³©w¸q¥ô¦XÄÝ©Ê." + +#: lib/Forms/Admin/Reply.php:48 +msgid "There are no form replies to edit" +msgstr "¨S¦³¦^Âм˥»¥i¨Ñ½s¿è" + +#: lib/Block/queuesummary.php:44 +msgid "There are no open tickets." +msgstr "¨S¦³©|¥¼µ²®×ªºÁpô³æ." + +#: lib/Forms/Admin/Priority.php:44 lib/Forms/Admin/Priority.php:90 +msgid "There are no priorities to edit" +msgstr "¨S¦³Àu¥ýÅv¥i¨Ñ½s¿è" + +#: lib/Forms/Admin.php:31 +msgid "There are no queues available." +msgstr "µL¥i¥Îªº¤ÀÃþ¦s¦b." + +#: lib/Forms/Admin/Queue.php:57 +msgid "There are no queues to edit" +msgstr "¨S¦³¤ÀÃþ¥i¨Ñ½s¿è" + +#: lib/Forms/CreateTicket.php:35 +msgid "There are no queues which you can create tickets in." +msgstr "¨S¦³¤ÀÃþ¥i¨Ñ§A«Ø¥ßÁpô³æ." + +#: lib/Forms/Search.php:34 +msgid "There are no queues which you can search." +msgstr "¨S¦³¤ÀÃþ¥i¨Ñ§A·j´M." + +#: lib/Forms/Admin/State.php:43 lib/Forms/Admin/State.php:92 +msgid "There are no states to edit" +msgstr "¨S¦³ª¬ºA¥i¨Ñ½s¿è" + +#: lib/Forms/CreateTicket.php:72 +msgid "" +"There are no ticket types associated with this queue; until there are, you " +"cannot create any tickets in this queue." +msgstr "" +"¨S¦³¥ô¦óÃþ«¬»P³o­Ó¼Ò²Õ¬ÛÃöÁp;§A±NµLªk«Ø¥ßÁpô³æ,°£«D§A¬°¦¹¼Ò²Õ«Ø¥ßÃþ«¬." + +#: lib/Forms/Admin/Type.php:45 +msgid "There are no types to edit" +msgstr "¨S¦³Ãþ«¬¥i¨Ñ½s¿è" + +#: lib/Forms/Admin/User.php:75 +msgid "There are no users responsible for this queue." +msgstr "³o­Ó¤ÀÃþ¨S¦³©Ó¿ì¤H." + +#: lib/Forms/CreateTicket.php:242 +msgid "There are no users to which this ticket can be assigned." +msgstr "¦b¦¹Ápô³æ¤¤¨S¦³¨Ï¥ÎªÌ¥i¨Ñ«ü¬£." + +#: lib/Forms/Admin/Version.php:44 +msgid "There are no versions to edit" +msgstr "¨S¦³ª©¥»¥i¨Ñ½s¿è" + +#: lib/Reports.php:161 +msgid "There is no data for this report." +msgstr "¦¹³øªí¤¤¨S¦³¸ê®Æ." + +#: admin/index.php:705 +#, php-format +msgid "There was an error adding \"%s\" to the responsible list for \"%s\":" +msgstr "·s¼W \"%s\" ¨ì \"%s\" ªº©Ó¿ì¦W³æ®Éµo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:911 +msgid "There was an error creating the attribute:" +msgstr "«Ø¥ßÄݩʮɵo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:1050 +msgid "There was an error creating the form reply:" +msgstr "«Ø¥ß¦^Âм˥»®Éµo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:561 +msgid "There was an error creating the priority:" +msgstr "«Ø¥ßÀu¥ýÅv®Éµo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:309 +msgid "There was an error creating the queue:" +msgstr "«Ø¥ß¤ÀÃþ®Éµo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:426 +msgid "There was an error creating the state:" +msgstr "«Ø¥ßª¬ºA®Éµo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:780 +msgid "There was an error creating the version:" +msgstr "«Ø¥ßª©¥»®Éµo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:1009 +msgid "There was an error deleting the attribute:" +msgstr "§R°£Äݩʮɵo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:1138 +msgid "There was an error deleting the form reply:" +msgstr "§R°£¦^Âм˥»®Éµo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:665 +msgid "There was an error deleting the priority:" +msgstr "§R°£Àu¥ýÅv®Éµo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:395 +msgid "There was an error deleting the queue:" +msgstr "§R°£¤ÀÃþ®Éµo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:528 +msgid "There was an error deleting the state:" +msgstr "§R°£ª¬ºA®Éµo¥Í¤@­Ó¿ù»~:" + +#: ticket/delete.php:75 +#, php-format +msgid "There was an error deleting the ticket: %s" +msgstr "§R°£Ápô³æ: %s ®Éµo¥Í¤@­Ó¿ù»~." + +#: admin/index.php:275 +msgid "There was an error deleting the type:" +msgstr "§R°£Ãþ«¬®Éµo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:868 +msgid "There was an error deleting the version:" +msgstr "§R°£ª©¥»®Éµo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:981 +msgid "There was an error editing the attribute:" +msgstr "½s¿èÄݩʮɵo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:1103 +msgid "There was an error editing the form reply:" +msgstr "½s¿è¦^Âм˥»®Éµo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:615 +msgid "There was an error editing the priority:" +msgstr "½s¿èÀu¥ýÅv®Éµo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:375 +msgid "There was an error editing the queue:" +msgstr "½s¿è¤ÀÃþ®Éµo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:480 +msgid "There was an error editing the state:" +msgstr "½s¿èª¬ºA®Éµo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:841 +msgid "There was an error editing the version:" +msgstr "½s¿èª©¥»®Éµo¥Í¤@­Ó¿ù»~:" + +#: lib/Forms/Admin/User.php:35 +#, php-format +msgid "There was an error listing users: %s; %s" +msgstr "¦C¥X¨Ï¥ÎªÌ: %s; %s ®Éµo¥Í¤@­Ó¿ù»~." + +#: queue/index.php:52 +msgid "There was an error locating tickets in this queue: " +msgstr "´M§ä¤ÀÃþ¤¤ªºÁpô³æ®Éµo¥Í¤@­Ó¿ù»~: " + +#: admin/index.php:219 +msgid "There was an error modifying the type:" +msgstr "­×§ïÃþ«¬®Éµo¥Í¤@­Ó¿ù»~:" + +#: search.php:72 +#, php-format +msgid "There was an error performing your search: %s" +msgstr "°õ¦æ·j´M: %s ®Éµo¥Í¤@­Ó¿ù»~." + +#: admin/index.php:750 +#, php-format +msgid "" +"There was an error removing \"%s\" from the responsible list for \"%s\":" +msgstr "¦Û \"%2$s\" ªº©Ó¿ì¦W³æ²¾°£ \"%1$s\" ®Éµo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:638 +msgid "There was an error setting the default priority:" +msgstr "³]©w¹w³]Àu¥ýÅv®Éµo¥Í¤@­Ó¿ù»~:" + +#: admin/index.php:502 +msgid "There was an error setting the default state:" +msgstr "³]©w¹w³]ª¬ºA®Éµo¥Í¤@­Ó¿ù»~:" + +#: lib/Forms/Admin/Queue.php:31 +msgid "" +"This email address will be used when sending notifications for any queue " +"tickets." +msgstr "³o­Ó email ¦a§}±N¥Î¨Ó³qª¾©Ò¦³ÄÝ©ó¦¹Ãþ§OªºÁpô³æ." + +#: data.php:29 +msgid "This is not a search results template." +msgstr "³o¤£¬O¤@­Ó·j´Mµ²ªGªº¼Ë¦¡." + +#: ticket/queue.php:81 lib/Forms/CreateTicket.php:88 +msgid "" +"This queue requires that you specify a version, but there are no versions " +"associated with it. Until versions are created for this queue, you will not " +"be able to create tickets." +msgstr "" +"³o­Ó¤ÀÃþ»Ý­n§A¬°¥¦«ü©w¤@­Óª©¥»,¦ý¬O¥Ø«e¨Ã¨S¦³¥ô¦óª©¥»»P¨ä¬ÛÃöÁp.§A±NµLªk«Ø¥ß" +"Ápô³æ,ª½¨ì§A¬°¦¹¤@¤ÀÃþ«Ø¥ßª©¥»." + +#: lib/Ticket.php:638 lib/Ticket.php:820 +msgid "Ticket" +msgstr "Ápô³æ" + +#: ticket/delete.php:71 +#, php-format +msgid "Ticket %d has been deleted." +msgstr "Ápô³æ %d ¤w³Q§R°£." + +#: lib/api.php:949 +#, php-format +msgid "Ticket %s - %s" +msgstr "Ápô³æ %s - %s" + +#: lib/Driver/sql.php:1044 +#, php-format +msgid "Ticket %s was not found." +msgstr "§ä¤£¨ìÁpô³æ %s ." + +#: search.php:98 +msgid "Ticket Search" +msgstr "Ápô³æ·j´M" + +#: lib/Forms/CreateTicket.php:142 +msgid "Ticket State" +msgstr "Ápô³æª¬ºA" + +#: templates/reports/stats.inc:3 +msgid "Ticket Stats" +msgstr "Ápô³æ²Î­p" + +#: lib/Forms/CreateTicket.php:80 +msgid "Ticket Type" +msgstr "Ápô³æÃþ«¬" + +#: lib/Forms/Admin/Queue.php:103 +msgid "Ticket Types associated with this Queue" +msgstr "»P¦¹¤ÀÃþ¦³ÃöÁpªºÁpô³æÃþ«¬" + +#: lib/Ticket.php:633 +#, php-format +msgid "Ticket URL: %s" +msgstr "Ápô³æºô§}: %s" + +#: ticket/update.php:94 +msgid "Ticket Updated" +msgstr "Ápô³æ¤w§ó·s" + +#: lib/api.php:970 +msgid "Tickets" +msgstr "Ápô³æ" + +#: templates/prefs/sourceselect.inc:322 +msgid "" +"To select multiple fields, hold down the Control (PC) or Command (Mac) while " +"clicking." +msgstr "" +"¦pªG­n½Æ¿ïÄæ¦ì,½Ð¦bÂI¿ï·Æ¹«ªº®É¦P®É«ö ControlÁä(­Ó¤H¹q¸£) ©Î CommandÁä(Ä«ªG¹q" +"¸£)." + +#: ticket/queue.php:89 lib/Whups.php:647 lib/Ticket.php:608 lib/Ticket.php:805 +#: lib/Ticket.php:945 lib/Renderer/Query.php:108 lib/Forms/Query.php:174 +#: config/prefs.php.dist:48 +msgid "Type" +msgstr "Ãþ«¬" + +#: lib/Renderer/Comment.php:105 +#, php-format +msgid "Type ⇒ %s" +msgstr "Ãþ«¬ ⇒ %s" + +#: lib/Forms/Admin/Type.php:23 lib/Forms/Admin/Type.php:70 +#: lib/Forms/Admin/Type.php:160 +msgid "Type Description" +msgstr "Ãþ«¬´y­z" + +#: lib/Forms/Admin/Type.php:22 lib/Forms/Admin/Type.php:48 +#: lib/Forms/Admin/Type.php:67 lib/Forms/Admin/Type.php:156 +msgid "Type Name" +msgstr "Ãþ«¬¦WºÙ" + +#: lib/Ticket.php:961 +msgid "Unassigned" +msgstr "¥¼«ü¬£" + +#: lib/Block/unassigned.php:3 lib/Block/unassigned.php:24 +msgid "Unassigned Tickets" +msgstr "¥¼³Q«ü¬£Ápô³æ" + +#: lib/Forms/Admin.php:42 +msgid "Unassigned tickets" +msgstr "¥¼³Q«ü¬£Ápô³æ" + +#: lib/Driver.php:196 +msgid "Unconfirmed" +msgstr "¥¼½T»{" + +#: lib/Renderer/Query.php:141 lib/Renderer/Query.php:181 +#, php-format +msgid "Unknown node type %s" +msgstr "¥¼ª¾ªº¸`ÂI(node)Ãþ«¬ %s" + +#: lib/api.php:896 +msgid "Update" +msgstr "Åܧó" + +#: ticket/update.php:108 +#, php-format +msgid "Update %s" +msgstr "§ó·s %s" + +#: templates/admin/mtmatrix.inc:29 +msgid "Update Associations" +msgstr "§ó·sÃöÁp" + +#: lib/Whups.php:653 lib/Ticket.php:981 +msgid "Updated" +msgstr "Åܧó¤é" + +#: lib/Ticket.php:615 lib/Ticket.php:640 +msgid "Updated By" +msgstr "§ó·sªÌ" + +#: lib/Forms/Admin/User.php:34 lib/Forms/Admin/User.php:44 +#: lib/Forms/Admin/User.php:47 +msgid "User" +msgstr "¨Ï¥ÎªÌ" + +#: lib/Forms/Query.php:43 +msgid "User ID" +msgstr "¨Ï¥ÎªÌÃѧO¸¹½X" + +#: lib/Forms/Admin/Queue.php:131 +msgid "Users responsible for this Queue" +msgstr "¤ÀÃþ©Ó¿ì¤H" + +#: lib/Forms/Admin/User.php:79 +msgid "Users responsible for this queue" +msgstr "³o­Ó¤ÀÃþªº©Ó¿ì¤H" + +#: lib/Ticket.php:607 lib/Ticket.php:804 lib/Renderer/Query.php:102 +#: lib/Forms/Query.php:185 config/prefs.php.dist:51 +msgid "Version" +msgstr "ª©¥»" + +#: lib/Forms/Admin/Version.php:24 lib/Forms/Admin/Version.php:70 +#: lib/Forms/Admin/Version.php:93 +msgid "Version Description" +msgstr "ª©¥»´y­z" + +#: lib/Forms/Admin/Version.php:23 lib/Forms/Admin/Version.php:48 +#: lib/Forms/Admin/Version.php:67 lib/Forms/Admin/Version.php:90 +msgid "Version Name" +msgstr "ª©¥»¦WºÙ" + +#: ticket/type.php:43 ticket/queue.php:50 lib/Forms/AddComment.php:38 +msgid "Viewable only by members of" +msgstr "¥iÀ˵ø¦¹µû½×ªº¸s²Õ" + +#: lib/Forms/AddComment.php:25 +msgid "Watch this ticket" +msgstr "­q¾\¦¹Ápô³æ" + +#: ticket/watch.php:78 +#, php-format +msgid "Watchers for %s" +msgstr "%sªº­q¾\ªÌ" + +#: config/prefs.php.dist:104 +msgid "Weekday Day Month" +msgstr "¬P´Á ¤é ¤ë" + +#: config/prefs.php.dist:105 +msgid "Weekday Day Month HH:MM:SS TZ" +msgstr "¬P´Á ¤é ¤ë ®É:¤À:¬í ®É°Ï" + +#: ticket/delete.php:33 lib/Forms/Query.php:379 lib/Forms/Admin/Version.php:96 +#: lib/Forms/Admin/State.php:121 lib/Forms/Admin/Priority.php:121 +#: lib/Forms/Admin/Queue.php:174 lib/Forms/Admin/Attribute.php:149 +#: lib/Forms/Admin/Reply.php:110 lib/Forms/Admin/Type.php:176 +msgid "Yes" +msgstr "¬O" + +#: view.php:54 +#, php-format +msgid "You are not allowed to view ticket %d." +msgstr "§A¥¼³Q±ÂÅvÀ˵øÁpô³æ %d." + +#: lib/Driver/sql.php:1053 +#, php-format +msgid "You do not have permission to access this ticket (%s)." +msgstr "§A¨S¦³¦s¨ú¦¹Ápô³æ (%s) ªºÅv­­." + +#: lib/api.php:548 +msgid "You do not have permission to update this ticket." +msgstr "§A¨S¦³Åܧó¦¹Ápô³æªºÅv­­." + +#: lib/Block/myrequests.php:46 +msgid "You have no open requests." +msgstr "¨S¦³Ápô³æ¥¼«ü¬£." + +#: lib/Forms/Query.php:349 lib/Block/query.php:28 +msgid "You have no saved queries." +msgstr "¨S¦³Àx¦sªº¬d¸ß." + +#: lib/Whups.php:680 +msgid "You must select at least one queue to send reminders for." +msgstr "§A¥²¶·¿ï¾Ü¦Ü¤Ö¤@­Ó¤ÀÃþ¥H¶Ç°e´£¥Ü." + +#: lib/Forms/CreateTicket.php:132 lib/Forms/AddComment.php:18 +msgid "Your Email Address" +msgstr "§Aªº¹q¤l¶l¥ó¦a§}" + +#: ticket/create.php:60 +#, php-format +msgid "" +"Your ticket ID is %s. An appropriate person has been notified of this " +"request." +msgstr "§AªºÁpô³æ¸¹½X(ID)¬° %s. ¤w³qª¾¤@¦ì¾A·íªº¤H­û" + +#: lib/Mail.php:244 +msgid "[ Could not render body of message. ]" +msgstr "[ µLªk¶}±ÒŪ¨ú¶l¥ó¥»¤å. ]" + +#: lib/Whups.php:744 +msgid "_Admin" +msgstr "ºÞ²z_A" + +#: lib/Whups.php:268 +msgid "_Comment" +msgstr "µû½×_C" + +#: lib/Whups.php:286 +msgid "_Delete" +msgstr "§R°£_D" + +#: lib/Query.php:206 +msgid "_Delete Query" +msgstr "§R°£_D" + +#: lib/Query.php:187 +msgid "_Edit Query" +msgstr "½s¿è_E" + +#: admin/index.php:33 +msgid "_Edit Queues" +msgstr "½s¿è¤ÀÃþ_E" + +#: templates/menu.inc:5 +msgid "_Go" +msgstr "«e©¹_G" + +#: query.php:140 +msgid "_Group Criteria" +msgstr "¸s²Õ_G" + +#: lib/Whups.php:262 +msgid "_History" +msgstr "¾ú¥v_H" + +#: lib/Query.php:200 +msgid "_Load Query" +msgstr "¸ü¤J_L" + +#: lib/Whups.php:735 +#, php-format +msgid "_My %s" +msgstr "§Úªº%s_M" + +#: lib/Whups.php:738 +msgid "_New Ticket" +msgstr "·s¼WÁpô³æ_N" + +#: query.php:138 +msgid "_Property Criteria" +msgstr "©Ê½è_P" + +#: lib/Whups.php:739 +msgid "_Query Builder" +msgstr "¬d¸ß²£¥Í¾¹_Q" + +#: lib/Whups.php:740 +msgid "_Reports" +msgstr "³øªí_R" + +#: lib/Whups.php:737 +msgid "_Search" +msgstr "·j´M_S" + +#: query.php:142 +msgid "_Text Criteria" +msgstr "¤º®e_T" + +#: lib/Whups.php:264 +msgid "_Update" +msgstr "Åܧó_U" + +#: query.php:139 +msgid "_User Criteria" +msgstr "¨Ï¥ÎªÌ_U" + +#: lib/Whups.php:272 +msgid "_Watch" +msgstr "­q¾\_W" + +#: lib/Renderer/Query.php:161 +msgid "contains (case insensitive) substring" +msgstr "¥]§t(¤£¤À¤j¤p¼g)¤l¦r¦ê" + +#: lib/Renderer/Query.php:165 +msgid "contains (case sensitive) substring" +msgstr "¥]§t(°Ï¤À¤j¤p¼g)¤l¦r¦ê" + +#: lib/Renderer/Query.php:169 +msgid "contains the word" +msgstr "¥]§t³o­Ó¦r" + +#: lib/Mail.php:94 lib/Mail.php:118 lib/Mail.php:146 +msgid "current user:" +msgstr "¥Ø«e¨Ï¥ÎªÌ:" + +#: lib/api.php:958 +msgid "estimated time" +msgstr "¹w¦ô®É¶¡" + +#: lib/Renderer/Query.php:157 +msgid "is" +msgstr "¬O" + +#: lib/Renderer/Query.php:149 +msgid "is greater than" +msgstr "¤j©ó" + +#: lib/Renderer/Query.php:153 +msgid "is less than" +msgstr "¤p©ó" + +#: lib/Renderer/Query.php:173 +msgid "matches the pattern" +msgstr "»P¼Ë¥»§k¦X" diff --git a/whups/query/.htaccess b/whups/query/.htaccess new file mode 100644 index 000000000..9f52c7130 --- /dev/null +++ b/whups/query/.htaccess @@ -0,0 +1,9 @@ + + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^([0-9]+)/?$ run.php?query=$1 [QSA] + RewriteRule ^([0-9]+)/rss/?$ rss.php?query=$1 [QSA] + RewriteRule ^([a-zA-Z0-9_]+)/?$ run.php?slug=$1 [QSA] + RewriteRule ^([a-zA-Z0-9_]+)/rss/?$ rss.php?slug=$1 [QSA] + diff --git a/whups/query/index.php b/whups/query/index.php new file mode 100644 index 000000000..1785dd5c1 --- /dev/null +++ b/whups/query/index.php @@ -0,0 +1,246 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + * + * @author Chuck Hagenbuch + */ + +require_once dirname(__FILE__) . '/../lib/base.php'; +require_once WHUPS_BASE . '/lib/Query.php'; +require_once WHUPS_BASE . '/lib/Forms/Query.php'; +require_once WHUPS_BASE . '/lib/Renderer/Query.php'; + +$vars = Horde_Variables::getDefaultVariables(); +$qManager = new Whups_QueryManager(); + +// Set up the page config vars. +$showEditQuery = true; +$showExtraForm = null; + +// Find our current query. +if (isset($_SESSION['whups']['query'])) { + $whups_query = unserialize($_SESSION['whups']['query']); + if (!$whups_query->hasPermission(Horde_Auth::getAuth(), Horde_Perms::READ)) { + $notification->push(_("Permission denied."), 'horde.error'); + header('Location: ' . Horde::applicationUrl($prefs->getValue('whups_default_view') . '.php', true)); + exit; + } +} else { + $whups_query = $qManager->newQuery(); +} + +// Find the current criteria form, and default to the user form if not +// present. +if (!isset($_SESSION['whups']['query_form'])) { + $_SESSION['whups']['query_form'] = 'props'; +} +$vars->set('whups_query_form', $_SESSION['whups']['query_form']); + +// What now? First check the result of the query edit action dropdown, as this +// action overrides the form it sits within. +if ($vars->get('qaction1') || $vars->get('qaction2')) { + $action = $vars->get('qaction1') ? $vars->get('qaction1') : $vars->get('qaction2'); + + switch ($action) { + // Query actions. + case 'deleteNode': + $whups_query->deleteNode($vars->get('path')); + $vars->remove('path'); + break; + + case 'hoist': + $whups_query->hoist($vars->get('path')); + break; + + case 'branch': + $form = new InsertBranchForm($vars); + break; + + case 'not': + $path = $whups_query->insertBranch($vars->get('path'), QUERY_TYPE_NOT); + $vars->set('path', $path); + break; + + case 'and': + $path = $whups_query->insertBranch($vars->get('path'), QUERY_TYPE_AND); + $vars->set('path', $path); + break; + + case 'or': + $path = $whups_query->insertBranch($vars->get('path'), QUERY_TYPE_OR); + $vars->set('path', $path); + break; + + case 'edit': + $_SESSION['whups']['query_form'] = $whups_query->pathToForm($vars); + if (is_a($_SESSION['whups']['query_form'], 'PEAR_Error')) { + $notification->push($_SESSION['whups']['query_form']); + $_SESSION['whups']['query_form'] = 'props'; + } + $vars->set('edit', true); + break; + } + + $vars->remove('qaction1'); + $vars->remove('qaction2'); +} elseif ($vars->get('formname')) { + // Now check for submitted forms. + $class = $vars->get('formname'); + $form = new $class($vars); + if ($form->validate($vars)) { + if ($vars->get('edit')) { + $whups_query->deleteNode($vars->get('path')); + $path = Whups_Query::stringToPath($vars->get('path')); + array_pop($path); + $vars->set('path', Whups_Query::pathToString($path)); + $vars->remove('edit'); + } + $form->execute($vars); + $vars->remove('action'); + } +} elseif ($vars->get('action') != '') { + // Last, check for actions from tabs. + $action = $vars->get('action'); + + switch ($action) { + // Current form actions. + case 'props': + case 'user': + case 'group': + case 'date': + case 'text': + case 'attribs': + $_SESSION['whups']['query_form'] = $action; + break; + + // Global query options + case 'new': + unset($whups_query); + $whups_query = $qManager->newQuery(); + break; + + case 'delete': + $showExtraForm = 'DeleteQueryForm'; + $showEditQuery = false; + break; + + case 'save': + $showExtraForm = 'ChooseQueryNameForSaveForm'; + $showEditQuery = false; + break; + + case 'load': + $showExtraForm = 'ChooseQueryNameForLoadForm'; + $showEditQuery = false; + break; + } +} + +// Query actions. +$queryTabs = $whups_query->getTabs($vars); + +// Criterion form types. +$queryurl = Horde::applicationUrl('query/index.php'); +$vars->set('action', $_SESSION['whups']['query_form']); +$criteriaTabs = new Horde_Ui_Tabs('action', $vars); +$criteriaTabs->preserve('path', $vars->get('path')); +$criteriaTabs->addTab(_("_Property Criteria"), $queryurl, 'props'); +$criteriaTabs->addTab(_("_User Criteria"), $queryurl, 'user'); +$criteriaTabs->addTab(_("_Group Criteria"), $queryurl, 'group'); +$criteriaTabs->addTab(_("_Date Criteria"), $queryurl, 'date'); +$criteriaTabs->addTab(_("_Text Criteria"), $queryurl, 'text'); +$criteriaTabs->addTab(_("Attri_bute Criteria"), $queryurl, 'attribs'); + +$qops = array( + '' => _("Choose Action:"), + 'deleteNode' => _("Delete"), + 'edit' => _("Edit"), + 'hoist' => _("Hoist Children"), + 'and' => _("Insert And"), + 'or' => _("Insert Or"), + 'not' => _("Insert Not"), +); + +// Start the page. +$title = _("Query Builder"); +require WHUPS_TEMPLATES . '/common-header.inc'; +require WHUPS_TEMPLATES . '/menu.inc'; + +echo $queryTabs->render(Horde_Util::getFormData('action', 'edit')); + +if ($showExtraForm !== null) { + $form = new $showExtraForm($vars); + $form->renderActive($form->getRenderer(), $vars, 'index.php'); + echo '
'; +} + +/* Get the general query renderer object. */ +$queryRenderer = new Horde_Form_Renderer_Query(); + +if ($showEditQuery) { + // Get our current form. + switch ($_SESSION['whups']['query_form']) { + default: + printf(_("Error: Unknown query form \"%s\", defaulting to properties"), + $_SESSION['whups']['query_form']); + // Fall through. + + case 'props': + $form = new PropertyCriterionForm($vars); + break; + + case 'user': + $form = new UserCriterionForm($vars); + break; + + case 'group': + $form = new GroupCriterionForm($vars); + break; + + case 'text': + $form = new TextCriterionForm($vars); + break; + + case 'attribs': + $form = new AttributeCriterionForm($vars); + break; + + case 'date': + $form = new DateCriterionForm($vars); + break; + } + + $renderer = $form->getRenderer(); + $form->open($renderer, $vars, 'index.php', 'post'); + + $queryRenderer->beginActive(_("Current Query")); + $queryRenderer->edit($qops, $form->getName(), 1); + $queryRenderer->renderFormActive($whups_query, $vars); + $queryRenderer->edit($qops, $form->getName(), 2); + $renderer->end(); + + echo '
' . $criteriaTabs->render(); + + $renderer->beginActive($form->getTitle()); + $renderer->renderFormActive($form, $vars); + $renderer->submit($vars->get('edit') ? _("Save Criterion") : _("Add Criterion")); + $renderer->end(); + + $form->close($renderer); +} else { + // Show query readonly. + $renderer = new Horde_Form_Renderer(); + $renderer->beginActive(_("Current Query")); + $queryRenderer->renderFormInactive($whups_query, $vars); + $renderer->end(); +} + +require $registry->get('templates', 'horde') . '/common-footer.inc'; + +$_SESSION['whups']['query'] = serialize($whups_query); diff --git a/whups/query/rss.php b/whups/query/rss.php new file mode 100644 index 000000000..4e2f9155a --- /dev/null +++ b/whups/query/rss.php @@ -0,0 +1,72 @@ + + * @author Jan Schneider + */ +@define('WHUPS_BASE', dirname(__FILE__) . '/..'); +require_once WHUPS_BASE . '/lib/base.php'; +require_once WHUPS_BASE . '/lib/Query.php'; +require_once 'Horde/Template.php'; + +$qManager = new Whups_QueryManager(); +$vars = new Horde_Variables(); + +// See if we were passed a slug or id. Slug is tried first. +$whups_query = null; +$slug = Horde_Util::getFormData('slug'); +if ($slug) { + $whups_query = $qManager->getQueryBySlug($slug); +} else { + $whups_query = $qManager->getQuery(Horde_Util::getFormData('query')); +} + +if (!isset($whups_query) || + is_a($whups_query, 'PEAR_Error') || + $whups_query->parameters || + !$whups_query->hasPermission(Horde_Auth::getAuth(), Horde_Perms::READ)) { + exit; +} + +$tickets = $whups_driver->executeQuery($whups_query, $vars); +if (is_a($tickets, 'PEAR_Error') || !count($tickets)) { + exit; +} + +Whups::sortTickets($tickets, 'date_updated', 'desc'); +$cnt = 0; +foreach (array_keys($tickets) as $i) { + $description = 'Type: ' . $tickets[$i]['type_name'] . '; State: ' + . $tickets[$i]['state_name']; + + $items[$i]['title'] = htmlspecialchars(sprintf('[%s] %s', + $tickets[$i]['id'], + $tickets[$i]['summary'])); + $items[$i]['description'] = htmlspecialchars($description); + $items[$i]['url'] = Whups::urlFor('ticket', $tickets[$i]['id'], true, -1); + $items[$i]['pubDate'] = htmlspecialchars(date('r', $tickets[$i]['timestamp'])); +} + +$template = new Horde_Template(); +$template->set('charset', Horde_Nls::getCharset()); +$template->set('xsl', $registry->get('themesuri') . '/feed-rss.xsl'); +$template->set('pubDate', htmlspecialchars(date('r'))); +$template->set('title', htmlspecialchars($whups_query->name ? $whups_query->name : _("Query Results"))); +$template->set('items', $items, true); +$url_param = isset($slug) + ? array('slug' => $slug) + : array('id' => Horde_Util::getFormData('query')); +$template->set('url', Whups::urlFor('query', $url_param, true, -1)); +$template->set('rss_url', Whups::urlFor('query_rss', $url_param, true, -1)); +$template->set('description', htmlspecialchars(sprintf(_("Tickets matching the query \"%s\"."), $whups_query->name))); + +$browser->downloadHeaders((isset($slug) ? $slug : 'query') . '.rss', 'text/xml', true); +echo $template->fetch(WHUPS_TEMPLATES . '/rss/items.rss'); diff --git a/whups/query/run.php b/whups/query/run.php new file mode 100644 index 000000000..d53ca8447 --- /dev/null +++ b/whups/query/run.php @@ -0,0 +1,117 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + * + * @author Chuck Hagenbuch + */ + +require_once dirname(__FILE__) . '/../lib/base.php'; +require_once WHUPS_BASE . '/lib/Query.php'; +require_once WHUPS_BASE . '/lib/Forms/QueryParameterForm.php'; +require WHUPS_BASE . '/lib/Renderer/Query.php'; +require_once WHUPS_BASE . '/lib/View.php'; + +$vars = Horde_Variables::getDefaultVariables(); +$qManager = new Whups_QueryManager(); + +// Load the current query. If we have a 'slug' or 'query' parameter, that +// overrides and we load in that from the query store. Slug is tried +// first. Otherwise we use the query that is currently in our session. +$whups_query = null; +if ($vars->exists('slug')) { + $whups_query = $qManager->getQueryBySlug($vars->get('slug')); +} elseif ($vars->exists('query')) { + $whups_query = $qManager->getQuery($vars->get('query')); +} elseif (isset($_SESSION['whups']['query'])) { + $whups_query = unserialize($_SESSION['whups']['query']); +} + +// If we have an error, or if we still don't have a query, or if we don't have +// read permissions on the requested query, go to the initial Whups page. +if (!isset($whups_query) || + is_a($whups_query, 'PEAR_Error') || + !$whups_query->hasPermission(Horde_Auth::getAuth(), Horde_Perms::READ)) { + if (is_a($whups_query, 'PEAR_Error')) { + $notification->push($whups_query); + } elseif (isset($whups_query)) { + $notification->push(_("Permission denied."), 'horde.error'); + } + header('Location: ' . Horde::applicationUrl($prefs->getValue('whups_default_view') . '.php', true)); + exit; +} + +// Query actions. +$tabs = $whups_query->getTabs($vars); + +$renderer = new Horde_Form_Renderer(); + +// Update sorting preferences. +if (Horde_Util::getFormData('sortby') !== null) { + $prefs->setValue('sortby', Horde_Util::getFormData('sortby')); +} +if (Horde_Util::getFormData('sortdir') !== null) { + $prefs->setValue('sortdir', Horde_Util::getFormData('sortdir')); +} + +$tickets = null; +$isvalid = false; +if (!$whups_query->parameters) { + $isvalid = true; +} else { + $form = new QueryParameterForm($whups_query, $vars); + if ($vars->get('formname') == 'queryparameters') { + $isvalid = $form->validate($vars); + } +} + +if ($isvalid) { + $tickets = $whups_driver->executeQuery($whups_query, $vars); + $_SESSION['whups']['last_search'] = Horde::applicationUrl('query/run.php'); +} + +$title = $whups_query->name ? $whups_query->name : _("Query Results"); +require WHUPS_TEMPLATES . '/common-header.inc'; +require WHUPS_TEMPLATES . '/menu.inc'; + +echo $tabs->render($vars->get('action') ? $vars->get('action') : 'run'); + +if (!is_null($tickets)) { + Whups::sortTickets($tickets); + $subscription = null; + if (isset($whups_query->id)) { + $params = empty($whups_query->slug) + ? array('id' => $whups_query->id) + : array('slug' => $whups_query->slug); + $subscription = Horde::link(Whups::urlFor('query_rss', $params, true, -1), + _("Subscribe to this query")) + . Horde::img('feed.png', _("Subscribe to this query"), null, + $GLOBALS['registry']->getImageDir('horde')) + . ''; + } + $results = Whups_View::factory( + 'Results', + array('title' => $title, + 'results' => $tickets, + 'extra' => $subscription, + 'values' => Whups::getSearchResultColumns(), + 'url' => Horde::applicationUrl('query/run.php'))); + + $results->html(); +} else { + $form->open($renderer, $vars, 'query/run.php'); + $renderer->beginActive($form->getTitle()); + $renderer->renderFormActive($form, $vars); + $renderer->submit(_("Execute Query")); + $renderer->end(); + $form->close($renderer); +} + +require $registry->get('templates', 'horde') . '/common-footer.inc'; + +$_SESSION['whups']['query'] = serialize($whups_query); diff --git a/whups/queue/.htaccess b/whups/queue/.htaccess new file mode 100644 index 000000000..bf0c14650 --- /dev/null +++ b/whups/queue/.htaccess @@ -0,0 +1,9 @@ + + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^([0-9]+)/?$ index.php?id=$1 [QSA] + RewriteRule ^([0-9]+)/rss/?$ rss.php?id=$1 [QSA] + RewriteRule ^([a-zA-Z0-9_]+)/?$ index.php?slug=$1 [QSA] + RewriteRule ^([a-zA-Z0-9_]+)/rss/?$ rss.php?slug=$1 [QSA] + diff --git a/whups/queue/index.php b/whups/queue/index.php new file mode 100644 index 000000000..5f7ab6d43 --- /dev/null +++ b/whups/queue/index.php @@ -0,0 +1,66 @@ + + */ + +@define('WHUPS_BASE', dirname(__FILE__) . '/..'); +require_once WHUPS_BASE . '/lib/base.php'; +require_once WHUPS_BASE . '/lib/View.php'; + +// See if we were passed a slug or id. Slug is tried first. +$slug = Horde_Util::getFormData('slug'); +if ($slug) { + $queue = $whups_driver->getQueueBySlugInternal($slug); + $id = $queue['id']; +} else { + $id = Horde_Util::getFormData('id'); + $queue = $whups_driver->getQueue($id); +} + +if (!$id || is_a($queue, 'PEAR_Error')) { + $notification->push(_("Invalid queue"), 'horde.error'); + header('Location: ' . Horde::applicationUrl(basename($prefs->getValue('whups_default_view')) . '.php', true)); + exit; +} + +// Update sorting preferences. +if (Horde_Util::getFormData('sortby') !== null) { + $prefs->setValue('sortby', Horde_Util::getFormData('sortby')); +} +if (Horde_Util::getFormData('sortdir') !== null) { + $prefs->setValue('sortdir', Horde_Util::getFormData('sortdir')); +} + +$title = sprintf(_("Open tickets in %s"), $queue['name']); +require WHUPS_TEMPLATES . '/common-header.inc'; +require WHUPS_TEMPLATES . '/menu.inc'; + +$criteria = array('queue' => $id, + 'category' => array('unconfirmed', 'new', 'assigned')); + +$tickets = $whups_driver->getTicketsByProperties($criteria); +if (is_a($tickets, 'PEAR_Error')) { + $notification->push(sprintf(_("There was an error locating tickets in this queue: "), $tickets->getMessage()), 'horde.error'); +} else { + Whups::sortTickets($tickets); + $values = Whups::getSearchResultColumns(); + $self = Whups::urlFor('queue', $queue); + $results = Whups_View::factory('Results', array('title' => sprintf(_("Open tickets in %s"), $queue['name']), + 'results' => $tickets, + 'values' => $values, + 'url' => $self)); + $_SESSION['whups']['last_search'] = $self; + $results->html(); + +} + +require $registry->get('templates', 'horde') . '/common-footer.inc'; \ No newline at end of file diff --git a/whups/queue/rss.php b/whups/queue/rss.php new file mode 100644 index 000000000..f375e2370 --- /dev/null +++ b/whups/queue/rss.php @@ -0,0 +1,126 @@ + + */ +@define('WHUPS_BASE', dirname(__FILE__) . '/..'); +require_once WHUPS_BASE . '/lib/base.php'; +require_once 'Horde/Template.php'; + +// See if we were passed a slug or id. Slug is tried first. +$slug = Horde_Util::getFormData('slug'); +if ($slug) { + $queue = $whups_driver->getQueueBySlugInternal($slug); + // Bad queue slug? + if (!count($queue)) { + exit; + } + $id = $queue['id']; +} else { + $id = Horde_Util::getFormData('id'); + $queue = $whups_driver->getQueue($id); +} + +// If a specific state_category is not specified, default to returning all +// open tickets. +$state_category = Horde_Util::getFormData('state'); +if ($state_category) { + require_once 'Horde/String.php'; + $state_display = Horde_String::ucFirst($state_category); + // When specifying an explicit state, limit the feed to 10. + $limit = 10; + $state_category = array($state_category); +} else { + $state_category = array('unconfirmed', 'new', 'assigned'); + $state_display = _("Open"); + $limit = 0; +} + +$criteria = array(); + +// See if we are requesting a specific type_id (for bug, feature etc...) +$typeId = Horde_Util::getFormData('type_id'); +if (is_numeric($typeId)) { + $type = $whups_driver->getType($typeId); + if (!is_a($type, 'PEAR_Error')) { + $criteria['type'] = array($typeId); + } else { + unset($type); + } +} + +if (!$id && !$state_category && !$typeId) { + exit; +} + +$criteria['category'] = $state_category; +if ($id) { + $criteria['queue'] = $id; +} + +$tickets = $whups_driver->getTicketsByProperties($criteria); +if (is_a($tickets, 'PEAR_Error') || !count($tickets)) { + exit; +} + +Whups::sortTickets($tickets, 'date_updated', 'desc'); +$cnt = 0; +foreach (array_keys($tickets) as $i) { + if ($limit > 0 && $cnt++ == $limit) { + break; + } + $description = 'Type: ' . $tickets[$i]['type_name'] . '; State: ' + . $tickets[$i]['state_name']; + + $items[$i]['title'] = htmlspecialchars(sprintf('[%s] %s', + $tickets[$i]['id'], + $tickets[$i]['summary'])); + $items[$i]['description'] = htmlspecialchars($description); + $items[$i]['url'] = Whups::urlFor('ticket', $tickets[$i]['id'], true, -1); + $items[$i]['pubDate'] = htmlspecialchars(date('r', $tickets[$i]['timestamp'])); +} + +$template = new Horde_Template(); +$template->set('charset', Horde_Nls::getCharset()); +$template->set('xsl', $registry->get('themesuri') . '/feed-rss.xsl'); +$template->set('pubDate', htmlspecialchars(date('r'))); +if (isset($type) && isset($queue['name'])) { + $rss_title = sprintf(_("%s %s tickets in %s"), + $state_display, + $type['name'], $queue['name']); +} elseif (isset($type)) { + $rss_title = sprintf(_("%s %s tickets in all queues"), + $state_display, + $type['name']); +} elseif (isset($queue['name'])) { + $rss_title = sprintf(_("%s tickets in %s"), + $state_display, + $queue['name']); +} else { + $rss_title = sprintf(_("%s tickets in all queues"), $state_display); +} +$template->set('title', htmlspecialchars($rss_title)); +$template->set('items', $items, true); +$template->set('url', + Horde_Util::addParameter(Horde::applicationUrl('queue/', true, -1), + 'id', $id)); +$template->set('rss_url', + Horde_Util::addParameter(Horde::applicationUrl('rss.php', true, -1), + 'id', $id)); +if (isset($queue['name'])) { + $description = sprintf(_("Open tickets in %s"), $queue['name']); +} else { + $description = _("Open tickets in all queues."); +} +$template->set('description', htmlspecialchars($description)); + +$browser->downloadHeaders((isset($queue['name']) ? $queue['name'] : 'horde') . '.rss', 'text/xml', true); +echo $template->fetch(WHUPS_TEMPLATES . '/rss/items.rss'); diff --git a/whups/reports.php b/whups/reports.php new file mode 100644 index 000000000..d18a337d8 --- /dev/null +++ b/whups/reports.php @@ -0,0 +1,46 @@ + + */ + +@define('WHUPS_BASE', dirname(__FILE__)); +require_once WHUPS_BASE . '/lib/base.php'; +require_once WHUPS_BASE . '/lib/Reports.php'; + +/* Supported graph types. Unused at the moment. */ +$graphs = array('open|queue_name' => array('chart', _("Open Tickets by Queue")), + 'open|state_name' => array('chart', _("Open Tickets by State")), + 'open|type_name' => array('chart', _("Open Tickets by Type")), + 'open|priority_name' => array('chart', _("Open Tickets by Priority")), + 'open|user_id_requester' => array('chart', _("Open Tickets by Requester")), + 'open|owner' => array('chart', _("Open Tickets by Owner")), + '@closed:avg:open|owner' => array('plot', _("Average days to close by Owner")), + '@closed:avg:open|user_id_requester' => array('plot', _("Average days to close by Requester")), + '@closed:avg:open|queue_name' => array('plot', _("Average days to close by Queue"))); + +/* Supported statistic types. */ +$stats = array('avg|open' => _("Average time a ticket is unresolved"), + 'max|open' => _("Maximum time a ticket is unresolved"), + 'min|open' => _("Minimum time a ticket is unresolved")); + +$queues = Whups::permissionsFilter($whups_driver->getQueues(), 'queue', Horde_Perms::READ); +if (!count($queues)) { + $notification->push(_("No stats available.")); +} + +$reporter = new Whups_Reports($whups_driver); + +$title = _("Reports"); +require WHUPS_TEMPLATES . '/common-header.inc'; +require WHUPS_TEMPLATES . '/menu.inc'; +if (count($queues)) { + require WHUPS_TEMPLATES . '/reports/stats.inc'; +} +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/whups/scripts/.htaccess b/whups/scripts/.htaccess new file mode 100644 index 000000000..3a4288278 --- /dev/null +++ b/whups/scripts/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/whups/scripts/bugzilla-import.php b/whups/scripts/bugzilla-import.php new file mode 100755 index 000000000..ddff35a0e --- /dev/null +++ b/whups/scripts/bugzilla-import.php @@ -0,0 +1,251 @@ +#!/usr/bin/php + + */ + +/* CONFIGURATION */ +$BUGZILLA_DSN = 'mysql://root:password@localhost/bugzilla'; +$BUGZILLA_STATES = array('NEW', 'ASSIGNED', 'RESOLVED', 'REOPENED', 'CLOSED'); +$BUGZILLA_BUG_TYPE = array('Bug', 'Imported Bugzilla Bug'); +$BUGZILLA_PRIORITIES = array('P1', 'P2', 'P3', 'P4', 'P5'); + + +@define('HORDE_BASE', dirname(__FILE__) . '/../..'); +@define('WHUPS_BASE', dirname(__FILE__) . '/..'); + +/* Do CLI checks and environment setup first. */ +require_once HORDE_BASE . '/lib/core.php'; + +/* Make sure no one runs this from the web. */ +if (!Horde_Cli::runningFromCLI()) { + exit("Must be run from the command line\n"); +} + +/* Load the command line environment. */ +Horde_Cli::init(); +$cli =& Horde_Cli::singleton(); + +/* Load the Whups libraries. */ +require_once HORDE_BASE . '/lib/core.php'; + +$registry = Horde_Registry::singleton(); +$registry->pushApp('whups', false); +$conf = &$GLOBALS['conf']; + +require_once WHUPS_BASE . '/lib/Whups.php'; +require_once WHUPS_BASE . '/lib/Driver.php'; + +$GLOBALS['whups_driver'] = Whups_Driver::factory(); +$GLOBALS['whups_driver']->initialise(); + +/* Load the PEAR DB library. We'll use it to read the Bugzilla database. */ +require_once 'DB.php'; + +function sectionHeader($text) +{ + global $cli; + $cli->writeln($cli->bold($text)); +} + +function error($text, $error = null) +{ + global $cli; + + if (is_a($error, 'PEAR_Error')) { + $text .= ' (' . $error->getMessage() . ')'; + } + $cli->message($text, 'cli.error'); +} + +function success($text) +{ + global $cli; + + $cli->message($text, 'cli.success'); +} + +function info($text) +{ + global $cli; + + $cli->message($text, 'cli.message'); +} + +/* Connect to the Bugzilla database. */ +$bugzilla = DB::connect($BUGZILLA_DSN); +if (is_a($bugzilla, 'PEAR_Error')) { + error('Failed to connect to Bugzilla database', $bugzilla); + exit; +} + +// Set DB portability options +switch ($bugzilla->phptype) { +case 'mssql': + $bugzilla->setOption('portability', DB_PORTABILITY_LOWERCASE | DB_PORTABILITY_ERRORS | DB_PORTABILITY_RTRIM); + break; +default: + $bugzilla->setOption('portability', DB_PORTABILITY_LOWERCASE | DB_PORTABILITY_ERRORS); +} + +$bugzilla->setFetchMode(DB_FETCHMODE_ASSOC); + +sectionHeader('Creating Types'); +$type = $whups_driver->addType($BUGZILLA_BUG_TYPE[0], $BUGZILLA_BUG_TYPE[1]); +if (is_a($type, 'PEAR_Error')) { + error("Failed to add '" . $BUGZILLA_BUG_TYPE[0] . "' type", $type); + exit; +} +info("Created '" . $BUGZILLA_BUG_TYPE[0] . "' type"); +$cli->writeln(); + +sectionHeader('Creating States'); +$states = array(); +foreach ($BUGZILLA_STATES as $state) { + $result = $whups_driver->addState($type, $state, "Bugzilla - $state", $state); + if (is_a($result, 'PEAR_Error')) { + error("Failed to add '$state' state", $result); + continue; + } + $states[$state] = $result; + info("Created '$state' state"); +} +$cli->writeln(); + +sectionHeader('Creating Priorities'); +$priorities = array(); +foreach ($BUGZILLA_PRIORITIES as $priority) { + $result = $whups_driver->addPriority($type, $priority, "Bugzilla - $priority"); + if (is_a($result, 'PEAR_Error')) { + error("Failed to add '$priority' priority", $result); + continue; + } + $priorities[$priority] = $result; + info("Created '$priority' priority"); +} +$cli->writeln(); + +/* Create a mapping of products and components. */ +$components = array(); + +sectionHeader('Importing Components'); +$res = $bugzilla->query('select value, program, description from components'); +while ($row = $res->fetchRow()) { + $result = $whups_driver->addQueue($row['value'], $row['description']); + if (is_a($result, 'PEAR_Error')) { + error('Failed to add queue: ' . $row['value'], $result); + continue; + } + + /* Set the queue's parameters. */ + $whups_driver->updateQueue($result, + $row['value'], + $row['description'], + array($type), + false); + + /* Add this component to the map. */ + $components[($row['program'])][] = $row['value']; + + success('Created queue: ' . $row['value']); +} +$cli->writeln(); + +/* Get a mapping of queue IDs to queue names. */ +$queues = $whups_driver->getQueues(); + +/* Maintain a mapping of version names. */ +$versions = array(); + +sectionHeader('Importing Versions'); +$res = $bugzilla->query('select value, program from versions'); +while ($row = $res->fetchRow()) { + /* Bugzilla manages versions on a per-product basis. Whups manages + * versions on a per-queue (i.e., per-component) basis. Add this + * product's versions to each each of its components. */ + foreach ($components[($row['program'])] as $component) { + $queueID = array_search($component, $queues); + + if ($queueID === false) { + error('Unknown queue: ' . $component); + continue; + } + + $result = $whups_driver->addVersion($queueID, $row['value'], '', true, 0); + if (is_a($result, 'PEAR_Error')) { + error('Failed to add version: ' . $row['value'], $result); + continue; + } + + $versions[$queueID][($row['value'])] = $result; + success('Added version: ' . $row['value'] . " ($component)"); + } +} +$cli->writeln(); + +/* Maintain a mapping of Bugzilla userid's to email addresses. */ +$profiles = array(); + +sectionHeader('Loading Profiles'); +$res = $bugzilla->query('select userid, login_name from profiles'); +while ($row = $res->fetchRow()) { + $profiles[($row['userid'])] = $row['login_name']; +} +info('Loaded ' . count($profiles) . ' profiles'); +$cli->writeln(); + +sectionHeader('Importing Bugs'); +$res = $bugzilla->query('select * from bugs'); +while ($row = $res->fetchRow()) { + $info = array(); + + $info['queue'] = array_search($row['component'], $queues); + if ($info['queue'] === false) { + error('Unknown queue: ' . $row['component']); + continue; + } + + $info['version'] = null; + if (isset($versions[($info['queue'])][($row['version'])])) { + $info['version'] = $versions[($info['queue'])][($row['version'])]; + } + + $info['type'] = $type; + + if (!isset($priorities[($row['priority'])])) { + error('Unknown priority: ' . $row['priority']); + continue; + } + $info['priority'] = $priorities[($row['priority'])]; + + if (!isset($states[($row['bug_status'])])) { + error('Unknown state: ' . $row['bug_status']); + continue; + } + $info['state'] = $states[($row['bug_status'])]; + + if (isset($profiles[($row['reporter'])])) { + $info['user_email'] = $profiles[($row['reporter'])]; + } + + $info['summary'] = htmlspecialchars($row['short_desc']); + $info['comment'] = $row['long_desc']; + + $result = $whups_driver->addTicket($info); + if (is_a($result, 'PEAR_Error')) { + error('Failed to add ticket', $result); + continue; + } + + success('Added new ticket ' . $result . ' to ' . $row['component']); +} +$cli->writeln(); diff --git a/whups/scripts/mail-filter.php b/whups/scripts/mail-filter.php new file mode 100755 index 000000000..7ff613b68 --- /dev/null +++ b/whups/scripts/mail-filter.php @@ -0,0 +1,207 @@ +#!/usr/bin/env php + $value) { + $dump .= sprintf("\n%${idlen}d: %s", $id, $value); + } + return $dump; +} + +$whups_authentication = 'none'; +require_once dirname(__FILE__) . '/../lib/base.php'; + +// Make sure no one runs this from the web. +if (!Horde_Cli::runningFromCLI()) { + exit("Must be run from the command line\n"); +} + +// Load the CLI environment - make sure there's no time limit, init some +// variables, etc. +Horde_Cli::init(); +$cli = Horde_Cli::singleton(); + +// Set server name. +$conf['server']['name'] = $conf['mail']['server_name']; +$conf['server']['port'] = $conf['mail']['server_port']; + +// Read command-line parameters. +$info = array(); +$mail = array('host' => 'localhost', + 'pass' => '', + 'port' => 143, + 'protocol' => 'imap/notls', + 'folder' => 'INBOX'); +$from_mail = false; +$options = Console_Getopt::getopt(Console_Getopt::readPHPArgv(), + 'ha:q:Q:gk:', + array('help', + 'default-auth=', + 'queue-name=', 'queue-id=', + 'guess-queue', + 'ticket=', + 'mail-host=', 'mail-user=', + 'mail-pass=', 'mail-port=', + 'mail-protocol=', 'mail-folder=')); +if (is_a($options, 'PEAR_Error')) { + usage(); + $cli->fatal($options->getMessage()); +} + +// Convert options into a hash. This is possible because all options are only +// allowed once. +$opts_hash = array(); +list($opts, $args) = $options; +foreach ($opts as $opt) { + list($optName, $optValue) = $opt; + switch ($optName) { + case 'h': $optName = '--help'; break; + case 'a': $optName = '--default-auth'; break; + case 'k': $optName = '--ticket'; break; + case 'q': $optName = '--queue-name'; break; + case 'Q': $optName = '--queue-id'; break; + case 'g': $optName = '--guess-queue'; break; + } + $opts_hash[$optName] = is_null($optValue) ? true : $optValue; +} + +// Process options in this order because some depend on others. +if (isset($opts_hash['--help'])) { + usage(); + exit; +} +if (isset($opts_hash['--default-auth'])) { + $info['default_auth'] = $opts_hash['--default-auth']; + Horde_Auth::setAuth($info['default_auth'], array()); +} +if (isset($opts_hash['--ticket'])) { + $info['ticket'] = (int)$opts_hash['--ticket']; +} +if (isset($opts_hash['--guess-queue'])) { + $info['guess-queue'] = true; +} +if (isset($opts_hash['--queue-name'])) { + $queues = $whups_driver->getQueues(); + foreach ($queues as $queueId => $queueName) { + if (strcasecmp($queueName, $opts_hash['--queue-name']) == 0) { + $info['queue'] = $queueId; + break; + } + } +} +if (isset($opts_hash['--queue-id'])) { + $queues = $whups_driver->getQueues(); + foreach ($queues as $queueId => $queueName) { + if (strcasecmp($queueId, $opts_hash['--queue-id']) == 0) { + $info['queue'] = $queueId; + break; + } + } +} +foreach (array('host', 'user', 'pass', 'port', 'protocol', 'folder') as $opt) { + if (isset($opts_hash['--mail-' . $opt])) { + $mail[$opt] = $opts_hash['--mail-' . $opt]; + } +} + +// Sanity check options. +if (empty($info['ticket'])) { + if (empty($info['queue'])) { + usage(); + $msg = _("--queue-name or --queue-id must specify a valid and public queue."); + if (isset($queues)) { + $msg .= ' ' . _("Available queues:") . _dump($queues); + } + $cli->fatal($msg); + } +} + +// Set charset to UTF-8 for most flexible conversion between email charset and +// backend charset. +Horde_Nls::setCharsetEnvironment('UTF-8'); + +// Read and parse the message. +if (empty($mail['user'])) { + $result = Whups_Mail::processMail($cli->readStdin(), $info); + if (is_a($result, 'PEAR_Error')) { + $cli->fatal(_("Error processing message:") . ' ' . $result->getMessage() . ' ' . $result->getUserInfo()); + } +} else { + $messages = array(); + $imap = @imap_open(sprintf('{%s:%d/%s}%s', + $mail['host'], + $mail['port'], + $mail['protocol'], + $mail['folder']), + $mail['user'], $mail['pass']); + if (!$imap) { + $cli->fatal(_("Cannot authenticate at mail server:") . ' ' . implode('; ', imap_errors())); + } + $mailbox = imap_search($imap, 'ALL', SE_UID); + if ($mailbox) { + foreach ($mailbox as $uid) { + $message = imap_fetchheader($imap, $uid, FT_UID) + . imap_body($imap, $uid, FT_UID); + $result = Whups_Mail::processMail($message, $info); + if (is_a($result, 'PEAR_Error')) { + $cli->message(_("Error processing message:") . ' ' . $result->getMessage() . ' ' . $result->getUserInfo(), 'cli.error'); + } else { + imap_delete($imap, $uid, FT_UID); + } + } + } + imap_expunge($imap); + imap_close($imap); +} + +exit(0); diff --git a/whups/scripts/obliterate.php b/whups/scripts/obliterate.php new file mode 100755 index 000000000..e4abcd8e2 --- /dev/null +++ b/whups/scripts/obliterate.php @@ -0,0 +1,73 @@ +#!/usr/bin/php + + */ +@define('HORDE_BASE', dirname(__FILE__) . '/../..'); +@define('WHUPS_BASE', dirname(__FILE__) . '/..'); + +/* Do CLI checks and environment setup first. */ +require_once HORDE_BASE . '/lib/core.php'; + +/* Make sure no one runs this from the web. */ +if (!Horde_Cli::runningFromCLI()) { + exit("Must be run from the command line\n"); +} + +/* Load the command line environment. */ +Horde_Cli::init(); +$cli = &Horde_Cli::singleton(); + +$confirm = $cli->prompt('Are you sure you want to obliterate all Whups data?', + array('n' => 'No', 'y' => 'Yes')); +$cli->writeln(); +if ($confirm !== 'y') { + exit; +} + +/* Load the Whups libraries. */ +require_once HORDE_BASE . '/lib/core.php'; + +$registry = Horde_Registry::singleton(); +$registry->pushApp('whups', false); +$conf = &$GLOBALS['conf']; + +require_once WHUPS_BASE . '/lib/Whups.php'; +require_once WHUPS_BASE . '/lib/Driver.php'; + +$GLOBALS['whups_driver'] = Whups_Driver::factory(); +$GLOBALS['whups_driver']->initialise(); + +$cli->writeln($cli->bold('Obliterating queues')); +$queues = $whups_driver->getQueues(); +foreach ($queues as $queue_id => $queue_name) { + $cli->message("Deleting queue: $queue_name"); + $whups_driver->deleteQueue($queue_id); +} +$cli->writeln(); + +$cli->writeln($cli->bold('Obliterating types')); +$types = $whups_driver->getAllTypes(); +foreach ($types as $type_id => $type_name) { + $cli->message("Deleting type: $type_name"); + $whups_driver->deleteType($type_id); +} +$cli->writeln(); + +$cli->writeln($cli->bold('Obliterating tickets')); +$tickets = $whups_driver->_getAll('select ticket_id from whups_tickets'); +foreach ($tickets as $ticket) { + $info = array('id' => $ticket['ticket_id']); + $cli->message('Deleting ticket: ' . $info['id']); + $whups_driver->deleteTicket($info); +} +$cli->writeln(); diff --git a/whups/scripts/reminders.php b/whups/scripts/reminders.php new file mode 100755 index 000000000..777cd2dee --- /dev/null +++ b/whups/scripts/reminders.php @@ -0,0 +1,35 @@ +#!/usr/bin/env php + + */ + +// Do CLI checks and environment setup first. +require_once dirname(__FILE__) . '/../../lib/core.php'; + +// Make sure no one runs this from the web. +if (!Horde_Cli::runningFromCLI()) { + exit("Must be run from the command line\n"); +} + +// Load the CLI environment - make sure there's no time limit, init +// some variables, etc. +Horde_Cli::init(); + +// Include needed libraries. +$whups_authentication = 'none'; +require_once dirname(__FILE__) . '/../lib/base.php'; +require_once WHUPS_BASE . '/lib/Scheduler/whups.php'; + +// Get an instance of the Whups scheduler. +$reminder = Horde_Scheduler::unserialize('Horde_Scheduler_whups'); + +// Check for and send reminders. +$reminder->run(); diff --git a/whups/scripts/sql/whups.mssql.sql b/whups/scripts/sql/whups.mssql.sql new file mode 100644 index 000000000..948c4f267 --- /dev/null +++ b/whups/scripts/sql/whups.mssql.sql @@ -0,0 +1,226 @@ +-- +-- $Horde: whups/scripts/sql/whups.mssql.sql,v 1.27 2009/10/20 21:28:28 jan Exp $ +-- +-- Copyright 2001-2005 Robert E. Coyle +-- +-- See the enclosed file LICENSE for license information (BSD). If you +-- did not receive this file, see http://www.horde.org/licenses/bsdl.php. +-- +-- Database definitions for Whups + +CREATE TABLE whups_tickets ( + ticket_id INT NOT NULL, -- unique ticket id + ticket_summary VARCHAR(255), -- summary of the ticket + user_id_requester VARCHAR(255) NOT NULL, -- user id of the creator of this ticket + queue_id INT NOT NULL, -- queue id that this ticket refers to + version_id INT, -- version id that this ticket refers to + type_id INT NOT NULL, -- id into the type table, describing the type of ticket + state_id INT NOT NULL, -- state of this ticket, meaning depends on the type of the ticket + priority_id INT NOT NULL, -- priority, meaning depends on the type of the ticket + ticket_timestamp INT NOT NULL, -- redundant but useful, mirrored in the comment and log + ticket_due INT, -- optional ticket due date + date_updated INT, -- date of last update + date_assigned INT, -- date of assignment + date_resolved INT, -- date of resolving +-- + PRIMARY KEY (ticket_id) +); +CREATE INDEX whups_ticket_queue_idx ON whups_tickets (queue_id); +CREATE INDEX whups_ticket_state_idx ON whups_tickets (state_id); +CREATE INDEX whups_ticket_requester_idx ON whups_tickets (user_id_requester); +CREATE INDEX whups_ticket_version_idx ON whups_tickets (version_id); +CREATE INDEX whups_ticket_priority_idx ON whups_tickets (priority_id); + +CREATE TABLE whups_ticket_owners ( + ticket_id INT NOT NULL, + ticket_owner VARCHAR(255) NOT NULL +-- + PRIMARY KEY (ticket_id, ticket_owner) +); +CREATE INDEX whups_ticket_owner_ticket_idx ON whups_ticket_owners (ticket_id); +CREATE INDEX whups_ticket_owner_owner_idx ON whups_ticket_owners (ticket_owner); + +CREATE TABLE whups_guests ( + guest_id VARCHAR(255) NOT NULL, + guest_email VARCHAR(255) NOT NULL, +-- + PRIMARY KEY (guest_id) +); + +CREATE TABLE whups_queues ( + queue_id INT NOT NULL, + queue_name VARCHAR(64) NOT NULL, + queue_description VARCHAR(255), + queue_versioned SMALLINT DEFAULT 0 NOT NULL, + queue_slug VARCHAR(64), + queue_email VARCHAR(64), +-- + PRIMARY KEY (queue_id) +); + +CREATE TABLE whups_queues_users ( + queue_id INT NOT NULL, + user_uid VARCHAR(250) NOT NULL, +-- + PRIMARY KEY (queue_id, user_uid) +); + +CREATE TABLE whups_types ( + type_id INT NOT NULL, + type_name VARCHAR(64) NOT NULL, + type_description VARCHAR(255), +-- + PRIMARY KEY (type_id) +); + +CREATE TABLE whups_types_queues ( + type_id INT NOT NULL, + queue_id INT NOT NULL, + type_default SMALLINT DEFAULT 0 NOT NULL +); +CREATE INDEX whups_type_queue_idx ON whups_types_queues (queue_id, type_id); + +CREATE TABLE whups_states ( + state_id INT NOT NULL, + type_id INT NOT NULL, + state_name VARCHAR(64) NOT NULL, + state_description VARCHAR(255), + state_category VARCHAR(16), + state_default SMALLINT DEFAULT 0 NOT NULL, +-- + PRIMARY KEY (state_id) +); +CREATE INDEX whups_state_type_idx ON whups_states (type_id); +CREATE INDEX whups_state_category_idx ON whups_states (state_category); + +CREATE TABLE whups_replies ( + type_id INT NOT NULL, + reply_id INT NOT NULL, + reply_name VARCHAR(255) NOT NULL, + reply_text VARCHAR(MAX) NOT NULL, +-- + PRIMARY KEY (reply_id) +); +CREATE INDEX whups_reply_type_idx ON whups_replies (type_id); +CREATE INDEX whups_reply_name_idx ON whups_replies (reply_name); + +CREATE TABLE whups_attributes_desc ( + attribute_id INT NOT NULL, + type_id INT NOT NULL, + attribute_name VARCHAR(64) NOT NULL, + attribute_description VARCHAR(255), + attribute_type VARCHAR(255) DEFAULT 'text' NOT NULL, + attribute_params VARCHAR(MAX), + attribute_required SMALLINT, +-- + PRIMARY KEY (attribute_id) +); + +CREATE TABLE whups_attributes ( + ticket_id INT NOT NULL, + attribute_id INT NOT NULL, + attribute_value VARCHAR(255) +); + +CREATE TABLE whups_comments ( + comment_id INT NOT NULL, + ticket_id INT NOT NULL, + user_id_creator VARCHAR(255) NOT NULL, + comment_text VARCHAR(MAX), + comment_timestamp INT, +-- + PRIMARY KEY (comment_id) +); +CREATE INDEX whups_comment_ticket_idx ON whups_comments (ticket_id); + +CREATE TABLE whups_logs ( + log_id INT NOT NULL, + transaction_id INT NOT NULL, + ticket_id INT NOT NULL, + log_timestamp INT NOT NULL, + log_type VARCHAR(255) NOT NULL, + log_value VARCHAR(255), + log_value_num INT, + user_id VARCHAR(255) NOT NULL, +-- + PRIMARY KEY (log_id) +); + +CREATE INDEX whups_log_transaction_idx ON whups_logs (transaction_id); +CREATE INDEX whups_log_ticket_id_idx ON whups_logs (ticket_id); +CREATE INDEX whups_log_timestamp_idx ON whups_logs (log_timestamp); + +CREATE TABLE whups_priorities ( + priority_id INT NOT NULL, + type_id INT NOT NULL, + priority_name VARCHAR(64), + priority_description VARCHAR(255), + priority_default SMALLINT DEFAULT 0 NOT NULL, +-- + PRIMARY KEY (priority_id) +); + +CREATE TABLE whups_versions ( + version_id INT NOT NULL, + queue_id INT NOT NULL, + version_name VARCHAR(64), + version_description VARCHAR(255), + version_active INT DEFAULT 1, +-- + PRIMARY KEY (version_id) +); +CREATE INDEX whups_versions_active_idx ON whups_versions (version_active); + +CREATE TABLE whups_ticket_listeners ( + ticket_id INT NOT NULL, + user_uid VARCHAR(255) NOT NULL +); +CREATE INDEX whups_ticket_listeners_ticket_idx ON whups_ticket_listeners (ticket_id); + +CREATE TABLE whups_queries ( + query_id INT NOT NULL, + query_parameters VARCHAR(MAX), + query_object VARCHAR(MAX), +-- + PRIMARY KEY (query_id) +); + +CREATE TABLE whups_shares ( + share_id INT NOT NULL, + share_name VARCHAR(255) NOT NULL, + share_owner VARCHAR(255) NOT NULL, + share_flags SMALLINT DEFAULT 0 NOT NULL, + perm_creator SMALLINT DEFAULT 0 NOT NULL, + perm_default SMALLINT DEFAULT 0 NOT NULL, + perm_guest SMALLINT DEFAULT 0 NOT NULL, + attribute_name VARCHAR(255) NOT NULL, + attribute_slug VARCHAR(255), +-- + PRIMARY KEY (share_id) +); + +CREATE INDEX whups_shares_share_name_idx ON whups_shares (share_name); +CREATE INDEX whups_shares_share_owner_idx ON whups_shares (share_owner); +CREATE INDEX whups_shares_perm_creator_idx ON whups_shares (perm_creator); +CREATE INDEX whups_shares_perm_default_idx ON whups_shares (perm_default); +CREATE INDEX whups_shares_perm_guest_idx ON whups_shares (perm_guest); + +CREATE TABLE whups_shares_groups ( + share_id INT NOT NULL, + group_uid VARCHAR(255) NOT NULL, + perm SMALLINT NOT NULL +); + +CREATE INDEX whups_shares_groups_share_id_idx ON whups_shares_groups (share_id); +CREATE INDEX whups_shares_groups_group_uid_idx ON whups_shares_groups (group_uid); +CREATE INDEX whups_shares_groups_perm_idx ON whups_shares_groups (perm); + +CREATE TABLE whups_shares_users ( + share_id INT NOT NULL, + user_uid VARCHAR(255) NOT NULL, + perm SMALLINT NOT NULL +); + +CREATE INDEX whups_shares_users_share_id_idx ON whups_shares_users (share_id); +CREATE INDEX whups_shares_users_user_uid_idx ON whups_shares_users (user_uid); +CREATE INDEX whups_shares_users_perm_idx ON whups_shares_users (perm); diff --git a/whups/scripts/sql/whups.oci8.sql b/whups/scripts/sql/whups.oci8.sql new file mode 100644 index 000000000..5824e24f8 --- /dev/null +++ b/whups/scripts/sql/whups.oci8.sql @@ -0,0 +1,226 @@ +-- +-- $Horde: whups/scripts/sql/whups.oci8.sql,v 1.28 2009/10/20 21:28:28 jan Exp $ +-- +-- Copyright 2001-2005 Robert E. Coyle +-- +-- See the enclosed file LICENSE for license information (BSD). If you +-- did not receive this file, see http://www.horde.org/licenses/bsdl.php. +-- +-- Database definitions for Whups + +CREATE TABLE whups_tickets ( + ticket_id NUMBER(16) NOT NULL, -- unique ticket id + ticket_summary VARCHAR2(255), -- summary of the ticket + user_id_requester VARCHAR2(255) NOT NULL, -- user id of the creator of this ticket + queue_id NUMBER(16) NOT NULL, -- queue id that this ticket refers to + version_id NUMBER(16), -- version id that this ticket refers to + type_id NUMBER(16) NOT NULL, -- id into the type table, describing the type of ticket + state_id NUMBER(16) NOT NULL, -- state of this ticket, meaning depends on the type of the ticket + priority_id NUMBER(16) NOT NULL, -- priority, meaning depends on the type of the ticket + ticket_timestamp NUMBER(16) NOT NULL, -- redundant but useful, mirrored in the comment and log + ticket_due NUMBER(16), -- optional ticket due date + date_updated NUMBER(16), -- date of last update + date_assigned NUMBER(16), -- date of assignment + date_resolved NUMBER(16), -- date of resolving +-- + PRIMARY KEY (ticket_id) +); +CREATE INDEX whups_ticket_queue_idx ON whups_tickets (queue_id); +CREATE INDEX whups_ticket_state_idx ON whups_tickets (state_id); +CREATE INDEX whups_ticket_requester_idx ON whups_tickets (user_id_requester); +CREATE INDEX whups_ticket_version_idx ON whups_tickets (version_id); +CREATE INDEX whups_ticket_priority_idx ON whups_tickets (priority_id); + +CREATE TABLE whups_ticket_owners ( + ticket_id NUMBER(16) NOT NULL, + ticket_owner VARCHAR2(255) NOT NULL +-- + PRIMARY KEY (ticket_id, ticket_owner) +); +CREATE INDEX whups_ticket_owner_ticket_idx ON whups_ticket_owners (ticket_id); +CREATE INDEX whups_ticket_owner_owner_idx ON whups_ticket_owners (ticket_owner); + +CREATE TABLE whups_guests ( + guest_id VARCHAR2(255) NOT NULL, + guest_email VARCHAR2(255) NOT NULL, +-- + PRIMARY KEY (guest_id) +); + +CREATE TABLE whups_queues ( + queue_id NUMBER(16) NOT NULL, + queue_name VARCHAR2(64) NOT NULL, + queue_description VARCHAR2(255), + queue_versioned NUMBER(1) DEFAULT 0 NOT NULL, + queue_slug VARCHAR2(64), + queue_email VARCHAR2(64), +-- + PRIMARY KEY (queue_id) +); + +CREATE TABLE whups_queues_users ( + queue_id NUMBER(16) NOT NULL, + user_uid VARCHAR2(255) NOT NULL, +-- + PRIMARY KEY (queue_id, user_uid) +); + +CREATE TABLE whups_types ( + type_id NUMBER(16) NOT NULL, + type_name VARCHAR2(64) NOT NULL, + type_description VARCHAR2(255), +-- + PRIMARY KEY (type_id) +); + +CREATE TABLE whups_types_queues ( + type_id NUMBER(16) NOT NULL, + queue_id NUMBER(16) NOT NULL, + type_default NUMBER(1) DEFAULT 0 NOT NULL +); +CREATE INDEX whups_type_queue_idx ON whups_types_queues (queue_id, type_id); + +CREATE TABLE whups_states ( + state_id NUMBER(16) NOT NULL, + type_id NUMBER(16) NOT NULL, + state_name VARCHAR2(64) NOT NULL, + state_description VARCHAR2(255), + state_category VARCHAR2(16), + state_default NUMBER(1) DEFAULT 0 NOT NULL, +-- + PRIMARY KEY (state_id) +); +CREATE INDEX whups_state_type_idx ON whups_states (type_id); +CREATE INDEX whups_state_category_idx ON whups_states (state_category); + +CREATE TABLE whups_replies ( + type_id NUMBER(16) NOT NULL, + reply_id NUMBER(16) NOT NULL, + reply_name VARCHAR2(255) NOT NULL, + reply_text CLOB NOT NULL, +-- + PRIMARY KEY (reply_id) +); +CREATE INDEX whups_reply_type_idx ON whups_replies (type_id); +CREATE INDEX whups_reply_name_idx ON whups_replies (reply_name); + +CREATE TABLE whups_attributes_desc ( + attribute_id NUMBER(16) NOT NULL, + type_id NUMBER(16) NOT NULL, + attribute_name VARCHAR2(64) NOT NULL, + attribute_description VARCHAR2(255), + attribute_type VARCHAR2(255) DEFAULT 'text' NOT NULL, + attribute_params CLOB, + attribute_required NUMBER(8), +-- + PRIMARY KEY (attribute_id) +); + +CREATE TABLE whups_attributes ( + ticket_id NUMBER(16) NOT NULL, + attribute_id NUMBER(16) NOT NULL, + attribute_value VARCHAR2(255) +); + +CREATE TABLE whups_comments ( + comment_id NUMBER(16) NOT NULL, + ticket_id NUMBER(16) NOT NULL, + user_id_creator VARCHAR2(255) NOT NULL, + comment_text CLOB, + comment_timestamp NUMBER(16), +-- + PRIMARY KEY (comment_id) +); +CREATE INDEX whups_comment_ticket_idx ON whups_comments (ticket_id); + +CREATE TABLE whups_logs ( + log_id NUMBER(16) NOT NULL, + transaction_id NUMBER(16) NOT NULL, + ticket_id NUMBER(16) NOT NULL, + log_timestamp NUMBER(16) NOT NULL, + log_type VARCHAR2(255) NOT NULL, + log_value VARCHAR2(255), + log_value_num NUMBER(16), + user_id VARCHAR2(255) NOT NULL, +-- + PRIMARY KEY (log_id) +); + +CREATE INDEX whups_log_transaction_idx ON whups_logs (transaction_id); +CREATE INDEX whups_log_ticket_id_idx ON whups_logs (ticket_id); +CREATE INDEX whups_log_timestamp_idx ON whups_logs (log_timestamp); + +CREATE TABLE whups_priorities ( + priority_id NUMBER(16) NOT NULL, + type_id NUMBER(16) NOT NULL, + priority_name VARCHAR2(64), + priority_description VARCHAR2(255), + priority_default NUMBER(1) DEFAULT 0 NOT NULL, +-- + PRIMARY KEY (priority_id) +); + +CREATE TABLE whups_versions ( + version_id NUMBER(16) NOT NULL, + queue_id NUMBER(16) NOT NULL, + version_name VARCHAR2(64), + version_description VARCHAR2(255), + version_active NUMBER(1) DEFAULT 1, +-- + PRIMARY KEY (version_id) +); +CREATE INDEX whups_versions_active_idx ON whups_versions (version_active); + +CREATE TABLE whups_ticket_listeners ( + ticket_id NUMBER(16) NOT NULL, + user_uid VARCHAR2(255) NOT NULL +); +CREATE INDEX whups_ticket_listeners_ticket_idx ON whups_ticket_listeners (ticket_id); + +CREATE TABLE whups_queries ( + query_id NUMBER(16) NOT NULL, + query_parameters CLOB, + query_object CLOB, +-- + PRIMARY KEY (query_id) +); + +CREATE TABLE whups_shares ( + share_id NUMBER(16) NOT NULL, + share_name VARCHAR2(255) NOT NULL, + share_owner VARCHAR2(255) NOT NULL, + share_flags NUMBER(8) DEFAULT 0 NOT NULL, + perm_creator NUMBER(8) DEFAULT 0 NOT NULL, + perm_default NUMBER(8) DEFAULT 0 NOT NULL, + perm_guest NUMBER(8) DEFAULT 0 NOT NULL, + attribute_name VARCHAR2(255) NOT NULL, + attribute_slug VARCHAR2(255), +-- + PRIMARY KEY (share_id) +); + +CREATE INDEX whups_shares_share_name_idx ON whups_shares (share_name); +CREATE INDEX whups_shares_share_owner_idx ON whups_shares (share_owner); +CREATE INDEX whups_shares_perm_creator_idx ON whups_shares (perm_creator); +CREATE INDEX whups_shares_perm_default_idx ON whups_shares (perm_default); +CREATE INDEX whups_shares_perm_guest_idx ON whups_shares (perm_guest); + +CREATE TABLE whups_shares_groups ( + share_id NUMBER(16) NOT NULL, + group_uid VARCHAR2(255) NOT NULL, + perm NUMBER(8) NOT NULL +); + +CREATE INDEX whups_shares_groups_share_id_idx ON whups_shares_groups (share_id); +CREATE INDEX whups_shares_groups_group_uid_idx ON whups_shares_groups (group_uid); +CREATE INDEX whups_shares_groups_perm_idx ON whups_shares_groups (perm); + +CREATE TABLE whups_shares_users ( + share_id NUMBER(16) NOT NULL, + user_uid VARCHAR2(255) NOT NULL, + perm NUMBER(8) NOT NULL +); + +CREATE INDEX whups_shares_users_share_id_idx ON whups_shares_users (share_id); +CREATE INDEX whups_shares_users_user_uid_idx ON whups_shares_users (user_uid); +CREATE INDEX whups_shares_users_perm_idx ON whups_shares_users (perm); diff --git a/whups/scripts/sql/whups.sql b/whups/scripts/sql/whups.sql new file mode 100644 index 000000000..a910f512e --- /dev/null +++ b/whups/scripts/sql/whups.sql @@ -0,0 +1,226 @@ +-- +-- $Horde: whups/scripts/sql/whups.sql,v 1.32 2009/10/20 21:28:28 jan Exp $ +-- +-- Copyright 2001-2005 Robert E. Coyle +-- +-- See the enclosed file LICENSE for license information (BSD). If you +-- did not receive this file, see http://www.horde.org/licenses/bsdl.php. +-- +-- Database definitions for Whups + +CREATE TABLE whups_tickets ( + ticket_id INT NOT NULL, -- unique ticket id + ticket_summary VARCHAR(255), -- summary of the ticket + user_id_requester VARCHAR(255) NOT NULL, -- user id of the creator of this ticket + queue_id INT NOT NULL, -- queue id that this ticket refers to + version_id INT, -- version id that this ticket refers to + type_id INT NOT NULL, -- id into the type table, describing the type of ticket + state_id INT NOT NULL, -- state of this ticket, meaning depends on the type of the ticket + priority_id INT NOT NULL, -- priority, meaning depends on the type of the ticket + ticket_timestamp INT NOT NULL, -- redundant but useful, mirrored in the comment and log + ticket_due INT, -- optional ticket due date + date_updated INT, -- date of last update + date_assigned INT, -- date of assignment + date_resolved INT, -- date of resolving +-- + PRIMARY KEY (ticket_id) +); +CREATE INDEX whups_ticket_queue_idx ON whups_tickets (queue_id); +CREATE INDEX whups_ticket_state_idx ON whups_tickets (state_id); +CREATE INDEX whups_ticket_requester_idx ON whups_tickets (user_id_requester); +CREATE INDEX whups_ticket_version_idx ON whups_tickets (version_id); +CREATE INDEX whups_ticket_priority_idx ON whups_tickets (priority_id); + +CREATE TABLE whups_ticket_owners ( + ticket_id INT NOT NULL, + ticket_owner VARCHAR(255) NOT NULL, +-- + PRIMARY KEY (ticket_id, ticket_owner) +); +CREATE INDEX whups_ticket_owner_ticket_idx ON whups_ticket_owners (ticket_id); +CREATE INDEX whups_ticket_owner_owner_idx ON whups_ticket_owners (ticket_owner); + +CREATE TABLE whups_guests ( + guest_id VARCHAR(255) NOT NULL, + guest_email VARCHAR(255) NOT NULL, +-- + PRIMARY KEY (guest_id) +); + +CREATE TABLE whups_queues ( + queue_id INT NOT NULL, + queue_name VARCHAR(64) NOT NULL, + queue_description VARCHAR(255), + queue_versioned SMALLINT DEFAULT 0 NOT NULL, + queue_slug VARCHAR(64), + queue_email VARCHAR(64), +-- + PRIMARY KEY (queue_id) +); + +CREATE TABLE whups_queues_users ( + queue_id INT NOT NULL, + user_uid VARCHAR(250) NOT NULL, +-- + PRIMARY KEY (queue_id, user_uid) +); + +CREATE TABLE whups_types ( + type_id INT NOT NULL, + type_name VARCHAR(64) NOT NULL, + type_description VARCHAR(255), +-- + PRIMARY KEY (type_id) +); + +CREATE TABLE whups_types_queues ( + type_id INT NOT NULL, + queue_id INT NOT NULL, + type_default SMALLINT DEFAULT 0 NOT NULL +); +CREATE INDEX whups_type_queue_idx ON whups_types_queues (queue_id, type_id); + +CREATE TABLE whups_states ( + state_id INT NOT NULL, + type_id INT NOT NULL, + state_name VARCHAR(64) NOT NULL, + state_description VARCHAR(255), + state_category VARCHAR(16), + state_default SMALLINT DEFAULT 0 NOT NULL, +-- + PRIMARY KEY (state_id) +); +CREATE INDEX whups_state_type_idx ON whups_states (type_id); +CREATE INDEX whups_state_category_idx ON whups_states (state_category); + +CREATE TABLE whups_replies ( + type_id INT NOT NULL, + reply_id INT NOT NULL, + reply_name VARCHAR(255) NOT NULL, + reply_text TEXT NOT NULL, +-- + PRIMARY KEY (reply_id) +); +CREATE INDEX whups_reply_type_idx ON whups_replies (type_id); +CREATE INDEX whups_reply_name_idx ON whups_replies (reply_name); + +CREATE TABLE whups_attributes_desc ( + attribute_id INT NOT NULL, + type_id INT NOT NULL, + attribute_name VARCHAR(64) NOT NULL, + attribute_description VARCHAR(255), + attribute_type VARCHAR(255) DEFAULT 'text' NOT NULL, + attribute_params TEXT, + attribute_required SMALLINT, +-- + PRIMARY KEY (attribute_id) +); + +CREATE TABLE whups_attributes ( + ticket_id INT NOT NULL, + attribute_id INT NOT NULL, + attribute_value VARCHAR(255) +); + +CREATE TABLE whups_comments ( + comment_id INT NOT NULL, + ticket_id INT NOT NULL, + user_id_creator VARCHAR(255) NOT NULL, + comment_text TEXT, + comment_timestamp INT, +-- + PRIMARY KEY (comment_id) +); +CREATE INDEX whups_comment_ticket_idx ON whups_comments (ticket_id); + +CREATE TABLE whups_logs ( + log_id INT NOT NULL, + transaction_id INT NOT NULL, + ticket_id INT NOT NULL, + log_timestamp INT NOT NULL, + log_type VARCHAR(255) NOT NULL, + log_value VARCHAR(255), + log_value_num INT, + user_id VARCHAR(255) NOT NULL, +-- + PRIMARY KEY (log_id) +); +CREATE INDEX whups_log_transaction_idx ON whups_logs (transaction_id); +CREATE INDEX whups_log_ticket_id_idx ON whups_logs (ticket_id); +CREATE INDEX whups_log_timestamp_idx ON whups_logs (log_timestamp); + +CREATE TABLE whups_priorities ( + priority_id INT NOT NULL, + type_id INT NOT NULL, + priority_name VARCHAR(64), + priority_description VARCHAR(255), + priority_default SMALLINT DEFAULT 0 NOT NULL, +-- + PRIMARY KEY (priority_id) +); +CREATE INDEX whups_priority_type_idx ON whups_priorities (type_id); + +CREATE TABLE whups_versions ( + version_id INT NOT NULL, + queue_id INT NOT NULL, + version_name VARCHAR(64), + version_description VARCHAR(255), + version_active INT DEFAULT 1, +-- + PRIMARY KEY (version_id) +); +CREATE INDEX whups_versions_active_idx ON whups_versions (version_active); + +CREATE TABLE whups_ticket_listeners ( + ticket_id INT NOT NULL, + user_uid VARCHAR(255) NOT NULL +); +CREATE INDEX whups_ticket_listeners_ticket_idx ON whups_ticket_listeners (ticket_id); + +CREATE TABLE whups_queries ( + query_id INT NOT NULL, + query_parameters TEXT, + query_object TEXT, +-- + PRIMARY KEY (query_id) +); + +CREATE TABLE whups_shares ( + share_id INT NOT NULL, + share_name VARCHAR(255) NOT NULL, + share_owner VARCHAR(255) NOT NULL, + share_flags SMALLINT DEFAULT 0 NOT NULL, + perm_creator SMALLINT DEFAULT 0 NOT NULL, + perm_default SMALLINT DEFAULT 0 NOT NULL, + perm_guest SMALLINT DEFAULT 0 NOT NULL, + attribute_name VARCHAR(255) NOT NULL, + attribute_slug VARCHAR(255), +-- + PRIMARY KEY (share_id) +); + +CREATE INDEX whups_shares_share_name_idx ON whups_shares (share_name); +CREATE INDEX whups_shares_share_owner_idx ON whups_shares (share_owner); +CREATE INDEX whups_shares_perm_creator_idx ON whups_shares (perm_creator); +CREATE INDEX whups_shares_perm_default_idx ON whups_shares (perm_default); +CREATE INDEX whups_shares_perm_guest_idx ON whups_shares (perm_guest); + +CREATE TABLE whups_shares_groups ( + share_id INT NOT NULL, + group_uid VARCHAR(255) NOT NULL, + perm SMALLINT NOT NULL +); + +CREATE INDEX whups_shares_groups_share_id_idx ON whups_shares_groups (share_id); +CREATE INDEX whups_shares_groups_group_uid_idx ON whups_shares_groups (group_uid); +CREATE INDEX whups_shares_groups_perm_idx ON whups_shares_groups (perm); + +CREATE TABLE whups_shares_users ( + share_id INT NOT NULL, + user_uid VARCHAR(255) NOT NULL, + perm SMALLINT NOT NULL +); + +CREATE INDEX whups_shares_users_share_id_idx ON whups_shares_users (share_id); +CREATE INDEX whups_shares_users_user_uid_idx ON whups_shares_users (user_uid); +CREATE INDEX whups_shares_users_perm_idx ON whups_shares_users (perm); diff --git a/whups/scripts/sql/whups.xml b/whups/scripts/sql/whups.xml new file mode 100644 index 000000000..291106f89 --- /dev/null +++ b/whups/scripts/sql/whups.xml @@ -0,0 +1,1368 @@ + + + + name + false + false + + + + whups_attributes + + + + + ticket_id + integer + 0 + true + 4 + + + + attribute_id + integer + 0 + true + 4 + + + + attribute_value + text + + false + 255 + + + + +
+ + + + whups_attributes_desc + + + + + attribute_id + integer + 0 + true + 4 + + + + type_id + integer + 0 + true + 4 + + + + attribute_name + text + + true + 64 + + + + attribute_description + text + + false + 255 + + + + attribute_type + text + text + false + 255 + + + + attribute_required + integer + + false + 4 + + + + attribute_params + text + + false + + + + whups_attributes_desc_pKey + true + + attribute_id + ascending + + + + + +
+ + + + whups_comments + + + + + comment_id + integer + 0 + true + 4 + + + + ticket_id + integer + 0 + true + 4 + + + + user_id_creator + text + + true + 255 + + + + comment_text + text + + false + + + + comment_timestamp + integer + + false + 4 + + + + whups_comment_ticket + + ticket_id + ascending + + + + + whups_comments_pKey + true + + comment_id + ascending + + + + + +
+ + + + whups_guests + + + + + guest_id + text + + true + 255 + + + + guest_email + text + + true + 255 + + + + whups_guests_pKey + true + + guest_id + ascending + + + + + +
+ + + + whups_logs + + + + + ticket_id + integer + 0 + true + 4 + + + + log_timestamp + integer + 0 + true + 4 + + + + user_id + text + + true + 255 + + + + log_type + text + + false + 255 + + + + log_value + text + + false + 255 + + + + log_id + integer + + false + 4 + + + + transaction_id + integer + + false + 4 + + + + log_value_num + integer + + false + 4 + + + + log_ticket_id + + ticket_id + ascending + + + + + log_timestamp + + log_timestamp + ascending + + + + + +
+ + + + whups_priorities + + + + + priority_id + integer + 0 + true + 4 + + + + type_id + integer + 0 + true + 4 + + + + priority_name + text + + false + 64 + + + + priority_description + text + + false + 255 + + + + priority_default + integer + 0 + true + 2 + + + + whups_priority_type + + type_id + ascending + + + + + whups_priorities_pKey + true + + priority_id + ascending + + + + + +
+ + + + whups_queries + + + + + query_id + integer + + true + 4 + + + + query_parameters + text + + false + + + + query_object + text + + false + + + + whups_queries_pKey + true + + query_id + ascending + + + + + +
+ + + + whups_queues + + + + + queue_id + integer + 0 + true + 4 + + + + queue_name + text + + true + 64 + + + + queue_description + text + + false + 255 + + + + queue_versioned + integer + 0 + true + 2 + + + + queue_slug + text + + false + 64 + + + + queue_email + text + + false + 64 + + + + whups_queue_slug + + queue_slug + ascending + + + + + whups_queues_pKey + true + + queue_id + ascending + + + + + +
+ + + + whups_queues_users + + + + + queue_id + integer + 0 + true + 4 + + + + user_uid + text + + true + 250 + + + + whups_queues_users_pKey + true + + queue_id + ascending + + + user_uid + ascending + + + + + +
+ + + + whups_replies + + + + + type_id + integer + + true + 4 + + + + reply_id + integer + + true + 4 + + + + reply_name + text + + true + 255 + + + + reply_text + text + + true + + + + whups_reply_type + + type_id + ascending + + + + + whups_reply_name + + reply_name + ascending + + + + + whups_replies_pKey + true + + reply_id + ascending + + + + + +
+ + + + whups_shares + + + + + share_id + integer + + true + 4 + + + + share_name + text + + true + 255 + + + + share_owner + text + + true + 32 + + + + share_flags + integer + 0 + true + 2 + + + + perm_creator + integer + 0 + true + 2 + + + + perm_default + integer + 0 + true + 2 + + + + perm_guest + integer + 0 + true + 2 + + + + attribute_name + text + + true + 255 + + + + attribute_slug + text + + false + 255 + + + + whups_shares_share_name + + share_name + ascending + + + + + whups_shares_share_owner + + share_owner + ascending + + + + + whups_shares_perm_creator + + perm_creator + ascending + + + + + whups_shares_perm_default + + perm_default + ascending + + + + + whups_shares_perm_guest + + perm_guest + ascending + + + + + whups_shares_pKey + true + + share_id + ascending + + + + + +
+ + + + whups_shares_groups + + + + + share_id + integer + + true + 4 + + + + group_uid + text + + true + 255 + + + + perm + integer + + true + 2 + + + + whups_shares_groups_share_id + + share_id + ascending + + + + + whups_shares_groups_group_uid + + group_uid + ascending + + + + + whups_shares_groups_perm + + perm + ascending + + + + + +
+ + + + whups_shares_users + + + + + share_id + integer + + true + 4 + + + + user_uid + text + + true + 32 + + + + perm + integer + + true + 2 + + + + whups_shares_users_share_id + + share_id + ascending + + + + + whups_shares_users_user_uid + + user_uid + ascending + + + + + whups_shares_users_perm + + perm + ascending + + + + + +
+ + + + whups_states + + + + + state_id + integer + 0 + true + 4 + + + + type_id + integer + 0 + true + 4 + + + + state_name + text + + true + 64 + + + + state_description + text + + false + 255 + + + + state_category + text + + false + 16 + + + + state_default + integer + 0 + true + 2 + + + + whups_state_type + + type_id + ascending + + + + + whups_state_category + + state_category + ascending + + + + + whups_states_pKey + true + + state_id + ascending + + + + + +
+ + + + whups_ticket_listeners + + + + + ticket_id + integer + + true + 4 + + + + user_uid + text + + true + 255 + + + + whups_ticket_listeners_ticket + + ticket_id + ascending + + + + + +
+ + + + whups_ticket_owners + + + + + ticket_id + integer + 0 + true + 4 + + + + ticket_owner + text + + true + 255 + + + + ticket_id + + ticket_id + ascending + + + + + ticket_owner + + ticket_owner + ascending + + + + + whups_ticket_owner_ticket + + ticket_id + ascending + + + + + whups_ticket_owner_owner + + ticket_owner + ascending + + + + + +
+ + + + whups_tickets + + + + + ticket_id + integer + 0 + true + 4 + + + + ticket_summary + text + + false + 255 + + + + user_id_requester + text + + true + 255 + + + + queue_id + integer + 0 + true + 4 + + + + version_id + integer + + false + 4 + + + + type_id + integer + 0 + true + 4 + + + + state_id + integer + 0 + true + 4 + + + + priority_id + integer + 0 + true + 4 + + + + ticket_timestamp + integer + 0 + true + 4 + + + + ticket_due + integer + + false + 4 + + + + date_updated + integer + + false + 4 + + + + date_assigned + integer + + false + 4 + + + + date_resolved + integer + + false + 4 + + + + whups_ticket_queue + + queue_id + ascending + + + + + whups_ticket_state + + state_id + ascending + + + + + whups_ticket_requester + + user_id_requester + ascending + + + + + whups_ticket_version + + version_id + ascending + + + + + whups_ticket_priority + + priority_id + ascending + + + + + whups_tickets_pKey + true + + ticket_id + ascending + + + + + +
+ + + + whups_types + + + + + type_id + integer + 0 + true + 4 + + + + type_name + text + + true + 64 + + + + type_description + text + + false + 255 + + + + whups_types_pKey + true + + type_id + ascending + + + + + +
+ + + + whups_types_queues + + + + + type_id + integer + 0 + true + 4 + + + + queue_id + integer + 0 + true + 4 + + + + type_default + integer + 0 + true + 2 + + + + whups_type_queue + + queue_id + ascending + + + type_id + ascending + + + + + +
+ + + + whups_users_queries + + + + + user_uid + text + + true + 255 + + + + query_name + text + + false + 255 + + + + query_object + text + + false + + + + +
+ + + + whups_versions + + + + + version_id + integer + + true + 4 + + + + queue_id + integer + + true + 4 + + + + version_name + text + + false + 64 + + + + version_description + text + + false + 255 + + + + version_active + integer + 1 + 1 + + + + whups_versions_pKey + true + + version_id + ascending + + + + + whups_versions_active + + version_active + ascending + + + + + +
+ +
diff --git a/whups/scripts/upgrades/2006-07-12_add_due_date.sql b/whups/scripts/upgrades/2006-07-12_add_due_date.sql new file mode 100644 index 000000000..1775b4bc1 --- /dev/null +++ b/whups/scripts/upgrades/2006-07-12_add_due_date.sql @@ -0,0 +1,6 @@ +-- Script to add due date to whups_tickets table +-- +-- $Horde: whups/scripts/upgrades/2006-07-12_add_due_date.sql,v 1.1 2006/07/19 02:54:31 chuck Exp $ +-- + +ALTER TABLE whups_tickets ADD ticket_due INT; diff --git a/whups/scripts/upgrades/2006-08-04_drop_subjectlist.sql b/whups/scripts/upgrades/2006-08-04_drop_subjectlist.sql new file mode 100644 index 000000000..840c8a995 --- /dev/null +++ b/whups/scripts/upgrades/2006-08-04_drop_subjectlist.sql @@ -0,0 +1,4 @@ +DROP TABLE whups_queues_subjects; +DROP TABLE whups_subjects; +ALTER TABLE whups_queues DROP COLUMN queue_subjectlist; +DROP TABLE whups_subjects_seq; diff --git a/whups/scripts/upgrades/2008-02-27_add_defaults.sql b/whups/scripts/upgrades/2008-02-27_add_defaults.sql new file mode 100644 index 000000000..e2408ae84 --- /dev/null +++ b/whups/scripts/upgrades/2008-02-27_add_defaults.sql @@ -0,0 +1,3 @@ +ALTER TABLE whups_types_queues ADD COLUMN type_default SMALLINT DEFAULT 0 NOT NULL; +ALTER TABLE whups_states ADD COLUMN state_default SMALLINT DEFAULT 0 NOT NULL; +ALTER TABLE whups_priorities ADD COLUMN priority_default SMALLINT DEFAULT 0 NOT NULL; diff --git a/whups/scripts/upgrades/2008-04-29_add_sql_share_tables.sql b/whups/scripts/upgrades/2008-04-29_add_sql_share_tables.sql new file mode 100644 index 000000000..4c6cf070d --- /dev/null +++ b/whups/scripts/upgrades/2008-04-29_add_sql_share_tables.sql @@ -0,0 +1,39 @@ +-- $Horde: whups/scripts/upgrades/2008-04-29_add_sql_share_tables.sql,v 1.3 2009/10/20 21:28:28 jan Exp $ + +CREATE TABLE whups_shares ( + share_id INT NOT NULL, + share_name VARCHAR(255) NOT NULL, + share_owner VARCHAR(255) NOT NULL, + share_flags SMALLINT DEFAULT 0 NOT NULL, + perm_creator SMALLINT DEFAULT 0 NOT NULL, + perm_default SMALLINT DEFAULT 0 NOT NULL, + perm_guest SMALLINT DEFAULT 0 NOT NULL, + attribute_name VARCHAR(255) NOT NULL, + PRIMARY KEY (share_id) +); + +CREATE INDEX whups_shares_share_name_idx ON whups_shares (share_name); +CREATE INDEX whups_shares_share_owner_idx ON whups_shares (share_owner); +CREATE INDEX whups_shares_perm_creator_idx ON whups_shares (perm_creator); +CREATE INDEX whups_shares_perm_default_idx ON whups_shares (perm_default); +CREATE INDEX whups_shares_perm_guest_idx ON whups_shares (perm_guest); + +CREATE TABLE whups_shares_groups ( + share_id INT NOT NULL, + group_uid INT NOT NULL, + perm SMALLINT NOT NULL +); + +CREATE INDEX whups_shares_groups_share_id_idx ON whups_shares_groups (share_id); +CREATE INDEX whups_shares_groups_group_uid_idx ON whups_shares_groups (group_uid); +CREATE INDEX whups_shares_groups_perm_idx ON whups_shares_groups (perm); + +CREATE TABLE whups_shares_users ( + share_id INT NOT NULL, + user_uid VARCHAR(32) NOT NULL, + perm SMALLINT NOT NULL +); + +CREATE INDEX whups_shares_users_share_id_idx ON whups_shares_users (share_id); +CREATE INDEX whups_shares_users_user_uid_idx ON whups_shares_users (user_uid); +CREATE INDEX whups_shares_users_perm_idx ON whups_shares_users (perm); diff --git a/whups/scripts/upgrades/2008-06-11_add_attribute_types.oci8.sql b/whups/scripts/upgrades/2008-06-11_add_attribute_types.oci8.sql new file mode 100644 index 000000000..7138887cb --- /dev/null +++ b/whups/scripts/upgrades/2008-06-11_add_attribute_types.oci8.sql @@ -0,0 +1,7 @@ +ALTER TABLE whups_attributes_desc ADD COLUMN attribute_description_new VARCHAR2(255); +UPDATE whups_attributes_desc SET attribute_description_new = attribute_description; +ALTER TABLE whups_attributes_desc DROP COLUMN attribute_description; +ALTER TABLE whups_attributes_desc RENAME COLUMN attribute_description_new TO attribute_description; +ALTER TABLE whups_attributes_desc ADD COLUMN attribute_type VARCHAR2(255) DEFAULT 'text'; +ALTER TABLE whups_attributes_desc ADD COLUMN attribute_params CLOB; +ALTER TABLE whups_attributes_desc ADD COLUMN attribute_required NUMBER(8); diff --git a/whups/scripts/upgrades/2008-06-11_add_attribute_types.pgsql.sql b/whups/scripts/upgrades/2008-06-11_add_attribute_types.pgsql.sql new file mode 100644 index 000000000..1f9edc3ac --- /dev/null +++ b/whups/scripts/upgrades/2008-06-11_add_attribute_types.pgsql.sql @@ -0,0 +1,14 @@ +BEGIN; +ALTER TABLE whups_attributes_desc ADD COLUMN attribute_description_new VARCHAR(255); +UPDATE whups_attributes_desc SET attribute_description_new = attribute_description; +ALTER TABLE whups_attributes_desc DROP attribute_description; +ALTER TABLE whups_attributes_desc RENAME attribute_description_new TO attribute_description; +COMMIT; + +BEGIN; +ALTER TABLE whups_attributes_desc ADD COLUMN attribute_type VARCHAR(255); +ALTER TABLE whups_attributes_desc ALTER COLUMN attribute_type SET DEFAULT 'text'; +COMMIT; + +ALTER TABLE whups_attributes_desc ADD COLUMN attribute_params TEXT; +ALTER TABLE whups_attributes_desc ADD COLUMN attribute_required SMALLINT; diff --git a/whups/scripts/upgrades/2008-06-11_add_attribute_types.sql b/whups/scripts/upgrades/2008-06-11_add_attribute_types.sql new file mode 100644 index 000000000..78b48f8a1 --- /dev/null +++ b/whups/scripts/upgrades/2008-06-11_add_attribute_types.sql @@ -0,0 +1,4 @@ +ALTER TABLE whups_attributes_desc CHANGE COLUMN attribute_description attribute_description VARCHAR(255); +ALTER TABLE whups_attributes_desc ADD COLUMN attribute_type VARCHAR(255) DEFAULT 'text'; +ALTER TABLE whups_attributes_desc ADD COLUMN attribute_params TEXT; +ALTER TABLE whups_attributes_desc ADD COLUMN attribute_required SMALLINT; diff --git a/whups/scripts/upgrades/2008-06-13_add_queue_emails.sql b/whups/scripts/upgrades/2008-06-13_add_queue_emails.sql new file mode 100644 index 000000000..325b18457 --- /dev/null +++ b/whups/scripts/upgrades/2008-06-13_add_queue_emails.sql @@ -0,0 +1 @@ +ALTER TABLE whups_queues ADD COLUMN queue_email VARCHAR(64); diff --git a/whups/scripts/upgrades/2008-06-17_fix_varchar_lengths.sql b/whups/scripts/upgrades/2008-06-17_fix_varchar_lengths.sql new file mode 100644 index 000000000..48f65288e --- /dev/null +++ b/whups/scripts/upgrades/2008-06-17_fix_varchar_lengths.sql @@ -0,0 +1,2 @@ +ALTER TABLE whups_shares CHANGE share_owner share_owner VARCHAR(255); +ALTER TABLE whups_shares_users CHANGE user_uid user_uid VARCHAR(255); \ No newline at end of file diff --git a/whups/scripts/upgrades/2008-06-24_add_replies.sql b/whups/scripts/upgrades/2008-06-24_add_replies.sql new file mode 100644 index 000000000..b3bb7bdf2 --- /dev/null +++ b/whups/scripts/upgrades/2008-06-24_add_replies.sql @@ -0,0 +1,10 @@ +CREATE TABLE whups_replies ( + type_id INT NOT NULL, + reply_id INT NOT NULL, + reply_name VARCHAR(255) NOT NULL, + reply_text TEXT NOT NULL, +-- + PRIMARY KEY (reply_id) +); +CREATE INDEX whups_reply_type_idx ON whups_replies (type_id); +CREATE INDEX whups_reply_name_idx ON whups_replies (reply_name); diff --git a/whups/scripts/upgrades/2008-07-10_add_query_slugs.sql b/whups/scripts/upgrades/2008-07-10_add_query_slugs.sql new file mode 100644 index 000000000..524762fcd --- /dev/null +++ b/whups/scripts/upgrades/2008-07-10_add_query_slugs.sql @@ -0,0 +1 @@ +ALTER TABLE whups_shares ADD COLUMN attribute_slug VARCHAR(255); diff --git a/whups/scripts/upgrades/2008-09-23_fix_group_uid.sql b/whups/scripts/upgrades/2008-09-23_fix_group_uid.sql new file mode 100644 index 000000000..410d9923c --- /dev/null +++ b/whups/scripts/upgrades/2008-09-23_fix_group_uid.sql @@ -0,0 +1,2 @@ +ALTER TABLE whups_shares_groups CHANGE group_uid group_uid VARCHAR(255); + diff --git a/whups/scripts/upgrades/2009-09-07_add_version_active.pgsql.sql b/whups/scripts/upgrades/2009-09-07_add_version_active.pgsql.sql new file mode 100644 index 000000000..6de2a2ffc --- /dev/null +++ b/whups/scripts/upgrades/2009-09-07_add_version_active.pgsql.sql @@ -0,0 +1,4 @@ +ALTER TABLE whups_versions ADD COLUMN version_active INT; +UPDATE whups_versions SET version_active = 1; +ALTER TABLE whups_versions ALTER COLUMN version_active SET DEFAULT 1; +CREATE INDEX whups_versions_active_idx ON whups_versions (version_active); diff --git a/whups/scripts/upgrades/2009-09-07_add_version_active.sql b/whups/scripts/upgrades/2009-09-07_add_version_active.sql new file mode 100644 index 000000000..c192a1f36 --- /dev/null +++ b/whups/scripts/upgrades/2009-09-07_add_version_active.sql @@ -0,0 +1,2 @@ +ALTER TABLE whups_versions ADD COLUMN version_active INT DEFAULT 1; +CREATE INDEX whups_versions_active_idx ON whups_versions (version_active); diff --git a/whups/scripts/upgrades/convert_datatree_shares_to_sql.php b/whups/scripts/upgrades/convert_datatree_shares_to_sql.php new file mode 100755 index 000000000..1ae3c1996 --- /dev/null +++ b/whups/scripts/upgrades/convert_datatree_shares_to_sql.php @@ -0,0 +1,176 @@ +#!/usr/bin/env php +init(); + +/* Grab what we need to steal the DB config */ +require_once HORDE_BASE . '/config/conf.php'; +require_once 'MDB2.php'; + +$config = $GLOBALS['conf']['sql']; +unset($config['charset']); +$db = MDB2::factory($config); +$db->setOption('seqcol_name', 'id'); + +$error_cnt = 0; +$delete_dt_data = false; +$answer = $cli->prompt('Do you want to keep your old datatree data or delete it?', array('Keep', 'Delete')); +if ($answer == 1) { + $delete_dt_data = true; +} +$answer = $cli->prompt(sprintf("Data will be copied into the new tables, and %s be deleted from the datatree.\n Is this what you want?", (($delete_dt_data) ? 'WILL' : 'WILL NOT')), array('y' => 'Yes', 'n' => 'No')); +if ($answer != 'y') { + exit; +} + +/* Get the share entries */ +$shares_result = $db->query('SELECT datatree_id, datatree_name FROM horde_datatree WHERE group_uid = \'horde.shares.whups\''); +if (is_a($shares_result, 'PEAR_Error')) { + die($shares_result->toString()); +} + +$query = $db->prepare('SELECT attribute_name, attribute_key, attribute_value FROM horde_datatree_attributes WHERE datatree_id = ?'); +$maxId = 0; +while ($row = $shares_result->fetchRow(MDB2_FETCHMODE_ASSOC)) { + $share_id = $row['datatree_id']; + $share_name = $row['datatree_name']; + $maxId = max($maxId, $share_id); + + /* Build an array to hold the new row data */ + $data = array('share_id' => $share_id, + 'share_name' => $share_name); + + $query_result = $query->execute($share_id); + $rows = $query_result->fetchAll(MDB2_FETCHMODE_ASSOC); + if (!count($rows)) { + continue; + } + $users = array(); + $groups = array(); + + foreach ($rows as $row) { + if ($row['attribute_name'] == 'perm_groups') { + /* Group table entry */ + $groups[] = array('share_id' => $data['share_id'], + 'group_uid' => $row['attribute_key'], + 'perm' => $row['attribute_value']); + } elseif ($row['attribute_name'] == 'perm_users') { + /* User table entry */ + $users[] = array('share_id' => $data['share_id'], + 'user_uid' => $row['attribute_key'], + 'perm' => $row['attribute_value']); + } else { + /* Everything else goes in the main share table */ + switch ($row['attribute_name']) { + case 'perm_creator': + case 'perm_default': + case 'perm_guest': + $data[$row['attribute_name']] = $row['attribute_value']; + break; + + case 'owner': + $data['share_owner'] = $row['attribute_value']; + break; + + case 'name': + // Note the key to the $data array is not related to + // the attribute_name field in the dt_attributes table. + $data['attribute_name'] = $row['attribute_value']; + break; + + case 'slug': + // Note the key to the $data array is not related to + // the attribute_name field in the dt_attributes table. + $data['attribute_slug'] = $row['attribute_value']; + break; + } + } + } + + /* Set flags */ + $data['share_flags'] = 0; + if (count($users)) { + $data['share_flags'] |= 1; + } + if (count($groups)) { + $data['share_flags'] |= 2; + } + + /* Insert the new data */ + $cli->message('Migrating share data for share_id: ' . $share_id, 'cli.message'); + $result = insertData('whups_shares', $data); + if (is_a($result, 'PEAR_Error')) { + ++$error_cnt; + $cli->message($result->toString(), 'cli.error'); + } + if (count($groups)) { + foreach ($groups as $group) { + $result = insertData('whups_shares_groups', $group); + if (is_a($result, 'PEAR_Error')) { + ++$error_cnt; + $cli->message($result->getMessage(), 'cli.error'); + } + } + } + if (count($users)) { + foreach ($users as $user) { + $result = insertData('whups_shares_users', $user); + if (is_a($result, 'PEAR_Error')) { + ++$error_cnt; + $cli->message($result->getMessage(), 'cli.error'); + } + } + } + + /* Delete the datatree data, but ONLY if it was requested */ + if ($delete_dt_data && !$error_cnt) { + $cli->message('DELETING datatree data for share_id: ' . $share_id, 'cli.message'); + $delete = $db->prepare('DELETE FROM horde_datatree_attributes WHERE datatree_id = ?', null, MDB2_PREPARE_MANIP); + $delete->execute(array($share_id)); + $delete->free(); + + $delete = $db->prepare('DELETE FROM horde_datatree WHERE datatree_id = ?', null, MDB2_PREPARE_MANIP); + $delete->execute(array($share_id)); + $delete->free(); + } + + /* Cleanup */ + $query_result->free(); + unset($row, $rows, $data, $groups, $users); +} + +while ($nextId = $db->nextId('whups_shares') < $maxId) { +} + +if ($error_cnt) { + $cli->message(sprintf("Encountered %u errors. No data was deleted from your database.", $error_cnt)); +} +echo "\nDone.\n"; + +/** + * Helper function + */ +function insertData($table, $data) +{ + $fields = array_keys($data); + $values = array_map(array($GLOBALS['db'], 'quote'), array_values($data)); + + return $GLOBALS['db']->exec('INSERT INTO ' . $table . ' (' . implode(', ', $fields) . ') VALUES (' . implode(', ', $values) . ')'); +} diff --git a/whups/search.php b/whups/search.php new file mode 100644 index 000000000..603040183 --- /dev/null +++ b/whups/search.php @@ -0,0 +1,181 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + * + * @author Chuck Hagenbuch + */ + +/** + * Construct the URL back to a supplied search + */ +function _getSearchUrl($vars) +{ + $qUrl = ''; + + $queue = (int)$vars->get('queue'); + $qUrl = Horde_Util::addParameter($qUrl, array('queue' => $queue)); + + $summary = $vars->get('summary'); + if ($summary) { + $qUrl = Horde_Util::addParameter($qUrl, 'summary', $summary); + } + + $states = $vars->get('states'); + if (is_array($states)) { + foreach ($states as $type => $state) { + if (is_array($state)) { + foreach ($state as $s) { + $qUrl = Horde_Util::addParameter($qUrl, "states[$type][]", $s); + } + } else { + $qUrl = Horde_Util::addParameter($qUrl, "states[$type]", $state); + } + } + } + + return substr($qUrl, 1); +} + +require_once dirname(__FILE__) . '/lib/base.php'; +require_once WHUPS_BASE . '/lib/Query.php'; +require_once WHUPS_BASE . '/lib/Forms/Search.php'; +require_once WHUPS_BASE . '/lib/View.php'; + +$renderer = new Horde_Form_Renderer(); +$beendone = false; +$vars = Horde_Variables::getDefaultVariables(); + +// Update sorting preferences. +if (Horde_Util::getFormData('sortby') !== null) { + $prefs->setValue('sortby', Horde_Util::getFormData('sortby')); +} +if (Horde_Util::getFormData('sortdir') !== null) { + $prefs->setValue('sortdir', Horde_Util::getFormData('sortdir')); +} + +$form = new SearchForm($vars); +$results = null; +if (($vars->get('formname') || $vars->get('summary') || $vars->get('states') || + Horde_Util::getFormData('haveSearch', false)) && $form->validate($vars, true)) { + + $form->getInfo($vars, $info); + if ($vars->get('submitbutton') == _("Save as Query")) { + require_once WHUPS_BASE . '/lib/Query.php'; + $qManager = new Whups_QueryManager(); + $whups_query = $qManager->newQuery(); + if (strlen($info['summary'])) { + $whups_query->insertCriterion('', CRITERION_SUMMARY, null, + OPERATOR_CI_SUBSTRING, $info['summary']); + } + if ($vars->get('queue')) { + $whups_query->insertCriterion('', CRITERION_QUEUE, null, + OPERATOR_EQUAL, $info['queue']); + } + foreach (array('ticket_timestamp', 'date_updated', 'date_resolved', 'date_assigned', 'date_due') as $date_field) { + if (!empty($info[$date_field]['from']) || !empty($info[$date_field]['to'])) { + $path = $whups_query->insertBranch('', QUERY_TYPE_AND); + break; + } + } + if (!empty($info['ticket_timestamp']['from'])) { + $whups_query->insertCriterion($path, CRITERION_TIMESTAMP, null, + OPERATOR_GREATER, $info['ticket_timestamp']['from']); + } + if (!empty($info['ticket_timestamp']['to'])) { + $whups_query->insertCriterion($path, CRITERION_TIMESTAMP, null, + OPERATOR_LESS, $info['ticket_timestamp']['to']); + } + if (!empty($info['date_updated']['from'])) { + $whups_query->insertCriterion($path, CRITERION_UPDATED, null, + OPERATOR_GREATER, $info['date_updated']['from']); + } + if (!empty($info['date_updated']['to'])) { + $whups_query->insertCriterion($path, CRITERION_UPDATED, null, + OPERATOR_LESS, $info['date_updated']['to']); + } + if (!empty($info['date_resolved']['from'])) { + $whups_query->insertCriterion($path, CRITERION_RESOLVED, null, + OPERATOR_GREATER, $info['date_resolved']['from']); + } + if (!empty($info['date_resolved']['to'])) { + $whups_query->insertCriterion($path, CRITERION_RESOLVED, null, + OPERATOR_LESS, $info['date_resolved']['to']); + } + if (!empty($info['date_assigned']['from'])) { + $whups_query->insertCriterion($path, CRITERION_ASSIGNED, null, + OPERATOR_GREATER, $info['date_assigned']['from']); + } + if (!empty($info['date_assigned']['to'])) { + $whups_query->insertCriterion($path, CRITERION_ASSIGNED, null, + OPERATOR_LESS, $info['date_assigned']['to']); + } + if (!empty($info['date_due']['from'])) { + $whups_query->insertCriterion($path, CRITERION_DUE, null, + OPERATOR_GREATER, $info['date_due']['from']); + } + if (!empty($info['date_due']['to'])) { + $whups_query->insertCriterion($path, CRITERION_DUE, null, + OPERATOR_LESS, $info['date_due']['to']); + } + if ($info['state_id']) { + $path = $whups_query->insertBranch('', QUERY_TYPE_OR); + foreach ($info['state_id'] as $state) { + $whups_query->insertCriterion($path, CRITERION_STATE, null, + OPERATOR_EQUAL, $state); + } + } + $_SESSION['whups']['query'] = serialize($whups_query); + header('Location: ' . Horde::applicationUrl(Horde_Util::addParameter('query/index.php', 'action', 'save'), true)); + exit; + } + $tickets = $whups_driver->getTicketsByProperties($info); + if (is_a($tickets, 'PEAR_Error')) { + $notification->push(sprintf(_("There was an error performing your search: %s"), $tickets->getMessage()), 'horde.error'); + } else { + Whups::sortTickets($tickets); + + $_SESSION['whups']['last_search'] = Horde::applicationUrl('search.php?' . _getSearchUrl($vars)); + $results = Whups_View::factory( + 'Results', + array('title' => _("Search Results"), + 'results' => $tickets, + 'values' => Whups::getSearchResultColumns(), + 'url' => $_SESSION['whups']['last_search'])); + $beendone = true; + } +} + +$title = _("Search"); +require WHUPS_TEMPLATES . '/common-header.inc'; +require WHUPS_TEMPLATES . '/menu.inc'; + +if ($results) { + $results->html(); + if (is_object($form)) { + $form->setTitle(_("Refine Search")); + $form->renderActive($renderer, $vars, 'search.php', 'get'); + echo '
'; + } +} + +if (!$beendone) { + // Front search page. + $form->setTitle(_("Ticket Search")); + $form->renderActive($renderer, $vars, 'search.php', 'get'); + echo '
'; +} + +$qManager = new Whups_QueryManager(); +$myqueries = Whups_View::factory( + 'SavedQueries', + array('title' => Horde_Auth::getAuth() ? _("My Queries") : _("Public Queries"), + 'results' => $qManager->listQueries(Horde_Auth::getAuth(), true))); +$myqueries->html(); + +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/whups/search/rss.php b/whups/search/rss.php new file mode 100644 index 000000000..46f88211e --- /dev/null +++ b/whups/search/rss.php @@ -0,0 +1,61 @@ + + */ + +require_once dirname(__FILE__) . '/../lib/base.php'; +require_once WHUPS_BASE . '/lib/Forms/Search.php'; +require_once 'Horde/Template.php'; + +$vars = Horde_Variables::getDefaultVariables(); +$limit = (int)$vars->get('limit'); +$form = new SearchForm($vars); + +if ($form->validate($vars, true)) { + $form->getInfo($vars, $info); + $tickets = $whups_driver->getTicketsByProperties($info); + if (is_a($tickets, 'PEAR_Error')) { + Horde::fatal($tickets, __FILE__, __LINE__); + } + Whups::sortTickets($tickets, 'date_updated', 'desc'); +} else { + Horde::fatal(_("Invalid search"), __FILE__, __LINE__); +} + +$count = 0; +$items = array(); +foreach (array_keys($tickets) as $i) { + if ($limit > 0 && $count++ == $limit) { + break; + } + $description = sprintf(_("Type: %s; State: %s"), + $tickets[$i]['type_name'], + $tickets[$i]['state_name']); + + $items[$i]['title'] = htmlspecialchars(sprintf('[%s] %s', + $tickets[$i]['id'], + $tickets[$i]['summary'])); + $items[$i]['description'] = htmlspecialchars($description); + $items[$i]['url'] = Whups::urlFor('ticket', $tickets[$i]['id'], true, -1); + $items[$i]['pubDate'] = htmlspecialchars(date('r', $tickets[$i]['timestamp'])); +} + +$template = new Horde_Template(); +$template->set('charset', Horde_Nls::getCharset()); +$template->set('xsl', $registry->get('themesuri') . '/feed-rss.xsl'); +$template->set('pubDate', htmlspecialchars(date('r'))); +$template->set('title', _("Search Results")); +$template->set('items', $items, true); +$template->set('url', Horde::applicationUrl('search.php')); +$template->set('rss_url', Horde::selfUrl()); +$template->set('description', _("Search Results")); + +$browser->downloadHeaders('search.rss', 'text/xml', true); +echo $template->fetch(WHUPS_TEMPLATES . '/rss/items.rss'); diff --git a/whups/templates/.htaccess b/whups/templates/.htaccess new file mode 100644 index 000000000..3a4288278 --- /dev/null +++ b/whups/templates/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/whups/templates/admin/mtmatrix.inc b/whups/templates/admin/mtmatrix.inc new file mode 100644 index 000000000..074e6a73f --- /dev/null +++ b/whups/templates/admin/mtmatrix.inc @@ -0,0 +1,31 @@ +
+ + + +

+ +

+ + + + + + $type): ?> + + + + + + $queue): $selected = $whups_driver->getTypes($mid); ?> + + + $type): ?> + + + + +
 
   />
+ +
" />
+ +
diff --git a/whups/templates/common-header.inc b/whups/templates/common-header.inc new file mode 100644 index 000000000..ea10839f1 --- /dev/null +++ b/whups/templates/common-header.inc @@ -0,0 +1,37 @@ + + + + + +' : '' ?> + +get('name'); +if (!empty($title)) $page_title .= ' :: ' . $title; +if (!empty($refresh_time) && !empty($refresh_url)) { + echo "\n"; +} + +Horde::includeScriptFiles(); + +if (isset($ticket)) { + echo ''; +} +if (isset($whups_query) && isset($whups_query->id)) { + echo ''; +} + +?> +<?php echo htmlspecialchars($page_title) ?> + + + + + +> diff --git a/whups/templates/menu.inc b/whups/templates/menu.inc new file mode 100644 index 000000000..52e3a444f --- /dev/null +++ b/whups/templates/menu.inc @@ -0,0 +1,11 @@ +
+ + +
+notify(array('listeners' => 'status')) ?> diff --git a/whups/templates/prefs/sourceselect.inc b/whups/templates/prefs/sourceselect.inc new file mode 100644 index 000000000..5e661f3cf --- /dev/null +++ b/whups/templates/prefs/sourceselect.inc @@ -0,0 +1,338 @@ +hasMethod('contacts/sources')) { + $selected = explode("\t", $prefs->getValue('search_sources')); + $readable = $registry->call('contacts/sources'); + $writeable = $registry->call('contacts/sources', true); + + $nbReadSources = count(array_keys($readable)); + $nbWriteSources = count(array_keys($writeable)); + + if (count($selected) == 1 && empty($selected[0])) { + $selected = array(); + } + + if ($nbReadSources == 1) { + // Only one source, no need to display the selection widget + $selected = array_keys($readable); + $readSelect = ''; + } + + $prefSelect = ''; + foreach ($selected as $source) { + if (!empty($readable[$source])) { + $prefSelect .= '\n"; + } + } + + $readSelect = ''; + if (!is_a($readable, 'PEAR_Error') && is_array($readable)) { + foreach (array_diff(array_keys($readable), $selected) as $source) { + $readSelect .= '\n"; + } + } + + if (!is_a($writeable, 'PEAR_Error') && is_array($writeable)) { + $writeSelect = '' . "\n"; + $writeSource = ''; + foreach ($writeable as $source => $name) { + $sel = $prefs->getValue('add_source') == $source ? ' selected="selected"' : ''; + $writeSelect .= '\n"; + $writeSource = $source; + } + } + + $selected_fields = array(); + $search_field_pref = $prefs->getValue('search_fields'); + if (!empty($search_field_pref)) { + $selected_fields = explode("\n", $prefs->getValue('search_fields')); + foreach ($selected_fields as $field) { + $field = trim($field); + if (!empty($field)) { + $tmp = explode("\t", $field); + if (count($tmp) > 1) { + $source = array_splice($tmp, 0, 1); + $selected_fields[$source[0]] = $tmp; + } + } + } + } + + $search_fields = array(); + if (!is_a($readable, 'PEAR_Error') && is_array($readable)) { + foreach (array_keys($readable) as $source) { + $search_fields[$source] = $registry->call('contacts/fields', $source); + } + } + + $js = "var searchFields = [];\n"; + $source_count = 0; + foreach ($search_fields as $source => $fields) { + $js .= "searchFields[$source_count] = [];\n"; + $js .= "searchFields[$source_count][0] = '$source';\n"; + + $field_count = 1; + foreach ($fields as $field) { + if ($field['search']) { + $marked = isset($selected_fields[$source]) && in_array($field['name'], $selected_fields[$source]) ? 'true' : 'false'; + $js .= "searchFields[$source_count][$field_count] = ['" . $field['name'] . "', '" . $field['label'] . "', $marked];\n"; + $field_count++; + } + } + + $source_count++; + } +} +?> + +isLocked('search_sources') && (!empty($readSelect) || !empty($prefSelect))): ?> + + +
+" /> + 1): ?> +
+ + + + + + + +
+ + + + getImageDir('horde')) ?> +
+ getImageDir('horde')) ?> +
+ + + + getImageDir('horde')) ?> +
+ getImageDir('horde')) ?> +
+ +
+ +
+ + +
+ + + + + +
+ + +
+ + + diff --git a/whups/templates/prevnext.inc b/whups/templates/prevnext.inc new file mode 100644 index 000000000..601e3b3c3 --- /dev/null +++ b/whups/templates/prevnext.inc @@ -0,0 +1,46 @@ +getId(), $_SESSION['whups']['tickets'])) === false) { + return; +} + +$prevnext_links = array(); +if ($this_ticket != 0) { + $prevnext_links[] = Horde::link( + Whups::urlFor('ticket', + $_SESSION['whups']['tickets'][0])) + . htmlspecialchars(_("<'; + $prevnext_links[] = Horde::link( + Whups::urlFor('ticket', + $_SESSION['whups']['tickets'][$this_ticket - 1])) + . htmlspecialchars(_("'; +} +if ($this_ticket + 1 != $list_length) { + $prevnext_links[] = Horde::link( + Whups::urlFor('ticket', + $_SESSION['whups']['tickets'][$this_ticket + 1])) + . htmlspecialchars(_("Next>")) . ''; + $prevnext_links[] = Horde::link( + Whups::urlFor('ticket', + $_SESSION['whups']['tickets'][$list_length - 1])) + . htmlspecialchars(_("Last>>")) . ''; +} +$label = _("Re_turn to Search Results"); +$ak = Horde::getAccessKey($label); +$label = Horde::highlightAccessKey($label, $ak); +?> +
+

+ + + [ ] + + [ ] + + +

+
diff --git a/whups/templates/renderer/query/edit.inc b/whups/templates/renderer/query/edit.inc new file mode 100644 index 000000000..4f512a022 --- /dev/null +++ b/whups/templates/renderer/query/edit.inc @@ -0,0 +1,7 @@ +
+ +
\ No newline at end of file diff --git a/whups/templates/renderer/query/render.inc b/whups/templates/renderer/query/render.inc new file mode 100644 index 000000000..015449165 --- /dev/null +++ b/whups/templates/renderer/query/render.inc @@ -0,0 +1,5 @@ + + /> + + + \ No newline at end of file diff --git a/whups/templates/renderer/querysetcurrenttype.inc b/whups/templates/renderer/querysetcurrenttype.inc new file mode 100644 index 000000000..3d9cbd0a9 --- /dev/null +++ b/whups/templates/renderer/querysetcurrenttype.inc @@ -0,0 +1,10 @@ + + + + + + + + +
" /> 
+ \ No newline at end of file diff --git a/whups/templates/reports/stats.inc b/whups/templates/reports/stats.inc new file mode 100644 index 000000000..672453f4e --- /dev/null +++ b/whups/templates/reports/stats.inc @@ -0,0 +1,18 @@ +

+ + + + + + + $label): + $time = $reporter->getTime($stat, 'type_name'); + if (is_a($time, 'PEAR_Error')): +?> + + + + + +
getMessage() ?> $type_time) echo $type . ': ' . sprintf(_("%s days"), $type_time) . '
' ?>
diff --git a/whups/templates/rss/items.rss b/whups/templates/rss/items.rss new file mode 100644 index 000000000..b95d83208 --- /dev/null +++ b/whups/templates/rss/items.rss @@ -0,0 +1,23 @@ +"?> +" type="text/xsl"?> + + + <tag:title /> + + + + + + + + + <tag:items.title /> + + + + + + + + + diff --git a/whups/templates/ticket/watchers.inc b/whups/templates/ticket/watchers.inc new file mode 100644 index 000000000..735ad4ff6 --- /dev/null +++ b/whups/templates/ticket/watchers.inc @@ -0,0 +1,7 @@ +

+
+ getListeners($id, false, false, false)), + count($whups_driver->getOwners($id))) ?> +
+
\ No newline at end of file diff --git a/whups/templates/view/results.inc b/whups/templates/view/results.inc new file mode 100755 index 000000000..e45934360 --- /dev/null +++ b/whups/templates/view/results.inc @@ -0,0 +1,103 @@ + + + + + + + +
_params['title'] . ' (' . count($this->_params['results']) . ')' ?>_params['extra']) ? $this->_params['extra'] : ' ' ?>
+_params['results'])): ?> + + +'; + foreach ($this->_params['values'] as $name => $value) { + if ($sortby == $value) { + $class = ' class="' . $sortdirclass . '"'; + $revurl = Horde_Util::addParameter($this->_params['url'], 'sortdir', ($sortdir ? 0 : 1)); + $sortlink = Horde::link($revurl, sprintf(_("Sort by %s"), $name), 'sortlink') . $name . ' '; + } else { + $class = ''; + $url = Horde_Util::addParameter($this->_params['url'], 'sortby', $value); + $sortlink = Horde::link($url, sprintf(_("Sort by %s"), $name), 'sortlink') . $name . ' '; + } + + echo ''; + } + echo ''; + + foreach ($this->_params['results'] as $info) { + echo ''; + + $url = Whups::urlFor('ticket', $info['id']); + + foreach ($this->_params['values'] as $name => $value) { + $thevalue = isset($info[$value]) ? $info[$value] : ''; + + if ($value == 'timestamp' || substr($value, 0, 5) == 'date_') { + $sortval = (strlen($thevalue) ? ' sortval="' . $thevalue . '"' : ''); + $thevalue = Horde_Form_Type_date::getFormattedTime($thevalue, $prefs->getValue('report_time_format'), false); + } elseif ($value == 'user_id_requester') { + $thevalue = Whups::formatUser($thevalue, false, true, true); + } elseif ($value == 'id' || $value == 'summary') { + $sortval = ''; + $thevalue = Horde::link($url) . '' . htmlspecialchars($thevalue) . ''; + } elseif ($value == 'owners') { + $sortval = ''; + if (!empty($info['owners'])) { + $owners = array(); + foreach ($thevalue as $owner) { + $owners[] = Whups::formatUser($owner, false); + } + $thevalue = implode(', ', $owners); + } + } + + echo '' . (strlen($thevalue) ? $thevalue : ' ') . ''; + } + + echo ''; + } +?> + +
' . $sortlink . '
+ + + + + +
+
+ + + + + " /> +
+
+ + +
\ No newline at end of file diff --git a/whups/templates/view/savedqueries.inc b/whups/templates/view/savedqueries.inc new file mode 100644 index 000000000..963e6c6c5 --- /dev/null +++ b/whups/templates/view/savedqueries.inc @@ -0,0 +1,10 @@ + +

+ _params['title']); ?> +

+ + +_params['results'] as $id => $result): ?> + + +
$id) : array('slug' => $result['slug']))) . htmlspecialchars($result['name']) ?>
diff --git a/whups/themes/feed-rss.xsl b/whups/themes/feed-rss.xsl new file mode 100644 index 000000000..211493e0c --- /dev/null +++ b/whups/themes/feed-rss.xsl @@ -0,0 +1,79 @@ + + + + + + + + + + + <xsl:value-of select="/rss/channel/title"/> + + + + +

+ You're viewing an XML content feed which is + intended to be viewed within a feed aggregator. +

+ +

Subscribe to

+ +

+ Subscribe now in your favorite RSS aggregator: +

+ + + + + +

+

Preview

+

+ + + + + +
+ + + +

+ + + +

+
+ +
diff --git a/whups/themes/graphics/admin.png b/whups/themes/graphics/admin.png new file mode 100644 index 0000000000000000000000000000000000000000..502e04cdc97142aa49d313ba06eda73a0fe22545 GIT binary patch literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMfoB*E?*Z=?j1DSztp7HrXxl#;a zq71W?7^WyNG|Mu$>1!;OXGjxcT&2vsTA5|JBFl0m)-7u6%`$9j)i^gAi5|0(nxHLq z)=_b$q0~K3jk7MQF9URU+Ns?4*7+W4yvRcFRglrsK%>7gR)6EHf5!qzo9{7J?;B>Arg|Y2iwIC8Zfk7{J(kos=b;?{U83lKPGr`^Va%bSRWPD+q_m_-yM^$?yB8?@!XqgRc-cl(!~)+O`lAhae2XArY8n= s=N_$?6z;J7qRwKGRZko;foAPtG%#V4Oh2kN3urror>mdKI;Vst0Gye8r2qf` literal 0 HcmV?d00001 diff --git a/whups/themes/graphics/az.png b/whups/themes/graphics/az.png new file mode 100644 index 0000000000000000000000000000000000000000..2b646f94cef257aa5b1cdfafae6cb1ff73fcc291 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4^3?%3Nf7cA+1o(uw?qU#2OG^XtdbXZ%0#b}6 zL4Lsu4$p3Y#H2i3978ywlM@&k+1S+F7&+1s8xt7a4A>YMMAH}^vVU9r2dIj{)78&q Iol`;+0JRbu(EtDd literal 0 HcmV?d00001 diff --git a/whups/themes/graphics/create.png b/whups/themes/graphics/create.png new file mode 100644 index 0000000000000000000000000000000000000000..51e47130b38b50bcb47ba136580569e8aa0c50b0 GIT binary patch literal 366 zcmV-!0g?WRP)iuL0V$*aEUN=9tOPHp1vIq>Cxiwxt_eM| z6-LM!Hjx%i&mlXS8d%^cQO_k_>n&X2EMx34V&^h$|2l2`I&S|vZ23B9@HlGoI&1Sf zasNJT_B=U)ASzxMIC&vIhb1Xi86Q^)O}ZpRqakSdGjRVrE@&D5)N=Bu760(ozZg|H z00001bW%=J06^y0W&i*HfJsC_R2Ufr!39<%K>$Fpe0YPqFFv>|Qr-8z8wmgb00aP3 z07QMA6oB;q{cNp*sD8f>Rs+i7T?jq6+nTyL`Al++H+~ zKzGaM)4ggQ6}ou3Jlt=d=P^dm(a!E>V~lB<0@X@2rV0=mQvgC0f4(pY8p@OR;{X5v M07*qoM6N<$g2P0LA^-pY literal 0 HcmV?d00001 diff --git a/whups/themes/graphics/favicon.ico b/whups/themes/graphics/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..887e1235cf1c7e0ddb0d87a7a40084b775867ec2 GIT binary patch literal 1150 zcmZQzU<5(|0R}M0U}0bo1F|%L7$l?s#Ef7P$Nx3vqq`nQ?Eg#{chEp=MmP`hRSh)c;u(#Ov2r z7yAF|lo2ottbo|&|I1^#|HB*!>xcOP4=Thk8r?5A)*spBBgn4+C`n zgZLo*FmVtYWCn;%kCFuX$M}D9F5CY^SHkWa_5b_J zMV_tb%+z-k5oD;F?)ciacU9BPgAB#Na|OQCHT+AEF;G9-@g~h}TTtG{*OLudcLcXx z&Zy+c)qQf}nMVVAPL6%f8kVacd;;=q&V23P%&NLD?#6jGu3gIYJ3!9xboFyt=akR{ E0DOEEaktacgatBi{i9p2Jb6BtHL_-y?E_<@-+o z)i9p~^$CjC%0!m3WM9|R2-d36zXdH{NN zc8rG@l#c+Gk`|Sf7Kw<6i;0SxmK%_cj;NvtvaJldvjDiZ0J^jiz_|d-!~)aI6Scs_ zvc=A|%hkNh(Bj%K>ER9N;S$Eu*Syp6%Gcb;*yZ!<8T9NP`tv0D@=X8tBmej<|M)Tg z_%r|bH~;uK|M)%s_&@*nLI3ze@bvQP`1s`i|NH;-`v3m`000wexefpT00DGTPE!Ct z=GbNc005IoL_t&-83n-wLIXh*1+cJC7^Ju^?(*^C{_cM%5&!`Jk^m5r{p|!m&AN^gU9!e^M&J^8g78xzK$N+$=PXD2bq5xJ>R$MtEw7; zypLWk+V59Y4M8qH?+#l1eg9Mk$O+cnHJ<)aDa(aLOEj=KBmL34m@((L5 V6hB~H#@_${002ovPDHLkV1iw$zyAOL literal 0 HcmV?d00001 diff --git a/whups/themes/graphics/whups.png b/whups/themes/graphics/whups.png new file mode 100644 index 0000000000000000000000000000000000000000..1251ddafec33907fce42e741a92fbc3a2354407b GIT binary patch literal 352 zcmV-m0iXVfP)Q#^pNO{X5$I zI@tR>+x2v&2`IzI_s{QM0UGY^AFnn8(8bgEa^i)=%W9=Qq(u(JWYNwrWtb6iNXdC)5JnjzyOGW5U1t#% zyK2%*!%WOHwJ5_>j#0e3nAxj$HHlh%xaN88ndiRl`*%GS04$D@XD=U~-8_-$?$PQN z;7+>g|9*3*5Df?z2Ww#`0gpDf&X^KkD?yV>6#uF7_x~E4Hcjl|CH=15Rc;1Bv+HW~ z-E&I+e7>Gv!!?H75EL9~AnYR6Jvs=(-pVAg!EbZ{Pw5O^tur#T3DC~BA+;z1;wa8d zvj#M$$i2lC!X{$fhdc|_lpKBU>QOS92iARCMD+Thd8`sn#i!s{U=N2pCOx%-*q}N0 z*=bIrr;>-p@lxbImm?CTA=Qa1uKIIW}3~WU9xrDp$v#eTtjG60E!0V5Z^3Dn8FJ|br;Y# z5Qk+thuzI-OtuHZH=7OH#1qDo@eJ6+TKx&o?Ez=&no5eYp%h3Sdm~WcgR1TXOtfBv zVYwTI&m~x!>4D;*5aLw(1|%O$WD@{VEX7WqAsj$Z!;#Vfk}U9uEM{Qf z`T)X=PHRkN00mV`Tq8EaktF=y=rL#{&x60PyUo;_tHFH|fl8O~4k{vu)PJ&|v3r#HK6!O1`B zsy}C|=D8NWcywE?rp6|2V)3!4BU+3JpCj86SIqn=mb^zIInI9BzW3Sh{|X;y>^Qb9 zw?97Mdg<2h|MXgJcxfswz2ahG=35-4@chnVozr`RxX$pbHC?sp(q)s_>Ao&oHeXX} qX^>E!A^F)xd1(n-!=rrhJ&ckM-0}rNB3*$_W$<+Mb6Mw<&;$U~XKp_L literal 0 HcmV?d00001 diff --git a/whups/themes/silver/graphics/create.png b/whups/themes/silver/graphics/create.png new file mode 100644 index 0000000000000000000000000000000000000000..ced78174740958c5e11583682dac645197c09e78 GIT binary patch literal 806 zcmV+>1KIqEP)`=&gfiynuLKNZXG^E&{Pmo=c@q3lv(pO2HUs^S=b~RK*#7&0iej;CY0$=&!}s zlPnn>f-S)ydndO_sP#!8nj+R?CkfAP%XVTzFwO9TP1xb;uc#KsVI@l}Q45e-dhki*R$I z2-9muy!q^gVO|BPfeBvOF`d^nvNfldX*DM?__P--&T^EHL~V~MQP7!$$#>nDeBT4g zbPGxt7D_0BtwZmh)yP<8H860+R0_4Z46G^!QX3=jcx?dt&Gptu5gh%A!qs$BNJZe! zpi8Gf>I6~l|Lc}p0gYR}o2;3W`|jYN2NngaMkxJ}tqVn$`{Hh8DpL5+419Tj?8J72 k;<$%Q*reM26FaHB-$J2 zG9~LR2_qs3G>ORW8A9*wLk0N|L=Oc?$vORJWnc(Fg3io8|C#^)zW+9d0f@tkQov^r z!ifMD04zg66Iy2Ns9-Jn{&g9qS*@z-(M7oC<08)MwX8M;m%zH+?gVw)nvY8BUgq(5 zmdwXDd{(!1=Nu=6Srevd26bIONN=9zYUg2&{5+eF;pgmxQkti>H*oV=FOv?{GIFJv znQyOiZRjkc!IWDVuTswn-IZ45Od-~9$FnuYjZ-$2eD;nHa3T7`i(J3g!9@&Xw40M_ z$76eWf7K7HFW2TtlC%@+JAnOPr2{8p`PGfZQI)7+j9E{Mvd4|#%Yw_4GxfhM%i3&n zWm)!n!qwb()Wyx0eX+dqzN+tDuQ$noajRQOqoO8dYiZQB3+-~bBz>{3RjDbP(r&jg zfze8GN1Yh4my>)wB0ss*#EkUR8=9u&I5F76Lb|@-z2K9|)sy(`;+=lFGGkcygorw& zrW%I*mfINY-$e>mOvLgJMwpi3??FGdCoiy){4J#G2s2;zGpV-h3#llcP;-_(L4QE- zv4?mqlr|*hEoLo5zki;~jXQqfET*-=$n0E>?V2$RBg4*VYeGn>w0px(`NWSHk^%5ZmHwutA4Izhu$IQlu}pm z)qLK|wX{H=lQ-8MXOSp1Zf9yom|?5}fx+{#Tq(+$^aYZe=i>ZrquHSsG&B9N(~h%@ wbH4wNJx>Mrgz_O71)~dzB;Y@z10Z1xVC*RX-Vkxk${Wt6aWAK literal 0 HcmV?d00001 diff --git a/whups/themes/silver/graphics/query.png b/whups/themes/silver/graphics/query.png new file mode 100644 index 0000000000000000000000000000000000000000..9680afd12f8fadf5b83f827240978446af5962b6 GIT binary patch literal 634 zcmV-=0)_pFP)3kp_oQM4NsQ6$aEKj6mx0hg})10sT;E2V;K zUHNY7qG&TIJ`gc&M*EmdrgP_>>zSLTO=}7j2M*`nnfbo+_|8cvrSLzG(R^{I&fHg| z3Nfi70*Jk=pS3m4lD_qhO!oanz~FpWe?InrjDM6H7D@P(w+NOTuL0gfPQ>)8EiKPO>RV|@%G(EApK7|ni6$Or7s}#zN5D2fFuoW z?SUp(cysDe%D^FVRe!-fK+o2zXp zH&*H~_``&05AX{CqjQ9Pq)Pw`p&~+e-<5=lgjH9A;4MsYR*p|Xp3o{VtL6Q8vD&1u z_TBwgt>E(`Zp(h8_8f=r&cr~-uy!|BC|zGKq17aQeR}wL=f1PUhPjus5Lo&7j={xc zCLhQZ=E~bn;<}`gh7Bu?>ih@P+*yw5-^u2k8!el-HG?lt4o$V&*`tbh^4#JtCOgRB z@^-thiGaZ!P|20J4^o7;v)78_|FldDe9Z$i&;9^|y&bKi-n=y{JsccrzVF2T076QP UWao5~B>(^b07*qoM6N<$g7%3ha{vGU literal 0 HcmV?d00001 diff --git a/whups/themes/silver/graphics/reports.png b/whups/themes/silver/graphics/reports.png new file mode 100644 index 0000000000000000000000000000000000000000..fe00fa050a833fade14de445c554b21ff2266632 GIT binary patch literal 918 zcmV;H18Mw;P) z)5~v^RUF3g=bd?{7w4U(okA~6ODQu&AyTU)qaihDP=g^ZV5Kfhx?#trq@YHED?=nm z8X{F=Fli(%K&l}`AXu0%WX=(eO^E>Cfm*WCSBpMff|A0@P&0}b- z@vu|b_butF9--78p(rVogpgvCg!(S1p8cR&zh3^)8!?W*Wjq8aNzH zSpmoJP*=GgH>dKrnER?fW_*%Wj@zr0*Zui{_|PN3iC>TI+Zak*tPO9#w7Q3JJCC3a zV5jvo&RzX%snXq-j2JJCCKFaPcWV{5XYKvx54R5jK;Xmiqfw#6K%KP_V|Ed#`y;sT ztRPX@g88|-V2s`i>)nU8)Kx_5YbwyzXn{x#yz=&N6aWHTQcq{~E~`XS$nyzsS73cG z3QL6WP3FRQEO`2wAm>1$IgG-LK(wkHZA}qNaO(LBV0(k1a%AlSlq*pcu+U!h1V)QL zgVw}BN1A;dn&m(!J1{?U7yV-=mn2ht$Ch6^GqI93 ze+WNbT38m_O&H+JhxUC)WkQh%K3KqM@|PRK9ha^TE=rQe56?E8-@O!mOY_{s^E~~+ zrER?s(gWuj#5~m2gfP8eLrE$<02qDwZRYF#Q&Vl1x2yzvG^f0?x!E#`zrkO#K}6uf z191&uyJ(I-hT*FvIFc>{fH_#|IIB4w*PKo}@s=_t-U8qAV2))0#vr+bkRFJD&g~Ht zCg+jKWo*w;eE?u;o0&f2Z>pWiGPkB0;zk~!#wPeSgJuLNI7oO%#KI^Pr%}w^geyh& z?9h=#00@LWKC|erv2Np98pst8YG{N{93Bxo5>O($wzBNzVh zg|)61U)Dl=s^Xhk-THM1{5S%=@JIV|JKj0xDM_xYzV}>pVm|e*{jX;NfaR@ES)NqA sTB$w0a+2D0+Z&ca0*O=8=#zfKm;e9(07*qoM6N<$f`+80v;Y7A literal 0 HcmV?d00001 diff --git a/whups/themes/silver/graphics/search.png b/whups/themes/silver/graphics/search.png new file mode 100644 index 0000000000000000000000000000000000000000..4e4ae99db3b90008582444b1f28cda3bac8b3fdf GIT binary patch literal 831 zcmV-F1Hk-=P)R5;6h zQ(H)rVHp0Ui*5qxLLv-xnupEQbesEkw0WW^k63DX$b|&VG{y`jq#?aGZHD@9w zJLIZE0@|lkG#m+miBT&VnyN-}6 zw9jqtv` zlgUq0Q544c8(ae&UR$8ps&snq6^bPY3v3xAmMW74Di$h~GCH6E3TaYs2#6A<7K*gC z777H71_Wa;(dfp+g-drPCSWu)#PInZi72LJ;o?i~$-U=y&UbQ89Dul3%3P+Axkzc* zbH-y;QF=hR{qLItf%ci2_&e5wNo0gnVatG?ul6Zw=o$I9Ljfn*ic3`U?>IfEim3g{ zujU&$-hy6wn;w(xme|zJm;lWJxtTFfM)q0`kX!Vu0+d${$}LCddK1<^htTe-fUYL3 zB`SdNsZD>RgvLj1<^@h6_+cDRK2Brcr2~>%$*5S)hyV33PV^teac3%|4lz@8p4?)5 z?t5o^?q+%^%)Yygo~I^U4VR!bTnWuE35hcWrfCDR3q+sxJ79e7Fg`&)RCqLA^2^y^ z0laVfadW90_Fz8Brm|r47sB^u1VgI>kanj)Z4`zMSfHlm8>CwXa$JVM`$2RrmZB-3 zN10m-!;BvH*Br3V8t`DH7m`jf#2upVDXl{5ff18_pzCPK1Zu$$CKKvd8FGeFf)+K<|x33pc7P&S#3GZT4mEw;nr(Ze*F z3&*?-4U-lm*#tber5 z%S_ceqB`b3ko6r~BbvDwdohTvP(3a(pq{x#T$yQsu#OKwEe}KuH^Mh@nxg_(Nw136 zq#a^3xNBke)In+!?qk3%4wB69{pF`Tzg`07*qoM6N<$ Eg55P&8UO$Q literal 0 HcmV?d00001 diff --git a/whups/themes/silver/graphics/za.png b/whups/themes/silver/graphics/za.png new file mode 100644 index 0000000000000000000000000000000000000000..32e427a6da72a9ffc2fac08683fdff90e358d40c GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VEX7WqAsj$Z!;#Vfk}U9uEM{Qf z`T)X=PHRkN00mV`Tq8EaktF=y=rTdrmY377eXI{#!9YG-}f>6w@GR@Y@uf4YY#2g~+NqEBX* zN(W1NOjQf!>pyOAa$D}7QxDY{Wf~5t$B%E(IURZFvSs+Q%5x^ZJ&!d!%^OnW@0H#?c_uD3GVNZq=dLZeulFl7 qEX(wp^iHuQ`~LU3_mlU>eqg)S9g&dBbtDt$R0dC1KbLh*2~7a`zi>hT literal 0 HcmV?d00001 diff --git a/whups/themes/silver/screen.css b/whups/themes/silver/screen.css new file mode 100644 index 000000000..9f3730a22 --- /dev/null +++ b/whups/themes/silver/screen.css @@ -0,0 +1,10 @@ +/** + * $Horde: whups/themes/silver/screen.css,v 1.1 2008/03/27 17:45:34 jan Exp $ + */ + +table.tickets th.sortup { + background: #ccc url("graphics/za.png") center left no-repeat; +} +table.tickets th.sortdown { + background: #ccc url("graphics/az.png") center left no-repeat; +} diff --git a/whups/themes/silver/themed_graphics b/whups/themes/silver/themed_graphics new file mode 100644 index 000000000..e69de29bb diff --git a/whups/ticket/.htaccess b/whups/ticket/.htaccess new file mode 100644 index 000000000..34a1d9f55 --- /dev/null +++ b/whups/ticket/.htaccess @@ -0,0 +1,8 @@ + + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^([0-9]+)$ index.php?id=$1 [QSA,L] + RewriteRule ^([0-9]+)/rss/?$ rss.php?id=$1 [QSA,L] + RewriteRule ^([0-9]+)/([a-z]+)(\.php)?$ $2.php?id=$1 [QSA,L] + diff --git a/whups/ticket/comment.php b/whups/ticket/comment.php new file mode 100644 index 000000000..d3e894937 --- /dev/null +++ b/whups/ticket/comment.php @@ -0,0 +1,94 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + */ + +@define('WHUPS_BASE', dirname(__FILE__) . '/..'); +require_once WHUPS_BASE . '/lib/base.php'; +require_once WHUPS_BASE . '/lib/Ticket.php'; +require_once WHUPS_BASE . '/lib/Ticket.php'; +require_once WHUPS_BASE . '/lib/Forms/AddComment.php'; + +$ticket = Whups::getCurrentTicket(); +$vars = Horde_Variables::getDefaultVariables(); +$vars->set('id', $id = $ticket->getId()); +foreach ($ticket->getDetails() as $varname => $value) { + $vars->add($varname, $value); +} +if ($tid = $vars->get('transaction')) { + $history = Whups::permissionsFilter($whups_driver->getHistory($ticket->getId()), + 'comment', Horde_Perms::READ); + if (!empty($history[$tid]['comment'])) { + $private = false; + foreach ($history[$tid]['changes'] as $change) { + if (!empty($change['private'])) { + if (!$GLOBALS['perms']->hasPermission('whups:comments:' . $change['value'], Horde_Auth::getAuth(), Horde_Perms::READ)) { + $private = true; + break; + } + } + } + + if (!$private) { + $flowed = new Horde_Text_Flowed(preg_replace("/\s*\n/U", "\n", $history[$tid]['comment'])); + $vars->set('newcomment', $flowed->toFlowed(true)); + } + } +} + +$title = sprintf(_("Comment on %s"), '[#' . $id . '] ' . $ticket->get('summary')); +$commentForm = new AddCommentForm($vars, $title); +if ($vars->get('formname') == 'addcommentform' && $commentForm->validate($vars)) { + $commentForm->getInfo($vars, $info); + + // Add comment. + if (!empty($info['newcomment'])) { + $ticket->change('comment', $info['newcomment']); + } + + if (!empty($info['user_email'])) { + $ticket->change('comment-email', $info['user_email']); + } + + // Add attachment if one was uploaded. + if (!empty($info['newattachment']['name'])) { + $ticket->change('attachment', array('name' => $info['newattachment']['name'], + 'tmp_name' => $info['newattachment']['tmp_name'])); + } + + // Add watch + if (!empty($info['add_watch'])) { + $whups_driver->addListener($ticket->getId(), '**' . $info['user_email']); + } + + // If there was a new comment and permissions were specified on + // it, set them. + if (!empty($info['group'])) { + $ticket->change('comment-perms', $info['group']); + } + + $result = $ticket->commit(); + if (is_a($result, 'PEAR_Error')) { + $notification->push($result, 'horde.error'); + } else { + $notification->push(_("Comment added"), 'horde.success'); + $ticket->show(); + } +} + +require WHUPS_TEMPLATES . '/common-header.inc'; +require WHUPS_TEMPLATES . '/menu.inc'; +require WHUPS_TEMPLATES . '/prevnext.inc'; + +$tabs = Whups::getTicketTabs($vars, $id); +echo $tabs->render('comment'); + +$commentForm->renderActive(new Horde_Form_Renderer(), $vars, 'comment.php', 'post'); + +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/whups/ticket/create.php b/whups/ticket/create.php new file mode 100644 index 000000000..62a356a8f --- /dev/null +++ b/whups/ticket/create.php @@ -0,0 +1,187 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + */ + +@define('WHUPS_BASE', dirname(__FILE__) . '/..'); +require_once WHUPS_BASE . '/lib/base.php'; +require_once WHUPS_BASE . '/lib/Forms/CreateTicket.php'; +require_once WHUPS_BASE . '/lib/Forms/VarRenderer.php'; +require_once WHUPS_BASE . '/lib/Ticket.php'; + +$empty = ''; +$beendone = 0; +$wereerrors = 0; + +$vars = Horde_Variables::getDefaultVariables($empty); +$formname = $vars->get('formname'); + +$form1 = new CreateStep1Form($vars); +$form2 = new CreateStep2Form($vars); +$form3 = new CreateStep3Form($vars); +$form4 = new CreateStep4Form($vars); +$r = new Horde_Form_Renderer( + array('varrenderer_driver' => 'whups')); + +$valid4 = $form4->validate($vars) && + $vars->get('formname') == 'createstep4form'; +$valid3 = $form3->validate($vars, true); +$valid2 = $form2->validate($vars, !$form1->isSubmitted()); +$valid1 = $form1->validate($vars, true); +$doAssignForm = Horde_Auth::getAuth() && + $whups_driver->isCategory('assigned', $vars->get('state')); + +if ($valid1 && $valid2 && $valid3 && + // Don't validate the assignment form if it isn't being used. + (!$doAssignForm || $valid4)) { + + $form1->getInfo($vars, $info); + $form2->getInfo($vars, $info); + $form3->getInfo($vars, $info); + if ($doAssignForm) { + $form4->getInfo($vars, $info); + } + + $ticket = Whups_Ticket::newTicket($info, Horde_Auth::getAuth()); + if (is_a($ticket, 'PEAR_Error')) { + Horde::logMessage($ticket, __FILE__, __LINE__, PEAR_LOG_ERR); + $notification->push(sprintf(_("Adding your ticket failed: %s."), + $ticket->getMessage()), + 'horde.error'); + header('Location: ' . Horde::applicationUrl('ticket/create.php', true)); + } else { + $notification->push(sprintf(_("Your ticket ID is %s. An appropriate person has been notified of this request."), $ticket->getId()), 'horde.success'); + $ticket->show(); + } + exit; +} + +// Start the page. +$title = _("New Ticket"); +require WHUPS_TEMPLATES . '/common-header.inc'; +require WHUPS_TEMPLATES . '/menu.inc'; + +if ($valid3 && $valid2 && $valid1) { + $form4->open($r, $vars, 'create.php', 'post'); + + // Preserve previous forms. + $form1->preserve($vars); + $r->_name = $form1->getName(); + $r->beginInactive($form1->getTitle()); + $r->renderFormInactive($form1, $vars); + $r->end(); + echo '
'; + + $form2->preserve($vars); + $r->_name = $form2->getName(); + $r->beginInactive($form2->getTitle()); + $r->renderFormInactive($form2, $vars); + $r->end(); + echo '
'; + + $form3->preserve($vars); + $r->_name = $form3->getName(); + $r->beginInactive($form3->getTitle()); + $r->renderFormInactive($form3, $vars); + $r->end(); + echo '
'; + + // Preserve an uploaded file if there was one. + $form3->getInfo($vars, $info); + if (!empty($info['newattachment']['name'])) { + $file_name = $info['newattachment']['name']; + + $tmp_file_path = tempnam(Horde::getTempDir(), 'att'); + if (move_uploaded_file($info['newattachment']['tmp_name'], + $tmp_file_path)) { + $_SESSION['whups']['deferred_attachment'][$file_name] = + $tmp_file_path; + $vars->set('deferred_attachment', $file_name); + $form3->preserveVarByPost($vars, 'deferred_attachment'); + } + } + + // Render the 4th stage form. + if ($formname != 'createstep4form') { + $form4->clearValidation(); + } + $r->_name = $form4->getName(); + $r->beginActive($form4->getTitle()); + $r->renderFormActive($form4, $vars); + $r->submit(); + $r->end(); + $form3->close($r); + + $beendone = 1; +} elseif ($valid2 && $valid1) { + $form3->open($r, $vars, 'create.php', 'post'); + + // Render the stage 1 form readonly. + $form1->preserve($vars); + $r->beginInactive($form1->getTitle()); + $r->renderFormInactive($form1, $vars); + $r->end(); + echo '
'; + + // Render the stage 2 form readonly. + $form2->preserve($vars); + $r->beginInactive($form2->getTitle()); + $r->renderFormInactive($form2, $vars); + $r->end(); + echo '
'; + + // Render the third stage form. + if ($formname != 'createstep3form') { + $form3->clearValidation(); + } + $r->beginActive($form3->getTitle()); + $r->renderFormActive($form3, $vars); + $r->submit(_("Submit"), true); + $r->end(); + + $form3->close($r); + + $beendone = 1; +} else { + if ($valid1) { + $form2->open($r, $vars, 'create.php', 'post'); + + // Render the original form readonly. + $form1->preserve($vars); + $r->beginInactive($form1->getTitle()); + $r->renderFormInactive($form1, $vars); + $r->end(); + echo '
'; + + // Render the second stage form. + if ($formname != 'createstep2form') { + $form2->clearValidation(); + } + $r->beginActive($form2->getTitle()); + $r->renderFormActive($form2, $vars); + $r->submit(); + $r->end(); + + $form2->close($r); + + $beendone = 1; + } else { + if ($formname != 'createstep1form') { + $form1->clearValidation(); + } + $form1->open($r, $vars, 'create.php', 'post'); + $r->beginActive($form1->getTitle()); + $r->renderFormActive($form1, $vars); + $r->submit(); + $r->end(); + $form1->close($r); + } +} + +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/whups/ticket/delete.php b/whups/ticket/delete.php new file mode 100644 index 000000000..0f1f2813e --- /dev/null +++ b/whups/ticket/delete.php @@ -0,0 +1,100 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + */ + +@define('WHUPS_BASE', dirname(__FILE__) . '/..'); +require_once WHUPS_BASE . '/lib/base.php'; +require_once WHUPS_BASE . '/lib/Ticket.php'; + +class DeleteTicketForm extends Horde_Form { + + var $_queue; + + function DeleteTicketForm(&$vars, $title = '') + { + parent::Horde_Form($vars, $title, 'deleteticketform'); + + $info = $GLOBALS['whups_driver']->getTicketDetails($vars->get('id')); + $this->_queue = $info['queue']; + $this->addHidden('', 'id', 'int', true, true); + $summary = &$this->addVariable(_("Summary"), 'summary', 'text', false, + true); + $summary->setDefault($info['summary']); + $yesno = array(0 => _("No"), 1 => _("Yes")); + $this->addVariable(_("Really delete this ticket? It will NOT be archived, and will be gone forever."), 'yesno', 'enum', true, false, null, array($yesno)); + } + + function validate(&$vars) + { + if (!Whups::hasPermission($this->_queue, 'queue', Horde_Perms::DELETE)) { + $this->setError('yesno', _("Permission Denied.")); + } + + return parent::validate($vars); + } + +} + +$ticket = Whups::getCurrentTicket(); +$details = $ticket->getDetails(); +if (!Whups::hasPermission($details['queue'], 'queue', Horde_Perms::DELETE)) { + $notification->push(_("Permission Denied"), 'horde.error'); + header('Location: ' . Horde::applicationUrl($prefs->getValue('whups_default_view') . '.php', true)); + exit; +} + +$vars = Horde_Variables::getDefaultVariables(); +$vars->set('id', $id = $ticket->getId()); +foreach ($details as $varname => $value) { + $vars->add($varname, $value); +} +$title = sprintf(_("Delete %s?"), '[#' . $id . '] ' . $ticket->get('summary')); +$deleteform = new DeleteTicketForm($vars, $title); + +if ($vars->get('formname') == 'deleteticketform') { + if ($deleteform->validate($vars)) { + if ($vars->get('yesno') == 1) { + $deleteform->getInfo($vars, $info); + $result = $whups_driver->deleteTicket($info); + + if (!is_a($result, 'PEAR_Error')) { + $notification->push(sprintf(_("Ticket %d has been deleted."), $info['id']), 'horde.success'); + header('Location: ' . Horde::applicationUrl($prefs->getValue('whups_default_view') . '.php', true)); + exit; + } else { + $notification->push(_("There was an error deleting the ticket:") . ' ' . $result->getMessage(), 'horde.error'); + } + } else { + $notification->push(_("The ticket was not deleted."), 'horde.message'); + } + } +} + +require WHUPS_TEMPLATES . '/common-header.inc'; +require WHUPS_TEMPLATES . '/menu.inc'; +require WHUPS_TEMPLATES . '/prevnext.inc'; + +$tabs = Whups::getTicketTabs($vars, $id); +echo $tabs->render('delete'); + +$deleteform->renderActive($deleteform->getRenderer(), $vars, 'delete.php', 'post'); +echo '
'; + +$form = new TicketDetailsForm($vars, $ticket); +$ticket->setDetails($vars); + +$r = $form->getRenderer(); +$r->beginInactive($title); +$r->renderFormInactive($form, $vars); +$r->end(); + +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/whups/ticket/deleteAttachment.php b/whups/ticket/deleteAttachment.php new file mode 100644 index 000000000..c5a2610f0 --- /dev/null +++ b/whups/ticket/deleteAttachment.php @@ -0,0 +1,38 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + */ + +@define('WHUPS_BASE', dirname(__FILE__) . '/..'); +require_once WHUPS_BASE . '/lib/base.php'; +require_once WHUPS_BASE . '/lib/Ticket.php'; + +$ticket = Whups::getCurrentTicket(); +if (!Whups::hasPermission($ticket->get('queue'), 'queue', Horde_Perms::DELETE)) { + $notification->push(_("Permission Denied"), 'horde.error'); + header('Location: ' . Horde::applicationUrl($prefs->getValue('whups_default_view') . '.php', true)); + exit; +} + +$file = basename(Horde_Util::getFormData('file')); +$ticket->change('delete-attachment', $file); +$result = $ticket->commit(); +if (is_a($result, 'PEAR_Error')) { + $notification->push($result, 'horde.error'); +} else { + $notification->push(sprintf(_("Attachment %s deleted."), $file), 'horde.success'); +} + +if ($url = Horde_Util::getFormData('url')) { + header('Location: ' . $url); +} else { + header('Location: ' . Horde::applicationUrl($prefs->getValue('whups_default_view') . '.php', true)); +} diff --git a/whups/ticket/index.php b/whups/ticket/index.php new file mode 100644 index 000000000..424214bad --- /dev/null +++ b/whups/ticket/index.php @@ -0,0 +1,54 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + * + * @author Chuck Hagenbuch + */ + +require_once dirname(__FILE__) . '/../lib/base.php'; +require_once WHUPS_BASE . '/lib/Ticket.php'; +require_once WHUPS_BASE . '/lib/Renderer/Comment.php'; + +$ticket = Whups::getCurrentTicket(); +$vars = Horde_Variables::getDefaultVariables(); +$ticket->setDetails($vars); + +$title = '[#' . $ticket->getId() . '] ' . $ticket->get('summary'); +require WHUPS_TEMPLATES . '/common-header.inc'; +require WHUPS_TEMPLATES . '/menu.inc'; +require WHUPS_TEMPLATES . '/prevnext.inc'; + +$tabs = Whups::getTicketTabs($vars, $ticket->getId()); +echo $tabs->render('history'); + +$form = new TicketDetailsForm($vars, $ticket); + +$renderer = $form->getRenderer(); +$renderer->_name = $form->getName(); +$renderer->beginInactive($title); +$renderer->renderFormInactive($form, $vars); +$renderer->end(); + +echo '
'; + +$comment = new Horde_Form_Renderer_Comment(); +$comment->begin(_("History")); +$history = Whups::permissionsFilter($whups_driver->getHistory($ticket->getId()), + 'comment', Horde_Perms::READ); +$chtml = array(); +foreach ($history as $transaction => $comment_values) { + $chtml[] = $comment->render($transaction, new Horde_Variables($comment_values)); +} +if ($prefs->getValue('comment_sort_dir')) { + $chtml = array_reverse($chtml); +} +echo implode('', $chtml); +$comment->end(); + +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/whups/ticket/queue.php b/whups/ticket/queue.php new file mode 100644 index 000000000..86a8fc6f2 --- /dev/null +++ b/whups/ticket/queue.php @@ -0,0 +1,226 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + */ + +@define('WHUPS_BASE', dirname(__FILE__) . '/..'); +require_once WHUPS_BASE . '/lib/base.php'; +require_once WHUPS_BASE . '/lib/Ticket.php'; + +/** + * Queue editing forms. + */ +class SetQueueStep1Form extends Horde_Form { + + function SetQueueStep1Form(&$vars, $title = '') + { + parent::Horde_Form($vars, $title); + + $this->addHidden('', 'id', 'int', true, true); + + /* Queues. */ + $this->addVariable( + _("New Queue"), 'queue', 'enum', true, false, null, + array(Whups::permissionsFilter($GLOBALS['whups_driver']->getQueues(), + 'queue', Horde_Perms::EDIT))); + $this->addVariable(_("Comment"), 'newcomment', 'longtext', false); + + /* Group restrictions. */ + if (Horde_Auth::isAdmin('whups:admin', Horde_Perms::EDIT) || + $GLOBALS['perms']->hasPermission('whups:hiddenComments', + Horde_Auth::getAuth(), Horde_Perms::EDIT)) { + $groups = &Group::singleton(); + $mygroups = $groups->getGroupMemberships(Horde_Auth::getAuth()); + if ($mygroups) { + foreach (array_keys($mygroups) as $gid) { + $grouplist[$gid] = $groups->getGroupName($gid, true); + } + asort($grouplist); + $grouplist = array_merge(array(0 => _("Any Group")), + $grouplist); + $this->addVariable(_("Viewable only by members of"), 'group', + 'enum', true, false, null, + array($grouplist)); + } + } + } + +} + +class SetQueueStep2Form extends Horde_Form { + + function SetQueueStep2Form(&$vars, $title = '') + { + global $whups_driver; + + parent::Horde_Form($vars, $title); + + $this->addHidden('', 'id', 'int', true, true); + $this->addHidden('', 'group', 'int', false, true); + $this->addHidden('', 'queue', 'int', true, true); + $this->addHidden('', 'newcomment', 'longtext', false, true); + + /* Give the user an opportunity to check that type, version, + * etc. are still valid. */ + $queue = $vars->get('queue'); + + $info = $whups_driver->getQueue($queue); + if (!empty($info['versioned'])) { + $versions = $whups_driver->getVersions($vars->get('queue')); + if (count($versions) == 0) { + $vtype = 'invalid'; + $v_params = array(_("This queue requires that you specify a version, but there are no versions associated with it. Until versions are created for this queue, you will not be able to create tickets.")); + } else { + $vtype = 'enum'; + $v_params = array($versions); + } + $this->addVariable(_("Queue Version"), 'version', $vtype, true, false, null, $v_params); + } + + $this->addVariable(_("Type"), 'type', 'enum', true, false, null, array($whups_driver->getTypes($queue))); + } + +} + +class SetQueueStep3Form extends Horde_Form { + + function SetQueueStep3Form(&$vars, $title = '') + { + global $whups_driver; + + parent::Horde_Form($vars, $title); + + $this->addHidden('', 'id', 'int', true, true); + $this->addHidden('', 'group', 'int', false, true); + $this->addHidden('', 'queue', 'int', true, true); + $this->addHidden('', 'type', 'int', true, true); + $this->addHidden('', 'newcomment', 'longtext', false, true); + + $info = $whups_driver->getQueue($vars->get('queue')); + if (!empty($info['versioned'])) { + $this->addHidden('', 'version', 'int', true, true); + } + + /* Give user an opportunity to check that state and priority + * are still valid. */ + $type = $vars->get('type'); + $this->addVariable(_("State"), 'state', 'enum', true, false, null, array($whups_driver->getStates($type))); + $this->addVariable(_("Priority"), 'priority', 'enum', true, false, null, array($whups_driver->getPriorities($type))); + } + +} + +$ticket = Whups::getCurrentTicket(); +$vars = Horde_Variables::getDefaultVariables(); +$vars->set('id', $id = $ticket->getId()); +foreach ($ticket->getDetails() as $varname => $value) { + $vars->add($varname, $value); +} + +// Check permissions on this ticket. +if (!Whups::hasPermission($ticket->get('queue'), 'queue', Horde_Perms::DELETE)) { + $notification->push(_("Permission Denied"), 'horde.error'); + header('Location: ' . Horde::applicationUrl($prefs->getValue('whups_default_view') . '.php', true)); + exit; +} + +$form = $vars->get('formname'); +$action = ''; + +if ($form == 'setqueuestep1form') { + $setqueueform = new SetQueueStep1Form($vars); + if ($setqueueform->validate($vars)) { + $action = 'sq2'; + } +} + +if ($form == 'setqueuestep2form') { + $setqueueform = new SetQueueStep2Form($vars); + if ($setqueueform->validate($vars)) { + $action = 'sq3'; + } else { + $action = 'sq2'; + } +} + +if ($form == 'setqueuestep3form') { + $smform3 = new SetQueueStep3Form($vars); + if ($smform3->validate($vars)) { + $smform3->getInfo($vars, $info); + + $ticket->change('queue', $info['queue']); + $ticket->change('type', $info['type']); + $ticket->change('state', $info['state']); + $ticket->change('priority', $info['priority']); + + if (!empty($info['version'])) { + $ticket->change('version', $info['version']); + } + + if (!empty($info['newcomment'])) { + $ticket->change('comment', $info['newcomment']); + } + + if (!empty($info['group'])) { + $ticket->change('comment-perms', $info['group']); + } + + $result = $ticket->commit(); + if (is_a($result, 'PEAR_Error')) { + $notification->push($result, 'horde.error'); + } else { + $notification->push(sprintf(_("Moved ticket %d to \"%s\""), $id, $ticket->get('queue_name')), 'horde.success'); + $ticket->show(); + } + } else { + $action = 'sq3'; + } +} + +$title = sprintf(_("Set Queue for %s"), '[#' . $id . '] ' . $ticket->get('summary')); +require WHUPS_TEMPLATES . '/common-header.inc'; +require WHUPS_TEMPLATES . '/menu.inc'; +require WHUPS_TEMPLATES . '/prevnext.inc'; + +$tabs = Whups::getTicketTabs($vars, $id); +echo $tabs->render('queue'); + +$r = new Horde_Form_Renderer(); + +switch ($action) { +case 'sq2': + $form1 = new SetQueueStep1Form($vars, _("Set Queue - Step 1")); + $form2 = new SetQueueStep2Form($vars, _("Set Queue - Step 2")); + + $form1->renderInactive($r, $vars); + echo '
'; + $form2->renderActive($r, $vars, 'queue.php', 'post'); + break; + +case 'sq3': + $form1 = new SetQueueStep1Form($vars, _("Set Queue - Step 1")); + $form2 = new SetQueueStep2Form($vars, _("Set Queue - Step 2")); + $form3 = new SetQueueStep3Form($vars, _("Set Queue - Step 3")); + + $form1->renderInactive($r, $vars); + echo '
'; + $form2->renderInactive($r, $vars); + echo '
'; + $form3->renderActive($r, $vars, 'queue.php', 'post'); + break; + +default: + $form1 = new SetQueueStep1Form($vars, _("Set Queue - Step 1")); + $form1->renderActive($r, $vars, 'queue.php', 'post'); + break; +} + +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/whups/ticket/rss.php b/whups/ticket/rss.php new file mode 100644 index 000000000..14ee48e6d --- /dev/null +++ b/whups/ticket/rss.php @@ -0,0 +1,59 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + */ + +@define('WHUPS_BASE', dirname(__FILE__) . '/..'); +require_once WHUPS_BASE . '/lib/base.php'; +require_once 'Horde/Template.php'; + +$ticket = Horde_Util::getFormData('id'); +$ticket = preg_replace('|\D|', '', $ticket); +if (!$ticket) { + exit; +} + +// Get the ticket details first. +$details = $whups_driver->getTicketDetails($ticket); +if (is_a($details, 'PEAR_Error')) { + exit; +} + +// Check permissions on this ticket. +if (!count(Whups::permissionsFilter(array($details['queue'] => ''), 'queue', Horde_Perms::READ))) { + exit; +} + +$history = Whups::permissionsFilter($whups_driver->getHistory($ticket), + 'comment', Horde_Perms::READ); +$items = array(); +$self = Whups::urlFor('ticket', $ticket, true, -1); +foreach (array_keys($history) as $i) { + if (!isset($history[$i]['comment_text'])) { + continue; + } + $items[$i]['title'] = htmlspecialchars(substr($history[$i]['comment_text'], 0, 60)); + $items[$i]['description'] = htmlspecialchars($history[$i]['comment_text']); + $items[$i]['pubDate'] = htmlspecialchars(date('r', $history[$i]['timestamp'])); + $items[$i]['url'] = $self . '#t' . $i; +} + +$template = new Horde_Template(); +$template->set('charset', Horde_Nls::getCharset()); +$template->set('xsl', $registry->get('themesuri') . '/feed-rss.xsl'); +$template->set('pubDate', htmlspecialchars(date('r'))); +$template->set('title', htmlspecialchars($details['summary'])); +$template->set('items', $items, true); +$template->set('url', Whups::urlFor('ticket', $ticket, true)); +$template->set('rss_url', Whups::urlFor('ticket_rss', $ticket, true)); +$template->set('description', htmlspecialchars($details['summary'])); + +$browser->downloadHeaders($details['summary'] . '.rss', + 'text/xml', true); +echo $template->fetch(WHUPS_TEMPLATES . '/rss/items.rss'); diff --git a/whups/ticket/type.php b/whups/ticket/type.php new file mode 100644 index 000000000..8d2b47347 --- /dev/null +++ b/whups/ticket/type.php @@ -0,0 +1,152 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + */ + +@define('WHUPS_BASE', dirname(__FILE__) . '/..'); +require_once WHUPS_BASE . '/lib/base.php'; +require_once WHUPS_BASE . '/lib/Ticket.php'; + +class SetTypeStep1Form extends Horde_Form { + + function SetTypeStep1Form(&$vars, $title = '') + { + global $whups_driver; + + parent::Horde_Form($vars, $title); + + $this->addHidden('', 'id', 'int', true, true); + + /* Types */ + $queue = $vars->get('queue'); + $this->addVariable(_("New Type"), 'type', 'enum', true, false, null, array($whups_driver->getTypes($queue))); + $this->addVariable(_("Comment"), 'newcomment', 'longtext', false); + + /* Group restrictions. */ + $groups = &Group::singleton(); + $mygroups = $groups->getGroupMemberships(Horde_Auth::getAuth()); + if ($mygroups) { + foreach (array_keys($mygroups) as $gid) { + $grouplist[$gid] = $groups->getGroupName($gid, true); + } + asort($grouplist); + $grouplist = array_merge(array(0 => _("Any Group")), $grouplist); + $this->addVariable(_("Viewable only by members of"), 'group', 'enum', true, false, null, array($grouplist)); + } + } + +} + +class SetTypeStep2Form extends Horde_Form { + + function SetTypeStep2Form(&$vars, $title = '') + { + global $whups_driver; + + parent::Horde_Form($vars, $title); + + $this->addHidden('', 'id', 'int', true, true); + $this->addHidden('', 'group', 'int', false, false); + $this->addHidden('', 'type', 'int', true, true); + $this->addHidden('', 'newcomment', 'longtext', false, true); + + /* Give user an opportunity to check that state and priority + * are still valid. */ + $type = $vars->get('type'); + $this->addVariable(_("State"), 'state', 'enum', true, false, null, array($whups_driver->getStates($type))); + $this->addVariable(_("Priority"), 'priority', 'enum', true, false, null, array($whups_driver->getPriorities($type))); + } + +} + +$ticket = Whups::getCurrentTicket(); +$details = $ticket->getDetails(); +if (!Whups::hasPermission($details['queue'], 'queue', 'update')) { + $notification->push(_("Permission Denied"), 'horde.error'); + header('Location: ' . Horde::applicationUrl($prefs->getValue('whups_default_view') . '.php', true)); + exit; +} + +$vars = Horde_Variables::getDefaultVariables(); +$vars->set('id', $id = $ticket->getId()); +foreach ($ticket->getDetails() as $varname => $value) { + $vars->add($varname, $value); +} +$action = $vars->get('action'); +$form = $vars->get('formname'); + +/* Set Type action. */ +if ($form == 'settypestep1form') { + $settypeform = new SetTypeStep1Form($vars); + if ($settypeform->validate($vars)) { + $action = 'st2'; + } else { + $action = 'st'; + } +} + +if ($form == 'settypestep2form') { + $settypeform = new SetTypeStep2Form($vars); + if ($settypeform->validate($vars)) { + $settypeform->getInfo($vars, $info); + + $ticket->change('type', $info['type']); + $ticket->change('state', $info['state']); + $ticket->change('priority', $info['priority']); + + if (!empty($info['newcomment'])) { + $ticket->change('comment', $info['newcomment']); + } + + if (!empty($info['group'])) { + $ticket->change('comment-perms', $info['group']); + } + + $result = $ticket->commit(); + if (is_a($result, 'PEAR_Error')) { + $notification->push($result, 'horde.error'); + } else { + $notification->push(_("Successfully changed ticket type."), 'horde.success'); + $ticket->show(); + } + } else { + $notification->push(var_export($settypeform->_errors), 'horde.error'); + $action = 'st2'; + } +} + +$title = sprintf(_("Set Type for %s"), '[#' . $id . '] ' . $ticket->get('summary')); +require WHUPS_TEMPLATES . '/common-header.inc'; +require WHUPS_TEMPLATES . '/menu.inc'; +require WHUPS_TEMPLATES . '/prevnext.inc'; + +$tabs = Whups::getTicketTabs($vars, $id); +echo $tabs->render('type'); + +$r = new Horde_Form_Renderer(); + +switch ($action) { +case 'st2': + $form1 = new SetTypeStep1Form($vars, _("Set Type - Step 1")); + $form2 = new SetTypeStep2Form($vars, _("Set Type - Step 2")); + + $form1->renderInactive($r, $vars); + echo '
'; + $form2->renderActive($r, $vars, 'type.php', 'post'); + break; + +default: + $form1 = new SetTypeStep1Form($vars, _("Set Type - Step 1")); + $form1->renderActive($r, $vars, 'type.php', 'post'); + break; +} + +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/whups/ticket/update.php b/whups/ticket/update.php new file mode 100644 index 000000000..8e3940bd0 --- /dev/null +++ b/whups/ticket/update.php @@ -0,0 +1,117 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + */ + +@define('WHUPS_BASE', dirname(__FILE__) . '/..'); +require_once WHUPS_BASE . '/lib/base.php'; +require_once WHUPS_BASE . '/lib/Ticket.php'; +require_once WHUPS_BASE . '/lib/Forms/EditTicket.php'; + +$ticket = Whups::getCurrentTicket(); + +if (!Whups::hasPermission($ticket->get('queue'), 'queue', 'update')) { + $notification->push(_("Permission Denied"), 'horde.error'); + header('Location: ' . Horde::applicationUrl($prefs->getValue('whups_default_view') . '.php', true)); + exit; +} + +$vars = Horde_Variables::getDefaultVariables(); +$vars->set('id', $id = $ticket->getId()); +foreach ($ticket->getDetails() as $varname => $value) { + $vars->add($varname, $value); +} +if ($tid = $vars->get('transaction')) { + $history = Whups::permissionsFilter($whups_driver->getHistory($ticket->getId()), + 'comment', Horde_Perms::READ); + if (!empty($history[$tid]['comment'])) { + // If this was a restricted comment, load the group_id it was + // restricted to and default to keeping that restriction on + // the reply. + foreach ($history[$tid]['changes'] as $change) { + if (!empty($change['private'])) { + $permission = $GLOBALS['perms']->getPermission('whups:comments:' . $change['value']); + if (!is_a($permission, 'PEAR_Error')) { + $group_id = array_shift(array_keys($permission->getGroupPermissions())); + $vars->set('group', $group_id); + } + break; + } + } + + $flowed = new Horde_Text_Flowed(preg_replace("/\s*\n/U", "\n", $history[$tid]['comment'])); + $vars->set('newcomment', $flowed->toFlowed(true)); + } +} + +// Edit action. +if ($vars->get('formname') == 'editticketform') { + $editform = new EditTicketForm($vars, $ticket); + if ($editform->validate($vars)) { + $editform->getInfo($vars, $info); + + $ticket->change('summary', $info['summary']); + $ticket->change('state', $info['state']); + $ticket->change('priority', $info['priority']); + $ticket->change('due', $info['due']); + if (!empty($info['version'])) { + $ticket->change('version', $info['version']); + } + if (!empty($info['newcomment'])) { + $ticket->change('comment', $info['newcomment']); + } + + // Update user and group assignments. + if (Whups::hasPermission($vars->get('queue'), 'queue', 'assign')) { + $ticket->change('owners', array_merge(isset($info['owners']) ? $info['owners'] : array(), + isset($info['group_owners']) ? $info['group_owners'] : array())); + } + + // Update attributes. + $whups_driver->setAttributes($info, $ticket); + + // Add attachment if one was uploaded. + if (!empty($info['newattachment']['name'])) { + $ticket->change('attachment', array('name' => $info['newattachment']['name'], + 'tmp_name' => $info['newattachment']['tmp_name'])); + } + + // If there was a new comment and permissions were specified + // on it, set them. + if (!empty($info['group'])) { + $ticket->change('comment-perms', $info['group']); + } + + $result = $ticket->commit(); + if (is_a($result, 'PEAR_Error')) { + $notification->push($result, 'horde.error'); + } else { + $notification->push(_("Ticket Updated"), 'horde.success'); + $ticket->show(); + } + } +} + +$title = '[#' . $id . '] ' . $ticket->get('summary'); +require WHUPS_TEMPLATES . '/common-header.inc'; +require WHUPS_TEMPLATES . '/menu.inc'; +require WHUPS_TEMPLATES . '/prevnext.inc'; + +$tabs = Whups::getTicketTabs($vars, $id); +echo $tabs->render('update'); + +$form = new EditTicketForm($vars, $ticket, sprintf(_("Update %s"), $title)); +$form->renderActive($form->getRenderer(), $vars, 'update.php', 'post'); +echo '
'; + +$form = new TicketDetailsForm($vars, $ticket, $title); +$ticket->setDetails($vars); +$form->renderInactive($form->getRenderer(), $vars); + +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/whups/ticket/watch.php b/whups/ticket/watch.php new file mode 100644 index 000000000..68e812e6f --- /dev/null +++ b/whups/ticket/watch.php @@ -0,0 +1,99 @@ + + * Copyright 2001-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file LICENSE for license information (BSD). If you + * did not receive this file, see http://www.horde.org/licenses/bsdl.php. + */ + +@define('WHUPS_BASE', dirname(__FILE__) . '/..'); +require_once WHUPS_BASE . '/lib/base.php'; +require_once WHUPS_BASE . '/lib/Ticket.php'; + +class AddListenerForm extends Horde_Form { + + function AddListenerForm(&$vars, $title = '') + { + parent::Horde_Form($vars, $title); + + $this->addHidden('', 'id', 'int', true, true); + $this->addVariable(_("Email address to notify"), 'add_listener', 'email', true); + } + +} + +class DeleteListenerForm extends Horde_Form { + + function DeleteListenerForm(&$vars, $title = '') + { + parent::Horde_Form($vars, $title); + + $this->addHidden('', 'id', 'int', true, true); + $this->addVariable(_("Email address to remove"), 'del_listener', 'email', true); + } + +} + +$ticket = Whups::getCurrentTicket(); +$vars = Horde_Variables::getDefaultVariables(); +$vars->set('id', $id = $ticket->getId()); +foreach ($ticket->getDetails() as $varname => $value) { + $vars->add($varname, $value); +} + +$addform = new AddListenerForm($vars, _("Add Watcher")); +$delform = new DeleteListenerForm($vars, _("Remove Watcher")); + +if ($vars->get('formname') == 'addlistenerform') { + if ($addform->validate($vars)) { + $addform->getInfo($vars, $info); + + $result = $whups_driver->addListener($id, '**' . $info['add_listener']); + if (is_a($result, 'PEAR_Error')) { + $notification->push($result, 'horde.error'); + } else { + $ticket->notify($info['add_listener'], false, array('**' . $info['add_listener'])); + $notification->push(sprintf(_("%s will be notified when this ticket is updated."), $info['add_listener']), 'horde.success'); + $ticket->show(); + } + } +} elseif ($vars->get('formname') == 'deletelistenerform') { + if ($delform->validate($vars)) { + $delform->getInfo($vars, $info); + + $result = $whups_driver->deleteListener($id, '**' . $info['del_listener']); + if (is_a($result, 'PEAR_Error')) { + $notification->push($result, 'horde.error'); + } else { + $notification->push(sprintf(_("%s will no longer receive updates for this ticket."), $info['del_listener']), 'horde.success'); + $ticket->show(); + } + } +} + +$title = sprintf(_("Watchers for %s"), '[#' . $id . '] ' . $ticket->get('summary')); +require WHUPS_TEMPLATES . '/common-header.inc'; +require WHUPS_TEMPLATES . '/menu.inc'; +require WHUPS_TEMPLATES . '/prevnext.inc'; + +$tabs = Whups::getTicketTabs($vars, $id); +echo $tabs->render('watch'); + +require WHUPS_TEMPLATES . '/ticket/watchers.inc'; + +$r = new Horde_Form_Renderer(); + +$addform->renderActive($r, $vars, 'watch.php', 'post'); +echo '
'; + +$delform->renderActive($r, $vars, 'watch.php', 'post'); +echo '
'; + +$form = new TicketDetailsForm($vars, $ticket, '[#' . $id . '] ' . $ticket->get('summary')); +$ticket->setDetails($vars); +$form->renderInactive($form->getRenderer(), $vars); + +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/whups/view.php b/whups/view.php new file mode 100644 index 000000000..2e9ce92aa --- /dev/null +++ b/whups/view.php @@ -0,0 +1,86 @@ + + */ + +define('WHUPS_BASE', dirname(__FILE__)); +require_once WHUPS_BASE . '/lib/base.php'; + +$actionID = Horde_Util::getFormData('actionID'); +$id = Horde_Util::getFormData('ticket'); +$filename = Horde_Util::getFormData('file'); +$type = Horde_Util::getFormData('type'); + +// Get the ticket details first. +if (empty($id)) { + exit; +} +$details = $whups_driver->getTicketDetails($id); +if (is_a($details, 'PEAR_Error')) { + if ($details->code === 0) { + // No permissions to this ticket. + $url = Horde::url($registry->get('webroot', 'horde') . '/login.php', true); + $url = Horde_Util::addParameter($url, 'url', Horde::selfUrl(true)); + header('Location: ' . $url); + exit; + } else { + Horde::fatal($details->getMessage(), __FILE__, __LINE__); + } +} + +// Check permissions on this ticket. +if (!count(Whups::permissionsFilter($whups_driver->getHistory($id), 'comment', Horde_Perms::READ))) { + Horde::fatal(sprintf(_("You are not allowed to view ticket %d."), $id), __FILE__, __LINE__); +} + +if (empty($conf['vfs']['type'])) { + Horde::fatal(_("The VFS backend needs to be configured to enable attachment uploads."), __FILE__, __LINE__); +} + +require_once 'VFS.php'; +$vfs = VFS::factory($conf['vfs']['type'], Horde::getDriverConfig('vfs')); +if (is_a($vfs, 'PEAR_Error')) { + Horde::fatal($vfs, __FILE__, __LINE__); +} else { + $data = $vfs->read(WHUPS_VFS_ATTACH_PATH . '/' . $id, $filename); +} +if (is_a($data, 'PEAR_Error')) { + Horde::fatal(sprintf(_("Access denied to %s"), $filename), __FILE__, __LINE__); +} + +/* Run through action handlers */ +switch ($actionID) { +case 'download_file': + $browser->downloadHeaders($filename, null, false, strlen($data)); + echo $data; + exit; + +case 'view_file': + $mime_part = new Horde_Mime_Part(); + $mime_part->setType(Horde_Mime_Magic::extToMime($type)); + $mime_part->setContents($data); + $mime_part->setName($filename); + + $viewer = Horde_Mime_Viewer::factory($mime_part); + + $ret = $viewer->render('full'); + reset($ret); + $key = key($ret); + + if (strpos($ret[$key]['type'], 'text/html') !== false) { + require WHUPS_BASE . '/templates/common-header.inc'; + echo $ret[$key]['data']; + require $registry->get('templates', 'horde') . '/common-footer.inc'; + } else { + $browser->downloadHeaders($ret[$key]['name'], $ret[$key]['type'], true, strlen($ret[$key]['data'])); + echo $ret[$key]['data']; + } + exit; +} -- 2.11.0
'; + } + + function render($transaction, &$vars) + { + global $prefs, $conf, $registry; + static $canUpdate, $comment_count = 0; + + if (!isset($canUpdate)) { + $canUpdate = Horde_Auth::getAuth() && + Whups::hasPermission($vars->get('queue'), 'queue', 'update'); + } + + $comment = ''; + $private = false; + $changes = array(); + + $changelist = $vars->get('changes'); + if (!$changelist) { + return ''; + } + + /* Format each change in this history entry, including comments, + * etc. */ + foreach ($changelist as $change) { + switch ($change['type']) { + case 'summary': + $changes[] = sprintf(_("Summary ⇒ %s"), + htmlspecialchars($change['value'])); + break; + + case 'attachment': + $ticket = $vars->get('ticket_id'); + if ($file = Whups::getAttachments($ticket, $change['value'])) { + $changes[] = sprintf(_("New Attachment: %s"), + Whups::attachmentUrl($ticket, $file, + $vars->get('queue'))); + } else { + $changes[] = sprintf(_("New Attachment: %s"), + htmlspecialchars($change['value'])); + } + break; + + case 'delete-attachment': + $changes[] = sprintf(_("Deleted Attachment: %s"), + htmlspecialchars($change['value'])); + break; + + case 'assign': + $changes[] = sprintf(_("Assigned to %s"), + Whups::formatUser($change['value'], false, + true, true)); + break; + + case 'unassign': + $changes[] = sprintf(_("Taken from %s"), + Whups::formatUser($change['value'], false, + true, true)); + break; + + case 'comment': + $comment = $change['comment']; + $private = !empty($change['private']); + if ($comment) { + $reply = + Horde::link( + Horde::applicationUrl( + Horde_Util::addParameter( + $canUpdate ? 'ticket/update.php' : 'ticket/comment.php', + array('id' => $vars->get('ticket_id'), + 'transaction' => $transaction)))) + . _("Reply to this comment") . ''; + } + break; + + case 'queue': + $changes[] = sprintf(_("Queue ⇒ %s"), + htmlspecialchars($change['label'])); + break; + + case 'version': + $changes[] = sprintf(_("Version ⇒ %s"), + htmlspecialchars($change['label'])); + break; + + case 'type': + $changes[] = sprintf(_("Type ⇒ %s"), + htmlspecialchars($change['label'])); + break; + + case 'state': + $changes[] = sprintf(_("State ⇒ %s"), + htmlspecialchars($change['label'])); + break; + + case 'priority': + $changes[] = sprintf(_("Priority ⇒ %s"), + htmlspecialchars($change['label'])); + break; + + case 'attribute': + $changes[] = sprintf(_("%s ⇒ %s"), + htmlspecialchars($change['label']), + htmlspecialchars($change['value'])); + break; + + case 'due': + if ($change['label']) { + $changes[] = sprintf( + _("Due ⇒ %s"), + strftime($prefs->getValue('date_format'), + $change['label'])); + } + break; + } + } + + if ($comment) { + $flowed = new Horde_Text_Flowed($comment); + $flowed->setDelSp(true); + $comment = $flowed->toFlowed(false); + $comment = Horde_Text_Filter::filter( + $comment, array('text2html', 'simplemarkup', 'highlightquotes'), + array(array('parselevel' => Horde_Text_Filter_Text2html::MICRO, 'class' => null), + array(), array())); + if ($prefs->getValue('autolink_tickets') && + $conf['prefs']['autolink_terms']) { + $term_regex = '/(' . $conf['prefs']['autolink_terms'] + . ')\s*#?(\d+)/i'; + $comment = preg_replace_callback($term_regex, + array(&$this, '_autolink'), + $comment); + } + + $comment_count++; + if ($private) { + $comment_label = Horde::img('locked.png', '', null, $registry->getImageDir('horde')) + . sprintf(_("Comment #%d (Private)"), $comment_count); + } else { + $comment_label = sprintf(_("Comment #%d"), $comment_count); + } + array_unshift($changes, '' + . $comment_label + . ''); + } + + if (count($changes)) { + ob_start(); + $class = $private ? 'pc' : 'c'; +?> +
+ + + + + + + + + + + + +
getValue('date_format'), $vars->get('timestamp')) ?>get('user_id') ? Whups::formatUser($vars->get('user_id'), false, true, true) : ' ' ?>', $changes) ?>
+
+ +
+
 
+
+' . Horde::link($url, 'View ' . $matches[0]) + . $matches[0] . '
'; + $state = $GLOBALS['whups_driver']->getTicketState($matches[2]); + if (!is_a($state, 'PEAR_Error') && + $state['state_category'] == 'resolved') { + $link = '' . $link . ''; + } + return $link; + } + + function end() + { + echo '