From 94db816369d07fd9fe11128140f0ce8ae1a953c5 Mon Sep 17 00:00:00 2001 From: "Michael J. Rubinsky" Date: Wed, 23 Dec 2009 20:56:53 -0500 Subject: [PATCH] Add Wicked from CVS HEAD, and remove config/*.php files from whups import --- whups/config/conf.php | 53 - whups/config/create_email.txt | 2 - whups/config/mime_drivers.php | 39 - whups/config/notify_email.txt | 2 - whups/config/prefs.php | 175 --- whups/config/templates.php | 59 - wicked/.htaccess | 6 + wicked/COPYING | 280 +++++ wicked/README | 109 ++ wicked/config/.cvsignore | 4 + wicked/config/.htaccess | 1 + wicked/config/conf.xml | 100 ++ wicked/config/menu.php.dist | 41 + wicked/config/prefs.php.dist | 15 + wicked/diff.php | 60 + wicked/display.php | 148 +++ wicked/docs/CHANGES | 123 +++ wicked/docs/CREDITS | 28 + wicked/docs/INSTALL | 213 ++++ wicked/docs/TODO | 65 ++ wicked/docs/lighttpd-wicked.conf | 23 + wicked/history.php | 34 + wicked/index.php | 23 + wicked/js/toc.js | 37 + wicked/lib/Block/page.php | 45 + wicked/lib/Driver.php | 489 +++++++++ wicked/lib/Driver/sql.php | 1030 ++++++++++++++++++ wicked/lib/Page.php | 600 ++++++++++ wicked/lib/Page/AddPage.php | 116 ++ wicked/lib/Page/AllPages.php | 93 ++ wicked/lib/Page/AttachedFiles.php | 315 ++++++ wicked/lib/Page/BackLinks.php | 88 ++ wicked/lib/Page/DeletePage.php | 155 +++ wicked/lib/Page/EditPage.php | 197 ++++ wicked/lib/Page/LeastPopular.php | 96 ++ wicked/lib/Page/LikePages.php | 90 ++ wicked/lib/Page/MergeOrRename.php | 285 +++++ wicked/lib/Page/MostPopular.php | 96 ++ wicked/lib/Page/NewPage.php | 147 +++ wicked/lib/Page/RecentChanges.php | 117 ++ wicked/lib/Page/RevertPage.php | 138 +++ wicked/lib/Page/Search.php | 207 ++++ wicked/lib/Page/StandardPage.php | 368 +++++++ wicked/lib/Page/StandardPage/StdHistoryPage.php | 63 ++ wicked/lib/Page/SyncDiff.php | 181 ++++ wicked/lib/Page/SyncPages.php | 446 ++++++++ wicked/lib/Sync.php | 145 +++ wicked/lib/Sync/wicked.php | 125 +++ wicked/lib/Text_Wiki/Parse/BBCode/Image2.php | 12 + wicked/lib/Text_Wiki/Parse/Cowiki/Image2.php | 12 + wicked/lib/Text_Wiki/Parse/Creole/Image2.php | 12 + wicked/lib/Text_Wiki/Parse/Default/Attribute.php | 55 + wicked/lib/Text_Wiki/Parse/Default/Code2.php | 12 + wicked/lib/Text_Wiki/Parse/Default/Freelink2.php | 12 + wicked/lib/Text_Wiki/Parse/Default/Image2.php | 12 + .../lib/Text_Wiki/Parse/Default/Registrylink.php | 47 + wicked/lib/Text_Wiki/Parse/Default/Wickedblock.php | 38 + wicked/lib/Text_Wiki/Parse/Default/Wikilink2.php | 12 + wicked/lib/Text_Wiki/Parse/Mediawiki/Image2.php | 12 + wicked/lib/Text_Wiki/Parse/Tiki/Image2.php | 12 + wicked/lib/Text_Wiki/Render/Xhtml/Attribute.php | 56 + wicked/lib/Text_Wiki/Render/Xhtml/Code2.php | 51 + wicked/lib/Text_Wiki/Render/Xhtml/Freelink2.php | 5 + wicked/lib/Text_Wiki/Render/Xhtml/Image2.php | 157 +++ wicked/lib/Text_Wiki/Render/Xhtml/Interwiki.php | 59 + wicked/lib/Text_Wiki/Render/Xhtml/Registrylink.php | 31 + wicked/lib/Text_Wiki/Render/Xhtml/Toc.php | 95 ++ wicked/lib/Text_Wiki/Render/Xhtml/Url.php | 50 + wicked/lib/Text_Wiki/Render/Xhtml/Wickedblock.php | 25 + wicked/lib/Text_Wiki/Render/Xhtml/Wikilink2.php | 116 ++ wicked/lib/Wicked.php | 219 ++++ wicked/lib/api.php | 467 ++++++++ wicked/lib/base.php | 56 + wicked/lib/tests/Driver.php | 203 ++++ wicked/lib/version.php | 1 + wicked/locale/de_DE/LC_MESSAGES/wicked.mo | Bin 0 -> 171060 bytes wicked/locale/en_US/help.xml | 23 + wicked/locale/es_ES/LC_MESSAGES/wicked.mo | Bin 0 -> 162588 bytes wicked/locale/es_ES/help.xml | 17 + wicked/locale/fi_FI/LC_MESSAGES/wicked.mo | Bin 0 -> 155392 bytes wicked/locale/fi_FI/help.xml | 20 + wicked/locale/it_IT/LC_MESSAGES/wicked.mo | Bin 0 -> 159362 bytes wicked/locale/ja_JP/LC_MESSAGES/wicked.mo | Bin 0 -> 146122 bytes wicked/locale/pt_BR/LC_MESSAGES/wicked.mo | Bin 0 -> 161187 bytes wicked/locale/sl_SI/LC_MESSAGES/wicked.mo | Bin 0 -> 138624 bytes wicked/locale/uk_UA/LC_MESSAGES/wicked.mo | Bin 0 -> 127968 bytes wicked/locale/zh_TW/LC_MESSAGES/wicked.mo | Bin 0 -> 138879 bytes wicked/opensearch.php | 53 + wicked/po/README | 1 + wicked/po/de_DE.po | 1142 ++++++++++++++++++++ wicked/po/es_ES.po | 901 +++++++++++++++ wicked/po/fi_FI.po | 733 +++++++++++++ wicked/po/it_IT.po | 1115 +++++++++++++++++++ wicked/po/ja_JP.po | 915 ++++++++++++++++ wicked/po/pt_BR.po | 915 ++++++++++++++++ wicked/po/sl_SI.po | 921 ++++++++++++++++ wicked/po/uk_UA.po | 1112 +++++++++++++++++++ wicked/po/wicked.pot | 899 +++++++++++++++ wicked/po/zh_TW.po | 912 ++++++++++++++++ wicked/preview.php | 28 + wicked/scripts/.htaccess | 1 + wicked/scripts/data/AddingPages | 4 + wicked/scripts/data/HowToUseWiki | 7 + wicked/scripts/data/MethodSetRenderConf | 29 + wicked/scripts/data/RuleInterwiki | 54 + wicked/scripts/data/RuleWikilink | 86 ++ wicked/scripts/data/SandBox | 6 + wicked/scripts/data/SmashWordsTogether | 1 + wicked/scripts/data/WickedTextFormat | 352 ++++++ wicked/scripts/data/WikiHome | 11 + wicked/scripts/data/WikiPage | 1 + wicked/scripts/mail-filter.php | 148 +++ wicked/scripts/sql/wicked.mssql.sql | 61 ++ wicked/scripts/sql/wicked.oci8.sql | 61 ++ wicked/scripts/sql/wicked.sql | 60 + wicked/scripts/upgrades/2009-09-29_drop_locks.sql | 1 + wicked/scripts/upgrades/convert_to_utf8.php | 143 +++ wicked/scripts/wicked.php | 167 +++ wicked/templates/common-header.inc | 30 + wicked/templates/diff/diff.inc | 7 + wicked/templates/display/AttachedFiles.html | 160 +++ wicked/templates/display/MergeOrRename.html | 67 ++ wicked/templates/display/RecentChanges.html | 17 + wicked/templates/display/standard.inc | 143 +++ wicked/templates/display/title.inc | 35 + wicked/templates/edit/create.inc | 52 + wicked/templates/edit/new.inc | 32 + wicked/templates/edit/preview.inc | 3 + wicked/templates/edit/standard.inc | 51 + wicked/templates/history/footer.inc | 2 + wicked/templates/history/header.inc | 30 + wicked/templates/history/summary.inc | 44 + wicked/templates/menu.inc | 23 + wicked/templates/pagelist/footer.inc | 3 + wicked/templates/pagelist/header.inc | 14 + wicked/templates/pagelist/pagelist.html | 15 + wicked/templates/pagelist/results_footer.inc | 2 + wicked/templates/pagelist/results_header.html | 12 + wicked/templates/pagelist/search.inc | 2 + wicked/templates/pagelist/summary.inc | 13 + wicked/templates/sync/diff.inc | 105 ++ wicked/templates/sync/footer.inc | 1 + wicked/templates/sync/form.inc | 19 + wicked/templates/sync/header.inc | 6 + wicked/templates/sync/list.inc | 84 ++ wicked/test.php | 94 ++ wicked/themes/graphics/AllPages.png | Bin 0 -> 677 bytes wicked/themes/graphics/HowToUseWiki.png | Bin 0 -> 370 bytes wicked/themes/graphics/PageSearch.png | Bin 0 -> 521 bytes wicked/themes/graphics/RecentChanges.png | Bin 0 -> 547 bytes wicked/themes/graphics/SyncPages.png | Bin 0 -> 571 bytes wicked/themes/graphics/TitleSearch.png | Bin 0 -> 521 bytes wicked/themes/graphics/WikiHome.png | Bin 0 -> 420 bytes wicked/themes/graphics/az.png | Bin 0 -> 117 bytes wicked/themes/graphics/diff.png | Bin 0 -> 190 bytes wicked/themes/graphics/external.png | Bin 0 -> 162 bytes wicked/themes/graphics/favicon.ico | Bin 0 -> 1150 bytes wicked/themes/graphics/info.png | Bin 0 -> 116 bytes wicked/themes/graphics/locked.png | Bin 0 -> 505 bytes wicked/themes/graphics/question.png | Bin 0 -> 116 bytes wicked/themes/graphics/restore.png | Bin 0 -> 287 bytes wicked/themes/graphics/wicked.png | Bin 0 -> 660 bytes wicked/themes/graphics/za.png | Bin 0 -> 119 bytes wicked/themes/hordeweb/screen.css | 29 + wicked/themes/screen.css | 180 +++ wicked/view.php | 66 ++ 166 files changed, 21022 insertions(+), 330 deletions(-) delete mode 100644 whups/config/conf.php delete mode 100644 whups/config/create_email.txt delete mode 100644 whups/config/mime_drivers.php delete mode 100644 whups/config/notify_email.txt delete mode 100644 whups/config/prefs.php delete mode 100644 whups/config/templates.php create mode 100644 wicked/.htaccess create mode 100644 wicked/COPYING create mode 100644 wicked/README create mode 100644 wicked/config/.cvsignore create mode 100644 wicked/config/.htaccess create mode 100644 wicked/config/conf.xml create mode 100644 wicked/config/menu.php.dist create mode 100644 wicked/config/prefs.php.dist create mode 100644 wicked/diff.php create mode 100644 wicked/display.php create mode 100644 wicked/docs/CHANGES create mode 100644 wicked/docs/CREDITS create mode 100644 wicked/docs/INSTALL create mode 100644 wicked/docs/TODO create mode 100755 wicked/docs/lighttpd-wicked.conf create mode 100644 wicked/history.php create mode 100644 wicked/index.php create mode 100644 wicked/js/toc.js create mode 100644 wicked/lib/Block/page.php create mode 100644 wicked/lib/Driver.php create mode 100644 wicked/lib/Driver/sql.php create mode 100644 wicked/lib/Page.php create mode 100644 wicked/lib/Page/AddPage.php create mode 100644 wicked/lib/Page/AllPages.php create mode 100644 wicked/lib/Page/AttachedFiles.php create mode 100644 wicked/lib/Page/BackLinks.php create mode 100644 wicked/lib/Page/DeletePage.php create mode 100644 wicked/lib/Page/EditPage.php create mode 100644 wicked/lib/Page/LeastPopular.php create mode 100644 wicked/lib/Page/LikePages.php create mode 100644 wicked/lib/Page/MergeOrRename.php create mode 100644 wicked/lib/Page/MostPopular.php create mode 100644 wicked/lib/Page/NewPage.php create mode 100644 wicked/lib/Page/RecentChanges.php create mode 100644 wicked/lib/Page/RevertPage.php create mode 100644 wicked/lib/Page/Search.php create mode 100644 wicked/lib/Page/StandardPage.php create mode 100644 wicked/lib/Page/StandardPage/StdHistoryPage.php create mode 100644 wicked/lib/Page/SyncDiff.php create mode 100644 wicked/lib/Page/SyncPages.php create mode 100644 wicked/lib/Sync.php create mode 100644 wicked/lib/Sync/wicked.php create mode 100644 wicked/lib/Text_Wiki/Parse/BBCode/Image2.php create mode 100644 wicked/lib/Text_Wiki/Parse/Cowiki/Image2.php create mode 100644 wicked/lib/Text_Wiki/Parse/Creole/Image2.php create mode 100644 wicked/lib/Text_Wiki/Parse/Default/Attribute.php create mode 100644 wicked/lib/Text_Wiki/Parse/Default/Code2.php create mode 100644 wicked/lib/Text_Wiki/Parse/Default/Freelink2.php create mode 100644 wicked/lib/Text_Wiki/Parse/Default/Image2.php create mode 100644 wicked/lib/Text_Wiki/Parse/Default/Registrylink.php create mode 100644 wicked/lib/Text_Wiki/Parse/Default/Wickedblock.php create mode 100644 wicked/lib/Text_Wiki/Parse/Default/Wikilink2.php create mode 100644 wicked/lib/Text_Wiki/Parse/Mediawiki/Image2.php create mode 100644 wicked/lib/Text_Wiki/Parse/Tiki/Image2.php create mode 100644 wicked/lib/Text_Wiki/Render/Xhtml/Attribute.php create mode 100644 wicked/lib/Text_Wiki/Render/Xhtml/Code2.php create mode 100644 wicked/lib/Text_Wiki/Render/Xhtml/Freelink2.php create mode 100644 wicked/lib/Text_Wiki/Render/Xhtml/Image2.php create mode 100644 wicked/lib/Text_Wiki/Render/Xhtml/Interwiki.php create mode 100644 wicked/lib/Text_Wiki/Render/Xhtml/Registrylink.php create mode 100644 wicked/lib/Text_Wiki/Render/Xhtml/Toc.php create mode 100644 wicked/lib/Text_Wiki/Render/Xhtml/Url.php create mode 100644 wicked/lib/Text_Wiki/Render/Xhtml/Wickedblock.php create mode 100644 wicked/lib/Text_Wiki/Render/Xhtml/Wikilink2.php create mode 100644 wicked/lib/Wicked.php create mode 100644 wicked/lib/api.php create mode 100644 wicked/lib/base.php create mode 100644 wicked/lib/tests/Driver.php create mode 100644 wicked/lib/version.php create mode 100644 wicked/locale/de_DE/LC_MESSAGES/wicked.mo create mode 100644 wicked/locale/en_US/help.xml create mode 100644 wicked/locale/es_ES/LC_MESSAGES/wicked.mo create mode 100644 wicked/locale/es_ES/help.xml create mode 100644 wicked/locale/fi_FI/LC_MESSAGES/wicked.mo create mode 100644 wicked/locale/fi_FI/help.xml create mode 100644 wicked/locale/it_IT/LC_MESSAGES/wicked.mo create mode 100644 wicked/locale/ja_JP/LC_MESSAGES/wicked.mo create mode 100644 wicked/locale/pt_BR/LC_MESSAGES/wicked.mo create mode 100644 wicked/locale/sl_SI/LC_MESSAGES/wicked.mo create mode 100644 wicked/locale/uk_UA/LC_MESSAGES/wicked.mo create mode 100644 wicked/locale/zh_TW/LC_MESSAGES/wicked.mo create mode 100644 wicked/opensearch.php create mode 100644 wicked/po/README create mode 100644 wicked/po/de_DE.po create mode 100644 wicked/po/es_ES.po create mode 100644 wicked/po/fi_FI.po create mode 100644 wicked/po/it_IT.po create mode 100644 wicked/po/ja_JP.po create mode 100644 wicked/po/pt_BR.po create mode 100644 wicked/po/sl_SI.po create mode 100644 wicked/po/uk_UA.po create mode 100644 wicked/po/wicked.pot create mode 100644 wicked/po/zh_TW.po create mode 100644 wicked/preview.php create mode 100644 wicked/scripts/.htaccess create mode 100644 wicked/scripts/data/AddingPages create mode 100644 wicked/scripts/data/HowToUseWiki create mode 100644 wicked/scripts/data/MethodSetRenderConf create mode 100644 wicked/scripts/data/RuleInterwiki create mode 100644 wicked/scripts/data/RuleWikilink create mode 100644 wicked/scripts/data/SandBox create mode 100644 wicked/scripts/data/SmashWordsTogether create mode 100644 wicked/scripts/data/WickedTextFormat create mode 100644 wicked/scripts/data/WikiHome create mode 100644 wicked/scripts/data/WikiPage create mode 100755 wicked/scripts/mail-filter.php create mode 100644 wicked/scripts/sql/wicked.mssql.sql create mode 100644 wicked/scripts/sql/wicked.oci8.sql create mode 100644 wicked/scripts/sql/wicked.sql create mode 100644 wicked/scripts/upgrades/2009-09-29_drop_locks.sql create mode 100755 wicked/scripts/upgrades/convert_to_utf8.php create mode 100755 wicked/scripts/wicked.php create mode 100644 wicked/templates/common-header.inc create mode 100644 wicked/templates/diff/diff.inc create mode 100644 wicked/templates/display/AttachedFiles.html create mode 100644 wicked/templates/display/MergeOrRename.html create mode 100644 wicked/templates/display/RecentChanges.html create mode 100644 wicked/templates/display/standard.inc create mode 100644 wicked/templates/display/title.inc create mode 100644 wicked/templates/edit/create.inc create mode 100644 wicked/templates/edit/new.inc create mode 100644 wicked/templates/edit/preview.inc create mode 100644 wicked/templates/edit/standard.inc create mode 100644 wicked/templates/history/footer.inc create mode 100644 wicked/templates/history/header.inc create mode 100644 wicked/templates/history/summary.inc create mode 100644 wicked/templates/menu.inc create mode 100644 wicked/templates/pagelist/footer.inc create mode 100644 wicked/templates/pagelist/header.inc create mode 100644 wicked/templates/pagelist/pagelist.html create mode 100644 wicked/templates/pagelist/results_footer.inc create mode 100644 wicked/templates/pagelist/results_header.html create mode 100644 wicked/templates/pagelist/search.inc create mode 100644 wicked/templates/pagelist/summary.inc create mode 100644 wicked/templates/sync/diff.inc create mode 100644 wicked/templates/sync/footer.inc create mode 100644 wicked/templates/sync/form.inc create mode 100644 wicked/templates/sync/header.inc create mode 100644 wicked/templates/sync/list.inc create mode 100644 wicked/test.php create mode 100644 wicked/themes/graphics/AllPages.png create mode 100644 wicked/themes/graphics/HowToUseWiki.png create mode 100644 wicked/themes/graphics/PageSearch.png create mode 100644 wicked/themes/graphics/RecentChanges.png create mode 100644 wicked/themes/graphics/SyncPages.png create mode 100644 wicked/themes/graphics/TitleSearch.png create mode 100644 wicked/themes/graphics/WikiHome.png create mode 100644 wicked/themes/graphics/az.png create mode 100644 wicked/themes/graphics/diff.png create mode 100644 wicked/themes/graphics/external.png create mode 100644 wicked/themes/graphics/favicon.ico create mode 100644 wicked/themes/graphics/info.png create mode 100644 wicked/themes/graphics/locked.png create mode 100644 wicked/themes/graphics/question.png create mode 100644 wicked/themes/graphics/restore.png create mode 100644 wicked/themes/graphics/wicked.png create mode 100644 wicked/themes/graphics/za.png create mode 100644 wicked/themes/hordeweb/screen.css create mode 100644 wicked/themes/screen.css create mode 100644 wicked/view.php diff --git a/whups/config/conf.php b/whups/config/conf.php deleted file mode 100644 index 4b10cef7a..000000000 --- a/whups/config/conf.php +++ /dev/null @@ -1,53 +0,0 @@ - 'compressed.png'); diff --git a/whups/config/notify_email.txt b/whups/config/notify_email.txt deleted file mode 100644 index a251e780e..000000000 --- a/whups/config/notify_email.txt +++ /dev/null @@ -1,2 +0,0 @@ -@@dont_reply@@@@ticket_url@@ -@@table@@@@comment@@ diff --git a/whups/config/prefs.php b/whups/config/prefs.php deleted file mode 100644 index 7cabb9121..000000000 --- a/whups/config/prefs.php +++ /dev/null @@ -1,175 +0,0 @@ - _("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/templates.php b/whups/config/templates.php deleted file mode 100644 index 0b9206c27..000000000 --- a/whups/config/templates.php +++ /dev/null @@ -1,59 +0,0 @@ - '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/wicked/.htaccess b/wicked/.htaccess new file mode 100644 index 000000000..0d35c9d81 --- /dev/null +++ b/wicked/.htaccess @@ -0,0 +1,6 @@ + + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^([A-Za-z0-9].*)$ display.php?page=$1 [QSA] + diff --git a/wicked/COPYING b/wicked/COPYING new file mode 100644 index 000000000..a6b67561a --- /dev/null +++ b/wicked/COPYING @@ -0,0 +1,280 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS diff --git a/wicked/README b/wicked/README new file mode 100644 index 000000000..30ec01c25 --- /dev/null +++ b/wicked/README @@ -0,0 +1,109 @@ +=================== +Wicked, Version 0.1 +=================== + +What is Wicked? +=============== + +This module is a wiki application for Horde. + +Goals +===== + +1. To Facilitate Maintaining a Knowledge Base +--------------------------------------------- + +In order to facilitate maintaining a knowledge base, Wicked must make it as +easy as possible to enter information. If the user encounters impediments +when entering information, he or she will be less likely to enter information. +The goal as Wicked evolves, then, is to remove as many impediments to entry as +possible. + +Here are some technological impediments we should be mindful of: + +* Requiring complete documents or validatation which prevents saving. +* Requiring lots of information related to pages (categories, etc.) +* Complicated markup which has to be learned + +We should be mindful that not all impediments are strictly technological-- +there are psychological impediments as well. As a simple example, different +fonts and ways of rendering a page may make it appear more "professional" or +"perfect", and this might discourage a user from adding his thoughts somewhere +near the middle. Another example: a strongly implied organizational structure +for a wiki might discourage someone from contributing some discussion that +does not fit into any of the predefined slots. + +One of the most important factors that will encourage a person to add +information to a knowledge base is whether he or she find useful information +in it. If a user keeps coming back to it to search for useful information, +that user is more likely to contribute. + +2. To Facilitate Inter-connecting Knowledge +------------------------------------------- + +The value of a large knowledge base isn't solely in the amount of information +it contains. There are many large knowledge bases which are difficult to +navigate, and seem to prevent you from finding things that you know must be in +there. One of the ways to avoid this is by facilitating the inter- +connectedness of knowledge-- if we make linking between pages easy, don't +prevent (and even encourage) "dangling" and "accidental" links, and provide +mechanisms so that synonymous terms can refer to the same page, knowledge in +the knowledge base will be much more accessible. + +3. To Facilitate Peer Review and Discussion of Content +------------------------------------------------------ + +The openness of a wiki is one of its great strengths; it allows anyone to add +their opinions or references to facts or whatever. One of the most unique +goals of Wicked is to find new mechanisms to facilitate this. For example, +allowing people to subscribe to a page, area, or the entire wiki to receive +change notifications keeps people coming back to topics that they are +interested in, and adding their opinions. + +Adding an "invite" feature which allows a user to solicit input from a third +party increases traffic and discussion on a topic and also gives Wicked a sort +of one-shot single-topic mailing list feature. It also provides a mechanism +for publishing information, for example to release a memo in an organization. + +4. To Facilitate Accuracy Through Accountability +------------------------------------------------ + +There are only two ways to know whether information is accurate: 1) to have an +idea of the accuracy of the source of that information or 2) to test it. In +most document-management-type solutions, permissions systems are used to +ensure that only authorized users can modify documents, but in wiki we +recognize that permissions are an impediment to contribution. + +Although Wicked does support setting permissions for pages, accuracy in wiki +is provided by tracking changes made to pages so that we always know where +the information came from. This also increases the quality of the content by +providing accountability. + +5. To Facilitate Paper Publishing +--------------------------------- + +Once the collaboration on some piece of knowledge is done, Wicked should +support printing it in a "final form" useful for consumption. + +Features +======== + +[These features may not be fully implemented just yet; they are the targeted +featurs for the Wicked 1.0 release. -JMF] + +1. Change Tracking and Revision History +--------------------------------------- + +2. Full-Text Searching +---------------------- + +3. Support for Multiple Content Types +------------------------------------- + +4. Page and Site Subscriptions and Invitations +---------------------------------------------- + +5. Typesetting to PDF +--------------------- + +$Horde: wicked/README,v 1.3 2004/10/17 16:29:42 eraserhd Exp $ diff --git a/wicked/config/.cvsignore b/wicked/config/.cvsignore new file mode 100644 index 000000000..21063efd4 --- /dev/null +++ b/wicked/config/.cvsignore @@ -0,0 +1,4 @@ +conf.php +conf.bak.php +menu.php +prefs.php diff --git a/wicked/config/.htaccess b/wicked/config/.htaccess new file mode 100644 index 000000000..3a4288278 --- /dev/null +++ b/wicked/config/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/wicked/config/conf.xml b/wicked/config/conf.xml new file mode 100644 index 000000000..41a0d246c --- /dev/null +++ b/wicked/config/conf.xml @@ -0,0 +1,100 @@ + + + + + + Application Settings + + + + + unified + + unified + context + sidebyside + + + false + false + + + /usr/share/games/figlet/fonts/big.flf + + + Default + + Default + BBCode + Creole + Mediawiki + Tiki + + + + 10 + + + + + Look and feel + false + + + + + Menu Settings + + + WikiHome + + _WikiHome + HowTo_UseWiki + _RecentChanges + _AllPages + + + + + + + + + + + + + Storage System Settings + + + sql + + sql + + + + + + wicked_pages + wicked_history + wicked_attachments + wicked_attachment_history + + + + + + diff --git a/wicked/config/menu.php.dist b/wicked/config/menu.php.dist new file mode 100644 index 000000000..d36574a16 --- /dev/null +++ b/wicked/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/wicked/config/prefs.php.dist b/wicked/config/prefs.php.dist new file mode 100644 index 000000000..0da07ba01 --- /dev/null +++ b/wicked/config/prefs.php.dist @@ -0,0 +1,15 @@ + 'a:0:{}', + 'locked' => false, + 'shared' => false, + 'type' => 'implicit' +); diff --git a/wicked/diff.php b/wicked/diff.php new file mode 100644 index 000000000..ae6527063 --- /dev/null +++ b/wicked/diff.php @@ -0,0 +1,60 @@ + + */ + +@define('WICKED_BASE', dirname(__FILE__)); +require_once WICKED_BASE . '/lib/base.php'; + +$v1 = Horde_Util::getFormData('v1'); +$v2 = Horde_Util::getFormData('v2'); + +/* Bail out if we didn't get any versions - at least one of these has + * to be non-empty. */ +if (!$v1 && !$v2) { + $url = Horde::applicationUrl('history.php', true); + $url = Horde_Util::addParameter($url, 'page', Horde_Util::getFormData('page')); + header('Location: ' . $url); + exit; +} + +/* Make sure that $v2 is a higher version than $v1. Empty string is + * the current version of the page, so is always highest. Also, '?' is a + * wildcard for the previous version, so it's always the lowest. */ +if (!$v1 || ($v2 && version_compare($v1, $v2) > 0) || $v2 == '?') { + $tmp = $v1; + $v1 = $v2; + $v2 = $tmp; +} + +$page = Page::getPage(Horde_Util::getFormData('page'), $v2); +if (is_a($page, 'PEAR_Error')) { + $notification->push(sprintf(_("Internal error viewing requested page: %s"), $page->getMessage()), 'horde.error'); + header('Location: ' . Wicked::url('WikiHome', true)); + exit; +} + +if ($v1 == '?') { + $v1 = $page->previousVersion(); +} + +/* Kick back to the display page if we're not allowed to diff this + * page. */ +if (!$page->allows(WICKED_MODE_DIFF)) { + $url = Horde_Util::addParameter(Wicked::url($page->pageName(), true), 'actionID', 'diff'); + header('Location: ' . $url); + exit; +} + +$title = sprintf(_("Diff for %s between %s and %s"), $page->pageName(), $v1, $page->version()); +require WICKED_TEMPLATES . '/common-header.inc'; +require WICKED_TEMPLATES . '/menu.inc'; +$page->render(WICKED_MODE_DIFF, $v1); +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/wicked/display.php b/wicked/display.php new file mode 100644 index 000000000..72a0b00e8 --- /dev/null +++ b/wicked/display.php @@ -0,0 +1,148 @@ + + */ + +require_once dirname(__FILE__) . '/lib/base.php'; + +$page = Page::getCurrentPage(); +if (is_a($page, 'PEAR_Error')) { + $notification->push(_("Internal error viewing requested page"), + 'horde.error'); +} + +$actionID = Horde_Util::getFormData('actionID'); +switch ($actionID) { +case 'lock': + if (!$page->allows(WICKED_MODE_LOCKING)) { + $notification->push(_("You are not allowed to lock this page"), + 'horde.error'); + break; + } + $result = $page->lock(); + if (is_a($result, 'PEAR_Error')) { + $notification->push(sprintf(_("Page failed to lock: %s"), $result->getMessage()), + 'horde.error'); + } + break; + +case 'unlock': + if (!$page->allows(WICKED_MODE_UNLOCKING)) { + $notification->push(_("You are not allowed to unlock this page"), + 'horde.error'); + } + $result = $page->unlock(); + if (is_a($result, 'PEAR_Error')) { + $notification->push( + sprintf(_("Page failed to unlock: %s"), $result->getMessage()), + 'horde.error'); + } else { + $notification->push(_("Page unlocked"), 'horde.success'); + } + break; + +case 'history': + if ($page->allows(WICKED_MODE_HISTORY)) { + /* Redirect to history page. */ + $url = Horde::applicationUrl('history.php', true); + $url = Horde_Util::addParameter($url, 'page', $page->pageName()); + header('Location: ' . $url); + exit; + } + $notification->push(_("This page does not have a history"), 'horde.error'); + break; + +case 'special': + $page->handleAction(); + break; + +case 'export': + if (!$page->allows(WICKED_MODE_DISPLAY)) { + $notification->push(_("You don't have permission to view this page."), + 'horde.error'); + if ($page->pageName() == 'WikiHome') { + Horde::fatal(_("You don't have permission to view this page."), __FILE__, __LINE__); + } else { + header('Location: ' . Wicked::url('WikiHome', true)); + } + exit; + } + + switch (Horde_Util::getGet('format')) { + case 'html': + $format = 'Xhtml'; + $ext = '.html'; + $mime = 'text/html'; + break; + + case 'tex': + $format = 'Latex'; + $ext = '.tex'; + $mime = 'text/x-tex'; + break; + + case 'plain': + default: + $format = 'Plain'; + $ext = '.txt'; + $mime = 'text/text'; + break; + } + + $wiki = &$page->getProcessor($format); + $text = $wiki->transform($page->getText(), $format); + if (is_a($text, 'PEAR_Error')) { + echo $text->getMessage(); + } else { + $browser->downloadHeaders($page->pageTitle() . $ext, $mime, false, strlen($text)); + echo $text; + } + exit(0); + +default: + $wicked->logPageView($page->pageName()); +} + +if (!$page->allows(WICKED_MODE_DISPLAY)) { + $notification->push(_("You don't have permission to view this page."), + 'horde.error'); + if ($page->pageName() == 'WikiHome') { + Horde::fatal(_("You don't have permission to view this page."), __FILE__, __LINE__); + } else { + header('Location: ' . Wicked::url('WikiHome', true)); + } + exit; +} + +$params = Horde_Util::getFormData('params'); +$page->preDisplay(WICKED_MODE_DISPLAY, $params); + +if (!isset($_SESSION['wickedSession']['history'])) { + $_SESSION['wickedSession']['history'] = array(); +} + +if ($page->isLocked()) { + $notification->push(sprintf(_("This page is locked by %s for %d Minutes."), $page->getLockRequestor(), $page->getLockTime()), 'horde.message'); +} + +$title = $page->pageTitle(); +require WICKED_TEMPLATES . '/common-header.inc'; +require WICKED_TEMPLATES . '/menu.inc'; +$page->render(WICKED_MODE_DISPLAY, $params); +require $registry->get('templates', 'horde') . '/common-footer.inc'; + +if (is_a($page, 'StandardPage') && + (!isset($_SESSION['wickedSession']['history'][0]) || + $_SESSION['wickedSession']['history'][0] != $page->pageName())) { + array_unshift($_SESSION['wickedSession']['history'], $page->pageName()); +} +if (count($_SESSION['wickedSession']['history']) > 10) { + array_pop($_SESSION['wickedSession']['history']); +} diff --git a/wicked/docs/CHANGES b/wicked/docs/CHANGES new file mode 100644 index 000000000..6e3d51e2b --- /dev/null +++ b/wicked/docs/CHANGES @@ -0,0 +1,123 @@ +-------- +v1.0-cvs +-------- + +[jan] Drop support for coWiki markup. +[jan] Fix Oracle SQL scripts. +[jan] Implement pessimistic locking based on Horde_Lock. +[mjr] Add default lighttpd-style rewrite rules. +[jan] Add Brazilian Portuguese translation (Luis Felipe Marzagao + ). +[cjh] Support arbitrary charsets for page names (Bug #7805). +[cjh] Fix saveTemplate API call (Duck , Bug #7620). +[jan] Add Italian translation (Fabio Pedretti ). +[jan] Add Precedence and Auto-Submitted headers to notification messages. +[cjh] Add an API method for fetching recent changes, and allow specifying + the number of days to look back in the RecentChanges page + (Duck , Request #7230). +[jan] Add script to convert data to UTF-8 in the backend. +[cjh] Allow downloading from/uploading to a remote wiki server + (Duck , Request #7191). +[cjh] Add getMultiplePageInfo() and getPageHistory() API calls, along with + page checksums (Duck , Request #7189). +[cjh] Add Download this page as... link (Duck , Request #7168). +[cjh] Add renderPage() API call (duck@obala.net). +[cjh] Add list(), getPageInfo(), show(), and pageExists() API calls + (Duck , Request #7149). +[jan] Add display and edit API methods (Duck , Request #6130). +[jan] Add Japanese translation (Takeshi Taguchi ). +[cjh] Fix permission checks for non-admins when deleting and reverting + (Bug #5806). +[cjh] Fix removing the most recent revision with some databases (Bug #5807). +[jan] Work around problems with Text_Wiki and PHP 5.2.5+ (Bug #5951). +[mms] Compress download data. +[jan] Add OpenSearch interface for page search through browser bars. +[jan] Add Ukrainian translation (Andriy Kopystyansky ). +[cjh] Support mod_rewrite style URLs with Text_Wiki 1.2 (Bug #4740). +[jan] Allow to add images from other pages (Request #5448). +[cjh] Enforce READ permissions for all page modes (Bug #5328). +[jan] Add Slovenian translation (Duck ). +[jan] Fix searching for non-ascii strings (Bug #4644). +[mms] Add initial CAPTCHA support. +[cjh] Fix deletion of the most recent revision. +[cjh] Table of Contents is now floated to the right and collapses/expands on + click. +[jan] Show similar pages before creating a new one. +[cjh] Ensure external links attached to images go through Horde::externalUrl() + (tasin@fhm.edu, Bug #3151). +[cjh] Include matching context in PageSearch results (Request #2485). +[cjh] Encode notification emails correctly (tasin@fhm.edu, Bug #3153). +[cjh] Don't create pages until they have content (Bug #2534). +[cjh] Run all revert actions through a non-JavaScript, POST + confirmation page. +[cjh] Run all page/version deletion through a non-JavaScript, POST + confirmation page. +[ben] Better support for MS-SQL. +[cjh] Add [[link ...]] syntax for calling $registry->link() in pages + (Bug #1474). +[cjh] Fix Wiki Page Block when the page being displayed has attachments + (Bug #2258). +[cjh] Only list standard pages in Wicked's "Back to" history (Bug #2252). +[cjh] Delete all attachments to a page when that page is deleted. +[cjh] Attachments can now be deleted (Bug #2246). +[cjh] Send notification emails when files are attached (Bug #2248). +[mas] Include changelogs in emails, if available. (Bug #2068) +[cjh] If there is only one search result, go directly to it. +[jan] Support type="htmlphp" attribute for code blocks. +[cjh] Show a summary of any attachments on a page (Bug #1473). +[cjh] Fix updating of attachments (Bug #1579). +[cjh] Add a config option to toggle use of pretty URLS with mod_rewrite + (Bug #1878). +[jan] Support arbitrary charsets for page contents (with Text_Wiki > 1.0.0). +[cjh] Require PERMS_EDIT to attach files to a page (tasin@fhm.edu, Bug #1880). +[cjh] Send email on MergeOrRename (Bug #916). +[cjh] Go to the newly merged or renamed page after MergeOrRename (Bug #916). +[cjh] Display the page that was edited after editing instead of going to + WikiHome (Bug #1478). +[cjh] Require PERMS_EDIT to MergeOrRename a page (Bug #915). +[cjh] Use bind variables in SQL driver (selsky@columbia.edu, #1746). +[cjh] Multiple-definition guard for separator() (Bug #1710). +[jmf] References to special pages in wiki text no longer look deleted. +[jmf] Ability to set permissions on special pages. +[jmf] Prevent loosing attachments when renaming pages. +[jan] Add test page. +[jan] Add Finnish translation (Leena Heino ). +[jmf] Add command-line script to manipulate wiki pages (Vijay Mahrra + ). +[jmf] Add "Create" buttons on TitleSearch and PageSearch pages (Vijay Mahrra + ). +[jmf] Add quick diff link (show changes from last version) when viewing page. +[jmf] Add configuration option to require change descriptions. +[jan] Notify about page deletions. +[jmf] Add support for displaying attached images. +[jmf] Add the ability to attach files to pages. +[jmf] Add the ability to merge and rename pages. +[jan] Add Spanish translation (Manuel Perez Ayala ). +[jmf] Implement templates (templates are pages which begin or end with + "Template"). +[jan] Add Traditional Chinese translation (David Chang ). +[jan] Add history drop down list to jump to the last visited pages. +[cjh] Add MostPopular and LeastPopular wiki pages. +[cjh] Log page views. +[cjh] A parameter of autocreate=1 must now be passed to display.php for pages + that don't exist to be created automatically. This is done by default + for "?" links, but for external incoming links and results of the top + left jump box, users will get a form that allows them to confirm + creation of the new page. +[cjh] Add AllPages Page and Block implementations. +[cjh] Wicked now provides Horde_Blocks for doing TitleSearches and viewing + RecentChanges. +[cjh] TitleSearch now works and is available as a global menu option. +[cjh] Add a Preview button in the EditPage screen. +[cjh] Move BackLinks and LikePages to the toolbar. +[cjh] Store and display changelogs for page revisions. +[cjh] In the history view, diffs between page versions work now. +[jmf] Add jump box. +[jan] Update to work with Text_Wiki 0.8. +[cjh] Use Text_Diff for diff generation. +[jan] Add Page::allows(). +[jan] Add Wicked::mail(). +[jan] Add diff and notification support. +[jan] Add German translation. +[jan] Allow keeping guests from editing and creating pages. +[tjc] Initial version. diff --git a/wicked/docs/CREDITS b/wicked/docs/CREDITS new file mode 100644 index 000000000..e63b6abce --- /dev/null +++ b/wicked/docs/CREDITS @@ -0,0 +1,28 @@ +========================= + Wicked Development Team +========================= + + +Core Developers +=============== + +- Tyler Colbert + - Initial codebase +- Chuck Hagenbuch +- Jan Schneider + + +Localization +============ + +====================== =============================================== +Brazilian Portuguese Luis Felipe Marzagao +Chinese (Traditional) David Chang +Finnish Leena Heino +German Jan Schneider +Italian Fabio Pedretti +Japanese Takeshi Taguchi +Slovenian Duck +Spanish Manuel Perez Ayala +Ukrainian Andriy Kopystyansky +====================== =============================================== diff --git a/wicked/docs/INSTALL b/wicked/docs/INSTALL new file mode 100644 index 000000000..4246be5c4 --- /dev/null +++ b/wicked/docs/INSTALL @@ -0,0 +1,213 @@ +======================= + Installing Wicked 0.1 +======================= + +:Last update: $Date: 2007/06/19 09:56:39 $ +:Revision: $Revision: 1.13 $ + + +This document contains instructions for installing the Wicked web-based Wiki +application on your system. + +For information on the capabilities and features of Wicked, see the file +README_ in the top-level directory of the Wicked distribution. + + +Obtaining Wicked +================ + +Wicked can be obtained from the Horde website and FTP server, at + + http://www.horde.org/wicked/ + + ftp://ftp.horde.org/pub/wicked/ + +Or use the mirror closest to you: + + http://www.horde.org/mirrors.php + +Bleeding-edge development versions of Wicked are available via CVS; see the +file `horde/docs/HACKING`_, or the website http://www.horde.org/source/, for +information on accessing the Horde CVS repository. + + +Prerequisites +============= + +To function properly, Wicked **requires** the following: + +1. A working Horde installation + + Wicked runs within the `Horde Application Framework`_, a set of common + tools for Web applications written in PHP. You must install Horde before + installing Wicked. + + .. Important:: Wicked requires version 3.2+ of the Horde Framework - + earlier versions of Horde will **not** work. + + 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 Wicked'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 Wicked. + + .. _`Horde Application Framework`: http://www.horde.org/horde/ + +2. SQL support in PHP + + Wicked stores its data in an SQL database. Build PHP with whichever + SQL driver you require; see the Horde INSTALL file for details. + +3. The Text_Wiki PEAR module (>= 1.2.0) + + This can be installed using the ``pear`` command-line program with the + following command:: + + pear install Text_Wiki + + Wicked currently requires a version greater than 1.0.0 of Text_Wiki to + function correctly with full charset support. Earlier versions might work + if you only use pure ascii texts. + + +Installing Wicked +================= + +Wicked 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, Wicked is installed directly underneath Horde in the web +server's document tree. + +Since Wicked 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/wicked-0.1.tar.gz + mv wicked-0.1 wicked + +and would then find Wicked at the URL:: + + http://your-server/horde/wicked/ + + +Configuring Wicked +================== + +1. Configuring Horde for Wicked + + a. Register the application + + In ``horde/config/registry.php``, find the applications['wicked'] + stanza. The ``status`` parameter must be marked ``=> active``. If you + have changed the location of Wicked relative to Horde, either in the URL + or 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 Wicked database table depend on which + database you've chosen to use. + + First, look in ``scripts/sql/`` 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. (Note that executing the script as + the ``horde`` user will probably fail when granting privileges.) + + If such a script does not exist, you'll need to build your own, using the + file wicked.sql as a starting point. If you need assistance in creating + databases, you may wish to let us know on the Wicked mailing list. + +3. Configuring Wicked + + To configure Wicked, 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 Wicked's + appearance and behavior. With the exception of the ``conf.*`` files (see + below), the defaults will be correct for most sites. + + You must login to Horde as a Horde Administrator to finish the configuring + of Wicked. 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 ``Wiki`` from the selection list of + applications. Fill in or change any configuration values as needed. When + done click on ``Generate Wiki Configuration`` to generate the ``conf.php`` + file. If your web server doesn't have write permissions to the Wicked + 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 ``wicked/config/conf.php``. + + Note for international users: Wicked 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), or if you're having trouble using a + provided translation, please see the `horde/docs/TRANSLATIONS`_ file for + instructions. + +4. Testing Wicked + + Test at least the following: + + - Modify a page + - Create a new page via a WikiLink + - Delete a page + +URL Styles +========== +Wicked can use two forms of URL's; mod_rewrite style, or GET style. +Your web server must have mod_rewrite enabled to use the mod_rewrite +style. Apache Servers or Apache Proxy Servers may also need to have +AllowEncodedSlashes and/or AcceptPathInfo enabled to use the mod_rewrite +style. The GET style URL's should work without any special configuration. + +Obtaining Support +================= + +If you encounter problems with Wicked, 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 Wicked is free software written by volunteers. For +information on reasonable support expectations, please read + + http://www.horde.org/support.php + +Thanks for using Wicked! + +The Wicked team + + +.. _README: ?f=README.html +.. _`horde/docs/INSTALL`: ../../horde/docs/?f=INSTALL.html +.. _`horde/docs/HACKING`: ../../horde/docs/?f=HACKING.html +.. _`horde/docs/TRANSLATIONS`: ../../horde/docs/?f=TRANSLATIONS.html diff --git a/wicked/docs/TODO b/wicked/docs/TODO new file mode 100644 index 000000000..87bf2dd9b --- /dev/null +++ b/wicked/docs/TODO @@ -0,0 +1,65 @@ +================================== +|| Wicked Development TODO List || +================================== + +- When creating a page, take the user directly to the EditPage form. + +- Notifications of changed/added content ("commit" messages). Allow + for daily summaries, and figure out some way to categorize changes in + a structure for sanity with large sites. + +- Lots of ideas/references: http://c2.com/cgi/wiki, + http://twistedmatrix.com/users/jh.twistd/moin/moin.cgi/FrontPage + +- Allow customizations for specific uses like collaborative content, + (editing, notes, annotations, etc.), encyclopedias (glossaries, etc.), + FAQ, and so on. + +- Provide a mechanism to easily annotate (insert a (possibly signed) comment + at any point in the page. + +- Also, an easy 'Reply' feature, allowing the user to select text and reply + to it in thread mode. + +- Ability to generate a backup of the whole wiki (zipfile or otherwise). + +- Ability to generate a static HTML version of the wiki. + +- Ability to purge all page history (just leaving the current version). + +- Help pages (any page that starts with Help). + +- Find a way to keep old versions of deleted pages? + +- Ability to embed Horde_Block instances so that we can show ansel images, + kronolith calendars, etc. + +- Export pages to PDF. + +- Some method to associate users with homepages. + +- Horde_Driver_sql::getBackLinks() will incorrectly match a WikiWord in a + ((...))-style link. + +- Make RecentChanges use page_id to track changes accross renames. + +- Make permissions based on page_id, not page_name, so we don't loose + permissions when a page is renamed. + +- When pages are merged, merge attachments as well. + +- Add a page_content_type, which is a MIME type. Editors can be registered + and we use the Horde_Mime packages for display. This way we can have wiki + images, and we can have other apps register handlers. + +- Support for reStructuredText. + +- Could start very basic: a new content-type "book" or "areamap", like + YaWiki's areamap + (http://wiki.ciaweb.net/yawiki/index.php?area=Sandbox&page=AreaMap, thanks + to Paul Jones for the reference) + +- Ability to export a book to PDF. + + +$Horde: wicked/docs/TODO,v 1.25 2009/04/20 17:08:32 chuck Exp $ diff --git a/wicked/docs/lighttpd-wicked.conf b/wicked/docs/lighttpd-wicked.conf new file mode 100755 index 000000000..165fcad07 --- /dev/null +++ b/wicked/docs/lighttpd-wicked.conf @@ -0,0 +1,23 @@ +## This file should be reviewed prior to inclusion in your lighttpd +## configuration. Specifically, if you have ansel somewhere other than +## /horde/wicked 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-wicked.conf" +## The exact path you use will of course depend on your specific configuration. + +url.rewrite-once += ( + "^/horde/wicked/diff\.php.*$" => "$0", + "^/horde/wicked/display\.php.*$" => "$0", + "^/horde/wicked/history\.php.*$" => "$0", + "^/horde/wicked/index.php\.*$" => "$0", + "^/horde/wicked/opensearch\.php.*$" => "$0", + "^/horde/wicked/preview\.php.*$" => "$0", + "^/horde/wicked/test\.php.*$" => "$0", + "^/horde/wicked/view\.php.*$" => "$0", + "^/horde/wicked/(themes|js)/.*$" => "$0", + "^/horde/wicked/([A-Za-z0-9]+)/?(?:\?(.*))?$" => "/horde/wicked/display.php?page=$1&$2", + "^/horde/wicked/([A-Za-z0-9].*)$" => "/horde/wicked/display.php?page=$1" +) diff --git a/wicked/history.php b/wicked/history.php new file mode 100644 index 000000000..f71598239 --- /dev/null +++ b/wicked/history.php @@ -0,0 +1,34 @@ + + */ + +@define('WICKED_BASE', dirname(__FILE__)); +require_once WICKED_BASE . '/lib/base.php'; + +$page = Page::getCurrentPage(); +if (is_a($page, 'PEAR_Error')) { + $notification->push(_("Internal error viewing requested page"), 'horde.error'); + header('Location: ' . Wicked::url('WikiHome', true)); + exit; +} + +if (!$page->allows(WICKED_MODE_HISTORY)) { + /* Redirect to display page and force it to display an error. */ + $url = Horde_Util::addParameter(Wicked::url($page->pageName(), true), 'actionID', 'history'); + header('Location: ' . $url); + exit; +} + +$title = sprintf(_("History: %s"), $page->pageName()); +require WICKED_TEMPLATES . '/common-header.inc'; +require WICKED_TEMPLATES . '/menu.inc'; +$page->render(WICKED_MODE_HISTORY); +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/wicked/index.php b/wicked/index.php new file mode 100644 index 000000000..dd30ecfe6 --- /dev/null +++ b/wicked/index.php @@ -0,0 +1,23 @@ + + */ + +@define('WICKED_BASE', dirname(__FILE__)); +$wicked_configured = (is_readable(WICKED_BASE . '/config/conf.php') && + is_readable(WICKED_BASE . '/config/prefs.php')); + +if (!$wicked_configured) { + require WICKED_BASE . '/../lib/Test.php'; + Horde_Test::configFilesMissing('Wicked', WICKED_BASE, + array('conf.php', 'prefs.php')); +} + +require WICKED_BASE . '/display.php'; diff --git a/wicked/js/toc.js b/wicked/js/toc.js new file mode 100644 index 000000000..5a9d5c2af --- /dev/null +++ b/wicked/js/toc.js @@ -0,0 +1,37 @@ +/** + * Javascript code for making the ToC collapsible. + * + * $Horde: wicked/js/toc.js,v 1.3 2007/01/02 00:42:09 jan Exp $ + * + * See the enclosed file COPYING for license information (GPL). If you + * did not receive this file, see http://www.fsf.org/copyleft/gpl.html. + */ + +addEvent(window, 'load', wicked_toc); +function wicked_toc() +{ + var toc = document.getElementById('toc'); + var ol, h2; + for (var i = 0; i < toc.childNodes.length; ++i) { + var tagName = toc.childNodes[i].tagName.toUpperCase(); + if (tagName == 'OL') { + ol = toc.childNodes[i]; + } else if (tagName == 'H2') { + h2 = toc.childNodes[i]; + } + } + + if (!ol) { + return; + } + + h2.style.cursor = 'pointer'; + + addEvent(h2, 'click', function() { + if (ol.style.display != 'none') { + ol.style.display = 'none'; + } else { + ol.style.display = ''; + } + }); +} diff --git a/wicked/lib/Block/page.php b/wicked/lib/Block/page.php new file mode 100644 index 000000000..ca86de549 --- /dev/null +++ b/wicked/lib/Block/page.php @@ -0,0 +1,45 @@ + + * @package Horde_Block + */ +class Horde_Block_Wicked_page extends Horde_Block { + + var $_app = 'wicked'; + + function _title() + { + require_once dirname(__FILE__) . '/../base.php'; + + $page = Page::getPage($this->_params['page']); + return htmlspecialchars($page->pageName()); + } + + function _content() + { + require_once dirname(__FILE__) . '/../base.php'; + + $page = Page::getPage($this->_params['page']); + return $page->render(WICKED_MODE_BLOCK); + } + + function _params() + { + return array('page' => array('type' => 'text', + 'name' => _("Name of wiki page to display"), + 'default' => 'WikiHome')); + } + +} diff --git a/wicked/lib/Driver.php b/wicked/lib/Driver.php new file mode 100644 index 000000000..f265a4693 --- /dev/null +++ b/wicked/lib/Driver.php @@ -0,0 +1,489 @@ + + * @package Wicked + */ +class Wicked_Driver { + + /** + * Hash containing connection parameters. + * + * @var array + */ + var $_params = array(); + + /** + * VFS object for storing attachments. + * + * @var VFS + */ + var $_vfs; + + /** + * Constructs a new Wicked driver object. + * + * @param array $params A hash containing connection parameters. + */ + function Wicked_Driver($params = array()) + { + $this->_params = $params; + } + + /** + * Accessor to manage a VFS instance. + */ + function &getVFS() + { + if (!$this->_vfs) { + $this->_vfs =& VFS::singleton($GLOBALS['conf']['vfs']['type'], + Horde::getDriverConfig('vfs')); + } + + return $this->_vfs; + } + + /** + * Retrieves the page of a particular name from the database. + * + * @param string $pagename The name of the page to retrieve + * + * @return boolean True on success, PEAR_Error on failure. + */ + function retrieveByName($pagename) + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Retrieves a historic version of a page. + * + * @abstract + * @param string $pagename The name of the page to retrieve. + * @param string $version The version to retrieve. + * + * @return array The page hash, or PEAR_Error on failure. + */ + function retrieveHistory($pagename, $version) + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Logs a hit to $pagename. + * + * @param string $pagename The page that was viewed. + * + * @return boolean True or PEAR_Error on failure. + */ + function logPageView($pagename) + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Creates a new page. + * + * @abstract + * + * @param string $pagename The new page's name. + * @param string $text The new page's text. + * + * @return mixed True, or PEAR_Error on failure. + */ + function newPage($pagename, $text) + { + return PEAR::raiseError(_("Not implemented.")); + } + + function updateText($pagename, $text, $changelog, $minorchange) + { + return PEAR::raiseError(_("Unsupported")); + } + + function renamePage($pagename, $newname) + { + return PEAR::raiseError(_("Unsupported")); + } + + function getPageId($pagename) + { + $pages = $this->getPages(); + if (is_a($pages, 'PEAR_Error')) { + return $pages; + } + $ids = array_flip($pages); + return isset($ids[$pagename]) ? $ids[$pagename] : false; + } + + function getPage($pagename) + { + return array(); + } + + function getPageById($id) + { + return array(); + } + + function getSpecialPages() + { + static $pages; + if (isset($pages)) { + return $pages; + } + + $dh = opendir(WICKED_BASE . '/lib/Page'); + $pages = array(); + while (($dent = readdir($dh)) !== false) { + if (!preg_match('/(.*)\.php$/', $dent, $matches)) { + continue; + } + $pageName = $matches[1]; + if ($pageName == 'StandardPage') { + continue; + } + $pages[$pageName] = $pageName; + } + closedir($dh); + return $pages; + } + + function getPages($special = true) + { + return array(); + } + + function pageExists($pagename) + { + return in_array($pagename, $this->getPages()); + } + + function getAllPages() + { + return PEAR::raiseError(_("Unsupported")); + } + + function getHistory($pagename) + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Returns the most recently changed pages. + * + * @param integer $days The number of days to look back. + * + * @return mixed An array of pages, or PEAR_Error on failure. + */ + function getRecentChanges($days = 3) + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Returns the most popular pages. + * + * @abstract + * + * @param integer $limit The number of most popular pages to return. + * + * @return mixed An array of pages, or PEAR_Error on failure. + */ + function mostPopular($limit = 10) + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Returns the least popular pages. + * + * @abstract + * + * @param integer $limit The number of least popular pages to return. + * + * @return mixed An array of pages, or PEAR_Error on failure. + */ + function leastPopular($limit = 10) + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Finds pages with matches in text or title. + * + * @abstract + * + * @param string $searchtext The search expression (Google-like). + * + * @return array A list of pages, or PEAR_Error on failure. + */ + function searchText($searchtext) + { + return PEAR::raiseError(_("Unsupported")); + } + + function getBackLinks($pagename) + { + return PEAR::raiseError(_("Unsupported")); + } + + function getLikePages($pagename) + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Retrieves data on files attached to a page. + * + * @abstract + * + * @param string $pageId This is the Id of the page for which we'd + * like to find attached files. + * @param boolean $allversions Whether to include all versions. If false + * or omitted, only the most recent version + * of each attachment is returned. + * @return mixed An array of key/value arrays describing the attached + * files or a PEAR_Error:: instance on failure. + */ + function getAttachedFiles($pageId, $allversions = false) + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Attaches a file to a page or update an attachment. + * + * @param array $file This is a key/value array describing the + * attachment:
+     *   'page_id' =>          This is the id of the page to which we would
+     *                         like to attach the file.
+     *   'attachment_name' =>  This is the filename of the attachment.
+     *   'minor' =>            This is a boolean which indicates whether this
+     *                         is a minor version update.
+     *   'change_log' =>       A change log entry for this attach or update
+     *                         operation.  (Optional)
+     *   'change_author' =>    The user uploading this file.  If not present,
+     *                         the currently logged-in user is assumed.
+ * @param string $data This is the contents of the file to be attached. + * + * @return boolean True or PEAR_Error:: instance on failure. + */ + function attachFile($file, $data) + { + $vfs =& $this->getVFS(); + if (is_a($vfs, 'PEAR_Error')) { + return $vfs; + } + + if (!isset($file['change_author'])) { + $file['change_author'] = Horde_Auth::getAuth(); + } + + $result = $this->_attachFile($file); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + + /* We encode the path quoted printable so we won't get any nasty + * characters the filesystem might reject. */ + $path = WICKED_VFS_ATTACH_PATH . '/' . $file['page_id']; + return $vfs->writeData($path, $file['attachment_name'] . ';' . $result, $data, true); + } + + /** + * Remove a single version or all versions of an attachment to + * $pageId from the VFS backend. + * + * @param integer $pageId The Id of the page the file is attached to. + * @param string $attachment The name of the file. + * @param string $version If specified, the version to delete. If null, + * then all versions of $attachment will be removed. + * + * @return boolean|PEAR_Error Either true or a PEAR_Error describing failure. + */ + function removeAttachment($pageId, $attachment, $version = null) + { + $vfs =& $this->getVFS(); + if (is_a($vfs, 'PEAR_Error')) { + return $vfs; + } + + $path = WICKED_VFS_ATTACH_PATH . '/' . $pageId; + + $fileList = $this->getAttachedFiles($pageId, true); + foreach ($fileList as $file) { + $fileversion = $file['attachment_majorversion'] . '.' . $file['attachment_minorversion']; + if ($file['attachment_name'] == $attachment && + (is_null($version) || $fileversion == $version)) { + /* Skip any attachments that don't exist so they can + * be cleared out of the backend. */ + if (!$vfs->exists($path, $attachment . ';' . $fileversion)) { + continue; + } + $result = $vfs->deleteFile($path, $attachment . ';' . $fileversion); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + } + } + + return true; + } + + /** + * Removes all attachments to $pageId from the VFS backend. + * + * @param integer $pageId The Id of the page to remove attachments from. + * + * @return boolean|PEAR_Error Either true or a PEAR_Error describing failure. + */ + function removeAllAttachments($pageId) + { + $vfs =& $this->getVFS(); + if (is_a($vfs, 'PEAR_Error')) { + return $vfs; + } + + if (!$vfs->isFolder(WICKED_VFS_ATTACH_PATH, $pageId)) { + return true; + } + return $vfs->deleteFolder(WICKED_VFS_ATTACH_PATH, $pageId, true); + } + + /** + * Handles the driver-specific portion of attaching a file. + * + * Wicked_Driver::attachFile() calls down to this method for the driver- + * specific portion, and then uses VFS to store the attachment. + * + * @abstract + * + * @access protected + * + * @param array $file See Wicked_Driver::attachFile(). + * + * @return boolean The new version of the file attached, or a PEAR_Error:: + * instance on failure. + */ + function _attachFile($file) + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Retrieves the contents of an attachment. + * + * @param string $pageId This is the name of the page to which the file + * is attached. + * @param string $filename This is the name of the attachment. + * @param string $version This is the version of the attachment. + * + * @return string The file's contents or a PEAR_Error on error. + */ + function getAttachmentContents($pageId, $filename, $version) + { + $vfs =& $this->getVFS(); + if (is_a($vfs, 'PEAR_Error')) { + return $vfs; + } + + $path = WICKED_VFS_ATTACH_PATH . '/' . $pageId; + return $vfs->read($path, $filename . ';' . $version); + } + + function removeVersion($pagename, $version) + { + return PEAR::raiseError(_("Unsupported")); + } + + function removeAllVersions($pagename) + { + /* When deleting a page, also delete all its attachments. */ + $result = $this->removeAllAttachments($this->getPageId($pagename)); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + + return true; + } + + function searchTitles($searchtext) + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Returns the charset used by the backend. + * + * @return string The backend's charset + */ + function getCharset() + { + return Horde_Nls::getCharset(); + } + + /** + * Attempts to return a concrete Wicked_Driver instance based on $driver. + * + * @param string $driver The type of the concrete Wicked_Driver subclass + * to return. + * @param array $params A hash containing any additional configuration or + * connection parameters a subclass might need. + * + * @return mixed The newly created concrete Wicked_Driver instance, or + * false on an error. + */ + function factory($driver = null, $params = null) + { + if ($driver === null) { + $driver = $GLOBALS['conf']['storage']['driver']; + } + $driver = basename($driver); + + if ($params === null) { + $params = Horde::getDriverConfig('storage', $driver); + } + + $class = 'Wicked_Driver_' . $driver; + if (!class_exists($class)) { + include_once dirname(__FILE__) . '/Driver/' . $driver . '.php'; + } + if (class_exists($class)) { + $wicked = new $class($params); + $result = $wicked->connect(); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + return $wicked; + } else { + return PEAR::raiseError('Definition of ' . $class . ' not found.'); + } + + return $wicked; + } + +} diff --git a/wicked/lib/Driver/sql.php b/wicked/lib/Driver/sql.php new file mode 100644 index 000000000..06547a795 --- /dev/null +++ b/wicked/lib/Driver/sql.php @@ -0,0 +1,1030 @@ + + * 'phptype' The database type (e.g. 'pgsql', 'mysql', etc.). + * 'hostspec' The hostname of the database server. + * 'protocol' The communication protocol ('tcp', 'unix', etc.). + * 'username' The username with which to connect to the database. + * 'password' The password associated with 'username'. + * 'database' The name of the database. + * 'table' The name of the tasks table in 'database'. + * 'charset' The database's internal charset. + * + * Required by some database implementations:
+ *      'options'       Additional options to pass to the database.
+ *      'tty'           The TTY on which to connect to the database.
+ *      'port'          The port on which to connect to the database.
+ * + * The table structure can be created by the scripts/drivers/wicked_foo.sql + * script. + * + * @author Tyler Colbert + * @author Chuck Hagenbuch + * @package Wicked + */ +class Wicked_Driver_sql extends Wicked_Driver { + + /** + * Handle for the current database connection. + * + * @var DB + */ + var $_db; + + /** + * Constructs a new Wicked SQL driver object. + * + * @param array $params A hash containing connection parameters. + */ + function Wicked_Driver_sql($params = array()) + { + parent::Wicked_Driver($params); + } + + /** + * Retrieves the page of a particular name from the database. + * + * @param string $pagename The name of the page to retrieve. + * + * @return mixed True on success, PEAR_Error on failure. + */ + function retrieveByName($pagename) + { + $where = 'page_name = ' . $this->_db->quote($this->_convertToDriver($pagename)); + + $pages = $this->_retrieve($this->_params['table'], $where); + if (is_a($pages, 'PEAR_Error')) { + Horde::logMessage($pages, __FILE__, __LINE__, PEAR_LOG_ERR); + return $pages; + } + + if (!empty($pages[0])) { + return $pages[0]; + } + + return PEAR::raiseError($pagename . ' not found'); + } + + /** + * Retrieves a historic version of a page. + * + * @param string $pagename The name of the page to retrieve. + * @param string $version The version to retrieve. + * + * @return array The page hash, or PEAR_Error on failure. + */ + function retrieveHistory($pagename, $version) + { + if (empty($version) or !preg_match('/^[0-9]+\.[0-9]+$/', $version)) { + return PEAR::raiseError('invalid version number'); + } + + list($major, $minor) = explode('.', $version); + $where = sprintf('page_name = %s AND page_majorversion = %s AND ' . + 'page_minorversion = %s', + $this->_db->quote($this->_convertToDriver($pagename)), + (int)$major, (int)$minor); + + return $this->_retrieve($this->_params['historytable'], $where); + } + + function getPage($pagename) + { + $where = 'page_name = ' . $this->_db->quote($this->_convertToDriver($pagename)); + return $this->_retrieve($this->_params['table'], $where); + } + + function getPageById($id) + { + $where = 'page_id = ' . (int)$id; + return $this->_retrieve($this->_params['table'], $where); + } + + function getAllPages() + { + return $this->_retrieve($this->_params['table'], '', 'page_name'); + } + + function getHistory($pagename) + { + $where = 'page_name = ' . $this->_db->quote($this->_convertToDriver($pagename)) . + ' ORDER BY page_majorversion DESC, page_minorversion DESC'; + + return $this->_retrieve($this->_params['historytable'], $where); + } + + /** + * Returns the most recently changed pages. + * + * @param integer $days The number of days to look back. + * + * @return mixed An array of pages, or PEAR_Error on failure. + */ + function getRecentChanges($days = 3) + { + $where = 'version_created > ' . (time() - (86400 * $days)); + + $result = $this->_retrieve($this->_params['table'], $where, 'version_created DESC'); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + + $result2 = $this->_retrieve($this->_params['historytable'], $where, 'version_created DESC'); + if (is_a($result2, 'PEAR_Error')) { + return $result2; + } + + return array_merge($result, $result2); + } + + /** + * Returns the most popular pages. + * + * @param integer $limit The number of most popular pages to return. + * + * @return mixed An array of pages, or PEAR_Error on failure. + */ + function mostPopular($limit = 10) + { + return $this->_retrieve($this->_params['table'], '', 'page_hits DESC', $limit); + } + + /** + * Returns the least popular pages. + * + * @param integer $limit The number of least popular pages to return. + * + * @return mixed An array of pages, or PEAR_Error on failure. + */ + function leastPopular($limit = 10) + { + return $this->_retrieve($this->_params['table'], '', 'page_hits ASC', $limit); + } + + function searchTitles($searchtext) + { + require_once 'Horde/SQL.php'; + $searchtext = $this->_convertToDriver($searchtext); + $where = Horde_SQL::buildClause($this->_db, 'page_name', 'LIKE', $searchtext); + return $this->_retrieve($this->_params['table'], $where); + } + + /** + * Finds pages with matches in text or title. + * + * @param string $searchtext The search expression (Google-like). + * @param boolean $title default true If true, both page title and text + * are searched. If false, only page + * text is searched. + * + * @return array A list of pages, or PEAR_Error on failure. + */ + function searchText($searchtext, $title = true) + { + require_once 'Horde/SQL/Keywords.php'; + $searchtext = $this->_convertToDriver($searchtext); + + $textClause = Horde_SQL_Keywords::parse('page_text', $searchtext); + if (is_a($textClause, 'PEAR_Error')) { + return $textClause; + } + + if ($title) { + $nameClause = Horde_SQL_Keywords::parse('page_name', $searchtext); + if (is_a($nameClause, 'PEAR_Error')) { + return $nameClause; + } + + $where = '(' . $nameClause . ') OR (' . $textClause . ')'; + } else { + $where = $textClause; + } + + return $this->_retrieve($this->_params['table'], $where); + } + + function getBackLinks($pagename) + { + $where = 'page_text LIKE ' . $this->_db->quote('%' . $this->_convertToDriver($pagename) . '%'); + $pages = $this->_retrieve($this->_params['table'], $where); + if (is_a($pages, 'PEAR_Error')) { + return $pages; + } + + /* We've cast a wide net, so now we filter out pages which don't + * actually refer to $pagename. */ + + $patterns = array('/\(\(' . preg_quote($pagename, '/') . '(?:\|[^)]+)?\)\)/'); + if (preg_match('/^' . WICKED_REGEXP_WIKIWORD . '$/', $pagename)) { + $patterns[] = '/\b' . preg_quote($pagename, '/') . '\b/'; + } + + foreach ($pages as $key => $page) { + $match = false; + foreach ($patterns as $pattern) { + if (preg_match($pattern, $page['page_text'])) { + $match = true; + } + } + if (!$match) { + unset($pages[$key]); + } + } + + return $pages; + } + + function getMatchingPages($searchtext, $matchType = WICKED_PAGE_MATCH_ANY) + { + $searchtext = Horde_String::lower($searchtext); + + /* Short circuit the simple case. */ + if ($matchType == WICKED_PAGE_MATCH_ANY) { + return $this->_retrieve($this->_params['table'], + 'LOWER(page_name) LIKE ' . $this->_db->quote('%' . $searchtext . '%')); + } + + $clauses = array(); + if ($matchType & WICKED_PAGE_MATCH_LEFT) { + $clauses[] = 'LOWER(page_name) LIKE ' . $this->_db->quote($searchtext . '%'); + } + if ($matchType & WICKED_PAGE_MATCH_RIGHT) { + $clauses[] = 'LOWER(page_name) LIKE ' . $this->_db->quote('%' . $searchtext); + } + + if (!$clauses) { + return array(); + } + + return $this->_retrieve($this->_params['table'], implode(' OR ', $clauses)); + } + + function getLikePages($pagename) + { + if (Horde_String::isUpper($pagename)) { + $firstword = $pagename; + $lastword = null; + } else { + /* Get the first and last word of the page name. */ + $count = preg_match_all('/[A-Z][a-z]*/', $pagename, $matches); + if (!$count) { + return array(); + } + $matches = $matches[0]; + + $firstword = $matches[0]; + $lastword = $matches[$count - 1]; + + if (strlen($firstword) == 1 && strlen($matches[1]) == 1) { + for ($i = 1; $i < $count; $i++) { + $firstword .= $matches[$i]; + if (isset($matches[$i + 1]) && strlen($matches[$i + 1]) > 1) { + break; + } + } + } + + if (strlen($lastword) == 1 && strlen($matches[$count - 2]) == 1) { + for ($i = $count - 2; $i > 0; $i--) { + $lastword = $matches[$i] . $lastword; + if (isset($matches[$i - 1]) && strlen($matches[$i - 1]) > 1) { + break; + } + } + } + } + + require_once 'Horde/SQL.php'; + + $where = Horde_SQL::buildClause($this->_db, 'page_name', 'LIKE', $firstword); + if (!empty($lastword) && $lastword != $firstword) { + $where .= ' OR ' . Horde_SQL::buildClause($this->_db, 'page_name', 'LIKE', $lastword); + } + + return $this->_retrieve($this->_params['table'], $where); + } + + /** + * Retrieves data on files attached to a page. + * + * @param string $pageId This is the Id of the page for which we'd + * like to find attached files. + * @param boolean $allversions Whether to include all versions. If false + * or omitted, only the most recent version + * of each attachment is returned. + * @return mixed An array of key/value arrays describing the attached + * files or a PEAR_Error:: instance on failure. + */ + function getAttachedFiles($pageId, $allversions = false) + { + $where = 'page_id = ' . (int)$pageId; + $data = $this->_retrieve($this->_params['attachmenttable'], $where); + if (is_a($data, 'PEAR_Error')) { + return $data; + } + + if ($allversions) { + $more_data = $this->_retrieve($this->_params['attachmenthistorytable'], $where); + if (is_a($more_data, 'PEAR_Error')) { + return $more_data; + } + $data = array_merge($data, $more_data); + } + + foreach (array_keys($data) as $key) { + $data[$key]['attachment_name'] = $this->_convertFromDriver($data[$key]['attachment_name']); + } + + usort($data, array($this, '_getAttachedFiles_usort')); + return $data; + } + + function _getAttachedFiles_usort($a, $b) + { + $res = strcmp($a['attachment_name'], $b['attachment_name']); + if ($res != 0) { + return $res; + } + $res = ($a['attachment_majorversion'] - $b['attachment_minorversion']); + if ($res != 0) { + return $res; + } + + return ($a['attachment_minorversion'] - $b['attachment_minorversion']); + } + + /** + * Remove a single version or all versions of an attachment from + * $pageId. Calls parent::removeAttachment() to delete files from + * VFS. + * + * @param integer $pageId The Id of the page the file is attached to. + * @param string $attachment The name of the file. + * @param string $version If specified, the version to delete. If null, + * then all versions of $attachment will be removed. + * + * @return boolean|PEAR_Error Either true or a PEAR_Error describing failure. + */ + function removeAttachment($pageId, $attachment, $version = null) + { + /* Try to delete from the VFS first. */ + $result = parent::removeAttachment($pageId, $attachment, $version); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + + /* First try against the current attachments table. */ + $sql = 'DELETE FROM ' . $this->_params['attachmenttable'] . + ' WHERE page_id = ? AND attachment_name = ?'; + $params = array($pageId, $attachment); + if (!is_null($version)) { + list($major, $minor) = explode('.', $version); + $sql .= ' AND attachment_majorversion = ? AND attachment_minorversion = ?'; + $params[] = (int)$major; + $params[] = (int)$minor; + } + + Horde::logMessage('Wicked_Driver_sql::removeAttachment: ' . $sql, + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $result = $this->_db->query($sql, $params); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + + /* Now try against the attachment history table. $params is + * unchanged. */ + $sql = 'DELETE FROM ' . $this->_params['attachmenthistorytable'] . + ' WHERE page_id = ? AND attachment_name = ?'; + if (!is_null($version)) { + $sql .= ' AND attachment_majorversion = ? AND attachment_minorversion = ?'; + } + + Horde::logMessage('Wicked_Driver_sql::removeAttachment: ' . $sql, + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + return $this->_db->query($sql, $params); + } + + /** + * Removes all attachments from $pageId. Calls + * parent::removeAllAttachments() to delete files from VFS. + * + * @param integer $pageId The Id of the page to remove attachments from. + * + * @return boolean|PEAR_Error Either true or a PEAR_Error describing failure. + */ + function removeAllAttachments($pageId) + { + /* Try to delete from the VFS first. */ + $result = parent::removeAllAttachments($pageId); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + + /* First try against the current attachments table. */ + $sql = 'DELETE FROM ' . $this->_params['attachmenttable'] . + ' WHERE page_id = ?'; + $params = array($pageId); + + Horde::logMessage('Wicked_Driver_sql::removeAllAttachments: ' . $sql, + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $result = $this->_db->query($sql, $params); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + + /* Now try against the attachment history table. $params is + * unchanged. */ + $sql = 'DELETE FROM ' . $this->_params['attachmenthistorytable'] . + ' WHERE page_id = ?'; + + Horde::logMessage('Wicked_Driver_sql::removeAllAttachments: ' . $sql, + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + return $this->_db->query($sql, $params); + } + + /** + * Handles the driver-specific portion of attaching a file. + * + * Wicked_Driver::attachFile() calls down to this method for the driver- + * specific portion, and then uses VFS to store the attachment. + * + * @access protected + * + * @param array $file See Wicked_Driver::attachFile(). + * + * @return boolean The new version of the file attached, or a PEAR_Error:: + * instance on failure. + */ + function _attachFile($file) + { + $where = 'page_id = ' . $this->_db->quote($file['page_id']) . + ' AND attachment_name = ' . $this->_db->quote($file['attachment_name']); + $attachments = $this->_retrieve($this->_params['attachmenttable'], $where); + if (is_a($attachments, 'PEAR_Error')) { + Horde::logMessage($attachments, __FILE__, __LINE__, PEAR_LOG_ERR); + return $attachments; + } + + if ($file['change_author'] === false) { + $file['change_author'] = null; + } + + if ($attachments) { + list($old) = $attachments; + $majorversion = $old['attachment_majorversion']; + $minorversion = $old['attachment_minorversion']; + if ($file['minor']) { + $minorversion++; + } else { + $majorversion++; + $minorversion = 0; + } + + $sql = sprintf('INSERT INTO %s (page_id, attachment_name, attachment_majorversion, attachment_minorversion, attachment_created, change_author, change_log) SELECT page_id, attachment_name, attachment_majorversion, attachment_minorversion, attachment_created, change_author, change_log FROM %s WHERE page_id = %s AND attachment_name = %s', + $this->_params['attachmenthistorytable'], + $this->_params['attachmenttable'], + intval($file['page_id']), + $this->_db->quote($file['attachment_name'])); + $result = $this->_db->query($sql); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + $sql = sprintf('UPDATE %s SET attachment_majorversion = %s, attachment_minorversion = %s, change_log = %s, change_author = %s, attachment_created = %s WHERE page_id = %d AND attachment_name = %s', + $this->_params['attachmenttable'], + intval($majorversion), + intval($minorversion), + $this->_db->quote($this->_convertToDriver($file['change_log'])), + $this->_db->quote($this->_convertToDriver($file['change_author'])), + intval(time()), + intval($file['page_id']), + $this->_db->quote($this->_convertToDriver($file['attachment_name']))); + $result = $this->_db->query($sql); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + } else { + $majorversion = 1; + $minorversion = 0; + $sql = sprintf('INSERT INTO %s (page_id, attachment_majorversion, attachment_minorversion, change_log, change_author, attachment_created, attachment_name) VALUES (%d, 1, 0, %s, %s, %s, %s)', + $this->_params['attachmenttable'], + intval($file['page_id']), + $this->_db->quote($this->_convertToDriver($file['change_log'])), + $this->_db->quote($this->_convertToDriver($file['change_author'])), + intval(time()), + $this->_db->quote($this->_convertToDriver($file['attachment_name']))); + $result = $this->_db->query($sql); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + } + + return (int)$majorversion . '.' . (int)$minorversion; + } + + /** + * Log a hit to $pagename. + * + * @param string $pagename The page that was viewed. + * + * @return mixed True or PEAR_Error on failure. + */ + function logPageView($pagename) + { + $query = 'UPDATE ' . $this->_params['table'] . + ' SET page_hits = page_hits + 1 WHERE page_name = ?'; + $values = array($this->_convertToDriver($pagename)); + + Horde::logMessage('Wicked_Driver_sql::logPageView(' . $pagename . '): ' . $query, + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + return $this->_db->query($query, $values); + } + + /** + * Creates a new page. + * + * @param string $pagename The new page's name. + * @param string $text The new page's text. + * + * @return mixed True, or PEAR_Error on failure. + */ + function newPage($pagename, $text) + { + if (!strlen($pagename)) { + return PEAR::raiseError(_("Page name must not be empty")); + } + + if ($GLOBALS['browser']->isRobot()) { + return PEAR::raiseError(_("Robots are not allowed to create pages")); + } + + $author = Horde_Auth::getAuth(); + if ($author === false) { + $author = null; + } + + $page_id = $this->_db->nextId($this->_params['table']); + if (is_a($page_id, 'PEAR_Error')) { + Horde::logMessage($page_id, __FILE__, __LINE__, PEAR_LOG_ERR); + return $page_id; + } + + $query = 'INSERT INTO ' . $this->_params['table'] . ' ' . + '(page_id, page_name, page_text, ' . + 'version_created, page_majorversion, ' . + 'page_minorversion, page_hits, change_author) ' . + 'VALUES (?, ?, ?, ?, 1, 0, 0, ?)'; + $values = array($page_id, + $this->_convertToDriver($pagename), + $this->_convertToDriver($text), + time(), + $author); + + Horde::logMessage('Wicked_Driver_sql::newPage(): ' . $query, + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + /* Attempt the insertion/update query. */ + $result = $this->_db->query($query, $values); + + /* Return an error immediately if the query failed. */ + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + /* Send notification. */ + $url = Wicked::url($pagename, true, -1); + Wicked::mail("Created page: $url\n\n$text\n", array( + 'Subject' => '[' . $GLOBALS['registry']->get('name') . + '] created: ' . $pagename)); + + /* Call getPages with no caching so that the new list of pages is + * read in. */ + $this->getPages(true, true); + return $page_id; + } + + /** + * Rename a page (and keep the page's history). + * + * @param string $pagename The name of the page to rename. + * @param string $newname The page's new name. + * + * @return mixed True or PEAR_Error on failure. + */ + function renamePage($pagename, $newname) + { + $query = 'UPDATE ' . $this->_params['table'] . + ' SET page_name = ? WHERE page_name = ?'; + $values = array($this->_convertToDriver($newname), $this->_convertToDriver($pagename)); + + Horde::logMessage('Wicked_Driver_sql::renamePage(): ' . $query, + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $result = $this->_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + $query = 'UPDATE ' . $this->_params['historytable'] . + ' SET page_name = ? WHERE page_name = ?'; + $values = array($this->_convertToDriver($newname), $this->_convertToDriver($pagename)); + + Horde::logMessage('Wicked_Driver_sql::renamePage(): ' . $query, + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $result = $this->_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + $changelog = sprintf(_("Renamed page from %s"), $pagename); + $newPage = $this->retrieveByName($newname); + if (is_a($newPage, 'PEAR_Error')) { + return $newPage; + } + + /* Call getPages with no caching so that the new list of pages is + * read in. */ + $this->getPages(true, true); + return $this->updateText($newname, $newPage['page_text'], $changelog, true); + } + + function updateText($pagename, $text, $changelog, $minorchange) + { + if (!$this->pageExists($pagename)) { + return $this->newPage($pagename, $text); + } + + /* Copy the old version into the page history. */ + $query = sprintf( + 'INSERT INTO %s (page_id, page_name, page_text, page_majorversion, page_minorversion, version_created, change_author, change_log)' . + ' SELECT page_id, page_name, page_text, page_majorversion, page_minorversion, version_created, change_author, change_log FROM %s WHERE page_name = ?', + $this->_params['historytable'], + $this->_params['table']); + $values = array($this->_convertToDriver($pagename)); + + Horde::logMessage('Page ' . $pagename . ' saved with user agent ' . $GLOBALS['browser']->getAgentString(), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + Horde::logMessage('Wicked_Driver_sql::updateText(): ' . $query, + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $result = $this->_db->query($query, $values); + + /* Return an error immediately if the query failed. */ + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + /* Now move on to updating the record. */ + if ($minorchange) { + $versionchange = 'page_minorversion = page_minorversion + 1'; + } else { + $versionchange = 'page_majorversion = page_majorversion + 1, page_minorversion = 0'; + } + + $author = Horde_Auth::getAuth(); + if ($author === false) { + $author = null; + } + + $query = 'UPDATE ' . $this->_params['table'] . + ' SET change_author = ?, page_text = ?, change_log = ?, version_created = ?, ' . $versionchange . + ' WHERE page_name = ?'; + $values = array($author, + $this->_convertToDriver($text), + $this->_convertToDriver($changelog), + time(), + $this->_convertToDriver($pagename)); + + Horde::logMessage('Wicked_Driver_sql::updateText(): ' . $query, + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + /* Attempt the insertion/update query. */ + $result = $this->_db->query($query, $values); + + /* Return an error immediately if the query failed. */ + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + return true; + } + + function getPages($special = true, $no_cache = false) + { + static $pageNames; + if (!isset($pageNames) || $no_cache) { + $query = 'SELECT page_id, page_name FROM ' . $this->_params['table']; + + Horde::logMessage('Wicked_Driver_sql::getPages(): ' . $query, + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $result = $this->_db->getAssoc($query); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + $pageNames = $this->_convertFromDriver($result); + } + + if ($special) { + return $pageNames + $this->getSpecialPages(); + } + + return $pageNames; + } + + /** + */ + function removeVersion($pagename, $version) + { + list($major, $minor) = explode('.', $version); + + /* We need to know if we're deleting the current version. */ + $query = 'SELECT 1 FROM ' . $this->_params['table'] . + ' WHERE page_name = ? AND page_majorversion = ? AND page_minorversion = ?'; + $values = array($this->_convertToDriver($pagename), $major, $minor); + + Horde::logMessage('Wicked_Driver_sql::removeVersion(): ' . $query, + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $result = $this->_db->getOne($query, $values); + if ($result && !is_a($result, 'PEAR_Error')) { + /* We're deleting the current version. Have to promote the + * next-most revision from the history table. */ + $query = 'SELECT * FROM ' . $this->_params['historytable'] . + ' WHERE page_name = ? ORDER BY page_majorversion DESC, page_minorversion DESC'; + $query = $this->_db->modifyLimitQuery($query, 0, 1, array($this->_convertToDriver($pagename))); + + Horde::logMessage('Wicked_Driver_sql::removeVersion(): ' . $query, + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $revision = $this->_db->getRow($query, array($this->_convertToDriver($pagename)), DB_FETCHMODE_ASSOC); + if (is_a($revision, 'PEAR_Error')) { + Horde::logMessage($revision, __FILE__, __LINE__, PEAR_LOG_ERR); + return $revision; + } + + /* Replace the current version of the page with the + * version being promoted. */ + $query = 'UPDATE ' . $this->_params['table'] . ' SET' . + ' page_text = ?, page_majorversion = ?, page_minorversion = ?,' . + ' version_created = ?, change_author = ?, change_log = ?' . + ' WHERE page_name = ?'; + $values = array($revision['page_text'], + $revision['page_majorversion'], + $revision['page_minorversion'], + $revision['version_created'], + $revision['change_author'], + $revision['change_log'], + $this->_convertToDriver($pagename)); + + Horde::logMessage('Wicked_Driver_sql::removeVersion(): ' . $query, + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $result = $this->_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + /* Finally, remove the version that we promoted from the + * history table. */ + $query = 'DELETE FROM ' . $this->_params['historytable'] . + ' WHERE page_name = ? and page_majorversion = ? and page_minorversion = ?'; + $values = array($this->_convertToDriver($pagename), $revision['page_majorversion'], $revision['page_minorversion']); + + Horde::logMessage('Wicked_Driver_sql::removeVersion(): ' . $query, + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $result = $this->_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + } else { + /* Removing a historical revision - we can just slice it + * out of the history table. $values is unchanged. */ + $query = 'DELETE FROM ' . $this->_params['historytable'] . + ' WHERE page_name = ? and page_majorversion = ? and page_minorversion = ?'; + + Horde::logMessage('Wicked_Driver_sql::removeVersion(): ' . $query, + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $result = $this->_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + } + + return true; + } + + /** + */ + function removeAllVersions($pagename) + { + $this->_pageNames = null; + + $query = 'DELETE FROM ' . $this->_params['table'] . + ' WHERE page_name = ?'; + $values = array($this->_convertToDriver($pagename)); + + Horde::logMessage('Wicked_Driver_sql::removeAllVersions(): ' . $query, + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $result = $this->_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + $query = 'DELETE FROM ' . $this->_params['historytable'] . + ' WHERE page_name = ?'; + $values = array($this->_convertToDriver($pagename)); + + Horde::logMessage('Wicked_Driver_sql::removeAllVersions(): ' . $query, + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $result = $this->_db->query($query, $values); + if (is_a($result, 'PEAR_Error')) { + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + /* Remove attachments and do other cleanup. */ + return parent::removeAllVersions($pagename); + } + + /** + * Retrieves a page or set of pages given an SQL WHERE clause. + * + * @access private + * + * @param string $table Which table are we retrieving pages from? + * @param string $sqlWhere Where clause for sql statement (without the + * 'WHERE'). + * @param string $orderBy What column should we order results by? + * @param integer $limit Maximum number of pages to fetch. + * + * @return array | object Either an array of pages or PEAR::Error. + */ + function _retrieve($table, $sqlWhere, $orderBy = null, $limit = null) + { + $query = sprintf('SELECT * FROM %s%s%s', + $table, + !empty($sqlWhere) ? ' WHERE ' . $sqlWhere : '', + !empty($orderBy) ? ' ORDER BY ' . $orderBy : ''); + + if (!empty($limit)) { + $query = $this->_db->modifyLimitQuery($query, 0, $limit); + } + + Horde::logMessage('Wicked_Driver_sql::_retrieve(): ' . $query, + __FILE__, __LINE__, PEAR_LOG_DEBUG); + + $result = $this->_db->query($query); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + + $row = $result->fetchRow(DB_FETCHMODE_ASSOC); + if (is_a($row, 'PEAR_Error')) { + return $row; + } + + $pages = array(); + $index = 0; + while ($row && !is_a($row, 'PEAR_Error')) { + $pages[$index] = $row; + if (isset($row['page_name'])) { + $pages[$index]['page_name'] = $this->_convertFromDriver($row['page_name']); + } + if (isset($row['page_text'])) { + $pages[$index]['page_text'] = $this->_convertFromDriver($row['page_text']); + } + if (isset($row['change_log'])) { + $pages[$index]['change_log'] = $this->_convertFromDriver($row['change_log']); + } + + /* Advance to the new row in the result set. */ + $row = $result->fetchRow(DB_FETCHMODE_ASSOC); + $index++; + } + $result->free(); + + return $pages; + } + + /** + * Returns the charset used by the backend. + * + * @return string The backend's charset + */ + function getCharset() + { + return $this->_params['charset']; + } + + /** + * Converts a value from the driver's charset to the default charset. + * + * @param mixed $value A value to convert. + * + * @return mixed The converted value. + */ + function _convertFromDriver($value) + { + return Horde_String::convertCharset($value, $this->getCharset()); + } + + /** + * Converts a value from the default charset to the driver's charset. + * + * @param mixed $value A value to convert. + * + * @return mixed The converted value. + */ + function _convertToDriver($value) + { + return Horde_String::convertCharset($value, Horde_Nls::getCharset(), $this->getCharset()); + } + + /** + * Attempts to open a persistent connection to the SQL server. + * + * @return boolean True on success, PEAR_Error on failure. + */ + function connect() + { + Horde::assertDriverConfig($this->_params, 'storage', + array('phptype', 'charset')); + + if (!isset($this->_params['database'])) { + $this->_params['database'] = ''; + } + if (!isset($this->_params['username'])) { + $this->_params['username'] = ''; + } + if (!isset($this->_params['hostspec'])) { + $this->_params['hostspec'] = ''; + } + if (!isset($this->_params['table'])) { + $this->_params['table'] = 'wicked_pages'; + } + if (!isset($this->_params['historytable'])) { + $this->_params['historytable'] = 'wicked_history'; + } + if (!isset($this->_params['attachmenttable'])) { + $this->_params['attachmenttable'] = 'wicked_attachments'; + } + if (!isset($this->_params['attachmenthistorytable'])) { + $this->_params['attachmenthistorytable'] = 'wicked_attachment_history'; + } + + /* Connect to the SQL server using the supplied parameters. */ + $this->_db = &DB::connect($this->_params, + array('persistent' => !empty($this->_params['persistent']))); + if (is_a($this->_db, 'PEAR_Error')) { + return $this->_db; + } + + // 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); + } + + return true; + } + +} diff --git a/wicked/lib/Page.php b/wicked/lib/Page.php new file mode 100644 index 000000000..bbb32618f --- /dev/null +++ b/wicked/lib/Page.php @@ -0,0 +1,600 @@ + + * @package Wicked + */ +class Page { + + /** + * Display modes supported by this page. Possible modes: + * + * WICKED_MODE_CONTENT + * WICKED_MODE_DISPLAY + * WICKED_MODE_EDIT + * WICKED_MODE_REMOVE + * WICKED_MODE_HISTORY + * WICKED_MODE_DIFF + * WICKED_MODE_LOCKING + * WICKED_MODE_UNLOCKING + * WICKED_MODE_CREATE + * + * @var array + */ + var $supportedModes = array(); + + /** + * Instance of a Text_Wiki processor. + * + * @var Text_Wiki + */ + var $_proc; + + /** + * The loaded page info. + * + * @var array + */ + var $_page; + + /** + * Is this a validly loaded page? + * + * @return boolean True if we've loaded data, false otherwise. + */ + function isValid() + { + return !empty($this->_page) && !is_a($this->_page, 'PEAR_Error'); + } + + /** + * Retrieve this user's permissions for this page. If a + * permissions object does not exist, we assume reasonable + * defaults. + * + * @return integer The permissions bitmask. + */ + function getPermissions($pageName = null) + { + global $perms, $wicked; + + if (is_null($pageName)) { + $pageName = $this->pageName(); + } + + $pageId = $wicked->getPageId($pageName); + $permName = 'wicked:pages:' . $pageId; + if ($pageId !== false && $perms->exists($permName)) { + return $perms->getPermissions($permName); + } elseif ($perms->exists('wicked:pages')) { + return $perms->getPermissions('wicked:pages'); + } else { + if (!Horde_Auth::getAuth()) { + return Horde_Perms::SHOW | Horde_Perms::READ; + } else { + return Horde_Perms::SHOW | Horde_Perms::READ | Horde_Perms::EDIT | Horde_Perms::DELETE; + } + } + } + + /** + * Returns if the page allows a mode. Access rights and user state + * are taken into consideration. + * + * @see $supportedModes + * + * @param integer $mode The mode to check for. + * + * @return boolean True if the mode is allowed. + */ + function allows($mode) + { + global $browser; + + $pagePerms = $this->getPermissions(); + + switch ($mode) { + case WICKED_MODE_CREATE: + // Special mode for pages that don't exist yet - generic + // to all pages. + if ($browser->isRobot()) { + return false; + } + + if (Horde_Auth::isAdmin()) { + return true; + } + + global $perms; + $permName = 'wicked:pages'; + if ($perms->exists($permName)) { + return $perms->getPermissions($permName) & Horde_Perms::EDIT; + } else { + return Horde_Auth::getAuth(); + } + break; + + case WICKED_MODE_EDIT: + if ($browser->isRobot()) { + return false; + } + + if (Horde_Auth::isAdmin()) { + return true; + } + + if (($pagePerms & Horde_Perms::EDIT) == 0) { + return false; + } + + /* Locked page. */ + if ($this->isLocked()) { + return false; + } + break; + + case WICKED_MODE_REMOVE: + if ($browser->isRobot()) { + return false; + } + + if (Horde_Auth::isAdmin()) { + return true; + } + + if (($pagePerms & Horde_Perms::DELETE) == 0) { + return false; + } + break; + + case WICKED_MODE_LOCKING: + if ($browser->isRobot()) { + return false; + } + + if (Horde_Auth::isAdmin()) { + return true; + } + + if (($pagePerms & Horde_Perms::EDIT) == 0) { + return false; + } + break; + + case WICKED_MODE_UNLOCKING: + if (Horde_Auth::isAdmin()) { + return true; + } + + return false; + + // All other modes require READ permissions. + default: + if (Horde_Auth::isAdmin()) { + return true; + } + + if (($pagePerms & Horde_Perms::READ) == 0) { + return false; + } + break; + } + + return $this->supports($mode); + } + + /** + * See if the page supports a particular mode. + * @see $supportedModes + * + * @param integer $mode Which mode to check for + * + * @return boolean True or false + */ + function supports($mode) + { + return !empty($this->supportedModes[$mode]); + } + + /** + * Get the page we are currently on. + * + * @return Returns a Page or PEAR_Error. + */ + function getCurrentPage() + { + return Page::getPage(preg_replace('|/$|', '', Horde_Util::getFormData('page')), + Horde_Util::getFormData('version'), + Horde_Util::getFormData('referrer')); + } + + /** + * Get the page we are currently on. + * + * @return mixed Returns a Page or PEAR_Error. + */ + function getPage($pagename, $pagever = null, $referrer = null) + { + global $conf, $notification, $wicked; + + if (empty($pagename)) { + $pagename = 'WikiHome'; + } + + $file = WICKED_BASE . '/lib/Page/' . basename($pagename) . '.php'; + if ($pagename == basename($pagename) && + file_exists($file)) { + require_once $file; + return new $pagename($referrer); + } + + require_once WICKED_BASE . '/lib/Page/StandardPage.php'; + + /* If we have a version, but it is actually the most recent version, + * ignore it. */ + if (!empty($pagever)) { + $page = new StandardPage($pagename, false, null); + if ($page->isValid() && $page->version() == $pagever) { + return $page; + } + require_once WICKED_BASE . '/lib/Page/StandardPage/StdHistoryPage.php'; + return new StdHistoryPage($pagename, $pagever); + } + + $page = new StandardPage($pagename); + if ($page->isValid() || !$page->allows(WICKED_MODE_EDIT)) { + return $page; + } + + require_once WICKED_BASE . '/lib/Page/AddPage.php'; + return new AddPage($pagename); + } + + function versionCreated() + { + return PEAR::raiseError(_("Unsupported")); + } + + function formatVersionCreated() + { + global $prefs; + $v = $this->versionCreated(); + if (is_a($v, 'PEAR_Error') || !$v) { + return _("Never"); + } else { + return strftime($prefs->getValue('date_format'), $v); + } + } + + function author() + { + if (isset($this->_page['change_author'])) { + $modify = $this->_page['change_author']; + } else { + return _("Guest"); + } + + $identity = &Horde_Prefs_Identity::singleton(null, $modify); + $name = $identity->getValue('fullname'); + if (!empty($name)) { + $modify = $name; + } + + return $modify; + } + + function hits() + { + return PEAR::raiseError(_("Unsupported")); + } + + function version() + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Retrieve the previous version number for this page + * + * @return mixed A string containing the previous version or null if this + * is the first version. + */ + function previousVersion() + { + global $wicked; + + $res = $this->version(); + if (is_a($res, 'PEAR_Error')) { + return $res; + } + + $history = $wicked->getHistory($this->pageName()); + if (is_a($history, 'PEAR_Error')) { + return $history; + } + + if (count($history) == 0) { + return null; + } + if ($this->isOld()) { + for ($i = 0; $i < count($history); $i++) { + $checkver = sprintf('%d.%d', $history[$i]['page_majorversion'], + $history[$i]['page_minorversion']); + if ($checkver == $this->version()) { + if ($i + 1 < count($history)) { + $i++; + break; + } else { + return null; + } + } + } + + if ($i == count($history)) { + return null; + } + } else { + $i = 0; + } + + return sprintf('%d.%d', $history[$i]['page_majorversion'], + $history[$i]['page_minorversion']); + } + + function isOld() + { + return false; + } + + /** + * Render this page in Display mode. You really must override this + * function if your page is to be anything like a real page. + * + * @return mixed Returns true or PEAR_Error. + */ + function display() + { + $inner = $this->displayContents(false); + if (is_a($inner, 'PEAR_Error')) { + return $inner; + } + require WICKED_TEMPLATES . '/display/title.inc'; + echo $inner; + } + + /** + * Perform any pre-display checks for permissions, searches, + * etc. Called before any output is sent so the page can do + * redirects. If the page wants to take control of flow from here, + * it can, and is entirely responsible for handling the user + * (should call exit after redirecting, for example). + * + * $param integer $mode The page render mode. + * $param array $params Any page parameters. + */ + function preDisplay($mode, $params) + { + } + + /** + * Render this page for displaying in a block. You really must override + * this function if your page is to be anything like a real page. + * + * @return mixed Returns true or PEAR_Error. + */ + function block() + { + return $this->displayContents(true); + } + + function displayContents($isBlock) + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Render this page in Remove mode. + * + * @return mixed Returns true or PEAR_Error. + */ + function remove() + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Render this page in History mode. + * + * @return mixed Returns true or PEAR_Error. + */ + function history() + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Render this page in Diff mode. + * + * @return mixed Returns true or PEAR_Error. + */ + function diff() + { + return PEAR::raiseError(_("Unsupported")); + } + + function &getProcessor($output_format = 'Xhtml') + { + if (isset($this->_proc)) { + return $this->_proc; + } + + global $wicked, $conf; + + $view_url = Horde_Util::addParameter(Wicked::url('%s'), 'referrer', $this->pageName(), false); + $view_url = str_replace(array(urlencode('%s'), urlencode('/')), array('%s', '%' . urlencode('/')), $view_url); + + /* Make sure we have a valid wiki format */ + $format = $conf['wicked']['format']; + if (!in_array($format, array('BBCode', 'Cowiki', 'Creole', 'Mediawiki', 'Tiki'))) { + $format = 'Default'; + } + + /* Create format-specific Text_Wiki object */ + $class = 'Text_Wiki_' . $format; + require_once 'Text/Wiki/' . $format . '.php'; + $this->_proc = new $class(); + + /* Use a non-printable delimiter character that is still a valid UTF-8 + * character. See http://pear.php.net/bugs/bug.php?id=12490. */ + $this->_proc->delim = chr(1); + + if ($output_format == 'Xhtml') { + /* Override rules */ + $this->_proc->insertRule('Image2', 'Image'); + $this->_proc->deleteRule('Image'); + if ($format == 'Default') { + $this->_proc->insertRule('Code2', 'Code'); + $this->_proc->deleteRule('Code'); + + $this->_proc->insertRule('Wikilink2', 'Wikilink'); + $this->_proc->deleteRule('Wikilink'); + + $this->_proc->insertRule('Freelink2', 'Freelink'); + $this->_proc->deleteRule('Freelink'); + + $this->_proc->insertRule('RegistryLink', 'Toc'); + $this->_proc->insertRule('Attribute', 'RegistryLink'); + + $this->_proc->deleteRule('Include'); + $this->_proc->deleteRule('Embed'); + } + + $this->_proc->setFormatConf('Xhtml', 'charset', Horde_Nls::getCharset()); + $this->_proc->setFormatConf('Xhtml', 'translate', HTML_SPECIALCHARS); + $create = $this->allows(WICKED_MODE_CREATE) ? 1 : 0; + $linkConf = array('pages' => $wicked->getPages(), + 'view_url' => $view_url, + 'new_url' => $create ? $view_url : false, + 'new_text_pos' => false, + 'css_new' => 'newpage', + 'ext_chars' => true); + + $this->_proc->setRenderConf('Xhtml', 'Wikilink', $linkConf); + $this->_proc->setRenderConf('Xhtml', 'Freelink', $linkConf); + $this->_proc->setRenderConf('Xhtml', 'Wikilink2', $linkConf); + $this->_proc->setRenderConf('Xhtml', 'Freelink2', $linkConf); + $this->_proc->setRenderConf('Xhtml', 'Toc', + array('title' => '

' . _("Table of Contents") . '

')); + $this->_proc->setRenderConf('Xhtml', 'Table', + array('css_table' => 'table', + 'css_td' => 'table-cell', + 'css_th' => 'table-cell')); + + Horde_Autoloader::addClassPattern('/^Text_Wiki_Render_Xhtml/', WICKED_BASE . '/lib/Text_Wiki/Render/Xhtml'); + } + + Horde_Autoloader::addClassPattern('/^Text_Wiki_Parse/', WICKED_BASE . '/lib/Text_Wiki/Parse/' . $format); + + return $this->_proc; + } + + function render($mode, $params = null) + { + switch ($mode) { + case WICKED_MODE_CONTENT: + return $this->content($params); + + case WICKED_MODE_DISPLAY: + return $this->display($params); + + case WICKED_MODE_BLOCK: + return $this->block($params); + + case WICKED_MODE_REMOVE: + return $this->remove(); + + case WICKED_MODE_HISTORY: + return $this->history(); + + case WICKED_MODE_DIFF: + return $this->diff($params); + + default: + return PEAR::raiseError(_("Unsupported")); + } + } + + function isLocked() + { + return false; + } + + function lock() + { + return PEAR::raiseError(_("Unsupported")); + } + + function unlock() + { + return PEAR::raiseError(_("Unsupported")); + } + + function updateText($newtext, $changelog, $minorchange) + { + return PEAR::raiseError(_("Unsupported")); + } + + function getText() + { + return PEAR::raiseError(_("Unsupported")); + } + + function pageName() + { + return null; + } + + function referrer() + { + return null; + } + + function pageUrl($linkpage = null, $actionId = null) + { + $params = array('page' => $this->pageName()); + if ($this->referrer()) { + $params['referrer'] = $this->referrer(); + } + if ($actionId) { + $params['actionID'] = $actionId; + } + + if (!$linkpage) { + $url = Wicked::url($this->pageName()); + unset($params['page']); + } else { + $url = Horde::applicationUrl($linkpage); + } + + return Horde_Util::addParameter($url, $params); + } + + function pageTitle() + { + return $this->pageName(); + } + + function handleAction() + { + return PEAR::raiseError(_("Unsupported")); + } + +} diff --git a/wicked/lib/Page/AddPage.php b/wicked/lib/Page/AddPage.php new file mode 100644 index 000000000..438bd4764 --- /dev/null +++ b/wicked/lib/Page/AddPage.php @@ -0,0 +1,116 @@ + + * @package Wicked + */ +class AddPage extends Page { + + /** + * Display modes supported by this page. + * + * @var array + */ + var $supportedModes = array( + WICKED_MODE_DISPLAY => true); + + /** + * The page to confirm creation of. + * + * @var string + */ + var $_newpage; + + /** + * Cached search results. + * @var array + */ + var $_results; + + function AddPage($newpage) + { + $this->_newpage = $newpage; + $this->_results = $GLOBALS['wicked']->searchTitles($newpage); + } + + /** + * Bail out if there's no page name. + */ + function preDisplay() + { + if (!strlen($this->referrer())) { + $GLOBALS['notification']->push(_("Page name must not be empty")); + header('Location: ' . Wicked::url('', true)); + exit; + } + } + + /** + * Render this page in Display mode. + * + * @return mixed Returns true or PEAR_Error. + */ + function display() + { + $templates = $GLOBALS['wicked']->getMatchingPages('Template', WICKED_PAGE_MATCH_ENDS); + if (is_a($templates, 'PEAR_Error')) { + $GLOBALS['notification']->push(sprintf(_("Error retrieving templates: %s"), + $templates->getMessage()), 'horde.error'); + return $templates; + } + + $search_results = null; + if ($this->_results) { + require_once 'Horde/Template.php'; + $template = new Horde_Template(); + $pages = array(); + foreach ($this->_results as $page) { + if (!empty($page['page_history'])) { + $page = new StdHistoryPage($page); + } else { + $page = new StandardPage($page); + } + + $pages[] = array('author' => $page->author(), + 'created' => $page->formatVersionCreated(), + 'name' => $page->pageName(), + 'context' => false, + 'url' => $page->pageUrl(), + 'version' => $page->version()); + } + $template->set('pages', $pages, true); + $template->set('hits', false, true); + $search_results = $template->fetch(WICKED_TEMPLATES . '/pagelist/pagelist.html'); + } + + require WICKED_TEMPLATES . '/edit/create.inc'; + return true; + } + + function pageName() + { + return 'AddPage'; + } + + function pageTitle() + { + return sprintf(_("AddPage: %s"), $this->referrer()); + } + + function referrer() + { + return $this->_newpage; + } + +} diff --git a/wicked/lib/Page/AllPages.php b/wicked/lib/Page/AllPages.php new file mode 100644 index 000000000..eced65006 --- /dev/null +++ b/wicked/lib/Page/AllPages.php @@ -0,0 +1,93 @@ + + * @package Wicked + */ +class AllPages extends Page { + + /** + * Display modes supported by this page. + */ + var $supportedModes = array( + WICKED_MODE_CONTENT => true, + WICKED_MODE_DISPLAY => true); + + /** + * Render this page in Content mode. + * + * @return string The page content, or PEAR_Error. + */ + function content() + { + global $wicked; + + return $wicked->getAllPages(); + } + + /** + * Render this page in display or block mode. + * + * @return mixed Returns page contents or PEAR_Error + */ + function displayContents($isBlock) + { + global $notification; + + $summaries = $this->content(); + if (is_a($summaries, 'PEAR_Error')) { + $notification->push('Error retrieving summaries : ' . + $summaries->getMessage(), 'horde.error'); + return $summaries; + } + + require_once 'Horde/Template.php'; + $template = new Horde_Template(); + $pages = array(); + foreach ($summaries as $page) { + $page = new StandardPage($page); + $pages[] = array('author' => $page->author(), + 'created' => $page->formatVersionCreated(), + 'name' => $page->pageName(), + 'context' => false, + 'url' => $page->pageUrl(), + 'version' => $page->version(), + 'class' => ''); + } + $template->set('pages', $pages, true); + $template->set('hits', false, true); + + Horde::addScriptFile('tables.js', 'horde', true); + + // Show search form and page header. + ob_start(); + require WICKED_TEMPLATES . '/pagelist/header.inc'; + echo $template->fetch(WICKED_TEMPLATES . '/pagelist/pagelist.html'); + require WICKED_TEMPLATES . '/pagelist/footer.inc'; + $contents = ob_get_contents(); + ob_end_clean(); + return $contents; + } + + function pageName() + { + return 'AllPages'; + } + + function pageTitle() + { + return _("AllPages"); + } + +} diff --git a/wicked/lib/Page/AttachedFiles.php b/wicked/lib/Page/AttachedFiles.php new file mode 100644 index 000000000..748b73aba --- /dev/null +++ b/wicked/lib/Page/AttachedFiles.php @@ -0,0 +1,315 @@ + + * @package Wicked + */ +class AttachedFiles extends Page { + + /** + * Display modes supported by this page. + * + * @var array + */ + var $supportedModes = array( + WICKED_MODE_CONTENT => true, + WICKED_MODE_EDIT => true, + WICKED_MODE_REMOVE => true, + WICKED_MODE_DISPLAY => true); + + /** + * The page for which we'd like to manipulate attachments. + * + * @var string + */ + var $_referrer = null; + + /** + * Constructor. + */ + function AttachedFiles($referrer) + { + $this->_referrer = $referrer; + } + + /** + * Returns the current user's permissions for the referring page. + * + * @return integer The permissions bitmask. + */ + function getPermissions() + { + return parent::getPermissions($this->referrer()); + } + + /** + * Returns this page rendered in Content mode. + * + * @return string The page content, or PEAR_Error. + */ + function content() + { + global $wicked, $notification; + + if (!$wicked->pageExists($this->referrer())) { + $error = sprintf(_("Referrer \"%s\" does not exist."), + $this->referrer()); + $notification->push($error, 'horde.error'); + return PEAR::raiseError($error); + } + + $referrer_id = $wicked->getPageId($this->referrer()); + + $attachments = $wicked->getAttachedFiles($referrer_id, true); + if (is_a($attachments, 'PEAR_Error')) { + return $attachments; + } + + foreach ($attachments as $idx => $attach) { + $attachments[$idx]['date'] = date('M j, Y g:ia', + $attach['attachment_created']); + + $attachments[$idx]['url'] = Horde::downloadUrl( + $attach['attachment_name'], + array('page' => $referrer_id, + 'file' => $attach['attachment_name'], + 'version' => $attach['attachment_majorversion'] . '.' + . $attach['attachment_minorversion'])); + + $attachments[$idx]['delete_form'] = $this->allows(WICKED_MODE_REMOVE); + + $this->_page['change_author'] = $attachments[$idx]['change_author']; + $attachments[$idx]['change_author'] = $this->author(); + } + + return $attachments; + } + + /** + * Returns this page rendered in Display mode. + * + * @return mixed Returns true or PEAR_Error. + */ + function display() + { + global $registry, $wicked, $notification, $conf; + + $attachments = $this->content(); + if (is_a($attachments, 'PEAR_Error')) { + $notification->push(sprintf(_("Error retrieving attachments: %s"), + $attachments->getMessage()), + 'horde.error'); + return $attachments; + } + + require_once 'Horde/Template.php'; + $template = new Horde_Template(); + + $template->setOption('gettext', true); + $template->set('pageName', $this->pageName()); + $template->set('formAction', Wicked::url('AttachedFiles')); + $template->set('deleteButton', $registry->getImageDir('horde') + . '/delete.png'); + $template->set('referrerLink', Wicked::url($this->referrer())); + + $refreshIcon = Horde::link($this->pageUrl()) + . Horde::img('reload.png', + sprintf(_("Reload \"%s\""), $this->pageTitle()), + '', $registry->getImageDir('horde')) + . ''; + $template->set('refreshIcon', $refreshIcon); + $template->set('attachments', $attachments, true); + + /* Get an array of unique filenames for the update form. */ + $files = array(); + foreach ($attachments as $attachment) { + $files[$attachment['attachment_name']] = true; + } + $files = array_keys($files); + sort($files); + $template->set('files', $files); + $template->set('canUpdate', + $this->allows(WICKED_MODE_EDIT) && count($files), + true); + $template->set('canAttach', $this->allows(WICKED_MODE_EDIT), true); + if ($conf['wicked']['require_change_log']) { + $template->set('requireChangelog', true, true); + } else { + $template->set('requireChangelog', false, true); + } + + $requiredMarker = Horde::img('required.png', '*', '', + $registry->getImageDir('horde')); + $template->set('requiredMarker', $requiredMarker); + $template->set('referrer', $this->referrer()); + $template->set('formInput', Horde_Util::formInput()); + + Horde::addScriptFile('stripe.js', 'horde', true); + echo $template->fetch(WICKED_TEMPLATES . '/display/AttachedFiles.html'); + return true; + } + + function pageName() + { + return 'AttachedFiles'; + } + + function pageTitle() + { + return sprintf(_("AttachedFiles: %s"), $this->referrer()); + } + + function referrer() + { + return $this->_referrer; + } + + /** + * Retrieves the form fields and processes the attachment. + */ + function handleAction() + { + global $notification, $wicked, $registry, $conf; + + // Only allow POST commands. + $cmd = Horde_Util::getPost('cmd'); + $version = Horde_Util::getFormData('version'); + $is_update = (bool)Horde_Util::getFormData('is_update'); + $filename = Horde_Util::getFormData('filename'); + $change_log = Horde_Util::getFormData('change_log'); + + // See if we're supposed to delete an attachment. + if ($cmd == 'delete' && $filename && $version) { + if (!$this->allows(WICKED_MODE_REMOVE)) { + $notification->push(_("You do not have permission to delete attachments from this page."), 'horde.error'); + return; + } + + $result = $wicked->removeAttachment( + $wicked->getPageId($this->referrer()), + $filename, $version); + if (is_a($result, 'PEAR_Error')) { + $notification->push($result->getMessage(), 'horde.error'); + } else { + $notification->push( + sprintf(_("Successfully deleted version %s of \"%s\" from \"%s\""), + $version, $filename, $this->referrer()), + 'horde.success'); + } + return; + } + + if (empty($filename)) { + $filename = Horde_Util::dispelMagicQuotes($_FILES['attachment_file']['name']); + } + $result = Horde_Browser::wasFileUploaded('attachment_file', _("attachment")); + if (is_a($result, 'PEAR_Error')) { + $notification->push($result, 'horde.error'); + return; + } + + if (strpos($filename, ' ') !== false) { + $notification->push( + _("Attachments with spaces can't be embedded into a page."), + 'horde.warning'); + } + + $data = file_get_contents($_FILES['attachment_file']['tmp_name']); + if ($data === false) { + $notification->push(_("Can't read uploaded file."), 'horde.error'); + return; + } + + if (!$this->allows(WICKED_MODE_EDIT)) { + $notification->push( + sprintf(_("You do not have permission to edit \"%s\""), + $this->referrer()), + 'horde.error'); + return; + } + + if ($conf['wicked']['require_change_log'] && empty($change_log)) { + $notification->push( + _("You must enter a change description to attach this file."), + 'horde.error'); + return; + } + + $referrer_id = $wicked->getPageId($this->referrer()); + $attachments = $wicked->getAttachedFiles($referrer_id); + if (is_a($attachments, 'PEAR_Error')) { + $notification->push(sprintf(_("Error retrieving attachments: %s"), + $attachments->getMessage()), + 'horde.error'); + return; + } + + $found = false; + foreach ($attachments as $attach) { + if ($filename == $attach['attachment_name']) { + $found = true; + break; + } + } + + $minor_change = false; + if ($is_update) { + if (!$found) { + $notification->push( + sprintf(_("Can't update \"%s\": no such attachment."), + $filename), + 'horde.error'); + return; + } + $minor_change = Horde_Util::getFormData('minor_change'); + } else { + if ($found) { + $notification->push( + sprintf(_("There is already an attachment named \"%s\"."), + $filename), + 'horde.error'); + return; + } + } + + $file = array('page_id' => $referrer_id, + 'attachment_name' => $filename, + 'minor' => $minor_change, + 'change_log' => $change_log); + + $result = $wicked->attachFile($file, $data); + if (is_a($result, 'PEAR_Error')) { + $notification->push($result, 'horde.error'); + Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR); + return $result; + } + + if ($is_update) { + $message = sprintf(_("Updated attachment \"%s\" on page \"%s\"."), + $filename, $this->referrer()); + } else { + $message = sprintf(_("New attachment \"%s\" to page \"%s\"."), + $filename, $this->referrer()); + } + $notification->push($message, 'horde.success'); + + $url = Wicked::url($this->referrer(), true, -1); + Wicked::mail($message . ' ' . _("View page: ") . $url . "\n", + array('Subject' => '[' . $registry->get('name') + . '] attachment: ' . $this->referrer() . ', ' + . $filename)); + } + +} diff --git a/wicked/lib/Page/BackLinks.php b/wicked/lib/Page/BackLinks.php new file mode 100644 index 000000000..967543e8f --- /dev/null +++ b/wicked/lib/Page/BackLinks.php @@ -0,0 +1,88 @@ + + * @package Wicked + */ +class BackLinks extends Page { + + /** + * Display modes supported by this page. + * + * @var array + */ + var $supportedModes = array( + WICKED_MODE_DISPLAY => true); + + /** + * The page that we're displaying backlinks to. + * + * @var string + */ + var $_referrer = null; + + function BackLinks($referrer) + { + $this->_referrer = $referrer; + } + + /** + * Render this page in display or block mode. + * + * @return mixed Returns contents or PEAR_Error. + */ + function displayContents($isBlock) + { + global $wicked, $notification; + + $summaries = $wicked->getBackLinks($this->_referrer); + if (is_a($summaries, 'PEAR_Error')) { + $notification->push('Error retrieving summaries: ' . + $summaries->getMessage(), 'horde.error'); + return $summaries; + } + + Horde::addScriptFile('tables.js', 'horde', true); + + ob_start(); + require WICKED_TEMPLATES . '/pagelist/header.inc'; + foreach ($summaries as $page) { + if (!empty($page['page_history'])) { + $page = new StdHistoryPage($page); + } else { + $page = new StandardPage($page); + } + require WICKED_TEMPLATES . '/pagelist/summary.inc'; + } + require WICKED_TEMPLATES . '/pagelist/footer.inc'; + + return ob_get_clean(); + } + + function pageName() + { + return 'BackLinks'; + } + + function pageTitle() + { + return sprintf(_("BackLinks: %s"), $this->referrer()); + } + + function referrer() + { + return $this->_referrer; + } + +} diff --git a/wicked/lib/Page/DeletePage.php b/wicked/lib/Page/DeletePage.php new file mode 100644 index 000000000..5357e025d --- /dev/null +++ b/wicked/lib/Page/DeletePage.php @@ -0,0 +1,155 @@ + + * @package Wicked + */ +class DeletePage extends Page { + + /** + * Display modes supported by this page. + * + * @var array + */ + var $supportedModes = array(WICKED_MODE_DISPLAY => true); + + /** + * The page that we're confirming deletion for. + * + * @var string + */ + var $_referrer = null; + + function DeletePage($referrer) + { + $this->_referrer = $referrer; + } + + /** + * Retrieve this user's permissions for the referring page. + * + * @return integer The permissions bitmask. + */ + function getPermissions() + { + return parent::getPermissions($this->referrer()); + } + + /** + * Send them back whence they came if they aren't allowed to + * delete this page. + */ + function preDisplay() + { + $page = Page::getPage($this->referrer()); + if (!$page->allows(WICKED_MODE_REMOVE)) { + header('Location: ' . Wicked::url($this->referrer(), true)); + exit; + } + } + + /** + * Render this page in Display mode. + * + * @return mixed True or PEAR_Error. + */ + function display() + { + $version = Horde_Util::getFormData('version'); + $page = Page::getPage($this->referrer(), $version); + if (!$page->isValid()) { + header('Location: ' . Wicked::url('WikiHome', true)); + exit; + } + + if (empty($version)) { + $msg = _("Are you sure you want to delete this page? All versions will be permanently removed."); + } else { + $msg = sprintf(_("Are you sure you want to delete version %s of this page?"), + $page->version()); + } +?> +
+ + + + + + +

+ pageUrl()) . htmlspecialchars($page->pageName()) . ''; if ($page->isLocked()) echo Horde::img('locked.png', _("Locked")) ?> +

+ +
+

+

+ " class="button" /> + +

+
+ +
+_referrer; + } + + function handleAction() + { + $pagename = $this->referrer(); + $page = Page::getPage($pagename); + if ($page->allows(WICKED_MODE_REMOVE)) { + $version = Horde_Util::getFormData('version'); + if (empty($version)) { + $GLOBALS['wicked']->removeAllVersions($pagename); + $GLOBALS['notification']->push(sprintf(_("Successfully deleted \"%s\"."), $pagename), 'horde.success'); + Wicked::mail("Deleted page: $pagename\n", + array('Subject' => '[' . $GLOBALS['registry']->get('name') . '] deleted: ' . $pagename)); + header('Location: ' . Wicked::url('WikiHome', true)); + } else { + $GLOBALS['wicked']->removeVersion($pagename, $version); + $GLOBALS['notification']->push(sprintf(_("Deleted version %s of \"%s\"."), $version, $pagename), 'horde.success'); + Wicked::mail("Deleted version: $version of $pagename\n", + array('Subject' => '[' . $GLOBALS['registry']->get('name') . '] deleted: ' . $pagename . ' [' . $version . ']')); + header('Location: ' . Wicked::url($pagename, true)); + } + exit; + } + + $GLOBALS['notification']->push(sprintf(_("You don't have permission to delete \"%s\"."), $pagename), 'horde.warning'); + header('Location: ' . Wicked::url($this->referrer(), true)); + exit; + } + +} diff --git a/wicked/lib/Page/EditPage.php b/wicked/lib/Page/EditPage.php new file mode 100644 index 000000000..2889a0b81 --- /dev/null +++ b/wicked/lib/Page/EditPage.php @@ -0,0 +1,197 @@ + + * @package Wicked + */ +class EditPage extends Page { + + /** + * Display modes supported by this page. + * + * @var array + */ + var $supportedModes = array( + WICKED_MODE_DISPLAY => true, + WICKED_MODE_EDIT => true); + + /** + * The page that we're editing. + * + * @var string + */ + var $_referrer = null; + + function EditPage($referrer) + { + $this->_referrer = $referrer; + if ($GLOBALS['conf']['lock']['driver'] != 'none') { + $this->supportedModes[WICKED_MODE_LOCKING] = $this->supportedModes[WICKED_MODE_UNLOCKING] = true; + } + } + + /** + * Returns if the page allows a mode. Access rights and user state + * are taken into consideration. + * + * @see $supportedModes + * + * @param integer $mode The mode to check for. + * + * @return boolean True if the mode is allowed. + */ + function allows($mode) + { + if ($mode == WICKED_MODE_EDIT) { + $page = Page::getPage($this->referrer()); + if ($page->isLocked(Horde_Auth::getAuth() ? Horde_Auth::getAuth() : $GLOBALS['browser']->getIPAddress())) { + return false; + } + } + return parent::allows($mode); + } + + /** + * Retrieve this user's permissions for the referring page. + * + * @return integer The permissions bitmask. + */ + function getPermissions() + { + return parent::getPermissions($this->referrer()); + } + + /** + * Send them back whence they came if they aren't allowed to edit + * this page. + */ + function preDisplay() + { + if (!$this->allows(WICKED_MODE_EDIT)) { + header('Location: ' . Wicked::url($this->referrer(), true)); + exit; + } + if ($this->allows(WICKED_MODE_LOCKING)) { + $page = Page::getPage($this->referrer()); + $result = $page->lock(); + if (is_a($result, 'PEAR_Error')) { + $GLOBALS['notification']->push(sprintf(_("Page failed to lock: %s"), $result->getMessage()), 'horde.error'); + } + } + } + + /** + * Render this page in Display mode. + * + * @return mixed Returns true or PEAR_Error. + */ + function display() + { + $page = Page::getPage($this->referrer()); + $page_text = Horde_Util::getFormData('page_text'); + if (is_null($page_text)) { + $page_text = $page->getText(); + } + + require WICKED_TEMPLATES . '/edit/standard.inc'; + return true; + } + + function pageName() + { + return 'EditPage'; + } + + function pageTitle() + { + return _("EditPage"); + } + + function referrer() + { + return $this->_referrer; + } + + function isLocked() + { + $page = Page::getPage($this->referrer()); + return $page->isLocked(); + } + + function getLockRequestor() + { + $page = Page::getPage($this->referrer()); + return $page->getLockRequestor(); + } + + function getLockTime() + { + $page = Page::getPage($this->referrer()); + return $page->getLockTime(); + } + + function handleAction() + { + global $notification, $conf; + + $page = Page::getPage($this->referrer()); + if (!$this->allows(WICKED_MODE_EDIT)) { + $notification->push(sprintf(_("You don't have permission to edit \"%s\"."), $page->pageName())); + } else { + if (!empty($GLOBALS['conf']['wicked']['captcha']) && + !Horde_Auth::getAuth() && + (Horde_String::lower(Horde_Util::getFormData('wicked_captcha')) != Horde_String::lower(Wicked::getCAPTCHA()))) { + $notification->push(_("Random string did not match."), 'horde.error'); + return; + } + $text = Horde_Util::getFormData('page_text'); + $changelog = Horde_Util::getFormData('changelog'); + if ($conf['wicked']['require_change_log'] && empty($changelog)) { + $notification->push(_("You must provide a change log."), 'horde.error'); + $notification->push('if (document.editform && document.editform.changelog) document.editform.changelog.focus();', 'javascript'); + return; + } + $minorchange = Horde_Util::getFormData('minor'); + if (trim($text) == trim($page->getText())) { + $notification->push(_("No changes made"), 'horde.warning'); + } else { + $result = $page->updateText($text, $changelog, $minorchange); + if (is_a($result, 'PEAR_Error')) { + $notification->push(sprintf(_("Save Failed: %s"), + $result->getMessage()), 'horde.error'); + } else { + $notification->push(_("Page Saved"), 'horde.success'); + } + } + + if ($this->allows(WICKED_MODE_UNLOCKING)) { + $result = $page->unlock(); + if (is_a($result, 'PEAR_Error')) { + $GLOBALS['notification']->push(sprintf(_("Page failed to unlock: %s"), $result->getMessage()), 'horde.error'); + } + } + } + + // Show the newly saved page. + header('Location: ' . Wicked::url($this->referrer(), true)); + exit; + } + +} diff --git a/wicked/lib/Page/LeastPopular.php b/wicked/lib/Page/LeastPopular.php new file mode 100644 index 000000000..eccea4422 --- /dev/null +++ b/wicked/lib/Page/LeastPopular.php @@ -0,0 +1,96 @@ + + * @package Wicked + */ +class LeastPopular extends Page { + + /** + * Display modes supported by this page. + * + * @var array + */ + var $supportedModes = array( + WICKED_MODE_CONTENT => true, + WICKED_MODE_DISPLAY => true); + + /** + * Render this page in Content mode. + * + * @param integer $numPages How many (at most) pages should we return? + * + * @return string The page content, or PEAR_Error. + */ + function content($numPages = 10) + { + global $wicked; + + return $wicked->leastPopular($numPages); + } + + /** + * Render this page in display or block mode. + * + * @return mixed Returns content or PEAR_Error. + */ + function displayContents($isBlock) + { + global $notification; + + $summaries = $this->content(10); + if (is_a($summaries, 'PEAR_Error')) { + $notification->push('Error retrieving LeastPopular: ' . $summaries->getMessage(), 'horde.error'); + return $summaries; + } + + require_once 'Horde/Template.php'; + $template = new Horde_Template(); + $pages = array(); + foreach ($summaries as $page) { + $page = new StandardPage($page); + $pages[] = array('author' => $page->author(), + 'created' => $page->formatVersionCreated(), + 'name' => $page->pageName(), + 'context' => false, + 'hits' => $page->hits(), + 'url' => $page->pageUrl(), + 'version' => $page->version()); + } + $template->set('pages', $pages, true); + $template->set('hits', true, true); + $hits = true; + + Horde::addScriptFile('tables.js', 'horde', true); + + ob_start(); + require WICKED_TEMPLATES . '/pagelist/header.inc'; + echo $template->fetch(WICKED_TEMPLATES . '/pagelist/pagelist.html'); + require WICKED_TEMPLATES . '/pagelist/footer.inc'; + $content = ob_get_contents(); + ob_end_clean(); + return $content; + } + + function pageName() + { + return 'LeastPopular'; + } + + function pageTitle() + { + return _("LeastPopular"); + } + +} diff --git a/wicked/lib/Page/LikePages.php b/wicked/lib/Page/LikePages.php new file mode 100644 index 000000000..c20e6c5cc --- /dev/null +++ b/wicked/lib/Page/LikePages.php @@ -0,0 +1,90 @@ + + * @package Wicked + */ +class LikePages extends Page { + + /** + * Display modes supported by this page. + * + * @var array + */ + var $supportedModes = array( + WICKED_MODE_DISPLAY => true); + + /** + * The page that we're displaying similar pages to. + * + * @var string + */ + var $_referrer = null; + + function LikePages($referrer) + { + $this->_referrer = $referrer; + } + + /** + * Render this page in display or block mode. + * + * @return mixed Returns contents or PEAR_Error. + */ + function displayContents($isBlock) + { + global $wicked, $notification; + + $referrer = $this->referrer(); + + $summaries = $wicked->getLikePages($referrer); + if (is_a($summaries, 'PEAR_Error')) { + $notification->push('Error retrieving summaries: ' . + $summaries->getMessage(), 'horde.error'); + return $summaries; + } + + Horde::addScriptFile('tables.js', 'horde', true); + + ob_start(); + require WICKED_TEMPLATES . '/pagelist/header.inc'; + foreach ($summaries as $page) { + if (!empty($page['page_history'])) { + $page = new StdHistoryPage($page); + } else { + $page = new StandardPage($page); + } + require WICKED_TEMPLATES . '/pagelist/summary.inc'; + } + require WICKED_TEMPLATES . '/pagelist/footer.inc'; + + return ob_get_clean(); + } + + function pageName() + { + return 'LikePages'; + } + + function pageTitle() + { + return sprintf(_("LikePages: %s"), $this->referrer()); + } + + function referrer() + { + return $this->_referrer; + } + +} diff --git a/wicked/lib/Page/MergeOrRename.php b/wicked/lib/Page/MergeOrRename.php new file mode 100644 index 000000000..fad32ce5a --- /dev/null +++ b/wicked/lib/Page/MergeOrRename.php @@ -0,0 +1,285 @@ + + * @package Wicked + */ +class MergeOrRename extends Page { + + /** + * Display modes supported by this page. + * + * @var array + */ + var $supportedModes = array( + WICKED_MODE_EDIT => true, + WICKED_MODE_DISPLAY => true); + + /** + * The page that we're displaying similar pages to. + * + * @var string + */ + var $_referrer = null; + + /** + * Validation errors. + * + * @var string + */ + var $_errors = array(); + + function MergeOrRename($referrer) + { + $this->_referrer = $referrer; + } + + /** + * Retrieve this user's permissions for the referring page. + * + * @return integer The permissions bitmask. + */ + function getPermissions() + { + return parent::getPermissions($this->referrer()); + } + + /** + * Render this page in Display mode. + * + * @return mixed Returns true or PEAR_Error. + */ + function display() + { + global $wicked, $registry, $notification; + + require_once 'Horde/Template.php'; + $template = new Horde_Template(); + $template->setOption('gettext', true); + + $referrer = $this->referrer(); + $template->set('pageName', 'MergeOrRename'); + $template->set('formAction', Wicked::url('MergeOrRename')); + $template->set('referrer', $referrer); + + $template->set('referrerLink', Wicked::url($referrer)); + + $requiredMarker = Horde::img('required.png', '*', '', + $registry->getImageDir('horde')); + $template->set('requiredMarker', $requiredMarker); + + $references = $wicked->getBackLinks($referrer); + if (is_a($references, 'PEAR_Error')) { + $notification->push('Error retrieving back links: ' . + $references->getMessage(), 'horde.error'); + return $references; + } + + foreach ($references as $key => $page) { + $references[$key]['page_url'] = @htmlspecialchars(Wicked::url($page['page_name']), ENT_QUOTES, Horde_Nls::getCharset()); + $references[$key]['page_name'] = @htmlspecialchars($page['page_name'], ENT_QUOTES, Horde_Nls::getCharset()); + + // Since the page name can have [ and ] and other special + // characters in it, and we don't want the browser or PHP decoding + // it, we encode it in quoted printable for the checkbox names. + $references[$key]['checkbox'] = preg_replace('/([^a-zA-Z_0-9 ])/e', '"=" . str_pad(dechex(ord(\'\\1\')), 2, \'0\', STR_PAD_LEFT)', $page['page_name']); + } + + $template->set('references', $references); + $template->set('referenceCount', sprintf(_("This page is referenced from %d other page(s)."), count($references))); + $template->set('formInput', Horde_Util::formInput()); + + // Propogate any validation errors. + foreach (array('new_name', 'collision') as $elt) { + if (!isset($this->_errors[$elt])) { + $this->_errors[$elt] = ''; + } + } + $template->set('errors', $this->_errors); + + $template->set('new_name', Horde_Util::getFormData('new_name')); + + Horde::addScriptFile('stripe.js', 'horde', true); + echo $template->fetch(WICKED_TEMPLATES . '/display/MergeOrRename.html'); + return true; + } + + function pageName() + { + return 'MergeOrRename'; + } + + function pageTitle() + { + return sprintf(_("MergeOrRename: %s"), $this->referrer()); + } + + function referrer() + { + return $this->_referrer; + } + + /** + * Retrieve the form fields and process the merge or rename. + */ + function handleAction() + { + global $wicked, $notification, $registry; + + if (Horde_Util::getFormData('submit') == _("Cancel")) { + header('Location: ' . Wicked::url($this->referrer(), true)); + exit; + } + + $referrer = $this->referrer(); + + $new_name = Horde_Util::getFormData('new_name'); + if (empty($new_name)) { + $this->_errors['new_name'] = _("This is a required field."); + } elseif ($new_name == $referrer) { + $this->_errors['new_name'] = _("New name is the same as old name."); + } + $collision = Horde_Util::getFormData('collision'); + if (empty($collision)) { + $this->_errors['collision'] = _("This is a required field."); + } + + if (count($this->_errors)) { + return; + } + + $sourcePage = Page::getPage($referrer); + if (is_a($sourcePage, 'PEAR_Error')) { + $notification->push(sprintf(_("Failed to retrieve \"%s\": %s"), + $referrer, $sourcePage->getMessage()), + 'horde.error'); + return; + } elseif (!$this->allows(WICKED_MODE_EDIT)) { + $notification->push(sprintf(_("You do not have permission to edit \"%s\""), + $referrer), 'horde.error'); + return; + } + + $destPage = Page::getPage($new_name); + if (!is_a($destPage, 'PEAR_Error') && !is_a($destPage, 'AddPage')) { + // Destination page exists. + if ($collision != 'merge') { + // We don't want to overwrite. + $notification->push(sprintf(_("Page \"%s\" already exists."), + $new_name), 'horde.error'); + return; + } + if (!$destPage->allows(WICKED_MODE_EDIT)) { + $notification->push(sprintf(_("You do not have permission to edit \"%s\""), + $new_name), 'horde.error'); + return; + } + + // Merge the two pages. + $newText = $destPage->getText() . "\n----\n" . $sourcePage->getText(); + $changelog = sprintf(_("Merged from %s"), $referrer); + $result = $wicked->updateText($new_name, $newText, $changelog, true); + if (is_a($result, 'PEAR_Error')) { + $notification->push(sprintf(_("Error updating %s: %s"), + $new_name, $result->getMessage()), + 'horde.error'); + return; + } + + $result = $wicked->removeAllVersions($referrer); + if (is_a($result, 'PEAR_Error')) { + $notification->push(sprintf(_("Error deleting %s: %s"), + $referrer, $result->getMessage()), + 'horde.error'); + return; + } + $notification->push(sprintf(_("Merged \"%s\" into \"%s\"."), $referrer, $new_name), 'horde.success'); + + $url = Wicked::url($new_name, true, -1); + $message = sprintf(_("Merged \"%s\" into \"%s\". New page: %s\n"), $referrer, $new_name, $url); + Wicked::mail($message, array( + 'Subject' => '[' . $registry->get('name') . '] merged: ' . $referrer . ', ' . $new_name)); + } else { + // Rename the page. + $result = $wicked->renamePage($referrer, $new_name); + if (is_a($result, 'PEAR_Error')) { + $notification->push(sprintf(_("Error renaming \"%s\": %s"), + $referrer, $result->getMessage()), + 'horde.error'); + return; + } + $notification->push(sprintf(_("Renamed \"%s\" to \"%s\"."), $referrer, $new_name), 'horde.success'); + + $url = Wicked::url($new_name, true, -1); + $message = sprintf(_("Renamed \"%s\" to \"%s\". New page: %s\n"), $referrer, $new_name, $url); + Wicked::mail($message, array( + 'Subject' => '[' . $registry->get('name') . '] renamed: ' . $referrer . ', ' . $new_name)); + } + + $wikiWord = '/^' . WICKED_REGEXP_WIKIWORD . '$/'; + + // We don't check permissions on these pages since we want references + // to be fixed even if the user doing the editing couldn't fix that + // page, and fixing references is likely to never be a destructive + // action, and the user can't supply their own data for it. + $references = Horde_Util::getFormData('ref', array()); + foreach ($references as $name => $value) { + $page_name = quoted_printable_decode($name); + + // Fix up for self-references. + if ($page_name == $referrer) { + $page_name = $new_name; + } + + $refPage = $wicked->retrieveByName($page_name); + if (is_a($refPage, 'PEAR_Error')) { + $notification->push(sprintf(_("Error retrieving %s: %s"), + $page_name, $refPage->getMessage()), + 'horde.error'); + continue; + } + + $changelog = sprintf(_("Changed references from %s to %s"), + $referrer, $new_name); + + if (preg_match($wikiWord, $new_name)) { + $replaceWith = $new_name; + } else { + $replaceWith = '((' . $new_name . '))'; + } + + $from = array('/\(\(' . preg_quote($referrer, '/') . '\)\)/'); + $to = array($replaceWith); + + // If this works as a bare wiki word, replace that, too. + if (preg_match($wikiWord, $referrer)) { + $from[] = '/\b' . preg_quote($referrer, '/') . '\b/'; + $to[] = $replaceWith; + } + + $newText = preg_replace($from, $to, $refPage['page_text']); + $result = $wicked->updateText($page_name, $newText, $changelog, true); + if (is_a($result, 'PEAR_Error')) { + $notification->push(sprintf(_("Error updating %s: %s"), + $page_name, $result->getMessage()), + 'horde.warning'); + return; + } + } + + header('Location: ' . Wicked::url($new_name, true)); + exit; + } + +} diff --git a/wicked/lib/Page/MostPopular.php b/wicked/lib/Page/MostPopular.php new file mode 100644 index 000000000..8089d3203 --- /dev/null +++ b/wicked/lib/Page/MostPopular.php @@ -0,0 +1,96 @@ + + * @package Wicked + */ +class MostPopular extends Page { + + /** + * Display modes supported by this page. + * + * @var array + */ + var $supportedModes = array( + WICKED_MODE_CONTENT => true, + WICKED_MODE_DISPLAY => true); + + /** + * Render this page in Content mode. + * + * @param integer $numPages How many (at most) pages should we return? + * + * @return string The page content, or PEAR_Error. + */ + function content($numPages = 10) + { + global $wicked; + + return $wicked->mostPopular($numPages); + } + + /** + * Render this page in Display mode. + * + * @return mixed Returns true or PEAR_Error. + */ + function displayContents($isBlock) + { + global $notification; + + $summaries = $this->content(10); + if (is_a($summaries, 'PEAR_Error')) { + $notification->push('Error retrieving MostPopular: ' . $summaries->getMessage(), 'horde.error'); + return $summaries; + } + + require_once 'Horde/Template.php'; + $template = new Horde_Template(); + $pages = array(); + foreach ($summaries as $page) { + $page = new StandardPage($page); + $pages[] = array('author' => $page->author(), + 'created' => $page->formatVersionCreated(), + 'name' => $page->pageName(), + 'context' => false, + 'hits' => $page->hits(), + 'url' => $page->pageUrl(), + 'version' => $page->version()); + } + $template->set('pages', $pages, true); + $template->set('hits', true, true); + $hits = true; + + Horde::addScriptFile('tables.js', 'horde', true); + + ob_start(); + require WICKED_TEMPLATES . '/pagelist/header.inc'; + echo $template->fetch(WICKED_TEMPLATES . '/pagelist/pagelist.html'); + require WICKED_TEMPLATES . '/pagelist/footer.inc'; + $contents = ob_get_contents(); + ob_end_clean(); + return $contents; + } + + function pageName() + { + return 'MostPopular'; + } + + function pageTitle() + { + return _("MostPopular"); + } + +} diff --git a/wicked/lib/Page/NewPage.php b/wicked/lib/Page/NewPage.php new file mode 100644 index 000000000..22b0fd0ec --- /dev/null +++ b/wicked/lib/Page/NewPage.php @@ -0,0 +1,147 @@ + + * @package Wicked + */ +class NewPage extends Page { + + /** + * Display modes supported by this page. + * + * @var array + */ + var $supportedModes = array( + WICKED_MODE_DISPLAY => true, + WICKED_MODE_EDIT => true); + + /** + * The page that we're creating. + * + * @var string + */ + var $_referrer = null; + + /** + * Page template to use. + * + * @var string + */ + var $_template = null; + + function NewPage($referrer) + { + $this->_referrer = $referrer; + $this->_template = Horde_Util::getFormData('template'); + } + + /** + * Retrieve this user's permissions for the referring page. + * + * @return integer The permissions bitmask. + */ + function getPermissions() + { + return parent::getPermissions($this->referrer()); + } + + /** + * Send them back whence they came if they aren't allowed to edit + * this page. + */ + function preDisplay() + { + if (!strlen($this->referrer())) { + $GLOBALS['notification']->push(_("Page name must not be empty")); + header('Location: ' . Wicked::url('', true)); + exit; + } + + if (!$this->allows(WICKED_MODE_EDIT)) { + header('Location: ' . Wicked::url($this->referrer(), true)); + exit; + } + } + + /** + * Render this page in Display mode. + * + * @return mixed Returns true or PEAR_Error. + */ + function display() + { + global $notification; + + // Load the page template. + if ($this->_template) { + $page = Page::getPage($this->_template); + $page_text = $page->getText(); + } else { + $page_text = ''; + } + + $notification->push('if (document.editform && document.editform.page_text) document.editform.page_text.focus();', 'javascript'); + require WICKED_TEMPLATES . '/edit/new.inc'; + return true; + } + + function pageName() + { + return 'NewPage'; + } + + function pageTitle() + { + return _("NewPage"); + } + + function referrer() + { + return $this->_referrer; + } + + function handleAction() + { + global $notification, $wicked; + + if (!$this->allows(WICKED_MODE_EDIT)) { + $notification->push(sprintf(_("You don't have permission to create \"%s\"."), $this->referrer())); + } else { + $text = Horde_Util::getPost('page_text'); + if (empty($text)) { + $notification->push(_("Pages cannot be empty."), 'horde.error'); + return; + } + + $result = $wicked->newPage($this->referrer(), $text); + if (is_a($result, 'PEAR_Error')) { + $notification->push(sprintf(_("Create Failed: %s"), + $result->getMessage()), 'horde.error'); + } else { + $notification->push(_("Page Created"), 'horde.success'); + } + } + + // Show the newly created page. + header('Location: ' . Wicked::url($this->referrer(), true)); + exit; + } + +} diff --git a/wicked/lib/Page/RecentChanges.php b/wicked/lib/Page/RecentChanges.php new file mode 100644 index 000000000..c7996ba23 --- /dev/null +++ b/wicked/lib/Page/RecentChanges.php @@ -0,0 +1,117 @@ + + * @package Wicked + */ +class RecentChanges extends Page { + + /** + * Display modes supported by this page. + * + * @var array + */ + var $supportedModes = array( + WICKED_MODE_CONTENT => true, + WICKED_MODE_DISPLAY => true); + + /** + * Render this page in Content mode. + * + * @return string The page content, or PEAR_Error. + */ + function content() + { + global $wicked; + + $days = (int)Horde_Util::getGet('days', 3); + $summaries = $wicked->getRecentChanges($days); + + $bydate = array(); + $changes = array(); + foreach ($summaries as $page) { + $page = new StandardPage($page); + + $createDate = $page->versionCreated(); + $tm = localtime($createDate, true); + $createDate = mktime(0, 0, 0, $tm['tm_mon'], $tm['tm_mday'], + $tm['tm_year'], $tm['tm_isdst']); + + $version_url = Horde_Util::addParameter($page->pageUrl(), 'version', + $page->version()); + $diff_url = Horde_Util::addParameter(Horde::applicationUrl('diff.php'), + array('page' => $page->pageName(), + 'v1' => '?', + 'v2' => $page->version())); + $diff_alt = sprintf(_("Show changes for %s"), $page->version()); + $diff_img = Horde::img('diff.png', $diff_alt); + $pageInfo = array('author' => $page->author(), + 'name' => $page->pageName(), + 'url' => $page->pageUrl(), + 'version' => $page->version(), + 'version_url' => $version_url, + 'version_alt' => sprintf(_("Show version %s"), + $page->version()), + 'diff_url' => $diff_url, + 'diff_alt' => $diff_alt, + 'diff_img' => $diff_img, + 'created' => $page->formatVersionCreated(), + 'change_log' => $page->changeLog()); + $bydate[$createDate][$page->versionCreated()] = $pageInfo; + } + krsort($bydate); + + foreach ($bydate as $pageList) { + krsort($pageList); + $pageList = array_values($pageList); + $changes[] = array('date' => $pageList[0]['created'], + 'pages' => $pageList); + } + + return $changes; + } + + /** + * Render this page in display or block mode. + * + * @return mixed Returns contents or PEAR_Error. + */ + function displayContents($isBlock) + { + global $notification; + + $changes = $this->content(); + if (is_a($changes, 'PEAR_Error')) { + $notification->push('Error retrieving histories: ' . $summaries->getMessage(), 'horde.error'); + return $changes; + } + + require_once 'Horde/Template.php'; + $template = new Horde_Template(); + $template->set('changes', $changes); + + return $template->fetch(WICKED_TEMPLATES . '/display/RecentChanges.html'); + } + + function pageName() + { + return 'RecentChanges'; + } + + function pageTitle() + { + return _("RecentChanges"); + } + +} diff --git a/wicked/lib/Page/RevertPage.php b/wicked/lib/Page/RevertPage.php new file mode 100644 index 000000000..92e571403 --- /dev/null +++ b/wicked/lib/Page/RevertPage.php @@ -0,0 +1,138 @@ + + * @package Wicked + */ +class RevertPage extends Page { + + /** + * Display modes supported by this page. + * + * @var array + */ + var $supportedModes = array(WICKED_MODE_DISPLAY => true); + + /** + * The page that we're confirming reversion for. + * + * @var string + */ + var $_referrer = null; + + function RevertPage($referrer) + { + $this->_referrer = $referrer; + } + + /** + * Retrieve this user's permissions for the referring page. + * + * @return integer The permissions bitmask. + */ + function getPermissions() + { + return parent::getPermissions($this->referrer()); + } + + /** + * Send them back whence they came if they aren't allowed to + * edit this page. + */ + function preDisplay() + { + $page = Page::getPage($this->referrer()); + if (!$page->allows(WICKED_MODE_EDIT)) { + header('Location: ' . Wicked::url($this->referrer(), true)); + exit; + } + } + + /** + * Render this page in Display mode. + * + * @return mixed True or PEAR_Error. + */ + function display() + { + $version = Horde_Util::getFormData('version'); + $page = Page::getPage($this->referrer(), $version); + $msg = sprintf(_("Are you sure you want to revert to version %s of this page?"), $version); +?> +
+ + + + + + +

+ pageUrl(), $page->pageName(), 'header') . $page->pageName() . ''; if ($page->isLocked()) echo Horde::img('locked.png', _("Locked")) ?> +

+ +
+

+

+ " class="button" /> + +

+
+ +
+_referrer; + } + + function handleAction() + { + global $notification; + + $page = Page::getPage($this->referrer()); + if ($page->allows(WICKED_MODE_EDIT)) { + $version = Horde_Util::getPost('version'); + if (empty($version)) { + $notification->push(sprintf(_("Can't revert to an unknown version.")), 'horde.error'); + header('Location: ' . Wicked::url($this->referrer(), true)); + } else { + $oldpage = Page::getPage($this->referrer(), $version); + $minor = substr($page->version(), 0, strpos($page->version(), '.')) == + substr($oldpage->version(), 0, strpos($oldpage->version(), '.')); + $page->updateText($oldpage->getText(), 'Revert', $minor); + $notification->push(sprintf(_("Reverted to version %s of \"%s\"."), $version, $page->pageName())); + header('Location: ' . Wicked::url($page->pageName(), true)); + } + exit; + } + + $notification->push(sprintf(_("You don't have permission to edit \"%s\"."), $page->pageName()), 'horde.warning'); + header('Location: ' . Wicked::url($this->referrer(), true)); + exit; + } + +} diff --git a/wicked/lib/Page/Search.php b/wicked/lib/Page/Search.php new file mode 100644 index 000000000..3f7e08ab4 --- /dev/null +++ b/wicked/lib/Page/Search.php @@ -0,0 +1,207 @@ + + * @package Wicked + */ +class Search extends Page { + + /** + * Display modes supported by this page. + * @var array + */ + var $supportedModes = array( + WICKED_MODE_CONTENT => true, + WICKED_MODE_DISPLAY => true); + + /** + * Cached search results. + * @var array + */ + var $_results; + + /** + * Render this page in Content mode. + * + * @param string $searchtext The title to search for. + * + * @return string The page content, or PEAR_Error. + */ + function content($searchtext = '') + { + if (empty($searchtext)) { + return array(); + } + + $titles = $GLOBALS['wicked']->searchTitles($searchtext); + $pages = $GLOBALS['wicked']->searchText($searchtext, false); + + return array('titles' => $titles, 'pages' => $pages); + } + + /** + * Perform any pre-display checks for permissions, searches, + * etc. Called before any output is sent so the page can do + * redirects. If the page wants to take control of flow from here, + * it can, and is entirely responsible for handling the user + * (should call exit after redirecting, for example). + * + * $param integer $mode The page render mode. + * $param array $params Any page parameters. + */ + function preDisplay($mode, $params) + { + $this->_results = $this->content($params); + } + + /** + * Render this page in Display mode. + * + * @param string $searchtext The title to search for. + * + * @return mixed Returns true or PEAR_Error. + */ + function display($searchtext) + { + global $notification; + + if (is_a($this->_results, 'PEAR_Error')) { + $notification->push('Error retrieving search results: ' . + $this->_results->getMessage(), 'horde.error'); + return $this->_results; + } + + if (!$searchtext) { + require WICKED_TEMPLATES . '/pagelist/search.inc'; + require WICKED_TEMPLATES . '/pagelist/footer.inc'; + return true; + } + + Horde::addScriptFile('tables.js', 'horde', true); + + require_once 'Horde/Template.php'; + $template = new Horde_Template(); + + /* Prepare exact match section */ + $exact = array(); + $page = new StandardPage($searchtext); + if ($GLOBALS['wicked']->pageExists($searchtext)) { + $exact[] = array('author' => htmlspecialchars($page->author()), + 'created' => $page->formatVersionCreated(), + 'name' => htmlspecialchars($page->pageName()), + 'context' => false, + 'url' => $page->pageUrl(), + 'version' => $page->version(), + 'class' => ''); + } else { + $exact[] = array('author' => '', + 'created' => '', + 'name' => htmlspecialchars($searchtext), + 'context' => sprintf(_("%s does not exist. You can create it now."), '' . htmlspecialchars($searchtext) . ''), + 'url' => Wicked::url($searchtext, false), + 'version' => '', + 'class' => 'newpage'); + } + + /* Prepare page title matches */ + $titles = array(); + foreach ($this->_results['titles'] as $page) { + if (!empty($page['page_history'])) { + $page = new StdHistoryPage($page); + } else { + $page = new StandardPage($page); + } + + $titles[] = array('author' => $page->author(), + 'created' => $page->formatVersionCreated(), + 'name' => $page->pageName(), + 'context' => false, + 'url' => $page->pageUrl(), + 'version' => $page->version(), + 'class' => ''); + } + + /* Prepare page text matches */ + $pages = array(); + foreach ($this->_results['pages'] as $page) { + if (!empty($page['page_history'])) { + $page = new StdHistoryPage($page); + } else { + $page = new StandardPage($page); + } + + $pages[] = array('author' => $page->author(), + 'created' => $page->formatVersionCreated(), + 'name' => $page->pageName(), + 'context' => $this->getContext($page, $searchtext), + 'url' => $page->pageUrl(), + 'version' => $page->version(), + 'class' => ''); + } + + $template->set('hits', false, true); + + $template->set('th_page', _("Page"), true); + $template->set('th_version', _("Version"), true); + $template->set('th_author', _("Author"), true); + $template->set('th_created', _("Creation Date"), true); + + // Show search form and page header. + require WICKED_TEMPLATES . '/pagelist/search.inc'; + + // Show exact match. + $template->set('title', _("Exact Match"), true); + $template->set('pages', $exact, true); + echo $template->fetch(WICKED_TEMPLATES . '/pagelist/results_header.html'); + echo $template->fetch(WICKED_TEMPLATES . '/pagelist/pagelist.html'); + require WICKED_TEMPLATES . '/pagelist/results_footer.inc'; + + // Show page title matches. + $template->set('title', _("Page Title Matches"), true); + $template->set('pages', $titles, true); + echo $template->fetch(WICKED_TEMPLATES . '/pagelist/results_header.html'); + echo $template->fetch(WICKED_TEMPLATES . '/pagelist/pagelist.html'); + require WICKED_TEMPLATES . '/pagelist/results_footer.inc'; + + // Show page text matches. + $template->set('title', _("Page Text Matches"), true); + $template->set('pages', $pages, true); + echo $template->fetch(WICKED_TEMPLATES . '/pagelist/results_header.html'); + echo $template->fetch(WICKED_TEMPLATES . '/pagelist/pagelist.html'); + require WICKED_TEMPLATES . '/pagelist/results_footer.inc'; + echo ''; + + return true; + } + + function getContext($page, $searchtext) + { + if (preg_match('/.{0,100}' . preg_quote($searchtext, '/') . '.{0,100}/i', $page->getText(), $context)) { + return preg_replace('/' . preg_quote($searchtext, '/') . '/i', '' . htmlspecialchars($searchtext) . '', htmlspecialchars($context[0])); + } + return ''; + } + + function pageName() + { + return 'Search'; + } + + function pageTitle() + { + return _("Search"); + } + +} diff --git a/wicked/lib/Page/StandardPage.php b/wicked/lib/Page/StandardPage.php new file mode 100644 index 000000000..be4a832bc --- /dev/null +++ b/wicked/lib/Page/StandardPage.php @@ -0,0 +1,368 @@ + + * @package Wicked + */ +class StandardPage extends Page { + + /** + * Display modes supported by this page. + * + * @var array + */ + var $supportedModes = array( + WICKED_MODE_DISPLAY => true, + WICKED_MODE_EDIT => true, + WICKED_MODE_REMOVE => true, + WICKED_MODE_HISTORY => true, + WICKED_MODE_DIFF => true); + + /** + * A Horde_Locks instance for un-/locking this page. + * + * @var Horde_Lock + */ + var $_locks = null; + + /** + * Lock information if this page is currently locked. + * + * @var array + */ + var $_lock = null; + + /** + * Constructs a standard page class to represent a wiki page. + * + * @param string $pagename The name of the page to represent. + */ + function StandardPage($pagename) + { + if (is_array($pagename)) { + $this->_page = $pagename; + return; + } + + global $wicked, $notification, $perms; + $page = $wicked->retrieveByName($pagename); + + // Make sure 'wicked' permission exists. Set reasonable defaults if + // necessary. + if (!$perms->exists('wicked')) { + $perm = &$perms->newPermission('wicked'); + $perm->addGuestPermission(Horde_Perms::SHOW | Horde_Perms::READ, false); + $perm->addDefaultPermission(Horde_Perms::SHOW | Horde_Perms::READ | Horde_Perms::EDIT | Horde_Perms::DELETE, false); + $perms->addPermission($perm); + } + + // Make sure 'wicked:pages' exists. Copy from 'wicked' if it does not + // exist. + if (!$perms->exists('wicked:pages')) { + $perm = &$perms->newPermission('wicked:pages'); + $copyFrom = &$perms->getPermission('wicked'); + $perm->addGuestPermission($copyFrom->getGuestPermissions(), false); + $perm->addDefaultPermission($copyFrom->getDefaultPermissions(), false); + $perm->addCreatorPermission($copyFrom->getCreatorPermissions(), false); + foreach ($copyFrom->getUserPermissions() as $user => $uperm) { + $perm->addUserPermission($user, $uperm, false); + } + foreach ($copyFrom->getGroupPermissions() as $group => $gperm) { + $perm->addGroupPermission($group, $gperm, false); + } + $perms->addPermission($perm); + } + + // If we can't load $pagename, see if there's default data for it. + if (is_a($page, 'PEAR_Error')) { + $pagefile = WICKED_BASE . '/scripts/data/' . basename($pagename); + if ($pagename == basename($pagename) && + file_exists($pagefile)) { + $text = file_get_contents($pagefile); + $result = $wicked->newPage($pagename, $text); + if (!is_a($result, 'PEAR_Error')) { + $page = $wicked->retrieveByName($pagename); + if (is_a($page, 'PEAR_Error')) { + $notification->push(sprintf(_("Unable to create %s"), $pagename), 'horde.error'); + } + } + } + } + + if (is_a($page, 'PEAR_Error')) { + if ($pagename == 'WikiHome') { + $notification->push(_("Unable to create WikiHome. The wiki is not configured."), 'horde.error'); + } + $this->_page = array(); + } else { + $this->_page = $page; + } + + if ($GLOBALS['conf']['lock']['driver'] != 'none') { + $this->supportedModes[WICKED_MODE_LOCKING] = $this->supportedModes[WICKED_MODE_UNLOCKING] = true; + $this->_locks = Horde_Lock::factory($GLOBALS['conf']['lock']['driver']); + $locks = $this->_locks->getLocks('wicked', $pagename, Horde_Lock::TYPE_EXCLUSIVE); + if ($locks) { + $this->_lock = reset($locks); + } + } + } + + /** + * Returns if the page allows a mode. Access rights and user state + * are taken into consideration. + * + * @see $supportedModes + * + * @param integer $mode The mode to check for. + * + * @return boolean True if the mode is allowed. + */ + function allows($mode) + { + if ($mode == WICKED_MODE_UNLOCKING && $this->_lock && + (Horde_Auth::getAuth() && Horde_Auth::getAuth() == $this->_lock['lock_owner']) || + (!Horde_Auth::getAuth() && $GLOBALS['browser']->getIPAddress() == $this->_lock['lock_owner'])) { + return true; + } + return parent::allows($mode); + } + + function displayContents($isBlock) + { + global $wicked; + + $wiki = $this->getProcessor(); + $text = $wiki->transform($this->getText()); + $attachments = array(); + + if (!$isBlock) { + $pageId = $wicked->getPageId($this->pageName()); + if (!is_a($pageId, 'PEAR_Error')) { + $attachments = $wicked->getAttachedFiles($wicked->getPageId($this->pageName())); + if (is_a($attachments, 'PEAR_Error')) { + $attachments = array(); + } + } + + if (count($attachments)) { + global $mime_drivers, $mime_drivers_map; + $result = Horde::loadConfiguration('mime_drivers.php', array('mime_drivers', 'mime_drivers_map'), 'horde'); + extract($result); + } + } + + ob_start(); + require WICKED_TEMPLATES . '/display/standard.inc'; + $result = ob_get_contents(); + ob_end_clean(); + return $result; + } + + /** + * Renders this page in History mode. + */ + function history() + { + global $wicked, $notification; + require_once WICKED_BASE . '/lib/Page/StandardPage/StdHistoryPage.php'; + + $summaries = $wicked->getHistory($this->pageName()); + if (is_a($summaries, 'PEAR_Error')) { + $notification->push('Error retrieving histories : ' . $summaries->getMessage(), 'horde.error'); + return $summaries; + } + + // Header. + $show_restore = !$this->isLocked(); + $allow_diff = true; + $show_edit = true; + require WICKED_TEMPLATES . '/history/header.inc'; + $style = 'text'; + + // First item is this page. + $show_restore = false; + $page = $this; + $i = 0; + require WICKED_TEMPLATES . '/history/summary.inc'; + + // Now the rest of the histories. + $show_restore = !$this->isLocked(); + $show_edit = false; + foreach ($summaries as $page) { + $i++; + $page = new StdHistoryPage($page); + require WICKED_TEMPLATES . '/history/summary.inc'; + } + + // Footer. + require WICKED_TEMPLATES . '/history/footer.inc'; + } + + function isLocked($owner = null) + { + if (empty($this->_lock)) { + return false; + } + if (is_null($owner)) { + return true; + } + return $owner != $this->_lock['lock_owner']; + } + + function lock() + { + if ($this->_locks) { + $owner = Horde_Auth::getAuth() ? Horde_Auth::getAuth() : $GLOBALS['browser']->getIPAddress(); + $id = $this->_locks->setLock($owner, 'wicked', $this->pageName(), $GLOBALS['conf']['wicked']['lock']['time'] * 60, Horde_Lock::TYPE_EXCLUSIVE); + if ($id) { + $this->_lock = $this->_locks->getLockInfo($id); + } else { + return PEAR::raiseError(_("The page is already locked.")); + } + } + } + + function unlock() + { + if ($this->_locks && $this->_lock) { + $this->_locks->clearLock($this->_lock['lock_id']); + unset($this->_lock); + } + } + + function getLockRequestor() + { + $requestor = $this->_lock['lock_owner']; + if ($requestor) { + $identity = Horde_Prefs_Identity::factory('none', $requestor); + $name = $identity->getValue('fullname'); + if (!strlen($name)) { + $name = $requestor; + } + return $name; + } + return _("a guest"); + } + + function getLockTime() + { + $time = ceil(($this->_lock['lock_expiry_timestamp'] - time()) / 60); + return sprintf(ngettext("%d minute", "%d minutes", $time), $time); + } + + function updateText($newtext, $changelog, $minorchange) + { + $version = $this->version(); + $result = $GLOBALS['wicked']->updateText($this->pageName(), $newtext, + $changelog, $minorchange); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + + $url = Wicked::url($this->pageName(), true, -1); + $new_page = $this->getPage($this->pageName()); + + $message = "Modified page: $url\n" + . 'New Revision: ' . $new_page->version() . "\n" + . ($changelog ? 'Change log: ' . $changelog . "\n" : '') + . "\n" + . $new_page->getDiff($version); + Wicked::mail($message, + array('Subject' => '[' . $GLOBALS['registry']->get('name') + . '] changed: ' . $this->pageName())); + + $this->_page['page_text'] = $newtext; + } + + function pageID() + { + return isset($this->_page['page_id']) ? $this->_page['page_id'] : ''; + } + + function pageName() + { + return isset($this->_page['page_name']) + ? $this->_page['page_name'] + : ''; + } + + function getText() + { + return isset($this->_page['page_text']) + ? $this->_page['page_text'] + : ''; + } + + function versionCreated() + { + return isset($this->_page['version_created']) + ? $this->_page['version_created'] + : ''; + } + + function hits() + { + return !empty($this->_page['page_hits']) + ? $this->_page['page_hits'] + : 0; + } + + function changeLog() + { + return $this->_page['change_log']; + } + + function version() + { + if (isset($this->_page['page_majorversion']) && + isset($this->_page['page_minorversion'])) { + return $this->_page['page_majorversion'] . '.' . + $this->_page['page_minorversion']; + } else { + return ''; + } + } + + function diff($version) + { + require WICKED_TEMPLATES . '/diff/diff.inc'; + } + + /** + * Produces a diff for this page. + * + * @param string $version Previous version, or null if diffing with + * `before the beginning' (empty). + * @param string $renderer The diff renderer. + */ + function getDiff($version, $renderer = 'unified') + { + if (is_null($version)) { + $old_page_text = ''; + } else { + $old_page = $this->getPage($this->pageName(), $version); + $old_page_text = $old_page->getText(); + } + + include_once 'Text/Diff.php'; + include_once 'Text/Diff/Renderer.php'; + include_once 'Text/Diff/Renderer/' . $renderer . '.php'; + + $diff = new Text_Diff(explode("\n", $old_page_text), + explode("\n", $this->getText())); + + $class = 'Text_Diff_Renderer_' . $renderer; + $renderer = new $class(); + return $renderer->render($diff); + } + +} diff --git a/wicked/lib/Page/StandardPage/StdHistoryPage.php b/wicked/lib/Page/StandardPage/StdHistoryPage.php new file mode 100644 index 000000000..eb81ae4be --- /dev/null +++ b/wicked/lib/Page/StandardPage/StdHistoryPage.php @@ -0,0 +1,63 @@ + + * @package Wicked + */ +class StdHistoryPage extends StandardPage { + + /** + * Display modes supported by this page. + * + * @var array + */ + var $supportedModes = array( + WICKED_MODE_DISPLAY => true, + WICKED_MODE_EDIT => false, + WICKED_MODE_REMOVE => true, + WICKED_MODE_HISTORY => true, + WICKED_MODE_DIFF => true, + WICKED_MODE_LOCKING => false, + WICKED_MODE_UNLOCKING => false); + + /** + * Construct a standard history page class to represent an old + * version of a wiki page. + * + * @param string $pagename The name of the page to load. + * @param integer $version The version of the page to load. + */ + function StdHistoryPage($pagename, $version = null) + { + if (empty($version)) { + parent::StandardPage($pagename); + return; + } + + // Retrieve the version. + $pages = $GLOBALS['wicked']->retrieveHistory($pagename, $version); + + // If it didnt find one, return an error. + if (is_a($pages, 'PEAR_Error')) { + $GLOBALS['notification']->push($pages); + } elseif (empty($pages[0])) { + $GLOBALS['notification']->push(_("History page not found")); + } else { + $this->_page = $pages[0]; + } + } + + function isOld() + { + return true; + } + + function pageUrl($linkpage = null, $actionId = null) + { + return Horde_Util::addParameter(parent::pageUrl($linkpage, $actionId), 'version', $this->version()); + } + +} diff --git a/wicked/lib/Page/SyncDiff.php b/wicked/lib/Page/SyncDiff.php new file mode 100644 index 000000000..77fe1c938 --- /dev/null +++ b/wicked/lib/Page/SyncDiff.php @@ -0,0 +1,181 @@ + + * @package Wicked + */ +class SyncDiff extends SyncPages { + + /** + * Display modes supported by this page. + */ + var $supportedModes = array( + WICKED_MODE_CONTENT => true, + WICKED_MODE_DISPLAY => true); + + /** + * Sync driver + */ + var $_sync; + + /** + * Working page + */ + var $_pageName; + + function SyncDiff() + { + parent::SyncPages(); + + $this->_pageName = Horde_Util::getGet('sync_page'); + } + + /** + * Render this page in Content mode. + * + * @return string The page content, or PEAR_Error. + */ + function content() + { + if (!$this->_loadSyncDriver()) { + return PEAR::raiseError(_("Synchronization is disabled")); + } + + $remote = $this->_sync->getPageSource($this->_pageName); + if (is_a($remote, 'PEAR_Error')) { + return $remote; + } + + $page = Page::getPage($this->_pageName); + if (is_a($page, 'PEAR_Error')) { + return $page; + } + + $local = $page->getText(); + if (is_a($local, 'PEAR_Error')) { + return $local; + } + + $renderer = 'inline'; + $inverse = Horde_Util::getGet('inverse', 1); + + include_once 'Text/Diff.php'; + include_once 'Text/Diff/Renderer.php'; + include_once 'Text/Diff/Renderer/' . $renderer . '.php'; + + if ($inverse) { + $diff = new Text_Diff(explode("\n", $local), + explode("\n", $remote)); + $name1 = _("Local"); + $name2 = _("Remote"); + } else { + $diff = new Text_Diff(explode("\n", $remote), + explode("\n", $local)); + $name1 = _("Remote"); + $name2 = _("Local"); + } + + $class = 'Text_Diff_Renderer_' . $renderer; + $renderer = new $class(); + + Horde::addScriptFile('tables.js', 'horde', true); + + ob_start(); + require WICKED_TEMPLATES . '/sync/diff.inc'; + return ob_get_clean(); + } + + /** + * Render this page in display or block mode. + * + * @return mixed Returns page contents or PEAR_Error + */ + function displayContents($isBlock) + { + global $notification; + + $content = $this->content(); + if (is_a($content, 'PEAR_Error')) { + $notification->push($content); + } + + return $content; + } + + /** + * Page name + */ + function pageName() + { + return 'SyncDiff'; + } + + /** + * Page title + */ + function pageTitle() + { + return _("SyncDiff"); + } + + /** + * Try to find out if any version's content is same on the local and remote + * servers. + */ + function _getSameVersion() + { + $local = $GLOBALS['wicked']->getHistory($this->_pageName); + if (is_a($local, 'PEAR_Error')) { + return $local; + } + + $info = $this->getLocalPageInfo($this->_pageName); + if (is_a($info, 'PEAR_Error')) { + return $info; + } + $local[] = $info; + + $remote = $this->_sync->getPageHistory($this->_pageName); + if (is_a($remote, 'PEAR_Error')) { + return $remote; + } + + $info = $this->getRemotePageInfo($this->_pageName); + if (is_a($info, 'PEAR_Error')) { + return $info; + } + $remote[] = $info; + + $checksums = array(); + foreach (array_keys($local) as $i) { + if (!isset($local[$i]['page_checksum'])) { + $local[$i]['page_checksum'] = md5($local[$i]['page_text']); + unset($local[$i]['page_text']); + } + $checksums[$i] = $local[$i]['page_checksum']; + } + + $result = false; + foreach ($remote as $history) { + $version = array_search($history['page_checksum'], $checksums); + if ($version !== false) { + $result = array('remote' => $history, 'local' => $local[$version]); + break; + } + } + + return $result; + } + +} diff --git a/wicked/lib/Page/SyncPages.php b/wicked/lib/Page/SyncPages.php new file mode 100644 index 000000000..f5d178baf --- /dev/null +++ b/wicked/lib/Page/SyncPages.php @@ -0,0 +1,446 @@ + + * @package Wicked + */ +class SyncPages extends Page { + + /** + * Display modes supported by this page. + */ + var $supportedModes = array( + WICKED_MODE_CONTENT => true); + + /** + * Sync driver + */ + var $_sync; + + /** + * Constructor + */ + function SyncPages() + { + $this->_loadSyncDriver(); + if (is_a($this->_sync, 'PEAR_Error')) { + return $this->_sync; + } + + // Do we need to perform any action? + switch (Horde_Util::getGet('actionID')) { + case 'sync_download': + $page = Horde_Util::getGet('sync_page'); + return $this->download($page); + + case 'sync_upload': + $page = Horde_Util::getGet('sync_page'); + return $this->upload($page); + } + } + + /** + * Render this page in Content mode. + * + * @return string The page content, or PEAR_Error. + */ + function content() + { + global $wicked; + + // Used in all cases. + $form = $this->_syncForm(); + + // We have no data to check + if (empty($_SESSION['wicked']['sync'])) { + ob_start(); + require WICKED_TEMPLATES . '/sync/header.inc'; + require WICKED_TEMPLATES . '/sync/footer.inc'; + return ob_get_clean(); + } + + // New pages on remote server + $new_remote = array(); + foreach ($_SESSION['wicked']['sync']['pages'] as $pageName => $info) { + if (!$wicked->pageExists($pageName)) { + $new_remote[$pageName] = array( + 'page_majorversion' => $info['page_majorversion'], + 'page_minorversion' => $info['page_minorversion'], + 'page_checksum' => $info['page_checksum'], + 'version_created' => $info['version_created'], + 'change_author' => $info['change_author'], + 'change_log' => $info['change_log'] + ); + } + } + + // New pages on local server + $new_local = array(); + $local_pages = $wicked->getPages(false); + foreach ($local_pages as $pageName) { + if (isset($_SESSION['wicked']['sync']['pages'][$pageName])) { + continue; + } + $page = Page::getPage($pageName); + if (is_a($page, 'PEAR_Error')) { + return $page; + } + $new_local[$pageName] = array( + 'page_majorversion' => $page->_page['page_majorversion'], + 'page_minorversion' => $page->_page['page_minorversion'], + 'page_checksum' => md5($page->getText()), + 'version_created' => $page->_page['version_created'], + 'change_author' => $page->_page['change_author'], + 'change_log' => $page->_page['change_log'] + ); + } + + // Pages with differences + $sync_pages = array(); + foreach ($local_pages as $pageName) { + // Is a new page + if (isset($new_local[$pageName]) || + isset($new_remote[$pageName])) { + continue; + } + + // Compare checksum + $page = Page::getPage($pageName); + if (is_a($page, 'PEAR_Error')) { + return $page; + } elseif (md5($page->getText()) == $_SESSION['wicked']['sync']['pages'][$pageName]['page_checksum']) { + continue; + } + + $sync_pages[] = $pageName; + } + + // Output + Horde::addScriptFile('tables.js', 'horde', true); + ob_start(); + require WICKED_TEMPLATES . '/sync/header.inc'; + require WICKED_TEMPLATES . '/sync/list.inc'; + require WICKED_TEMPLATES . '/sync/footer.inc'; + return ob_get_clean(); + } + + /** + * Render this page in display or block mode. + * + * @return mixed Returns page contents or PEAR_Error + */ + function displayContents($isBlock) + { + global $notification; + + $content = $this->content(); + if (is_a($content, 'PEAR_Error')) { + $notification->push($content); + } + + return $content; + } + + /** + * Page name + */ + function pageName() + { + return 'SyncPages'; + } + + /** + * Page title + */ + function pageTitle() + { + return _("SyncPages"); + } + + /** + * Prepare page link + */ + function _viewLink($pageName, $local = true) + { + if ($local) { + return '' . _("View local") . ''; + } else { + return '' . _("View remote") . ''; + } + } + + /** + * Get and process sync info form + */ + function _syncForm() + { + require_once 'Horde/Form.php'; + + $vars = Horde_Variables::getDefaultVariables(); + $form = new Horde_Form($vars, _("Sync data"), 'syncdata'); + $form->setButtons(array(_("Fetch page list"), _("Save login info"), _("Remove login info")), _("Reset")); + $form->addHidden('', 'page', 'text', true); + + $defaults = array( + 'driver' => 'wicked', + 'prefix' => 'wiki', + 'url' => 'http://wiki.example.org/rpc.php', + 'display' => 'http://wiki.example.org/display.php?page=', + 'edit' => 'http://wiki.example.org/display.php?page=EditPage&referrer=', + 'user' => '', + 'password' => '', + ); + + // Prepare default values + $stored = @unserialize($GLOBALS['prefs']->getValue('sync_data')); + if (isset($_GET['__old_sync_select'])) { + unset($_SESSION['wicked']['sync']); + } + if ($vars->get('sync_select') && isset($stored[$vars->get('sync_select')])) { + $defaults = $stored[$vars->get('sync_select')]; + foreach ($defaults as $k => $v) { + if ($vars->exists('sync_' . $k)) { + $vars->set('sync_' . $k, $v); + } + } + } + if (!empty($_SESSION['wicked']['sync'])) { + $defaults = $_SESSION['wicked']['sync']; + } + + // Add stored info selection + $enum = array(); + foreach ($stored as $k => $v) { + $enum[$k] = $v['url'] . ' (' . $v['user'] . ')'; + } + if (!empty($enum)) { + require_once 'Horde/Form/Action.php'; + $v = &$form->addVariable(_("Stored"), 'sync_select', 'enum', false, null, false, array($enum, _("Custom"))); + $v->setAction(Horde_Form_Action::factory('submit')); + $v->setOption('trackchange', true); + } + + // Add standard form info + $v = &$form->addVariable(_("Driver"), 'sync_driver', 'enum', true, null, false, array(array('wicked' => 'Wicked'), false)); + $v->setDefault($defaults['driver']); + + $v = &$form->addVariable(_("Prefix"), 'sync_prefix', 'text', true); + $v->setDefault($defaults['prefix']); + + $v = &$form->addVariable(_("Url"), 'sync_url', 'text', true); + $v->setDefault($defaults['url']); + + $v = &$form->addVariable(_("User"), 'sync_user', 'text', false, false, _("By default, your login data will be used")); + $v->setDefault($defaults['user']); + + $form->addVariable(_("Password"), 'sync_password', 'password', false, false, _("By default, your login data will be used")); + + $v = &$form->addVariable(_("Display"), 'sync_display', 'text', false); + $v->setDefault($defaults['display']); + + $v = &$form->addVariable(_("Edit"), 'sync_edit', 'text', false); + $v->setDefault($defaults['edit']); + + // Process + if ($form->validate()) { + $info = array( + 'driver' => $vars->get('sync_driver'), + 'prefix' => $vars->get('sync_prefix'), + 'url' => $vars->get('sync_url'), + 'display' => $vars->get('sync_display'), + 'edit' => $vars->get('sync_edit'), + 'user' => $vars->get('sync_user'), + 'password' => $vars->get('sync_password'), + 'pages' => array(), + ); + + switch (Horde_Util::getFormData('submitbutton')) { + case _("Fetch page list"): + // Load driver + $_SESSION['wicked']['sync'] = $info; + $this->_loadSyncDriver(); + if (is_a($this->_sync, 'PEAR_Error')) { + return $this->_sync; + } + + // We submitted the form so we should fetch pages + $pages = $this->_sync->getMultiplePageInfo(); + if (is_a($pages, 'PEAR_Error')) { + $GLOBALS['notification']->push($pages); + } elseif (!empty($pages)) { + $_SESSION['wicked']['sync']['pages'] = $pages; + } + break; + + case _("Save login info"): + $data = unserialize($GLOBALS['prefs']->getValue('sync_data')); + $key = md5($info['url'] . $info['user']); + $data[$key] = $info; + unset($data[$key]['password'], + $data[$key]['pages']); + $GLOBALS['prefs']->setValue('sync_data', serialize($data)); + $GLOBALS['notification']->push(_("Sync login info was stored"), 'horde.success'); + + header('Location: ' . Wicked::url('SyncPages', true)); + exit; + + case _("Remove login info"): + $data = unserialize($GLOBALS['prefs']->getValue('sync_data')); + $key = md5($info['url'] . $info['user']); + unset($data[$key]); + $GLOBALS['prefs']->setValue('sync_data', serialize($data)); + $GLOBALS['notification']->push(_("Sync login info was removed."), 'horde.success'); + + header('Location: ' . Wicked::url('SyncPages', true)); + exit; + } + } + + return Horde_Util::bufferOutput(array($form, 'renderActive'), null, null, null, 'get'); + } + + /** + * Get page info + * + * @param boolean $local Get local or remote info + */ + function getLocalPageInfo($pageName) + { + $page = Page::getPage($pageName); + if (is_a($page, 'PEAR_Error')) { + return $page; + } + + return array( + 'page_majorversion' => $page->_page['page_majorversion'], + 'page_minorversion' => $page->_page['page_minorversion'], + 'page_checksum' => md5($page->getText()), + 'version_created' => $page->_page['version_created'], + 'change_author' => $page->_page['change_author'], + 'change_log' => $page->_page['change_log'], + ); + } + + /** + * Get page info + * + * @param boolean $local Get local or remote info + */ + function getRemotePageInfo($pageName) + { + if (isset($_SESSION['wicked']['sync']['pages'][$pageName])) { + return $_SESSION['wicked']['sync']['pages'][$pageName]; + } else { + $info = $this->_sync->getPageInfo($pageName); + if (!is_a($info, 'PEAR_Error')) { + $_SESSION['wicked']['sync']['pages'][$pageName] = $info; + } + return $info; + } + } + + /** + * Download remote page to local server + */ + function download($pageName) + { + $text = $this->_sync->getPageSource($pageName); + if (is_a($text, 'PEAR_Error')) { + return $text; + } + + $page = Page::getPage($pageName); + if (is_a($page, 'PEAR_Error')) { + return $page; + } + + if (!$page->allows(WICKED_MODE_EDIT)) { + return PEAR::RaiseError(sprintf(_("You don't have permission to edit \"%s\"."), $pageName)); + } + + $content = $page->getText(); + if (is_a($content, 'PEAR_Error')) { + // Maybe the page does not exists, if not create it + if ($GLOBALS['wicked']->pageExists($pageName)) { + return $content; + } else { + $result = $GLOBALS['wicked']->newPage($pageName, $text); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + } + } else { + if (trim($text) == trim($content)) { + return PEAR::raiseError(_("No changes made")); + } + $result = $page->updateText($text, _("Downloded from remote server"), true); + if (is_a($result, 'PEAR_Error')) { + return $result; + } + } + + $GLOBALS['notification']->push(sprintf(_("Page \"%s\" was sucessfuly downloaded from remote to local wiki."), $pageName), 'horde.success'); + + // Show the newly saved page. + header('Location: ' . Wicked::url($pageName, true)); + exit; + } + + /** + * Upload local page to remote server + */ + function upload($pageName) + { + $page = Page::getPage($pageName); + if (is_a($page, 'PEAR_Error')) { + $GLOBALS['notification']->push($page); + return $page; + } + + $content = $page->getText(); + if (is_a($content, 'PEAR_Error')) { + $GLOBALS['notification']->push($content); + return $content; + } + + $result = $this->_sync->editPage($pageName, $content, _("Uploaded from remote server"), true); + if (is_a($result, 'PEAR_Error')) { + $GLOBALS['notification']->push($result); + return $content; + } + + $GLOBALS['notification']->push(sprintf(_("Page \"%s\" was sucessfully uploaded from local to remote wiki."), $pageName), 'horde.success'); + + // Show the newly updated page. + header('Location: ' . Wicked::url($pageName, true)); + exit; + } + + /** + * Load sync driver + */ + function _loadSyncDriver() + { + if ($this->_sync) { + return true; + } elseif (empty($_SESSION['wicked']['sync']['driver'])) { + return false; + } + + $this->_sync = Wicked_Sync::factory($_SESSION['wicked']['sync']['driver'], + $_SESSION['wicked']['sync']); + } + +} diff --git a/wicked/lib/Sync.php b/wicked/lib/Sync.php new file mode 100644 index 000000000..74df3dbe9 --- /dev/null +++ b/wicked/lib/Sync.php @@ -0,0 +1,145 @@ + + * @package Wicked + */ +class Wicked_Sync { + + /** + * Hash containing connection parameters. + * + * @var array + */ + var $_params = array(); + + /** + * Attempts to return a concrete Wicked_Sync instance based on $driver. + * + * @param string $driver The type of the concrete Wicked_Sync subclass + * to return. The class name is based on the + * sync driver ($driver). The code is + * dynamically included. + * + * @param array $params A hash containing any additional configuration + * or connection parameters a subclass might need. + * + * @return Wicked_Sync The newly created concrete Wicked_Sync + * instance, or false on an error. + */ + function factory($driver = 'wicked', $params = array()) + { + $class = 'Wicked_Sync_' . $driver; + if (!class_exists($class)) { + include dirname(__FILE__) . '/Sync/' . $driver . '.php'; + } + + if (empty($params['user'])) { + $params['user'] = Horde_Auth::getAuth(); + } + + if (empty($params['password'])) { + $params['password'] = Horde_Auth::getCredential('password'); + } + + if (class_exists($class)) { + return new $class($params); + } else { + return false; + } + } + + /** + * Constructs a new Wicked driver object. + * + * @param array $params A hash containing connection parameters. + */ + function Wicked_Sync($params = array()) + { + $this->_params = $params; + } + + /** + * Returns a list of available pages. + * + * @return array An array of all available pages. + */ + function listPages() + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Get the wiki source of a page specified by its name. + * + * @param string $name The name of the page to fetch + * + * @return mixed Array of page data on success; PEAR_Error on failure + */ + function getPageSource($pageName) + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Return basic page information. + * + * @param string $pageName Page name + * + * @return mixed Array of page data on success; PEAR_Error on failure + */ + function getPageInfo($pageName) + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Return basic information of .multiple pages + * + * @param array $pages Page names to get info for + * + * @return mixed Array of pages data on success; PEAR_Error on failure + */ + function getMultiplePageInfo($pages = array()) + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Return page history. + * + * @param string $pagename Page name + * + * @return array An array of page parameters. + */ + function getPageHistory($pagename) + { + return PEAR::raiseError(_("Unsupported")); + } + + /** + * Updates content of a wiki page. If the page does not exist it is + * created. + * + * @param string $pagename Page to edit + * @param string $text Page content + * @param string $changelog Description of the change + * @param boolean $minorchange True if this is a minor change + * + * @return boolean | PEAR_Error True on success, PEAR_Error on failure. + */ + function editPage($pagename, $text, $changelog = '', $minorchange = false) + { + return PEAR::raiseError(_("Unsupported")); + } + +} diff --git a/wicked/lib/Sync/wicked.php b/wicked/lib/Sync/wicked.php new file mode 100644 index 000000000..7430d15ea --- /dev/null +++ b/wicked/lib/Sync/wicked.php @@ -0,0 +1,125 @@ + + * @package Wicked + */ +class Wicked_Sync_wicked extends Wicked_Sync { + + /** + * Returns a list of available pages. + * + * @return array An array of all available pages. + */ + var $_client; + + /** + * Returns a list of available pages. + * + * @return array An array of all available pages. + */ + function listPages() + { + return $this->_getData('list'); + } + + /** + * Get the wiki source of a page specified by its name. + * + * @param string $name The name of the page to fetch + * + * @return mixed String of page data on success; PEAR_Error on fail + */ + function getPageSource($pageName) + { + return $this->_getData('getPageSource', array($pageName)); + } + + /** + * Return basic page information. + * + * @param string $pageName Page name + * + * @return mixed Array of page data on success; PEAR_Error on failure + */ + function getPageInfo($pageName) + { + return $this->_getData('getPageInfo', array($pageName)); + } + + /** + * Return basic pages information. + * + * @param array $pages Page names to get info for + * + * @return mixed Array of pages data on success; PEAR_Error on failure + */ + function getMultiplePageInfo($pages = array()) + { + return $this->_getData('getMultiplePageInfo', array($pages)); + } + + /** + * Return page history. + * + * @param string $pagename Page name + * + * @return array An array of page parameters. + */ + function getPageHistory($pagename) + { + return $this->_getData('getPageHistory', array($pagename)); + } + + /** + * Updates content of a wiki page. If the page does not exist it is + * created. + * + * @param string $pagename Page to edit + * @param string $text Page content + * @param string $changelog Description of the change + * @param boolean $minorchange True if this is a minor change + * + * @return boolean | PEAR_Error True on success, PEAR_Error on failure. + */ + function editPage($pagename, $text, $changelog = '', $minorchange = false) + { + return $this->_getData('edit', array($pagename, $text, $changelog, $minorchange)); + } + + /** + * Process remote call + * + * @param string $method Method name to call + * @param array $params Array of parameters + * + * @return mixed Array of pages data on success; PEAR_Error on failure + */ + function _getData($method, $params = array()) + { + return Horde_RPC::request( + 'xmlrpc', + $this->_params['url'], + $this->_params['prefix'] . '.' . $method, + $params, + array('user' => $this->_params['user'], + 'pass' => $this->_params['password'])); + } + +} diff --git a/wicked/lib/Text_Wiki/Parse/BBCode/Image2.php b/wicked/lib/Text_Wiki/Parse/BBCode/Image2.php new file mode 100644 index 000000000..9c12af9fa --- /dev/null +++ b/wicked/lib/Text_Wiki/Parse/BBCode/Image2.php @@ -0,0 +1,12 @@ +regex = '/((?:\[\[' . WICKED_REGEXP_WIKIWORD . + ':\s+.*?\]\]\s*)+)/'; + } + + /** + * Generates a token entry for the matched text. Token options are: + * + * 'src' => The image source, typically a relative path name. + * 'opts' => Any macro options following the source. + * + * @param array &$matches The array of matches from parse(). + * + * @return A delimited token number to be used as a placeholder in + * the source text. + */ + function process(&$matches) + { + $options = array('attributes' => array()); + + $text = $matches[1]; + while (preg_match('/^\[\[([A-Za-z0-9]+):\s+(.*?)\]\]\s*(.*)$/s', + $text, $sub)) { + + $options['attributes'][] = array('name' => $sub[1], + 'value' => $sub[2]); + $text = $sub[3]; + } + + return $this->wiki->addToken($this->rule, $options); + } + +} diff --git a/wicked/lib/Text_Wiki/Parse/Default/Code2.php b/wicked/lib/Text_Wiki/Parse/Default/Code2.php new file mode 100644 index 000000000..2dcfc55cb --- /dev/null +++ b/wicked/lib/Text_Wiki/Parse/Default/Code2.php @@ -0,0 +1,12 @@ + The application to link to. + * 'args' => The parameters passed to the app/show method. + * + * @access public + * + * @param array &$matches The array of matches from parse(). + * + * @return A delimited token number to be used as a placeholder in + * the source text. + */ + function process(&$matches) + { + @list($title, $call) = explode('|', $matches[1], 2); + $opts = explode(' ', trim($call)); + $method = trim(array_shift($opts)); + parse_str(implode('&', $opts), $args); + + return $this->wiki->addToken($this->rule, array('title' => trim($title), + 'method' => $method, + 'args' => $args)); + } + +} diff --git a/wicked/lib/Text_Wiki/Parse/Default/Wickedblock.php b/wicked/lib/Text_Wiki/Parse/Default/Wickedblock.php new file mode 100644 index 000000000..cc133115d --- /dev/null +++ b/wicked/lib/Text_Wiki/Parse/Default/Wickedblock.php @@ -0,0 +1,38 @@ + The image source, typically a relative path name. + * 'opts' => Any macro options following the source. + * + * @access public + * + * @param array &$matches The array of matches from parse(). + * + * @return A delimited token number to be used as a placeholder in + * the source text. + */ + function process(&$matches) + { + } + +} diff --git a/wicked/lib/Text_Wiki/Parse/Default/Wikilink2.php b/wicked/lib/Text_Wiki/Parse/Default/Wikilink2.php new file mode 100644 index 000000000..5800c4e9b --- /dev/null +++ b/wicked/lib/Text_Wiki/Parse/Default/Wikilink2.php @@ -0,0 +1,12 @@ +'; + + foreach ($options['attributes'] as $attribute) { + + $link = array('page' => $attribute['name'], + 'anchor' => '', + 'text' => $attribute['name']); + + // We should do full wiki formatting, I guess, but there isn't + // a convenient way to do it. + if (preg_match('/^(' . WICKED_REGEXP_WIKIWORD . ')$/', + $attribute['value'], $matches)) { + $vlink = array('page' => $matches[1], + 'anchor' => '', + 'text' => $matches[1]); + $value = $this->wiki->renderObj['Wikilink']->token($vlink); + } elseif (preg_match('/^\(\((.*)\)\)$/', $attribute['value'], + $matches)) { + $vlink = array('page' => $matches[1], + 'anchor' => '', + 'text' => $matches[1]); + $value = $this->wiki->renderObj['Wikilink']->token($vlink); + } else { + $value = htmlspecialchars($attribute['value']); + } + + $output .= '' . + $this->wiki->renderObj['Wikilink']->token($link) . + ' :' . $value . + ''; + } + + $output .= ''; + + return $output; + } + +} diff --git a/wicked/lib/Text_Wiki/Render/Xhtml/Code2.php b/wicked/lib/Text_Wiki/Render/Xhtml/Code2.php new file mode 100644 index 000000000..9e3dff708 --- /dev/null +++ b/wicked/lib/Text_Wiki/Render/Xhtml/Code2.php @@ -0,0 +1,51 @@ +\n<\?php\n\n?|'; + $replace1 = '
';
+            $search2 = '|\?>\n
|'; + + if ($type == 'htmlphp') { + $options['attr']['type'] = 'php'; + $options['text'] = "\n?>" . $options['text'] . "|'; + $replace1 = '
';
+                $search2 = '|<\?php\n\n\?>\n
|'; + } + } else { + $search1 = '|
\n|';
+            $replace1 = "
";
+            $search2 = '|
|'; + } + + $text = parent::token($options); + + $text = preg_replace(array($search1, $search2), + array($replace1, '
'), + $text); + + return $text; + } + +} diff --git a/wicked/lib/Text_Wiki/Render/Xhtml/Freelink2.php b/wicked/lib/Text_Wiki/Render/Xhtml/Freelink2.php new file mode 100644 index 000000000..fbe43e42c --- /dev/null +++ b/wicked/lib/Text_Wiki/Render/Xhtml/Freelink2.php @@ -0,0 +1,5 @@ + '', + 'url_base' => null, + 'css' => null, + 'css_link' => null + ); + + /** + * Renders a token into text matching the requested format. + * + * @param array $options The "options" portion of the token (second + * element). + * + * @return string The text rendered from the token options. + */ + function token($options) + { + if (!isset($options['attr']['alt'])) { + $options['attr']['alt'] = $options['src']; + } + + if (strpos($options['src'], '://') === false) { + if ($options['src'][0] != '/') { + if (strpos($options['src'], ':')) { + list($page, $options['src']) = explode(':', $options['src'], 2); + } else { + $page = Horde_Util::getFormData('page'); + if ($page == 'EditPage') { + $page = Horde_Util::getFormData('referrer'); + } + if (empty($page)) { + $page = 'WikiHome'; + } + } + $params = array('page' => $page, + 'mime' => '1', + 'file' => $options['src']); + $options['src'] = Horde_Util::addParameter(Horde::applicationUrl('view.php', true), + $params, null, false); + } + } else { + $options['src'] = Horde_Util::addParameter(Horde::externalUrl($options['src']), 'untrusted', 1, false); + } + + // Send external links through Horde::externalUrl(). + if (isset($options['attr']['link']) && strpos($options['attr']['link'], '://')) { + $href = htmlspecialchars($options['attr']['link']); + unset($options['attr']['link']); + return Horde::link(Horde::externalUrl($href), $href) . $this->_token($options) . ''; + } else { + return $this->_token($options); + } + } + + /** + * Render code from Text_Wiki's Image with Horde tweaks (remove + * getimagesize call, etc). + * + * @access private + * + * @param array $options The "options" portion of the token (second + * element). + * + * @return string The text rendered from the token options. + */ + function _token($options) + { + // note the image source + $src = $options['src']; + + // is the source a local file or URL? + if (strpos($src, '://') === false) { + // the source refers to a local file. + // add the URL base to it. + $src = $this->getConf('base', '/') . $src; + } + + // stephane@metacites.net + // is the image clickable? + if (isset($options['attr']['link'])) { + // yes, the image is clickable. + // are we linked to a URL or a wiki page? + if (strpos($options['attr']['link'], '://')) { + // it's a URL, prefix the URL base + $href = $this->getConf('url_base') . $options['attr']['link']; + } else { + // it's a WikiPage; assume it exists. + /** @todo This needs to honor sprintf wikilinks (pmjones) */ + /** @todo This needs to honor interwiki (pmjones) */ + /** @todo This needs to honor freelinks (pmjones) */ + $href = $this->wiki->getRenderConf('xhtml', 'wikilink', 'view_url') . + $options['attr']['link']; + } + } else { + // image is not clickable. + $href = null; + } + // unset so it won't show up as an attribute + unset($options['attr']['link']); + + // start the HTML output + $output = 'formatConf(' class="%s"', 'css'); + + // add the attributes to the output, and be sure to + // track whether or not we find an "alt" attribute + $alt = false; + foreach ($options['attr'] as $key => $val) { + + // track the 'alt' attribute + if (strtolower($key) == 'alt') { + $alt = true; + } + + // the 'class' attribute overrides the CSS class conf + if (strtolower($key) == 'class') { + $css = null; + } + + $key = htmlspecialchars($key); + $val = htmlspecialchars($val); + $output .= " $key=\"$val\""; + } + + // always add an "alt" attribute per Stephane Solliec + if (!$alt) { + $alt = htmlspecialchars(basename($options['src'])); + $output .= " alt=\"$alt\""; + } + + // end the image tag with the automatic CSS class (if any) + $output .= "$css />"; + + // was the image clickable? + if ($href) { + // yes, add the href and return + $href = htmlspecialchars($href); + $css = $this->formatConf(' class="%s"', 'css_link'); + $output = "$output"; + } + + return $output; + } + +} diff --git a/wicked/lib/Text_Wiki/Render/Xhtml/Interwiki.php b/wicked/lib/Text_Wiki/Render/Xhtml/Interwiki.php new file mode 100644 index 000000000..c460b8fb6 --- /dev/null +++ b/wicked/lib/Text_Wiki/Render/Xhtml/Interwiki.php @@ -0,0 +1,59 @@ + array( + 'MeatBall' => 'http://www.usemod.com/cgi-bin/mb.pl?%s', + 'Advogato' => 'http://advogato.org/%s', + 'Wiki' => 'http://c2.com/cgi/wiki?%s', + 'Bookshelved' => 'http://bookshelved.org/cgi-bin/wiki.pl?%s' + ), + 'target' => '_blank' + ); + + /** + * Renders a token into text matching the requested format. + * + * @param array $options The "options" portion of the token (second + * element). + * + * @return string The text rendered from the token options. + */ + function token($options) + { + $site = $options['site']; + $page = $options['page']; + $text = $options['text']; + + if (isset($this->conf['sites'][$site])) { + $href = $this->conf['sites'][$site]; + } else { + return $text; + } + + // old form where page is at end, + // or new form with %s placeholder for sprintf()? + if (strpos($href, '%s') === false) { + // use the old form + $href = $href . $page; + } else { + // use the new form + $href = sprintf($href, $page); + } + + // allow for alternative targets + $target = $this->getConf('target', ''); + + if ($target && trim($target) != '') { + $target = " target=\"$target\""; + } + + return '' . $text . ''; + } + +} diff --git a/wicked/lib/Text_Wiki/Render/Xhtml/Registrylink.php b/wicked/lib/Text_Wiki/Render/Xhtml/Registrylink.php new file mode 100644 index 000000000..1e851130a --- /dev/null +++ b/wicked/lib/Text_Wiki/Render/Xhtml/Registrylink.php @@ -0,0 +1,31 @@ +link($options['method'], $options['args']); + if (is_a($link, 'PEAR_Error')) { + return ''; + } + + return Horde::link($link) . $options['title'] . ''; + } + +} diff --git a/wicked/lib/Text_Wiki/Render/Xhtml/Toc.php b/wicked/lib/Text_Wiki/Render/Xhtml/Toc.php new file mode 100644 index 000000000..ddeb94a9b --- /dev/null +++ b/wicked/lib/Text_Wiki/Render/Xhtml/Toc.php @@ -0,0 +1,95 @@ + null, + 'css_item' => null, + 'title' => 'Table of Contents', + 'div_id' => 'toc', + ); + + var $_last_level = null; + + /** + * Renders a token into text matching the requested format. + * + * @access public + * + * @param array $options The "options" portion of the token (second + * element). + * + * @return string The text rendered from the token options. + */ + function token($options) + { + // type, id, level, count, attr. + extract($options); + + switch ($type) { + case 'list_start': + Horde::addScriptFile('toc.js', 'wicked', true); + + // Add the div, class, and id. + $html = 'getConf('css_list'); + if ($css) { + $html .= " class=\"$css\""; + } + + $div_id = $this->getConf('div_id'); + if ($div_id) { + $html .= " id=\"$div_id\""; + } + + // Add the title, and done. + return $html . '>' . $this->getConf('title') . '
    '; + + case 'list_end': + $html = ''; + while ($this->_last_level > 1) { + $html .= '
'; + --$this->_last_level; + } + return $html . "\n\n\n"; + + case 'item_start': + $html = ''; + if ($this->_last_level !== null) { + if ($level > $this->_last_level) { + while ($level > $this->_last_level) { + $html .= '
    '; + ++$this->_last_level; + } + $html .= '_last_level) { + while ($level < $this->_last_level) { + $html .= '
'; + --$this->_last_level; + } + $html .= '_last_level = $level; + + $css = $this->getConf('css_item'); + if ($css) { + $html .= " class=\"$css\""; + } + + return $html . ">"; + + case 'item_end': + return ''; + } + } + +} diff --git a/wicked/lib/Text_Wiki/Render/Xhtml/Url.php b/wicked/lib/Text_Wiki/Render/Xhtml/Url.php new file mode 100644 index 000000000..69874ecac --- /dev/null +++ b/wicked/lib/Text_Wiki/Render/Xhtml/Url.php @@ -0,0 +1,50 @@ + '_blank' + ); + + /** + * Renders a token into text matching the requested format. + * + * @param array $options The "options" portion of the token (second + * element). + * + * @return string The text rendered from the token options. + */ + function token($options) + { + // Create local variables from the options array (text, href, + // type). + extract($options); + + // Find the rightmost dot and determine the filename + // extension. + $pos = strrpos($href, '.'); + $ext = strtolower(substr($href, $pos + 1)); + $href = htmlspecialchars($href); + + // Allow for alternative targets on non-anchor HREFs. + if ($href[0] == '#') { + $target = ''; + } else { + $target = $this->getConf('target', ''); + } + + $output = Horde::link(Horde::externalUrl($href), $href, 'external', htmlspecialchars($target)) . htmlspecialchars($text) . ''; + + // Make numbered references look like footnotes. + if ($type == 'footnote') { + $output = '' . $output . ''; + } + + return $output; + } + +} diff --git a/wicked/lib/Text_Wiki/Render/Xhtml/Wickedblock.php b/wicked/lib/Text_Wiki/Render/Xhtml/Wickedblock.php new file mode 100644 index 000000000..5040c8c32 --- /dev/null +++ b/wicked/lib/Text_Wiki/Render/Xhtml/Wickedblock.php @@ -0,0 +1,25 @@ +conf['exists_callback'])) { + $callback =& $this->conf['exists_callback']; + } else { + $callback = false; + } + + if ($callback) { + // use the callback function + $exists = call_user_func($callback, $page); + } else { + // no callback, go to the naive page array. + $list = $this->getConf('pages'); + if (is_array($list)) { + // yes, check against the page list + $exists = in_array($page, $list); + } else { + // no, assume it exists + $exists = true; + } + } + + $anchor = '#'.$this->urlEncode(substr($anchor, 1)); + + // does the page exist? + if ($exists) { + + // PAGE EXISTS. + + $href = sprintf($this->getConf('view_url'), (!empty($GLOBALS['conf']['options']['use_mod_rewrite']) ? htmlspecialchars($page) : $this->urlEncode($page))) . $anchor; + + // get the CSS class and generate output + $css = ' class="'.$this->textEncode($this->getConf('css')).'"'; + + $start = ''; + $end = ''; + } else { + + // PAGE DOES NOT EXIST. + + $new_url = $this->getConf('new_url'); + if (!$new_url) { + return $this->textEncode($text); + } + + $href = sprintf($new_url, (!empty($GLOBALS['conf']['options']['use_mod_rewrite']) ? htmlspecialchars($page) : $this->urlEncode($page))); + + // get the appropriate CSS class and new-link text + $css = ' class="'.$this->textEncode($this->getConf('css_new')).'"'; + $new = $this->getConf('new_text'); + + // what kind of linking are we doing? + $pos = $this->getConf('new_text_pos'); + if (! $pos || ! $new) { + // no position (or no new_text), use css only on the page name + + $start = ''; + $end = ''; + } elseif ($pos == 'before') { + // use the new_text BEFORE the page name + $start = ''.$this->textEncode($new).''; + $end = ''; + } else { + // default, use the new_text link AFTER the page name + $start = ''; + $end = ''.$this->textEncode($new).''; + } + } + if (!strlen($text)) { + $start .= $this->textEncode($page); + } + if (isset($type)) { + switch ($type) { + case 'start': + $output = $start; + break; + case 'end': + $output = $end; + break; + } + } else { + $output = $start.$this->textEncode($text).$end; + } + return $output; + } + +} diff --git a/wicked/lib/Wicked.php b/wicked/lib/Wicked.php new file mode 100644 index 000000000..f1ab73596 --- /dev/null +++ b/wicked/lib/Wicked.php @@ -0,0 +1,219 @@ + + * @package Wicked + */ +class Wicked { + + /** + * Puts together the URL to a Wicked page. Uses mod_rewrite or GET + * style URLs depending on configuration. + * + * @param string $page The name of the page to target. + * @param boolean $full @see Horde::url() + * @param integer $append_session @see Horde::url() + * + * @return string The URL of $page. + */ + function url($page, $full = false, $append_session = 0) + { + global $conf; + + if (!empty($conf['options']['use_mod_rewrite'])) { + $script = str_replace('%2F', '/', urlencode($page)); + } else { + $script = Horde_Util::addParameter('display.php', 'page', $page); + } + + return Horde::applicationUrl($script, $full, $append_session); + } + + /** + * Build Wicked's list of menu items. + */ + function getMenu($returnType = 'object') + { + global $conf, $page; + + $menu = new Horde_Menu(Horde_Menu::MASK_ALL); + + if (@count($conf['menu']['pages'])) { + foreach ($conf['menu']['pages'] as $pagename) { + /* Remove access keys. */ + $rawname = Horde::stripAccessKey($pagename); + + /* Determine who we should say referred us. */ + $curpage = isset($page) ? $page->pageName() : null; + $referrer = Horde_Util::getFormData('referrer', $curpage); + + /* Determine if we should depress the button. We have to do + * this on our own because all the buttons go to the same .php + * file, just with different args. */ + if (!strstr($_SERVER['PHP_SELF'], 'prefs.php') && + $curpage === _($rawname)) { + $cellclass = 'current'; + } else { + $cellclass = '__noselection'; + } + + $url = Horde_Util::addParameter(Wicked::url($rawname), 'referrer', $referrer); + $menu->add($url, _($pagename), $rawname . '.png', null, null, null, $cellclass); + } + } + + if ($returnType == 'object') { + return $menu; + } else { + return $menu->render(); + } + + /* Placeholders to have translateable page names with access keys. */ + array(_("_WikiHome"), _("HowTo_UseWiki"), _("_RecentChanges"), _("_AllPages")); + } + + /** + * Mails a notification message after encoding the headers and adding the + * standard username/time line. + * + * @param string $message The message text to send out. + * @param array $headers Additional headers to add to the email. + */ + function mail($message, $headers = array()) + { + global $conf, $registry; + + /* Make sure there's a place configured to send the email. */ + if (empty($conf['wicked']['notify_address'])) { + return; + } + + if (Horde_Auth::getAuth()) { + $prefix = Horde_Auth::getAuth(); + } else { + $prefix = 'guest [' . $_SERVER['REMOTE_ADDR'] . ']'; + } + + $lc_time = setlocale(LC_TIME, 'C'); + $message = $prefix . ' ' . date('r') . "\n\n" . $message; + setlocale(LC_TIME, $lc_time); + + /* In case we don't get a user's email address to send the + * notification from, what should we fall back to for the From: + * header? */ + $default_from_addr = !empty($conf['wicked']['guest_address']) ? + $conf['wicked']['guest_address'] : + $conf['wicked']['notify_address']; + if (Horde_Auth::getAuth()) { + $identity = Horde_Prefs_Identity::singleton(); + $from = $identity->getValue('fullname'); + if (empty($from)) { + $from = $registry->get('name'); + } + $from_addr = $identity->getValue('from_addr'); + if (empty($from_addr)) { + $from_addr = $default_from_addr; + } + } else { + $from = $registry->get('name') . ' Guest'; + $from_addr = $default_from_addr; + } + + $mail = new Horde_Mime_Mail(array('body' => $message, + 'to' => + $conf['wicked']['notify_address'], + 'from' => $from . '<' . $from_addr + . '>', + 'charset' => Horde_Nls::getCharset())); + $mail->addHeader('User-Agent', 'Wicked ' . $GLOBALS['registry']->getVersion()); + $mail->addHeader('Precedence', 'bulk'); + $mail->addHeader('Auto-Submitted', 'auto-replied'); + foreach (array_keys($headers) as $hkey) { + $mail->addHeader($hkey, $headers[$hkey]); + } + try { + $mail->send(Horde::getMailerConfig()); + } catch (Exception $e) { + $GLOBALS['notification']->push($e->getMessage()); + } + } + + /** + * Generate a 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['wickedSession']['CAPTCHA'])) { + $_SESSION['wickedSession']['CAPTCHA'] = ''; + for ($i = 0; $i < 5; $i++) { + $_SESSION['wickedSession']['CAPTCHA'] .= chr(rand(65, 90)); + } + } + return $_SESSION['wickedSession']['CAPTCHA']; + } + +} diff --git a/wicked/lib/api.php b/wicked/lib/api.php new file mode 100644 index 000000000..0b265afc1 --- /dev/null +++ b/wicked/lib/api.php @@ -0,0 +1,467 @@ + array(), + 'type' => 'array', +); + +$_services['show'] = array( + 'link' => '%application%/display.php?page=|page|&version=|version|#|toc|', +); + +$_services['list'] = array( + 'args' => array('special' => 'boolean', + 'no_cache' => 'boolean'), + 'type' => 'array', +); + +$_services['getPageInfo'] = array( + 'args' => array('pagename' => 'string'), + 'type' => 'string', +); + +$_services['getMultiplePageInfo'] = array( + 'args' => array('pagenames' => '{urn:horde}stringArray'), + 'type' => 'string', +); + +$_services['getPageHistory'] = array( + 'args' => array('pagename' => 'string'), + 'type' => 'string', +); + +$_services['pageExists'] = array( + 'args' => array('pagename' => 'string'), + 'type' => 'string', +); + +$_services['display'] = array( + 'args' => array('pagename' => 'string'), + 'type' => 'string', +); + +$_services['renderPage'] = array( + 'args' => array('pagename' => 'string', + 'format' => 'string'), + 'type' => 'string', +); + +$_services['edit'] = array( + 'args' => array('pagename' => 'string', + 'text' => 'string', + 'changelog' => 'string', + 'minorchange' => 'boolean'), + 'type' => 'boolean', +); + +$_services['listTemplates'] = array( + 'args' => array(), + 'type' => 'array', +); + +$_services['getTemplate'] = array( + 'args' => array('name' => 'string'), + 'type' => 'string', +); + +$_services['saveTemplate'] = array( + 'args' => array('name' => 'string', + 'data' => 'string'), + 'type' => 'boolean', +); + +$_services['getPageSource'] = array( + 'args' => array('name' => 'string'), + 'type' => 'text', +); + +$_services['getRecentChanges'] = array( + 'args' => array('days' => 'int'), + 'type' => 'array', +); + +/** + * Returns a list of available permissions. + * + * @return array An array describing all available permissions. + */ +function _wicked_perms() +{ + static $perms = array(); + if (!empty($perms)) { + return $perms; + } + + require_once dirname(__FILE__) . '/base.php'; + global $wicked; + + $perms['tree']['wicked']['pages'] = array(); + $perms['title']['wicked:pages'] = _("Pages"); + + $perms['tree']['wicked']['pages'] = array(); + $perms['title']['wicked:pages'] = _("Pages"); + + $perms['tree']['wicked']['pages']['AllPages'] = false; + $perms['title']['wicked:pages:AllPages'] = 'AllPages'; + + $perms['tree']['wicked']['pages']['LeastPopular'] = false; + $perms['title']['wicked:pages:LeastPopular'] = 'LeastPopular'; + + $perms['tree']['wicked']['pages']['MostPopular'] = false; + $perms['title']['wicked:pages:MostPopular'] = 'MostPopular'; + + $perms['tree']['wicked']['pages']['RecentChanges'] = false; + $perms['title']['wicked:pages:RecentChanges'] = 'RecentChanges'; + + $pages = $wicked->getPages(); + if (is_a($pages, 'PEAR_Error')) { + return $pages; + } + + foreach ($pages as $pagename) { + $pageId = $wicked->getPageId($pagename); + $perms['tree']['wicked']['pages'][$pageId] = false; + $perms['title']['wicked:pages:' . $pageId] = $pagename; + } + + ksort($perms['tree']['wicked']['pages']); + return $perms; +} + +/** + * Returns a list of available pages. + * + * @param boolean $special Include special pages + * @param boolean $no_cache Always retreive pages from backed + * + * @return array An array of all available pages. + */ +function _wicked_list($special = true, $no_cache = false) +{ + require_once dirname(__FILE__) . '/base.php'; + return $GLOBALS['wicked']->getPages($special, $no_cache); +} + +/** + * Return basic page information. + * + * @param string $pagename Page name + * + * @return array An array of page parameters. + */ +function _wicked_getPageInfo($pagename) +{ + require_once dirname(__FILE__) . '/base.php'; + + $page = Page::getPage($pagename); + if (is_a($page, 'PEAR_Error')) { + return $page; + } + + return array( + 'page_majorversion' => $page->_page['page_majorversion'], + 'page_minorversion' => $page->_page['page_minorversion'], + 'page_checksum' => md5($page->getText()), + 'version_created' => $page->_page['version_created'], + 'change_author' => $page->_page['change_author'], + 'change_log' => $page->_page['change_log'], + ); +} + +/** + * Return basic information for multiple pages. + * + * @param array $pagenames Page names + * + * @return array An array of arrays of page parameters. + */ +function _wicked_getMultiplePageInfo($pagenames = array()) +{ + require_once dirname(__FILE__) . '/base.php'; + + if (empty($pagenames)) { + $pagenames = $GLOBALS['wicked']->getPages(false); + if (is_a($pagenames, 'PEAR_Error')) { + return $pagenames; + } + } + + $info = array(); + + foreach ($pagenames as $pagename) { + $page = Page::getPage($pagename); + if (is_a($page, 'PEAR_Error')) { + return $page; + } + $info[$pagename] = array( + 'page_majorversion' => $page->_page['page_majorversion'], + 'page_minorversion' => $page->_page['page_minorversion'], + 'page_checksum' => md5($page->getText()), + 'version_created' => $page->_page['version_created'], + 'change_author' => $page->_page['change_author'], + 'change_log' => $page->_page['change_log'] + ); + } + + return $info; +} + +/** + * Return page history. + * + * @param string $pagename Page name + * + * @return array An array of page parameters. + */ +function _wicked_getPageHistory($pagename) +{ + require_once dirname(__FILE__) . '/base.php'; + + $page = Page::getPage($pagename); + if (is_a($page, 'PEAR_Error')) { + return $page; + } + + $summaries = $GLOBALS['wicked']->getHistory($pagename); + if (is_a($summaries, 'PEAR_Error')) { + return $summaries; + } + + foreach ($summaries as $i => $summary) { + $summaries[$i]['page_checksum'] = md5($summary['page_text']); + unset($summaries[$i]['page_text']); + } + + return $summaries; +} + +/** + * Chech if a page exists + * + * @param string $pagename Page name + * + * @return boolean + */ +function _wicked_pageExists($pagename) +{ + require_once dirname(__FILE__) . '/base.php'; + return $GLOBALS['wicked']->pageExists($pagename); +} + +/** + * Returns a rendered wiki page. + * + * @param string $pagename Page to display + * + * @return array Page without CSS link + */ +function _wicked_display($pagename) +{ + require_once dirname(__FILE__) . '/base.php'; + + $page = Page::getPage($pagename); + if (is_a($page, 'PEAR_Error')) { + return $page; + } + + $GLOBALS['wicked']->logPageView($page->pageName()); + + return $page->displayContents(false); +} + +/** + * Returns a rendered wiki page. + * + * @param string $pagename Page to display + * @param string $format Format to render page to (Plain, XHtml) + * + * @return array Rendered page + */ +function _wicked_renderPage($pagename, $format = 'Plain') +{ + require_once dirname(__FILE__) . '/base.php'; + + $page = Page::getPage($pagename); + if (is_a($page, 'PEAR_Error')) { + return $page; + } + + $wiki = &$page->getProcessor(); + $content = $wiki->transform($page->getText(), $format); + if (is_a($content, 'PEAR_Error')) { + return $content; + } + + $GLOBALS['wicked']->logPageView($page->pageName()); + return $content; +} + +/** + * Updates content of a wiki page. If the page does not exist it is + * created. + * + * @param string $pagename Page to edit + * @param string $text Page content + * @param string $changelog Description of the change + * @param boolean $minorchange True if this is a minor change + * + * @return boolean | PEAR_Error True on success, PEAR_Error on failure. + */ +function _wicked_edit($pagename, $text, $changelog = '', $minorchange = false) +{ + require_once dirname(__FILE__) . '/base.php'; + + $page = Page::getPage($pagename); + if (is_a($page, 'PEAR_Error')) { + return $page; + } + if (!$page->allows(WICKED_MODE_EDIT)) { + return PEAR::RaiseError(sprintf(_("You don't have permission to edit \"%s\"."), $pagename)); + } + if ($GLOBALS['conf']['wicked']['require_change_log'] && + empty($changelog)) { + return PEAR::raiseError(_("You must provide a change log.")); + } + + $content = $page->getText(); + if (is_a($content, 'PEAR_Error')) { + // Maybe the page does not exists, if not create it + if ($GLOBALS['wicked']->pageExists($pagename)) { + return $content; + } else { + return $GLOBALS['wicked']->newPage($pagename, $text); + } + } + + if (trim($text) == trim($content)) { + return PEAR::raiseError(_("No changes made")); + } + + $result = $page->updateText($text, $changelog, $minorchange); + if (is_a($result, 'PEAR_Error')) { + return $result; + } else { + return true; + } +} + +/** + * Get a list of templates provided by Wicked. A template is any page whose + * name begins with "Template" + * + * @return mixed Array on success; PEAR_Error on failure + */ +function _wicked_listTemplates() +{ + require_once dirname(__FILE__) . '/base.php'; + global $wicked; + $templates = $wicked->getMatchingPages('Template', WICKED_PAGE_MATCH_ENDS); + $list = array(array('category' => _("Wiki Templates"), + 'templates' => array())); + foreach ($templates as $page) { + $list[0]['templates'][] = array('id' => $page['page_name'], + 'name' => $page['page_name']); + } + return $list; +} + +/** + * Get a template specified by its name. This is effectively an alias for + * getPageSource() since Wicked templates are also normal pages. + * Wicked templates are pages that include "Template" at the beginning of the + * name. + * + * @param string $name The name of the template to fetch + * + * @return mixed String of template data on success; PEAR_Error on fail + */ +function _wicked_getTemplate($name) +{ + return _wicked_getPageSource($name); +} + +/** + * Get the wiki source of a page specified by its name. + * + * @param string $name The name of the page to fetch + * @param string $version Page version + * + * @return mixed String of page data on success; PEAR_Error on fail + */ +function _wicked_getPageSource($pagename, $version = null) +{ + require_once dirname(__FILE__) . '/base.php'; + global $wicked; + + $page = Page::getPage($pagename, $version); + + if (!$page->allows(WICKED_MODE_CONTENT)) { + return PEAR::raiseError(_("Permission denied.")); + } + + if (!$page->isValid()) { + return PEAR::raiseError(_("Invalid page requested.")); + } + + return $page->getText(); +} + +/** + * Process a completed template to update the named Wiki page. This method is + * basically a passthrough to _wicked_edit() + * + * @param string $name Name of the new or modified page + * @param string $data Text content of the populated template + * + * @return mixed True on success; PEAR_Error on failure + */ +function _wicked_saveTemplate($name, $data) +{ + return _wicked_edit($name, $data, 'Template Auto-fill', false); +} + +/** + * Returns the most recently changed pages. + * + * @param integer $days The number of days to look back. + * + * @return mixed An array of pages, or PEAR_Error on failure. + */ +function _wicked_getRecentChanges($days = 3) +{ + require_once dirname(__FILE__) . '/base.php'; + + $summaries = $GLOBALS['wicked']->getRecentChanges($days); + if (is_a($summaries, 'PEAR_Error')) { + return $summaries; + } + + $info = array(); + foreach ($summaries as $page) { + $info[$page['page_name']] = array( + 'page_majorversion' => $page['page_majorversion'], + 'page_minorversion' => $page['page_minorversion'], + 'page_checksum' => md5($page['page_text']), + 'version_created' => $page['version_created'], + 'change_author' => $page['change_author'], + 'change_log' => $page['change_log'], + ); + } + + return $info; +} diff --git a/wicked/lib/base.php b/wicked/lib/base.php new file mode 100644 index 000000000..e52da5962 --- /dev/null +++ b/wicked/lib/base.php @@ -0,0 +1,56 @@ +pushApp('wicked', !defined('AUTH_HANDLER')); +} catch (Horde_Exception $e) { + if ($e->getCode() == 'permission_denied') { + Horde::authenticationFailureRedirect(); + } + Horde::fatal($e, __FILE__, __LINE__, false); +} +$conf = &$GLOBALS['conf']; +define('WICKED_TEMPLATES', $registry->get('templates')); + +// Find the base file path of Wicked. +if (!defined('WICKED_BASE')) { + define('WICKED_BASE', dirname(__FILE__) . '/..'); +} + +// Notification system. +$notification = &Horde_Notification::singleton(); +$notification->attach('status'); + +// Wicked base libraries. +require_once WICKED_BASE . '/lib/Wicked.php'; +require_once WICKED_BASE . '/lib/Driver.php'; +require_once WICKED_BASE . '/lib/Page.php'; +$GLOBALS['wicked'] = Wicked_Driver::factory(); + +// Start compression. +if (!Horde_Util::nonInputVar('no_compress')) { + Horde::compressOutput(); +} diff --git a/wicked/lib/tests/Driver.php b/wicked/lib/tests/Driver.php new file mode 100644 index 000000000..850a91f66 --- /dev/null +++ b/wicked/lib/tests/Driver.php @@ -0,0 +1,203 @@ +wicked = Wicked_Driver::factory('sql', $this->getTestDatabaseSQLDriverConfig()); + $this->assertNotA($this->wicked, 'PEAR_Error'); + } + + function test_Driver_newPage_should_successfully_create_a_page() + { + $this->wicked->removeAllVersions(TEST_PAGE_1); + + $this->assertFalse($this->wicked->pageExists(TEST_PAGE_1)); + + $res = $this->wicked->newPage(TEST_PAGE_1, 'This is a test.'); + $this->assertNotA($res, 'PEAR_Error'); + $this->assertTrue($this->wicked->pageExists(TEST_PAGE_1)); + + $page = $this->wicked->retrieveByName(TEST_PAGE_1); + $this->assertNotA($page, 'PEAR_Error'); + $this->assertEqual('This is a test.', $page['page_text']); + } + + function test_updateText_should_also_update_history() + { + $res = $this->wicked->updateText(TEST_PAGE_1, 'Here\'s the new page text.', + 'Test change.', true); + $this->assertNotA($res, 'PEAR_Error'); + + $page = $this->wicked->retrieveByName(TEST_PAGE_1); + $this->assertNotA($page, 'PEAR_Error'); + $this->assertEqual('Here\'s the new page text.', $page['page_text']); + + $last_version = sprintf('%d.%d', $page['page_majorversion'], + $page['page_minorversion']); + + $res = $this->wicked->updateText(TEST_PAGE_1, 'Here\'s the second change.', + 'Test change 2.', false); + $this->assertNotA($res, 'PEAR_Error'); + + $page = $this->wicked->retrieveByName(TEST_PAGE_1); + $this->assertNotA($page, 'PEAR_Error'); + $this->assertEqual('Here\'s the second change.', $page['page_text']); + + $res = $this->wicked->retrieveHistory(TEST_PAGE_1, $last_version); + $this->assertNotA($res, 'PEAR_Error'); + + $this->assertNotEqual(0, count($res), + "no results from retrieveHistory()"); + $page = $res[0]; + $this->assertEqual('Here\'s the new page text.', $page['page_text']); + } + + function testGetHistoryAndRemoveVersion() + { + $history = $this->wicked->getHistory(TEST_PAGE_1); + $this->assertNotA($history, 'PEAR_Error'); + $this->assertFalse(count($history) < 2, "need more history to test"); + + $nvers = count($history); + $item_1 = $history[0]; + $item_1_ver = sprintf('%d.%d', $item_1['page_majorversion'], + $item_1['page_minorversion']); + + $res = $this->wicked->removeVersion(TEST_PAGE_1, $item_1_ver); + $this->assertNotA($res, 'PEAR_Error'); + + $history = $this->wicked->getHistory(TEST_PAGE_1); + $this->assertNotA($history, 'PEAR_Error'); + $this->assertEqual(count($history), ($nvers - 1)); + + foreach ($history as $page) { + $testver = sprintf('%d.%d', $page['page_majorversion'], + $page['page_minorversion']); + $this->assertNotEqual($testver, $item_1_ver, + "removeVersion() version still there."); + } + } + + function testLock() + { + $page = $this->wicked->retrieveByName(TEST_PAGE_1); + $this->assertNotA($page, 'PEAR_Error'); + $this->assertFalse($page['locked']); + + $res = $this->wicked->lock(TEST_PAGE_1, true); + $this->assertNotA($res, 'PEAR_Error'); + + $page = $this->wicked->retrieveByName(TEST_PAGE_1); + $this->assertNotA($page, 'PEAR_Error'); + $this->assertTrue($page['locked']); + + $res = $this->wicked->lock(TEST_PAGE_1, false); + $this->assertNotA($res, 'PEAR_Error'); + + $page = $this->wicked->retrieveByName(TEST_PAGE_1); + $this->assertNotA($page, 'PEAR_Error'); + $this->assertFalse($page['locked']); + } + + function test_logPageView_should_increment_hit_counter() + { + $page = $this->wicked->retrieveByName(TEST_PAGE_1); + $this->assertNotA($page, 'PEAR_Error'); + + $hits = $page['page_hits']; + + $res = $this->wicked->logPageView(TEST_PAGE_1); + $this->assertNotA($res, 'PEAR_Error'); + + $page = $this->wicked->retrieveByName(TEST_PAGE_1); + $this->assertNotA($page, 'PEAR_Error'); + + $this->assertEqual($page['page_hits'], $hits + 1); + } + + function testRenamePage() + { + $res = $this->wicked->renamePage(TEST_PAGE_1, TEST_PAGE_2); + $this->assertNotA($res, 'PEAR_Error'); + + $this->assertFalse($this->wicked->pageExists(TEST_PAGE_1)); + $this->assertTrue($this->wicked->pageExists(TEST_PAGE_2)); + + $res = $this->wicked->renamePage(TEST_PAGE_2, TEST_PAGE_1); + $this->assertTrue($this->wicked->pageExists(TEST_PAGE_1)); + $this->assertFalse($this->wicked->pageExists(TEST_PAGE_2)); + } + + function testGetPagesAndGetAllPages() + { + $pages = $this->wicked->getPages(false); + $this->assertNotA($pages, 'PEAR_Error'); + + $allPages = $this->wicked->getAllPages(); + $this->assertNotA($allPages, 'PEAR_Error'); + $this->assertEqual(count($allPages), count($pages)); + + $allPageNames = array(); + foreach ($allPages as $allPage) { + $allPageNames[] = $allPage['page_name']; + } + + $this->assertFalse(count(array_diff($pages, $allPageNames)) > 0); + $this->assertFalse(count(array_diff($allPageNames, $pages)) > 0); + } + + function test_mostPopular_call_should_not_fail() + { + $res = $this->wicked->mostPopular(); + $this->assertNotA($res, 'PEAR_Error'); + } + + function test_leastPopular_call_should_not_fail() + { + $res = $this->wicked->leastPopular(); + $this->assertNotA($res, 'PEAR_Error'); + } + + function test_recentChanges_call_should_not_fail() + { + $res = $this->wicked->getRecentChanges(); + $this->assertNotA($res, 'PEAR_Error'); + } + + function testSearches() + { + $res = $this->wicked->searchTitles('.phpt'); + $this->assertNotA($res, 'PEAR_Error'); + + $this->assertFalse(count($res) < 1, "didn't find all the pages."); + + $res = $this->wicked->searchText('second change'); + $this->assertNotA($res, 'PEAR_Error'); + $this->assertFalse(count($res) < 1, "didn't find all the pages."); + + $res = $this->wicked->getLikePages('Wiki'); + $this->assertNotA($res, 'PEAR_Error'); + } + + function test_removeAllVersions_should_not_leave_any_versions() + { + $res = $this->wicked->removeAllVersions(TEST_PAGE_1); + $this->assertNotA($res, 'PEAR_Error'); + $this->assertFalse($this->wicked->pageExists("TEXT_PAGE_1")); + } + +} diff --git a/wicked/lib/version.php b/wicked/lib/version.php new file mode 100644 index 000000000..79508903c --- /dev/null +++ b/wicked/lib/version.php @@ -0,0 +1 @@ + diff --git a/wicked/locale/de_DE/LC_MESSAGES/wicked.mo b/wicked/locale/de_DE/LC_MESSAGES/wicked.mo new file mode 100644 index 0000000000000000000000000000000000000000..eb899540ac5d8c79fc26f1c6080ac78d918a408b GIT binary patch literal 171060 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

&Il+W|H^*CjF?f#|e`D}DE__7Q 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 + + + + + Overview + Introduction + + Wiki is a WikiWikiWeb application integrated with Horde. + + + + + Page Templates + + + Templates are pages that begin or end with "Template" + (capitalization counts). They can be used to provide initial content + or structure when creating new pages. + + + + diff --git a/wicked/locale/es_ES/LC_MESSAGES/wicked.mo b/wicked/locale/es_ES/LC_MESSAGES/wicked.mo new file mode 100644 index 0000000000000000000000000000000000000000..1431dc89d6bb58fd03a65e50340c1f96062c4eac GIT binary patch literal 162588 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 O7*}E${0hrq(u(lAtRlLPz0vi&A6@T9WBN%n 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 + + + + + Introducción + Introducción + Wiki es una aplicación WikiWikiWeb integrada en Horde. + + + + Plantillas de página + + Las plantillas son páginas que empiezan o terminan por "Template" (Las mayúsculas se tienen en cuenta). Se pueden utilizar para proporcional contenido o estructura de forma inicial al crear páginas. + + + diff --git a/wicked/locale/fi_FI/LC_MESSAGES/wicked.mo b/wicked/locale/fi_FI/LC_MESSAGES/wicked.mo new file mode 100644 index 0000000000000000000000000000000000000000..1cc8ab0827d018de47f2aeef5592f8dc3ed963dd GIT binary patch literal 155392 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�p1(rZe-9czb&D{MOlbWw(fa83 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 + + + + Yleiskuva + Esittely + + Wiki on Horden WikiWikiWeb ohjelmisto. + + + + Page Templates + + + Templates are pages that begin or end with "Template" + (capitalization counts). They can be used to provide initial content + or structure when creating new pages. + + + diff --git a/wicked/locale/it_IT/LC_MESSAGES/wicked.mo b/wicked/locale/it_IT/LC_MESSAGES/wicked.mo new file mode 100644 index 0000000000000000000000000000000000000000..ab71cf17da8eaddf46a00e9d80b654009fe1120f GIT binary patch literal 159362 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 literal 0 HcmV?d00001 diff --git a/wicked/locale/ja_JP/LC_MESSAGES/wicked.mo b/wicked/locale/ja_JP/LC_MESSAGES/wicked.mo new file mode 100644 index 0000000000000000000000000000000000000000..21d71dc411c7d40d72ae5d77fbe2778b759eee31 GIT binary patch literal 146122 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

    + pageUrl()) . htmlspecialchars($this->pageName()) . '', $version, htmlspecialchars($this->version())) ?> +

    + +
    +
    getDiff($version, 'inline') ?>
    +
    diff --git a/wicked/templates/display/AttachedFiles.html b/wicked/templates/display/AttachedFiles.html new file mode 100644 index 000000000..9bbd8a6a8 --- /dev/null +++ b/wicked/templates/display/AttachedFiles.html @@ -0,0 +1,160 @@ +

    + : +

    + + + + + + + + + + + + + + + + + + + + + + +
    Attachment Name VersionAuthorDateChange LogDownloads
    + +
    + + + + + + +
    + +   + +
    +
    .
    + + +
    + + + + + +
    + +

    + Attach a New File +

    + + + + + + + + + + + + + + + + +
    + + Select file to attach: + + +
    + + Enter a name for this file (if blank, will use the file's current name) + + +
    + + + + + + Change log entry + + +
    + +
    + +
    + + +
    +
    + + + + + +

    + Update an Attachment +

    + + + + + + + + + + + + + + + + + + + + +
    + + Select file to attach: + + +
    + + Select the file to update + + +
    + + Is this a minor update? + + +
    + + + + + + Change log entry + + +
    + +
    + + +
    diff --git a/wicked/templates/display/MergeOrRename.html b/wicked/templates/display/MergeOrRename.html new file mode 100644 index 000000000..4ddc1d45a --- /dev/null +++ b/wicked/templates/display/MergeOrRename.html @@ -0,0 +1,67 @@ +
    + + + + + +

    + : +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +   + New name + + + +
    +   + If a page with the new name already exists, then + + + + Add the text from this page
    + + Stop and don't do anything
    +
    + + Change references to this page from: + +
     
    + + + +
    + + +
    + + diff --git a/wicked/templates/display/RecentChanges.html b/wicked/templates/display/RecentChanges.html new file mode 100644 index 000000000..824ccc64c --- /dev/null +++ b/wicked/templates/display/RecentChanges.html @@ -0,0 +1,17 @@ +
    + + + + + + + + + + + + + + +
    +
    \ No newline at end of file diff --git a/wicked/templates/display/standard.inc b/wicked/templates/display/standard.inc new file mode 100644 index 000000000..dc417ece9 --- /dev/null +++ b/wicked/templates/display/standard.inc @@ -0,0 +1,143 @@ +
    +
    +allows(WICKED_MODE_EDIT) && !$this->isLocked()) { + separator(); + $url = Horde_Util::addParameter(Wicked::url('EditPage'), + 'referrer', $this->pageName()); + echo Horde::widget($url, sprintf(_("Edit %s"), $this->pageName()), + 'widget', '', '', _("_EditPage")); +} + +if ($this->isLocked()) { + if ($this->allows(WICKED_MODE_UNLOCKING)) { + separator(); + echo Horde::widget(Horde_Util::removeParameter( + $this->pageUrl(null, 'unlock'), + 'version'), + sprintf(_("Unlock %s"), $this->pageName()), + 'widget', '', '', _("Un_lock")); + } +} else { + if ($this->allows(WICKED_MODE_LOCKING)) { + separator(); + echo Horde::widget(Horde_Util::removeParameter( + $this->pageUrl(null, 'lock'), + 'version'), + sprintf(_("Lock %s"), $this->pageName()), + 'widget', '', '', _("_Lock")); + } +} + +if ($this->allows(WICKED_MODE_REMOVE)) { + separator(); + $params = array('referrer' => $this->pageName()); + if ($this->isOld()) { + $params['version'] = $this->version(); + } + $url = Horde_Util::addParameter(Wicked::url('DeletePage'), $params); + echo Horde::widget($url, sprintf(_("Delete %s"), $this->pageName()), + 'widget', '', '', _("_Delete")); +} + +if ($this->allows(WICKED_MODE_EDIT)) { + separator(); + $url = Horde_Util::addParameter(Wicked::url('MergeOrRename'), + 'referrer', $this->pageName()); + echo Horde::widget($url, _("MergeOrRename"), 'widget', '', '', + _("_MergeOrRename")); +} + +separator(); +$url = Horde_Util::addParameter(Wicked::url('BackLinks'), + 'referrer', $this->pageName()); +echo Horde::widget($url, _("BackLinks"), 'widget', '', '', _("_BackLinks")); + +separator(); +$url = Horde_Util::addParameter(Wicked::url('LikePages'), + 'referrer', $this->pageName()); +echo Horde::widget($url, _("LikePages"), 'widget', '', '', _("L_ikePages")); + +separator(); +$url = Horde_Util::addParameter(Wicked::url('AttachedFiles'), + 'referrer', $this->pageName()); +echo Horde::widget($url, _("AttachedFiles"), 'widget', '', '', + _("Attached_Files")); + +if ($this->allows(WICKED_MODE_HISTORY)) { + separator(); + echo Horde::widget(Horde_Util::removeParameter($this->pageUrl('history.php'), + 'version'), + sprintf(_("History of %s"), $this->pageName()), + 'widget', '', '', _("Hi_story")); +} + +if (Horde_Auth::isAdmin()) { + separator(); + $permsurl = Horde::url($GLOBALS['registry']->get('webroot', 'horde') . '/admin/perms/edit.php'); + $permsurl = Horde_Util::addParameter( + $permsurl, + array('category' => 'wicked:pages:' . $this->pageId(), + 'autocreate' => 1, + 'autocreate_copy' => 'wicked', + 'autocreate_guest' => Horde_Perms::SHOW | Horde_Perms::READ, + 'autocreate_default' => Horde_Perms::SHOW | Horde_Perms::READ | Horde_Perms::EDIT | Horde_Perms::DELETE)); + echo Horde::widget($permsurl, + sprintf(_("Set permissions for %s"), $this->pageName()), + 'widget', '_blank', '', _("Permissio_ns")); +} +?> + + + + +
    +
    + +
    + +
    +

    + $this->pageName(), + 'file' => $attachment['attachment_name'], + 'version' => $attachment['attachment_majorversion'] . '.' . $attachment['attachment_minorversion'])); + $icon = Horde_Mime_Viewer::getIcon(Horde_Mime_Magic::filenameToMime($attachment['attachment_name'])); + echo Horde::link($url) . + ' ' . + htmlspecialchars($attachment['attachment_name']) . '
    '; +} +?> +
    + + +
    + + diff --git a/wicked/templates/display/title.inc b/wicked/templates/display/title.inc new file mode 100644 index 000000000..78729ebbd --- /dev/null +++ b/wicked/templates/display/title.inc @@ -0,0 +1,35 @@ +
    +versionCreated(); +if (!is_a($v, 'PEAR_Error')) { + $right .= sprintf(_("Last Modified %s by %s"), $this->formatVersionCreated(), $this->author()); +} + +$v = $this->version(); +if (!is_a($v, 'PEAR_Error') && $this->allows(WICKED_MODE_DIFF)) { + $diff_url = Horde_Util::addParameter(Horde::applicationUrl('diff.php'), + array('page' => $this->pageName(), + 'v1' => '?', + 'v2' => $v)); + + $diff_alt = sprintf(_("Show changes for %s"), $v); + $right .= ' ' . + Horde::link($diff_url, $diff_alt) . + Horde::img('diff.png', $diff_alt) . ''; +} +if ($right) { + echo '
    ' . $right . '
    '; +} + +if ($this->referrer()) { + $referrerLink = ': ' . '' . htmlspecialchars($this->referrer()) . ''; +} else { + $referrerLink = ''; +} + +echo htmlspecialchars($this->pageName()) . $referrerLink . ($this->isOld() ? ' (' . htmlspecialchars($v) . ')' : '') . ' ' . + Horde::link($this->pageUrl(), _("Reload Page")) . + Horde::img('reload.png', _("Reload Page"), '', $GLOBALS['registry']->getImageDir('horde')) ?> + isLocked()) echo Horde::img('locked.png', _("Locked")) ?> +
    diff --git a/wicked/templates/edit/create.inc b/wicked/templates/edit/create.inc new file mode 100644 index 000000000..93c33e9ef --- /dev/null +++ b/wicked/templates/edit/create.inc @@ -0,0 +1,52 @@ +
    + + + + +

    + pageName()) ?> +

    + +
    + +

    + referrer()) ?> +

    + + + + + + + + +
    +
    +

    + +

    + +

    + referrer()) ?> +

    + + +

    + + + + " /> + + +

    +
    + +
    diff --git a/wicked/templates/edit/new.inc b/wicked/templates/edit/new.inc new file mode 100644 index 000000000..0f1dced59 --- /dev/null +++ b/wicked/templates/edit/new.inc @@ -0,0 +1,32 @@ + + +
    + + + + + +

    + referrer())) ?> +

    + +
    + " class="button" /> + " class="button" onclick="preview()" /> +
    + +
    + +
    + +
    diff --git a/wicked/templates/edit/preview.inc b/wicked/templates/edit/preview.inc new file mode 100644 index 000000000..d34b803f1 --- /dev/null +++ b/wicked/templates/edit/preview.inc @@ -0,0 +1,3 @@ +
    + +
    diff --git a/wicked/templates/edit/standard.inc b/wicked/templates/edit/standard.inc new file mode 100644 index 000000000..77ac6dc50 --- /dev/null +++ b/wicked/templates/edit/standard.inc @@ -0,0 +1,51 @@ + + +
    + + + + + +

    + formatVersionCreated(), $page->author()) ?> + pageUrl()) . htmlspecialchars($page->pageName()) . ''; if ($page->isLocked()) echo Horde::img('locked.png', _("Locked")) ?> +

    + +
    + " class="button" /> + " class="button" onclick="preview()" /> + + getImageDir('horde')) ?> + + +
    + +loadFont($GLOBALS['conf']['wicked']['figlet_font']); + if (!is_a($result, 'PEAR_Error')): +?> +
    + +
    lineEcho(Wicked::getCAPTCHA(true)) ?>
    + +
    + + +
    + +
    + +
    diff --git a/wicked/templates/history/footer.inc b/wicked/templates/history/footer.inc new file mode 100644 index 000000000..fec077478 --- /dev/null +++ b/wicked/templates/history/footer.inc @@ -0,0 +1,2 @@ + + diff --git a/wicked/templates/history/header.inc b/wicked/templates/history/header.inc new file mode 100644 index 000000000..7430ba824 --- /dev/null +++ b/wicked/templates/history/header.inc @@ -0,0 +1,30 @@ +
    + + + + +

    + pageUrl()) . htmlspecialchars($this->pageName()) . ''); + echo Horde::link($this->pageUrl('history.php')) . Horde::img('reload.png', _("Reload History"), '', $GLOBALS['registry']->getImageDir('horde')) ?> +

    + + + + + +allows(WICKED_MODE_REMOVE)): ?> + +allows(WICKED_MODE_EDIT)): ?> + + + + + + + + + + + + + diff --git a/wicked/templates/history/summary.inc b/wicked/templates/history/summary.inc new file mode 100644 index 000000000..b9d330219 --- /dev/null +++ b/wicked/templates/history/summary.inc @@ -0,0 +1,44 @@ + + +allows(WICKED_MODE_REMOVE)): ?> + +allows(WICKED_MODE_EDIT)): ?> + + + + + + + + +isOld() ? $page->version() : ''; ?> + + + + + + diff --git a/wicked/templates/menu.inc b/wicked/templates/menu.inc new file mode 100644 index 000000000..263b8362e --- /dev/null +++ b/wicked/templates/menu.inc @@ -0,0 +1,23 @@ + + + + + + + +notify(array('listeners' => 'status')); diff --git a/wicked/templates/pagelist/footer.inc b/wicked/templates/pagelist/footer.inc new file mode 100644 index 000000000..c427bf84c --- /dev/null +++ b/wicked/templates/pagelist/footer.inc @@ -0,0 +1,3 @@ + +
    getImageDir('horde')) ?>getImageDir('horde')) ?>
    pageUrl(), sprintf(_("Display Version %s"), $page->version())) . htmlspecialchars($page->version()) ?> +version()); +$url = Horde_Util::addParameter(Wicked::url('DeletePage'), array('referrer' => $page->pageName(), + 'version' => $page->version())); +echo Horde::link($url, $text) . Horde::img('delete.png', $text, '', $GLOBALS['registry']->getImageDir('horde')) . ''; +?> + +version()); + $url = Horde_Util::addParameter(Wicked::url('EditPage'), array('referrer' => $page->pageName())); + echo Horde::link($url, $text) . Horde::img('edit.png', $text, '', $GLOBALS['registry']->getImageDir('horde')) . ''; +} +?> + +version()); + $url = Horde_Util::addParameter(Wicked::url('RevertPage'), array('referrer' => $page->pageName(), + 'version' => $page->version())); + echo Horde::link($url, $text) . Horde::img('restore.png', $text) . ''; +} +?> +author()) ?>formatVersionCreated()) ?>changeLog(), ENT_COMPAT, Horde_Nls::getcharset()) ?>
    + diff --git a/wicked/templates/pagelist/header.inc b/wicked/templates/pagelist/header.inc new file mode 100644 index 000000000..459336356 --- /dev/null +++ b/wicked/templates/pagelist/header.inc @@ -0,0 +1,14 @@ +
    + + + + + + + + + + + + + diff --git a/wicked/templates/pagelist/pagelist.html b/wicked/templates/pagelist/pagelist.html new file mode 100644 index 000000000..ce6376960 --- /dev/null +++ b/wicked/templates/pagelist/pagelist.html @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/wicked/templates/pagelist/results_footer.inc b/wicked/templates/pagelist/results_footer.inc new file mode 100644 index 000000000..02ee59fa5 --- /dev/null +++ b/wicked/templates/pagelist/results_footer.inc @@ -0,0 +1,2 @@ + +
    + () + + +
    diff --git a/wicked/templates/pagelist/results_header.html b/wicked/templates/pagelist/results_header.html new file mode 100644 index 000000000..97de292a1 --- /dev/null +++ b/wicked/templates/pagelist/results_header.html @@ -0,0 +1,12 @@ +

    + + + + + + + + + + + diff --git a/wicked/templates/pagelist/search.inc b/wicked/templates/pagelist/search.inc new file mode 100644 index 000000000..e8215902c --- /dev/null +++ b/wicked/templates/pagelist/search.inc @@ -0,0 +1,2 @@ +

    +
    diff --git a/wicked/templates/pagelist/summary.inc b/wicked/templates/pagelist/summary.inc new file mode 100644 index 000000000..c455346c6 --- /dev/null +++ b/wicked/templates/pagelist/summary.inc @@ -0,0 +1,13 @@ +
    + + + + + + + + diff --git a/wicked/templates/sync/diff.inc b/wicked/templates/sync/diff.inc new file mode 100644 index 000000000..c299378b9 --- /dev/null +++ b/wicked/templates/sync/diff.inc @@ -0,0 +1,105 @@ +getValue('date_format'), $timestamp) + . ' ' . date($GLOBALS['prefs']->getValue('twentyFour') ? 'G:i' : 'g:ia', $timestamp); +} + +$local = $this->getLocalPageInfo($this->_pageName); +$remote = $this->getRemotePageInfo($this->_pageName); + +?> +
    + pageUrl(), sprintf(_("Display %s"), $page->pageName())) . $page->pageName() . ''; ?> + + pageUrl(), sprintf(_("Display Version %s"), $page->version())) . $page->version() . ''; ?> + author() ?>formatVersionCreated() ?>hits() ?>
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +_getSameVersion(); +if ($match) { +?> +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +notify(array('listeners' => 'status')); + +?> + +

    + +Inverse | + | + | + | + + +pageTitle(), $name1, $name2) ?> +

    +
    +
    render($diff) ?>
    +
    diff --git a/wicked/templates/sync/footer.inc b/wicked/templates/sync/footer.inc new file mode 100644 index 000000000..04f5b8449 --- /dev/null +++ b/wicked/templates/sync/footer.inc @@ -0,0 +1 @@ +
    diff --git a/wicked/templates/sync/form.inc b/wicked/templates/sync/form.inc new file mode 100644 index 000000000..4fe3fb31a --- /dev/null +++ b/wicked/templates/sync/form.inc @@ -0,0 +1,19 @@ +
    +getValue('date_format'), $timestamp) + . ' ' . date($GLOBALS['prefs']->getValue('twentyFour') ? 'G:i' : 'g:ia', $timestamp); +} + +echo $form; + +// notify what form returned +$notification->notify(array('listeners' => 'status')); diff --git a/wicked/templates/sync/header.inc b/wicked/templates/sync/header.inc new file mode 100644 index 000000000..c64e4b053 --- /dev/null +++ b/wicked/templates/sync/header.inc @@ -0,0 +1,6 @@ +notify(array('listeners' => 'status')); +echo $form; +?> +
    diff --git a/wicked/templates/sync/list.inc b/wicked/templates/sync/list.inc new file mode 100644 index 000000000..f23fa5f63 --- /dev/null +++ b/wicked/templates/sync/list.inc @@ -0,0 +1,84 @@ +getValue('date_format'), $timestamp) + . ' ' . date($GLOBALS['prefs']->getValue('twentyFour') ? 'G:i' : 'g:ia', $timestamp); +} + +/* Find new pages to download */ +echo '

    ' . _("New pages on remote server") . ': ' . $_SESSION['wicked']['sync']['url'] . ' (' . $_SESSION['wicked']['sync']['user'] . ')

    '; +if (empty($new_remote)) { + echo _("No pages found"); +} else { + echo '' + . ' ' + . ' ' + . ' ' + . ' ' + . '' + . ''; + $download = Horde_Util::addParameter(Wicked::url('SyncPages'), array('actionID' => 'sync_download', 'sync_page' => '')) ; + foreach ($new_remote as $pageName => $info) { + echo '' + . '' + . '' + . '' + . '' + . '' + . ''; + } + echo '
    ' . _("Page") . '' . _("Version") . '' . _("Created") . '' . _("Author") . '' . _("Actions") . '
    ' . $pageName . '' . $info['page_majorversion'] . '.' . $info['page_minorversion'] . '' . _format_date($info['version_created']) . '' . $info['change_author'] . '' . $this->_viewLink($pageName, false) + . ' | ' . _("Download") . '
    '; +} + +/* Find new pages to upload */ +echo '

    ' . _("New pages on local server") . '

    '; +if (empty($new_local)) { + echo _("No pages found"); +} else { + echo '' + . ' ' + . ' ' + . ' ' + . ' ' + . '' + . ''; + $upload = Horde_Util::addParameter(Wicked::url('SyncPages'), array('actionID' => 'sync_upload', 'sync_page' => '')) ; + foreach ($new_local as $pageName => $info) { + echo '' + . '' + . '' + . '' + . '' + . '' + . ''; + } + + echo '
    ' . _("Page") . '' . _("Version") . '' . _("Created") . '' . _("Author") . '' . _("Actions") . '
    ' . $pageName . '' . $info['page_majorversion'] . '.' . $info['page_minorversion'] . '' . _format_date($info['version_created']) . '' . $info['change_author'] . '' . $this->_viewLink($pageName) + . ' | ' . _("Upload") . '
    '; +} + +echo '

    ' . _("Pages to sync") . '

    '; +if (empty($sync_pages)) { + echo _("No pages to sync"); +} else { + echo '' + . ' '; + $showdiff = Horde_Util::addParameter(Wicked::url('SyncDiff'), array('actionID' => 'sync_diff', 'sync_page' => ''), null, false) ; + foreach ($sync_pages as $pageName) { + echo '' + . '' + . ''; + } + echo '
    ' . _("Page") . '' . _("Actions") . '
    ' . $pageName . '' . $this->_viewLink($pageName) + . ' | ' . $this->_viewLink($pageName, false) + . ' | ' . _("Show changes") . '
    '; +} + diff --git a/wicked/test.php b/wicked/test.php new file mode 100644 index 000000000..06ffc3000 --- /dev/null +++ b/wicked/test.php @@ -0,0 +1,94 @@ + + */ + +/* Include Horde's core.php file. */ +include_once '../lib/core.php'; + +/* We should have loaded the String class, from the Horde_Util package, in + * core.php. If Horde_String:: isn't defined, then we're not finding some critical + * libraries. */ +if (!class_exists('Horde_String')) { + echo '

    The Horde_Util package was not found. If PHP\'s error_reporting setting is high enough and display_errors is on, there should be error messages printed above that may help you in debugging the problem. If you are simply missing these files, then you need to get the framework module from Horde CVS, and install the packages in it with the install-packages.php script.

    '; + exit; +} + +/* Initialize the Horde_Test:: class. */ +if (!is_readable('../lib/Test.php')) { + echo 'ERROR: You must install Horde before running this script.'; + exit; +} +require_once '../lib/Test.php'; +$horde_test = new Horde_Test; + +/* Wicked version. */ +$module = 'Wicked'; +require_once './lib/version.php'; +$module_version = WICKED_VERSION; + +require TEST_TEMPLATES . 'header.inc'; +require TEST_TEMPLATES . 'version.inc'; + +/* Display PHP Version information. */ +$php_info = $horde_test->getPhpVersionInformation(); +require TEST_TEMPLATES . 'php_version.inc'; + +/* PEAR */ +$pear_list = array( + 'Text_Wiki' => array( + 'path' => 'Text/Wiki.php', + 'error' => 'The Text_Wiki module is required to parse and render the wiki markup in Wicked.', + 'required' => true, + 'function' => '_check_pear_text_wiki_version' + ), + 'Text_Wiki_BBCode' => array( + 'path' => 'Text/Wiki/BBCode.php', + 'error' => 'The Text_Wiki_BBCode module is required if you plan on using BBCode formatting.', + 'required' => false, + ), + 'Text_Wiki_Cowiki' => array( + 'path' => 'Text/Wiki/Cowiki.php', + 'error' => 'The Text_Wiki_Cowiki module is required if you plan on using Cowiki formatting.', + 'required' => false, + ), + 'Text_Wiki_Creole' => array( + 'path' => 'Text/Wiki/Creole.php', + 'error' => 'The Text_Wiki_Creole module is required if you plan on using Creole formatting.', + 'required' => false, + ), + 'Text_Wiki_Mediawiki' => array( + 'path' => 'Text/Wiki/Mediawiki.php', + 'error' => 'The Text_Wiki_Mediawiki module is required if you plan on using Mediawiki formatting.', + 'required' => false, + ), + 'Text_Wiki_Tiki' => array( + 'path' => 'Text/Wiki/Tiki.php', + 'error' => 'The Text_Wiki_Tiki module is required if you plan on using Tiki formatting.', + 'required' => false, + ), +); + +/* Additional check for PEAR Text_Wiki module for its version. */ +function _check_pear_text_wiki_version() +{ + if (!is_callable(array('Text_Wiki', 'setRenderConf'))) { + return 'Your version of Text_Wiki is not recent enough.'; + } +} + +?> +

    PEAR Modules

    +
      + PEARModuleCheck($pear_list) ?> +
    + +t(b}A_}r3LRnBHSy3bjBd914${J*@AWg!W zf{==lilBxN6GT|U7)scXb&PZvF?7K+B*T;qQ!-7}wB&dkS{AY`n6!1I=t$MErekPe zjlD?MpjTR3j%wy7s=)3J3YWxBTIrVKA_I!?+<+pd%J9m`M0iE9%# zN!?`NrF@biu0y;u^_;*<6VE3kO?;R59wA;pSs#ADVm&1n#+!4&$HJWJ_Sb5VQ~jFnc{HDJpAXeE$3TUVJ^#PaQTsZ_9-q%-!Ob~O6CA#Y+|_E>?^ z+52$s&81hD=VudlS4R?CAFRLhd8X~qVn@r=tv4^Gg+Bwww@j4HZNjG(3$lm0>;}oFn;*&in5{p R(EZG3f!b(Y)ri#E`wx&sOeX*U literal 0 HcmV?d00001 diff --git a/wicked/themes/graphics/HowToUseWiki.png b/wicked/themes/graphics/HowToUseWiki.png new file mode 100644 index 0000000000000000000000000000000000000000..0229b7aa099eea858bed94004002b5b4313228ce GIT binary patch literal 370 zcmV-&0ge8NP)Bhf{BjRBwz|bCFwjm1TB`UwD#Wc#&UwnPY#QXMdV#gQ0APrEZ6z zcZQaIikN|xt$>)bhnudJsJ)n~y_u}QoUFZ~vcsjc#-_E%u)WUz|Nj600R3FwZvX%Q z0d!JMQvg8b*k%9#0EbCLK~#9!ZI9Uwf-n?B6$KY6C@u)DsG#CH{r`{S&eaeToVRmk znzpU~v6>$~mA7j#s!jKGK4iOXy6k-Ww=j?<@ysf(*aJyCpL&*})IB*0RXl|O2u}hP z5B31rsJL?vkcTSrqnrnXefM+CWiJdEzc0)qee-k8RK%APXW4i* Qpa1{>07*qoM6N<$f`rDFh5!Hn literal 0 HcmV?d00001 diff --git a/wicked/themes/graphics/PageSearch.png b/wicked/themes/graphics/PageSearch.png new file mode 100644 index 0000000000000000000000000000000000000000..bcef90e8855a2d8c8e18ccef734285c10682f2f9 GIT binary patch literal 521 zcmV+k0`~ohP)K~Z8tQe#9@WKUpoUT}h4afWVg zZe4PUV04LLbckkrlWBdDYJZe!f0b#0oNIxYYJ!_vI> zkdTmkma>GFs(_oghnum4oVbLYxrLp#gPyyEpuLNqw2q&!hM~QPqP~fuzKEm0k)pGV zq`r-$y^E&7ji|$ysk@Y`!<4MWm8`^DS=u+c|^JKG7v ztc{K35S5dW;(=;lWQqm594gJ`qQc661Xvt|P<+L}jK&9hYCS0MfW|NlRK{`~&^``52u zKY#xG@#Dw$@87?D`}Xzg*DqhbeE$6T)2B}#KYsl1;lum)@87+9_xA1EH*em&e*OB@ zt5+{yzI^fG#q;OSpFMl_^y$+lPo6w}{P@wMM-Lx9ynFZV?c296T)1%d?AeniPo6k& z;=q9e`}XbIyLa!NJ$rWV-o10@&TZSaZQZ(c%a$#hHf`FlVZ-|M>z6HCwqU`6xpU{v znl)?Mv}qG2Oz7?Ht*NPri;J_jx3{&mwY0P}F)=YTG&C?U(AU=&7Z(S*Uo+{770@S6 zB|(0{KrUr~!9@%dRt%>+T^vIsBv}vc_HqssalN?n+b&1lBjPNRo~gZjV-nF-uq6GWYJqO-zhmpZv>xS@!Xt!8(B}mrurT zx^?c%^vzxc|K`j*IgMq#xXa%k%`I#!o2AaEc&G@@5?=FblGCfxR<|xFv`+Q8{VZ7M z*#mCPN3)k7Jio}8|C{W#w=X{?ACc2~eNxR>)%C_=j&)JDdvmR;rn5XGSQjw-VXnz_cKfRy_ZZ|YPgg&ebxsLQ04(E2v;Y7A literal 0 HcmV?d00001 diff --git a/wicked/themes/graphics/SyncPages.png b/wicked/themes/graphics/SyncPages.png new file mode 100644 index 0000000000000000000000000000000000000000..a3151c509a73986bdfb83bca6a75f0914bfb9fbe GIT binary patch literal 571 zcmV-B0>u4^P)<6B8E~7Z?~A8yg!Q9v&hhB1A+)RaI4AUte@~iH3fNh=`4ijg*p$larH{l#HR3aGRT(oSdAapO>znbg-g$ zwx@NfsGq2)sJf|itEr)@tE;T6tg)@6zOQ|>u&A`Ms<*ed+`M$az`(@7xWvJ^$;G|K z#>UIXzv{?)%gf8%&6v{9$kfry)Y8n=(#+V_(AL)0*w@kA+}!itn)KhD_2Q)A;oFMd}>F4X}>Fet1?d<69?(OmM?(*^O@$vEU^78ca^7Qob z^z`%e^z`-g^Y!)h_xJSo_xJet`276*{r&y^{{H{}{{R30Q*FZ)00001bW%=J06^y0 zW&i*Hy-7qtR2Ufr!G|J3VE{nk!?iN9WoBP{Wc@ZNn`~Lh?Y#dx_&xvtPyhe`^fjjd z0BAKyD*0FejGA=&?Jud-PKJfX&C|Ax0dv3An_UHWuFKKmR>t!+ooE;Lzdlkgw=0px zeF`l{Kb6*0&%CM&-Qsci^Zns|((x<16dXAyJv|?0%m$771qYW_XU7`S%fSu>Q0wiT zx(GVjDWHqfb2EFz;E)2~_hq4QRtyRNco#wlVZ9juKK~Z8tQe#9@WKUpoUT}h4afWVg zZe4PUV04LLbckkrlWBdDYJZe!f0b#0oNIxYYJ!_vI> zkdTmkma>GFs(_oghnum4oVbLYxrLp#gPyyEpuLNqw2q&!hM~QPqP~fuzKEm0k)pGV zq`r-$y^E&7ji|$ysk@Y`!<4MWm8`^DS=u+c|^JKG7v ztc{K35S5dW;(=;lWQqm594gJ`qQc661Xvt|P<+L}jK&9=+2H)UmIW@cuoSV@J2g^P=e zmzS5Do13(>w6(RhwzjsrySu!+yu`%B$;rve%F4{l%+Aiv&(F`&($dq@)7#tI+}zyX z-{0Wi;Ns%qFVn0?d|RF@9+Qr{{R30_3XP-00001bW%=J06^y0W&i*H zl1W5CRCwBL%m)s_FboCIvO^eQ6bO43C=Iiekplnzw<4uVs081#B|llV{sn;QBus&E z7YS%%u#gjcAf1jTah$zCPs9~U~J z55kCnK*4Qub`4w=_^adEfM28eoqN(?+x=muQAqW8y~?8<;8Cp4_{|%eMiqi|7w0no O0000YMMAH}^vVU9r2dIj{)78&q Iol`;+0JRbu(EtDd literal 0 HcmV?d00001 diff --git a/wicked/themes/graphics/diff.png b/wicked/themes/graphics/diff.png new file mode 100644 index 0000000000000000000000000000000000000000..04fab07b737f3d74fd0c3f164aaa915078bc160f GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngj!3-p)&s5I?Qi=gSA+G;{VEXj`3=H?*{awB7 z(9A>so4Th2hQ;U_7&D{+g&F>wyz>D_F_r}R1v5B2yO9Rucze1yhE&{g?epehFyuHI zHTT!<|BcUAE{HU75vgkEIKw^VsDkjdvyvt69CRbu#jkYFVdQ&MBb@03@^R`!#?Xl!_dIMz|fFNhK42ukxC2$BRx78c<`j6gMopkXMrh8 z*>rYum)`ZOceHQ6y)!#I_8IfQFHMb(Zy${L%+*(hY<*!o=wB{)_V0js`z0oUNqArk z-k!d{lM+|g7De@p&=llIkR+*c37>@i{~vxi^C3rw5iSJO!6UX7wIf%sXj`6f4k1HT z30Jb|le)oMxW=RD2UNa6=uSExh7sd5<2VdDPxC~MRg-ihJWbrOjz>Q-kLRvw(H;l1 z{Q;hOeC&1IpUxPVD4ip6hPKL;+(kT&s{gtt1?mu0=cb?c-t``3Dfr7^&jtDRrwK=TIq_c9 zKWdP7p}t?CdcknSvY*6KS_{8a$)rK`6$cYQnk!D)TDp{M8FcAn)0vOH72 z#Zwug>-HBU^}Eioet@-qv9~!kE0LF_^4Q`YziLQfv!^@WTl{q`T8g~7%ll0?eo@3L W<0s=gt<7FY5E3!RtRzz;5Qf zA3#dk)5S4_BRV-DAtCKT)Ye&!t2sLyO@uq<@;+=fV0O9l?|(hR-#Fg3Haq`IK;;ac Lu6{1-oD!M<#oi-p literal 0 HcmV?d00001 diff --git a/wicked/themes/graphics/locked.png b/wicked/themes/graphics/locked.png new file mode 100644 index 0000000000000000000000000000000000000000..e79c2a53470159a6e153c5b19651994812e03022 GIT binary patch literal 505 zcmV>O-+GX zD{^vjs&6Z#aW;B-daQ9St#dM7icGMLU%iY@rIB{NjZmAHl*X1_$D3rR zqn^s2XsW8J%cOD6q;SoqZq254(57_Er+d(-bkD1Nv9Ynwtb5I@gU+pk)U0{cu71+8 ziPf@%*tLwjyu7}?zSg>wz`(%4z`(-7!rH!?;KH8a!kpm5px?x!;l!Zg#i8TIqSDgR z+uPd!004VHNFD$H00DGTPE!Ct=GbNc005auL_t&-S7Ttn4kCd7iOVe(9ueUw%nTQh z_7dRa6m*b=@%j8%Koq|@Oc$>Yn8o1>6JRsqVr67x;xT21@FNX^f`k42{k^S)AW9-b zJ=mA107 vnyiK#RKU*I&`?WDUsqie>X1k{V88+Z0OB1NbJNwZ00000NkvXXu0mjfTie)Z literal 0 HcmV?d00001 diff --git a/wicked/themes/graphics/question.png b/wicked/themes/graphics/question.png new file mode 100644 index 0000000000000000000000000000000000000000..66512b805d2237178a245425e26e918854330723 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CN#0(_OT%$mwH5lE?d zx;Tb#$R;NwBqRy&@+J$UawH1~3Nj~OWKg&-*x~pnAS(N+7DIM8+wO@Uzbppn^mO%e JS?83{1OT|49v=Vz literal 0 HcmV?d00001 diff --git a/wicked/themes/graphics/restore.png b/wicked/themes/graphics/restore.png new file mode 100644 index 0000000000000000000000000000000000000000..b8821217a4495d8e7b6bb6615a819842cb9bc9ee GIT binary patch literal 287 zcmV+)0pR|LP)F2aSG8xPl6lif^NmRtc5P|44DgD(HqJT}p=! zY4aV{`0G6*F1PDQNxrH`8>QyGipEU7T$gl=lOz`s0xtn!9l z3soLt(J%yzfuisTBMsV?rXi(hV#m%?;@Eb9P{Lsx(KQ5B>R5yp48N^l-JAmkuINTF_#IeDX$H<)WPMjXr3u$nV9O5K2}in@VR(POUX7Bvl0Mw#a^k6DHm zKv2XwLMkP$M+l`wj}pJ;L(1i_Dl!`V5zymy;>bvizan4?ZPgM><1Qo8}HSmS@52*Co3CCM^#{ zqiyrC&BH%F&xGUkkETPHg7w>ZrJ?TmA8@YX`dm$Wbnn)t7Zr_T7e~g)&9yt1LEmn- z{PpOr4c`Z6vY@#7FZ*-&%-gP^$>X!{UUl0$ntOK+Mwf5QWft_irw3N1dNbWAe6N51 zNA=b*uXv6Acq)EsUrS=KI<(#e-X8{Es()V + */ + +require_once dirname(__FILE__) . '/lib/base.php'; + +$page = Horde_Util::getFormData('page', 'WikiHome'); +$file = Horde_Util::getFormData('file'); +$mime = Horde_Util::getFormData('mime'); + +$id = $wicked->getPageId($page); +if ($id !== false) { + $page_id = $id; +} else { + $page_id = $page; +} + +$version = Horde_Util::getFormData('version'); +if (empty($version)) { + $attachments = $wicked->getAttachedFiles($page_id); + if (is_a($attachments, 'PEAR_Error')) { + // If we redirect here, we cause an infinite loop with inline + // attachments. + header('HTTP/1.1 404 Not Found'); + exit; + } + + foreach ($attachments as $attachment) { + if ($attachment['attachment_name'] == $file) { + $version = $attachment['attachment_majorversion'] . '.' . + $attachment['attachment_minorversion']; + } + } + + if (empty($version)) { + // If we redirect here, we cause an infinite loop with inline + // attachments. + header('HTTP/1.1 404 Not Found'); + exit; + } +} + +$data = $wicked->getAttachmentContents($page_id, $file, $version); +if (is_a($data, 'PEAR_Error')) { + // If we redirect here, we cause an infinite loop with inline + // attachments. + header('HTTP/1.1 404 Not Found'); + echo $data->getMessage(); + exit; +} + +$type = Horde_Mime_Magic::analyzeData($data, isset($conf['mime']['magic_db']) ? $conf['mime']['magic_db'] : null); +if ($type === false) { + $type = Horde_Mime_Magic::filenameToMime($file, false); +} + +$browser->downloadHeaders($file, $type, !empty($mime), strlen($data)); +echo $data; -- 2.11.0

    qy1h)ynJdTMC_jeRMzDpwD5qn144q z&Vy*bOVDv%L(j_wbbmHs3(Q_8%)c8pBs~gi;w#t%9-l;V)PkZ>SgIXpY9;9?N5I^tqXh#yt-^;PYtw7tnFi*ALG_4)lFk6Fm=I z(EbL*{4p_qE_xmoqwBgFt@mau--_1t`_TCxL*x7bjqhhHi|5gGD%dE*R~@b23Y|{} zbiO@edH}j#Bhh(GMC(6@&f^g@zSYr<=sN5|-&+UJ@6ChgzWt82zk;`7+QuP&7?vbG z7X5R{6KMaRq2DtN1&=kq)Cxw?YRKUdQ*pM2=}MbYugqUDui zeob^94bgRIkJjssu1DYKP_&=1=zC@o`u=zXZTBkLZUedwTVi@Qx}W>d{rwK@=OVhU z3C+SdIng)@py#1%%&&#^-x#gm2A%IMF@GXD?$nt70J?9_MPEkuVLdwU1L(OpjGpsj zXk5Rdai?z{#?Ohab29oqXpOcTfW|W7~Ox?okDi{)_} zx~}K24qo3e{(TEN{w(x;y9P_)N0^M~(e=vJDfC|tjlVZOg>%s7uXN`SS7&q{Gtu#P zqWxdS`dH-V#DqcE7u(?utcba~gg;L-Mf)FzH{w}ihBs)p|0UD2np0_n}@I{b{bFVrVI zr_Ip!L;vV7^tl_0z85B-&*=>Gd3ywXewU)>W^FA09@CLNk3OFlaT;F69(ZrxP<{~Y z|7&#I?=T~tiRHhcabCh}Fr{Dk-l>Jg(-!T&C))lNOpk-mxJIJwrlRkWxv_jD`aStd zEZ-X4gRa+M^mon`^!z3E5B-)y$Eg~vi@sl)qUUiSdOjAR>%0X$AHSgAe}xBx{i}(t zdr$N|Fa?e8Y0QP|usH5Q`#+0*FJ&7T;wytSNVh@9orcNyR`g4>{zdfs=DIbcTcGju zN1yNcX#bng_vO);P8<~K7eUvf9vW{S^f{k_zSmdB{14H1&!Y3lH8?yU<E1~UMq35UrI?i-7&WB?8eDrt66X-l&MeDtXp0Ayl7B8Xa z_g{3~a@`hwHzcF=s-XQ0Lic|%T5mD>+`ov<`*n0adoeQ}LgP7s&g*o{{})}a%%g%O z(E5$ge%he@4vUUM>)(x~a3Q9yAG)49(0Lt3+kJ<|@e@|VKd>RDj1KiipzARntv4NQ zHwRsZg=l{-q4RtLeLug4?&Bf!y>Jqp*A+DWoMS@$f@pbJbbXs(S!@~0$6*fA_o4mH zN5@-@z8Bxb?D!V?TSJBH5t6k7irdOj|qait#{;>n4wODXg`*GHd&wwR2Q(f7a- zwBAN+fuExDy?$JHPKu-N+pg&QWEeW1hcNYf1YN(SF@F`h4zI-g4d{AqN6*2RX#7Xf z_)o<2Pw4zEp#A@i#*sKa^p_1CKOfe{y6AiQ4lIMq(f7n2bezA@bxXQEtZxDIy-*!J zUtQ4kACIp0Omy4_(D>(|aXx|ew-o(eS%Jp23Vk2G6+MI{NdFxzdPn#j*b2>mIl2#x z^Di|1QWL^^u`8A%eOGiP+HOCV#!FZVi%ksAK^yd34@S?=Vzk~m?2KPyBdl^~Xg3~R zr^V47G5;5I-0LTWewyJAr2C-fx5Zt-K3JXf1au$PU~}AqwJ`VHi3uaH9lE|7Fd4r@ z&;3R8y-{p(c%L>w;~j#=^$3>4jp)3O$MOvKgnE_G_3nWwI2rwY@gjOY525GmC-k{V zxHmCj668S7=R^1`K91wD=6#8&|Gw*Lw7=3*!tctP(Rr^z*Ly4a-aCc9FA}DP^6cn& zDvgb>RZKsKK3A)-BYuGHPu^)^->RVRi+1Qa8-VHXHuSuWN1ubcV*Ye=ehG|OJ?0<9B+@6NKcel=pz&Qn`HJd2K-?fwu?5wu-#bU#wieruu6(T(W(+=j+?M@&ygzegTI_k9sMza=q$8M@wU z@XbVi=c4O<&x7H6WDYvs^JxFCq3gLGJulnPb@~`RH=m;O{sw(NTtxf7es=i2susN! z%aFeyx*2_M{fM^D^H3euOOXBr-Pb$|L%Z7OIc|rpPj7VG+t9e~M)!Fpy00tH zeOZq_j~}Av_bW7x3+Qv5VNuwp3g~(4iN1eEqw9A+I?fU-i>uM|{RLX@cXVB|J`u(# zgZ5t+yJ82diZ7t;zCzdMuV~VfVV$yI4f3x?$7_$)>mADnMaQD+cMn=`20Fh-(Ri1m z>$4G^|HmV#kE8LujLvTzI{$akdG3hmedxJ6g3kK~bpQWC`$_Y3 z*#81(JQdLAyE)o_KlHo}Mb~Q-dR}Ir@hw8n-Ae3k-mV&U3^(+R{>2|N7tz#R>zj;eDA?(_!joVGw8W) z`)qIu`aW5UzF+=~`L&-5@8#RD9Qj+Y0{)Ek@rLIU6WU@=w0tF6z8_upG|R*DRUMsA zNAx^SMAz>jwB7Sq3O_~9>BX2XvLdWgYqVVlbo~dS`!fo!!SU$2PeIpn9=cyk&~`7Q z>%SFKpMP|neve*><>_7s{pUx|ZwYi?DxmYJj%jcR+I~cIJX-H=^t?=q`47bWN6`1_ zB21kxdM-Xi<2{a!_e)G)MEg&_GVE(MH2%D3|K-v8RndOyq2ss0;@BakZ%5bbZuH#E zLfbuouG_O{9Iv3`y@$?kC;HrdjLG;t+E0cT!}vMTe)2|(pyg%J`Bg{X=L67nn}+3a zEgI*yX!}#>ew@elm}6Bq|NYQ@mS98t2t7ZUUkd$ILh}b;b9@e+_mAj%IP2E$rr8t8nwq3bdLU60}Db2bxQzj>I1PowL&6y2xS z(C@1q=zH>O^t}I#e&6JNC8R5%=eQL*PCIm;x}fKGNK8*e`*{#c<4Wv|pQ7)(;;)8v zY=zEm2$sQ5(0Knu-$#kBh4Yd(S{&1nUnyDxjjtX$-|pyq#-njP5c8ix-*@ZK=k8;4 zysyyxP5XL?KMVSPE`ZjnfUZM*^xSue`2*2?9EbM19(`{2pyPgv*8dIdKk1Dyk4)%3 z$VF^;1RT5(%N87tV+5lHpQ-( zj8CEcyo1K`4VJ|p(fQZt-h2LeZ(DN`F9skMb`{;A}3#MT1x5M{TBdkq&0#?G;upA!83Ycwum{)zYygxeL zqv-e5HZ+d38^ZTpZS?zW96J6wbRCbO-&^T7hWMJH&&4QoJ!hivZ9v<7jgFt`o$x%@ z!Xl(Q;_Emb-QN=LhIuza-!ntdc%DMz-HY~@uqnimg3iAqI_^E_d+T-dd;3T9{Z?pm zV!}(<2W_9}yFN~g(6trC}%#JP4bJGoN-v@neN1^YJ8JPMUq4i%x$J>DRvl)F3cSjG${L|>T z7twZUw}szVdC>7XqR(r0^f@1njyDah{|x#*eid)TH_-mBp!3VLJ*>~Q==0SCjk^mP z&j_^NyU=(aMc+e<&~vgHo$ofZ{pXklPomG;DKyUWm>K^<<4ya1SjX$o=d&1E-V$A> zPO-da%pZdOId&Wx*F1FHo-(RG;=^XFhq(u-nxFS<^LFm+wf{W*`G+cY~v z9A(gc>!IW}{yu=N({i-_nwb9a)Ff5%)v$IZ1XJVyo5bbEB%?&!V`i|H}wI!#5#n~R>4g=oJ| zq2s?A%ilrUZ;$yOq5Xe>_H!)yGdkWS^gLwwD5UeD=b~)19=dMr(e}g9eVB+o2UF1T zXQAUhimv06=(?@JQn(GP<7xEwO!CKJ9c!cUbw>C3mgsG0eD|Q^&czP67-!=dw4VvP zL%n%uT+7hsZ58_by@LMU`2daQ1p0ovgvM3*lknc_fyGHrL-%(j+I}lK|3m0=@H>{p zoO{Ciq&}7-Jqca67tr&&9*yrDI)0|Tp}Z7&-fN@#*)G}zUB6qRx1#5G1iCJF#q?}+ zU7n2Tm(cau5Yr!^^$(!?auS{QujsfLJ`L+sAX*%ayL?PHMEh%nz6ZLX`#AQ>(C1(WdVY3A_o4fC6z%7CH2(Da!aVb#&t(d_PBk#~eG$`L(DO408{u%YztypP zJKEnqwEyqX`TmLSXa4;mo}y^~<)Zasep_^2U8B9D1JLJiDBAA?w7>h&{hNnA?<>&t z-iY?|HF|DNpz}C`)A16zulF7Z>-Gp*|7mob=g@Yqq0i0RF}($Cw-a68Loxp-I{pcC zUVlY1eG%3pANqWhL%%m$qvN%W<(<%d8ibBNI+ovq#xWh;|Jkv81v>vX(fHm$_vL*| z-EXv?edxT8qvM`K`@4XimrLlmPyc1ur~K&p)<^5LNB6S}8t+i_e2hZJpA_?_qUYd# z^xQ5*-xIsADSj6%buj$-V+7j&>u9{|(fGH;^iFhMpT+c7X#XeB`2I%Y$$BU}kGatP zlF@!jq4mq5-*3&(`h(H^8HvU}86AHHIu6pzD7#-iS}2?Y~3U=J!lhJuS zi1zbh^dmIhpRgq6I2!)^QVU(z!7)7zU8mR3_u#weJPx4i^mX*-=-=r1&GL0v_iX4q z@}TjT!DiS4$Ko?+KiR(t>slB+#}(0bO=7w${zZBimd1g{!n_{F8KhUE>sje|SpOR6 zy0k&pr3)rwKlEHqMbF2h=sLcL&G9w#eEfm+Fypr&?&jEl^c`rswP@TQq4f`;^E!iV zu+n$o--DlwDWvzK^G`St*0~Z^A=wB09X%hN?~CaAzl%N>2eBNUL%)9uo(#Xg>Z0jh zXg`zC_s$x0zjva~#rIeY(|jNHzZ9C^8k2D_roIo*ahIZTyc5%V(RycM`kEiYIVg>; zYh!f3+M?t4MW463&~=@P{$6|#J?E>?`fsE4K0@n#7So4f`dIWwbYIV*>;4DY?wTLN zIn0HY-w-W|p4ZaoIMvYlEwL=NNB3(IdJY~!<9-@F*Kf!CEoi)-q0iAb=>Gi_^KUp6 z>X(gHMdPT4u74A>et-15&PU%18_{w1qH!HVCzkKM-A~q3C&; zjkceQWpDx7ZZq27E_A&-{BG#Xn+x*vewyTJaQy<;0 z7HFIu(RufZ`9siiF%IkFeQ3K)XuS{6b^9EBkDNr$?B`uZFH`V>G@_X!`+Z zT%*u^y#tNsZgf7gumsLU`&*0lvm0H{qi8=FE{69{F0_3GG@jaMyzOJU8+xurqTiQe z(Q)RZ<3AbGOJjOvOuvl2pVy)N?m~Z;ejQExE4(L)M;l`@<$cij??cC1f%dZl9q$l& z-oJ^SMZZ6;pmFEA6xR{mw`%D3R}*x<2FLUmblwZl_wZ75yp1vcD|DQbXurRq^S*+v zXS&N_U#>&TOQQW(MB}WD)^8ZoEzxyshn~kyvAiobCfx_C<1%#LzCicuEP7t@{vGC- zg0)CDj^2fyvp1u^qTeqSuY~vQIP`gV9euBSggzH1V*X`x-nst?&t*0Az0(OD|3372 zUWK;b5!2tG`+6BGV)lO%6DDFKwBCAj-#$mr@Av5b|AEPvkGHt_bz>D(HC` zjK(<N$J}-M3HBxR0ab{D|(u?`Zsq=|eg%8h>$gJd zzWuR0jz#CW6zyjnI_|sZd3hgge-!QSyI6h^lSwCJ3H=m7&qW6`&R*y_9fZzr2D&bf zqx-iKjpq%t-#zGi@w=G*5$)#+I-d;Jg#F2m##0QrP=sfzP{SQUoH#4vj zu0+rOL2QnRSwneCG=Dgjz{ju)Za|-tYqN!Qse_K&B&OS-@pne!8XC(-p>a$^$Gtb^ zzlv>0uSfSk?X}_gERH@Wy|FqDL-%1R`W{`0uE$n%JwHa*^9VZsvuIp@qx+dId)SWx z=suJ}>$O1F<>u%Z^!Mz;=)UYi$K8*q{m1;X==}adQ5v==pyZ9e+Feynl?wy%&x1DEd6)&zY3^yRsHq|3UP5o{!FV zIhMrjX#LaZK4r`m;wy-*LoqathG=;QbRM^&=XnAe|1`A!$I$ce0y^$zXuU&N7f+)7 z70Df*>%)1uMx*1*MBjr?pzHQdEI*8{->>L7&vipm>fZ+xNBeDyj^7{s zUcLj9@lkZ1Z{ir-hQ+XI!O&kfwEm=+UWksr9?Rq5n4hUosF#Aq)hap^jr)OEz8IbN zdNj`M=sxa8&&QGINp#)MqH+I@o~ulSLpmRNUdyBF)f-)>@#y(|5bbw4+Rqy7jBjEG z%#a-Fb;H)A$6*6}7YE~I^c)Q+5`OQD#!950L-%VRx=u$i1rv*g@0;@I`=c|K!g**M zZ=-R%hmG)qn9fivJm=Za{L<+88HVo5G^~d6(cd8-pzCl3UBAod{#;W$)GveP*Fwi@ zjn=;j-G_ddx=v_Z4`LIXkM7HUbbjB&^eHr+-_ZJ5ON8<~Xu2@kZz;5Womk#HmUlq+ zwHx}opkK@%6!ULGpVJBGIeh@#&n4*lWi9%geU6TI44vPP=)C?y*C|uU5Jz6LehM0Q zZ7hwQ(0X^H?PjC%dWs z0!x-jO8w^qZPD{N9~JJO^U_IdtBCqvK~N7v^6GJr^a>@lr4u8=&L$MbFy^ z^qfsX*Y`PeUYle2`_a$Q{XT}ClN0ECE~4*~r1D9re@-unRY~83_B#XJ-Fr0 zt3p!h|2?SsXuXw~f}f)E_#0iHToscNhF}@I8Rz3D{2qOecd3+=& zO8xtZPUyTI!dAEvpTcwKbMjD?q}2ZoW;I%#w`x-Azn|Ve`U>7o{$-qiW2z-3+=)M+ zP&4f7lUSDY7Igk+(Dz2}TH(D|1?!ORfX#3= z`h4$2$N3klV2Rpcp53t&>G|mIuMKGb`_Ogz2g_l(I$_>Duo3A=I0H9gGB&K6l=|;$ z_Cw#VkD~i`06mXs>xFhHIFR&6blpBh>*cE-Y=xCbPsG0XA`ZZe4Z{A9!0x0U#~yeV zoo}m#VLhg!@vlMG<;$4Rd}drM4%z0mf3qeIa5%V_j{G7WuiK7#hY zBBs}%@7b+ry*=o8I)e6_=Em^+XF%IkMaQXwwrhgUzXMjsvFP)+5-a0j^m)kIChSWi zw7hrp5p;jvN7w&HbY2=wSiv!l;%0d%}%G@hDhJT1_3 z)B$Zb4Si3{M#o={K6h`U^>(A<{)?`E;qIZlDY|~$@p>GJ{yv$4&SyS4-t%aGYtZ%G zik|CFqNg!4=?p!>^Oh5xUj?*%b#&YY==c2qH13DdaTmn&8npgebbU9W@$bY2cnR&d zcF!=+M(DVm(fmH>xfvAGlhAmlpwHXG=zL#6*K0HSyW$}FUO9`d^JUDBnR|uzVF~p6 zAO)@01MO!p+I|A2&Ii+wUVyIO6X-gqvPbcC9GQ!bbW6|-%BIWbM+89?jvaZW$1f<4I0NA=(tM`REc#x{F)%#;EztEGiH>_excRWZx3kZu?qh3@B)=pOXB`4@eT%MXvg zC(-#oipKpBdOnY%`;#ytDfRzuNDlNo&BfPn5#EliMkb~H`>va?BG5WmT7|VO2=Y2#>k3s8C zMW5f<=yUo+bQ$`bz8HN2jr(2neYp*-{{{N|d>!*o$MipF`^;m5xzYDtA#^^~(Ei#+ zJE7;LJG#zO(0-So-$Sd=?~`3v2ERtvDdV`%Utx4TYoc*AK>KNd&T}9p;mGJ{^u0JP zmOp}y_aqwU3UuGzLHpZ}p5G&AKiS8J^~{Byle}m=Dd_vU33{$OU}c3cUUB+cMgAac z%UCy&cV8TDRIG2^>Ez9c`CrkOS9{z>U#;*#+P}(JUQgrj7*EAmw=``hlUJJbtXMB6 zZ5newNgov`YebzpX}^%W8?kI;{H*A;pZguk`%&L(41G+eT_)-j=l&-4Y1wDoyC}=Z zSa;B73*~8JyUyf4Pu+LOJBGCxmwy#C^~y@!tJf`*d%YTc5EW^D0VyJ@Ru={}b|0lWs`5G4*`Dy;ktq>q2y5T$5AuaXW3i zigIrzJ&b<(Vpi%@k1@<3z8m6r8R*-qF=bQ3$AsC8d67CZsPhr`0zO|$y-)c3K7K~I z*J%1YMGQ6YE%J)Q$NY zanzfQX19xFWB6Q|{8wm`i@X=ZDEuxQF++C=5H~H&m zJC5`i>U+I_-;&;m)#>vc{E#}6=(|U(vlkoCUoK3GewY4?bLrEIfBh)+YEJu}`t_|aH zb#A}67m;`M+Dw^OTJqkApHI+NX~vsDAB*W@YpmZe#_$I9r`a##e@*$E*v@`Rke``x z#`8HN^-EC4-;n=MX9{K4lD>od$@E>0bUViChh8u8xi@7iNzb9)FWkR!?{}=u5q26NB4&2SAmaHHThd1> zK6l~1k9#6{cTndo>W(4~|Gbb7pXPp(@@B-4gR+0Pdy_ta6Nn)l-awhxTX7zblD~s? zZDKlNFsI^{UF}bFuDSwA(=X5z_ZlFAK4)C%uTiFOt`t`v?s?5XV9Ky?PxWej2VIFn6)224%Ibt8zGWJ=@4uop_ z|C<{=Y^QEX`n`>GfBc2}4&w4^6Z=e}tTpNOv5jR*sFy#+Y??oABovDEZzr8Imie3e z&p79@loz924sNeB#MTo(r{9~okCR^l`B!UGug-jKPF@jG^SSfUeiQeMP@K@7dVRQe zllKT?d_dd_8TYn0_MKPbqr6NUGd+E_qFyudO2>Z2;uqwPAisT#btC0j<2qQaEU_-3 zj#q)$R{_SZOTGL4Q!msA|NCJazaj0W(xxl*J~d|gx|#ItvA?^?dz?E9<=4f&>+|^x z<(G-4HFq7#caxsU=QY%+&bS|Nd(EQm5N~!TS2~8VeCZNo8*7Qm`}!h%PJ60g*aw8${!$>D%|s8UVnUy`ya}@I>&k4 z8j}C}-yxKjrYr|m=Pn=T)FRe+{(m+9@5433cn`50B5OEf-0AxLCpK%&ByO+g==*!h z?xydjsGB9`cZlOWKzV!ey&j+*|Jr&&Im*tFzJ+}MOm_9!5I^LIW3`BVwV~d6`uD1X zH;0c2!^ppxx?8E&jC(S1e}=Q;*mp73ql~|aHjnT*J@q$He-iB{k@mWsHcO~KfOd~? zU%m2^cOzxL$5@8)xdv_CrLTKpz0IUM(q~WZM%3?MYz{;0F+R&S$M)~>IX$0uSdZ&p z%ojg5iS^gSzSl8!3FJ;n5-M~s=7yvtNt&;2#+2jVLFYDvFSsmp)zlX@MeZY|O`;0vtTGRn8}`8)dRj6ZYt zqTK5z`n-CjrCwI*@1x#K+tJ@N>W!j8q1bl`KDQ)qC+RZW7wM}Q?x+6Sv7_(tSNfVl zY=3aCpudZh@1@>A^!kT($<#T{_{+%KK%L#O>?_LBGsa-_%1l{GjJGg#n$YLfYh-L= zx*Gjoy$;Z}E$Q6<$y?3m#~JfS`t$mTv8U6%DtTUAFc0Z8vCl$r%(m34Ph0Nh@@ zvKNCv522f`(eO)HK zCdM;`@=h_PY1De1I^`*^j~`Q3hOwR{|2Xwa5yK_qKl@0y3rADF`#*7oQ8){HIM2P5 z@*y}mj%E2jjNg#H_fmG+jCkG3I2S4NdYAsaE>Z6a`P;eMkavH9YNJIwv(f7;Y1wk(t#k8SQ^KHpP*ls4J;e2{x&oa1HcuBPr- zV&NYdrCtrm^Y27o;l7QsdaUK2)Za$>JY(HU-f#51mGqnV8D)24FVbx(OG};qUg;>W zOZit=h`SzR{lOTO=$B-|)7)n%Z_Vv>E%`UnPXP*lh%x<6{m){*L*m|AcLH}(tYg}1 z4edUleFAqoxXnzi1N1REj`2I`n~9?y>3Q_aeG9M(Nu7$+&rjY#+NTirI_{tU6Mt#SGn0Of zIyJZ-i)D>yyFB(scEUv3FN)(dr0<&CQ)&DEU%P12mA0+1GM1&yebj4(wd36QM=}X} zNvENYm%0Dq^Nu*~)&8!dZUf53(}!W)PMyE_P?2;GKDVRHYbu|=B7XsTHK(5ij5myW z)yOZ-=NBk@g1clKKhzBW`x^P@sndt~dHqEDmuQ=p{`pUH|92H8{|oANq8`-~8W>c( z9-?k;(xWWkO81|#J>(sTb307_-}KRzIKHA@OUeqyam$f^h|kBkAEWF(+T6?d563?3 z_jCV;%YXheH^!Do`74ZHgZAZV`xl>IBCllZ_d(Kk&{rnzb&S89c6s>xG5Kq#x0AkF zk~bl)O$o}pPEz+x>UbTcuiImPgUOpsSuT8?J166|r|mt|%S!&$>u_vqdKsT<#hnIbFGT= zF)N8S57F;oZm$l}ZH)IPZ5NVmPoMAc`I}hAe-6lh%f)v%^)unqKARx-pJt zdd$`F$eS7KJQf{-`M8_KagNbnabofMGS&$xe%r)4i|MB)bsnPNCGy@TuJW<$IQi{J zKg5{(sW*-}wV~eq^m{Mq54pdM>vJV`JUO<_6vy36eoa2#OCS6vsi{{_V!4TW+eww; zzC?N^eZ9y12;)6U|6Xs?_s6vPgSsmz`|tGv>0imO9{aRxA$h}S+lH}jig9Hj-+!K1 zhrBzv=TN^t?P@XRZf>vg)GbKfqm=ES{SU;DpS(GgFXl7<$?pHI2Gq+=o>z9tCsS{D zNG7bItQYP35J$7vrXgi@sMnu-{*iOSGO=$m%gS@*MA1toOE?8jQz-O$32U(Jf>;ajI#e;ZxGWa?lP2Tr|$~%yPW!U zNPkMY8fmZT^plSK@p$$6o;u}7pQm1a%DnpVxj1>%DSMfIGtmB1=IJ#&_SGZWBsz=o zqO|*!Hd|=xKSTCv8rxMOuLhsXaevMI67$GG{f69?_x(Mn=ft&wJDneEx#p}W;B z^-j0c)72X7Fbv{$*X`~aRn@JjTP3N*!`LJ-3)mkUOpJkmVS|lB{NWi)0Dk~Oc-Y}# zAYdF`vuk_Vh2>$u$!CpCzQ6zfoO^FoS4*P>M>Adbyr2K`KmXS`=NBmFG1C49?#p~% zq+OjbPhX7xDg5!@HvX4FSwqt76L&=a{|aqv{`;+l=UfH2!9_%nIA*^KOwC7@81!(6arq4n`8FL8_BPKA4?xbq0N6ewD%(U zuMz&Sqz&m-=eLij%-&0oenqWn)K{NLbK)C>6k z4&SdKz5czKzfUAg|GtB;CEE3CxIZeyckureGJYRryp=NlCI0WBz28FEFOo0g`^lvL zSmNWqP11b~asL}(>wJHLi2n=suT$oC;@%?uhbZR?VLyWZJNVuRbM`Tm_fE?H3DSNQ zaj(b!k(BYdq+cie_XxX9*gj$U_xAApQNEu=IiE_tcT@g*_>TDgGad_fEpz zPrAQIc>MQf!bZXKtEBrC>blO~n?l$&W&h3K{z~%RBmLL#{RIBLm2y^y+rs@%$@8sz z|2cp9_e=QWzdt08{{1R{r-S>C`JSfV?+R`EQTp}Eptx;Fk#B>tV0^J$^XPr>~+ z2-m+0e1D4XH=ECYzJvTfNP7?XTcZ3&N&hl=e}U+8{GFma{re8`eqUn@eu?ydKszuU zwL1ttf;`*!3&OvI@6U#`e~s@a6V|1SZzAo-^S4e}9~S!hHsYTQXgzxn&t z(9iEC>>Z^4M}+l=b=im5s1xN&n%L{Vu}p5%*#EzmoDUlm6@Y{!QBP z7x;c9-?vfTSCQ`7kpEXhy+4Hi9}xEwwB@EM;@=g@d=2F-689C9`3wC0G-1Dw|2AoV z4Y&S1N18+2tHkTyPxJTg;QoIoPyarfy8jG+kKtY;?-JqPuJ-W#Wb*zI?%xh=xfs5` z$@d0z{XA*Dg1_6L%rB&YK5q@_eu;cz{`Bw1=;No5 z{s#5v-_PUz1Khts-Csw&>!DpA(`fI9lIGLMf0wY=HNyWs?swCkCn@tQDeGIwyF%LE zA^bFde-8Km$=`2VP5$#AN&k(6{agOxzyCSZDgQ@>c6}c1FD31V5Z5N{UBZ6~cZ)uK z9qwPEPW^j|c0C*NbV8YD$oEG6{vmPyOXzpu$?Z3zoG&N*qe%a5zOUi$=lS~<{{DSv z%a4$Mnbf~W+25}I;GdBG)5Dmy2>&kH@NJ}jl=%4XyKsLsfA1pTXGrsPeBXlq9i;m? zzTZn7-$hw>`F;`QeIwyN!uJCHH;SaDb(?4g#Q=(HUIsK;QzCs z>|2y~gRpl~&d-wP7xCYuAK%RPk16Lr5Z?Uv?ZNXG_}(M#t>pa=4q`w~0pQns3 zA?#=P>fcKt{6*6IIPPyF?8_|1e}13(KAP}<&Nu#h4tEdFD&McBy}uRO{>zl{an$*t zg#Ah=S9wko{$>2>-;eUQK-@<*;$IGBe>mlQA?d!K{5Ns`cYNP#x%}tjN%uvR|8s=L ze?8KFCS`po-yYxBG|GJsVb91P`uaS1e}%la2+s-s-|>HUDC@&;>)$6($CK3kn$RW> zt$#Pk_dMl&2xaKsuk-yQcP5_`%F4<6Ii&ly{C#pr_w`|n^5Fjv(!PN@zc+-dhz{lM z0Ec7JY~g<=<-CLMGo<}g!WT&YyN&c;i~oO8#_;dssZaktE~NQQ;=hc)l<-~%`+Um& zcFO%u!oP{I->2-)3T^t^eE(a*|0Us{z~5gd-y_tke|PY|m%kh2eHY(-XzN9 z`vZKxjeOroo=+zIW!#^y1pIp$|ChVdeqTr0PbGdal>hhf{|0IPEZ?_EE9V`7RK5C%E54nO{%bJ^p@{ z^naVbPhz~kkvx6eKSjHKETrAU|2ThtK-g;t`yI;ptJM3Ygk7SX`0t+)e~0|LgzMkG z#(#sfzd)WF9yIm)A>_Rn=J<7?E+zO_^61|;P|iQ4j334SB7Z4=pC9V`aMFKg==(n* z?cWP|p5ps=@&CX4JxSiJQ2w`(_9yW#@%Kleu3zT+M*e<)JYPuo_mSrZDE}Kn9T&*^ zg|y*vDEmL*et~lS9e?j9%@>gVe+Xr@aQ`CiGo<+jzF$q6|0?7o%Kkkb%6*LRzemVN zQK$ZW1L5x@-{+C<9gN?X68{B+y_fIrQqEo|=Z^_{4)-sR?`@vdem@caCy+NK?b~s` zj?m}%-XXpIeF|m15BEn9|CeyTNL~8(!-Rb~<=x`%8h!nA;y#7&UnOsno;g*fo$RPg zvxDL+-le_0yex0!N9n0j{_X&WrI2r2kk%djVl*o5$bFQT<9y^1**HyJd#ZeGn)OC` z);UV^yWMhJdRVti2gNwe(oT1j?~RMm(ZWo`?X1`Bqlg5zU-V zvR4fDy9bj|-brco_%Khe6r)a_Zs!NIp{lGr%tm?I8Fg>xBWuroF&T71QR7jbr=xt( z$wzZy?_`Wqr$Ytf!YViz6_a6^mPd?0KNN8+(J&wNyJgue26IwsK=v4_ao$;Eq!*G? z3m5k{m(xi}EyaEsyjibT+#%$Q{HIQxO-^+*FWEpJdFcE&+Z(5BW;U$kVOExR7;k2L$n>fw9fzzxl|=pSU^33F ztBgHGYiv5y(Na713jiuB#|dN7O0O1U;79JY?%*IF4M*L9MLn~uz)k*m~HN=r3i=>UM~=U)6Y%rgK?&^YB+Q-pg0 zOfq15R1$UE*j}6N=448{`(AuD7z?Hy5-F9Xs=`8Pm((e{`t=MdElve4_lxL^97b{>^tc&ArA2h>oSu0+i0JngYPeZ^8 z_==%GqaM<6b}I*ofvYA4WFdZ(TLH{=C(T9&6G4T|>}))P6yvFEG2PK<_d#bGaHial z67#-4D*EZ2Lw*>{y~Oauho^J(!f5@3i4$Jb>nN^nTRMc6*_f zglbimNvlO2J&=3aY9+1CIX<0ycXE&(`?o!zm5i#z_6zXznNGJH_Out}cgLfw*`~8e z>p*24>n*#T#b}zx15+TDo%6sh?c9*)%cW~XUsC*K<#4MhQk+)7AvTG(wK6vOXVLY<5WW%CQC)RZi>|p(lm7gZUZqMBdz|HTN6NW-+ms&9Da)eXOIKY@x-Z188rim%8`v^>Vq^iUWN%x(A2j zbek=!_O;pmIC*kRTknM2zm+t+43m}u2!>1J`S+v{a%yUX5`)rrRJO1>u>>e6=L z1r$?MwO2;F`$l_`>yzTC`a#ALQb8!zGXA5+Ch7|+DmWgU@Uwp|N6 zC&T6r>CD4P#Vw?fJYx&dwrjK*sRcr6l#xK}zuMB_g@{qZ<2PM~^2Edbz?NrSh)&4u zGG`a8=A<<2UeJ}1mt5s@5*sh&?jIaxDk}rxds>U@r9Q;?4Cyyz+i*W94B9cq+JG2& z7GjM!4Q|a+bc#lBx60k6!i+BrfqlD~LVNm4muk|S>A0=|vGB{r-M+ye@Y z1Pk~MSgWfzIinZtyo2K$kpl>PY?TXd-KQ&%hB;iLlW0aMy^4yv<)Lzf!7|J!{2*?n zob0w-;-X3q=zMnoSd8Gbw4(hBIkvRD*Yqb?E> zjn_n6Dj!6ANDrB4x$HYWyt#KYDqrp`GONzrr`>)w6n`0DL3?Z9^tA^l{REbLIWR4i zkmE38!B>>vFn>l^UL)n-x}>c(MT=t+*Ww%UPoomQVbftaxxqiBQZ}bj&w<^ zR1S$8B)rYs+rm>*6vxBn50kiY>ApSlwqCbU5+JkT8YyCQme@d$KL6iwhEY~nFuBoyV_mG_r^V%;n8df*vgXqs}5%c>qn`(Z4 z%KolInGM(pAt!?mh$D(Ukv~>q&j#5gJ{tbrU^dLhK9YXh)u^mdfCt;q9t&MCntD3@ zD1Qlg6yUjglx{CwTEE^76YitiC<9Q@QoMilBx<*>TzqgUt<^S?{5i!H&^ov2oeR*q zd9PE#Hr&fcyIJ=ok;L~9&n#bCyOOTn-2>*zWI4MjL1%%Z{%%OxXCdaY&0;z0z=e-s zxC)8CT!gehqDHWwSY)As53@dWFyE25*X0Zv6@q8IeXaH6lTW;Z=|1P%^*Stl$xt3{3;KF7NFn%Q-|nf+D^L-AP|x(N4>3-c$_# zAR2G^a3Y>yxjPykN>sHh0g)F6#ga7$H=_)iRai=d^;%@qV%{A@Za617TpgRbxkOFe zI0Sbm%SEqyo1H@3O+OoHEQ=CS!l+L8*L(Sa@Rbsb>3cCQ?_}ni+=k@|WW@3)gI`RR zNAPBlF6)C%7kc{IUd}IS0)o+V5e?C7zl{ANj>#bJrk6AzB}^%!G3gyhq>5vNkUvY; zvXa?GtT|4vjhF$NJ0Vx6o2+cF@V5bu)keoIsI{{NO~S6f0-b@_X}~5cO_0WCk4+?S zBr91Do(i58N1vbmZb57109+U!9K~e6C(d@o$ONdLfrPmLePd-Bpm_qx?jfLi1@OTJ zz=B-}S!?2tfrwl~AV6c9fL}C~i?mhhC*;x<5o5_Rpn|&g@?Q9eXJGs5v!`p{QK-5p zq-YeakqD2vu#b+JI8h0Xn6n^199zkrt72qD6tFCMELh{@$T;ZqU}UPq_a6-(>mkZ0 zMnRefIAf%ysFwtBEFV#;Hdh%mq_9J2YcRAw5WLFl`&8`MKFkLclgP4Sl#Pz+WmYu| z@wrPtQ3>1`utjODq&^U_7_kVArZwB6y%3E6VgYY(RW6E@f#sQQ5iHVP&U7miBJcDx zY#SnZk*BA@IU~BoP*$acy=EFa%*39P*2D!rt}#9_9_1|i450r|DU7c^mkuTpMQM0I z`=c)8u&9@wBx)jFM!BV{RXu1#fXI-mWF>1q3KIqoFTqDZvC{4pQlRW*2%gVX`q&_W zb|^yvQZ&Yeu|welw6Wl{#3~&{sIjVwrXC=+@EKK8dq@e`>Z$~HKr>cE1wOPAZNqcu z<+YYUL%CM{7>s7!7D#SnXwif+Ec6J+QJ=LMB{3^|$x05hxpjy(NY0s^;SFaAWE5F3 zOZzTGU`3iRyNXzyjDR5ut#_1*$~GE{*AlICDIc>D(uzjdHNo&y$QGD-kLgNQ4zrGa zgb)2AiAZ!J%TugseF~lb3Ta1acRJC2&ItI;{ zNYAtl!@Q6{r^II94kU^ewYYImqQ-ZW4`I%kSAzi)ylBR(X2n)jo1*VjRH1nSHI;Q4 zSq{%8^3e*bppGQMJ2ee%sy(&X^e4uHx>baso`uw;B{CG43z$)ZG=%bxb2 zdG%jgI!IRm$$;NAPejvP90+smR}-eqRKF}8Bq!`krjkp~TwcET_ys{mh}#)um8|p3 za`)f~MHL0P8nPQrkcEkNbwZ~Oi8M|OF|{6I1y?ajJ(WXqtsJ6|9zy}e-F&4-Ng!*G zuE|=3Dwr9KabOcydbu`G{ie@Oa>0_hg$PxtZ;louZ-|xCbYkw;M6PC|UdSx(1}!4; zPgPCt#Q}j5kzqg)DxfBblpu7j?Cfl*QWizJggg_%6g3CK>=G||r1S7k)nbLk_Tr`! z#U9k=nP+lHy1~KO8iin)kPSr9L`4he%biMIN-E-jVk(l!+3cqrV7QUPp$5?J;dAb_cIS-^rEz{~}ZF;+?m zPl_PCMrm%Fa$Jk4qz8rno)cx{O2uM72JL_nF2R5ANeVA1SCv9oOQ}TYiIR+L*RddY z<3um6 zrCj~aIPU=rCVzK&)z_;lu1qW{YE%sf3x+vsz%vFo8Z1$H#+`=TqrtxHvjoA2M%ORd zH%qtK<8ZRgbxyC}E?|%FMU{>ezEQgyhyWYmX1u8(=S2op=1hJKddwbDG)rhki(KCG zAu^`9&bTXjlR-5hi%({w*g3JyVq^4Xd+Ac(e4EiQC$Mw7a6Ig}GxgG%$ZIsJp2}UP z=;!^tOstMKQ2T1t^F~1)>-^)S)CvWb!koo{3N}yd3^g|;^~+52qOw`j#!}6u<|;;p zL05dUMS-@TKi(no!S#!YqrX_A!EwQKV=`0jjk*YH1+vrif#e`Loy|ZJ*BuJQpT@GL zHElmxkJ^4NQdf(^>WOrY8w#G7?0Bmi6X8V~F%pY4y_S&O>}XHTpxDV&@?0p>qhr16 z--4Am7Fz5=NMao0h)P0jlnrN)eN{;!nxRE zTr3`2O_o{{zl*%FuHIGnE)tjqy(+_0f2x#~{Xve*fT@RcXqvFPiKKBrje=&VPj>qCj-RhxR;RV$5+`2DNfk1up>msdTe-t;EKMA#+U(| z5cwcTbe?@?xag!y!y-13vd$zxnv5CKl!bItrl_W9R&?nWE8-i4sX|Xx!hv)$#)BBf zQ{vii6yd@l)`&ubAwtrH~vzvO(4tY!=RA`xjIDVu(lu zqXA+6#0`+c2Qep7BQt%kLQJ|b?SqP=cD6q>hnVr0K*9si39Bo#IHrLyP?Sj7OU6^l zN8g$T9HfvQaxcSP-K9HZD#!%6=HK&IMpy)vw+N8-ctzHT5Rq>{9D>Z7x67owt?Rl;fcQ0p&L~bCtbSb&izM7tqMB{Lb zlJfj{#5bdb;o)#$kdM#%+B=^Q&JS6bh^-bx>d4M>p|iWdzBs~=q8upw+2j&ad&KWJ zv!7s6A~0h$1EbP2WA8XfpTRg}H+}o&Mq2DjSM#W)-@&rJa-Oc8w% zgj8m^6tmQzA43of$`)eAOY>rgSk~bLv2GMlRxyDcsr(0m$)1%Y^DVdx5q7X@Msjc1QbW-R zU~VA`RV_i@rD{bVIevib2jbHXCkGkJ1d4MsCid z7#JY$NY^-lKnSj#!oOkl?&jk=GR3Cf8XbX6rTZf+NF{BD%h1&jTgqfpUs?Ej26tY3 zLrccxHdk%6Hy7H;4JN?gG(y|!(@4}X$(}$*Ut)(f z#!0gg-55#fXcL1pO=uwTlu?QEk9A&hPH)ziMiZ2&myVEsv(>=*^pe%4q5o>j!?w4R z)$8eVOFLoFR%5y1ZR@w9H#}S;onpXRo+SZ+p!7Q|azsw)8SJP7! z5ot+gd(lg3AemzUwipa$sW3w!tDOm|2?50F0oMA-Y7g_s-feHY*ym(bzcPlA94Yvw zAjuO1eg&}Tv$+E>W~wtA$F^>BgPgA+X7*GjPYki4Nvc}*itWvIdYPHM!&bH0*NHcn zK3v*U1BzY6C{k*6k5{I}U^eBCMq1(E2uTG)2-Gj)(0ctGRU!$tKL8sCI{C zG<~oxfd*2}vsF1|PB>UQHKtNz*d43`4#gCDDPTS*9N~9Ad}cf$qd+s^P^a`8=hA%P zU?DwiraE91Rc`GB+j_!${Pbz2+4`VZHVO%NohKmT<%x(tA+^gBNY*S_rEO4zd^v04 zzZ!oqwgdp0f*gX@VrwgV5uHP}7vrfs&X9w0=m?j<*Uqj~p(cD7Lhcdwl+Qo?egO-H z7tg<-@E2!uoUk3yhv||}NQXAV6SB{kq{|LuRIxPUpEcoW2+*&d_IK1%)tQ2kad*>SPb34W{|iNHGDw**9V51jK*jj+FG@Mi`5}6_dos^9Ra@4;&?!P zhRgjMW>D_#!>qUOXTyS@jX7ikV$hrji#yS^1U*WlIMy=YS1q ziB45kSQ*hjt9H6?LpB46MEh<&A_B^Ywqz}Xr)SJB!vGBMi9t+FmZ)JjJCrbvtgVIA zr%~1}tisvU7`SjAbpIi99iqY&5_z>59fi-8UWW!vrTa@@?~W#z$l!qe z(@(WYUy}PE72}iTc-8_@ECeu9a+oLXpcMsTH(v_vHos}y~(Yucb z2=_}}epm}8`=BqbTbdUJj4I(KmSmW8xaTSxsJm*_r={|x;Zg2(U38`IXBN9U^Py4) z8a2M6KCiHngY#KNgcSJhrnVlFHHiO1e!D{+mORj3Q0>ZPdT1O6jH26_Xx3)9)))nH zoMmT2CSr78)0kc>K(x(k^V=W*5cismT2av4X;QuN!hxd;)NahCZwEUir`9oFA%mF7 zLv+B3jTU=B<34IYN=lo)7}s@G10YknZGeVknWcv1|G{)g0=P3J2u zzziYHWl(oH+lA1*j42?6Uk=;?m=s8Eh_kDh4&hi7UB*!Az%sy5p;*6+Q486-yI2EZ z42Fw|b{+iXUV*-kD;7jim&xUV|FHn>@hMnPEQFy#&D}PMZS)2CZD1zd=pFN`%OgMo zD=S*T*fFm9+-g`Defn7oqF35LY*FAEWEc|irLj8H1!54ZWlAP(rydAplm}`ZYRwKQ zh@cL!l|`i?)o@>jWjtmH4xJKCFd9b28j)`B{|Pqd^9ynQ^C8LsVb3oqh@=m!=dY$k zu_OwFX+x+m!H^bbUq4WJXmD`>fTadh+9Us+lCoO36o|wb?d_k|GNOQNLg100=E~0I zhW*G|%?{|W?QXhN9N`cMGiKrqF6l}J8=qVOowYdF2c17Y?Bm6(_=;`e;Zy31sMj|R zLlT>NmvoXchQ$=xcjiUi#&#Upsmj3_PUzy>9kGAZ#%)iw*3S|u1jL8?1N4*L+<~0K za7CVc^fX_DAwwY~oM5HE*z9uhXn-;Ff#{CNW-TUHx-Hfs%23AmO82I$5RY(xwzmBq z0XzqX{8)_gGI`NAWRt1c${1{$?GrrO#Sp;T|dWKjAGe!4GGn#oQh6$UmzscWkWv3 zIBlE{AyP>ik8WvkI5`JY@Q;h^v4K{M7m&OeW%0TPCJnmhx1PS4B#O;b1c8oCoY8 z&p$T}@z6xdAoZm$5L*8yHk+`6CN!$U5ta@L@o;LL0GS*@n>BBEXt)JwJ@9l+yBbS$ z03rlav-^eH8rG%x&h0L(N|?LOcF&0m|1gU)H>oiEwWv=U3Q~A!;%u(95aK`ys8mu! z_N-3#3n-$=Gv(`4xF%J>$Ha=U5TP?RJzG6!pagvEP2{=^hM`jsbbym-rm1DJPjAfL z6&xnXGYNGoQmlq`HDd;*w$0|!Okk^wJm+*o?P z?SKz9VIl4Ns*5>I3>9_-i1&w61XcA{>Z(6+Nmc;1!Z}Fnz~;s+g+y3b=dHi@OBMR( zSNmPRbY&qu!>&0pzC@ZdzJY+05feVr%u!fRV`*0yZtW0W>}I~Wb;r>TD&g+`)Rk(pGd(X1$Nt@DC2 z+*;9%lBywqX?L?WTj2l@;?6o(JZTm1Yn5w)097VJnlVdFlSMx>W5PeRxMdw4{hTof zQglUw2oOs`%**@)vO_uuNC0kd>JAtNz?Z>nKRL%w{fO?;J-Q@VLZjf$1YxMy>07k@-{dl7_GNKS}V~+ z`6Z2bCcBs2I<#w4FuosRBh`h6$a+sF&*X!njNfn))W?hU8_vS&0I%pFhoA)|9OOOS zNx-qr67Nxpjf{bpd5|uF?ffD|MXq16;EjB6z|lyB*ilP4uIo6H1x-^?lBo-k*A|*_ z63L~TBa>&k$V;B-q8q2;#JC0jm2Jpkx~WSvMJ!APzB`{P9}V$l3%r%ZNm!SnusX!8J#e->np2!2EEYMP1x6|sKMUTS7plcTRGhW|OW2qt4RRnn> z5{`9zb^|j7U6_jFPO<^5J>DvY6NGPgxO4~M$_7*))}9Cw6o%Vwm!Y9~2?<#w8(2f= z>?>bH0^G@gIgr-JA+P`xZ*(zI(v1z{92VR!+tN|q;Ea;9#w}d6Ge|ZY0kk^i6iXkZ zzo9G(G45gKki)iWub6qiva5F1nW{;Q(`nn?2BseziMvJaf&Zk}w>Qie%?EC=o)wFo z^AWNvbNV^T;1>7dp+N1l_A8J?GS=2%9mCLe04;C@tdgfgUfqFI6CoDJxTDOuizLrZ zGi*Td5CX`wTstSq&3P2F67)eJ`Vu%)+o|&7-H~O7yIbJ`9E)g~;6q7TFkkld1AXS) z5>IZf_GH)XVBC8hDytcwm7W1aTzc7HR+UpR;f(IwIFaWjY-2RkMz*>QNLysz+{h#6 z;l!?j+Q7=3vKAJIXDjUm^Dp->Xb^=ME|4SavvSN9T8tY;Go-*LE%?o9))l)z!6>Yhkchmtm1e zDOuXn2sjDfS2x?2lg(@|EA*SgfOJ8vJAmyPG+RDOpPw8Q=xlCJq1H_VvIiNG+!47B z&~t7gldvC`&Eo83ce?gD5<`O@W(SbNVZqRTu12war6-_d3)ZpHaLN^K&kbf+Fqjy! z!2t&Vloq&ip$LNtfCXGx>~(F^cG1D1)>U27f-0h~kPg+|t;Xw%lZs}rCQw4u6w*l` zQF5Y=M!D=87Nbx>Lyis7R4!}5gN3qwkzZe9a~z!w9^`U^;I;?NG7M{;o9Z`RVSr=;gVI2wVdJtKgn)Wu4JIP|$%RxTr3BtRw{wo2UD z#o}}`yITouoOx1j?nWjKKpi0=$nWZGxE7t_WDvm6)7^N9D1x!+h;Wsthj;svetNY! zrM<=Qu`tal$QoerMoE`4m1X(t9${{vA}xyh4MdP^Vidz)0ePNm!sc-}&mG)55gA;* z@d%Nh_eaEPXI4#KTB#d0bupmsr)5-fw%==`Z5dFgxQ5TLzJ-L_{II5r+SvKQcK?$w zx3WIsrJ>mp`+AE01o?OPN;K}9e7kwKw**HbsdUIIAITy|RxHM@M_rdhai}ubt}Q>a z;w3Xrx~5yx6avIA;9(C+qn)z*OgmRFH%u^({$~h8pX%Z zXiU_R(JVNaDE3)CccJr>&F&sI@=5w}E?ol%-SW*O+EV5dk8IBf)lDF0K5R}!G+>jZ zBG|03F*9cxP7ScGmI&iX9pVcD(Y4tX6-XGDk8u=skn5)0NXJH=)TnH~q0wXn(PmH5 z#vq6GvunXq-s`=xNghLKpW1q zA?s7HqtM!wZh#jdS2m%v`|Q0}ufg`x+w|(S9ly>#xtf9A^rP+c4(bi3FhOX6zEosa z3gfHn6O-g>{`MVyhFOnaZAOyNmrXa4FdhmJxkv)Gd@SLYp(Kqcu0mFp0Iu6ns3Cf} z86}1J9^7R!7)*@)Bcjjg!1-mgF@Fhcu;K5j@M)ykH|y!Sk%l3OfmywUMRdWn70w93 zHm6*vcOLmP=Ad z)W}SqA6Bv@U8k99o~`U^-mLO?mr#AFE)^6&E_ai%>oB!4Gh!(big z9blSQD?*-XoNY3+K4JBn0 zxk5`Tk|c^*rF!$sEX-BJq&o6f-_Q3L`$fUCDZO}0 zg}mB>2k2J%(afX@gXxo9S;Yhrp#ub0A!3*I5iOW&*^D2|*?6nT{3uhodQDOYTY!z5 zhcw{g#P~H<5?FGLG|!0OgtbzN+kT|ZIlQE1^rBsbK(Hb*DmD;|8ef*EvjjViMj=vw z2X8QwjH}F)!Ih0RONcsV)qK~Q#u+Y2PJ%$$MB&i!!7GwKpqLOM$^b;*Oj59G5GXP) zP}TA1-=oR3J=j_O7CKmX&6d3=UMYy>)rqZZ?AIcg2WpY_ zcApq4a+5L6BqaAlu?{OQdLo|{q)epjqj*4tZWk1p87Dr7QnOKUvdS-0lfc7no|BoT z9Z4j!QqDng9u9dwE#3^4Au->vcyQKq5^)94;f%D9ja{IRs=c!BBT&!k_`d83%fqg; zB_UV62W#)pVHoQ{B3vni+ce{_Kp{}mc`hPFjdwmk_XtXzDse59`0`E~ZUvEigg#Lj zNC9C>+ZsxMw)ZlAtpTU-jt(+R6bye%c|`AWIaLUg?Py}6BmbQu|1Eq9tnFqs6UU0S z58w&(K$-}up-wne=XZw)Jd}Jf+2R?CX@yY)kBTr`NVZm&wig%0UfN=3uSj%N$|V$1 z65;5WnhRhRy6Uf*Fg7rmnI+uvi#yN-nOEua&iUDdSGE$JTQeh6IsEP?xhnYA4lE!P zXLYmBnP{DEr+w869=O5_9=K!x&8OB6)INKrgE%w%;~UMy<-|%{38!B0ke?Sk_*9C& zt!wS|w?kML#&I|g%L#Q8YOSJ>TqsAn2M1vR&Ml-$t(i!&=_pstOU;& zQhIGoFte2E+bu9LsAUU&XQE$3qlj9dly_KQc6sVKZd2WxaD$DyOqIY(Hsoyp@kYV0 zbjukERXuXn-?;s)paUZ~JWl60fV001F`8NtqAQVk9aNd42r-2FgQpimBfk+&wxtKE zy(&lZG=~ zL=gjfJ!uJ^Rzd^8;-=?v4-*i>c_U5+|C&)ZKn4*sB011(Gf^kUu+Hf5I*~Oe6kN_) zT9eG*9BT?H2xRt=4J2D!7}y;S5&Fojn;z^pimA-BhZwFs$K;D<2S=c2k}cjzV|-Wz zh)id#iHYPq`2==?bSNsJs^blU7!c?Y$Pg?7N83PO@+#YnGdnDKEP<^6L58*KS)n{aUl zG(KowZ6yLCynigA5v5JKxuQX0hs2Rs5$qn^yP};;&Fk$Q?gPT`-kAthrTxSh zCW^I;@wv<}07g8`j$bg+qR)J6K`VS2TBc3WaD!r`6{ps-BKs2^cA zW3$6nrxPXIy2gy5r;@r{^vhXGKbUYfi08~?eu53O(6uJklozM46GShjrF-85oO_&3 z@#fu8dj74#I#71x4H62JzVI;M>-vf)F=Di>xuaIe=`rpyoHE#sZyC6)Shcw*dmu|m zj;#sW&ghWv0$T)*$0CUIMp^=Q%DhWS?IpLUt|Gu62eU2N!G$otd%1b6gfP&)0fFMj z2xlXZyFP=LCy=U*Fq&>|^3{INjTX^#zm7LLCZs^Cy;4CQ1rg#C0g^=BbJMhOZzEO4HcX>+pOUP>FyIK$NMcE@LvZIs30X=V8e zY~V+mYvuy0c9Ew!H(0$M=){7%Ma>(8ah!FSFe%7SI{SDF%3th|7z4eKzo>0cMVAIw(86#yI_pg5{H}= z2~!6`P@|p`_kEXNA$j&ZQTV|oT7kM!P8COYI3W?eqFHeF(W zRdI-%(=*|UoI7{!EaZL|b^)7=^C*2g`B~42wp|4v+7aYNw=TH?aQ*hahCv%DygBj> z4UQF|DQLQlUUPM1P>%sz>ZEdLYnll)l4(d!UFR6nD5TOnqTlHqwYcv?XhwQ!J2Mxo z&fO#z-ap-rXYq^;l8qgxBxF(77%iAt&uowkYY~uBg})3A1m%^8Ow5+Jk)~8reF^V= z%+H`F@E$J5NvYRl1z%T($uR;U5$)Yzo!a7_6o@Z9+RLizqmJ3rY=fpAea6heYHe=bzJ(J6WDu~TL`a*oq;5s`!7&$ia4 zAb~JUB89&E8_6aVFQ83A^?|)=p8X4fR7j+eRMrZm468;?CVeV}2#pAel|lvteqZDb z);@&rhkDa(9Q3#9Vza+NV1syu z#xlDg4i=`Y@U{y?j@w+}t|R!{>;%MIc=EC6G$mjNb~PXm*e2UN-ymKkD4T6yc_V_8 zhJoi_(R-gocp;;~1c&IFy$w2|#7=2X^A~fN?e^x@R(1P_&L=S)fdlu8PF$^xUM3Awrv8 zaJ?Cm07)V1<`F@Yjvnmd=_M5aX4Q`)b#txNhnmbEfyX>59V=E2eR#H-ewe}r{sv@y zH;#bXXkuYBv$2?qpjCxgU``dbU{whl&bhR;zIL$<(*Ti70a3(Ihg713woWZTL~=&< zri_O8)*l2aFn2()ho%vAxOb6YJFp|ojMA6~(Jo_L``i|t?!ur{Il_H=E(fYI`dHLi zjWn3e$(`IW1Ik6!1(rs3uR9=+$HX{8(8H?nrub2fW|vkq z7h}_^B*7hocMu$F5@FC7W7}>O$$_{$oM>|9Mfy1+bXtIW76dRuvE&NlIFT%Kl+ADs z*aUm>&r32 zcGk^04L&k9$VDGhC0N1p+hkEQZL)P>7ITm;j0vP<=!L}$;ZcMTuuupV%~shyFMvbU zV*3waD`U$x5)Q3u@t;7dgmoUql}6?e0o<_pB)y)bR8+~GPAQHdi%=5uHumj82KI48 zq)owXPYBh$KS9@kkM*1GFqTR$w~@AYuo%LG&zXt__Z4n(47P~T$5D;Sa4LqWNU&~y zsP396nZQ(i0s&6h*=xtKsmZvDLKjfD!L2AY$F#s(DN}eCL$eS1aiY@NYm267P3Tf^ zn`D;4==k+X@rEVs>ViogX~C#SGtfM@;gy}TMsuKnf{fq|l>+ndj#@ntkiz|Ewjg}s zjVAYEPk;oDH8M)~Se`aZwpt1od^hqjiZDaN<~vV%NkuONIKc5tv}jcTjowPlbz`r?^#6SH_7b2|SR;1#k%TN)TtWs-TUHSM#e^lJ;SD zcNd~X0;*{!GcqUkk6}10Bu_h#1LCgjf*|>%xd^ifWhPt*CuxRtMm+Q-K*9X#7M#0w zCi@Xi#nPb$npxY6csF3U9Sl0Tw9V0wBV!3UO4te8ueFvJ+U<%Uzu?d7HqCx;nn=dP znFdw<_6mMB2w7x@R1RL+zi&++jZs%p4&?LVL`WJ=eFvW={8V@m8X=IpvP1~6Zfy`e zKu#oxRVqFkBfjC>K?sG+*H-IEd?GQCkXfqEjJJ7(gku8!5h^lfj|ajI4rPt4UKxL` zN2M^`iXuD|x2O)e?Imf85X;hy+_pai$ACM5QR7m%8j==!eFb*8P3ajZnAYhvw)QQ! z=7xwlY4@=DyCocp!`@ltVGC{TgMzog4V_CD(olpn-3&+LKAkuw%^)8bg>=B`JSylp z#PLD9iiQO2?=X6{^gsoOJ}d1t7nQ?;(Kb+cnZ7RFDzNUx2b9}(*$~&5Ezz{!p5_X7 z_z}%ITC#VHC_tV$Zx`_xp2vmzPYjm{K0FknwsS`uOf<2!;2BkX8)_Ex>z8=7xkfi< z8$&iQ&~M*J~C@DuX&D*tZe0=qK$7|L@k4&x)&$7;<7tZ6$(M3Lo*8qacxRO4A5`m+xW$ zZMxKoj1vX~AqaN3BomdSZA&q~E+(>TRXH)L*PfC42eaz<-RJ5YXs;6Z1UWw8o@+<+RN0KO*dA%ws;U5&5Br^TQ7oMXV|Bi z6=*S&k}ZlkA>71}#SM7*<>C#C)b~98QUsX?3&&Iegqt5M%MMS3nPVnxkk78J zj1jPNL=&8N#1#Xx!L8fwZH zTPtGNq~b}uU?zO66>g|p@q^J3kZR>Mgu2sy&TXjdkd_UQyAaB(7=;Wr2q8nWN05?G zf)r+JM9cx!)2L8!bs_u0=Ujyk1dRTg*G~2l2EwIOxI54Vg`XtCc~63rb7rbQS7Xn} zNID&U+Cd1-PcL^X^gyNWpcl3^WP5zjxhPPLltQE7X5Jb;*R-5DRbJ_yD$k!PH;Pki zm#^#O2TuVtN{C!I5NkpY0oh2{L@W}gC0IIl*{vcwhsn-i*5wM}^>*ux7qPRF*Jg4D zpq4?U=<`aiKSOjWO}vE17oo&Bkf^eK1L0V_HYvZ~226#)una@M`J7>q&3i>1MvDep z^vbxt+1BkS2Q0v7d;;kvVuJmEZ9J6kc7o2=hx_`30y*|khIdEYRKi=+*!33|(>*3Y z?R7PT;f1oHGq?8JvrAj6E7-z3U?irEam0q3LNMYFn1cF2`xISpr8^ex5W5(zij6D? z7`B4at;D?9eB>by5%+WrgTyBbR0gV~a72M>Y` zj;L2#J&>xidd3-{jOIKBqswJGnlc1tlD}$A?IY?1e^f&wjkv5;b;r}LHnQqkOl36D z3e6~;N3uy|A~Nv>>=-7=uo_NCSW2E*r)8U~N)2T(4TE@m(&8#*dgB@kCV_LFP%tJO zG);>-z(y~gz{m{2MFpawN8Bzg&ar?&oDtR0e$#oPV-o66%bj~B3H{`G4u40bkg=YT zSPcU@#`|h9X!$zU!%Q+(Rs(dHl1dFqAR4TVkn(nKiTAn^Mj2&NP3+YAF%h7Tx}EEr z!fUlfnpOvgq69>b`N6-1RD%~TN0O0WeP_Nf>S#1UR20x*qY{+>w$LRw)v=;}I6??_ z11E>jRtF4C{i_p(Tv4K$j2l)SJsv{;CEjNIxa!d^ZnN6Qq_e{pLPf&9;4c?qP^%@M zT7XgR5ZSuRgUQzAXuEC3Rp55JgD4Warc}5&JQzki?QP>tG-P6~002toDB#%P3~LCd zAdX@1be{D9=7Z5-v<&-jHWomy>`Z~Ay4d?v#3 zu?(lhb(e+HyERnBYq=I4d1Oa3!~d)^4x4bl#~1*$snZOFIjAuWgM&S-Z0-@XqKPX4 z*oZDv#oBZ1kiB3)>yI!M)I5c6Fd}`M5#Zo1FpgQh`K4Wu-F6BSY1s6@i(R4t)@Oe;IeNCcoir5d(6UNSjz@{gK zc046s(G+%F?Ya~-j#(z%F+`k}f2UII{=e==_sd+s^v(-Lvg z@0Zr(*Y`oFF1(#t91XH0q6gajYFBM+rsI{Vj4YOPcTyf5Lnt8+WCz@0WWNQZ(@hV& zYe-!g?du5*5b)WW5)N`wtrb(l06T1vzCA`-wQu)2Y1%AFoI*tJy2VXd1_a*iE6({_wKKR36*$k1v>zigES6%^LBlj62XEoXn7oNKL9uqe|5UW&-_U zXNE+@Uq7_f5E&LqfEYFD@U-1L*+5Cq7YGIW)}A_HkhM3EvTCa15pc86!@g#x)PgkK z2nQX(Z5F8cMp14i^-;g3Jw@xuFqbb^TgY*GPO%9_LDf@+?n3Q<(!$EBG-{8-4oBTM zHYpVDLWS515diQUK?wz-7D6|m3|QTHwn$mg)ae{1^HCl{AA)ERLtes+@WpZau@WjW z&T4&id8!jE%5!4dDy@Zqssp>-x~i>{en;@1KNjCmYFQ)e!Aw9YFZ|BgAl74XVt`7Q2c4|{UHHKCBzH8V@ zJm7X*XFyO1FNkS9hkdgiqP35Z0ivDFm=Rhe4qqUGvtENXJ| z;~7F@ZhJ-f#B!UXF*k7qgP^i{>;l36Fttt<#1zh)$GT5ZOmXAbQN24vIY|kgQGcrQ zM@9*re6t|sH8yX2_f3jqP)Db%OqU7Nhi6LDip1DTfCEd1h*;PeQa&Ez9}yxG4mhb$ z+WphtLo=flJ)0O=ErtnGMRUFy_R=iJV`^-9!B589h=ui&oJjG)S`qGtQ#p{adurB2 z2QUO^m_C^N#?8k!ib6T(OsYr2xR6s!qdf^E={xM9ZybRndFToShxX7t4TckqMwwRN|}bMRp<9jM|R%#aVP^X6HUE&@bBq~rHf zILlV$@iJqNWIlW0O^+>LWgRBpuwaw1nF<#dV9hXG1>Iq?Q=sbpsX{}I=WyJGz1sb= z6gsXM4gyc7)U_P8mVvE)CbkhHcc{le#Y1hx>!@Pm9LT(9k;0FtU}~v0lEe;j;kFq; zIIH2i%l74E?Dg(yS@kpSR2B^qjF8jQpL*fq<8R3JPsc`+#u(j59vNrF>eIn*7mo-B ziX?KG@nt;}fKUS^pmEs{_E>*bJX1JzD(c&%KeDT;=A4x$j@^jKz)YhO5r)Z+74NOr z1?W0%6UPim^I-rWFASRu-_9^ZL;!ROfqr1_=k1+zB$5Ey_w~vWf_e$S7|2M2ia~_C zkV>6~1v!xMqKLx6xcR(P%o{=v zgs{OXRsuBpp-N#vTEmut$bgG3v6wR%g0R1IQ3r7wh|pdu7ivb13(wIW^L}kLw{8bo z!(9z=Hbcpd%ps%`LRMfu$ZTNV*+t#w^W^T*><4A*T3J51+~gL5*G8bdpHwRiPI_4UDK%Hy0Krn4bf1h#Yzx)?(I-5Zu$9lFnZk)EhuKEvNd~0;}7*nR8in^^Fzu z_EJhfE53dNYr*=@2G;HY-*!8Dnd)OhPZL7ke!Q8-?vFdiVIVALboGz5VFe0u#G_$n zwpM^9E`RbjlJ#)W-dVjqukB78zYb3`q$*j;${n8d<>wYB7AAaoEdY)e2NoIp1{N!t zo+Gox{xRjXg-EKIiVT8~H@5@~2)MXoPqZc@N}_HDd6qzChX+_x(Fmalt=q@=j1i_r zEWvfJ-p*u18|{O2Y~yl)H=*+)4z(a-B?TWIa0ErJaCL0~6&4<1+L;Kxk{z9bwH>&fnsaY_-c}~WuL?^^MNj$gw zFnPzu)?1)=JM^&0Lb}7`*)><7X@Ml$?tT}>P1y5T!4>E*(kDFZcr1?{cD~;TjY;8` zn#^{m!{dEn3lM|aY>;bEZ0!8ih`MQ^BUbMTStLG~6LpGLX$8#l%W4cqsC{aRSc+^y zy2z#n<4_O7ytEIBKcRgQ%#MLfqmJWaXwOGmR=bkoewiCxINk&#jUZewd3gD>8l`4$ za(@RgE&IDpy-Y{?B@xX_$AY@7F<@?oqiK*ird={6_0aT;nU!E1k7gZG5LD21tgq9t zLayN%$`gw?77;;GRA1y^>)EynPKIbn8|v1b(PRlVojDt9zM+KbvSt!LAfW*F_I^1k zSj2OuhFiF#%|Vi7nDXIpeU*9svbT*9FjF|*e^hVKTVRxQW@&3Z-E=z^3|0(hSW*$$A<2sK zp>tDJO7|dwvYp-wkRabyC(Rm$^BC&Bs7VJaQzsBondUd$>1wovO0FAxhL2@+fL&uC zV<=qnQgyd>3{(?>JE|?bEbwiW*cQBI-#E+w(?hhJOioQHb7(<*8)`=hA7O0-WewCM zUKj)k-6MpQzHn`8XZ_mM_KPwFzmAH0#kWR9njc!x zzF2T++|I`#mAIicGSD_;R&7xA zyg}2*L4i_hHNuA=sH#{JFUbIbZW=+A-r_cjUDNbH+N&aQ6*?^^kCIjnpPXs7!D~{o zI)j!Xd2Of=i^i?P^x34kx0?s!N*75-3jsGIz=~8{_=(c$MT>G)KbhKVz^}Q}xdwh!-@op{}`bCvbv5E11=(V z(>99`M}CWYp>O0pXiItR>r`6w>3u!iNQt=IuyFN6GQZ@8jJBqbo*VbE zx`P5S&2$B#tmAZu$kNk$!8go>pWCd(8Pf@7>^&3-Y>|5jNinC(7|}lW{ogRP2eKdT z*_7q3B&c={ki`Lo5ZWOG?e*I69u$q$wLNzjCl#(!CPNlL&WO0j&&O)SpmBA0O(<1u zug}!`QCjA>+rh>QkXvcDSyS3*JqQ*zB3@2)BtMs(9>FK% zd_Zz;Hi86%9^z(6W}1~H@W(IE@RXUsruDZD-iS1#<8$DA=<8Q1MpDnm4i zv6V%4nLPhI|LZ5?vaCl9j-N-J$#Q*O7Y*=BnjE>odbmIQd7#=2R9JBJbqnm2{+2Ol z<~~WJz0FTf5+q}0)&9U#4=T$gK?q*O&w!|zK09f5VgtjK5yx|!+>{`gctC?gss}XK z6eM1ffdAE`wlod7VXh-x-(m*V+WI|HG&yUWznzIO>nD%^@^QG9 zDKqz~2)|if>YeJ5;>sMz)f+5t(dI(#Ldf+!)WR?|V$=SuzQ8<+jJ3W%;)KH#${nDr zW+FhBey;&rmB#%+1!xN~+BQ_Aw$G_2EE8u+yh$gd3@v&UDXXeu8&4?lcBQ7QJ7i4^ z=A>o}&k0X2#$tkHBE!rW2~BB~rzXqk`7r(l*MPr)1Ox2X8BV1Kfj#obWv0t#4Dm#` zDo@743N;xsTG?Qa%<%I+=t$=dtz4QR#oyv1ybkk7csbZlU5W-~mw}p@rfzdYGv|z? z&_xzuV0GMI6JV;p>b674P3DE0Rd^$P6odo8m!RD^C+f%fbR>sPu(l!J?4HVIX^mXs zI)W8&BLx~3uD)WQ(>O;XyztZso!4T7S5O^|cvtf@N{MSL>=&-wA}4aM^`TsD$MV;a+Ob3$Kq?A+*ZfW>-JuR8;fs4CU)n;x2h6kUqO z*W?HlB)Rz+hX)K53nLm(>m;m9+8XuFPw9AkPBP87wv1RL%ivX{a!KHvgtkn=W6t!2 z#R^&6ZzMF!Z@=XRhEorRaYI#w;O)W~Fv>09)2oA;zzqIFq359-s^R-LZ`9b1W3%)3ZI z26ikZ;;OoZD7~y#c3I<*S|8t6b_`RcUXWscU+Wgm~ec9ldj} zW_+3vJCM)B>Lurw7p(Af`@7lh9sFFze3ZO!MRuCHAr&G?$E9CPUf@7r&Sz`tCMN=P z%}Fz9+L{+8UQ3+#+zc@i8QKd$_Kzzt?wTD**Io$o@nUjwNk@N6eS2F_vACA8UfR&r zHObADjrHVaBwujZW|rJsg_Kp|K zR!?}Nw9k*-)E_8pn#PqM#vQ~MQ@>)7N~6u-h=+HXR>W$Y*zh3-ztV3vo+qMl*JBKm z1d`g~TMEW}7#o2-nAk3@m_7uk31SlnG3}bsm?y!)NW@U0Y)Qq+uo}(Wj%+wtln02$ zl-BUUi_tXlb!OHiJbES9(Ass4&Ah z0n=Lnc5aPTKLWLo^!tf6{e+`}W_wuA0zv-1U*qMI#G~nhA(w_P8f!)Sr_-m()9IN& zcH2l`aM;WqGwh?E(O|TOg;1~2iHoVS&r7XdOBMQnWcE1eytHDBoTCx`7atYW01a*t ziIDDj5BS0*?qDP+p>csVYQn`Dnmi#AUG$1@INmsw=rl1DarGRR2ar=o@Hl=vBLNdw zQvcYK8Q$f7tzl)uS;tq#(3OO`EED9x887$+J4m1YhC&q*OZP??ooDPsQ0b*(uIh2B zRV!fBPmqMdOLzD-v<&zJ8H9=^ar!v9y`rmgxPZ8EqALMSJD25r304h~;X)}&rU;Uh zFs`-UX$1wtVmch(T;6_!n=!bXr?n}yW@~wJP;&RK>=JH&h6s~#fjhf8`2u&hJ+gIe zr?n!96$Doce1`7e;$x3J+0y?P(hH9*zTt`2KSl@%5gp1>b~@dKi>-@KrWfA0_=d+? zmTm*td}}9Y^mVh|#snsG4OusKeB91?kE6jw`esgNk(-#A-X@-_|OIvZ6B=(1V$+kzwuBcB|9f*=>A9l;Kaix%jgqcDJJz>PsnCF$zZHZ84Q(E+X z(S@|vJ;?*L0e~ujYbYI!;{oUM3#3*LP8l%MyPF+U(Z~@fR(NJ{ z@LSe#m#{MmId$r6!Y06+Nz);x`UV8BsZBMNk6)397pcbh73ex^8o~{B<@c!XlmnCjWbdUm-AXZFrj2OJc*M|S1%n@Cw5e|k>nGP& zP?xj|6x%{n0ghmDHCRx53`k3FDwu2CZ4MRd5BMnhnPvTM+V3?+HG9t=<}4B63K<~} z-t+FFB^`yZX@*CjVuqCR*jSel0JD*b+JSarU@2hS?FUUf5v(i;fg6@Z;XQ2_$Zdbjg?DHl+`FJ(QT1L44fHZgb=_7(C1 z#uEV}iOc+8qU{n<=qs?!8P^_86}g~uM%;6(R=suwz#F|bYR zs)f7pp`oIftn(&-YcJ9S-L z-Mse-ld*Bx%*`(UYeS!Qn-m_NKvvWj$-+ZwMT|1ZE20w_5+0Zt8K62FOSUSO8CgtM zxfnt!N|CWV$*iGMHLHQj*EsZs$LIlN*|01M|Z_Jp=t zG>@B@L5z9YY9%d{kS*@Y-JKky$Nq8IxcEVj<>Ch{4}!8-TrilKSf|M;?rhTHV$@cP z>t0`Yi)cL_z3JsI#zMmd@(}4J@`o%(St4qsN?PAdL{Wz-$_TPpK>amVucFwJR!?a~ zx3pANStrD`L9kbtvZpnKsh(RD0Gj7TmRUcA6*56lPFjN>WvA|}OWWpd#O z-tuBu0kAQSH|{;o9=lhfI*pzZSIC=r3K>%s76C*gl1a7!tOSzly19y7Rsbw$Eujhg zVa``b9M(2y&GeIOf}|Izi?&-w)S$?*f|(H7SQpyP@&TlB#}3eBzFq4W475gk5?;$e zYg}d(R4EOFwtYzmbhU!-QVZ!d*t^@J13W3l=X|F*rx}=;M1jh&fy1k zwc_oXtmCDCZvArp555S{8OUY20X7N{JDK<8SWC`Xb3?G+*kOLS$Lkz>g!(bvcWux$ z9B7TQ)-}vL?fSrOhgSxwo@1Tq1w2&GLn-r`?NJZW@`s(cSb+v+dc>I1V;-#(y$Rk7(_)EXZ8&F= z@1Re>Ak)&H-`Y%M&ANUmS#n}i*PUxI>4gf>5fx(~Taty7QfXW7vPLaU&>3jQ0=l5X zAnV#jSyo;P6g_)@&7FYN0%ThT{-FbbW*^nAc;z02Vmt!D#t3oZs!D0~`bvA|fo7_kvE;PCh*)jsuBvl%v2A3iT3(S~P%Oaw*Yv=;> z_lsP~A`nFK!T<_FRj|vMN9VgvF1AVBva8sY2Tt48oe2#VS+CblwT~<$t6`&Ypwu3_ zRK4e_v1aFmoKSffhQ5R#5f^l;WR&7b3`;^^0BNv;HjDesBIri4H247ggi79Ly{R|? z*I|3vj_sOH6DsG)nzl<;qfh$gd&h-#=Q_lb%`m^o`r!Q(-bf~)`IP_t<4La>;N{Sq z-tN2f1`V&Gy_e;mEDaIJu%?n)|FD=CoH|U}4ULvm zhOiLgE|eJ3O%6Y$S}v6iKs=nL@g4L0TBHI1!VmPuU2Mzsv|Eg|>5$GC(ppdrH4W!R zi3%chksw=#mNj$ltTIk30)Cna&UiE$Z4z0-JRZ*%VMU1oQ8HDm9-K*+>;g5O4>kJ2 zxR4YX74J$I#B;C$N?bU$7#xy9vDdXpGjx>Nh+v|i{<(&o?*Vq= z`b=!OBm291lr9baV9@Os$+pgLFfPQ8Um0;sTRRD?EJpSa0L$5EmkW-WbkQvWQ(Xwh6Nij62^LG6yZY)pDuhu6h}MP}>5 z#V6j#5nvN#8Kf@x789nV;LwL{ISCe_sSdQ|_c9~?7#4BCc7D4%k`(*t_dKa<@oqOy{Qn9Q(UQRz~-*X<@h#If)5IwV0W>E%|o_kKX1 z_Y&zfcMsGO9Bk4g4$;EeN0$YXJwdGSG;rEO2ViL#Yh6j}NR~S(Mrj0;CC(<{WnHoB z*YFdfON$m7n+>qtD+b=IlTlnzL!hl4Jg^f)n=db8pgddViTL|`!H}{T4<;%SNxoYQ=Xe0Nb4r|^5hK#UE(3^oALavEP zTqN>EW)?<~$3wd?i;@iSJQHJ!z@#i+LFCWAF_rP5YTF+V8x7PQ+f~8G+6T4SAA-VJ zt$MCYGaY$^R?BVRTa=fUDAD&g;9;#&pBpvUHBuFOb*u`{b8EEwL?e&9u~`i6{9)^L zRL?OY#}dES;lw1;hB20OSx25;ig*5bwO+)w-AKWbaVo~4_@PRu=G*QkIC(sqwO$1j zP9OwjwPOU8VZ()Vsbai^N?2Lk=u}`STXfl^Y|OnQNR%U0Y3Q6KI9=2UiQ{&4zvN3{ zOXCqI8h&haKr}NW9H60(reHB`w5+Cgr`z^wx_PXy`*rhJ;`?`#qvRQ@u>pnm0ooZ+ zIdh<$!>Ng;2iXxyEM7%xOq&*j4NjFMq|)rnhAl{pITb$2U*g(u(RvWAjbi=X^qGRS zVjF3++Py{hPiMEzzp8}jf*R=xN!$d4@Y6a*3xk7oP_o4P42ZyA5=U@vGD?=Otz7{} z?jZ#%A=Z$(4|s6Tw)W_)e17so3Mhnl#7_Bb&vKrdmxj2RnVLtFF2;wm6zxp(GUt`h zT_k*U)`KrZHe^|?0Db%{fm|XBpUyck(Tv)~%+bvg;Stj#rn|3jYQ(6RgV8J6;Y*hR zPGNc|+7(9gUh+^xlscGg-?}Gitjbq=W<_ z#g%+?52H=)LuZ%k?^@Kjs&wQLvw8}hs&bnI&J5!pVY$~ zMS^}r=M%3Yd6XE2H}{rD6CPtqFKK*A_`rU$Jn0?Kdj^Cnai}|8!w4|hfczUk_dYwx z*=Jzch~-dGH(A+U;fZl{G)5j>66f08opd3P(iJYbS;;VZWe{}JgJCeCUTynW-BJwm zV^>bvaN~rD0FZZ4cxQ5CBQbS2Ci^|Tx~SKvmldX}^9s$!Y83#i9I3tI zEN!?^sBU8hGdSJ18ecMVhR45OGWsuN$>JziNLP3cIOFb(jr zCPiw_DDGN{=+-d;r(-!#Eg2WA-4@;u>&|?vgaS|KU;$;57JYPf5OgOAdDWq*zQryX zW2(bus4hSk-sNMh$Y4j+g8O!k<}v5+*fPt}PD0Dxg=TJ4oCexadaXema(Ttf$k)4a zJs@)jFC^r$FZ3G?(!Q2FN}qmG`JN3)l(PiJ%T^*w*d*ngT3a@953Fn|i!6gs17Ne9 z4nBZSql8*cf0w z;Uj~c0+N5KgF6&xn4Hq+a3LC0sg;zDH8j;*jl3CzP;gB?S~IKWOiN@MEdono2B4g% z_TcFoFbPD-4x~zqtQe~_J?%LKN+1~woSw@WKAd(VDPJ@Gm$?tpdT_=7Qy(!rLaiYx zu+%HrQJ+n4Wsm)Yv$0a&uH-#kPM7eV*{a`gmOxDjhW_@t+yKlLUU`ZUb6%RecowOK zjEsbP*d-9I1nHDa$r{UYCXSs_lQf%W<&fJS>>wzOlxZu=*}XF1NH*EqN67TK2UI$O zn8KuJX5;~FV>c=oGDfee{EgU9GB5@O^gdZ>1Q9GKlWB4b2wsQ}6*0#`%KR7AiEIeF zKx(DlV%bQ(R+==a_ddglpkb&sXWuczaY-MuZDd!d)Y}vUMW;e>r^@3UYU&i(@~!{C zbY*`t0QENc2+^tnwT3;5ZElU(`X`c0v8g{cXk=~!5kElU-F@NI@e8?GiS zCP3oIlVwp80y&_22K5X5qhDlhslD__aXGi9TwcET_yu4q#_fPA>~<-@^UQMhfK&6U z!PcxHSX`_EwdtFIQX|ACQ~QJSh5uh`XV)CZai!_H_OB>ugCjCV0A<;;YttK}fB=w$ zL=Z3m(%#W37zLn7LPDdlXf!GD-+AU@V=nd&?3HO>DBuWQ$$K+b`@HYT%*yI+fRsHB zi|DG#?>u?F&q*{vW06UAltT*mVxfl5mS(+O=cdc)g_zq7C$PxJ4^Jr%uhwM9DIa^cdE34pAPT-^){D9iPT%M^F3sbh38;DIPwl z6=Sq@5F>s99oRwnA3-KKUK9t`f0Y`_s&T#wwKjK07&^~&>6~(5B;#cKi4mvYF{kt?hzyCJ^eu4CxaBvCx5l8|E|!CbjjeciSATB8U678 z{K(LnecLI_xZ;GU91y>qb@&XP;;>B{U_ur#{Z$ij6Fo1O40E=u!_#c6LKA3qvuWQl z02F2daUz5#Mt3BJn78_2mbN-=2sIY2eh@%uoc%#mjo!=5OWqqaxWaN{jSwO(Ej_<* z$d>RsE+!{rOJ5yUO}q(4s9r%{+Qvso)6M=2fhYTC*#&7i;WLjh5R~eWeAEAaTu?vw zIltP6_uoLtbEwdh!@h(=P=H6s%XgfJEXWR@@09OKTZcA7L=kYRIQ?*eh+`&i3NU7F z<0sU?c8QM4_C9-Slr|1Qj78~Fi}1M<6{vPBh?X-HS{`o21_T1ImkbzXNgh;C05HCTl48bJ~ z&e2C(FDI}mW*-Ntuz~MH#lC2wxN+QBtdZR{mK1ImOJCQ1I6VZUx9|yqNCJ^i=)1(@WCn`@ zu12|}!K$qMJwsV39!nQOjSssQhuD+euLlVY&=mXp0r&>4#hNGyvvL zS-N&h3hE`eS^_G|3tzqIvh3QvbM=mg$H`9^aFRqz#xb(;MGmrFs2YG&zRit+h|Vwg zlj-nV{_QS$33brICPTV5_?lSYSuI;#z&%T7 zp&FN1$>0*Fu4sV#)ISm$f?Esx1iE2qaGvUJ*QJLvn#(fV6|?vLSyxp}WjVgNvgq=2 zDBaf5x#)u>3!Tv2jmL|#JxLO9Fus|-W+O;AFeAHQA~<=@wZeqI6BjF4hW{(Gt7W)T zF}3nA0Y(7^G=W55i`_G0A2PMPkMYQtL2E&L<_-E7gytz=BxHqBNRBUAiM0gQ*VZ2_ zP9`9Sk(Hyebhk2q{RBLas&JQk) z6PJv1`C)ixeU4BSt^n~1A5;n4IPFWxWsFkV5tLVqvgcBFPN#70Q{Xi zKw7>5jCox(p5^e;S!R?ghn)?Rry-kV21*XuAP@vQAtBV6SfgP17LS+IK=67Qxv4*i z@Ks<;ug>&{YJ|RgWJ0hBHkdriiW?k(Dy%r2erG(zkW6Xk!U zFSu)~r91Nn<_u1VLh(D*kiuGWS^9+D7U&di@(VgsOt{9PW-NO07imBjV1UdRJyO@d_mOBsilMe^?>c2F99#O!ds zOOM12SkLY{(iDJX((fc0<77{BGO8zkN5pIHx`Yg%Y)O$h_zp>x5#ay=PgDV*Oaj<^ z?hyUHKa-JfolED5(Z;Cw<<8cxRvw`dDsL+9ub=ntZ^yj~%6t-a9^XRqmi_DZxmFg* zX=9_=*yCQLm-7Bfmm?_=#_HLNvsDt7+>XD;33I|;)(;+fJ`n4uX&A$0xhpDroqdyTqW@VdaCTW!nT>2 z?k#)TNx^{98eu#|6BBRL)jE6-mwt3}Q5lAr0yvNGdO0B31(v-~n*?-dPG}hv?=k<{ zRRz1h@n=IZ^F$r?+K$m2fFmLz=pM~Q{EXaurj6;1RV+;3B@O-QK}#bKOQBeE9QG3W zAS>IXRKc=+g2^QRH6bzo64e6kYXvm>?2!IqP^r3EIseRN-Fv1$!Dc< z26Lq5q(~Ch64I!72BX%IHsh_Z zU^FNLI>;8KxhwQ)EVbatLfZK|Qt)xKFbAKBGl&6Y`z+8v_bR{IC_YI~z^r5v4jIu< zB=Hvr(lSYL4b2-8Llv?|zuETcch=GERGcmDn1sHXWC>EhGqMll!46G8*`#rY&QK%6 z5xh*NhXH$5VJ6oAcR-~~bKyla-L>*O21n|UffH?Aud4A1I*Z^XFiW~aTa7m4ACdhu zbjCQN^$QQ21@rpo963mMqqtP0lXdACzrjZyY6UfgK5d4^+hA?oH%nn(RS;5+2m7qq z2{wrdy1d9vstBnLU)B7g574y~5uoUn$;cC-yEpgO?xM1fo>OP2T*FqBz-~j{E>rK@ z#y7YfTpXM38}>j1lI}X+0|sY;WReVg2pCzY6E<$vfCKhQ5kx`5MX@hY?SW~~^#Tz5 z!a7J-pS63i8^>c(+k`S5GXx0H;il~TL^k$Ad1&1t^KnZSZq%4)xCs@)$EDc>=fF%foA&uke-gS4 zH&8)J{0i@v^pLP=d`WzWpd?-dlnkGYO5=0kw6NL4n;s)BzKOFW#E`xv6t;OZ3wNPRAF(L44iafuEnT6XcJv>19WJPVQ>}~I1ec*V|C|1uPEs9BgecZ{A zXo?RFH9s-`yhR4l^cxF!3Xi_i+#@{xvK3@27`;1b zHgTRhzl49;q^keXE}*qVA4J3C&QTnRK1!_MC^90CCTzlHfAUudn^=I9RL5@vN2w+L z4|0*wi2}c2T>v1~p#6$WYhT~~Dt-Gpy6UTmmU29`j3vf}^UC4SkcQ) zVJ=^OcJdY z#`z19L#`|k6XFQnJ*==ON}hW=i4b%9$|*dAjVk(6jL1^WW(m51T9 zL6f*8t#&zuqWbW>{6*@PWyze=!g}=|5=8flf)^gVi&Fw5kTX-F{xwYAO)m(+0ah=L zWfW@u{X!0ajlC}j3p!OagdYUZ>mnjmh_|0VEfL>-{KY3eo%8_ZQ29RE+mGvEyNhqo z&fr$yeay9pRkDcSvcNW>;@zjz({Z_%!?pwPTAp@t#@@7|g&)$5ziHUriz?rwIh0*8f# zv3xsMmYpd@f4{8@kd~AT_q=7JD#%8o^`R<5L4)HLU)WF@5t4lTRzZ@w;}RyGz@J;m zJL+zCK7soY?zs!>p4?%a-{I5%G$|ug)1le`CdDwz`16+^jGpsbK`plRsky3)OTuZ8 zOy*yR-$z>K#2GLgpxr3KIt6BLld$Rdb)p%>8{R#B4k2sT*LL^U@2^2=rFUo3(2Me( z&)*#DP+Z7+R`1usr;>w z4pEes;^nQADAhh>r%o>*GTsPQevIay;SOXPlp+MJ`kmaSZz9w`EojeJNu1QfT6z|8wKJZ26bUeBWnx{sFXZd<|J@LZVeiPdznt;3WehI zP@aszJ$>dxAF~rF>ZZ*eTfsf5$$>qd{BQa+Z9i@9{)hwk6i!m2l|3E>`>H(ROqi`p ze_D18$G!F7tUvqAZJLXIyv6W-H&?j4g9PAlDmr4B|Gho7HtM=eUxt@GyIghWp#{F!h# zu`QCAGy8nmkuyG&cWiW<$_o5m5W%V?lwAx@Hk|c!px2L2Uw6~y-uWd5ls`laRN)l= zjoW)n>c|5+N{8tl3rHi4YgX~*S~wa^(bbxQQBXu_`T&SERm@?6DyFRv23PQRQAshv zIcb@bk3L<9k?M+rhT9GT(;}iEU`sIQ%^qOGE80jRK6D?vacv9i;uUT54A*B?&h$4ZB=>y;P@ppgjY`#W2o(u^b!BA zd`_T$H`9Zl>;68zWSL7HcK)K)H0|~&AnE>xu^al5Z zA9D(j^~{C9#~mboB)l2#!|Ic|vJH~BeYl}i@JERbUhy%qiQwKU=-N+dK;-VK=li1r zviMY>`KuMKmcqLh2~cW(iagzica^6f3lneFNCt!42~GQq23X2xqzxdLNk|Sbd;?o> z+$SSQq)m-ZR$>XHt+;>ubgIA@K$T-7H`|jCDaX5>Li~0?`^YCciPC`mF)(U$?9_*)8d7SBwO*W zOnuNsaW^LqQ*uoSO>))_Nl?scOL(ssOzH?q5Kc&BABNr@nMZxN zbL`gmGx=b;gtP;aKl(uJ#HGvd#ark%LBWd79#6_m)UeWX1G@~w|c>R(;8 zmLT@v{Ot;Q12afTWcj9(Yx1f(wbJROb1POS1P5<7<yIsy~K zBV#K2CGK*l7r?aAM3$Bw0#+Yl5f1JREN)=Mh>)U&4C&62AU>P4CrQgRA_F(=$c|sW zqU6h;`8djF298hJ_T)KSmtE%h1XwPMBO1gI(d(R+Q^aRnxk4#~6ID)(RF}OS9m8eV z-o6EzG{@ZZxv}z3Q!SB7w^bkil&(rS)Wxjm@FnAl)P z)W&L#!6h}QPa#ff42p~NkcIA%29nM^nS^Q9!?}Ugo6aC%j!K9w(s51QEq4yX7s9>~ zgX*}NgcP>L36K_`xOk)&m_np6kj;tU$~%BAIzR=z1nWBLzM1J#Mef;2% zb#Rc|ahMY;G&>B;FNt zQcjXNhbG2inA98v;Z;+Ga8v6DT&959dM4H6GZybZOQ&ITO@s)9=#v|7Z(>Zi=)Pld zALbsBtckHh14VE6)sPEW*fC~K2-5^f)RbBfX#84#4jn>8Kl_1@3gPVdDObn!ujD*u z-24pmDtDh%Mw=pEh4Nx|?PFJ!2*#j-tz43w+U=dXI5SX}dM#zZiB-UwYj!1fQPU30 z3`aVv{kPq8Q9%6;<%9G|7xr|@MZ=pB9Z5oLiduuOLLSly1`~q86+fEPb`?CN7MMYR z0)Yj-;vu)Jkzt@A%SCMP*ii!qbJk$%xcpd}jdM_Nv71`@iJ zrCnH-56A;qGKSQC7V;p&)%_mhBG*mZt*JuDVcNE)=iLZ{nMB0-7ZMmlx27ed$AvG^260gkog4$EIMs7JZS@Mv?DGOH>LUfFz|szbZ8x5?v-t=&br zQ*y+5cpSQE^W`yQ1D2x+C3$fLyTcX6%21v`RH4EjL?QSz{MYWZJK;SB%O&>LOo8Ps z4aG%1K#r2Rvj&>o$(cfbp)rc#dK1yND2^5i0!6&!l0I}#n~&F5zQpV9%h@Y*59|+D zK&S09*%93unC>QY@Q_gn^L>yc??~cpV)Ribn>D2_kX!%BzQzh6(1i4e0-d z_e@e1Z>Ok#02tCG)}Q`vOq)~+#iS0!s6`PEv*Wi#t(?lN^}bGbay^MPm^MtAQnBil zD4yg~`&;&%l@bqUsQ8-)qcGa7ojmJsk<*J~S?(v(JfjD1q0Bl0NjZ~w@JVkrLm`~_ za;i^Zd*D9~oLrI0@K1jr@!hD^VSEAfe6QeAf-t28hFc-siL#Lpqsjpd^-bh|z2Y}I z%L|-rk`mVnT2}9gk(ysCl`OjL1q+7Tv+kBlvte__t@J~3+N*3EpQ93YI@u2G<^T{3 z2ceS*$j}R~{qE#13b}nirgQ((J|^kN{9P98g-{oj0o<`>vb#u5OiIM4qJHX7{IjQY3qerQWk`=RzR$e&@{AadXo(gQW_sjE3 zwx~2YWDUtDFfx^b`vH0_;)$djm^y27FlgFs3$ph@3>4%LRhX({7_XRVW$S(hqH2FGcskN^(nPH}wt#fb&>7 z)hQ5D_yr=$q-SOKSgsH%nP`WFYwICX^6?*}t%=m$8Q68OK}Z13!EG&?CZ&Gz2P{=?0?#{CRg4sJ(cpz$=?yVq=Y zhaGkBmP3>j6<9<6!YuAqbdj*2)PDtIP7EX|00aAYWEpVR=jexn~OADQ@u8iyzMjjk5r3s(NBFPIdAg~TM zS#DWi^;mB{A1B>GavjqOQbBb6iV}$d(&ZZCgG=&RVWj!(jLkrNKI7s12h9VQ(sM4q zQ4Zc)`dX)%y0+4xMi zTr+)gq9(w#Vy%+0=dkxSqbeGoZNiA0`APlF&XujVh_2%|-^mP6w0lK-O&?fskuH`P z6qlrQY(C!s7^B%LsC6s`*69*m1M!|E{SVVz%!0qP-v?*?T_w|<0TfK)bKn227U9Hs zv$*3f^I84(EYm>G558xlb48f5q3!$0h1^51PacY5jS=11yp*H+5$0YP7AYxB4w5$& zpUn-0+D@{AG@yV1QE!4}%Fh&-j@=NCr=8iOE>hcJnXv!0AtZ&sTt-nZgS z6Jb&PpXGL`%f^7eU=QpDRDM8xBaWCNf~t(jq^E?nla*V#`WQZ^hJgSiF~7gkrqq%U zmQ<*6JB(|3WJ3zZR#C*M?+D=#g9R!A1y5T4cB8e1>6&j>>MdBJtMv=+X5({rWDF_X z>-c#FeyPyJ^vBEG7t6V^^c6!8$Kvuk;jHarC5M)+`QvsI+$>r9E`Tnys{;^I-^Tf1 z2+nUwcl>^UzgV&de4QmgN<|EVi5E>4`N-oHbCB25WQH&s;u$6@h6uwCKZ7b6A!)-& z>(JprMtU2z=|`8s+U!>d6^vVWgeU}3aC1tSjB1+c_bKi|F0K&3vm%g7VAc>V9`&#H zM$hRyT#UDWl=FBMT$EA>af%ps^5!axIlJLtTMij<@Gl1vh%n|~Pdm1X_OS+aD|Znl zc?l-}QBo#9;AL^`Vlxpd(e%PE`;f$4A1(llgR-Etj9P=oD?mshJ9R_xMG#}tk$$cB zl>dw9IA(@W?{OXs7kmKNU`3Ra#LZ-GJ>(C#Uzx$2i6x07=~Z?$K_QQ5j2L1>+n$C8 z3S-ar>fPUiy}I21LB@4Fha^ijkJ#0^Y zfV}CtCw@lWe)DC9h@?OeaFi72ZDf>Wwr8M~Ez&c>;c{IT4komB#^#*J)jU^Fzy+Lq z=z|zA28K|xu*NSt&CAA@p;*TPf z$R}qQWbd;B(v^rSavJ@30n0jVkT}}U0WHyohocL4B76h%k`;V}yV3KaTUc9G1iu*P zwesSxFD)V}^DMeXzEQ*K>5DOe3TItG?gW$x=gr1=H0< zW_VOdxHTnP?@mTXc1%r=Iop^Ysb^Xiy8v;Mw~oH3@+50@VYJTdUc}8vuJ$k4k;SFZ zE|GW9^wgVK_BRNv%g9g|ZR!`gE)jC{>gj-sAfiP>59jvHs#iaO4>_IU<_>LA!0s9f z6h--Hp@Cz)ie=X%dlrtDloMo6yP9ml?rTAoM96NFN+8FR#PZoL-UBkcgS(Qvgtc6?P zbigR3#18Wn!vf9t71q|0!!_4x$9C&h&*-a^p*oExOv@ZNv=4GT$YL`X4lYf;O{HHO z*aY;sG6(@L5ow>F8NH<@kxV(`;;$-0Yj!c>oo7H#IdrdYE?p}o#5KP}(rBbR6R0XA z;YjVYBtNO55(oL-n!KPtsrKG)AN+l_SClI9?`dN1{-<^I93L!eokf+ro~&V5BC;8v zY+NxVCwoQ)hPObaqV@P=;+tDaVm-1?y)8}$kv70$e|*oq!KWsGNIu2Xt;mgC)AAuW zntV{etRSIEijo!}h1-Ia^1hXli(MM6R4~&|Ju?qIJn=0KsfDb`GmehM;52%41#H-J zUs0olaf$&B^?dkmp6yw8@gg7;SB&G+jL^Bm@>D2a^UmYNY`(LsOu0h~Bp6MNyVK)P z{hAFHGrard`W_d=l~qO)!y(45Nk?+l7_Fk}B_<|>0B69{j%liBa$yYZ^q)r^83N@` zY-gmw>LAdBgnseH_w*>8ZDNCkHlj@lh}p+jedxJtS>D}<`ooOuusdYySe@QU!6!Q@ zz{||C&aH9=C@To|&rl|OBWLtrWSFF*U|=>h9O65jH#-%EYx9&cs7rPj;^b`5SZ$>P zF?|tPg`XXi%iWj!#O3t3NhNu#QT_Y2);#Dj{f|UP&~8`C+E*5C*M~7cX|cQ zNv?q%#uH}4YQ$^)ohkZODv!0ZA2~nz!Bpbc@H$|BMD2k?t(XXj+A3Z-gRd#j$~p5M zN`m%|1;h3+4igAM)PO72&09(001lz(fgL~s(w3mPVj;PY6^sDsOj!@4TgrZ5^~>-` ztKL{3VE9q*lmXUfJ;sDe1U=Skb7?F`QC~qbtpk={@@ms}*zPo8ld*Znp7oPtrAZ$G z<}=7pIWuDg&RwEta$+1X=p4d}h?M_;>wY*H%?|flXo2imkFb}p4)O~gktuCBaBFTx zYlq@5U=XA(mtQFfj)FH}AGt&*tVuUmRW??<)8K$!@mZ!n#^x=QwGm^K4zrm2=ydQ9 zElM+N%#7Pmvorp4vne5ol{!TUariBs>TygMp>3&14h|+s5X23tPK!YsCA%{^L%PlN z1j=Yi3L4HIV4fC@^R?RS`hr!0)xI;3Wu4#_R1bSHuP)73NXK<9!3ClBN0V8ZvXwE( zsd7ytX=uOvdI3 zDOr!iam@MH_Jo<)Qd;0dkr6>a=Wy`s22W$q(j8JE=rS%2gQC(r`ur|eOGQxg3vPj0 z{mc9-=`cP>elO=2#XkPCkg*P8JX~C~q~aV`2UWN^p|TjayWDCR zhhAoiLOrOnx%TMJ9W)6iu(^ld0x!r0(y&=QnoY+fxNA1(W7=Y8&X;oPQR+H<43qM1 zf1hV69&J(b_7xS0{LVgZ`iWU7+Y-h$&FJNhZ;;XO(~-c9t~+}=CMU}C7Z;*uz9O;; ziIKm&HVGMBXimyzP^)5T`WNV)eRZU*g|z{&H|H%DF3qLd)2gD_EK~-SDUoN{7wT8s zFxfv6^^|Y{UZRT5fc6au+eqT)D^Q+VDK4o>1m==FRiu?vS&+-ZT8=fVsz66u> z#Ny~$Q#2=vT$SVyAEXw}QQs+LGv91cv}_!umKW;t(56zGQb{=J6o)Lm3sVuSDQ7+G zS!W)fCCl;=E_~VdXd_kS+(9%4+K|D)h#2uyr8KBo@hIG3kD4Vs}!vG;x}mt;;FrVIbo?q(vHuQVV5F^tBe z#3RE!Cng!=3^5@}|6PJy182rw*VoPW1+KW4Oi~JCbAHftMXwYdmB9*5kCa~++3Y}twc`)YzGiu;yqrRzUs6Ts1jOX;5|Tf@fYlTCpq%$qW==^#P!L~!}T zBxdrDf+z*!Q1?y5oq}4De?R-XxWXsaDH14X%_)HlERnQe*?}2qM;B+fFP$}KvL;@s$sEQ3@I`~-NCIqfD1B{bNPW5wQ z?qtB2_+wBZ4fxqKMd20VXfLc97aB8UVMDM0fFQHxztVlm2!JOXfY%WHcFAE3Yhs5K=mEcqjki$-pLpEu)yp2Olyck|9ybNMjju1;RJ?q9?3Zmd2d!{Dd zsg834Zie47h6>mieuKgYU=G6%FST}?C}Uq>uBGAdcX(IZ0u-EEp)&%lNlSWd%yDxW z$k?jn<^E`bmfE3J&2Ks3PFWxExuG^0PNaRbw?;1VBeXRa+=n%}uth`%&~_FIb8mP2 z+it^cRxVi;2L)lB3nUMw%|2G-N-zg!2o~=ZLBH+V$tXPU6}*d41Ja#5@wE&V#lk@y zX8_$}Bu@Up2nV83?bM$Z0xXm1w#d(CHnOIBHfc>QR^0g1dR-!oVil{(98omMvNV52 zrxEGjH!Xx>{u&s{%A23i-M?ZAyUg~g+C#w4Iu6f_i3Yf0um7YUjP zf;K~u!H7sc<}^!C{JvPQbm+^QXNL@93K5_R(Z z%09k6$RoB|h!Pl~^bdAA|(!Te9LPL>k%5Y71iOiv1%R8b)ZQ$@JK| zDpYAs7j%j;S$J7~a!uPS{-&y{;gp0XD~Iq%Au72vXOot%dG>C{!!fz-o0x*>9TO`E zSMZZocQWl(k=>-dk$V{6?)`I{i!a!vltVd@WTKBHizp#m{t}F%UMN2T;&t^i;DpV8 zl#?3$aSDTO{Uc{Q%$0!0U@N;mtyJ(T=9B!>Godlu_ra6Wn6`c(WhACy`|Ot=GFKNP zUH{h5M^Pz|J+P>j&U3T^pvA~bIbn=A2tnz1gq$W@bP%-TAZK$@Q%qI}N=eqhdJwi3 zW~)V_@IvV9gk)?7dl$SPr4J^~A8XeGc<T8=h=q~HE4E~E@Yh;|1V^yF zaWcvNVV8CajqTv?lpgKRfAxuw2x(s9*^ATlE)ava*$<+m6AITJf!ZV8cGx^pN?DBh zz0M{pTHeTKDrvWxvhn$A_e>~7EN$q&hUy|^yIHO;%9-2tws$LS4eeN4gQ*YgK=~aT z3O}e^(Av&yQ{bABX7BO(=HA{;uhb}wJf)Sr?tuTKYsK9cjaPw7tZU)J)YL#$(b}=<4n_a!B9nX3E|tC6lgak3T`f{9D^2ZN_9~44=NIGnk&p zhQnCwxRe_J7R%wO0DCS`Vl3)))JLwmIV`6>ket0lzB*J3LC)BeifU_*hNDQ-ZZytW z&3ldvEh0yn44?;eJ#=U zEd0WptVOB>HnY5yPFS+%;8jYm5vMF??Wo&AN=7=f3|X|VbKmoF4jayV8mj-rcEJMp z@(I?;@XECV06L`A?3tE8Lzb#1PfpXYL&A9QGT8>JcV{QF=PQJPsu5g7fx7A=(rm0y zz)OdZ2_g@w42Q!^>20ojt%~mBz>(1$-3fCM(fOUdu#$vq&X6)8yVINJWQBe^|@PZ?QK=QiyAv?q@soq;+vNuL=7BWHz6s%tCRPvHpml7x^FT z-uvJSo3a*D18lf%?uF~7y_zOSaqFOQvP-ELgT*5i4C3E4DzlXY3Pl}=OOFN!)MBgY0k=_ToP6#v(=ywxxHsQTW_+>g&ZhUrNcz;>OLihIV*GkRx_JedUwACB+0M7d-)L zwyvbe+pEiEZ4^_vqAVJcx<%PEJi~>~RZ0wWaV&uEv{E61!5ju1H>+!w<5=mofWfdo4JKP=^4X~?AS2=vl;Is0R` z}*kqkI+g(KiH5F=ZZv-dVK=BN*gl`{~Xr@nTLt z*~=ZIagsXaJLP11-f>|7kp~?MiD&=T^HX*L4O2%FRbubqQ#Pk3lb3H`3>CZ0Pp+}= znuuHiAc=cBSA3jxddY~Y2N_eR)oY=78Iy44mjzNeYLWL0zRDb zR*GS{rSdf#f=H)58H<~mjNiyZe;t=i!87dY1j;NQ0H_Bus@bRnI~ZkpwF?~xgoru+ zgKrns9w^@*|3xla$hpJFfAy<>`t`~$SbaV))_dFrt!v1L>Gcad2kf$q$Z|A$3xcX$ znbcsU$K9K}Jib(jGmCoG{UDynzhv^*L*E>lXblwT=K!^Oi2}oBeh%G2M(Is^HJTNH z#O8ccG!9c}0A2EuB}Q{3my~Aj{J4G4opRyIZrp~k$AN42&qv?Fhbq(?@Hmp+F>N77-QUYkX)VW(Y&KLxXP%20VRyW2*!w(w5(l5hm4&k z@M;-yLt1+l{6MmN@JP}&1U9blHXu&2Z$Q=@Rs3O#U@$7xSs=$O23Qo7Z8MvO!k#1y zZjL$Q9^c(~acQdU%Z;lRr@Ex2J7YnZE-YXKcQzhkmN#^wpvmP6 zyaa7kult|kW(cB`wGB*$DN4HGW)B_AK_o^btwp=teLo7bG}p*1`?NPB{eI4fHoNrM zoW1>l6B?J!q%iA*{qS^*=zu=x_79HUXG`|pq8uyAg7Sm2ZGX7(qE;vrQrPPldKVmo zge2nb?>&LqC}6x%j;TZ47bG&qenJXyEn`KK%_fUn_8@&N~5$+V7CiAQrpesp1+Scbeoapx8M? z0y|m-{>Yq)rNTk@DNI@^%)VAnVROBCV|xGi#`N}$>4V7)X!}1Ljh_GJ25Qdm@L7u3 zY@%%bP|N3{cwz(?q>|eGc6O}gIDzUY-^u>g-pYUd6sKCfiyV1t7K2X3mnulWoa}VY z#cZb>c($V$c3ODXH*8Ren1@BCHEV{nZ^|{r84_F}O&*ORC8T@EUSOIPY`S7Csj#)Z z7Xv8fxI|y@)suJJPR`U#*~l0a$wxw|pV(?~p3X|8p!k!H80_}L?M`Fy1)6v61bq-v zfJc$-YKWsWh3vfLyOeh~*RRl|?#%g3W=%^$Kp`tyst*`Jn(VAL(sXyj%|+mxWk`W0 zIMMh1^`ABKjB%+Ki4NXlr>-t&r6$97%7pNK4}To5a`iglK#d>;5l9FM?nA^|;4<$# z|1pyz3pSow`EyuX?s&bdBlv=yaPd`AOEx!U_DE!_ViVw2X3)xBlQp<0 z@>$$z52$r*_|vu>*>-7u4FZS}BOy)8-xGHA8E7-k4Vxr=B|vN0>ec7~aMYD38d}ys zG9Js6)S{q7t5l~a(F|U;zU%6AT;K}xT~X*XtYJj~m3rxuLof;Z_0TiyLgYeI)f{*r zw+LCoBvQ#H_k~3d zMYDmc;LXaZSVs>U)qWCb3KV^l?xWC#$`=aULW|A}c+Q&eQ14>jgIXCoWEkxxqIDil z%86iIml73(&xmp&+@hhRV=#w&h|P@i?d;v)F-$;?iSa3)8V0Q)me3brk%s4t0klM+ z1d0F$%2csN_fBWK_Y9T~$k>OdSw7Ewva-aMGa360~q_r$J4NV|P*wjZMz~ z-fk*HkypfPgRh5lE8fovI}5Wb1E0Z- z@8NgAB8z3s0sdM>9J=v_wFx6TKnU;YG^R_`R0nI0U9E%_H#UdB%>hb@B0gqMuG$QE zEE=kUY}9@aAE&c1dhSDmdb(yC57*P_^rX1ng+!V7y39(LlX)7DL|XOn$gs4QbosWJ z#qt@B;N1+3K}MNxNz21ffGVlMl+#3K;_3rcfhz5V)gU={8)%e;RjwZPjH5%*i9xBL z((0tJJOk<>FemX7QaZk;x`Jsa;VocnJf^{6f@Y*!=El)YDIC~gFIaKJb4~})OuEHE zlLkM)-^Q4RIlxP|YWlF`&DAZno(I;u}4N5gRd2rlyQotH+Q11Lmj18;N8{YHVw?~@=h07 zdJjY(1X-&z02cULgdL3P{GOi-G)0_>++y(ZBlmgl#seYL_)`SJ4#!N+wf2eiaQIj` z;ptFE39N;>hk)4>_%^x$&_inhkwBm4gE(bKf)*#d;uI@@OUsZ+TOcatPG@HsAy+G% zjkliGH*c!Z21EGaD|`k?D=hc0q!U_{YkJKQqXEGK>TYilI?-j8CF!HGgi$ijmQ)t7 z_zL2$3TLxOKBUL6N%eQ2Qhbf5stg+(Q-LO{FWl=MSUk>{qXtfL}8 zUGXtSfS6hB#rV$mM?X_ckz^{-$ld$jdI8hh&3$DekLd!HAYo`OygM(MJ%4 z{kw~$T_oO14e%u4#vIy`8iGWpf38(ef+70h-=TU8ynk&I?vpyD&*jClS}0vLcSBba z%ugkVrr@;Z$;zDvkkycPL~y~D@7sV_H0u6M?AA~0qZ*&^wsg7H9#n(1lNozta7-C` z46qWYGHce)Ef>d>ATuSTq}nI5Q}XdF!@Rcmu`+ky8^v)NRsbF9M8riwI)OA?1QF0I zH)fHQ-6mU!qCh?n=mU|w>Vvcw@pQg@PdDB8O`?ZLYZ~3aBQm2JRj$g3HU)QF&5kVT zg0$evR%c1c9vHQn*@6ZTrv?3+htM~Cg>d}7EpN&bLA`Rb88n^JM1<@ldYG_D$#aHpP=}r8H~MQ^Kh|O-4J*72WXD3DqB{;bC!?~zKjfWw?_MXZqof)4$w~3w zK2+eeUx_~7;{J!o0VcB0wQIXut!@&EJ)i68nnf}-$P@hC*2B`>tK-wNlf&HA)UJ*b zccH$Pc60SIa%ouFgz0$tsn@Y|RNmyi`e{wBpH}KmdXIW`FaZj;0S9?a6*YTbg%Ti%e%A~y}!&Kl2PN;=zp3LjRWJ$ntlXHGEPO`-AJqMiN&Jg@_{>;^m(3iIV)ODgh?louyR8be{%Yb z48NLC=6m6@Eq-b$A`bIuxNxOPt630t5)~bW$H{~QOPplIi~b_0jE|w7v_r+zwRo9B_tY zIG2M67Drk?$Lobt+Uz@&-L`}f z%5bcIJsk~h`YEj<{sw|ciee2u`viaZ$eL-I=58S(8+9D>R~U{y%OQY&I@Lu&=-_3{ zx)`B*YS+Od=VTtZxx0Q#BV3=1Q3m^Z*uz^Az(r7lQ~rhpn8>I(`4(B6*k=m9_%n}q z^&s^{ifNx}1U9W~4uoNiQTubg#g^LTioY1OxpxATx{usBa}3HpCTV0Za6!9IpeS8E z@$EfA?HU`ts8hNhoj3cl)3-{qyg!qf*MAS|{64?N5;;2urtluJO*Wilc=s(#cDv5q z4HLE&pQ@7?mR^VC%FRMY0CyT>z3N;)PL|{L@#>RRKI#5!otkVUfU`hw7~n@zCpF5| z?nH^Ot2pzVvt}V42=i-3>am$k5YtmNPPIXri&$EO<*h!h^``?2hqNM5Mqx!G$N z9M7~RHKcqODN&qFbnSo;f=~)QaVnJVqAf}dYYU9>b6rrIec$Xck|XFGPRn8{MCXIS zSi;LWCvRa*#APMRJHtxCdOfyx)v%>{b!jJpY#DSO(hnJE@{qIIR@%jEI;e*6q4fpT z5c={vs_K+wskliJkj<6x&C%8Lho2q)1Ldik^}E4NE-o3SHO}#%(2|C) z?>0bS>5fG6x?NCLph!pH+@S_=p?IbqBCrtqHDkYl-lib?ue!6duWx@<2L1J7&1%2| z|GXC6U1&X*v4zBldr-(&K2t0!Z3dq+aux)93~-du#Oc-K7CWvhNpG~Y#T($!tJ|yR zk()!>nVl;YUJ%Q=^8E45Rr=w+SBWbJn-_8E?&r>`LQ7|S4FKgP)c$aq3qvaAL!H%r zex2OE=ekW=lIi#$c)YpKh_2>wlG88ey-MO*Zvc2)*i{yYa9B=C{JEWtVB7)n8uZvX zyHvGGi|2H)h^f6b%XE5ubJu(oXC$U zmG)}zyK=;XNi6_#X{%n~1!}Xj)FP2vR%|eG#J9tl^qwD$zs0=$Y>NC=EfnX$e%`J4 zRH*RbEV#-?`*+``*zfS8df#&R58)MZQ5Tn)5bCT$=Chm_=@Tx3CeLKDHTg6I9sv|! zX~i53>7mcc5Mmb=bV(Vm***LI3W!d{i%P%Rtib{%5LE%!LX*pHN-JEl^(S!w(>v>ERpCkB(e!l&Z5S$9f$S;nTi9+s-oLx@ zD=u_K5VR%a5AxHTwn}LS*Zhc^mB?SM2MeOIm84I>Wdk6`y2={arrk!aB~T5BoVJ@x zy(+9aF#FSnrGm*w!Wy^cji=AK$jih%y=`wwakq`Y);&i*wE@yvC-!eiIbMSZhD9Hg z%W|X|fxneI!DZb+x7s{TcM&0GM1XtUKU@HV%-pzuR%uY>Pi|(k#N8kTNyvgf6_2{d zjp~>x;OW;&@F0+%Pl)_@^ZOjLTD?K|Ta)3deidUZZN zJg_%Ad?U7pANxKxO)$)0<1HWeOkntXv9Xo26pM;!(P~Cll)RIJj31xRoaO9ss4Jm^ ztTcuiZnS<*%mvHw)z0qz*3QGduNBt8YiXvtOoL8x#(8&*BAYV zE-IC^-s=PAZ1*zZ)GW|(-7(XzER&^>_q)h-I?{u33l$~CM*CW2cf?Rw#L(`rL9Y*d zov9p}k;3g5W7dh$hVzSV7(G6!+?N*&C-hp1Haiu=C*Hy zM=U7`EW~E5R`NegWwZ@sj)CF>`&pptZ`09r7A^^%Nq>V2=~X1W$3^90#^3YfH@e&7 z34yM!NfgixW*(8Sy0#2pSF)2DL!cm5enfP9itb1C-8-9V)m8*Al}^#BY3Xn6A_wWV zSS<59YYqNTG^f-u;%nOUYI}yQoeV}qu|FXd=;@#14{=+xeDlfH-ul+oE!Ee_i9hXE zH>O`x4An;5gCgZ=LJ9K6ltVJtJj-N%06QID0FA)oPq^FADx=Tiz9sPa{Flwu$E#}$ z8nx;HN$-Tu2M@HhXaUH^hh~jI?=)-sn-Bl@zwLbR!3XW5&F!5hYlxtG>yNf}_uK8Y zhmY4DY;Qi?-;}qOcy<|I)PSuxzvIRzd=yBSKnh^y5#yeJy9Q1c;vsV~VNOaA!Hxhe z`|`VMHcXRv6h*-(TdvUtc`Me4E$G_cjmSBHL58#p7T}uCxj`C#GjMqMC6x&)U!HXp zI~j_7D#+j62Xp=W*7Dc?M37gfEF^8Ir7@$>DVOxB2S5UqYBHO5`CvOB{-Hd7X9n}6Eh;p8$po<^Ib3;$XxPNz?rdB@8A- z$6&IA))8U;j95eQ*c?l7P+B>6&u$U;Fmj{XInzt&3SXq_@qBNLtN?IZg9I()$>}iJ zusYy{S>heq^}W6Fo&msa%tctWC=C{V~oC$;t_^Q@w8A}eDp^6 zX03y-?Ixkya&`Y+e!QmuBO_jj?!fuZ{50SYcqyaWoDo#$2{5p8BFHG*vA~9KVHkxC z^EZxgLp}v`Bs@Uzg)0-n2EXyDZ{l6mcAh<(jxOW}lxrr1FG&>bF3(^FoOkMn*DoVv zEY<7BW9HzdU|qllai{fL&F@#pS|)CnwBzPQKIghUF`B>sr%!(U@)u3dXK3(|9mq_X zl=-=kiKF>)k{RoYdy1|l7uD3xmgLFg4T|zDr`uaB7#yD^Ln3`bKZ{T`j^$RyLINyysJnJ9%d1>JxU7(Rk9p*x%jfZzUQsxh zhix(EX)An4=GOVzDW%$W%_tVA`2oC73-fiZUzOBtVlur0@3BBjYF*c@`I;gpndb?n z;yQSZ&t-w+r@szovC`!y~7hlEQG+wDF_=`H^tAtTPfTM7|WcfvT?5 zgSzDmAj&3E-UpjNMKOaJi8J&RW|OV0?v~+P%vg7ya#^dm61LbxsK|pqac%o?998W4_R=`s zU9jr-`W7Jr!9xc;rNXjZ1sg7_l{BPYo#d>{f?Ie>a?6r^(g4M)8_Xf>3J038(%Ml% z1PqO7OV3!$2~r9%3s2sJ3?Z45q`)$4D&IxCgq}X*x;9qRUJX*m$wZ$sg{lsLGpU0+ zKjRwApY5egFT(uSo}wU_)Sjb-0tT zOCz|MIhS{GwCla2j^4@(I$~X@@zFniL_l%e_mJU4j2r%<8VkD8Lv$bG2#n(PN8cw= z_uo$=vf>rbzJA3L`tb-C!Mbj&lpMI36adtS0>GD6Vmc{?wk+Wl9>2it_MCZH8JlRAVqWwg@>k&aB(C;a~;bQSbXWqAX(Ym~Mg{;lH zx&r7(An6%rjecEv2zsJP0kF`gIuCnYrEKtWV9m~a1pJGO_PwSE4LLtn?_>P2g-9Y^ zlzKwlSaP8%kU0+!FH09Mfu>@ic=~3XT-fgrgF}jeROXo5~4Kh+oaleB2MyHHD(>o+Y~0 zquP2ztiGL6uJ~;BG`m8Zgw5SOkCj>^FgcnhVwnVOWE%O!Md)lA$a(i#hDz=2Y4=hg z?37?;a%L{tD&13P+3;`QFqk@H)$I>>T{dQjP{wHu-3WC^tA3Rkm(V4%lH$Fii1lFiLAnb8_h;^^pn z9^Hixd+4|gR-D&M>%-~4q>FNgjIWSFh zE`W(VTl2%}ztq<_OobDS9#F|?W(k|XSNk~k^NOybmo#;EF?i#BSeDD~PO~-R(zBB{ zC<2>*!4Y88{L7!nbIt>~{~}SegWp z_emjIS8G?Ucr8KJ>XobNl>+EuzuKsbT|8#Jj4+;bwO>U{*VoO{H3u4?D^jk|wWrh2 zSWTO!C_vB|DHRf@6U_Q_{lONwIx>Uy)Eru~`7}bCnx~uQ?W210^xioLj!Iibw9V7q z>|*wG-5b`OH&6FiQZ&#{S<>M>@K3{JLamZwLIVXgbW+AV0#Ar*V@TO)h}IrwJHu0H z+vH@_R4hwn`isNL-OX>EaSN!&qxQ2~jV)TuAsqCi(Fw17zd|1A8Ay@ClunLU!0kkd(_(KkoR|0eY zU%H@>PzHbko~4VMbH`&3u!%j+j-f_sS^`jSxg;^JhEFBsEW%u)njSPM8Cd!zKDsge zsJ)rrGhm{Cs|qh|OX9We=L1=vAk^3wHMM{ZRV^&kNFfEeqjwb}tMqfRFCqD-HbYjm zSRJaQWbaD4A0{3b5e1ZqKV^ihy7(LnN+-ZOiS2Zz8gDDC7Vwe7Jx`is1W0DkAG&Fi zZh3` z`Wxw@Q$ho|>yfxGWGN_+**V1oABl(&M~6nk)D0jFfw@7eFV4L`brk?(LttgV9TFmj hoLTd7oh%8>t2<2M9@Gfue49VOlJO8L%BD#)+5?SEBkk zkE(YEHLeJY-8d4U#+w?$V|FtyrYBt(HSX5PG(CZ+{(E5@9EY0Ee5{PCu{nOn!Ps<( zi~j)C{vB#Pep-I?r5;ag(#cTySy1CGWa;u4fplG*giS2{78UOcYChqYx%G>WYM%u) zuYzU;j6}LVM#dJXdhIa__QWK(#M1jP2kAGM4}F(=Jk_xYHo!Gl7o)E5cyeJ&RNQ}1 z^O$F@!HA@HViY`x8t)m@df!3K?-6QzFVGi1q8F2|^myW85sZa3Q0-fy;ss+^?2GYm zAZkCRqQ*1d(koH>wFR{<$5H3x8m7SasJQV~In$!XlM8ij3Zu?t3sgUSF#%3Q)mw(@ zcRg0YU6>hTtakkrLajp`jD}56?#u5srg5$b))j_RitY91|7?R%Kx%q6IG-;Jt&9#i5y)O#0pts7S=)c$2a z^_LCRe}2m^j~Z7sRJ?|$c?F{0quv+`$6I=y8G@SkNz{BVTK;v6P5KRL9mB0-E*Kki zPFrI^oMT?I{DkY>d8mep+Wm=)V# zUYv?q@D$d@AE@(JYm;*z@~QT$!J_!W^0RFAc#4s3glTY=xySM!U{3PWg}8Aw!1$#5 zqu!q>m;u+I-jl1S@&Cm1=)1+nk6M@7sPoVU!(k9=AG@Q@&)=x|jYiFPGDgQam;hIr z`%(3-nfEXr>1U|;o~U?&?(*y+}}H>&@IsB!K>&HE^- zzq6=)cx>e#QTrcem+LaQS&;3 zY4Is)+%b2%b!&wh*I;agGteJBd)$6zG_#v|F)77`F$va3jk61CoWsoNn2hua)Hse{ zD!ht1C*M%tl`wnVcPR#H9;r~@olL0rrw~@b3aI$gQ2i}OovU4_bvSP6bC$l1I#-WS z{r^Ort62M7|A|rUQ=-Z==B*B!J9<{&aQ2QEyDR3xi{EIBT z8+Bf8q3V4_y-&#xx%aXXDo!w}{Wwdnw({esdA`M*nDVe|R}+=r3-jS3)Oy}Ro#*eU zpEGffxOFLsTEAA90lTC6n~PrDjar{OsCwa#x^XAMd8BipzK54k^TF&gQ%sP;kHK_M6#PTnq`n!#Kf1aV{73RDfe;ia?UsQQf)OyuH{oD#b?MGkKJcgpq z|70wQ+pXMl!NrS=djFE4#$O0EpK_>q^gzWQh}!S*sP&s_EKyI2 z^byp&&Y0Ix^Lm7_@FVIRN4n_Zdr{??F*X)P&ATe9UOUu02cX6|0yVx#sCi7c^di(c ztU&GWR`kV-s5sv+9>%-m;$%S0Hz%rH2~ z{ZQi?YUQIbKIx^X@98eocj~55dxLAk?}~MSaf~q8AUL#{U=-Vwmf0ACsWc#V{$>!vxp` zb^bi;Hc-=0|hE7Z@G&zAoUHP5iO-1;O! zjW>g(^P=Wg4mI9ZsCl%r@?cBmO9Vvr+rL5H*iosPUdOFQV$-M8&<28utrS z{m-cJM!N0RJ1S~?2~qWZQT=4aIG6_&uRN-}DyqNwsPQ*P&9^ls$KIF(r(p@)fO+sE z=EW>`+|QxbsD5Uk#y1ZYZzZaqb*OdUj_Usa>U}7t8KdRmoRJ&QIb1~2ISEI(i2~*=9)H%M78viR) zyU(b&Kde03J-1$oQ1SAh##a&*uLi1pW7K-IM$MxWX2Wi%@7!W6iZ`$-Ccp3c>wsxV z2ci0%ii)=o6@L{f?iSSi_o2pd483^S{EX>HCwbu76-S-FN|*s#qrNZWP;nNc;;%-< z+lu;L9>VZ=3H9B$fttq)EQTo`5(}H5#(N0W{sKn8yQnx%Q0MY9Do(UV?&n2vOhdW= z{(((U{T)HoJB6C>Z48G`QT@C`?bmnoV&uoJKY!FbvttRYi0Xd~=EB*i@t;HOL%1jI zJt%+?NmoUUzb@v-R_KefF$3;LFTOyHFXmI%-itctxl!NovX~5;qQ0YjFg=b#y?0ws z@7qaKyC;_ZiYZ7Zc;?D;quN(Po$FSp`n^#7j4~Hk`F4y<{#n%cuA|oDKh*j~eD3BM z4b?s#DqbekeiboGqxPW^YF%oW4J^L}>io1twd-dNLG?4*oPbeCPer{a^H6cuqSj-x z<=@6=q+g=;>l>AxRKJ@rEbc(H z+k=|NNsNjY&AXQW!u)`W_XE{W{FiS0X;A4bmM(!JE@i`wsAsCiGY{8^}Z ztwzP!f?Cf*sC77wG4TRwd=F6dUtbC}J{*6%k-5fQp01Shj ztUMTfN%uh2n~myc9{S@FRJ(JQe-jn=zU4nbjr$#HK3~mnZ(Y6UsCaR(EhfTpH~_UC zN3HylrEj3-_Y}3hA22J%dFR%>1Zq4rQR~>m(j8Ir?ul`65QhFfi28kQJ?i`&N3G|5 z)P99~@Afq%YW`VJ`;h}Rp8}})m9+c{sQs^j8b?di`gg?G*a!8VjKQ?H5Or>jqT*h` z>UakgC+7#Z4y90Ws-wo$6f0ma)c5lMY8US}!zm2H%^L%o~L!FoOsC~(ZnonNT`jkPnuZo&qV~mFZsQA55^#-8Y zjX>3#hFZV5sJJUI2ZmVrGs}OA8t+e3KhZwB`6NN*=RnQ3s97ErwNe}oMGiVEPW8w?lJ0Iy~iXN|C^gvHdOn3sCkz%%cI6o1=YS0YCP>w>lbM0 zo~ZTdXX&A+IHOVLZ35=Q$(RXGqW0x0X22NV-Tvf5?ORDyy_%Q>`(sXAZQeu0OZdb6 z9##$2ZZK*+C!_XtmF4e3y$7c-KHfv^!)MeuV*GUJRH*Vi*a9n|+O0-E+=p6^XQ*}m zj9Qo29-q)SDKI1H?5KTcj9TY@sP&qTrEvik$ET=u%H-n{I-cyP_o@u4-`c48v_rjr z15t5?qt5e0)Vya~dKGHkTTpS1qW0?wCdFH*bMqAyFI*VcZ&cKI^`hG4K&@|a)cks( z>JPQ@F{rq+Q2RdL@|UCPZN>Ds2i5*5Cc}@Y`Nj+D6S|IxQTy+QTF>g365C;F9FC1} z1!}({hx73i!4#-@Hb(W|5jE~^sQw0{)^7r8ofctoT#JeE6l(lWQ1gC?isuvFrQ@LH zkrvZpM$|c}hB_ZDE!`8HzHNrbAO6SaOtQ2mue&9^b?{rv+~uN!Jy11vobwZ1b@?bf5}pFoZ43aZ^B z)VjPueXl;D<`FZZ%TI*bpA@KZ7D26BX;i&BsCZ2+-2qdO?uJ^w$(RY3pyqV}wLY&< z{eMBNZ}>>Azoe-6sZjmpK*h_CI$!lr^B;g}KL&NqrlIzA6KbA^QT?4qouikibqp8T z85vbC25SCEQ2XRX^_w0wzpUuRe5i9<-_nCn@ACpwKMzsk^NHf>`C~QGwNU4JAu8@+ zRNPajelMfOb<^_iS^7EplmFWClSTCj{d0ydYCp@PAGX9SI1&|iD{9~Oq1NXbYF-af z>-qvU@1K?*HJW>G;-cF7p~|zN+808tUs=?7ZG<_nJ*wUu)I64>&fi+p{_M8=6XrSd z3Tk|}Q1L#Z<{vS->n|GWd?ZB0PlY;PnNe{IqWUR^+V{Gs{=1;!^g`9|hZ^T-ERDM@ zKSB)mU5JNTmmH|`RRA^5`l$9DQE~fN{y^0JO+}4sHfkKpEWHI4?||i>K<(dkRJ({V zUAq{VhjbE4S4XWwW7K=l0n^|h)OZ%7=CK`p@g-)%__2KWnZwTw%#1xy<5`3n_eM)^ zLwy&IqTa`wsQzA~#_JQ?y*H6j^^&6Uv!ceG7d4I|W=+(&Xp8zT1fzalO+>X@Vd)L1 z{W@V@ML*JyQ2P`!j;kLJ6)zcTUHwq)a-zPg#Zcoeg&I#?)P6NV_4^lUU8bP+Z9D4x z97T=qJSxsR)c8K3`t!u~3H?1KDyqL2sP#{Z8b@~2dsY~|SQoXfJy7lYqUsMvjc*Pr z&N|fmcA>_xAJy+k)Vg0p)q7~^w^)O8*m&-}sDo)qcSOaVh-$ycT!mVPO{o3eVfn{V zanGaH;STD1{t~sX5#qc4lc2`!kD5m@)b9xut-KBDJJB6gZx|}hY}C4J#CEs`y_hk9 z`~Fozz1M9}`_m7#ezQ^g9)kK#-bU5?it0CRLRT*lO& zGiJj0$=!HMpypQxHJ-+(@w7yLY>QfliKy``N7dhnn)d_L(RJ=>i5fvs6X$tL+xLC)cl5{;*7^u_>bj($8@B_r*yw>XF~N8fcl>I zN6lj$7Q`EQM@Z$~j~J+SzNmItQR|Qg^}Q%z`884d*#H$U5Vfw|QT+@@jbnnP=c3{+ zL)F`Wn%_ZGKesLY2(?c>sogq9L(Mw_s{gF0ev6^TRU37_nxob)5cTuoAJq9+i;8yy zb$-sH#&N~GhuYWwP~(1u`mTINeFu`Kar;*owV&Nk`!@^y@DygikEs1mmDVTpzf&E8 z`g7KGtbp--eLM}Z8ETx{u?{{!)hm?F<#$EB2eVP{#W5^}k5J>vOXG=AJ1f*h~+VZznf1mW+c53Q{frZ{NGxB+>CDi zMX><+tuZIgMfGz5^`3l1txMueKA}H1ilgS+0u^s0YMjfl9bQMh2W2w5adbwFcRniq z162IPS$snOySSnlK>9DNjQ3FA>FinE@5jwi@yB5;+=C4;K{mHuol*O-6?0(t?5=%2 z)VjCD%s3f~;y&zzVRQI+I%5}XjSn#pE9dm_tj8Uw^VT_+8}D#b{MD%QaTkkVwA}8` z2^Fyh>5i!R?LnRAN4OT>Vp?37$Gs;#T%XNOwfddlo9*Nz`}h9qPQs z&gb6Kl4eEJ`%n}0{?tSD-x~Ga2BF@w0T>>qSouuU`?3V<<8mtxpWnrciuxYJLcLFk zQ0-Hp#^;Cn?$<;8Tna$--xC#gD60Jk)OTS5Y8=y0?N*`Q?`>9o9(BI1p?(g8E8yxS zG}EGf56F%>XSq>vo1yw?V+NwmXLnS*si<|`jXGa1QTv;+pxeK^sC90DdQbbK#x)Z) zuZ^hvJA#V)0`>imQONCE2FydcB6@Kks(e1`-0ZaUYgGTy3cL5S5Gr0<)c0VRrB|TZ zA4i>!N2u{dF5=$Xtf=!)2bCX;8s9Y3xObx7-%FPN-tvP~+=>>TejP!?~#U<1p&?$v2jcUEHM$qRwvv)c%h`t;aMB zU0>8bzQCCH0d-y?lyK)bDe8Rrqw43w@YopDt|g|%KT-1-gBs@s)Owu4$oLdu8A5)Q&c}4F!c8q)OlQv`rfTW_45$*`|1nSyuz1q z`SDTbBRPh{YN-9LjXHPTQR_4kW8*)l`pZ!9ZlKor9jad3((XO=qUM_cHIK3w1*@ah zs}X8GEiAt~s{TOKd;TwK|Cd_&2x=YAq96W;nrHknZrzfh=9vT4z5uGg z5^5diqWW2n`c7@bShy2)o=>6rdyM+tyhDxi6KdW*o*OxzbjGW zT#uUPR!i?i&Ep6v-dR+?mr!x;V}5*z`d((J;NItYsJH_$^nFL|%Usks*@ikl*HG*G z8MUraE4qGSpyJ0xjVlEzo-b;BGor?k6?MJ~p)UraA5KP{za5whFQfX8UdesG{IDkJ zYFG>xpxQma3>dw#GcPK?IcCD)s5qPO5uV1}7*fT(hcB=+=~z|W?{#(XPts#i^Zklm zOkB;KvjV91F#yx!->CjqVmiEpn%562Pg~v9tBm??b;FD}4fXT&0O}lkK<#hj8t$AX z$DX9Kpw7b*oQvx)7;Dw^3H|To4x{3guH}Az>Wq3n4x-lKCh9v9p|*Q3lcUNrqxQ8l z7Q+BbFG8K$gIFE!q1G>V9k)MKQRn{;)PDCv?ehrKzK=tlzp1Es{fm0<)}!XPAGNNR zG4%V7nqP#vE?z9uxlM}7_hLl!w{#9m7ee)0%B*1d)lmJ{L%o;HE!_$A{`N$j!@*WQ z0X6QqmcPW(8&UmlxBP>sbAJvM{{d>8FHr0A*2<&TbMr`vdXM~3^Dc>6*Se@UT~PBM zf|}nHRJ_@!c=J*3*A8~eo54L%Axvg zgc@fnRQ$gzJr)&z399~T)IRP*^>-c>_YtbzQ`EY?MvdYCS?w z@%EXgQ2TZbm*QPZk80-HO+>|+g__?A)H)uv{0ruN)coF};(bQ#v!}WH`?^S|?|L!J zf(3Pt zwJsek{Wt2nzYw*~`^*cdaXv!*T#eq=%_ozY6E)5PsQyc$##sY3j|QlC0haEL8rMM7 z`b|Zhza^;e>OR!DxPjW=`>6eTYUMudT->Cn^-hQRu{Y|xZp1?P8H;0{KiqosK#g-C zs{fIe{ukBHQq*`>qsF@%)$du<`|!ldlmF@FnFVzY3ZvpyN1e9@mTqI|PL}=)vr#?- zbuKnz2E2*>7^%Jc-sME?UqjS71fbTjJ*uDXm<#)(zH=Kb{Q#ShPSU}?o2YTmM}40z zVF`@i(dE}etK#Sx!)4Ta`4km5Y-hJFeyDSn1+|}fQ0r6? z6|W9z{hFfIy|tB3MYWq}<;zgxT#FjdW=kJJy)P$F`*Q^~k8nY5pA(__^EI=f`YmXd zLXE33Dt-%8zimV(?ofvEKzg`wlH^37I$1a+>?q1xZZu=v<~j(Triq0U2;U{|jI zDqaaxKjkdH25Q_5Q2QQ$`h9x>rozMMi%-!HV|8)qe5mzof{GV_`W^&g9vp*ee*m># zk5E4!JYAjnP~Y25sQ9C?5w6Dy7^|B**9}qg8Haiwm!bAy8)`idq4w#z`5bi~zoFvC z>F&&ms$U5er@0w~TE9W4{Tgcd<52JWTuXV=X*v z`N?~_^)G6cM)g+_b&hMH)~g3Eh zmG?%qAAI`OHn@`E@4TG zG|ZioN~rVM%xr6RLXEQr>by-f|20>l&c{{^J?ECbU_L;-pYKucL+s)1JxPL!n-Ueb z0P0+oMV;H)sQ0lQ>OJj&g>X3PoF26NYaG;sw17_J5l?77&Wi^sQzAB z`nwrvj5`N$QSGy!)+aaWJQqieJHYIY`gt)N^?uH`{H>_>?>K5do}v1EhZ^Tk)O+tg z)|LN(Y9EaHK8--tUx_&}1T~N6sD1o^iW`2MTfZ2nbxDERpLD2mk>BzQqs~!jRJ)3( z`PVXApw_dKIRJJ3CRq70%MU^A>k-t?=NqVTe?W~l`gk|KM5zA!Q2k{_jVq5?9<`p0 zFcbDiFRnz5<0NW6w^02(viz^8exglq-{FKfgmeScIPPHR_Y-|dCz$Adz86A`qdIC| z8=$^N%~9|D0MxmeiCXXDm<>IX+lkT@8(%8Z-^_^`Zz0rsQWCZQHBsx-!qUO0{TyhHL!Fn|sP}mZ z>fCNb#XE#rkCUi4mr(T|qt5#q)Vlnz^2Af!cibN}@9L;^?ru)T45Zhi-m@F1_u@0^ z9L4>|^_LMfj$EkmmO+iL7V5kRZ;buq1yK`2ch~Of$IMsRJ+Bfa~@*uH20&N+eT$e%hTivW@Hbw1MYt%Ui#L)G?Fr-IY`8d=$n}!-+2kY9XDz|!z_P1YCKagblj+MhM?AAx1~>^;#@+#AJZbz;6S5*DN|GN2? zMeT0@D!&_QANyN+6lxw*P~(}4{aWJ=DP1vK1@ftCTc#tQ02o=@g|`9 znT7h^EJclf8|wV-!3=l_^PtZ>A5S;ThZ^r{RQuhicE?fcbQX1v@1WM{9ctaf&3Ey< zID&Kq)Vg25(Dx2Ct~aQ--%;a@yuj^CT-5&iquNzMeSd3W3G9eEe`_%Z9>9$F35#Lc zh3?!3pw?qB>d&9jq3e~zui&u z9D$nGOw>FVU}{{A>h~#`zW1Z}b(eT|891aUNb z2cqgtM8%nn>USlo-8R%XPoUyoMAf@z={Kl)Kd~gnUg_4QHmY5Kr8}a=-xsyMgHh|S z1hr1PQ1Q>9_Wic`3Kie8${7dMe_AsqYP==Ti`7u?O=r~mHW4+ywW$8LTY4X=-APox z*HP>8#L8cqUr_5DezmPXDsDVfeh$?53t(}qf*S8Qa~^8E8&K=957p0c)VR)K7`%bn zpWEn%uTj6pC0^s|Cr5wMX;AH|pyJiX(Dw-So$893=Ljnwj~eH6)cZaU)&F8_g)32i zeu}f!#i@ZR55Um#V)=d0m;AA)pIaMI^L~jMPuO*CJ!7E0Gs#fzUwYJcB?qcqCDeN~ z1k>PhOP{jzJJfssPoupgWIoQRJ?(xpG#vfD=tIDzlvJ_7pU*sNV`>$eT+y!1w$tG<>$8nqsCQSZ+ZONXG& z#V$*qM~(9us-Fj_e&3?j;~Q$;5jVR(hs8z3EsI*WDyaBPQTr5#`aO9dY94b@<63X& zy{LNUE&q}E!3-bb`j3a&=j5pO%NMmDB{6h=QR8cG`Q0r&2DQ)AQ0>>E`rCqfe~zQp z?=)(jPf_RlE$V&vZ0R4U_~Ev={$irmEfs42^O!YI@j9Zu_rolIuBCUF7g6nBqSi0m zR<~|Z&7`P($cQ?hxl!v@5%v9QfEsTfRR4ofe+6pZ2T^fuqW1GKs=p7G{~dK+ zBW`o+k`xsu3#wgy)OwUe^;h1~HBjqQ54En1QNO1KU}l_$ihCOMUfoBHKgxD@eiEbJ z7hlYUwNc;w5vcRO5;Nf$%!xlx>yTrIi&GA@|8-I4ts|i4N*sC9dc zTAwI8eLP(-Er$L%4!xv9P`^iALDl<=I@fV`xqj1P2GTh(H#SC%ccPVV#;T+bVg*dF z+pSM?)Og#W;`K+3dpv5qb5ZNP1-1VBQ0scq@-JHcZPfXFhWc*&K-G)7$NfEdT+}|5 zFe{?^sfBt^T3NaqmLxp{)&3~zT%1Ln%PXijFRc6{>O1z+(nW!sHkFoSQ)Ve%G&Epkn-k$v~UUXDCHEMiW zQR`d*b#9xZ)~gMwUN6+S9EzIX3`;LSwF^Ow^OSiXHIL7za}wo%`)*`Fwa<*&uRN%@ z#Zm8BZPa*MqRxFVYJCP;dIl=)GRxnFTF3LKaoh~RLo?lS)5+8Ew=S9`aiR!Nqs(wY(x>rYy zr#+^_zfkMG02OC5>YVLFt@A-k-$2!SfU5Ti_1^tN#YueFt#2{2B5K@qQ0v*n@<*fM z{)39Q8g&l$qW1j|YW(L>Y~2?`hQhu3+f?qWXPk={KnPenQnxdCYy+)1&593bSBC%!(sW z^V^C#C%aJbFQMYzM4iW{sQvnZ8c+1&?mHPD)lWuLynodeZhUeviPg=$~J^6R1I5rCRkXVkv; zK#h9}D$X2K+yz(;H{c)m-SXR>bl?9TsBuq5?cXd^yWObuJ&o%B5o$gEv-0q#+&JT- zzMrX40lE~`-SwxibhIBK03!r{} z7e{?(nxNLHC#u~9)c1ET>gW3k42vgG`*{{M{>vB!@1y#EgxdFaRvz`di=WWUfofkF z6~88Go=s5gf>HAvfg100R6lc3^;e?C9fJBUUO=6nhp3--pHTCud%^vF6NEb7i%{#Z zAJzYH^DJtgFI)LtRJ^CCb@+yU81TrHlcp*oJ7s{4Q9ufm)&|5H|wDG=TFqR7>(+84XVFA zsP(&nT9+rNbqIIG84Wf6c&L3yftp`V)c3ax>iz0zjz)bS=Az;(!m79mHP0Vd5tChY z?`>NwOnNe^{yEelX-6o*otwzN;gPPAB)H!&M+OMyueUEa(tzRaVk8s{r)Vh8^)enEq8QqMJTF>ODesZGLJwIxmB~a(IJSxtgsCDUuiZ>axkF!wwv=#M! zpFpkW6V&>CK(&u_->pwVRQv*{c@{_2Z-Dylv_Xwy2x{NPqJF+DK%JwVsP#CC>G3iu zj?V+P4oOh+$%2ZL3)O#NRJ%&3pBoKO<7k4KR{*M?{-}MLZtle_q@Q9YO#INzvkc}X z-2#iNK9itdq*u|}bI^ToQ7dK)}yoNfbS)aJ`QPmuc zy~#g@xv=b0SKbG`q_?8Rbq#es<34l$yX0UjLiz!!|FqBDyz8O*2}bSTMAXlb)#$}5 zm<_+6+GqUFtZ8^9{g$MdFlG= zfaS=ajh*ljmce?j-0vlGQ2TP!{EYQTr+@9^X@&!^D&EENnB$Gxhd!u%o{Kua+fe83 zG8Vv(*aCCBb$Vo6N&&c`zv8==nUQ`9;9i5gG(_ilc5QRD56UfhfNIdl(0 z_w|GOPF2ONbYMq~<#-IF?>!%QEJdIKB!4TB@ zItulDpM-i3rlH=u#g^WH`i}2Ky%*;&23|#d2cKY9e2$9S;`|95FDyZ|^8+A^mpx%r1sB?b||L*oHH7Z@v(rqyv>G7!kLQwmD9#i2b^kR}9E?p2+ zuQ94!PgJ~rQRiU?YCaE9?R|c_bCU)&t`e3GMy>Az)Ov$K{e;jsA@$#U4-Ze$_ zH_-BzqS~EB)&GX-*Xt7|be#*LzCUeH-^CfIbF$lfhWf502ooms98^T@OEc8Z%L%A` zK7cx(XHoC-9n`t`im@?PSU0ZJsB>8!weM9?{nkajuYFMGaXD(ddr-emJTPCGUs3fU zgbNdTj*_8%9{Hl)o9t!@j7z#EY8-9Q4|}2)=c2~37xUv$ONR>|CiMM|hH9S{6+a)A z!crI+hojEdMAUrOqrMA=&D)rd^e5E$&K|+7Z&kAwYP<_k&l2sB?J@HSdq8ct5Q?N~AEJVx;4t%4?&_ z8>8mm*7Ccc)};?B?l{!`Pe-lCQcE8}owv)V^?8em7b&uf7Z+8Y5*4Qa>isW;iq{FX zKK-nG9O^qY9krjcQ0-Tv#&;BTzAmD^tJhKAnWt9%7S--2#>CiB+_+Mq&Ql&#zm+gE zHbm{maMZb;iF%JWp~iI%^&Z?u%`ah8w|<#W-}erv`39lJ^%pAsAk_X%Kz$FFqSkv2 zs$GbscVOuIW$Cl1ey^hD@eGUOcht}AqS4&?bwl+x4|N`wpw7c?)X%4TW|-)1eyLFF znhVu`UQ|DYP;n}oHBt5ITX`eY_oxHv{LM0Vq1NpVs^52(P8cIh==aSZYmna%v*0S! zxw(N}{EixDikQyAsP91|)VTWNVH}Sout6+WZx&V{y&d)5MT{LL^!JrwsP=17fDV*jdKy|{n?3nf3BeR{{iYeK1IDhZ&3YwMfD#)v3n2v z(T{Xl)P4t|<~I;E?@_3D(^21xIjHl#9yR{0sQ3rWlc;_#S^AcxAEVm8LbVH*#Kn(^ z8h3Kk`<%hj`7K@A(zQ`>o1^+~hdM`{EPnv%oDWBxld-6ET92B~QPlZ7Z~5;~>l-zx ztCs_{Pvueb2{1dN)}=d!!4c+YRQz$Meix(GYbEMCv<`o7#o#eaiZFQ4S@ z=XD&^I_5={7eVbyWz>A@q2~1`DsE>~|6R}rbMuc^ScSt87?$6EaU1tRo^`#`q2a1( zzM`|H3dA*B9drF{x|I9pd+Masf^luPa{lNOdi64I{?_g!CCM$_ns%#s9)-&pd=so^ zeJX(7)9sqnZ`VKeT$|X58EY->fy|-R|EPDF^iA@cQg6JC<5!saq?20xr5ZmmD$#cj z?!3Rnxk3AK)U80nU5v9C)}VYnZDvq5pLR28)0sNqxc#Z~nY5V>Z~W@Sr@;`d#2mC zds6?K_0f}hKHRe?`-eIUsUMMYUH_0*(mjTrQ$4n!>>OiR!TsxML;F<3J52rjwCD5e zIZ3RGRLF)|tly8M3zGiR8lE;E6YDPddI$BMwz4r7HC62iedu~_v7TA~QLPTYYIxRD zrw(zZQtv&_*+N_VpMO;5ae~cz5pm`*mz<@xB7~andiMW&Td$qyoS`fNd51m&r!aFSd(}@WAo5=axdj8ERH|Ur~E(K z6}B;#C2uYDs?(-D`HL_rW1CI8Usq47TZgv4U&Y9OLi_sE|NR+9j%}9n1#CzV>nLPXX^Cgd92lc9@>ieQTCH|rOBVm?X_}#TzOJ(rz1U) z@r>mzN_+k~=>NI?A^$4*jch)7X;Ye7$%y^y8cO?u22qm`YuEu7h{2 z!69rz9sRCxjBzZdJRb4a(Vo9L;LmZc;$hk^=CPk*lXt=LRr-y(Q}7`5$1uio%Czef z^`emri0;}Cl!F?7{+c;4V#>a?@8C`X*(>dW#@@?4Jgy7YTe49d&lDCAcpPbbEm zm*)%IL8`=6p67wIdB8n}_{q8b$!kUZK<@SAkFv4Up#E5kA3!}X&-JOpUsHLCQTCH| zzhC!hcZIo3rd-!m%1@I1bv5TXmHH)yuHwJ7AHrByQkI-L1MmpJpR{iWafSJl{*Uneg+>UV<_)Ei8?Gi?sqxcIfzvzvIE z>0<|FySV3a>neoxxWiL_AoXTiKPnqeeLvc@5$e^X zZB495x)b)NO+Tzen@ZH($32F!x7;VJ?INtfIMz_FF!`lX*8H3G~JCyy$^B&sk z8cJCf`btQ?F8#i*Yplk^otb*|tZqr>+>x@}+~s+0M*QQ2Q?^wEvyn&khw zevsBxg|fjs_oZH2?$s7|5qWP&f5&c&W2%isZDv{9>^!%m&aaEV8unDNvi{_su!1DC zy~o|$$_~({eo2dB>(iOCfwVn?iKw#-50idv<#)(SN*=!o{$E#D=DW&b{-mT6b^fAF zEb`h?_a*86+;@5Y!{&9GG=GKcSxDP;+zV)z(aL5rrs9;}Ag=@JiuT+5dJ=mZd6_5+ zuW^!YN(?`4T`{N|f#)dJb`JKV@9D%J@2YraV4&4sMcFi-@7p|8B@@s5s?GnO3~rup z(N9I<)aSVn<@z&WGV+d+my@=g>2nEpJBv}3c7NG?s*=~2djWSY+H|0-H)Xl0f855X zK6U*?`AG70ZE}SEvl#hzEZ#9QB6($qwT1e5tlv4*9!1_!+>Qk;)<^7a^S$_6pQS9; zTk6M1QPE?}`kE89PA6T2w) ze(H6gyd%&5P`@?hTWB+#=e)!(NqHS&zO=DaqwFU639u&q$sNM8u97_eetohw%G00I z7SPXG%d0@$hqMbr{C}_`=^i})%X3|elm55%nHj?eVw|_UIMiD~{Su@@C`)N`oW=8I z@<&m(E+*mbz+8?HGnl&FEOvD2{loo&db(;8Z#;EVQ|BPh!|^}v%f!u1o5s{F%yWL~ z{JQp$9&G(8uMGXHr44@#>A7nCtX4eQ)~8(`p8x0dQ}dwR3~pVck-r}Ibf$eXi~W-J z1)=Vhq~tz_+BE(syL~s*D4OwG7i(8~$3yGmqz) z+!u&jih93aXDR=69imP!adk~0zZCaU>c7TZHV2gzr(SGZt3}G7{08kNau?@LNV%@R z$e%;I!raMheKyeU1kWp}lbX9c@sC(pWZLH9o?>I1L4E`7{N(+*78CP6c|)v!<@X?6 z1b0#|2j#Qr@0IFsU!spkw0K;m2o`zO=uH^=Rw5U zz3!WcXyjaAm#j_X7TAu0*qg^FEaNQ<9q4m{{nANEJ-4%H<5_2l)?Bu_r zO%0ysQ+G6d=xRXQ>DKSxq$f~zg1Seze_drQ_OEmq>K7uft;HBY+?EtxBR?y7hb*4z zmnZ%x`W#4JMXNvD=Apl@{B^A)?<h1xzf92@U5>qq5J$=6jK&vCyaW-;RA;90{Oi680XI(gB^XinZI@^r-~UJ~+}P^PN^ z`F~J%3Hc*QZ>7x3^K`3UjIzu&hFJJ7?S?Xz7Uch+?k3VV6}y26=~U{yjoR#5gD$MEeNzp=$~0i&m#KdC_U}>#9P2 zR`P~Yf8MW5tZa3@QC5jET^*>Kll#MO?fcl=cF~8fQq+A&ohH^sc@K!uk+JS3KQHxr zb2lVLH*0f^=MPr@0(BEouR3L~e(NW)0&&f@bsa!i1JV;nFQ$IC&{BR6B2H>+x0kZX z^p(cSrjoyg^d9>7ZgmFne8^(%!nmaW#4XmQGU?y1RkS}#AL~(`DEGn3J|IsN+Z7d*m&q?R$%LgS-Q@O-&#(=`aEkgw|lu?BGGvHpB{PQ-IV?q{xwrx@)o(vPn37UP+vm3Q98 zqi0=9tSmYC6{)|Fba<;1j=Af~NBocEPat*`(hn_eRPxJ)*7!gFm}7JL!kC-TrX_b8 zo*Qy^vTB*gn`AMRRgSV8+|jJxq2yg4PFd=uquver(N&4^_uQ9w-ossjdn4_1z2)9% z&xL5)l(xD?@;uf(diGKNfc#y=$VA*9*p@ktMqMG+k4y2hk^0+71d?By=X*TA=FUgk z^`zI+t_NiqNe9u-Udno5Gh$YtJdo#T^p}-#T}7}u`MRpoE)w+;@f_Fkx>H|QOI%Cc zal~&(onKdM>UFny?Zze+*PjZjsk@o-#W<8Z56_dy55iBRb)|E74qHEIiE)>5U0#b- z(EQ2xiqLKm{g<%%VR@cz&y~$Y7F#g}=pS4$xc?^ZDT_UWx{X6i7$foLk?z6WkMhi< zlM=TPTk5?Q#QsOj6VhWElF=6#sd7C@dWX_lvryhuSlCeNbklj z+=VEQK$~OOnDU%Fd&qCaa}4sr+ZamI#+N$`>8_NGqmD0i5Af{Evo3%73!sgz?dB2e zW#gMmetVwv?^tqKd2ZTICeCEi)rhaF4EIrsIhp>F@qC4PGjJkhb1hy`>ffR5PODpo zbXuM>QfI!^;W6~8Nc#u&tbg~mh6${^zLeLs zbR?JU*?@;=la9Jx%lm`0u4U9u$(^3(#5OPGf2MpG>8(m|b)ml`#LY-vDXc|#6yh!A z-a`9dS1HO{(%>5~D5s2U9NreFfkq>|=GJQRg=Ib>jWH;#og)i1nO$6{$ahLjIGm|9uT4Zy#+M zTb%Bc%_iNG^yc5{sX=<`ekJb(WsQlcE1~tb+}a1x=Th=oSl_CXlCdA6{w*cA%97UA z*6P%t?KslQN$cO4UBg_|Z%KYx`s+x%8?>29|3Rdusj*!#E!GtqPkQW3SqtvxJh!*; zwWn zlDEbBYfa4k2pz3L{eXhP>YRnl>w_-MIL(1^72j#lja*tpy{tPI2;f()X`xH0ih8F}a6u>*|Z|+@oh9&p(O(>-v*E z5)gj@cLD2XHF+Dke_aRc;TCPHQfH;5_Y)^B^#@*I<~<*~W? z@m#_Bu1o!8)Eh%OH|67~uj?Cks^9vKNQ_g~{OI99$rz}4O{rpReTBLVd`8ZvXKegqaUpemF#-0cO#$i@2#v<~hx{P=dd>aodO==J z>U1IaWAZ;^Bhn@D40jIVJmHQ_gVEfrc@9gyu3+jH<}N}yyTzPpP`1)+PgOT5(6Byff`~^E|}Lc=XKV`5gV-rcF7@Z;?*Ky_Q;_7`kdwo|^mDRl}aIld*~CsoV{D-uqkIw)R{BQxJEFHC{`4 zInT%FH!^+dszmv(D>|{_aMvSa6LmZDT!4Bbc#g`mu30?m+CvOo*SKdB!=Lfqu(A|9 z7qRgtW}a86JApd+d7i>OpLA{FR;T_D?mNVYOTMnyv}W=2_&+|(1k5cER#c5CeeA*7h`;;H#IfSx@=wq>xlV6SJ;^fER`PbE$ zHoA_ISDm;6SdT9}pR+oDlNUmHPwtdFC#C!fZL(P0T0Bo7uOssfp*)v@arJh1su8Ct zb=T4F2I_Pne>3-7>TaW5FztKsJcF{l+_=)rLG>8@c>1vphvhu_zL4Ib^Ppq#wq~~%kqh3VH*O1?i z=XK;QS8VE@$N1#G!*Dj989Y}Z?^N~R(*6zi84Zpr7j^gJBl_AyzOLG|$xi*JJU1m@*L&_S+!3g+khQpHQ~xq! zh(+CBS1I~!MTOO5bfPR0WnYMqiu}Hqj=YyvIfq#v|D@hl?se4ZLY+V>+hta>`Ru1W z9Ob$mFqY=rZCuh*$`qHWr>i*z5chzkr}5l`dkyJ6v>jn_RksuQ8-Gh5=eaa_x;|64 z5b3A1OQQwg`7HNs(y#HV#m_-mBH9!tZvz&g-8!nrSGhO6Z?Lyj^Pa)p=4}EqkSyM^ zWk7K7p8-9+zQIbj>&QcB4W+sSQrA6n2n-4e?5^jY0l{4Yf?PrKE?!S+-{92VcER3` zfnB`Ky{*~>1+?rE7}PV%|0w9zynVY?-j;0x+qDe%|Ca@HXx^^9w|T2pK@92tuF^8F zW9xQpx&{Tb@-o6MZ3DdJ0)tuwcxwc-X&2n(e|Hw#ws}y1w^dNPZUI4|<7pk(wPPy_ z*-*dYJ1q6750y?$|2>SoD>E4``YSoHvy99=I+a@TmYo}muaL@lm+?zGWabL}$)}@YHY>{Uijo?@`83bw z`CyZ^?j%n-FD?$Z)5VNl%8N9-X2W6mfs{49KY6mwH)ymo*;qe%v0Yq@=PcP>xtOMt zY&QGAqNMr9345T12OAV(w(LkYn`K#Fgab@lhWcg3i{$ievvb%n+$)z9IoOD>0Hw;s-fgJMoU zHg-z*e5l3(F{Y7?1`w`RuB=z?{3<`cVK=Q?#-mp&-!DJfgtGBnT9sd$t+&P%J7B?V zZ1ZBo5n|PB6n|N;-2=Ujit%Ee+j=&@oD2rZUjdggznG<4e#p{o*3?sWvLS~coBA72 zl20-P zuUF*Gl0SB*`E5}yX2}*fEt_WN;6%L)vU%3eW_jAr*l|v4V~=d7Z3p|q^8BVl@e7I% z(;VD7O|L*U<@xzys_ope13kH#s;y=ltmYs;pWaP`ZNm-T5f!(^+wpYHD_Tm5n|?{okHBj$j|xM05wo9QIHf7NS}3)5_sO0WcW}Zx|lT4qB9teHP=bMhqj()V@T_z z5HJwNM$#Zaqd^&g85A?&Ot>g=#F@okCmve^s1C%zrVtBKf|g)?&c#Kg?=)0Pe{I~EJ=P#& zSz23r;1G=#!+9}*46t^ZP?f=$jdVbQ#9fNp6x~bbcaxk(n+y!EOnEG%w}05{rU&Jv z&T%`jJ}m8Y4S1Z5)Mjj?#rrnW;W8&fdSUD%7DAiV%SI&&1HBv$^Gm1)ob@74#f8o$ z`FU}{;b*hP>0*4tj*ge9i{}pD=hez(IkcaJz?=7Sd^duurQK=y@s9Ty_=g`DpmVLa z9$~~Y!|>bLw7(dTHkm+roGENPi(AzB*i4%xzdsrRbm#N?j(&ya!2UZ2<#UMEw19A*+nvWQbmiQMM4Xp@~08w=pk5}}j{lxoW z7S%-FGR}c^UVf@B{TUnk8~QC~S6c3{3Wjk+2gPR17X1yEcGT&mj@y{6p2E=UJo@h# z3G(Eyx3j;$@r^ctjh!y~WY5m?v6e91pABhI2}O}wfmx9~>t=$}^HlO%$+?-`*bGg~ z3oISW4$eTDD}|0$^VN(DG3#IquKq#t<~-NkZ-2_ zuN$THx^fg=dN@$q%j8$fH(N|5pNQ|ArL63(RFZLCq0#H$iEL)Ca_9^n}Uie5Zs8o!Uu-VK5M8c!2`TC_~Mk2nTwy4Y*M^6pqtv z|A^< z^5I|xPkWzF`&n@Pj-%wE{ymVaZz=X<7!Nli<}?i>C0(0xhl?4JH<$U%bv$w@9ym+9)+tUm|CfS}MG(h|J z$Abcv^7uUG?@B7o1X`@o=?hhx&c&^Z`0nO&sDQev z(~dukHNr+p7gTl54kSBQD3SStr6K%CQjU+PAEs#~BzrOGB4WPO5*qSdOn}#3plr-9 zkj*(WI^Nbcn;Vm~l9i}snwia5NGC%?#Ewmn{V59#pX8l}tz+zRbu?oT{qVraBdZzByh)o}C;*FcY z?4);66RsZx!l;qfYRotToa6^e4?CcYl2c`WwL>Bw`V06YMT477n~<)(-hT1bbAdw0 zJDp~g+G%aOxcpjKWl61uV6TO@G)X>A*6Wl=(PIjVP7M}q6Z#HN5x@qAv2!)$tV8c3 z{n{DQ5;*TdWJI)umQc|HJb?QjplJpvK^=P_#f7b>b zFa+NIp_U_Wj(JKog0&`eKu^*-K+E5po_6U}E9nXjy+~o~Kj~gJ9co6T@l&3|GOfMM z;Z4Su>op$0B$iEV3td~eQx3~fU(}QbrmVkdmzin)yl@QN0wQ6Y1mx&+Ud$ySBOt*j z=?6>$p!hF}Xhv*r98mjZFHAzFLzOQR{xMli_G3&&Wc#DUb}fOXqWLO5y^1F-;= zmE}1!hiL>*h0|!&|E01F2TpA)*p~|cr?nmq(6~Z|Xct%|KTtwc&{oVI+)N9XBbS1U z1*B4Pq0bvQ)vil;(=Mhg zW;#~DL|DYCGbo}~ugTg=Kfcs&G{R{~IbT_89b;x#5al-)BJirK*CJ&8a{s2%g@MBu zvX~(2;V3dYpBCuc0&`#O%RsCsh6rby@slVf1@MN^JKtz~qtttOk&AB>v|2xrk&rp3 zIhCbi4@cbq4=-!fJ~nHH2Vtn?)fVefjbD;UDzzNk;oXDTjc(woAEcIjSh#Vt7t2;0 z>{q$$t`A|%L?bPnvC(2z0gvV&tN@Ci#<(o$kZw4=0?jk|5Fkwq7O+`{WFt^n$p_4T zH9di{ECDWMNBz}HghEebv!st3_~aF zm9Uf0BIE+0C=~&u#384W#l)7JV`u^KqZUKL$}Y9^R0t5hLWGD;DPze{7Yj5Ca3)aO zNqhK`aFETmb`Dx256LZ{Y%lmU4`m)e*3vnCydXNh)*er)oEOGAIre0D@*L=F75dn``k2(Q$nVq^9-j!SA$Tjq!MhBjCecpM1n#4 z9XbWHrZgQAdah-w6HakRt8(9g1?sHt7zJQi<+5)s1c)ubj)Zt|&n`e73`Wr;LbDk) zax;G; zyUA|vC|#5Ae>KNy^z0cbkZEUfHR+7=`7=Kh&+_rJ2`2{iV@FJjT)aAieg_ISEjI?U zvC6L}yKLkgf9IL~ImH38dPt>JWo<0MT*MAw8E~Jp4bmS5b)Exp150X%WXcqD`~j(K zQ*esa=ZnZS}lpS2|otW z@!7gDzQ-XnmQBs|B9^M5ET*8%k~MJY)kp1Y6i0QkKv5W#W>w3k?h{9fra!n`M1&ce z3ru-cr8al^@zmjsWmo07MkpA)8wFm*N-iC9n86fr@od=5ljp1U%w`cP%IzdP!lymX zk$TlZbUa{PqQuitbzlPKL3_{JSjvBXQKimheCAQyE%s)ir=UI#iH7`nc9vu<8_r5O z`k3=HWST=Jweb38Rm7~Y{Tv+_d6!IBlD687+V-I4+=clVmXpvw4qH<3(@J=dKj@jGha0kOCyc`}7sQQ~q>X`mcIq{{4LZLF3?2N;oSoMoRXH-Jm71L{}KS z_}zxOvPHrPIF>ke@>jhFIP~U%s>xQzr|OQlKGP^hz?yV0$fRu7x_n ztJ*ZA2IJR-Jo1WUw=@oL5KdEgGn12KWB1l;cs2-!P$>r!iqI5O)(@QF%p%+7so363 zjX8Un?&H6lqxWzz(A1td6tkOP)v?6g_%LqZyHbSB_8F|mAVis7qV2;aa{-gNi|NP2 z3N3DY#{ENH;4D&`?xL8J<=myKx-KgdMQ(igCmFoyqv_Xe84VyZ35O&|-#?O6$TzY>KD4)#l_Qgng?xjN&@>s8tEghPr ztJJ6_Xe_eLz=u?yDf99V3KSb5CkqZ({&agBq;ld9VD7{%amk(${^ws;S35l6#nSs% zUovuzF?Iqkuw3E5+*3X8DjQxHSq^1IHp3&^j;cP{`4cho-Z8Lzcs9mW%szXu_Hs%>PkUV9a!yCCl zMul~{b_fx`*oG$lRW>bgA~rY48E?7|Vo0add&3IbHugXjQoBYj~E1yCW9mvq!%92Lg3|;k#Foj(NA}W#oRz)H>q zdJ5zM{~9#gaB%GCSW19DKoW5m(v2~9LO|lha%*}or=jAyGYF$}D)RMV-^=MG>cJKX zd#ThBi-6|`zBlpL9neE!l{-scsKCO@bGM4q|BCgQO5qxQo~DPW`^pLScsVM);^5s2 zkL^y2`+K}$Nr0}1Zpl?BykWh+!-57f3JE>9S!Psw2uZ7FjJy6Ap-o<4?@3(}aiPN! z%#X>Q3^rb8ePqDb`1a8F>%dbA%66I>!767!IzAAu@!Yty3h>=n6klWWr+U%HmjT}r zo^Fv7yn|thF@!sdru0f)m;5V%ci?m~i_bkHILYfNyN*W(9k47cnSO2>t`EOowTLrhhN5_+XirM;y-QCwdT@fY z0lEeu*IqQ=Z0xU-DqO+OaAJSbvr|Yu#&xAwZ`_ud2z8JG{s=s5A0PQKUWb>_!f*lN z-AvvT8=M*lE{pW0IFkd@9S@gR{IM4mXLrM!5u-PpY_>5^*WR-j=g5CMV!nHG7N7CS zm=OgLd)bZdk)G$SMQ`9U7IaG*V|vRUp5&`!f1kbOLP>v2q*=@9M=Ow@x~O%LK=*D$^o#___$6B%*17E!kuhG}<8p56Fh zo2}^Rs%wb8*zu;zo2yvSLve1atIV{g9nifZU7O(c4ZgAI8VsdwBdnVpNZ2!fsY0ja z8T!%hiW}f=G2)UdNFhEz#(4w`xggEc7+1@?WWOmUoA09JMO_>A`+Y$4g)vgL!L0&z z@CEXZ75K}d#4f(F9gasw*I!&1kP;ouC14lzmk5>GtIY&0h~KSnR}e{d;_7T8 z+k5p?v}&vhs1rC|!UY4@>X>T7EOqkm^Zhs5q)Li*t4XezGY1Cl!l+cnCICn1)U9+710mG0Q zylnUFr!j{ps8%_+osOia36m3gs8tohq%eun-5WRLGQPXKX~ES;L}6^2zY9*Q`!1PX zv{S1}exMeKjp#Ik$_&8Z&Bc9zl&STaW5@l#+%D3a#fe@P7w9DA&!96d4H^Y?n?7~} z=z%kXleT$sXl%>11QfUzK%l~}tMv3@KG!a+q+1-4xi^OnUuvtZgYUM!@45Dh1BXm- z;Sd>X<|Yu|7CGnYvSC}7dc-=j_CHlBwCAx!-tE5Wq-&tpX(|g$>ePE(kY0+7N-h$`q9r4U(!jR&Ztt+N8t8kzC_y zLb`h-SGIZfu`yDNTwI?rhm5*AP^hyoXe>Am&5?{|muI4xbzx4V-MwXDvq^DQG=|;C zs@$=0j);RKO(0WiHCtJ86v0?Q8fjC!I-uvmBCS+Ys?;f*4|lF{6MEHMbY*vPQyJw=a|Z zndlLl5tuj5=WLqckH0^g!HOpP2;_Ikx7jF@Lj7Br$Qi}A+)o?(U-`-!r}yH^7cVxx z?XD-^BFMtPehYh}LJQTGIQKTY&u*^leltFs6YTB zJs{mss#(~M3Xb!kE;VwcWyb4WiZR!K!(I@gIjwyzdbB$xdU&VM9hTIl zky3*R2R-yRq?Q8AByS5O&9?=ZgB}y(_xMZyPZ0ns2gt7ZR70ejI}(aLNWwh3_ikt7 zEhgQ!ix05n$=kc><=wrlm3jUcmSNZBcpz*c7J-xF8q?2{gERCXU1l^(4)8W#Xl@5t ziQpj5Zbs1RmQOgU)~(EW&J`w)KA|f{;W4TN8eu8w z$KZF|NMNwBrh-)jsIjIq-*I zG`rz=S%%*&3D4pYJr($UK&}PUa=DRjwJ40c`Umz4kP21h_FPjkOJs>rjDAELVQ!`e zkWEqmiVas+i~Kt;Xzn3CU$RAoWaw9Y!5Cs*8bm%zIL)}}x|&TxSDAq^??$N{uz7`zkw#jjbIXNWSzX)5E!P87d*IiQt>x3(X6H~q@u z3^28Qh-X1}OTL$;g!~CvIi-Xdz)PQJOv!oZihBi3M9$T2oqX0BMH$C|I7mBI zAw}#6wCu3=IyubFvr>O^IN1Wsc?xvCf?LR^>GzAv5_Rxx3v(W#cDl^aS52vPiG|>h zeX~EVf#PwPeJJebPMk6CaLs@h50(ty{PheOVR}zr+?CVhHAc33HnqA}4UG!XLQy8Uynj>gE+O zud4ePmViSq^7mm589kn!$Zn{LjWTx#3^~R^137VlS;^vx zA3q;qqLahoeCqP@)ASYK1|kO^nbuE!M&zUNGRE)_7+DR4t&9c~awY_Y6^<2QRUk7h z@Evxhu%7fGraLfChlN?j4-3MCa8+rXE07v*W|wB74ewxcZ#8i;`k+X66Jmq-O$BG` z>&w>cU1%!mWhBhSv_KKL7eX3qQxaxE_5op2e>OE|`k#39rP6~#83Y|zkQckgi@mA5 z1$9S$(v}jnuvQ#Ihs_0y3;I{sy5K)yuZRQsh5E7)Ji>4X2g^ga=%_)oAeB0^Lv~d6 zU$IO%XU>uuAdsjjaNX8=tQp2bI0O{EeiN>Gu`6S(Hyf86Cp93e(p!u%upH{vuY7;} zNxY^%otOgKvWfL*ztZXX6P}Ft*~+$KNYVplC5O6qxG{vm9TJ$c=@i5YDi6e-zI*HV zUGIJoQ{ni;F&y3z@4{S^8jop1t)pZ|eDza$05*f6ID`!zK`@Vwkq?A-cQSZEb64;;;~efN@F6urpB|)sQQzsB)A4M$ZUuhG z;ZM-@s!Z)B;>e3tH-_9z^ePcXAC$PTVusGuEU1NZX9YUeSj0T77q%4I?YPIB+&{Jp z%SJ5yYw)b1OUaIELcd0}c-GtzDfFjyg0{E7qgd9zB}ZrmrWryfPtudwUxAJtm!krn z;i%+at#}k$SR*;(3r#tvTd?4oNM$AEGVo@_>avd*rcq`QQHgyKRDxF66j`dv@L?UxzR8Qx2q1r0>BW6r&VV)H(;7i_tc%t%xjIeozfSdXvwbPoQ z+>>Hlr}`$mrl5-jzoEF?N{DCpo9gubbny4o*}x@%YxuvlGeugdD!JNq2m-YcHx-64 zIDustljf>@s5k2Y*~TOi0u}Sl{<-dtvw$;=RjSfzeIO+x&1`8Buj@0?aYDCmNZI6_!POl)RTwmG z6W)Eh(@P1p3iFS0PhFsvHhI;;o;gg^7yTVgR20!1?}AWBT{mOJRhh{#TCztSa>07A z=o?yRb!RV?A@Xx2>AWn3!DyUUf$BLj9V$-BR?;OHt!W!!YsS7eu5kYI;ens+=uD!@ zL2IKYM9NKNG>FmxI~8hOON0Jw=U$iqo-|)=w^?NK;iaYK|0np`JRbF ziPcp#K{9=ZR|82fj^uFy3!ANssJ}dNJwp|4{St)BMM*6lfzD!>-bP{w8ds;N!BES& z*y`Ar&ara(gEL!UKRIriYmd#+o%oMyXz>RV8o-Xh0m$OojECb9Q&?&w@k~k* zH+XXzt>g;i;OX$EZEahy0mpg|@<9ykA|mfFk~v`-bg^H-)!R1?AVPP6HhIC>RUrj> zs8tgmAx(KG+YAyRB=OKq^Q|QcOPOJ56Rlpniwd0=g!qv)k<%ndL?sVPESa4-(HXcH z`0Lp~Nic;*{Ivl*nI*^5%M8aL*L*c!#LW@CA{3B67LRTTXvK_*6ui!jDQ4wE^_`d& z#Q(OKVoPs4#=9AMsYLg5?Z)zUWky>kZQYoTPK^Fl9B9`fvXeU?%rk4(m3eu zfa?a8y62&$0UyMr%nEirHZ=wWdsX>-@NBu@n{J}Z1m^Rl2ahq)ZAD7vP0Hnj-{|hB zN4y;^sp<8o^o5nIEIZxf-u|CqgQNu);sp*tWs*9R?pfWVSV8fDPIlVnk&fq>xdl>f z#lk%rH6)*gYn?2z8hekObLNk(a~1v)UuNv46{*v?KiSIBTWr_!!dq}=Q+01# zmv1eG5gZx=n4{k8!X}y}r3(+f;1wxF$}HHpQx1W}{CY|du=54C-!*vH1vW055a$&( zI1PSQU1xIHL(YN8mnKqngJp!|@C5>A9J%n+P|9c&A-htm)=8BeT!%M=ylX>cqrPzv zM&ANUS+%2;4p#THdJK3ou=*50hVKS;Ly*Y#9H?h@B7QuSKcEi%S^fY*l|5=?<0K+< zAa)Ii8cHMmQUwjL$}_H3R4?Pkqr;Z8B<`OFt*gtSD^dvWMoP1l*|N_e6+I$;Q!XZv ztwt10x`g;CCKJ>Mde*hksNpc*0TPLDiJLORBPz#7PA9qn_bJZ0~ z>EA%0S*sYo9TFOp#Qk9Xf@c$+xRROqK|aG#kOu^EsXOe?;u1!}%t89&96Bg1xT(pX znXP1dFfz!LDd(_tD?eV~KaMt67I}RCoClq{>iNmcRLsPgL;2h)^T+-)efDoU+;Auj zU9f|40Ao?xCV#GSv*6Zx5<|qAMYl%78fahuDUR74D^q-sw2IZ2yE=NrWh<)6hq zu}n@lOQ!#fO#1^&h+hG?pMW$a)n$XWzfp8!Jd5cB+0)%B{{$7CCRjmmJNT14_L7s{ zR@xZG+7q_7n6D=%nB(N(6P0I1Da{tUXJMo4(G0itT8(6v zGI#V7O7SYEA-JCbpYzeq1;lzHI7&`99`>i63`vS9;P8RG|I*!8p6-!X;8j5g7#=o>%MGA&&ZP>&Zt-c|fftE-B#d+fP90+|TK zQr9>dNv{(j16V^Ot9|6}(20WB)OhimL@cJtQ`i=bBR&Tw-S{eM&NCPbBPYMQn9wty zkm?nEV7eCWtAF_Lp_BWaoemc6XPD6jy40(h7%Tk;OjbxQPjqbK_1dqm;_TBP1b%pV?`GkEDCYApoW) z@m7X0?{W|V5rit55wk#k^2!FCa6tjJRM^J=K#*HYcANn4UR!3iW@QUehYG|0rjd;auixutb2AO~Mvj)7WpcbgT}#3qX4mX_N0%;O(Ipm9hA5n7nb}iimOJZWz%-US-3Rz3nbG?Sd66r2o4$>1$JjWBHW|+`c0gh8aBxVUA+LGS8 zot?d2FX^4t)flh1Re7Jl(1w?{crvnZAbqs^1(mJH!2+v(c(PPyP(Fcu79!snUQrlA)5=q29tf@U_K^zZu0m3U!#wkgQ zfxZtw(04Te*3uuxk@f_%+3%~`UB%ub7}<+@!S{{G#$LE4z^$X_pLD4&t_xy}^Aq|o zgYilvs4mPctkqb@x)SPH5pS#x7}SF`h83iNN*e9SHy2h45$;Tm4MCLiAH--R3C@MT zZt`oNsFG4ziS~jPjis#L+`p9Bz-3o8LbMnu02*mN)w-&Y)#aLmc#J(^PElWAJjjD? zdvdN~9)h$y)f?}wT8#I#>d~BKs-fZOR<$JXs?~PpM(<&<lMA7OhlvC}6&^W>Q8hy@pbd1-VGc^Q`59Ep9uD6OXHyNUDgYl- z;0WAU%qnYT6(5Df64X_IdaK2_2JVd791N$z0*%O4T9cSu|a2uV3MQ4>R8SMPF^^HkKzOmOAW-%bt_`ErGdpPQ;cH6!;CzAvPM}m z-Dc-u!da6d6#j;@?+8cepMp~mh&&qcbTuazy>ULZQQW1(r2%Im=d>HTst}wgctyoG ze6B0cj*uomoa=v-8-xaohS-|(0!K)$Prg!K_|*>)K7j~J=5gy53{HvnK9~y=Au2s=KF`dr1Xbcw8WB7c)PTrO9?^MW{)&aG6=D5L zh$#|xEf!C*5D46W;0|~*+j;9+mZ>PkLIjCcELx@8szNuSIq6*${XRrqt`;p# zz*Ml5A_Tf>u4X;g3g}Hb;M%!VI0cEtoN0{KjwE2?iE%@08OcrdCn%)r-Cj1|#uzps z_yr=(%xH)q888l97-^4CDI4tv7s^eoWE<{YtGt6sGBguz7gNB z#*5c~bX-l4;JX5sSMr_IB+QXYaqV@1Cn#tz9$^yU3V6~JBSKVx+~@-OIslKvsBx~I z8X|g+Rx^YcMx}2y^lp&B8XCQ%H^gt}MvMjz_BkU02aDE8jjTVZ&!+jzxyj9sHs9Om(P+mx8PGWM>8^Adb5gF5Mqb@X?9sHJK-gX*2n00ceeH zSQMNq`84T357U&OYQU55n#ZK!5!?!788c}N6)8AqaTgcF2Z3^5j{(?yd}o$JW#O<9 zi9D~U?66eEC3OXdTx696^q}@&(lrASw3tb6!M}bxe5v7_Aajx_4U-DNGlU;WNz)+Z zisW#`+eA{HwQxZ{7~?uhvf;Q3cp6{(jrHYfXW_cI%A}8^2^qT9J^nTWF|X*RUF;mK ztth-vSje0Ew_7zMPL1)kD@N^~3wvP*-gV5X@kx{leLYpB-PqK$4PjM2-7l&?7dzWL zc^Y&qEU6sxoo^Dy+OS9jTr9IO)T~{9RYA>tRbiQKbz^v`b!X{(67A;TTmV?1RlXs^ zNh0LoNihRY@c?PnFHU&;h~G%a3e8U*riG!-QLYiPC8f>S1CRCFX*SQ3+y@z zTwnqh-f;`I_d%b6A&n=TLX}X=`J#^}Ddv#CF6>^?BY_+BJpwM$f&?|zc;cUrh}Yi3 zul3_@g_W!m9|Gb$?Y*~UOY91S&Dx(p|2xM0fdE3vq_VF_9l#b$$thr+!q3y{;0vzw zg@TNnYkc}Yq0_#e~2;oNyQq}cym+ViPlFQfs&*zau%t+ySIaR{}O;TfaIPKk}NXuvhOsC`EY2>J{5!fF?L7&4`6KVNTqyy3aR8`m&HyK z8H)uBG$KDGgxt@FIck%Pt*U5qr9?}BaIl^U4S`C9c>7v+1*eA9Mi+yjeioT1=fI?k z5?L{oCryA@_5J5L)l`y7BX^1SF+6a7!K2!5*l=AWcd_izIaZ**dVUYvj*C*Y=!0mx zoxs=D^su!OL7L{WWUVGJ@L_sPI{+2DTWHo@7|bq)B9RkcEsbo63R;IKllMh6s-RI? z-#`j>BF2Tfdn@hO*Q7r@rcc7zbcNx*N zmjR8L{hN+;^zFkzk`T4TVf4-GhPD7wyBk9jk0$c0hk>xuhRq+bUbm($#cqmJ80BFh z0``zF>=8!da*@G7J@<9Ns5YL>hB4B9^F)iA)8verocX%WMyL?lE9+Vw=_Q>hZQ*g3 zUgJeOuJk*j7;iB>1O(k41bZNaY5VK88%PwH-a|to2`|Q#62X{=hU!Bj((y(qEaVYF z)Z&>80r(zOius3uZ1qtcEx)!z(+w2P-~xeOagpOm45tge8S*w#4YyukQ>H3wXI!wE zOZ3f@CBz(r=V;B>{N#w*P*{2t1Rz?Rg`A97i%QJ#{i>Z+<92?ktSP^ifEw1tJR{Y= z>z91rD%iC>3%!BHVRfVIAc)||R3!u39m+<(V2eP@L0+$^zWI@RG1H{7P3|+o0!Au6 zvM37L0V@($3&V`UjA*pc-8rc9gj1wsVWEIMRRmnzu8#tjz_hJ8hCd&|W+=r%r2qb8 z_8+M8bae0F1?2hexgWsj5GYwnYr^-CM*_t#8GIxV75&p126&NSqXjqw{)0kVRETPT zAJ`i81r8>Rx-J;>bG52$DIcX6XUgyph{1GF5otjvbrGmp0XziQ6LY8ns^B35=o*sn zlVN8DJZZFm{jN*@!IY2&d6o|&0v~25UE+)noyOuSGNi`U4Iw`lZ(>o=1(>GbX#t88 zDl~Wv_|OkaBs-#^tr{kMs?INqpW?c0W!o)OG|qZm5*;6@Q+f2N&ZA>91OnVR1$5Z8 zC|9hg#t@--^;)d1%?ylY3H1LCa{6HXezBKQ4!;62m~o-o@MX)^nB({2gYMU;nUG;5 zxvJh=`&b^gZPYei96T5JUhU+{=G(;!T`iK1$F_cT1?MyDU|kY_EP5@CI^w#oi0^06 zY`nA-iCN9e`e9f#XaqX2AOS%j*=$C|T}C%GW1aa5%h+zC(UW_%Es^MzICh8}RnpK6L-Ykcjr#@|tDlaI8fUb%T2TU15QgrP(mBy0u^%XDu635^ehg7&!o zd~3LfEG5-fk5`9{a^LYw)5`ol%8g}=?g8u3yQjg#5^QDXEHB^iz!}I@Fx|xk; zFPtdG&Z?AuSbzFjV($=LM+5=Q?|nJQ2xW^N0`nP`6^DkWaA3RvZB@R58PecBA@*J9 zl|Muz<$mSVrHQJJw;5+7r>p1x`eg^lyRi9&W|~rTD_sn#4a0B&+`Z{lfT~ZI3IjEE z*f9y77@w|E>ViqQX4EdJs9biIfvr&{iDo99K0qvUob=K$EJPff1DVe(vZxUiw2o?{ zNSq*{1!Q#eaJK;;Y|f7hl9dQ^vT{$bT5q z&*{^ZGS?(=0Qu+4ia%#Wq$GF+UMU0@B`7Z3w+VwC{80G9W@PO>(T%XWDr#;8)&6q| zC0H6G7GyrOYr;19gXVoE9XUyYB;)#_mAMMQlI9D_$iiS!Suo zh1ArSk#5A}QEMt|aglJ4(B)eJZfMqBqG~{GfoRb3#9RW_=;K>1j`I!l5O%~%F)0sR zbSm4al+j4a_6PeD`ah7dzxnq2^US<*-5~KvP0w8oTYl z3u@f~iV^MCDRGz8(G=;M(OvMR8Kz2)cor%e%_$#@=k||&^xgUTqT#=;TOz9cpsuHc zFfp;83Ak3m!Gy@@rweUvaw_jdIDnZ&0yF%fQ;FJ=3(g_YzJX!|4bb^;0u&nV|6P47 zX34wG`wnMikbhJTx9jCmD|BRaf@>@qFmWK*?aibJbc@MN-f^=FM?n9$RGz#WpXq)M zzozei&IC^axrkOWWT%lIKkKQXH$H4A$FwK2&l?3f$Aofg1mm+Is$G+SC9*Wz{e|LY zl2}om5etXb_erV_H#YMZ=%y)3P{tAgl)y_Qn;vSHY1x=_#9Mp(8+h(jP<=E^PE*;8=c$w7jZk zK8YH!pG!-1U01-`NIaZu1x&8Ix~;~@L;3cSqYxo3 z5r;x?vmSKYD*H?MkBl#_(Sr?WjK?L4mE8wlq2=9cRBlY+;Sf-hfbPJf;d?dJDm7=5 z`v)=7*{JW-y`AZ|NSk3bWOw1Cpp6AHE0=A9yo@aTg3wxf$IMqIu1B*E>3J()dazLK zT;a6ptF85twF*6GJAxzxvXb`dx}1bT-Tj(&Lug`cJ^1=T1O7 zAWnXV;T58PZZXqZ#R`JsL0HkBKI<=LQr>_q%!37>X_WNOV@9BP02@o$#3`TLt=_k# zlFPWMo&7XKVX(L>h#1i%psC_`vlA}iyc<`+i(vO~Bt}bb3|Qa?Q4@njgGtT6;M3*h zUri6%t^vO=49Mkc?@nKBe6y~1i8SV`us6~tYjQ1=CBB8h!Ko*{nh#Nx>2LVGk2yNW zd_(?D>`-Jx)PjoMU@jcTUj^AE2rmkfwXN=caNtJ_-L<1&Ma7zhB0DZ$90og6t5jtp z3u*=8Sd-w8ss$GF;Xq(ISyHNy3C(8=<-sc;d1t^AeyplP(<>G-rXme( zRdEbsqJ|Kjqwd$+0#8(h4d{>_+_f|uqxOfm9UW_Krh^PW!ZrwF4NE30oqSET!H8eM zLCU;HhIi?>`ih@*S|X<5*mo_6`SPznJc|RD9Ai-bt3S z-{bE1*AX|77To8lRbp__bl-eAF zs?UON1|FAg5gZZ7tVI}1*>`J`geMzx#4)D!bpzS8rm&P6n>bV54A6^;Ru8^oQO=Im zl31*+pwmWOTTJv}L8uRE{p8(!KM!6vEk>YL5eCcAd!k=Th)CX>PBDVK9BGldX!d-# zu$x_$FE>&ikSypg$Rdt4%wQj~xPC2Np(sVPMSFb1NLH=f%v&;83UZh552?g;o-g>t zzX_vd@*W5Dd#=4?JSj$?4>-me-Jl;fB#PhC?bKoYB=?!IMNDr;_3chp_%;6~Bsrzu z;fTWrJBSQ0Pml1Y)Pwc~$X$EC-`m;et0AO)5cq~)vupW_)D@g)c5-OW2$HZpM^9|k z`-1Q0R6eFpxrYd!!QGhU^mm;e!$eLa6rL@1^{7VLDz&I~OTODWIkG?dN3TEs{PXl= z@9_BjUfSC^+3%jFhg(PQwhj)yPhXuJAKKxN>QR-YzD&O3n6rKo^Ik2uTbhwF)i+L( z?{fZS?BY}!75nf~l^_x%^O6NW=SFkPkWP{3zW#F&3vcA__>vD{_P)!9Wa-s@1^=vM zc+*!Nc*eNM4Y^t%g(@B~s@{PRcEy8;2Ws zejlfkd{+$c76w9gdOfrhB5R%mBdQuq#a!-!@zzW$YxC?T$G-$zNu(5Vpy=kHx>1a| za%x{T(I3P8yp9LGc1 z>Dr5jGx*M~f&?uVV>b<%VW$u~Q9fc-%tR?2g=L;VeOA}}h2q4)ky7o+AgEl#p^8Ds zDwepD{CR_`!pWb%{_DAX!%UBq@@OWs33NX!SKsE4RIMh$4G=@O z0@5%3&oAmzB&fR6Wm&l%haiEf6ulA}w?m+$%^Wv?N7Z)AqF)vCh=Ed2R^R!lOw4Z2 zWGhW{2%Jj&6aSN88@mPI?~uz z^b;=1I*;ZVPtUnbFC51lV1Y=>@s`1FoYU>*FUFq3qC7zX_ZS+P> zeQw)ga)3`+hhas zd>@FNx-{Rif+(NW62?J#U;JIH7)fRDi(emEuHG<(MBCtlqJblEtBbU?fNo8VZ4=lOIrWabdQTV_2;y$jaMMf&FImw>FqWnC0U_;gR1%xkjY^V;BYLJ zPg?6^e0S{;q7h~_{5F)MhWH&PKkT-34@Ycd-Nw+MPI5hte&&_kE&6S+e*$@JsVvxj zBlUyqDr|>PgZX&cSqvYi1nN{ee(pVB9~+R$D;i@Iepe47tnTW}TE2@T6ymLhi22<) z&JX&af__{&Klcz2c9; zyMtx(i1|5b#tAVDj7(7Y*Sig5qeo*+w;gS`Qp9AP=&NNy1++7q=P-~|;7(vX=XQ1}bH0CJ&(1?p=H7B>KyMS$0^cC@tX9@A5igol(l%V(l5A2>l z5OgQ!uYK|Mhho&v`XBP--`~i8NWq-oWOS$JKazj%25QXpButDX=niVLOuDfuO+uQa zoEbG-+JT13j_@DJ+17B_g|nI^XWN*p4|IDuIomndPtGDw!IL=&Ch=JQ zo$y(577c7kV64msFTTJAMRPj#dvh5~co^}=f*uBbmN9a<)OhijWA+YQo*2E^$oY~I zJA--v7h3tfVDnk%lUN=Wl#E97o0um33B5(9a%1&l07+9$AZw3c_w2?+!hA*eFj<(u znP3#Bo6AJil1gx3|I9suYCJxfC0Cot)m6eLRnYE<2Z-}62-^;~gLcDRf%#!F&%#u_ z%fK5k!t!En-Y=f6=>ZYJ0O8|2U)E} zn#~flH~4oa!8^n!JLgiLIpQR9%%dL5N--#OanD#2p`{9S%(?gMjF!7>Cn!RY)CT;z z*4-QBP9`fts>rCbbjj_GE+v21Od2lb3FlasPxx}vM$q_ef^rnS^D{r%8;7zJY-}$s zXB(&3F9!MTe-XW$bM0-%jfAIXG2D;f&SZP`r2+i(dV5nKNC>{^f%;yv1#7_ z&$#qhjQ?O_I=K7)F#AkhPNO2S$i^OSKw@k*({Bi8_t~E}UZaCWPp;v<-L?-BJ?}h! z-uc~UNxFu+kj3H|jG6vA32zFND}+dx+~~HIQf_si$iLDHH*L9w#KZN18{L-u(_d-* zn#Z!ACX#FUn7b4tS@nXI`#QTNtaWkU$9~jV%D@H-vi|wUIrYZbj9>zF2_jz1v)kb{ zWp0fhLpwb}ZZzHhB9`O&Kz2PKW1x%7vn;(=UmS~0a#ZD6C}TTnq5mqURcoSJHjQg! zMVR0Lnp=bpZa3r9bCZu2@UfhiQS7}{4CfioHBl~v&7qogNK))SBnTfxZ(z5V<@4CxG5GYo?hun8Lmkpko> zx1s%H!N7~2h*SbmLum;8`&x& z7(ut36V`m5->TRVCxD5~2`$ANEEYSP>9LE4)ODdJ>H`ZDyVh8sqy3b>jG4cXhmiG@ zmEwXG-*$u(x`7&K8JIuj%t3a|$j5~)9A7C;BEK)&wL9tCVR2&slm62?Th`*Ao~FQ} zx*rxl{|Fh-DFbQJOerd+FNEq zvGlfH9L5DD#D%T6CiIJ4pD)7DJ20ilr-Efc`*2*`2p(?{5MmXAv!dGV7wI+aOm!*F zpapu9Gk3zNvf_Dvp^-5p4a@8`VF?`88%ryw;d`5M{xSn5uA8(YsV~`vFZuazc9vE9 z*!$6jnK4g4aLTOtwEXF>00uj9$rDGT&}QgZ793ujtFO8GeZvD2vqrdLz+%CIbN$`8 zwvc;;xr`!!-96u4yRF+sA8HxQkkwqo;xez%*DUXAv%?oISXP!V#ZD0s!rD>s(_hyU zg{TLDM```Uw3sO1#5S-5!|URf`P!Q3XppzDAVU8Lj&oC}G4Bs;6^#ys)|>{ zDWL2mqg$FBA{r8xlr2SO*B@3&F>2Ba=)XI;{ceS{Ms*uw53-wdx8 zKmE0ne7lrVw+k`_ARTHQvKc;j58QsqU?VVadY9XHN=4hLMo&6ZHcYssIB-svtqF~; zXfK5J^MTe)wvzw=|b@;4%n8;sZe>XW6{laVy5;D{e&KocSLb$La zf&SQ#q0s(W77I`O>9WAK2#l9c-e&-AfcPSLEeH*LWXW#qi=_dqQ9kV73w@5r;o$pU zN;`4WA|bhR9xPWl5|_?0yv_2_W_bMRuf%1@!;7Kws)?BTAmMVlm_Sj~zEgegqb?Wv zZf083R)tu=pjtEcxP()}qpqpDh;6yMGPJ9o^R3SFJ&pxvDK-jgohm#8w zE#%!I76@_2hHpW^*Gp-2_o0#zGsEEO0LAW;*%y)XcuL3ty936s;9qK#KF|&bgXjTf z>ngnkSlU=uZFZ~^9IYCScG8|mlQ7vZ1I3F-f^y80!sci&RgJT})nP%+63EFI90unA zYZu5Ao+?ISRSgdmR;LLRfGTi=U|KJ{ml{LZ=eK2Ye2GVOk!;=Cw;>dtWQ*7=V}``T z&wt}fy*wS?7pN@pJiv$gJAE_@zbAxwk)&I?=uWQysp5>Llz~OW%B?K}V4zWu?i)T(2GP4^YlOkX zlW4yyVn!KQv`Ei7$rc7@%=ugTV4wXgbPjl@9pGERWj@{|$Ae4Oa!N9Rr*7sVz&sZC zAHgYXXVX66OOvgMC^Ia8ZJoZ5gwir3$seODR=f3f?|IptdhA>hToyfJj%y4L2Kv1nx7wVhvwxoPf@Sgj+mH*KLpbL!AR8`X!?1~~YVub*l?*bZ%-9Ll4|JQE>+Mqan3 zi#~<<45ojO#C;5tpZ+`I_^mWjDv0hT*}5;XXI)_HLMK4+8ZX(0RP6s&a-4L^eJNO!zxqk z@j_6%8WHN~Q;ECTLemI-t@eIHQO3h20%^dv6e-#|4&d!2Yze4b=VNFXT#xpE+rruT z-E@JJ@`HhE#woE+T~4!mm=L79{1#CKP5~(V`Nw<+B5G8UzE);fP>^&20(cWC??)vJ zl)7)1|81RI%qPupDPYv2!%Djn3MECS3YdJKZg7XlB&~6|kezy=d%oBx~9szjJ2WQH3UVcqI z%AbnxhP<0 zklv|QKXhFkk-J>qdNUM!gj8-Mm;kRR3b-#91n-9#5l$lC)=9SUWE>Uxky{$STtMX0 z>h(tei5j|%3V2AEou7Z?k?|vw*+T)}*Fay8Lnwxc;Q-GCEQLM0gpiq}LVxTiI8hjq zM+lhxDmu_M#F7DEFj@>mEU^#VFtCLfB8YN-13-9zH8vQwh($9GF~^EnKn2L97umBYs4Osg4!>rrsSE0_2A2*R806UN{gg)9_^tIX6-lM@{T zit@$H0*47 z6cNTENJOBE`}Cgm9A6V59bD>y((oK&RTaMFJh;`EwHOsb*ne@Y-5aE`C7h?n);T{1p!{? z(pQ31q*k`CqQ=40yl0$II8O{Wm=B~H&d{#Ne8C8-c`#q>dI&_-!lmA)Ix|#>IS*v7 zF@XB2dYT}hY9ydP&F?XnS-5U|uhTD7m#*SqxXxr&2X)Po1}YNyqfzOX7Ae|T4=S{Xn^&0YyztnB(B&iGLnBs8z)=z;FTfep3fG9fzdq_N{dS~=y=S! z0b1sQ0r)`p67k78#uNm4k@la$rIZ1f!|a{5H3i)5D-jT5HLUX!Vu;^N-XUXKSyw zUwri(SUDA!d2WuGOGVPP?c$P46#Hh*U|bc!hBK-XU2{~uE^{ovz7Fmbn7tQs3I;+z z-h@hmtKm4}k!W!V7R8@IvA(y&lNWc$y30ZU$HJ_bfrB;zb3W*!q6^B8K+2Z1s79Bn zB5{PQ52KcLN{57Tp>k>Db<2D47p5bDIr!jm7d?-WIj&jtlQT>74Ey_(kAIHJ8}SJYLTDqR>A?LP<7VQKgcWC@ z8flxL6vQ7pq=CUg#7bc>Q6`uIhg)+(u1w!~KhOeX)OdL*;9XhoDo z4(7x0B184wyr_k!cDWvsNRjBT5Tm>q)WXj{0t*tJxjST7w?bN)1PV&ix!!m<1?@=9 zrI@tjB~WdLujPwVR=it8;RuoQ3 zdZ^QAM_5rP()?)9*Ai+u;A=_3W;ku}44XBdYt~7(X@c1UGbzZc8R1}TT-nm9f}d_J zXd=LX%)i6b8X$EaLX$-C*>}hp^7fcOF>o>BgkS>z@qC5{#cyjY@{KFy18lL4K^V7* z6NH(zNg_MZsm459oOIFBPJH*YwHmh@F5;y2`Vh0gHDz$>S_5wvo)WMK-l;s15 zlI9p=8J(xb&|~tb94ug#Q3*&!#xwD(^3aj}eM$7?bh&8j+LSog=4@tY$oX2z?p8ym zrBTQAKx?zAgrA$bp{gevHaundy~o@Kn7KkxS!{P>?mQL=7W+Q3qopHRlGlvsDCHNTLCV zNg56(mj8%44xSN)WA8O5_b4hHqc&f{2vzOo?8L_gHHNH_I3O&|q_J8wfWRlL0n`M$ zGjcjgNak%;!FFLU+geOv>!>xMyH0vw9tlp!1m}YA;7wRgK<_$8je%ox#fWJdVr{5O zOWg!d6f{c`2TMeGB~Tb1WC;PuVNu-7LrhU4fm%%i$e1%62QV&YT`Y3FEQlzbllum) zYvi{M1jX$*EE8e;%iO@)+#uu6wUZGPg1&3XTLoMZTo<(_%uk3G)4!qUN)B5@Hp~n# zQk60mOpn5hSB`hiwc?zH(&lTO(y|meNN4@%41)+_s=efts(fjNm>A}Q^{oT7!KG5)+_}MgrClP%$M7DmL>WK>l-SBrl1} zf1QS)xVmE2nOsde<9z;Xq@W#ndjmac-pV>7!K4f7U!@Mb#T}0GN|4U{D?CoV_E>C<&Pamxrk0iJ0+s6k5_%Oy0bCi7c3GEPRl6FM*(Ysgp=&szDzm~*QWV_chQ+2; znfO}Nqh%>%YN!^r(LHq>6NKqMLu-ifNlFc05A-CmeMLf8(3YdhmQVnnBP*{!sv!|{ zs#Y4lE>QsPa4xu2E4~M{HDJV{!M4SxbI@hVBa_{QEV(5E-4GaB0AA^X*XH_abG+YB z*bO^?R-$u3Fpy?ZI6I_x*`RdBr9-r}tBpjktEd#fMi~5NbPO9;KM5@h^icpn+!j-m zhE*x`gKkWsjzX3Mm5-SD>Tyt3k2D17)RznRVbcUsQXJ#-EE!%ZE|S7CTdniNuBPs8 zO+vUP@e=!CaK+G^q>=Pm_mz`W-A;okgUmrx2eAhsJ4;B{PPbm6MTvvp>WO)9p^yt# z9}pLOqqKNx5we78oe}pJJOCbo3!O(E11pO$84g=!6H}Z3X1XDU(Tj-XU@gqh(8~$L z!E~eiMTLU*zVvM{4_L0RU)t3K-2Lm@0`>I(xqjl{FI}ELz+C`AX>D3S70a%KYcEoz z6faZeC^Szxh}4{TxtbG}9k5W8E0ktj{ZV%zv5W;Mk40mN6@6$uczsFGVP@Q>%aZ) z|N4J(0zC^w1TOq`+X|Dud|h8|R>N?1Kj(}RUYTS+Jkj?xV9kp&U0tjzF!62xyq{K zjFu`Mms!AfRr$tc8+N~`zJI*?U|f@3x1sL0J`mjM@j_-~!_bKB0!0N}_PMmrmWm2d zO2nqL&fxNh0~%gE{YECj8bk!JU>BDr-7XcFm*qk(*DV@0Cqy>qH7=k{oFW_E=grZt ztiu83!^F+P8knI2xhH5Mru?bb%ON@BnOtetd+{xWoCJ5_uQ<__HjU;Lu`h3-qRQUR>bVDz6AN*;ENLzn#Dn9M(MmUApoox+(A}T#>9jtyCP@2IPL`1 zxh!NCg;Nk4C^$861pVHo_c`}mB(9i*FAGsyC(t&>RK;+LYkIylOQoRNXf46Qt>XYfi%K*h;+P9! zd60V)3%0avl8MvaR_}ntvw_Mq8lDbg(I|&h#2EyLh^= z60fo$UL<_wq4KPFML2@^f(Tt-g8Q7pAN9XTE@+Dn2*O9hgNYErpR`^!lS57oT$#26 z&oY>^8#FlKCe&593dI%G!whTaxkw;qDS1^OEY8!Nt?ud0o2~dNAjZo2s=z0!FoAy# zvj$j*){M0QfZjYuHbla!$}Sim+gKo!XrIY z_fgUW=RJL~??T7+4Vc=fl9=kiL+|QJILj@N85Es#4K!fctd-vZ0{F#D<6FmP(Tz0U zbLACQxIv6xCd8lQn+*7QV2G5Y$$<5PlBD^QzDV?;V$IULI5AehrUcg@6otvFDgWTO zHQe~{G{tfb1~MXxk3T3!w@-c;P45?CVWCpMVknOjyC^YNpjdNn!jihUD&oRMyLBqs zFRbI7I^A~_8NW`E=lG|4BSVbYfRF?x5%-~7ANA<=_19Uy94D_8s)Uh7eHEuFDsh;L z-N*+xu1&$1yq+%9Jup3j?dIXN2K~B#$%Ogh5}Ap-D294O`9*f)!@p5zqT_3D+v^hb z3!CEt@V+^efQvkN#C;AiAoLTOM^_}RPUYJ4`*mSHWEF~VgO=lKqmU039(vT~Pq_b% z{U8KGvdhn?P)x@0Y{3`KT#!k#3mFF(s~ULQ^`fBDqj8sTV` z~W-b zs0{wAJP~wk#&_qG-?|QsQwP4HaJYKm;6!#a{BCR)_`#MW8|)`jRIMi)2?QP~}1;8>)CF^Zh7 z0ieUld49Xj))C?Pr8%R$GXb#}S=ih6@{5*=JE@*HC2tmTTN1Z+n8}qIo&wwxR1l73 z#aH7N&P5rPCWc-xwBy!A+tuyhJ@!lGnoZu^!WcZL(BR6f<$ZN4pMa!#@?ENLFLc^j zcw~mNT%14i5~88OiZ&;SxDO zXgE}~4<=pOJ9)oL3n1T57ERuGl_((;F*6k-#*{IFKIa=9oLx~A%YbViyJ~uUrlxB& zRo}6iDF>i07UYBWS#o2lq%P?R%oGJ7vU|Iz{^1doY?;Umz?GPWDZZOekT$qT|Dz7% zM6p)<)O%83AVuS)_A~P@IzUr}aoRvW_b_xJfd-;62f}Kr%v7JjsJhqMr%S3>tywo6 ziJ+*H(lyuaw2HrExQ||`zAK-$+S|1WF)T9#8r0*dA3ktvktSpURmO~j(2f8Oa5TOE zp&O*}L~Jgll0XbPEL1mKhixRA`+?n+M&^e5BpwGM(|aj%B=G5{Jzrf+Mi=N=%oa{$ z=^8V;?2fh~SMmONehsDsjznzC;}zA6wN7FUb3t3BMGW`V!nlSXlrVYlx7{(9ogAj8eoo3jG+>W338Vg9y`dB_)*Ey-m`~Vh38iEJ9LAxC@Sm(;+**tT+JYWnR!)lCvvTjA_$?b>=O=6M> zxU3X51zp4@s}sk3bnrL{w2{Vadh}2+6@$TOSZBF^s?*3Bu4(a&)!99gat!~P8FEo< zhF&ng=H?L_yrVkE6S6}p_N8C_drgP@=By^~g&P{xQIhXsPwVMU6wf>^Y%F9y~w z!8&Aq@uV?tuvR2L04gU3sUW|tTVY((!W{)Z5f9#G`)Qz zF$v!q6&kTzX#MEN&3n4S9dV$Dk+@UI?9(hC@&n-j@`l&RzGCV^dB4p@8S9#eLx|-!Z(NlcSGwxbSY8Hyury z6Bdh_+1(>3mr&5>>^KUoag6KnEtKwtOE_HjjKd&^+)AhMpZ|yH1b@IV44#Eua7_&F zIy>M?7#UeA=*5+^>^jdda#q1haFsV|USmeB#j%pXCl%EIt;q%5yL0`grjV{mgF4k+ z1!bx3c5@61rYG|cx{a>v6`-zb9ffW=kxqs$7aXuj1nEc)6bu3_f|*>B_b@%?W};0W zayrPLak5ohB#^sHeC9;W9u)aGM~9CxcOz8puheXh#zvmh_nlSYE-U=r4+lOND>HEEXEESV_Hh6r}dnw%&~VMBQtm4^##K8MXA|58k+{Q4TbIuI6qoYz)T5U*!mv1;mW2eSUMy9K1Egx<=G!WztJ&uDt3hn_ zdOU#c^JXj$%cMJaS}yGBK?|)df*10ML}pqYP$2j~+Ae;oM297WF+sZz=<%p2p>xeH zvymcV9dP*s*}_~AHvKK!RY9`>6mYU6bcJIZqxD-)(FzAgWLN|xFB3Lr!Va3$ z0uxIc4MG}f9E>K>A{$#{u+ic(_#vzZnSa)M%{ljGW>q&pijv166W!HWSy`Dk@ABOx z;~#*faNDc;Ck+`MEpUbXS9A1mm$TckTOdCG9i|#x5OYNRUd09EBqJXPs*6l3wlvLK zPgpTVk#ILRqRG1DMZf9MC{rE{?+Iao=JfP0lx(@^s2K}$ z+|DtLZabo*#hv~FvL#}k`b%Vov;UZn7sO+X_ViCK?xBLkhj!zeEUjY-`JnmjaE-IW zp#ttI^_Y}gcbLpGYNT>-#}K_!$2*z-&m}RGh9zjk`0_Ny^Nk9lDDX3>ftPrhX9vad zON^3d9$7?emou0&YtPYETEYNt8Hu=+b)3{M1${mnZe8nJ;QpvVZx z?EdCP|Bk~@57OZ|B~=6~+8B70pz9Sch1&&OvG0hbO??TfmmzEQp>oX4d#ewtZCFL8 z6KW&1 z>V|8<5c4|9vJ8kJCLg--D(E9DF_0f`{h;)z))E>7{I{+JGNpYinPXraJ?q0>5j`d_ z<3d9K&H!r6QUxAL<4&4=M2?QI@3uIJ*ekeDFg^Jq%A@RSKbSE;csd$yk{xFB{0*J#w_p3RltNPVDO*5)|O89q=GhWo$X<)70j*xLM!1!vqO?ISgT zfz_d~t=Yx-3+r`c*&eXeoehzra`oW@FXUsQ?w)*KVbfZa!>v&l0nbGAQ zSG%iE;y~8WA9=BKx-i=M8``i{!b#`NTyP~#`*Apc?c=;X9Q4pHP%l zw}b8FZ&~din#D&W4vRb)-Qp;#!7l@6TU?(`G9;YA$ET2}v2Hy4(je2X&ant#)QoepgozfME=EfyZeSQ3TP=a11}++h)Pp6E_sg1f*H)&xdDC*cUf%KP+_PoAvus?AY;KcCa+<%ol@wU zB8LiuuXg$J`*melU$0y`o0SIwlbeM<3<~-56MjD9AW1n$M3@jiruhJAplPWOmGAQr z8W!i?dB4sFIQ9aifcs#$+V8-HI5GJM*E?{)KA|ks&!aX%V{y$B7Im z^%-ulX!g_8Ei@j%`y5Pm=q^h*iCweCcRIe=-+DqOS=5xGFDzz_dO&z=l4 z0wek>24l=$ILaY0^5Cih`|LidH&Be5b40uC5-719q*~J<5$7)o^)iy}^JB5cdAB&c zU|k5eBLoo-ok$cD#;d`T@sGTr?U*TGA&@`lwyLDOXz{|PC7`&%1}OA&!k)^eUsx@^ zd`@Y70-FuDx^upL9051L!&qLVGFq%hkO>uwf;U7*&^nC}nR6_T{!ApEQ6K0Jsr~RY zF9JQVc#!q{4QxTMH&F>ycXFuEJ+Hf(MbO@-)rLWkfr5swEfTPxsgl=Jz0~N+R=h1u zSvO`$jIZ44q`}Cs3PiVEP6Rlwpl6Ut=beLqBH|)0T}*?g7B?>xYLEn_1s3KTswI%X z7=^JCVJxuA!`s(uV))M#d7r72$at9lHk!4daMi5=8=89k#m2)#<4Mb zk_HDyV>SFdP%C`q2!df1>$$&#m|TnkS~YXN%}&}`pzamemVW4=Z_ z>T#Hi!*&aj(E4`Ok+}&&VwJ|*ll8CNg)r>!8Fu4mjI#_cwcq$R;iG}GFLg_Nu$h33 z=FLL{58P$EKYN%ztvn#L?*9?1UbJ|^?z1^$Hf+ztEg?b_niq4wC}Eh?t~9Vz}oy93Y!wen5K^Y8zNnsD3h!2bZ$>-T zg3!@wtsK80evRG~d0~0!e)%&hEiiqAX!_)`G5O##%7$U)awqeqcvOAD6NOLKsGm$K z@9Un6#>htMFN2ck^(UEjcEgEH{l@J-&brXV23!x4D1o|4fObzDnG-JWRD9bHK>Z2~ zkAi^0TSqV>t%7AfGN#&U_(0^aVb3DeD3%8O?!sv;^jQ9aCVg&%PXxrXq2?Darm!qP z8q#Qw0l2WhaKv!#nn=(9GJ+oQko!uGhunT9T}#q7L{jcSp9S?M4IT3 zVIj-bHRIG_tX2f`z+}L=qTU27y!H-o5jJAV>v7;X1zUuXh~*&XOl>TpSI;gkiR`k4X)Fi%FH@=ec1qInZ6>w`LFpb2ZQ~9% zBL6R~<`3#+fIYWVw*)3GxC>`c*5Cf~`Pt~+9~xLtMQ!q3q!(PVZG({DrMOYz`D3bH zo|gdmIufz52zh|Lg8_uWp4vPxI#mhd9~4pdz2g2V0<2-o{zybEeOe4yp6=&J3YSSF zoDo@3EFEFgAqFKDk2&w2;>;q7n#hk@n|HPr>!1eFWT+mYEXw08M{9RiAGAtKchEU5i-A=7BLQ3 z;z3TfQfXGk=NFV)KSxFkMhmjd2p-4|^-FOWz?UW+fYHvBV-#T6#3zs-3cjXLtj{; zg5Pg7XOL( zIG@W8p~|7y){B7>-!7$7UcY|5Hv8N3`1EMD#<9Bh;xtpLK-6NX?Ss*I{gjfUbCY7Q7r(q*Vku*=rB}Wwl(8BQ-$Hr;0 zA0pHg*7ND_J}F;#hw!82PkeI_PBpd@TIEij%dm5aqXU;tJ<B_q@}#@k3@Fav;&RGU7QEk@4P>K)U zQ`}h>BV@Rl%6r96g(>7Q6!{o5yc)dhUaqzI z&P7~Bgt+UF!|J@83;4l!c~p27yoJ>yRnGmk4(`)>2L(Nu>(<7Db@C{H?a7s z79S}}*h3KVAP*;#H3uERK-5W(m;$%(;FmTheW$&)5dCsr4LQhu`<6tb^ZGH2!{Qpe z2P$)hIr%8UQUZt%^(W?GFwskQ4X%qTyCayG)h_diOVhAOJqy*o4QEh(i}hm1f&teB z~jazIc~*aUV@3vLUks5mE~T?0{8hEs88OL=S!s=huq_-yYB` zNC}bMLQp?^&&_nvpC_U!aY*s<`Wq}YK4)DHHWo?eSt2{U!IQvHk8m}dkfwCMqtq(z z$7VoTj{s;Ekg_psKFk_6usS2#t6JqKRY<{9`0&oe5@qCw3JunkFehul{b-!LYJ@ZO zF_6k5M7L-RsV4mOW{A%49yp0VXojjjY^55Jv4#b(khV}`N!N=gEz|QQvtg~Al1^2% z5PtSBY>=4RU%&z+?4=(${BlV6Cs2=lEu!#)=uz9(GN&YqLFiDq8*z(oDw(6pQey7n z4d{*Gie%^dDHwV-SV*(R5vqm`*LpvG?h77qWbvAvBDjk(E zDlQ@~ojc~w2@slH;AS0)ekM~7L97VOR~?*Hf2`x*lS7;@g4WbHqT-Ta)rKXO)&+^=81bI!z^sGkEdhsKdLp^Tud1SO zY<7VOff67K^2Nmaz*$5ZMk|Pk=No)@ts;;CQ%<5Uo3^BeY4zG)`UfIj}1xYMT zCWls6U>yz|kD38rV|&XmGAPS%0(BCD7$GB5@ba)v1IB87bp*mPZifsB7AS3-tq$J|0khNrJS+Qdp2lK#nr|yj@qImi@v63iEhDQWFjy@ya6kOx6z!9F+#;h=!KW@) z!W1zCzULhoEX%%6Vc{@4?vAo(8Z1tQKpN1u#T@KWi7hquM6ctrJlzPF;sE1$a7ruH zfc0#UaH~+!z&H~R;^Wz97vu&bB$(m?q6f_?)pZLAicZ8?At+05?_jvlSnya@5V~={ zNMd+)v31z`zSD6z<*d#$ah156N+L&SD!PTi%ii?h!M>4Zfj_{#r9S3qV6pT5!Sez@ z(L^<0A_cWD9eWv(cz&!7CNhu)jZXJ87qLjfgmWqxc1eF{}&JEe3j4HQE$`KBx zhhvTRKApYl!X)s_&?@P<*;BNu_ZIX#&%Pcusr8(NX{(nvJN)5$-nO3In}du8EnTnX zaVY)8^tGp$h3f6DpTGwzrl7k<*$L?8#CY-ascYnxa(c4!{s$h0w>H#B zR0|HKMmcQ9*L;zwaBQemThEb1XfR1;*M5YTiN-MXX(Ymc`mDO$$zIj@gQu!Wu=NOa zG8(XM_ad(dOoRD3s0>gEjZkAMde6+VT{0wCtljDSb)1Qf_`q){tl%kFRJgW=2L>o? z$W|xRjeyiX9@V^s;R{nKnc={Gi>Gc`yC%D><%CrC3vxm?NB_(4Gw9*qmvqZ;^3Ip@ zTj%#~oo_5SglF_``?Ht-fhrXHvV}9iOA>Ts-^ivCovJYnSuzDYKAl_84fNcMIbAWnM2j84tf!)5_Z|wqfzPPv}TT6bdR9;530Mc>Zn3ljLDl}ullQ# zu^>n4&Z-M60R#iZgA-7QVE-OSA4?Rf<$YCOWfuZrX`3eBaF0fsWP=hNT{!jGs`y*h zMkdnfztE0j-+DgL>=1>G&_Vc#at7K_rCmw(($D7M0AZ zv0#U%pScbZ4a0JVE?WgJ-<2XknnVNG0iSIticXgJC>W@>)KzP zg*Jf9LYAzRRmj6Y5S&9)if1`D|~+e0E* z2jk@_l>&HD8f0F~l<8V)r4AAf_gNHyiI~npqlIlTE{G(iP@PV-rk2Smk)CpR2nuE( z@;R6z;_uje&iioNlI3-BettwdvW6T}FxO`}d6*&8{H-jpfg-WFlF%x`oJ_UxR7_K} zQMI(nbz;yI#Gz&fOet1ft+fOj!t)LI+A3TxT$C+Te`@OByb)|PjT3zN7E@cf}0Zd zQ+P6p@{WGegU}XwVyvsGU1Ve*#bv{4)3{;sH?&fZObdkH$8uuV`kQR|NA}RQ->c?Y zoomGb5_Z8t0xzW8_Av5GeQc@_iU?ayD!R2Fuh;S&_Aq#(Fx2xR&VBh(LZ?Y_33)~m z(}~eGy`b&aJ2Mdtn0c9%rzL?PgN%^Cb;S%EF5h06Ba?kyPCro<^$6Y3H@D9Js;*y^ zg|+VWYk&uW;9Lo~(n+y$w;ZfmjG4ByH^PNF6KmCDp3l|~sQ1(}N9BgDy zEQO=hIQUH{z!zT#ogtsd$i?p^2`j_%i4`YwwXtbE|Ex&kB#wTzVrqXvbF|TB?}q2n znjnPMH}%6&Fd=(}?a0F=^HYM3SO?dzD!PeUD4X3WXlidIC8qraMd~%^I7&IVS)gJN zJ^O8K1XDL^k$$Rdj1qDuc=l8-T26#C^!_jUwr*>8KXsmO=&y)y78m_?Ofezk~^H{aWHLUWY2QYAOH4*aKi^dhoLzBGV zlP{50YA;x5?!iFtQb%N?c_#2=b38_rOfTMcE25hcLp^gv6Ky&_vJ?;0U5FRW11jfV z6cV`|v=TBI5no546X1&))m|=2No8ns()XKVYkf^e{aMEULMLCXZ~Y5*pC6z93M_nn z^i%sVZa>saseJHGdsw$qqIhR(PX|lHJRmT_C5vB1N9W5hgxD@_w|YpGkyfAn{*$%& z#ZVn&y36i^y5bYQnpZ4y-OVf#<@cJ0Pl9=C!=iBp#0;N2BIWUYnzNAtJqQJhw;^?DaeEO?j|7QB_NAa+5=~mkyy!d)?n621XAqYePd1`QLwj}CWR?rjHsmB-z zQ$^7*Ra|#jBpyVNYpSL$HkzQu-GvTWe-~*ssv$N_WfoEC#e=}L#LhD$|0>UAUkDqoBu7cOW5sRg*GwfK-hy91dC-nCm(f<7j|p&K?w9W8oM3P872WqF#!268erm7ZkRcDUNIxs#o<{xt(_`@O-qZ*PJ zDZac={-kR!%u1gkAM%EIy*K^TRfpsGOfCCI?g_T|a==B=)DxBAZ3dk=x_oku)IRVBv|s3AutUi2$~7tdmMT(eWm23x&skDyP(wb{b|6`yBwWO z&*PF_mlJ_50&)4gZkH%GAvrz}#+iTd6b`d6e}Bgx57jHsQcnC5Eg*-7Q#cL<&?4h< zmvVeZmz}i*SS?--{V=$vWP zkShCDK(OvXZiRH%7eGNV>_kGwQ`}l+gQ!bUs|f!t@pt72LjzkQ%?Rs-jNxeI0k!Zp zGs-m;)S5aBCFKUdC_?oL&tnqgwG%x`qHk%-9GS7aLOFs$Q41VOdFo6P68;nLK2F^Wb>B|N<#~W}i$z%iNs~`Qq z3@tHBaEq;K1Zool_4)Gf#x^ppPALh+)iSrm+_c|%1^$*3*c!j>x$PM_=r~NdU2FZ7 z_rGCeRu!jQ``XA4s(Pt$i%z}ABgYB$k&0Od%sN44yxm|DWf@4An1_$cn0yo@LG`s8 z8)|WC$=&#)r|9NP{YWoppqE7Z8VXfr_Qw9+_1j=o(z0yp*uPbw<=NT_ne{D(G;`w+ zY8MrHsMERB#mWHsc$p$(hE`5jS43BFN{{p7=P!=tVAe|`P|mV4stn?BQD!5e!CA#Y z!+!r=+iLE#azxHs-m}We`j#v6RDT}c%~N0;jED`WuiyY6s7?J%H{9?uQeNdG;kB@R zhJ5V3n85Pk$T3VQ|sHB ztZblb&FXTj65ZPyuCm9swj8|ayD29Qp2Td$boq)x2k=@xwSy;?yFu+qNg}L*vl^sD zmr`IrD58i=gv*fCrWRQy`E75z)F?G*>s&7vA4zWfbDP#jqkTtl4U6y)kfh^R-4vKO z&Gf_@vQ8JNr;(-v28h;L%d!v7I7=l0$B_*<0h;YGydx?TpaHDhUm;@UthdZXDBWj^ z?g@e(t@`$p-Oum-jze!EzX6s2Y@nZ=?4e_{M?!7tFKBGIrw&l>shw3Xf<;AjwP+9@z<)|)b*wmCTodr@>OT^Lp{EaXHTF4b7?r$vXjoj~@HiomDz0W)6mRu;4V^T*GO&B}r;H)uO;_ zs;B>wI!*_*K6c2bZ??w|*Z=(4UkxZtL>{UJ5=A5T_jV0ks(#Ls8PHVgd)KA77t7F$ zK8zyMODBV37VMsU2(;UO;yG#O)v#QY*?2U{eoRAs5YZO(cIk#URyosHHStYc#23}} zF0O@Xy&mvlKVo*7Ry%8u^_~Jv0eUIPgL?Yl=*2_SdgG=n;5K-R7`txN;>!S(oIZDD zb77_*_QBq*pN#c{>e+52h_G1dWrTSQUM^_++J&GMN3P|2Ro)Z1zj~wgM;TIGoWUiM zCF-w-n_C5u)TP}vgog9%5C6?HA6NSJ+3P>{= z?^Qo0sohkFzL*joTmy1Fa}O)BH3^Q(9HFb!N~dU0Rxy=0`iAp%3z3)m!Vj}EVdUg} zdzQGrxCDZwst!;EENc%I_l6vwVv^Rpq!ubax{ER|P#Q3Nz#EM_nb{O3k{p;ZL~K_f z>((k^2l1A$*U9GYxZ56YKi%G0-`MUyefZ&rqn+)4{(WnEwEbwZyYpaceKdKzvp(M4 z9<4u(Zy_Z78xiF(A;{`~U7L*};e84wC>0UhFgV@^fQ5ZUMyoMuz51nVY1 zL31wVVLJ2;5(>c7(cHE08U6P{(cOfp`f*bRZ3;F`Sc#VtI z3+$&#If7avKy6x^WEe7P5fdm3SG^v1Ps476M?WW9?15% z$P#nXDu{|Wr@F_2facd*M2Vc`7U7AEZKnE#RNM>E6{i?!5YQW<%r_2~{OF_q{)m3P zOV}v)r-e}C61f~~S6rG!u&Jc>UN65TwV}~$vZRUy@OvwimsKT^AEn0L`x@<8nT~rU zztjSFv;lW)sJO`U0!3M!kc_*6X)sQ;Pnx&MS((3B-4?^D?S6gs`sJul)5-!=1n4b4 z)4h4^)e>DDEt65a9A*7X(U<*|u!wU6J+Tf)5gpHar2bQ8G<6)a4LwvUpi(wrCJ{vG zO7=KJ^T7w>kWt9yz|Tua7Hl;irKW9R7h|IjW6@t@ZV+ z%PZ5OBpkpew5IiPBq}-;WH+!025!8meubh9@CbdSFp88m0z8043zvPn?G2o`$bE90Rsl1-dA2o$W zO-F^vA-T+3LX+irJeNI6?>smdP-^m(<_cwzm9#cmH~E-NyueGxy=BL( z4p8yNvqPknPXyt3f)nBs6%2q)@5jJX1?SSMJ16q^g zRk4O0Xc=XacyV>8nZ^OXY7W)3#`w)ENI$iQLhnMrXhSCk)1&_mJ?ac^>_8G%gffoDX?+kjN=Bif2+{ zifv;kEt81q8^QAZZ1nK84Yp11Ue*}r^6b}`MJyvOoOh>-wc%mOm9LSxLC5Puir4b`_3O- z#*9LyllB>Iw9hYpMWENS>c%WS)evV}Q!t|L*~5+X?%5;51I}gE7iX7;aqQKfRIz}n zloJzUJGy6+sMs;%kPu7nQSJ?mk#uzB&!c8QkZ&kM{O+M=mwC%_=EDu+&}KsI;Z zz%ZJd1qcJER$RtFzqZ6q<(tY#foV<7q%Nm`KrrCDEO@ZeVFz*x8H(n*3cd- zAT1S6h8R9RO>X6cI6$W9n2U?h>&~C-*f)!C?xpm z72P;LiQs#93knh@QAZ@};-J$=F7fQg^Ul{knNm(9{xWvsU{?=rB|;;E|1Y~rgU4W) zi*L=q@rFPK!?3q^wxZUifp}Wt95S%h9mnEz3RSscxD2LUJwu>_FmYmN5RI6@28C9= zlwHh!t;lCT`K_vi7>p4n3xZ2X;3Qbvx*)SIOMUrF$X^8-Hst9Dg8Ygw3Kw)O+K@g( z<^ohZKW9({)vOB`5E`$$Mz_o`CtQbBebg!Ms2=WiOo$D>Ta6^Zm!^Xi4F78CktQ8H lkzBX3TD9+vWA8I6J<>tdE}E2{j=HOdq>^^8?=K;B{|Dr+umS)8 literal 0 HcmV?d00001 diff --git a/wicked/locale/uk_UA/LC_MESSAGES/wicked.mo b/wicked/locale/uk_UA/LC_MESSAGES/wicked.mo new file mode 100644 index 0000000000000000000000000000000000000000..a77f8893bc33b9220c8e449bbdaabcbc866100b4 GIT binary patch literal 127968 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 Q32_cQLG`!r3KHJ(zfB$%j{pDw literal 0 HcmV?d00001 diff --git a/wicked/locale/zh_TW/LC_MESSAGES/wicked.mo b/wicked/locale/zh_TW/LC_MESSAGES/wicked.mo new file mode 100644 index 0000000000000000000000000000000000000000..174755cb31ddf3444d9adadbfbe2f513cffc49a4 GIT binary patch literal 138879 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 literal 0 HcmV?d00001 diff --git a/wicked/opensearch.php b/wicked/opensearch.php new file mode 100644 index 000000000..55458043b --- /dev/null +++ b/wicked/opensearch.php @@ -0,0 +1,53 @@ + + */ + +// 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('wicked'); + +// Url. +$url = Horde::applicationUrl('', true); + +// Name. +$name = $registry->get('name', 'wicked') . ' (' . $url . ')'; + +// Icon. +$icon = base64_encode(file_get_contents($registry->get('themesfs', 'wicked') . '/graphics/wicked.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/wicked/po/README b/wicked/po/README new file mode 100644 index 000000000..a985e94aa --- /dev/null +++ b/wicked/po/README @@ -0,0 +1 @@ +see horde/po/README diff --git a/wicked/po/de_DE.po b/wicked/po/de_DE.po new file mode 100644 index 000000000..d323113c7 --- /dev/null +++ b/wicked/po/de_DE.po @@ -0,0 +1,1142 @@ +# German translations for Wicked. +# Copyright 2003-2009 The Horde Project +# This file is distributed under the same license as the Wicked package. +# Jan Schneider , 2003-2008. +# +msgid "" +msgstr "" +"Project-Id-Version: Wicked 1.0-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-09-18 11:24+0200\n" +"PO-Revision-Date: 2008-09-18 12:15+0200\n" +"Last-Translator: Jan Schneider \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" + +#: templates/edit/create.inc:13 +#, php-format +msgid "" +"%s does not exist, but maybe you were looking for one of the following pages?" +msgstr "" +"%s existiert nicht, aber vielleicht haben Sie eine der folgenden Seiten " +"gesucht?" + +#: templates/edit/create.inc:30 +#, php-format +msgid "" +"%s does not exist. Click on \"Create\" below if you want to create this page " +"now and start editing." +msgstr "" +"%s existiert nicht. Klicken Sie unten auf \"Erstellen\", wenn Sie diese " +"Seite jetzt anlegen und bearbeiten möchten." + +#: lib/Page/Search.php:112 +#, php-format +msgid "%s does not exist. You can create it now." +msgstr "%s existiert nicht. Sie können es jetzt anlegen." + +#: templates/edit/create.inc:37 +msgid "(None)" +msgstr "(Keine)" + +#: scripts/wicked.php:161 +msgid "" +"-d, --debug Run in debug mode (displays extra information)" +msgstr "" +"-d, --debug Im Debugmodus ausführen (Zeigt zusätzliche\n" +" Informationen an)" + +#: scripts/wicked.php:163 +msgid "" +"-g, --get[=pagetitle] Return all pages (unless pagetitle specified)" +msgstr "" +"-g, --get[=pagetitle] Liefert alle Seiten zurück (außer wenn " +"spezieller\n" +" Seitentitel angeben wird)" + +#: scripts/wicked.php:160 +msgid "-h, --help Show this help" +msgstr "-h, --help Diese Hilfe anzeigen" + +#: scripts/wicked.php:162 +msgid "-l, --list-pages List pages" +msgstr "-l, --list-pages Seitenliste anzeigen" + +#: scripts/wicked.php:164 +msgid "-o, --out[=type] Output type for results (default:xml)" +msgstr "-o, --out[=type] Ausgabetyp der Resultate (Standard: xml)" + +#: scripts/wicked.php:166 +msgid "-p, --password[=password] Horde login password" +msgstr "-p, --password[=passwort] Horde-Passwort" + +#: scripts/wicked.php:165 +msgid "-u, --username[=username] Horde login username" +msgstr "-u, --username[=benutzername] Horde-Benutzername" + +#: templates/sync/list.inc:25 templates/sync/list.inc:51 +#: templates/sync/list.inc:73 +msgid "Actions" +msgstr "Aktionen" + +#: templates/display/MergeOrRename.html:31 +msgid "Add the text from this page" +msgstr "den Text von dieser Seite hinzufügen" + +#: lib/Page/AddPage.php:108 +#, php-format +msgid "AddPage: %s" +msgstr "Seite anlegen: %s" + +#: lib/Page/AllPages.php:90 +msgid "AllPages" +msgstr "AlleSeiten" + +#: lib/Page/DeletePage.php:83 +msgid "" +"Are you sure you want to delete this page? All versions will be permanently " +"removed." +msgstr "" +"Sind Sie sicher, dass Sie diese Seite löschen möchten? Alle alten Versionen " +"werden dauerhaft gelöscht." + +#: lib/Page/DeletePage.php:85 +#, php-format +msgid "Are you sure you want to delete version %s of this page?" +msgstr "Sind Sie sicher, dass Sie die Version %s dieser Seite löschen möchten?" + +#: lib/Page/RevertPage.php:71 +#, php-format +msgid "Are you sure you want to revert to version %s of this page?" +msgstr "" +"Sind Sie sicher, dass Sie die Version %s dieser Seite wiederherstellen " +"möchten?" + +#: templates/display/AttachedFiles.html:88 +msgid "Attach File" +msgstr "Datei anhängen" + +#: templates/display/AttachedFiles.html:52 +msgid "Attach a New File" +msgstr "Eine neue Datei anhängen" + +#: templates/display/standard.inc:77 +msgid "AttachedFiles" +msgstr "AngehängteDateien" + +#: lib/Page/AttachedFiles.php:171 +#, php-format +msgid "AttachedFiles: %s" +msgstr "AngehängteDateien: %s" + +#: templates/display/standard.inc:78 +msgid "Attached_Files" +msgstr "Angehängte_Dateien" + +#: templates/display/AttachedFiles.html:7 +msgid "Attachment Name" +msgstr "Anhangname" + +#: templates/display/standard.inc:117 +msgid "Attachments" +msgstr "Anhänge" + +#: lib/Page/AttachedFiles.php:225 +msgid "Attachments with spaces can't be embedded into a page." +msgstr "Anhänge mit Leerzeichen können nicht in eine Seite eingebettet werden." + +#: templates/history/header.inc:23 templates/pagelist/header.inc:7 +#: templates/sync/list.inc:24 templates/sync/list.inc:50 +#: templates/sync/diff.inc:25 templates/sync/diff.inc:61 +#: templates/edit/create.inc:19 lib/Page/Search.php:158 +#: templates/display/AttachedFiles.html:10 +msgid "Author" +msgstr "Autor" + +#: templates/display/standard.inc:104 +msgid "Ba_ck to" +msgstr "_Zurück zu" + +#: templates/display/standard.inc:104 +msgid "Back to" +msgstr "Zurück zu" + +#: templates/display/standard.inc:67 +msgid "BackLinks" +msgstr "RückVerweise" + +#: lib/Page/BackLinks.php:80 +#, php-format +msgid "BackLinks: %s" +msgstr "RückVerweise: %s" + +#: lib/Page/SyncPages.php:246 lib/Page/SyncPages.php:249 +msgid "By default, your login data will be used" +msgstr "" + +#: lib/Page/AttachedFiles.php:231 +msgid "Can't read uploaded file." +msgstr "Hochgeladene Datei konnte nicht gelesen werden." + +#: lib/Page/RevertPage.php:120 +#, php-format +msgid "Can't revert to an unknown version." +msgstr "Wiederherstellung einer unbekannten Version nicht möglich." + +#: lib/Page/AttachedFiles.php:271 +#, php-format +msgid "Can't update \"%s\": no such attachment." +msgstr "\"%s\" konnte nicht aktualisiert werden: Kein Anhang mit diesem Namen." + +#: templates/edit/create.inc:47 templates/edit/standard.inc:27 +#: lib/Page/DeletePage.php:104 lib/Page/RevertPage.php:88 +#: lib/Page/MergeOrRename.php:140 templates/display/MergeOrRename.html:62 +msgid "Cancel" +msgstr "Abbrechen" + +#: templates/history/header.inc:29 templates/display/AttachedFiles.html:12 +msgid "Change Log" +msgstr "Änderung" + +#: templates/sync/diff.inc:26 templates/sync/diff.inc:62 +#: templates/edit/standard.inc:29 +msgid "Change log" +msgstr "Änderung" + +#: templates/display/AttachedFiles.html:80 +#: templates/display/AttachedFiles.html:146 +msgid "Change log entry" +msgstr "Änderungseintrag" + +#: templates/display/MergeOrRename.html:40 +msgid "Change references to this page from:" +msgstr "Verweise von folgenden Seiten ändern:" + +#: lib/Page/MergeOrRename.php:253 +#, php-format +msgid "Changed references from %s to %s" +msgstr "Verweise von %s nach %s geändert" + +#: templates/edit/standard.inc:28 +msgid "Changelog is required" +msgstr "Änderungseintrag ist notwendig" + +#: templates/sync/diff.inc:27 templates/sync/diff.inc:63 +#, fuzzy +msgid "Checksum" +msgstr "Überprüfen" + +#: templates/edit/create.inc:26 +msgid "" +"Click on \"Create\" below if you want to create this page now and start " +"editing." +msgstr "" +"Klicken Sie unten auf \"Erstellen\", wenn Sie diese Seite jetzt anlegen und " +"bearbeiten möchten." + +#: scripts/wicked.php:42 +msgid "Couldn't read command-line options." +msgstr "Die Kommandozeilenparameter konnten nicht gelesen werden." + +#: templates/edit/create.inc:46 +msgid "Create" +msgstr "Erstellen" + +#: lib/Page/NewPage.php:135 +#, php-format +msgid "Create Failed: %s" +msgstr "Erstellen fehlgeschlagen: %s" + +#: templates/history/header.inc:24 templates/sync/list.inc:23 +#: templates/sync/list.inc:49 templates/sync/diff.inc:24 +#: templates/sync/diff.inc:60 +msgid "Created" +msgstr "Erstellt" + +#: templates/pagelist/header.inc:8 templates/edit/create.inc:20 +#: lib/Page/Search.php:159 +msgid "Creation Date" +msgstr "Erstelldatum" + +#: lib/Page/SyncPages.php:231 +msgid "Custom" +msgstr "Angepasst" + +#: templates/display/AttachedFiles.html:11 +msgid "Date" +msgstr "Datum" + +#: lib/Page/DeletePage.php:103 +msgid "Delete" +msgstr "Löschen" + +#: templates/display/standard.inc:52 +#, php-format +msgid "Delete %s" +msgstr "%s löschen" + +#: templates/history/header.inc:16 +msgid "Delete Version" +msgstr "Version löschen" + +#: templates/history/summary.inc:6 +#, php-format +msgid "Delete Version %s" +msgstr "Version %s löschen" + +#: lib/Page/DeletePage.php:97 lib/Page/DeletePage.php:120 +msgid "DeletePage" +msgstr "SeiteLöschen" + +#: lib/Page/DeletePage.php:142 +#, php-format +msgid "Deleted version %s of \"%s\"." +msgstr "Version %s von \"%s\" gelöscht." + +#: templates/history/header.inc:26 +msgid "Diff From" +msgstr "Unterschiede von" + +#: templates/history/header.inc:27 +msgid "Diff To" +msgstr "Unterschiede zu" + +#: diff.php:56 templates/sync/diff.inc:101 templates/diff/diff.inc:2 +#, php-format +msgid "Diff for %s between %s and %s" +msgstr "Unterschiede in %s zwischen %s und %s" + +#: lib/Page/SyncPages.php:251 +msgid "Display" +msgstr "Anzeige" + +#: templates/pagelist/summary.inc:3 +#, php-format +msgid "Display %s" +msgstr "%s anzeigen" + +#: templates/history/summary.inc:2 templates/pagelist/summary.inc:6 +#, php-format +msgid "Display Version %s" +msgstr "Version %s anzeigen" + +#: templates/sync/list.inc:35 templates/sync/diff.inc:96 +msgid "Download" +msgstr "Herunterladen" + +#: templates/display/standard.inc:136 +#, fuzzy +msgid "Download this page as:" +msgstr "Diese Ergebnisse herunterladen als: " + +#: templates/display/AttachedFiles.html:13 +msgid "Downloads" +msgstr "Downloads" + +#: lib/Page/SyncPages.php:389 +#, fuzzy +msgid "Downloded from remote server" +msgstr "Ihre Server:" + +#: lib/Page/SyncPages.php:237 +#, fuzzy +msgid "Driver" +msgstr "Auslieferung" + +#: lib/Page/SyncPages.php:254 +msgid "Edit" +msgstr "Bearbeiten" + +#: preview.php:24 templates/display/standard.inc:24 +#, php-format +msgid "Edit %s" +msgstr "%s Bearbeiten" + +#: templates/history/header.inc:18 +msgid "Edit Version" +msgstr "Version bearbeiten" + +#: templates/history/summary.inc:16 +#, php-format +msgid "Edit Version %s" +msgstr "Version %s bearbeiten" + +#: templates/sync/diff.inc:98 +#, fuzzy +msgid "Edit local" +msgstr "Block bearbeiten" + +#: templates/sync/diff.inc:99 +#, fuzzy +msgid "Edit remote" +msgstr "Notiz bearbeiten" + +#: templates/edit/standard.inc:21 lib/Page/EditPage.php:93 +msgid "EditPage" +msgstr "SeiteBearbeiten" + +#: templates/display/AttachedFiles.html:67 +msgid "Enter a name for this file (if blank, will use the file's current name)" +msgstr "" +"Geben Sie einen Namen für diese Datei an (Dateiname wird verwendet, falls " +"nichts anderen angegeben)" + +#: scripts/mail-filter.php:127 +#, php-format +msgid "Error creating new page: %s" +msgstr "Fehler beim Anlegen einer neuen Seite: %s" + +#: lib/Page/MergeOrRename.php:202 +#, php-format +msgid "Error deleting %s: %s" +msgstr "Fehler beim Löschen von %s: %s" + +#: scripts/mail-filter.php:42 +#, php-format +msgid "Error parsing MIME message: %s\n" +msgstr "Fehler beim Einlesen der MIME-Nachricht: %s\n" + +#: lib/Page/MergeOrRename.php:217 +#, php-format +msgid "Error renaming \"%s\": %s" +msgstr "Fehler beim Umbenennen von \"%s\": %s" + +#: lib/Page/MergeOrRename.php:247 +#, php-format +msgid "Error retrieving %s: %s" +msgstr "Fehler beim Lesen von %s: %s" + +#: lib/Page/AttachedFiles.php:111 lib/Page/AttachedFiles.php:253 +#, php-format +msgid "Error retrieving attachments: %s" +msgstr "Fehler beim Lesen der Anhänge: %s" + +#: lib/Page/AddPage.php:68 +#, php-format +msgid "Error retrieving templates: %s" +msgstr "Fehler beim Laden der Vorlage: %s" + +#: lib/Page/MergeOrRename.php:194 lib/Page/MergeOrRename.php:274 +#, php-format +msgid "Error updating %s: %s" +msgstr "Fehler beim Aktualisieren von %s: %s" + +#: lib/Page/Search.php:165 +msgid "Exact Match" +msgstr "Genaue Treffer" + +#: lib/Page/MergeOrRename.php:164 +#, php-format +msgid "Failed to retrieve \"%s\": %s" +msgstr "Fehler beim Anzeigen von \"%s\": %s" + +#: lib/Page/SyncPages.php:194 lib/Page/SyncPages.php:271 +#, fuzzy +msgid "Fetch page list" +msgstr "Nachrichten sammeln" + +#: templates/sync/diff.inc:54 +msgid "Found same content in history" +msgstr "" + +#: lib/Page.php:274 +msgid "Guest" +msgstr "Gast" + +#: templates/display/standard.inc:138 +msgid "HTML" +msgstr "HTML" + +#: templates/display/standard.inc:85 +msgid "Hi_story" +msgstr "_Geschichte" + +#: templates/display/standard.inc:84 +#, php-format +msgid "History of %s" +msgstr "Geschichte von %s" + +#: lib/Page/StandardPage/StdHistoryPage.php:46 +msgid "History page not found" +msgstr "Geschichte nicht gefunden" + +#: history.php:30 templates/history/header.inc:7 +#, php-format +msgid "History: %s" +msgstr "Geschichte: %s" + +#: lib/Wicked.php:130 +msgid "HowTo_UseWiki" +msgstr "Wi_kiAnleitung" + +#: templates/display/MergeOrRename.html:26 +msgid "If a page with the new name already exists, then" +msgstr "Wenn bereits eine Seite mit dem neuen Namen existiert," + +#: history.php:18 display.php:17 +msgid "Internal error viewing requested page" +msgstr "Interner Fehler beim Anzeigen dieser Seite" + +#: diff.php:39 +#, php-format +msgid "Internal error viewing requested page: %s" +msgstr "Interner Fehler beim Anzeigen dieser Seite: %s" + +#: lib/api.php:418 +msgid "Invalid page requested." +msgstr "Ungültige Seite angefordert." + +#: templates/display/AttachedFiles.html:133 +msgid "Is this a minor update?" +msgstr "Handelt es sich um eine kleinere Änderung?" + +#: templates/display/standard.inc:72 +msgid "L_ikePages" +msgstr "Ähnl_icheSeiten" + +#: templates/display/title.inc:6 templates/edit/standard.inc:20 +#, php-format +msgid "Last Modified %s by %s" +msgstr "Letzte Änderung am %s durch %s" + +#: templates/display/standard.inc:139 +#, fuzzy +msgid "Latex" +msgstr "Datum" + +#: lib/Page/LeastPopular.php:93 +msgid "LeastPopular" +msgstr "Unbeliebteste" + +#: templates/display/standard.inc:72 +msgid "LikePages" +msgstr "ÄhnlicheSeiten" + +#: lib/Page/LikePages.php:82 +#, php-format +msgid "LikePages: %s" +msgstr "ÄhnlicheSeiten: %s" + +#: templates/sync/diff.inc:32 templates/sync/diff.inc:68 +#: lib/Page/SyncDiff.php:80 lib/Page/SyncDiff.php:86 +msgid "Local" +msgstr "Lokal" + +#: templates/sync/diff.inc:22 templates/sync/diff.inc:58 +msgid "Location" +msgstr "Ort" + +#: templates/display/standard.inc:40 +#, php-format +msgid "Lock %s" +msgstr "%s sperren" + +#: templates/display/title.inc:34 templates/edit/standard.inc:21 +#: lib/Page/DeletePage.php:97 lib/Page/RevertPage.php:81 +msgid "Locked" +msgstr "Gesperrt" + +#: scripts/wicked.php:104 +#, php-format +msgid "Logged in successfully as \"%s\"." +msgstr "Erfolgreich als \"%s\" angemeldet." + +#: scripts/wicked.php:100 +msgid "Login is incorrect." +msgstr "Anmeldedaten sind nicht korrekt." + +#: scripts/wicked.php:158 +msgid "" +"Mandatory arguments to long options are mandatory for short options too." +msgstr "" +"Pflichtwerte für lange Parameter sind auch für kurze Parameter verpflichtend." + +#: templates/display/standard.inc:60 +msgid "MergeOrRename" +msgstr "Umbenennen" + +#: lib/Page/MergeOrRename.php:125 +#, php-format +msgid "MergeOrRename: %s" +msgstr "Umbenennen: %s" + +#: lib/Page/MergeOrRename.php:207 +#, php-format +msgid "Merged \"%s\" into \"%s\"." +msgstr "\"%s\" mit \"%s\" zusammengeführt." + +#: lib/Page/MergeOrRename.php:210 +#, php-format +msgid "Merged \"%s\" into \"%s\". New page: %s\n" +msgstr "\"%s\" mit \"%s\" zusammengeführt. Neue Seite: %s\n" + +#: lib/Page/MergeOrRename.php:191 +#, php-format +msgid "Merged from %s" +msgstr "Zusammengeführt von %s:" + +#: templates/edit/standard.inc:30 +msgid "Minor Change" +msgstr "Kleinere Änderung" + +#: lib/Page/MostPopular.php:93 +msgid "MostPopular" +msgstr "Beliebteste" + +#: lib/Block/page.php:41 +msgid "Name of wiki page to display" +msgstr "Name der anzuzeigenden Wikiseite" + +#: lib/Page.php:263 +msgid "Never" +msgstr "Nie" + +#: lib/Page/AttachedFiles.php:303 +#, php-format +msgid "New attachment \"%s\" to page \"%s\"." +msgstr "Neuer Anhang \"%s\" für Seite \"%s\"." + +#: templates/display/MergeOrRename.html:15 +msgid "New name" +msgstr "Neuer Name" + +#: lib/Page/MergeOrRename.php:151 +msgid "New name is the same as old name." +msgstr "Neuer Name ist der gleiche wie der alte." + +#: templates/sync/list.inc:42 +msgid "New pages on local server" +msgstr "" + +#: templates/sync/list.inc:16 +#, fuzzy +msgid "New pages on remote server" +msgstr "Ihre Server:" + +#: lib/Page/NewPage.php:112 +msgid "NewPage" +msgstr "NeueSeite" + +#: templates/edit/new.inc:20 +#, php-format +msgid "NewPage: %s" +msgstr "NeueSeite: %s" + +#: lib/api.php:352 lib/Page/SyncPages.php:387 lib/Page/EditPage.php:124 +msgid "No changes made" +msgstr "Keine Änderungen vorgenommen" + +#: templates/sync/list.inc:18 templates/sync/list.inc:44 +#, fuzzy +msgid "No pages found" +msgstr "Keine Gesichter gefunden" + +#: templates/sync/list.inc:70 +#, fuzzy +msgid "No pages to sync" +msgstr "Keine Nachrichten" + +#: lib/Driver.php:124 +msgid "Not implemented." +msgstr "Nicht implementiert." + +#: templates/pagelist/header.inc:5 templates/sync/list.inc:21 +#: templates/sync/list.inc:47 templates/sync/list.inc:73 +#: templates/edit/create.inc:17 lib/Page/Search.php:156 +msgid "Page" +msgstr "Seite" + +#: lib/Page/MergeOrRename.php:179 +#, php-format +msgid "Page \"%s\" already exists." +msgstr "Die Seite \"%s\" existiert bereits." + +#: lib/Page/SyncPages.php:395 +#, php-format +msgid "Page \"%s\" was sucessfuly downloaded from remote to local wiki." +msgstr "" + +#: lib/Page/SyncPages.php:425 +#, fuzzy, php-format +msgid "Page \"%s\" was sucessfuly uploaded from local to remote wiki." +msgstr "Der Eintrag \"%s\" wurde erfolgreich dem Adressbuch hinzugefügt" + +#: lib/Page/NewPage.php:138 +msgid "Page Created" +msgstr "Seite Erstellt" + +#: lib/Page/EditPage.php:131 +msgid "Page Saved" +msgstr "Seite gespeichert" + +#: templates/edit/create.inc:35 +msgid "Page Template:" +msgstr "Seitenvorlage:" + +#: lib/Page/Search.php:179 +msgid "Page Text Matches" +msgstr "Gefundene Texttreffer" + +#: lib/Page/Search.php:172 +msgid "Page Title Matches" +msgstr "Gefundene Titeltreffer" + +#: templates/pagelist/header.inc:10 +msgid "Page Views" +msgstr "Seitenaufrufe" + +#: display.php:31 +#, php-format +msgid "Page failed to lock: %s" +msgstr "Fehler beim Blockieren der Seite: %s" + +#: display.php:46 +#, php-format +msgid "Page failed to unlock: %s" +msgstr "Fehler beim Freigeben der Seite: %s" + +#: display.php:34 +msgid "Page locked" +msgstr "Seite blockiert" + +#: lib/Driver/sql.php:592 lib/Page/AddPage.php:53 lib/Page/NewPage.php:72 +msgid "Page name must not be empty" +msgstr "Der Seitenname darf nicht leer sein." + +#: display.php:49 +msgid "Page unlocked" +msgstr "Seite freigegeben" + +#: lib/api.php:114 lib/api.php:117 +msgid "Pages" +msgstr "Seiten" + +#: lib/Page/NewPage.php:129 +msgid "Pages cannot be empty." +msgstr "Seiten dürfen nicht leer sein." + +#: templates/sync/list.inc:68 +msgid "Pages to sync" +msgstr "" + +#: lib/Page/SyncPages.php:249 +msgid "Password" +msgstr "Passwort" + +#: templates/display/standard.inc:100 +msgid "Permissio_ns" +msgstr "_Rechte" + +#: lib/api.php:414 +msgid "Permission denied." +msgstr "Zugriff verweigert." + +#: templates/display/standard.inc:137 +msgid "Plain Text" +msgstr "Einfacher Text" + +#: lib/Page/SyncPages.php:240 +msgid "Prefix" +msgstr "Präfix" + +#: templates/edit/new.inc:25 templates/edit/standard.inc:26 +msgid "Preview" +msgstr "Vorschau" + +#: lib/Page/EditPage.php:112 +msgid "Random string did not match." +msgstr "Die Buchstaben stimmen nicht überein." + +#: lib/Page/RecentChanges.php:114 +msgid "RecentChanges" +msgstr "LetzteÄnderungen" + +#: lib/Page/AttachedFiles.php:67 +#, php-format +msgid "Referrer \"%s\" does not exist." +msgstr "Der Referrer \"%s\" existiert nicht." + +#: lib/Page/AttachedFiles.php:129 +#, php-format +msgid "Reload \"%s\"" +msgstr "\"%s\" aktualisieren" + +#: templates/history/header.inc:8 +msgid "Reload History" +msgstr "Geschichte aktualisieren" + +#: templates/display/title.inc:32 templates/display/title.inc:33 +msgid "Reload Page" +msgstr "Seite aktualisieren" + +#: templates/sync/diff.inc:40 templates/sync/diff.inc:76 +#: lib/Page/SyncDiff.php:81 lib/Page/SyncDiff.php:85 +msgid "Remote" +msgstr "Extern" + +#: lib/Page/SyncPages.php:194 lib/Page/SyncPages.php:300 +msgid "Remove login info" +msgstr "Anmeldedaten entfernen" + +#: lib/Page/MergeOrRename.php:222 +#, php-format +msgid "Renamed \"%s\" to \"%s\"." +msgstr "\"%s\" nach \"%s\" umbenannt." + +#: lib/Page/MergeOrRename.php:225 +#, php-format +msgid "Renamed \"%s\" to \"%s\". New page: %s\n" +msgstr "\"%s\" nach \"%s\" umbenannt. Neue Seite: %s\n" + +#: lib/Driver/sql.php:681 +#, php-format +msgid "Renamed page from %s" +msgstr "Seite umbenannt von %s" + +#: lib/Page/SyncPages.php:194 +msgid "Reset" +msgstr "Zurücksetzen" + +#: templates/history/header.inc:20 +msgid "Restore Version" +msgstr "Version wiederherstellen" + +#: lib/Page/RevertPage.php:87 +msgid "Revert" +msgstr "Wiederherstellen" + +#: templates/history/summary.inc:26 +#, php-format +msgid "Revert to version %s" +msgstr "Version %s wiederherstellen" + +#: lib/Page/RevertPage.php:81 lib/Page/RevertPage.php:104 +msgid "RevertPage" +msgstr "SeiteWiederherstellen" + +#: lib/Page/RevertPage.php:127 +#, php-format +msgid "Reverted to version %s of \"%s\"." +msgstr "Version %s von \"%s\" wiederhergestellt." + +#: lib/Driver/sql.php:596 +msgid "Robots are not allowed to create pages" +msgstr "Roboter dürfen keine Seiten erstellen" + +#: templates/edit/new.inc:24 templates/edit/standard.inc:25 +msgid "Save" +msgstr "Speichern" + +#: lib/Page/EditPage.php:128 +#, php-format +msgid "Save Failed: %s" +msgstr "Speichern fehlgeschlagen: %s" + +#: lib/Page/SyncPages.php:194 lib/Page/SyncPages.php:288 +msgid "Save login info" +msgstr "" + +#: templates/menu.inc:17 lib/Page/Search.php:204 +msgid "Search" +msgstr "Suche" + +#: templates/pagelist/search.inc:1 +msgid "Search Results" +msgstr "Suchergebnisse" + +#: templates/display/AttachedFiles.html:58 +#: templates/display/AttachedFiles.html:110 +msgid "Select file to attach:" +msgstr "Wählen Sie die Datei aus, die angehängt werden soll:" + +#: templates/display/AttachedFiles.html:119 +msgid "Select the file to update" +msgstr "Wählen Sie die Datei aus, die aktualisiert werden soll" + +#: templates/display/standard.inc:99 +#, php-format +msgid "Set permissions for %s" +msgstr "Rechte für %s festlegen" + +#: templates/sync/list.inc:79 +msgid "Show changes" +msgstr "Änderungen anzeigen" + +#: templates/display/title.inc:16 lib/Page/RecentChanges.php:57 +#, php-format +msgid "Show changes for %s" +msgstr "Änderungen für %s anzeigen" + +#: lib/Page/RecentChanges.php:64 +#, php-format +msgid "Show version %s" +msgstr "Version %s anzeigen" + +#: templates/edit/standard.inc:41 +msgid "Spam Protection - Enter the letters below:" +msgstr "Spamschutz - Geben sie die Buchstaben unten ein:" + +#: templates/display/MergeOrRename.html:33 +msgid "Stop and don't do anything" +msgstr "abbrechen und nichts ändern" + +#: lib/Page/SyncPages.php:231 +msgid "Stored" +msgstr "Gespeichert" + +#: templates/display/MergeOrRename.html:61 +msgid "Submit" +msgstr "Abschicken" + +#: lib/Page/DeletePage.php:136 +#, php-format +msgid "Successfully deleted \"%s\"." +msgstr "\"%s\" wurde erfolgreich gelöscht." + +#: lib/Page/AttachedFiles.php:207 +#, php-format +msgid "Successfully deleted version %s of \"%s\" from \"%s\"" +msgstr "Version %s von \"%s\" erfolgreich aus \"%s\" gelöscht" + +#: lib/Page/SyncPages.php:193 +msgid "Sync data" +msgstr "" + +#: lib/Page/SyncPages.php:305 +msgid "Sync login info was removed." +msgstr "" + +#: lib/Page/SyncPages.php:295 +#, fuzzy +msgid "Sync login info was stored" +msgstr "Falscher Benutzername oder Passwort." + +#: lib/Page/SyncDiff.php:129 +#, fuzzy +msgid "SyncDiff" +msgstr "Unterschiede" + +#: lib/Page/SyncPages.php:169 +#, fuzzy +msgid "SyncPages" +msgstr "Seiten" + +#: lib/Page/SyncDiff.php:52 +#, fuzzy +msgid "Synchronization is disabled" +msgstr "Konto ist deaktiviert" + +#: lib/Page.php:488 +msgid "Table of Contents" +msgstr "Inhaltsverzeichnis" + +#: lib/Page/AttachedFiles.php:280 +#, php-format +msgid "There is already an attachment named \"%s\"." +msgstr "Es existiert bereits ein Anhang mit dem Namen \"%s\"." + +#: lib/Page/MergeOrRename.php:149 lib/Page/MergeOrRename.php:155 +msgid "This is a required field." +msgstr "Dies ist ein Pflichtfeld." + +#: display.php:61 +msgid "This page does not have a history" +msgstr "Diese Seite hat keine Geschichte" + +#: lib/Page/MergeOrRename.php:100 +#, php-format +msgid "This page is referenced from %d other page(s)." +msgstr "Auf diese Seite wird von %d anderen Seite(n) verwiesen." + +#: templates/display/standard.inc:35 +msgid "Un_lock" +msgstr "_Freigeben" + +#: lib/Page/StandardPage.php:81 +#, php-format +msgid "Unable to create %s" +msgstr "%s kann nicht erstellt werden" + +#: lib/Page/StandardPage.php:89 +msgid "Unable to create WikiHome. The wiki is not configured." +msgstr "" +"WikiHome kann nicht erstellt werden. Das Wiki wurde nicht konfiguriert." + +#: templates/display/standard.inc:34 +#, php-format +msgid "Unlock %s" +msgstr "%s freigeben" + +#: lib/Sync.php:78 lib/Sync.php:90 lib/Sync.php:102 lib/Sync.php:114 +#: lib/Sync.php:126 lib/Sync.php:142 lib/Driver.php:78 lib/Driver.php:92 +#: lib/Driver.php:104 lib/Driver.php:109 lib/Driver.php:129 lib/Driver.php:134 +#: lib/Driver.php:192 lib/Driver.php:197 lib/Driver.php:209 lib/Driver.php:223 +#: lib/Driver.php:237 lib/Driver.php:251 lib/Driver.php:256 lib/Driver.php:261 +#: lib/Driver.php:279 lib/Driver.php:399 lib/Driver.php:425 lib/Driver.php:441 +#: lib/Page.php:255 lib/Page.php:289 lib/Page.php:294 lib/Page.php:393 +#: lib/Page.php:403 lib/Page.php:413 lib/Page.php:423 lib/Page.php:523 +#: lib/Page.php:534 lib/Page.php:539 lib/Page.php:544 lib/Page.php:549 +#: lib/Page.php:589 +msgid "Unsupported" +msgstr "Nicht unterstützt" + +#: templates/display/AttachedFiles.html:154 +msgid "Update File" +msgstr "Datei aktualisieren" + +#: templates/display/AttachedFiles.html:104 +msgid "Update an Attachment" +msgstr "Anhang aktualsieren" + +#: lib/Page/AttachedFiles.php:300 +#, php-format +msgid "Updated attachment \"%s\" on page \"%s\"." +msgstr "Anhang \"%s\" von Seite \"%s\" aktualisiert." + +#: templates/sync/list.inc:61 templates/sync/diff.inc:97 +msgid "Upload" +msgstr "Hochladen" + +#: lib/Page/SyncPages.php:419 +#, fuzzy +msgid "Uploaded from remote server" +msgstr "Ihre Server:" + +#: lib/Page/SyncPages.php:243 +msgid "Url" +msgstr "" + +#: scripts/wicked.php:156 +#, php-format +msgid "Usage: %s [OPTIONS]..." +msgstr "Aufruf: %s [OPTIONEN]..." + +#: lib/Page/SyncPages.php:246 +msgid "User" +msgstr "Benutzer" + +#: templates/history/header.inc:13 templates/pagelist/header.inc:6 +#: templates/sync/list.inc:22 templates/sync/list.inc:48 +#: templates/sync/diff.inc:23 templates/sync/diff.inc:59 +#: templates/edit/create.inc:18 lib/Page/Search.php:157 +#: templates/display/AttachedFiles.html:9 +msgid "Version" +msgstr "Version" + +#: lib/Page/SyncPages.php:178 +#, fuzzy +msgid "View local" +msgstr "Warenkorb anzeigen" + +#: lib/Page/AttachedFiles.php:309 +msgid "View page: " +msgstr "Seite anzeigen: " + +#: lib/Page/SyncPages.php:180 +#, fuzzy +msgid "View remote" +msgstr "Kontakt anzeigen" + +#: lib/Page/SyncPages.php:237 +#, fuzzy +msgid "Wicked" +msgstr "Gesperrt" + +#: lib/api.php:374 +msgid "Wiki Templates" +msgstr "Wiki-Vorlagen" + +#: lib/Block/page.php:3 +msgid "Wiki page" +msgstr "Wikiseite" + +#: display.php:25 +msgid "You are not allowed to lock this page" +msgstr "Sie dürfen diese Seite nicht blockieren." + +#: display.php:40 +msgid "You are not allowed to unlock this page" +msgstr "Sie dürfen diese Seite nicht freigeben." + +#: lib/Page/AttachedFiles.php:196 +msgid "You do not have permission to delete attachments from this page." +msgstr "" +"Sie haben nicht genügend Rechte, um Anhänge von dieser Seite zu löschen." + +#: lib/Page/AttachedFiles.php:237 lib/Page/MergeOrRename.php:169 +#: lib/Page/MergeOrRename.php:184 +#, php-format +msgid "You do not have permission to edit \"%s\"" +msgstr "Sie haben nicht genügend Rechte, um \"%s\" zu bearbeiten" + +#: lib/Page/NewPage.php:125 +#, php-format +msgid "You don't have permission to create \"%s\"." +msgstr "Sie haben nicht genügend Rechte, um \"%s\" zu erstellen." + +#: lib/Page/DeletePage.php:150 +#, php-format +msgid "You don't have permission to delete \"%s\"." +msgstr "Sie haben nicht genügend Rechte, um \"%s\" zu löschen." + +#: lib/api.php:334 lib/Page/SyncPages.php:371 lib/Page/EditPage.php:107 +#: lib/Page/RevertPage.php:133 +#, php-format +msgid "You don't have permission to edit \"%s\"." +msgstr "Sie haben nicht genügend Rechte, um \"%s\" zu bearbeiten." + +#: display.php:70 display.php:73 display.php:116 display.php:119 +msgid "You don't have permission to view this page." +msgstr "Sie haben nicht die nötigen Rechte um diese Seite anzuzeigen." + +#: lib/Page/AttachedFiles.php:245 +msgid "You must enter a change description to attach this file." +msgstr "Sie müssen einen Änderungseintrag eingeben, um diese Datei anzuhängen." + +#: lib/api.php:338 lib/Page/EditPage.php:118 +msgid "You must provide a change log." +msgstr "Sie müssen einen Änderungseintrag angeben." + +#: lib/Wicked.php:130 +msgid "_AllPages" +msgstr "_AlleSeiten" + +#: templates/display/standard.inc:67 +msgid "_BackLinks" +msgstr "Rück_Verweise" + +#: templates/display/standard.inc:53 +msgid "_Delete" +msgstr "Lös_chen" + +#: templates/display/standard.inc:25 +msgid "_EditPage" +msgstr "Seite_Bearbeiten" + +#: templates/display/standard.inc:41 +msgid "_Lock" +msgstr "S_perren" + +#: templates/display/standard.inc:61 +msgid "_MergeOrRename" +msgstr "_Umbenennen" + +#: lib/Wicked.php:130 +msgid "_RecentChanges" +msgstr "_LetzteÄnderungen" + +#: lib/Wicked.php:130 +msgid "_WikiHome" +msgstr "_WikiHome" + +#: lib/Page/AttachedFiles.php:217 +msgid "attachment" +msgstr "Anhang" + +#: scripts/wicked.php:123 +#, php-format +msgid "page \"%s\" doesn't exist." +msgstr "Seite \"%s\" existiert nicht." diff --git a/wicked/po/es_ES.po b/wicked/po/es_ES.po new file mode 100644 index 000000000..7ad3b88f4 --- /dev/null +++ b/wicked/po/es_ES.po @@ -0,0 +1,901 @@ +# Spanish translations for wicked package +# Traducciones al español para el paquete wicked. +# Copyright 2008-2009 The Horde Project +# This file is distributed under the same license as the wicked package. +# Automatically generated, 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: Wicked 1.0-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-03-20 10:33+0100\n" +"PO-Revision-Date: 2008-03-20 10:33+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" + +#: lib/Page/Search.php:111 +#, php-format +msgid "%s Does not exist. You can create it now." +msgstr "%s no existe. Puede crearlo ahora." + +#: templates/edit/create.inc:13 +#, php-format +msgid "" +"%s does not exist, but maybe you were looking for one of the following pages?" +msgstr "%s no existe, pero ¿quizá buscaba alguna de las páginas siguientes?" + +#: templates/edit/create.inc:30 +#, php-format +msgid "" +"%s does not exist. Click on \"Create\" below if you want to create this page " +"now and start editing." +msgstr "" +"%s no existe. Pulse sobre el vínculo \"Crear\" si desea añadir esta página " +"ahora y empezar a modificarla." + +#: templates/edit/create.inc:37 +msgid "(None)" +msgstr "(Ninguno)" + +#: scripts/wicked.php:161 +msgid "" +"-d, --debug Run in debug mode (displays extra information)" +msgstr "" +"-d, --debug Ejecutar en modo de depuración (muestra " +"información adicional)" + +#: scripts/wicked.php:163 +msgid "" +"-g, --get[=pagetitle] Return all pages (unless pagetitle specified)" +msgstr "" +"-g, --get[=título de la página] Devuelve todas las páginas (si no se indica " +"un título congreto)" + +#: scripts/wicked.php:160 +msgid "-h, --help Show this help" +msgstr "-h, --help Muestra esta ayuda" + +#: scripts/wicked.php:162 +msgid "-l, --list-pages List pages" +msgstr "-l, --list-pages Lista las páginas" + +#: scripts/wicked.php:164 +msgid "-o, --out[=type] Output type for results (default:xml)" +msgstr "" +"-o, --out[=formato] Formato de salida de los resultados (por " +"omisión:xml)" + +#: scripts/wicked.php:166 +msgid "-p, --password[=password] Horde login password" +msgstr "-p, --password[=contraseña] Contraseña de inicio de Horde" + +#: scripts/wicked.php:165 +msgid "-u, --username[=username] Horde login username" +msgstr "-u, --usename[=nombre de usuario] Nombre de usuario de inicio de Horde" + +#: templates/display/MergeOrRename.html:31 +msgid "Add the text from this page" +msgstr "Añadir el texto de esta página" + +#: lib/Page/AddPage.php:98 +#, php-format +msgid "AddPage: %s" +msgstr "AñadirPágina: %s" + +#: lib/Page/AllPages.php:90 +msgid "AllPages" +msgstr "TodasLasPáginas" + +#: lib/Page/DeletePage.php:83 +msgid "" +"Are you sure you want to delete this page? All versions will be permanently " +"removed." +msgstr "" +"¿Seguro que desea eliminar esta página? Se perderán definitivamente todas " +"sus versiones." + +#: lib/Page/DeletePage.php:85 +#, php-format +msgid "Are you sure you want to delete version %s of this page?" +msgstr "¿Seguro que desea eliminar la versión %s de esta página?" + +#: lib/Page/RevertPage.php:71 +#, php-format +msgid "Are you sure you want to revert to version %s of this page?" +msgstr "¿Seguro que desea volver a la versión %s de esta página?" + +#: templates/display/AttachedFiles.html:88 +msgid "Attach File" +msgstr "Adjuntar archivo" + +#: templates/display/AttachedFiles.html:52 +msgid "Attach a New File" +msgstr "Adjuntar un archivo" + +#: templates/display/standard.inc:77 +msgid "AttachedFiles" +msgstr "ArchivosAdjuntados" + +#: lib/Page/AttachedFiles.php:171 +#, php-format +msgid "AttachedFiles: %s" +msgstr "ArchivosAdjuntados: %s" + +#: templates/display/standard.inc:78 +msgid "Attached_Files" +msgstr "Archivos_Adjuntados" + +#: templates/display/AttachedFiles.html:7 +msgid "Attachment Name" +msgstr "Nombre del adjunto" + +#: templates/display/standard.inc:117 +msgid "Attachments" +msgstr "Adjuntos" + +#: lib/Page/AttachedFiles.php:225 +msgid "Attachments with spaces can't be embedded into a page." +msgstr "Los adjuntos con espacios no se pueden incluir en una página." + +#: templates/edit/create.inc:19 templates/history/header.inc:23 +#: templates/pagelist/header.inc:7 lib/Page/Search.php:157 +#: templates/display/AttachedFiles.html:10 +msgid "Author" +msgstr "Autor" + +#: templates/display/standard.inc:104 +msgid "Ba_ck to" +msgstr "_Regresar a" + +#: templates/display/standard.inc:104 +msgid "Back to" +msgstr "Regresar a" + +#: templates/display/standard.inc:67 +msgid "BackLinks" +msgstr "VínculosAnteriores" + +#: lib/Page/BackLinks.php:80 +#, php-format +msgid "BackLinks: %s" +msgstr "VínculosAnteriores: %s" + +#: lib/Page/AttachedFiles.php:231 +msgid "Can't read uploaded file." +msgstr "No se puede leer el archivo cargado." + +#: lib/Page/RevertPage.php:120 +#, php-format +msgid "Can't revert to an unknown version." +msgstr "No se puede volver a una versión desconocida." + +#: lib/Page/AttachedFiles.php:271 +#, php-format +msgid "Can't update \"%s\": no such attachment." +msgstr "No se puede actualizar \"%s\": no existe el adjunto." + +#: templates/edit/create.inc:47 templates/edit/standard.inc:27 +#: lib/Page/MergeOrRename.php:140 lib/Page/RevertPage.php:88 +#: lib/Page/DeletePage.php:104 templates/display/MergeOrRename.html:62 +msgid "Cancel" +msgstr "Cancelar" + +#: templates/history/header.inc:29 templates/display/AttachedFiles.html:12 +msgid "Change Log" +msgstr "Registro del cambio" + +#: templates/edit/standard.inc:29 +msgid "Change log" +msgstr "Registro del cambio" + +#: templates/display/AttachedFiles.html:80 +#: templates/display/AttachedFiles.html:146 +msgid "Change log entry" +msgstr "Entrada de registro del cambio" + +#: templates/display/MergeOrRename.html:40 +msgid "Change references to this page from:" +msgstr "Cambiar las referencias a esta página desde:" + +#: lib/Page/MergeOrRename.php:253 +#, php-format +msgid "Changed references from %s to %s" +msgstr "Se han cambiado las referencias de %s a %s" + +#: templates/edit/standard.inc:28 +msgid "Changelog is required" +msgstr "Hace falta el binario de changelog" + +#: templates/edit/create.inc:26 +msgid "" +"Click on \"Create\" below if you want to create this page now and start " +"editing." +msgstr "" +"Pulse sobre el vínculo \"Crear\" si desea añadir esta página ahora y empezar " +"a modificarla." + +#: scripts/wicked.php:42 +msgid "Couldn't read command-line options." +msgstr "No se pudieron leer las opciones de la línea de comandos." + +#: templates/edit/create.inc:46 +msgid "Create" +msgstr "Crear" + +#: lib/Page/NewPage.php:129 +#, php-format +msgid "Create Failed: %s" +msgstr "Fallo al añadir: %s" + +#: templates/history/header.inc:24 +msgid "Created" +msgstr "Creado" + +#: templates/edit/create.inc:20 templates/pagelist/header.inc:8 +#: lib/Page/Search.php:158 +msgid "Creation Date" +msgstr "Fecha de creación" + +#: templates/display/AttachedFiles.html:11 +msgid "Date" +msgstr "Fecha" + +#: lib/Page/DeletePage.php:103 +msgid "Delete" +msgstr "Eliminar" + +#: templates/display/standard.inc:52 +#, php-format +msgid "Delete %s" +msgstr "Eliminar %s" + +#: templates/history/header.inc:16 +msgid "Delete Version" +msgstr "Eliminar versión" + +#: templates/history/summary.inc:6 +#, php-format +msgid "Delete Version %s" +msgstr "Eliminar versión %s" + +#: lib/Page/DeletePage.php:97 lib/Page/DeletePage.php:120 +msgid "DeletePage" +msgstr "Eliminar página" + +#: lib/Page/DeletePage.php:142 +#, php-format +msgid "Deleted version %s of \"%s\"." +msgstr "Se eliminó la versión %s de \"%s\"." + +#: templates/history/header.inc:26 +msgid "Diff From" +msgstr "Diferencias desde" + +#: templates/history/header.inc:27 +msgid "Diff To" +msgstr "Diferencias hasta" + +#: diff.php:56 templates/diff/diff.inc:2 +#, php-format +msgid "Diff for %s between %s and %s" +msgstr "Diferencias de %s entre %s y %s" + +#: templates/pagelist/summary.inc:3 +#, php-format +msgid "Display %s" +msgstr "Mostrar %s" + +#: templates/history/summary.inc:2 templates/pagelist/summary.inc:6 +#, php-format +msgid "Display Version %s" +msgstr "mostrar versión %s" + +#: templates/display/AttachedFiles.html:13 +msgid "Downloads" +msgstr "Descargas" + +#: preview.php:24 templates/display/standard.inc:24 +#, php-format +msgid "Edit %s" +msgstr "Modificar %s" + +#: templates/history/header.inc:18 +msgid "Edit Version" +msgstr "Modificar versión" + +#: templates/history/summary.inc:16 +#, php-format +msgid "Edit Version %s" +msgstr "Modificar versión %s" + +#: templates/edit/standard.inc:21 lib/Page/EditPage.php:93 +msgid "EditPage" +msgstr "ModificarPágina" + +#: templates/display/AttachedFiles.html:67 +msgid "Enter a name for this file (if blank, will use the file's current name)" +msgstr "" +"Introduzca un nombre para el archivo (si se deja en blanco, se utilizará el " +"nombre actual del archivo)" + +#: scripts/mail-filter.php:127 +#, php-format +msgid "Error creating new page: %s" +msgstr "Error al crear la página: %s" + +#: lib/Page/MergeOrRename.php:202 +#, php-format +msgid "Error deleting %s: %s" +msgstr "Error al eliminar la página %s: %s" + +#: scripts/mail-filter.php:42 +#, php-format +msgid "Error parsing MIME message: %s\n" +msgstr "Error al procesar el mensaje MIME: %s\n" + +#: lib/Page/MergeOrRename.php:217 +#, php-format +msgid "Error renaming \"%s\": %s" +msgstr "Error al renombrar la página \"%s\": %s" + +#: lib/Page/MergeOrRename.php:247 +#, php-format +msgid "Error retrieving %s: %s" +msgstr "Error al recuperar %s: %s" + +#: lib/Page/AttachedFiles.php:111 lib/Page/AttachedFiles.php:253 +#, php-format +msgid "Error retrieving attachments: %s" +msgstr "Error al recuperar los adjuntos: %s" + +#: lib/Page/AddPage.php:58 +#, php-format +msgid "Error retrieving templates: %s" +msgstr "Error al recuperar las plantillas: %s" + +#: lib/Page/MergeOrRename.php:194 lib/Page/MergeOrRename.php:274 +#, php-format +msgid "Error updating %s: %s" +msgstr "Error actualizando %s: %s" + +#: lib/Page/Search.php:164 +msgid "Exact Match" +msgstr "Coincidencia exacta" + +#: lib/Page/MergeOrRename.php:164 +#, php-format +msgid "Failed to retrieve \"%s\": %s" +msgstr "Se produjo un error al recuperar \"%s\": %s" + +#: lib/Page.php:274 +msgid "Guest" +msgstr "Invitado" + +#: templates/display/standard.inc:85 +msgid "Hi_story" +msgstr "_Historial" + +#: templates/display/standard.inc:84 +#, php-format +msgid "History of %s" +msgstr "Historial de %s" + +#: lib/Page/StandardPage/StdHistoryPage.php:46 +msgid "History page not found" +msgstr "No se ha encontrado la página de historial" + +#: history.php:30 templates/history/header.inc:7 +#, php-format +msgid "History: %s" +msgstr "Historial de %s" + +#: lib/Wicked.php:130 +msgid "HowTo_UseWiki" +msgstr "WikiCómoSeUsa" + +#: templates/display/MergeOrRename.html:26 +msgid "If a page with the new name already exists, then" +msgstr "Si ya existe una página con ese nombre, " + +#: history.php:18 display.php:18 +msgid "Internal error viewing requested page" +msgstr "Error interno al ver la página solicitada" + +#: diff.php:39 +#, php-format +msgid "Internal error viewing requested page: %s" +msgstr "Error interno al ver la página solicitada: %s" + +#: templates/display/AttachedFiles.html:133 +msgid "Is this a minor update?" +msgstr "¿Se trata de una actualización mínima?" + +#: templates/display/standard.inc:72 +msgid "L_ikePages" +msgstr "Páginas_Favoritas" + +#: templates/display/title.inc:6 templates/edit/standard.inc:20 +#, php-format +msgid "Last Modified %s by %s" +msgstr "Última modificación el %s por %s" + +#: lib/Page/LeastPopular.php:93 +msgid "LeastPopular" +msgstr "MenosPopulares" + +#: templates/display/standard.inc:72 +msgid "LikePages" +msgstr "PáginasFavoritas" + +#: lib/Page/LikePages.php:82 +#, php-format +msgid "LikePages: %s" +msgstr "PáginasFavoritas: %s" + +#: templates/display/standard.inc:40 +#, php-format +msgid "Lock %s" +msgstr "Bloquear %s" + +#: templates/display/title.inc:34 templates/edit/standard.inc:21 +#: lib/Page/RevertPage.php:81 lib/Page/DeletePage.php:97 +msgid "Locked" +msgstr "Bloqueado" + +#: scripts/wicked.php:104 +#, php-format +msgid "Logged in successfully as \"%s\"." +msgstr "Se inició sesión correctamente como \"%s\"." + +#: scripts/wicked.php:100 +msgid "Login is incorrect." +msgstr "Inicio de sesión incorrecto." + +#: scripts/wicked.php:158 +msgid "" +"Mandatory arguments to long options are mandatory for short options too." +msgstr "" +"Los argumentos requeridos por las opciones completas también son requeridos " +"en las opciones abreviadas." + +#: templates/display/standard.inc:60 +msgid "MergeOrRename" +msgstr "CombinarORenombrar" + +#: lib/Page/MergeOrRename.php:125 +#, php-format +msgid "MergeOrRename: %s" +msgstr "CombinarORenombrar: %s" + +#: lib/Page/MergeOrRename.php:207 +#, php-format +msgid "Merged \"%s\" into \"%s\"." +msgstr "Se combinó \"%s\" en \"%s\"." + +#: lib/Page/MergeOrRename.php:210 +#, php-format +msgid "Merged \"%s\" into \"%s\". New page: %s\n" +msgstr "Se combinó \"%s\" en \"%s\". Nueva página: %s\n" + +#: lib/Page/MergeOrRename.php:191 +#, php-format +msgid "Merged from %s" +msgstr "Combinado desde %s" + +#: templates/edit/standard.inc:30 +msgid "Minor Change" +msgstr "Cambio mínimo" + +#: lib/Page/MostPopular.php:93 +msgid "MostPopular" +msgstr "MásPopulares" + +#: lib/Block/page.php:41 +msgid "Name of wiki page to display" +msgstr "Nombre de la página wiki a mostrar" + +#: lib/Page.php:263 +msgid "Never" +msgstr "Nunca" + +#: lib/Page/AttachedFiles.php:303 +#, php-format +msgid "New attachment \"%s\" to page \"%s\"." +msgstr "Añadir adjunto \"%s\" a la página \"%s\"." + +#: templates/display/MergeOrRename.html:15 +msgid "New name" +msgstr "Nombre nuevo" + +#: lib/Page/MergeOrRename.php:151 +msgid "New name is the same as old name." +msgstr "El nombre nuevo es el mismo que el antiguo." + +#: lib/Page/NewPage.php:106 +msgid "NewPage" +msgstr "Añadir página" + +#: templates/edit/new.inc:20 +#, php-format +msgid "NewPage: %s" +msgstr "Añadir página: %s" + +#: lib/api.php:138 lib/Page/EditPage.php:124 +msgid "No changes made" +msgstr "No se han hecho cambios" + +#: lib/Driver.php:124 +msgid "Not implemented." +msgstr "Sin desarrollar." + +#: templates/edit/create.inc:17 templates/pagelist/header.inc:5 +#: lib/Page/Search.php:155 +msgid "Page" +msgstr "Página" + +#: lib/Page/MergeOrRename.php:179 +#, php-format +msgid "Page \"%s\" already exists." +msgstr "La página \"%s\" ya existe." + +#: lib/Page/NewPage.php:132 +msgid "Page Created" +msgstr "Página creada" + +#: lib/Page/EditPage.php:131 +msgid "Page Saved" +msgstr "Se ha guardado la página" + +#: templates/edit/create.inc:35 +msgid "Page Template:" +msgstr "Plantilla de página:" + +#: lib/Page/Search.php:178 +msgid "Page Text Matches" +msgstr "Coincidencias en el texto de la página" + +#: lib/Page/Search.php:171 +msgid "Page Title Matches" +msgstr "Coincidencias en el título de la página" + +#: templates/pagelist/header.inc:10 +msgid "Page Views" +msgstr "Vistas de página" + +#: display.php:32 +#, php-format +msgid "Page failed to lock: %s" +msgstr "No se puede bloquear la página: %s" + +#: display.php:47 +#, php-format +msgid "Page failed to unlock: %s" +msgstr "No se puede desbloquear la página: %s" + +#: display.php:35 +msgid "Page locked" +msgstr "Página bloqueada" + +#: display.php:50 +msgid "Page unlocked" +msgstr "Página desbloqueada" + +#: lib/api.php:52 lib/api.php:55 +msgid "Pages" +msgstr "Páginas" + +#: lib/Page/NewPage.php:123 +msgid "Pages cannot be empty." +msgstr "Las páginas no pueden estar vacías." + +#: templates/display/standard.inc:100 +msgid "Permissio_ns" +msgstr "_Permisos" + +#: templates/edit/new.inc:25 templates/edit/standard.inc:26 +msgid "Preview" +msgstr "Vista previa" + +#: lib/Page/EditPage.php:112 +msgid "Random string did not match." +msgstr "Las cadenas aleatorias no coincidían." + +#: lib/Page/RecentChanges.php:113 +msgid "RecentChanges" +msgstr "Últimos cambios" + +#: lib/Page/AttachedFiles.php:67 +#, php-format +msgid "Referrer \"%s\" does not exist." +msgstr "La referencia \"%s\" no existe." + +#: lib/Page/AttachedFiles.php:129 +#, php-format +msgid "Reload \"%s\"" +msgstr "Actualizar \"%s\"" + +#: templates/history/header.inc:8 +msgid "Reload History" +msgstr "Actualizar historial" + +#: templates/display/title.inc:32 templates/display/title.inc:33 +msgid "Reload Page" +msgstr "Actualizar página" + +#: lib/Page/MergeOrRename.php:222 +#, php-format +msgid "Renamed \"%s\" to \"%s\"." +msgstr "Se ha renombrado \"%s\" como \"%s\"" + +#: lib/Page/MergeOrRename.php:225 +#, php-format +msgid "Renamed \"%s\" to \"%s\". New page: %s\n" +msgstr "Se ha renombrado \"%s\" como \"%s\". Página nueva: %s\n" + +#: lib/Driver/sql.php:674 +#, php-format +msgid "Renamed page from %s" +msgstr "Se ha renombrado la página de %s" + +#: templates/history/header.inc:20 +msgid "Restore Version" +msgstr "Restaurar versión" + +#: lib/Page/RevertPage.php:87 +msgid "Revert" +msgstr "Restaurar" + +#: templates/history/summary.inc:26 +#, php-format +msgid "Revert to version %s" +msgstr "Restaurar versión %s" + +#: lib/Page/RevertPage.php:81 lib/Page/RevertPage.php:104 +msgid "RevertPage" +msgstr "Restaurar página" + +#: lib/Page/RevertPage.php:127 +#, php-format +msgid "Reverted to version %s of \"%s\"." +msgstr "Se ha vuelto a la versión %s de \"%s\"." + +#: lib/Driver/sql.php:589 +msgid "Robots are not allowed to create pages." +msgstr "Los robots carecen de permisos para añadir páginas." + +#: templates/edit/new.inc:24 templates/edit/standard.inc:25 +msgid "Save" +msgstr "Guardar" + +#: lib/Page/EditPage.php:128 +#, php-format +msgid "Save Failed: %s" +msgstr "Fallo al guardar: %s" + +#: templates/menu.inc:19 lib/Page/Search.php:203 +msgid "Search" +msgstr "Buscar" + +#: templates/pagelist/search.inc:1 +msgid "Search Results" +msgstr "Resultados de la búsqueda" + +#: templates/display/AttachedFiles.html:58 +#: templates/display/AttachedFiles.html:110 +msgid "Select file to attach:" +msgstr "Seleccione el archivo a adjuntar:" + +#: templates/display/AttachedFiles.html:119 +msgid "Select the file to update" +msgstr "Seleccione el archivo a actualizar" + +#: templates/display/standard.inc:99 +#, php-format +msgid "Set permissions for %s" +msgstr "Definir privilegios para %s" + +#: templates/display/title.inc:16 lib/Page/RecentChanges.php:56 +#, php-format +msgid "Show changes for %s" +msgstr "Mostrar cambios de %s" + +#: lib/Page/RecentChanges.php:63 +#, php-format +msgid "Show version %s" +msgstr "Mostrar versión %s" + +#: templates/edit/standard.inc:41 +msgid "Spam Protection - Enter the letters below:" +msgstr "Protección anti spam - Introduzca la letras siguientes:" + +#: templates/display/MergeOrRename.html:33 +msgid "Stop and don't do anything" +msgstr "Detenerse y no hacer nada" + +#: templates/display/MergeOrRename.html:61 +msgid "Submit" +msgstr "Enviar" + +#: lib/Page/DeletePage.php:136 +#, php-format +msgid "Successfully deleted \"%s\"." +msgstr "Se eliminó correctamente \"%s\"." + +#: lib/Page/AttachedFiles.php:207 +#, php-format +msgid "Successfully deleted version %s of \"%s\" from \"%s\"" +msgstr "Se eliminó correctamente la versión %s de \"%s\" de \"%s\"" + +#: lib/Page.php:483 +msgid "Table of Contents" +msgstr "Tabla de contenidos" + +#: lib/Page/AttachedFiles.php:280 +#, php-format +msgid "There is already an attachment named \"%s\"." +msgstr "Ya existe un adjunto llamado \"%s\"." + +#: lib/Page/MergeOrRename.php:149 lib/Page/MergeOrRename.php:155 +msgid "This is a required field." +msgstr "Este campo es necesario." + +#: display.php:62 +msgid "This page does not have a history" +msgstr "Esta página no tiene un historia" + +#: lib/Page/MergeOrRename.php:100 +#, php-format +msgid "This page is referenced from %d other page(s)." +msgstr "Esta página tiene referencias en otra(s) %d página(s)." + +#: templates/display/standard.inc:35 +msgid "Un_lock" +msgstr "_Desbloquear" + +#: lib/Page/StandardPage.php:79 +#, php-format +msgid "Unable to create %s" +msgstr "No se puede crear %s" + +#: lib/Page/StandardPage.php:87 +msgid "Unable to create WikiHome. The wiki is not configured." +msgstr "No se puede crear el Inicio del wiki. El wiki no está configurado." + +#: templates/display/standard.inc:34 +#, php-format +msgid "Unlock %s" +msgstr "Desbloquear %s" + +#: lib/Driver.php:78 lib/Driver.php:92 lib/Driver.php:104 lib/Driver.php:109 +#: lib/Driver.php:129 lib/Driver.php:134 lib/Driver.php:192 lib/Driver.php:197 +#: lib/Driver.php:202 lib/Driver.php:216 lib/Driver.php:230 lib/Driver.php:244 +#: lib/Driver.php:249 lib/Driver.php:254 lib/Driver.php:272 lib/Driver.php:392 +#: lib/Driver.php:418 lib/Driver.php:434 lib/Page.php:255 lib/Page.php:289 +#: lib/Page.php:294 lib/Page.php:393 lib/Page.php:403 lib/Page.php:413 +#: lib/Page.php:423 lib/Page.php:518 lib/Page.php:529 lib/Page.php:534 +#: lib/Page.php:539 lib/Page.php:544 lib/Page.php:584 +msgid "Unsupported" +msgstr "No está soportado" + +#: templates/display/AttachedFiles.html:154 +msgid "Update File" +msgstr "Actualizar archivo" + +#: templates/display/AttachedFiles.html:104 +msgid "Update an Attachment" +msgstr "Actualizar un adjunto" + +#: lib/Page/AttachedFiles.php:300 +#, php-format +msgid "Updated attachment \"%s\" on page \"%s\"." +msgstr "Se actualizó el adjunto \"%s\" de la página \"%s\"." + +#: scripts/wicked.php:156 +#, php-format +msgid "Usage: %s [OPTIONS]..." +msgstr "Uso: %s [OPCIONES]..." + +#: templates/edit/create.inc:18 templates/history/header.inc:13 +#: templates/pagelist/header.inc:6 lib/Page/Search.php:156 +#: templates/display/AttachedFiles.html:9 +msgid "Version" +msgstr "Versión" + +#: lib/Page/AttachedFiles.php:309 +msgid "View page: " +msgstr "Ver página: " + +#: lib/Block/page.php:3 +msgid "Wiki page" +msgstr "Página wiki" + +#: display.php:26 +msgid "You are not allowed to lock this page" +msgstr "No se le permite bloquear esta página." + +#: display.php:41 +msgid "You are not allowed to unlock this page" +msgstr "No se le permite desbloquear esta página." + +#: lib/Page/AttachedFiles.php:196 +msgid "You do not have permission to delete attachments from this page." +msgstr "Carece de permisos para eliminar adjuntos de esta página." + +#: lib/Page/MergeOrRename.php:169 lib/Page/MergeOrRename.php:184 +#: lib/Page/AttachedFiles.php:237 +#, php-format +msgid "You do not have permission to edit \"%s\"" +msgstr "Carece de permisos para modificar \"%s\"" + +#: lib/Page/NewPage.php:119 +#, php-format +msgid "You don't have permission to create \"%s\"." +msgstr "Carece de permisos para añadir \"%s\"." + +#: lib/Page/DeletePage.php:150 +#, php-format +msgid "You don't have permission to delete \"%s\"." +msgstr "Carece de permisos para eliminar \"%s\"." + +#: lib/api.php:120 lib/Page/RevertPage.php:133 lib/Page/EditPage.php:107 +#, php-format +msgid "You don't have permission to edit \"%s\"." +msgstr "Carece de permisos para modificar \"%s\"." + +#: display.php:74 display.php:77 +msgid "You don't have permission to view this page." +msgstr "Carece de permisos para ver esta página." + +#: lib/Page/AttachedFiles.php:245 +msgid "You must enter a change description to attach this file." +msgstr "" +"Tiene que introducir una descripción del cambio para adjuntar este archivo." + +#: lib/api.php:124 lib/Page/EditPage.php:118 +msgid "You must provide a change log." +msgstr "Tiene que indicar un registro del cambio." + +#: lib/Wicked.php:130 +msgid "_AllPages" +msgstr "_TodasLasPáginas" + +#: templates/display/standard.inc:67 +msgid "_BackLinks" +msgstr "_VínculosAnteriores" + +#: templates/display/standard.inc:53 +msgid "_Delete" +msgstr "_Eliminar" + +#: templates/display/standard.inc:25 +msgid "_EditPage" +msgstr "_ModificarPágina" + +#: templates/display/standard.inc:41 +msgid "_Lock" +msgstr "_Bloquear" + +#: templates/display/standard.inc:61 +msgid "_MergeOrRename" +msgstr "_CombinarORenombrar" + +#: lib/Wicked.php:130 +msgid "_RecentChanges" +msgstr "_ÚltimosCambios" + +#: lib/Wicked.php:130 +msgid "_WikiHome" +msgstr "_InicioDelWiki" + +#: lib/Page/AttachedFiles.php:217 +msgid "attachment" +msgstr "adjunto" + +#: scripts/wicked.php:123 +#, php-format +msgid "page \"%s\" doesn't exist." +msgstr "la página \"%s\" no existe." diff --git a/wicked/po/fi_FI.po b/wicked/po/fi_FI.po new file mode 100644 index 000000000..91f878902 --- /dev/null +++ b/wicked/po/fi_FI.po @@ -0,0 +1,733 @@ +# Finnish translation for Wicked. +# Copyright +# Leena Heino , 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: Wicked 0.1-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2005-03-14 11:02+0200\n" +"PO-Revision-Date: 2004-12-10 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" + +#: templates/edit/create.inc:13 +#, php-format +msgid "%s does not exist. Create it?" +msgstr "%s ei ole olemassa. Luodaanko se?" + +#: scripts/wicked.php:163 +msgid "" +"-d, --debug Run in debug mode (displays extra information)" +msgstr "" +"-d, --debug Aja debug-tilassa (Tulostaa enemmän lisätietoja)" + +#: scripts/wicked.php:165 +msgid "" +"-g, --get[=pagetitle] Return all pages (unless pagetitle specified)" +msgstr "" +"-g, --get[=sivunotsikko] Palauttaa kaikki sivut (ellei sivun otsikko " +"ole määritelty)" + +#: scripts/wicked.php:162 +msgid "-h, --help Show this help" +msgstr "-h, --help Näytä tämä ohje" + +#: scripts/wicked.php:164 +msgid "-l, --list-pages List pages" +msgstr "-l, --list-pages Listaa sivut" + +#: scripts/wicked.php:166 +msgid "-o, --out[=type] Output type for results (default:xml)" +msgstr "-o, --out[=type] Tulostetyyppi tuloksille (oletus:xml)" + +#: scripts/wicked.php:168 +msgid "-p, --password[=password] Horde login password" +msgstr "-p, --password[=salasana] Horden salasana" + +#: scripts/wicked.php:167 +msgid "-u, --username[=username] Horde login username" +msgstr "-u, --username[=username] Horden tunnus" + +#: templates/display/MergeOrRename.html:31 +msgid "Add the text from this page" +msgstr "Lisää tekstiä tälle sivulle" + +#: lib/Page/AddPage.php:54 +#, php-format +msgid "AddPage: %s" +msgstr "Lisää sivu: %s" + +#: lib/Page/AllPages.php:75 +msgid "AllPages" +msgstr "Kaikki sivut" + +#: templates/display/standard.inc:46 +msgid "Are you sure you want to delete this page? All versions will be lost." +msgstr "" +"Oletko aivan varma että haluat poistaa tämän sivun? Kaikki versiot " +"poistetaan." + +#: templates/history/summary.inc:7 templates/display/standard.inc:48 +#, php-format +msgid "Are you sure you want to delete version %s of this page?" +msgstr "Oletko varma että haluat poistaa version %s tästä sivusta?" + +#: templates/history/summary.inc:29 +#, php-format +msgid "Are you sure you want to restore version %s of this page?" +msgstr "Oletko varma että haluat palauttaa version %s tästä sivusta?" + +#: templates/display/AttachedFiles.html:80 +msgid "Attach File" +msgstr "Liitä tiedosto" + +#: templates/display/AttachedFiles.html:49 +msgid "Attach a New File" +msgstr "Liitä uusi tiedosto" + +#: templates/display/standard.inc:82 templates/display/standard.inc:83 +msgid "AttachedFiles" +msgstr "Liitetyt tiedostot" + +#: lib/Page/AttachedFiles.php:137 +#, php-format +msgid "AttachedFiles: %s" +msgstr "Liitetyt tiedostot: %s" + +#: templates/display/AttachedFiles.html:13 +msgid "Attachment Name" +msgstr "Liitteen nimi" + +#: templates/pagelist/header.inc:7 templates/pagelist/pagesearch.inc:23 +#: templates/pagelist/titlesearch.inc:21 templates/history/header.inc:29 +#: templates/display/AttachedFiles.html:15 +msgid "Author" +msgstr "Tekijä" + +#: templates/display/standard.inc:123 +msgid "Back to" +msgstr "Palaa" + +#: templates/display/standard.inc:70 lib/Page/BackLinks.php:67 +msgid "BackLinks" +msgstr "Paluulinkit" + +#: lib/Page/AttachedFiles.php:170 +msgid "Can't read uploaded file." +msgstr "Ei voi lukea ladattua tiedostoa." + +#: lib/Page/AttachedFiles.php:178 +#, php-format +msgid "Can't retrieve \"%s\": %s" +msgstr "Hakeminen epäonnistui: \"%s\": %s" + +#: lib/Page/AttachedFiles.php:204 +#, php-format +msgid "Can't update \"%s\": no such attachment." +msgstr "Ei voi päivittää \"%s\": ei sellaista liitettä." + +#: templates/edit/create.inc:31 templates/edit/standard.inc:37 +#: templates/display/MergeOrRename.html:59 +msgid "Cancel" +msgstr "Peru" + +#: lib/Page/AttachedFiles.php:217 +#, php-format +msgid "Cannot find \"%s\": %s." +msgstr "Ei löydy \"%s\": %s." + +#: templates/history/header.inc:35 templates/display/AttachedFiles.html:17 +msgid "Change Log" +msgstr "Muutosloki" + +#: templates/edit/standard.inc:38 +msgid "Change log" +msgstr "Muutosloki" + +#: templates/display/AttachedFiles.html:72 +#: templates/display/AttachedFiles.html:141 +msgid "Change log entry" +msgstr "Muuta lokimerkintää" + +#: config/prefs.php.dist:13 +msgid "Change menu preferences." +msgstr "Muuta valikon asetuksia." + +#: templates/display/MergeOrRename.html:39 +msgid "Change references to this page from:" +msgstr "Muuta viitteitä tälle sivulle lähteestä:" + +#: lib/Page/MergeOrRename.php:236 +#, php-format +msgid "Changed references from %s to %s" +msgstr "Muuta viitteet %s:stä %s:ään" + +#: scripts/wicked.php:44 +msgid "Couldn't read command-line options." +msgstr "Komentoriviparametreja ei voitu lukea." + +#: templates/pagelist/pagesearch.inc:14 templates/pagelist/titlesearch.inc:12 +#: templates/edit/create.inc:30 +msgid "Create" +msgstr "Luo" + +#: templates/history/header.inc:30 +msgid "Created" +msgstr "Luotu" + +#: lib/Driver.php:76 +#, php-format +msgid "Created \"%s\". Edit this page to set up initial content." +msgstr "Luotiin \"%s\". Muokkaa tätä sivua alustaaksesi sivun sisällön." + +#: templates/pagelist/header.inc:8 templates/pagelist/pagesearch.inc:25 +#: templates/pagelist/titlesearch.inc:23 +msgid "Creation Date" +msgstr "Luontipäivämäärä" + +#: templates/display/AttachedFiles.html:16 +msgid "Date" +msgstr "Päiväys" + +#: templates/display/standard.inc:103 +msgid "Debug" +msgstr "Debug" + +#: templates/display/standard.inc:102 +#, php-format +msgid "Debug %s" +msgstr "Debug %s" + +#: templates/display/standard.inc:56 +msgid "Delete" +msgstr "Poista" + +#: templates/display/standard.inc:53 +#, php-format +msgid "Delete %s" +msgstr "Poista %s" + +#: templates/history/header.inc:22 +msgid "Delete Version" +msgstr "Poista versio" + +#: templates/history/summary.inc:6 +#, php-format +msgid "Delete Version %s" +msgstr "Poista versio %s" + +#: lib/Driver.php:376 +#, php-format +msgid "Deleted \"%s\"." +msgstr "Poistettiin \"%s\"." + +#: templates/history/header.inc:32 +msgid "Diff From" +msgstr "Eroavaisuudet lähteeseen" + +#: templates/history/header.inc:33 +msgid "Diff To" +msgstr "Erovaisuudet kohteeseen" + +#: diff.php:56 templates/diff/diff.inc:4 +#, php-format +msgid "Diff for %s between %s and %s" +msgstr "Eroavaisuudet %s välillä %s ja %s" + +#: templates/pagelist/summary.inc:3 +#, php-format +msgid "Display %s" +msgstr "Näytä %s" + +#: config/prefs.php.dist:11 +msgid "Display Options" +msgstr "Näkymän asetukset" + +#: templates/pagelist/summary.inc:6 templates/history/summary.inc:2 +#, php-format +msgid "Display Version %s" +msgstr "Näytä versio %s" + +#: templates/display/AttachedFiles.html:18 +msgid "Downloads" +msgstr "Tallennukset" + +#: preview.php:18 templates/display/standard.inc:25 +#, php-format +msgid "Edit %s" +msgstr "Muokkaa %s" + +#: templates/history/header.inc:24 +msgid "Edit Version" +msgstr "Muokkaa versiota" + +#: templates/history/summary.inc:19 +#, php-format +msgid "Edit Version %s" +msgstr "Muokkaa versiota %s" + +#: templates/display/standard.inc:26 lib/Page/EditPage.php:75 +msgid "EditPage" +msgstr "Muokkaa sivua" + +#: templates/display/AttachedFiles.html:63 +msgid "Enter a name for this file (if blank, will use the file's current name)" +msgstr "" +"Anna nimi tälle tiedostolle (Jos tyhjä, niin käytetään tiedoston nykyistä " +"nimeä)" + +#: lib/Driver.php:72 +#, php-format +msgid "Error creating \"%s\": %s." +msgstr "Virhe luotaessa \"%s\": %s." + +#: scripts/mail-filter.php:127 +#, php-format +msgid "Error creating new page: %s" +msgstr "Virhe luotaessa sivua: %s" + +#: lib/Page/MergeOrRename.php:199 +#, php-format +msgid "Error deleting %s: %s" +msgstr "Virhe poistettaessa %s: %s" + +#: lib/Driver.php:55 +#, php-format +msgid "Error loading page template: %s" +msgstr "Virhe ladattaessa sivumallia: %s" + +#: scripts/mail-filter.php:42 +#, php-format +msgid "Error parsing MIME message: %s\n" +msgstr "Virhe tulkittaessa MIME-viestiä: %s\n" + +#: lib/Page/MergeOrRename.php:206 +#, php-format +msgid "Error renaming %s: %s" +msgstr "Virhe nimettäessä uudelleen %s: %s" + +#: lib/Page/MergeOrRename.php:230 +#, php-format +msgid "Error retrieving %s: %s" +msgstr "Virhe haettaessa %s: %s" + +#: lib/Page/AttachedFiles.php:96 lib/Page/AttachedFiles.php:187 +#, php-format +msgid "Error retrieving attachments: %s" +msgstr "Virhe haettaessa liitteitä: %s" + +#: lib/Page/AddPage.php:44 +#, php-format +msgid "Error retrieving like pages: %s" +msgstr "Virhe haettaessa samankaltaisia sivuja: %s" + +#: lib/Page/MergeOrRename.php:191 lib/Page/MergeOrRename.php:257 +#, php-format +msgid "Error updating %s: %s" +msgstr "Virhe päivittäessä %s: %s" + +#: lib/Page/MergeOrRename.php:171 +#, php-format +msgid "Failed to retrieve '%s': %s" +msgstr "Hakeminen epäonnistui: '%s': %s" + +#: templates/menu.inc:31 templates/pagelist/pagesearch.inc:13 +#: templates/pagelist/titlesearch.inc:11 lib/Block/TitleSearch.php:26 +msgid "Go" +msgstr "Mene" + +#: lib/Page/StandardPage.php:219 +msgid "Guest" +msgstr "Vieras" + +#: templates/display/standard.inc:89 +msgid "History" +msgstr "Historia" + +#: history.php:48 templates/history/header.inc:10 +#: templates/display/standard.inc:88 +#, php-format +msgid "History of %s" +msgstr "%s:n Historia" + +#: templates/display/MergeOrRename.html:26 +msgid "If a page with the new name already exists, then" +msgstr "Jos sivu uudella nimellä on jo olemassa, niin" + +#: templates/display/standard.inc:96 +msgid "Info" +msgstr "Info" + +#: templates/display/standard.inc:95 +#, php-format +msgid "Info about %s" +msgstr "Infoa %s:stä" + +#: display.php:16 history.php:16 +msgid "Internal error viewing requested page" +msgstr "Sisäinen virhe näytettäessä pyydettyä sivua" + +#: diff.php:37 +#, php-format +msgid "Internal error viewing requested page: %s" +msgstr "Sisäinen virhe näytettäessä pyydettyä sivua: %s" + +#: templates/display/AttachedFiles.html:132 +msgid "Is this a minor update?" +msgstr "Onko tämä pieni päivitys?" + +#: templates/edit/standard.inc:29 templates/display/title.inc:16 +#, php-format +msgid "Last Modified %s by %s" +msgstr "Viimeksi muokannut %s, %s" + +#: lib/Page/LeastPopular.php:80 +msgid "LeastPopular" +msgstr "Vähiten suosittu" + +#: templates/display/standard.inc:76 +msgid "LikePages" +msgstr "Samankaltaisia sivuja" + +#: lib/Page/LikePages.php:69 +#, php-format +msgid "LikePages: %s" +msgstr "Samankaltaisia sivuja: %s" + +#: templates/display/standard.inc:38 +msgid "Lock" +msgstr "Lukitse" + +#: templates/display/standard.inc:37 +#, php-format +msgid "Lock %s" +msgstr "Lukitse %s" + +#: templates/edit/standard.inc:26 templates/display/title.inc:10 +msgid "Locked" +msgstr "Lukittu" + +#: scripts/wicked.php:106 +#, php-format +msgid "Logged in successfully as '%s'." +msgstr "Kirjauduttiin sisään käyttäjänä '%s'." + +#: scripts/wicked.php:102 +msgid "Login is incorrect." +msgstr "Sisäänkirjautuminen epäonnistui." + +#: scripts/wicked.php:160 +msgid "" +"Mandatory arguments to long options are mandatory for short options too." +msgstr "" +"Pakolliset optiot pitkille parametreille ovat pakollisia myös lyhyille " +"parametreille." + +#: config/prefs.php.dist:12 +msgid "Menu Preferences" +msgstr "Valikon asetukset" + +#: templates/display/standard.inc:63 templates/display/standard.inc:64 +msgid "MergeOrRename" +msgstr "Yhdistä tai nimea uudelleen" + +#: lib/Page/MergeOrRename.php:130 +#, php-format +msgid "MergeOrRename: %s" +msgstr "Yhdistä tai nimea uudelleen: %s" + +#: lib/Page/MergeOrRename.php:188 +#, php-format +msgid "Merged from %s" +msgstr "Yhdistetty %s:stä" + +#: templates/edit/standard.inc:39 +msgid "Minor Change" +msgstr "Pieni muutos" + +#: lib/Page/MostPopular.php:82 +msgid "MostPopular" +msgstr "Suosituin" + +#: lib/Block/page.php:42 +msgid "Name of wiki page to display" +msgstr "Näytettävän wiki-sivun nimi" + +#: lib/Page.php:258 +msgid "Never" +msgstr "Ei koskaan" + +#: templates/display/MergeOrRename.html:16 +msgid "New name" +msgstr "Uusi nimi" + +#: lib/Page/MergeOrRename.php:157 +msgid "New name is the same as old name." +msgstr "Uusi nimi on sama kuin vanha nimi" + +#: lib/Page/EditPage.php:108 +msgid "No changes made" +msgstr "Ei tehty muutoksia" + +#: attachment.php:43 +#, php-format +msgid "No such attachment '%s'." +msgstr "Ei sellaista liitettä kuin '%s'." + +#: lib/Driver.php:165 +msgid "Not implemented." +msgstr "Ei ole toteutettu." + +#: templates/menu.inc:11 templates/pagelist/header.inc:5 +#: templates/pagelist/pagesearch.inc:22 templates/pagelist/titlesearch.inc:20 +#: config/prefs.php.dist:22 +msgid "Page" +msgstr "Sivu" + +#: lib/Page/MergeOrRename.php:181 +#, php-format +msgid "Page '%s' already exists." +msgstr "Sivu '%s' on jo olemassa." + +#: lib/Page/EditPage.php:116 +msgid "Page Saved" +msgstr "Sivu talletettu" + +#: templates/pagelist/header.inc:10 +msgid "Page Views" +msgstr "Sivun katsomiskertoja" + +#: display.php:30 +#, php-format +msgid "Page failed to lock: %s" +msgstr "Sivua ei voitu lukita: %s" + +#: display.php:45 +#, php-format +msgid "Page failed to unlock: %s" +msgstr "Sivun lukitusta ei voitu poistaa: %s" + +#: display.php:33 +msgid "Page locked" +msgstr "Sivu lukittu" + +#: display.php:48 +msgid "Page unlocked" +msgstr "Sivu lukitus poistettu" + +#: templates/menu.inc:19 lib/Page/PageSearch.php:85 config/prefs.php.dist:24 +msgid "PageSearch" +msgstr "Haku sivuista" + +#: lib/api.php:30 +msgid "Pages" +msgstr "Sivut" + +#: templates/display/standard.inc:116 +msgid "Permissions" +msgstr "Oikeudet" + +#: templates/edit/standard.inc:36 +msgid "Preview" +msgstr "Esikatselu" + +#: lib/Page/RecentChanges.php:102 +msgid "RecentChanges" +msgstr "Viimeisimmät muutokset" + +#: lib/Page/AttachedFiles.php:110 lib/Page/MergeOrRename.php:75 +#, php-format +msgid "Reload %s" +msgstr "Lataa uudestaan %s" + +#: templates/history/header.inc:11 +msgid "Reload History" +msgstr "Lataa historia uudestaan" + +#: templates/display/title.inc:7 templates/display/title.inc:8 +msgid "Reload Page" +msgstr "Lataa sivu uudestaan" + +#: lib/Driver/sql.php:479 +#, php-format +msgid "Renamed page from %s" +msgstr "Nimettiin sivu %s uudestaan" + +#: templates/history/header.inc:26 +msgid "Restore Version" +msgstr "Palauta versio" + +#: templates/history/summary.inc:28 +#, php-format +msgid "Restore Version %s" +msgstr "Palauta versio %s" + +#: lib/Driver.php:46 +msgid "Robots are not allowed to create pages." +msgstr "Robotit eivät voi luoda sivuja." + +#: templates/edit/standard.inc:35 +msgid "Save" +msgstr "Talleta" + +#: lib/Page/EditPage.php:112 +#, php-format +msgid "Save Failed: %s" +msgstr "Tallennus epäonnistui: %s" + +#: templates/menu.inc:31 +msgid "Search" +msgstr "Haku" + +#: templates/display/AttachedFiles.html:54 +#: templates/display/AttachedFiles.html:109 +msgid "Select file to attach:" +msgstr "Valitse liitettävä tiedosto:" + +#: templates/display/AttachedFiles.html:118 +msgid "Select the file to update" +msgstr "Valitse tiedosto päivitettäväksi" + +#: templates/display/standard.inc:115 +#, php-format +msgid "Set permissions for %s" +msgstr "Aseta oikeudet %s:lle" + +#: templates/display/title.inc:27 lib/Page/RecentChanges.php:51 +#, php-format +msgid "Show changes for %s" +msgstr "Talleta muutokset %s:lle" + +#: lib/Page/RecentChanges.php:58 +#, php-format +msgid "Show version %s" +msgstr "Näytä versio %s" + +#: templates/display/MergeOrRename.html:33 +msgid "Stop and don't do anything" +msgstr "Stop ja älä tee mitään" + +#: templates/display/MergeOrRename.html:58 +msgid "Submit" +msgstr "Lähetä" + +#: lib/Page/AttachedFiles.php:210 +#, php-format +msgid "There is already an attachment named \"%s\"." +msgstr "On jo olemassa liite nimeltään \"%s\"." + +#: lib/Page/MergeOrRename.php:155 lib/Page/MergeOrRename.php:161 +msgid "This is a required field." +msgstr "Tämä on pakollinen kenttä" + +#: display.php:100 +msgid "This page cannot be deleted" +msgstr "Tätä sivua ei voi poistaa" + +#: display.php:73 +msgid "This page does not have a history" +msgstr "Tällä sivulla ei ole historiaa" + +#: lib/Page/MergeOrRename.php:111 +#, php-format +msgid "This page is referenced from %d other page(s)." +msgstr "Tälle sivulle on viittauksia %d sivulta." + +#: templates/menu.inc:15 lib/Page/TitleSearch.php:85 +#: lib/Block/TitleSearch.php:3 lib/Block/TitleSearch.php:26 +#: config/prefs.php.dist:23 +msgid "TitleSearch" +msgstr "Hae otsikoista" + +#: config/prefs.php.dist:25 +msgid "Type of search for the quick search box:" +msgstr "Haun tyyppi pikahakuun:" + +#: templates/display/standard.inc:34 +msgid "Unlock" +msgstr "Poista lukitus" + +#: templates/display/standard.inc:33 +#, php-format +msgid "Unlock %s" +msgstr "Poista lukitus %s" + +#: lib/Page.php:250 lib/Page.php:266 lib/Page.php:271 lib/Page.php:276 +#: lib/Page.php:361 lib/Page.php:371 lib/Page.php:381 lib/Page.php:391 +#: lib/Page.php:401 lib/Page.php:412 lib/Page.php:520 lib/Page.php:531 +#: lib/Page.php:536 lib/Page.php:541 lib/Page.php:546 lib/Page.php:570 +#: lib/Page.php:575 lib/Page.php:580 lib/Driver.php:122 lib/Driver.php:135 +#: lib/Driver.php:147 lib/Driver.php:152 lib/Driver.php:170 lib/Driver.php:175 +#: lib/Driver.php:200 lib/Driver.php:205 lib/Driver.php:210 lib/Driver.php:223 +#: lib/Driver.php:236 lib/Driver.php:248 lib/Driver.php:253 lib/Driver.php:258 +#: lib/Driver.php:276 lib/Driver.php:339 lib/Driver.php:371 lib/Driver.php:401 +msgid "Unsupported" +msgstr "Ei tuettu" + +#: templates/display/AttachedFiles.html:149 +msgid "Update File" +msgstr "Päivitä tiedosto" + +#: templates/display/AttachedFiles.html:104 +msgid "Update an Attachment" +msgstr "Päivitä liite" + +#: scripts/wicked.php:158 +#, php-format +msgid "Usage: %s [OPTIONS]..." +msgstr "Käyttö: %s [PARAMETRIT]..." + +#: templates/edit/create.inc:17 +msgid "" +"Use this template (templates are pages which begin or end with \"Template\"):" +msgstr "" +"Käytä tätä mallia (mallit ovat sivuja, jotka loppuvat tai alkavat sanalla " +"\"Template\"):" + +#: templates/pagelist/header.inc:6 templates/pagelist/pagesearch.inc:26 +#: templates/pagelist/titlesearch.inc:24 templates/history/header.inc:19 +#: templates/display/AttachedFiles.html:14 +msgid "Version" +msgstr "Versio" + +#: lib/Block/page.php:3 +msgid "Wiki page" +msgstr "Wiki-sivu" + +#: display.php:61 display.php:80 +msgid "You are not allowed to edit this page" +msgstr "Sinulla ei ole oikeuksia muokata tätä sivua" + +#: display.php:24 +msgid "You are not allowed to lock this page" +msgstr "Sinulla ei ole oikeuksia lukita tätä sivua" + +#: display.php:39 +msgid "You are not allowed to unlock this page" +msgstr "Sinulla ei ole oikeuksia poista lukitusta tältä sivulta" + +#: lib/Page/EditPage.php:57 lib/Page/EditPage.php:98 +#, php-format +msgid "You don't have permission to edit '%s'." +msgstr "Sinulla ei ole oikeuksia muokata '%s'." + +#: display.php:112 +msgid "You don't have permission to view this page." +msgstr "Sinulla ei ole oikeuksia nähdä tätä sivua." + +#: lib/Page/EditPage.php:103 +msgid "You must enter a change description to save the page." +msgstr "Sinun pitää muuttaa kuvausta tallettaaksesi sivun." + +#: templates/display/MergeOrRename.html:9 +msgid "for" +msgstr " " + +#: scripts/wicked.php:125 +#, php-format +msgid "page '%s' doesn't exist." +msgstr "sivua '%s' ei ole olemassa." diff --git a/wicked/po/it_IT.po b/wicked/po/it_IT.po new file mode 100644 index 000000000..e7dc382e5 --- /dev/null +++ b/wicked/po/it_IT.po @@ -0,0 +1,1115 @@ +# Italian translations for wicked package. +# Copyright 2008-2009 The Horde Project +# This file is distributed under the same license as the wicked package. +# Fabio Pedretti , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: wicked v1.0-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-09-05 17:54+0200\n" +"PO-Revision-Date: 2008-09-05 18:13+0200\n" +"Last-Translator: Fabio Pedretti \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" + +#: templates/edit/create.inc:13 +#, php-format +msgid "" +"%s does not exist, but maybe you were looking for one of the following pages?" +msgstr "%s non esiste, forse stavi cercando una delle pagine seguenti?" + +#: templates/edit/create.inc:30 +#, php-format +msgid "" +"%s does not exist. Click on \"Create\" below if you want to create this page " +"now and start editing." +msgstr "%s non esiste. Se vuoi creare la pagina clicca su \"Crea\" qui sotto " + +#: lib/Page/Search.php:112 +#, php-format +msgid "%s does not exist. You can create it now." +msgstr "%s non esiste. Puoi crearlo ora." + +#: templates/edit/create.inc:37 +msgid "(None)" +msgstr "(Nessuno)" + +#: scripts/wicked.php:161 +msgid "" +"-d, --debug Run in debug mode (displays extra information)" +msgstr "" +"-d, --debug Lancia in modalità debug (mostra informazioni " +"extra)" + +#: scripts/wicked.php:163 +msgid "" +"-g, --get[=pagetitle] Return all pages (unless pagetitle specified)" +msgstr "" +"-g, --get[=pagetitle] Ritorna tutte le pagine (senza il pagetitle " +"specificato)" + +#: scripts/wicked.php:160 +msgid "-h, --help Show this help" +msgstr "-h, --help Mostra questo help" + +#: scripts/wicked.php:162 +msgid "-l, --list-pages List pages" +msgstr "-l, --list-pages Lista pagine" + +#: scripts/wicked.php:164 +msgid "-o, --out[=type] Output type for results (default:xml)" +msgstr "-o, --out[=type] Output type for results (default:xml)" + +#: scripts/wicked.php:166 +msgid "-p, --password[=password] Horde login password" +msgstr "-p, --password[=password] Horde login password" + +#: scripts/wicked.php:165 +msgid "-u, --username[=username] Horde login username" +msgstr "-u, --username[=username] Horde login username" + +#: templates/sync/list.inc:25 templates/sync/list.inc:51 +#: templates/sync/list.inc:73 +msgid "Actions" +msgstr "" + +#: templates/display/MergeOrRename.html:31 +msgid "Add the text from this page" +msgstr "Aggiungi il testo da questa pagina" + +#: lib/Page/AddPage.php:108 +#, php-format +msgid "AddPage: %s" +msgstr "Aggiungi Pagina: %s" + +#: lib/Page/AllPages.php:90 +msgid "AllPages" +msgstr "Tutte le Pagine" + +#: lib/Page/DeletePage.php:83 +msgid "" +"Are you sure you want to delete this page? All versions will be permanently " +"removed." +msgstr "Sei sicuro di voler eliminare questa regola?" + +#: lib/Page/DeletePage.php:85 +#, php-format +msgid "Are you sure you want to delete version %s of this page?" +msgstr "Sei sicuro di voler eliminare la versione %s di questa pagina?" + +#: lib/Page/RevertPage.php:71 +#, php-format +msgid "Are you sure you want to revert to version %s of this page?" +msgstr "Sei sicuro di voler tornare alla versione %s di questa pagina?" + +#: templates/display/AttachedFiles.html:88 +msgid "Attach File" +msgstr "Allega File" + +#: templates/display/AttachedFiles.html:52 +msgid "Attach a New File" +msgstr "Allega un nuovo File" + +#: templates/display/standard.inc:77 +msgid "AttachedFiles" +msgstr "Allegati" + +#: lib/Page/AttachedFiles.php:171 +#, php-format +msgid "AttachedFiles: %s" +msgstr "Allegato: %s" + +#: templates/display/standard.inc:78 +msgid "Attached_Files" +msgstr "File_Allegati:" + +#: templates/display/AttachedFiles.html:7 +msgid "Attachment Name" +msgstr "Nome allegato" + +#: templates/display/standard.inc:117 +msgid "Attachments" +msgstr "Allegati" + +#: lib/Page/AttachedFiles.php:225 +msgid "Attachments with spaces can't be embedded into a page." +msgstr "Allegati con spazi non possono essere inclusi nella pagina." + +#: templates/sync/diff.inc:25 templates/sync/diff.inc:61 +#: templates/sync/list.inc:24 templates/sync/list.inc:50 +#: templates/pagelist/header.inc:7 templates/history/header.inc:23 +#: templates/edit/create.inc:19 lib/Page/Search.php:158 +#: templates/display/AttachedFiles.html:10 +msgid "Author" +msgstr "Autore" + +#: templates/display/standard.inc:104 +msgid "Ba_ck to" +msgstr "_Torna a" + +#: templates/display/standard.inc:104 +msgid "Back to" +msgstr "Torna a" + +#: templates/display/standard.inc:67 +msgid "BackLinks" +msgstr "BackLink" + +#: lib/Page/BackLinks.php:80 +#, php-format +msgid "BackLinks: %s" +msgstr "BackLink: %s" + +#: lib/Page/SyncPages.php:246 lib/Page/SyncPages.php:249 +msgid "By default, your login data will be used" +msgstr "" + +#: lib/Page/AttachedFiles.php:231 +msgid "Can't read uploaded file." +msgstr "Impossibile leggere il file caricato." + +#: lib/Page/RevertPage.php:120 +#, php-format +msgid "Can't revert to an unknown version." +msgstr "Impossibili tornare a una versione sconosciuta." + +#: lib/Page/AttachedFiles.php:271 +#, php-format +msgid "Can't update \"%s\": no such attachment." +msgstr "Impossibili aggiornare \"%s\": nessun allegato." + +#: templates/edit/create.inc:47 templates/edit/standard.inc:27 +#: lib/Page/DeletePage.php:104 lib/Page/MergeOrRename.php:140 +#: lib/Page/RevertPage.php:88 templates/display/MergeOrRename.html:62 +msgid "Cancel" +msgstr "Annulla" + +#: templates/history/header.inc:29 templates/display/AttachedFiles.html:12 +msgid "Change Log" +msgstr "Cambia Log" + +#: templates/sync/diff.inc:26 templates/sync/diff.inc:62 +#: templates/edit/standard.inc:29 +msgid "Change log" +msgstr "Cambia log" + +#: templates/display/AttachedFiles.html:80 +#: templates/display/AttachedFiles.html:146 +msgid "Change log entry" +msgstr "Cambia log di ingresso" + +#: templates/display/MergeOrRename.html:40 +msgid "Change references to this page from:" +msgstr "Cambia referenze di questa pagina da:" + +#: lib/Page/MergeOrRename.php:253 +#, php-format +msgid "Changed references from %s to %s" +msgstr "Cambia referenze da %s a %s" + +#: templates/edit/standard.inc:28 +msgid "Changelog is required" +msgstr "E' richiesto un cambiamento di log" + +#: templates/sync/diff.inc:27 templates/sync/diff.inc:63 +msgid "Checksum" +msgstr "" + +#: templates/edit/create.inc:26 +msgid "" +"Click on \"Create\" below if you want to create this page now and start " +"editing." +msgstr "" +"Clicca su \"Create\" qua sotto se vuoi creare questa pagina e cominciare la " +"creazione." + +#: scripts/wicked.php:42 +msgid "Couldn't read command-line options." +msgstr "Impossibile leggere le opzioni della command-line." + +#: templates/edit/create.inc:46 +msgid "Create" +msgstr "Crea" + +#: lib/Page/NewPage.php:135 +#, php-format +msgid "Create Failed: %s" +msgstr "Creazione fallita: %s" + +#: templates/sync/diff.inc:24 templates/sync/diff.inc:60 +#: templates/sync/list.inc:23 templates/sync/list.inc:49 +#: templates/history/header.inc:24 +msgid "Created" +msgstr "Creato" + +#: templates/pagelist/header.inc:8 templates/edit/create.inc:20 +#: lib/Page/Search.php:159 +msgid "Creation Date" +msgstr "Data creazione" + +#: lib/Page/SyncPages.php:231 +msgid "Custom" +msgstr "" + +#: templates/display/AttachedFiles.html:11 +msgid "Date" +msgstr "Data" + +#: lib/Page/DeletePage.php:103 +msgid "Delete" +msgstr "Elimina" + +#: templates/display/standard.inc:52 +#, php-format +msgid "Delete %s" +msgstr "Elimina %s" + +#: templates/history/header.inc:16 +msgid "Delete Version" +msgstr "Elimina Versione" + +#: templates/history/summary.inc:6 +#, php-format +msgid "Delete Version %s" +msgstr "Elimina Versione %s" + +#: lib/Page/DeletePage.php:97 lib/Page/DeletePage.php:120 +msgid "DeletePage" +msgstr "Elimina Pagina" + +#: lib/Page/DeletePage.php:142 +#, php-format +msgid "Deleted version %s of \"%s\"." +msgstr "Elimina la versione %s di \"%s\"." + +#: templates/history/header.inc:26 +msgid "Diff From" +msgstr "Diff da" + +#: templates/history/header.inc:27 +msgid "Diff To" +msgstr "Diff per" + +#: diff.php:56 templates/sync/diff.inc:101 templates/diff/diff.inc:2 +#, php-format +msgid "Diff for %s between %s and %s" +msgstr "Diff per %s tra %s e %s" + +#: lib/Page/SyncPages.php:251 +msgid "Display" +msgstr "Visualizza" + +#: templates/pagelist/summary.inc:3 +#, php-format +msgid "Display %s" +msgstr "Visualizza %s" + +#: templates/pagelist/summary.inc:6 templates/history/summary.inc:2 +#, php-format +msgid "Display Version %s" +msgstr "Visualizza versione %s" + +#: templates/sync/diff.inc:96 templates/sync/list.inc:35 +msgid "Download" +msgstr "Scarica" + +#: templates/display/standard.inc:136 +msgid "Download this page as:" +msgstr "" + +#: templates/display/AttachedFiles.html:13 +msgid "Downloads" +msgstr "Scarica" + +#: lib/Page/SyncPages.php:389 +msgid "Downloded from remote server" +msgstr "" + +#: lib/Page/SyncPages.php:237 +msgid "Driver" +msgstr "" + +#: lib/Page/SyncPages.php:254 +msgid "Edit" +msgstr "Modifica" + +#: preview.php:24 templates/display/standard.inc:24 +#, php-format +msgid "Edit %s" +msgstr "Modifica %s" + +#: templates/history/header.inc:18 +msgid "Edit Version" +msgstr "Modifica Versione" + +#: templates/history/summary.inc:16 +#, php-format +msgid "Edit Version %s" +msgstr "Modifica Versione %s" + +#: templates/sync/diff.inc:98 +msgid "Edit local" +msgstr "Modifica locale" + +#: templates/sync/diff.inc:99 +msgid "Edit remote" +msgstr "Modifica remota" + +#: templates/edit/standard.inc:21 lib/Page/EditPage.php:93 +msgid "EditPage" +msgstr "Modifica Pagina" + +#: templates/display/AttachedFiles.html:67 +msgid "Enter a name for this file (if blank, will use the file's current name)" +msgstr "" +"Inserisci un nome per questo file (se lasciato vuoti, verrà usato il nome " +"corrente del file)" + +#: scripts/mail-filter.php:127 +#, php-format +msgid "Error creating new page: %s" +msgstr "Si è verificato un errore durante la creazione della nuova pagina: %s" + +#: lib/Page/MergeOrRename.php:202 +#, php-format +msgid "Error deleting %s: %s" +msgstr "Si è verificato un errore durante l'eliminazione di %s: %s" + +#: scripts/mail-filter.php:42 +#, php-format +msgid "Error parsing MIME message: %s\n" +msgstr "Errore nel parsing MIME messaggio: %s\n" + +#: lib/Page/MergeOrRename.php:217 +#, php-format +msgid "Error renaming \"%s\": %s" +msgstr "Errore nella rinominazione \"%s\": %s" + +#: lib/Page/MergeOrRename.php:247 +#, php-format +msgid "Error retrieving %s: %s" +msgstr "Errore nel recupero di %s: %s" + +#: lib/Page/AttachedFiles.php:111 lib/Page/AttachedFiles.php:253 +#, php-format +msgid "Error retrieving attachments: %s" +msgstr "Errore nel recupero dell'allegato: %s" + +#: lib/Page/AddPage.php:68 +#, php-format +msgid "Error retrieving templates: %s" +msgstr "Errore nel recupero del Template: %s" + +#: lib/Page/MergeOrRename.php:194 lib/Page/MergeOrRename.php:274 +#, php-format +msgid "Error updating %s: %s" +msgstr "Errore durante l'aggiornamento %s: %s" + +#: lib/Page/Search.php:165 +msgid "Exact Match" +msgstr "Abbinamento Esatto" + +#: lib/Page/MergeOrRename.php:164 +#, php-format +msgid "Failed to retrieve \"%s\": %s" +msgstr "Impossibile ripristinare \"%s\": %s" + +#: lib/Page/SyncPages.php:194 lib/Page/SyncPages.php:271 +msgid "Fetch page list" +msgstr "" + +#: templates/sync/diff.inc:54 +msgid "Found same content in history" +msgstr "" + +#: lib/Page.php:274 +msgid "Guest" +msgstr "Guest" + +#: templates/display/standard.inc:138 +msgid "HTML" +msgstr "" + +#: templates/display/standard.inc:85 +msgid "Hi_story" +msgstr "Hi_story" + +#: templates/display/standard.inc:84 +#, php-format +msgid "History of %s" +msgstr "Storia di %s" + +#: lib/Page/StandardPage/StdHistoryPage.php:46 +msgid "History page not found" +msgstr "Storia della pagina non trovata" + +#: history.php:30 templates/history/header.inc:7 +#, php-format +msgid "History: %s" +msgstr "Storia: %s" + +#: lib/Wicked.php:130 +msgid "HowTo_UseWiki" +msgstr "Co_me usare la Wiki" + +#: templates/display/MergeOrRename.html:26 +msgid "If a page with the new name already exists, then" +msgstr "Se una pagina con un nome nuovo esiste già allora" + +#: display.php:17 history.php:18 +msgid "Internal error viewing requested page" +msgstr "Errore interno nella visualizzazione della pagina richiesta" + +#: diff.php:39 +#, php-format +msgid "Internal error viewing requested page: %s" +msgstr "Errore interno nella visualizzazione della pagina richiesta: %s" + +#: lib/api.php:418 +msgid "Invalid page requested." +msgstr "Pagina richiesta non valida." + +#: templates/display/AttachedFiles.html:133 +msgid "Is this a minor update?" +msgstr "E' un aggiornamento minore?" + +#: templates/display/standard.inc:72 +#, fuzzy +msgid "L_ikePages" +msgstr "Immagini" + +#: templates/display/title.inc:6 templates/edit/standard.inc:20 +#, php-format +msgid "Last Modified %s by %s" +msgstr "Ultima Modifica %s by %s" + +#: templates/display/standard.inc:139 +msgid "Latex" +msgstr "Latex" + +#: lib/Page/LeastPopular.php:93 +msgid "LeastPopular" +msgstr "MenoPopulare" + +#: templates/display/standard.inc:72 +#, fuzzy +msgid "LikePages" +msgstr "Immagini" + +#: lib/Page/LikePages.php:82 +#, fuzzy, php-format +msgid "LikePages: %s" +msgstr "Immagini" + +#: templates/sync/diff.inc:32 templates/sync/diff.inc:68 +#: lib/Page/SyncDiff.php:80 lib/Page/SyncDiff.php:86 +msgid "Local" +msgstr "" + +#: templates/sync/diff.inc:22 templates/sync/diff.inc:58 +msgid "Location" +msgstr "" + +#: templates/display/standard.inc:40 +#, php-format +msgid "Lock %s" +msgstr "Blocca %s" + +#: templates/display/title.inc:34 templates/edit/standard.inc:21 +#: lib/Page/DeletePage.php:97 lib/Page/RevertPage.php:81 +msgid "Locked" +msgstr "Bloccato" + +#: scripts/wicked.php:104 +#, php-format +msgid "Logged in successfully as \"%s\"." +msgstr "Autenticato con successo come \"%s\"." + +#: scripts/wicked.php:100 +msgid "Login is incorrect." +msgstr "Login non corretta." + +#: scripts/wicked.php:158 +msgid "" +"Mandatory arguments to long options are mandatory for short options too." +msgstr "" +"Argomenti obbligatori troppo lunghi sono obbligatori anche per opzioni corte." + +#: templates/display/standard.inc:60 +msgid "MergeOrRename" +msgstr "MergeOrRename" + +#: lib/Page/MergeOrRename.php:125 +#, php-format +msgid "MergeOrRename: %s" +msgstr "MergeOrRename: %s" + +#: lib/Page/MergeOrRename.php:207 +#, php-format +msgid "Merged \"%s\" into \"%s\"." +msgstr "Merged \"%s\" con \"%s\"." + +#: lib/Page/MergeOrRename.php:210 +#, php-format +msgid "Merged \"%s\" into \"%s\". New page: %s\n" +msgstr "Merged \"%s\" con \"%s\". Nuova pagina: %s\n" + +#: lib/Page/MergeOrRename.php:191 +#, php-format +msgid "Merged from %s" +msgstr "Merged da %s" + +#: templates/edit/standard.inc:30 +msgid "Minor Change" +msgstr "Cambiamento minore" + +#: lib/Page/MostPopular.php:93 +msgid "MostPopular" +msgstr "Più popolare" + +#: lib/Block/page.php:41 +msgid "Name of wiki page to display" +msgstr "Nome della pagina wiki da visualizzare" + +#: lib/Page.php:263 +msgid "Never" +msgstr "Mai" + +#: lib/Page/AttachedFiles.php:303 +#, php-format +msgid "New attachment \"%s\" to page \"%s\"." +msgstr "Nuovo allegato \"%s\" alla pagina \"%s\"." + +#: templates/display/MergeOrRename.html:15 +msgid "New name" +msgstr "Nuovo nome" + +#: lib/Page/MergeOrRename.php:151 +msgid "New name is the same as old name." +msgstr "Il nuovo nome è uguale al vecchio" + +#: templates/sync/list.inc:42 +msgid "New pages on local server" +msgstr "" + +#: templates/sync/list.inc:16 +msgid "New pages on remote server" +msgstr "" + +#: lib/Page/NewPage.php:112 +msgid "NewPage" +msgstr "Nuova pagina" + +#: templates/edit/new.inc:20 +#, php-format +msgid "NewPage: %s" +msgstr "Nuova pagina: %s" + +#: lib/api.php:352 lib/Page/EditPage.php:124 lib/Page/SyncPages.php:387 +msgid "No changes made" +msgstr "Nessun cambiamento fatto" + +#: templates/sync/list.inc:18 templates/sync/list.inc:44 +msgid "No pages found" +msgstr "Nessuna pagina trovata" + +#: templates/sync/list.inc:70 +msgid "No pages to sync" +msgstr "Nessuna pagina da sincronizzare" + +#: lib/Driver.php:124 +msgid "Not implemented." +msgstr "Non implementato." + +#: templates/sync/list.inc:21 templates/sync/list.inc:47 +#: templates/sync/list.inc:73 templates/pagelist/header.inc:5 +#: templates/edit/create.inc:17 lib/Page/Search.php:156 +msgid "Page" +msgstr "Pagina" + +#: lib/Page/MergeOrRename.php:179 +#, php-format +msgid "Page \"%s\" already exists." +msgstr "La pagina \"%s\" esiste già." + +#: lib/Page/SyncPages.php:395 +#, php-format +msgid "Page \"%s\" was sucessfuly downloaded from remote to local wiki." +msgstr "" + +#: lib/Page/SyncPages.php:425 +#, php-format +msgid "Page \"%s\" was sucessfuly uploaded from local to remote wiki." +msgstr "" + +#: lib/Page/NewPage.php:138 +msgid "Page Created" +msgstr "Pagina creata" + +#: lib/Page/EditPage.php:131 +msgid "Page Saved" +msgstr "Pagina salvata" + +#: templates/edit/create.inc:35 +msgid "Page Template:" +msgstr "Modello pagina:" + +#: lib/Page/Search.php:179 +msgid "Page Text Matches" +msgstr "Abbina testo pagina" + +#: lib/Page/Search.php:172 +msgid "Page Title Matches" +msgstr "Abbina titolo pagina" + +#: templates/pagelist/header.inc:10 +msgid "Page Views" +msgstr "Visualizzazione pagina" + +#: display.php:31 +#, php-format +msgid "Page failed to lock: %s" +msgstr "Blocco pagina fallito: %s" + +#: display.php:46 +#, php-format +msgid "Page failed to unlock: %s" +msgstr "Sblocco pagina fallito: %s" + +#: display.php:34 +msgid "Page locked" +msgstr "Pagina bloccata" + +#: lib/Page/AddPage.php:53 lib/Page/NewPage.php:72 lib/Driver/sql.php:592 +msgid "Page name must not be empty" +msgstr "Il nome della pagina deve essere presente" + +#: display.php:49 +msgid "Page unlocked" +msgstr "Pagina sbloccata" + +#: lib/api.php:114 lib/api.php:117 +msgid "Pages" +msgstr "Pagine" + +#: lib/Page/NewPage.php:129 +msgid "Pages cannot be empty." +msgstr "Le pagine non possono essere vuote." + +#: templates/sync/list.inc:68 +msgid "Pages to sync" +msgstr "Pagine da sincronizzare" + +#: lib/Page/SyncPages.php:249 +msgid "Password" +msgstr "" + +#: templates/display/standard.inc:100 +msgid "Permissio_ns" +msgstr "Perm_essi" + +#: lib/api.php:414 +msgid "Permission denied." +msgstr "Permesso Negato." + +#: templates/display/standard.inc:137 +msgid "Plain Text" +msgstr "" + +#: lib/Page/SyncPages.php:240 +msgid "Prefix" +msgstr "Prefisso" + +#: templates/edit/new.inc:25 templates/edit/standard.inc:26 +msgid "Preview" +msgstr "Anteprima" + +#: lib/Page/EditPage.php:112 +msgid "Random string did not match." +msgstr "Stringa casuale non è abbinata" + +#: lib/Page/RecentChanges.php:114 +msgid "RecentChanges" +msgstr "Cambiameti Recenti" + +#: lib/Page/AttachedFiles.php:67 +#, php-format +msgid "Referrer \"%s\" does not exist." +msgstr "Riferimento \"%s\" non esistente." + +#: lib/Page/AttachedFiles.php:129 +#, php-format +msgid "Reload \"%s\"" +msgstr "Ricarica \"%s\"" + +#: templates/history/header.inc:8 +msgid "Reload History" +msgstr "Ricarica Storia" + +#: templates/display/title.inc:32 templates/display/title.inc:33 +msgid "Reload Page" +msgstr "Ricarica pagina" + +#: templates/sync/diff.inc:40 templates/sync/diff.inc:76 +#: lib/Page/SyncDiff.php:81 lib/Page/SyncDiff.php:85 +msgid "Remote" +msgstr "" + +#: lib/Page/SyncPages.php:194 lib/Page/SyncPages.php:300 +msgid "Remove login info" +msgstr "" + +#: lib/Page/MergeOrRename.php:222 +#, php-format +msgid "Renamed \"%s\" to \"%s\"." +msgstr "\"%s\" rinominato in \"%s\"." + +#: lib/Page/MergeOrRename.php:225 +#, php-format +msgid "Renamed \"%s\" to \"%s\". New page: %s\n" +msgstr "\"%s\" rinominato in \"%s\". Nuova pagina: %s\n" + +#: lib/Driver/sql.php:681 +#, php-format +msgid "Renamed page from %s" +msgstr "Pagina rinominata da %s" + +#: lib/Page/SyncPages.php:194 +msgid "Reset" +msgstr "Azzera" + +#: templates/history/header.inc:20 +msgid "Restore Version" +msgstr "Recupera Versione" + +#: lib/Page/RevertPage.php:87 +msgid "Revert" +msgstr "Ritorna" + +#: templates/history/summary.inc:26 +#, php-format +msgid "Revert to version %s" +msgstr "Ritorna alla versione %s" + +#: lib/Page/RevertPage.php:81 lib/Page/RevertPage.php:104 +msgid "RevertPage" +msgstr "Ritorna alla pagina" + +#: lib/Page/RevertPage.php:127 +#, php-format +msgid "Reverted to version %s of \"%s\"." +msgstr "Ritorna alla versione %s di \"%s\"." + +#: lib/Driver/sql.php:596 +msgid "Robots are not allowed to create pages" +msgstr "Ai robot non è permesso creare pagine" + +#: templates/edit/new.inc:24 templates/edit/standard.inc:25 +msgid "Save" +msgstr "Salva" + +#: lib/Page/EditPage.php:128 +#, php-format +msgid "Save Failed: %s" +msgstr "Salvataggio fallito: %s" + +#: lib/Page/SyncPages.php:194 lib/Page/SyncPages.php:288 +msgid "Save login info" +msgstr "" + +#: templates/menu.inc:17 lib/Page/Search.php:204 +msgid "Search" +msgstr "Cerca" + +#: templates/pagelist/search.inc:1 +msgid "Search Results" +msgstr "Risultati della Ricerca" + +#: templates/display/AttachedFiles.html:58 +#: templates/display/AttachedFiles.html:110 +msgid "Select file to attach:" +msgstr "Seleziona file da allegare:" + +#: templates/display/AttachedFiles.html:119 +msgid "Select the file to update" +msgstr "Seleziona il file da aggiornare" + +#: templates/display/standard.inc:99 +#, php-format +msgid "Set permissions for %s" +msgstr "Imposta permessi per %s" + +#: templates/sync/list.inc:79 +msgid "Show changes" +msgstr "Mostra modifiche" + +#: templates/display/title.inc:16 lib/Page/RecentChanges.php:57 +#, php-format +msgid "Show changes for %s" +msgstr "Mostra modifiche di %s" + +#: lib/Page/RecentChanges.php:64 +#, php-format +msgid "Show version %s" +msgstr "Mostra versione %s" + +#: templates/edit/standard.inc:41 +msgid "Spam Protection - Enter the letters below:" +msgstr "Protezione Spam - Inserisci le lettere qui sotto:" + +#: templates/display/MergeOrRename.html:33 +msgid "Stop and don't do anything" +msgstr "Aspetta e non fare niente" + +#: lib/Page/SyncPages.php:231 +msgid "Stored" +msgstr "" + +#: templates/display/MergeOrRename.html:61 +msgid "Submit" +msgstr "Accetta" + +#: lib/Page/DeletePage.php:136 +#, php-format +msgid "Successfully deleted \"%s\"." +msgstr "\"%s\" eliminato con successo." + +#: lib/Page/AttachedFiles.php:207 +#, php-format +msgid "Successfully deleted version %s of \"%s\" from \"%s\"" +msgstr "Versione %s di \"%s\" eliminata con successo da \"%s\"" + +#: lib/Page/SyncPages.php:193 +msgid "Sync data" +msgstr "" + +#: lib/Page/SyncPages.php:305 +msgid "Sync login info was removed." +msgstr "" + +#: lib/Page/SyncPages.php:295 +msgid "Sync login info was stored" +msgstr "" + +#: lib/Page/SyncDiff.php:129 +msgid "SyncDiff" +msgstr "" + +#: lib/Page/SyncPages.php:169 +#, fuzzy +msgid "SyncPages" +msgstr "Pagine" + +#: lib/Page/SyncDiff.php:52 +msgid "Synchronization is disabled" +msgstr "" + +#: lib/Page.php:488 +msgid "Table of Contents" +msgstr "Tabella dei contenuti" + +#: lib/Page/AttachedFiles.php:280 +#, php-format +msgid "There is already an attachment named \"%s\"." +msgstr "C'è già un allegato chiamato \"%s\"." + +#: lib/Page/MergeOrRename.php:149 lib/Page/MergeOrRename.php:155 +msgid "This is a required field." +msgstr "Questo è un campo richiesto." + +#: display.php:61 +msgid "This page does not have a history" +msgstr "Questa pagina non ha una storia" + +#: lib/Page/MergeOrRename.php:100 +#, php-format +msgid "This page is referenced from %d other page(s)." +msgstr "Questa pagina è riferita da %d altra/e pagina/e." + +#: templates/display/standard.inc:35 +msgid "Un_lock" +msgstr "_Sblocca" + +#: lib/Page/StandardPage.php:81 +#, php-format +msgid "Unable to create %s" +msgstr "Impossibile creare %s" + +#: lib/Page/StandardPage.php:89 +msgid "Unable to create WikiHome. The wiki is not configured." +msgstr "Impossibile creare la home della wiki. La wiki non è configurata." + +#: templates/display/standard.inc:34 +#, php-format +msgid "Unlock %s" +msgstr "Sblocca %s" + +#: lib/Driver.php:78 lib/Driver.php:92 lib/Driver.php:104 lib/Driver.php:109 +#: lib/Driver.php:129 lib/Driver.php:134 lib/Driver.php:192 lib/Driver.php:197 +#: lib/Driver.php:209 lib/Driver.php:223 lib/Driver.php:237 lib/Driver.php:251 +#: lib/Driver.php:256 lib/Driver.php:261 lib/Driver.php:279 lib/Driver.php:399 +#: lib/Driver.php:425 lib/Driver.php:441 lib/Page.php:255 lib/Page.php:289 +#: lib/Page.php:294 lib/Page.php:393 lib/Page.php:403 lib/Page.php:413 +#: lib/Page.php:423 lib/Page.php:523 lib/Page.php:534 lib/Page.php:539 +#: lib/Page.php:544 lib/Page.php:549 lib/Page.php:589 lib/Sync.php:78 +#: lib/Sync.php:90 lib/Sync.php:102 lib/Sync.php:114 lib/Sync.php:126 +#: lib/Sync.php:142 +msgid "Unsupported" +msgstr "Non supportato." + +#: templates/display/AttachedFiles.html:154 +msgid "Update File" +msgstr "Aggiorna File" + +#: templates/display/AttachedFiles.html:104 +msgid "Update an Attachment" +msgstr "Aggiorna un Allegato" + +#: lib/Page/AttachedFiles.php:300 +#, php-format +msgid "Updated attachment \"%s\" on page \"%s\"." +msgstr "Aggiornato l'Allegato \"%s\" sulla pagina \"%s\"." + +#: templates/sync/diff.inc:97 templates/sync/list.inc:61 +msgid "Upload" +msgstr "" + +#: lib/Page/SyncPages.php:419 +msgid "Uploaded from remote server" +msgstr "" + +#: lib/Page/SyncPages.php:243 +msgid "Url" +msgstr "" + +#: scripts/wicked.php:156 +#, php-format +msgid "Usage: %s [OPTIONS]..." +msgstr "Usato: %s [OPZIONI]..." + +#: lib/Page/SyncPages.php:246 +msgid "User" +msgstr "" + +#: templates/sync/diff.inc:23 templates/sync/diff.inc:59 +#: templates/sync/list.inc:22 templates/sync/list.inc:48 +#: templates/pagelist/header.inc:6 templates/history/header.inc:13 +#: templates/edit/create.inc:18 lib/Page/Search.php:157 +#: templates/display/AttachedFiles.html:9 +msgid "Version" +msgstr "Versione" + +#: lib/Page/SyncPages.php:178 +msgid "View local" +msgstr "" + +#: lib/Page/AttachedFiles.php:309 +msgid "View page: " +msgstr "Visualizza pagina: " + +#: lib/Page/SyncPages.php:180 +msgid "View remote" +msgstr "Visualizza remoto" + +#: lib/Page/SyncPages.php:237 +msgid "Wicked" +msgstr "Wicked" + +#: lib/api.php:374 +msgid "Wiki Templates" +msgstr "Modello Wiki" + +#: lib/Block/page.php:3 +msgid "Wiki page" +msgstr "Pagina Wiki" + +#: display.php:25 +msgid "You are not allowed to lock this page" +msgstr "Non sei autorizzato a bloccare questa pagina" + +#: display.php:40 +msgid "You are not allowed to unlock this page" +msgstr "Non sei autorizzato a sbloccare questa pagina" + +#: lib/Page/AttachedFiles.php:196 +msgid "You do not have permission to delete attachments from this page." +msgstr "Non hai permesso di eliminare gli allegati da questa pagina." + +#: lib/Page/AttachedFiles.php:237 lib/Page/MergeOrRename.php:169 +#: lib/Page/MergeOrRename.php:184 +#, php-format +msgid "You do not have permission to edit \"%s\"" +msgstr "Non hai il permesso di visualizzare di modificare \"%s\"" + +#: lib/Page/NewPage.php:125 +#, php-format +msgid "You don't have permission to create \"%s\"." +msgstr "Non hai il permesso di creare \"%s\"." + +#: lib/Page/DeletePage.php:150 +#, php-format +msgid "You don't have permission to delete \"%s\"." +msgstr "Non hai il permesso di eliminare \"%s\"." + +#: lib/api.php:334 lib/Page/EditPage.php:107 lib/Page/RevertPage.php:133 +#: lib/Page/SyncPages.php:371 +#, php-format +msgid "You don't have permission to edit \"%s\"." +msgstr "Non hai il permesso di modificare \"%s\"." + +#: display.php:70 display.php:73 display.php:116 display.php:119 +msgid "You don't have permission to view this page." +msgstr "Non hai permesso di visualizzare questa pagina." + +#: lib/Page/AttachedFiles.php:245 +msgid "You must enter a change description to attach this file." +msgstr "Devi inserire una descrizione di cambio per allegare questo file." + +#: lib/api.php:338 lib/Page/EditPage.php:118 +msgid "You must provide a change log." +msgstr "Devi fornire un cambio di log." + +#: lib/Wicked.php:130 +msgid "_AllPages" +msgstr "_Tutte le pagine" + +#: templates/display/standard.inc:67 +msgid "_BackLinks" +msgstr "_BackLinks" + +#: templates/display/standard.inc:53 +msgid "_Delete" +msgstr "_Elimina" + +#: templates/display/standard.inc:25 +msgid "_EditPage" +msgstr "_Modifica Pagina" + +#: templates/display/standard.inc:41 +msgid "_Lock" +msgstr "_Blocca" + +#: templates/display/standard.inc:61 +msgid "_MergeOrRename" +msgstr "_MergeOrRename" + +#: lib/Wicked.php:130 +msgid "_RecentChanges" +msgstr "_Cambiamenti Recenti" + +#: lib/Wicked.php:130 +msgid "_WikiHome" +msgstr "_WikiHome" + +#: lib/Page/AttachedFiles.php:217 +msgid "attachment" +msgstr "allegato" + +#: scripts/wicked.php:123 +#, php-format +msgid "page \"%s\" doesn't exist." +msgstr "la pagina \"%s\" non esiste." diff --git a/wicked/po/ja_JP.po b/wicked/po/ja_JP.po new file mode 100644 index 000000000..4cc072f9b --- /dev/null +++ b/wicked/po/ja_JP.po @@ -0,0 +1,915 @@ +# Japanese translations for Wicked package. +# Copyright 2008-2009 The Horde Project +# This file is distributed under the same license as the Wicked package. +# Automatically generated, 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: Wicked 1.0-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-01-09 09:58+0900\n" +"PO-Revision-Date: 2007-12-16 15:08+0100\n" +"Last-Translator: Takeshi Taguchi \n" +"Language-Team: i18n@lists.horde.org\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=SHIFT_JIS\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/Page/Search.php:111 +#, php-format +msgid "%s Does not exist. You can create it now." +msgstr "%s ‚Í‘¶Ý‚µ‚Ü‚¹‚ñB‚±‚ê‚©‚çì¬‚Å‚«‚Ü‚·B" + +#: templates/edit/create.inc:13 +#, php-format +msgid "" +"%s does not exist, but maybe you were looking for one of the following pages?" +msgstr "%s ‚Í‘¶Ý‚µ‚Ü‚¹‚ñB‚ªAˆÈ‰º‚̃y[ƒW‚ª‚¨’T‚µ‚Ì‚à‚Ì‚©‚à‚µ‚ê‚Ü‚¹‚ñB" + +#: templates/edit/create.inc:30 +#, php-format +msgid "" +"%s does not exist. Click on \"Create\" below if you want to create this page " +"now and start editing." +msgstr "" +"%s ‚Í‘¶Ý‚µ‚Ü‚¹‚ñBì¬‚³‚ꂽ‚¢ê‡‚Í\"ì¬\"‚ðƒNƒŠƒbƒN‚µA•ҏW‚ðŠJŽn‚µ‚Ä‚­‚¾" +"‚³‚¢B" + +#: templates/edit/create.inc:37 +msgid "(None)" +msgstr "(‚È‚µ)" + +#: scripts/wicked.php:161 +msgid "" +"-d, --debug Run in debug mode (displays extra information)" +msgstr "" +"-d, --debug Run in debug mode (displays extra information)" + +#: scripts/wicked.php:163 +msgid "" +"-g, --get[=pagetitle] Return all pages (unless pagetitle specified)" +msgstr "" +"-g, --get[=pagetitle] Return all pages (unless pagetitle specified)" + +#: scripts/wicked.php:160 +msgid "-h, --help Show this help" +msgstr "-h, --help Show this help" + +#: scripts/wicked.php:162 +msgid "-l, --list-pages List pages" +msgstr "-l, --list-pages List pages" + +#: scripts/wicked.php:164 +msgid "-o, --out[=type] Output type for results (default:xml)" +msgstr "-o, --out[=type] Output type for results (default:xml)" + +#: scripts/wicked.php:166 +msgid "-p, --password[=password] Horde login password" +msgstr "-p, --password[=password] Horde login password" + +#: scripts/wicked.php:165 +msgid "-u, --username[=username] Horde login username" +msgstr "-u, --username[=username] Horde login username" + +#: templates/display/MergeOrRename.html:31 +msgid "Add the text from this page" +msgstr "‚±‚̃y[ƒW‚©‚ç–{•¶‚ð’ljÁ" + +#: lib/Page/AddPage.php:98 +#, php-format +msgid "AddPage: %s" +msgstr "’ljÁƒy[ƒWF%s" + +#: lib/Page/AllPages.php:90 +msgid "AllPages" +msgstr "‘S‚Ẵy[ƒW" + +#: lib/Page/DeletePage.php:83 +msgid "" +"Are you sure you want to delete this page? All versions will be permanently " +"removed." +msgstr "–{“–‚É‚±‚̃y[ƒW‚ðíœ‚µ‚Ü‚·‚©H‘S‚Ẵo[ƒWƒ‡ƒ“‚ªŠ®‘S‚ɏÁ‹Ž‚³‚ê‚Ü‚·B" + +#: lib/Page/DeletePage.php:85 +#, php-format +msgid "Are you sure you want to delete version %s of this page?" +msgstr "–{“–‚É‚±‚̃y[ƒW‚̃o[ƒWƒ‡ƒ“ %s ‚ðíœ‚µ‚Ü‚·‚©H" + +#: lib/Page/RevertPage.php:71 +#, php-format +msgid "Are you sure you want to revert to version %s of this page?" +msgstr "–{“–‚É‚±‚̃y[ƒW‚ðƒo[ƒWƒ‡ƒ“ %s ‚É–ß‚µ‚Ü‚·‚©H" + +#: templates/display/AttachedFiles.html:88 +msgid "Attach File" +msgstr "“Y•tƒtƒ@ƒCƒ‹" + +#: templates/display/AttachedFiles.html:52 +msgid "Attach a New File" +msgstr "V‹K“Y•tƒtƒ@ƒCƒ‹" + +#: templates/display/standard.inc:68 +msgid "AttachedFiles" +msgstr "“Y•t‚³‚ꂽƒtƒ@ƒCƒ‹" + +#: lib/Page/AttachedFiles.php:163 +#, php-format +msgid "AttachedFiles: %s" +msgstr "“Y•tƒtƒ@ƒCƒ‹F%s" + +#: templates/display/standard.inc:69 +msgid "Attached_Files" +msgstr "“Y•tƒtƒ@ƒCƒ‹" + +# +#: templates/display/AttachedFiles.html:7 +msgid "Attachment Name" +msgstr "“Y•t–¼" + +#: templates/display/standard.inc:105 +msgid "Attachments" +msgstr "“Y•t•¨" + +#: lib/Page/AttachedFiles.php:208 +msgid "Attachments with spaces can't be embedded into a page." +msgstr "‹ó”’‚̂‚¢‚½“Y•t‚̓y[ƒW‚É–„‚ߍž‚߂܂¹‚ñB" + +#: templates/pagelist/header.inc:7 templates/history/header.inc:23 +#: templates/edit/create.inc:19 lib/Page/Search.php:157 +#: templates/display/AttachedFiles.html:10 +msgid "Author" +msgstr "ì¬ŽÒ" + +# +#: templates/display/standard.inc:92 +msgid "Ba_ck to" +msgstr "_c–ß‚é" + +# +#: templates/display/standard.inc:92 +msgid "Back to" +msgstr "–ß‚é" + +#: templates/display/standard.inc:60 +msgid "BackLinks" +msgstr "ƒoƒbƒNƒŠƒ“ƒN" + +#: lib/Page/BackLinks.php:80 +#, php-format +msgid "BackLinks: %s" +msgstr "ƒoƒbƒNƒŠƒ“ƒN: %s" + +#: lib/Page/AttachedFiles.php:213 +msgid "Can't read uploaded file." +msgstr "ƒAƒbƒvƒ[ƒhƒtƒ@ƒCƒ‹‚ªŠJ‚¯‚Ü‚¹‚ñB" + +#: lib/Page/RevertPage.php:120 +#, php-format +msgid "Can't revert to an unknown version." +msgstr "–¢’m‚̃o[ƒWƒ‡ƒ“‚É•œ‹Œ‚Å‚«‚Ü‚¹‚ñB" + +#: lib/Page/AttachedFiles.php:248 +#, php-format +msgid "Can't update \"%s\": no such attachment." +msgstr "\"%s\" ‚ðXV‚Å‚«‚Ü‚¹‚ñ: ‚»‚Ì—l‚È“Y•t‚Í‚ ‚è‚Ü‚¹‚ñB" + +# +#: templates/edit/create.inc:47 templates/edit/standard.inc:27 +#: lib/Page/DeletePage.php:104 lib/Page/MergeOrRename.php:140 +#: lib/Page/RevertPage.php:88 templates/display/MergeOrRename.html:62 +msgid "Cancel" +msgstr "ƒLƒƒƒ“ƒZƒ‹" + +# +#: templates/history/header.inc:29 templates/display/AttachedFiles.html:12 +msgid "Change Log" +msgstr "•ύX—š—ð" + +# +#: templates/edit/standard.inc:29 +msgid "Change log" +msgstr "•ύX—š—ð" + +# +#: templates/display/AttachedFiles.html:80 +#: templates/display/AttachedFiles.html:146 +msgid "Change log entry" +msgstr "—š—ð€–Ú‚Ì•ÏX" + +#: templates/display/MergeOrRename.html:40 +msgid "Change references to this page from:" +msgstr "‚±‚̃y[ƒW‚Ö‚ÌŽQÆ‚̕ύX" + +#: lib/Page/MergeOrRename.php:253 +#, php-format +msgid "Changed references from %s to %s" +msgstr "%s ‚©‚ç %s ‚Ö‚ÌŽQÆ‚̕ύX" + +# +#: templates/edit/standard.inc:28 +msgid "Changelog is required" +msgstr "•ύX—š—ð‚ª•K—v‚Å‚·" + +#: templates/edit/create.inc:26 +msgid "" +"Click on \"Create\" below if you want to create this page now and start " +"editing." +msgstr "" +"‚±‚̃y[ƒW‚ðì¬‚³‚ꂽ‚¢ê‡‚Í\"Create\"‚ðƒNƒŠƒbƒN‚µA•ҏW‚ðŠJŽn‚µ‚ĉº‚³‚¢B" + +# +#: scripts/wicked.php:42 +msgid "Couldn't read command-line options." +msgstr "ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“ˆø”‚ð“ǂݍž‚߂܂¹‚ñB" + +#: templates/edit/create.inc:46 +msgid "Create" +msgstr "ì¬" + +#: lib/Page/NewPage.php:129 +#, php-format +msgid "Create Failed: %s" +msgstr "ì¬Ž¸”s: %s" + +# +#: templates/history/header.inc:24 +msgid "Created" +msgstr "ì¬Ï‚Ý" + +# +#: templates/pagelist/header.inc:8 templates/edit/create.inc:20 +#: lib/Page/Search.php:158 +msgid "Creation Date" +msgstr "ì¬“ú" + +#: templates/display/AttachedFiles.html:11 +msgid "Date" +msgstr "“ú•t" + +#: lib/Page/DeletePage.php:103 +msgid "Delete" +msgstr "íœ" + +#: templates/display/standard.inc:47 +#, php-format +msgid "Delete %s" +msgstr "%s ‚ðíœ" + +# +#: templates/history/header.inc:16 +msgid "Delete Version" +msgstr "íœƒo[ƒWƒ‡ƒ“" + +#: templates/history/summary.inc:6 +#, php-format +msgid "Delete Version %s" +msgstr "ƒo[ƒWƒ‡ƒ“%s‚ðíœ" + +# +#: lib/Page/DeletePage.php:97 lib/Page/DeletePage.php:120 +msgid "DeletePage" +msgstr "íœ" + +#: lib/Page/DeletePage.php:142 +#, php-format +msgid "Deleted version %s of \"%s\"." +msgstr "\"%s\" ‚̃o[ƒWƒ‡ƒ“\"%s\"‚ðíœ" + +# +#: templates/history/header.inc:26 +msgid "Diff From" +msgstr "ˆÈ‰º‚©‚ç‚̍·•ª" + +#: templates/history/header.inc:27 +msgid "Diff To" +msgstr "ˆÈ‰º‚ւ̍·•ª" + +#: diff.php:56 templates/diff/diff.inc:2 +#, php-format +msgid "Diff for %s between %s and %s" +msgstr "%s‚É‚¨‚¯‚é%s‚Æ%sŠÔ‚̍·•ª" + +#: templates/pagelist/summary.inc:3 +#, php-format +msgid "Display %s" +msgstr "•\ަ %s" + +#: templates/pagelist/summary.inc:6 templates/history/summary.inc:2 +#, php-format +msgid "Display Version %s" +msgstr "•\ަƒo[ƒWƒ‡ƒ“ %s" + +# +#: templates/display/AttachedFiles.html:13 +msgid "Downloads" +msgstr "ƒ_ƒEƒ“ƒ[ƒh" + +#: preview.php:24 templates/display/standard.inc:23 +#, php-format +msgid "Edit %s" +msgstr "•ҏW %s" + +# +#: templates/history/header.inc:18 +msgid "Edit Version" +msgstr "ƒo[ƒWƒ‡ƒ“‚̕ҏW" + +#: templates/history/summary.inc:16 +#, php-format +msgid "Edit Version %s" +msgstr "%s ƒo[ƒWƒ‡ƒ“‚̕ҏW" + +# +#: templates/edit/standard.inc:21 lib/Page/EditPage.php:93 +msgid "EditPage" +msgstr "•ҏWƒy[ƒW" + +#: templates/display/AttachedFiles.html:67 +msgid "Enter a name for this file (if blank, will use the file's current name)" +msgstr "" +"‚±‚̃tƒ@ƒCƒ‹‚Ì–¼‘O‚ð“ü—Í‚µ‚ĉº‚³‚¢(‹ó”’‚È‚ç‚΁AŒ»Ý‚̃tƒ@ƒCƒ‹–¼‚ª—p‚¢‚ç‚ê‚Ü" +"‚·)B" + +#: scripts/mail-filter.php:127 +#, php-format +msgid "Error creating new page: %s" +msgstr "V‹Kƒy[ƒWì¬ƒGƒ‰[: %s" + +#: lib/Page/MergeOrRename.php:202 +#, php-format +msgid "Error deleting %s: %s" +msgstr "%s‚̍폜ƒGƒ‰[F%s" + +#: scripts/mail-filter.php:42 +#, php-format +msgid "Error parsing MIME message: %s\n" +msgstr "MIMEƒƒbƒZ[ƒW‰ðÍƒGƒ‰[: %s\n" + +#: lib/Page/MergeOrRename.php:217 +#, php-format +msgid "Error renaming \"%s\": %s" +msgstr "\"%s\" ‚Ì–¼‘O•ύXƒGƒ‰[: %s" + +#: lib/Page/MergeOrRename.php:247 +#, php-format +msgid "Error retrieving %s: %s" +msgstr "%s ‚̎󂯎æ‚èƒGƒ‰[F%s" + +#: lib/Page/AttachedFiles.php:106 lib/Page/AttachedFiles.php:231 +#, php-format +msgid "Error retrieving attachments: %s" +msgstr "“Y•t‚̎󂯎æ‚èƒGƒ‰[F%s" + +#: lib/Page/AddPage.php:58 +#, php-format +msgid "Error retrieving templates: %s" +msgstr "ƒeƒ“ƒvƒŒ[ƒg‚̎󂯎æ‚èƒGƒ‰[F%s" + +#: lib/Page/MergeOrRename.php:194 lib/Page/MergeOrRename.php:274 +#, php-format +msgid "Error updating %s: %s" +msgstr "%s‚̍XVƒGƒ‰[: %s" + +#: lib/Page/Search.php:164 +msgid "Exact Match" +msgstr "Š®‘S‚Ɉê’v" + +#: lib/Page/MergeOrRename.php:164 +#, php-format +msgid "Failed to retrieve \"%s\": %s" +msgstr "\"%s\"‚̎󂯎æ‚è‚ÉŽ¸”sF%s" + +# +#: lib/Page.php:274 +msgid "Guest" +msgstr "ƒQƒXƒg" + +#: templates/display/standard.inc:75 +msgid "Hi_story" +msgstr "_i—š—ð" + +#: templates/display/standard.inc:74 +#, php-format +msgid "History of %s" +msgstr "%s ‚Ì—š—ð" + +#: history.php:30 templates/history/header.inc:7 +#, php-format +msgid "History: %s" +msgstr "—š—ðF%s" + +#: lib/Wicked.php:130 +msgid "HowTo_UseWiki" +msgstr "_UWiki‚ÌŽg‚¢•û" + +#: templates/display/MergeOrRename.html:26 +msgid "If a page with the new name already exists, then" +msgstr "V‚µ‚¢–¼‘O‚ð‚à‚ƒy[ƒW‚ªŠù‚É‘¶Ý‚µ‚Ä‚¢‚é‚È‚ç‚΁A" + +# +#: display.php:26 history.php:18 +msgid "Internal error viewing requested page" +msgstr "—v‹‚³‚ꂽƒy[ƒW‚̉{——’†‚É“à•”ƒGƒ‰[‚ª”­¶" + +#: diff.php:39 +#, php-format +msgid "Internal error viewing requested page: %s" +msgstr "—v‹‚³‚ꂽƒy[ƒW‚̉{——’†‚É“à•”ƒGƒ‰[‚ª”­¶: %s" + +#: templates/display/AttachedFiles.html:133 +msgid "Is this a minor update?" +msgstr "‚±‚ê‚͏¬‹K–͂ȕύX‚Å‚·‚©H" + +#: templates/display/standard.inc:64 +msgid "L_ikePages" +msgstr "_iŽ—‚½ƒy[ƒW" + +#: templates/edit/standard.inc:20 templates/display/title.inc:6 +#, php-format +msgid "Last Modified %s by %s" +msgstr "ÅIXV“úŽž %s (XVŽÒ: %s)" + +#: lib/Page/LeastPopular.php:93 +msgid "LeastPopular" +msgstr "Å¬l‹C" + +#: templates/display/standard.inc:64 +msgid "LikePages" +msgstr "—ÞŽ—ƒy[ƒW" + +#: lib/Page/LikePages.php:82 +#, php-format +msgid "LikePages: %s" +msgstr "—ÞŽ—ƒy[ƒW: %s" + +#: templates/display/standard.inc:35 +#, php-format +msgid "Lock %s" +msgstr "ƒƒbƒN %s" + +#: templates/edit/standard.inc:21 templates/display/title.inc:34 +#: lib/Page/DeletePage.php:97 lib/Page/RevertPage.php:81 +msgid "Locked" +msgstr "ƒƒbƒNÏ‚Ý" + +#: scripts/wicked.php:104 +#, php-format +msgid "Logged in successfully as \"%s\"." +msgstr "Logged in successfully as \"%s\"." + +#: scripts/wicked.php:100 +msgid "Login is incorrect." +msgstr "Login is incorrect." + +#: scripts/wicked.php:158 +msgid "" +"Mandatory arguments to long options are mandatory for short options too." +msgstr "" +"Mandatory arguments to long options are mandatory for short options too." + +# +#: templates/display/standard.inc:54 +msgid "MergeOrRename" +msgstr "“‡‚Ü‚½‚Í–¼‘O•ύX" + +#: lib/Page/MergeOrRename.php:125 +#, php-format +msgid "MergeOrRename: %s" +msgstr "“‡‚Ü‚½‚Í–¼‘O•ύX: %s" + +#: lib/Page/MergeOrRename.php:207 +#, php-format +msgid "Merged \"%s\" into \"%s\"." +msgstr "\"%s\"‚ð\"%s\"‚É“‡" + +#: lib/Page/MergeOrRename.php:210 +#, php-format +msgid "Merged \"%s\" into \"%s\". New page: %s\n" +msgstr "\"%s\"‚ð\"%s\"‚É“‡BVƒy[ƒW: %s\n" + +#: lib/Page/MergeOrRename.php:191 +#, php-format +msgid "Merged from %s" +msgstr "%s ‚©‚ç‚Ì“‡" + +# +#: templates/edit/standard.inc:30 +msgid "Minor Change" +msgstr "¬‹K–͂ȕύX" + +# +#: lib/Page/MostPopular.php:93 +msgid "MostPopular" +msgstr "Å‚l‹C" + +# +#: lib/Block/page.php:41 +msgid "Name of wiki page to display" +msgstr "•\ަ‚·‚éƒy[ƒW–¼" + +#: lib/Page.php:263 +msgid "Never" +msgstr "‚È‚µ" + +#: lib/Page/AttachedFiles.php:274 +#, php-format +msgid "New attachment \"%s\" to page \"%s\"." +msgstr "ƒy[ƒW\"%s\"‚ւ̐V‹K“Y•t\"%s\"" + +#: templates/display/MergeOrRename.html:15 +msgid "New name" +msgstr "V‚µ‚¢–¼‘O" + +#: lib/Page/MergeOrRename.php:151 +msgid "New name is the same as old name." +msgstr "V‚µ‚¢–¼‘O‚͌¢‚à‚̂Ɠ¯‚¶‚Å‚·B" + +# +#: lib/Page/NewPage.php:106 +msgid "NewPage" +msgstr "V‹Kƒy[ƒW" + +#: templates/edit/new.inc:20 +#, php-format +msgid "NewPage: %s" +msgstr "V‹Kƒy[ƒWF%s" + +# +#: lib/Page/EditPage.php:124 +msgid "No changes made" +msgstr "•ύX‚È‚µB" + +#: lib/Driver.php:124 +msgid "Not implemented." +msgstr "ŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB" + +# +#: templates/pagelist/header.inc:5 templates/edit/create.inc:17 +#: lib/Page/Search.php:155 +msgid "Page" +msgstr "ƒy[ƒW" + +#: lib/Page/MergeOrRename.php:179 +#, php-format +msgid "Page \"%s\" already exists." +msgstr "ƒy[ƒW \"%s\" ‚ÍŠù‚É‚ ‚è‚Ü‚·B" + +# +#: lib/Page/NewPage.php:132 +msgid "Page Created" +msgstr "ƒy[ƒW‚͐¶¬‚³‚ê‚Ü‚µ‚½" + +#: lib/Page/EditPage.php:131 +msgid "Page Saved" +msgstr "ƒy[ƒW‚͕ۑ¶‚³‚ê‚Ü‚µ‚½" + +#: templates/edit/create.inc:35 +msgid "Page Template:" +msgstr "ƒy[ƒW—Œ`:" + +#: lib/Page/Search.php:178 +msgid "Page Text Matches" +msgstr "ƒy[ƒW–{•¶‚Ƀ}ƒbƒ`" + +#: lib/Page/Search.php:171 +msgid "Page Title Matches" +msgstr "ƒy[ƒW‘è–¼‚Ƀ}ƒbƒ`" + +# +#: templates/pagelist/header.inc:10 +msgid "Page Views" +msgstr "ƒy[ƒW•\ަ" + +#: display.php:40 +#, php-format +msgid "Page failed to lock: %s" +msgstr "ƒy[ƒW‚̃ƒbƒN‚ÉŽ¸”s: %s" + +#: display.php:55 +#, php-format +msgid "Page failed to unlock: %s" +msgstr "ƒy[ƒW‚̃ƒbƒN‰ðœ‚ÉŽ¸”s: %s" + +#: display.php:43 +msgid "Page locked" +msgstr "ƒy[ƒW‚̓ƒbƒN‚³‚ê‚Ü‚µ‚½" + +# +#: display.php:58 +msgid "Page unlocked" +msgstr "ƒy[ƒWƒƒbƒN‰ðœ" + +# +#: lib/api.php:35 lib/api.php:38 +msgid "Pages" +msgstr "ƒy[ƒW" + +# +#: lib/Page/NewPage.php:123 +msgid "Pages cannot be empty." +msgstr "ƒy[ƒW‚Í‹ó‚ł͂¢‚¯‚Ü‚¹‚ñ" + +#: templates/display/standard.inc:88 +msgid "Permissio_ns" +msgstr "_nƒAƒNƒZƒXŒ " + +#: templates/edit/new.inc:25 templates/edit/standard.inc:26 +msgid "Preview" +msgstr "ƒvƒŒƒrƒ…[" + +#: lib/Page/EditPage.php:112 +msgid "Random string did not match." +msgstr "—”•¶Žš—ñ‚̓}ƒbƒ`‚µ‚Ü‚¹‚ñB" + +#: lib/Page/RecentChanges.php:113 +msgid "RecentChanges" +msgstr "ÅŒã‚̕ύX" + +#: lib/Page/AttachedFiles.php:63 +#, php-format +msgid "Referrer \"%s\" does not exist." +msgstr "ŽQÆ \"%s\" ‚ª‚ ‚è‚Ü‚¹‚ñB" + +#: lib/Page/AttachedFiles.php:123 +#, php-format +msgid "Reload \"%s\"" +msgstr "Ä“ǂݍž‚Ý \"%s\"" + +#: templates/history/header.inc:8 +msgid "Reload History" +msgstr "—š—ð‚ðÄ“ǂݍž‚Ý" + +#: templates/display/title.inc:32 templates/display/title.inc:33 +msgid "Reload Page" +msgstr "ƒy[ƒW‚ðÄ“ǂݍž‚Ý" + +#: lib/Page/MergeOrRename.php:222 +#, php-format +msgid "Renamed \"%s\" to \"%s\"." +msgstr "\"%s\"‚ð\"%s\"‚É–¼‘O•ύX" + +#: lib/Page/MergeOrRename.php:225 +#, php-format +msgid "Renamed \"%s\" to \"%s\". New page: %s\n" +msgstr "\"%s\"‚ð\"%s\"‚É–¼‘O•ύXBVƒy[ƒW: %s\n" + +#: lib/Driver/sql.php:674 +#, php-format +msgid "Renamed page from %s" +msgstr "%s ‚©‚ç–¼‘O•ύX‚³‚ꂽƒy[ƒW" + +#: templates/history/header.inc:20 +msgid "Restore Version" +msgstr "ÄŠi”[ƒo[ƒWƒ‡ƒ“" + +# +#: lib/Page/RevertPage.php:87 +msgid "Revert" +msgstr "•œ‹Œ" + +#: templates/history/summary.inc:26 +#, php-format +msgid "Revert to version %s" +msgstr "ƒo[ƒWƒ‡ƒ“%s‚É•œ‹Œ" + +#: lib/Page/RevertPage.php:81 lib/Page/RevertPage.php:104 +msgid "RevertPage" +msgstr "•œ‹Œƒy[ƒW" + +#: lib/Page/RevertPage.php:127 +#, php-format +msgid "Reverted to version %s of \"%s\"." +msgstr "\"%s\"‚̃o[ƒWƒ‡ƒ“%s‚Ö•œ‹Œ" + +#: lib/Driver/sql.php:589 +msgid "Robots are not allowed to create pages." +msgstr "ƒƒ{ƒbƒg‚ɂ̓y[ƒWì¬‚Í‹–‚³‚ê‚Ü‚¹‚ñB" + +#: templates/edit/new.inc:24 templates/edit/standard.inc:25 +msgid "Save" +msgstr "•Û‘¶" + +#: lib/Page/EditPage.php:128 +#, php-format +msgid "Save Failed: %s" +msgstr "•Û‘¶Ž¸”s: %s" + +#: templates/menu.inc:19 lib/Page/Search.php:203 +msgid "Search" +msgstr "ŒŸõ" + +#: templates/pagelist/search.inc:1 +msgid "Search Results" +msgstr "ŒŸõŒ‹‰Ê" + +#: templates/display/AttachedFiles.html:58 +#: templates/display/AttachedFiles.html:110 +msgid "Select file to attach:" +msgstr "“Y•t‚·‚éƒtƒ@ƒCƒ‹‚ð‘I‘ð:" + +#: templates/display/AttachedFiles.html:119 +msgid "Select the file to update" +msgstr "XV‚·‚éƒtƒ@ƒCƒ‹‚ð‘I‘ð" + +#: templates/display/standard.inc:87 +#, php-format +msgid "Set permissions for %s" +msgstr "%s‚̃AƒNƒZƒXŒ ‚ðÝ’è" + +#: templates/display/title.inc:16 lib/Page/RecentChanges.php:56 +#, php-format +msgid "Show changes for %s" +msgstr "%s ‚̕ύX‚ð•\ަ" + +#: lib/Page/RecentChanges.php:63 +#, php-format +msgid "Show version %s" +msgstr "ƒo[ƒWƒ‡ƒ“%s ‚ð•\ަ" + +#: templates/edit/standard.inc:41 +msgid "Spam Protection - Enter the letters below:" +msgstr "SPAM‘΍ô - ˆÈ‰º‚Ì•¶Žš‚ð“ü—Í‚µ‚ĉº‚³‚¢:" + +#: templates/display/MergeOrRename.html:33 +msgid "Stop and don't do anything" +msgstr "’âŽ~‚µ‚ĉ½‚às‚í‚È‚¢‚ʼnº‚³‚¢B" + +#: templates/display/MergeOrRename.html:61 +msgid "Submit" +msgstr "ŽÀs" + +#: lib/Page/DeletePage.php:136 +#, php-format +msgid "Successfully deleted \"%s\"." +msgstr "\"%s\" ‚ªíœ‚³‚ê‚Ü‚µ‚½B" + +#: lib/Page/AttachedFiles.php:198 +#, php-format +msgid "Successfully deleted version %s of \"%s\" from \"%s\"" +msgstr "\"%s\"‚©‚ç \"%s\" ‚̃o[ƒWƒ‡ƒ“%s‚ªíœ‚³‚ê‚Ü‚µ‚½B" + +#: lib/Page.php:483 +msgid "Table of Contents" +msgstr "–ÚŽŸ" + +#: lib/Page/AttachedFiles.php:254 +#, php-format +msgid "There is already an attachment named \"%s\"." +msgstr "“Y•t \"%s\" ‚ÍŠù‚É‘¶Ý‚µ‚Ä‚¢‚Ü‚·B" + +#: lib/Page/MergeOrRename.php:149 lib/Page/MergeOrRename.php:155 +msgid "This is a required field." +msgstr "‚±‚̍€–Ú‚Í•K{‚Å‚·B" + +#: display.php:70 +msgid "This page does not have a history" +msgstr "‚±‚̃y[ƒW‚ɂ͗š—ð‚ª‚ ‚è‚Ü‚¹‚ñ" + +#: lib/Page/MergeOrRename.php:100 +#, php-format +msgid "This page is referenced from %d other page(s)." +msgstr "‚±‚̃y[ƒW‚Í %d –‡‚̃y[ƒW‚©‚çŽQÆ‚³‚ê‚Ä‚¢‚Ü‚·B" + +#: templates/display/standard.inc:32 +msgid "Un_lock" +msgstr "_lƒƒbƒN‰ðœ" + +#: lib/Page/StandardPage.php:79 +#, php-format +msgid "Unable to create %s" +msgstr "%s ‚𐶐¬‚Å‚«‚Ü‚¹‚ñB" + +#: lib/Page/StandardPage.php:87 +msgid "Unable to create WikiHome. The wiki is not configured." +msgstr "WikiHome‚𐶐¬‚Å‚«‚Ü‚¹‚ñBwiki‚ÌÝ’è‚ªŠ®—¹‚µ‚Ä‚¢‚Ü‚¹‚ñB" + +#: templates/display/standard.inc:31 +#, php-format +msgid "Unlock %s" +msgstr "ƒƒbƒN‰ðœ %s" + +#: lib/Driver.php:78 lib/Driver.php:92 lib/Driver.php:104 lib/Driver.php:109 +#: lib/Driver.php:129 lib/Driver.php:134 lib/Driver.php:192 lib/Driver.php:197 +#: lib/Driver.php:202 lib/Driver.php:216 lib/Driver.php:230 lib/Driver.php:244 +#: lib/Driver.php:249 lib/Driver.php:254 lib/Driver.php:272 lib/Driver.php:392 +#: lib/Driver.php:418 lib/Driver.php:434 lib/Page.php:255 lib/Page.php:289 +#: lib/Page.php:294 lib/Page.php:393 lib/Page.php:403 lib/Page.php:413 +#: lib/Page.php:423 lib/Page.php:518 lib/Page.php:529 lib/Page.php:534 +#: lib/Page.php:539 lib/Page.php:544 lib/Page.php:584 +msgid "Unsupported" +msgstr "ƒTƒ|[ƒg‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB" + +#: templates/display/AttachedFiles.html:154 +msgid "Update File" +msgstr "ƒtƒ@ƒCƒ‹XV" + +# +#: templates/display/AttachedFiles.html:104 +msgid "Update an Attachment" +msgstr "“Y•tXV" + +#: lib/Page/AttachedFiles.php:272 +#, php-format +msgid "Updated attachment \"%s\" on page \"%s\"." +msgstr "ƒy[ƒW \"%s\"‚Ì“Y•t \"%s\" ‚ðXV‚µ‚Ü‚µ‚½B" + +#: scripts/wicked.php:156 +#, php-format +msgid "Usage: %s [OPTIONS]..." +msgstr "Usage: %s [OPTIONS]..." + +#: templates/pagelist/header.inc:6 templates/history/header.inc:13 +#: templates/edit/create.inc:18 lib/Page/Search.php:156 +#: templates/display/AttachedFiles.html:9 +msgid "Version" +msgstr "ƒo[ƒWƒ‡ƒ“" + +#: lib/Page/AttachedFiles.php:279 +msgid "View page: " +msgstr "ƒy[ƒW•\ަ:" + +#: lib/Block/page.php:3 +msgid "Wiki page" +msgstr "Wikiƒy[ƒW" + +#: display.php:34 +msgid "You are not allowed to lock this page" +msgstr "‚ ‚È‚½‚Í‚±‚̃y[ƒW‚ðƒƒbƒN‚Å‚«‚Ü‚¹‚ñB" + +#: display.php:49 +msgid "You are not allowed to unlock this page" +msgstr "‚ ‚È‚½‚Í‚±‚̃y[ƒW‚ðƒƒbƒN‰ðœ‚Å‚«‚Ü‚¹‚ñB" + +#: lib/Page/AttachedFiles.php:188 +msgid "You do not have permission to delete attachments from this page." +msgstr "‚ ‚È‚½‚ɂ͂±‚̃y[ƒW‚©‚ç“Y•t‚ðíœ‚·‚錠ŒÀ‚ª‚ ‚è‚Ü‚¹‚ñB" + +#: lib/Page/AttachedFiles.php:218 lib/Page/MergeOrRename.php:169 +#: lib/Page/MergeOrRename.php:184 +#, php-format +msgid "You do not have permission to edit \"%s\"" +msgstr "‚ ‚È‚½‚É‚Í\"%s\"‚ð•ҏW‚·‚錠ŒÀ‚ª‚ ‚è‚Ü‚¹‚ñB" + +#: lib/Page/NewPage.php:119 +#, php-format +msgid "You don't have permission to create \"%s\"." +msgstr "‚ ‚È‚½‚É‚Í\"%s\"‚ðì¬‚·‚錠ŒÀ‚ª‚ ‚è‚Ü‚¹‚ñB" + +#: lib/Page/DeletePage.php:150 +#, php-format +msgid "You don't have permission to delete \"%s\"." +msgstr "‚ ‚È‚½‚É‚Í\"%s\"‚ðíœ‚·‚錠ŒÀ‚ª‚ ‚è‚Ü‚¹‚ñB" + +#: lib/Page/EditPage.php:107 lib/Page/RevertPage.php:133 +#, php-format +msgid "You don't have permission to edit \"%s\"." +msgstr "‚ ‚È‚½‚É‚Í\"%s\"‚ð•ҏW‚·‚錠ŒÀ‚ª‚ ‚è‚Ü‚¹‚ñB" + +#: display.php:82 display.php:85 +msgid "You don't have permission to view this page." +msgstr "‚ ‚È‚½‚Í‚±‚̃y[ƒW‚ðŒ©‚éŒ ŒÀ‚ª‚ ‚è‚Ü‚¹‚ñB" + +#: lib/Page/AttachedFiles.php:224 +msgid "You must enter a change description to attach this file." +msgstr "‚±‚̃tƒ@ƒCƒ‹‚ð“Y•t‚·‚é•ύX‚Ìà–¾‚ð“ü—Í‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB" + +#: lib/Page/EditPage.php:118 +msgid "You must provide a change log." +msgstr "•ύXƒƒO‚ð’ñ‹Ÿ‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB" + +#: lib/Wicked.php:130 +msgid "_AllPages" +msgstr "_A‘S•”‚̃y[ƒW" + +#: templates/display/standard.inc:60 +msgid "_BackLinks" +msgstr "_BƒoƒbƒNƒŠƒ“ƒN" + +#: templates/display/standard.inc:48 +msgid "_Delete" +msgstr "_Díœ" + +#: templates/display/standard.inc:24 +msgid "_EditPage" +msgstr "_E•ҏW" + +#: templates/display/standard.inc:36 +msgid "_Lock" +msgstr "_LƒƒbƒN" + +#: templates/display/standard.inc:55 +msgid "_MergeOrRename" +msgstr "_M“‡‚Ü‚½‚Í–¼‘O•ύX" + +#: lib/Wicked.php:130 +msgid "_RecentChanges" +msgstr "_RÅŒã‚̕ύX" + +#: lib/Wicked.php:130 +msgid "_WikiHome" +msgstr "_Wƒz[ƒ€" + +#: scripts/wicked.php:123 +#, php-format +msgid "page \"%s\" doesn't exist." +msgstr "ƒy[ƒW \"%s\" ‚Í‘¶Ý‚µ‚Ü‚¹‚ñB" diff --git a/wicked/po/pt_BR.po b/wicked/po/pt_BR.po new file mode 100644 index 000000000..6fcbcb7af --- /dev/null +++ b/wicked/po/pt_BR.po @@ -0,0 +1,915 @@ +# translation of pt_BR.po to Português brasileiro +# Portuguese translations for Wicked package. +# Copyright 2008-2009 The Horde Project +# This file is distributed under the same license as the Wicked package. +# +# Automatically generated, 2008. +# Luis Felipe Marzagao , 2008. +msgid "" +msgstr "" +"Project-Id-Version: pt_BR\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-08-01 10:45+0200\n" +"PO-Revision-Date: 2008-12-28 16:40-0200\n" +"Last-Translator: Luis Felipe Marzagao \n" +"Language-Team: Português brasileiro \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" +"X-Generator: KBabel 1.11.4\n" + +#: templates/edit/create.inc:13 +#, php-format +msgid "" +"%s does not exist, but maybe you were looking for one of the following pages?" +msgstr "" +"%s não existe, mas talvez você estivesse procurando por uma das seguintes " +"páginas?" + +#: templates/edit/create.inc:30 +#, php-format +msgid "" +"%s does not exist. Click on \"Create\" below if you want to create this page " +"now and start editing." +msgstr "" +"%s não existe. Clique em \"Criar\" abaixo se você deseja criar esta página e " +"editá-la." + +#: lib/Page/Search.php:111 +#, php-format +msgid "%s does not exist. You can create it now." +msgstr "%s não existe. Você pode criá-la agora." + +#: templates/edit/create.inc:37 +msgid "(None)" +msgstr "(Nenhum)" + +#: scripts/wicked.php:161 +msgid "" +"-d, --debug Run in debug mode (displays extra information)" +msgstr "" +"-d, --debug Run in debug mode (displays extra information)" + +#: scripts/wicked.php:163 +msgid "" +"-g, --get[=pagetitle] Return all pages (unless pagetitle specified)" +msgstr "" +"-g, --get[=pagetitle] Return all pages (unless pagetitle specified)" + +#: scripts/wicked.php:160 +msgid "-h, --help Show this help" +msgstr "-h, --help Show this help" + +#: scripts/wicked.php:162 +msgid "-l, --list-pages List pages" +msgstr "-l, --list-pages List pages" + +#: scripts/wicked.php:164 +msgid "-o, --out[=type] Output type for results (default:xml)" +msgstr "-o, --out[=type] Output type for results (default:xml)" + +#: scripts/wicked.php:166 +msgid "-p, --password[=password] Horde login password" +msgstr "-p, --password[=password] Horde login password" + +#: scripts/wicked.php:165 +msgid "-u, --username[=username] Horde login username" +msgstr "-u, --username[=username] Horde login username" + +#: templates/display/MergeOrRename.html:31 +msgid "Add the text from this page" +msgstr "Adicionar o texto desta página" + +#: lib/Page/AddPage.php:108 +#, php-format +msgid "AddPage: %s" +msgstr "AdicionarPágina: %s" + +#: lib/Page/AllPages.php:90 +msgid "AllPages" +msgstr "TodasAsPáginas" + +#: lib/Page/DeletePage.php:83 +msgid "" +"Are you sure you want to delete this page? All versions will be permanently " +"removed." +msgstr "" +"Deseja realmente apagar esta página? Todas as versões serão removidas de " +"forma permanente." + +#: lib/Page/DeletePage.php:85 +#, php-format +msgid "Are you sure you want to delete version %s of this page?" +msgstr "Deseja realmente apagar a versão %s desta página?" + +#: lib/Page/RevertPage.php:71 +#, php-format +msgid "Are you sure you want to revert to version %s of this page?" +msgstr "Deseja realmente reverter para a versão %s desta página?" + +#: templates/display/AttachedFiles.html:88 +msgid "Attach File" +msgstr "Anexar Arquivo" + +#: templates/display/AttachedFiles.html:52 +msgid "Attach a New File" +msgstr "Anexar um Novo Arquivo" + +#: templates/display/standard.inc:77 +msgid "AttachedFiles" +msgstr "ArquivosAnexados" + +#: lib/Page/AttachedFiles.php:171 +#, php-format +msgid "AttachedFiles: %s" +msgstr "ArquivosAnexados: %s" + +#: templates/display/standard.inc:78 +msgid "Attached_Files" +msgstr "Arquivos_Anexados" + +#: templates/display/AttachedFiles.html:7 +msgid "Attachment Name" +msgstr "Nome do Anexo" + +#: templates/display/standard.inc:117 +msgid "Attachments" +msgstr "Anexos" + +#: lib/Page/AttachedFiles.php:225 +msgid "Attachments with spaces can't be embedded into a page." +msgstr "Anexos com espaços não podem ser incorporados em uma página." + +#: templates/history/header.inc:23 templates/pagelist/header.inc:7 +#: templates/edit/create.inc:19 lib/Page/Search.php:157 +#: templates/display/AttachedFiles.html:10 +msgid "Author" +msgstr "Autor" + +#: templates/display/standard.inc:104 +msgid "Ba_ck to" +msgstr "Retorna_r para" + +#: templates/display/standard.inc:104 +msgid "Back to" +msgstr "Retornar para" + +#: templates/display/standard.inc:67 +msgid "BackLinks" +msgstr "Referenciadores" + +#: lib/Page/BackLinks.php:80 +#, php-format +msgid "BackLinks: %s" +msgstr "Referenciadores: %s" + +#: lib/Page/AttachedFiles.php:231 +msgid "Can't read uploaded file." +msgstr "Impossível ler arquivo enviado." + +#: lib/Page/RevertPage.php:120 +#, php-format +msgid "Can't revert to an unknown version." +msgstr "Impossível reverter para uma versão desconhecida." + +#: lib/Page/AttachedFiles.php:271 +#, php-format +msgid "Can't update \"%s\": no such attachment." +msgstr "Impossível atualizar \"%s\": anexo inexistente." + +#: templates/edit/create.inc:47 templates/edit/standard.inc:27 +#: lib/Page/DeletePage.php:104 lib/Page/RevertPage.php:88 +#: lib/Page/MergeOrRename.php:140 templates/display/MergeOrRename.html:62 +msgid "Cancel" +msgstr "Cancelar" + +#: templates/history/header.inc:29 templates/display/AttachedFiles.html:12 +msgid "Change Log" +msgstr "Log de Alterações" + +#: templates/edit/standard.inc:29 +msgid "Change log" +msgstr "Log de alterações" + +#: templates/display/AttachedFiles.html:80 +#: templates/display/AttachedFiles.html:146 +msgid "Change log entry" +msgstr "Registro do log de alterações" + +#: templates/display/MergeOrRename.html:40 +msgid "Change references to this page from:" +msgstr "Alterar referências para essa página de:" + +#: lib/Page/MergeOrRename.php:253 +#, php-format +msgid "Changed references from %s to %s" +msgstr "Referências alteradas de %s para %s" + +#: templates/edit/standard.inc:28 +msgid "Changelog is required" +msgstr "Log de alterações é necessário" + +#: templates/edit/create.inc:26 +msgid "" +"Click on \"Create\" below if you want to create this page now and start " +"editing." +msgstr "" +"Clique em \"Criar\" abaixo se você deseja criar esta página e editá-la." + +#: scripts/wicked.php:42 +msgid "Couldn't read command-line options." +msgstr "Não foi possível ler opções de linha de comando." + +#: templates/edit/create.inc:46 +msgid "Create" +msgstr "Criar" + +#: lib/Page/NewPage.php:135 +#, php-format +msgid "Create Failed: %s" +msgstr "Criação Falhou: %s" + +#: templates/history/header.inc:24 +msgid "Created" +msgstr "Criado" + +#: templates/pagelist/header.inc:8 templates/edit/create.inc:20 +#: lib/Page/Search.php:158 +msgid "Creation Date" +msgstr "Data de Criação" + +#: templates/display/AttachedFiles.html:11 +msgid "Date" +msgstr "Data" + +#: lib/Page/DeletePage.php:103 +msgid "Delete" +msgstr "Excluir" + +#: templates/display/standard.inc:52 +#, php-format +msgid "Delete %s" +msgstr "Excluir %s" + +#: templates/history/header.inc:16 +msgid "Delete Version" +msgstr "Delete Version" + +#: templates/history/summary.inc:6 +#, php-format +msgid "Delete Version %s" +msgstr "Delete Version %s" + +#: lib/Page/DeletePage.php:97 lib/Page/DeletePage.php:120 +msgid "DeletePage" +msgstr "ApagarPágina" + +#: lib/Page/DeletePage.php:142 +#, php-format +msgid "Deleted version %s of \"%s\"." +msgstr "Apagar versão %s de \"%s\"." + +#: templates/history/header.inc:26 +msgid "Diff From" +msgstr "Diferenciar De" + +#: templates/history/header.inc:27 +msgid "Diff To" +msgstr "Diferenciar Para" + +#: diff.php:56 templates/diff/diff.inc:2 +#, php-format +msgid "Diff for %s between %s and %s" +msgstr "Diferenciar para %s entre %s e %s" + +#: templates/pagelist/summary.inc:3 +#, php-format +msgid "Display %s" +msgstr "Exibir %s" + +#: templates/history/summary.inc:2 templates/pagelist/summary.inc:6 +#, php-format +msgid "Display Version %s" +msgstr "Exibir Versão %s" + +#: templates/display/AttachedFiles.html:13 +msgid "Downloads" +msgstr "Downloads" + +#: preview.php:24 templates/display/standard.inc:24 +#, php-format +msgid "Edit %s" +msgstr "Editar %s" + +#: templates/history/header.inc:18 +msgid "Edit Version" +msgstr "Editar Versão" + +#: templates/history/summary.inc:16 +#, php-format +msgid "Edit Version %s" +msgstr "Editar Versão %s" + +#: templates/edit/standard.inc:21 lib/Page/EditPage.php:93 +msgid "EditPage" +msgstr "EditarPágina" + +#: templates/display/AttachedFiles.html:67 +msgid "Enter a name for this file (if blank, will use the file's current name)" +msgstr "" +"Digite um nome para este arquivo (se vazio, será usado o nome atual do " +"arquivo)" + +#: scripts/mail-filter.php:127 +#, php-format +msgid "Error creating new page: %s" +msgstr "Erro ao criar nova página: %s" + +#: lib/Page/MergeOrRename.php:202 +#, php-format +msgid "Error deleting %s: %s" +msgstr "Erro ao apagar %s: %s" + +#: scripts/mail-filter.php:42 +#, php-format +msgid "Error parsing MIME message: %s\n" +msgstr "Erro ao processar mensagem MIME: %s\n" + +#: lib/Page/MergeOrRename.php:217 +#, php-format +msgid "Error renaming \"%s\": %s" +msgstr "Erro ao renomear \"%s\": %s" + +#: lib/Page/MergeOrRename.php:247 +#, php-format +msgid "Error retrieving %s: %s" +msgstr "Erro ao retornar %s: %s" + +#: lib/Page/AttachedFiles.php:111 lib/Page/AttachedFiles.php:253 +#, php-format +msgid "Error retrieving attachments: %s" +msgstr "Erro ao retornar anexos: %s" + +#: lib/Page/AddPage.php:68 +#, php-format +msgid "Error retrieving templates: %s" +msgstr "Erro ao retornar modelos: %s" + +#: lib/Page/MergeOrRename.php:194 lib/Page/MergeOrRename.php:274 +#, php-format +msgid "Error updating %s: %s" +msgstr "Erro ao atualizar %s: %s" + +#: lib/Page/Search.php:164 +msgid "Exact Match" +msgstr "Correspondência Exata" + +#: lib/Page/MergeOrRename.php:164 +#, php-format +msgid "Failed to retrieve \"%s\": %s" +msgstr "Falha ao retornar \"%s\": %s" + +#: lib/Page.php:274 +msgid "Guest" +msgstr "Convidado" + +#: templates/display/standard.inc:85 +msgid "Hi_story" +msgstr "Hi_stórico" + +#: templates/display/standard.inc:84 +#, php-format +msgid "History of %s" +msgstr "Histórico de %s" + +#: lib/Page/StandardPage/StdHistoryPage.php:46 +msgid "History page not found" +msgstr "Página de histórico não encontrada" + +#: history.php:30 templates/history/header.inc:7 +#, php-format +msgid "History: %s" +msgstr "Histórico: %s" + +#: lib/Wicked.php:130 +msgid "HowTo_UseWiki" +msgstr "Como_UsarWiki" + +#: templates/display/MergeOrRename.html:26 +msgid "If a page with the new name already exists, then" +msgstr "Se uma página com o novo nome já existir, então" + +#: history.php:18 display.php:18 +msgid "Internal error viewing requested page" +msgstr "Erro interno ao exibir a página requisitada" + +#: diff.php:39 +#, php-format +msgid "Internal error viewing requested page: %s" +msgstr "Erro interno ao exibir a página requisitada: %s" + +#: lib/api.php:224 +msgid "Invalid page requested." +msgstr "Página requisitada inválida." + +#: templates/display/AttachedFiles.html:133 +msgid "Is this a minor update?" +msgstr "Esta é uma pequena atualização?" + +#: templates/display/standard.inc:72 +msgid "L_ikePages" +msgstr "PáginasParec_idas" + +#: templates/display/title.inc:6 templates/edit/standard.inc:20 +#, php-format +msgid "Last Modified %s by %s" +msgstr "Modificado em %s por %s" + +#: lib/Page/LeastPopular.php:93 +msgid "LeastPopular" +msgstr "MenosPopular" + +#: templates/display/standard.inc:72 +msgid "LikePages" +msgstr "PáginasParecidas" + +#: lib/Page/LikePages.php:82 +#, php-format +msgid "LikePages: %s" +msgstr "PáginasParecidas: %s" + +#: templates/display/standard.inc:40 +#, php-format +msgid "Lock %s" +msgstr "Proteger %s" + +#: templates/display/title.inc:34 templates/edit/standard.inc:21 +#: lib/Page/DeletePage.php:97 lib/Page/RevertPage.php:81 +msgid "Locked" +msgstr "Protegida" + +#: scripts/wicked.php:104 +#, php-format +msgid "Logged in successfully as \"%s\"." +msgstr "Sucesso ao entrar como \"%s\"." + +#: scripts/wicked.php:100 +msgid "Login is incorrect." +msgstr "Login está errado." + +#: scripts/wicked.php:158 +msgid "" +"Mandatory arguments to long options are mandatory for short options too." +msgstr "" +"Argumentos essenciais para opções longas são essenciais para opções pequenas " +"também." + +#: templates/display/standard.inc:60 +msgid "MergeOrRename" +msgstr "CombinarOuRenomear" + +#: lib/Page/MergeOrRename.php:125 +#, php-format +msgid "MergeOrRename: %s" +msgstr "CombinarOuRenomear: %s" + +#: lib/Page/MergeOrRename.php:207 +#, php-format +msgid "Merged \"%s\" into \"%s\"." +msgstr "\"%s\" combinada em \"%s\"." + +#: lib/Page/MergeOrRename.php:210 +#, php-format +msgid "Merged \"%s\" into \"%s\". New page: %s\n" +msgstr "\"%s\" combinada em \"%s\". Nova página: %s\n" + +#: lib/Page/MergeOrRename.php:191 +#, php-format +msgid "Merged from %s" +msgstr "Combinada de %s" + +#: templates/edit/standard.inc:30 +msgid "Minor Change" +msgstr "Pequena Alteração" + +#: lib/Page/MostPopular.php:93 +msgid "MostPopular" +msgstr "MaisPopular" + +#: lib/Block/page.php:41 +msgid "Name of wiki page to display" +msgstr "Nome da página wiki para exibir" + +#: lib/Page.php:263 +msgid "Never" +msgstr "Nunca" + +#: lib/Page/AttachedFiles.php:303 +#, php-format +msgid "New attachment \"%s\" to page \"%s\"." +msgstr "Novo anexo \"%s\" para a página \"%s\"." + +#: templates/display/MergeOrRename.html:15 +msgid "New name" +msgstr "Novo nome" + +#: lib/Page/MergeOrRename.php:151 +msgid "New name is the same as old name." +msgstr "Novo nome é o mesmo que o anterior." + +#: lib/Page/NewPage.php:112 +msgid "NewPage" +msgstr "NovaPágina" + +#: templates/edit/new.inc:20 +#, php-format +msgid "NewPage: %s" +msgstr "NovaPágina: %s" + +#: lib/api.php:159 lib/Page/EditPage.php:124 +msgid "No changes made" +msgstr "Nenhuma mudança feita" + +#: lib/Driver.php:124 +msgid "Not implemented." +msgstr "Não Implementado." + +#: templates/pagelist/header.inc:5 templates/edit/create.inc:17 +#: lib/Page/Search.php:155 +msgid "Page" +msgstr "Página" + +#: lib/Page/MergeOrRename.php:179 +#, php-format +msgid "Page \"%s\" already exists." +msgstr "Página \"%s\" já existe." + +#: lib/Page/NewPage.php:138 +msgid "Page Created" +msgstr "Página Criada" + +#: lib/Page/EditPage.php:131 +msgid "Page Saved" +msgstr "Página Gravada" + +#: templates/edit/create.inc:35 +msgid "Page Template:" +msgstr "Modelo de Página:" + +#: lib/Page/Search.php:178 +msgid "Page Text Matches" +msgstr "Correspondências de Textos de Página" + +#: lib/Page/Search.php:171 +msgid "Page Title Matches" +msgstr "Correspondências de Títulos de Página" + +#: templates/pagelist/header.inc:10 +msgid "Page Views" +msgstr "Exibições da Página" + +#: display.php:32 +#, php-format +msgid "Page failed to lock: %s" +msgstr "Falha ao proteger página: %s" + +#: display.php:47 +#, php-format +msgid "Page failed to unlock: %s" +msgstr "Falha ao desproteger página: %s" + +#: display.php:35 +msgid "Page locked" +msgstr "Página protegida" + +#: lib/Driver/sql.php:587 lib/Page/AddPage.php:53 lib/Page/NewPage.php:72 +msgid "Page name must not be empty" +msgstr "Nome da página não pode ser vazio" + +#: display.php:50 +msgid "Page unlocked" +msgstr "Página desprotegida" + +#: lib/api.php:73 lib/api.php:76 +msgid "Pages" +msgstr "Páginas" + +#: lib/Page/NewPage.php:129 +msgid "Pages cannot be empty." +msgstr "Páginas não podem ser vazias." + +#: templates/display/standard.inc:100 +msgid "Permissio_ns" +msgstr "Permissõ_es" + +#: lib/api.php:220 +msgid "Permission denied." +msgstr "Permissão negada." + +#: templates/edit/new.inc:25 templates/edit/standard.inc:26 +msgid "Preview" +msgstr "Pré-visualização" + +#: lib/Page/EditPage.php:112 +msgid "Random string did not match." +msgstr "Frase aleatória não correspondeu." + +#: lib/Page/RecentChanges.php:113 +msgid "RecentChanges" +msgstr "AlteraçõesRecentes" + +#: lib/Page/AttachedFiles.php:67 +#, php-format +msgid "Referrer \"%s\" does not exist." +msgstr "Referenciador \"%s\" não existe." + +#: lib/Page/AttachedFiles.php:129 +#, php-format +msgid "Reload \"%s\"" +msgstr "Recarregar \"%s\"" + +#: templates/history/header.inc:8 +msgid "Reload History" +msgstr "Recarregar Histórico" + +#: templates/display/title.inc:32 templates/display/title.inc:33 +msgid "Reload Page" +msgstr "Recarregar Página" + +#: lib/Page/MergeOrRename.php:222 +#, php-format +msgid "Renamed \"%s\" to \"%s\"." +msgstr "Renomeada \"%s\" para \"%s\"." + +#: lib/Page/MergeOrRename.php:225 +#, php-format +msgid "Renamed \"%s\" to \"%s\". New page: %s\n" +msgstr "\"%s\" renomeada para \"%s\". Nova página: %s\n" + +#: lib/Driver/sql.php:676 +#, php-format +msgid "Renamed page from %s" +msgstr "Página renomeada de %s" + +#: templates/history/header.inc:20 +msgid "Restore Version" +msgstr "Restaurar Versão" + +#: lib/Page/RevertPage.php:87 +msgid "Revert" +msgstr "Reverter" + +#: templates/history/summary.inc:26 +#, php-format +msgid "Revert to version %s" +msgstr "Reverter para versão %s" + +#: lib/Page/RevertPage.php:81 lib/Page/RevertPage.php:104 +msgid "RevertPage" +msgstr "ReverterPágina" + +#: lib/Page/RevertPage.php:127 +#, php-format +msgid "Reverted to version %s of \"%s\"." +msgstr "Revertida para versão %s de \"%s\"." + +#: lib/Driver/sql.php:591 +msgid "Robots are not allowed to create pages" +msgstr "Robôs não podem criar páginas" + +#: templates/edit/new.inc:24 templates/edit/standard.inc:25 +msgid "Save" +msgstr "Gravar" + +#: lib/Page/EditPage.php:128 +#, php-format +msgid "Save Failed: %s" +msgstr "Gravação Falhou: %s" + +#: templates/menu.inc:19 lib/Page/Search.php:203 +msgid "Search" +msgstr "Pesquisar" + +#: templates/pagelist/search.inc:1 +msgid "Search Results" +msgstr "Resultados da Pesquisa" + +#: templates/display/AttachedFiles.html:58 +#: templates/display/AttachedFiles.html:110 +msgid "Select file to attach:" +msgstr "Selecione o arquivo para anexar:" + +#: templates/display/AttachedFiles.html:119 +msgid "Select the file to update" +msgstr "Selecione o arquivo para atualizar" + +#: templates/display/standard.inc:99 +#, php-format +msgid "Set permissions for %s" +msgstr "Ajustar permissões para %s" + +#: templates/display/title.inc:16 lib/Page/RecentChanges.php:56 +#, php-format +msgid "Show changes for %s" +msgstr "Exibir alterações para %s" + +#: lib/Page/RecentChanges.php:63 +#, php-format +msgid "Show version %s" +msgstr "Exibir versão %s" + +#: templates/edit/standard.inc:41 +msgid "Spam Protection - Enter the letters below:" +msgstr "Proteção contra Spam - Digite as letras abaixo:" + +#: templates/display/MergeOrRename.html:33 +msgid "Stop and don't do anything" +msgstr "Parar e não fazer nada" + +#: templates/display/MergeOrRename.html:61 +msgid "Submit" +msgstr "Enviar" + +#: lib/Page/DeletePage.php:136 +#, php-format +msgid "Successfully deleted \"%s\"." +msgstr "\"%s\" excluido com sucesso." + +#: lib/Page/AttachedFiles.php:207 +#, php-format +msgid "Successfully deleted version %s of \"%s\" from \"%s\"" +msgstr "Versão %s de \"%s\" de \"%s\" apagada com sucesso." + +#: lib/Page.php:485 +msgid "Table of Contents" +msgstr "Índice" + +#: lib/Page/AttachedFiles.php:280 +#, php-format +msgid "There is already an attachment named \"%s\"." +msgstr "Já existe um anexo chamado \"%s\"." + +#: lib/Page/MergeOrRename.php:149 lib/Page/MergeOrRename.php:155 +msgid "This is a required field." +msgstr "Este é um campo necessário." + +#: display.php:62 +msgid "This page does not have a history" +msgstr "Esta página não possui um histórico" + +#: lib/Page/MergeOrRename.php:100 +#, php-format +msgid "This page is referenced from %d other page(s)." +msgstr "Esta página é referenciada a partir de %d outra(s) página(s)." + +#: templates/display/standard.inc:35 +msgid "Un_lock" +msgstr "_Desproteger" + +#: lib/Page/StandardPage.php:79 +#, php-format +msgid "Unable to create %s" +msgstr "Impossível criar %s" + +#: lib/Page/StandardPage.php:87 +msgid "Unable to create WikiHome. The wiki is not configured." +msgstr "Impossível criar WikiHome. O wiki não está configurado." + +#: templates/display/standard.inc:34 +#, php-format +msgid "Unlock %s" +msgstr "Desproteger %s" + +#: lib/Driver.php:78 lib/Driver.php:92 lib/Driver.php:104 lib/Driver.php:109 +#: lib/Driver.php:129 lib/Driver.php:134 lib/Driver.php:192 lib/Driver.php:197 +#: lib/Driver.php:202 lib/Driver.php:216 lib/Driver.php:230 lib/Driver.php:244 +#: lib/Driver.php:249 lib/Driver.php:254 lib/Driver.php:272 lib/Driver.php:392 +#: lib/Driver.php:418 lib/Driver.php:434 lib/Page.php:255 lib/Page.php:289 +#: lib/Page.php:294 lib/Page.php:393 lib/Page.php:403 lib/Page.php:413 +#: lib/Page.php:423 lib/Page.php:520 lib/Page.php:531 lib/Page.php:536 +#: lib/Page.php:541 lib/Page.php:546 lib/Page.php:586 +msgid "Unsupported" +msgstr "Não suportado" + +#: templates/display/AttachedFiles.html:154 +msgid "Update File" +msgstr "Atualizar Arquivo" + +#: templates/display/AttachedFiles.html:104 +msgid "Update an Attachment" +msgstr "Atualizar um Anexo" + +#: lib/Page/AttachedFiles.php:300 +#, php-format +msgid "Updated attachment \"%s\" on page \"%s\"." +msgstr "Atualizado anexo \"%s\" na página \"%s\"." + +#: scripts/wicked.php:156 +#, php-format +msgid "Usage: %s [OPTIONS]..." +msgstr "Usage: %s [OPTIONS]..." + +#: templates/history/header.inc:13 templates/pagelist/header.inc:6 +#: templates/edit/create.inc:18 lib/Page/Search.php:156 +#: templates/display/AttachedFiles.html:9 +msgid "Version" +msgstr "Versão" + +#: lib/Page/AttachedFiles.php:309 +msgid "View page: " +msgstr "Exibir página: " + +#: lib/api.php:181 +msgid "Wiki Templates" +msgstr "Modelos de Wiki" + +#: lib/Block/page.php:3 +msgid "Wiki page" +msgstr "Página Wiki" + +#: display.php:26 +msgid "You are not allowed to lock this page" +msgstr "Você não pode proteger esta página" + +#: display.php:41 +msgid "You are not allowed to unlock this page" +msgstr "Você não pode desproteger esta página" + +#: lib/Page/AttachedFiles.php:196 +msgid "You do not have permission to delete attachments from this page." +msgstr "Você não tem permissão para apagar anexos dessa página." + +#: lib/Page/AttachedFiles.php:237 lib/Page/MergeOrRename.php:169 +#: lib/Page/MergeOrRename.php:184 +#, php-format +msgid "You do not have permission to edit \"%s\"" +msgstr "Você não tem permissão para editar \"%s\"" + +#: lib/Page/NewPage.php:125 +#, php-format +msgid "You don't have permission to create \"%s\"." +msgstr "Você não tem permissão para criar \"%s\"." + +#: lib/Page/DeletePage.php:150 +#, php-format +msgid "You don't have permission to delete \"%s\"." +msgstr "Você não tem permissão para apagar \"%s\"." + +#: lib/api.php:141 lib/Page/EditPage.php:107 lib/Page/RevertPage.php:133 +#, php-format +msgid "You don't have permission to edit \"%s\"." +msgstr "Você não tem permissão para editar \"%s\"." + +#: display.php:74 display.php:77 +msgid "You don't have permission to view this page." +msgstr "Você não tem permissão para ver esta página." + +#: lib/Page/AttachedFiles.php:245 +msgid "You must enter a change description to attach this file." +msgstr "Você deve digitar uma descrição de alteração para anexar esse arquivo." + +#: lib/api.php:145 lib/Page/EditPage.php:118 +msgid "You must provide a change log." +msgstr "Você deve fornecer um log de alteração." + +#: lib/Wicked.php:130 +msgid "_AllPages" +msgstr "TodasA_sPáginas" + +#: templates/display/standard.inc:67 +msgid "_BackLinks" +msgstr "_Referenciadores" + +#: templates/display/standard.inc:53 +msgid "_Delete" +msgstr "E_xcluir" + +#: templates/display/standard.inc:25 +msgid "_EditPage" +msgstr "_EditarPágina" + +#: templates/display/standard.inc:41 +msgid "_Lock" +msgstr "_Proteger" + +#: templates/display/standard.inc:61 +msgid "_MergeOrRename" +msgstr "Co_mbinarOuRenomear" + +#: lib/Wicked.php:130 +msgid "_RecentChanges" +msgstr "_AlteraçõesRecentes" + +#: lib/Wicked.php:130 +msgid "_WikiHome" +msgstr "_WikiHome" + +#: lib/Page/AttachedFiles.php:217 +msgid "attachment" +msgstr "anexo" + +#: scripts/wicked.php:123 +#, php-format +msgid "page \"%s\" doesn't exist." +msgstr "página \"%s\" não existe." diff --git a/wicked/po/sl_SI.po b/wicked/po/sl_SI.po new file mode 100644 index 000000000..0623cf648 --- /dev/null +++ b/wicked/po/sl_SI.po @@ -0,0 +1,921 @@ +# translation of wicked.po to Slovene +# Copyright 2007-2009 The Horde Project +# This file is distributed under the same license as the Horde package. +# +# Marko Milost , 2007. +msgid "" +msgstr "" +"Project-Id-Version: wicked\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2007-02-03 18:57+0100\n" +"PO-Revision-Date: 2007-02-07 11:51+0100\n" +"Last-Translator: Marko Milost \n" +"Language-Team: Slovene \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: templates/edit/create.inc:13 +#, php-format +msgid "" +"%s does not exist, but maybe you were looking for one of the following pages?" +msgstr "%s ne obstaja, si morda iskal eno od spodaj nanizanih strani?" + +#: templates/edit/create.inc:30 +#, php-format +msgid "" +"%s does not exist. Click on \"Create\" below if you want to create this page " +"now and start editing." +msgstr "" +"%s ne obstaja. Klikni na \"Ustvari\", če želiÅ¡ ustvariti novo stran in " +"začeti z urejanjem le-te." + +#: templates/edit/create.inc:37 +msgid "(None)" +msgstr "(Nič)" + +#: scripts/wicked.php:161 +msgid "" +"-d, --debug Run in debug mode (displays extra information)" +msgstr "" + +#: scripts/wicked.php:163 +msgid "" +"-g, --get[=pagetitle] Return all pages (unless pagetitle specified)" +msgstr "" + +#: scripts/wicked.php:160 +msgid "-h, --help Show this help" +msgstr "" + +#: scripts/wicked.php:162 +msgid "-l, --list-pages List pages" +msgstr "" + +#: scripts/wicked.php:164 +msgid "-o, --out[=type] Output type for results (default:xml)" +msgstr "" + +#: scripts/wicked.php:166 +msgid "-p, --password[=password] Horde login password" +msgstr "" + +#: scripts/wicked.php:165 +msgid "-u, --username[=username] Horde login username" +msgstr "" + +#: templates/display/MergeOrRename.html:31 +msgid "Add the text from this page" +msgstr "Dodaj besedilo iz te strani" + +#: lib/Page/AddPage.php:93 +#, php-format +msgid "AddPage: %s" +msgstr "Dodaj stran: %s" + +#: lib/Page/AllPages.php:81 +msgid "AllPages" +msgstr "VseStrani" + +#: lib/Page/DeletePage.php:77 +msgid "" +"Are you sure you want to delete this page? All versions will be permanently " +"removed." +msgstr "" +"Si prepričan, da želiÅ¡ odstraniti to stran? Vse verzije bodo dokončno " +"pobrisane." + +#: lib/Page/DeletePage.php:79 +#, php-format +msgid "Are you sure you want to delete version %s of this page?" +msgstr "Si prepričan, da želiÅ¡ pobrisati verzijo %s te strani?" + +#: lib/Page/RevertPage.php:65 +#, php-format +msgid "Are you sure you want to revert to version %s of this page?" +msgstr "Si prepričan, da želiÅ¡ nazadovati to stran na verzijo %s?" + +#: templates/display/AttachedFiles.html:88 +msgid "Attach File" +msgstr "Dodaj priponko" + +#: templates/display/AttachedFiles.html:52 +msgid "Attach a New File" +msgstr "Dodaj novo datoteko" + +#: templates/display/standard.inc:68 +msgid "AttachedFiles" +msgstr "Priponke" + +#: lib/Page/AttachedFiles.php:158 +#, php-format +msgid "AttachedFiles: %s" +msgstr "Priponke: %s" + +#: templates/display/standard.inc:69 +msgid "Attached_Files" +msgstr "Priponke" + +#: templates/display/AttachedFiles.html:7 +msgid "Attachment Name" +msgstr "Ime priponke" + +#: templates/display/standard.inc:119 +msgid "Attachments" +msgstr "Priponke" + +#: lib/Page/AttachedFiles.php:203 +msgid "Attachments with spaces can't be embedded into a page." +msgstr "V to stran ne morete dodati priponk s presledki." + +#: templates/history/header.inc:23 templates/pagelist/header.inc:5 +#: templates/pagelist/pagesearch.inc:16 templates/pagelist/titlesearch.inc:16 +#: templates/edit/create.inc:19 templates/display/AttachedFiles.html:10 +msgid "Author" +msgstr "Avtor" + +#: templates/display/standard.inc:106 +msgid "Ba_ck to" +msgstr "Nazaj na" + +#: templates/display/standard.inc:106 +msgid "Back to" +msgstr "Nazaj na" + +#: templates/display/standard.inc:60 +msgid "BackLinks" +msgstr "PovezaveNazaj" + +#: lib/Page/BackLinks.php:74 +#, php-format +msgid "BackLinks: %s" +msgstr "PovezaveNazaj: %s" + +#: lib/Page/AttachedFiles.php:208 +msgid "Can't read uploaded file." +msgstr "Ne morem prebrati naložene datoteke." + +#: lib/Page/RevertPage.php:113 +#, php-format +msgid "Can't revert to an unknown version." +msgstr "Ne morem preklopiti na neznano verzijo." + +#: lib/Page/AttachedFiles.php:243 +#, php-format +msgid "Can't update \"%s\": no such attachment." +msgstr "Ne morem osvežiti \"%s\": ni priponke." + +#: templates/edit/create.inc:47 templates/edit/standard.inc:33 +#: lib/Page/DeletePage.php:98 lib/Page/RevertPage.php:82 +#: lib/Page/MergeOrRename.php:135 templates/display/MergeOrRename.html:62 +msgid "Cancel" +msgstr "Prekliči" + +#: templates/history/header.inc:29 templates/display/AttachedFiles.html:12 +msgid "Change Log" +msgstr "Dnevnik sprememb" + +#: templates/edit/standard.inc:35 +msgid "Change log" +msgstr "Dnevnik sprememb" + +#: templates/display/AttachedFiles.html:80 +#: templates/display/AttachedFiles.html:146 +msgid "Change log entry" +msgstr "Vpis v dnevniki sprememb" + +#: config/prefs.php.dist:13 +msgid "Change menu preferences." +msgstr "Spremeni nastavitve menija" + +#: templates/display/MergeOrRename.html:40 +msgid "Change references to this page from:" +msgstr "Spremeni referenco na to stran iz:" + +#: lib/Page/MergeOrRename.php:248 +#, php-format +msgid "Changed references from %s to %s" +msgstr "Spremenjena referenca iz %s na %s" + +#: templates/edit/standard.inc:34 +msgid "Changelog is required" +msgstr "Zahtevan je dnevnik sprememb" + +#: templates/edit/create.inc:26 +msgid "" +"Click on \"Create\" below if you want to create this page now and start " +"editing." +msgstr "" +"Če želiÅ¡ ustvariti to stran in začeti z urejanjem klikni na \"Ustvari\"." + +#: scripts/wicked.php:42 +msgid "Couldn't read command-line options." +msgstr "" + +#: templates/edit/create.inc:46 +msgid "Create" +msgstr "Ustvari" + +#: lib/Page/NewPage.php:124 +#, php-format +msgid "Create Failed: %s" +msgstr "Napaka pri ustvarjanju: %s" + +#: templates/history/header.inc:24 +msgid "Created" +msgstr "Ustvarjeno" + +#: templates/pagelist/header.inc:6 templates/pagelist/pagesearch.inc:17 +#: templates/pagelist/titlesearch.inc:17 templates/edit/create.inc:20 +msgid "Creation Date" +msgstr "Datum stvaritve" + +#: templates/display/AttachedFiles.html:11 +msgid "Date" +msgstr "Datum" + +#: templates/display/standard.inc:89 +msgid "Debug" +msgstr "Debug" + +#: templates/display/standard.inc:88 +#, php-format +msgid "Debug %s" +msgstr "Debug %s" + +#: lib/Page/DeletePage.php:97 +msgid "Delete" +msgstr "BriÅ¡i" + +#: templates/display/standard.inc:47 +#, php-format +msgid "Delete %s" +msgstr "ZbriÅ¡i %s" + +#: templates/history/header.inc:16 +msgid "Delete Version" +msgstr "ZbriÅ¡i verzijo" + +#: templates/history/summary.inc:6 +#, php-format +msgid "Delete Version %s" +msgstr "ZbriÅ¡i verzijo %s" + +#: lib/Page/DeletePage.php:91 lib/Page/DeletePage.php:114 +msgid "DeletePage" +msgstr "PobriÅ¡iStran" + +#: lib/Page/DeletePage.php:137 +#, php-format +msgid "Deleted version %s of \"%s\"." +msgstr "PobriÅ¡i verzijo %s od \"%s\"." + +#: templates/history/header.inc:26 +msgid "Diff From" +msgstr "Razlika od" + +#: templates/history/header.inc:27 +msgid "Diff To" +msgstr "Razlika do" + +#: diff.php:56 templates/diff/diff.inc:2 +#, php-format +msgid "Diff for %s between %s and %s" +msgstr "Razlika za %s med %s in %s" + +#: templates/pagelist/summary.inc:3 +#, php-format +msgid "Display %s" +msgstr "Prikaži %s" + +#: config/prefs.php.dist:11 +msgid "Display Options" +msgstr "Možnosti prikaza" + +#: templates/history/summary.inc:2 templates/pagelist/summary.inc:6 +#, php-format +msgid "Display Version %s" +msgstr "Prikaz verzije %s" + +#: templates/display/AttachedFiles.html:13 +msgid "Downloads" +msgstr "Downloads" + +#: preview.php:24 templates/display/standard.inc:23 +#, php-format +msgid "Edit %s" +msgstr "Uredi %s" + +#: templates/history/header.inc:18 +msgid "Edit Version" +msgstr "Uredi verzijo" + +#: templates/history/summary.inc:16 +#, php-format +msgid "Edit Version %s" +msgstr "Uredi verzijo %s" + +#: templates/edit/standard.inc:22 lib/Page/EditPage.php:88 +msgid "EditPage" +msgstr "UrediStran" + +#: templates/display/AttachedFiles.html:67 +msgid "Enter a name for this file (if blank, will use the file's current name)" +msgstr "VpiÅ¡i ime za to datoteko (če pustiÅ¡ prazno bo uporabljen naziv)" + +#: scripts/mail-filter.php:127 +#, php-format +msgid "Error creating new page: %s" +msgstr "Napaka pri stvaritvi strani: %s" + +#: lib/Page/MergeOrRename.php:197 +#, php-format +msgid "Error deleting %s: %s" +msgstr "Napaka pri brisanju %s: %s" + +#: scripts/mail-filter.php:42 +#, php-format +msgid "Error parsing MIME message: %s\n" +msgstr "Napaka pri prebiranju MIME sporočila: %s\n" + +#: lib/Page/MergeOrRename.php:212 +#, php-format +msgid "Error renaming \"%s\": %s" +msgstr "Napaka pri preimenovanju \"%s\": %s" + +#: lib/Page/MergeOrRename.php:242 +#, php-format +msgid "Error retrieving %s: %s" +msgstr "Napaka pri dostopanju %s: %s" + +#: lib/Page/AttachedFiles.php:101 lib/Page/AttachedFiles.php:226 +#, php-format +msgid "Error retrieving attachments: %s" +msgstr "Napaka pri dostopanju do priponke: %s" + +#: lib/Page/AddPage.php:53 +#, php-format +msgid "Error retrieving templates: %s" +msgstr "Napaka pri dostopanju do Å¡ablon: %s" + +#: lib/Page/MergeOrRename.php:189 lib/Page/MergeOrRename.php:269 +#, php-format +msgid "Error updating %s: %s" +msgstr "Napaka pri osveževanju %s: %s" + +#: lib/Page/MergeOrRename.php:159 +#, php-format +msgid "Failed to retrieve \"%s\": %s" +msgstr "Ni uspelo dobiti \"%s\": %s" + +#: templates/pagelist/titlesearch.inc:8 +msgid "Go" +msgstr "Pojdi" + +#: lib/Page.php:278 +msgid "Guest" +msgstr "Gost" + +#: templates/display/standard.inc:75 +msgid "Hi_story" +msgstr "Zgodovina" + +#: templates/display/standard.inc:74 +#, php-format +msgid "History of %s" +msgstr "Zgodovina dokumenta %s" + +#: history.php:28 templates/history/header.inc:7 +#, php-format +msgid "History: %s" +msgstr "Zgodovina: %s" + +#: lib/Wicked.php:131 +msgid "HowTo_UseWiki" +msgstr "KakoUporabimWiki" + +#: templates/display/MergeOrRename.html:26 +msgid "If a page with the new name already exists, then" +msgstr "Če stran s tem imenom že obstaja, potem" + +#: templates/display/standard.inc:82 +msgid "Info" +msgstr "Informacije" + +#: templates/display/standard.inc:81 +#, php-format +msgid "Info about %s" +msgstr "Info o %s" + +#: history.php:16 display.php:24 +msgid "Internal error viewing requested page" +msgstr "Interna napaka pri pregledovanju zahtevane strani" + +#: diff.php:39 +#, php-format +msgid "Internal error viewing requested page: %s" +msgstr "Interna napaka pri pregledovanju zahtevane strani: %s" + +#: templates/display/AttachedFiles.html:133 +msgid "Is this a minor update?" +msgstr "Je to manjÅ¡a nadgradnja?" + +#: templates/display/standard.inc:64 +msgid "L_ikePages" +msgstr "PodobneStrani" + +#: templates/display/title.inc:6 templates/edit/standard.inc:25 +#, php-format +msgid "Last Modified %s by %s" +msgstr "Zadje spremenjeno %s s strani %s" + +#: lib/Page/LeastPopular.php:86 +msgid "LeastPopular" +msgstr "NajmanjPopularen" + +#: templates/display/standard.inc:64 +msgid "LikePages" +msgstr "PodobneStrani" + +#: lib/Page/LikePages.php:76 +#, php-format +msgid "LikePages: %s" +msgstr "PodobneStrani: %s" + +#: templates/display/standard.inc:35 +#, php-format +msgid "Lock %s" +msgstr "Zakleni %s" + +#: templates/display/title.inc:34 templates/edit/standard.inc:22 +#: lib/Page/DeletePage.php:91 lib/Page/RevertPage.php:75 +msgid "Locked" +msgstr "Zaklenjeno" + +#: scripts/wicked.php:104 +#, php-format +msgid "Logged in successfully as \"%s\"." +msgstr "UspeÅ¡no prijavljen kot \"%s\"." + +#: scripts/wicked.php:100 +msgid "Login is incorrect." +msgstr "Napačna prijava." + +#: scripts/wicked.php:158 +msgid "" +"Mandatory arguments to long options are mandatory for short options too." +msgstr "Obvezna polja za dolge opcije so obvezna tudi za kratke opcije." + +#: config/prefs.php.dist:12 +msgid "Menu Preferences" +msgstr "Nastavitve menija" + +#: templates/display/standard.inc:54 +msgid "MergeOrRename" +msgstr "ZdružiAliPreimenuj" + +#: lib/Page/MergeOrRename.php:120 +#, php-format +msgid "MergeOrRename: %s" +msgstr "ZdružiAliPreimenuj: %s" + +#: lib/Page/MergeOrRename.php:202 +#, php-format +msgid "Merged \"%s\" into \"%s\"." +msgstr "Združen \"%s\" v \"%s\"." + +#: lib/Page/MergeOrRename.php:205 +#, php-format +msgid "Merged \"%s\" into \"%s\". New page: %s\n" +msgstr "Združen \"%s\" v \"%s\". Nova stran: %s\n" + +#: lib/Page/MergeOrRename.php:186 +#, php-format +msgid "Merged from %s" +msgstr "Združeno iz %s." + +#: templates/edit/standard.inc:36 +msgid "Minor Change" +msgstr "ManjÅ¡a sprememba" + +#: lib/Page/MostPopular.php:86 +msgid "MostPopular" +msgstr "NajboljPopularno" + +#: lib/Block/page.php:41 +msgid "Name of wiki page to display" +msgstr "Ime wiki strani za prikaz" + +#: lib/Page.php:267 +msgid "Never" +msgstr "Nikoli" + +#: lib/Page/AttachedFiles.php:269 +#, php-format +msgid "New attachment \"%s\" to page \"%s\"." +msgstr "Nova priponka \"%s\" na stran \"%s\"." + +#: templates/display/MergeOrRename.html:15 +msgid "New name" +msgstr "Novo ime" + +#: lib/Page/MergeOrRename.php:146 +msgid "New name is the same as old name." +msgstr "Novo ime je enako kot staro" + +#: lib/Page/NewPage.php:101 +msgid "NewPage" +msgstr "NovaStran" + +#: templates/edit/new.inc:22 +#, php-format +msgid "NewPage: %s" +msgstr "NovaStran: %s" + +#: lib/Page/EditPage.php:119 +msgid "No changes made" +msgstr "Ni sprememb" + +#: lib/Driver.php:126 +msgid "Not implemented." +msgstr "Ni implementirano." + +#: templates/pagelist/header.inc:3 templates/pagelist/pagesearch.inc:14 +#: templates/pagelist/titlesearch.inc:14 templates/edit/create.inc:17 +msgid "Page" +msgstr "Stran" + +#: lib/Page/MergeOrRename.php:174 +#, php-format +msgid "Page \"%s\" already exists." +msgstr "Stran \"%s\" že obstaja." + +#: lib/Page/NewPage.php:127 +msgid "Page Created" +msgstr "Stran ustvarjena" + +#: templates/menu.inc:15 config/prefs.php.dist:22 +msgid "Page Lookup" +msgstr "Pogled strani" + +#: lib/Page/EditPage.php:126 +msgid "Page Saved" +msgstr "Stran shranjena" + +#: templates/edit/create.inc:35 +msgid "Page Template:" +msgstr "Å ablona strani:" + +#: templates/pagelist/header.inc:8 +msgid "Page Views" +msgstr "Pogledi strani" + +#: display.php:38 +#, php-format +msgid "Page failed to lock: %s" +msgstr "Stran ni bilo mogoče zakleniti: %s" + +#: display.php:53 +#, php-format +msgid "Page failed to unlock: %s" +msgstr "Strani ni bilo mogoče odkleniti: %s" + +#: display.php:41 +msgid "Page locked" +msgstr "Stran zaklenjena" + +#: display.php:56 +msgid "Page unlocked" +msgstr "Stran odklenjena" + +#: templates/menu.inc:9 lib/Page/PageSearch.php:130 config/prefs.php.dist:24 +msgid "PageSearch" +msgstr "IskanjeStrani" + +#: lib/api.php:30 lib/api.php:33 +msgid "Pages" +msgstr "Strani" + +#: lib/Page/NewPage.php:118 +msgid "Pages cannot be empty." +msgstr "Strani ne morejo biti prazne." + +#: templates/display/standard.inc:102 +msgid "Permissio_ns" +msgstr "Dovoljenja" + +#: templates/edit/new.inc:29 templates/edit/standard.inc:32 +msgid "Preview" +msgstr "Predpregled" + +#: lib/Page/EditPage.php:107 +msgid "Random string did not match." +msgstr "Naključni niz ni enakovreden" + +#: lib/Page/RecentChanges.php:108 +msgid "RecentChanges" +msgstr "ZadnjeSpremembe" + +#: lib/Page/AttachedFiles.php:58 +#, php-format +msgid "Referrer \"%s\" does not exist." +msgstr "Ne obstaja referrer za \"%s\"." + +#: lib/Page/AttachedFiles.php:118 +#, php-format +msgid "Reload \"%s\"" +msgstr "Osveži \"%s\"" + +#: templates/history/header.inc:8 +msgid "Reload History" +msgstr "Osveži zgodovino" + +#: templates/display/title.inc:32 templates/display/title.inc:33 +msgid "Reload Page" +msgstr "Osveži stran" + +#: lib/Page/MergeOrRename.php:217 +#, php-format +msgid "Renamed \"%s\" to \"%s\"." +msgstr "Preimenovan \"%s\" v \"%s\"." + +#: lib/Page/MergeOrRename.php:220 +#, php-format +msgid "Renamed \"%s\" to \"%s\". New page: %s\n" +msgstr "Preimenovan \"%s\" v \"%s\". Nova stran: %s\n" + +#: lib/Driver/sql.php:658 +#, php-format +msgid "Renamed page from %s" +msgstr "Preimenovana stran iz %s" + +#: templates/history/header.inc:20 +msgid "Restore Version" +msgstr "Povrni verzijo" + +#: lib/Page/RevertPage.php:81 +msgid "Revert" +msgstr "Povrni" + +#: templates/history/summary.inc:26 +#, php-format +msgid "Revert to version %s" +msgstr "Povrni na verzijo %s" + +#: lib/Page/RevertPage.php:75 lib/Page/RevertPage.php:98 +msgid "RevertPage" +msgstr "PovrniStran" + +#: lib/Page/RevertPage.php:121 +#, php-format +msgid "Reverted to version %s of \"%s\"." +msgstr "Povrnjeno na verzijo %s od \"%s\"." + +#: lib/Driver/sql.php:573 +msgid "Robots are not allowed to create pages." +msgstr "Roboti ne morejo ustvariti strani." + +#: templates/edit/new.inc:28 templates/edit/standard.inc:31 +msgid "Save" +msgstr "Shrani" + +#: lib/Page/EditPage.php:123 +#, php-format +msgid "Save Failed: %s" +msgstr "Shranjevanje \"%s\" ni uspelo." + +#: templates/pagelist/pagesearch.inc:8 lib/Block/TitleSearch.php:60 +msgid "Search" +msgstr "Najdi" + +#: templates/display/AttachedFiles.html:58 +#: templates/display/AttachedFiles.html:110 +msgid "Select file to attach:" +msgstr "Izberi datoteko za pripeti:" + +#: templates/display/AttachedFiles.html:119 +msgid "Select the file to update" +msgstr "Izberi datoteko za osvežiti" + +#: templates/display/standard.inc:101 +#, php-format +msgid "Set permissions for %s" +msgstr "Nastavi pravice dostopa za %s" + +#: templates/display/title.inc:16 lib/Page/RecentChanges.php:51 +#, php-format +msgid "Show changes for %s" +msgstr "Prikaži spremembe za %s" + +#: lib/Page/RecentChanges.php:58 +#, php-format +msgid "Show version %s" +msgstr "Prikaži verzijo %s" + +#: templates/edit/standard.inc:49 +msgid "Spam Protection - Enter the letters below:" +msgstr "Zaščita pred roboti - VpiÅ¡ite spodnje znake:" + +#: templates/display/MergeOrRename.html:33 +msgid "Stop and don't do anything" +msgstr "Ustavi se in ne počni ničesar" + +#: templates/display/MergeOrRename.html:61 +msgid "Submit" +msgstr "PoÅ¡lji" + +#: lib/Page/DeletePage.php:131 +#, php-format +msgid "Successfully deleted \"%s\"." +msgstr "UspeÅ¡no pobrisan \"%s\"." + +#: lib/Page/AttachedFiles.php:193 +#, php-format +msgid "Successfully deleted version %s of \"%s\" from \"%s\"" +msgstr "UspeÅ¡no pobrisana verzija %s od \"%s\" iz \"%s\"" + +#: lib/Page.php:516 +msgid "Table of Contents" +msgstr "Spisek vsebine" + +#: lib/Page/AttachedFiles.php:249 +#, php-format +msgid "There is already an attachment named \"%s\"." +msgstr "Že obstaja priponka z imenom \"%s\"." + +#: lib/Page/MergeOrRename.php:144 lib/Page/MergeOrRename.php:150 +msgid "This is a required field." +msgstr "To je zahtevano polje." + +#: display.php:68 +msgid "This page does not have a history" +msgstr "Ta stran nima zgodovine" + +#: lib/Page/MergeOrRename.php:95 +#, php-format +msgid "This page is referenced from %d other page(s)." +msgstr "Na to stran kaže %d drugih strani." + +#: templates/menu.inc:5 lib/Block/TitleSearch.php:3 +#: lib/Block/TitleSearch.php:25 lib/Page/TitleSearch.php:116 +#: config/prefs.php.dist:23 +msgid "TitleSearch" +msgstr "IskanjeNaslova" + +#: config/prefs.php.dist:25 +msgid "Type of search for the quick search box:" +msgstr "Tip iskanja v polju za hitro iskanje:" + +#: templates/display/standard.inc:32 +msgid "Un_lock" +msgstr "Odkleni" + +#: lib/Page/StandardPage.php:74 +#, php-format +msgid "Unable to create %s" +msgstr "Ni možno ustvariti %s" + +#: lib/Page/StandardPage.php:82 +msgid "Unable to create WikiHome. The wiki is not configured." +msgstr "Ni možno ustvariti WikiDom. Wiki ni nastavljen." + +#: templates/display/standard.inc:31 +#, php-format +msgid "Unlock %s" +msgstr "Odkleni %s" + +#: lib/Driver.php:80 lib/Driver.php:94 lib/Driver.php:106 lib/Driver.php:111 +#: lib/Driver.php:131 lib/Driver.php:136 lib/Driver.php:194 +#: lib/Driver.php:199 lib/Driver.php:204 lib/Driver.php:218 +#: lib/Driver.php:232 lib/Driver.php:246 lib/Driver.php:251 +#: lib/Driver.php:256 lib/Driver.php:274 lib/Driver.php:394 +#: lib/Driver.php:420 lib/Driver.php:436 lib/Page.php:259 lib/Page.php:293 +#: lib/Page.php:298 lib/Page.php:397 lib/Page.php:407 lib/Page.php:417 +#: lib/Page.php:427 lib/Page.php:437 lib/Page.php:448 lib/Page.php:557 +#: lib/Page.php:568 lib/Page.php:573 lib/Page.php:578 lib/Page.php:583 +#: lib/Page.php:623 +msgid "Unsupported" +msgstr "Ni podprto" + +#: templates/display/AttachedFiles.html:154 +msgid "Update File" +msgstr "Osveži datoteko" + +#: templates/display/AttachedFiles.html:104 +msgid "Update an Attachment" +msgstr "Osveži priponko" + +#: lib/Page/AttachedFiles.php:267 +#, php-format +msgid "Updated attachment \"%s\" on page \"%s\"." +msgstr "Osvežena priponka \"%s\" na strani \"%s\"." + +#: scripts/wicked.php:156 +#, php-format +msgid "Usage: %s [OPTIONS]..." +msgstr "Uporaba: %s [OPCIJE]..." + +#: templates/history/header.inc:13 templates/pagelist/header.inc:4 +#: templates/pagelist/pagesearch.inc:15 templates/pagelist/titlesearch.inc:15 +#: templates/edit/create.inc:18 templates/display/AttachedFiles.html:9 +msgid "Version" +msgstr "Verzija" + +#: lib/Page/AttachedFiles.php:274 +msgid "View page: " +msgstr "Poglej stran: " + +#: lib/Block/page.php:3 +msgid "Wiki page" +msgstr "Wiki stran" + +#: display.php:32 +msgid "You are not allowed to lock this page" +msgstr "NimaÅ¡ pravic za zaklep te strani" + +#: display.php:47 +msgid "You are not allowed to unlock this page" +msgstr "NimaÅ¡ pravic za odklep te strani" + +#: lib/Page/AttachedFiles.php:183 +msgid "You do not have permission to delete attachments from this page." +msgstr "NimaÅ¡ pravic za brisanje priponk s te strani." + +#: lib/Page/AttachedFiles.php:213 lib/Page/MergeOrRename.php:164 +#: lib/Page/MergeOrRename.php:179 +#, php-format +msgid "You do not have permission to edit \"%s\"" +msgstr "NimaÅ¡ pravice za urejanje \"%s\"" + +#: lib/Page/NewPage.php:114 +#, php-format +msgid "You don't have permission to create \"%s\"." +msgstr "NimaÅ¡ pravic za ustvariti \"%s\"." + +#: lib/Page/DeletePage.php:145 +#, php-format +msgid "You don't have permission to delete \"%s\"." +msgstr "NimaÅ¡ pravic za brisati \"%s\"." + +#: lib/Page/EditPage.php:102 lib/Page/RevertPage.php:127 +#, php-format +msgid "You don't have permission to edit \"%s\"." +msgstr "NimaÅ¡ pravic za urediti \"%s\"." + +#: display.php:80 display.php:83 +msgid "You don't have permission to view this page." +msgstr "NimaÅ¡ pravic za pregled te strani." + +#: lib/Page/AttachedFiles.php:219 +msgid "You must enter a change description to attach this file." +msgstr "MoraÅ¡ vnesti drugi opis, da lahko pripnemo to datoteko." + +#: lib/Page/EditPage.php:113 +msgid "You must provide a change log." +msgstr "MoraÅ¡ dostaviti dnevnik sprememb." + +#: lib/Wicked.php:132 +msgid "_AllPages" +msgstr "VseStrani" + +#: templates/display/standard.inc:60 +msgid "_BackLinks" +msgstr "PovezaveNazaj" + +#: templates/display/standard.inc:48 +msgid "_Delete" +msgstr "BriÅ¡i" + +#: templates/display/standard.inc:24 +msgid "_EditPage" +msgstr "UrediStran" + +#: templates/display/standard.inc:36 +msgid "_Lock" +msgstr "Zakleni" + +#: templates/display/standard.inc:55 +msgid "_MergeOrRename" +msgstr "ZdružiAliPreimenuj" + +#: lib/Wicked.php:132 +msgid "_PageSearch" +msgstr "IskanjeStrani" + +#: lib/Wicked.php:131 +msgid "_RecentChanges" +msgstr "ZadnjeSpremembe" + +#: lib/Wicked.php:132 +msgid "_TitleSearch" +msgstr "IskanjeNaslovov" + +#: lib/Wicked.php:131 +msgid "_WikiHome" +msgstr "WikiDom" + +#: scripts/wicked.php:123 +#, php-format +msgid "page \"%s\" doesn't exist." +msgstr "stran \"%s\" ne obstaja." diff --git a/wicked/po/uk_UA.po b/wicked/po/uk_UA.po new file mode 100644 index 000000000..cf644a9cc --- /dev/null +++ b/wicked/po/uk_UA.po @@ -0,0 +1,1112 @@ +# Ukrainian translations for Wicked package. +# Copyright 2008-2009 The Horde Project +# This file is distributed under the same license as the Wicked package. +# Automatically generated, 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: Wicked 1.0-cvs\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2008-12-04 10:52+0200\n" +"PO-Revision-Date: 2008-12-04 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" + +#: templates/edit/create.inc:13 +#, php-format +msgid "" +"%s does not exist, but maybe you were looking for one of the following pages?" +msgstr "" + +#: templates/edit/create.inc:30 +#, php-format +msgid "" +"%s does not exist. Click on \"Create\" below if you want to create this page " +"now and start editing." +msgstr "" +"%s íå ³ñíóº. Êëàöí³òü \"Ñòâîðèòè\" äëÿ ñòâîðåííÿ ö³º¿ ñòîð³íêè çàðàç ³ " +"ïî÷àòè ðåäàãóâàííÿ." + +#: lib/Page/Search.php:112 +#, php-format +msgid "%s does not exist. You can create it now." +msgstr "%s íå ³ñíóº. Âè ìîæåòå ñòâîðèòè ¿¿ çàðàç." + +#: templates/edit/create.inc:37 +msgid "(None)" +msgstr "(Æîäåí)" + +#: scripts/wicked.php:161 +msgid "" +"-d, --debug Run in debug mode (displays extra information)" +msgstr "" + +#: scripts/wicked.php:163 +msgid "" +"-g, --get[=pagetitle] Return all pages (unless pagetitle specified)" +msgstr "" + +#: scripts/wicked.php:160 +msgid "-h, --help Show this help" +msgstr "" + +#: scripts/wicked.php:162 +msgid "-l, --list-pages List pages" +msgstr "" + +#: scripts/wicked.php:164 +msgid "-o, --out[=type] Output type for results (default:xml)" +msgstr "" + +#: scripts/wicked.php:166 +msgid "-p, --password[=password] Horde login password" +msgstr "" + +#: scripts/wicked.php:165 +msgid "-u, --username[=username] Horde login username" +msgstr "" + +#: templates/sync/list.inc:25 templates/sync/list.inc:51 +#: templates/sync/list.inc:73 +msgid "Actions" +msgstr "ij¿" + +#: templates/display/MergeOrRename.html:31 +msgid "Add the text from this page" +msgstr "Äîäàòè òåêñò ç ö³º¿ ñòîð³íêè" + +#: lib/Page/AddPage.php:108 +#, php-format +msgid "AddPage: %s" +msgstr "" + +#: lib/Page/AllPages.php:90 +msgid "AllPages" +msgstr "" + +#: lib/Page/DeletePage.php:83 +msgid "" +"Are you sure you want to delete this page? All versions will be permanently " +"removed." +msgstr "" +"Âè âïåâíåí³, ùî õî÷åòå âèòåðòè öþ ñòîð³íêó? Âñ³ âåðñ³¿ áóäóòü íàçàâæäè " +"çíèùåí³." + +#: lib/Page/DeletePage.php:85 +#, php-format +msgid "Are you sure you want to delete version %s of this page?" +msgstr "Âïåâíåí³, ùî õî÷åòå âèòåðòè âåðñ³þ %s ö³º¿ ñòîð³íêè?" + +#: lib/Page/RevertPage.php:71 +#, php-format +msgid "Are you sure you want to revert to version %s of this page?" +msgstr "" + +#: templates/display/AttachedFiles.html:88 +msgid "Attach File" +msgstr "Ïðèêð³ïèòè ôàéë" + +#: templates/display/AttachedFiles.html:52 +msgid "Attach a New File" +msgstr "Ïðèêð³ïèòè íîâèé ôàéë" + +#: templates/display/standard.inc:77 +msgid "AttachedFiles" +msgstr "" + +#: lib/Page/AttachedFiles.php:171 +#, php-format +msgid "AttachedFiles: %s" +msgstr "" + +#: templates/display/standard.inc:78 +msgid "Attached_Files" +msgstr "" + +#: templates/display/AttachedFiles.html:7 +msgid "Attachment Name" +msgstr "Íàçâà äîäàòêó" + +#: templates/display/standard.inc:117 +msgid "Attachments" +msgstr "Äîäàòêè" + +#: lib/Page/AttachedFiles.php:225 +msgid "Attachments with spaces can't be embedded into a page." +msgstr "Äîäàòêè ç ïðîá³ëàìè íå ìîæóòü áóòè âñòàâëåí³ â ñòîð³íêó." + +#: templates/edit/create.inc:19 templates/pagelist/header.inc:7 +#: templates/sync/diff.inc:25 templates/sync/diff.inc:61 +#: templates/sync/list.inc:24 templates/sync/list.inc:50 +#: templates/history/header.inc:23 lib/Page/Search.php:158 +#: templates/display/AttachedFiles.html:10 +msgid "Author" +msgstr "Àâòîð" + +#: templates/display/standard.inc:104 +msgid "Ba_ck to" +msgstr "Íàçàä äî" + +#: templates/display/standard.inc:104 +msgid "Back to" +msgstr "Íàçàä äî" + +#: templates/display/standard.inc:67 +msgid "BackLinks" +msgstr "" + +#: lib/Page/BackLinks.php:80 +#, php-format +msgid "BackLinks: %s" +msgstr "" + +#: lib/Page/SyncPages.php:246 lib/Page/SyncPages.php:249 +msgid "By default, your login data will be used" +msgstr "" + +#: lib/Page/AttachedFiles.php:231 +msgid "Can't read uploaded file." +msgstr "Íå ìîæó ïðî÷èòàòè çàâàíòàæåíèé ôàéë." + +#: lib/Page/RevertPage.php:120 +#, php-format +msgid "Can't revert to an unknown version." +msgstr "" + +#: lib/Page/AttachedFiles.php:271 +#, php-format +msgid "Can't update \"%s\": no such attachment." +msgstr "Íå ìîæó îíîâèòè \"%s\": íåìà òàêîãî äîäàòêó." + +#: templates/edit/standard.inc:27 templates/edit/create.inc:47 +#: lib/Page/DeletePage.php:104 lib/Page/RevertPage.php:88 +#: lib/Page/MergeOrRename.php:140 templates/display/MergeOrRename.html:62 +msgid "Cancel" +msgstr "³äì³íèòè" + +#: templates/history/header.inc:29 templates/display/AttachedFiles.html:12 +msgid "Change Log" +msgstr "Æóðíàë Çì³í" + +#: templates/edit/standard.inc:29 templates/sync/diff.inc:26 +#: templates/sync/diff.inc:62 +msgid "Change log" +msgstr "Æóðíàë Çì³í" + +#: templates/display/AttachedFiles.html:80 +#: templates/display/AttachedFiles.html:146 +msgid "Change log entry" +msgstr "Çàïèñ â æóðíàë³ çì³í" + +#: templates/display/MergeOrRename.html:40 +msgid "Change references to this page from:" +msgstr "" + +#: lib/Page/MergeOrRename.php:253 +#, php-format +msgid "Changed references from %s to %s" +msgstr "" + +#: templates/edit/standard.inc:28 +msgid "Changelog is required" +msgstr "Íåîáõ³äíèé æóðíàë çì³í" + +#: templates/sync/diff.inc:27 templates/sync/diff.inc:63 +msgid "Checksum" +msgstr "" + +#: templates/edit/create.inc:26 +msgid "" +"Click on \"Create\" below if you want to create this page now and start " +"editing." +msgstr "" +"Êëàöí³òü \"Ñòâîðèòè\" íèæ÷å, ÿêùî áàæàºòå ñòâîðèòè öþ ñòîð³íêó ³ ðîçïî÷àòè " +"ðåäàãóâàííÿ." + +#: scripts/wicked.php:42 +msgid "Couldn't read command-line options." +msgstr "" + +#: templates/edit/create.inc:46 +msgid "Create" +msgstr "Ñòâîðèòè" + +#: lib/Page/NewPage.php:135 +#, php-format +msgid "Create Failed: %s" +msgstr "Ñòâîðåííÿ íåâäàëå: %s" + +#: templates/sync/diff.inc:24 templates/sync/diff.inc:60 +#: templates/sync/list.inc:23 templates/sync/list.inc:49 +#: templates/history/header.inc:24 +msgid "Created" +msgstr "Ñòâîðåíî" + +#: templates/edit/create.inc:20 templates/pagelist/header.inc:8 +#: lib/Page/Search.php:159 +msgid "Creation Date" +msgstr "Äàòà ñòâîðåííÿ" + +#: lib/Page/SyncPages.php:231 +msgid "Custom" +msgstr "" + +#: templates/display/AttachedFiles.html:11 +msgid "Date" +msgstr "Äàòà" + +#: lib/Page/DeletePage.php:103 +msgid "Delete" +msgstr "Âèòåðòè" + +#: templates/display/standard.inc:52 +#, php-format +msgid "Delete %s" +msgstr "Âèòåðòè %s" + +#: templates/history/header.inc:16 +msgid "Delete Version" +msgstr "Âèòåðòè âåðñ³þ" + +#: templates/history/summary.inc:6 +#, php-format +msgid "Delete Version %s" +msgstr "Âèòåðòè âåðñ³þ %s" + +#: lib/Page/DeletePage.php:97 lib/Page/DeletePage.php:120 +msgid "DeletePage" +msgstr "" + +#: lib/Page/DeletePage.php:142 +#, php-format +msgid "Deleted version %s of \"%s\"." +msgstr "" + +#: templates/history/header.inc:26 +msgid "Diff From" +msgstr "" + +#: templates/history/header.inc:27 +msgid "Diff To" +msgstr "" + +#: diff.php:56 templates/sync/diff.inc:101 templates/diff/diff.inc:2 +#, php-format +msgid "Diff for %s between %s and %s" +msgstr "" + +#: lib/Page/SyncPages.php:251 +msgid "Display" +msgstr "Ïîêàçàòè" + +#: templates/pagelist/summary.inc:3 +#, php-format +msgid "Display %s" +msgstr "Ïîêàçàòè %s" + +#: templates/pagelist/summary.inc:6 templates/history/summary.inc:2 +#, php-format +msgid "Display Version %s" +msgstr "Ïîêàçàòè âåðñ³þ %s" + +#: templates/sync/diff.inc:96 templates/sync/list.inc:35 +msgid "Download" +msgstr "Ñêà÷àòè" + +#: templates/display/standard.inc:136 +msgid "Download this page as:" +msgstr "Ñêà÷àòè öþ ñòîð³íêó ÿê:" + +#: templates/display/AttachedFiles.html:13 +msgid "Downloads" +msgstr "" + +#: lib/Page/SyncPages.php:389 +msgid "Downloded from remote server" +msgstr "Ñêà÷àíî ç â³ääàëåíîãî ñåðâåðà" + +#: lib/Page/SyncPages.php:237 +msgid "Driver" +msgstr "Äðàéâåð" + +#: lib/Page/SyncPages.php:254 +msgid "Edit" +msgstr "Ðåäàãóâàòè" + +#: preview.php:24 templates/display/standard.inc:24 +#, php-format +msgid "Edit %s" +msgstr "Ðåäàãóâàòè %s" + +#: templates/history/header.inc:18 +msgid "Edit Version" +msgstr "Ðåäàãóâàòè âåðñ³þ" + +#: templates/history/summary.inc:16 +#, php-format +msgid "Edit Version %s" +msgstr "Ðåäàãóâàòè âåðñ³þ %s" + +#: templates/sync/diff.inc:98 +msgid "Edit local" +msgstr "" + +#: templates/sync/diff.inc:99 +msgid "Edit remote" +msgstr "" + +#: templates/edit/standard.inc:21 lib/Page/EditPage.php:93 +msgid "EditPage" +msgstr "" + +#: templates/display/AttachedFiles.html:67 +msgid "Enter a name for this file (if blank, will use the file's current name)" +msgstr "" +"Ââåä³òü íàçâó öüîãî ôàéëà (ÿêùî ïîðîæíÿ, áóäå âèêîðèñòàíà ïîòî÷íà íàçâà)" + +#: scripts/mail-filter.php:135 +#, php-format +msgid "Error creating new page: %s" +msgstr "Ïîìèëêà ñòâîðåííÿ íîâî¿ ñòîð³íêè: %s" + +#: lib/Page/MergeOrRename.php:202 +#, php-format +msgid "Error deleting %s: %s" +msgstr "Ïîìèëêà âèòèðàííÿ %s: %s" + +#: scripts/mail-filter.php:42 +#, php-format +msgid "Error parsing MIME message: %s\n" +msgstr "" + +#: lib/Page/MergeOrRename.php:217 +#, php-format +msgid "Error renaming \"%s\": %s" +msgstr "Ïîìèëêà ïåðåéìåíóâàííÿ \"%s\": %s" + +#: lib/Page/MergeOrRename.php:247 +#, php-format +msgid "Error retrieving %s: %s" +msgstr "Ïîìèëêà îòðèìàííÿ %s: %s" + +#: lib/Page/AttachedFiles.php:111 lib/Page/AttachedFiles.php:253 +#, php-format +msgid "Error retrieving attachments: %s" +msgstr "Ïîìèëêà îòðèìàííÿ äîäàòê³â: %s" + +#: lib/Page/AddPage.php:68 +#, php-format +msgid "Error retrieving templates: %s" +msgstr "" + +#: lib/Page/MergeOrRename.php:194 lib/Page/MergeOrRename.php:274 +#, php-format +msgid "Error updating %s: %s" +msgstr "Ïîìèëêà îíîâëåííÿ %s: %s" + +#: lib/Page/Search.php:165 +msgid "Exact Match" +msgstr "" + +#: lib/Page/MergeOrRename.php:164 +#, php-format +msgid "Failed to retrieve \"%s\": %s" +msgstr "" + +#: lib/Page/SyncPages.php:194 lib/Page/SyncPages.php:271 +msgid "Fetch page list" +msgstr "" + +#: templates/sync/diff.inc:54 +msgid "Found same content in history" +msgstr "" + +#: lib/Page.php:274 +msgid "Guest" +msgstr "óñòü" + +#: templates/display/standard.inc:138 +msgid "HTML" +msgstr "HTML" + +#: templates/display/standard.inc:85 +msgid "Hi_story" +msgstr "²ñòîð³ÿ" + +#: templates/display/standard.inc:84 +#, php-format +msgid "History of %s" +msgstr "²ñòîð³ÿ %s" + +#: lib/Page/StandardPage/StdHistoryPage.php:46 +msgid "History page not found" +msgstr "Ñòîð³íêó ³ñòî𳿠íå çíàéäåíî" + +#: history.php:30 templates/history/header.inc:7 +#, php-format +msgid "History: %s" +msgstr "²ñòîð³ÿ: %s" + +#: lib/Wicked.php:130 +msgid "HowTo_UseWiki" +msgstr "" + +#: templates/display/MergeOrRename.html:26 +msgid "If a page with the new name already exists, then" +msgstr "ßêùî ñòîð³íêà ç íîâîþ íàçâîþ âæå ³ñíóº, òî" + +#: display.php:17 displaysp.php:17 history.php:18 +msgid "Internal error viewing requested page" +msgstr "" + +#: diff.php:39 +#, php-format +msgid "Internal error viewing requested page: %s" +msgstr "" + +#: lib/api.php:418 +msgid "Invalid page requested." +msgstr "" + +#: templates/display/AttachedFiles.html:133 +msgid "Is this a minor update?" +msgstr "×è öå íåçíà÷íà çì³íà?" + +#: templates/display/standard.inc:72 +msgid "L_ikePages" +msgstr "" + +#: templates/edit/standard.inc:20 templates/display/title.inc:6 +#, php-format +msgid "Last Modified %s by %s" +msgstr "Âîñòàííº îíîâëåíî %s %s" + +#: templates/display/standard.inc:139 +msgid "Latex" +msgstr "Latex" + +#: lib/Page/LeastPopular.php:93 +msgid "LeastPopular" +msgstr "" + +#: templates/display/standard.inc:72 +msgid "LikePages" +msgstr "" + +#: lib/Page/LikePages.php:82 +#, php-format +msgid "LikePages: %s" +msgstr "" + +#: templates/sync/diff.inc:32 templates/sync/diff.inc:68 +#: lib/Page/SyncDiff.php:80 lib/Page/SyncDiff.php:86 +msgid "Local" +msgstr "Ëîêàëüíèé" + +#: templates/sync/diff.inc:22 templates/sync/diff.inc:58 +msgid "Location" +msgstr "̳ñöå ïåðåáóâàííÿ" + +#: templates/display/standard.inc:40 +#, php-format +msgid "Lock %s" +msgstr "Çàìêíóòè %s" + +#: templates/edit/standard.inc:21 templates/display/title.inc:34 +#: lib/Page/DeletePage.php:97 lib/Page/RevertPage.php:81 +msgid "Locked" +msgstr "Çàìêíåíà" + +#: scripts/wicked.php:104 +#, php-format +msgid "Logged in successfully as \"%s\"." +msgstr "Óñï³øíî ââ³éøëè ÿê \"%s\"." + +#: scripts/wicked.php:100 +msgid "Login is incorrect." +msgstr "" + +#: scripts/wicked.php:158 +msgid "" +"Mandatory arguments to long options are mandatory for short options too." +msgstr "" + +#: templates/display/standard.inc:60 +msgid "MergeOrRename" +msgstr "" + +#: lib/Page/MergeOrRename.php:125 +#, php-format +msgid "MergeOrRename: %s" +msgstr "" + +#: lib/Page/MergeOrRename.php:207 +#, php-format +msgid "Merged \"%s\" into \"%s\"." +msgstr "Ïðèºäíàíî \"%s\" äî \"%s\"." + +#: lib/Page/MergeOrRename.php:210 +#, php-format +msgid "Merged \"%s\" into \"%s\". New page: %s\n" +msgstr "Ïðèºäíàíî \"%s\" äî \"%s\". Íîâà ñòîð³íêà: %s\n" + +#: lib/Page/MergeOrRename.php:191 +#, php-format +msgid "Merged from %s" +msgstr "Ïðèºäíàíî ç %s" + +#: templates/edit/standard.inc:30 +msgid "Minor Change" +msgstr "Íåçíà÷íà çì³íà" + +#: lib/Page/MostPopular.php:93 +msgid "MostPopular" +msgstr "" + +#: lib/Block/page.php:41 +msgid "Name of wiki page to display" +msgstr "Íàçâà wiki-ñòîð³íêè, ÿêó ïîêàçàòè" + +#: lib/Page.php:263 +msgid "Never" +msgstr "ͳêîëè" + +#: lib/Page/AttachedFiles.php:303 +#, php-format +msgid "New attachment \"%s\" to page \"%s\"." +msgstr "Íîâèé äîäàòîê \"%s\" äî ñòîð³íêè \"%s\"." + +#: templates/display/MergeOrRename.html:15 +msgid "New name" +msgstr "Íîâà íàçâà" + +#: lib/Page/MergeOrRename.php:151 +msgid "New name is the same as old name." +msgstr "Íîâà íàçâà òàêà æ, ÿ ³ ñòàðà." + +#: templates/sync/list.inc:42 +msgid "New pages on local server" +msgstr "" + +#: templates/sync/list.inc:16 +msgid "New pages on remote server" +msgstr "Íîâ³ ñòîð³íêè íà â³ääàëåíîìó ñåðâåð³" + +#: lib/Page/NewPage.php:112 +msgid "NewPage" +msgstr "" + +#: templates/edit/new.inc:20 +#, php-format +msgid "NewPage: %s" +msgstr "" + +#: lib/api.php:352 lib/Page/SyncPages.php:387 lib/Page/EditPage.php:124 +msgid "No changes made" +msgstr "Æîäíèõ çì³í íå çðîáëåíî" + +#: templates/sync/list.inc:18 templates/sync/list.inc:44 +msgid "No pages found" +msgstr "Æîäíî¿ ñòîð³íêè íå çíàéäåíî" + +#: templates/sync/list.inc:70 +msgid "No pages to sync" +msgstr "" + +#: lib/Driver.php:124 +msgid "Not implemented." +msgstr "Íå ðåàë³çîâàíî." + +#: templates/edit/create.inc:17 templates/pagelist/header.inc:5 +#: templates/sync/list.inc:21 templates/sync/list.inc:47 +#: templates/sync/list.inc:73 lib/Page/Search.php:156 +msgid "Page" +msgstr "Ñòîð³íêà" + +#: lib/Page/MergeOrRename.php:179 +#, php-format +msgid "Page \"%s\" already exists." +msgstr "Ñòîð³íêà \"%s\" âæå ³ñíóº." + +#: lib/Page/SyncPages.php:395 +#, php-format +msgid "Page \"%s\" was sucessfuly downloaded from remote to local wiki." +msgstr "" + +#: lib/Page/SyncPages.php:425 +#, php-format +msgid "Page \"%s\" was sucessfuly uploaded from local to remote wiki." +msgstr "Ñòîð³íêó \"%s\" óñï³øíî çàâàíòàæåíî ç ëîêàëüíîãî íà â³ääàëåíèé wiki." + +#: lib/Page/NewPage.php:138 +msgid "Page Created" +msgstr "Ñòîð³íêó ñòâîðåíî" + +#: lib/Page/EditPage.php:131 +msgid "Page Saved" +msgstr "Ñòîð³íêó çáåðåæåíî" + +#: templates/edit/create.inc:35 +msgid "Page Template:" +msgstr "Øàáëîí ñòîð³íêè:" + +#: lib/Page/Search.php:179 +msgid "Page Text Matches" +msgstr "" + +#: lib/Page/Search.php:172 +msgid "Page Title Matches" +msgstr "" + +#: templates/pagelist/header.inc:10 +msgid "Page Views" +msgstr "" + +#: display.php:31 +#, php-format +msgid "Page failed to lock: %s" +msgstr "" + +#: display.php:46 +#, php-format +msgid "Page failed to unlock: %s" +msgstr "" + +#: display.php:34 +msgid "Page locked" +msgstr "" + +#: lib/Driver/sql.php:592 lib/Page/NewPage.php:72 lib/Page/AddPage.php:53 +msgid "Page name must not be empty" +msgstr "Íàçâà ñòîð³íêè íå ìîæå áóòè ïîðîæíüîþ" + +#: display.php:49 +msgid "Page unlocked" +msgstr "" + +#: lib/api.php:114 lib/api.php:117 +msgid "Pages" +msgstr "Ñòîð³íêè" + +#: lib/Page/NewPage.php:129 +msgid "Pages cannot be empty." +msgstr "Ñòîð³íêè íå ìîæóòü áóòè ïóñòèìè." + +#: templates/sync/list.inc:68 +msgid "Pages to sync" +msgstr "" + +#: lib/Page/SyncPages.php:249 +msgid "Password" +msgstr "Ïàðîëü" + +#: templates/display/standard.inc:100 +msgid "Permissio_ns" +msgstr "Ïðàâà" + +#: lib/api.php:414 +msgid "Permission denied." +msgstr "Äîñòóï çàáîðîíåíèé." + +#: templates/display/standard.inc:137 +msgid "Plain Text" +msgstr "Ïðîñòèé òåêñò" + +#: lib/Page/SyncPages.php:240 +msgid "Prefix" +msgstr "Ïðåô³êñ" + +#: templates/edit/standard.inc:26 templates/edit/new.inc:25 +msgid "Preview" +msgstr "Îãëÿä" + +#: lib/Page/EditPage.php:112 +msgid "Random string did not match." +msgstr "" + +#: lib/Page/RecentChanges.php:114 +msgid "RecentChanges" +msgstr "" + +#: lib/Page/AttachedFiles.php:67 +#, php-format +msgid "Referrer \"%s\" does not exist." +msgstr "" + +#: lib/Page/AttachedFiles.php:129 +#, php-format +msgid "Reload \"%s\"" +msgstr "" + +#: templates/history/header.inc:8 +msgid "Reload History" +msgstr "" + +#: templates/display/title.inc:32 templates/display/title.inc:33 +msgid "Reload Page" +msgstr "" + +#: templates/sync/diff.inc:40 templates/sync/diff.inc:76 +#: lib/Page/SyncDiff.php:81 lib/Page/SyncDiff.php:85 +msgid "Remote" +msgstr "³ääàëåíèé" + +#: lib/Page/SyncPages.php:194 lib/Page/SyncPages.php:300 +msgid "Remove login info" +msgstr "" + +#: lib/Page/MergeOrRename.php:222 +#, php-format +msgid "Renamed \"%s\" to \"%s\"." +msgstr "Ïåðåéìåíîâàíî \"%s\" íà \"%s\"." + +#: lib/Page/MergeOrRename.php:225 +#, php-format +msgid "Renamed \"%s\" to \"%s\". New page: %s\n" +msgstr "Ïåðåéìåíîâàíî \"%s\" íà \"%s\". Íîâà ñòîð³íêà: %s\n" + +#: lib/Driver/sql.php:681 +#, php-format +msgid "Renamed page from %s" +msgstr "Ïåðåéìåíîâàíà ñòîð³íêà ç %s" + +#: lib/Page/SyncPages.php:194 +msgid "Reset" +msgstr "Î÷èñòèòè" + +#: templates/history/header.inc:20 +msgid "Restore Version" +msgstr "³äíîâèòè âåðñ³þ" + +#: lib/Page/RevertPage.php:87 +msgid "Revert" +msgstr "" + +#: templates/history/summary.inc:26 +#, php-format +msgid "Revert to version %s" +msgstr "" + +#: lib/Page/RevertPage.php:81 lib/Page/RevertPage.php:104 +msgid "RevertPage" +msgstr "" + +#: lib/Page/RevertPage.php:127 +#, php-format +msgid "Reverted to version %s of \"%s\"." +msgstr "" + +#: lib/Driver/sql.php:596 +msgid "Robots are not allowed to create pages" +msgstr "Ðîáîòàì íå äîçâîëåíî ñòâîðþâàòè ñòîð³íêè" + +#: templates/edit/standard.inc:25 templates/edit/new.inc:24 +msgid "Save" +msgstr "Çáåðåãòè" + +#: lib/Page/EditPage.php:128 +#, php-format +msgid "Save Failed: %s" +msgstr "Çáåðåæåííÿ íå âäàëîñÿ: %s" + +#: lib/Page/SyncPages.php:194 lib/Page/SyncPages.php:288 +msgid "Save login info" +msgstr "" + +#: templates/menu.inc:17 lib/Page/Search.php:204 +msgid "Search" +msgstr "Ïîøóê" + +#: templates/pagelist/search.inc:1 +msgid "Search Results" +msgstr "Ðåçóëüòàòè ïîøóêó" + +#: templates/display/AttachedFiles.html:58 +#: templates/display/AttachedFiles.html:110 +msgid "Select file to attach:" +msgstr "Âèáåð³òü ôàéë, ÿêèé ïðèêð³ïèòè:" + +#: templates/display/AttachedFiles.html:119 +msgid "Select the file to update" +msgstr "Âèáåð³òü ôàéë, ÿêèé îíîâèòè" + +#: templates/display/standard.inc:99 +#, php-format +msgid "Set permissions for %s" +msgstr "Âñòàíîâèòè ïðàâà äëÿ %s" + +#: templates/sync/list.inc:79 +msgid "Show changes" +msgstr "Ïîêàçàòè çì³íè" + +#: templates/display/title.inc:16 lib/Page/RecentChanges.php:57 +#, php-format +msgid "Show changes for %s" +msgstr "Ïîêàçàòè çì³íè äëÿ %s" + +#: lib/Page/RecentChanges.php:64 +#, php-format +msgid "Show version %s" +msgstr "Ïîêàçàòè âåðñ³þ %s" + +#: templates/edit/standard.inc:41 +msgid "Spam Protection - Enter the letters below:" +msgstr "Çàõèñò â³ä ñïàìó - Ââåä³òü ë³òåðè, ïîêàçàí³ íèæ÷å:" + +#: templates/display/MergeOrRename.html:33 +msgid "Stop and don't do anything" +msgstr "" + +#: lib/Page/SyncPages.php:231 +msgid "Stored" +msgstr "" + +#: templates/display/MergeOrRename.html:61 +msgid "Submit" +msgstr "³ä³ñëàòè" + +#: lib/Page/DeletePage.php:136 +#, php-format +msgid "Successfully deleted \"%s\"." +msgstr "Óñï³øíî âèòåðòî \"%s\"." + +#: lib/Page/AttachedFiles.php:207 +#, php-format +msgid "Successfully deleted version %s of \"%s\" from \"%s\"" +msgstr "Óñï³øíî âèòåðòî âåðñ³þ %s äëÿ \"%s\" ç \"%s\"" + +#: lib/Page/SyncPages.php:193 +msgid "Sync data" +msgstr "" + +#: lib/Page/SyncPages.php:305 +msgid "Sync login info was removed." +msgstr "" + +#: lib/Page/SyncPages.php:295 +msgid "Sync login info was stored" +msgstr "" + +#: lib/Page/SyncDiff.php:129 +msgid "SyncDiff" +msgstr "" + +#: lib/Page/SyncPages.php:169 +msgid "SyncPages" +msgstr "" + +#: lib/Page/SyncDiff.php:52 +msgid "Synchronization is disabled" +msgstr "Ñèíõðîí³çàö³þ çàáîðîíåíî" + +#: lib/Page.php:488 +msgid "Table of Contents" +msgstr "Çì³ñò" + +#: lib/Page/AttachedFiles.php:280 +#, php-format +msgid "There is already an attachment named \"%s\"." +msgstr "Âæå ³ñíóº äîäàòîê ç íàçâîþ \"%s\"." + +#: lib/Page/MergeOrRename.php:149 lib/Page/MergeOrRename.php:155 +msgid "This is a required field." +msgstr "Öå îáîâ'ÿçêîâå ïîëå." + +#: display.php:61 +msgid "This page does not have a history" +msgstr "Öÿ ñòîð³íêà íå ìຠ³ñòîð³¿." + +#: lib/Page/MergeOrRename.php:100 +#, php-format +msgid "This page is referenced from %d other page(s)." +msgstr "" + +#: templates/display/standard.inc:35 +msgid "Un_lock" +msgstr "" + +#: lib/Page/StandardPage.php:81 +#, php-format +msgid "Unable to create %s" +msgstr "Íå ìîæó ñòâîðèòè %s" + +#: lib/Page/StandardPage.php:89 +msgid "Unable to create WikiHome. The wiki is not configured." +msgstr "" + +#: templates/display/standard.inc:34 +#, php-format +msgid "Unlock %s" +msgstr "" + +#: lib/Page.php:255 lib/Page.php:289 lib/Page.php:294 lib/Page.php:393 +#: lib/Page.php:403 lib/Page.php:413 lib/Page.php:423 lib/Page.php:523 +#: lib/Page.php:534 lib/Page.php:539 lib/Page.php:544 lib/Page.php:549 +#: lib/Page.php:589 lib/Driver.php:78 lib/Driver.php:92 lib/Driver.php:104 +#: lib/Driver.php:109 lib/Driver.php:129 lib/Driver.php:134 lib/Driver.php:192 +#: lib/Driver.php:197 lib/Driver.php:209 lib/Driver.php:223 lib/Driver.php:237 +#: lib/Driver.php:251 lib/Driver.php:256 lib/Driver.php:261 lib/Driver.php:279 +#: lib/Driver.php:399 lib/Driver.php:425 lib/Driver.php:441 lib/Sync.php:78 +#: lib/Sync.php:90 lib/Sync.php:102 lib/Sync.php:114 lib/Sync.php:126 +#: lib/Sync.php:142 +msgid "Unsupported" +msgstr "" + +#: templates/display/AttachedFiles.html:154 +msgid "Update File" +msgstr "Îíîâèòè ôàéë" + +#: templates/display/AttachedFiles.html:104 +msgid "Update an Attachment" +msgstr "Îíîâèòè äîäàòîê" + +#: lib/Page/AttachedFiles.php:300 +#, php-format +msgid "Updated attachment \"%s\" on page \"%s\"." +msgstr "Îíîâëåíî äîäàòîê \"%s\" íà ñòîð³íö³ \"%s\"." + +#: templates/sync/diff.inc:97 templates/sync/list.inc:61 +msgid "Upload" +msgstr "Çàêà÷àòè" + +#: lib/Page/SyncPages.php:419 +msgid "Uploaded from remote server" +msgstr "Çàâàíòàæåíî ç â³ääàëåíîãî ñåðâåðà" + +#: lib/Page/SyncPages.php:243 +msgid "Url" +msgstr "" + +#: scripts/wicked.php:156 +#, php-format +msgid "Usage: %s [OPTIONS]..." +msgstr "" + +#: lib/Page/SyncPages.php:246 +msgid "User" +msgstr "Êîðèñòóâà÷" + +#: templates/edit/create.inc:18 templates/pagelist/header.inc:6 +#: templates/sync/diff.inc:23 templates/sync/diff.inc:59 +#: templates/sync/list.inc:22 templates/sync/list.inc:48 +#: templates/history/header.inc:13 lib/Page/Search.php:157 +#: templates/display/AttachedFiles.html:9 +msgid "Version" +msgstr "Âåðñ³ÿ" + +#: lib/Page/SyncPages.php:178 +msgid "View local" +msgstr "" + +#: lib/Page/AttachedFiles.php:309 +msgid "View page: " +msgstr "" + +#: lib/Page/SyncPages.php:180 +msgid "View remote" +msgstr "" + +#: lib/Page/SyncPages.php:237 +msgid "Wicked" +msgstr "" + +#: lib/api.php:374 +msgid "Wiki Templates" +msgstr "Øàáëîíè Wiki" + +#: lib/Block/page.php:3 +msgid "Wiki page" +msgstr "Ñòîð³íêà Wiki" + +#: display.php:25 +msgid "You are not allowed to lock this page" +msgstr "Âàì íå äîçâîëåíî çàìèêàòè öþ ñòîð³íêó" + +#: display.php:40 +msgid "You are not allowed to unlock this page" +msgstr "" + +#: lib/Page/AttachedFiles.php:196 +msgid "You do not have permission to delete attachments from this page." +msgstr "Âè íå ìàºòå ïðàâà âèòèðàòè äîäàòêè ç ö³º¿ ñòîð³íêè." + +#: lib/Page/AttachedFiles.php:237 lib/Page/MergeOrRename.php:169 +#: lib/Page/MergeOrRename.php:184 +#, php-format +msgid "You do not have permission to edit \"%s\"" +msgstr "Âè íå ìàºòå ïðàâà ðåäàãóâàòè \"%s\"" + +#: lib/Page/NewPage.php:125 +#, php-format +msgid "You don't have permission to create \"%s\"." +msgstr "Âè íå ìàºòå ïðàâà ñòâîðþâàòè \"%s\"." + +#: lib/Page/DeletePage.php:150 +#, php-format +msgid "You don't have permission to delete \"%s\"." +msgstr "Âè íå ìàºòå ïðàâà âèòåðòè \"%s\"." + +#: lib/api.php:334 lib/Page/SyncPages.php:371 lib/Page/EditPage.php:107 +#: lib/Page/RevertPage.php:133 +#, php-format +msgid "You don't have permission to edit \"%s\"." +msgstr "Âè íå ìàºòå ïðàâà ðåäàãóâàòè \"%s\"." + +#: display.php:70 display.php:73 display.php:116 display.php:119 +#: displaysp.php:39 displaysp.php:42 displaysp.php:85 displaysp.php:88 +msgid "You don't have permission to view this page." +msgstr "Âè íå ìàºòå ïðàâà ïåðåãëÿäàòè öþ ñòîð³íêó." + +#: lib/Page/AttachedFiles.php:245 +msgid "You must enter a change description to attach this file." +msgstr "Âàì ñë³ä îïèñàòè çì³íè äëÿ ïðèêð³ïëåííÿ öüîãî ôàéëó." + +#: lib/api.php:338 lib/Page/EditPage.php:118 +msgid "You must provide a change log." +msgstr "Âè ïîâèíí³ çàïîâíèòè æóðíàë çì³í." + +#: lib/Wicked.php:130 +msgid "_AllPages" +msgstr "" + +#: templates/display/standard.inc:67 +msgid "_BackLinks" +msgstr "" + +#: templates/display/standard.inc:53 +msgid "_Delete" +msgstr "Âèòåðòè" + +#: templates/display/standard.inc:25 +msgid "_EditPage" +msgstr "" + +#: templates/display/standard.inc:41 +msgid "_Lock" +msgstr "" + +#: templates/display/standard.inc:61 +msgid "_MergeOrRename" +msgstr "" + +#: lib/Wicked.php:130 +msgid "_RecentChanges" +msgstr "" + +#: lib/Wicked.php:130 +msgid "_WikiHome" +msgstr "" + +#: lib/Page/AttachedFiles.php:217 +msgid "attachment" +msgstr "äîäàòîê" + +#: scripts/wicked.php:123 +#, php-format +msgid "page \"%s\" doesn't exist." +msgstr "ñòîð³íêè \"%s\" íå ³ñíóº." diff --git a/wicked/po/wicked.pot b/wicked/po/wicked.pot new file mode 100644 index 000000000..78e4c1c9e --- /dev/null +++ b/wicked/po/wicked.pot @@ -0,0 +1,899 @@ +# 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" + +#: templates/edit/create.inc:13 +#, php-format +msgid "" +"%s does not exist, but maybe you were looking for one of the following pages?" +msgstr "" + +#: templates/edit/create.inc:30 +#, php-format +msgid "" +"%s does not exist. Click on \"Create\" below if you want to create this page " +"now and start editing." +msgstr "" + +#: lib/Page/Search.php:111 +#, php-format +msgid "%s does not exist. You can create it now." +msgstr "" + +#: templates/edit/create.inc:37 +msgid "(None)" +msgstr "" + +#: scripts/wicked.php:161 +msgid "" +"-d, --debug Run in debug mode (displays extra information)" +msgstr "" + +#: scripts/wicked.php:163 +msgid "" +"-g, --get[=pagetitle] Return all pages (unless pagetitle specified)" +msgstr "" + +#: scripts/wicked.php:160 +msgid "-h, --help Show this help" +msgstr "" + +#: scripts/wicked.php:162 +msgid "-l, --list-pages List pages" +msgstr "" + +#: scripts/wicked.php:164 +msgid "-o, --out[=type] Output type for results (default:xml)" +msgstr "" + +#: scripts/wicked.php:166 +msgid "-p, --password[=password] Horde login password" +msgstr "" + +#: scripts/wicked.php:165 +msgid "-u, --username[=username] Horde login username" +msgstr "" + +#: templates/display/MergeOrRename.html:31 +msgid "Add the text from this page" +msgstr "" + +#: lib/Page/AddPage.php:108 +#, php-format +msgid "AddPage: %s" +msgstr "" + +#: lib/Page/AllPages.php:90 +msgid "AllPages" +msgstr "" + +#: lib/Page/DeletePage.php:83 +msgid "" +"Are you sure you want to delete this page? All versions will be permanently " +"removed." +msgstr "" + +#: lib/Page/DeletePage.php:85 +#, php-format +msgid "Are you sure you want to delete version %s of this page?" +msgstr "" + +#: lib/Page/RevertPage.php:71 +#, php-format +msgid "Are you sure you want to revert to version %s of this page?" +msgstr "" + +#: templates/display/AttachedFiles.html:88 +msgid "Attach File" +msgstr "" + +#: templates/display/AttachedFiles.html:52 +msgid "Attach a New File" +msgstr "" + +#: templates/display/standard.inc:77 +msgid "AttachedFiles" +msgstr "" + +#: lib/Page/AttachedFiles.php:171 +#, php-format +msgid "AttachedFiles: %s" +msgstr "" + +#: templates/display/standard.inc:78 +msgid "Attached_Files" +msgstr "" + +#: templates/display/AttachedFiles.html:7 +msgid "Attachment Name" +msgstr "" + +#: templates/display/standard.inc:117 +msgid "Attachments" +msgstr "" + +#: lib/Page/AttachedFiles.php:225 +msgid "Attachments with spaces can't be embedded into a page." +msgstr "" + +#: templates/history/header.inc:23 templates/pagelist/header.inc:7 +#: templates/edit/create.inc:19 lib/Page/Search.php:157 +#: templates/display/AttachedFiles.html:10 +msgid "Author" +msgstr "" + +#: templates/display/standard.inc:104 +msgid "Ba_ck to" +msgstr "" + +#: templates/display/standard.inc:104 +msgid "Back to" +msgstr "" + +#: templates/display/standard.inc:67 +msgid "BackLinks" +msgstr "" + +#: lib/Page/BackLinks.php:80 +#, php-format +msgid "BackLinks: %s" +msgstr "" + +#: lib/Page/AttachedFiles.php:231 +msgid "Can't read uploaded file." +msgstr "" + +#: lib/Page/RevertPage.php:120 +#, php-format +msgid "Can't revert to an unknown version." +msgstr "" + +#: lib/Page/AttachedFiles.php:271 +#, php-format +msgid "Can't update \"%s\": no such attachment." +msgstr "" + +#: templates/edit/create.inc:47 templates/edit/standard.inc:27 +#: lib/Page/DeletePage.php:104 lib/Page/RevertPage.php:88 +#: lib/Page/MergeOrRename.php:140 templates/display/MergeOrRename.html:62 +msgid "Cancel" +msgstr "" + +#: templates/history/header.inc:29 templates/display/AttachedFiles.html:12 +msgid "Change Log" +msgstr "" + +#: templates/edit/standard.inc:29 +msgid "Change log" +msgstr "" + +#: templates/display/AttachedFiles.html:80 +#: templates/display/AttachedFiles.html:146 +msgid "Change log entry" +msgstr "" + +#: templates/display/MergeOrRename.html:40 +msgid "Change references to this page from:" +msgstr "" + +#: lib/Page/MergeOrRename.php:253 +#, php-format +msgid "Changed references from %s to %s" +msgstr "" + +#: templates/edit/standard.inc:28 +msgid "Changelog is required" +msgstr "" + +#: templates/edit/create.inc:26 +msgid "" +"Click on \"Create\" below if you want to create this page now and start " +"editing." +msgstr "" + +#: scripts/wicked.php:42 +msgid "Couldn't read command-line options." +msgstr "" + +#: templates/edit/create.inc:46 +msgid "Create" +msgstr "" + +#: lib/Page/NewPage.php:135 +#, php-format +msgid "Create Failed: %s" +msgstr "" + +#: templates/history/header.inc:24 +msgid "Created" +msgstr "" + +#: templates/pagelist/header.inc:8 templates/edit/create.inc:20 +#: lib/Page/Search.php:158 +msgid "Creation Date" +msgstr "" + +#: templates/display/AttachedFiles.html:11 +msgid "Date" +msgstr "" + +#: lib/Page/DeletePage.php:103 +msgid "Delete" +msgstr "" + +#: templates/display/standard.inc:52 +#, php-format +msgid "Delete %s" +msgstr "" + +#: templates/history/header.inc:16 +msgid "Delete Version" +msgstr "" + +#: templates/history/summary.inc:6 +#, php-format +msgid "Delete Version %s" +msgstr "" + +#: lib/Page/DeletePage.php:97 lib/Page/DeletePage.php:120 +msgid "DeletePage" +msgstr "" + +#: lib/Page/DeletePage.php:142 +#, php-format +msgid "Deleted version %s of \"%s\"." +msgstr "" + +#: templates/history/header.inc:26 +msgid "Diff From" +msgstr "" + +#: templates/history/header.inc:27 +msgid "Diff To" +msgstr "" + +#: diff.php:56 templates/diff/diff.inc:2 +#, php-format +msgid "Diff for %s between %s and %s" +msgstr "" + +#: templates/pagelist/summary.inc:3 +#, php-format +msgid "Display %s" +msgstr "" + +#: templates/history/summary.inc:2 templates/pagelist/summary.inc:6 +#, php-format +msgid "Display Version %s" +msgstr "" + +#: templates/display/AttachedFiles.html:13 +msgid "Downloads" +msgstr "" + +#: preview.php:24 templates/display/standard.inc:24 +#, php-format +msgid "Edit %s" +msgstr "" + +#: templates/history/header.inc:18 +msgid "Edit Version" +msgstr "" + +#: templates/history/summary.inc:16 +#, php-format +msgid "Edit Version %s" +msgstr "" + +#: templates/edit/standard.inc:21 lib/Page/EditPage.php:93 +msgid "EditPage" +msgstr "" + +#: templates/display/AttachedFiles.html:67 +msgid "Enter a name for this file (if blank, will use the file's current name)" +msgstr "" + +#: scripts/mail-filter.php:127 +#, php-format +msgid "Error creating new page: %s" +msgstr "" + +#: lib/Page/MergeOrRename.php:202 +#, php-format +msgid "Error deleting %s: %s" +msgstr "" + +#: scripts/mail-filter.php:42 +#, php-format +msgid "Error parsing MIME message: %s\n" +msgstr "" + +#: lib/Page/MergeOrRename.php:217 +#, php-format +msgid "Error renaming \"%s\": %s" +msgstr "" + +#: lib/Page/MergeOrRename.php:247 +#, php-format +msgid "Error retrieving %s: %s" +msgstr "" + +#: lib/Page/AttachedFiles.php:111 lib/Page/AttachedFiles.php:253 +#, php-format +msgid "Error retrieving attachments: %s" +msgstr "" + +#: lib/Page/AddPage.php:68 +#, php-format +msgid "Error retrieving templates: %s" +msgstr "" + +#: lib/Page/MergeOrRename.php:194 lib/Page/MergeOrRename.php:274 +#, php-format +msgid "Error updating %s: %s" +msgstr "" + +#: lib/Page/Search.php:164 +msgid "Exact Match" +msgstr "" + +#: lib/Page/MergeOrRename.php:164 +#, php-format +msgid "Failed to retrieve \"%s\": %s" +msgstr "" + +#: lib/Page.php:274 +msgid "Guest" +msgstr "" + +#: templates/display/standard.inc:85 +msgid "Hi_story" +msgstr "" + +#: templates/display/standard.inc:84 +#, php-format +msgid "History of %s" +msgstr "" + +#: lib/Page/StandardPage/StdHistoryPage.php:46 +msgid "History page not found" +msgstr "" + +#: history.php:30 templates/history/header.inc:7 +#, php-format +msgid "History: %s" +msgstr "" + +#: lib/Wicked.php:130 +msgid "HowTo_UseWiki" +msgstr "" + +#: templates/display/MergeOrRename.html:26 +msgid "If a page with the new name already exists, then" +msgstr "" + +#: history.php:18 display.php:18 +msgid "Internal error viewing requested page" +msgstr "" + +#: diff.php:39 +#, php-format +msgid "Internal error viewing requested page: %s" +msgstr "" + +#: lib/api.php:224 +msgid "Invalid page requested." +msgstr "" + +#: templates/display/AttachedFiles.html:133 +msgid "Is this a minor update?" +msgstr "" + +#: templates/display/standard.inc:72 +msgid "L_ikePages" +msgstr "" + +#: templates/display/title.inc:6 templates/edit/standard.inc:20 +#, php-format +msgid "Last Modified %s by %s" +msgstr "" + +#: lib/Page/LeastPopular.php:93 +msgid "LeastPopular" +msgstr "" + +#: templates/display/standard.inc:72 +msgid "LikePages" +msgstr "" + +#: lib/Page/LikePages.php:82 +#, php-format +msgid "LikePages: %s" +msgstr "" + +#: templates/display/standard.inc:40 +#, php-format +msgid "Lock %s" +msgstr "" + +#: templates/display/title.inc:34 templates/edit/standard.inc:21 +#: lib/Page/DeletePage.php:97 lib/Page/RevertPage.php:81 +msgid "Locked" +msgstr "" + +#: scripts/wicked.php:104 +#, php-format +msgid "Logged in successfully as \"%s\"." +msgstr "" + +#: scripts/wicked.php:100 +msgid "Login is incorrect." +msgstr "" + +#: scripts/wicked.php:158 +msgid "" +"Mandatory arguments to long options are mandatory for short options too." +msgstr "" + +#: templates/display/standard.inc:60 +msgid "MergeOrRename" +msgstr "" + +#: lib/Page/MergeOrRename.php:125 +#, php-format +msgid "MergeOrRename: %s" +msgstr "" + +#: lib/Page/MergeOrRename.php:207 +#, php-format +msgid "Merged \"%s\" into \"%s\"." +msgstr "" + +#: lib/Page/MergeOrRename.php:210 +#, php-format +msgid "Merged \"%s\" into \"%s\". New page: %s\n" +msgstr "" + +#: lib/Page/MergeOrRename.php:191 +#, php-format +msgid "Merged from %s" +msgstr "" + +#: templates/edit/standard.inc:30 +msgid "Minor Change" +msgstr "" + +#: lib/Page/MostPopular.php:93 +msgid "MostPopular" +msgstr "" + +#: lib/Block/page.php:41 +msgid "Name of wiki page to display" +msgstr "" + +#: lib/Page.php:263 +msgid "Never" +msgstr "" + +#: lib/Page/AttachedFiles.php:303 +#, php-format +msgid "New attachment \"%s\" to page \"%s\"." +msgstr "" + +#: templates/display/MergeOrRename.html:15 +msgid "New name" +msgstr "" + +#: lib/Page/MergeOrRename.php:151 +msgid "New name is the same as old name." +msgstr "" + +#: lib/Page/NewPage.php:112 +msgid "NewPage" +msgstr "" + +#: templates/edit/new.inc:20 +#, php-format +msgid "NewPage: %s" +msgstr "" + +#: lib/api.php:159 lib/Page/EditPage.php:124 +msgid "No changes made" +msgstr "" + +#: lib/Driver.php:124 +msgid "Not implemented." +msgstr "" + +#: templates/pagelist/header.inc:5 templates/edit/create.inc:17 +#: lib/Page/Search.php:155 +msgid "Page" +msgstr "" + +#: lib/Page/MergeOrRename.php:179 +#, php-format +msgid "Page \"%s\" already exists." +msgstr "" + +#: lib/Page/NewPage.php:138 +msgid "Page Created" +msgstr "" + +#: lib/Page/EditPage.php:131 +msgid "Page Saved" +msgstr "" + +#: templates/edit/create.inc:35 +msgid "Page Template:" +msgstr "" + +#: lib/Page/Search.php:178 +msgid "Page Text Matches" +msgstr "" + +#: lib/Page/Search.php:171 +msgid "Page Title Matches" +msgstr "" + +#: templates/pagelist/header.inc:10 +msgid "Page Views" +msgstr "" + +#: display.php:32 +#, php-format +msgid "Page failed to lock: %s" +msgstr "" + +#: display.php:47 +#, php-format +msgid "Page failed to unlock: %s" +msgstr "" + +#: display.php:35 +msgid "Page locked" +msgstr "" + +#: lib/Driver/sql.php:587 lib/Page/AddPage.php:53 lib/Page/NewPage.php:72 +msgid "Page name must not be empty" +msgstr "" + +#: display.php:50 +msgid "Page unlocked" +msgstr "" + +#: lib/api.php:73 lib/api.php:76 +msgid "Pages" +msgstr "" + +#: lib/Page/NewPage.php:129 +msgid "Pages cannot be empty." +msgstr "" + +#: templates/display/standard.inc:100 +msgid "Permissio_ns" +msgstr "" + +#: lib/api.php:220 +msgid "Permission denied." +msgstr "" + +#: templates/edit/new.inc:25 templates/edit/standard.inc:26 +msgid "Preview" +msgstr "" + +#: lib/Page/EditPage.php:112 +msgid "Random string did not match." +msgstr "" + +#: lib/Page/RecentChanges.php:113 +msgid "RecentChanges" +msgstr "" + +#: lib/Page/AttachedFiles.php:67 +#, php-format +msgid "Referrer \"%s\" does not exist." +msgstr "" + +#: lib/Page/AttachedFiles.php:129 +#, php-format +msgid "Reload \"%s\"" +msgstr "" + +#: templates/history/header.inc:8 +msgid "Reload History" +msgstr "" + +#: templates/display/title.inc:32 templates/display/title.inc:33 +msgid "Reload Page" +msgstr "" + +#: lib/Page/MergeOrRename.php:222 +#, php-format +msgid "Renamed \"%s\" to \"%s\"." +msgstr "" + +#: lib/Page/MergeOrRename.php:225 +#, php-format +msgid "Renamed \"%s\" to \"%s\". New page: %s\n" +msgstr "" + +#: lib/Driver/sql.php:676 +#, php-format +msgid "Renamed page from %s" +msgstr "" + +#: templates/history/header.inc:20 +msgid "Restore Version" +msgstr "" + +#: lib/Page/RevertPage.php:87 +msgid "Revert" +msgstr "" + +#: templates/history/summary.inc:26 +#, php-format +msgid "Revert to version %s" +msgstr "" + +#: lib/Page/RevertPage.php:81 lib/Page/RevertPage.php:104 +msgid "RevertPage" +msgstr "" + +#: lib/Page/RevertPage.php:127 +#, php-format +msgid "Reverted to version %s of \"%s\"." +msgstr "" + +#: lib/Driver/sql.php:591 +msgid "Robots are not allowed to create pages" +msgstr "" + +#: templates/edit/new.inc:24 templates/edit/standard.inc:25 +msgid "Save" +msgstr "" + +#: lib/Page/EditPage.php:128 +#, php-format +msgid "Save Failed: %s" +msgstr "" + +#: templates/menu.inc:19 lib/Page/Search.php:203 +msgid "Search" +msgstr "" + +#: templates/pagelist/search.inc:1 +msgid "Search Results" +msgstr "" + +#: templates/display/AttachedFiles.html:58 +#: templates/display/AttachedFiles.html:110 +msgid "Select file to attach:" +msgstr "" + +#: templates/display/AttachedFiles.html:119 +msgid "Select the file to update" +msgstr "" + +#: templates/display/standard.inc:99 +#, php-format +msgid "Set permissions for %s" +msgstr "" + +#: templates/display/title.inc:16 lib/Page/RecentChanges.php:56 +#, php-format +msgid "Show changes for %s" +msgstr "" + +#: lib/Page/RecentChanges.php:63 +#, php-format +msgid "Show version %s" +msgstr "" + +#: templates/edit/standard.inc:41 +msgid "Spam Protection - Enter the letters below:" +msgstr "" + +#: templates/display/MergeOrRename.html:33 +msgid "Stop and don't do anything" +msgstr "" + +#: templates/display/MergeOrRename.html:61 +msgid "Submit" +msgstr "" + +#: lib/Page/DeletePage.php:136 +#, php-format +msgid "Successfully deleted \"%s\"." +msgstr "" + +#: lib/Page/AttachedFiles.php:207 +#, php-format +msgid "Successfully deleted version %s of \"%s\" from \"%s\"" +msgstr "" + +#: lib/Page.php:485 +msgid "Table of Contents" +msgstr "" + +#: lib/Page/AttachedFiles.php:280 +#, php-format +msgid "There is already an attachment named \"%s\"." +msgstr "" + +#: lib/Page/MergeOrRename.php:149 lib/Page/MergeOrRename.php:155 +msgid "This is a required field." +msgstr "" + +#: display.php:62 +msgid "This page does not have a history" +msgstr "" + +#: lib/Page/MergeOrRename.php:100 +#, php-format +msgid "This page is referenced from %d other page(s)." +msgstr "" + +#: templates/display/standard.inc:35 +msgid "Un_lock" +msgstr "" + +#: lib/Page/StandardPage.php:79 +#, php-format +msgid "Unable to create %s" +msgstr "" + +#: lib/Page/StandardPage.php:87 +msgid "Unable to create WikiHome. The wiki is not configured." +msgstr "" + +#: templates/display/standard.inc:34 +#, php-format +msgid "Unlock %s" +msgstr "" + +#: lib/Driver.php:78 lib/Driver.php:92 lib/Driver.php:104 lib/Driver.php:109 +#: lib/Driver.php:129 lib/Driver.php:134 lib/Driver.php:192 lib/Driver.php:197 +#: lib/Driver.php:202 lib/Driver.php:216 lib/Driver.php:230 lib/Driver.php:244 +#: lib/Driver.php:249 lib/Driver.php:254 lib/Driver.php:272 lib/Driver.php:392 +#: lib/Driver.php:418 lib/Driver.php:434 lib/Page.php:255 lib/Page.php:289 +#: lib/Page.php:294 lib/Page.php:393 lib/Page.php:403 lib/Page.php:413 +#: lib/Page.php:423 lib/Page.php:520 lib/Page.php:531 lib/Page.php:536 +#: lib/Page.php:541 lib/Page.php:546 lib/Page.php:586 +msgid "Unsupported" +msgstr "" + +#: templates/display/AttachedFiles.html:154 +msgid "Update File" +msgstr "" + +#: templates/display/AttachedFiles.html:104 +msgid "Update an Attachment" +msgstr "" + +#: lib/Page/AttachedFiles.php:300 +#, php-format +msgid "Updated attachment \"%s\" on page \"%s\"." +msgstr "" + +#: scripts/wicked.php:156 +#, php-format +msgid "Usage: %s [OPTIONS]..." +msgstr "" + +#: templates/history/header.inc:13 templates/pagelist/header.inc:6 +#: templates/edit/create.inc:18 lib/Page/Search.php:156 +#: templates/display/AttachedFiles.html:9 +msgid "Version" +msgstr "" + +#: lib/Page/AttachedFiles.php:309 +msgid "View page: " +msgstr "" + +#: lib/api.php:181 +msgid "Wiki Templates" +msgstr "" + +#: lib/Block/page.php:3 +msgid "Wiki page" +msgstr "" + +#: display.php:26 +msgid "You are not allowed to lock this page" +msgstr "" + +#: display.php:41 +msgid "You are not allowed to unlock this page" +msgstr "" + +#: lib/Page/AttachedFiles.php:196 +msgid "You do not have permission to delete attachments from this page." +msgstr "" + +#: lib/Page/AttachedFiles.php:237 lib/Page/MergeOrRename.php:169 +#: lib/Page/MergeOrRename.php:184 +#, php-format +msgid "You do not have permission to edit \"%s\"" +msgstr "" + +#: lib/Page/NewPage.php:125 +#, php-format +msgid "You don't have permission to create \"%s\"." +msgstr "" + +#: lib/Page/DeletePage.php:150 +#, php-format +msgid "You don't have permission to delete \"%s\"." +msgstr "" + +#: lib/api.php:141 lib/Page/EditPage.php:107 lib/Page/RevertPage.php:133 +#, php-format +msgid "You don't have permission to edit \"%s\"." +msgstr "" + +#: display.php:74 display.php:77 +msgid "You don't have permission to view this page." +msgstr "" + +#: lib/Page/AttachedFiles.php:245 +msgid "You must enter a change description to attach this file." +msgstr "" + +#: lib/api.php:145 lib/Page/EditPage.php:118 +msgid "You must provide a change log." +msgstr "" + +#: lib/Wicked.php:130 +msgid "_AllPages" +msgstr "" + +#: templates/display/standard.inc:67 +msgid "_BackLinks" +msgstr "" + +#: templates/display/standard.inc:53 +msgid "_Delete" +msgstr "" + +#: templates/display/standard.inc:25 +msgid "_EditPage" +msgstr "" + +#: templates/display/standard.inc:41 +msgid "_Lock" +msgstr "" + +#: templates/display/standard.inc:61 +msgid "_MergeOrRename" +msgstr "" + +#: lib/Wicked.php:130 +msgid "_RecentChanges" +msgstr "" + +#: lib/Wicked.php:130 +msgid "_WikiHome" +msgstr "" + +#: lib/Page/AttachedFiles.php:217 +msgid "attachment" +msgstr "" + +#: scripts/wicked.php:123 +#, php-format +msgid "page \"%s\" doesn't exist." +msgstr "" diff --git a/wicked/po/zh_TW.po b/wicked/po/zh_TW.po new file mode 100644 index 000000000..03b1ecc7a --- /dev/null +++ b/wicked/po/zh_TW.po @@ -0,0 +1,912 @@ +# Wicked Traditional Chinese Translation +# Copyright 2004-2009 The Horde Project +# David Chang , 2004. +msgid "" +msgstr "" +"Project-Id-Version: Wicked 0.1 CVS\n" +"Report-Msgid-Bugs-To: dev@lists.horde.org\n" +"POT-Creation-Date: 2007-01-25 15:10+0800\n" +"PO-Revision-Date: 2006-04-21 10:23+0200\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" + +#: templates/edit/create.inc:13 +#, php-format +msgid "" +"%s does not exist, but maybe you were looking for one of the following pages?" +msgstr "%s ¤£¦s¦b,¤£¹L©Î³\§A­n§äªº´N¬O¤U¦C¨ä¤¤ªº¤@­Ó­¶­±?" + +#: templates/edit/create.inc:30 +#, php-format +msgid "" +"%s does not exist. Click on \"Create\" below if you want to create this page " +"now and start editing." +msgstr "%s ¤£¦s¦b. ¦pªG­n«Ø¥ß³o­Ó­¶­±¨Ã¥B¶}©l½s¿è½ÐÂI¿ï¤U­±ªº \"«Ø¥ß\"." + +#: templates/edit/create.inc:37 +msgid "(None)" +msgstr "(µL)" + +#: scripts/wicked.php:161 +msgid "" +"-d, --debug Run in debug mode (displays extra information)" +msgstr "-d, --debug ¥H°»¿ù¼Ò¦¡°õ¦æ (Åã¥ÜÃB¥~¸ê°T)" + +#: scripts/wicked.php:163 +msgid "" +"-g, --get[=pagetitle] Return all pages (unless pagetitle specified)" +msgstr "-g, --get[=pagetitle] ¦^¶Ç©Ò¦³­¶­± (°£­¶­±¼ÐÃD¤w«ü©w¥~)" + +#: scripts/wicked.php:160 +msgid "-h, --help Show this help" +msgstr "-h, --help Åã¥Ü»¡©ú " + +#: scripts/wicked.php:162 +msgid "-l, --list-pages List pages" +msgstr "-l, --list-pages ¦C¥X­¶­±" + +#: scripts/wicked.php:164 +msgid "-o, --out[=type] Output type for results (default:xml)" +msgstr "-o, --out[=type] ¿é¥X«¬ºA (¹w³]:xml)" + +#: scripts/wicked.php:166 +msgid "-p, --password[=password] Horde login password" +msgstr "-p, --password[=password] Horde µn¤J±K½X" + +#: scripts/wicked.php:165 +msgid "-u, --username[=username] Horde login username" +msgstr "-u, --username[=username] Horde µn¤J¦WºÙ" + +#: templates/display/MergeOrRename.html:31 +msgid "Add the text from this page" +msgstr "±q³o­Ó­¶­±¤¤·s¼W¤å¦r" + +#: lib/Page/AddPage.php:93 +#, php-format +msgid "AddPage: %s" +msgstr "·s¼W­¶­±: %s" + +#: lib/Page/AllPages.php:81 +msgid "AllPages" +msgstr "©Ò¦³­¶­±" + +#: lib/Page/DeletePage.php:77 +msgid "" +"Are you sure you want to delete this page? All versions will be permanently " +"removed." +msgstr "§A½T©w­n§R°£³o­Ó­¶­±¶Ü? ©Ò¦³¦¹­¶­±ªºª©¥»¤]±N¤@¨Ö§R°£." + +#: lib/Page/DeletePage.php:79 +#, php-format +msgid "Are you sure you want to delete version %s of this page?" +msgstr "§A½T©w­n§R°£³o­Ó­¶­±ªº %s ª©¥»¶Ü?" + +#: lib/Page/RevertPage.php:65 +#, php-format +msgid "Are you sure you want to revert to version %s of this page?" +msgstr "§A½T©w­n¦^¦s³o­Ó­¶­±ªº %s ª©¥»¶Ü?" + +#: templates/display/AttachedFiles.html:88 +msgid "Attach File" +msgstr "ªþ¥[ÀÉ®×" + +#: templates/display/AttachedFiles.html:52 +msgid "Attach a New File" +msgstr "ªþ¥[¤@­Ó·sªºÀÉ®×" + +#: templates/display/standard.inc:68 +msgid "AttachedFiles" +msgstr "ªþ¥[ÀÉ®×" + +#: lib/Page/AttachedFiles.php:158 +#, php-format +msgid "AttachedFiles: %s" +msgstr "ªþ¥[ÀÉ®×: %s" + +#: templates/display/standard.inc:69 +msgid "Attached_Files" +msgstr "ªþ¥[ÀÉ®×_F" + +#: templates/display/AttachedFiles.html:7 +msgid "Attachment Name" +msgstr "ªþ¥ó¦WºÙ" + +#: templates/display/standard.inc:119 +msgid "Attachments" +msgstr "ªþ¥ó" + +#: lib/Page/AttachedFiles.php:203 +msgid "Attachments with spaces can't be embedded into a page." +msgstr "ªþ¥[Àɮפº§tªÅ¥Õ¤å¦r¦]¦¹µLªk®r¤J­¶­±¤¤." + +#: templates/pagelist/header.inc:5 templates/pagelist/pagesearch.inc:16 +#: templates/pagelist/titlesearch.inc:16 templates/history/header.inc:23 +#: templates/edit/create.inc:19 templates/display/AttachedFiles.html:10 +msgid "Author" +msgstr "§@ªÌ" + +#: templates/display/standard.inc:106 +msgid "Ba_ck to" +msgstr "¨ì_c" + +#: templates/display/standard.inc:106 +msgid "Back to" +msgstr "¨ì" + +#: templates/display/standard.inc:60 +msgid "BackLinks" +msgstr "°f¦V³sµ²" + +#: lib/Page/BackLinks.php:74 +#, php-format +msgid "BackLinks: %s" +msgstr "°f¦V³sµ²: %s" + +#: lib/Page/AttachedFiles.php:208 +msgid "Can't read uploaded file." +msgstr "µLªkŪ¨ú¤W¶ÇÀÉ®×." + +#: lib/Page/RevertPage.php:113 +#, php-format +msgid "Can't revert to an unknown version." +msgstr "µLªk¦^¦s¨ì¤@­Ó¥¼ª¾ªºª©¥»." + +#: lib/Page/AttachedFiles.php:243 +#, php-format +msgid "Can't update \"%s\": no such attachment." +msgstr "µLªk§ó·s \"%s\": µL¦¹ªþ¥ó." + +#: templates/edit/create.inc:47 templates/edit/standard.inc:33 +#: lib/Page/DeletePage.php:98 lib/Page/MergeOrRename.php:135 +#: lib/Page/RevertPage.php:82 templates/display/MergeOrRename.html:62 +msgid "Cancel" +msgstr "¨ú®ø" + +#: templates/history/header.inc:29 templates/display/AttachedFiles.html:12 +msgid "Change Log" +msgstr "Åܧó°O¿ý" + +#: templates/edit/standard.inc:35 +msgid "Change log" +msgstr "Åܧó°O¿ý" + +#: templates/display/AttachedFiles.html:80 +#: templates/display/AttachedFiles.html:146 +msgid "Change log entry" +msgstr "Åܧó¾ú¥v°O¿ý" + +#: config/prefs.php.dist:13 +msgid "Change menu preferences." +msgstr "Åܧó¿ï³æ°¾¦n³]©w." + +#: templates/display/MergeOrRename.html:40 +msgid "Change references to this page from:" +msgstr "Åܧó¨ì¤U¦C­¶­±¤¤ªº­ì©l³sµ²¦WºÙ:" + +#: lib/Page/MergeOrRename.php:248 +#, php-format +msgid "Changed references from %s to %s" +msgstr "%s¨ì%sªº°Ñ¦Ò¤wÅܧó" + +#: templates/edit/standard.inc:34 +msgid "Changelog is required" +msgstr "¥²¶·­n¦³Åܧó°O¿ý" + +#: templates/edit/create.inc:26 +msgid "" +"Click on \"Create\" below if you want to create this page now and start " +"editing." +msgstr "¦pªG­n«Ø¥ß³o­Ó­¶­±¨Ã¥B¶}©l½s¿è½ÐÂI¿ï¤U­±ªº \"«Ø¥ß\"." + +#: scripts/wicked.php:42 +msgid "Couldn't read command-line options." +msgstr "µLªkŪ¨ú©R¥O¦Cªº¿ï¶µ." + +#: templates/edit/create.inc:46 +msgid "Create" +msgstr "«Ø¥ß" + +#: lib/Page/NewPage.php:124 +#, php-format +msgid "Create Failed: %s" +msgstr "«Ø¥ß¥¢±Ñ: %s" + +#: templates/history/header.inc:24 +msgid "Created" +msgstr "«Ø¥ß¤é" + +#: templates/pagelist/header.inc:6 templates/pagelist/pagesearch.inc:17 +#: templates/pagelist/titlesearch.inc:17 templates/edit/create.inc:20 +msgid "Creation Date" +msgstr "«Ø¥ß¤é" + +#: templates/display/AttachedFiles.html:11 +msgid "Date" +msgstr "¤é´Á" + +#: templates/display/standard.inc:89 +msgid "Debug" +msgstr "°»¿ù" + +#: templates/display/standard.inc:88 +#, php-format +msgid "Debug %s" +msgstr "°»¿ù %s" + +#: lib/Page/DeletePage.php:97 +msgid "Delete" +msgstr "§R°£" + +#: templates/display/standard.inc:47 +#, php-format +msgid "Delete %s" +msgstr "§R°£ %s" + +#: templates/history/header.inc:16 +msgid "Delete Version" +msgstr "§R°£ª©¥»" + +#: templates/history/summary.inc:6 +#, php-format +msgid "Delete Version %s" +msgstr "§R°£ª©¥» %s" + +#: lib/Page/DeletePage.php:91 lib/Page/DeletePage.php:114 +msgid "DeletePage" +msgstr "§R°£­¶­±" + +#: lib/Page/DeletePage.php:137 +#, php-format +msgid "Deleted version %s of \"%s\"." +msgstr "§R°£ \"%2$s\" ªºª©¥» %1$s." + +#: templates/history/header.inc:26 +msgid "Diff From" +msgstr "¤£¦P¦Û" + +#: templates/history/header.inc:27 +msgid "Diff To" +msgstr "¤£¦P¨ì" + +#: diff.php:56 templates/diff/diff.inc:2 +#, php-format +msgid "Diff for %s between %s and %s" +msgstr "%s ªºª©¥»®t²§¤¶©ó %s »P %s" + +#: templates/pagelist/summary.inc:3 +#, php-format +msgid "Display %s" +msgstr "Åã¥Ü %s" + +#: config/prefs.php.dist:11 +msgid "Display Options" +msgstr "Åã¥Ü¿ï¶µ" + +#: templates/pagelist/summary.inc:6 templates/history/summary.inc:2 +#, php-format +msgid "Display Version %s" +msgstr "Åã¥Üª©¥» %s" + +#: templates/display/AttachedFiles.html:13 +msgid "Downloads" +msgstr "¤U¸ü" + +#: preview.php:24 templates/display/standard.inc:23 +#, php-format +msgid "Edit %s" +msgstr "½s¿è %s" + +#: templates/history/header.inc:18 +msgid "Edit Version" +msgstr "½s¿èª©¥»" + +#: templates/history/summary.inc:16 +#, php-format +msgid "Edit Version %s" +msgstr "½s¿èª©¥» %s" + +#: templates/edit/standard.inc:22 lib/Page/EditPage.php:88 +msgid "EditPage" +msgstr "½s¿è­¶­±" + +#: templates/display/AttachedFiles.html:67 +msgid "Enter a name for this file (if blank, will use the file's current name)" +msgstr "¿é¤JÀɮתº¦WºÙ (¦pªGªÅ¥Õ¡A¹w³]¨Ï¥ÎÀɮתº²{¦æ¦WºÙ)" + +#: scripts/mail-filter.php:127 +#, php-format +msgid "Error creating new page: %s" +msgstr "·s­¶­±«Ø¥ß®Éµo¥Í¿ù»~: %s" + +#: lib/Page/MergeOrRename.php:197 +#, php-format +msgid "Error deleting %s: %s" +msgstr "§R°£ %s: %s ®Éµo¥Í¿ù»~" + +#: scripts/mail-filter.php:42 +#, php-format +msgid "Error parsing MIME message: %s\n" +msgstr "°õ¦æ MIME ¶l¥ó: %s »y¥y¤ÀªR®Éµo¥Í¿ù»~\n" + +#: lib/Page/MergeOrRename.php:212 +#, php-format +msgid "Error renaming \"%s\": %s" +msgstr "§ó¦W \"%s\": %s ®Éµo¥Í¿ù»~." + +#: lib/Page/MergeOrRename.php:242 +#, php-format +msgid "Error retrieving %s: %s" +msgstr "Â^¨ú %s: %s ®Éµo¥Í¿ù»~" + +#: lib/Page/AttachedFiles.php:101 lib/Page/AttachedFiles.php:226 +#, php-format +msgid "Error retrieving attachments: %s" +msgstr "Â^¨úªþ¥[ÀÉ®×: %s ®Éµo¥Í¿ù»~" + +#: lib/Page/AddPage.php:53 +#, php-format +msgid "Error retrieving templates: %s" +msgstr "Â^¨ú½d¥»­¶­±: %s ®Éµo¥Í¿ù»~" + +#: lib/Page/MergeOrRename.php:189 lib/Page/MergeOrRename.php:269 +#, php-format +msgid "Error updating %s: %s" +msgstr "§ó·s %s: %s ®Éµo¥Í¿ù»~" + +#: lib/Page/MergeOrRename.php:159 +#, php-format +msgid "Failed to retrieve \"%s\": %s" +msgstr "Â^¨ú \"%s\": %s ¥¢±Ñ" + +#: templates/pagelist/titlesearch.inc:8 +msgid "Go" +msgstr "«e©¹" + +#: lib/Page.php:278 +msgid "Guest" +msgstr "¨Ó»«" + +#: templates/display/standard.inc:75 +msgid "Hi_story" +msgstr "¾ú¥v_s" + +#: templates/display/standard.inc:74 +#, php-format +msgid "History of %s" +msgstr "%s ªº¾ú¥v" + +#: history.php:28 templates/history/header.inc:7 +#, php-format +msgid "History: %s" +msgstr "¾ú¥v: %s" + +#: lib/Wicked.php:131 +msgid "HowTo_UseWiki" +msgstr "¦p¦ó¨Ï¥Î Wiki_U" + +#: templates/display/MergeOrRename.html:26 +msgid "If a page with the new name already exists, then" +msgstr "¦pªG·s¦WºÙ¤w¸g¦s¦bªº¸Ü,¨º´N" + +#: templates/display/standard.inc:82 +msgid "Info" +msgstr "¸ê°T" + +#: templates/display/standard.inc:81 +#, php-format +msgid "Info about %s" +msgstr "Ãö©ó %s ªº¸ê°T" + +#: display.php:24 history.php:16 +msgid "Internal error viewing requested page" +msgstr "À˵ø­¶­±®Éµo¥Í¤@­Ó¤º³¡¿ù»~." + +#: diff.php:39 +#, php-format +msgid "Internal error viewing requested page: %s" +msgstr "À˵ø­¶­±: %s ®Éµo¥Í¤@­Ó¤º³¡¿ù»~." + +#: templates/display/AttachedFiles.html:133 +msgid "Is this a minor update?" +msgstr "³o¬O¤@­Ó¦¸­n§ó·s?" + +#: templates/display/standard.inc:64 +msgid "L_ikePages" +msgstr "¬Û¦ü­¶­±_i" + +#: templates/display/title.inc:6 templates/edit/standard.inc:25 +#, php-format +msgid "Last Modified %s by %s" +msgstr "³Ìªñ¤@¦¸§ó·s %s ¥Ñ %s" + +#: lib/Page/LeastPopular.php:86 +msgid "LeastPopular" +msgstr "³Ì¤£¨ü³ß·Rªº" + +#: templates/display/standard.inc:64 +msgid "LikePages" +msgstr "¬Û¦ü­¶­±" + +#: lib/Page/LikePages.php:76 +#, php-format +msgid "LikePages: %s" +msgstr "¬Û¦ü­¶­±: %s" + +#: templates/display/standard.inc:35 +#, php-format +msgid "Lock %s" +msgstr "Âê©w %s" + +#: templates/display/title.inc:34 templates/edit/standard.inc:22 +#: lib/Page/DeletePage.php:91 lib/Page/RevertPage.php:75 +msgid "Locked" +msgstr "¤wÂê©w" + +#: scripts/wicked.php:104 +#, php-format +msgid "Logged in successfully as \"%s\"." +msgstr "¤w¦¨¥\µn¤J¬° \"%s\"." + +#: scripts/wicked.php:100 +msgid "Login is incorrect." +msgstr "µn¤J¸ê®Æ¤£¥¿½T." + +#: scripts/wicked.php:158 +msgid "" +"Mandatory arguments to long options are mandatory for short options too." +msgstr "" + +#: config/prefs.php.dist:12 +msgid "Menu Preferences" +msgstr "¿ï³æ°¾¦n³]©w" + +#: templates/display/standard.inc:54 +msgid "MergeOrRename" +msgstr "¦X¨Ö©Î§ó¦W" + +#: lib/Page/MergeOrRename.php:120 +#, php-format +msgid "MergeOrRename: %s" +msgstr "¦X¨Ö©Î§ó¦W: %s" + +#: lib/Page/MergeOrRename.php:202 +#, php-format +msgid "Merged \"%s\" into \"%s\"." +msgstr "¦X¨Ö \"%s\" ¨ì \"%s\" ¤¤." + +#: lib/Page/MergeOrRename.php:205 +#, php-format +msgid "Merged \"%s\" into \"%s\". New page: %s\n" +msgstr "¤w¦X¨Ö \"%s\" ¨ì \"%s\" ¤¤. ·s­¶­±: %s\n" + +#: lib/Page/MergeOrRename.php:186 +#, php-format +msgid "Merged from %s" +msgstr "¦X¨Ö¦Û %s" + +#: templates/edit/standard.inc:36 +msgid "Minor Change" +msgstr "¦¸­nÅܧó" + +#: lib/Page/MostPopular.php:86 +msgid "MostPopular" +msgstr "³Ì¨ü³ß·Rªº" + +#: lib/Block/page.php:41 +msgid "Name of wiki page to display" +msgstr "wiki ­¶­±ªºÅã¥Ü¦WºÙ" + +#: lib/Page.php:267 +msgid "Never" +msgstr "±q¥¼" + +#: lib/Page/AttachedFiles.php:269 +#, php-format +msgid "New attachment \"%s\" to page \"%s\"." +msgstr "·s¼Wªþ¥[ÀÉ®× \"%s\" ¨ì­¶­± \"%s\"." + +#: templates/display/MergeOrRename.html:15 +msgid "New name" +msgstr "·s¦WºÙ" + +#: lib/Page/MergeOrRename.php:146 +msgid "New name is the same as old name." +msgstr "·s¦WºÙ»P¦WºÙ¬Û¦P." + +#: lib/Page/NewPage.php:101 +msgid "NewPage" +msgstr "·s¼W­¶­±" + +#: templates/edit/new.inc:22 +#, php-format +msgid "NewPage: %s" +msgstr "·s¼W­¶­±: %s" + +#: lib/Page/EditPage.php:119 +msgid "No changes made" +msgstr "¥¼Åܧó." + +#: lib/Driver.php:126 +msgid "Not implemented." +msgstr "µ{¦¡©|¥¼§¹¦¨." + +#: templates/pagelist/header.inc:3 templates/pagelist/pagesearch.inc:14 +#: templates/pagelist/titlesearch.inc:14 templates/edit/create.inc:17 +msgid "Page" +msgstr "­¶­±" + +#: lib/Page/MergeOrRename.php:174 +#, php-format +msgid "Page \"%s\" already exists." +msgstr "­¶­± \"%s\" ¤w¦s¦b." + +#: lib/Page/NewPage.php:127 +msgid "Page Created" +msgstr "­¶­±¤w«Ø¥ß" + +#: templates/menu.inc:15 config/prefs.php.dist:22 +msgid "Page Lookup" +msgstr "­¶­±¦WºÙ" + +#: lib/Page/EditPage.php:126 +msgid "Page Saved" +msgstr "­¶­±¤wÀx¦s." + +#: templates/edit/create.inc:35 +msgid "Page Template:" +msgstr "­¶­±¼ËªO" + +#: templates/pagelist/header.inc:8 +msgid "Page Views" +msgstr "­¶­±À˵ø" + +#: display.php:38 +#, php-format +msgid "Page failed to lock: %s" +msgstr "­¶­±Âê©w¥¢±Ñ: %s" + +#: display.php:53 +#, php-format +msgid "Page failed to unlock: %s" +msgstr "­¶­±¸Ñ°£Âê©w¥¢±Ñ: %s" + +#: display.php:41 +msgid "Page locked" +msgstr "­¶­±¤wÂê©w" + +#: display.php:56 +msgid "Page unlocked" +msgstr "­¶­±¤w¸Ñ°£Âê©w" + +#: templates/menu.inc:9 lib/Page/PageSearch.php:130 config/prefs.php.dist:24 +msgid "PageSearch" +msgstr "­¶­±·j´M" + +#: lib/api.php:30 lib/api.php:33 +msgid "Pages" +msgstr "©Ò¦³­¶­±" + +#: lib/Page/NewPage.php:118 +msgid "Pages cannot be empty." +msgstr "­¶­±¤£¥iªÅ¥Õ." + +#: templates/display/standard.inc:102 +msgid "Permissio_ns" +msgstr "Åv­­_n" + +#: templates/edit/new.inc:29 templates/edit/standard.inc:32 +msgid "Preview" +msgstr "¹wÄý" + +#: lib/Page/EditPage.php:107 +msgid "Random string did not match." +msgstr "ÀH¾÷¦r¦ê¤£§k¦X." + +#: lib/Page/RecentChanges.php:108 +msgid "RecentChanges" +msgstr "³ÌªñªºÅܧó" + +#: lib/Page/AttachedFiles.php:58 +#, php-format +msgid "Referrer \"%s\" does not exist." +msgstr "°Ñ·Ó \"%s\" ¤£¦s¦b." + +#: lib/Page/AttachedFiles.php:118 +#, php-format +msgid "Reload \"%s\"" +msgstr "­«·sÀ˵ø \"%s\"" + +#: templates/history/header.inc:8 +msgid "Reload History" +msgstr "­«·sÀ˵ø¾ú¥v" + +#: templates/display/title.inc:32 templates/display/title.inc:33 +msgid "Reload Page" +msgstr "­«·sÀ˵ø­¶­±" + +#: lib/Page/MergeOrRename.php:217 +#, php-format +msgid "Renamed \"%s\" to \"%s\"." +msgstr "\"%s\" §ó¦W¬° \"%s\"." + +#: lib/Page/MergeOrRename.php:220 +#, php-format +msgid "Renamed \"%s\" to \"%s\". New page: %s\n" +msgstr "¤w§ó¦W \"%s\" ¬° \"%s\". ·s­¶­±: %s\n" + +#: lib/Driver/sql.php:658 +#, php-format +msgid "Renamed page from %s" +msgstr "§ó¦W­¶­±¦Û %s" + +#: templates/history/header.inc:20 +msgid "Restore Version" +msgstr "¦^¦sª©¥»" + +#: lib/Page/RevertPage.php:81 +msgid "Revert" +msgstr "¦^¦s" + +#: templates/history/summary.inc:26 +#, php-format +msgid "Revert to version %s" +msgstr "¦^¦s¨ìª©¥» %s" + +#: lib/Page/RevertPage.php:75 lib/Page/RevertPage.php:98 +msgid "RevertPage" +msgstr "¦^¦s­¶­±" + +#: lib/Page/RevertPage.php:121 +#, php-format +msgid "Reverted to version %s of \"%s\"." +msgstr "¦^¦s \"%2$s\" ªºª©¥» %1$s." + +#: lib/Driver/sql.php:573 +msgid "Robots are not allowed to create pages." +msgstr "¤£¤¹³\©Ç«È«Ø¥ß­¶­±." + +#: templates/edit/new.inc:28 templates/edit/standard.inc:31 +msgid "Save" +msgstr "Àx¦s" + +#: lib/Page/EditPage.php:123 +#, php-format +msgid "Save Failed: %s" +msgstr "Àx¦s¥¢±Ñ: %s" + +#: templates/pagelist/pagesearch.inc:8 lib/Block/TitleSearch.php:60 +msgid "Search" +msgstr "·j´M" + +#: templates/display/AttachedFiles.html:58 +#: templates/display/AttachedFiles.html:110 +msgid "Select file to attach:" +msgstr "¿ï¾Üªþ¥[ÀÉ®×:" + +#: templates/display/AttachedFiles.html:119 +msgid "Select the file to update" +msgstr "¿ï¾Ü§ó·sÀÉ®×" + +#: templates/display/standard.inc:101 +#, php-format +msgid "Set permissions for %s" +msgstr "³]©w %s ªºÅv­­" + +#: templates/display/title.inc:16 lib/Page/RecentChanges.php:51 +#, php-format +msgid "Show changes for %s" +msgstr "Åã¥Ü %s ªºÅܧó" + +#: lib/Page/RecentChanges.php:58 +#, php-format +msgid "Show version %s" +msgstr "Åã¥Üª©¥» %s" + +#: templates/edit/standard.inc:49 +msgid "Spam Protection - Enter the letters below:" +msgstr "Spam ¨¾ªv - ½Ð¿é¤J¥H¤U¤å¦r:" + +#: templates/display/MergeOrRename.html:33 +msgid "Stop and don't do anything" +msgstr "°±¤î¡A¤°»ò¤]¤£­n°µ" + +#: templates/display/MergeOrRename.html:61 +msgid "Submit" +msgstr "°e¥X" + +#: lib/Page/DeletePage.php:131 +#, php-format +msgid "Successfully deleted \"%s\"." +msgstr "\"%s\"¤w§R°£§¹¦¨." + +#: lib/Page/AttachedFiles.php:193 +#, php-format +msgid "Successfully deleted version %s of \"%s\" from \"%s\"" +msgstr "¤w¦¨¥\ªº¦Û \"%3$s\" §R°£ \"%2$s\" ªºª©¥» %1$s." + +#: lib/Page.php:516 +msgid "Table of Contents" +msgstr "¤º®e¯Á¤Þ" + +#: lib/Page/AttachedFiles.php:249 +#, php-format +msgid "There is already an attachment named \"%s\"." +msgstr "ªþ¥ó¦WºÙ \"%s\" ¤w¦s¦b." + +#: lib/Page/MergeOrRename.php:144 lib/Page/MergeOrRename.php:150 +msgid "This is a required field." +msgstr "¦¹Äæ¦ì¬O¥²»Ý­nªº." + +#: display.php:68 +msgid "This page does not have a history" +msgstr "¦¹­¶­±µL¾ú¥v¸ê®Æ" + +#: lib/Page/MergeOrRename.php:95 +#, php-format +msgid "This page is referenced from %d other page(s)." +msgstr "­ì©l¦WºÙ¥X²{¦b¤U¦C %d ­Ó­¶­±¤¤,¥ç¤@¨Ö§ó§ï¬°·sªº¦WºÙ." + +#: templates/menu.inc:5 lib/Page/TitleSearch.php:116 +#: lib/Block/TitleSearch.php:3 lib/Block/TitleSearch.php:25 +#: config/prefs.php.dist:23 +msgid "TitleSearch" +msgstr "¼ÐÃD·j´M" + +#: config/prefs.php.dist:25 +msgid "Type of search for the quick search box:" +msgstr "§Ö³t·j´MªºÃþ«¬:" + +#: templates/display/standard.inc:32 +msgid "Un_lock" +msgstr "¸Ñ°£Âê©w_l" + +#: lib/Page/StandardPage.php:74 +#, php-format +msgid "Unable to create %s" +msgstr "µLªk«Ø¥ß %s" + +#: lib/Page/StandardPage.php:82 +msgid "Unable to create WikiHome. The wiki is not configured." +msgstr "µLªk«Ø¥ß WikiHome. wiki ©|¥¼³]©w." + +#: templates/display/standard.inc:31 +#, php-format +msgid "Unlock %s" +msgstr "¸Ñ°£Âê©w %s" + +#: lib/Driver.php:80 lib/Driver.php:94 lib/Driver.php:106 lib/Driver.php:111 +#: lib/Driver.php:131 lib/Driver.php:136 lib/Driver.php:194 lib/Driver.php:199 +#: lib/Driver.php:204 lib/Driver.php:218 lib/Driver.php:232 lib/Driver.php:246 +#: lib/Driver.php:251 lib/Driver.php:256 lib/Driver.php:274 lib/Driver.php:394 +#: lib/Driver.php:420 lib/Driver.php:436 lib/Page.php:259 lib/Page.php:293 +#: lib/Page.php:298 lib/Page.php:397 lib/Page.php:407 lib/Page.php:417 +#: lib/Page.php:427 lib/Page.php:437 lib/Page.php:448 lib/Page.php:557 +#: lib/Page.php:568 lib/Page.php:573 lib/Page.php:578 lib/Page.php:583 +#: lib/Page.php:623 +msgid "Unsupported" +msgstr "¥¼³Q¤ä´©" + +#: templates/display/AttachedFiles.html:154 +msgid "Update File" +msgstr "ÅܧóÀÉ®×" + +#: templates/display/AttachedFiles.html:104 +msgid "Update an Attachment" +msgstr "Åܧó¤@­Óªþ¥ó" + +#: lib/Page/AttachedFiles.php:267 +#, php-format +msgid "Updated attachment \"%s\" on page \"%s\"." +msgstr "­¶­± \"%2$s\" ¤¤ªºªþ¥[ÀÉ®× \"%1$s\" ¤w§ó·s." + +#: scripts/wicked.php:156 +#, php-format +msgid "Usage: %s [OPTIONS]..." +msgstr "»yªk: %s [¿ï¶µ]..." + +#: templates/pagelist/header.inc:4 templates/pagelist/pagesearch.inc:15 +#: templates/pagelist/titlesearch.inc:15 templates/history/header.inc:13 +#: templates/edit/create.inc:18 templates/display/AttachedFiles.html:9 +msgid "Version" +msgstr "ª©¥»" + +#: lib/Page/AttachedFiles.php:274 +msgid "View page: " +msgstr "À˵ø­¶­±: " + +#: lib/Block/page.php:3 +msgid "Wiki page" +msgstr "Wiki ­¶­±" + +#: display.php:32 +msgid "You are not allowed to lock this page" +msgstr "§A¨S¦³¦¹­¶­±ªºÂê©wÅv­­." + +#: display.php:47 +msgid "You are not allowed to unlock this page" +msgstr "§A¨S¦³¦¹­¶­±ªº¸Ñ°£Âê©wÅv­­." + +#: lib/Page/AttachedFiles.php:183 +msgid "You do not have permission to delete attachments from this page." +msgstr "§A¨S¦³§R°£¦¹­¶­±¤¤ªþ¥[ÀɮתºÅv­­." + +#: lib/Page/AttachedFiles.php:213 lib/Page/MergeOrRename.php:164 +#: lib/Page/MergeOrRename.php:179 +#, php-format +msgid "You do not have permission to edit \"%s\"" +msgstr "§A¨S¦³½s¿è \"%s\" ªºÅv­­." + +#: lib/Page/NewPage.php:114 +#, php-format +msgid "You don't have permission to create \"%s\"." +msgstr "§A¨S¦³«Ø¥ß \"%s\" ªºÅv­­." + +#: lib/Page/DeletePage.php:145 +#, php-format +msgid "You don't have permission to delete \"%s\"." +msgstr "§A¨S¦³§R°£ \"%s\" ªºÅv­­." + +#: lib/Page/EditPage.php:102 lib/Page/RevertPage.php:127 +#, php-format +msgid "You don't have permission to edit \"%s\"." +msgstr "§A¨S¦³½s¿è \"%s\" ªºÅv­­." + +#: display.php:80 display.php:83 +msgid "You don't have permission to view this page." +msgstr "§A¨S¦³À˵ø¦¹ª«¥óªºÅv­­." + +#: lib/Page/AttachedFiles.php:219 +msgid "You must enter a change description to attach this file." +msgstr "§A¥²¶·¿é¤J¤@­ÓÅܧó´y­z¥HÀx¦sªþ¥[ÀÉ®×." + +#: lib/Page/EditPage.php:113 +msgid "You must provide a change log." +msgstr "§A¥²¶·¿é¤J¤@­ÓÅܧó´y­z." + +#: lib/Wicked.php:132 +msgid "_AllPages" +msgstr "©Ò¦³­¶­±_A" + +#: templates/display/standard.inc:60 +msgid "_BackLinks" +msgstr "°f¦V³sµ²_B" + +#: templates/display/standard.inc:48 +msgid "_Delete" +msgstr "§R°£_D" + +#: templates/display/standard.inc:24 +msgid "_EditPage" +msgstr "½s¿è­¶­±_E" + +#: templates/display/standard.inc:36 +msgid "_Lock" +msgstr "Âê©w_L" + +#: templates/display/standard.inc:55 +msgid "_MergeOrRename" +msgstr "¦X¨Ö©Î§ó¦W_M" + +#: lib/Wicked.php:132 +msgid "_PageSearch" +msgstr "­¶­±·j´M_P" + +#: lib/Wicked.php:131 +msgid "_RecentChanges" +msgstr "³ÌªñªºÅܧó_R" + +#: lib/Wicked.php:132 +msgid "_TitleSearch" +msgstr "¼ÐÃD·j´M_T" + +#: lib/Wicked.php:131 +msgid "_WikiHome" +msgstr "Wiki ­º­¶_W" + +#: scripts/wicked.php:123 +#, php-format +msgid "page \"%s\" doesn't exist." +msgstr "­¶­± \"%s\" ¤£¦s¦b." diff --git a/wicked/preview.php b/wicked/preview.php new file mode 100644 index 000000000..4257e93db --- /dev/null +++ b/wicked/preview.php @@ -0,0 +1,28 @@ + + */ + +@define('WICKED_BASE', dirname(__FILE__)); +require_once WICKED_BASE . '/lib/base.php'; + +if (!($text = Horde_Util::getFormData('page_text'))) { + exit; +} + +$page = new Page(); +$wiki = &$page->getProcessor(); +$text = $wiki->transform($text); + +$title = sprintf(_("Edit %s"), Horde_Util::getFormData('age')); +require WICKED_TEMPLATES . '/common-header.inc'; +require WICKED_TEMPLATES . '/menu.inc'; +require WICKED_TEMPLATES . '/edit/preview.inc'; +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/wicked/scripts/.htaccess b/wicked/scripts/.htaccess new file mode 100644 index 000000000..3a4288278 --- /dev/null +++ b/wicked/scripts/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/wicked/scripts/data/AddingPages b/wicked/scripts/data/AddingPages new file mode 100644 index 000000000..3d733442e --- /dev/null +++ b/wicked/scripts/data/AddingPages @@ -0,0 +1,4 @@ ++ Creating New Pages +You don't have to specifically create nodes. You can just type away and make up a new node name (a string with an initial capital letter, some lower case letters and at least one other capital letter). When you view the page again it will be a link. The first time you click on that link, the wiki will automatically create the page and you can edit it. + +See WickedTextFormat for information on how to format pages in this wiki. diff --git a/wicked/scripts/data/HowToUseWiki b/wicked/scripts/data/HowToUseWiki new file mode 100644 index 000000000..ccd5686c7 --- /dev/null +++ b/wicked/scripts/data/HowToUseWiki @@ -0,0 +1,7 @@ +Browsing the wiki is just like browsing the web. You can edit any page by clicking on the edit button on any page. + +AddingPages - How to create new pages in Wicked. +WickedTextFormat - How to format Wicked pages. +SandBox - A page you can experiment on. + + diff --git a/wicked/scripts/data/MethodSetRenderConf b/wicked/scripts/data/MethodSetRenderConf new file mode 100644 index 000000000..0f86d16f4 --- /dev/null +++ b/wicked/scripts/data/MethodSetRenderConf @@ -0,0 +1,29 @@ +: Set one key at a time : {{void **setFormatConf** (string //format name//, +string //rule name//, string //conf key//, mixed //conf value//)}} + +: Set all keys at once : {{void **setFormatConf** (string //format name//, +string //rule name//, array //conf key-value pairs//)}} + +Set the configuration for a rule renderer. For example, to tell the "Table" +rule in "Xhtml" format what CSS class to use for data cells... + + +$wiki =& new Text_Wiki(); +$wiki->setRenderConf('Xhtml', 'Table', 'css_td', 'my_td_class'); + + +To set all of the "Table" configuration keys for "Xhtml" at the same time... + + +$wiki =& new Text_Wiki(); + +$conf = array( + 'css_table' => 'my_table_class', + 'css_tr' => 'my_tr_class', + 'css_td' => 'my_td_class' +); + +$wiki->setRenderConf('Xhtml', 'Table', $conf); + + +> **Note:** Render rule conf keys may be different from format to format. diff --git a/wicked/scripts/data/RuleInterwiki b/wicked/scripts/data/RuleInterwiki new file mode 100644 index 000000000..5e4ede034 --- /dev/null +++ b/wicked/scripts/data/RuleInterwiki @@ -0,0 +1,54 @@ +[[toc]] + +++ About This Rule + +|| **Name** || interwiki || +|| **Type** || inline || +|| **Syntax** normal || {{``SiteName:PageName``}} || +|| **Syntax** described || {{[``SiteName:PageName`` Show this text instead]}} +|| **|| + +++ Parse Configuration Keys + +None. + +++ Render Configuration Keys + +|| **Format** || **Key** || **Type** || **Description** || +|| {{Xhtml}} || {{sites}} || array || An array of key-value pairs where the +|| key is the text of the interwiki site name and the value is the URL for +|| that site || +|| {{Xhtml}} || {{target}} || string || The HREF target for interwiki links; +|| e.g., '_blank' || + + +++ Description + +Interwiki is a way of representing wiki pages on other wikis. To mark an +interwiki link, type the name of the site, a colon, then the name of the page +on the interwiki site. + +Text_Wiki needs to know the URL for the various interwiki sites so it make +clickable links; to tell Text_Wiki the site names and urls, use the +{{[MethodSetRenderConf setRenderConf()]}} method. The array key should be the +name of the site, and the array value should be the URL part leading up to the +page-value. + + +// [snip] create a Text_Wiki object called $wiki + +// set up an array of interwiki site names and urls +$sites = array( + 'MeatBall' => 'http://www.usemod.com/cgi-bin/mb.pl?%s', + 'Advogato' => 'http://advogato.org/%s', + 'Wiki' => 'http://c2.com/cgi/wiki?%s' +); + +// configure the interwiki rule +$wiki->setRenderConf('xhtml', 'interwiki', 'sites', $sites); + + +> **Note:** Note the use of %s in the above URL strings; the %s will be + replaced by the page name. If you specify a string that does not have a + %s in it, Text_Wiki will assume that the page name should go at the very + end of the string. diff --git a/wicked/scripts/data/RuleWikilink b/wicked/scripts/data/RuleWikilink new file mode 100644 index 000000000..a60741aaa --- /dev/null +++ b/wicked/scripts/data/RuleWikilink @@ -0,0 +1,86 @@ +[[toc]] + +++ About This Rule + +|| **Name** || wikilink || +|| **Type** || inline || +|| **Syntax** normal || {{``AnyPageName``}} || +|| **Syntax** described || {{``[AnyPageName displayed link text]``}} || + +++ Parse Configuration Keys + +None. + +++ Render Configuration Keys + +|| **Format** || **Key** || **Type** || **Description** || +|| {{Xhtml}} || {{pages}} || array || A sequential array of page names that +|| exist in the wiki || +|| {{Xhtml}} || {{view_url}} || string || The base URL to view pages in the +|| wiki || +|| {{Xhtml}} || {{new_url}} || string || The base URL to create new pages in +|| the wiki || +|| {{Xhtml}} || {{new_text}} || string || The text displayed after +|| non-existent page names || + +++ Description + +As you should know by now, page names in wikis are made of +!WordsSmashedTogether in !StudlyCapsMode. The wikilink rule looks for +!WikiPages and creates links out of them. This requires some moderate +configuration to customize it for your environment. + +In Text_Wiki, wiki words are allowed to have numbers in them; each digit 0-9 +is treated as a lower-case character for purposes of parsing words. + +The rule needs to know what pages exist in the wiki, so that when it finds a +page name in the source text, it can show the proper link (either to view an +existing page, or create a page that has been named but does not yet exist). +To tell Text_Wiki what wiki pages exist, use the 'pages' key in +{{[MethodSetRenderConf setRenderConf()]}}. + + +// [snip] create a Text_Wiki object called $wiki + +// get the list of pages in the wiki +$pages = array( + 'HomePage', + 'WordsSmashedTogether', + 'SomeOtherPages' +); + +$wiki->setRenderConf('xhtml', 'wikilink', 'pages', $pages); + + +Now Text_Wiki needs to know where to link pages to. There are two +configuration keys for this, 'view_url' and 'new_url'. If the parser finds a +page name that exists in the 'pages' array, it will use 'view_url'; if the +page is not in the 'pages' array, it will use 'new_url'. + + +$wiki->setRenderConf('xhtml', 'wikilink', 'view_url', + 'http://example.php/view.php?page=%s'); + +$wiki->setRenderConf('xhtml', 'wikilink', 'new_url', + 'http://example.php/new.php?page=%s'); + + +> **Note:** Note the use of %s in the above URL strings; the %s will be + replaced by the page name. If you specify a string that does not have a + %s in it, Text_Wiki will assume that the page name should go at the very + end of the string. + +Finally, if the page exists, Text_Wiki will make the page name itself a link. +If the page does not exist, Text_Wiki will add some text after the page name +and make that clickable instead (leading to the 'new_url'). Normally the +'new_text' is just a question mark, but you can place any literal text you +like. + + +// make the new_text a tilde +$wiki->setRenderConf('xhtml', 'wikilink', 'new_text', '~'); + +// make the new_text an image tag +$wiki->setRenderConf('xhtml', 'wikilink', 'new_text', + ''); + diff --git a/wicked/scripts/data/SandBox b/wicked/scripts/data/SandBox new file mode 100644 index 000000000..f54bc73ce --- /dev/null +++ b/wicked/scripts/data/SandBox @@ -0,0 +1,6 @@ +This is the sandbox. You can try out Wiki in here, and no one will care - but don't be rude and delete this explanatory text. **Stay below the first horizontal rule.** + +For reference, you might want to visit HowToUseWiki, WickedTextFormat or AddingPages. + +---- + diff --git a/wicked/scripts/data/SmashWordsTogether b/wicked/scripts/data/SmashWordsTogether new file mode 100644 index 000000000..97973bd16 --- /dev/null +++ b/wicked/scripts/data/SmashWordsTogether @@ -0,0 +1 @@ +Generic target page. You SmashWordsTogether to indicate a wiki page name. \ No newline at end of file diff --git a/wicked/scripts/data/WickedTextFormat b/wicked/scripts/data/WickedTextFormat new file mode 100644 index 000000000..599d0651a --- /dev/null +++ b/wicked/scripts/data/WickedTextFormat @@ -0,0 +1,352 @@ ++ Sample Page for Text_Wiki Default Markup + +[[toc]] + +---- + +++ General Notes + +The markup described on this page is for the default {{Text_Wiki}} rules; \ +it is a combination of the [http://tavi.sourceforge.net WikkTikkiTavi] \ +and [http://develnet.org/ coWiki] markup styles. + +All text is entered as plain text, and will be converted to HTML entities as \ +necessary. This means that {{<}}, {{>}}, {{&}}, and so on are converted for \ +you (except in special situations where the characters are Wiki markup; \ +Text_Wiki is generally smart enough to know when to convert and when not to). + +Just hit "return" twice to make a paragraph break. If you want \ +to keep the same logical line but have to split it across \ +two physical lines (such as when your editor only shows a certain number \ +of characters per line), end the line with a backslash {{\}} and hit \ +return once. This will cause the two lines to be joined on display, and the \ +backslash will not show. (If you end a line with a backslash and a tab \ +or space, it will ''not'' be joined with the next line, and the backslash \ +will be printed.) + + +---- + +++ Inline Formatting + +|| {{``//emphasis text//``}} || //emphasis text// || +|| {{``**strong text**``}} || **strong text** || +|| {{``//**emphasis and strong**//``}} || //**emphasis and strong**// || +|| {{``{{teletype text}}``}} || {{teletype text}} || +|| {{``@@--- delete text +++ insert text @@``}} || @@--- delete text +++ insert text @@ || +|| {{``@@--- delete only @@``}} || @@--- delete only @@ || +|| {{``@@+++ insert only @@``}} || @@+++ insert only @@ || +|| {{``##red|red text## ``}} || ##red|red text## || +|| {{``##FFFF00|yellow text##``}} || ##FFFF00|yellow text## || + + +---- + +++ Literal Text + +If you don't want Text_Wiki to parse some text, enclose it in two backticks (not single-quotes). + + + +This //text// gets **parsed**. + +``This //text// does not get **parsed**.`` + + + +This //text// gets **parsed**. + +``This //text// does not get **parsed**.`` + +---- + +++ Headings + +You can make various levels of heading by putting \ +equals-signs before and after the text (all on its \ +own line): + + ++++ Level 3 Heading +++++ Level 4 Heading ++++++ Level 5 Heading +++++++ Level 6 Heading + + ++++ Level 3 Heading +++++ Level 4 Heading ++++++ Level 5 Heading +++++++ Level 6 Heading + +---- + +++ Table of Contents + +To create a list of every heading, with a link to that heading, put a table of contents tag on its own line. + + +[[toc]] + + +---- + +++ Horizontal Rules + +Use four dashes ({{``----``}}) to create a horizontal rule. + +---- + +++ Lists + ++++ Bullet Lists + +You can create bullet lists by starting a paragraph with one or \ +more asterisks. + + +* Bullet one + * Sub-bullet + + +* Bullet one + * Sub-bullet + ++++ Numbered Lists + +Similarly, you can create numbered lists by starting a paragraph \ +with one or more hashes. + + +# Numero uno +# Number two + # Sub-item + + +# Numero uno +# Number two + # Sub-item + + ++++ Mixing Bullet and Number List Items + +You can mix and match bullet and number lists: + + +# Number one + * Bullet + * Bullet +# Number two + * Bullet + * Bullet + * Sub-bullet + # Sub-sub-number + # Sub-sub-number +# Number three + * Bullet + * Bullet + + +# Number one + * Bullet + * Bullet +# Number two + * Bullet + * Bullet + * Sub-bullet + # Sub-sub-number + # Sub-sub-number +# Number three + * Bullet + * Bullet + + + ++++ Definition Lists + +You can create a definition (description) list with the following syntax: + + +: Item 1 : Something +: Item 2 : Something else + + +: Item 1 : Something +: Item 2 : Something else + +---- + +++ Block Quotes + +You can mark a blockquote by starting a line with one or more '>' \ +characters, followed by a space and the text to be quoted. + + +This is normal text here. + +> Indent me! The quick brown fox jumps over the lazy dog. \ +Now this the time for all good men to come to the aid of \ +their country. Notice how we can continue the block-quote \ +in the same "paragraph" by using a backslash at the end of \ +the line. +> +> Another block, leading to... +>> Second level of indenting. This second is indented even \ +more than the previous one. + +Back to normal text. + + +This is normal text here. + +> Indent me! The quick brown fox jumps over the lazy dog. \ +Now this the time for all good men to come to the aid of \ +their country. Notice how we can continue the block-quote \ +in the same "paragraph" by using a backslash at the end of \ +the line. +> +> Another block, leading to... +>> Second level of indenting. This second is indented even \ +more than the previous one. + +Back to normal text. + + +---- + +++ Links and Images + ++++ Wiki Links + +SmashWordsTogether to create a page link. + +You can force a WikiPage name '''not''' to be clickable by putting \ +an exclamation mark in front of it. + + +WikiPage !WikiPage + + +WikiPage !WikiPage + +You can create a "described" or "labeled" link to a wiki page by putting the page name in brackets, followed by some text. + + +[WikiPage Descriptive text for the link.] + + +[WikiPage Descriptive text for the link.] + +> **Note:** existing wiki pages must be in the [RuleWikilink wikilink] {{pages}} configuration, and the [RuleWikilink wikilink] {{view_url}} configuration value must be set for the linking to work. + ++++ Interwiki Links + +Interwiki links are links to pages on other Wiki sites. \ +Type the {{``SiteName:PageName``}} like this: + +* MeatBall:RecentChanges +* Advogato:proj/WikkiTikkiTavi +* Wiki:WorseIsBetter + +> **Note:** the interwiki site must be in the [RuleInterwiki interwiki] {{sites}} configuration array. + ++++ URLs + +Create a remote link simply by typing its URL: http://ciaweb.net. + +If you like, enclose it in brackets to create a numbered reference \ +and avoid cluttering the page; {{``[http://ciaweb.net/free/]``}} becomes [http://ciaweb.net/free/]. + +Or you can have a described-reference instead of a numbered reference: + +[http://pear.php.net PEAR] + +[http://pear.php.net PEAR] + ++++ On-Page Links + +Create and anchor on the page by {{``[[# anchorName nice anchor text]]``}} [[# anchorName nice anchor text]] and refer to it by {{``#anchorName``}} #anchorName, or {{``[#anchorName use normal link renaming]``}} [#anchorName use normal link renaming]. + ++++ Images + +You can put a picture in a page with {{``[[image foo.jpg]]``}}. You can use any file type, but most browsers only support GIF, JPEG, and PNG formats. The filename can either be a relative reference (in which case the wiki looks for a file attached to the current page - or a different wiki page if the file name is prefixed with a page name, e.g. {{``[[image WikiHome:foo.jpg]]``}}), an absolute reference which begins with a slash (in which case the wiki uses it to retrieve a file relative to the web server's root), or a full, external URL. + +Additonal attributes, such as "alt" can follow the image filename or URL like so: {{``[[image foo.jpg alt="A Foo JPEG"]]``}}. "link" is a special attribute which makes the image a link to the specified URL. + +---- + +++ Code Blocks + +Create code blocks by using {{...}} tags (each on its own line). + + +This is an example code block! + + + +To create PHP blocks that get automatically colorized when you use PHP tags, simply surround the code with {{...}} tags (the tags themselves should each be on their own lines, and no need for the {{}} tags). + + + + // Set up the wiki options + $options = array(); + $options['view_url'] = "index.php?page="; + + // load the text for the requested page + $text = implode('', file($page . '.wiki.txt')); + + // create a Wiki objext with the loaded options + $wiki = new Text_Wiki($options); + + // transform the wiki text. + echo $wiki->transform($text); + + + + +// Set up the wiki options +$options = array(); +$options['view_url'] = "index.php?page="; + +// load the text for the requested page +$text = implode('', file($page . '.wiki.txt')); + +// create a Wiki objext with the loaded options +$wiki = new Text_Wiki($options); + +// transform the wiki text. +echo $wiki->transform($text); + + +---- + +++ Tables + +You can create tables using pairs of vertical bars: + + +||~ Heading one ||~ Heading two || +|| cell one || cell two || +|||| big ol' line || +|| cell four || cell five || +|| cell six || here's a very long cell || + + +||~ Heading one ||~ Heading two || +|| cell one || cell two || +|||| big ol' line || +|| cell four || cell five || +|| cell six || here's a very long cell || + + +|| lines must start and end || with double vertical bars || nothing || +|| cells are separated by || double vertical bars || nothing || +|||| you can span multiple columns by || starting each cell || +|| with extra cell |||| separators || +|||||| but perhaps an example is the easiest way to see || + + +|| lines must start and end || with double vertical bars || nothing || +|| cells are separated by || double vertical bars || nothing || +|||| you can span multiple columns by || starting each cell || +|| with extra cell |||| separators || +|||||| but perhaps an example is the easiest way to see || diff --git a/wicked/scripts/data/WikiHome b/wicked/scripts/data/WikiHome new file mode 100644 index 000000000..28f1d2a94 --- /dev/null +++ b/wicked/scripts/data/WikiHome @@ -0,0 +1,11 @@ +A WikiWikiWeb is a site where everyone can collaborate on the content. The most well-known and widely used Wiki is the Portland Pattern Repository at http://c2.com/cgi-bin/wiki?WikiWikiWeb. + +You and I will find these statements there particularly relevant: + +''The point is to make the EditPage form simple and the ((Search)) search fast.'' + +''In addition to being quick, this site also aspires to Zen ideals generally labeled WabiSabi. Zen finds beauty in the imperfect and ephemeral. When it comes down to it, that's all you need.'' + +''The Universe tends toward chaos. The Universe tends toward Wiki.'' + +You can say hello on RecentVisitors, or read about HowToUseWiki and AddingPages. Currently this Wiki has no theme for discussion, so go ahead and play with it and have fun! diff --git a/wicked/scripts/data/WikiPage b/wicked/scripts/data/WikiPage new file mode 100644 index 000000000..0bb050cdc --- /dev/null +++ b/wicked/scripts/data/WikiPage @@ -0,0 +1 @@ +Generic target page (for example usage). \ No newline at end of file diff --git a/wicked/scripts/mail-filter.php b/wicked/scripts/mail-filter.php new file mode 100755 index 000000000..5816edb2c --- /dev/null +++ b/wicked/scripts/mail-filter.php @@ -0,0 +1,148 @@ +#!/usr/bin/php +fatal(sprintf(_("Error parsing MIME message: %s\n"), + $message->getMessage())); +} + +if (preg_match("/^(.*?)\r?\n\r?\n/s", $text, $matches)) { + $hdrText = $matches[1]; +} else { + $hdrText = $text; +} +$headers = Horde_Mime_Headers::parseHeaders($hdrText); + +// Format the message into a pageBody. +$pageBody = ""; +foreach ($headers as $name => $vals) { + foreach ($keepHeaders as $kh) { + if (!strcasecmp($kh, $name)) { + if (is_array($vals)) { + foreach ($vals as $val) { + $pageBody .= "'''" . $name . ":''' " . $val . " _\n"; + } + } else { + $pageBody .= "'''" . $name . ":''' " . $vals . " _\n"; + } + } + } +} +$pageBody .= "\n\n"; + +// Create a new name for the page. +$pageName = headerValue($headers, 'Subject'); +if (empty($pageName)) { + $pageName = 'no subject'; +} +$pageName .= " -- "; + +$msgFrom = headerValue($headers, 'From'); +if (preg_match('/^\s*"?(.*?)"?\s*<.*>/', $msgFrom, $matches)) { + $msgFrom = $matches[1]; +} elseif (preg_match('/<(.*)>/', $msgFrom, $matches)) { + $msgFrom = $matches[1]; +} +if (!empty($msgFrom)) { + $pageName .= $msgFrom . " "; +} + +$msgDate = headerValue($headers, 'Date'); +if (empty($msgDate)) { + $time = time(); +} else { + $time = strtotime($msgDate); +} +$pageName .= date($dateFormat, $time); + +// We could have two messages with the same name, so append a number. +if ($wicked->pageExists($pageName)) { + $counter = 2; + while ($wicked->pageExists($pageName . " (" . $counter . ")")) { + $counter++; + } + $pageName .= " (" . $counter . ")"; +} + +// Look for a text part. +// FIXME: this is _extremely_ crude. +if ($message->getType() == 'text/plain') { + $pageBody .= $message->getContents(); +} elseif ($message->getType() == 'multipart/alternative') { + foreach ($message->getParts() as $part) { + if ($part->getType() == 'text/plain') { + $pageBody .= $part->getContents(); + break; + } + } +} else { + $pageBody .= "[ Could not render body of message. ]"; +} + +$pageBody .= "\n"; + +if (is_null($pageName)) { + $pageName = "EmailMessage" . ucfirst(md5(uniqid('wicked', true))); +} + +$res = $wicked->newPage($pageName, $pageBody); +if (is_a($res, 'PEAR_Error')) { + $cli->fatal(sprintf(_("Error creating new page: %s"), $res->getMessage())); +} + +exit(0); + +function headerValue($headers, $name) +{ + $val = null; + foreach ($headers as $headerName => $headerVal) { + if (!strcasecmp($name, $headerName)) { + if (is_array($headerVal)) { + $thisVal = join(', ', $headerVal); + } else { + $thisVal = $headerVal; + } + if (is_null($val)) { + $val = $thisVal; + } else { + $val .= ", " . $thisVal; + } + } + } + return $val; +} diff --git a/wicked/scripts/sql/wicked.mssql.sql b/wicked/scripts/sql/wicked.mssql.sql new file mode 100644 index 000000000..edd47c495 --- /dev/null +++ b/wicked/scripts/sql/wicked.mssql.sql @@ -0,0 +1,61 @@ +-- $Horde: wicked/scripts/sql/wicked.mssql.sql,v 1.4 2009/10/19 10:55:34 jan Exp $ + +CREATE TABLE wicked_pages ( + page_id INT NOT NULL, + page_name VARCHAR(100) NOT NULL, + page_text VARCHAR(MAX), + page_hits INT DEFAULT 0, + page_majorversion SMALLINT NOT NULL, + page_minorversion INT NOT NULL, + version_created INT NOT NULL, + change_author VARCHAR(255), + change_log VARCHAR(MAX), +-- + PRIMARY KEY (page_id), + UNIQUE (page_name) +); + +CREATE TABLE wicked_history ( + page_id INT NOT NULL, + page_name VARCHAR(100) NOT NULL, + page_text VARCHAR(MAX), + page_majorversion SMALLINT NOT NULL, + page_minorversion INT NOT NULL, + version_created INT NOT NULL, + change_author VARCHAR(255), + change_log VARCHAR(MAX), +-- + PRIMARY KEY (page_id, page_majorversion, page_minorversion) +); + +CREATE INDEX wicked_history_name_idx ON wicked_history (page_name); +CREATE INDEX wicked_history_version_idx ON wicked_history (page_majorversion, page_minorversion); + +CREATE TABLE wicked_attachments ( + page_id INT NOT NULL, + attachment_name VARCHAR(100) NOT NULL, + attachment_hits INT DEFAULT 0, + attachment_majorversion SMALLINT NOT NULL, + attachment_minorversion INT NOT NULL, + attachment_created INT NOT NULL, + change_author VARCHAR(255), + change_log VARCHAR(MAX), +-- + PRIMARY KEY (page_id, attachment_name) +); + +CREATE TABLE wicked_attachment_history ( + page_id INT NOT NULL, + attachment_name VARCHAR(100) NOT NULL, + attachment_majorversion SMALLINT NOT NULL, + attachment_minorversion INT NOT NULL, + attachment_created INT NOT NULL, + change_author VARCHAR(255), + change_log VARCHAR(MAX), +-- + PRIMARY KEY (page_id, attachment_name, attachment_majorversion, + attachment_minorversion) +); + +CREATE INDEX wicked_attachment_history_name_idx ON wicked_attachment_history (page_id, attachment_name); +CREATE INDEX wicked_attachment_history_version_idx ON wicked_attachment_history (attachment_majorversion, attachment_minorversion); diff --git a/wicked/scripts/sql/wicked.oci8.sql b/wicked/scripts/sql/wicked.oci8.sql new file mode 100644 index 000000000..b9472c014 --- /dev/null +++ b/wicked/scripts/sql/wicked.oci8.sql @@ -0,0 +1,61 @@ +-- $Horde: wicked/scripts/sql/wicked.oci8.sql,v 1.3 2009/10/19 11:18:27 jan Exp $ + +CREATE TABLE wicked_pages ( + page_id NUMBER(16) NOT NULL, + page_name VARCHAR2(100) NOT NULL, + page_text CLOB, + page_hits NUMBER(16) DEFAULT 0, + page_majorversion NUMBER(8) NOT NULL, + page_minorversion NUMBER(16) NOT NULL, + version_created NUMBER(16) NOT NULL, + change_author VARCHAR2(255), + change_log CLOB, +-- + PRIMARY KEY (page_id), + UNIQUE (page_name) +); + +CREATE TABLE wicked_history ( + page_id NUMBER(16) NOT NULL, + page_name VARCHAR2(100) NOT NULL, + page_text CLOB, + page_majorversion NUMBER(8) NOT NULL, + page_minorversion NUMBER(16) NOT NULL, + version_created NUMBER(16) NOT NULL, + change_author VARCHAR2(255), + change_log CLOB, +-- + PRIMARY KEY (page_id, page_majorversion, page_minorversion) +); + +CREATE INDEX wicked_history_name_idx ON wicked_history (page_name); +CREATE INDEX wicked_history_version_idx ON wicked_history (page_majorversion, page_minorversion); + +CREATE TABLE wicked_attachments ( + page_id NUMBER(16) NOT NULL, + attachment_name VARCHAR2(100) NOT NULL, + attachment_hits NUMBER(16) DEFAULT 0, + attachment_majorversion NUMBER(8) NOT NULL, + attachment_minorversion NUMBER(16) NOT NULL, + attachment_created NUMBER(16) NOT NULL, + change_author VARCHAR2(255), + change_log CLOB, +-- + PRIMARY KEY (page_id, attachment_name) +); + +CREATE TABLE wicked_attachment_history ( + page_id NUMBER(16) NOT NULL, + attachment_name VARCHAR2(100) NOT NULL, + attachment_majorversion NUMBER(8) NOT NULL, + attachment_minorversion NUMBER(16) NOT NULL, + attachment_created NUMBER(16) NOT NULL, + change_author VARCHAR2(255), + change_log CLOB, +-- + PRIMARY KEY (page_id, attachment_name, attachment_majorversion, + attachment_minorversion) +); + +CREATE INDEX wicked_attach_hist_name_idx ON wicked_attachment_history (page_id, attachment_name); +CREATE INDEX wicked_attach_hist_version_idx ON wicked_attachment_history (attachment_majorversion, attachment_minorversion); diff --git a/wicked/scripts/sql/wicked.sql b/wicked/scripts/sql/wicked.sql new file mode 100644 index 000000000..f4336aec2 --- /dev/null +++ b/wicked/scripts/sql/wicked.sql @@ -0,0 +1,60 @@ +-- $Horde: wicked/scripts/sql/wicked.sql,v 1.8 2009/10/19 10:55:34 jan Exp $ + +CREATE TABLE wicked_pages ( + page_id INT NOT NULL, + page_name VARCHAR(100) NOT NULL, + page_text TEXT, + page_hits INT DEFAULT 0, + page_majorversion SMALLINT NOT NULL, + page_minorversion INT NOT NULL, + version_created INT NOT NULL, + change_author VARCHAR(255), + change_log TEXT, +-- + PRIMARY KEY (page_id), + UNIQUE (page_name) +); + +CREATE TABLE wicked_history ( + page_id INT NOT NULL, + page_name VARCHAR(100) NOT NULL, + page_text TEXT, + page_majorversion SMALLINT NOT NULL, + page_minorversion INT NOT NULL, + version_created INT NOT NULL, + change_author VARCHAR(255), + change_log TEXT, +-- + PRIMARY KEY (page_id, page_majorversion, page_minorversion) +); + +CREATE INDEX wicked_history_name_idx ON wicked_history (page_name); +CREATE INDEX wicked_history_version_idx ON wicked_history (page_majorversion, page_minorversion); + +CREATE TABLE wicked_attachments ( + page_id INT NOT NULL, + attachment_name VARCHAR(100) NOT NULL, + attachment_hits INT DEFAULT 0, + attachment_majorversion SMALLINT NOT NULL, + attachment_minorversion INT NOT NULL, + attachment_created INT NOT NULL, + change_author VARCHAR(255), + change_log TEXT, +-- + PRIMARY KEY (page_id, attachment_name) +); + +CREATE TABLE wicked_attachment_history ( + page_id INT NOT NULL, + attachment_name VARCHAR(100) NOT NULL, + attachment_majorversion SMALLINT NOT NULL, + attachment_minorversion INT NOT NULL, + attachment_created INT NOT NULL, + change_author VARCHAR(255), + change_log TEXT, +-- + PRIMARY KEY (page_id, attachment_name, attachment_majorversion, attachment_minorversion) +); + +CREATE INDEX wicked_attachment_history_name_idx ON wicked_attachment_history (page_id, attachment_name); +CREATE INDEX wicked_attachment_history_version_idx ON wicked_attachment_history (attachment_majorversion, attachment_minorversion); diff --git a/wicked/scripts/upgrades/2009-09-29_drop_locks.sql b/wicked/scripts/upgrades/2009-09-29_drop_locks.sql new file mode 100644 index 000000000..b8785b22b --- /dev/null +++ b/wicked/scripts/upgrades/2009-09-29_drop_locks.sql @@ -0,0 +1 @@ +ALTER TABLE wicked_pages DROP COLUMN page_locked; diff --git a/wicked/scripts/upgrades/convert_to_utf8.php b/wicked/scripts/upgrades/convert_to_utf8.php new file mode 100755 index 000000000..17234feee --- /dev/null +++ b/wicked/scripts/upgrades/convert_to_utf8.php @@ -0,0 +1,143 @@ +#!/usr/bin/php + + */ + +@define('AUTH_HANDLER', true); +@define('HORDE_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 CLI environment - make sure there's no time limit, init some +// variables, etc. +$cli = &Horde_Cli::singleton(); +$cli->init(); + +// Create driver instance. +@define('WICKED_BASE', dirname(__FILE__) . '/../..'); +require_once WICKED_BASE . '/lib/base.php'; +if ($conf['storage']['driver'] != 'sql') { + exit("You must have an SQL backend configured.\n"); +} +$db = &$wicked->_db; + +// Get current charset. +$charset = $cli->prompt('Please specify the current charset of the data', + null, 'ISO-8859-1'); + +// Read existing attachments. +echo 'Converting attachments'; +$result = $db->query( + 'SELECT page_id, attachment_name, change_log FROM ' + . $conf['storage']['params']['attachmenttable']); +if (is_a($result, 'PEAR_Error')) { + $cli->fatal($result->toString()); +} +$sth = $db->prepare( + 'UPDATE ' . $conf['storage']['params']['attachmenttable'] + . ' SET attachment_name = ?, change_log = ?' + . ' WHERE page_id = ? AND attachment_name = ?'); +while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) { + $values = Horde_String::convertCharset( + array($row['attachment_name'], $row['change_log']), + $charset, 'UTF-8'); + $values[] = $row['page_id']; + $values[] = $row['attachment_name']; + $executed = $db->execute($sth, $values); + if (is_a($executed, 'PEAR_Error')) { + $cli->fatal($executed->toString()); + } + echo '.'; +} +$result = $db->query( + 'SELECT page_id, attachment_name, change_log FROM ' + . $conf['storage']['params']['attachmenthistorytable']); +if (is_a($result, 'PEAR_Error')) { + $cli->fatal($result->toString()); +} +$sth = $db->prepare( + 'UPDATE ' . $conf['storage']['params']['attachmenthistorytable'] + . ' SET attachment_name = ?, change_log = ?' + . ' WHERE page_id = ? AND attachment_name = ?'); +while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) { + $values = Horde_String::convertCharset( + array($row['attachment_name'], $row['change_log']), + $charset, 'UTF-8'); + $values[] = $row['page_id']; + $values[] = $row['attachment_name']; + $executed = $db->execute($sth, $values); + if (is_a($executed, 'PEAR_Error')) { + $cli->fatal($executed->toString()); + } + echo '.'; +} +$cli->writeln($cli->green('Done')); + +// Read existing history. +$result = $db->query( + 'SELECT page_id, page_majorversion, page_minorversion, page_name, page_text, change_log FROM ' + . $conf['storage']['params']['historytable']); +if (is_a($result, 'PEAR_Error')) { + $cli->fatal($result->toString()); +} +$sth = $db->prepare( + 'UPDATE ' . $conf['storage']['params']['historytable'] + . ' SET page_name = ?, page_text = ?, change_log = ?' + . ' WHERE page_id = ? AND page_majorversion = ? AND page_minorversion = ?'); +echo 'Converting history'; +while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) { + $values = Horde_String::convertCharset( + array($row['page_name'], $row['page_text'], $row['change_log']), + $charset, 'UTF-8'); + $values[] = $row['page_id']; + $values[] = $row['page_majorversion']; + $values[] = $row['page_minorversion']; + $executed = $db->execute($sth, $values); + if (is_a($executed, 'PEAR_Error')) { + $cli->fatal($executed->toString()); + } + echo '.'; +} +$cli->writeln($cli->green('Done')); + +// Read existing pages. +$result = $db->query( + 'SELECT page_id, page_name, page_text, change_log FROM ' + . $conf['storage']['params']['table']); +if (is_a($result, 'PEAR_Error')) { + $cli->fatal($result->toString()); +} +$sth = $db->prepare( + 'UPDATE ' . $conf['storage']['params']['table'] + . ' SET page_name = ?, page_text = ?, change_log = ?' + . ' WHERE page_id = ?'); +echo 'Converting pages'; +while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) { + $values = Horde_String::convertCharset( + array($row['page_name'], $row['page_text'], $row['change_log']), + $charset, 'UTF-8'); + $values[] = $row['page_id']; + $executed = $db->execute($sth, $values); + if (is_a($executed, 'PEAR_Error')) { + $cli->fatal($executed->toString()); + } + echo '.'; +} +$cli->writeln($cli->green('Done')); diff --git a/wicked/scripts/wicked.php b/wicked/scripts/wicked.php new file mode 100755 index 000000000..929f9c0b2 --- /dev/null +++ b/wicked/scripts/wicked.php @@ -0,0 +1,167 @@ +#!/usr/bin/php -q + +*/ + +@define('AUTH_HANDLER', true); +@define('HORDE_BASE', dirname(__FILE__) . '/../..'); +@define('WICKED_BASE', HORDE_BASE . '/wicked'); + +// Do CLI checks and environment setup first. +require_once WICKED_BASE . '/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. +require_once 'Console/Getopt.php'; +Horde_Cli::init(); +$cli = &Horde_Cli::singleton(); +$registry = Horde_Registry::singleton(); +$registry->pushApp('wicked', false); +$debug = false; +$out = 'screen'; + +// We accept the user name on the command-line. +$ret = Console_Getopt::getopt(Console_Getopt::readPHPArgv(), 'hu::p::ldg::o::', + array('help', 'username==', 'password==', 'list-pages', + 'debug', 'get==', 'out==')); + +if (is_a($ret, 'PEAR_Error')) { + $error = _("Couldn't read command-line options."); + Horde::logMessage($error, __FILE__, __LINE__, PEAR_LOG_DEBUG); + $cli->fatal($error); +} + +list($opts, $args) = $ret; + +// Show help and exit if no arguments were set. +if (!count($opts)) { + showHelp(); + exit; +} + +foreach ($opts as $opt) { + list($optName, $optValue) = $opt; + switch ($optName) { + case 'd': + case '--debug': + $debug = true; + break; + + case 'u': + case '--username': + $username = $optValue; + break; + + case 'p': + case '--password': + $password = $optValue; + break; + + case 'l': + case '--list-pages': + $listpages = true; + break; + + case 'g': + case '--get': + $get = $optValue; + break; + + case 'o': + case '--out': + $out = $optValue; + break; + + default: + case 'h': + case '--help': + showHelp(); + exit; + } +} + +// Login to horde if username & password are set. +if (!empty($username) && !empty($password)) { + $auth = Horde_Auth::singleton($conf['auth']['driver']); + if (!$auth->authenticate($username, array('password' => $password))) { + $error = _("Login is incorrect."); + Horde::logMessage($error, __FILE__, __LINE__, PEAR_LOG_ERR); + $cli->message($msg, 'cli.error'); + } else { + $msg = sprintf(_("Logged in successfully as \"%s\"."), $username); + Horde::logMessage($msg, __FILE__, __LINE__, PEAR_LOG_DEBUG); + $cli->message($msg, 'cli.success'); + } +} + +// list page titles only +if (!empty($listpages)) { + $pages = $wicked->getPages(); + foreach ($pages as $page) { + $cli->writeln($page); + } + exit; +} + +// retrieve a user-specified page or all of them +if (!is_null($get)) { + $results = $wicked->getPage($get); + if (empty($results)) { + $error = sprintf(_("page \"%s\" doesn't exist."), $get); + $cli->message($error, 'cli.error'); + exit; + } +} elseif (is_null($get)) { + $results = $wicked->getAllPages(); +} + +// if we have a list of pages set, output them +switch ($out) { +default: +case 'xml': + if (isset($results) && count($results) > 0) { + $cli->writeln(""); + foreach ($results as $page) { + foreach ($page as $k => $v) { + $cli->writeln(sprintf("%s", $k, htmlentities($v), $k)); + } + } + $cli->writeln(""); + $cli->writeln(); + } + break; +} +exit; + +/** + * Show the command line arguments that the script accepts. + */ +function showHelp() +{ + global $cli; + + $cli->writeln(sprintf(_("Usage: %s [OPTIONS]..."), basename(__FILE__))); + $cli->writeln(); + $cli->writeln(_("Mandatory arguments to long options are mandatory for short options too.")); + $cli->writeln(); + $cli->writeln(_("-h, --help Show this help")); + $cli->writeln(_("-d, --debug Run in debug mode (displays extra information)")); + $cli->writeln(_("-l, --list-pages List pages")); + $cli->writeln(_("-g, --get[=pagetitle] Return all pages (unless pagetitle specified)")); + $cli->writeln(_("-o, --out[=type] Output type for results (default:xml)")); + $cli->writeln(_("-u, --username[=username] Horde login username")); + $cli->writeln(_("-p, --password[=password] Horde login password")); + $cli->writeln(); +} diff --git a/wicked/templates/common-header.inc b/wicked/templates/common-header.inc new file mode 100644 index 000000000..d5d3af012 --- /dev/null +++ b/wicked/templates/common-header.inc @@ -0,0 +1,30 @@ + + + + + +' : '' ?> + +get('name'); +if (!empty($title)) $page_title .= ' :: ' . $title; +if (!empty($refresh_time) && ($refresh_time > 0) && !empty($refresh_url)) { + echo "\n"; +} + +Horde::includeScriptFiles(); + +?> +<?php echo htmlspecialchars($page_title) ?> + + + + + +> diff --git a/wicked/templates/diff/diff.inc b/wicked/templates/diff/diff.inc new file mode 100644 index 000000000..dcb9f194f --- /dev/null +++ b/wicked/templates/diff/diff.inc @@ -0,0 +1,7 @@ +