diff --git a/.gitignore b/.gitignore index 33f8e0c524b5206b77d3abc976443ff851709b39..312dc0433aa21ca80a6d838e57ec8de77eb1df38 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,11 @@ RCS/* # eclipse .project .settings + +# netbeans +nbproject + +# geany +*.geany + +.DS_Store diff --git a/.htaccess b/.htaccess index 181248267559e377dbac74e01b395cbc215558f6..8763a8bcde5c23897d4393d47430cc72241ea259 100644 --- a/.htaccess +++ b/.htaccess @@ -1,7 +1,8 @@ -ErrorDocument 404 //owncloud/core/templates/404.php +ErrorDocument 404 /owncloud/core/templates/404.php <IfModule mod_php5.c> - php_value upload_max_filesize 512M - php_value post_max_size 512M - SetEnv htaccessWorking true +php_value upload_max_filesize 512M +php_value post_max_size 512M +php_value memory_limit 128M +SetEnv htaccessWorking true </IfModule> Options -Indexes diff --git a/.tx/config b/.tx/config index 233dae8eb3ced4529b117124512648bf60934994..b51860f8b2faeb1255febbc152ac3f0876b908b3 100644 --- a/.tx/config +++ b/.tx/config @@ -13,16 +13,21 @@ trans.da = l10n/da/core.po trans.de = l10n/de/core.po trans.el = l10n/el/core.po trans.es = l10n/es/core.po +trans.et_EE = l10n/et_EE/core.po trans.fr = l10n/fr/core.po trans.id = l10n/id/core.po trans.it = l10n/it/core.po trans.lb = l10n/lb/core.po +trans.ms_MY = l10n/ms_MY/core.po trans.nb_NO = l10n/nb_NO/core.po trans.nl = l10n/nl/core.po trans.pl = l10n/pl/core.po trans.pt_BR = l10n/pt_BR/core.po +trans.pt_PT = l10n/pt_PT/core.po trans.ro = l10n/ro/core.po trans.ru = l10n/ru/core.po +trans.sr = l10n/sr/core.po +trans.sr@latin = l10n/sr@latin/core.po trans.sv = l10n/sv/core.po trans.zh_CN = l10n/zh_CN/core.po @@ -38,16 +43,21 @@ trans.da = l10n/da/settings.po trans.de = l10n/de/settings.po trans.el = l10n/el/settings.po trans.es = l10n/es/settings.po +trans.et_EE = l10n/et_EE/settings.po trans.fr = l10n/fr/settings.po trans.id = l10n/id/settings.po trans.it = l10n/it/settings.po trans.lb = l10n/lb/settings.po +trans.ms_MY = l10n/ms_MY/settings.po trans.nb_NO = l10n/nb_NO/settings.po trans.nl = l10n/nl/settings.po trans.pl = l10n/pl/settings.po trans.pt_BR = l10n/pt_BR/settings.po +trans.pt_PT = l10n/pt_PT/settings.po trans.ro = l10n/ro/settings.po trans.ru = l10n/ru/settings.po +trans.sr = l10n/sr/settings.po +trans.sr@latin = l10n/sr@latin/settings.po trans.sv = l10n/sv/settings.po trans.zh_CN = l10n/zh_CN/settings.po @@ -63,16 +73,21 @@ trans.da = l10n/da/files.po trans.de = l10n/de/files.po trans.el = l10n/el/files.po trans.es = l10n/es/files.po +trans.et_EE = l10n/et_EE/files.po trans.fr = l10n/fr/files.po trans.id = l10n/id/files.po trans.it = l10n/it/files.po trans.lb = l10n/lb/files.po +trans.ms_MY = l10n/ms_MY/files.po trans.nb_NO = l10n/nb_NO/files.po trans.nl = l10n/nl/files.po trans.pl = l10n/pl/files.po trans.pt_BR = l10n/pt_BR/files.po +trans.pt_PT = l10n/pt_PT/files.po trans.ro = l10n/ro/files.po trans.ru = l10n/ru/files.po +trans.sr = l10n/sr/files.po +trans.sr@latin = l10n/sr@latin/files.po trans.sv = l10n/sv/files.po trans.zh_CN = l10n/zh_CN/files.po @@ -88,16 +103,80 @@ trans.da = l10n/da/media.po trans.de = l10n/de/media.po trans.el = l10n/el/media.po trans.es = l10n/es/media.po +trans.et_EE = l10n/et_EE/media.po trans.fr = l10n/fr/media.po trans.id = l10n/id/media.po trans.it = l10n/it/media.po trans.lb = l10n/lb/media.po +trans.ms_MY = l10n/ms_MY/media.po trans.nb_NO = l10n/nb_NO/media.po trans.nl = l10n/nl/media.po trans.pl = l10n/pl/media.po trans.pt_BR = l10n/pt_BR/media.po +trans.pt_PT = l10n/pt_PT/media.po trans.ro = l10n/ro/media.po trans.ru = l10n/ru/media.po +trans.sr = l10n/sr/media.po +trans.sr@latin = l10n/sr@latin/media.po trans.sv = l10n/sv/media.po trans.zh_CN = l10n/zh_CN/media.po +[owncloud.calendar] +file_filter = l10n/<lang>/calendar.po +host = http://www.transifex.net +source_file = l10n/templates/calendar.pot +source_lang = en +trans.bg_BG = l10n/bg_BG/calendar.po +trans.ca = l10n/ca/calendar.po +trans.cs_CZ = l10n/cs_CZ/calendar.po +trans.da = l10n/da/calendar.po +trans.de = l10n/de/calendar.po +trans.el = l10n/el/calendar.po +trans.es = l10n/es/calendar.po +trans.et_EE = l10n/et_EE/calendar.po +trans.fr = l10n/fr/calendar.po +trans.id = l10n/id/calendar.po +trans.it = l10n/it/calendar.po +trans.lb = l10n/lb/calendar.po +trans.ms_MY = l10n/ms_MY/calendar.po +trans.nb_NO = l10n/nb_NO/calendar.po +trans.nl = l10n/nl/calendar.po +trans.pl = l10n/pl/calendar.po +trans.pt_BR = l10n/pt_BR/calendar.po +trans.pt_PT = l10n/pt_PT/calendar.po +trans.ro = l10n/ro/calendar.po +trans.ru = l10n/ru/calendar.po +trans.sr = l10n/sr/calendar.po +trans.sr@latin = l10n/sr@latin/calendar.po +trans.sv = l10n/sv/calendar.po +trans.zh_CN = l10n/zh_CN/calendar.po + +[owncloud.contacts] +file_filter = translations/owncloud.contacts/<lang>.po +host = http://www.transifex.net +source_file = l10n/templates/contacts.pot +source_lang = en +trans.bg_BG = l10n/bg_BG/contacts.po +trans.ca = l10n/ca/contacts.po +trans.cs_CZ = l10n/cs_CZ/contacts.po +trans.da = l10n/da/contacts.po +trans.de = l10n/de/contacts.po +trans.el = l10n/el/contacts.po +trans.es = l10n/es/contacts.po +trans.et_EE = l10n/et_EE/contacts.po +trans.fr = l10n/fr/contacts.po +trans.id = l10n/id/contacts.po +trans.it = l10n/it/contacts.po +trans.lb = l10n/lb/contacts.po +trans.ms_MY = l10n/ms_MY/contacts.po +trans.nb_NO = l10n/nb_NO/contacts.po +trans.nl = l10n/nl/contacts.po +trans.pl = l10n/pl/contacts.po +trans.pt_BR = l10n/pt_BR/contacts.po +trans.pt_PT = l10n/pt_PT/contacts.po +trans.ro = l10n/ro/contacts.po +trans.ru = l10n/ru/contacts.po +trans.sr = l10n/sr/contacts.po +trans.sr@latin = l10n/sr@latin/contacts.po +trans.sv = l10n/sv/contacts.po +trans.zh_CN = l10n/zh_CN/contacts.po diff --git a/3rdparty/COPYING-PHP b/3rdparty/COPYING-PHP deleted file mode 100644 index 3cc8b777b77259046155b82f23e189d4c5c56d6e..0000000000000000000000000000000000000000 --- a/3rdparty/COPYING-PHP +++ /dev/null @@ -1,68 +0,0 @@ --------------------------------------------------------------------- - The PHP License, version 3.01 -Copyright (c) 1999 - 2010 The PHP Group. All rights reserved. --------------------------------------------------------------------- - -Redistribution and use in source and binary forms, with or without -modification, is permitted provided that the following conditions -are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - 3. The name "PHP" must not be used to endorse or promote products - derived from this software without prior written permission. For - written permission, please contact group@php.net. - - 4. Products derived from this software may not be called "PHP", nor - may "PHP" appear in their name, without prior written permission - from group@php.net. You may indicate that your software works in - conjunction with PHP by saying "Foo for PHP" instead of calling - it "PHP Foo" or "phpfoo" - - 5. The PHP Group may publish revised and/or new versions of the - license from time to time. Each version will be given a - distinguishing version number. - Once covered code has been published under a particular version - of the license, you may always continue to use it under the terms - of that version. You may also choose to use such covered code - under the terms of any subsequent version of the license - published by the PHP Group. No one other than the PHP Group has - the right to modify the terms applicable to covered code created - under this License. - - 6. Redistributions of any form whatsoever must retain the following - acknowledgment: - "This product includes PHP software, freely available from - <http://www.php.net/software/>". - -THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND -ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP -DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED -OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------- - -This software consists of voluntary contributions made by many -individuals on behalf of the PHP Group. - -The PHP Group can be contacted via Email at group@php.net. - -For more information on the PHP Group and the PHP project, -please see <http://www.php.net>. - -PHP includes the Zend Engine, freely available at -<http://www.zend.com>. diff --git a/3rdparty/COPYING-README b/3rdparty/COPYING-README deleted file mode 100644 index 2450ef1581307d360fc11788a0b7a7ce0b245f83..0000000000000000000000000000000000000000 --- a/3rdparty/COPYING-README +++ /dev/null @@ -1,7 +0,0 @@ -HTTP is three clause BSD licence -MDB2 uses a custom licence in the BSD style -User is AGPL -XML/RPC is both MIT and PHP License - -The rest all licenced under the PHP License see packages/ directory -for details diff --git a/3rdparty/MDB2.php b/3rdparty/MDB2.php index fbc7107914ebc7942817fa44b46149f6cf908588..aa7ec6ba093921a123898f97debe909a8eca00fa 100644 --- a/3rdparty/MDB2.php +++ b/3rdparty/MDB2.php @@ -969,11 +969,10 @@ class MDB2 static function fileExists($file) { // safe_mode does notwork with is_readable() - global $SERVERROOT; if (!@ini_get('safe_mode')) { $dirs = explode(PATH_SEPARATOR, ini_get('include_path')); - array_unshift($dirs,$SERVERROOT); - array_unshift($dirs,$SERVERROOT. DIRECTORY_SEPARATOR .'inc'); + array_unshift($dirs,OC::$SERVERROOT); + array_unshift($dirs,OC::$SERVERROOT. DIRECTORY_SEPARATOR .'inc'); // print_r($dirs);die(); foreach ($dirs as $dir) { if (is_readable($dir . DIRECTORY_SEPARATOR . $file)) { diff --git a/3rdparty/MDB2/Driver/Manager/sqlite.php b/3rdparty/MDB2/Driver/Manager/sqlite.php index 64019669645a8dd31a3b07681eb0405e9c4fd83b..650910174e7028ca4e67791e326d2e046f4b1b2f 100644 --- a/3rdparty/MDB2/Driver/Manager/sqlite.php +++ b/3rdparty/MDB2/Driver/Manager/sqlite.php @@ -71,8 +71,7 @@ class MDB2_Driver_Manager_sqlite extends MDB2_Driver_Manager_Common */ function createDatabase($name, $options = array()) { - global $SERVERROOT; - $datadir=OC_Config::getValue( "datadirectory", "$SERVERROOT/data" ); + $datadir=OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" ); $db =$this->getDBInstance(); if (PEAR::isError($db)) { return $db; @@ -1362,4 +1361,4 @@ class MDB2_Driver_Manager_sqlite extends MDB2_Driver_Manager_Common // }}} } -?> \ No newline at end of file +?> diff --git a/3rdparty/MDB2/Driver/sqlite.php b/3rdparty/MDB2/Driver/sqlite.php index 63db241b86386f83742ee19e4dd83d3ec4552d8f..5d2ad27d01635d94b0fe112d63f1e9f205448f52 100644 --- a/3rdparty/MDB2/Driver/sqlite.php +++ b/3rdparty/MDB2/Driver/sqlite.php @@ -347,8 +347,7 @@ class MDB2_Driver_sqlite extends MDB2_Driver_Common **/ function connect() { - global $SERVERROOT; - $datadir=OC_Config::getValue( "datadirectory", "$SERVERROOT/data" ); + $datadir=OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" ); $database_file = $this->_getDatabaseFile($this->database_name); if (is_resource($this->connection)) { //if (count(array_diff($this->connected_dsn, $this->dsn)) == 0 @@ -1086,4 +1085,4 @@ class MDB2_Statement_sqlite extends MDB2_Statement_Common } -?> \ No newline at end of file +?> diff --git a/3rdparty/Sabre/CalDAV/Backend/Abstract.php b/3rdparty/Sabre/CalDAV/Backend/Abstract.php index 7ac282f44a0f70b08d00c5128ba5a73e2a8b7ee1..b694eef49e4696aa470cf56bc126c2bd1b273378 100644 --- a/3rdparty/Sabre/CalDAV/Backend/Abstract.php +++ b/3rdparty/Sabre/CalDAV/Backend/Abstract.php @@ -36,20 +36,17 @@ abstract class Sabre_CalDAV_Backend_Abstract { * If the creation was a success, an id must be returned that can be used to reference * this calendar in other methods, such as updateCalendar. * - * This function must return a server-wide unique id that can be used - * later to reference the calendar. - * * @param string $principalUri * @param string $calendarUri * @param array $properties - * @return string|int + * @return void */ abstract function createCalendar($principalUri,$calendarUri,array $properties); /** - * Updates properties on this node, + * Updates properties for a calendar. * - * The properties array uses the propertyName in clark-notation as key, + * The mutations array uses the propertyName in clark-notation as key, * and the array value for the property value. In the case a property * should be deleted, the property value will be null. * @@ -79,10 +76,10 @@ abstract class Sabre_CalDAV_Backend_Abstract { * (424 Failed Dependency) because the request needs to be atomic. * * @param string $calendarId - * @param array $properties + * @param array $mutations * @return bool|array */ - public function updateCalendar($calendarId, array $properties) { + public function updateCalendar($calendarId, array $mutations) { return false; @@ -97,7 +94,7 @@ abstract class Sabre_CalDAV_Backend_Abstract { abstract function deleteCalendar($calendarId); /** - * Returns all calendar objects within a calendar object. + * Returns all calendar objects within a calendar. * * Every item contains an array with the following keys: * * id - unique identifier which will be used for subsequent updates diff --git a/3rdparty/Sabre/CalDAV/Backend/PDO.php b/3rdparty/Sabre/CalDAV/Backend/PDO.php index d1785bb8f8fc162d9f10c8fb7abad0b2409e8102..7b1b33b912ee53a4fd4a94febccbcb6b4c871141 100644 --- a/3rdparty/Sabre/CalDAV/Backend/PDO.php +++ b/3rdparty/Sabre/CalDAV/Backend/PDO.php @@ -129,7 +129,6 @@ class Sabre_CalDAV_Backend_PDO extends Sabre_CalDAV_Backend_Abstract { * @param string $principalUri * @param string $calendarUri * @param array $properties - * @return mixed */ public function createCalendar($principalUri,$calendarUri, array $properties) { @@ -173,9 +172,9 @@ class Sabre_CalDAV_Backend_PDO extends Sabre_CalDAV_Backend_Abstract { } /** - * Updates a calendars properties + * Updates properties for a calendar. * - * The properties array uses the propertyName in clark-notation as key, + * The mutations array uses the propertyName in clark-notation as key, * and the array value for the property value. In the case a property * should be deleted, the property value will be null. * @@ -205,10 +204,10 @@ class Sabre_CalDAV_Backend_PDO extends Sabre_CalDAV_Backend_Abstract { * (424 Failed Dependency) because the request needs to be atomic. * * @param string $calendarId - * @param array $properties + * @param array $mutations * @return bool|array */ - public function updateCalendar($calendarId, array $properties) { + public function updateCalendar($calendarId, array $mutations) { $newValues = array(); $result = array( @@ -219,13 +218,13 @@ class Sabre_CalDAV_Backend_PDO extends Sabre_CalDAV_Backend_Abstract { $hasError = false; - foreach($properties as $propertyName=>$propertyValue) { + foreach($mutations as $propertyName=>$propertyValue) { // We don't know about this property. if (!isset($this->propertyMap[$propertyName])) { $hasError = true; $result[403][$propertyName] = null; - unset($properties[$propertyName]); + unset($mutations[$propertyName]); continue; } @@ -237,7 +236,7 @@ class Sabre_CalDAV_Backend_PDO extends Sabre_CalDAV_Backend_Abstract { // If there were any errors we need to fail the request if ($hasError) { // Properties has the remaining properties - foreach($properties as $propertyName=>$propertyValue) { + foreach($mutations as $propertyName=>$propertyValue) { $result[424][$propertyName] = null; } @@ -284,7 +283,7 @@ class Sabre_CalDAV_Backend_PDO extends Sabre_CalDAV_Backend_Abstract { } /** - * Returns all calendar objects within a calendar object. + * Returns all calendar objects within a calendar. * * Every item contains an array with the following keys: * * id - unique identifier which will be used for subsequent updates diff --git a/3rdparty/Sabre/CalDAV/Calendar.php b/3rdparty/Sabre/CalDAV/Calendar.php index a50aef12b4f6fc4e4515e211efa15f0e46c6bc3e..0d2b3875771729f323e8f19cc86a2376eb77b6d6 100644 --- a/3rdparty/Sabre/CalDAV/Calendar.php +++ b/3rdparty/Sabre/CalDAV/Calendar.php @@ -12,7 +12,7 @@ * @author Evert Pot (http://www.rooftopsolutions.nl/) * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License */ -class Sabre_CalDAV_Calendar implements Sabre_DAV_ICollection, Sabre_DAV_IProperties, Sabre_DAVACL_IACL { +class Sabre_CalDAV_Calendar implements Sabre_CalDAV_ICalendar, Sabre_DAV_IProperties, Sabre_DAVACL_IACL { /** * This is an array with calendar information @@ -178,6 +178,8 @@ class Sabre_CalDAV_Calendar implements Sabre_DAV_ICollection, Sabre_DAV_IPropert public function createFile($name,$calendarData = null) { $calendarData = stream_get_contents($calendarData); + // Converting to UTF-8, if needed + $calendarData = Sabre_DAV_StringUtil::ensureUTF8($calendarData); $supportedComponents = $this->calendarInfo['{' . Sabre_CalDAV_Plugin::NS_CALDAV . '}supported-calendar-component-set']; if ($supportedComponents) { diff --git a/3rdparty/Sabre/CalDAV/CalendarObject.php b/3rdparty/Sabre/CalDAV/CalendarObject.php index b5c4e49b838ce669eac8cd74a3b82491c05e3f65..0c99f18deb72cca5233bd50ffdce28bd3037fc86 100644 --- a/3rdparty/Sabre/CalDAV/CalendarObject.php +++ b/3rdparty/Sabre/CalDAV/CalendarObject.php @@ -9,7 +9,7 @@ * @author Evert Pot (http://www.rooftopsolutions.nl/) * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License */ -class Sabre_CalDAV_CalendarObject extends Sabre_DAV_File implements Sabre_DAVACL_IACL { +class Sabre_CalDAV_CalendarObject extends Sabre_DAV_File implements Sabre_CalDAV_ICalendarObject, Sabre_DAVACL_IACL { /** * Sabre_CalDAV_Backend_Abstract @@ -93,6 +93,9 @@ class Sabre_CalDAV_CalendarObject extends Sabre_DAV_File implements Sabre_DAVACL if (is_resource($calendarData)) $calendarData = stream_get_contents($calendarData); + // Converting to UTF-8, if needed + $calendarData = Sabre_DAV_StringUtil::ensureUTF8($calendarData); + $supportedComponents = $this->calendarInfo['{' . Sabre_CalDAV_Plugin::NS_CALDAV . '}supported-calendar-component-set']; if ($supportedComponents) { $supportedComponents = $supportedComponents->getValue(); diff --git a/3rdparty/Sabre/CalDAV/ICalendar.php b/3rdparty/Sabre/CalDAV/ICalendar.php new file mode 100644 index 0000000000000000000000000000000000000000..8193dff3a8393debda39bb09cf1df42a1f642763 --- /dev/null +++ b/3rdparty/Sabre/CalDAV/ICalendar.php @@ -0,0 +1,18 @@ +<?php + +/** + * Calendar interface + * + * Implement this interface to allow a node to be recognized as an calendar. + * + * @package Sabre + * @subpackage CalDAV + * @copyright Copyright (C) 2007-2011 Rooftop Solutions. All rights reserved. + * @author Evert Pot (http://www.rooftopsolutions.nl/) + * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License + */ +interface Sabre_CalDAV_ICalendar extends Sabre_DAV_ICollection { + + + +} diff --git a/3rdparty/Sabre/CalDAV/ICalendarObject.php b/3rdparty/Sabre/CalDAV/ICalendarObject.php new file mode 100644 index 0000000000000000000000000000000000000000..708300ad7bd83f731c6e0933ebaeaf31789aa876 --- /dev/null +++ b/3rdparty/Sabre/CalDAV/ICalendarObject.php @@ -0,0 +1,20 @@ +<?php + +/** + * CalendarObject interface +/** + * Extend the ICalendarObject interface to allow your custom nodes to be picked up as + * CalendarObjects. + * + * Calendar objects are resources such as Events, Todo's or Journals. + * + * @package Sabre + * @subpackage CalDAV + * @copyright Copyright (C) 2007-2011 Rooftop Solutions. All rights reserved. + * @author Evert Pot (http://www.rooftopsolutions.nl/) + * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License + */ +interface Sabre_CalDAV_ICalendarObject extends Sabre_DAV_IFile { + +} + diff --git a/3rdparty/Sabre/CalDAV/Plugin.php b/3rdparty/Sabre/CalDAV/Plugin.php index 640595e74babca337367fecbbed63e4336f391fa..02747c8395e3a2b6d0f32183074d598d707ffff6 100644 --- a/3rdparty/Sabre/CalDAV/Plugin.php +++ b/3rdparty/Sabre/CalDAV/Plugin.php @@ -114,7 +114,7 @@ class Sabre_CalDAV_Plugin extends Sabre_DAV_ServerPlugin { public function getSupportedReportSet($uri) { $node = $this->server->tree->getNodeForPath($uri); - if ($node instanceof Sabre_CalDAV_Calendar || $node instanceof Sabre_CalDAV_CalendarObject) { + if ($node instanceof Sabre_CalDAV_ICalendar || $node instanceof Sabre_CalDAV_ICalendarObject) { return array( '{' . self::NS_CALDAV . '}calendar-multiget', '{' . self::NS_CALDAV . '}calendar-query', @@ -143,7 +143,7 @@ class Sabre_CalDAV_Plugin extends Sabre_DAV_ServerPlugin { $server->propertyMap['{' . self::NS_CALDAV . '}supported-calendar-component-set'] = 'Sabre_CalDAV_Property_SupportedCalendarComponentSet'; - $server->resourceTypeMapping['Sabre_CalDAV_Calendar'] = '{urn:ietf:params:xml:ns:caldav}calendar'; + $server->resourceTypeMapping['Sabre_CalDAV_ICalendar'] = '{urn:ietf:params:xml:ns:caldav}calendar'; $server->resourceTypeMapping['Sabre_CalDAV_Principal_ProxyRead'] = '{http://calendarserver.org/ns/}calendar-proxy-read'; $server->resourceTypeMapping['Sabre_CalDAV_Principal_ProxyWrite'] = '{http://calendarserver.org/ns/}calendar-proxy-write'; @@ -326,7 +326,7 @@ class Sabre_CalDAV_Plugin extends Sabre_DAV_ServerPlugin { } // instanceof IPrincipal - if ($node instanceof Sabre_CalDAV_CalendarObject) { + if ($node instanceof Sabre_CalDAV_ICalendarObject) { // The calendar-data property is not supposed to be a 'real' // property, but in large chunks of the spec it does act as such. // Therefore we simply expose it as a property. diff --git a/3rdparty/Sabre/CalDAV/Version.php b/3rdparty/Sabre/CalDAV/Version.php index 5ecc0cebb376dc335244eff37ef8e5b35982c1f5..df8fe1f6bd6fba8d724939a0ed3d9fe18014fac4 100644 --- a/3rdparty/Sabre/CalDAV/Version.php +++ b/3rdparty/Sabre/CalDAV/Version.php @@ -14,7 +14,7 @@ class Sabre_CalDAV_Version { /** * Full version number */ - const VERSION = '1.5.0'; + const VERSION = '1.5.3'; /** * Stability : alpha, beta, stable diff --git a/3rdparty/Sabre/CardDAV/AddressBook.php b/3rdparty/Sabre/CardDAV/AddressBook.php index 04e4c227b86574104449a77d237893560698da51..3333480ea8549f4da860127a240c375cf2ca6c10 100644 --- a/3rdparty/Sabre/CardDAV/AddressBook.php +++ b/3rdparty/Sabre/CardDAV/AddressBook.php @@ -112,6 +112,8 @@ class Sabre_CardDAV_AddressBook extends Sabre_DAV_Collection implements Sabre_Ca public function createFile($name,$vcardData = null) { $vcardData = stream_get_contents($vcardData); + // Converting to UTF-8, if needed + $vcardData = Sabre_DAV_StringUtil::ensureUTF8($vcardData); $this->carddavBackend->createCard($this->addressBookInfo['id'],$name,$vcardData); diff --git a/3rdparty/Sabre/CardDAV/Backend/PDO.php b/3rdparty/Sabre/CardDAV/Backend/PDO.php index 63a74745aaca8c18a8f9132f442b4cbc5e339fa0..5556d0a7648f1dcf0211afdd7899c03507e20cdd 100644 --- a/3rdparty/Sabre/CardDAV/Backend/PDO.php +++ b/3rdparty/Sabre/CardDAV/Backend/PDO.php @@ -66,7 +66,9 @@ class Sabre_CardDAV_Backend_PDO extends Sabre_CardDAV_Backend_Abstract { 'principaluri' => $row['principaluri'], '{DAV:}displayname' => $row['displayname'], '{' . Sabre_CardDAV_Plugin::NS_CARDDAV . '}addressbook-description' => $row['description'], - '{http://calendarserver.org/ns/}getctag' => $row['ctag'], + '{http://calendarserver.org/ns/}getctag' => $row['ctag'], + '{' . Sabre_CardDAV_Plugin::NS_CARDDAV . '}supported-address-data' => + new Sabre_CardDAV_Property_SupportedAddressData(), ); } diff --git a/3rdparty/Sabre/CardDAV/Card.php b/3rdparty/Sabre/CardDAV/Card.php index 52d8b79d7ddbc27914c432e79bbbf42089ce4f14..5298d31e2455f55fccb44b97c00b1cf53140cb61 100644 --- a/3rdparty/Sabre/CardDAV/Card.php +++ b/3rdparty/Sabre/CardDAV/Card.php @@ -88,6 +88,9 @@ class Sabre_CardDAV_Card extends Sabre_DAV_File implements Sabre_CardDAV_ICard, if (is_resource($cardData)) $cardData = stream_get_contents($cardData); + // Converting to UTF-8, if needed + $cardData = Sabre_DAV_StringUtil::ensureUTF8($cardData); + $this->carddavBackend->updateCard($this->addressBookInfo['id'],$this->cardData['uri'],$cardData); $this->cardData['carddata'] = $cardData; diff --git a/3rdparty/Sabre/CardDAV/Plugin.php b/3rdparty/Sabre/CardDAV/Plugin.php index a96f9aaebb6872be472ab4f4861f1cc611d8213f..17766b78278c84a14cb530880078ca04ac85ad9c 100644 --- a/3rdparty/Sabre/CardDAV/Plugin.php +++ b/3rdparty/Sabre/CardDAV/Plugin.php @@ -95,9 +95,10 @@ class Sabre_CardDAV_Plugin extends Sabre_DAV_ServerPlugin { public function getSupportedReportSet($uri) { $node = $this->server->tree->getNodeForPath($uri); - if ($node instanceof Sabre_CardDAV_AddressBook || $node instanceof Sabre_CardDAV_ICard) { + if ($node instanceof Sabre_CardDAV_IAddressBook || $node instanceof Sabre_CardDAV_ICard) { return array( '{' . self::NS_CARDDAV . '}addressbook-multiget', + '{' . self::NS_CARDDAV . '}addressbook-query', ); } return array(); diff --git a/3rdparty/Sabre/CardDAV/Property/SupportedAddressData.php b/3rdparty/Sabre/CardDAV/Property/SupportedAddressData.php new file mode 100644 index 0000000000000000000000000000000000000000..d57d3a6e7bdfb3494b4f48300029e553e3c4f57c --- /dev/null +++ b/3rdparty/Sabre/CardDAV/Property/SupportedAddressData.php @@ -0,0 +1,69 @@ +<?php + +/** + * Supported-address-data property + * + * This property is a representation of the supported-address-data property + * in the CardDAV namespace. + * + * @package Sabre + * @subpackage CardDAV + * @copyright Copyright (C) 2007-2011 Rooftop Solutions. All rights reserved. + * @author Evert Pot (http://www.rooftopsolutions.nl/) + * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License + */ +class Sabre_CardDAV_Property_SupportedAddressData extends Sabre_DAV_Property { + + /** + * supported versions + * + * @var array + */ + protected $supportedData = array(); + + /** + * Creates the property + * + * @param array $components + */ + public function __construct(array $supportedData = null) { + + if (is_null($supportedData)) { + $supportedData = array( + array('contentType' => 'text/vcard', 'version' => '3.0'), + array('contentType' => 'text/vcard', 'version' => '4.0'), + ); + } + + $this->supportedData = $supportedData; + + } + + /** + * Serializes the property in a DOMDocument + * + * @param Sabre_DAV_Server $server + * @param DOMElement $node + * @return void + */ + public function serialize(Sabre_DAV_Server $server,DOMElement $node) { + + $doc = $node->ownerDocument; + + $prefix = + isset($server->xmlNamespaces[Sabre_CardDAV_Plugin::NS_CARDDAV]) ? + $server->xmlNamespaces[Sabre_CardDAV_Plugin::NS_CARDDAV] : + 'card'; + + foreach($this->supportedData as $supported) { + + $caldata = $doc->createElementNS(Sabre_CardDAV_Plugin::NS_CARDDAV, $prefix . ':address-data-type'); + $caldata->setAttribute('content-type',$supported['contentType']); + $caldata->setAttribute('version',$supported['version']); + $node->appendChild($caldata); + + } + + } + +} diff --git a/3rdparty/Sabre/CardDAV/Version.php b/3rdparty/Sabre/CardDAV/Version.php index 8961027fc89a0b0d95e64e8720243ae59a275190..c76ee3603547f3ff0be211dc613e13809cca8ddb 100644 --- a/3rdparty/Sabre/CardDAV/Version.php +++ b/3rdparty/Sabre/CardDAV/Version.php @@ -18,11 +18,11 @@ class Sabre_CardDAV_Version { /** * Full version number */ - const VERSION = '0.2'; + const VERSION = '1.5.3'; /** * Stability : alpha, beta, stable */ - const STABILITY = 'alpha'; + const STABILITY = 'stable'; } diff --git a/3rdparty/Sabre/DAV/Browser/Plugin.php b/3rdparty/Sabre/DAV/Browser/Plugin.php index 8e0ca24cff25176fcb96d021e013c13f272f653a..cd5617babb160819ad04d72cb4cc48c27c3fad99 100644 --- a/3rdparty/Sabre/DAV/Browser/Plugin.php +++ b/3rdparty/Sabre/DAV/Browser/Plugin.php @@ -68,9 +68,16 @@ class Sabre_DAV_Browser_Plugin extends Sabre_DAV_ServerPlugin { public function httpGetInterceptor($method, $uri) { if ($method!='GET') return true; - - $node = $this->server->tree->getNodeForPath($uri); - if ($node instanceof Sabre_DAV_IFile) return true; + + try { + $node = $this->server->tree->getNodeForPath($uri); + } catch (Sabre_DAV_Exception_FileNotFound $e) { + // We're simply stopping when the file isn't found to not interfere + // with other plugins. + return; + } + if ($node instanceof Sabre_DAV_IFile) + return; $this->server->httpResponse->sendStatus(200); $this->server->httpResponse->setHeader('Content-Type','text/html; charset=utf-8'); @@ -165,6 +172,8 @@ class Sabre_DAV_Browser_Plugin extends Sabre_DAV_ServerPlugin { '{DAV:}getlastmodified', ),1); + $parent = $this->server->tree->getNodeForPath($path); + if ($path) { @@ -189,6 +198,7 @@ class Sabre_DAV_Browser_Plugin extends Sabre_DAV_ServerPlugin { $type = null; + if (isset($file[200]['{DAV:}resourcetype'])) { $type = $file[200]['{DAV:}resourcetype']->getValue(); @@ -246,7 +256,7 @@ class Sabre_DAV_Browser_Plugin extends Sabre_DAV_ServerPlugin { $html.= "<tr><td colspan=\"4\"><hr /></td></tr>"; - if ($this->enablePost) { + if ($this->enablePost && $parent instanceof Sabre_DAV_ICollection) { $html.= '<tr><td><form method="post" action=""> <h3>Create new folder</h3> <input type="hidden" name="sabreAction" value="mkcol" /> diff --git a/3rdparty/Sabre/DAV/Server.php b/3rdparty/Sabre/DAV/Server.php index c6c63143d13572c0b1487f429d23b7246b1266b0..b99866dad5e12b1404795694be3d3dbe1dab4cb2 100644 --- a/3rdparty/Sabre/DAV/Server.php +++ b/3rdparty/Sabre/DAV/Server.php @@ -738,6 +738,34 @@ class Sabre_DAV_Server { $body = $this->httpRequest->getBody(); + // Intercepting Content-Range + if ($this->httpRequest->getHeader('Content-Range')) { + /** + Content-Range is dangerous for PUT requests: PUT per definition + stores a full resource. draft-ietf-httpbis-p2-semantics-15 says + in section 7.6: + An origin server SHOULD reject any PUT request that contains a + Content-Range header field, since it might be misinterpreted as + partial content (or might be partial content that is being mistakenly + PUT as a full representation). Partial content updates are possible + by targeting a separately identified resource with state that + overlaps a portion of the larger resource, or by using a different + method that has been specifically defined for partial updates (for + example, the PATCH method defined in [RFC5789]). + This clarifies RFC2616 section 9.6: + The recipient of the entity MUST NOT ignore any Content-* + (e.g. Content-Range) headers that it does not understand or implement + and MUST return a 501 (Not Implemented) response in such cases. + OTOH is a PUT request with a Content-Range currently the only way to + continue an aborted upload request and is supported by curl, mod_dav, + Tomcat and others. Since some clients do use this feature which results + in unexpected behaviour (cf PEAR::HTTP_WebDAV_Client 1.0.1), we reject + all PUT requests with a Content-Range for now. + */ + + throw new Sabre_DAV_Exception_NotImplemented('PUT with Content-Range is not allowed.'); + } + // Intercepting the Finder problem if (($expected = $this->httpRequest->getHeader('X-Expected-Entity-Length')) && $expected > 0) { @@ -798,7 +826,10 @@ class Sabre_DAV_Server { } else { // If we got here, the resource didn't exist yet. - $this->createFile($this->getRequestUri(),$body); + if (!$this->createFile($this->getRequestUri(),$body)) { + // For one reason or another the file was not created. + return; + } $this->httpResponse->setHeader('Content-Length','0'); $this->httpResponse->sendStatus(201); @@ -1377,23 +1408,27 @@ class Sabre_DAV_Server { * Currently this is done by HTTP PUT and HTTP LOCK (in the Locks_Plugin). * It was important to get this done through a centralized function, * allowing plugins to intercept this using the beforeCreateFile event. + * + * This method will return true if the file was actually created * * @param string $uri * @param resource $data - * @return void + * @return bool */ public function createFile($uri,$data) { list($dir,$name) = Sabre_DAV_URLUtil::splitPath($uri); - if (!$this->broadcastEvent('beforeBind',array($uri))) return; - if (!$this->broadcastEvent('beforeCreateFile',array($uri,$data))) return; + if (!$this->broadcastEvent('beforeBind',array($uri))) return false; + if (!$this->broadcastEvent('beforeCreateFile',array($uri,$data))) return false; $parent = $this->tree->getNodeForPath($dir); $parent->createFile($name,$data); $this->tree->markDirty($dir); $this->broadcastEvent('afterBind',array($uri)); + + return true; } /** diff --git a/3rdparty/Sabre/DAV/SimpleFile.php b/3rdparty/Sabre/DAV/SimpleFile.php new file mode 100644 index 0000000000000000000000000000000000000000..304dff1c5ec22f594281cbef96c36f19e4e9d347 --- /dev/null +++ b/3rdparty/Sabre/DAV/SimpleFile.php @@ -0,0 +1,120 @@ +<?php + +/** + * SimpleFile + * + * The 'SimpleFile' class is used to easily add read-only immutable files to + * the directory structure. One usecase would be to add a 'readme.txt' to a + * root of a webserver with some standard content. + * + * @package Sabre + * @subpackage DAV + * @copyright Copyright (C) 2007-2011 Rooftop Solutions. All rights reserved. + * @author Evert Pot (http://www.rooftopsolutions.nl/) + * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License + */ +class Sabre_DAV_SimpleFile extends Sabre_DAV_File { + + /** + * File contents + * + * @var string + */ + protected $contents = array(); + + /** + * Name of this resource + * + * @var string + */ + protected $name; + + /** + * A mimetype, such as 'text/plain' or 'text/html' + * + * @var string + */ + protected $mimeType; + + /** + * Creates this node + * + * The name of the node must be passed, as well as the contents of the + * file. + * + * @param string $name + * @param string $contents + */ + public function __construct($name, $contents, $mimeType = null) { + + $this->name = $name; + $this->contents = $contents; + $this->mimeType = $mimeType; + + } + + /** + * Returns the node name for this file. + * + * This name is used to construct the url. + * + * @return string + */ + public function getName() { + + return $this->name; + + } + + /** + * Returns the data + * + * This method may either return a string or a readable stream resource + * + * @return mixed + */ + public function get() { + + return $this->contents; + + } + + /** + * Returns the size of the file, in bytes. + * + * @return int + */ + public function getSize() { + + return strlen($this->contents); + + } + + /** + * Returns the ETag for a file + * + * An ETag is a unique identifier representing the current version of the file. If the file changes, the ETag MUST change. + * The ETag is an arbritrary string, but MUST be surrounded by double-quotes. + * + * Return null if the ETag can not effectively be determined + */ + public function getETag() { + + return '"' . md5($this->contents) . '"'; + + } + + /** + * Returns the mime-type for a file + * + * If null is returned, we'll assume application/octet-stream + */ + public function getContentType() { + + return $this->mimeType; + + } + +} + +?> diff --git a/3rdparty/Sabre/DAV/StringUtil.php b/3rdparty/Sabre/DAV/StringUtil.php index b0b708f8e0f10e66da85be97bc076cd5ee6fbb3d..440cf6866ca6a68d5b8e7f2356342db961468b27 100644 --- a/3rdparty/Sabre/DAV/StringUtil.php +++ b/3rdparty/Sabre/DAV/StringUtil.php @@ -64,6 +64,27 @@ class Sabre_DAV_StringUtil { } + } + + /** + * This method takes an input string, checks if it's not valid UTF-8 and + * attempts to convert it to UTF-8 if it's not. + * + * Note that currently this can only convert ISO-8559-1 to UTF-8 (latin-1), + * anything else will likely fail. + * + * @param string $input + * @return string + */ + static public function ensureUTF8($input) { + + $encoding = mb_detect_encoding($input , array('UTF-8','ISO-8859-1'), true); + + if ($encoding === 'ISO-8859-1') { + return utf8_encode($input); + } else { + return $input; + } } diff --git a/3rdparty/Sabre/DAV/URLUtil.php b/3rdparty/Sabre/DAV/URLUtil.php index 1502e4dd2cea38d652f1038bbb9a9bdbf3b46ee2..8f38749264b1f5e3c5b87ec0195f05aa749dbee2 100644 --- a/3rdparty/Sabre/DAV/URLUtil.php +++ b/3rdparty/Sabre/DAV/URLUtil.php @@ -30,9 +30,14 @@ class Sabre_DAV_URLUtil { */ static function encodePath($path) { - $path = explode('/',$path); - return implode('/',array_map(array('Sabre_DAV_URLUtil','encodePathSegment'), $path)); - + $valid_chars = '/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-.~()'; + $newStr = ''; + for( $i=0; isset($path[$i]); ++$i ) { + if( strpos($valid_chars,($c=$path[$i]))===false ) $newStr .= '%'.sprintf('%02x',ord($c)); + else $newStr .= $c; + } + return $newStr; + } /** @@ -45,35 +50,13 @@ class Sabre_DAV_URLUtil { */ static function encodePathSegment($pathSegment) { + $valid_chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-.~()'; $newStr = ''; - for($i=0;$i<strlen($pathSegment);$i++) { - $c = ord($pathSegment[$i]); - - if( - - /* Unreserved chacaters */ - - ($c>=0x41 /* A */ && $c<=0x5a /* Z */) || - ($c>=0x61 /* a */ && $c<=0x7a /* z */) || - ($c>=0x30 /* 0 */ && $c<=0x39 /* 9 */) || - $c===0x5f /* _ */ || - $c===0x2d /* - */ || - $c===0x2e /* . */ || - $c===0x7E /* ~ */ || - - /* Reserved, but no reserved purpose */ - $c===0x28 /* ( */ || - $c===0x29 /* ) */ - - ) { - $newStr.=$pathSegment[$i]; - } else { - $newStr.='%' . str_pad(dechex($c), 2, '0', STR_PAD_LEFT); - } - + for( $i=0; isset($pathSegment[$i]); ++$i ) { + if( strpos($valid_chars,($c=$pathSegment[$i]))===false ) $newStr .= '%'.sprintf('%02x',ord($c)); + else $newStr .= $c; } return $newStr; - } /** @@ -103,6 +86,7 @@ class Sabre_DAV_URLUtil { case 'ISO-8859-1' : $path = utf8_encode($path); + } return $path; diff --git a/3rdparty/Sabre/DAV/Version.php b/3rdparty/Sabre/DAV/Version.php index c93d793ab672d3bb1f48d5826d420208b99d74ce..e7f7f83e6fffa9b1c1874e0fec4b123f9df30665 100644 --- a/3rdparty/Sabre/DAV/Version.php +++ b/3rdparty/Sabre/DAV/Version.php @@ -14,11 +14,11 @@ class Sabre_DAV_Version { /** * Full version number */ - const VERSION = '1.5.0'; + const VERSION = '1.5.3'; /** * Stability : alpha, beta, stable */ - const STABILITY = 'alpha'; + const STABILITY = 'stable'; } diff --git a/3rdparty/Sabre/DAVACL/Principal.php b/3rdparty/Sabre/DAVACL/Principal.php index 158b271058c704246667c696087d920db3e40516..790603c900f33f3361bcab9cdbea308744dd1383 100644 --- a/3rdparty/Sabre/DAVACL/Principal.php +++ b/3rdparty/Sabre/DAVACL/Principal.php @@ -68,12 +68,19 @@ class Sabre_DAVACL_Principal extends Sabre_DAV_Node implements Sabre_DAVACL_IPri */ public function getAlternateUriSet() { + $uris = array(); + if (isset($this->principalProperties['{DAV:}alternate-URI-set'])) { + + $uris = $this->principalProperties['{DAV:}alternate-URI-set']; + + } + if (isset($this->principalProperties['{http://sabredav.org/ns}email-address'])) { - return array('mailto:' . $this->principalProperties['{http://sabredav.org/ns}email-address']); - } else { - return array(); + $uris[] = 'mailto:' . $this->principalProperties['{http://sabredav.org/ns}email-address']; } + return array_unique($uris); + } /** diff --git a/3rdparty/Sabre/DAVACL/Version.php b/3rdparty/Sabre/DAVACL/Version.php index a705507486c24c74600aa2298d02a211f1dd581e..124463e311e1c04d01acbc1f9da56e5d6d38bc4e 100644 --- a/3rdparty/Sabre/DAVACL/Version.php +++ b/3rdparty/Sabre/DAVACL/Version.php @@ -14,7 +14,7 @@ class Sabre_DAVACL_Version { /** * Full version number */ - const VERSION = '1.4.4'; + const VERSION = '1.5.2'; /** * Stability : alpha, beta, stable diff --git a/3rdparty/Sabre/HTTP/Response.php b/3rdparty/Sabre/HTTP/Response.php index c8c77251a178dee2bfd5a6e0a1e3eeafcb4be285..dce6feac55336bab4e20ac6ed00c3ed5edd48c5f 100644 --- a/3rdparty/Sabre/HTTP/Response.php +++ b/3rdparty/Sabre/HTTP/Response.php @@ -23,7 +23,7 @@ class Sabre_HTTP_Response { 100 => 'Continue', 101 => 'Switching Protocols', 102 => 'Processing', - 200 => 'Ok', + 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authorative Information', diff --git a/3rdparty/Sabre/HTTP/Version.php b/3rdparty/Sabre/HTTP/Version.php index f8d1bb754293225ac8e95e6da8b1faef429a7e25..67be232fc26b4ce1ec0519775995ebf25bb4ff2b 100644 --- a/3rdparty/Sabre/HTTP/Version.php +++ b/3rdparty/Sabre/HTTP/Version.php @@ -14,7 +14,7 @@ class Sabre_HTTP_Version { /** * Full version number */ - const VERSION = '1.4.1'; + const VERSION = '1.5.3'; /** * Stability : alpha, beta, stable diff --git a/3rdparty/Sabre/VObject/Element/DateTime.php b/3rdparty/Sabre/VObject/Element/DateTime.php index 63af858dd68ff60a21e9b3ae03ce85853be8c2a5..30e5c6ca86a0695cec99e0a8ab99dbcdf593d475 100644 --- a/3rdparty/Sabre/VObject/Element/DateTime.php +++ b/3rdparty/Sabre/VObject/Element/DateTime.php @@ -70,20 +70,20 @@ class Sabre_VObject_Element_DateTime extends Sabre_VObject_Property { $this->setValue($dt->format('Ymd\\THis')); $this->offsetUnset('VALUE'); $this->offsetUnset('TZID'); - $this->offsetSet('VALUE','DATETIME'); + $this->offsetSet('VALUE','DATE-TIME'); break; case self::UTC : $dt->setTimeZone(new DateTimeZone('UTC')); $this->setValue($dt->format('Ymd\\THis\\Z')); $this->offsetUnset('VALUE'); $this->offsetUnset('TZID'); - $this->offsetSet('VALUE','DATETIME'); + $this->offsetSet('VALUE','DATE-TIME'); break; case self::LOCALTZ : $this->setValue($dt->format('Ymd\\THis')); $this->offsetUnset('VALUE'); $this->offsetUnset('TZID'); - $this->offsetSet('VALUE','DATETIME'); + $this->offsetSet('VALUE','DATE-TIME'); $this->offsetSet('TZID', $dt->getTimeZone()->getName()); break; case self::DATE : diff --git a/3rdparty/Sabre/VObject/Element/MultiDateTime.php b/3rdparty/Sabre/VObject/Element/MultiDateTime.php index 07f7e82c3467201f3fc7271e76ba4c454394b7ce..5e677f5e5b5feab9f3968f9c925d61675269c3fc 100644 --- a/3rdparty/Sabre/VObject/Element/MultiDateTime.php +++ b/3rdparty/Sabre/VObject/Element/MultiDateTime.php @@ -60,7 +60,7 @@ class Sabre_VObject_Element_MultiDateTime extends Sabre_VObject_Property { $val[] = $i->format('Ymd\\THis'); } $this->setValue(implode(',',$val)); - $this->offsetSet('VALUE','DATETIME'); + $this->offsetSet('VALUE','DATE-TIME'); break; case Sabre_VObject_Element_DateTime::UTC : $val = array(); @@ -69,7 +69,7 @@ class Sabre_VObject_Element_MultiDateTime extends Sabre_VObject_Property { $val[] = $i->format('Ymd\\THis\\Z'); } $this->setValue(implode(',',$val)); - $this->offsetSet('VALUE','DATETIME'); + $this->offsetSet('VALUE','DATE-TIME'); break; case Sabre_VObject_Element_DateTime::LOCALTZ : $val = array(); @@ -77,7 +77,7 @@ class Sabre_VObject_Element_MultiDateTime extends Sabre_VObject_Property { $val[] = $i->format('Ymd\\THis'); } $this->setValue(implode(',',$val)); - $this->offsetSet('VALUE','DATETIME'); + $this->offsetSet('VALUE','DATE-TIME'); $this->offsetSet('TZID', $dt[0]->getTimeZone()->getName()); break; case Sabre_VObject_Element_DateTime::DATE : diff --git a/3rdparty/Sabre/VObject/Property.php b/3rdparty/Sabre/VObject/Property.php index 201e6356ad6c09adb6af1ac53da26db5fc8cc8c4..624dd4b8a58e3fe2398e0295f8431a34384792d2 100644 --- a/3rdparty/Sabre/VObject/Property.php +++ b/3rdparty/Sabre/VObject/Property.php @@ -128,6 +128,44 @@ class Sabre_VObject_Property extends Sabre_VObject_Element { } + /** + * Adds a new componenten or element + * + * You can call this method with the following syntaxes: + * + * add(Sabre_VObject_Parameter $element) + * add(string $name, $value) + * + * The first version adds an Parameter + * The second adds a property as a string. + * + * @param mixed $item + * @param mixed $itemValue + * @return void + */ + public function add($item, $itemValue = null) { + + if ($item instanceof Sabre_VObject_Parameter) { + if (!is_null($itemValue)) { + throw new InvalidArgumentException('The second argument must not be specified, when passing a VObject'); + } + $this->parameters[] = $item; + } elseif(is_string($item)) { + + if (!is_scalar($itemValue)) { + throw new InvalidArgumentException('The second argument must be scalar'); + } + $this->parameters[] = new Sabre_VObject_Parameter($item,$itemValue); + + } else { + + throw new InvalidArgumentException('The first argument must either be a Sabre_VObject_Element or a string'); + + } + + } + + /* ArrayAccess interface {{{ */ /** diff --git a/3rdparty/Sabre/VObject/Reader.php b/3rdparty/Sabre/VObject/Reader.php index 9c20e33cea0520b0276ff5dd104483530ffa6489..c38afbfb632b419592fd0c536539b568a6094d83 100644 --- a/3rdparty/Sabre/VObject/Reader.php +++ b/3rdparty/Sabre/VObject/Reader.php @@ -42,16 +42,10 @@ class Sabre_VObject_Reader { */ static function read($data) { - // Detecting line endings - if (strpos($data,"\r\n")!==false) { - $newLine = "\r\n"; - } elseif (strpos($data,"\r")) { - $newLine = "\r"; - } else { - $newLine = "\n"; - } + // Normalizing newlines + $data = str_replace(array("\r","\n\n"), array("\n","\n"), $data); - $lines = explode($newLine, $data); + $lines = explode("\n", $data); // Unfolding lines $lines2 = array(); diff --git a/3rdparty/Sabre/VObject/Version.php b/3rdparty/Sabre/VObject/Version.php index 8c3fe67b1f4eb26f54694d2cca4cb8513837d9c2..950c1c51104d54a82e16b8955424e27efd296204 100644 --- a/3rdparty/Sabre/VObject/Version.php +++ b/3rdparty/Sabre/VObject/Version.php @@ -14,7 +14,7 @@ class Sabre_VObject_Version { /** * Full version number */ - const VERSION = '1.2.0'; + const VERSION = '1.2.2'; /** * Stability : alpha, beta, stable diff --git a/3rdparty/XML/RPC.php b/3rdparty/XML/RPC.php index 2cdb44f4aea2da2a05bb21a005f61c24276c4bdc..096b22a0ab5f6146808ab09715c6f7afe500a40a 100644 --- a/3rdparty/XML/RPC.php +++ b/3rdparty/XML/RPC.php @@ -1365,7 +1365,7 @@ class XML_RPC_Message extends XML_RPC_Base !preg_match('@^HTTP/[0-9\.]+ 10[0-9]([A-Za-z ]+)?[\r\n]+HTTP/[0-9\.]+ 200@', $data)) { $errstr = substr($data, 0, strpos($data, "\n") - 1); - error_log('HTTP error, got response: ' . $errstr); + if(defined("DEBUG") && DEBUG) {error_log('HTTP error, got response: ' . $errstr);} $r = new XML_RPC_Response(0, $XML_RPC_err['http_error'], $XML_RPC_str['http_error'] . ' (' . $errstr . ')'); @@ -1396,7 +1396,7 @@ class XML_RPC_Message extends XML_RPC_Base xml_error_string(xml_get_error_code($parser_resource)), xml_get_current_line_number($parser_resource)); } - error_log($errstr); + if(defined("DEBUG") && DEBUG) {error_log($errstr);} $r = new XML_RPC_Response(0, $XML_RPC_err['invalid_return'], $XML_RPC_str['invalid_return']); xml_parser_free($parser_resource); diff --git a/3rdparty/css/chosen.css b/3rdparty/css/chosen.css index 247d07bf0217901f93d6a1c83d214db4cef6831f..96bae0fe95a380c0ac984920af40c45a9923bd2a 100644 --- a/3rdparty/css/chosen.css +++ b/3rdparty/css/chosen.css @@ -10,6 +10,7 @@ select.chzn-select { display: inline-block; zoom: 1; *display: inline; + vertical-align: bottom; } .chzn-container .chzn-drop { background: #fff; diff --git a/COPYING-README b/COPYING-README index 5f00323b7196d7c1e9b1485ef882d93fcc28824d..49e035186ed0b3ff295f752150262ea424ebc736 100644 --- a/COPYING-README +++ b/COPYING-README @@ -2,8 +2,14 @@ Files in ownCloud are licensed under the Affero General Public License version 3 the text of which can be found in COPYING-AGPL, or any later version of the AGPL, unless otherwise noted. -Components of ownCloud, including jQuery, are licensed under the MIT/X11 license. +Licensing of components: +* jQuery: MIT / GPL +* HTTP: 3 clause BSD +* MDB2: BSD style custom +* User: AGPL +* XML/RPC: MIT / PHP +* Silk icons: Creative Commons Attribution All unmodified files from these and other sources retain their original copyright and license notices: see the relevant individual files. -Attribution information for ownCloud is contained in the AUTHORS file. +Attribution information for ownCloud is contained in the AUTHORS file. \ No newline at end of file diff --git a/README b/README index 4ad4f82f304ad77bc4e9c5813b51d0d653d3ef9a..60b18defd593f61777ff3a329eb5ac3097f716ba 100644 --- a/README +++ b/README @@ -4,7 +4,7 @@ It is alpha software in development and should be treated accordingly. http://ownCloud.org -Installation instructions: http://owncloud.org/index.php/Installation +Installation instructions: http://owncloud.org/install Source code: http://gitorious.org/owncloud Mailing list: http://mail.kde.org/mailman/listinfo/owncloud diff --git a/apps/admin_export/appinfo/app.php b/apps/admin_export/appinfo/app.php new file mode 100644 index 0000000000000000000000000000000000000000..beebb4864e99aecde84fab1f0f7717cd4d41f134 --- /dev/null +++ b/apps/admin_export/appinfo/app.php @@ -0,0 +1,33 @@ +<?php + +/** +* ownCloud - user_ldap +* +* @author Dominik Schmidt +* @copyright 2011 Dominik Schmidt dev@dominik-schmidt.de +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +* License as published by the Free Software Foundation; either +* version 3 of the License, or any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU AFFERO GENERAL PUBLIC LICENSE for more details. +* +* You should have received a copy of the GNU Affero General Public +* License along with this library. If not, see <http://www.gnu.org/licenses/>. +* +*/ + + +OC_APP::registerAdmin('admin_export','settings'); + +// add settings page to navigation +$entry = array( + 'id' => "admin_export_settings", + 'order'=>1, + 'href' => OC_Helper::linkTo( "admin_export", "settings.php" ), + 'name' => 'Export' +); diff --git a/apps/admin_export/appinfo/info.xml b/apps/admin_export/appinfo/info.xml new file mode 100644 index 0000000000000000000000000000000000000000..c4a2a9b398c4084b118d2ed127b75adcb2865c64 --- /dev/null +++ b/apps/admin_export/appinfo/info.xml @@ -0,0 +1,10 @@ +<?xml version="1.0"?> +<info> + <id>admin_export</id> + <name>Import/Export</name> + <description>Import/Export your owncloud data</description> + <version>0.1</version> + <licence>AGPL</licence> + <author>Thomas Schmidt</author> + <require>2</require> +</info> diff --git a/apps/admin_export/settings.php b/apps/admin_export/settings.php new file mode 100644 index 0000000000000000000000000000000000000000..8308a2b89b502af9789e1de397bf446da98f917c --- /dev/null +++ b/apps/admin_export/settings.php @@ -0,0 +1,96 @@ +<?php + +/** + * ownCloud - admin export + * + * @author Thomas Schmidt + * @copyright 2011 Thomas Schmidt tom@opensuse.org + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + */ +OC_Util::checkAdminUser(); +OC_Util::checkAppEnabled('admin_export'); +if (isset($_POST['admin_export'])) { + $root = OC::$SERVERROOT . "/"; + $zip = new ZipArchive(); + $filename = sys_get_temp_dir() . "/owncloud_export_" . date("y-m-d_H-i-s") . ".zip"; + error_log("Creating export file at: " . $filename); + if ($zip->open($filename, ZIPARCHIVE::CREATE) !== TRUE) { + exit("Cannot open <$filename>\n"); + } + + if (isset($_POST['owncloud_system'])) { + // adding owncloud system files + error_log("Adding owncloud system files to export"); + zipAddDir($root, $zip, false); + foreach (array(".git", "3rdparty", "apps", "core", "files", "l10n", "lib", "ocs", "search", "settings", "tests") as $dirname) { + zipAddDir($root . $dirname, $zip, true, basename($root) . "/"); + } + } + + if (isset($_POST['owncloud_config'])) { + // adding owncloud config + // todo: add database export + error_log("Adding owncloud config to export"); + zipAddDir($root . "config/", $zip, true, basename($root) . "/"); + $zip->addFile($root . '/data/.htaccess', basename($root) . "/data/owncloud.db"); + } + + if (isset($_POST['user_files'])) { + // adding user files + $zip->addFile($root . '/data/.htaccess', basename($root) . "/data/.htaccess"); + $zip->addFile($root . '/data/index.html', basename($root) . "/data/index.html"); + foreach (OC_User::getUsers() as $i) { + error_log("Adding owncloud user files of $i to export"); + zipAddDir($root . "data/" . $i, $zip, true, basename($root) . "/data/"); + } + } + + $zip->close(); + + header("Content-Type: application/zip"); + header("Content-Disposition: attachment; filename=" . basename($filename)); + header("Content-Length: " . filesize($filename)); + ob_end_clean(); + readfile($filename); + unlink($filename); +} else { +// fill template + $tmpl = new OC_Template('admin_export', 'settings'); + return $tmpl->fetchPage(); +} + +function zipAddDir($dir, $zip, $recursive=true, $internalDir='') { + $dirname = basename($dir); + $zip->addEmptyDir($internalDir . $dirname); + $internalDir.=$dirname.='/'; + + if ($dirhandle = opendir($dir)) { + while (false !== ( $file = readdir($dirhandle))) { + + if (( $file != '.' ) && ( $file != '..' )) { + + if (is_dir($dir . '/' . $file) && $recursive) { + zipAddDir($dir . '/' . $file, $zip, $recursive, $internalDir); + } elseif (is_file($dir . '/' . $file)) { + $zip->addFile($dir . '/' . $file, $internalDir . $file); + } + } + } + closedir($dirhandle); + } else { + error_log("Was not able to open directory: " . $dir); + } +} diff --git a/apps/admin_export/templates/settings.php b/apps/admin_export/templates/settings.php new file mode 100644 index 0000000000000000000000000000000000000000..47689facbbc20b5d449853ba6f7c4ce5408d2647 --- /dev/null +++ b/apps/admin_export/templates/settings.php @@ -0,0 +1,13 @@ +<form id="export" action="#" method="post"> + <fieldset class="personalblock"> + <legend><strong><?php echo $l->t('Export this ownCloud instance');?></strong></legend> + <p><?php echo $l->t('This will create a compressed file that contains the data of this owncloud instance. + Please choose which components should be included:');?> + </p> + <p><input type="checkbox" id="user_files" name="user_files" value="true"><label for="user_files"><?php echo $l->t('User files');?></label><br/> + <input type="checkbox" id="owncloud_system" name="owncloud_system" value="true"><label for="owncloud_system"><?php echo $l->t('ownCloud system files');?></label><br/> + <input type="checkbox" id="owncloud_config" name="owncloud_config" value="true"><label for="owncloud_config"><?php echo $l->t('ownCloud configuration');?></label> + </p> + <input type="submit" name="admin_export" value="Export" /> + </fieldset> +</form> diff --git a/apps/bookmarks/addBm.php b/apps/bookmarks/addBm.php index 2dab33afb22d4351aba9f1696023c5e84f30eb2e..a7cdcee8faae1e8fbb56ca7d284ab6c93cc11b53 100644 --- a/apps/bookmarks/addBm.php +++ b/apps/bookmarks/addBm.php @@ -24,10 +24,8 @@ require_once('../../lib/base.php'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - header( 'Location: '.OC_Helper::linkTo( '', 'index.php' )); - exit(); -} +OC_Util::checkLoggedIn(); +OC_Util::checkAppEnabled('bookmarks'); require_once('bookmarksHelper.php'); @@ -43,6 +41,5 @@ $metadata = getURLMetadata($url); $tmpl->assign('URL', htmlentities($metadata['url'])); $tmpl->assign('TITLE', htmlentities($metadata['title'])); -$tmpl->assign('DESCRIPTION', htmlentities($metadata['description'])); -$tmpl->printPage(); \ No newline at end of file +$tmpl->printPage(); diff --git a/apps/bookmarks/ajax/addBookmark.php b/apps/bookmarks/ajax/addBookmark.php index 7cf5baa4a6e55bded3a3d58d6ec4c49c22b035f3..0a7cdfc9be32642d80591152edf417e19d86594d 100644 --- a/apps/bookmarks/ajax/addBookmark.php +++ b/apps/bookmarks/ajax/addBookmark.php @@ -26,14 +26,9 @@ $RUNTIME_NOSETUPFS=true; require_once('../../../lib/base.php'); -// We send json data -header( "Content-Type: application/jsonrequest" ); - // Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" ))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('bookmarks'); $CONFIG_DBTYPE = OC_Config::getValue( "dbtype", "sqlite" ); if( $CONFIG_DBTYPE == 'sqlite' or $CONFIG_DBTYPE == 'sqlite3' ){ @@ -45,15 +40,14 @@ if( $CONFIG_DBTYPE == 'sqlite' or $CONFIG_DBTYPE == 'sqlite3' ){ //FIXME: Detect when user adds a known URL $query = OC_DB::prepare(" INSERT INTO *PREFIX*bookmarks - (url, title, description, user_id, public, added, lastmodified) - VALUES (?, ?, ?, ?, 0, $_ut, $_ut) + (url, title, user_id, public, added, lastmodified) + VALUES (?, ?, ?, 0, $_ut, $_ut) "); $params=array( htmlspecialchars_decode($_GET["url"]), htmlspecialchars_decode($_GET["title"]), - htmlspecialchars_decode($_GET["description"]), OC_User::getUser() ); $query->execute($params); @@ -76,6 +70,6 @@ if($b_id !== false) { $query->execute($params); } - echo json_encode( array( 'status' => 'success', 'data' => $b_id)); + OC_JSON::success(array('data' => $b_id)); } diff --git a/apps/bookmarks/ajax/delBookmark.php b/apps/bookmarks/ajax/delBookmark.php index bf1611fe5c1fff4d6dda7ce6155fd53bfd8d3251..4aef86e771b4b125b71fe56bc3bc1ef7fe1fc7fd 100644 --- a/apps/bookmarks/ajax/delBookmark.php +++ b/apps/bookmarks/ajax/delBookmark.php @@ -26,14 +26,9 @@ $RUNTIME_NOSETUPFS=true; require_once('../../../lib/base.php'); -// We send json data -header( "Content-Type: application/jsonrequest" ); - // Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" ))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('bookmarks'); $params=array( htmlspecialchars_decode($_GET["url"]), @@ -64,4 +59,4 @@ $query = OC_DB::prepare(" $result = $query->execute(); // var_dump($params); -echo json_encode( array( "status" => "success", "data" => array())); +OC_JSON::success(array('data' => array())); diff --git a/apps/bookmarks/ajax/editBookmark.php b/apps/bookmarks/ajax/editBookmark.php index 1bd2fc08bcad8c3d5cc296ecbb8a47dc04f14bbc..e205f69bf5a641c56f06a3903e190b218a103c4a 100644 --- a/apps/bookmarks/ajax/editBookmark.php +++ b/apps/bookmarks/ajax/editBookmark.php @@ -26,14 +26,9 @@ $RUNTIME_NOSETUPFS=true; require_once('../../../lib/base.php'); -// We send json data -header( 'Content-Type: application/jsonrequest' ); - // Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => 'Authentication error' ))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('bookmarks'); $CONFIG_DBTYPE = OC_Config::getValue( "dbtype", "sqlite" ); if( $CONFIG_DBTYPE == 'sqlite' or $CONFIG_DBTYPE == 'sqlite3' ){ @@ -46,14 +41,13 @@ $bookmark_id = (int)$_GET["id"]; $query = OC_DB::prepare(" UPDATE *PREFIX*bookmarks - SET url = ?, title =?, description = ?, lastmodified = $_ut + SET url = ?, title =?, lastmodified = $_ut WHERE id = $bookmark_id "); $params=array( htmlspecialchars_decode($_GET["url"]), htmlspecialchars_decode($_GET["title"]), - htmlspecialchars_decode($_GET["description"]), ); $query->execute($params); diff --git a/apps/bookmarks/ajax/getMeta.php b/apps/bookmarks/ajax/getMeta.php index e9fe0d684dcc8fdbc27b553eb911b4a78c351b2e..ca797315ef47cc54b1601e1feb35319fb1b509a6 100644 --- a/apps/bookmarks/ajax/getMeta.php +++ b/apps/bookmarks/ajax/getMeta.php @@ -26,14 +26,9 @@ $RUNTIME_NOSETUPFS=true; require_once('../../../lib/base.php'); -// We send json data -header( 'Content-Type: application/jsonrequest' ); - // Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => 'Authentication error' ))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('bookmarks'); // $metadata = array(); @@ -41,4 +36,4 @@ require '../bookmarksHelper.php'; $metadata = getURLMetadata(htmlspecialchars_decode($_GET["url"])); -echo json_encode( array( 'status' => 'success', 'data' => $metadata)); +OC_JSON::success(array('data' => $metadata)); diff --git a/apps/bookmarks/ajax/recordClick.php b/apps/bookmarks/ajax/recordClick.php index 116daea8bbb593267025e5caa611f07a065dc3d8..e6fdfe043e1dcd6691e4c55f87da376dbc2f6933 100644 --- a/apps/bookmarks/ajax/recordClick.php +++ b/apps/bookmarks/ajax/recordClick.php @@ -27,11 +27,8 @@ $RUNTIME_NOSETUPFS=true; require_once('../../../lib/base.php'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - header( "Content-Type: application/jsonrequest" ); - echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" ))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('bookmarks'); $query = OC_DB::prepare(" UPDATE *PREFIX*bookmarks diff --git a/apps/bookmarks/ajax/updateList.php b/apps/bookmarks/ajax/updateList.php index 67acb2190ca96bbdefa1baebfdd7606063dfdfd0..f2c81256bb63c751871ad91a3dd3ff78b1d52346 100644 --- a/apps/bookmarks/ajax/updateList.php +++ b/apps/bookmarks/ajax/updateList.php @@ -26,14 +26,9 @@ $RUNTIME_NOSETUPFS=true; require_once('../../../lib/base.php'); -// We send json data -header( 'Content-Type: application/jsonrequest' ); - // Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => 'Authentication error' ))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('bookmarks'); $params=array(OC_User::getUser()); $CONFIG_DBTYPE = OC_Config::getValue( 'dbtype', 'sqlite' ); @@ -64,13 +59,14 @@ if( $CONFIG_DBTYPE == 'sqlite' or $CONFIG_DBTYPE == 'sqlite3' ){ } $query = OC_DB::prepare(' - SELECT id, url, title, description, + SELECT id, url, title, CASE WHEN *PREFIX*bookmarks.id = *PREFIX*bookmarks_tags.bookmark_id THEN GROUP_CONCAT( tag ' .$_gc_separator. ' ) ELSE \' \' END AS tags - FROM *PREFIX*bookmarks, *PREFIX*bookmarks_tags + FROM *PREFIX*bookmarks + LEFT JOIN *PREFIX*bookmarks_tags ON 1=1 WHERE (*PREFIX*bookmarks.id = *PREFIX*bookmarks_tags.bookmark_id OR *PREFIX*bookmarks.id NOT IN ( SELECT *PREFIX*bookmarks_tags.bookmark_id FROM *PREFIX*bookmarks_tags @@ -84,4 +80,4 @@ $query = OC_DB::prepare(' $bookmarks = $query->execute($params)->fetchAll(); -echo json_encode( array( 'status' => 'success', 'data' => $bookmarks)); +OC_JSON::success(array('data' => $bookmarks)); diff --git a/apps/bookmarks/appinfo/app.php b/apps/bookmarks/appinfo/app.php index 33b7ba61449fd4e90091d4d294497c3607d4445f..44a1e47dff9fb0cc0fca21b0c885dd51c62ceb9b 100644 --- a/apps/bookmarks/appinfo/app.php +++ b/apps/bookmarks/appinfo/app.php @@ -1,27 +1,14 @@ <?php - /** -* ownCloud - bookmarks plugin -* -* @author Arthur Schiwon -* @copyright 2011 Arthur Schiwon blizzz@arthur-schiwon.de -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either -* version 3 of the License, or any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU AFFERO GENERAL PUBLIC LICENSE for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library. If not, see <http://www.gnu.org/licenses/>. -* +* Copyright (c) 2011 Marvin Thomas Rabe <m.rabe@echtzeitraum.de> +* Copyright (c) 2011 Arthur Schiwon <blizzz@arthur-schiwon.de> +* This file is licensed under the Affero General Public License version 3 or +* later. +* See the COPYING-README file. */ OC_App::register( array( 'order' => 70, 'id' => 'bookmark', 'name' => 'Bookmarks' )); OC_App::addNavigationEntry( array( 'id' => 'bookmarks_index', 'order' => 70, 'href' => OC_Helper::linkTo( 'bookmarks', 'index.php' ), 'icon' => OC_Helper::imagePath( 'bookmarks', 'bookmarks.png' ), 'name' => 'Bookmarks' )); +OC_App::registerPersonal('bookmarks', 'settings'); diff --git a/apps/bookmarks/appinfo/database.xml b/apps/bookmarks/appinfo/database.xml index c30db8bd0c8ec8f461aa43d4e97145c0fce59f11..fca38ad84b2d5c5e2d82098cd54360635765e225 100644 --- a/apps/bookmarks/appinfo/database.xml +++ b/apps/bookmarks/appinfo/database.xml @@ -29,13 +29,6 @@ <notnull>true</notnull> <length>140</length> </field> - <field> - <name>description</name> - <type>text</type> - <default></default> - <notnull>false</notnull> - <length>255</length> - </field> <field> <name>user_id</name> <type>text</type> diff --git a/apps/bookmarks/bookmarksHelper.php b/apps/bookmarks/bookmarksHelper.php index aee941a27b95ea69e2526512bd612e127c9c9221..44d4235b9b3a69384f251ce05a3b862499ad80b1 100644 --- a/apps/bookmarks/bookmarksHelper.php +++ b/apps/bookmarks/bookmarksHelper.php @@ -1,5 +1,52 @@ <?php +// Source: http://www.php.net/manual/de/function.curl-setopt.php#102121 +// This works around a safe_mode/open_basedir restriction +function curl_exec_follow(/*resource*/ $ch, /*int*/ &$maxredirect = null) { + $mr = $maxredirect === null ? 5 : intval($maxredirect); + if (ini_get('open_basedir') == '' && ini_get('safe_mode' == 'Off')) { + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $mr > 0); + curl_setopt($ch, CURLOPT_MAXREDIRS, $mr); + } else { + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); + if ($mr > 0) { + $newurl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); + + $rch = curl_copy_handle($ch); + curl_setopt($rch, CURLOPT_HEADER, true); + curl_setopt($rch, CURLOPT_NOBODY, true); + curl_setopt($rch, CURLOPT_FORBID_REUSE, false); + curl_setopt($rch, CURLOPT_RETURNTRANSFER, true); + do { + curl_setopt($rch, CURLOPT_URL, $newurl); + $header = curl_exec($rch); + if (curl_errno($rch)) { + $code = 0; + } else { + $code = curl_getinfo($rch, CURLINFO_HTTP_CODE); + if ($code == 301 || $code == 302) { + preg_match('/Location:(.*?)\n/', $header, $matches); + $newurl = trim(array_pop($matches)); + } else { + $code = 0; + } + } + } while ($code && --$mr); + curl_close($rch); + if (!$mr) { + if ($maxredirect === null) { + trigger_error('Too many redirects. When following redirects, libcurl hit the maximum amount.', E_USER_WARNING); + } else { + $maxredirect = 0; + } + return false; + } + curl_setopt($ch, CURLOPT_URL, $newurl); + } + } + return curl_exec($ch); +} + function getURLMetadata($url) { //allow only http(s) and (s)ftp $protocols = '/^[hs]{0,1}[tf]{0,1}tp[s]{0,1}\:\/\//i'; @@ -9,15 +56,14 @@ function getURLMetadata($url) { } $metadata['url'] = $url; - $page = file_get_contents($url); + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + $page = curl_exec_follow($ch); + curl_close($ch); + @preg_match( "/<title>(.*)<\/title>/si", $page, $match ); $metadata['title'] = htmlspecialchars_decode(@$match[1]); - $meta = get_meta_tags($url); - - if(array_key_exists('description', $meta)) { - $metadata['description'] = $meta['description']; - } - return $metadata; } \ No newline at end of file diff --git a/apps/bookmarks/css/bookmarks.css b/apps/bookmarks/css/bookmarks.css index 0fc6a2ad6083d68c09b1aaa47f259e685a7b4837..233d4a02944f667951ae602b97bd7bed2a652796 100644 --- a/apps/bookmarks/css/bookmarks.css +++ b/apps/bookmarks/css/bookmarks.css @@ -12,34 +12,13 @@ padding: 0.5ex; } -.bookmark_actions { - font-size: smaller; - color: #ff44ff; - padding-left: 4em; -} - -.bookmark_actions span:hover { - cursor: pointer; - text-decoration: underline; -} - -.bookmarks_sorting { - float: left; - margin-left: 2em; -} - -.bookmarks_sorting li { - padding: 1ex 1em; - border: 1px solid gray; - -moz-border-radius:1em; -webkit-border-radius:1em; border-radius:1em; -} - -.bookmarks_sorting_active { - font-weight: bold; -} - .bookmarks_add { display: none; + margin-top: 45px; +} + +.bookmarks_list { + margin-top: 45px; } .bookmarks_addBml { @@ -56,15 +35,28 @@ width: 20em; } +.bookmark_actions { + display: none; + font-size: smaller; + color: #666; + padding-left: 4em; +} + +.bookmark_actions span:hover { + cursor: pointer; + text-decoration: underline; +} + .bookmark_single { - margin-left: 2em; - margin-top: 3ex; - padding: 0.5ex; -/* border-bottom: 1px solid black; */ + padding: 0.5em 1em; } .bookmark_single:hover { - background-color: #ccccff; + background-color: #EAEAEA; +} + +.bookmark_single:hover .bookmark_actions { + display: block; } .bookmark_title { @@ -77,14 +69,10 @@ color: green; } -.bookmark_tags { +.bookmark_tag { color: #ff3333; } -.clear { - clear:both; -} - .loading_meta { display: none; margin-left: 5px; diff --git a/apps/bookmarks/index.php b/apps/bookmarks/index.php index ba9f7cc0c618b5495c9dcba5b5b469eb020c212a..50fea3fddbd68b4966838690799a434c730530b9 100644 --- a/apps/bookmarks/index.php +++ b/apps/bookmarks/index.php @@ -24,10 +24,8 @@ require_once('../../lib/base.php'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - header( "Location: ".OC_Helper::linkTo( '', 'index.php' )); - exit(); -} +OC_Util::checkLoggedIn(); +OC_Util::checkAppEnabled('bookmarks'); OC_App::setActiveNavigationEntry( 'bookmarks_index' ); @@ -36,4 +34,4 @@ OC_Util::addStyle('bookmarks', 'bookmarks'); $tmpl = new OC_Template( 'bookmarks', 'list', 'user' ); -$tmpl->printPage(); \ No newline at end of file +$tmpl->printPage(); diff --git a/apps/bookmarks/js/addBm.js b/apps/bookmarks/js/addBm.js index 7c914f2338af8274e740cd666e6e4ada96603c11..6e13b59bb2e6e686900011bc6893ef2e67550b6d 100644 --- a/apps/bookmarks/js/addBm.js +++ b/apps/bookmarks/js/addBm.js @@ -5,11 +5,10 @@ $(document).ready(function() { function addBookmark(event) { var url = $('#bookmark_add_url').val(); var title = $('#bookmark_add_title').val(); - var description = $('#bookmark_add_description').val(); var tags = $('#bookmark_add_tags').val(); $.ajax({ url: 'ajax/addBookmark.php', - data: 'url=' + encodeURI(url) + '&title=' + encodeURI(title) + '&description=' + encodeURI(description) + '&tags=' + encodeURI(tags), + data: 'url=' + encodeURI(url) + '&title=' + encodeURI(title) + '&tags=' + encodeURI(tags), success: function(data){ location.href='index.php'; } diff --git a/apps/bookmarks/js/bookmarks.js b/apps/bookmarks/js/bookmarks.js index 8c0b74b6c67591422e058e310dc73d0f0b9cfb36..51646e5382bf8075e862706cf0473bcf38559f6a 100644 --- a/apps/bookmarks/js/bookmarks.js +++ b/apps/bookmarks/js/bookmarks.js @@ -12,9 +12,6 @@ $(document).ready(function() { $(window).scroll(updateOnBottom); $('#bookmark_add_url').focusout(getMetadata); - $('.' + bookmarks_sorting).addClass('bookmarks_sorting_active'); - - $('.bookmarks_sorting li').click(function(event){changeSorting(this)}); $('.bookmarks_list').empty(); getBookmarks(); @@ -39,6 +36,7 @@ function getBookmarks() { for(var i in bookmarks.data) { updateBookmarksList(bookmarks.data[i]); } + $('.bookmark_link').click(recordClick); $('.bookmark_delete').click(delBookmark); $('.bookmark_edit').click(showBookmark); @@ -57,36 +55,21 @@ function getMetadata() { success: function(pageinfo){ $('#bookmark_add_url').val(pageinfo.data.url); $('#bookmark_add_title').val(pageinfo.data.title); - if (pageinfo.data.description !== undefined){ - $('#bookmark_add_description').val(pageinfo.data.description); - } $('.loading_meta').css('display','none'); } }); } -function changeSorting(sortEl) { - $('.' + bookmarks_sorting).removeClass('bookmarks_sorting_active'); - bookmarks_sorting = sortEl.className; - $('.' + bookmarks_sorting).addClass('bookmarks_sorting_active'); - - $('.bookmarks_list').empty(); - bookmarks_page = 0; - bookmarks_loading = false; - getBookmarks(); -} - // function addBookmark() { // Instead of creating editBookmark() function, Converted the one above to // addOrEditBookmark() to make .js file more compact. function addOrEditBookmark(event) { var id = $('#bookmark_add_id').val(); - var url = encodeEntities($('#bookmark_add_url').val()) - var title = encodeEntities($('#bookmark_add_title').val()) - var description = encodeEntities($('#bookmark_add_description').val()) - var tags = encodeEntities($('#bookmark_add_tags').val()) - var taglist = tags.split(' ') + var url = encodeEntities($('#bookmark_add_url').val()); + var title = encodeEntities($('#bookmark_add_title').val()); + var tags = encodeEntities($('#bookmark_add_tags').val()); + var taglist = tags.split(' '); var tagshtml = ''; for ( var i=0, len=taglist.length; i<len; ++i ){ tagshtml += '<a class="bookmark_tag" href="?tag=' + encodeURI(taglist[i]) + '">' + taglist[i] + '</a> '; @@ -95,16 +78,15 @@ function addOrEditBookmark(event) { if (id == 0) { $.ajax({ url: 'ajax/addBookmark.php', - data: 'url=' + encodeURI(url) + '&title=' + encodeURI(title) + '&description=' + encodeURI(description) + '&tags=' + encodeURI(tags), + data: 'url=' + encodeURI(url) + '&title=' + encodeURI(title) + '&tags=' + encodeURI(tags), success: function(response){ var bookmark_id = response.data; $('.bookmarks_add').slideToggle(); $('.bookmarks_add').children('p').children('.bookmarks_input').val(''); $('.bookmarks_list').prepend( '<div class="bookmark_single" data-id="' + bookmark_id + '" >' + - '<p class="bookmark_title"><a href="' + url + '" target="_new" class="bookmark_link">' + title + '</a></p>' + + '<p class="bookmark_title"><a href="' + url + '" target="_blank" class="bookmark_link">' + title + '</a></p>' + '<p class="bookmark_url">' + url + '</p>' + - '<p class="bookmark_description">' + description + '</p>' + '<p class="bookmark_tags">' + tagshtml + '</p>' + '<p class="bookmark_actions"><span class="bookmark_delete">Delete</span> <span class="bookmark_edit">Edit</span></p>' + '</div>' @@ -115,8 +97,7 @@ function addOrEditBookmark(event) { else { $.ajax({ url: 'ajax/editBookmark.php', - data: 'id=' + id + '&url=' + encodeURI(url) + '&title=' + encodeURI(title) + '&description=' + - encodeURI(description) + '&tags=' + encodeURI(tags), + data: 'id=' + id + '&url=' + encodeURI(url) + '&title=' + encodeURI(title) + '&tags=' + encodeURI(tags), success: function(){ $('.bookmarks_add').slideToggle(); $('.bookmarks_add').children('p').children('.bookmarks_input').val(''); @@ -124,7 +105,6 @@ function addOrEditBookmark(event) { var record = $('.bookmark_single[data-id = "' + id + '"]'); record.children('.bookmark_url:first').text(url); - record.children('.bookmark_description:first').text(description); var record_title = record.children('.bookmark_title:first').children('a:first'); record_title.attr('href', url); @@ -138,7 +118,7 @@ function addOrEditBookmark(event) { } function delBookmark(event) { - var record = $(this).parent().parent() + var record = $(this).parent().parent(); $.ajax({ url: 'ajax/delBookmark.php', data: 'url=' + encodeURI($(this).parent().parent().children('.bookmark_url:first').text()), @@ -151,7 +131,6 @@ function showBookmark(event) { $('#bookmark_add_id').val(record.attr('data-id')); $('#bookmark_add_url').val(record.children('.bookmark_url:first').text()); $('#bookmark_add_title').val(record.children('.bookmark_title:first').text()); - $('#bookmark_add_description').val(record.children('.bookmark_description:first').text()); $('#bookmark_add_tags').val(record.children('.bookmark_tags:first').text()); if ($('.bookmarks_add').css('display') == 'none') { @@ -163,10 +142,6 @@ function showBookmark(event) { } -function editBookmark(event) { - -} - function updateBookmarksList(bookmark) { var tags = encodeEntities(bookmark.tags).split(' '); var taglist = ''; @@ -178,9 +153,8 @@ function updateBookmarksList(bookmark) { } $('.bookmarks_list').append( '<div class="bookmark_single" data-id="' + bookmark.id +'" >' + - '<p class="bookmark_title"><a href="' + encodeEntities(bookmark.url) + '" target="_new" class="bookmark_link">' + encodeEntities(bookmark.title) + '</a></p>' + + '<p class="bookmark_title"><a href="' + encodeEntities(bookmark.url) + '" target="_blank" class="bookmark_link">' + encodeEntities(bookmark.title) + '</a></p>' + '<p class="bookmark_url">' + encodeEntities(bookmark.url) + '</p>' + - '<p class="bookmark_description">' + encodeEntities(bookmark.description) + '</p>' + '<p class="bookmark_tags">' + taglist + '</p>' + '<p class="bookmark_actions"><span class="bookmark_delete">Delete</span> <span class="bookmark_edit">Edit</span></p>' + '</div>' diff --git a/apps/bookmarks/settings.php b/apps/bookmarks/settings.php new file mode 100644 index 0000000000000000000000000000000000000000..8186472dec9eabc35fbf4e0fb187e4e3ea8f9918 --- /dev/null +++ b/apps/bookmarks/settings.php @@ -0,0 +1,13 @@ +<?php +/** + * Copyright (c) 2011 Marvin Thomas Rabe <m.rabe@echtzeitraum.de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +$tmpl = new OC_Template( 'bookmarks', 'settings'); + +OC_Util::addScript('bookmarks','settings'); + +return $tmpl->fetchPage(); diff --git a/apps/bookmarks/templates/addBm.php b/apps/bookmarks/templates/addBm.php index cbc4910e1aeb8bbdf8f312b0b5b9ed074c782e2c..c285c3579c565e82d459130c0b035df498b32017 100644 --- a/apps/bookmarks/templates/addBm.php +++ b/apps/bookmarks/templates/addBm.php @@ -1,8 +1,7 @@ <div class="bookmarks_addBm"> - <p><label class="bookmarks_label">Address</label><input type="text" id="bookmark_add_url" class="bookmarks_input" value="<? echo $_['URL']; ?>"/></p> - <p><label class="bookmarks_label">Title</label><input type="text" id="bookmark_add_title" class="bookmarks_input" value="<? echo $_['TITLE']; ?>" /></p> - <p><label class="bookmarks_label">Description</label><input type="text" id="bookmark_add_description" class="bookmarks_input" value="<? echo $_['DESCRIPTION']; ?>" /></p> - <p><label class="bookmarks_label">Tags</label><input type="text" id="bookmark_add_tags" class="bookmarks_input" /></p> - <p><label class="bookmarks_label"> </label><label class="bookmarks_hint">Hint: Use space to separate tags.</label></p> - <p><label class="bookmarks_label"></label><input type="submit" id="bookmark_add_submit" /></p> -</div> \ No newline at end of file + <p><label class="bookmarks_label"><?php echo $l->t('Address'); ?></label><input type="text" id="bookmark_add_url" class="bookmarks_input" value="<?php echo $_['URL']; ?>"/></p> + <p><label class="bookmarks_label"><?php echo $l->t('Title'); ?></label><input type="text" id="bookmark_add_title" class="bookmarks_input" value="<?php echo $_['TITLE']; ?>" /></p> + <p><label class="bookmarks_label"><?php echo $l->t('Tags'); ?></label><input type="text" id="bookmark_add_tags" class="bookmarks_input" /></p> + <p><label class="bookmarks_label"> </label><label class="bookmarks_hint"><?php echo $l->t('Hint: Use space to separate tags.'); ?></label></p> + <p><label class="bookmarks_label"></label><input type="submit" value="<?php echo $l->t('Add bookmark'); ?>" id="bookmark_add_submit" /></p> +</div> diff --git a/apps/bookmarks/templates/list.php b/apps/bookmarks/templates/list.php index 2aa5093c82b8a074cc6e6a297da3238c8b124162..ccfe74f008f5f1bca0366598a0aa9917ef19b2d1 100644 --- a/apps/bookmarks/templates/list.php +++ b/apps/bookmarks/templates/list.php @@ -1,30 +1,25 @@ +<?php +/** + * Copyright (c) 2011 Marvin Thomas Rabe <m.rabe@echtzeitraum.de> + * Copyright (c) 2011 Arthur Schiwon <blizzz@arthur-schiwon.de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +?> <input type="hidden" id="bookmarkFilterTag" value="<?php if(isset($_GET['tag'])) echo htmlentities($_GET['tag']); ?>" /> -<h2 class="bookmarks_headline"><?php echo isset($_GET["tag"]) ? 'Bookmarks with tag: ' . urldecode($_GET["tag"]) : 'All bookmarks'; ?></h2> -<div class="bookmarks_menu"> - <input type="button" class="bookmarks_addBtn" value="Add Bookmark"/> - <a class="bookmarks_addBml" href="javascript:var url = encodeURIComponent(location.href);window.open('<?php echo OC_Helper::linkTo('bookmarks', 'addBm.php', null, true); ?>?url='+url, 'owncloud-bookmarks');" title="Drag this to your browser bookmarks and click it, when you want to bookmark a webpage.">Add page to ownCloud</a> +<div id="controls"> + <input type="button" class="bookmarks_addBtn" value="<?php echo $l->t('Add bookmark'); ?>"/> </div> <div class="bookmarks_add"> <input type="hidden" id="bookmark_add_id" value="0" /> - <p><label class="bookmarks_label">Address</label><input type="text" id="bookmark_add_url" class="bookmarks_input" /></p> - <p><label class="bookmarks_label">Title</label><input type="text" id="bookmark_add_title" class="bookmarks_input" /> + <p><label class="bookmarks_label"><?php echo $l->t('Address'); ?></label><input type="text" id="bookmark_add_url" class="bookmarks_input" /></p> + <p><label class="bookmarks_label"><?php echo $l->t('Title'); ?></label><input type="text" id="bookmark_add_title" class="bookmarks_input" /> <img class="loading_meta" src="<?php echo OC_Helper::imagePath('core', 'loading.gif'); ?>" /></p> - <p><label class="bookmarks_label">Description</label><input type="text" id="bookmark_add_description" class="bookmarks_input" /> - <img class="loading_meta" src="<?php echo OC_Helper::imagePath('core', 'loading.gif'); ?>" /></p> - <p><label class="bookmarks_label">Tags</label><input type="text" id="bookmark_add_tags" class="bookmarks_input" /></p> - <p><label class="bookmarks_label"> </label><label class="bookmarks_hint">Hint: Use space to separate tags.</label></p> - <p><label class="bookmarks_label"></label><input type="submit" id="bookmark_add_submit" /></p> -</div> -<div class="bookmarks_sorting pager"> - <ul> - <li class="bookmarks_sorting_recent">Recent Bookmarks</li> - <li class="bookmarks_sorting_clicks">Most clicks</li> - </ul> + <p><label class="bookmarks_label"><?php echo $l->t('Tags'); ?></label><input type="text" id="bookmark_add_tags" class="bookmarks_input" /></p> + <p><label class="bookmarks_label"> </label><label class="bookmarks_hint"><?php echo $l->t('Hint: Use space to separate tags.'); ?></label></p> + <p><label class="bookmarks_label"></label><input type="submit" value="<?php echo $l->t('Add bookmark'); ?>" id="bookmark_add_submit" /></p> </div> -<div class="clear"></div> <div class="bookmarks_list"> - <noscript> - JavaScript is needed to display your Bookmarks - </noscript> - You have no bookmarks -</div> + <?php echo $l->t('You have no bookmarks'); ?> +</div> \ No newline at end of file diff --git a/apps/bookmarks/templates/settings.php b/apps/bookmarks/templates/settings.php new file mode 100644 index 0000000000000000000000000000000000000000..b7da441c2f8117a3cdc66cc682bfb433e0ae0a09 --- /dev/null +++ b/apps/bookmarks/templates/settings.php @@ -0,0 +1,14 @@ +<?php +/** + * Copyright (c) 2011 Marvin Thomas Rabe <m.rabe@echtzeitraum.de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +?> +<form id="bookmarks"> + <fieldset class="personalblock"> + <span class="bold"><?php echo $l->t('Bookmarklet:');?></span> <a class="bookmarks_addBml" href="javascript:var url = encodeURIComponent(location.href);window.open('<?php echo OC_Helper::linkTo('bookmarks', 'addBm.php', null, true); ?>?url='+url, 'owncloud-bookmarks');"><?php echo $l->t('Add page to ownCloud'); ?></a> + <br/><em><?php echo $l->t('Drag this to your browser bookmarks and click it, when you want to bookmark a webpage.'); ?></em><br /> + </fieldset> +</form> diff --git a/apps/calendar/ajax/activation.php b/apps/calendar/ajax/activation.php index 778c88c2721f07dc06a310416c6d4717e20e5550..89239f21759bd06f06c6c1ecfe71230c9e393065 100644 --- a/apps/calendar/ajax/activation.php +++ b/apps/calendar/ajax/activation.php @@ -1,21 +1,16 @@ <?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Bart Visscher * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ +/** + * Copyright (c) 2011 Bart Visscher <bartv@thisnet.nl> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + require_once ("../../../lib/base.php"); if(!OC_USER::isLoggedIn()) { die("<script type=\"text/javascript\">document.location = oc_webroot;</script>"); } +OC_JSON::checkAppEnabled('calendar'); $calendarid = $_POST['calendarid']; OC_Calendar_Calendar::setCalendarActive($calendarid, $_POST['active']); $cal = OC_Calendar_Calendar::findCalendar($calendarid); diff --git a/apps/calendar/ajax/changeview.php b/apps/calendar/ajax/changeview.php index d3a00bf1728aa6d41e2dca9c751757d56cb1ecc1..b396ff4945b8635529dc51386bf223c834d57203 100644 --- a/apps/calendar/ajax/changeview.php +++ b/apps/calendar/ajax/changeview.php @@ -1,26 +1,16 @@ <?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Georg Ehrke * - * author: Georg Ehrke * - * email: ownclouddev at georgswebsite dot de * - * homepage: ownclouddev.georgswebsite.de * - * manual: ownclouddev.georgswebsite.de/manual * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * <http://ownclouddev.georgswebsite.de/license/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + require_once ("../../../lib/base.php"); if(!OC_USER::isLoggedIn()) { die("<script type=\"text/javascript\">document.location = oc_webroot;</script>"); } +OC_JSON::checkAppEnabled('calendar'); $currentview = $_GET["v"]; OC_Preferences::setValue(OC_USER::getUser(), "calendar", "currentview", $currentview); -?> \ No newline at end of file +?> diff --git a/apps/calendar/ajax/choosecalendar.php b/apps/calendar/ajax/choosecalendar.php index 03765dabe9deb12156613f88e02ac51958d4177c..0935a4c42ade0eb9036ba75ed714fffa6ccef44e 100644 --- a/apps/calendar/ajax/choosecalendar.php +++ b/apps/calendar/ajax/choosecalendar.php @@ -1,27 +1,17 @@ <?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Georg Ehrke * - * author: Georg Ehrke * - * email: ownclouddev at georgswebsite dot de * - * homepage: ownclouddev.georgswebsite.de * - * manual: ownclouddev.georgswebsite.de/manual * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * <http://ownclouddev.georgswebsite.de/license/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + require_once('../../../lib/base.php'); $l10n = new OC_L10N('calendar'); if(!OC_USER::isLoggedIn()) { die("<script type=\"text/javascript\">document.location = oc_webroot;</script>"); } +OC_JSON::checkAppEnabled('calendar'); $output = new OC_TEMPLATE("calendar", "part.choosecalendar"); $output -> printpage(); -?> \ No newline at end of file +?> diff --git a/apps/calendar/ajax/createcalendar.php b/apps/calendar/ajax/createcalendar.php index df960e8a59fa60185cc7449e78a26a11ca3a4d28..3fb2e8398a3cacf0e0a1d434102a7c3e079dcb37 100644 --- a/apps/calendar/ajax/createcalendar.php +++ b/apps/calendar/ajax/createcalendar.php @@ -1,34 +1,23 @@ <?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Bart Visscher * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ +/** + * Copyright (c) 2011 Bart Visscher <bartv@thisnet.nl> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + require_once('../../../lib/base.php'); $l10n = new OC_L10N('calendar'); -// We send json data -header( "Content-Type: application/jsonrequest" ); - // Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( "status" => "error", "data" => array( "message" => $l->t("Authentication error") ))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('calendar'); $userid = OC_User::getUser(); -$calendarid = OC_Calendar_Calendar::addCalendar($userid, $_POST['name'], $_POST['description'], 'VEVENT,VTODO,VJOURNAL', null, 0, $_POST['color']); +$calendarid = OC_Calendar_Calendar::addCalendar($userid, $_POST['name'], 'VEVENT,VTODO,VJOURNAL', null, 0, $_POST['color']); OC_Calendar_Calendar::setCalendarActive($calendarid, 1); $calendar = OC_Calendar_Calendar::findCalendar($calendarid); $tmpl = new OC_Template('calendar', 'part.choosecalendar.rowfields'); $tmpl->assign('calendar', $calendar); -echo json_encode( array( "status" => "error", "data" => $tmpl->fetchPage().'' )); +OC_JSON::success(array('data' => $tmpl->fetchPage())); diff --git a/apps/calendar/ajax/daysofweekend.php b/apps/calendar/ajax/daysofweekend.php new file mode 100755 index 0000000000000000000000000000000000000000..606d13b1e1c5b2bec990485297c0857b20cb0706 --- /dev/null +++ b/apps/calendar/ajax/daysofweekend.php @@ -0,0 +1,11 @@ +<?php +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +require_once('../../../lib/base.php'); +OC_JSON::checkLoggedIn(); +echo OC_Preferences::getValue( OC_User::getUser(), 'calendar', 'weekend', '{"Monday":"false","Tuesday":"false","Wednesday":"false","Thursday":"false","Friday":"false","Saturday":"true","Sunday":"true"}'); +?> diff --git a/apps/calendar/ajax/deletecalendar.php b/apps/calendar/ajax/deletecalendar.php new file mode 100644 index 0000000000000000000000000000000000000000..e8ffe0d0598c28e94345ab3892b03aee62a7f9f5 --- /dev/null +++ b/apps/calendar/ajax/deletecalendar.php @@ -0,0 +1,29 @@ +<?php +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +require_once('../../../lib/base.php'); + +$l10n = new OC_L10N('calendar'); + +if(!OC_USER::isLoggedIn()) { + die('<script type="text/javascript">document.location = oc_webroot;</script>'); +} +OC_JSON::checkAppEnabled('calendar'); + +$cal = $_POST["calendarid"]; +$calendar = OC_Calendar_Calendar::findCalendar($cal); +if($calendar["userid"] != OC_User::getUser()){ + OC_JSON::error(array('error'=>'permission_denied')); + exit; +} +$del = OC_Calendar_Calendar::deleteCalendar($cal); +if($del == true){ + OC_JSON::success(); +}else{ + OC_JSON::error(array('error'=>'dberror')); +} +?> diff --git a/apps/calendar/ajax/deleteevent.php b/apps/calendar/ajax/deleteevent.php new file mode 100644 index 0000000000000000000000000000000000000000..9e3c7dd87dd0edfaebef275f6626a164f3c1e7a3 --- /dev/null +++ b/apps/calendar/ajax/deleteevent.php @@ -0,0 +1,31 @@ +<?php +/** + * Copyright (c) 2011 Bart Visscher <bartv@thisnet.nl> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +require_once('../../../lib/base.php'); + +$l10n = new OC_L10N('calendar'); + +if(!OC_USER::isLoggedIn()) { + die('<script type="text/javascript">document.location = oc_webroot;</script>'); +} +OC_JSON::checkAppEnabled('calendar'); + +$id = $_POST['id']; +$data = OC_Calendar_Object::find($id); +if (!$data) +{ + OC_JSON::error(); + exit; +} +$calendar = OC_Calendar_Calendar::findCalendar($data['calendarid']); +if($calendar['userid'] != OC_User::getUser()){ + OC_JSON::error(); + exit; +} +$result = OC_Calendar_Object::delete($id); +OC_JSON::success(); +?> diff --git a/apps/calendar/ajax/duration.php b/apps/calendar/ajax/duration.php new file mode 100644 index 0000000000000000000000000000000000000000..cdc41388abd232bb5501eab33ac29bc9d99e9510 --- /dev/null +++ b/apps/calendar/ajax/duration.php @@ -0,0 +1,12 @@ +<?php +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +require_once('../../../lib/base.php'); +OC_JSON::checkLoggedIn(); +$duration = OC_Preferences::getValue( OC_User::getUser(), 'calendar', 'duration', "60"); +OC_JSON::encodedPrint(array("duration" => $duration)); +?> diff --git a/apps/calendar/ajax/editcalendar.php b/apps/calendar/ajax/editcalendar.php index 99d3e0fb5551dec36abb0e944252f415dcd3ddfa..5f61cf501358bbbac4b69e4aa99aea735acbbc55 100644 --- a/apps/calendar/ajax/editcalendar.php +++ b/apps/calendar/ajax/editcalendar.php @@ -1,25 +1,31 @@ <?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Bart Visscher * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ +/** + * Copyright (c) 2011 Bart Visscher <bartv@thisnet.nl> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + require_once('../../../lib/base.php'); $l10n = new OC_L10N('calendar'); if(!OC_USER::isLoggedIn()) { die("<script type=\"text/javascript\">document.location = oc_webroot;</script>"); } +$calendarcolor_options = array( + 'ff0000', // "Red" + '00ff00', // "Green" + 'ffff00', // "Yellow" + '808000', // "Olive" + 'ffa500', // "Orange" + 'ff7f50', // "Coral" + 'ee82ee', // "Violet" + 'ecc255', // dark yellow +); +OC_JSON::checkAppEnabled('calendar'); $calendar = OC_Calendar_Calendar::findCalendar($_GET['calendarid']); $tmpl = new OC_Template("calendar", "part.editcalendar"); $tmpl->assign('new', false); +$tmpl->assign('calendarcolor_options', $calendarcolor_options); $tmpl->assign('calendar', $calendar); $tmpl->printPage(); ?> diff --git a/apps/calendar/ajax/editevent.php b/apps/calendar/ajax/editevent.php index e4e6c4548c7858093333131409b2e6ef0030d338..3abf4de98b3934252d10047cfeb726223f7113e3 100644 --- a/apps/calendar/ajax/editevent.php +++ b/apps/calendar/ajax/editevent.php @@ -1,18 +1,11 @@ <?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Bart Visscher * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * <http://www.gnu.org/licenses/> * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ +/** + * Copyright (c) 2011 Bart Visscher <bartv@thisnet.nl> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + require_once('../../../lib/base.php'); $l10n = new OC_L10N('calendar'); @@ -20,12 +13,12 @@ $l10n = new OC_L10N('calendar'); if(!OC_USER::isLoggedIn()) { die('<script type="text/javascript">document.location = oc_webroot;</script>'); } +OC_JSON::checkAppEnabled('calendar'); $errarr = OC_Calendar_Object::validateRequest($_POST); if($errarr){ //show validate errors - $errarr['status'] = 'error'; - echo json_encode($errarr); + OC_JSON::error($errarr); exit; }else{ $id = $_POST['id']; @@ -33,12 +26,12 @@ if($errarr){ $data = OC_Calendar_Object::find($id); if (!$data) { - echo json_encode(array("error"=>"true")); + OC_JSON::error(); exit; } $calendar = OC_Calendar_Calendar::findCalendar($data['calendarid']); if($calendar['userid'] != OC_User::getUser()){ - echo json_encode(array("error"=>"true")); + OC_JSON::error(); exit; } $vcalendar = Sabre_VObject_Reader::read($data['calendardata']); @@ -47,6 +40,6 @@ if($errarr){ if ($data['calendarid'] != $cal) { OC_Calendar_Object::moveToCalendar($id, $cal); } - echo json_encode(array('status' => 'success')); + OC_JSON::success(); } -?> +?> diff --git a/apps/calendar/ajax/editeventform.php b/apps/calendar/ajax/editeventform.php index 3b8a30f70fccfc16947b841a6d73898d44eb3aaf..34d6c657cecac79c521222e5a6b72316f421c078 100644 --- a/apps/calendar/ajax/editeventform.php +++ b/apps/calendar/ajax/editeventform.php @@ -1,17 +1,11 @@ <?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Bart Visscher * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ +/** + * Copyright (c) 2011 Bart Visscher <bartv@thisnet.nl> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + require_once('../../../lib/base.php'); $l10n = new OC_L10N('calendar'); @@ -19,9 +13,10 @@ $l10n = new OC_L10N('calendar'); if(!OC_USER::isLoggedIn()) { die('<script type="text/javascript">document.location = oc_webroot;</script>'); } +OC_JSON::checkAppEnabled('calendar'); -$calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser()); -$categories = OC_Calendar_Object::getCategoryOptions($l10n); +$calendar_options = OC_Calendar_Calendar::allCalendars(OC_User::getUser()); +$category_options = OC_Calendar_Object::getCategoryOptions($l10n); $repeat_options = OC_Calendar_Object::getRepeatOptions($l10n); $id = $_GET['id']; @@ -34,9 +29,10 @@ if($calendar['userid'] != OC_User::getUser()){ $object = Sabre_VObject_Reader::read($data['calendardata']); $vevent = $object->VEVENT; $dtstart = $vevent->DTSTART; -$dtend = $vevent->DTEND; +$dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent); switch($dtstart->getDateType()) { case Sabre_VObject_Element_DateTime::LOCALTZ: + case Sabre_VObject_Element_DateTime::LOCAL: $startdate = $dtstart->getDateTime()->format('d-m-Y'); $starttime = $dtstart->getDateTime()->format('H:i'); $enddate = $dtend->getDateTime()->format('d-m-Y'); @@ -55,19 +51,28 @@ switch($dtstart->getDateType()) { $summary = isset($vevent->SUMMARY) ? $vevent->SUMMARY->value : ''; $location = isset($vevent->LOCATION) ? $vevent->LOCATION->value : ''; -$category = isset($vevent->CATEGORIES) ? $vevent->CATEGORIES->value : ''; +$categories = array(); +if (isset($vevent->CATEGORIES)){ + $categories = explode(',', $vevent->CATEGORIES->value); + $categories = array_map('trim', $categories); +} +foreach($categories as $category){ + if (!in_array($category, $category_options)){ + array_unshift($category_options, $category); + } +} $repeat = isset($vevent->CATEGORY) ? $vevent->CATEGORY->value : ''; $description = isset($vevent->DESCRIPTION) ? $vevent->DESCRIPTION->value : ''; $tmpl = new OC_Template('calendar', 'part.editevent'); $tmpl->assign('id', $id); -$tmpl->assign('calendars', $calendars); -$tmpl->assign('categories', $categories); +$tmpl->assign('calendar_options', $calendar_options); +$tmpl->assign('category_options', $category_options); $tmpl->assign('repeat_options', $repeat_options); $tmpl->assign('title', $summary); $tmpl->assign('location', $location); -$tmpl->assign('category', $category); +$tmpl->assign('categories', $categories); $tmpl->assign('calendar', $data['calendarid']); $tmpl->assign('allday', $allday); $tmpl->assign('startdate', $startdate); diff --git a/apps/calendar/ajax/firstdayofweek.php b/apps/calendar/ajax/firstdayofweek.php new file mode 100755 index 0000000000000000000000000000000000000000..eff82cece1de1a67c34fd69cfb8cef8359a4be93 --- /dev/null +++ b/apps/calendar/ajax/firstdayofweek.php @@ -0,0 +1,12 @@ +<?php +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +require_once('../../../lib/base.php'); +OC_JSON::checkLoggedIn(); +$firstdayofweek = OC_Preferences::getValue( OC_User::getUser(), 'calendar', 'firstdayofweek', "1"); +OC_JSON::encodedPrint(array("firstdayofweek" => $firstdayofweek)); +?> \ No newline at end of file diff --git a/apps/calendar/ajax/getcal.php b/apps/calendar/ajax/getcal.php index b20f22957c312a9c78e4b3a937270887eaf17e29..a65c6cf2602192808f0b0109e1cfb2400178a047 100644 --- a/apps/calendar/ajax/getcal.php +++ b/apps/calendar/ajax/getcal.php @@ -1,26 +1,70 @@ <?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Georg Ehrke * - * author: Georg Ehrke * - * email: ownclouddev at georgswebsite dot de * - * homepage: ownclouddev.georgswebsite.de * - * manual: ownclouddev.georgswebsite.de/manual * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * <http://ownclouddev.georgswebsite.de/license/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + require_once ("../../../lib/base.php"); if(!OC_USER::isLoggedIn()) { die("<script type=\"text/javascript\">document.location = oc_webroot;</script>"); } -$output = new OC_TEMPLATE("calendar", "part.getcal"); -$output -> printpage(); -?> +OC_JSON::checkAppEnabled('calendar'); + +$calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser(), 1); +$events = array(); +$return = array('calendars'=>array()); +foreach($calendars as $calendar) { + $tmp = OC_Calendar_Object::all($calendar['id']); + $events = array_merge($events, $tmp); + $return['calendars'][$calendar['id']] = array( + 'displayname' => $calendar['displayname'], + 'color' => '#'.$calendar['calendarcolor'] + ); +} + +$select_year = $_GET["year"]; +$user_timezone = OC_Preferences::getValue(OC_USER::getUser(), "calendar", "timezone", "Europe/London"); +foreach($events as $event) +{ + if ($select_year != substr($event['startdate'], 0, 4)) + continue; + $object = Sabre_VObject_Reader::read($event['calendardata']); + $vevent = $object->VEVENT; + $dtstart = $vevent->DTSTART; + $dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent); + $start_dt = $dtstart->getDateTime(); + $start_dt->setTimezone(new DateTimeZone($user_timezone)); + $end_dt = $dtend->getDateTime(); + $end_dt->setTimezone(new DateTimeZone($user_timezone)); + $year = $start_dt->format('Y'); + $month = $start_dt->format('n') - 1; // return is 0 based + $day = $start_dt->format('j'); + $hour = $start_dt->format('G'); + if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { + $hour = 'allday'; + } + + $return_event = array(); + foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop) + { + $return_event[$prop] = $event[$prop]; + } + $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); + $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); + $return_event['description'] = $event['summary']; + if ($hour == 'allday') + { + $return_event['allday'] = true; + } + if (isset($return[$year][$month][$day][$hour])) + { + $return[$year][$month][$day][$hour][] = $return_event; + } + else + { + $return[$year][$month][$day][$hour] = array(1 => $return_event); + } +} +OC_JSON::encodedPrint($return); diff --git a/apps/calendar/ajax/geteventinfo.php b/apps/calendar/ajax/geteventinfo.php deleted file mode 100644 index 6182a60e611ad4f08771320c1970d24bd3cfebf5..0000000000000000000000000000000000000000 --- a/apps/calendar/ajax/geteventinfo.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Georg Ehrke * - * author: Georg Ehrke * - * email: ownclouddev at georgswebsite dot de * - * homepage: ownclouddev.georgswebsite.de * - * manual: ownclouddev.georgswebsite.de/manual * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * <http://www.gnu.org/licenses/> * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * <http://ownclouddev.georgswebsite.de/license/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ - -?> diff --git a/apps/calendar/ajax/importdialog.php b/apps/calendar/ajax/importdialog.php new file mode 100644 index 0000000000000000000000000000000000000000..232b4ba580741524b8700c43e6fa3dd2444d5864 --- /dev/null +++ b/apps/calendar/ajax/importdialog.php @@ -0,0 +1,20 @@ +<?php +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +require_once('../../../lib/base.php'); + +$l10n = new OC_L10N('calendar'); + +if(!OC_USER::isLoggedIn()) { + die("<script type=\"text/javascript\">document.location = oc_webroot;</script>"); +} +OC_JSON::checkAppEnabled('calendar'); + +$tmpl = new OC_Template('calendar', 'part.import'); +$tmpl->printpage(); +?> diff --git a/apps/calendar/ajax/moveevent.php b/apps/calendar/ajax/moveevent.php new file mode 100644 index 0000000000000000000000000000000000000000..e2b777969daa1d12060387ca18b1fc14632eeae7 --- /dev/null +++ b/apps/calendar/ajax/moveevent.php @@ -0,0 +1,103 @@ +<?php +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +error_reporting(E_ALL); +require_once('../../../lib/base.php'); +OC_JSON::checkLoggedIn(); +$data = OC_Calendar_Object::find($_POST["id"]); +$calendarid = $data["calendarid"]; +$cal = $calendarid; +$id = $_POST["id"]; +$calendar = OC_Calendar_Calendar::findCalendar($calendarid); +if(OC_User::getUser() != $calendar["userid"]){ + OC_JSON::error(); + exit; +} +$newdate = $_POST["newdate"]; +$caldata = array(); +//modified part of editeventform.php +$object = Sabre_VObject_Reader::read($data['calendardata']); +$vevent = $object->VEVENT; +$dtstart = $vevent->DTSTART; +$dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent); +switch($dtstart->getDateType()) { + case Sabre_VObject_Element_DateTime::LOCALTZ: + case Sabre_VObject_Element_DateTime::LOCAL: + $startdate = $dtstart->getDateTime()->format('d-m-Y'); + $starttime = $dtstart->getDateTime()->format('H:i'); + $enddate = $dtend->getDateTime()->format('d-m-Y'); + $endtime = $dtend->getDateTime()->format('H:i'); + $allday = false; + break; + case Sabre_VObject_Element_DateTime::DATE: + $startdate = $dtstart->getDateTime()->format('d-m-Y'); + $starttime = '00:00'; + $dtend->getDateTime()->modify('-1 day'); + $enddate = $dtend->getDateTime()->format('d-m-Y'); + $endtime = '23:59'; + $allday = true; + break; +} +$caldata["title"] = isset($vevent->SUMMARY) ? $vevent->SUMMARY->value : ''; +$caldata["location"] = isset($vevent->LOCATION) ? $vevent->LOCATION->value : ''; +$caldata["categories"] = array(); +if (isset($vevent->CATEGORIES)){ + $caldata["categories"] = explode(',', $vevent->CATEGORIES->value); + $caldata["categories"] = array_map('trim', $categories); +} +foreach($caldata["categories"] as $category){ + if (!in_array($category, $category_options)){ + array_unshift($category_options, $category); + } +} +$caldata["repeat"] = isset($vevent->CATEGORY) ? $vevent->CATEGORY->value : ''; +$caldata["description"] = isset($vevent->DESCRIPTION) ? $vevent->DESCRIPTION->value : ''; +//end part of editeventform.php +$startdatearray = explode("-", $startdate); +$starttimearray = explode(":", $starttime); +$startunix = mktime($starttimearray[0], $starttimearray[1], 0, $startdatearray[1], $startdatearray[0], $startdatearray[2]); +$enddatearray = explode("-", $enddate); +$endtimearray = explode(":", $endtime); +$endunix = mktime($endtimearray[0], $endtimearray[1], 0, $enddatearray[1], $enddatearray[0], $enddatearray[2]); +$difference = $endunix - $startunix; +if(strlen($newdate) > 10){ + $newdatestringarray = explode("-", $newdate); + if($newdatestringarray[1] == "allday"){ + $allday = true; + $newdatestringarray[1] = "00:00"; + }else{ + if($allday == true){ + $difference = 3600; + } + $allday = false; + } +}else{ + $newdatestringarray = array(); + $newdatestringarray[0] = $newdate; + $newdatestringarray[1] = $starttime; +} +$newdatearray = explode(".", $newdatestringarray[0]); +$newtimearray = explode(":", $newdatestringarray[1]); +$newstartunix = mktime($newtimearray[0], $newtimearray[1], 0, $newdatearray[1], $newdatearray[0], $newdatearray[2]); +$newendunix = $newstartunix + $difference; +if($allday == true){ + $caldata["allday"] = true; +}else{ + unset($caldata["allday"]); +} +$caldata["from"] = date("d-m-Y", $newstartunix); +$caldata["fromtime"] = date("H:i", $newstartunix); +$caldata["to"] = date("d-m-Y", $newendunix); +$caldata["totime"] = date("H:i", $newendunix); +//modified part of editevent.php +$vcalendar = Sabre_VObject_Reader::read($data["calendardata"]); +OC_Calendar_Object::updateVCalendarFromRequest($caldata, $vcalendar); + +$result = OC_Calendar_Object::edit($id, $vcalendar->serialize()); +OC_JSON::success(); +//end part of editevent.php +?> \ No newline at end of file diff --git a/apps/calendar/ajax/newcalendar.php b/apps/calendar/ajax/newcalendar.php index 59d0a8574db231ff2624b5bed2a470f662076a41..f00dd0fb86284821831859643de23917b94ed2c3 100644 --- a/apps/calendar/ajax/newcalendar.php +++ b/apps/calendar/ajax/newcalendar.php @@ -1,27 +1,21 @@ <?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Bart Visscher * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ +/** + * Copyright (c) 2011 Bart Visscher <bartv@thisnet.nl> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + require_once('../../../lib/base.php'); $l10n = new OC_L10N('calendar'); if(!OC_USER::isLoggedIn()) { die("<script type=\"text/javascript\">document.location = oc_webroot;</script>"); } +OC_JSON::checkAppEnabled('calendar'); $calendar = array( 'id' => 'new', - 'displayname' => 'Test', - 'description' => 'Test calendar', - 'calendarcolor' => 'black', + 'displayname' => '', + 'calendarcolor' => '', ); $tmpl = new OC_Template('calendar', 'part.editcalendar'); $tmpl->assign('new', true); diff --git a/apps/calendar/ajax/newevent.php b/apps/calendar/ajax/newevent.php index fb3745d0525fb6922aae56050e565081a7d88acf..1a696cf7780f8e9a25392a7717227bd955af8960 100644 --- a/apps/calendar/ajax/newevent.php +++ b/apps/calendar/ajax/newevent.php @@ -1,23 +1,11 @@ <?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Georg Ehrke * - * author: Georg Ehrke * - * email: ownclouddev at georgswebsite dot de * - * homepage: ownclouddev.georgswebsite.de * - * manual: ownclouddev.georgswebsite.de/manual * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * <http://www.gnu.org/licenses/> * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * <http://ownclouddev.georgswebsite.de/license/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + require_once('../../../lib/base.php'); $l10n = new OC_L10N('calendar'); @@ -25,17 +13,17 @@ $l10n = new OC_L10N('calendar'); if(!OC_USER::isLoggedIn()) { die("<script type=\"text/javascript\">document.location = oc_webroot;</script>"); } +OC_JSON::checkAppEnabled('calendar'); $errarr = OC_Calendar_Object::validateRequest($_POST); if($errarr){ //show validate errors - $errarr["error"] = "true"; - echo json_encode($errarr); + OC_JSON::error($errarr); exit; }else{ $cal = $_POST['calendar']; $vcalendar = OC_Calendar_Object::createVCalendarFromRequest($_POST); $result = OC_Calendar_Object::add($cal, $vcalendar->serialize()); - echo json_encode(array("success"=>"true")); + OC_JSON::success(); } ?> diff --git a/apps/calendar/ajax/neweventform.php b/apps/calendar/ajax/neweventform.php index 1d8a61dffd274eff53f11f1aec7491603c943930..9d4dcfa2e138b7bc4dae47c3b4a9279e1ab07b25 100644 --- a/apps/calendar/ajax/neweventform.php +++ b/apps/calendar/ajax/neweventform.php @@ -1,22 +1,11 @@ <?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Georg Ehrke * - * author: Georg Ehrke * - * email: ownclouddev at georgswebsite dot de * - * homepage: ownclouddev.georgswebsite.de * - * manual: ownclouddev.georgswebsite.de/manual * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * <http://ownclouddev.georgswebsite.de/license/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + require_once('../../../lib/base.php'); $l10n = new OC_L10N('calendar'); @@ -24,9 +13,10 @@ $l10n = new OC_L10N('calendar'); if(!OC_USER::isLoggedIn()) { die('<script type="text/javascript">document.location = oc_webroot;</script>'); } +OC_JSON::checkAppEnabled('calendar'); -$calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser()); -$categories = OC_Calendar_Object::getCategoryOptions($l10n); +$calendar_options = OC_Calendar_Calendar::allCalendars(OC_User::getUser()); +$category_options = OC_Calendar_Object::getCategoryOptions($l10n); $repeat_options = OC_Calendar_Object::getRepeatOptions($l10n); $startday = substr($_GET['d'], 0, 2); $startmonth = substr($_GET['d'], 2, 2); @@ -39,25 +29,25 @@ if($starttime != 'undefined' && !is_nan($starttime) && !$allday){ $starttime = '0'; $startminutes = '00'; }else{ - $starttime = date('H'); + $starttime = date('G'); + $startminutes = date('i'); } -$endday = $startday; -$endmonth = $startmonth; -$endyear = $startyear; -$endtime = $starttime; -$endminutes = $startminutes; -if($endtime == 23) { - $endday++; - $endtime = 0; -} else { - $endtime++; -} +$datetimestamp = mktime($starttime, $startminutes, 0, $startmonth, $startday, $startyear); +$duration = OC_Preferences::getValue( OC_User::getUser(), 'calendar', 'duration', "60"); +$datetimestamp = $datetimestamp + ($duration * 60); +$endmonth = date("m", $datetimestamp); +$endday = date("d", $datetimestamp); +$endyear = date("Y", $datetimestamp); +$endtime = date("G", $datetimestamp); +$endminutes = date("i", $datetimestamp); + + $tmpl = new OC_Template('calendar', 'part.newevent'); -$tmpl->assign('calendars', $calendars); -$tmpl->assign('categories', $categories); +$tmpl->assign('calendar_options', $calendar_options); +$tmpl->assign('category_options', $category_options); $tmpl->assign('startdate', $startday . '-' . $startmonth . '-' . $startyear); $tmpl->assign('starttime', ($starttime <= 9 ? '0' : '') . $starttime . ':' . $startminutes); $tmpl->assign('enddate', $endday . '-' . $endmonth . '-' . $endyear); diff --git a/apps/calendar/ajax/setdaysofweekend.php b/apps/calendar/ajax/setdaysofweekend.php new file mode 100755 index 0000000000000000000000000000000000000000..b5ef5f8573f2d96f5d7ee483d5696084b03ccb64 --- /dev/null +++ b/apps/calendar/ajax/setdaysofweekend.php @@ -0,0 +1,30 @@ +<?php +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +require_once('../../../lib/base.php'); +OC_JSON::checkLoggedIn(); +$weekenddays = array("Monday"=>"false", "Tuesday"=>"false", "Wednesday"=>"false", "Thursday"=>"false", "Friday"=>"false", "Saturday"=>"false", "Sunday"=>"false"); +for($i = 0;$i < count($_POST["weekend"]); $i++){ + switch ($_POST["weekend"][$i]){ + case "Monday": + case "Tuesday": + case "Wednesday": + case "Thursday": + case "Friday": + case "Saturday": + case "Sunday": + break; + default: + OC_JSON::error(); + exit; + } + $weekenddays[$_POST["weekend"][$i]] = "true"; +} +$setValue = json_encode($weekenddays); +OC_Preferences::setValue(OC_User::getUser(), 'calendar', 'weekend', $setValue); +OC_JSON::success(); +?> diff --git a/apps/calendar/ajax/setduration.php b/apps/calendar/ajax/setduration.php new file mode 100644 index 0000000000000000000000000000000000000000..a75c8faea4228fd3eae31500dce2321ec735cb99 --- /dev/null +++ b/apps/calendar/ajax/setduration.php @@ -0,0 +1,17 @@ +<?php +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +require_once('../../../lib/base.php'); +OC_JSON::checkLoggedIn(); +if(isset($_POST["duration"])){ + OC_Preferences::setValue(OC_User::getUser(), 'calendar', 'duration', $_POST["duration"]); + OC_JSON::success(); +}else{ + OC_JSON::error(); +} +?> + diff --git a/apps/calendar/ajax/setfirstdayofweek.php b/apps/calendar/ajax/setfirstdayofweek.php new file mode 100755 index 0000000000000000000000000000000000000000..571b95af0e3dbb2c61899fd35595ee9175820a37 --- /dev/null +++ b/apps/calendar/ajax/setfirstdayofweek.php @@ -0,0 +1,16 @@ +<?php +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +require_once('../../../lib/base.php'); +OC_JSON::checkLoggedIn(); +if(isset($_POST["firstdayofweek"])){ + OC_Preferences::setValue(OC_User::getUser(), 'calendar', 'firstdayofweek', $_POST["firstdayofweek"]); + OC_JSON::success(); +}else{ + OC_JSON::error(); +} +?> diff --git a/apps/calendar/ajax/settimeformat.php b/apps/calendar/ajax/settimeformat.php new file mode 100644 index 0000000000000000000000000000000000000000..7805120ba5efd756c08102ec9eb3a74bd5c8946d --- /dev/null +++ b/apps/calendar/ajax/settimeformat.php @@ -0,0 +1,17 @@ +<?php +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +require_once('../../../lib/base.php'); +OC_JSON::checkLoggedIn(); +if(isset($_POST["timeformat"])){ + OC_Preferences::setValue(OC_User::getUser(), 'calendar', 'timeformat', $_POST["timeformat"]); + OC_JSON::success(); +}else{ + OC_JSON::error(); +} +?> + diff --git a/apps/calendar/ajax/settimezone.php b/apps/calendar/ajax/settimezone.php index 32926f13859a276a05e86a9a271684ff41998a9d..c726a11471d2c3c11876d545fefa7d62018595ed 100644 --- a/apps/calendar/ajax/settimezone.php +++ b/apps/calendar/ajax/settimezone.php @@ -1,39 +1,27 @@ <?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Bart Visscher * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ +/** + * Copyright (c) 2011 Bart Visscher <bartv@thisnet.nl> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ // Init owncloud require_once('../../../lib/base.php'); $l=new OC_L10N('calendar'); -// We send json data -header( "Content-Type: application/jsonrequest" ); - // Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( "status" => "error", "data" => array( "message" => $l->t("Authentication error") ))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('calendar'); // Get data if( isset( $_POST['timezone'] ) ){ $timezone=$_POST['timezone']; OC_Preferences::setValue( OC_User::getUser(), 'calendar', 'timezone', $timezone ); - echo json_encode( array( "status" => "success", "data" => array( "message" => $l->t("Timezone changed") ))); + OC_JSON::success(array('data' => array( 'message' => $l->t('Timezone changed') ))); }else{ - echo json_encode( array( "status" => "error", "data" => array( "message" => $l->t("Invalid request") ))); + OC_JSON::error(array('data' => array( 'message' => $l->t('Invalid request') ))); } ?> diff --git a/apps/calendar/ajax/timeformat.php b/apps/calendar/ajax/timeformat.php new file mode 100644 index 0000000000000000000000000000000000000000..3533adcf8e03303c80c34a389868c7e3e1263b61 --- /dev/null +++ b/apps/calendar/ajax/timeformat.php @@ -0,0 +1,12 @@ +<?php +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +require_once('../../../lib/base.php'); +OC_JSON::checkLoggedIn(); +$timeformat = OC_Preferences::getValue( OC_User::getUser(), 'calendar', 'timeformat', "24"); +OC_JSON::encodedPrint(array("timeformat" => $timeformat)); +?> diff --git a/apps/calendar/ajax/updatecalendar.php b/apps/calendar/ajax/updatecalendar.php index f286ce23c1897afc8ed61877d994634bd771be86..a81644ded173b04d5522ec5490bb5e99b51b0e7e 100644 --- a/apps/calendar/ajax/updatecalendar.php +++ b/apps/calendar/ajax/updatecalendar.php @@ -1,34 +1,23 @@ <?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Bart Visscher * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ +/** + * Copyright (c) 2011 Bart Visscher <bartv@thisnet.nl> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + require_once('../../../lib/base.php'); $l10n = new OC_L10N('calendar'); -// We send json data -header( "Content-Type: application/jsonrequest" ); - // Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( "status" => "error", "data" => array( "message" => $l->t("Authentication error") ))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('calendar'); $calendarid = $_POST['id']; -OC_Calendar_Calendar::editCalendar($calendarid, $_POST['name'], $_POST['description'], null, null, null, $_POST['color']); +OC_Calendar_Calendar::editCalendar($calendarid, $_POST['name'], null, null, null, $_POST['color']); OC_Calendar_Calendar::setCalendarActive($calendarid, $_POST['active']); $calendar = OC_Calendar_Calendar::findCalendar($calendarid); $tmpl = new OC_Template('calendar', 'part.choosecalendar.rowfields'); $tmpl->assign('calendar', $calendar); -echo json_encode( array( "status" => "success", "data" => $tmpl->fetchPage() )); +OC_JSON::success(array('data' => $tmpl->fetchPage())); diff --git a/apps/calendar/appinfo/app.php b/apps/calendar/appinfo/app.php index 837c6d6b124d93829fac986d1a6a5c26e9167d64..2dc01eab0f64da290b3f53b33f5a34ab52b2e39c 100644 --- a/apps/calendar/appinfo/app.php +++ b/apps/calendar/appinfo/app.php @@ -6,6 +6,8 @@ OC::$CLASSPATH['OC_Calendar_Hooks'] = 'apps/calendar/lib/hooks.php'; OC::$CLASSPATH['OC_Connector_Sabre_CalDAV'] = 'apps/calendar/lib/connector_sabre.php'; OC_HOOK::connect('OC_User', 'post_createUser', 'OC_Calendar_Hooks', 'deleteUser'); +OC_Util::addScript('calendar','loader'); + OC_App::register( array( 'order' => 10, 'id' => 'calendar', diff --git a/apps/calendar/appinfo/database.xml b/apps/calendar/appinfo/database.xml index bf92179c40b45e0ac7a5cb69ddd99c8704f97e67..7f7b6457559c207e779a7c3d70c5084231e25989 100644 --- a/apps/calendar/appinfo/database.xml +++ b/apps/calendar/appinfo/database.xml @@ -153,12 +153,6 @@ <length>4</length> </field> - <field> - <name>description</name> - <type>clob</type> - <notnull>false</notnull> - </field> - <field> <name>calendarorder</name> <type>integer</type> diff --git a/apps/calendar/appinfo/info.xml b/apps/calendar/appinfo/info.xml index c846fc1eebcc708de14adeb9f30f63f3420e8d39..6b1ecd2337f02282988d3b4fbc6540a871d8917e 100644 --- a/apps/calendar/appinfo/info.xml +++ b/apps/calendar/appinfo/info.xml @@ -7,4 +7,5 @@ <author>Georg Ehrke (Userinterface), Jakob Sack</author> <require>2</require> <description>Calendar with CalDAV support</description> + <default_enable/> </info> diff --git a/apps/calendar/caldav.php b/apps/calendar/caldav.php index 49fc963336518b0c555bd95be232967de35b1488..b581274398ddb99b1270a18cef06c8faa1493526 100644 --- a/apps/calendar/caldav.php +++ b/apps/calendar/caldav.php @@ -1,29 +1,16 @@ <?php /** - * ownCloud - Calendar - * - * @author Jakob Sack - * @copyright 2011 Jakob Sack mail@jakobsack.de - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * + * Copyright (c) 2011 Jakob Sack <mail@jakobsack.de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. */ // Do not load FS ... $RUNTIME_NOSETUPFS = true; require_once('../../lib/base.php'); +OC_Util::checkAppEnabled('calendar'); // Backends $authBackend = new OC_Connector_Sabre_Auth(); @@ -38,11 +25,12 @@ $nodes = array( // Fire up server $server = new Sabre_DAV_Server($nodes); -$server->setBaseUri($WEBROOT.'/apps/calendar/caldav.php'); +$server->setBaseUri(OC::$WEBROOT.'/apps/calendar/caldav.php'); // Add plugins $server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend,'ownCloud')); $server->addPlugin(new Sabre_CalDAV_Plugin()); $server->addPlugin(new Sabre_DAVACL_Plugin()); +$server->addPlugin(new Sabre_DAV_Browser_Plugin(false)); // Show something in the Browser, but no upload // And off we go! $server->exec(); diff --git a/apps/calendar/css/style.css b/apps/calendar/css/style.css index 06892e896b1ff13cd4b049cfc3cd37ab0173bbe9..80d29ca8974b7bf77105ecccffa1c8a781fa6cce 100644 --- a/apps/calendar/css/style.css +++ b/apps/calendar/css/style.css @@ -1,24 +1,11 @@ -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Georg Ehrke * - * author: Georg Ehrke * - * email: ownclouddev at georgswebsite dot de * - * homepage: ownclouddev.georgswebsite.de * - * manual: ownclouddev.georgswebsite.de/manual * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * <http://www.gnu.org/licenses/> * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * <http://ownclouddev.georgswebsite.de/license/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ -#view {margin-left: 10px; float: left; font-size: 12px;} +#view { float: left; font-size: 12px; height: 100%;} #datecontrol {text-align: center;} #datecontrol_left{font-size: 12px;} #datecontrol_right{font-size: 12px;} @@ -30,7 +17,6 @@ #editentry_dialog {display: none;} #parsingfail_dialog{display: none;} -#view {margin-left: 10px; float: left; font-size: 12px; height: 100%;} #calendar_holder {height: 100%; width: 100%;} #onedayview, #oneweekview, #fourweeksview, #onemonthview, #listview {display: none; position: absolute;bottom: 0; right: 0; left: 160px; top: 80px;} #onedayview table {margin: 0; padding: 0; width: 100%; height: 100%; border-spacing:1px; background: #EEEEEE;} @@ -49,15 +35,16 @@ .controls {min-width: 800px;} .center {text-align: center;} .dateinfo {height: 20px;width: 100%; overflow: hidden; margin-top: 0; padding: 0; font-size: 12px;background: #F7F7F7;} -.events {width: 100%; margin: 0; padding: 0;} +.events {width: 100%; margin: 0; padding: 0;min-height: 100px;} .calendar_row {height: 20px; text-align: center;background: #ffffff;} #oneweekview .calendar_row {width: 13.5%;} .calendar_time {height: 20px; width: 50px; text-align:right;background: #ffffff;} .day {text-align: center; background: #ffffff; margin: 0; padding: 0; vertical-align: top; width: 14%; height: 22%;} -.weekend .events{text-align: center;margin: 0; padding: 0;vertical-align: top;background: #F3F3F3; width: 100%; } +.weekend {background: #F3F3F3; } .weekend_thead, .weekend_row{height: 20px;text-align: center;text-align: center;background: #F3F3F3;} -.thisday{background: #FFFABC;text-align: center;margin: 0;padding: 0;vertical-align: top;height: 20px;} +.thisday{background: #FFFABC;} .event {position:relative;} +.event.colored {border-bottom: 1px solid white;} .popup {display: none; position: absolute; z-index: 1000; background: #eeeeee; color: #000000; border: 1px solid #1a1a1a; font-size: 90%;} .event_popup {width: 280px; height: 40px; padding: 10px;} @@ -68,3 +55,8 @@ color:#333; #fromtime.disabled, #totime.disabled { color:#A9A9A9; } +select#category{width:140px;} +button.category{margin:0 3px;} + +.calendar-colorpicker-color{display:inline-block;width:20px;height:20px;margin-right:2px;cursor:pointer;border:2px solid transparent;} +.calendar-colorpicker-color.active{border:2px solid black;} diff --git a/apps/calendar/export.php b/apps/calendar/export.php index f03a5d23e68f27cbb4274e24dca96a148aee0d51..b3e5ecd6834f60bc813f4042d95431f625bcb0f9 100644 --- a/apps/calendar/export.php +++ b/apps/calendar/export.php @@ -1,37 +1,38 @@ <?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Georg Ehrke * - * author: Georg Ehrke * - * email: ownclouddev at georgswebsite dot de * - * homepage: ownclouddev.georgswebsite.de * - * manual: ownclouddev.georgswebsite.de/manual * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * <http://ownclouddev.georgswebsite.de/license/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + require_once ("../../lib/base.php"); -if(!OC_USER::isLoggedIn()) { - header("Location: " . OC_HELPER::linkTo("", "index.php")); - exit; -} +OC_Util::checkLoggedIn(); +OC_Util::checkAppEnabled('calendar'); $cal = $_GET["calid"]; -$calendar = OC_Calendar_Calendar::findCalendar($cal); -if($calendar["userid"] != OC_User::getUser()){ - header("Location: " . OC_HELPER::linkTo("", "index.php")); - exit; -} -$calobjects = OC_Calendar_Object::all($cal); -header("Content-Type: text/Calendar"); -header("Content-Disposition: inline; filename=calendar.ics"); -for($i = 0;$i <= count($calobjects); $i++){ - echo $calobjects[$i]["calendardata"] . "\n"; +$event = $_GET["eventid"]; +if(isset($cal)){ + $calendar = OC_Calendar_Calendar::findCalendar($cal); + if($calendar["userid"] != OC_User::getUser()){ + OC_JSON::error(); + exit; + } + $calobjects = OC_Calendar_Object::all($cal); + header("Content-Type: text/Calendar"); + header("Content-Disposition: inline; filename=calendar.ics"); + for($i = 0;$i <= count($calobjects); $i++){ + echo $calobjects[$i]["calendardata"] . "\n"; + } +}elseif(isset($event)){ + $data = OC_Calendar_Object::find($_GET["eventid"]); + $calendarid = $data["calendarid"]; + $calendar = OC_Calendar_Calendar::findCalendar($calendarid); + if($calendar["userid"] != OC_User::getUser()){ + OC_JSON::error(); + exit; + } + header("Content-Type: text/Calendar"); + header("Content-Disposition: inline; filename=" . $data["summary"] . ".ics"); + echo $data["calendardata"]; } ?> diff --git a/apps/calendar/import.php b/apps/calendar/import.php new file mode 100644 index 0000000000000000000000000000000000000000..211791f551b151a23ba37ccaf97a206cde7007e5 --- /dev/null +++ b/apps/calendar/import.php @@ -0,0 +1,50 @@ +<?php +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +require_once ('../../lib/base.php'); +OC_JSON::checkLoggedIn(); +OC_Util::checkAppEnabled('calendar'); + +if($_GET["import"] == "existing"){ + $calid = $_GET["calid"]; + $calendar = OC_Calendar_Calendar::findCalendar($calid); + if($calendar['userid'] != OC_User::getUser()){ + OC_JSON::error(); + exit; + } + if($_GET["path"] != ""){ + $filename = $_GET["path"] . "/" . $_GET["file"]; + }else{ + $filename = "/" . $_GET["file"]; + } +}else{ + $id = OC_Calendar_Calendar::addCalendar(OC_User::getUser(), $_POST['calname']); + OC_Calendar_Calendar::setCalendarActive($id, 1); + $calid = $id; + if($_POST["path"] != ""){ + $filename = $_POST["path"] . "/" . $_POST["file"]; + }else{ + $filename = "/" . $_POST["file"]; + } +} +$vcalendar = OC_Filesystem::file_get_contents($filename); +$vcalendar = explode("BEGIN:VEVENT", $vcalendar); +for($i = 1;$i < count($vcalendar);$i++){ + $vcalendar[$i] = "BEGIN:VEVENT" . $vcalendar[$i]; +} +for($i = 1;$i < count($vcalendar) - 1;$i++){ + $vcalendar[$i] = $vcalendar[$i] . "END:VCALENDAR"; +} +for($i = 1;$i < count($vcalendar);$i++){ + $vcalendar[$i] = $vcalendar[0] . $vcalendar[$i]; +} +for($i = 1;$i < count($vcalendar);$i++){ + OC_Calendar_Object::add($calid, $vcalendar[$i]); +} +OC_JSON::success(); +?> \ No newline at end of file diff --git a/apps/calendar/index.php b/apps/calendar/index.php index c9fc9889d40e3f91d0f0298bafe1301a0f814a7e..1e4d724b307a1cad1d78d1b825efe6f9c84ed0bc 100644 --- a/apps/calendar/index.php +++ b/apps/calendar/index.php @@ -1,35 +1,24 @@ <?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Georg Ehrke * - * author: Georg Ehrke * - * email: ownclouddev at georgswebsite dot de * - * homepage: ownclouddev.georgswebsite.de * - * manual: ownclouddev.georgswebsite.de/manual * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * <http://ownclouddev.georgswebsite.de/license/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ -require_once ("../../lib/base.php"); -if(!OC_USER::isLoggedIn()) { - header("Location: " . OC_HELPER::linkTo("", "index.php")); - exit; -} +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +require_once ('../../lib/base.php'); +OC_Util::checkLoggedIn(); +OC_Util::checkAppEnabled('calendar'); // Create default calendar ... $calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser()); if( count($calendars) == 0){ OC_Calendar_Calendar::addCalendar(OC_User::getUser(),'default','Default calendar'); $calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser()); } -OC_UTIL::addScript("calendar", "calendar"); -OC_UTIL::addStyle("calendar", "style"); -OC_APP::setActiveNavigationEntry("calendar_index"); -$output = new OC_TEMPLATE("calendar", "calendar", "user"); +OC_UTIL::addScript('calendar', 'calendar'); +OC_UTIL::addStyle('calendar', 'style'); +OC_UTIL::addScript('', 'jquery.multiselect'); +OC_UTIL::addStyle('', 'jquery.multiselect'); +OC_APP::setActiveNavigationEntry('calendar_index'); +$output = new OC_TEMPLATE('calendar', 'calendar', 'user'); $output -> printPage(); diff --git a/apps/calendar/js/calendar.js b/apps/calendar/js/calendar.js index 77a75c14b2e937e9081432c1bf24f9a882a72dce..efddac40426d4b1366364e6a7d11d52ecbafdaff 100644 --- a/apps/calendar/js/calendar.js +++ b/apps/calendar/js/calendar.js @@ -1,46 +1,15 @@ -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Georg Ehrke * - * (c) Copyright 2011 Bart Visscher * - * author: Georg Ehrke * - * email: ownclouddev at georgswebsite dot de * - * homepage: ownclouddev.georgswebsite.de * - * manual: ownclouddev.georgswebsite.de/manual * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * <http://www.gnu.org/licenses/> * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * <http://ownclouddev.georgswebsite.de/license/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - ************************************************** - * list of all fx * - * calw - Calendarweek * - * doy - Day of the year * - * checkforleapyear - check for a leap year * - * forward_day - switching one day forward * - * forward_week - switching one week forward * - * forward_month - switching one month forward * - * backward_day - switching one day backward * - * backward_week - switching one week backward * - * backward_month - switching one month backward * - * update_view - update the view of the calendar * - * onedayview - one day view * - * oneweekview - one week view * - * fourweekview - four Weeks view * - * onemonthview - one Month view * - * listview - listview * - * generateDates - generate other days for view * - * switch2today - switching to today * - * removeEvents - remove old events in view * - * loadEvents - load the events * - *************************************************/ +/** + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * Copyright (c) 2011 Bart Visscher <bartv@thisnet.nl> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + Calendar={ space:' ', + firstdayofweek: '', + weekend: '', Date:{ normal_year_cal: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], leap_year_cal: [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], @@ -112,7 +81,7 @@ Calendar={ }, UI:{ - weekdays: ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"], + weekdays: '', formatDayShort:function(day){ if (typeof(day) == 'undefined'){ day = Calendar.Date.current.getDay(); @@ -157,7 +126,7 @@ Calendar={ $('#'+this.currentview + "_radio").removeClass('active'); this.currentview = view; //sending ajax request on every change view - $("#sysbox").load(oc_webroot + "/apps/calendar/ajax/changeview.php?v="+view); + $("#sysbox").load(OC.filePath('calendar', 'ajax', 'changeview.php') + "?v="+view); //not necessary to check whether the response is true or not switch(view) { case "onedayview": @@ -186,6 +155,7 @@ Calendar={ Calendar.UI.updateView() }); }, + drageventid: '', updateDate:function(direction){ if(direction == 'forward' && this.current.forward) { this.current.forward(); @@ -211,24 +181,26 @@ Calendar={ if( typeof (this.events[year]) == "undefined") { this.events[year] = [] } - $.getJSON(oc_webroot + "/apps/calendar/ajax/getcal.php?year=" + year, function(newevents, status) { + $.getJSON(OC.filePath('calendar', 'ajax', 'getcal.php') + "?year=" + year, function(jsondata, status) { if(status == "nosession") { alert("You are not logged in. That can happen if you don't use owncloud for a long time."); document.location(oc_webroot); } - if(status == "parsingfail" || typeof (newevents) == "undefined") { + if(status == "parsingfail" || typeof (jsondata) == "undefined") { $.ready(function() { $( "#parsingfail_dialog" ).dialog(); }); } else { - if (typeof(newevents[year]) != 'undefined'){ - Calendar.UI.events[year] = newevents[year]; + if (typeof(jsondata[year]) != 'undefined'){ + Calendar.UI.calendars = jsondata['calendars']; + Calendar.UI.events[year] = jsondata[year]; } $(document).ready(function() { Calendar.UI.updateView(); }); } }); + window.setTimeout("Calendar.UI.loadEvents(" + year + ")", 120000); }, getEventsForDate:function(date){ var day = date.getDate(); @@ -251,7 +223,7 @@ Calendar={ if (!events) { return; } - var weekday = (date.getDay()+6)%7; + var weekday = (date.getDay()+7-Calendar.firstdayofweek)%7; if( typeof (events["allday"]) != "undefined") { var eventnumber = 1; var eventcontainer = this.current.getEventContainer(week, weekday, "allday"); @@ -277,7 +249,17 @@ Calendar={ .data('event_info', event) .hover(this.createEventPopup, this.hideEventPopup) + .draggable({ + drag: function() { + Calendar.UI.drageventid = event.id; + } + }) .click(this.editEvent); + var color = this.calendars[event['calendarid']]['color']; + if (color){ + event_holder.css('background-color', color) + .addClass('colored'); + } eventcontainer.append(event_holder); }, startEventDialog:function(){ @@ -288,6 +270,13 @@ Calendar={ $( "#to" ).datepicker({ dateFormat : 'dd-mm-yy' }); + $('#category').multiselect({ + header: false, + noneSelectedText: $('#category').attr('title'), + selectedList: 2, + minWidth:'auto', + classes: 'category', + }); $('#event').dialog({ width : 500, close : function(event, ui) { @@ -312,7 +301,7 @@ Calendar={ // TODO: save event $('#event').dialog('destroy').remove(); }else{ - $('#dialog_holder').load(oc_webroot + '/apps/calendar/ajax/neweventform.php?d=' + date + '&t=' + time, Calendar.UI.startEventDialog); + $('#dialog_holder').load(OC.filePath('calendar', 'ajax', 'neweventform.php') + '?d=' + date + '&t=' + time, Calendar.UI.startEventDialog); } }, editEvent:function(event){ @@ -323,12 +312,25 @@ Calendar={ // TODO: save event $('#event').dialog('destroy').remove(); }else{ - $('#dialog_holder').load(oc_webroot + '/apps/calendar/ajax/editeventform.php?id=' + id, Calendar.UI.startEventDialog); + $('#dialog_holder').load(OC.filePath('calendar', 'ajax', 'editeventform.php') + '?id=' + id, Calendar.UI.startEventDialog); } }, + submitDeleteEventForm:function(url){ + var post = $( "#event_form" ).serialize(); + $("#errorbox").empty(); + $.post(url, post, function(data){ + if(data.status == 'success'){ + $('#event').dialog('destroy').remove(); + Calendar.UI.loadEvents(); + } else { + $("#errorbox").html("Deletion failed"); + } + + }, "json"); + }, validateEventForm:function(url){ var post = $( "#event_form" ).serialize(); - $("#errorbox").html(""); + $("#errorbox").empty(); $.post(url, post, function(data){ if(data.status == "error"){ @@ -365,6 +367,16 @@ Calendar={ } },"json"); }, + moveevent:function(eventid, newstartdate){ + $.post(OC.filePath('calendar', 'ajax', 'moveevent.php'), { id: eventid, newdate: newstartdate}, + function(data) { + console.log("Event moved successfully"); + }); + }, + showadvancedoptions:function(){ + $("#advanced_options").css("display", "block"); + $("#advanced_options_button").css("display", "none"); + }, createEventPopup:function(e){ var popup = $(this).data('popup'); if (!popup){ @@ -429,12 +441,25 @@ Calendar={ $('#caldav_url').show(); $("#caldav_url_close").show(); }, + deleteCalendar:function(calid){ + var check = confirm("Do you really want to delete this calendar?"); + if(check == false){ + return false; + }else{ + $.post(OC.filePath('calendar', 'ajax', 'deletecalendar.php'), { calendarid: calid}, + function(data) { + Calendar.UI.loadEvents(); + $('#choosecalendar_dialog').dialog('destroy').remove(); + Calendar.UI.Calendar.overview(); + }); + } + }, Calendar:{ overview:function(){ if($('#choosecalendar_dialog').dialog('isOpen') == true){ $('#choosecalendar_dialog').dialog('moveToTop'); }else{ - $('#dialog_holder').load(oc_webroot + '/apps/calendar/ajax/choosecalendar.php', function(){ + $('#dialog_holder').load(OC.filePath('calendar', 'ajax', 'choosecalendar.php'), function(){ $('#choosecalendar_dialog').dialog({ width : 600, close : function(event, ui) { @@ -446,25 +471,52 @@ Calendar={ }, activation:function(checkbox, calendarid) { - $.post(oc_webroot + "/apps/calendar/ajax/activation.php", { calendarid: calendarid, active: checkbox.checked?1:0 }, + $.post(OC.filePath('calendar', 'ajax', 'activation.php'), { calendarid: calendarid, active: checkbox.checked?1:0 }, function(data) { checkbox.checked = data == 1; Calendar.UI.loadEvents(); }); }, - new:function(object){ + newCalendar:function(object){ var tr = $(document.createElement('tr')) - .load(oc_webroot + "/apps/calendar/ajax/newcalendar.php"); + .load(OC.filePath('calendar', 'ajax', 'newcalendar.php')); $(object).closest('tr').after(tr).hide(); }, edit:function(object, calendarid){ var tr = $(document.createElement('tr')) - .load(oc_webroot + "/apps/calendar/ajax/editcalendar.php?calendarid="+calendarid); + .load(OC.filePath('calendar', 'ajax', 'editcalendar.php') + "?calendarid="+calendarid, + function(){Calendar.UI.Calendar.colorPicker(this)}); $(object).closest('tr').after(tr).hide(); }, + colorPicker:function(container){ + // based on jquery-colorpicker at jquery.webspirited.com + var obj = $('.colorpicker', container); + var picker = $('<div class="calendar-colorpicker"></div>'); + //build an array of colors + var colors = {}; + $(obj).children('option').each(function(i, elm) { + colors[i] = {}; + colors[i].color = $(elm).val(); + colors[i].label = $(elm).text(); + }); + for (var i in colors) { + picker.append('<span class="calendar-colorpicker-color ' + (colors[i].color == $(obj).children(":selected").val() ? ' active' : '') + '" rel="' + colors[i].label + '" style="background-color: #' + colors[i].color + ';"></span>'); + } + picker.delegate(".calendar-colorpicker-color", "click", function() { + $(obj).val($(this).attr('rel')); + $(obj).change(); + picker.children('.calendar-colorpicker-color.active').removeClass('active'); + $(this).addClass('active'); + }); + $(obj).after(picker); + $(obj).css({ + position: 'absolute', + left: -10000 + }); + }, submit:function(button, calendarid){ var displayname = $("#displayname_"+calendarid).val(); - var active = $("#active_"+calendarid+":checked").length; + var active = $("#edit_active_"+calendarid+":checked").length; var description = $("#description_"+calendarid).val(); var calendarcolor = $("#calendarcolor_"+calendarid).val(); @@ -486,7 +538,7 @@ Calendar={ cancel:function(button, calendarid){ $(button).closest('tr').prev().show().next().remove(); }, - }, + },/* OneDay:{ forward:function(){ Calendar.Date.forward_day(); @@ -495,7 +547,7 @@ Calendar={ Calendar.Date.backward_day(); }, removeEvents:function(){ - $("#onedayview .calendar_row").html(""); + $("#onedayview .calendar_row").empty(); }, renderCal:function(){ $("#datecontrol_date").val(Calendar.UI.formatDayShort() + Calendar.space + Calendar.Date.current.getDate() + Calendar.space + Calendar.UI.formatMonthShort() + Calendar.space + Calendar.Date.current.getFullYear()); @@ -516,7 +568,7 @@ Calendar={ return $(document.createElement('p')) .html(time + event['description']) }, - }, + },*/ OneWeek:{ forward:function(){ Calendar.Date.forward_week(); @@ -526,7 +578,7 @@ Calendar={ }, removeEvents:function(){ for( i = 0; i <= 6; i++) { - $("#oneweekview ." + Calendar.UI.weekdays[i]).html(""); + $("#oneweekview ." + Calendar.UI.weekdays[i]).empty(); } $("#oneweekview .thisday").removeClass("thisday"); }, @@ -535,7 +587,23 @@ Calendar={ var dates = this.generateDates(); var today = new Date(); for(var i = 0; i <= 6; i++){ - $("#oneweekview th." + Calendar.UI.weekdays[i]).html(Calendar.UI.formatDayShort((i+1)%7) + Calendar.space + dates[i].getDate() + Calendar.space + Calendar.UI.formatMonthShort(dates[i].getMonth())); + $("#oneweekview th." + Calendar.UI.weekdays[i]).html(Calendar.UI.formatDayShort((i+Calendar.firstdayofweek)%7) + Calendar.space + dates[i].getDate() + Calendar.space + Calendar.UI.formatMonthShort(dates[i].getMonth())); + $("#oneweekview td." + Calendar.UI.weekdays[i] + ".allday").attr('title', dates[i].getDate() + "." + String(parseInt(dates[i].getMonth()) + 1) + "." + dates[i].getFullYear() + "-" + "allday"); + $("#oneweekview td." + Calendar.UI.weekdays[i] + ".allday").droppable({ + drop: function() { + Calendar.UI.moveevent(Calendar.UI.drageventid, this.title); + Calendar.UI.loadEvents(); + } + }); + for(var ii = 0;ii <= 23; ii++){ + $("#oneweekview td." + Calendar.UI.weekdays[i] + "." + String(ii)).attr('title', dates[i].getDate() + "." + String(parseInt(dates[i].getMonth()) + 1) + "." + dates[i].getFullYear() + "-" + String(ii) + ":00"); + $("#oneweekview td." + Calendar.UI.weekdays[i] + "." + String(ii)).droppable({ + drop: function() { + Calendar.UI.moveevent(Calendar.UI.drageventid, this.title); + Calendar.UI.loadEvents(); + } + }); + } if(dates[i].getDate() == today.getDate() && dates[i].getMonth() == today.getMonth() && dates[i].getFullYear() == today.getFullYear()){ $("#oneweekview ." + Calendar.UI.weekdays[i]).addClass("thisday"); } @@ -566,14 +634,18 @@ Calendar={ if(dayofweek == 0) { dayofweek = 7; } - date.setDate(date.getDate() - dayofweek + 1); + if(Calendar.firstdayofweek > dayofweek){ + date.setDate(date.getDate() - dayofweek + Calendar.firstdayofweek - 7); + }else{ + date.setDate(date.getDate() - dayofweek + Calendar.firstdayofweek); + } for(var i = 0; i <= 6; i++) { dates[i] = new Date(date) date.setDate(date.getDate() + 1); } return dates; }, - }, + },/* FourWeeks:{ forward:function(){ Calendar.Date.forward_week(); @@ -583,7 +655,7 @@ Calendar={ }, removeEvents:function(){ $('#fourweeksview .day.thisday').removeClass('thisday'); - $('#fourweeksview .day .events').html(''); + $('#fourweeksview .day .events').empty(); }, renderCal:function(){ var calw1 = Calendar.Date.calw(); @@ -670,7 +742,7 @@ Calendar={ } return dates; }, - }, + },*/ OneMonth:{ forward:function(){ Calendar.Date.forward_month(); @@ -680,7 +752,7 @@ Calendar={ }, removeEvents:function(){ $('#onemonthview .day.thisday').removeClass('thisday'); - $('#onemonthview .day .events').html(''); + $('#onemonthview .day .events').empty(); }, renderCal:function(){ $("#datecontrol_date").val(Calendar.UI.formatMonthLong() + Calendar.space + Calendar.Date.current.getFullYear()); @@ -708,6 +780,13 @@ Calendar={ var month = dates[i].getMonth(); var year = dates[i].getFullYear(); $("#onemonthview .week_" + week + " ." + Calendar.UI.weekdays[weekday] + " .dateinfo").html(dayofmonth + Calendar.space + Calendar.UI.formatMonthShort(month)); + $("#onemonthview .week_" + week + " ." + Calendar.UI.weekdays[weekday]).attr('title', dayofmonth + "." + String(parseInt(month) + 1) + "." + year); + $("#onemonthview .week_" + week + " ." + Calendar.UI.weekdays[weekday]).droppable({ + drop: function() { + Calendar.UI.moveevent(Calendar.UI.drageventid, this.title); + Calendar.UI.loadEvents(); + } + }); if(dayofmonth == today.getDate() && month == today.getMonth() && year == today.getFullYear()){ $("#onemonthview .week_" + week + " ." + Calendar.UI.weekdays[weekday]).addClass('thisday'); } @@ -772,7 +851,11 @@ Calendar={ dayofweek = 7; this.rows++; } - date.setDate(date.getDate() - dayofweek + 1); + if(Calendar.firstdayofweek > dayofweek){ + date.setDate(date.getDate() - dayofweek + Calendar.firstdayofweek - 7); + }else{ + date.setDate(date.getDate() - dayofweek + Calendar.firstdayofweek); + } for(var i = 0; i <= 41; i++) { dates[i] = new Date(date) date.setDate(date.getDate() + 1); @@ -782,7 +865,7 @@ Calendar={ }, List:{ removeEvents:function(){ - this.eventContainer = $('#listview #events').html(''); + this.eventContainer = $('#listview #events').empty(); this.startdate = new Date(); this.enddate = new Date(); this.enddate.setDate(this.enddate.getDate()); diff --git a/apps/calendar/js/loader.js b/apps/calendar/js/loader.js new file mode 100644 index 0000000000000000000000000000000000000000..6eafec8b10d92875fc7448ba8e4704ee103b19ad --- /dev/null +++ b/apps/calendar/js/loader.js @@ -0,0 +1,16 @@ +function importdialog(directory, filename){ + $("body").append("<div id=\"importdialogholder\"></div>"); + $("#importdialogholder").load(OC.filePath('calendar', 'ajax', 'importdialog.php?filename=' + filename + '&path=' + directory)); +} + +$(document).ready(function(){ + $('tr[data-file$=".ics"]').attr("data-mime", "text/calendar"); + $('tr[data-file$=".vcs"]').attr("data-mime", "text/calendar"); + $('tr[data-file$=".ical"]').attr("data-mime", "text/calendar"); + if(typeof FileActions!=='undefined'){ + FileActions.register('text/calendar','Import to Calendar','',function(filename){ + importdialog($('#dir').val(),filename); + }); + FileActions.setDefault('text/calendar','Import to Calendar'); + } +}); \ No newline at end of file diff --git a/apps/calendar/js/settings.js b/apps/calendar/js/settings.js index 90876389858523f44c451e6fbc1d9ede52c33e40..6c00be06b3928ee9b61de301b9e89dcc385a806d 100644 --- a/apps/calendar/js/settings.js +++ b/apps/calendar/js/settings.js @@ -3,9 +3,61 @@ $(document).ready(function(){ OC.msg.startSaving('#calendar .msg') // Serialize the data var post = $( "#timezone" ).serialize(); - $.post( oc_webroot + '/apps/calendar/ajax/settimezone.php', post, function(data){ - OC.msg.finishedSaving('#calendar .msg', data); + $.post( OC.filePath('calendar', 'ajax', 'settimezone.php'), post, function(data){ + //OC.msg.finishedSaving('#calendar .msg', data); }); return false; }); + $("#timezone").chosen(); + $("#firstdayofweek").change( function(){ + var data = $("#firstdayofweek").serialize(); + $.post( OC.filePath('calendar', 'ajax', 'setfirstdayofweek.php'), data, function(data){ + if(data == "error"){ + console.log("saving first day of week failed"); + } + }); + }); + $.getJSON(OC.filePath('calendar', 'ajax', 'firstdayofweek.php'), function(jsondata, status) { + $("#select_" + jsondata.firstdayofweek).attr('selected',true); + $("#firstdayofweek").chosen(); + }); + $.getJSON(OC.filePath('calendar', 'ajax', 'daysofweekend.php'), function(jsondata, status) { + for(day in jsondata){ + if(jsondata[day] == "true"){ + $("#selectweekend_" + day).attr('selected',true); + } + } + $("#weekend").chosen(); + }); + $("#timeformat").change( function(){ + var data = $("#timeformat").serialize(); + $.post( OC.filePath('calendar', 'ajax', 'settimeformat.php'), data, function(data){ + if(data == "error"){ + console.log("saving timeformat failed"); + } + }); + }); + $.getJSON(OC.filePath('calendar', 'ajax', 'timeformat.php'), function(jsondata, status) { + $("#" + jsondata.timeformat).attr('selected',true); + $("#timeformat").chosen(); + }); + $("#duration").blur( function(){ + var data = $("#duration").val(); + $.post( OC.filePath('calendar', 'ajax', 'setduration.php'), {duration: data}, function(data){ + if(data == "error"){ + console.log("saving duration failed"); + } + }); + }); + $.getJSON(OC.filePath('calendar', 'ajax', 'duration.php'), function(jsondata, status) { + $("#duration").val(jsondata.duration); + }); + $("#weekend").change( function(){ + var data = $("#weekend").serialize(); + $.post( OC.filePath('calendar', 'ajax', 'setdaysofweekend.php'), data, function(data){ + if(data == "error"){ + console.log("saving days of weekend failed"); + } + }); + }); }); diff --git a/apps/calendar/known bugs b/apps/calendar/known bugs deleted file mode 100644 index fb3cd2aa28abdd1585618944850ed8c3f2bcb388..0000000000000000000000000000000000000000 --- a/apps/calendar/known bugs +++ /dev/null @@ -1 +0,0 @@ -There are actually no known bugs diff --git a/apps/calendar/l10n/bg_BG.php b/apps/calendar/l10n/bg_BG.php new file mode 100644 index 0000000000000000000000000000000000000000..0c0b8604fb65e2cb7baaa4a402c7bb4cf51ce6fa --- /dev/null +++ b/apps/calendar/l10n/bg_BG.php @@ -0,0 +1,83 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "Проблем Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñта", +"Timezone changed" => "ЧаÑовата зона е Ñменена", +"Invalid request" => "Ðевалидна заÑвка", +"Calendar" => "Календар", +"Does not repeat" => "Ðе Ñе повтарÑ", +"Daily" => "Дневно", +"Weekly" => "Седмично", +"Every Weekday" => "Ð’Ñеки делничен ден", +"Bi-Weekly" => "ДвуÑедмично", +"Monthly" => "МеÑечно", +"Yearly" => "Годишно", +"All day" => "Ð’Ñички дни", +"Sunday" => "ÐеделÑ", +"Monday" => "Понеделник", +"Tuesday" => "Вторник", +"Wednesday" => "СрÑда", +"Thursday" => "Четвъртък", +"Friday" => "Петък", +"Saturday" => "Събота", +"Sun." => "Ðед.", +"Mon." => "Пон.", +"Tue." => "Ð’Ñ‚Ñ€.", +"Wed." => "СрÑ.", +"Thu." => "Чет.", +"Fri." => "Пет.", +"Sat." => "Съб.", +"January" => "Януари", +"February" => "Февруари", +"March" => "Март", +"April" => "Ðприл", +"May" => "Май", +"June" => "Юни", +"July" => "Юли", +"August" => "ÐвгуÑÑ‚", +"September" => "Септември", +"October" => "Октомври", +"November" => "Ðоември", +"December" => "Декември", +"Jan." => "Ян.", +"Feb." => "Фв.", +"Mar." => "Март", +"Apr." => "Ðпр.", +"Jun." => "Юни", +"Jul." => "Юли", +"Aug." => "Ðвг.", +"Sep." => "Сеп.", +"Oct." => "Окт.", +"Nov." => "Ðое.", +"Dec." => "Дек.", +"Week" => "Седмица", +"Weeks" => "Седмици", +"Day" => "Ден", +"Month" => "МеÑец", +"Today" => "ДнеÑ", +"Calendars" => "Календари", +"Time" => "ЧаÑ", +"There was a fail, while parsing the file." => "Възникна проблем Ñ Ñ€Ð°Ð·Ð»Ð¸Ñтването на файла.", +"Choose active calendars" => "Изберете активен календар", +"Download" => "ИзтеглÑне", +"Edit" => "ПромÑна", +"Edit calendar" => "Промени календар", +"Displayname" => "Екранно име", +"Active" => "Ðктивен", +"Description" => "ОпиÑание", +"Calendar color" => "ЦвÑÑ‚ на календара", +"Submit" => "Продължи", +"Edit an event" => "ПромÑна на Ñъбитие", +"Title" => "Заглавие", +"Title of the Event" => "Ðаименование", +"Location" => "ЛокациÑ", +"Location of the Event" => "ЛокациÑ", +"Category" => "КатегориÑ", +"All Day Event" => "Целодневно Ñъбитие", +"From" => "От", +"To" => "До", +"Repeat" => "Повтори", +"Attendees" => "ПриÑÑŠÑтващи", +"Description of the Event" => "ОпиÑание", +"Close" => "Затвори", +"Create a new event" => "Ðово Ñъбитие", +"Timezone" => "ЧаÑова зона" +); diff --git a/apps/calendar/l10n/ca.php b/apps/calendar/l10n/ca.php new file mode 100644 index 0000000000000000000000000000000000000000..13affe320f03c34ee1a3391a4fb4cf92d03db778 --- /dev/null +++ b/apps/calendar/l10n/ca.php @@ -0,0 +1,83 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "Error d'autenticació", +"Timezone changed" => "La zona horà ria ha canviat", +"Invalid request" => "Sol.licitud no và lida", +"Calendar" => "Calendari", +"Does not repeat" => "No es repeteix", +"Daily" => "Diari", +"Weekly" => "Mensual", +"Every Weekday" => "Cada setmana", +"Bi-Weekly" => "Bisetmanalment", +"Monthly" => "Mensualment", +"Yearly" => "Cada any", +"All day" => "Tot el dia", +"Sunday" => "Diumenge", +"Monday" => "Dilluns", +"Tuesday" => "Dimarts", +"Wednesday" => "Dimecres", +"Thursday" => "Dijous", +"Friday" => "Divendres", +"Saturday" => "Dissabte", +"Sun." => "dg.", +"Mon." => "dl.", +"Tue." => "dm.", +"Wed." => "dc.", +"Thu." => "dj.", +"Fri." => "dv.", +"Sat." => "ds.", +"January" => "Gener", +"February" => "Febrer", +"March" => "Març", +"April" => "Abril", +"May" => "Maig", +"June" => "Juny", +"July" => "Juliol", +"August" => "Agost", +"September" => "Setembre", +"October" => "Octubre", +"November" => "Novembre", +"December" => "Desembre", +"Jan." => "gen.", +"Feb." => "febr.", +"Mar." => "març", +"Apr." => "abr.", +"Jun." => "juny", +"Jul." => "jul.", +"Aug." => "ag.", +"Sep." => "set.", +"Oct." => "oct.", +"Nov." => "nov.", +"Dec." => "des.", +"Week" => "Setmana", +"Weeks" => "Setmanes", +"Day" => "Dia", +"Month" => "Mes", +"Today" => "Avui", +"Calendars" => "Calendaris", +"Time" => "Hora", +"There was a fail, while parsing the file." => "S'ha produït un error en analitzar el fitxer.", +"Choose active calendars" => "Seleccioneu calendaris actius", +"Download" => "Baixa", +"Edit" => "Edita", +"Edit calendar" => "Edita el calendari", +"Displayname" => "Mostra el nom", +"Active" => "Actiu", +"Description" => "Descripció", +"Calendar color" => "Color del calendari", +"Submit" => "Tramet", +"Edit an event" => "Edició d'un esdeveniment", +"Title" => "TÃtol", +"Title of the Event" => "TÃtol de l'esdeveniment", +"Location" => "Ubicació", +"Location of the Event" => "Ubicació de l'esdeveniment", +"Category" => "Categoria", +"All Day Event" => "Esdeveniment de tot el dia", +"From" => "Des de", +"To" => "Fins a", +"Repeat" => "Repeteix", +"Attendees" => "Assistents", +"Description of the Event" => "Descripció de l'esdeveniment", +"Close" => "Tanca", +"Create a new event" => "Crea un nou esdeveniment", +"Timezone" => "Zona horà ria" +); diff --git a/apps/calendar/l10n/da.php b/apps/calendar/l10n/da.php new file mode 100644 index 0000000000000000000000000000000000000000..46af5cb43ab77d35b51e97eed5e46313d9d0d99d --- /dev/null +++ b/apps/calendar/l10n/da.php @@ -0,0 +1,108 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "Godkendelsesfejl", +"Wrong calendar" => "Forkert kalender", +"Timezone changed" => "Tidszone ændret", +"Invalid request" => "Ugyldig forespørgsel", +"Calendar" => "Kalender", +"Birthday" => "Fødselsdag", +"Business" => "Forretning", +"Call" => "Ring", +"Clients" => "Kunder", +"Holidays" => "Helligdage", +"Ideas" => "Ideér", +"Journey" => "Rejse", +"Jubilee" => "Jubilæum", +"Meeting" => "Møde", +"Other" => "Andet", +"Personal" => "Privat", +"Projects" => "Projekter", +"Questions" => "SpørgsmÃ¥l", +"Work" => "Arbejde", +"Does not repeat" => "Gentages ikke", +"Daily" => "Daglig", +"Weekly" => "Ugentlig", +"Every Weekday" => "Alle hverdage", +"Bi-Weekly" => "Bi-Ugentligt", +"Monthly" => "MÃ¥nedlige", +"Yearly" => "Ã…rlig", +"All day" => "Hele dagen", +"Sunday" => "Søndag", +"Monday" => "Mandag", +"Tuesday" => "Tirsdag", +"Wednesday" => "Onsdag", +"Thursday" => "Torsdag", +"Friday" => "Fredag", +"Saturday" => "Lørdag", +"Sun." => "Søn.", +"Mon." => "Man.", +"Tue." => "Tir.", +"Wed." => "Ons.", +"Thu." => "Tor.", +"Fri." => "Fre.", +"Sat." => "Lør.", +"January" => "Januar", +"February" => "Februar", +"March" => "Marts", +"April" => "April", +"May" => "Maj", +"June" => "Juni", +"July" => "Juli", +"August" => "August", +"September" => "September", +"October" => "Oktober", +"November" => "November", +"December" => "December", +"Jan." => "Jan.", +"Feb." => "Feb.", +"Mar." => "Mar.", +"Apr." => "Apr.", +"May." => "Maj.", +"Jun." => "Jun.", +"Jul." => "Jul.", +"Aug." => "Aug.", +"Sep." => "Sep.", +"Oct." => "Oct.", +"Nov." => "Nov.", +"Dec." => "Dec.", +"Week" => "Uge", +"Weeks" => "Uger", +"More before {startdate}" => "Mere før {startdate}", +"More after {enddate}" => "Mere efter {enddate}", +"Day" => "Dag", +"Month" => "MÃ¥ned", +"List" => "Liste", +"Today" => "I dag", +"Calendars" => "Kalendere", +"Time" => "Tid", +"There was a fail, while parsing the file." => "Der opstod en fejl under gennemlæsning af filen.", +"Choose active calendars" => "Vælg aktiv kalendere", +"New Calendar" => "Ny Kalender", +"CalDav Link" => "CalDav Link", +"Download" => "Hent", +"Edit" => "Rediger", +"New calendar" => "Ny kalender", +"Edit calendar" => "Rediger kalender", +"Displayname" => "Visningsnavn", +"Active" => "Aktiv", +"Description" => "Beskrivelse", +"Calendar color" => "Kalender farve", +"Save" => "Gem", +"Submit" => "Send", +"Cancel" => "Annullér", +"Edit an event" => "Redigér en begivenhed", +"Title" => "Titel", +"Title of the Event" => "Titel pÃ¥ begivenheden", +"Location" => "Sted", +"Location of the Event" => "Placering af begivenheden", +"Category" => "Kategori", +"Select category" => "Vælg kategori", +"All Day Event" => "Heldagsarrangement", +"From" => "Fra", +"To" => "Til", +"Repeat" => "Gentag", +"Attendees" => "Deltagere", +"Description of the Event" => "Beskrivelse af begivenheden", +"Close" => "Luk", +"Create a new event" => "Opret en ny begivenhed", +"Timezone" => "Tidszone" +); diff --git a/apps/calendar/l10n/de.php b/apps/calendar/l10n/de.php index 80cb18cdd94d9a61f7ee6853c2d721a0f75831f8..44bab2a5c35ac14f249b6d30ee114b82f9bc8f85 100644 --- a/apps/calendar/l10n/de.php +++ b/apps/calendar/l10n/de.php @@ -1,36 +1,47 @@ <?php $TRANSLATIONS = array( +"Authentication error" => "Anmeldefehler", +"Wrong calendar" => "Falscher Kalender", +"Timezone changed" => "Zeitzone geändert", +"Invalid request" => "Anfragefehler", "Calendar" => "Kalender", -"Location" => "Ort", -"Category" => "Kategorie", -"Create a new event" => "Neuen Termin erstellen", -"Title of the Event" => "Titel des Termins", -"Location of the Event" => "Ort des Termins", -"All Day Event" => "Ganztägig", -"From" => "Von", -"To" => "Bis", -"Repeat" => "Wiederhol.", -"Attendees" => "Teilnehmer", -"Description" => "Beschreibung", -"Submit" => "Speichern", -"Save" => "Speichern", -"Cancel" => "Abbrechen", -"Title" => "Titel", +"Birthday" => "Geburtstag", +"Business" => "Geschäftlich", +"Call" => "Anruf", +"Clients" => "Kunden", +"Deliverer" => "Lieferant", +"Holidays" => "Urlaub", +"Ideas" => "Ideen", +"Journey" => "Reise", +"Jubilee" => "Jubiläum", +"Meeting" => "Treffen", +"Other" => "Anderes", +"Personal" => "Persönlich", +"Projects" => "Projekte", +"Questions" => "Fragen", +"Work" => "Arbeit", +"Does not repeat" => "einmalig", +"Daily" => "täglich", +"Weekly" => "wöchentlich", +"Every Weekday" => "jeden Wochentag", +"Bi-Weekly" => "jede zweite Woche", +"Monthly" => "monatlich", +"Yearly" => "jährlich", +"Not an array" => "Kein Feld", +"All day" => "Ganztags", "Sunday" => "Sonntag", "Monday" => "Montag", "Tuesday" => "Dienstag", -"Wednesday" => "Mittwoch", -"Thursday" => "Donnerstag", -"Friday" => "Freitag", -"Saturday" => "Samstag", -"CW" => "KW", -"CWs" => "KW", -"Sun." => "So.", -"Mon." => "Mo.", -"Tue." => "Di.", -"Wed." => "Mi.", -"Thu." => "Do.", -"Fri." => "Fr.", -"Sat." => "Sa.", +"Wednesday" => "Mittwoch", +"Thursday" => "Donnerstag", +"Friday" => "Freitag", +"Saturday" => "Samstag", +"Sun." => "Son.", +"Mon." => "Mon.", +"Tue." => "Die.", +"Wed." => "Mit.", +"Thu." => "Don.", +"Fri." => "Fre.", +"Sat." => "Sam.", "January" => "Januar", "February" => "Februar", "March" => "März", @@ -45,53 +56,55 @@ "December" => "Dezember", "Jan." => "Jan.", "Feb." => "Feb.", -"Mar." => "März", +"Mar." => "Mär.", "Apr." => "Apr.", -"May" => "Mai", -"Jun." => "Juni", -"Jul." => "Juli", +"May." => "Mai", +"Jun." => "Jun.", +"Jul." => "Jul.", "Aug." => "Aug.", "Sep." => "Sep.", "Oct." => "Okt.", "Nov." => "Nov.", "Dec." => "Dez.", -"Day" => "Tag", "Week" => "Woche", "Weeks" => "Wochen", +"More before {startdate}" => "Mehr vor {startdate}", +"More after {enddate}" => "Mehr nach {enddate}", +"Day" => "Tag", "Month" => "Monat", -"Listview" => "Liste", +"List" => "Liste", "Today" => "Heute", "Calendars" => "Kalender", -"Time" => "Uhrzeit", -"All day" => "Ganztägig", -"Does not repeat" => "Keine Wiederholung", -"Daily" => "Täglich", -"Weekly" => "Wöchentlich", -"Every Weekday" => "jeden Wochentag", -"Bi-Weekly" => "jede 2. Woche", -"Monthly" => "Monatlich", -"Yearly" => "Jährlich", -"Description of the Event" => "Beschreibung des Termins", -"None" => "Keine", -"Birthday" => "Geburtstag", -"Business" => "Geschäftlich", -"Call" => "Anrufen", -"Clients" => "Kunden", -"Deliverer" => "Lieferanten", -"Holidays" => "Ferien", -"Ideas" => "Ideen", -"Journey" => "Reise", -"Jubilee" => "Jubiläum", -"Meeting" => "Treffen", -"Other" => "Andere", -"Personal" => "Persönlich", -"Projects" => "Projekte", -"Questions" => "Fragen", -"Work" => "Arbeit", +"Time" => "Zeit", +"There was a fail, while parsing the file." => "Fehler beim Einlesen der Datei.", +"Choose active calendars" => "Aktive Kalender wählen", "New Calendar" => "Neuer Kalender", +"CalDav Link" => "CalDAV-Link", +"Download" => "Herunterladen", +"Edit" => "Bearbeiten", +"New calendar" => "Neuer Kalender", +"Edit calendar" => "Kalender bearbeiten", "Displayname" => "Anzeigename", +"Active" => "Aktiv", +"Description" => "Beschreibung", "Calendar color" => "Kalenderfarbe", -"" => "", -"" => "" +"Save" => "Speichern", +"Submit" => "Bestätigen", +"Cancel" => "Abbrechen", +"Edit an event" => "Ereignis bearbeiten", +"Title" => "Titel", +"Title of the Event" => "Name", +"Location" => "Ort", +"Location of the Event" => "Ort", +"Category" => "Kategorie", +"Select category" => "Kategorie auswählen", +"All Day Event" => "Ganztägiges Ereignis", +"From" => "von", +"To" => "bis", +"Repeat" => "wiederholen", +"Attendees" => "Teilnehmer", +"Description of the Event" => "Beschreibung", +"Close" => "Schließen", +"Create a new event" => "Neues Ereignis", +"Timezone" => "Zeitzone" ); -?> \ No newline at end of file diff --git a/apps/calendar/l10n/el.php b/apps/calendar/l10n/el.php new file mode 100644 index 0000000000000000000000000000000000000000..e2c26502cef98d55fd16edb198375ae7d797db86 --- /dev/null +++ b/apps/calendar/l10n/el.php @@ -0,0 +1,102 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "Σφάλμα ταυτοποίησης", +"Wrong calendar" => "Λάθος ημεÏολόγιο", +"Timezone changed" => "Η ζώνη ÏŽÏας άλλαξε", +"Invalid request" => "Μη ÎγκυÏο αίτημα", +"Calendar" => "ΗμεÏολόγιο", +"Birthday" => "ΓενÎθλια", +"Business" => "ΕπιχείÏηση", +"Call" => "Κλήση", +"Clients" => "Πελάτες", +"Holidays" => "ΔιακοπÎÏ‚", +"Ideas" => "ΙδÎες", +"Journey" => "Ταξίδι", +"Other" => "Άλλο", +"Personal" => "Î Ïοσωπικό", +"Projects" => "ΈÏγα", +"Questions" => "ΕÏωτήσεις", +"Work" => "ΕÏγασία", +"Does not repeat" => "Μη επαναλαμβανόμενο", +"Daily" => "ΚαθημεÏινά", +"Weekly" => "Εβδομαδιαία", +"Every Weekday" => "Κάθε μÎÏα", +"Bi-Weekly" => "ΔÏο φοÏÎÏ‚ την εβδομάδα", +"Monthly" => "Μηνιαία", +"Yearly" => "Ετήσια", +"Not an array" => "Δεν είναι μια σειÏά", +"All day" => "ΟλοήμεÏο", +"Sunday" => "ΚυÏιακή", +"Monday" => "ΔευτÎÏα", +"Tuesday" => "ΤÏίτη", +"Wednesday" => "ΤετάÏτη", +"Thursday" => "Î Îμπτη", +"Friday" => "ΠαÏασκευή", +"Saturday" => "Σάββατο", +"Sun." => "ΚυÏ.", +"Mon." => "Δευτ.", +"Tue." => "ΤÏ.", +"Wed." => "Τετ.", +"Thu." => "Î Îμ.", +"Fri." => "ΠαÏ.", +"Sat." => "Σάβ.", +"January" => "ΙανουάÏιος", +"February" => "ΦεβÏουάÏιος", +"March" => "ΜάÏτιος", +"April" => "ΑπÏίλιος", +"May" => "Μάιος", +"June" => "ΙοÏνιος", +"July" => "ΙοÏλιος", +"August" => "ΑÏγουστος", +"September" => "ΣεπτÎμβÏιος", +"October" => "ΟκτώβÏιος", +"November" => "ÎοÎμβÏιος", +"December" => "ΔεκÎμβÏιος", +"Jan." => "Ιαν.", +"Feb." => "Φεβ.", +"Mar." => "ΜαÏ.", +"Apr." => "ΑπÏ.", +"Jun." => "ΙοÏν.", +"Jul." => "ΙοÏλ.", +"Aug." => "ΑÏγ.", +"Sep." => "Σεπ.", +"Oct." => "Οκτ.", +"Nov." => "ÎοÎ.", +"Dec." => "Δεκ.", +"Week" => "Εβδομάδα", +"Weeks" => "Εβδομάδες", +"Day" => "ΗμÎÏα", +"Month" => "Μήνας", +"List" => "Λίστα", +"Today" => "ΣήμεÏα", +"Calendars" => "ΗμεÏολόγια", +"Time" => "ÎÏα", +"There was a fail, while parsing the file." => "ΥπήÏχε μια αποτυχία, κατά την ανάλυση του αÏχείου.", +"Choose active calendars" => "ΕπιλÎξτε τα ενεÏγά ημεÏολόγια", +"New Calendar" => "ÎÎα ΗμεÏολόγιο", +"Download" => "Λήψη", +"Edit" => "ΕπεξεÏγασία", +"New calendar" => "ÎÎο ημεÏολόγιο", +"Edit calendar" => "ΕπεξεÏγασία ημεÏολογίου", +"Displayname" => "Î Ïοβολή ονόματος", +"Active" => "ΕνεÏγό", +"Description" => "ΠεÏιγÏαφή", +"Calendar color" => "ΧÏώμα ημεÏολογίου", +"Submit" => "Υποβολή", +"Cancel" => "ΑκÏÏωση", +"Edit an event" => "ΕπεξεÏγασία ενός γεγονότος", +"Title" => "Τίτλος", +"Title of the Event" => "Τίτλος συμβάντος", +"Location" => "Τοποθεσία", +"Location of the Event" => "Τοποθεσία συμβάντος", +"Category" => "ΚατηγοÏία", +"Select category" => "ΕπιλÎξτε κατηγοÏία", +"All Day Event" => "ΟλοήμεÏο συμβάν", +"From" => "Από", +"To" => "Έως", +"Repeat" => "Επαναλαμβανόμενο", +"Attendees" => "ΠαÏευÏισκόμενοι", +"Description of the Event" => "ΠεÏιγÏαφή του συμβάντος", +"Close" => "Κλείσιμο", +"Create a new event" => "ΔημιουÏγήστε Îνα νÎο συμβάν", +"Timezone" => "Ζώνη ÏŽÏας" +); diff --git a/apps/calendar/l10n/es.php b/apps/calendar/l10n/es.php index f20230fe17f9f8bd9724fac649c04fd0acc9f1e0..2d2d1d377efcf791b4c125403886384f0f1c4d00 100644 --- a/apps/calendar/l10n/es.php +++ b/apps/calendar/l10n/es.php @@ -1,35 +1,44 @@ <?php $TRANSLATIONS = array( +"Authentication error" => "Error de autentificación", +"Wrong calendar" => "Calendario incorrecto", +"Timezone changed" => "Zona horaria cambiada", +"Invalid request" => "Petición no válida", "Calendar" => "Calendario", -"Location" => "Lugar", -"Category" => "CategorÃa", -"Create a new event" => "Crea un plazo", -"Title of the Event" => "TÃtulo del plazo", -"Location of the Event" => "Lugar del plazo", -"All Day Event" => "todo el dÃa", -"From" => "Desde", -"To" => "Hasta", -"Repeat" => "Repetición", -"Attendees" => "Participante", -"Description" => "Descripción", -"Submit" => "Guarda", -"Reset" => "Repone", -"Title" => "TÃtulo", +"Birthday" => "Cumpleaños", +"Business" => "Negocios", +"Clients" => "Clientes", +"Holidays" => "Feriados", +"Ideas" => "Ideas", +"Journey" => "Viaje", +"Jubilee" => "Aniversario", +"Meeting" => "Reunión", +"Other" => "Otro", +"Personal" => "Personal", +"Projects" => "Projectos", +"Questions" => "Preguntas", +"Work" => "Trabajo", +"Does not repeat" => "No se repite", +"Daily" => "Diariamente", +"Weekly" => "Semanalmente", +"Every Weekday" => "Una vez a la semana", +"Bi-Weekly" => "Dos veces a la semana", +"Monthly" => "Mensualmente", +"Yearly" => "Anualmente", +"All day" => "Todo el dÃa", "Sunday" => "Domingo", "Monday" => "Lunes", "Tuesday" => "Martes", -"Wednesday" => "Miércoles", -"Thursday" => "Jueves", -"Friday" => "Viernes", -"Saturday" => "Sábado", -"CW" => "Semana", -"CWs" => "Semanas", -"Sun." => "Do.", -"Mon." => "Lu.", -"Tue." => "Ma.", -"Wed." => "Mi.", -"Thu." => "Ju.", -"Fri." => "Vi.", -"Sat." => "Sá.", +"Wednesday" => "Miércoles", +"Thursday" => "Jueves", +"Friday" => "Viernes", +"Saturday" => "Sábado", +"Sun." => "Dom.", +"Mon." => "Lun.", +"Tue." => "Mar.", +"Wed." => "Mie.", +"Thu." => "Jue.", +"Fri." => "Vie.", +"Sat." => "Sáb.", "January" => "Enero", "February" => "Febrero", "March" => "Marzo", @@ -41,28 +50,54 @@ "September" => "Septiembre", "October" => "Octubre", "November" => "Noviembre", -"December" => "Deciembre", +"December" => "Diciembre", "Jan." => "Ene.", "Feb." => "Feb.", -"Mar." => "Mär.", +"Mar." => "Mar.", "Apr." => "Abr.", -"May" => "May.", "Jun." => "Jun.", "Jul." => "Jul.", "Aug." => "Ago.", "Sep." => "Sep.", "Oct." => "Oct.", "Nov." => "Nov.", -"Dec." => "Dec.", -"Day" => "DÃa", +"Dec." => "Dic.", "Week" => "Semana", "Weeks" => "Semanas", +"Day" => "DÃa", "Month" => "Mes", -"Listview" => "Lista", +"List" => "Lista", "Today" => "Hoy", "Calendars" => "Calendarios", "Time" => "Hora", -"All day" => "todo el dÃa", -"" => "" +"There was a fail, while parsing the file." => "Hubo un fallo al analizar el archivo.", +"Choose active calendars" => "Elige los calendarios activos", +"New Calendar" => "Nuevo calendario", +"Download" => "Descargar", +"Edit" => "Editar", +"New calendar" => "Nuevo calendario", +"Edit calendar" => "Editar calendario", +"Displayname" => "Nombre", +"Active" => "Activo", +"Description" => "Descripción", +"Calendar color" => "Color del calendario", +"Save" => "Guardar", +"Submit" => "Guardar", +"Cancel" => "Cancelar", +"Edit an event" => "Editar un evento", +"Title" => "TÃtulo", +"Title of the Event" => "TÃtulo del evento", +"Location" => "Lugar", +"Location of the Event" => "Lugar del Evento", +"Category" => "CategorÃa", +"Select category" => "Seleccionar categorÃa", +"All Day Event" => "Todo el dÃa", +"From" => "Desde", +"To" => "Hasta", +"Repeat" => "Repetir", +"Attendees" => "Asistentes", +"Description of the Event" => "Descripción del evento", +"Close" => "Cerrar", +"Create a new event" => "Crear un nuevo evento", +"Timezone" => "Zona horaria" ); -?> \ No newline at end of file diff --git a/apps/calendar/l10n/et_EE.php b/apps/calendar/l10n/et_EE.php new file mode 100644 index 0000000000000000000000000000000000000000..c66638f2b4c311264136e929f9ec475d3dd07c9e --- /dev/null +++ b/apps/calendar/l10n/et_EE.php @@ -0,0 +1,83 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "Autentimise viga", +"Timezone changed" => "Ajavöönd on muudetud", +"Invalid request" => "Vigane päring", +"Calendar" => "Kalender", +"Does not repeat" => "Ei kordu", +"Daily" => "Iga päev", +"Weekly" => "Iga nädal", +"Every Weekday" => "Igal nädalapäeval", +"Bi-Weekly" => "Ãœle nädala", +"Monthly" => "Igal kuul", +"Yearly" => "Igal aastal", +"All day" => "Kogu päev", +"Sunday" => "Pühapäev", +"Monday" => "Esmaspäev", +"Tuesday" => "Teisipäev", +"Wednesday" => "Kolmapäev", +"Thursday" => "Neljapäev", +"Friday" => "Reede", +"Saturday" => "Laupäev", +"Sun." => "Pü.", +"Mon." => "Esm.", +"Tue." => "Teisip.", +"Wed." => "Kolmap.", +"Thu." => "Neljap.", +"Fri." => "Reede", +"Sat." => "Laup.", +"January" => "Jaanuar", +"February" => "Veebruar", +"March" => "Märts", +"April" => "Aprill", +"May" => "Mai", +"June" => "Juuni", +"July" => "Juuli", +"August" => "August", +"September" => "September", +"October" => "Oktoober", +"November" => "November", +"December" => "Detsember", +"Jan." => "Jan.", +"Feb." => "Veebr.", +"Mar." => "Märts", +"Apr." => "Apr.", +"Jun." => "Jun.", +"Jul." => "Jul.", +"Aug." => "Aug.", +"Sep." => "Sept.", +"Oct." => "Okt.", +"Nov." => "Nov.", +"Dec." => "Dets.", +"Week" => "Nädal", +"Weeks" => "Nädalat", +"Day" => "Päev", +"Month" => "Kuu", +"Today" => "Täna", +"Calendars" => "Kalendrid", +"Time" => "Kellaaeg", +"There was a fail, while parsing the file." => "Faili parsimisel tekkis viga.", +"Choose active calendars" => "Vali aktiivsed kalendrid", +"Download" => "Lae alla", +"Edit" => "Muuda", +"Edit calendar" => "Muuda kalendrit", +"Displayname" => "Näidatav nimi", +"Active" => "Aktiivne", +"Description" => "Kirjeldus", +"Calendar color" => "Kalendri värv", +"Submit" => "OK", +"Edit an event" => "Muuda sündmust", +"Title" => "Pealkiri", +"Title of the Event" => "Sündmuse pealkiri", +"Location" => "Asukoht", +"Location of the Event" => "Sündmuse toimumiskoht", +"Category" => "Kategooria", +"All Day Event" => "Kogu päeva sündmus", +"From" => "Alates", +"To" => "Kuni", +"Repeat" => "Korda", +"Attendees" => "Osalejad", +"Description of the Event" => "Sündmuse kirjeldus", +"Close" => "Sulge", +"Create a new event" => "Loo sündmus", +"Timezone" => "Ajavöönd" +); diff --git a/apps/calendar/l10n/fr.php b/apps/calendar/l10n/fr.php new file mode 100644 index 0000000000000000000000000000000000000000..c12d773a67a58ab78bef399daf461cab1107cbe6 --- /dev/null +++ b/apps/calendar/l10n/fr.php @@ -0,0 +1,110 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "Erreur d'authentification", +"Wrong calendar" => "Mauvais calendrier", +"Timezone changed" => "Fuseau horaire modifié", +"Invalid request" => "Requête invalide", +"Calendar" => "Calendrier", +"Birthday" => "Anniversaire", +"Business" => "Business", +"Call" => "Appel", +"Clients" => "Clients", +"Deliverer" => "Livreur", +"Holidays" => "Vacances", +"Ideas" => "Idées", +"Journey" => "Journée", +"Jubilee" => "Jubilé", +"Meeting" => "Meeting", +"Other" => "Autre", +"Personal" => "Personnel", +"Projects" => "Projets", +"Questions" => "Questions", +"Work" => "Travail", +"Does not repeat" => "Pas de répétition", +"Daily" => "Tous les jours", +"Weekly" => "Toutes les semaines", +"Every Weekday" => "Chaque jour de la semaine", +"Bi-Weekly" => "Bimestriel", +"Monthly" => "Tous les mois", +"Yearly" => "Tous les ans", +"Not an array" => "Ce n'est pas un tableau", +"All day" => "Tous les jours", +"Sunday" => "Dimanche", +"Monday" => "Lundi", +"Tuesday" => "Mardi", +"Wednesday" => "Mercredi", +"Thursday" => "Jeudi", +"Friday" => "Vendredi", +"Saturday" => "Samedi", +"Sun." => "Dim.", +"Mon." => "Lun.", +"Tue." => "Mar.", +"Wed." => "Mer.", +"Thu." => "Jeu.", +"Fri." => "Ven.", +"Sat." => "Sam.", +"January" => "Janvier", +"February" => "Février", +"March" => "Mars", +"April" => "Avril", +"May" => "Mai", +"June" => "Juin", +"July" => "Juillet", +"August" => "Août", +"September" => "Septembre", +"October" => "Octobre", +"November" => "Novembre", +"December" => "Décembre", +"Jan." => "Jan.", +"Feb." => "Fév.", +"Mar." => "Mar.", +"Apr." => "Avr.", +"May." => "Peut-être *****", +"Jun." => "Juin", +"Jul." => "Juil.", +"Aug." => "Aoû.", +"Sep." => "Sep.", +"Oct." => "Oct.", +"Nov." => "Nov.", +"Dec." => "Déc.", +"Week" => "Semaine", +"Weeks" => "Semaines", +"More before {startdate}" => "Voir plus avant {startdate}", +"More after {enddate}" => "Voir plus après {enddate}", +"Day" => "Jour", +"Month" => "Mois", +"List" => "Liste", +"Today" => "Aujourd'hui", +"Calendars" => "Calendriers", +"Time" => "Heure", +"There was a fail, while parsing the file." => "Une erreur est survenue pendant la lecture du fichier.", +"Choose active calendars" => "Choix des calendriers actifs", +"New Calendar" => "Nouveau Calendrier", +"CalDav Link" => "Lien CalDav", +"Download" => "Télécharger", +"Edit" => "Éditer", +"New calendar" => "Nouveau calendrier", +"Edit calendar" => "Éditer le calendrier", +"Displayname" => "Nom d'affichage", +"Active" => "Actif", +"Description" => "Description", +"Calendar color" => "Couleur du calendrier", +"Save" => "Sauvegarder", +"Submit" => "Soumettre", +"Cancel" => "Annuler", +"Edit an event" => "Éditer un événement", +"Title" => "Titre", +"Title of the Event" => "Titre de l'événement", +"Location" => "Localisation", +"Location of the Event" => "Localisation de l'événement", +"Category" => "Catégorie", +"Select category" => "Sélectionner une catégorie", +"All Day Event" => "Événement de toute une journée", +"From" => "De", +"To" => "À", +"Repeat" => "Répétition", +"Attendees" => "Personnes présentes", +"Description of the Event" => "Description de l'événement", +"Close" => "Fermer", +"Create a new event" => "Créer un nouvel événement", +"Timezone" => "Fuseau horaire" +); diff --git a/apps/calendar/l10n/id.php b/apps/calendar/l10n/id.php new file mode 100644 index 0000000000000000000000000000000000000000..5cb95d0b35895690056499882581fec68c6fc7ae --- /dev/null +++ b/apps/calendar/l10n/id.php @@ -0,0 +1,83 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "Kesalahan otentikasi", +"Timezone changed" => "Zona waktu telah diubah", +"Invalid request" => "Permintaan tidak sah", +"Calendar" => "Kalender", +"Does not repeat" => "Tidak akan mengulangi", +"Daily" => "Harian", +"Weekly" => "Mingguan", +"Every Weekday" => "Setiap Hari Minggu", +"Bi-Weekly" => "Dwi-mingguan", +"Monthly" => "Bulanan", +"Yearly" => "Tahunan", +"All day" => "Semua Hari", +"Sunday" => "Minggu", +"Monday" => "Senin", +"Tuesday" => "Selasa", +"Wednesday" => "Rabu", +"Thursday" => "Kamis", +"Friday" => "Jumat", +"Saturday" => "Sabtu", +"Sun." => "Min.", +"Mon." => "Sen.", +"Tue." => "Sel.", +"Wed." => "Rab.", +"Thu." => "Kam.", +"Fri." => "Jum.", +"Sat." => "Sab.", +"January" => "Januari", +"February" => "Februari", +"March" => "Maret", +"April" => "April", +"May" => "Mei", +"June" => "Juni", +"July" => "Juli", +"August" => "Agustus", +"September" => "September", +"October" => "Oktober", +"November" => "November", +"December" => "Desember", +"Jan." => "Jan.", +"Feb." => "Feb.", +"Mar." => "Mar.", +"Apr." => "Apr.", +"Jun." => "Jun.", +"Jul." => "Jul.", +"Aug." => "Agu.", +"Sep." => "Sep.", +"Oct." => "Okt.", +"Nov." => "Nov.", +"Dec." => "Des.", +"Week" => "Minggu", +"Weeks" => "Minggu", +"Day" => "Hari", +"Month" => "Bulan", +"Today" => "Hari ini", +"Calendars" => "Kalender", +"Time" => "Waktu", +"There was a fail, while parsing the file." => "Terjadi kesalahan, saat mengurai berkas.", +"Choose active calendars" => "Pilih kalender aktif", +"Download" => "Unduh", +"Edit" => "Sunting", +"Edit calendar" => "Sunting kalender", +"Displayname" => "Namatampilan", +"Active" => "Aktif", +"Description" => "Deskripsi", +"Calendar color" => "Warna kalender", +"Submit" => "Sampaikan", +"Edit an event" => "Sunting agenda", +"Title" => "Judul", +"Title of the Event" => "Judul Agenda", +"Location" => "Lokasi", +"Location of the Event" => "Lokasi Agenda", +"Category" => "Kategori", +"All Day Event" => "Agenda di Semua Hari", +"From" => "Dari", +"To" => "Ke", +"Repeat" => "Ulangi", +"Attendees" => "Yang menghadiri", +"Description of the Event" => "Deskripsi dari Agenda", +"Close" => "Tutup", +"Create a new event" => "Buat agenda baru", +"Timezone" => "Zonawaktu" +); diff --git a/apps/calendar/l10n/it.php b/apps/calendar/l10n/it.php new file mode 100644 index 0000000000000000000000000000000000000000..dcb6799b04c33b75f37bd5af7da9ecd673c4a0a7 --- /dev/null +++ b/apps/calendar/l10n/it.php @@ -0,0 +1,110 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "Errore di autenticazione", +"Wrong calendar" => "Calendario sbagliato", +"Timezone changed" => "Fuso orario cambiato", +"Invalid request" => "Richiesta non validia", +"Calendar" => "Calendario", +"Birthday" => "Compleanno", +"Business" => "Azienda", +"Call" => "Chiama", +"Clients" => "Clienti", +"Deliverer" => "Consegna", +"Holidays" => "Vacanze", +"Ideas" => "Idee", +"Journey" => "Viaggio", +"Jubilee" => "Anniversario", +"Meeting" => "Riunione", +"Other" => "Altro", +"Personal" => "Personale", +"Projects" => "Progetti", +"Questions" => "Domande", +"Work" => "Lavoro", +"Does not repeat" => "Non ripetere", +"Daily" => "Giornaliero", +"Weekly" => "Settimanale", +"Every Weekday" => "Ogni settimana", +"Bi-Weekly" => "Ogni due settimane", +"Monthly" => "Mensile", +"Yearly" => "Annuale", +"Not an array" => "Non è un array", +"All day" => "Tutti i giorni", +"Sunday" => "Domenica", +"Monday" => "Lunedì", +"Tuesday" => "Martedì", +"Wednesday" => "Mercoledì", +"Thursday" => "Giovedì", +"Friday" => "Venerdì", +"Saturday" => "Sabato", +"Sun." => "Dom.", +"Mon." => "Lun.", +"Tue." => "Mar.", +"Wed." => "Mer.", +"Thu." => "Gio.", +"Fri." => "Ven.", +"Sat." => "Sab.", +"January" => "Gennaio", +"February" => "Febbraio", +"March" => "Marzo", +"April" => "Aprile", +"May" => "Maggio", +"June" => "Giugno", +"July" => "Luglio", +"August" => "Agosto", +"September" => "Settembre", +"October" => "Ottobre", +"November" => "Novembre", +"December" => "Dicembre", +"Jan." => "Gen.", +"Feb." => "Feb.", +"Mar." => "Mar.", +"Apr." => "Apr.", +"May." => "Maggio.", +"Jun." => "Giu.", +"Jul." => "Lug.", +"Aug." => "Ago.", +"Sep." => "Set.", +"Oct." => "Ott.", +"Nov." => "Nov.", +"Dec." => "Dic.", +"Week" => "Settimana", +"Weeks" => "Settimane", +"More before {startdate}" => "Prima di {startdate}", +"More after {enddate}" => "Dopo {enddate}", +"Day" => "Giorno", +"Month" => "Mese", +"List" => "Lista", +"Today" => "Oggi", +"Calendars" => "Calendari", +"Time" => "Ora", +"There was a fail, while parsing the file." => "C'è stato un errore nel parsing del file.", +"Choose active calendars" => "Selezionare calendari attivi", +"New Calendar" => "Nuovo Calendario", +"CalDav Link" => "CalDav Link", +"Download" => "Download", +"Edit" => "Modifica", +"New calendar" => "Nuovo calendario", +"Edit calendar" => "Modifica calendario", +"Displayname" => "Mostra nome", +"Active" => "Attivo", +"Description" => "Descrizione", +"Calendar color" => "Colore calendario", +"Save" => "Salva", +"Submit" => "Invia", +"Cancel" => "Annulla", +"Edit an event" => "Modifica evento", +"Title" => "Titolo", +"Title of the Event" => "Titolo evento", +"Location" => "Luogo", +"Location of the Event" => "Luogo evento", +"Category" => "Categoria", +"Select category" => "Seleziona categoria", +"All Day Event" => "Tutti gli eventi del giorno", +"From" => "Da", +"To" => "A", +"Repeat" => "Ripeti", +"Attendees" => "Partecipanti", +"Description of the Event" => "Descrizione evento", +"Close" => "Chiuso", +"Create a new event" => "Crea evento", +"Timezone" => "Timezone" +); diff --git a/apps/calendar/l10n/lb.php b/apps/calendar/l10n/lb.php new file mode 100644 index 0000000000000000000000000000000000000000..82cdac133fa58c6699f32e031cd4c5c695d1ddf2 --- /dev/null +++ b/apps/calendar/l10n/lb.php @@ -0,0 +1,83 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "Authentifizéierung's Feeler", +"Timezone changed" => "Zäitzon geännert", +"Invalid request" => "Ongülteg Requête", +"Calendar" => "Kalenner", +"Does not repeat" => "Widderhëlt sech net", +"Daily" => "Deeglech", +"Weekly" => "All Woch", +"Every Weekday" => "All Wochendag", +"Bi-Weekly" => "All zweet Woch", +"Monthly" => "All Mount", +"Yearly" => "All Joer", +"All day" => "All Dag", +"Sunday" => "Sonnden", +"Monday" => "Méinden", +"Tuesday" => "Dënschden", +"Wednesday" => "Mëttwoch", +"Thursday" => "Donneschden", +"Friday" => "Freiden", +"Saturday" => "Samschden", +"Sun." => "So. ", +"Mon." => "Méin. ", +"Tue." => "Dën.", +"Wed." => "Mëtt.", +"Thu." => "Do.", +"Fri." => "Fr.", +"Sat." => "Sam.", +"January" => "Januar", +"February" => "Februar", +"March" => "Mäerz", +"April" => "Abrëll", +"May" => "Mäi", +"June" => "Juni", +"July" => "Juli", +"August" => "August", +"September" => "September", +"October" => "Oktober", +"November" => "November", +"December" => "Dezember", +"Jan." => "Jan.", +"Feb." => "Feb.", +"Mar." => "Mär.", +"Apr." => "Abr.", +"Jun." => "Jun.", +"Jul." => "Jul.", +"Aug." => "Aug.", +"Sep." => "Sep.", +"Oct." => "Okt.", +"Nov." => "Nov.", +"Dec." => "Dez.", +"Week" => "Woch", +"Weeks" => "Wochen", +"Day" => "Dag", +"Month" => "Mount", +"Today" => "Haut", +"Calendars" => "Kalenneren", +"Time" => "Zäit", +"There was a fail, while parsing the file." => "Feeler beim lueden vum Fichier.", +"Choose active calendars" => "Wiel aktiv Kalenneren aus", +"Download" => "Eroflueden", +"Edit" => "Editéieren", +"Edit calendar" => "Kalenner editéieren", +"Displayname" => "Numm", +"Active" => "Aktiv", +"Description" => "Beschreiwung", +"Calendar color" => "Fuerf vum Kalenner", +"Submit" => "Fortschécken", +"Edit an event" => "Evenement editéieren", +"Title" => "Titel", +"Title of the Event" => "Titel vum Evenement", +"Location" => "Uert", +"Location of the Event" => "Uert vum Evenement", +"Category" => "Kategorie", +"All Day Event" => "Ganz-Dag Evenement", +"From" => "Vun", +"To" => "Fir", +"Repeat" => "Widderhuelen", +"Attendees" => "Participanten", +"Description of the Event" => "Beschreiwung vum Evenement", +"Close" => "Zoumaachen", +"Create a new event" => "En Evenement maachen", +"Timezone" => "Zäitzon" +); diff --git a/apps/calendar/l10n/ms_MY.php b/apps/calendar/l10n/ms_MY.php new file mode 100644 index 0000000000000000000000000000000000000000..625422a858297f091e1b2a70d4068d793d989e8c --- /dev/null +++ b/apps/calendar/l10n/ms_MY.php @@ -0,0 +1,83 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "Ralat pengesahan", +"Timezone changed" => "Zon waktu diubah", +"Invalid request" => "Permintaan tidak sah", +"Calendar" => "Kalendar", +"Does not repeat" => "Tidak berulang", +"Daily" => "Harian", +"Weekly" => "Mingguan", +"Every Weekday" => "Setiap hari minggu", +"Bi-Weekly" => "Dua kali seminggu", +"Monthly" => "Bulanan", +"Yearly" => "Tahunan", +"All day" => "Sepanjang hari", +"Sunday" => "Ahad", +"Monday" => "Isnin", +"Tuesday" => "Selasa", +"Wednesday" => "Rabu", +"Thursday" => "Khamis", +"Friday" => "Jumaat", +"Saturday" => "Sabtu", +"Sun." => "Ahad", +"Mon." => "Isnin", +"Tue." => "Selasa", +"Wed." => "Rabu", +"Thu." => "Khamis", +"Fri." => "Jumaat", +"Sat." => "Sabtu", +"January" => "Januari", +"February" => "Februari", +"March" => "Mac", +"April" => "April ", +"May" => "Mei", +"June" => "Jun", +"July" => "Julai", +"August" => "Ogos", +"September" => "September", +"October" => "Oktober", +"November" => "November", +"December" => "Disember", +"Jan." => "Jan", +"Feb." => "Feb", +"Mar." => "Mac", +"Apr." => "Apr", +"Jun." => "Jun", +"Jul." => "Jul", +"Aug." => "Ogos", +"Sep." => "Sep", +"Oct." => "Okt", +"Nov." => "Nov", +"Dec." => "Dis", +"Week" => "Minggu", +"Weeks" => "Minggu", +"Day" => "Hari", +"Month" => "Bulan", +"Today" => "Hari ini", +"Calendars" => "Kalendar", +"Time" => "Waktu", +"There was a fail, while parsing the file." => "Berlaku kegagalan ketika penguraian fail. ", +"Choose active calendars" => "Pilih kalendar yang aktif", +"Download" => "Muat turun", +"Edit" => "Edit", +"Edit calendar" => "Edit kalendar", +"Displayname" => "Paparan nama", +"Active" => "Aktif", +"Description" => "Huraian", +"Calendar color" => "Warna kalendar", +"Submit" => "Hantar", +"Edit an event" => "Edit agenda", +"Title" => "Tajuk", +"Title of the Event" => "Tajuk agenda", +"Location" => "Lokasi", +"Location of the Event" => "Lokasi agenda", +"Category" => "kategori", +"All Day Event" => "Agenda di sepanjang hari ", +"From" => "Dari", +"To" => "ke", +"Repeat" => "Ulang", +"Attendees" => "Hadirin", +"Description of the Event" => "Huraian agenda", +"Close" => "Tutup", +"Create a new event" => "Buat agenda baru", +"Timezone" => "Zon waktu" +); diff --git a/apps/calendar/l10n/nb_NO.php b/apps/calendar/l10n/nb_NO.php new file mode 100644 index 0000000000000000000000000000000000000000..95e555bc85247196e6182cf2f57fee4eaaf35d48 --- /dev/null +++ b/apps/calendar/l10n/nb_NO.php @@ -0,0 +1,81 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "Autentifikasjonsfeil", +"Timezone changed" => "Tidssone endret", +"Invalid request" => "Ugyldig forespørsel", +"Calendar" => "Kalender", +"Does not repeat" => "Gjentas ikke", +"Daily" => "Daglig", +"Weekly" => "Ukentlig", +"Every Weekday" => "Hver ukedag", +"Monthly" => "MÃ¥nedlig", +"Yearly" => "Ã…rlig", +"All day" => "Hele dagen ", +"Sunday" => "Søndag", +"Monday" => "Mandag", +"Tuesday" => "Tirsdag", +"Wednesday" => "Onsdag", +"Thursday" => "Torsdag", +"Friday" => "Fredag", +"Saturday" => "Lørdag", +"Sun." => "Sø.", +"Mon." => "Ma.", +"Tue." => "Ti.", +"Wed." => "On.", +"Thu." => "To.", +"Fri." => "Fr.", +"Sat." => "Lø.", +"January" => "Januar", +"February" => "Februar", +"March" => "Mars", +"April" => "April", +"May" => "Mai", +"June" => "Juni", +"July" => "Juli", +"August" => "August", +"September" => "September", +"October" => "Oktober", +"November" => "November", +"December" => "Desember", +"Jan." => "jan.", +"Feb." => "feb.", +"Mar." => "mar.", +"Apr." => "apr.", +"Jun." => "jun.", +"Jul." => "jul.", +"Aug." => "aug.", +"Sep." => "sep.", +"Oct." => "okt.", +"Nov." => "nov.", +"Dec." => "des.", +"Week" => "Uke", +"Weeks" => "Uke", +"Day" => "Dag", +"Month" => "ned", +"Today" => "I dag", +"Calendars" => "Kalendre", +"Time" => "Tid", +"Choose active calendars" => "Velg en aktiv kalender", +"Download" => "Last ned", +"Edit" => "Endre", +"Edit calendar" => "Rediger kalender", +"Displayname" => "Visningsnavn", +"Active" => "Aktiv", +"Description" => "Beskrivelse", +"Calendar color" => "Kalenderfarge", +"Submit" => "Lagre", +"Edit an event" => "Rediger en hendelse", +"Title" => "Tittel", +"Title of the Event" => "Hendelsestittel", +"Location" => "Sted", +"Location of the Event" => "Hendelsessted", +"Category" => "Kategori", +"All Day Event" => "Hele dagen-hendelse", +"From" => "Fra", +"To" => "Til", +"Repeat" => "Gjenta", +"Attendees" => "Deltakere", +"Description of the Event" => "Hendelesebeskrivelse", +"Close" => "Lukk", +"Create a new event" => "Opprett en ny hendelse", +"Timezone" => "Tidssone" +); diff --git a/apps/calendar/l10n/nl.php b/apps/calendar/l10n/nl.php new file mode 100644 index 0000000000000000000000000000000000000000..3f7ebfe274e3eddd9d10dd8eb7e4f8b0d13f3054 --- /dev/null +++ b/apps/calendar/l10n/nl.php @@ -0,0 +1,83 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "Foute aanvraag", +"Timezone changed" => "U kunt maar een venster tegelijk openen.", +"Invalid request" => "Ongeldige aanvraag", +"Calendar" => "Weergavenaam", +"Does not repeat" => "Wordt niet herhaald", +"Daily" => "Dagelijks", +"Weekly" => "Wekelijks", +"Every Weekday" => "Elke weekdag", +"Bi-Weekly" => "Tweewekelijks", +"Monthly" => "Maandelijks", +"Yearly" => "Jaarlijks", +"All day" => "Tweewekelijks", +"Sunday" => "Zondag", +"Monday" => "Maandag", +"Tuesday" => "Dinsdag", +"Wednesday" => "Woensdag", +"Thursday" => "Donderdag", +"Friday" => "Vrijdag", +"Saturday" => "Zaterdag", +"Sun." => "Zo", +"Mon." => "Ma", +"Tue." => "Di", +"Wed." => "Wo", +"Thu." => "Do", +"Fri." => "Vr", +"Sat." => "Za", +"January" => "Januari", +"February" => "Februari", +"March" => "Maart", +"April" => "April", +"May" => "Mei", +"June" => "Juni", +"July" => "Juli", +"August" => "Augustus", +"September" => "September", +"October" => "Oktober", +"November" => "November", +"December" => "December", +"Jan." => "Jan", +"Feb." => "Feb", +"Mar." => "Maa", +"Apr." => "Apr", +"Jun." => "Jun", +"Jul." => "Jul", +"Aug." => "Aug", +"Sep." => "Sept", +"Oct." => "Okt", +"Nov." => "Nov", +"Dec." => "Dec", +"Week" => "Week", +"Weeks" => "Weken", +"Day" => "Dag", +"Month" => "Maand", +"Today" => "Vandaag", +"Calendars" => "Kalenders", +"Time" => "Tijd", +"There was a fail, while parsing the file." => "Er is een fout opgetreden bij het verwerken van het bestand.", +"Choose active calendars" => "Kies actieve kalenders", +"Download" => "Download", +"Edit" => "Bewerken", +"Edit calendar" => "Bewerk kalender", +"Displayname" => "Weergavenaam", +"Active" => "Actief", +"Description" => "Beschrijving", +"Calendar color" => "Kalender kleur", +"Submit" => "Opslaan", +"Edit an event" => "Bewerken een evenement", +"Title" => "Titel", +"Title of the Event" => "Titel van het evenement", +"Location" => "Locatie", +"Location of the Event" => "Locatie van het evenement", +"Category" => "Categorie", +"All Day Event" => "Hele dag", +"From" => "Van", +"To" => "Aan", +"Repeat" => "Herhalen", +"Attendees" => "Deelnemers", +"Description of the Event" => "Beschrijving van het evenement", +"Close" => "Sluiten", +"Create a new event" => "Maak een nieuw evenement", +"Timezone" => "Tijdzone" +); diff --git a/apps/calendar/l10n/pl.php b/apps/calendar/l10n/pl.php new file mode 100644 index 0000000000000000000000000000000000000000..2201cc397abdd0d02de18ee590034a70d44aeec2 --- /dev/null +++ b/apps/calendar/l10n/pl.php @@ -0,0 +1,110 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "BÅ‚Ä…d uwierzytelniania", +"Wrong calendar" => "ZÅ‚y kalendarz", +"Timezone changed" => "Strefa czasowa zostaÅ‚a zmieniona", +"Invalid request" => "NieprawidÅ‚owe żądanie", +"Calendar" => "Kalendarz", +"Birthday" => "Urodziny", +"Business" => "Interes", +"Call" => "Rozmowa", +"Clients" => "Klienci", +"Deliverer" => "PrzesyÅ‚ka", +"Holidays" => "ÅšwiÄ™ta", +"Ideas" => "PomysÅ‚y", +"Journey" => "Podróż", +"Jubilee" => "Jubileusz", +"Meeting" => "Spotkanie", +"Other" => "Inne", +"Personal" => "Osobisty", +"Projects" => "Projekty", +"Questions" => "Pytania", +"Work" => "Praca", +"Does not repeat" => "Nie powtarza siÄ™", +"Daily" => "Codziennie", +"Weekly" => "Tygodniowo", +"Every Weekday" => "Każdy dzieÅ„ tygodnia", +"Bi-Weekly" => "Dwa razy w tygodniu", +"Monthly" => "MiesiÄ™cznie", +"Yearly" => "Rocznie", +"Not an array" => "Nie ma w tablicy", +"All day" => "CaÅ‚y dzieÅ„", +"Sunday" => "Niedziela", +"Monday" => "PoniedziaÅ‚ek", +"Tuesday" => "Wtorek", +"Wednesday" => "Åšroda", +"Thursday" => "Czwartek", +"Friday" => "PiÄ…tek", +"Saturday" => "Sobota", +"Sun." => "Nie.", +"Mon." => "Po.", +"Tue." => "Wt.", +"Wed." => "Åšr.", +"Thu." => "Cz..", +"Fri." => "PiÄ….", +"Sat." => "So.", +"January" => "StyczeÅ„", +"February" => "Luty", +"March" => "Marzec", +"April" => "KwiecieÅ„", +"May" => "Maj", +"June" => "Czerwiec", +"July" => "Lipiec", +"August" => "SierpieÅ„", +"September" => "WrzesieÅ„", +"October" => "Październik", +"November" => "Listopad", +"December" => "GrudzieÅ„", +"Jan." => "Sty.", +"Feb." => "Lut.", +"Mar." => "Mar.", +"Apr." => "Kwi.", +"May." => "Może.", +"Jun." => "Cze.", +"Jul." => "Lip.", +"Aug." => "Sie.", +"Sep." => "Wrz.", +"Oct." => "Paź.", +"Nov." => "Lis.", +"Dec." => "Gru.", +"Week" => "TydzieÅ„", +"Weeks" => "Tygodnie", +"More before {startdate}" => "WiÄ™cej przed {startdate}", +"More after {enddate}" => "WiÄ™cej po {enddate}", +"Day" => "DzieÅ„", +"Month" => "MiesiÄ…c", +"List" => "Lista", +"Today" => "Dzisiaj", +"Calendars" => "Kalendarze", +"Time" => "Czas", +"There was a fail, while parsing the file." => "NastÄ…piÅ‚ problem przy parsowaniu pliku..", +"Choose active calendars" => "Wybierz aktywne kalendarze", +"New Calendar" => "Nowy kalendarz", +"CalDav Link" => "Link do CalDAV", +"Download" => "Pobierz", +"Edit" => "Edytuj", +"New calendar" => "Nowy kalendarz", +"Edit calendar" => "Edycja kalendarza", +"Displayname" => "Displayname", +"Active" => "Aktywny", +"Description" => "Opis", +"Calendar color" => "Kalendarz kolor", +"Save" => "Zapisz", +"Submit" => "PrzeÅ›lij", +"Cancel" => "Anuluj", +"Edit an event" => "Edycja zdarzenia", +"Title" => "TytuÅ‚", +"Title of the Event" => "TytuÅ‚ zdarzenia", +"Location" => "Lokalizacja", +"Location of the Event" => "Lokalizacja zdarzenia", +"Category" => "Kategoria", +"Select category" => "Wybierz kategoriÄ™", +"All Day Event" => "CaÅ‚odniowe wydarzenie", +"From" => "Z", +"To" => "Do", +"Repeat" => "Powtórz", +"Attendees" => "Uczestnicy", +"Description of the Event" => "Opis zdarzenia", +"Close" => "Zamknij", +"Create a new event" => "Stwórz nowe wydarzenie", +"Timezone" => "Strefa czasowa" +); diff --git a/apps/calendar/l10n/pt_BR.php b/apps/calendar/l10n/pt_BR.php new file mode 100644 index 0000000000000000000000000000000000000000..91db52104389a6c39e02b1d0ecbc31f2fb751ff7 --- /dev/null +++ b/apps/calendar/l10n/pt_BR.php @@ -0,0 +1,83 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "Erro de autenticação", +"Timezone changed" => "Fuso horário alterado", +"Invalid request" => "Pedido inválido", +"Calendar" => "Calendário", +"Does not repeat" => "Não repetir", +"Daily" => "Diariamente", +"Weekly" => "Semanal", +"Every Weekday" => "Cada dia da semana", +"Bi-Weekly" => "De duas em duas semanas", +"Monthly" => "Mensal", +"Yearly" => "Anual", +"All day" => "Todo o dia", +"Sunday" => "Domingo", +"Monday" => "Segunda-feira", +"Tuesday" => "Terça-feira", +"Wednesday" => "Quarta-feira", +"Thursday" => "Quinta-feira", +"Friday" => "Sexta-feira", +"Saturday" => "Sábado", +"Sun." => "Dom.", +"Mon." => "Seg.", +"Tue." => "Ter.", +"Wed." => "Qua.", +"Thu." => "Qui.", +"Fri." => "Sex.", +"Sat." => "Sáb.", +"January" => "Janeiro", +"February" => "Fevereiro", +"March" => "Março", +"April" => "Abril", +"May" => "Maio", +"June" => "Junho", +"July" => "Julho", +"August" => "Agosto", +"September" => "Setembro", +"October" => "Outubro", +"November" => "Novembro", +"December" => "Dezembro", +"Jan." => "Jan.", +"Feb." => "Fev.", +"Mar." => "Mar.", +"Apr." => "Abr.", +"Jun." => "Jun.", +"Jul." => "Jul.", +"Aug." => "Ago.", +"Sep." => "Set.", +"Oct." => "Out.", +"Nov." => "Nov.", +"Dec." => "Dez.", +"Week" => "Semana", +"Weeks" => "Semanas", +"Day" => "Dia", +"Month" => "Mês", +"Today" => "Hoje", +"Calendars" => "Calendários", +"Time" => "Tempo", +"There was a fail, while parsing the file." => "Houve uma falha, ao analisar o arquivo.", +"Choose active calendars" => "Escolha calendários ativos", +"Download" => "Baixar", +"Edit" => "Editar", +"Edit calendar" => "Editar calendário", +"Displayname" => "Mostrar Nome", +"Active" => "Ativo", +"Description" => "Descrição", +"Calendar color" => "Cor do Calendário", +"Submit" => "Submeter", +"Edit an event" => "Editar um evento", +"Title" => "TÃtulo", +"Title of the Event" => "TÃtulo do evento", +"Location" => "Local", +"Location of the Event" => "Local do evento", +"Category" => "Categoria", +"All Day Event" => "Evento de dia inteiro", +"From" => "De", +"To" => "Para", +"Repeat" => "Repetir", +"Attendees" => "Participantes", +"Description of the Event" => "Descrição do Evento", +"Close" => "Fechar", +"Create a new event" => "Criar um novo evento", +"Timezone" => "Fuso horário" +); diff --git a/apps/calendar/l10n/ro.php b/apps/calendar/l10n/ro.php new file mode 100644 index 0000000000000000000000000000000000000000..75e8a715ea01dd3efbd924eeaa78736dd4fd87d3 --- /dev/null +++ b/apps/calendar/l10n/ro.php @@ -0,0 +1,83 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "Eroare de autentificare", +"Timezone changed" => "A fost schimbat fusul orar", +"Invalid request" => "Cerere eronată", +"Calendar" => "Calendar", +"Does not repeat" => "Nu se repetă", +"Daily" => "Zilnic", +"Weekly" => "Săptămânal", +"Every Weekday" => "ÃŽn fiecare săptămână", +"Bi-Weekly" => "Din două în două săptămâni", +"Monthly" => "Lunar", +"Yearly" => "Anual", +"All day" => "Toată ziua", +"Sunday" => "Duminică", +"Monday" => "Luni", +"Tuesday" => "MarÈ›i", +"Wednesday" => "Miercuri", +"Thursday" => "Joi", +"Friday" => "Vineri", +"Saturday" => "Sâmbătă", +"Sun." => "Dum.", +"Mon." => "Lun.", +"Tue." => "Mar.", +"Wed." => "Mie.", +"Thu." => "Joi.", +"Fri." => "Vin.", +"Sat." => "Sâm.", +"January" => "Ianuarie", +"February" => "Februarie", +"March" => "Martie", +"April" => "Aprilie", +"May" => "Mai", +"June" => "Iunie", +"July" => "Iulie", +"August" => "August", +"September" => "Septembrie", +"October" => "Octombrie", +"November" => "Noiembrie", +"December" => "Decembrie", +"Jan." => "Ian.", +"Feb." => "Feb.", +"Mar." => "Mar.", +"Apr." => "Apr.", +"Jun." => "Iun.", +"Jul." => "Iul.", +"Aug." => "Aug.", +"Sep." => "Sep.", +"Oct." => "Oct.", +"Nov." => "Nov.", +"Dec." => "Dec.", +"Week" => "Săptămâna", +"Weeks" => "Săptămâni", +"Day" => "Zi", +"Month" => "Luna", +"Today" => "Astăzi", +"Calendars" => "Calendare", +"Time" => "Ora", +"There was a fail, while parsing the file." => "A fost întâmpinată o eroare în procesarea fiÈ™ierului", +"Choose active calendars" => "Alege activitățile din calendar", +"Download" => "Descarcă", +"Edit" => "Modifică", +"Edit calendar" => "Modifcă acest calendar", +"Displayname" => "Nume", +"Active" => "Activ", +"Description" => "Descriere", +"Calendar color" => "Culoare calendar", +"Submit" => "Trimite", +"Edit an event" => "Modifică un eveniment", +"Title" => "Titlu", +"Title of the Event" => "Numele evenimentului", +"Location" => "Localizare", +"Location of the Event" => "Localizarea evenimentului", +"Category" => "Categorie", +"All Day Event" => "Toată ziua", +"From" => "De la", +"To" => "Către", +"Repeat" => "Repetă", +"Attendees" => "ParticipanÈ›i", +"Description of the Event" => "Descrierea evenimentului", +"Close" => "ÃŽnchide", +"Create a new event" => "Crează un evenimetn nou", +"Timezone" => "Fus orar" +); diff --git a/apps/calendar/l10n/ru.php b/apps/calendar/l10n/ru.php new file mode 100644 index 0000000000000000000000000000000000000000..170344dca8e8bbd806b23f7cd45a2b668ab82f2d --- /dev/null +++ b/apps/calendar/l10n/ru.php @@ -0,0 +1,110 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "Ошибка аутентификации", +"Wrong calendar" => "Ðеверный календарь", +"Timezone changed" => "ЧаÑовой поÑÑ Ð¸Ð·Ð¼ÐµÐ½Ñ‘Ð½", +"Invalid request" => "Ðеверный запроÑ", +"Calendar" => "Календарь", +"Birthday" => "День рождениÑ", +"Business" => "БизнеÑ", +"Call" => "Звонить", +"Clients" => "Клиенты", +"Deliverer" => "ДоÑтавщик", +"Holidays" => "Праздники", +"Ideas" => "Идеи", +"Journey" => "Поездка", +"Jubilee" => "Юбилей", +"Meeting" => "Ð’Ñтреча", +"Other" => "Другое", +"Personal" => "Личное", +"Projects" => "Проекты", +"Questions" => "ВопроÑÑ‹", +"Work" => "Работа", +"Does not repeat" => "Ðе повторÑетÑÑ", +"Daily" => "Ежедневно", +"Weekly" => "Еженедельно", +"Every Weekday" => "По буднÑм", +"Bi-Weekly" => "Каждые две недели", +"Monthly" => "Каждый меÑÑц", +"Yearly" => "Каждый год", +"Not an array" => "Ðе маÑÑив", +"All day" => "ВеÑÑŒ день", +"Sunday" => "ВоÑкреÑенье", +"Monday" => "Понедельник", +"Tuesday" => "Вторник", +"Wednesday" => "Среда", +"Thursday" => "Четверг", +"Friday" => "ПÑтница", +"Saturday" => "Суббота", +"Sun." => "Ð’Ñ.", +"Mon." => "Пн.", +"Tue." => "Ð’Ñ‚.", +"Wed." => "Ср.", +"Thu." => "Чт.", +"Fri." => "Пт.", +"Sat." => "Сб.", +"January" => "Январь", +"February" => "Февраль", +"March" => "Март", +"April" => "Ðпрель", +"May" => "Май", +"June" => "Июнь", +"July" => "Июль", +"August" => "ÐвгуÑÑ‚", +"September" => "СентÑбрь", +"October" => "ОктÑбрь", +"November" => "ÐоÑбрь", +"December" => "Декабрь", +"Jan." => "Янв.", +"Feb." => "Фев.", +"Mar." => "Мар.", +"Apr." => "Ðпр.", +"May." => "Май.", +"Jun." => "Июн.", +"Jul." => "Июл.", +"Aug." => "Ðвг.", +"Sep." => "Сен.", +"Oct." => "Окт.", +"Nov." => "ÐоÑ.", +"Dec." => "Дек.", +"Week" => "ÐеделÑ", +"Weeks" => "Ðедели", +"More before {startdate}" => "Еще до {startdate}", +"More after {enddate}" => "Больше поÑле {startdate}", +"Day" => "День", +"Month" => "МеÑÑц", +"List" => "СпиÑок", +"Today" => "СегоднÑ", +"Calendars" => "Календари", +"Time" => "ВремÑ", +"There was a fail, while parsing the file." => "Ðе удалоÑÑŒ обработать файл.", +"Choose active calendars" => "Выберите активные календари", +"New Calendar" => "Ðовый Календарь", +"CalDav Link" => "СÑылка Ð´Ð»Ñ CalDav", +"Download" => "Скачать", +"Edit" => "Редактировать", +"New calendar" => "Ðовый календарь", +"Edit calendar" => "Редактировать календарь", +"Displayname" => "Отображаемое имÑ", +"Active" => "Ðктивен", +"Description" => "ОпиÑание", +"Calendar color" => "Цвет календарÑ", +"Save" => "Сохранить", +"Submit" => "Отправить", +"Cancel" => "Отмена", +"Edit an event" => "Редактировать Ñобытие", +"Title" => "Ðазвание", +"Title of the Event" => "Ðазвание Ñобытие", +"Location" => "МеÑто", +"Location of the Event" => "МеÑто ÑобытиÑ", +"Category" => "КатегориÑ", +"Select category" => "Выбрать категорию", +"All Day Event" => "Событие на веÑÑŒ день", +"From" => "От", +"To" => "До", +"Repeat" => "Повтор", +"Attendees" => "ПриÑутÑтвующие", +"Description of the Event" => "ОпиÑание ÑобытиÑ", +"Close" => "Закрыть", +"Create a new event" => "Создать новое Ñобытие", +"Timezone" => "ЧаÑовой поÑÑ" +); diff --git a/apps/calendar/l10n/sr.php b/apps/calendar/l10n/sr.php new file mode 100644 index 0000000000000000000000000000000000000000..67027204953a3f608e5f41c652e5861f120beb31 --- /dev/null +++ b/apps/calendar/l10n/sr.php @@ -0,0 +1,83 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "Грешка аутентификације", +"Timezone changed" => "ВременÑка зона је промењена", +"Invalid request" => "ÐеиÑправан захтев", +"Calendar" => "Календар", +"Does not repeat" => "Ðе понавља Ñе", +"Daily" => "дневно", +"Weekly" => "недељно", +"Every Weekday" => "Ñваког дана у недељи", +"Bi-Weekly" => "двонедељно", +"Monthly" => "меÑечно", +"Yearly" => "годишње", +"All day" => "Цео дан", +"Sunday" => "Ðедеља", +"Monday" => "Понедељак", +"Tuesday" => "Уторак", +"Wednesday" => "Среда", +"Thursday" => "Четвртак", +"Friday" => "Петак", +"Saturday" => "Субота", +"Sun." => "Ðед", +"Mon." => "Пон", +"Tue." => "Уто", +"Wed." => "Сре", +"Thu." => "Чет", +"Fri." => "Пет", +"Sat." => "Суб", +"January" => "Јануар", +"February" => "Фебруар", +"March" => "Март", +"April" => "Ðприл", +"May" => "Мај", +"June" => "Јун", +"July" => "Јул", +"August" => "ÐвгуÑÑ‚", +"September" => "Септембар", +"October" => "Октобар", +"November" => "Ðовембар", +"December" => "Децембар", +"Jan." => "Јан", +"Feb." => "Феб", +"Mar." => "Мар", +"Apr." => "Ðпр", +"Jun." => "Јун", +"Jul." => "Јул", +"Aug." => "Ðвг", +"Sep." => "Сеп", +"Oct." => "Окт", +"Nov." => "Ðов", +"Dec." => "Дец", +"Week" => "Ðедеља", +"Weeks" => "Ðедеља", +"Day" => "Дан", +"Month" => "МеÑец", +"Today" => "ДанаÑ", +"Calendars" => "Календари", +"Time" => "Време", +"There was a fail, while parsing the file." => "дошло је до грешке при раÑчлањивању фајла.", +"Choose active calendars" => "Изаберите активне календаре", +"Download" => "Преузми", +"Edit" => "Уреди", +"Edit calendar" => "Уреди календар", +"Displayname" => "Приказаноиме", +"Active" => "Ðктиван", +"Description" => "ОпиÑ", +"Calendar color" => "Боја календара", +"Submit" => "Пошаљи", +"Edit an event" => "Уреди догађај", +"Title" => "ÐаÑлов", +"Title of the Event" => "ÐаÑлов догађаја", +"Location" => "Локација", +"Location of the Event" => "Локација догађаја", +"Category" => "Категорија", +"All Day Event" => "Целодневни догађај", +"From" => "Од", +"To" => "До", +"Repeat" => "Понављај", +"Attendees" => "ПриÑутни", +"Description of the Event" => "ÐžÐ¿Ð¸Ñ Ð´Ð¾Ð³Ð°Ñ’Ð°Ñ˜Ð°", +"Close" => "Затвори", +"Create a new event" => "Ðаправи нови догађај", +"Timezone" => "ВременÑка зона" +); diff --git a/apps/calendar/l10n/sr@latin.php b/apps/calendar/l10n/sr@latin.php new file mode 100644 index 0000000000000000000000000000000000000000..55df4e21ba8e44690af43116dc307012a9873c6b --- /dev/null +++ b/apps/calendar/l10n/sr@latin.php @@ -0,0 +1,83 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "GreÅ¡ka autentifikacije", +"Timezone changed" => "Vremenska zona je promenjena", +"Invalid request" => "Neispravan zahtev", +"Calendar" => "Kalendar", +"Does not repeat" => "Ne ponavlja se", +"Daily" => "dnevno", +"Weekly" => "nedeljno", +"Every Weekday" => "svakog dana u nedelji", +"Bi-Weekly" => "dvonedeljno", +"Monthly" => "meseÄno", +"Yearly" => "godiÅ¡nje", +"All day" => "Ceo dan", +"Sunday" => "Nedelja", +"Monday" => "Ponedeljak", +"Tuesday" => "Utorak", +"Wednesday" => "Sreda", +"Thursday" => "ÄŒetvrtak", +"Friday" => "Petak", +"Saturday" => "Subota", +"Sun." => "Ned", +"Mon." => "Pon", +"Tue." => "Uto", +"Wed." => "Sre", +"Thu." => "ÄŒet", +"Fri." => "Pet", +"Sat." => "Sub", +"January" => "Januar", +"February" => "Februar", +"March" => "Mart", +"April" => "April", +"May" => "Maj", +"June" => "Jun", +"July" => "Jul", +"August" => "Avgust", +"September" => "Septembar", +"October" => "Oktobar", +"November" => "Novembar", +"December" => "Decembar", +"Jan." => "Jan", +"Feb." => "Feb", +"Mar." => "Mar", +"Apr." => "Apr", +"Jun." => "Jun", +"Jul." => "Jul", +"Aug." => "Avg", +"Sep." => "Sep", +"Oct." => "Okt", +"Nov." => "Nov", +"Dec." => "Dec", +"Week" => "Nedelja", +"Weeks" => "Nedelja", +"Day" => "Dan", +"Month" => "Mesec", +"Today" => "Danas", +"Calendars" => "Kalendari", +"Time" => "Vreme", +"There was a fail, while parsing the file." => "doÅ¡lo je do greÅ¡ke pri rasÄlanjivanju fajla.", +"Choose active calendars" => "Izaberite aktivne kalendare", +"Download" => "Preuzmi", +"Edit" => "Uredi", +"Edit calendar" => "Uredi kalendar", +"Displayname" => "Prikazanoime", +"Active" => "Aktivan", +"Description" => "Opis", +"Calendar color" => "Boja kalendara", +"Submit" => "PoÅ¡alji", +"Edit an event" => "Uredi dogaÄ‘aj", +"Title" => "Naslov", +"Title of the Event" => "Naslov dogaÄ‘aja", +"Location" => "Lokacija", +"Location of the Event" => "Lokacija dogaÄ‘aja", +"Category" => "Kategorija", +"All Day Event" => "Celodnevni dogaÄ‘aj", +"From" => "Od", +"To" => "Do", +"Repeat" => "Ponavljaj", +"Attendees" => "Prisutni", +"Description of the Event" => "Opis dogaÄ‘aja", +"Close" => "Zatvori", +"Create a new event" => "Napravi novi dogaÄ‘aj", +"Timezone" => "Vremenska zona" +); diff --git a/apps/calendar/l10n/zh_CN.php b/apps/calendar/l10n/zh_CN.php new file mode 100644 index 0000000000000000000000000000000000000000..2b7dc5677a4df36b3beea1ff4a3196a9aaf26a24 --- /dev/null +++ b/apps/calendar/l10n/zh_CN.php @@ -0,0 +1,83 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "验è¯é”™è¯¯", +"Timezone changed" => "时区已修改", +"Invalid request" => "éžæ³•è¯·æ±‚", +"Calendar" => "日历", +"Does not repeat" => "ä¸é‡å¤", +"Daily" => "æ¯å¤©", +"Weekly" => "æ¯å‘¨", +"Every Weekday" => "æ¯ä¸ªå·¥ä½œæ—¥", +"Bi-Weekly" => "æ¯ä¸¤å‘¨", +"Monthly" => "æ¯æœˆ", +"Yearly" => "æ¯å¹´", +"All day" => "全天", +"Sunday" => "星期日", +"Monday" => "星期一", +"Tuesday" => "星期二", +"Wednesday" => "星期三", +"Thursday" => "星期四", +"Friday" => "星期五", +"Saturday" => "星期å…", +"Sun." => "æ—¥", +"Mon." => "一", +"Tue." => "二", +"Wed." => "三", +"Thu." => "å››", +"Fri." => "五", +"Sat." => "å…", +"January" => "1月", +"February" => "2月", +"March" => "3月", +"April" => "4月", +"May" => "5月", +"June" => "6月", +"July" => "7月", +"August" => "8月", +"September" => "9月", +"October" => "10月", +"November" => "11月", +"December" => "12月", +"Jan." => "1月", +"Feb." => "2月", +"Mar." => "3月", +"Apr." => "4月", +"Jun." => "6月", +"Jul." => "7月", +"Aug." => "8月", +"Sep." => "9月", +"Oct." => "10月", +"Nov." => "11月", +"Dec." => "12月", +"Week" => "星期", +"Weeks" => "星期", +"Day" => "天", +"Month" => "月", +"Today" => "今天", +"Calendars" => "日历", +"Time" => "时间", +"There was a fail, while parsing the file." => "解æžæ–‡ä»¶å¤±è´¥", +"Choose active calendars" => "选择活动日历", +"Download" => "下载", +"Edit" => "编辑", +"Edit calendar" => "编辑日历", +"Displayname" => "显示å称", +"Active" => "激活", +"Description" => "æè¿°", +"Calendar color" => "日历颜色", +"Submit" => "æ交", +"Edit an event" => "编辑事件", +"Title" => "æ ‡é¢˜", +"Title of the Event" => "äº‹ä»¶æ ‡é¢˜", +"Location" => "地点", +"Location of the Event" => "事件地点", +"Category" => "分类", +"All Day Event" => "全天事件", +"From" => "自", +"To" => "至", +"Repeat" => "é‡å¤", +"Attendees" => "å‚åŠ è€…", +"Description of the Event" => "事件æè¿°", +"Close" => "å…³é—", +"Create a new event" => "创建新事件", +"Timezone" => "时区" +); diff --git a/apps/calendar/lib/calendar.php b/apps/calendar/lib/calendar.php index 571e3d695eb08c9b1049b01ec2e3f77b1e271ac0..959cb14bf8f194ed3093f500777b69c73623d6d1 100644 --- a/apps/calendar/lib/calendar.php +++ b/apps/calendar/lib/calendar.php @@ -1,23 +1,9 @@ <?php /** - * ownCloud - Calendar - * - * @author Jakob Sack - * @copyright 2011 Jakob Sack mail@jakobsack.de - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * + * Copyright (c) 2011 Jakob Sack <mail@jakobsack.de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. */ /* * @@ -44,7 +30,6 @@ * uri VARCHAR(100), * active INTEGER UNSIGNED NOT NULL DEFAULT '0', * ctag INTEGER UNSIGNED NOT NULL DEFAULT '0', - * description TEXT, * calendarorder INTEGER UNSIGNED NOT NULL DEFAULT '0', * calendarcolor VARCHAR(10), * timezone TEXT, @@ -108,14 +93,13 @@ class OC_Calendar_Calendar{ * @brief Creates a new calendar * @param string $userid * @param string $name - * @param string $description * @param string $components Default: "VEVENT,VTODO,VJOURNAL" * @param string $timezone Default: null * @param integer $order Default: 1 * @param string $color Default: null * @return insertid */ - public static function addCalendar($userid,$name,$description,$components='VEVENT,VTODO,VJOURNAL',$timezone=null,$order=0,$color=null){ + public static function addCalendar($userid,$name,$components='VEVENT,VTODO,VJOURNAL',$timezone=null,$order=0,$color=null){ $all = self::allCalendars($userid); $uris = array(); foreach($all as $i){ @@ -124,8 +108,8 @@ class OC_Calendar_Calendar{ $uri = self::createURI($name, $uris ); - $stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*calendar_calendars (userid,displayname,uri,ctag,description,calendarorder,calendarcolor,timezone,components) VALUES(?,?,?,?,?,?,?,?,?)' ); - $result = $stmt->execute(array($userid,$name,$uri,1,$description,$order,$color,$timezone,$components)); + $stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*calendar_calendars (userid,displayname,uri,ctag,calendarorder,calendarcolor,timezone,components) VALUES(?,?,?,?,?,?,?,?)' ); + $result = $stmt->execute(array($userid,$name,$uri,1,$order,$color,$timezone,$components)); return OC_DB::insertid(); } @@ -135,18 +119,17 @@ class OC_Calendar_Calendar{ * @param string $principaluri * @param string $uri * @param string $name - * @param string $description * @param string $components * @param string $timezone * @param integer $order * @param string $color * @return insertid */ - public static function addCalendarFromDAVData($principaluri,$uri,$name,$description,$components,$timezone,$order,$color){ + public static function addCalendarFromDAVData($principaluri,$uri,$name,$components,$timezone,$order,$color){ $userid = self::extractUserID($principaluri); - $stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*calendar_calendars (userid,displayname,uri,ctag,description,calendarorder,calendarcolor,timezone,components) VALUES(?,?,?,?,?,?,?,?,?)' ); - $result = $stmt->execute(array($userid,$name,$uri,1,$description,$order,$color,$timezone,$components)); + $stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*calendar_calendars (userid,displayname,uri,ctag,calendarorder,calendarcolor,timezone,components) VALUES(?,?,?,?,?,?,?,?)' ); + $result = $stmt->execute(array($userid,$name,$uri,1,$order,$color,$timezone,$components)); return OC_DB::insertid(); } @@ -155,7 +138,6 @@ class OC_Calendar_Calendar{ * @brief Edits a calendar * @param integer $id * @param string $name Default: null - * @param string $description Default: null * @param string $components Default: null * @param string $timezone Default: null * @param integer $order Default: null @@ -164,20 +146,19 @@ class OC_Calendar_Calendar{ * * Values not null will be set */ - public static function editCalendar($id,$name=null,$description=null,$components=null,$timezone=null,$order=null,$color=null){ + public static function editCalendar($id,$name=null,$components=null,$timezone=null,$order=null,$color=null){ // Need these ones for checking uri $calendar = self::findCalendar($id); // Keep old stuff if(is_null($name)) $name = $calendar['name']; - if(is_null($description)) $description = $calendar['description']; if(is_null($components)) $components = $calendar['components']; if(is_null($timezone)) $timezone = $calendar['timezone']; if(is_null($order)) $order = $calendar['calendarorder']; if(is_null($color)) $color = $calendar['color']; - $stmt = OC_DB::prepare( 'UPDATE *PREFIX*calendar_calendars SET displayname=?,description=?,calendarorder=?,calendarcolor=?,timezone=?,components=?,ctag=ctag+1 WHERE id=?' ); - $result = $stmt->execute(array($name,$description,$order,$color,$timezone,$components,$id)); + $stmt = OC_DB::prepare( 'UPDATE *PREFIX*calendar_calendars SET displayname=?,calendarorder=?,calendarcolor=?,timezone=?,components=?,ctag=ctag+1 WHERE id=?' ); + $result = $stmt->execute(array($name,$order,$color,$timezone,$components,$id)); return true; } diff --git a/apps/calendar/lib/connector_sabre.php b/apps/calendar/lib/connector_sabre.php index b94e6fb3ae79aca7e7108dfc1de41f7d468c51ff..13a542fccad15c3192d3e1f4da45228c114cec0f 100644 --- a/apps/calendar/lib/connector_sabre.php +++ b/apps/calendar/lib/connector_sabre.php @@ -102,13 +102,12 @@ class OC_Connector_Sabre_CalDAV extends Sabre_CalDAV_Backend_Abstract { } if(!isset($newValues['displayname'])) $newValues['displayname'] = 'unnamed'; - if(!isset($newValues['description'])) $newValues['description'] = ''; if(!isset($newValues['components'])) $newValues['components'] = 'VEVENT,VTODO'; if(!isset($newValues['timezone'])) $newValues['timezone'] = null; if(!isset($newValues['calendarorder'])) $newValues['calendarorder'] = 0; if(!isset($newValues['calendarcolor'])) $newValues['calendarcolor'] = null; - return OC_Calendar_Calendar::addCalendarFromDAVData($principalUri,$calendarUri,$newValues['displayname'],$newValues['description'],$newValues['components'],$newValues['timezone'],$newValues['calendarorder'],$newValues['calendarcolor']); + return OC_Calendar_Calendar::addCalendarFromDAVData($principalUri,$calendarUri,$newValues['displayname'],$newValues['components'],$newValues['timezone'],$newValues['calendarorder'],$newValues['calendarcolor']); } /** @@ -191,12 +190,11 @@ class OC_Connector_Sabre_CalDAV extends Sabre_CalDAV_Backend_Abstract { // Success if(!isset($newValues['displayname'])) $newValues['displayname'] = null; - if(!isset($newValues['description'])) $newValues['description'] = null; if(!isset($newValues['timezone'])) $newValues['timezone'] = null; if(!isset($newValues['calendarorder'])) $newValues['calendarorder'] = null; if(!isset($newValues['calendarcolor'])) $newValues['calendarcolor'] = null; - OC_Calendar_Calendar::editCalendar($calendarId,$newValues['displayname'],$newValues['description'],null,$newValues['timezone'],$newValues['calendarorder'],$newValues['calendarcolor']); + OC_Calendar_Calendar::editCalendar($calendarId,$newValues['displayname'],null,$newValues['timezone'],$newValues['calendarorder'],$newValues['calendarcolor']); return true; diff --git a/apps/calendar/lib/hooks.php b/apps/calendar/lib/hooks.php index 5c446102b2288a60a935c39284927e5b98952c82..14f96bb5fe128bfc55f0d9f2bc0df0d0988b99ec 100644 --- a/apps/calendar/lib/hooks.php +++ b/apps/calendar/lib/hooks.php @@ -1,23 +1,9 @@ <?php /** - * ownCloud - Addressbook - * - * @author Jakob Sack - * @copyright 2011 Jakob Sack mail@jakobsack.de - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * + * Copyright (c) 2011 Jakob Sack <mail@jakobsack.de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. */ /** @@ -29,7 +15,7 @@ class OC_Calendar_Hooks{ * @param paramters parameters from postDeleteUser-Hook * @return array */ - public function deleteUser($parameters) { + public static function deleteUser($parameters) { $calendars = OC_Calendar_Calendar::allCalendars($parameters['uid']); foreach($calendars as $calendar) { diff --git a/apps/calendar/lib/object.php b/apps/calendar/lib/object.php index 52fa391f1f8b2bce40c0db0c1c4e5c558c0abc51..0c3e497d4f2e71d3bbc110b5ddaac59365a6b3d8 100644 --- a/apps/calendar/lib/object.php +++ b/apps/calendar/lib/object.php @@ -1,27 +1,13 @@ <?php /** - * ownCloud - Calendar - * - * @author Jakob Sack - * @copyright 2011 Jakob Sack mail@jakobsack.de - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * + * Copyright (c) 2011 Jakob Sack <mail@jakobsack.de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. */ /** - * This class manages our calendars + * This class manages our calendar objects */ class OC_Calendar_Object{ /** @@ -129,7 +115,7 @@ class OC_Calendar_Object{ $stmt = OC_DB::prepare( 'UPDATE *PREFIX*calendar_objects SET objecttype=?,startdate=?,enddate=?,repeating=?,summary=?,calendardata=?, lastmodified = ? WHERE id = ?' ); $result = $stmt->execute(array($type,$startdate,$enddate,$repeating,$summary,$data,time(),$id)); - OC_Calendar_Calendar::touchCalendar($id); + OC_Calendar_Calendar::touchCalendar($oldobject['calendarid']); return true; } @@ -161,8 +147,10 @@ class OC_Calendar_Object{ * @return boolean */ public static function delete($id){ + $oldobject = self::find($id); $stmt = OC_DB::prepare( 'DELETE FROM *PREFIX*calendar_objects WHERE id = ?' ); $stmt->execute(array($id)); + OC_Calendar_Calendar::touchCalendar($oldobject['calendarid']); return true; } @@ -298,10 +286,33 @@ class OC_Calendar_Object{ } } + public static function getDTEndFromVEvent($vevent) + { + if ($vevent->DTEND) { + $dtend = $vevent->DTEND; + }else{ + $dtend = clone $vevent->DTSTART; + if ($vevent->DURATION){ + $duration = strval($vevent->DURATION); + $invert = 0; + if ($duration[0] == '-'){ + $duration = substr($duration, 1); + $invert = 1; + } + if ($duration[0] == '+'){ + $duration = substr($duration, 1); + } + $interval = new DateInterval($duration); + $interval->invert = $invert; + $dtend->getDateTime()->add($interval); + } + } + return $dtend; + } + public static function getCategoryOptions($l10n) { return array( - $l10n->t('None'), $l10n->t('Birthday'), $l10n->t('Business'), $l10n->t('Call'), @@ -345,6 +356,11 @@ class OC_Calendar_Object{ $errarr['cal'] = 'true'; $errnum++; } + + if(isset($request['categories']) && !is_array($request['categories'])){ + $errors['categories'] = $l10n->t('Not an array'); + } + $fromday = substr($request['from'], 0, 2); $frommonth = substr($request['from'], 3, 2); $fromyear = substr($request['from'], 6, 4); @@ -434,7 +450,7 @@ class OC_Calendar_Object{ { $title = $request["title"]; $location = $request["location"]; - $cat = $request["category"]; + $categories = isset($request["categories"]) ? $request["categories"] : null; $allday = isset($request["allday"]); $from = $request["from"]; $fromtime = $request["fromtime"]; @@ -490,18 +506,24 @@ class OC_Calendar_Object{ } $vevent->DTSTART = $dtstart; $vevent->DTEND = $dtend; + unset($vevent->DURATION); if($location != ""){ $vevent->LOCATION = $location; + }else{ + unset($vevent->LOCATION); } if($description != ""){ - $des = str_replace("\n","\\n", $description); - $vevent->DESCRIPTION = $des; + $vevent->DESCRIPTION = $description; + }else{ + unset($vevent->DESCRIPTION); } - if($cat != ""){ - $vevent->CATEGORIES = $cat; + if(!empty($categories)){ + $vevent->CATEGORIES = join(',', $categories); + }else{ + unset($vevent->CATEGORIES); } /*if($repeat == "true"){ diff --git a/apps/calendar/settings.php b/apps/calendar/settings.php index 0206432781665e7f4ce95c19e50186d692c1b56c..b592280271685c676b5521cd3f30d64763f66ef5 100644 --- a/apps/calendar/settings.php +++ b/apps/calendar/settings.php @@ -1,17 +1,10 @@ <?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Bart Visscher * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ +/** + * Copyright (c) 2011 Bart Visscher <bartv@thisnet.nl> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ $tmpl = new OC_Template( 'calendar', 'settings'); $timezone=OC_Preferences::getValue(OC_User::getUser(),'calendar','timezone',''); diff --git a/apps/calendar/templates/calendar.php b/apps/calendar/templates/calendar.php index 7635f333336716bc75d4b109cb5e71f79a3adb89..317bb17ddbc881892e1ddd3fd3db0d56b8639b32 100644 --- a/apps/calendar/templates/calendar.php +++ b/apps/calendar/templates/calendar.php @@ -1,42 +1,92 @@ <?php -$hours = array( +$hours24 = array( 'allday' => $l->t('All day'), - 0 => '00:00', - 1 => '01:00', - 2 => '02:00', - 3 => '03:00', - 4 => '04:00', - 5 => '05:00', - 6 => '06:00', - 7 => '07:00', - 8 => '08:00', - 9 => '09:00', - 10 => '10:00', - 11 => '11:00', - 12 => '12:00', - 13 => '13:00', - 14 => '14:00', - 15 => '15:00', - 16 => '16:00', - 17 => '17:00', - 18 => '18:00', - 19 => '19:00', - 20 => '20:00', - 21 => '21:00', - 22 => '22:00', - 23 => '23:00', + 0 => '0', + 1 => '1', + 2 => '2', + 3 => '3', + 4 => '4', + 5 => '5', + 6 => '6', + 7 => '7', + 8 => '8', + 9 => '9', + 10 => '10', + 11 => '11', + 12 => '12', + 13 => '13', + 14 => '14', + 15 => '15', + 16 => '16', + 17 => '17', + 18 => '18', + 19 => '19', + 20 => '20', + 21 => '21', + 22 => '22', + 23 => '23', ); -$weekdays = array('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'); +$hoursampm = array( + 'allday' => $l->t('All day'), + 0 => '12 a.m.', + 1 => '1 a.m.', + 2 => '2 a.m.', + 3 => '3 a.m.', + 4 => '4 a.m.', + 5 => '5 a.m.', + 6 => '6 a.m.', + 7 => '7 a.m.', + 8 => '8 a.m.', + 9 => '9 a.m.', + 10 => '10 a.m.', + 11 => '11 a.m.', + 12 => '12 p.m.', + 13 => '1 p.m.', + 14 => '2 p.m.', + 15 => '3 p.m.', + 16 => '4 p.m.', + 17 => '5 p.m.', + 18 => '6 p.m.', + 19 => '7 p.m.', + 20 => '8 p.m.', + 21 => '9 p.m.', + 22 => '10 p.m.', + 23 => '11 p.m.', +); +if(OC_Preferences::getValue( OC_User::getUser(), 'calendar', 'timeformat', "24") == "24"){ + $hours = $hours24; +}else{ + $hours = $hoursampm; +} +$weekdaynames = array('sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'); +$dayforgenerator = OC_Preferences::getValue( OC_User::getUser(), 'calendar', 'firstdayofweek', "1"); +$weekdays = array(); +for($i = 0;$i <= 6; $i++){ + $weekdays[$i] = $weekdaynames[$dayforgenerator]; + if($dayforgenerator == 6){ + $dayforgenerator = 0; + }else{ + $dayforgenerator++; + } +} +$weekendjson = OC_Preferences::getValue( OC_User::getUser(), 'calendar', 'weekend', '{"Monday":"false","Tuesday":"false","Wednesday":"false","Thursday":"false","Friday":"false","Saturday":"true","Sunday":"true"}'); +$weekend = json_decode($weekendjson, true); +$weekenddays = array("sunday"=>$weekend["Sunday"], "monday"=>$weekend["Monday"], "tuesday"=>$weekend["Tuesday"], "wednesday"=>$weekend["Wednesday"], "thursday"=>$weekend["Thursday"], "friday"=>$weekend["Friday"], "saturday"=>$weekend["Saturday"]); ?> <script type="text/javascript"> + <?php + echo "var weekdays = new Array('".$weekdays[0]."','".$weekdays[1]."','".$weekdays[2]."','".$weekdays[3]."','".$weekdays[4]."','".$weekdays[5]."','".$weekdays[6]."');\n"; + ?> + Calendar.UI.weekdays = weekdays; Calendar.UI.daylong = new Array("<?php echo $l -> t("Sunday");?>", "<?php echo $l -> t("Monday");?>", "<?php echo $l -> t("Tuesday");?>", "<?php echo $l -> t("Wednesday");?>", "<?php echo $l -> t("Thursday");?>", "<?php echo $l -> t("Friday");?>", "<?php echo $l -> t("Saturday");?>"); Calendar.UI.dayshort = new Array("<?php echo $l -> t("Sun.");?>", "<?php echo $l -> t("Mon.");?>", "<?php echo $l -> t("Tue.");?>", "<?php echo $l -> t("Wed.");?>", "<?php echo $l -> t("Thu.");?>", "<?php echo $l -> t("Fri.");?>", "<?php echo $l -> t("Sat.");?>"); Calendar.UI.monthlong = new Array("<?php echo $l -> t("January");?>", "<?php echo $l -> t("February");?>", "<?php echo $l -> t("March");?>", "<?php echo $l -> t("April");?>", "<?php echo $l -> t("May");?>", "<?php echo $l -> t("June");?>", "<?php echo $l -> t("July");?>", "<?php echo $l -> t("August");?>", "<?php echo $l -> t("September");?>", "<?php echo $l -> t("October");?>", "<?php echo $l -> t("November");?>", "<?php echo $l -> t("December");?>"); - Calendar.UI.monthshort = new Array("<?php echo $l -> t("Jan.");?>", "<?php echo $l -> t("Feb.");?>", "<?php echo $l -> t("Mar.");?>", "<?php echo $l -> t("Apr.");?>", "<?php echo $l -> t("May");?>", "<?php echo $l -> t("Jun.");?>", "<?php echo $l -> t("Jul.");?>", "<?php echo $l -> t("Aug.");?>", "<?php echo $l -> t("Sep.");?>", "<?php echo $l -> t("Oct.");?>", "<?php echo $l -> t("Nov.");?>", "<?php echo $l -> t("Dec.");?>"); + Calendar.UI.monthshort = new Array("<?php echo $l -> t("Jan.");?>", "<?php echo $l -> t("Feb.");?>", "<?php echo $l -> t("Mar.");?>", "<?php echo $l -> t("Apr.");?>", "<?php echo $l -> t("May.");?>", "<?php echo $l -> t("Jun.");?>", "<?php echo $l -> t("Jul.");?>", "<?php echo $l -> t("Aug.");?>", "<?php echo $l -> t("Sep.");?>", "<?php echo $l -> t("Oct.");?>", "<?php echo $l -> t("Nov.");?>", "<?php echo $l -> t("Dec.");?>"); Calendar.UI.cw_label = "<?php echo $l->t("Week");?>"; Calendar.UI.cws_label = "<?php echo $l->t("Weeks");?>"; Calendar.UI.more_before = String('<?php echo $l->t('More before {startdate}') ?>'); Calendar.UI.more_after = String('<?php echo $l->t('More after {enddate}') ?>'); + Calendar.firstdayofweek = parseInt("<?php echo OC_Preferences::getValue( OC_User::getUser(), 'calendar', 'firstdayofweek', "1"); ?>"); //use last view as default on the next Calendar.UI.setCurrentView("<?php echo OC_Preferences::getValue(OC_USER::getUser(), "calendar", "currentview", "onemonthview") ?>"); var totalurl = "<?php echo OC_Helper::linkTo('calendar', 'caldav.php', null, true) . '/calendars'; ?>"; @@ -47,10 +97,10 @@ $weekdays = array('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'satur <form> <div id="view"> <!-- <input type="button" value="1 <?php echo $l->t('Day');?>" id="onedayview_radio" onclick="Calendar.UI.setCurrentView('onedayview');"/> --> - <input type="button" value="1 <?php echo $l->t('Week');?>" id="oneweekview_radio" onclick="Calendar.UI.setCurrentView('oneweekview');"/> + <input type="button" value="<?php echo $l->t('Week');?>" id="oneweekview_radio" onclick="Calendar.UI.setCurrentView('oneweekview');"/> <!-- <input type="button" value="4 <?php echo $l->t('Weeks');?>" id="fourweeksview_radio" onclick="Calendar.UI.setCurrentView('fourweeksview');"/> --> - <input type="button" value="1 <?php echo $l->t('Month');?>" id="onemonthview_radio" onclick="Calendar.UI.setCurrentView('onemonthview');"/> - <input type="button" value="<?php echo $l->t("Listview");?>" id="listview_radio" onclick="Calendar.UI.setCurrentView('listview');"/> + <input type="button" value="<?php echo $l->t('Month');?>" id="onemonthview_radio" onclick="Calendar.UI.setCurrentView('onemonthview');"/> + <input type="button" value="<?php echo $l->t('List');?>" id="listview_radio" onclick="Calendar.UI.setCurrentView('listview');"/> </div> </form> <form> @@ -93,7 +143,7 @@ $weekdays = array('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'satur <tr> <th class="calendar_time"><?php echo $l->t("Time");?></th> <?php foreach($weekdays as $weekdaynr => $weekday): ?> - <th class="calendar_row <?php echo $weekday ?> <?php echo $weekdaynr > 4 ? 'weekend_thead' : '' ?>" onclick="Calendar.UI.newEvent('#oneweekview th.<?php echo $weekday ?>');"></th> + <th class="calendar_row <?php echo $weekday ?> <?php echo $weekenddays[$weekday] == "true" ? 'weekend_thead' : '' ?>" onclick="Calendar.UI.newEvent('#oneweekview th.<?php echo $weekday ?>');"></th> <?php endforeach; ?> </tr> </thead> @@ -102,7 +152,7 @@ $weekdays = array('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'satur <tr> <td class="calendar_time"><?php echo $time_label?></td> <?php foreach($weekdays as $weekdaynr => $weekday): ?> - <td class="<?php echo $weekday ?> <?php echo $time ?> calendar_row <?php echo $weekdaynr > 4 ? 'weekend_row' : '' ?>" onclick="Calendar.UI.newEvent('#oneweekview th.<?php echo $weekday ?>', '<?php echo $time ?>');"></td> + <td class="<?php echo $weekday ?> <?php echo $time ?> calendar_row <?php echo $weekenddays[$weekday] == "true" ? 'weekend_row' : '' ?>" onclick="Calendar.UI.newEvent('#oneweekview th.<?php echo $weekday ?>', '<?php echo $time ?>');"></td> <?php endforeach; ?> </tr> <?php endforeach; ?> @@ -139,7 +189,7 @@ $weekdays = array('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'satur <thead> <tr> <?php foreach($weekdays as $weekdaynr => $weekday): ?> - <th class="calendar_row <?php echo $weekdaynr > 4 ? 'weekend_thead' : '' ?> <?php echo $weekday ?>"><?php echo $l->t(ucfirst($weekday));?></th> + <th class="calendar_row <?php echo $weekenddays[$weekday] == "true" ? 'weekend_thead' : '' ?> <?php echo $weekday ?>"><?php echo $l->t(ucfirst($weekday));?></th> <?php endforeach; ?> </tr> </thead> @@ -147,7 +197,7 @@ $weekdays = array('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'satur <?php foreach(range(1, 6) as $week): ?> <tr class="week_<?php echo $week ?>"> <?php foreach($weekdays as $weekdaynr => $weekday): ?> - <td class="day <?php echo $weekday ?> <?php echo $weekdaynr > 4 ? 'weekend' : '' ?>" onclick="Calendar.UI.newEvent('#onemonthview .week_<?php echo $week ?> .<?php echo $weekday ?>')"> + <td class="day <?php echo $weekday ?> <?php echo $weekenddays[$weekday] == "true" ? 'weekend' : '' ?>" onclick="Calendar.UI.newEvent('#onemonthview .week_<?php echo $week ?> .<?php echo $weekday ?>')"> <div class="dateinfo"></div> <div class="events"></div> </td> diff --git a/apps/calendar/templates/part.choosecalendar.php b/apps/calendar/templates/part.choosecalendar.php index 0081fb080632fa2ef6ca8816fa76688c8203b342..65eb39cbfdfc59ce140c31c0f4dcd1c0a5250e5e 100644 --- a/apps/calendar/templates/part.choosecalendar.php +++ b/apps/calendar/templates/part.choosecalendar.php @@ -11,12 +11,12 @@ for($i = 0; $i < count($option_calendars); $i++){ } ?> <tr> - <td colspan="4"> - <a href="#" onclick="Calendar.UI.Calendar.new(this);"><?php echo $l->t('New Calendar') ?></a> + <td colspan="6"> + <a href="#" onclick="Calendar.UI.Calendar.newCalendar(this);"><?php echo $l->t('New Calendar') ?></a> </td> </tr> <tr> - <td colspan="4"> + <td colspan="6"> <p style="margin: 0 auto;width: 90%;"><input style="display:none;width: 90%;float: left;" type="text" id="caldav_url" onmouseover="$('#caldav_url').select();" title="<?php echo $l->t("CalDav Link"); ?>"><img id="caldav_url_close" style="height: 20px;vertical-align: middle;display: none;" src="../../core/img/actions/delete.svg" alt="close" onclick="$('#caldav_url').hide();$('#caldav_url_close').hide();"/></p> </td> </tr> diff --git a/apps/calendar/templates/part.choosecalendar.rowfields.php b/apps/calendar/templates/part.choosecalendar.rowfields.php index 6993ad13c365d6e732bea69958e1a2aed4ec429c..db0c71252bbe90c6df8f0c3c75c707f08efdf21f 100644 --- a/apps/calendar/templates/part.choosecalendar.rowfields.php +++ b/apps/calendar/templates/part.choosecalendar.rowfields.php @@ -1,4 +1,4 @@ <?php echo "<td width=\"20px\"><input id=\"active_" . $_['calendar']["id"] . "\" type=\"checkbox\" onClick=\"Calendar.UI.Calendar.activation(this, " . $_['calendar']["id"] . ")\"" . ($_['calendar']["active"] ? ' checked="checked"' : '') . "></td>"; echo "<td><label for=\"active_" . $_['calendar']["id"] . "\">" . $_['calendar']["displayname"] . "</label></td>"; - echo "<td width=\"20px\"><a href=\"#\" onclick=\"Calendar.UI.showCalDAVUrl('" . OC_User::getUser() . "', '" . $_['calendar']["uri"] . "');\" title=\"" . $l->t("CalDav Link") . "\" class=\"action\"><img class=\"svg action\" src=\"../../core/img/actions/public.svg\"></a></td><td width=\"20px\"><a href=\"export.php?calid=" . $_['calendar']["id"] . "\" title=\"" . $l->t("Download") . "\" class=\"action\"><img class=\"svg action\" src=\"../../core/img/actions/download.svg\"></a></td><td width=\"20px\"><a href=\"#\" title=\"" . $l->t("Edit") . "\" class=\"action\" onclick=\"Calendar.UI.Calendar.edit(this, " . $_['calendar']["id"] . ");\"><img class=\"svg action\" src=\"../../core/img/actions/rename.svg\"></a></td>"; + echo "<td width=\"20px\"><a href=\"#\" onclick=\"Calendar.UI.showCalDAVUrl('" . OC_User::getUser() . "', '" . $_['calendar']["uri"] . "');\" title=\"" . $l->t("CalDav Link") . "\" class=\"action\"><img class=\"svg action\" src=\"../../core/img/actions/public.svg\"></a></td><td width=\"20px\"><a href=\"export.php?calid=" . $_['calendar']["id"] . "\" title=\"" . $l->t("Download") . "\" class=\"action\"><img class=\"svg action\" src=\"../../core/img/actions/download.svg\"></a></td><td width=\"20px\"><a href=\"#\" title=\"" . $l->t("Edit") . "\" class=\"action\" onclick=\"Calendar.UI.Calendar.edit(this, " . $_['calendar']["id"] . ");\"><img class=\"svg action\" src=\"../../core/img/actions/rename.svg\"></a></td><td width=\"20px\"><a href=\"#\" onclick=\"Calendar.UI.deleteCalendar('" . $_['calendar']["id"] . "');\" title=\"" . $l->t("Delete") . "\" class=\"action\"><img class=\"svg action\" src=\"../../core/img/actions/delete.svg\"></a></td>"; diff --git a/apps/calendar/templates/part.editcalendar.php b/apps/calendar/templates/part.editcalendar.php index a1a36505ee9dd0419962cab50cede754c42dbf5e..b4ff573ec8139521e78c0ee45f1c0544c5f4b344 100644 --- a/apps/calendar/templates/part.editcalendar.php +++ b/apps/calendar/templates/part.editcalendar.php @@ -1,19 +1,12 @@ <?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Bart Visscher * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ +/** + * Copyright (c) 2011 Bart Visscher <bartv@thisnet.nl> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ ?> -<td id="<?php echo $_['new'] ? 'new' : 'edit' ?>calendar_dialog" title="<?php echo $_['new'] ? $l->t("New calendar") : $l->t("Edit calendar"); ?>" colspan="4"> +<td id="<?php echo $_['new'] ? 'new' : 'edit' ?>calendar_dialog" title="<?php echo $_['new'] ? $l->t("New calendar") : $l->t("Edit calendar"); ?>" colspan="6"> <table width="100%" style="border: 0;"> <tr> <th><?php echo $l->t('Displayname') ?></th> @@ -25,23 +18,24 @@ <tr> <td></td> <td> - <input id="active_<?php echo $_['calendar']['id'] ?>" type="checkbox"<?php echo $_['calendar']['active'] ? ' checked="checked"' : '' ?>> - <label for="active_<?php echo $_['calendar']['id'] ?>"> + <input id="edit_active_<?php echo $_['calendar']['id'] ?>" type="checkbox"<?php echo $_['calendar']['active'] ? ' checked="checked"' : '' ?>> + <label for="edit_active_<?php echo $_['calendar']['id'] ?>"> <?php echo $l->t('Active') ?> </label> </td> </tr> <?php endif; ?> -<tr> - <th><?php echo $l->t('Description') ?></th> - <td> - <textarea id="description_<?php echo $_['calendar']['id'] ?>"><?php echo $_['calendar']['description'] ?></textarea> - </td> -</tr> <tr> <th><?php echo $l->t('Calendar color') ?></th> <td> - <input id="calendarcolor_<?php echo $_['calendar']['id'] ?>" type="text" value="<?php echo $_['calendar']['calendarcolor'] ?>"> + <select id="calendarcolor_<?php echo $_['calendar']['id'] ?>" class="colorpicker"> + <?php + if (!isset($_['calendar']['calendarcolor'])) {$_['calendar']['calendarcolor'] = false;} + foreach($_['calendarcolor_options'] as $color){ + echo '<option value="' . $color . '"' . ($_['calendar']['calendarcolor'] == $color ? ' selected="selected"' : '') . '>' . $color . '</option>'; + } + ?> + </select> </td> </tr> </table> diff --git a/apps/calendar/templates/part.editevent.php b/apps/calendar/templates/part.editevent.php index 859828216b82ac40abad9fe766c50fa7d96c6f7b..ae969f2dc3b6d8658a659fa33eb298a10ba3bd63 100644 --- a/apps/calendar/templates/part.editevent.php +++ b/apps/calendar/templates/part.editevent.php @@ -5,6 +5,8 @@ <div style="width: 100%;text-align: center;color: #FF1D1D;" id="errorbox"></div> <span id="actions"> <input type="button" class="submit" style="float: left;" value="<?php echo $l->t("Submit");?>" onclick="Calendar.UI.validateEventForm('ajax/editevent.php');"> + <input type="button" class="submit" style="float: left;" name="delete" value="<?php echo $l->t("Delete");?>" onclick="Calendar.UI.submitDeleteEventForm('ajax/deleteevent.php');"> + <input type="button" class="submit" style="float: right;" name="export" value="<?php echo $l->t("Export");?>" onclick="window.location='export.php?eventid=<?php echo $_['id'] ?>';"> </span> </form> </div> diff --git a/apps/calendar/templates/part.eventform.php b/apps/calendar/templates/part.eventform.php index c63d709e26e271b5c88039bf958d5e2a2b92f534..8588b9168f7bb03bee5e60c1cda4e831b4661662 100644 --- a/apps/calendar/templates/part.eventform.php +++ b/apps/calendar/templates/part.eventform.php @@ -2,13 +2,7 @@ <tr> <th width="75px"><?php echo $l->t("Title");?>:</th> <td> - <input type="text" style="width:350px;" size="100" placeholder="<?php echo $l->t("Title of the Event");?>" value="<?php echo $_['title'] ?>" maxlength="100" name="title"/> - </td> - </tr> - <tr> - <th width="75px"><?php echo $l->t("Location");?>:</th> - <td> - <input type="text" style="width:350px;" size="100" placeholder="<?php echo $l->t("Location of the Event");?>" value="<?php echo $_['location'] ?>" maxlength="100" name="location" /> + <input type="text" style="width:350px;" size="100" placeholder="<?php echo $l->t("Title of the Event");?>" value="<?php echo isset($_['title']) ? $_['title'] : '' ?>" maxlength="100" name="title"/> </td> </tr> </table> @@ -16,10 +10,11 @@ <tr> <th width="75px"><?php echo $l->t("Category");?>:</th> <td> - <select style="width:140px;" name="category"> + <select id="category" name="categories[]" multiple="multiple" title="<?php echo $l->t("Select category") ?>"> <?php - foreach($_['categories'] as $category){ - echo '<option value="' . $category . '"' . ($_['category'] == $category ? ' selected="selected"' : '') . '>' . $category . '</option>'; + if (!isset($_['categories'])) {$_['categories'] = array();} + foreach($_['category_options'] as $category){ + echo '<option value="' . $category . '"' . (in_array($category, $_['categories']) ? ' selected="selected"' : '') . '>' . $category . '</option>'; } ?> </select></td> @@ -27,7 +22,8 @@ <td> <select style="width:140px;" name="calendar"> <?php - foreach($_['calendars'] as $calendar){ + if (!isset($_['calendar'])) {$_['calendar'] = false;} + foreach($_['calendar_options'] as $calendar){ echo '<option value="' . $calendar['id'] . '"' . ($_['calendar'] == $calendar['id'] ? ' selected="selected"' : '') . '>' . $calendar['displayname'] . '</option>'; } ?> @@ -58,14 +54,21 @@ <input type="time" value="<?php echo $_['endtime'];?>" name="totime" id="totime"> </td><!--use jquery--> - </tr><!-- + </tr> + </table> + <input type="button" class="submit" value="<?php echo $l->t("Advanced options"); ?>" onclick="Calendar.UI.showadvancedoptions();" id="advanced_options_button"> + <div id="advanced_options" style="display: none;"> + <!-- + <table> <tr> <th width="75px"><?php echo $l->t("Repeat");?>:</th> <td> <select name="repeat" style="width:350px;"> <?php - foreach($_['repeat_options'] as $id => $label){ - echo '<option value="' . $id . '"' . ($_['repeat'] == $id ? ' selected="selected"' : '') . '>' . $label . '</option>'; + if (isset($_['repeat_options'])) { + foreach($_['repeat_options'] as $id => $label){ + echo '<option value="' . $id . '"' . ($_['repeat'] == $id ? ' selected="selected"' : '') . '>' . $label . '</option>'; + } } ?> </select></td> @@ -81,7 +84,16 @@ <hr>--> <table> <tr> - <th width="75px" style="vertical-align: top;"><?php echo $l->t("Description");?>:</th> - <td><textarea style="width:350px;height: 150px;" placeholder="<?php echo $l->t("Description of the Event");?>" name="description"><?php echo $_['description'] ?></textarea></td> + <th width="85px"><?php echo $l->t("Location");?>:</th> + <td> + <input type="text" style="width:350px;" size="100" placeholder="<?php echo $l->t("Location of the Event");?>" value="<?php echo isset($_['location']) ? $_['location'] : '' ?>" maxlength="100" name="location" /> + </td> + </tr> + </table> + <table> + <tr> + <th width="85px" style="vertical-align: top;"><?php echo $l->t("Description");?>:</th> + <td><textarea style="width:350px;height: 150px;" placeholder="<?php echo $l->t("Description of the Event");?>" name="description"><?php echo isset($_['description']) ? $_['description'] : '' ?></textarea></td> </tr> </table> + </div> diff --git a/apps/calendar/templates/part.eventinfo.php b/apps/calendar/templates/part.eventinfo.php deleted file mode 100644 index edccaaa22275fd7afa161781f709490dc3c6d4e7..0000000000000000000000000000000000000000 --- a/apps/calendar/templates/part.eventinfo.php +++ /dev/null @@ -1,87 +0,0 @@ - <div id="eventinfo" title="<?php echo $l -> t("Edit an event");?>"> - <table id="eventinfo_table" width="100%"> - <tr> - <td width="75px"><?php echo $l -> t("Title");?>:</td> - <td> - </td> - </tr> - <tr> - <td width="75px"><?php echo $l -> t("Location");?>:</td> - <td> - </td> - </tr> - </table> - <table> - <tr> - <td width="75px"><?php echo $l -> t("Category");?>:</td> - <td></td> - <td width="75px"> <?php echo $l -> t("Calendar");?>:</td> - <td></td> - </tr> - </table> - <hr> - <table> - <tr> - <td width="75px"></td> - <td> - <input type="checkbox" id="newcalendar_allday_checkbox" disabled="true"> - <label for="newcalendar_allday_checkbox"><?php echo $l -> t("All Day Event");?></label></td> - </tr> - <tr> - <td width="75px"><?php echo $l -> t("From");?>:</td> - <td> - - </td><!--use jquery--> - </tr> - <tr> - - <td width="75px"><?php echo $l -> t("To");?>:</td> - <td> - - </td><!--use jquery--> - </tr> - <tr> - <td width="75px"><?php echo $l -> t("Repeat");?>:</td> - <td></td> - </tr> - </table> - <hr> - <table> - <tr> - <td width="75px"><?php echo $l -> t("Attendees");?>:</td> - <td style="height: 50px;"></td> - </tr> - </table> - <hr> - <table> - <tr> - <td width="75px" style="vertical-align: top;"><?php echo $l -> t("Description");?>:</td> - <td></td> - </tr> - </table> - <span id="editevent_actions"> - <input type="button" style="float: left;" value="<?php echo $l -> t("Close");?>"> - <input type="button" style="float: right;" value="<?php echo $l -> t("Edit");?>"> - </span> -</div> -<script type="text/javascript"> - $( "#eventinfo" ).dialog({ - width : 500, - close : function() { - oc_cal_opendialog = 0; - var lastchild = document.getElementById("body-user").lastChild - while(lastchild.id != "lightbox"){ - document.getElementById("body-user").removeChild(lastchild); - lastchild = document.getElementById("body-user").lastChild; - } - }, - open : function(){alert("Doesn't work yet.");} - }); - $( "#from" ).datepicker({ - dateFormat : 'dd-mm-yy' - }); - $( "#to" ).datepicker({ - dateFormat : 'dd-mm-yy' - }); - } -</script> \ No newline at end of file diff --git a/apps/calendar/templates/part.getcal.php b/apps/calendar/templates/part.getcal.php deleted file mode 100644 index aaa43c4950709185040d42eb464ef91400e23631..0000000000000000000000000000000000000000 --- a/apps/calendar/templates/part.getcal.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Bart Visscher * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ -$calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser(), 1); -$events = array(); -foreach($calendars as $calendar) { - $tmp = OC_Calendar_Object::all($calendar['id']); - $events = array_merge($events, $tmp); -} -$select_year = $_GET["year"]; -$return_events = array(); -$user_timezone = OC_Preferences::getValue(OC_USER::getUser(), "calendar", "timezone", "Europe/London"); -foreach($events as $event) -{ - if ($select_year != substr($event['startdate'], 0, 4)) - continue; - $start_dt = new DateTime($event['startdate'], new DateTimeZone('UTC')); - $start_dt->setTimezone(new DateTimeZone($user_timezone)); - $end_dt = new DateTime($event['enddate'], new DateTimeZone('UTC')); - $end_dt->setTimezone(new DateTimeZone($user_timezone)); - $year = $start_dt->format('Y'); - $month = $start_dt->format('n') - 1; // return is 0 based - $day = $start_dt->format('j'); - $hour = $start_dt->format('G'); - - // hack - if (strstr($event['calendardata'], 'DTSTART;VALUE=DATE:')) { - $hour = 'allday'; - } - $return_event = array(); - foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop) - { - $return_event[$prop] = $event[$prop]; - } - $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); - $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); - $return_event['description'] = $event['summary']; - if ($hour == 'allday') - { - $return_event['allday'] = true; - } - if (isset($return_events[$year][$month][$day][$hour])) - { - $return_events[$year][$month][$day][$hour][] = $return_event; - } - else - { - $return_events[$year][$month][$day][$hour] = array(1 => $return_event); - } -} -echo json_encode($return_events); -?> diff --git a/apps/calendar/templates/part.import.php b/apps/calendar/templates/part.import.php new file mode 100644 index 0000000000000000000000000000000000000000..b8805e6b6ef3fd8cb10c4ad8e89074d8de9f8e78 --- /dev/null +++ b/apps/calendar/templates/part.import.php @@ -0,0 +1,69 @@ +<div id="importdialog" title="<?php echo $l->t("Import Ical File"); ?>"> +<input type="hidden" id="filename" value="<?php echo $_GET["filename"];?>"> +<input type="hidden" id="path" value="<?php echo $_GET["path"];?>"> +<div id="first"><strong style="text-align: center;margin: 0 auto;"><?php echo $l->t("How to import the new calendar?");?></strong> +<br><br> +<input style="float: left;" type="button" value="<?php echo $l->t("Import into an existing calendar"); ?>" onclick="$('#first').css('display', 'none');$('#existingcal').css('display', 'block');"> +<input style="float: right;" type="button" value="<?php echo $l->t("Import into a new calendar");?>" onclick="$('#first').css('display', 'none');$('#newcal').css('display', 'block');"> +</div> +<div id="existingcal" style="display: none;"> +<strong><?php echo $l->t("Please choose the calendar"); ?></strong><br><br> +<form id="inputradioform"> +<?php +$calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser()); +foreach($calendars as $calendar){ + echo '<input type="radio" style="width: 20px;" name="calendar" id="radio_' . $calendar["id"] . '" value="' . $calendar["id"] . '">' . $calendar["displayname"] . '<br>'; +} +?> +</form> +<br><br> +<input type="button" value="<?php echo $l->t("Import");?>!" onclick="importcal('existing');"> +<br><br> +<input type="button" value="<?php echo $l->t("Back");?>" onclick="$('#existingcal').css('display', 'none');$('#first').css('display', 'block');"> +</div> +<div id="newcal" style="display: none;"> +<strong><?php echo $l->t("Please fill out the form"); ?></strong> +<!-- modified part of part.editcalendar.php --> +<table width="100%" style="border: 0;"> +<tr> +<th><?php echo $l->t('Displayname') ?></th> +<td> +<input id="displayname" type="text" value=""> +</td> +</tr> +</table> +<!-- end of modified part --> +<br><br> +<input type="button" value="<?php echo $l->t("Import");?>!" onclick="importcal('new');"> +<br><br> +<input type="button" value="<?php echo $l->t("Back");?>" onclick="$('#newcal').css('display', 'none');$('#first').css('display', 'block');"> +</div> +</div> +<script type="text/javascript"> +$("input:radio[name='calendar']:first").attr("checked","checked"); +$("#importdialog").dialog({ + width : 500, + close : function(event, ui) { + $(this).dialog('destroy').remove(); + $("#importdialogholder").remove(); + } +}); +function importcal(importtype){ + var path = $("#path").val(); + var file = $("#filename").val(); + if(importtype == "existing"){ + var calid = $("input:radio[name='calendar']:checked").val(); + $.getJSON(OC.filePath('calendar', '', 'import.php') + "?import=existing&calid=" + calid + "&path=" + path + "&file=" + file, function(){ + $("#importdialog").dialog('destroy').remove(); + $("#importdialogholder").remove(); + }); + } + if(importtype == "new"){ + var calname = $("#displayname").val(); + $.post(OC.filePath('calendar', '', 'import.php'), {'import':'new', 'calname':calname, 'path':path, 'file':file}, function(){ + $("#importdialog").dialog('destroy').remove(); + $("#importdialogholder").remove(); + }); + } +} +</script> \ No newline at end of file diff --git a/apps/calendar/templates/settings.php b/apps/calendar/templates/settings.php index 122f8a9bf935aa76a1c69b45fddf05b1e790ec12..56fb55d235c7dd342d1b6ae26aa636fb6af89df3 100644 --- a/apps/calendar/templates/settings.php +++ b/apps/calendar/templates/settings.php @@ -1,36 +1,44 @@ <?php -/************************************************* - * ownCloud - Calendar Plugin * - * * - * (c) Copyright 2011 Bart Visscher * - * License: GNU AFFERO GENERAL PUBLIC LICENSE * - * * - * If you are not able to view the License, * - * <http://www.gnu.org/licenses/> * - * please write to the Free Software Foundation. * - * Address: * - * 59 Temple Place, Suite 330, Boston, * - * MA 02111-1307 USA * - *************************************************/ +/** + * Copyright (c) 2011 Bart Visscher <bartv@thisnet.nl> + * Copyright (c) 2011 Georg Ehrke <ownclouddev at georgswebsite dot de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ ?> <form id="calendar"> <fieldset class="personalblock"> - <label for="timezone"><strong><?php echo $l->t('Timezone');?></strong></label> - <select id="timezone" name="timezone"> + <table class="nostyle"> + <tr><td><label for="timezone" class="bold"><?php echo $l->t('Timezone');?></label></td><td><select style="display: none;" id="timezone" name="timezone"> <?php - $continent = ''; - foreach($_['timezones'] as $timezone): - if ( preg_match( '/^(America|Antartica|Arctic|Asia|Atlantic|Europe|Indian|Pacific)\//', $timezone ) ): - $ex=explode('/', $timezone, 2);//obtain continent,city - if ($continent!=$ex[0]): - if ($continent!="") echo '</optgroup>'; - echo '<optgroup label="'.$ex[0].'">'; - endif; - $city=$ex[1]; - $continent=$ex[0]; - echo '<option value="'.$timezone.'"'.($_['timezone'] == $timezone?' selected="selected"':'').'>'.$city.'</option>'; - endif; + $continent = ''; + foreach($_['timezones'] as $timezone): + $ex=explode('/', $timezone, 2);//obtain continent,city + if (!isset($ex[1])) { + $ex[1] = $ex[0]; + $ex[0] = "Other"; + } + if ($continent!=$ex[0]): + if ($continent!="") echo '</optgroup>'; + echo '<optgroup label="'.$ex[0].'">'; + endif; + $city=strtr($ex[1], '_', ' '); + $continent=$ex[0]; + echo '<option value="'.$timezone.'"'.($_['timezone'] == $timezone?' selected="selected"':'').'>'.$city.'</option>'; endforeach;?> - </select><span class="msg"></span> + </select></td></tr> + + <tr><td><label for="timeformat" class="bold"><?php echo $l->t('Timeformat');?></label></td><td> + <select style="display: none;" id="timeformat" title="<?php echo "timeformat"; ?>" name="timeformat"> + <option value="24" id="24h"><?php echo $l->t("24h"); ?></option> + <option value="ampm" id="ampm"><?php echo $l->t("12h"); ?></option> + </select> + </td></tr> + + </table> + + <?php echo $l->t('Calendar CalDAV syncing address:');?> + <?php echo OC_Helper::linkTo('apps/calendar', 'caldav.php', null, true); ?><br /> </fieldset> </form> diff --git a/apps/contacts/ajax/addcard.php b/apps/contacts/ajax/addcard.php index e9f82f1b3e3baf3d379879a0d25f5dc976cec33b..e7b56a7bf00d754d39304a7bae6b253151964594 100644 --- a/apps/contacts/ajax/addcard.php +++ b/apps/contacts/ajax/addcard.php @@ -27,28 +27,38 @@ $aid = $_POST['id']; $l10n = new OC_L10N('contacts'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('You need to log in!')))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('contacts'); $addressbook = OC_Contacts_Addressbook::find( $aid ); if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('This is not your addressbook!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('This is not your addressbook.')))); // Same here (as with the contact error). Could this error be improved? exit(); } $fn = $_POST['fn']; +$values = $_POST['value']; +$parameters = $_POST['parameters']; $vcard = new Sabre_VObject_Component('VCARD'); $vcard->add(new Sabre_VObject_Property('FN',$fn)); $vcard->add(new Sabre_VObject_Property('UID',OC_Contacts_VCard::createUID())); +foreach(array('ADR', 'TEL', 'EMAIL', 'ORG') as $propname){ + $value = $values[$propname]; + if (isset($parameters[$propname])){ + $prop_parameters = $parameters[$propname]; + } else { + $prop_parameters = array(); + } + OC_Contacts_VCard::addVCardProperty($vcard, $propname, $value, $prop_parameters); +} $id = OC_Contacts_VCard::add($aid,$vcard->serialize()); $details = OC_Contacts_VCard::structureContact($vcard); +$name = $details['FN'][0]['value']; $tmpl = new OC_Template('contacts','part.details'); $tmpl->assign('details',$details); $tmpl->assign('id',$id); $page = $tmpl->fetchPage(); -echo json_encode( array( 'status' => 'success', 'data' => array( 'id' => $id, 'page' => $page ))); +OC_JSON::success(array('data' => array( 'id' => $id, 'name' => $name, 'page' => $page ))); diff --git a/apps/contacts/ajax/addproperty.php b/apps/contacts/ajax/addproperty.php index 7df67e3d3306c95133f851252eafc062d5ca970b..101cfabbe84c8ef7e50da66d92ef0a77c9ed20fd 100644 --- a/apps/contacts/ajax/addproperty.php +++ b/apps/contacts/ajax/addproperty.php @@ -27,27 +27,25 @@ $id = $_POST['id']; $l10n = new OC_L10N('contacts'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('You need to log in!')))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('contacts'); $card = OC_Contacts_VCard::find( $id ); if( $card === false ){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Can not find Contact!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('Contact could not be found.')))); exit(); } $addressbook = OC_Contacts_Addressbook::find( $card['addressbookid'] ); if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('This is not your contact!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('This is not your contact.')))); exit(); } $vcard = OC_Contacts_VCard::parse($card['carddata']); // Check if the card is valid if(is_null($vcard)){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Unable to parse vCard!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('vCard could not be read.')))); exit(); } @@ -55,16 +53,7 @@ $name = $_POST['name']; $value = $_POST['value']; $parameters = isset($_POST['parameteres'])?$_POST['parameters']:array(); -if(is_array($value)){ - $value = OC_Contacts_VCard::escapeSemicolons($value); -} -$property = new Sabre_VObject_Property( $name, $value ); -$parameternames = array_keys($parameters); -foreach($parameternames as $i){ - $property->parameters[] = new Sabre_VObject_Parameter($i,$parameters[$i]); -} - -$vcard->add($property); +$property = OC_Contacts_VCard::addVCardProperty($vcard, $name, $value, $parameters); $line = count($vcard->children) - 1; $checksum = md5($property->serialize()); @@ -75,4 +64,4 @@ $tmpl = new OC_Template('contacts','part.property'); $tmpl->assign('property',OC_Contacts_VCard::structureProperty($property,$line)); $page = $tmpl->fetchPage(); -echo json_encode( array( 'status' => 'success', 'data' => array( 'page' => $page ))); +OC_JSON::success(array('data' => array( 'page' => $page ))); diff --git a/apps/contacts/ajax/deletebook.php b/apps/contacts/ajax/deletebook.php index 9e623120df918fa5f967af973118b2c5b965036e..c13217ef2e22e6aa719cde9037c6819de735db65 100644 --- a/apps/contacts/ajax/deletebook.php +++ b/apps/contacts/ajax/deletebook.php @@ -28,16 +28,14 @@ $id = $_GET['id']; $l10n = new OC_L10N('contacts'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('You need to log in!')))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('contacts'); $addressbook = OC_Contacts_Addressbook::find( $id ); if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('This is not your contact!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('This is not your contact.')))); exit(); } OC_Contacts_Addressbook::delete($id); -echo json_encode( array( 'status' => 'success', 'data' => array( 'id' => $id ))); +OC_JSON::success(array('data' => array( 'id' => $id ))); diff --git a/apps/contacts/ajax/deletecard.php b/apps/contacts/ajax/deletecard.php index b31c643f5996e62c80ea7119f48066580219e13c..a0a6b8c3ea8d352dc313d32162eb1bb1d88b7da1 100644 --- a/apps/contacts/ajax/deletecard.php +++ b/apps/contacts/ajax/deletecard.php @@ -28,23 +28,20 @@ $id = $_GET['id']; $l10n = new OC_L10N('contacts'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('You need to log in!')))); - exit(); -} - +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('contacts'); $card = OC_Contacts_VCard::find( $id ); if( $card === false ){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Can not find Contact!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('Contact could not be found.')))); exit(); } $addressbook = OC_Contacts_Addressbook::find( $card['addressbookid'] ); if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('This is not your contact!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('This is not your contact.')))); exit(); } OC_Contacts_VCard::delete($id); -echo json_encode( array( 'status' => 'success', 'data' => array( 'id' => $id ))); +OC_JSON::success(array('data' => array( 'id' => $id ))); diff --git a/apps/contacts/ajax/deleteproperty.php b/apps/contacts/ajax/deleteproperty.php index df2ae2e1c0357092fe8b3b64b3b78a65df637db8..0a3a3c293a0439e5b4a54ba2f9f32bd2d9718bc2 100644 --- a/apps/contacts/ajax/deleteproperty.php +++ b/apps/contacts/ajax/deleteproperty.php @@ -30,28 +30,25 @@ $checksum = $_GET['checksum']; $l10n = new OC_L10N('contacts'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('You need to log in!')))); - exit(); -} - +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('contacts'); $card = OC_Contacts_VCard::find( $id ); if( $card === false ){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Can not find Contact!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('Contact could not be found.')))); exit(); } $addressbook = OC_Contacts_Addressbook::find( $card['addressbookid'] ); if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('This is not your contact!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('This is not your contact.')))); exit(); } $vcard = OC_Contacts_VCard::parse($card['carddata']); // Check if the card is valid if(is_null($vcard)){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Unable to parse vCard!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('vCard could not be read.')))); exit(); } @@ -62,11 +59,11 @@ for($i=0;$i<count($vcard->children);$i++){ } } if(is_null($line)){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Information about vCard is incorrect. Please reload page!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('Information about vCard is incorrect. Please reload the page.')))); exit(); } unset($vcard->children[$line]); OC_Contacts_VCard::edit($id,$vcard->serialize()); -echo json_encode( array( 'status' => 'success', 'data' => array( 'id' => $id ))); +OC_JSON::success(array('data' => array( 'id' => $id ))); diff --git a/apps/contacts/ajax/getdetails.php b/apps/contacts/ajax/getdetails.php index 19addd912233f4d8cf135da820f6366b19ed40c7..0e76de61afb0b23ac1a673be23047fff250c2cda 100644 --- a/apps/contacts/ajax/getdetails.php +++ b/apps/contacts/ajax/getdetails.php @@ -28,28 +28,26 @@ $id = $_GET['id']; $l10n = new OC_L10N('contacts'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('You need to log in!')))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('contacts'); $card = OC_Contacts_VCard::find( $id ); if( $card === false ){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Can not find Contact!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('Contact could not be found.')))); exit(); } $addressbook = OC_Contacts_Addressbook::find( $card['addressbookid'] ); if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('This is not your contact!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('This is not your contact.')))); exit(); } $vcard = OC_Contacts_VCard::parse($card['carddata']); // Check if the card is valid if(is_null($vcard)){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Unable to parse vCard!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('vCard could not be read.')))); exit(); } @@ -59,4 +57,4 @@ $tmpl->assign('details',$details); $tmpl->assign('id',$id); $page = $tmpl->fetchPage(); -echo json_encode( array( 'status' => 'success', 'data' => array( 'id' => $id, 'page' => $page ))); +OC_JSON::success(array('data' => array( 'id' => $id, 'page' => $page ))); diff --git a/apps/contacts/ajax/setproperty.php b/apps/contacts/ajax/setproperty.php index 9a4e8eea264d0701346aa9234571de9553a44366..18e00872473c90721258edadd0b0a647fd5556b6 100644 --- a/apps/contacts/ajax/setproperty.php +++ b/apps/contacts/ajax/setproperty.php @@ -28,27 +28,25 @@ $checksum = $_POST['checksum']; $l10n = new OC_L10N('contacts'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('You need to log in!')))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('contacts'); $card = OC_Contacts_VCard::find( $id ); if( $card === false ){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Can not find Contact!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('Contact could not be found.')))); exit(); } $addressbook = OC_Contacts_Addressbook::find( $card['addressbookid'] ); if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('This is not your contact!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('This is not your contact.')))); exit(); } $vcard = OC_Contacts_VCard::parse($card['carddata']); // Check if the card is valid if(is_null($vcard)){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Unable to parse vCard!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('vCard could not be read.')))); exit(); } @@ -59,7 +57,7 @@ for($i=0;$i<count($vcard->children);$i++){ } } if(is_null($line)){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Information about vCard is incorrect. Please reload page!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('Information about vCard is incorrect. Please reload the page.')))); exit(); } @@ -100,4 +98,4 @@ $tmpl = new OC_Template('contacts','part.property'); $tmpl->assign('property',OC_Contacts_VCard::structureProperty($vcard->children[$line],$line)); $page = $tmpl->fetchPage(); -echo json_encode( array( 'status' => 'success', 'data' => array( 'page' => $page, 'line' => $line, 'oldchecksum' => $_POST['checksum'] ))); +OC_JSON::success(array('data' => array( 'page' => $page, 'line' => $line, 'oldchecksum' => $_POST['checksum'] ))); diff --git a/apps/contacts/ajax/showaddcard.php b/apps/contacts/ajax/showaddcard.php index dea8073a785fdf063b7adadb42b810188e95f597..2f534f0fe2d0bc772a8ae81a17317b6c67b4d8fa 100644 --- a/apps/contacts/ajax/showaddcard.php +++ b/apps/contacts/ajax/showaddcard.php @@ -26,14 +26,12 @@ require_once('../../../lib/base.php'); $l10n = new OC_L10N('contacts'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('You need to log in!')))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('contacts'); $addressbooks = OC_Contacts_Addressbook::all(OC_USER::getUser()); $tmpl = new OC_Template('contacts','part.addcardform'); $tmpl->assign('addressbooks',$addressbooks); $page = $tmpl->fetchPage(); -echo json_encode( array( 'status' => 'success', 'data' => array( 'page' => $page ))); +OC_JSON::success(array('data' => array( 'page' => $page ))); diff --git a/apps/contacts/ajax/showaddproperty.php b/apps/contacts/ajax/showaddproperty.php index 75dbe01cfbcbb2af29c87ee325fd97d2468c4599..f87cd05359bdd8aca03a17b4fb106e2461f63cdb 100644 --- a/apps/contacts/ajax/showaddproperty.php +++ b/apps/contacts/ajax/showaddproperty.php @@ -27,20 +27,18 @@ $id = $_GET['id']; $l10n = new OC_L10N('contacts'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('You need to log in!')))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('contacts'); $card = OC_Contacts_VCard::find( $id ); if( $card === false ){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Can not find Contact!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('Contact could not be found.')))); exit(); } $addressbook = OC_Contacts_Addressbook::find( $card['addressbookid'] ); if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('This is not your contact!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('This is not your contact.')))); exit(); } @@ -48,4 +46,4 @@ $tmpl = new OC_Template('contacts','part.addpropertyform'); $tmpl->assign('id',$id); $page = $tmpl->fetchPage(); -echo json_encode( array( 'status' => 'success', 'data' => array( 'page' => $page ))); +OC_JSON::success(array('data' => array( 'page' => $page ))); diff --git a/apps/contacts/ajax/showsetproperty.php b/apps/contacts/ajax/showsetproperty.php index 51187d505bcf68fc03780907af90ae23c6f1f770..6188f4773c3771b745184719cf75a7197fc5d0f0 100644 --- a/apps/contacts/ajax/showsetproperty.php +++ b/apps/contacts/ajax/showsetproperty.php @@ -28,27 +28,25 @@ $checksum = $_GET['checksum']; $l10n = new OC_L10N('contacts'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('You need to log in!')))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('contacts'); $card = OC_Contacts_VCard::find( $id ); if( $card === false ){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Can not find Contact!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('Contact could not be found.')))); exit(); } $addressbook = OC_Contacts_Addressbook::find( $card['addressbookid'] ); if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('This is not your contact!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('This is not your contact.')))); exit(); } $vcard = OC_Contacts_VCard::parse($card['carddata']); // Check if the card is valid if(is_null($vcard)){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Unable to parse vCard!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('vCard could not be read.')))); exit(); } @@ -59,7 +57,7 @@ for($i=0;$i<count($vcard->children);$i++){ } } if(is_null($line)){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Information about vCard is incorrect. Please reload page!')))); + OC_JSON::error(array('data' => array( 'message' => $l10n->t('Information about vCard is incorrect. Please reload the page.')))); exit(); } @@ -70,4 +68,4 @@ $tmpl->assign('checksum',$checksum); $tmpl->assign('property',OC_Contacts_VCard::structureProperty($vcard->children[$line])); $page = $tmpl->fetchPage(); -echo json_encode( array( 'status' => 'success', 'data' => array( 'page' => $page ))); +OC_JSON::success(array('data' => array( 'page' => $page ))); diff --git a/apps/contacts/appinfo/app.php b/apps/contacts/appinfo/app.php index 98416ead2fcf432943501a1d16a98869e0ea3ac8..fc7b3769c537834c0f9dbcce6ec2b6379cca6a69 100644 --- a/apps/contacts/appinfo/app.php +++ b/apps/contacts/appinfo/app.php @@ -17,3 +17,6 @@ OC_App::addNavigationEntry( array( 'href' => OC_Helper::linkTo( 'contacts', 'index.php' ), 'icon' => OC_Helper::imagePath( 'settings', 'users.svg' ), 'name' => 'Contacts' )); + + +OC_APP::registerPersonal('contacts','settings'); diff --git a/apps/contacts/appinfo/info.xml b/apps/contacts/appinfo/info.xml index 77c9dc91bfc7420bef0b45de8fbf708b155d3a46..d18a19c3aeab1a8fd646262289c5ee927acec45b 100644 --- a/apps/contacts/appinfo/info.xml +++ b/apps/contacts/appinfo/info.xml @@ -7,4 +7,5 @@ <author>Jakob Sack</author> <require>2</require> <description>Address book with CardDAV support.</description> + <default_enable/> </info> diff --git a/apps/contacts/carddav.php b/apps/contacts/carddav.php index 77b3c105deb34e82f1aee6e0338c1f3a106a5200..df7c858b1a00346b45cf4790b173a5d838f40deb 100644 --- a/apps/contacts/carddav.php +++ b/apps/contacts/carddav.php @@ -24,6 +24,7 @@ $RUNTIME_NOSETUPFS = true; require_once('../../lib/base.php'); +OC_Util::checkAppEnabled('contacts'); // Backends $authBackend = new OC_Connector_Sabre_Auth(); @@ -38,11 +39,12 @@ $nodes = array( // Fire up server $server = new Sabre_DAV_Server($nodes); -$server->setBaseUri($WEBROOT.'/apps/contacts/carddav.php'); +$server->setBaseUri(OC::$WEBROOT.'/apps/contacts/carddav.php'); // Add plugins $server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend,'ownCloud')); $server->addPlugin(new Sabre_CardDAV_Plugin()); $server->addPlugin(new Sabre_DAVACL_Plugin()); +$server->addPlugin(new Sabre_DAV_Browser_Plugin(false)); // Show something in the Browser, but no upload // And off we go! $server->exec(); diff --git a/apps/contacts/css/styles.css b/apps/contacts/css/styles.css index 1f95fdb2ad476f496e8b9c9885ac23117c1806ff..c1abd0efb62248da1dccae8e0f00437c359226d5 100644 --- a/apps/contacts/css/styles.css +++ b/apps/contacts/css/styles.css @@ -1,2 +1,3 @@ .contacts_details_left {text-align:right;vertical-align:top;padding:2px;} .contacts_details_right {text-align:left;vertical-align:top;padding:2px;} +#contacts_deletecard {position:absolute;top:15px;right:0;} diff --git a/apps/contacts/index.php b/apps/contacts/index.php index 8013f19d31ff7401f81de2a0bad560810757f4f1..7e8eb8e6951fc93e0f1efee1df0fca5e5eaadf6f 100644 --- a/apps/contacts/index.php +++ b/apps/contacts/index.php @@ -28,10 +28,8 @@ function contacts_namesort($a,$b){ require_once('../../lib/base.php'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - header( 'Location: '.OC_Helper::linkTo( '', 'index.php' )); - exit(); -} +OC_Util::checkLoggedIn(); +OC_Util::checkAppEnabled('contacts'); // Check if the user has an addressbook $addressbooks = OC_Contacts_Addressbook::all(OC_User::getUser()); diff --git a/apps/contacts/js/interface.js b/apps/contacts/js/interface.js index 66ee6772198d465d14b6e43b74d46c7ac4511206..2f4a736f55376554166bfb6d608066b1e718e9f9 100644 --- a/apps/contacts/js/interface.js +++ b/apps/contacts/js/interface.js @@ -1,11 +1,4 @@ $(document).ready(function(){ - /*------------------------------------------------------------------------- - * Actions for startup - *-----------------------------------------------------------------------*/ - if( $('#leftcontent li').length > 0 ){ - $('#leftcontent li').first().addClass('active'); - } - /*------------------------------------------------------------------------- * Event handlers *-----------------------------------------------------------------------*/ @@ -34,7 +27,7 @@ $(document).ready(function(){ if(jsondata.status == 'success'){ $('#leftcontent [data-id="'+jsondata.data.id+'"]').remove(); $('#rightcontent').data('id',''); - $('#rightcontent').html(''); + $('#rightcontent').empty(); } else{ alert(jsondata.data.message); @@ -75,7 +68,7 @@ $(document).ready(function(){ $('#contacts_addpropertyform input[type="submit"]').live('click',function(){ $.post('ajax/addproperty.php',$('#contacts_addpropertyform').serialize(),function(jsondata){ if(jsondata.status == 'success'){ - $('#contacts_cardoptions').before(jsondata.data.page); + $('#contacts_details').append(jsondata.data.page); $('#contacts_addpropertyform').remove(); $('#contacts_addcontactsparts').remove(); } @@ -104,6 +97,8 @@ $(document).ready(function(){ if(jsondata.status == 'success'){ $('#rightcontent').data('id',jsondata.data.id); $('#rightcontent').html(jsondata.data.page); + $('#leftcontent .active').removeClass('active'); + $('#leftcontent ul').append('<li data-id="'+jsondata.data.id+'" class="active"><a href="index.php?id='+jsondata.data.id+'">'+jsondata.data.name+'</a></li>'); } else{ alert(jsondata.data.message); @@ -127,7 +122,7 @@ $(document).ready(function(){ }); $('#contacts_setpropertyform input[type="submit"]').live('click',function(){ - $.post('ajax/setproperty.php',$('#contacts_setpropertyform').serialize(),function(jsondata){ + $.post('ajax/setproperty.php',$(this).parent('form').serialize(),function(jsondata){ if(jsondata.status == 'success'){ $('.contacts_details_property[data-checksum="'+jsondata.data.oldchecksum+'"]').replaceWith(jsondata.data.page); } diff --git a/apps/contacts/l10n/da.php b/apps/contacts/l10n/da.php new file mode 100644 index 0000000000000000000000000000000000000000..2ab382f714af832e2eb56c987b1eaae61453af20 --- /dev/null +++ b/apps/contacts/l10n/da.php @@ -0,0 +1,38 @@ +<?php $TRANSLATIONS = array( +"You need to log in." => "Du skal logge ind.", +"This is not your addressbook." => "Dette er ikke din adressebog.", +"Contact could not be found." => "Kontakt kunne ikke findes.", +"This is not your contact." => "Dette er ikke din kontakt.", +"vCard could not be read." => "Kunne ikke læse vCard.", +"Information about vCard is incorrect. Please reload the page." => "Informationen om vCard er forkert. Genindlæs siden.", +"This card is not RFC compatible." => "Dette kort er ikke RFC-kompatibelt.", +"This card does not contain a photo." => "Dette kort indeholder ikke et foto.", +"Add Contact" => "Tilføj kontakt", +"Group" => "Gruppe", +"Name" => "Navn", +"Create Contact" => "Ny Kontakt", +"Address" => "Adresse", +"Telephone" => "Telefon", +"Email" => "Email", +"Organization" => "Organisation", +"Work" => "Arbejde", +"Home" => "Hjem", +"PO Box" => "Postboks", +"Extended" => "Udvidet", +"Street" => "Vej", +"City" => "By", +"Region" => "Region", +"Zipcode" => "Postnummer", +"Country" => "Land", +"Mobile" => "Mobil", +"Text" => "SMS", +"Voice" => "Telefonsvarer", +"Fax" => "Fax", +"Video" => "Video", +"Pager" => "Personsøger", +"Delete" => "Slet", +"Add Property" => "Tilføj Egenskab", +"Birthday" => "Fødselsdag", +"Phone" => "Telefon", +"Edit" => "Redigér" +); diff --git a/apps/contacts/l10n/de.php b/apps/contacts/l10n/de.php new file mode 100644 index 0000000000000000000000000000000000000000..04a7402442af2abe3d709c9f1f4ff43885ffb877 --- /dev/null +++ b/apps/contacts/l10n/de.php @@ -0,0 +1,9 @@ +<?php $TRANSLATIONS = array( +"Mobile" => "Mobil", +"Text" => "Text", +"Fax" => "Fax", +"Video" => "Video", +"Pager" => "Pager", +"Birthday" => "Geburtstag", +"Edit" => "Bearbeiten" +); diff --git a/apps/contacts/l10n/it.php b/apps/contacts/l10n/it.php new file mode 100644 index 0000000000000000000000000000000000000000..7a57d6fc5d2b39f5bdc57cc44d0f0b0940703d5f --- /dev/null +++ b/apps/contacts/l10n/it.php @@ -0,0 +1,38 @@ +<?php $TRANSLATIONS = array( +"You need to log in." => "Bisogna effettuare il login.", +"This is not your addressbook." => "Questa non è la tua rubrica.", +"Contact could not be found." => "Il contatto non può essere trovato", +"This is not your contact." => "Questo non è un tuo contatto.", +"vCard could not be read." => "La vCard non può essere letta", +"Information about vCard is incorrect. Please reload the page." => "Informazioni sulla vCard incorrette. Ricaricare la pagina.", +"This card is not RFC compatible." => "Questa card non è compatibile con il protocollo RFC.", +"This card does not contain a photo." => "Questa card non contiene una foto.", +"Add Contact" => "Aggiungi contatto", +"Group" => "Gruppo", +"Name" => "Nome", +"Create Contact" => "Crea contatto", +"Address" => "Indirizzo", +"Telephone" => "Telefono", +"Email" => "Email", +"Organization" => "Organizzazione", +"Work" => "Lavoro", +"Home" => "Casa", +"PO Box" => "PO Box", +"Extended" => "Estendi", +"Street" => "Via", +"City" => "Città ", +"Region" => "Regione", +"Zipcode" => "CAP", +"Country" => "Stato", +"Mobile" => "Cellulare", +"Text" => "Testo", +"Voice" => "Voce", +"Fax" => "Fax", +"Video" => "Video", +"Pager" => "Pager", +"Delete" => "Cancella", +"Add Property" => "Aggiungi proprietà ", +"Birthday" => "Compleanno", +"Phone" => "Telefono", +"Edit" => "Modifica" +); diff --git a/apps/contacts/lib/vcard.php b/apps/contacts/lib/vcard.php index 1c9a8049f7310df62cc371ef2a00d343ca1fac74..9f15cf4bc379615826855508b0b40122d9062c9f 100644 --- a/apps/contacts/lib/vcard.php +++ b/apps/contacts/lib/vcard.php @@ -246,7 +246,7 @@ class OC_Contacts_VCard{ public static function escapeSemicolons($value){ foreach($value as &$i ){ $i = implode("\\\\;", explode(';', $i)); - } unset($i); + } return implode(';',$value); } @@ -272,6 +272,27 @@ class OC_Contacts_VCard{ return $array; } + /** + * @brief Add property to vcard object + * @param object $vcard + * @param object $name of property + * @param object $value of property + * @param object $paramerters of property + */ + public static function addVCardProperty($vcard, $name, $value, $parameters=array()){ + if(is_array($value)){ + $value = OC_Contacts_VCard::escapeSemicolons($value); + } + $property = new Sabre_VObject_Property( $name, $value ); + $parameternames = array_keys($parameters); + foreach($parameternames as $i){ + $property->parameters[] = new Sabre_VObject_Parameter($i,$parameters[$i]); + } + + $vcard->add($property); + return $property; + } + /** * @brief Data structure of vCard * @param object $property diff --git a/apps/contacts/photo.php b/apps/contacts/photo.php index 1b955a8a84dc2d187621eb93ef2087d8eb40a470..5178fe7a078d021e5f790fe0b263f945de11c028 100644 --- a/apps/contacts/photo.php +++ b/apps/contacts/photo.php @@ -22,27 +22,22 @@ // Init owncloud require_once('../../lib/base.php'); +OC_Util::checkLoggedIn(); +OC_Util::checkAppEnabled('contacts'); $id = $_GET['id']; $l10n = new OC_L10N('contacts'); -// Check if we are a user -if( !OC_User::isLoggedIn()){ - echo $l10n->t('You need to log in!'); - exit(); -} - - $card = OC_Contacts_VCard::find( $id ); if( $card === false ){ - echo $l10n->t('Can not find Contact!'); + echo $l10n->t('Contact could not be found.'); exit(); } $addressbook = OC_Contacts_Addressbook::find( $card['addressbookid'] ); if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ - echo $l10n->t('This is not your contact!'); + echo $l10n->t('This is not your contact.'); // This is a weird error, why would it come up? (Better feedback for users?) exit(); } @@ -50,7 +45,7 @@ $content = OC_Contacts_VCard::parse($card['carddata']); // invalid vcard if( is_null($content)){ - echo $l10n->t('This card is not RFC compatible!'); + echo $l10n->t('This card is not RFC compatible.'); exit(); } // Photo :-) @@ -87,4 +82,4 @@ foreach($content->children as $child){ } // Not found :-( -echo $l10n->t('This card does not contain photo data!'); +echo $l10n->t('This card does not contain a photo.'); diff --git a/apps/contacts/settings.php b/apps/contacts/settings.php new file mode 100644 index 0000000000000000000000000000000000000000..b88128823a7306d5556c880ce088ecb389a43f47 --- /dev/null +++ b/apps/contacts/settings.php @@ -0,0 +1,6 @@ +<?php + +$tmpl = new OC_Template( 'contacts', 'settings'); + +return $tmpl->fetchPage(); +?> diff --git a/apps/contacts/templates/index.php b/apps/contacts/templates/index.php index 6d67584b29ef625a0f3468bff99bc93850bdc8ce..98ebc1b0b36ea1845ba700cb0f74f0077f6bdac9 100644 --- a/apps/contacts/templates/index.php +++ b/apps/contacts/templates/index.php @@ -14,5 +14,5 @@ OC_Util::addStyle('contacts','styles'); </ul> </div> <div id="rightcontent" class="rightcontent" data-id="<?php echo $_['id']; ?>"> - <?php echo $this->inc("part.details"); ?> + <?php echo $this->inc("part.addcardform"); ?> </div> diff --git a/apps/contacts/templates/part.addcardform.php b/apps/contacts/templates/part.addcardform.php index e87c64507dce6f913e84be3af7b535d70a68ab24..c7d668fae58030584461f35c3c31c518279e9977 100644 --- a/apps/contacts/templates/part.addcardform.php +++ b/apps/contacts/templates/part.addcardform.php @@ -11,5 +11,41 @@ <?php endif; ?> <label for="fn"><?php echo $l->t('Name'); ?></label> <input type="text" name="fn" value=""><br> + <label for="ADR"><?php echo $l->t('Address'); ?></label> + <div id="contacts_addresspart"> + <select id="ADR" name="parameters[ADR][TYPE]" size="1"> + <option value="adr_work"><?php echo $l->t('Work'); ?></option> + <option value="adr_home" selected="selected"><?php echo $l->t('Home'); ?></option> + </select> + <p><label><?php echo $l->t('PO Box'); ?></label> <input type="text" name="value[ADR][0]" value=""></p> + <p><label><?php echo $l->t('Extended'); ?></label> <input type="text" name="value[ADR][1]" value=""></p> + <p><label><?php echo $l->t('Street'); ?></label> <input type="text" name="value[ADR][2]" value=""></p> + <p><label><?php echo $l->t('City'); ?></label> <input type="text" name="value[ADR][3]" value=""></p> + <p><label><?php echo $l->t('Region'); ?></label> <input type="text" name="value[ADR][4]" value=""></p> + <p><label><?php echo $l->t('Zipcode'); ?></label> <input type="text" name="value[ADR][5]" value=""></p> + <p><label><?php echo $l->t('Country'); ?></label> <input type="text" name="value[ADR][6]" value=""></p> + </div> + <label for="TEL"><?php echo $l->t('Telephone'); ?></label> + <div id="contacts_phonepart"> + <select id="TEL" name="parameters[TEL][TYPE]" size="1"> + <option value="home"><?php echo $l->t('Home'); ?></option> + <option value="cell" selected="selected"><?php echo $l->t('Mobile'); ?></option> + <option value="work"><?php echo $l->t('Work'); ?></option> + <option value="text"><?php echo $l->t('Text'); ?></option> + <option value="voice"><?php echo $l->t('Voice'); ?></option> + <option value="fax"><?php echo $l->t('Fax'); ?></option> + <option value="video"><?php echo $l->t('Video'); ?></option> + <option value="pager"><?php echo $l->t('Pager'); ?></option> + </select> + <input type="text" name="value[TEL]" value=""> + </div> + <label for="EMAIL"><?php echo $l->t('Email'); ?></label> + <div id="contacts_email"> + <input id="EMAIL" type="text" name="value[EMAIL]" value=""> + </div> + <label for="ORG"><?php echo $l->t('Organization'); ?></label> + <div id="contacts_organisation"> + <input id="ORG" type="text" name="value[ORG]" value=""> + </div> <input type="submit" name="submit" value="<?php echo $l->t('Create Contact'); ?>"> </form> diff --git a/apps/contacts/templates/part.addpropertyform.php b/apps/contacts/templates/part.addpropertyform.php index 32affde952688024d7c529a7b75c68ae981b5f59..885330e57783eef84658d223df9c2b7551f42a03 100644 --- a/apps/contacts/templates/part.addpropertyform.php +++ b/apps/contacts/templates/part.addpropertyform.php @@ -17,24 +17,24 @@ <option value="adr_work"><?php echo $l->t('Work'); ?></option> <option value="adr_home" selected="selected"><?php echo $l->t('Home'); ?></option> </select> - <?php echo $l->t('PO Box'); ?> <input type="text" name="value[0]" value=""> - <?php echo $l->t('Extended Address'); ?> <input type="text" name="value[1]" value=""> - <?php echo $l->t('Street Name'); ?> <input type="text" name="value[2]" value=""> - <?php echo $l->t('City'); ?> <input type="text" name="value[3]" value=""> - <?php echo $l->t('Region'); ?> <input type="text" name="value[4]" value=""> - <?php echo $l->t('Postal Code'); ?> <input type="text" name="value[5]" value=""> - <?php echo $l->t('Country'); ?> <input type="text" name="value[6]" value=""> + <p><label><?php echo $l->t('PO Box'); ?></label> <input type="text" name="value[0]" value=""></p> + <p><label><?php echo $l->t('Extended'); ?></label> <input type="text" name="value[1]" value=""></p> + <p><label><?php echo $l->t('Street'); ?></label> <input type="text" name="value[2]" value=""></p> + <p><label><?php echo $l->t('City'); ?></label> <input type="text" name="value[3]" value=""></p> + <p><label><?php echo $l->t('Region'); ?></label> <input type="text" name="value[4]" value=""></p> + <p><label><?php echo $l->t('Zipcode'); ?></label> <input type="text" name="value[5]" value=""></p> + <p><label><?php echo $l->t('Country'); ?></label> <input type="text" name="value[6]" value=""></p> </div> <div id="contacts_phonepart"> <select name="parameters[TYPE]" size="1"> - <option value="home"><?php echo $l->t('tel_home'); ?></option> - <option value="cell" selected="selected"><?php echo $l->t('tel_cell'); ?></option> - <option value="work"><?php echo $l->t('tel_work'); ?></option> - <option value="text"><?php echo $l->t('tel_text'); ?></option> - <option value="voice"><?php echo $l->t('tel_voice'); ?></option> - <option value="fax"><?php echo $l->t('tel_fax'); ?></option> - <option value="video"><?php echo $l->t('tel_video'); ?></option> - <option value="pager"><?php echo $l->t('tel_pager'); ?></option> + <option value="home"><?php echo $l->t('Home'); ?></option> + <option value="cell" selected="selected"><?php echo $l->t('Mobile'); ?></option> + <option value="work"><?php echo $l->t('Work'); ?></option> + <option value="text"><?php echo $l->t('Text'); ?></option> + <option value="voice"><?php echo $l->t('Voice'); ?></option> + <option value="fax"><?php echo $l->t('Fax'); ?></option> + <option value="video"><?php echo $l->t('Video'); ?></option> + <option value="pager"><?php echo $l->t('Pager'); ?></option> </select> <input type="text" name="value" value=""> </div> diff --git a/apps/contacts/templates/part.details.php b/apps/contacts/templates/part.details.php index c6bedcdd913e95107e9fdd9cbe7a09ff9bccf1f8..438f84d45d4ca6d992eb739831d4806d521e94f0 100644 --- a/apps/contacts/templates/part.details.php +++ b/apps/contacts/templates/part.details.php @@ -1,5 +1,5 @@ <?php if(array_key_exists('FN',$_['details'])): ?> - <table> + <table id="contacts_details"> <?php if(isset($_['details']['PHOTO'])): // Emails first ?> <tr class="contacts_details_property"> <td class="contacts_details_left"> </td> @@ -27,9 +27,8 @@ <?php endif; ?> <?php endforeach; ?> </table> + <form> + <img class="svg action" id="contacts_deletecard" src="<?php echo image_path('', 'actions/delete.svg'); ?>" title="<?php echo $l->t('Delete contact');?>" /> + <input type="button" id="contacts_addproperty" value="<?php echo $l->t('Add Property');?>"> + </form> <?php endif; ?> - -<form> - <input type="button" id="contacts_deletecard" value="<?php echo $l->t('Delete');?>"> - <input type="button" id="contacts_addproperty" value="<?php echo $l->t('Add Property');?>"> -</form> diff --git a/apps/contacts/templates/part.property.php b/apps/contacts/templates/part.property.php index d0d2b773ef36185389b37b85910ca1b8e6655c24..31fb187a0d3355456aea75678962bdf4324560e2 100644 --- a/apps/contacts/templates/part.property.php +++ b/apps/contacts/templates/part.property.php @@ -1,8 +1,8 @@ <tr class="contacts_details_property" data-checksum="<?php echo $_['property']['checksum']; ?>"> <?php if($_['property']['name'] == 'FN'): ?> - <td class="contacts_details_left"><?php echo $l->t('Name'); ?></td> + <td class="contacts_details_left"></td> <td class="contacts_details_right"> - <?php echo $_['property']['value']; ?> + <strong><?php echo $_['property']['value']; ?></strong> <span style="display:none;" data-use="edit"><img class="svg action" src="<?php echo image_path('', 'actions/rename.svg'); ?>" /></span> </td> <?php elseif($_['property']['name'] == 'BDAY'): ?> @@ -12,7 +12,7 @@ <span style="display:none;" data-use="delete"><img class="svg action" src="<?php echo image_path('', 'actions/delete.svg'); ?>" /></span> </td> <?php elseif($_['property']['name'] == 'ORG'): ?> - <td class="contacts_details_left"><?php echo $l->t('Organisation'); ?></td> + <td class="contacts_details_left"><?php echo $l->t('Organization'); ?></td> <td class="contacts_details_right"> <?php echo $_['property']['value']; ?> <span style="display:none;" data-use="edit"><img class="svg action" src="<?php echo image_path('', 'actions/rename.svg'); ?>" /></span> @@ -26,11 +26,11 @@ <span style="display:none;" data-use="delete"><img class="svg action" src="<?php echo image_path('', 'actions/delete.svg'); ?>" /></span> </td> <?php elseif($_['property']['name'] == 'TEL'): ?> - <td class="contacts_details_left"><?php echo $l->t('Telephone'); ?></td> + <td class="contacts_details_left"><?php echo $l->t('Phone'); ?></td> <td class="contacts_details_right"> <?php echo $_['property']['value']; ?> <?php if(isset($_['property']['parameters']['TYPE'])): ?> - (<?php echo $l->t('tel_'.strtolower($_['property']['parameters']['TYPE'])); ?>) + (<?php echo strtolower($_['property']['parameters']['TYPE']); ?>) <?php endif; ?> <span style="display:none;" data-use="edit"><img class="svg action" src="<?php echo image_path('', 'actions/rename.svg'); ?>" /></span> <span style="display:none;" data-use="delete"><img class="svg action" src="<?php echo image_path('', 'actions/delete.svg'); ?>" /></span> @@ -40,7 +40,7 @@ <?php echo $l->t('Address'); ?> <?php if(isset($_['property']['parameters']['TYPE'])): ?> <br> - (<?php echo $l->t('adr_'.strtolower($_['property']['parameters']['TYPE'])); ?>) + (<?php echo strtolower($_['property']['parameters']['TYPE']); ?>) <?php endif; ?> </td> <td class="contacts_details_right"> @@ -48,10 +48,10 @@ <?php echo $l->t('PO Box'); ?> <?php echo $_['property']['value'][0]; ?><br> <?php endif; ?> <?php if(!empty($_['property']['value'][1])): ?> - <?php echo $l->t('Extended Address'); ?> <?php echo $_['property']['value'][1]; ?><br> + <?php echo $l->t('Extended'); ?> <?php echo $_['property']['value'][1]; ?><br> <?php endif; ?> <?php if(!empty($_['property']['value'][2])): ?> - <?php echo $l->t('Street Name'); ?> <?php echo $_['property']['value'][2]; ?><br> + <?php echo $l->t('Street'); ?> <?php echo $_['property']['value'][2]; ?><br> <?php endif; ?> <?php if(!empty($_['property']['value'][3])): ?> <?php echo $l->t('City'); ?> <?php echo $_['property']['value'][3]; ?><br> @@ -60,7 +60,7 @@ <?php echo $l->t('Region'); ?> <?php echo $_['property']['value'][4]; ?><br> <?php endif; ?> <?php if(!empty($_['property']['value'][5])): ?> - <?php echo $l->t('Postal Code'); ?> <?php echo $_['property']['value'][5]; ?><br> + <?php echo $l->t('Zipcode'); ?> <?php echo $_['property']['value'][5]; ?><br> <?php endif; ?> <?php if(!empty($_['property']['value'][6])): ?> <?php echo $l->t('Country'); ?> <?php echo $_['property']['value'][6]; ?> diff --git a/apps/contacts/templates/part.setpropertyform.php b/apps/contacts/templates/part.setpropertyform.php index 52483ebf4b7bfff1cf5f9dfd96659ca7379a081f..69c789795e52a188dd6a71d5fba9e177b2c854ae 100644 --- a/apps/contacts/templates/part.setpropertyform.php +++ b/apps/contacts/templates/part.setpropertyform.php @@ -3,11 +3,11 @@ <input type="hidden" name="id" value="<?php echo $_['id']; ?>"> <?php if($_['property']['name']=='ADR'): ?> <label><?php echo $l->t('PO Box'); ?></label> <input type="text" name="value[0]" value="<?php echo $_['property']['value'][0]; ?>"><br> - <label><?php echo $l->t('Extended Address'); ?></label> <input type="text" name="value[1]" value="<?php echo $_['property']['value'][1]; ?>"><br> - <label><?php echo $l->t('Street Name'); ?></label> <input type="text" name="value[2]" value="<?php echo $_['property']['value'][2]; ?>"><br> + <label><?php echo $l->t('Extended'); ?></label> <input type="text" name="value[1]" value="<?php echo $_['property']['value'][1]; ?>"><br> + <label><?php echo $l->t('Street'); ?></label> <input type="text" name="value[2]" value="<?php echo $_['property']['value'][2]; ?>"><br> <label><?php echo $l->t('City'); ?></label> <input type="text" name="value[3]" value="<?php echo $_['property']['value'][3]; ?>"><br> <label><?php echo $l->t('Region'); ?></label> <input type="text" name="value[4]" value="<?php echo $_['property']['value'][4]; ?>"><br> - <label><?php echo $l->t('Postal Code'); ?></label> <input type="text" name="value[5]" value="<?php echo $_['property']['value'][5]; ?>"><br> + <label><?php echo $l->t('Zipcode'); ?></label> <input type="text" name="value[5]" value="<?php echo $_['property']['value'][5]; ?>"><br> <label><?php echo $l->t('Country'); ?></label> <input type="text" name="value[6]" value="<?php echo $_['property']['value'][6]; ?>"><br> <?php elseif($_['property']['name']=='TEL'): ?> <input type="text" name="value" value="<?php echo $_['property']['value']; ?>"> diff --git a/apps/contacts/templates/settings.php b/apps/contacts/templates/settings.php new file mode 100644 index 0000000000000000000000000000000000000000..f5c37c5a04472030961b9fb099510bbbdd7b9a24 --- /dev/null +++ b/apps/contacts/templates/settings.php @@ -0,0 +1,7 @@ +<form id="mediaform"> + <fieldset class="personalblock"> + <strong>Contacts</strong><br /> + CardDAV syncing address: + <?php echo OC_Helper::linkTo('apps/contacts', 'carddav.php', null, true); ?><br /> + </fieldset> +</form> diff --git a/apps/files_imageviewer/appinfo/info.xml b/apps/files_imageviewer/appinfo/info.xml index f3b5a67960ebcb905942648d66dfd3b027dd2b66..00b55c254dd727fe189bcb6484eb238ce19a2dab 100644 --- a/apps/files_imageviewer/appinfo/info.xml +++ b/apps/files_imageviewer/appinfo/info.xml @@ -7,4 +7,5 @@ <licence>AGPL</licence> <author>Robin Appelman</author> <require>2</require> -</info> \ No newline at end of file + <default_enable/> +</info> diff --git a/apps/files_publiclink/admin.php b/apps/files_publiclink/admin.php deleted file mode 100644 index 33d8f04a603b0a2a8edc45745d58cd07266a452a..0000000000000000000000000000000000000000 --- a/apps/files_publiclink/admin.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php - -/** -* ownCloud - ajax frontend -* -* @author Robin Appelman -* @copyright 2010 Robin Appelman icewind1991@gmail.com -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either -* version 3 of the License, or any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU AFFERO GENERAL PUBLIC LICENSE for more details. -* -* You should have received a copy of the GNU Affero General Public -* License along with this library. If not, see <http://www.gnu.org/licenses/>. -* -*/ - - -// Init owncloud -require_once('../../lib/base.php'); -require_once( 'lib_public.php' ); - - -// Check if we are a user -if( !OC_User::isLoggedIn()){ - header( "Location: ".OC_Helper::linkTo( "index.php" )); - exit(); -} - -OC_App::setActiveNavigationEntry( "files_publiclink_administration" ); - -OC_Util::addScript( 'files_publiclink', 'admin' ); - -$baseUrl = OC_Helper::linkTo('files_publiclink','get.php', null, true); - - -// return template -$tmpl = new OC_Template( "files_publiclink", "admin", "user" ); -$tmpl->assign( 'links', OC_PublicLink::getLinks()); -$tmpl->assign('baseUrl',$baseUrl); -$tmpl->printPage(); - -?> diff --git a/apps/files_publiclink/ajax/deletelink.php b/apps/files_publiclink/ajax/deletelink.php deleted file mode 100644 index e2e4ff944a6b8467058735e623ebbfb910119b46..0000000000000000000000000000000000000000 --- a/apps/files_publiclink/ajax/deletelink.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -$RUNTIME_NOAPPS=true; //no need to load the apps - -require_once '../../../lib/base.php'; - -require_once '../lib_public.php'; - -$token=$_GET['token']; - -OC_PublicLink::delete($token); -?> \ No newline at end of file diff --git a/apps/files_publiclink/ajax/getlink.php b/apps/files_publiclink/ajax/getlink.php deleted file mode 100644 index 551bcc8780cd9d1cf14b8b2b8fb9e0766389b61a..0000000000000000000000000000000000000000 --- a/apps/files_publiclink/ajax/getlink.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$RUNTIME_NOAPPS = true; - -require_once('../../../lib/base.php'); -require_once('../lib_public.php'); - -$path = $_GET['path']; -echo json_encode(OC_PublicLink::getLink($path)); \ No newline at end of file diff --git a/apps/files_publiclink/ajax/makelink.php b/apps/files_publiclink/ajax/makelink.php deleted file mode 100644 index 685feb2fb890eecec3a9c1a6958ba0d7f692f3b1..0000000000000000000000000000000000000000 --- a/apps/files_publiclink/ajax/makelink.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php -$RUNTIME_NOAPPS=true; //no need to load the apps - -require_once '../../../lib/base.php'; - -require_once '../lib_public.php'; - -$path=$_GET['path']; -$expire=0; - -$link=new OC_PublicLink($path,$expire); -echo $link->getToken(); -?> diff --git a/apps/files_publiclink/appinfo/app.php b/apps/files_publiclink/appinfo/app.php deleted file mode 100644 index 5866e2d1c5e9baa6772826129f56008e55a1cf6f..0000000000000000000000000000000000000000 --- a/apps/files_publiclink/appinfo/app.php +++ /dev/null @@ -1,6 +0,0 @@ -<?php - -// OC_App::addNavigationEntry(array( "id" => "files_publiclink_administration", "order" => 2, "href" => OC_Helper::linkTo( "files_publiclink", "admin.php" ), "name" => "Public Links")); - - -?> diff --git a/apps/files_publiclink/appinfo/database.xml b/apps/files_publiclink/appinfo/database.xml deleted file mode 100644 index 4fe6be47d8ddce2f649a95430e871c316795a69c..0000000000000000000000000000000000000000 --- a/apps/files_publiclink/appinfo/database.xml +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1" ?> -<database> - <name>*dbname*</name> - <create>true</create> - <overwrite>false</overwrite> - <charset>latin1</charset> - <table> - <name>*dbprefix*publiclink</name> - <declaration> - <field> - <name>token</name> - <type>text</type> - <default></default> - <notnull>true</notnull> - <length>40</length> - </field> - <field> - <name>path</name> - <type>text</type> - <default></default> - <notnull>true</notnull> - <length>128</length> - </field> - <field> - <name>user</name> - <type>text</type> - <default> - </default> - <notnull>true</notnull> - <length>64</length> - </field> - <field> - <name>expire_time</name> - <type>timestamp</type> - <notnull>true</notnull> - </field> - <index> - <name>a_files_publiclink_token</name> - <unique>true</unique> - <field> - <name>token</name> - <sorting>ascending</sorting> - </field> - </index> - </declaration> - </table> -</database> diff --git a/apps/files_publiclink/appinfo/info.xml b/apps/files_publiclink/appinfo/info.xml deleted file mode 100644 index 1d41ea96662cbd63fd296b81b88cc1b0eb7e8aef..0000000000000000000000000000000000000000 --- a/apps/files_publiclink/appinfo/info.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0"?> -<info> - <id>files_publiclink</id> - <name>Share by Publiclink</name> - <description>Simple file sharing by creating a public link to a file</description> - <version>0.2</version> - <licence>AGPL</licence> - <author>Robin Appelman</author> - <require>2</require> -</info> \ No newline at end of file diff --git a/apps/files_publiclink/get.php b/apps/files_publiclink/get.php deleted file mode 100644 index 2e1ba4bf363cc18bb67231d3a04c9c742696e503..0000000000000000000000000000000000000000 --- a/apps/files_publiclink/get.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php -$RUNTIME_NOAPPS=true; //no need to load the apps -$RUNTIME_NOSETUPFS=true; //don't setup the fs yet - -require_once '../../lib/base.php'; - -require_once 'lib_public.php'; - -//get the path of the shared file -$token=$_GET['token']; -$path=OC_PublicLink::getPath($token); -$root=$path; - -if($path!==false){ - if(isset($_GET['path']) and !strstr($_GET['path'],'..')){ - $subPath=$_GET['path']; - }else{ - $subPath=''; - } - $path.=$subPath; - if(!OC_Filesystem::file_exists($path)){ - header("HTTP/1.0 404 Not Found"); - $tmpl = new OC_Template( '', '404', 'guest' ); - $tmpl->assign('file',$subPath); - $tmpl->printPage(); - exit; - } - if(OC_Filesystem::is_dir($path)){ - $files = array(); - $rootLength=strlen($root); - foreach( OC_Files::getdirectorycontent( $path ) as $i ){ - $i['date'] = OC_Util::formatDate($i['mtime'] ); - $i['directory']=substr($i['directory'],$rootLength); - if($i['directory']=='/'){ - $i['directory']=''; - } - $files[] = $i; - } - - // Make breadcrumb - $breadcrumb = array(); - $pathtohere = "/"; - foreach( explode( "/", $subPath ) as $i ){ - if( $i != "" ){ - $pathtohere .= "$i/"; - $breadcrumb[] = array( "dir" => $pathtohere, "name" => $i ); - } - } - - $breadcrumbNav = new OC_Template( "files_publiclink", "breadcrumb", "" ); - $breadcrumbNav->assign( "breadcrumb", $breadcrumb ); - $breadcrumbNav->assign('token',$token); - - $list = new OC_Template( 'files_publiclink', 'files', '' ); - $list->assign( 'files', $files ); - $list->assign('token',$token); - - $tmpl = new OC_Template( 'files_publiclink', 'index', 'user' ); - $tmpl->assign('fileList', $list->fetchPage()); - $tmpl->assign( "breadcrumb", $breadcrumbNav->fetchPage() ); - $tmpl->printPage(); - }else{ - //get time mimetype and set the headers - $mimetype=OC_Filesystem::getMimeType($path); - header('Content-Transfer-Encoding: binary'); - header('Expires: 0'); - header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); - header('Pragma: public'); - header('Content-Disposition: filename="'.basename($path).'"'); - header('Content-Type: ' . $mimetype); - header('Content-Length: ' . OC_Filesystem::filesize($path)); - - //download the file - @ob_clean(); - OC_Filesystem::readfile($path); - } -}else{ - header("HTTP/1.0 404 Not Found"); - $tmpl = new OC_Template( '', '404', 'guest' ); - $tmpl->printPage(); - die(); -} -?> \ No newline at end of file diff --git a/apps/files_publiclink/js/admin.js b/apps/files_publiclink/js/admin.js deleted file mode 100644 index 91ee58beda8b3eb5e1e0dc9b63451e1bac364457..0000000000000000000000000000000000000000 --- a/apps/files_publiclink/js/admin.js +++ /dev/null @@ -1,45 +0,0 @@ -$(document).ready(function() { - $( "#path" ).autocomplete({ - source: "../../files/ajax/autocomplete.php", - minLength: 1 - }); - $(".delete").live('click', function( event ) { - event.preventDefault(); - var token=$(this).attr('data-token'); - var data="token="+token; - $.ajax({ - type: 'GET', - url: 'ajax/deletelink.php', - cache: false, - data: data, - success: function(){ - $('#'+token).remove(); - } - }); - }); - $('#newlink').submit(function( event ){ - event.preventDefault(); - var path=$('#path').val(); - var expire=0; - var data='path='+path+'&expire='+expire; - $.ajax({ - type: 'GET', - url: 'ajax/makelink.php', - cache: false, - data: data, - success: function(token){ - if(token){ - var html="<tr class='link' id='"+token+"'>"; - html+="<td class='path'>"+path+"</td>"; - html+="<td class='link'><input type='text' value='"+$('#baseUrl').val()+"?token="+token+"' /></td>" - html+="<td><input type='submit' class='delete' data-token='"+token+" value='Delete' /></td>" - html+="</tr>" - $(html).insertAfter($('#newlink_row')); - $('#path').val(''); - $('#'+token+' input').focus(); - $('#'+token+' input').select(); - } - } - }); - }); -}); diff --git a/apps/files_publiclink/lib_public.php b/apps/files_publiclink/lib_public.php deleted file mode 100644 index ece0a540d398403db612d6571827f4a4337dd5d0..0000000000000000000000000000000000000000 --- a/apps/files_publiclink/lib_public.php +++ /dev/null @@ -1,84 +0,0 @@ -<?php -class OC_PublicLink{ - /** - * create a new public link - * @param string path - * @param int (optional) expiretime time the link expires, as timestamp - */ - public function __construct($path,$expiretime=0){ - if($path and OC_Filesystem::file_exists($path) and OC_Filesystem::is_readable($path)){ - $user=OC_User::getUser(); - $token=sha1("$user-$path-$expiretime"); - $query=OC_DB::prepare("INSERT INTO *PREFIX*publiclink VALUES(?,?,?,?)"); - $result=$query->execute(array($token,$path,$user,$expiretime)); - if( PEAR::isError($result)) { - $entry = 'DB Error: "'.$result->getMessage().'"<br />'; - $entry .= 'Offending command was: '.$result->getDebugInfo().'<br />'; - error_log( $entry ); - die( $entry ); - } - $this->token=$token; - } - } - - /** - * get the path of that shared file - */ - public static function getPath($token) { - //get the path and the user - $query=OC_DB::prepare("SELECT user,path FROM *PREFIX*publiclink WHERE token=?"); - $result=$query->execute(array($token)); - $data=$result->fetchAll(); - if(count($data)>0){ - $path=$data[0]['path']; - $user=$data[0]['user']; - - //prepare the filesystem - OC_Util::setupFS($user); - - return $path; - }else{ - return false; - } - } - - /** - * get the token for the public link - * @return string - */ - public function getToken(){ - return $this->token; - } - - public static function getLink($path) { - $query=OC_DB::prepare("SELECT token FROM *PREFIX*publiclink WHERE user=? AND path=? LIMIT 1"); - $result=$query->execute(array(OC_User::getUser(),$path))->fetchAll(); - if(count($result)>0){ - return $result[0]['token']; - } - } - - /** - * gets all public links - * @return array - */ - static public function getLinks(){ - $query=OC_DB::prepare("SELECT * FROM *PREFIX*publiclink WHERE user=?"); - return $query->execute(array(OC_User::getUser()))->fetchAll(); - } - - /** - * delete a public link - */ - static public function delete($token){ - $query=OC_DB::prepare("SELECT user,path FROM *PREFIX*publiclink WHERE token=?"); - $result=$query->execute(array($token))->fetchAll(); - if(count($result)>0 and $result[0]['user']==OC_User::getUser()){ - $query=OC_DB::prepare("DELETE FROM *PREFIX*publiclink WHERE token=?"); - $query->execute(array($token)); - } - } - - private $token; -} -?> diff --git a/apps/files_publiclink/templates/admin.php b/apps/files_publiclink/templates/admin.php deleted file mode 100644 index b5c04b838bdd1a9d01c7e05aa2ae59dd602c03d4..0000000000000000000000000000000000000000 --- a/apps/files_publiclink/templates/admin.php +++ /dev/null @@ -1,18 +0,0 @@ -<input type="hidden" id="baseUrl" value="<?php echo $_['baseUrl'];?>"/> -<table id="linklist"> - <thead id="controls"> - <tr id="newlink_row"><form action="#" id="newlink"> - <td class="path"><input placeholder="Path" id="path"/></td> - <td><input type="submit" value="Share" /></td> - </form></tr> - </thead> - <tbody> - <?php foreach($_['links'] as $link):?> - <tr class="link" id="<?php echo $link['token'];?>"> - <td class="path"><?php echo $link['path'];?></td> - <td class="link"><input type="text" value="<?php echo $_['baseUrl'];?>?token=<?php echo $link['token'];?>" /></td> - <td><input type="submit" class="delete" data-token="<?php echo $link['token'];?>" value="<?php echo $l->t( 'Delete' ); ?>" /></td> - </tr> - <?php endforeach;?> - </tbody> -</table> diff --git a/apps/files_sharing/ajax/getitem.php b/apps/files_sharing/ajax/getitem.php index 249af6cfa31b803c29808cea1bf8399936c4e5c7..8d51c1465232f4f2e84b3d3b030ccdfc435c2f07 100644 --- a/apps/files_sharing/ajax/getitem.php +++ b/apps/files_sharing/ajax/getitem.php @@ -2,6 +2,7 @@ $RUNTIME_NOAPPS = true; require_once('../../../lib/base.php'); +OC_JSON::checkAppEnabled('files_sharing'); require_once('../lib_share.php'); $userDirectory = "/".OC_User::getUser()."/files"; @@ -30,7 +31,7 @@ while ($source != "" && $source != "/" && $source != "." && $source != $userDire $source = dirname($source); } if (!empty($users)) { - echo json_encode($users); + OC_JSON::encodedPrint($users); } -?> \ No newline at end of file +?> diff --git a/apps/files_sharing/ajax/setpermissions.php b/apps/files_sharing/ajax/setpermissions.php index 8e0bac0b06f6dca8d2bd73cdfe26743ece80e826..7ee8f0e57bd21e9a308060f44ececfa8894c0c46 100644 --- a/apps/files_sharing/ajax/setpermissions.php +++ b/apps/files_sharing/ajax/setpermissions.php @@ -2,6 +2,7 @@ $RUNTIME_NOAPPS = true; require_once('../../../lib/base.php'); +OC_JSON::checkAppEnabled('files_sharing'); require_once('../lib_share.php'); $source = "/".OC_User::getUser()."/files".$_GET['source']; @@ -9,4 +10,4 @@ $uid_shared_with = $_GET['uid_shared_with']; $permissions = $_GET['permissions']; OC_Share::setPermissions($source, $uid_shared_with, $permissions); -?> \ No newline at end of file +?> diff --git a/apps/files_sharing/ajax/share.php b/apps/files_sharing/ajax/share.php index e672cf0240342e5903205cf52b9a00eb7ec2f672..6a2b45b3a7df6979815ea1b93c0339953a6c9ea2 100644 --- a/apps/files_sharing/ajax/share.php +++ b/apps/files_sharing/ajax/share.php @@ -2,6 +2,7 @@ $RUNTIME_NOAPPS = true; require_once('../../../lib/base.php'); +OC_JSON::checkAppEnabled('files_sharing'); require_once('../lib_share.php'); $userDirectory = "/".OC_User::getUser()."/files"; @@ -26,4 +27,4 @@ foreach ($sources as $source) { } } -?> \ No newline at end of file +?> diff --git a/apps/files_sharing/ajax/unshare.php b/apps/files_sharing/ajax/unshare.php index b9230d257b767d9c32f01cb8446f9b34fedc082b..a19a85cfda3639b20a917abbbb7237116d1c3826 100644 --- a/apps/files_sharing/ajax/unshare.php +++ b/apps/files_sharing/ajax/unshare.php @@ -2,10 +2,11 @@ $RUNTIME_NOAPPS = true; require_once('../../../lib/base.php'); +OC_JSON::checkAppEnabled('files_sharing'); require_once('../lib_share.php'); $source = "/".OC_User::getUser()."/files".$_GET['source']; $uid_shared_with = $_GET['uid_shared_with']; OC_Share::unshare($source, $uid_shared_with); -?> \ No newline at end of file +?> diff --git a/apps/files_sharing/ajax/userautocomplete.php b/apps/files_sharing/ajax/userautocomplete.php index 6da7afb659c957591e47e8a7e1d3006f8d51e623..21516c3d091a4bedd1f2c74186f4de6fb519f08c 100644 --- a/apps/files_sharing/ajax/userautocomplete.php +++ b/apps/files_sharing/ajax/userautocomplete.php @@ -3,10 +3,9 @@ $RUNTIME_NOAPPS = true; require_once('../../../lib/base.php'); -if (!OC_User::isLoggedIn()) { - echo json_encode(array("status" => "error", "data" => array("message" => "Authentication error"))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('files_sharing'); + $users = array(); $ocusers = OC_User::getUsers(); $self = OC_User::getUser(); @@ -23,6 +22,6 @@ foreach ($groups as $group) { $users[] = "<option value='".$group."'>".$group."</option>"; } $users[] = "</optgroup>"; -echo json_encode($users); +OC_JSON::encodedPrint($users); ?> diff --git a/apps/files_sharing/appinfo/info.xml b/apps/files_sharing/appinfo/info.xml index 2fbb3300f69f7b08671235b3efdc1dd94e0bd7ff..abf847b4483a2ccf6a8d747f2b5f9148608790fa 100644 --- a/apps/files_sharing/appinfo/info.xml +++ b/apps/files_sharing/appinfo/info.xml @@ -7,4 +7,5 @@ <licence>AGPL</licence> <author>Michael Gapczynski</author> <require>2</require> -</info> \ No newline at end of file + <default_enable/> +</info> diff --git a/apps/files_sharing/get.php b/apps/files_sharing/get.php index a1b6c316cd526d49c1d5f00a1e4a67aba42d759b..ca95a68c6ce940f0277c383cabd99eeafe20c477 100644 --- a/apps/files_sharing/get.php +++ b/apps/files_sharing/get.php @@ -3,6 +3,7 @@ $RUNTIME_NOAPPS=true; //no need to load the apps $RUNTIME_NOSETUPFS=true; //don't setup the fs yet require_once '../../lib/base.php'; +OC_JSON::checkAppEnabled('files_sharing'); require_once 'lib_share.php'; //get the path of the shared file @@ -29,8 +30,9 @@ if ($source !== false) { foreach (OC_Files::getdirectorycontent($source) as $i) { $i['date'] = OC_Util::formatDate($i['mtime'] ); if ($i['type'] == 'file') { - $i['extention'] = substr($i['name'], strrpos($i['name'], ".")); - $i['basename'] = substr($i['name'], 0, strrpos($i['name'], ".")); + $fileinfo = pathinfo($i['name']); + $i['basename'] = $fileinfo['filename']; + $i['extention'] = isset($fileinfo['extension']) ? ('.'.$fileinfo['extension']) : ''; } $i['directory'] = substr($i['directory'], $rootLength); if ($i['directory'] == "/") { @@ -56,9 +58,11 @@ if ($source !== false) { $list->assign("files", $files); $list->assign("baseURL", OC_Helper::linkTo("files_sharing", "get.php")."?token=".$token."&path="); $list->assign("downloadURL", OC_Helper::linkTo("files_sharing", "get.php")."?token=".$token."&path="); + $list->assign("readonly", true); $tmpl = new OC_Template("files", "index", "user"); $tmpl->assign("fileList", $list->fetchPage()); $tmpl->assign("breadcrumb", $breadcrumbNav->fetchPage()); + $tmpl->assign("readonly", true); $tmpl->printPage(); } else { //get time mimetype and set the headers @@ -67,7 +71,7 @@ if ($source !== false) { header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Pragma: public"); - header("Content-Disposition: filename=".basename($source)); + header('Content-Disposition: filename="'.basename($source).'"'); header("Content-Type: " . $mimetype); header("Content-Length: " . OC_Filesystem::filesize($source)); //download the file diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js index 1bd1ac1075b5e47345cd609d96f53ee688c0a6ee..aaffc3824ea326196f68506747df3ee5405d84bb 100644 --- a/apps/files_sharing/js/share.js +++ b/apps/files_sharing/js/share.js @@ -215,9 +215,12 @@ function addUser(uid_shared_with, permissions, parentFolder) { } else { var checked = ((permissions > 0) ? 'checked="checked"' : 'style="display:none;"'); var style = ((permissions == 0) ? 'style="display:none;"' : ''); - var user = '<li data-uid_shared_with="'+uid_shared_with+'">'+uid_shared_with; - user += '<input type="checkbox" name="permissions" id="'+uid_shared_with+'" class="permissions" "+checked+" /><label for="'+uid_shared_with+'" '+style+'>can edit</label>'; - user += '<a href="" class="unshare" style="display:none;"><img class="svg" alt="Unshare" src="'+OC.imagePath('core','actions/delete')+'"/></a></li>'; + var user = '<li data-uid_shared_with="'+uid_shared_with+'">'; + user += '<a href="" class="unshare" style="display:none;"><img class="svg" alt="Unshare" src="'+OC.imagePath('core','actions/delete')+'"/></a>'; + user += uid_shared_with; + user += '<input type="checkbox" name="permissions" id="'+uid_shared_with+'" class="permissions" "+checked+" />'; + user += '<label for="'+uid_shared_with+'" '+style+'>can edit</label>'; + user += '</li>'; } $('#share_with option[value="'+uid_shared_with+'"]').remove(); $('#share_with').trigger('liszt:updated'); diff --git a/apps/files_sharing/list.php b/apps/files_sharing/list.php index 0a11f438eb7b59073a72b419e3584a9266e3a880..721620dc92253b3c8313272380972d5e8c0f0288 100644 --- a/apps/files_sharing/list.php +++ b/apps/files_sharing/list.php @@ -23,10 +23,8 @@ require_once('../../lib/base.php'); require_once('lib_share.php'); -if (!OC_User::isLoggedIn()){ - header( "Location: ".OC_HELPER::linkTo( "index.php" )); - exit(); -} +OC_Util::checkLoggedIn(); +OC_Util::checkAppEnabled('files_sharing'); OC_App::setActiveNavigationEntry("files_sharing_list"); @@ -36,4 +34,4 @@ $tmpl = new OC_Template("files_sharing", "list", "user"); $tmpl->assign("shared_items", OC_Share::getMySharedItems()); $tmpl->printPage(); -?> \ No newline at end of file +?> diff --git a/apps/files_sharing/templates/list.php b/apps/files_sharing/templates/list.php index 7faf2cf4ba611676280bd92c838616bdad36ed0e..d46ff818ac18d15adbab24347b40bd05275ffafb 100644 --- a/apps/files_sharing/templates/list.php +++ b/apps/files_sharing/templates/list.php @@ -1,11 +1,11 @@ <fieldset> - <legend>Your Shared Files</legend> + <legend><?php echo $l->t('Your Shared Files');?></legend> <table id="itemlist"> <thead> <tr> - <th>Item</th> - <th>Shared With</th> - <th>Permissions</th> + <th><?php echo $l->t('Item');?></th> + <th><?php echo $l->t('Shared With');?></th> + <th><?php echo $l->t('Permissions');?></th> </tr> </thead> <tbody> @@ -13,8 +13,8 @@ <tr class="item"> <td class="source"><?php echo substr($item['source'], strlen("/".$_SESSION['user_id']."/files/"));?></td> <td class="uid_shared_with"><?php echo $item['uid_shared_with'];?></td> - <td class="permissions"><?php echo "Read"; echo($item['permissions'] & OC_SHARE::WRITE ? ", Edit" : ""); echo($item['permissions'] & OC_SHARE::DELETE ? ", Delete" : "");?></td> - <td><button class="delete" data-source="<?php echo $item['source'];?>" data-uid_shared_with="<?php echo $item['uid_shared_with'];?>">Delete</button></td> + <td class="permissions"><?php echo $l->t('Read'); echo($item['permissions'] & OC_SHARE::WRITE ? ", ".$l->t('Edit') : ""); echo($item['permissions'] & OC_SHARE::DELETE ? ", ".$l->t('Delete') : "");?></td> + <td><button class="delete" data-source="<?php echo $item['source'];?>" data-uid_shared_with="<?php echo $item['uid_shared_with'];?>"><?php echo $l->t('Delete');?></button></td> </tr> <?php endforeach;?> <tr id="share_item_row"> diff --git a/apps/files_textviewer/appinfo/info.xml b/apps/files_textviewer/appinfo/info.xml index 209b414034639a609d82b535a9cd26bf6ab3a73b..becfd5e35c83255b76e95a65a1a7addaa8b9627a 100644 --- a/apps/files_textviewer/appinfo/info.xml +++ b/apps/files_textviewer/appinfo/info.xml @@ -6,4 +6,5 @@ <licence>AGPL</licence> <author>Robin Appelman</author> <require>2</require> + <default_enable/> </info> diff --git a/apps/gallery/ajax/cover.php b/apps/gallery/ajax/cover.php new file mode 100644 index 0000000000000000000000000000000000000000..d83f4daaa52ef0f0fac5f6b58b4aef2e9f33ec0e --- /dev/null +++ b/apps/gallery/ajax/cover.php @@ -0,0 +1,59 @@ +<?php +require_once('../../../lib/base.php'); +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('gallery'); + +function CroppedThumbnail($imgSrc,$thumbnail_width,$thumbnail_height) { //$imgSrc is a FILE - Returns an image resource. + //getting the image dimensions + list($width_orig, $height_orig) = getimagesize($imgSrc); + switch (strtolower(substr($imgSrc, strrpos($imgSrc, '.')+1))) { + case "jpeg": + case "jpg": + $myImage = imagecreatefromjpeg($imgSrc); + break; + default: + exit(); + } + $ratio_orig = $width_orig/$height_orig; + + if ($thumbnail_width/$thumbnail_height > $ratio_orig) { + $new_height = $thumbnail_width/$ratio_orig; + $new_width = $thumbnail_width; + } else { + $new_width = $thumbnail_height*$ratio_orig; + $new_height = $thumbnail_height; + } + + $x_mid = $new_width/2; //horizontal middle + $y_mid = $new_height/2; //vertical middle + + $process = imagecreatetruecolor(round($new_width), round($new_height)); + + imagecopyresampled($process, $myImage, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig); + $thumb = imagecreatetruecolor($thumbnail_width, $thumbnail_height); + imagecopyresampled($thumb, $process, 0, 0, ($x_mid-($thumbnail_width/2)), ($y_mid-($thumbnail_height/2)), $thumbnail_width, $thumbnail_height, $thumbnail_width, $thumbnail_height); + + imagedestroy($process); + imagedestroy($myImage); + return $thumb; +} + +$box_size = 200; +$album_name = $_GET['album']; +$x = $_GET['x']; + +$stmt = OC_DB::prepare('SELECT `file_path` FROM *PREFIX*gallery_photos,*PREFIX*gallery_albums WHERE *PREFIX*gallery_albums.`uid_owner` = ? AND `album_name` = ? AND *PREFIX*gallery_photos.`album_id` == *PREFIX*gallery_albums.`album_id`'); +$result = $stmt->execute(array(OC_User::getUser(), $album_name)); +$x = min((int)($x/($box_size/$result->numRows())), $result->numRows()-1); // get image to display +$result->seek($x); // never throws +$path = $result->fetchRow(); +$path = $path['file_path']; +$tmp = OC::$CONFIG_DATADIRECTORY . $path; +$imagesize = getimagesize($tmp); + +header('Content-Type: image/png'); +$image = CroppedThumbnail($tmp, $box_size, $box_size); + +imagepng($image); +imagedestroy($image); +?> diff --git a/apps/gallery/ajax/createAlbum.php b/apps/gallery/ajax/createAlbum.php new file mode 100644 index 0000000000000000000000000000000000000000..610f761b72ac0d8f967fcf19ba1f6f4f353be1b3 --- /dev/null +++ b/apps/gallery/ajax/createAlbum.php @@ -0,0 +1,11 @@ +<?php +require_once('../../../lib/base.php'); +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('gallery'); + +$stmt = OC_DB::prepare('INSERT INTO *PREFIX*gallery_albums ("uid_owner", "album_name") VALUES ("'.OC_User::getUser().'", "'.$_GET['album_name'].'")'); +$stmt->execute(array()); + +OC_JSON::success(array('name' => $_GET['album_name'])); + +?> diff --git a/apps/gallery/ajax/getAlbums.php b/apps/gallery/ajax/getAlbums.php new file mode 100644 index 0000000000000000000000000000000000000000..38bea74636fb0e0604e2ac624fbf61324d579ffa --- /dev/null +++ b/apps/gallery/ajax/getAlbums.php @@ -0,0 +1,19 @@ +<?php +require_once('../../../lib/base.php'); +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('gallery'); + +$a = array(); +$stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_albums WHERE `uid_owner` = ?'); +$result = $stmt->execute(array(OC_User::getUser())); + +while ($r = $result->fetchRow()) { + $album_name = $r['album_name']; + $stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_photos WHERE `album_id` = ?'); + $tmp_res = $stmt->execute(array($r['album_id'])); + $a[] = array('name' => $album_name, 'numOfItems' => min($tmp_res->numRows(), 10)); +} + +OC_JSON::success(array('albums'=>$a)); + +?> diff --git a/apps/gallery/ajax/getCovers.php b/apps/gallery/ajax/getCovers.php new file mode 100644 index 0000000000000000000000000000000000000000..d84bf2a7903dc77ddc7f413b472ceaf27d788814 --- /dev/null +++ b/apps/gallery/ajax/getCovers.php @@ -0,0 +1,69 @@ +<?php +require_once('../../../lib/base.php'); +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('gallery'); + +function CroppedThumbnail($imgSrc,$thumbnail_width,$thumbnail_height, $tgtImg, $shift) { + //getting the image dimensions + list($width_orig, $height_orig) = getimagesize($imgSrc); + switch (strtolower(substr($imgSrc, strrpos($imgSrc, '.')+1))) { + case "jpeg": + case "jpg": + case "tiff": + $myImage = imagecreatefromjpeg($imgSrc); + break; + case "png": + $myImage = imagecreatefrompng($imgSrc); + break; + default: + exit(); + } + $ratio_orig = $width_orig/$height_orig; + + if ($thumbnail_width/$thumbnail_height > $ratio_orig) { + $new_height = $thumbnail_width/$ratio_orig; + $new_width = $thumbnail_width; + } else { + $new_width = $thumbnail_height*$ratio_orig; + $new_height = $thumbnail_height; + } + + $x_mid = $new_width/2; //horizontal middle + $y_mid = $new_height/2; //vertical middle + + $process = imagecreatetruecolor(round($new_width), round($new_height)); + + imagecopyresampled($process, $myImage, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig); + imagecopyresampled($tgtImg, $process, $shift, 0, ($x_mid-($thumbnail_width/2)), ($y_mid-($thumbnail_height/2)), $thumbnail_width, $thumbnail_height, $thumbnail_width, $thumbnail_height); + + imagedestroy($process); + imagedestroy($myImage); +} + +$box_size = 200; +$album_name= $_GET['album_name']; + +$stmt = OC_DB::prepare('SELECT `file_path` FROM *PREFIX*gallery_photos,*PREFIX*gallery_albums WHERE *PREFIX*gallery_albums.`uid_owner` = ? AND `album_name` = ? AND *PREFIX*gallery_photos.`album_id` = *PREFIX*gallery_albums.`album_id`'); +$result = $stmt->execute(array(OC_User::getUser(), $album_name)); + +$numOfItems = min($result->numRows(),10); + +$targetImg = imagecreatetruecolor($numOfItems*$box_size, $box_size); +$counter = 0; +while (($i = $result->fetchRow()) && $counter < $numOfItems) { + $imagePath = OC::$CONFIG_DATADIRECTORY . $i['file_path']; + CroppedThumbnail($imagePath, $box_size, $box_size, $targetImg, $counter*$box_size); + $counter++; +} + +header('Content-Type: image/png'); + +$offset = 3600 * 24; +// calc the string in GMT not localtime and add the offset +header("Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT"); +header('Cache-Control: max-age=3600, must-revalidate'); +header('Pragma: public'); + +imagepng($targetImg); +imagedestroy($targetImg); +?> diff --git a/apps/gallery/ajax/scanForAlbums.php b/apps/gallery/ajax/scanForAlbums.php new file mode 100644 index 0000000000000000000000000000000000000000..de0b141a36709c32acc27c9f04e95dcc023c6f96 --- /dev/null +++ b/apps/gallery/ajax/scanForAlbums.php @@ -0,0 +1,11 @@ +<?php + +require_once('../../../lib/base.php'); +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('gallery'); +require_once('../lib_scanner.php'); + +OC_JSON::success(array('albums' => OC_GALLERY_SCANNER::scan(''))); +//OC_JSON::success(array('albums' => array(array('name' => 'test', 'imagesCount' => 1, 'images' => array('dupa'))))); + +?> diff --git a/apps/gallery/ajax/thumbnail.php b/apps/gallery/ajax/thumbnail.php new file mode 100644 index 0000000000000000000000000000000000000000..f24782390f68fd42de8e8d91e56e9429ab676f9a --- /dev/null +++ b/apps/gallery/ajax/thumbnail.php @@ -0,0 +1,55 @@ +<?php +require_once('../../../lib/base.php'); +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('gallery'); + +function CroppedThumbnail($imgSrc,$thumbnail_width,$thumbnail_height) { //$imgSrc is a FILE - Returns an image resource. + //getting the image dimensions + list($width_orig, $height_orig) = getimagesize($imgSrc); + switch (strtolower(substr($imgSrc, strrpos($imgSrc, '.')+1))) { + case "jpeg": + case "jpg": + case "tiff": + $myImage = imagecreatefromjpeg($imgSrc); + break; + case "png": + $myImage = imagecreatefrompng($imgSrc); + break; + default: + exit(); + } + $ratio_orig = $width_orig/$height_orig; + + if ($thumbnail_width/$thumbnail_height > $ratio_orig) { + $new_height = $thumbnail_width/$ratio_orig; + $new_width = $thumbnail_width; + } else { + $new_width = $thumbnail_height*$ratio_orig; + $new_height = $thumbnail_height; + } + + $x_mid = $new_width/2; //horizontal middle + $y_mid = $new_height/2; //vertical middle + + $process = imagecreatetruecolor(round($new_width), round($new_height)); + + imagecopyresampled($process, $myImage, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig); + $thumb = imagecreatetruecolor($thumbnail_width, $thumbnail_height); + imagecopyresampled($thumb, $process, 0, 0, ($x_mid-($thumbnail_width/2)), ($y_mid-($thumbnail_height/2)), $thumbnail_width, $thumbnail_height, $thumbnail_width, $thumbnail_height); + + imagedestroy($process); + imagedestroy($myImage); + return $thumb; +} + +$box_size = 200; +$img = $_GET['img']; + +$tmp = OC::$CONFIG_DATADIRECTORY . $img; + +header('Content-Type: image/png'); +$image = CroppedThumbnail($tmp, $box_size, $box_size); + +imagepng($image); +imagedestroy($image); +?> diff --git a/apps/gallery/appinfo/app.php b/apps/gallery/appinfo/app.php new file mode 100644 index 0000000000000000000000000000000000000000..8f855c470e579a9a763c3e0053e3fa1e3c6b115f --- /dev/null +++ b/apps/gallery/appinfo/app.php @@ -0,0 +1,27 @@ +<?php +OC_App::register(array( + 'order' => 20, + 'id' => 'gallery', + 'name' => 'Gallery')); + +OC_App::addNavigationEntry( array( + 'id' => 'gallery_index', + 'order' => 20, + 'href' => OC_Helper::linkTo('gallery', 'index.php'), + 'icon' => OC_Helper::imagePath('core', 'places/picture.svg'), + 'name' => 'Gallery')); + + class OC_GallerySearchProvider extends OC_Search_Provider{ + function search($query){ + $stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_albums WHERE uid_owner = ? AND album_name LIKE ?'); + $result = $stmt->execute(array(OC_User::getUser(),'%'.$query.'%')); + $results=array(); + while($row=$result->fetchRow()){ + $results[]=new OC_Search_Result($row['album_name'],'',OC_Helper::linkTo('apps/gallery', 'index.php?view='.$row['album_name']),'Galleries'); + } + return $results; + } +} + +new OC_GallerySearchProvider(); +?> diff --git a/apps/gallery/appinfo/database.xml b/apps/gallery/appinfo/database.xml new file mode 100644 index 0000000000000000000000000000000000000000..fd55b3a6fb4cd320e8b3d8b34d11415185671d85 --- /dev/null +++ b/apps/gallery/appinfo/database.xml @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<database> + <name>*dbname*</name> + <create>true</create> + <overwrite>false</overwrite> + <charset>latin1</charset> + <table> + <name>*dbprefix*gallery_albums</name> + <declaration> + <field> + <name>album_id</name> + <type>integer</type> + <default>0</default> + <notnull>true</notnull> + <autoincrement>1</autoincrement> + <length>4</length> + </field> + <field> + <name>uid_owner</name> + <type>text</type> + <notnull>true</notnull> + <length>64</length> + </field> + <field> + <name>album_name</name> + <type>text</type> + <notnull>true</notnull> + <length>100</length> + </field> + </declaration> + </table> + <table> + <name>*dbprefix*gallery_photos</name> + <declaration> + <field> + <name>photo_id</name> + <type>integer</type> + <default>0</default> + <notnull>true</notnull> + <autoincrement>1</autoincrement> + <length>4</length> + </field> + <field> + <name>album_id</name> + <type>integer</type> + <default>0</default> + <notnull>true</notnull> + <length>4</length> + </field> + <field> + <name>file_path</name> + <type>text</type> + <notnull>true</notnull> + <length>100</length> + </field> + </declaration> + </table> +</database> diff --git a/apps/gallery/appinfo/info.xml b/apps/gallery/appinfo/info.xml new file mode 100644 index 0000000000000000000000000000000000000000..054ddb6f1398b544ce01bf1d1d0b296252aacd36 --- /dev/null +++ b/apps/gallery/appinfo/info.xml @@ -0,0 +1,10 @@ +<?xml version="1.0"?> +<info> + <id>gallery</id> + <name>Gallery</name> + <version>0.1</version> + <licence>AGPL</licence> + <author>Bartosz Przybylski</author> + <require>2</require> + <description></description> +</info> \ No newline at end of file diff --git a/apps/gallery/css/styles.css b/apps/gallery/css/styles.css new file mode 100644 index 0000000000000000000000000000000000000000..03b179138e655ffc14a10811fc86d533915a52b3 --- /dev/null +++ b/apps/gallery/css/styles.css @@ -0,0 +1,23 @@ +div#gallery_list { + margin: 90pt 20pt; +} + +div#gallery_album_box { + width: 200px; + text-align: center; + border: 0; + float: left; + margin: 5pt; +} + +div#gallery_album_box h1 { + font-size: 12pt; + font-family: Arial; +} + +div#gallery_album_cover { + width: 199px; + height: 199px; + border: solid 1px black; +} + diff --git a/apps/gallery/index.php b/apps/gallery/index.php new file mode 100644 index 0000000000000000000000000000000000000000..87fdafcf13c0a2f0341e3d2f11679e6186b2bfce --- /dev/null +++ b/apps/gallery/index.php @@ -0,0 +1,34 @@ +<?php +require_once('../../lib/base.php'); + +OC_Util::checkLoggedIn(); +OC_Util::checkAppEnabled('gallery'); +OC_App::setActiveNavigationEntry( 'gallery_index' ); + + +if (!isset($_GET['view'])) { + $stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_albums WHERE uid_owner = ?'); + $result = $stmt->execute(array(OC_User::getUser())); + + $r = array(); + while ($row = $result->fetchRow()) + $r[] = $row; + + $tmpl = new OC_Template( 'gallery', 'index', 'user' ); + $tmpl->assign('r', $r); + $tmpl->printPage(); +} else { + $stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_photos, *PREFIX*gallery_albums WHERE uid_owner = ? AND album_name = ? AND *PREFIX*gallery_albums.album_id = *PREFIX*gallery_photos.album_id'); + + $result = $stmt->execute(array(OC_User::getUser(), $_GET['view'])); + + $photos = array(); + while ($p = $result->fetchRow()) + $photos[] = $p['file_path']; + + $tmpl = new OC_Template( 'gallery', 'view_album', 'user' ); + $tmpl->assign('photos', $photos); + $tmpl->assign('albumName', $_GET['view']); + $tmpl->printPage(); +} +?> diff --git a/apps/gallery/js/album_cover.js b/apps/gallery/js/album_cover.js new file mode 100644 index 0000000000000000000000000000000000000000..776feae32cc50301e1e5a1d065490f8e131bea1e --- /dev/null +++ b/apps/gallery/js/album_cover.js @@ -0,0 +1,41 @@ +var actual_cover; +$(document).ready(function() { + $.getJSON('ajax/getAlbums.php', function(r) { + if (r.status == 'success') { + for (var i in r.albums) { + var a = r.albums[i]; + Albums.add(a.name, a.numOfItems); + } + var targetDiv = document.getElementById('gallery_list'); + if (targetDiv) { + Albums.display(targetDiv); + } else { + alert('Error occured: no such layer `gallery_list`'); + } + } else { + alert('Error occured: ' + r.message); + } + }); +}); + +function createNewAlbum() { + var name = prompt("album name", ""); + if (name != null && name != "") { + $.getJSON("ajax/createAlbum.php", {album_name: name}, function(r) { + if (r.status == "success") { + var v = '<div class="gallery_album_box"><a href="?view='+r.name+'"><img class="gallery_album_cover"/></a><h1>'+r.name+'</h1></div>'; + $('div#gallery_list').append(v); + } + }); + } +} + +function scanForAlbums() { + $.getJSON('ajax/scanForAlbums.php', function(r) { + if (r.status == 'success') { + window.location.reload(true); + } else { + alert('Error occured: ' + r.message); + } + }); +} diff --git a/apps/gallery/js/albums.js b/apps/gallery/js/albums.js new file mode 100644 index 0000000000000000000000000000000000000000..7ab243ededfdf89c6097982d5db870578f6610da --- /dev/null +++ b/apps/gallery/js/albums.js @@ -0,0 +1,80 @@ +Albums={ + // album item in this array should look as follow + // {name: string, + // numOfCovers: int} + // + // previews array should be an array of base64 decoded images + // to display to user as preview picture when scrolling throught + // the album cover + albums:new Array(), + // add simply adds new album to internal structure + // however albums names must be unique so other + // album with the same name wont be insered, + // and false will be returned + // true on success + add: function(album_name, num) { + for (var a in Albums.albums) { + if (a.name == album_name) { + return false; + } + } + Albums.albums.push({name: album_name, numOfCovers: num}); + return true; + }, + // remove element with given name + // returns remove element or undefined if no such element was present + remove: function(name) { + var i = -1, tmp = 0; + for (var a in Albums.albums) { + if (a.name == name) { + i = tmp; + break; + } + tmp++; + } + if (i != -1) { + return Albums.albums.splice(i,1); + } + return undefined; + }, + // return element which match given name + // of undefined if such element do not exist + find: function(name) { + var i = -1, tmp = 0; + for (var k in Albums.albums) { + var a = Albums.albums[k]; + if (a.name == name) { + i = tmp; + break; + } + tmp++; + } + if (i != -1) { + return Albums.albums[i]; + } + return undefined; + }, + // displays gallery in linear representation + // on given element, and apply default styles for gallery + display: function(element) { + var displayTemplate = '<div id="gallery_album_box" title="*NAME*"><a href="?view=*NAME*"><div id="gallery_album_cover"></div></a><h1>*NAME*</h1></div></div>'; + for (var i in Albums.albums) { + var a = Albums.albums[i]; + var local = $(displayTemplate.replace(/\*NAME\*/g, a.name)); + local.css('background-repeat', 'no-repeat'); + local.css('background-position', '0 0'); + local.css('background-image','url("ajax/getCovers.php?album_name='+a.name+'")'); + local.mousemove(function(e) { + var albumMetadata = Albums.find(this.title); + if (albumMetadata == undefined) { + return; + } + var x = Math.min(Math.floor((e.clientX - this.offsetLeft)/(this.offsetWidth/albumMetadata.numOfCovers)), albumMetadata.numOfCovers-1); + x *= this.offsetWidth; + $(this).css('background-position', -x+'px 0'); + }); + $(element).append(local); + } + } + +} diff --git a/apps/gallery/lib_scanner.php b/apps/gallery/lib_scanner.php new file mode 100644 index 0000000000000000000000000000000000000000..5490c4a55adda1a77fc7996e250cce3dc1b6e8c8 --- /dev/null +++ b/apps/gallery/lib_scanner.php @@ -0,0 +1,57 @@ +<?php + +require_once('base.php'); // base lib + +class OC_GALLERY_SCANNER { + + public static function scan($root) { + $albums = array(); + self::scanDir($root, $albums); + return $albums; + } + + public static function scanDir($path, &$albums) { + $current_album = array('name'=> $path, 'imagesCount' => 0, 'images' => array()); + $current_album['name'] = str_replace('/', '.', str_replace(OC::$CONFIG_DATADIRECTORY, '', $current_album['name'])); + $current_album['name'] = ($current_album['name']==='')?'main':$current_album['name']; + + if ($dh = OC_Filesystem::opendir($path)) { + while (($filename = readdir($dh)) !== false) { + $filepath = $path.'/'.$filename; + if (substr($filename, 0, 1) == '.') continue; + if (OC_Filesystem::is_dir($filepath)) { + self::scanDir($filepath, $albums); + } elseif (self::isPhoto($path.'/'.$filename)) { + $current_album['images'][] = $filepath; + } + } + } + $current_album['imagesCount'] = count($current_album['images']); + $albums[] = $current_album; + $stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_albums WHERE `uid_owner` = ? AND `album_name` = ?'); + $result = $stmt->execute(array(OC_User::getUser(), $current_album['name'])); + if ($result->numRows() == 0 && count($current_album['images'])) { + $stmt = OC_DB::prepare('REPLACE INTO *PREFIX*gallery_albums (`uid_owner`, `album_name`) VALUES (?, ?)'); + $stmt->execute(array(OC_User::getUser(), $current_album['name'])); + } + $stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_albums WHERE `uid_owner` = ? AND `album_name` = ?'); + $result = $stmt->execute(array(OC_User::getUser(), $current_album['name'])); + $albumId = $result->fetchRow(); + $albumId = $albumId['album_id']; + foreach ($current_album['images'] as $img) { + $stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_photos WHERE `album_id` = ? AND `file_path` = ?'); + $result = $stmt->execute(array($albumId, $img)); + if ($result->numRows() == 0) { + $stmt = OC_DB::prepare('REPLACE INTO *PREFIX*gallery_photos (`album_id`, `file_path`) VALUES (?, ?)'); + $stmt->execute(array($albumId, $img)); + } + } + } + + public static function isPhoto($filename) { + if (substr(OC_Filesystem::getMimeType($filename), 0, 6) == "image/") + return 1; + return 0; + } +} +?> diff --git a/apps/gallery/templates/index.php b/apps/gallery/templates/index.php new file mode 100644 index 0000000000000000000000000000000000000000..0e89e448768bfab117352aa774b6b41bf95db968 --- /dev/null +++ b/apps/gallery/templates/index.php @@ -0,0 +1,12 @@ +<?php +OC_Util::addStyle('gallery', 'styles'); +OC_Util::addScript('gallery', 'albums'); +OC_Util::addScript('gallery', 'album_cover'); +?> + +<div id="controls"> + <!-- <input type="button" value="New album" onclick="javascript:createNewAlbum();" />--> + <input type="button" value="Rescan" onclick="javascript:scanForAlbums();" /><br/> +</div> +<div id="gallery_list"> +</div> diff --git a/apps/gallery/templates/view_album.php b/apps/gallery/templates/view_album.php new file mode 100644 index 0000000000000000000000000000000000000000..ea2969e01104c98a0e6e227381edaf9bb6edad6d --- /dev/null +++ b/apps/gallery/templates/view_album.php @@ -0,0 +1,20 @@ +<?php +OC_Util::addStyle('gallery', 'styles'); +OC_Util::addScript('gallery', 'album_cover'); +OC_Util::addScript( 'files_imageviewer', 'lightbox' ); +OC_Util::addStyle( 'files_imageviewer', 'lightbox' ); +?> + +<div id="controls"> + <a href="?"><input type="button" value="Back" /></a><br/> +</div> +<div id="gallery_list"> +<?php +foreach ($_['photos'] as $a) { +?> +<a onclick="javascript:viewImage('/','<?php echo $a; ?>');"><img src="ajax/thumbnail.php?img=<?php echo $a ?>"></a> +<?php + } +?> + +</div> diff --git a/apps/media/ajax/api.php b/apps/media/ajax/api.php index 3b4932728da987367eab1ad23205d2b8f211c5c8..29f61a2207faa2a54f2edfba50db82d5371d692f 100644 --- a/apps/media/ajax/api.php +++ b/apps/media/ajax/api.php @@ -27,6 +27,7 @@ header('Content-type: text/html; charset=UTF-8') ; $RUNTIME_NOAPPS=true; require_once('../../../lib/base.php'); +OC_JSON::checkAppEnabled('media'); require_once('../lib_collection.php'); require_once('../lib_scanner.php'); @@ -41,7 +42,6 @@ if(!isset($_POST['action']) and isset($_GET['action'])){ foreach($arguments as &$argument){ $argument=stripslashes($argument); } -global $CONFIG_DATADIRECTORY; @ob_clean(); if(!isset($arguments['artist'])){ $arguments['artist']=0; @@ -68,7 +68,7 @@ if($arguments['action']){ $data['artists']=OC_MEDIA_COLLECTION::getArtists(); $data['albums']=OC_MEDIA_COLLECTION::getAlbums(); $data['songs']=OC_MEDIA_COLLECTION::getSongs(); - echo json_encode($data); + OC_JSON::encodedPrint($data); break; case 'scan': OC_DB::beginTransaction(); @@ -82,13 +82,13 @@ if($arguments['action']){ echo (OC_MEDIA_SCANNER::scanFile($arguments['path']))?'true':'false'; break; case 'get_artists': - echo json_encode(OC_MEDIA_COLLECTION::getArtists($arguments['search'])); + OC_JSON::encodedPrint(OC_MEDIA_COLLECTION::getArtists($arguments['search'])); break; case 'get_albums': - echo json_encode(OC_MEDIA_COLLECTION::getAlbums($arguments['artist'],$arguments['search'])); + OC_JSON::encodedPrint(OC_MEDIA_COLLECTION::getAlbums($arguments['artist'],$arguments['search'])); break; case 'get_songs': - echo json_encode(OC_MEDIA_COLLECTION::getSongs($arguments['artist'],$arguments['album'],$arguments['search'])); + OC_JSON::encodedPrint(OC_MEDIA_COLLECTION::getSongs($arguments['artist'],$arguments['album'],$arguments['search'])); break; case 'get_path_info': if(OC_Filesystem::file_exists($arguments['path'])){ @@ -101,7 +101,7 @@ if($arguments['action']){ $song=OC_MEDIA_COLLECTION::getSong($songId); $song['artist']=OC_MEDIA_COLLECTION::getArtistName($song['song_artist']); $song['album']=OC_MEDIA_COLLECTION::getAlbumName($song['song_album']); - echo json_encode($song); + OC_JSON::encodedPrint($song); } } break; @@ -130,12 +130,12 @@ if($arguments['action']){ OC_Filesystem::readfile($arguments['path']); exit; case 'find_music': - echo json_encode(findMusic()); + OC_JSON::encodedPrint(findMusic()); exit; } } -function findMusic($path='/'){ +function findMusic($path=''){ $music=array(); $dh=OC_Filesystem::opendir($path); if($dh){ @@ -155,4 +155,4 @@ function findMusic($path='/'){ return $music; } -?> \ No newline at end of file +?> diff --git a/apps/media/ajax/autoupdate.php b/apps/media/ajax/autoupdate.php index ded1fd02bc39a7abd1d6c3b8c1720ef13cd0ef8d..ff0923ca03209875ce1730d9bfc514f931c844a6 100644 --- a/apps/media/ajax/autoupdate.php +++ b/apps/media/ajax/autoupdate.php @@ -28,12 +28,13 @@ $RUNTIME_NOAPPS=true; $RUNTIME_NOSETUPFS=true; require_once('../../../lib/base.php'); +OC_JSON::checkAppEnabled('media'); -error_log($_GET['autoupdate']); +if(defined("DEBUG") && DEBUG) {error_log($_GET['autoupdate']);} $autoUpdate=(isset($_GET['autoupdate']) and $_GET['autoupdate']=='true'); -error_log((integer)$autoUpdate); +if(defined("DEBUG") && DEBUG) {error_log((integer)$autoUpdate);} OC_Preferences::setValue(OC_User::getUser(),'media','autoupdate',(integer)$autoUpdate); -echo json_encode( array( "status" => "success", "data" => $autoUpdate)); -?> \ No newline at end of file +OC_JSON::success(array('data' => $autoUpdate)); +?> diff --git a/apps/media/appinfo/app.php b/apps/media/appinfo/app.php index 0d36217bd4dc9312e182da2b6004edb5e7608f3f..475a33500f4bdf4b15745de34bb0164b034183f7 100644 --- a/apps/media/appinfo/app.php +++ b/apps/media/appinfo/app.php @@ -25,8 +25,9 @@ $l=new OC_L10N('media'); require_once('apps/media/lib_media.php'); OC_Util::addScript('media','loader'); +OC_APP::registerPersonal('media','settings'); OC_App::register( array( 'order' => 3, 'id' => 'media', 'name' => 'Media' )); -OC_App::addNavigationEntry( array( 'id' => 'media_index', 'order' => 2, 'href' => OC_Helper::linkTo( 'media', 'index.php' ), 'icon' => OC_Helper::imagePath( 'core', 'filetypes/audio.svg' ), 'name' => $l->t('Music') )); +OC_App::addNavigationEntry(array('id' => 'media_index', 'order' => 2, 'href' => OC_Helper::linkTo('media', 'index.php'), 'icon' => OC_Helper::imagePath('core', 'places/music.svg'), 'name' => $l->t('Music'))); ?> diff --git a/apps/media/appinfo/info.xml b/apps/media/appinfo/info.xml index 044abade53f5177f37b81aaaea53190fdb492115..795c9a4dd718f0c297255c38edaa173e455d95ac 100644 --- a/apps/media/appinfo/info.xml +++ b/apps/media/appinfo/info.xml @@ -7,4 +7,5 @@ <licence>AGPL</licence> <author>Robin Appelman</author> <require>2</require> -</info> \ No newline at end of file + <default_enable/> +</info> diff --git a/apps/media/css/music.css b/apps/media/css/music.css index 59d10f74db52894bb296b2da44dab0713a103724..67d56075194acdd3508870c930118896cc748dfa 100644 --- a/apps/media/css/music.css +++ b/apps/media/css/music.css @@ -1,6 +1,6 @@ #controls ul.jp-controls { padding:0; } #controls ul.jp-controls li { display:inline; } -#controls ul.jp-controls li a { position:absolute; padding:.8em 1em; } +#controls ul.jp-controls li a { position:absolute; padding:.8em 1em .8em 0; } a.jp-play, a.jp-pause { left:2.5em; } a.jp-pause { display:none; } a.jp-next { left:5em; } @@ -9,32 +9,37 @@ div.jp-progress { position:absolute; overflow:hidden; top:.5em; left:8em; width: div.jp-seek-bar { background:#eee; width:0; height:100%; cursor:pointer; } div.jp-play-bar { background:#ccc; width:0; height:100%; } div.jp-seeking-bg { background:url("../img/pbar-ani.gif"); } -div.jp-current-time,div.jp-duration { position:absolute; font-size:.64em; font-style:oblique; top:1em; left:13.5em; width:22em; } +div.jp-current-time,div.jp-duration { position:absolute; font-size:.64em; font-style:oblique; top:0.9em; left:13.5em; } +div.jp-duration { display: none } +div.jp-current-song { left: 33em; position: absolute; top: 0.9em; } div.jp-duration { text-align:right; } a.jp-mute,a.jp-unmute { left:24em; } div.jp-volume-bar { position:absolute; overflow:hidden; background:#eee; width:4em; height:0.4em; cursor:pointer; top:1.3em; left:27em; } div.jp-volume-bar-value { background:#ccc; width:0; height:0.4em; } -#collection { padding-top:1em; position:relative; width:70em; float:left; } +#collection { padding-top:1em; position:relative; width:100%; float:left; } #collection li.album,#collection li.song { margin-left:3em; } #leftcontent img.remove { display:none; float:right; cursor:pointer; } #leftcontent li:hover img.remove { display:inline; } +#leftcontent li {white-space: normal; } #collection li button { float:right; } #collection li,#playlist li { list-style-type:none; } .template { display:none; } +.collection_playing { background:#eee; } #collection li { padding-right:10px; } #searchresults input.play, #searchresults input.add { float:left; height:1em; width:1em; } #collection tr.collapsed td.album, #collection tr.collapsed td.title { color:#ddd; } -a.expander { } -tr.active { background-color:#eee; } -tr.artist, tr.artist td { - border-top: 1px solid lightgrey; -} -tr.album td.artist { - padding-left: 20px; -} -tr.song td.artist { - padding-left: 40px; -} +a.expander { float:right; padding:0 1em; } +tr.active td { background-color:#eee; font-weight:bold; } +tr td { border-top:1px solid #eee; height:2.2em; } +tr .artist img { vertical-align:middle; } +tr.album td.artist { padding-left:1em; } +tr.song td.artist { padding-left:2em; } +.add {margin: 0 0.5em 0 0; } + +#scan { position:absolute; right:13.5em; top:0em; } +#scan .start { position:relative; display:inline; float:right; } +#scan .stop { position:relative; display:inline; float:right; } +#scan #scanprogressbar { position:relative; display:inline-block; width:10em; height:1.5em; top:.4em; } diff --git a/apps/media/css/player.css b/apps/media/css/player.css index 8b137891791fe96927ad78e64b0aad7bded08bdc..c4a098543d176fcf813ac8c339b0a551fc897db9 100644 --- a/apps/media/css/player.css +++ b/apps/media/css/player.css @@ -1 +1,23 @@ - +#playercontrols{ + display:inline; + margin-left:1em; + width:7em; + height:1em; + position:fixed; + top:auto; + left:auto; + background:transparent; + box-shadow:none; + -webkit-box-shadow:none; +} +#playercontrols li{ + float:left; +} +#playercontrols a, #playercontrols li{ + margin:0px; + padding:0; + left:0; + background:transparent !important; + border:none !important; + text-shadow:none; +} \ No newline at end of file diff --git a/apps/media/getID3/demos/demo.audioinfo.class.php b/apps/media/getID3/demos/demo.audioinfo.class.php deleted file mode 100644 index d38ec19807fbfd4d51ab19b5fec47fb0c0877d82..0000000000000000000000000000000000000000 --- a/apps/media/getID3/demos/demo.audioinfo.class.php +++ /dev/null @@ -1,319 +0,0 @@ -<?php - -// +----------------------------------------------------------------------+ -// | PHP version 4.1.0 | -// +----------------------------------------------------------------------+ -// | Placed in public domain by Allan Hansen, 2002. Share and enjoy! | -// +----------------------------------------------------------------------+ -// | /demo/demo.audioinfo.class.php | -// | | -// | Example wrapper class to extract information from audio files | -// | through getID3(). | -// | | -// | getID3() returns a lot of information. Much of this information is | -// | not needed for the end-application. It is also possible that some | -// | users want to extract specific info. Modifying getID3() files is a | -// | bad idea, as modifications needs to be done to future versions of | -// | getID3(). | -// | | -// | Modify this wrapper class instead. This example extracts certain | -// | fields only and adds a new root value - encoder_options if possible. | -// | It also checks for mp3 files with wave headers. | -// +----------------------------------------------------------------------+ -// | Example code: | -// | $au = new AudioInfo(); | -// | print_r($au->Info('file.flac'); | -// +----------------------------------------------------------------------+ -// | Authors: Allan Hansen <ahØartemis*dk> | -// +----------------------------------------------------------------------+ -// - - - -/** -* getID3() settings -*/ - -require_once('../getid3/getid3.php'); - - - - -/** -* Class for extracting information from audio files with getID3(). -*/ - -class AudioInfo { - - /** - * Private variables - */ - var $result = NULL; - var $info = NULL; - - - - - /** - * Constructor - */ - - function AudioInfo() { - - // Initialize getID3 engine - $this->getID3 = new getID3; - $this->getID3->option_md5_data = true; - $this->getID3->option_md5_data_source = true; - $this->getID3->encoding = 'UTF-8'; - } - - - - - /** - * Extract information - only public function - * - * @access public - * @param string file Audio file to extract info from. - */ - - function Info($file) { - - // Analyze file - $this->info = $this->getID3->analyze($file); - - // Exit here on error - if (isset($this->info['error'])) { - return array ('error' => $this->info['error']); - } - - // Init wrapper object - $this->result = array (); - $this->result['format_name'] = @$this->info['fileformat'].'/'.@$this->info['audio']['dataformat'].(isset($this->info['video']['dataformat']) ? '/'.@$this->info['video']['dataformat'] : ''); - $this->result['encoder_version'] = @$this->info['audio']['encoder']; - $this->result['encoder_options'] = @$this->info['audio']['encoder_options']; - $this->result['bitrate_mode'] = @$this->info['audio']['bitrate_mode']; - $this->result['channels'] = @$this->info['audio']['channels']; - $this->result['sample_rate'] = @$this->info['audio']['sample_rate']; - $this->result['bits_per_sample'] = @$this->info['audio']['bits_per_sample']; - $this->result['playing_time'] = @$this->info['playtime_seconds']; - $this->result['avg_bit_rate'] = @$this->info['audio']['bitrate']; - $this->result['tags'] = @$this->info['tags']; - $this->result['comments'] = @$this->info['comments']; - $this->result['warning'] = @$this->info['warning']; - $this->result['md5'] = @$this->info['md5_data']; - - // Post getID3() data handling based on file format - $method = @$this->info['fileformat'].'Info'; - if (@$this->info['fileformat'] && method_exists($this, $method)) { - $this->$method(); - } - - return $this->result; - } - - - - - /** - * post-getID3() data handling for AAC files. - * - * @access private - */ - - function aacInfo() { - $this->result['format_name'] = 'AAC'; - } - - - - - /** - * post-getID3() data handling for Wave files. - * - * @access private - */ - - function riffInfo() { - if ($this->info['audio']['dataformat'] == 'wav') { - - $this->result['format_name'] = 'Wave'; - - } else if (ereg('^mp[1-3]$', $this->info['audio']['dataformat'])) { - - $this->result['format_name'] = strtoupper($this->info['audio']['dataformat']); - - } else { - - $this->result['format_name'] = 'riff/'.$this->info['audio']['dataformat']; - - } - } - - - - - /** - * * post-getID3() data handling for FLAC files. - * - * @access private - */ - - function flacInfo() { - $this->result['format_name'] = 'FLAC'; - } - - - - - - /** - * post-getID3() data handling for Monkey's Audio files. - * - * @access private - */ - - function macInfo() { - $this->result['format_name'] = 'Monkey\'s Audio'; - } - - - - - - /** - * post-getID3() data handling for Lossless Audio files. - * - * @access private - */ - - function laInfo() { - $this->result['format_name'] = 'La'; - } - - - - - - /** - * post-getID3() data handling for Ogg Vorbis files. - * - * @access private - */ - - function oggInfo() { - if ($this->info['audio']['dataformat'] == 'vorbis') { - - $this->result['format_name'] = 'Ogg Vorbis'; - - } else if ($this->info['audio']['dataformat'] == 'flac') { - - $this->result['format_name'] = 'Ogg FLAC'; - - } else if ($this->info['audio']['dataformat'] == 'speex') { - - $this->result['format_name'] = 'Ogg Speex'; - - } else { - - $this->result['format_name'] = 'Ogg '.$this->info['audio']['dataformat']; - - } - } - - - - - /** - * post-getID3() data handling for Musepack files. - * - * @access private - */ - - function mpcInfo() { - $this->result['format_name'] = 'Musepack'; - } - - - - - /** - * post-getID3() data handling for MPEG files. - * - * @access private - */ - - function mp3Info() { - $this->result['format_name'] = 'MP3'; - } - - - - - /** - * post-getID3() data handling for MPEG files. - * - * @access private - */ - - function mp2Info() { - $this->result['format_name'] = 'MP2'; - } - - - - - - /** - * post-getID3() data handling for MPEG files. - * - * @access private - */ - - function mp1Info() { - $this->result['format_name'] = 'MP1'; - } - - - - - /** - * post-getID3() data handling for WMA files. - * - * @access private - */ - - function asfInfo() { - $this->result['format_name'] = strtoupper($this->info['audio']['dataformat']); - } - - - - /** - * post-getID3() data handling for Real files. - * - * @access private - */ - - function realInfo() { - $this->result['format_name'] = 'Real'; - } - - - - - - /** - * post-getID3() data handling for VQF files. - * - * @access private - */ - - function vqfInfo() { - $this->result['format_name'] = 'VQF'; - } - -} - - -?> \ No newline at end of file diff --git a/apps/media/getID3/demos/demo.basic.php b/apps/media/getID3/demos/demo.basic.php deleted file mode 100644 index ddd56e51521ace8d35f63627a8867d1dec2a83e8..0000000000000000000000000000000000000000 --- a/apps/media/getID3/demos/demo.basic.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php -///////////////////////////////////////////////////////////////// -/// getID3() by James Heinrich <info@getid3.org> // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// // -// /demo/demo.basic.php - part of getID3() // -// Sample script showing most basic use of getID3() // -// See readme.txt for more details // -// /// -///////////////////////////////////////////////////////////////// - -// include getID3() library (can be in a different directory if full path is specified) -require_once('../getid3/getid3.php'); - -// Initialize getID3 engine -$getID3 = new getID3; - -// Analyze file and store returned data in $ThisFileInfo -$ThisFileInfo = $getID3->analyze($filename); - -// Optional: copies data from all subarrays of [tags] into [comments] so -// metadata is all available in one location for all tag formats -// metainformation is always available under [tags] even if this is not called -getid3_lib::CopyTagsToComments($ThisFileInfo); - -// Output desired information in whatever format you want -// Note: all entries in [comments] or [tags] are arrays of strings -// See structure.txt for information on what information is available where -// or check out the output of /demos/demo.browse.php for a particular file -// to see the full detail of what information is returned where in the array -echo @$ThisFileInfo['comments_html']['artist'][0]; // artist from any/all available tag formats -echo @$ThisFileInfo['tags']['id3v2']['title'][0]; // title from ID3v2 -echo @$ThisFileInfo['audio']['bitrate']; // audio bitrate -echo @$ThisFileInfo['playtime_string']; // playtime in minutes:seconds, formatted string - -?> \ No newline at end of file diff --git a/apps/media/getID3/demos/demo.browse.php b/apps/media/getID3/demos/demo.browse.php deleted file mode 100644 index 5d027b63b2fc5bcda6bd17866693f7c8bf48c232..0000000000000000000000000000000000000000 --- a/apps/media/getID3/demos/demo.browse.php +++ /dev/null @@ -1,679 +0,0 @@ -<?php -///////////////////////////////////////////////////////////////// -/// getID3() by James Heinrich <info@getid3.org> // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// // -// /demo/demo.browse.php - part of getID3() // -// Sample script for browsing/scanning files and displaying // -// information returned by getID3() // -// See readme.txt for more details // -// /// -///////////////////////////////////////////////////////////////// - - -//die('Due to a security issue, this demo has been disabled. It can be enabled by removing line '.__LINE__.' in demos/'.basename(__FILE__)); - - -///////////////////////////////////////////////////////////////// -// set predefined variables as if magic_quotes_gpc was off, -// whether the server's got it or not: -UnifyMagicQuotes(false); -///////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////// -// showfile is used to display embedded images from table_var_dump() -// md5 of requested file is required to prevent abuse where any -// random file on the server could be viewed -if (@$_REQUEST['showfile']) { - if (is_readable($_REQUEST['showfile'])) { - if (md5_file($_REQUEST['showfile']) == @$_REQUEST['md5']) { - readfile($_REQUEST['showfile']); - exit; - } - } - die('Cannot display "'.$_REQUEST['showfile'].'"'); -} -///////////////////////////////////////////////////////////////// - - -if (!function_exists('getmicrotime')) { - function getmicrotime() { - list($usec, $sec) = explode(' ', microtime()); - return ((float) $usec + (float) $sec); - } -} - -/////////////////////////////////////////////////////////////////////////////// - - -$writescriptfilename = 'demo.write.php'; - -require_once('../getid3/getid3.php'); - -// Needed for windows only -define('GETID3_HELPERAPPSDIR', 'C:/helperapps/'); - -// Initialize getID3 engine -$getID3 = new getID3; -$getID3->setOption(array('encoding' => 'UTF-8')); - -$getID3checkColor_Head = 'CCCCDD'; -$getID3checkColor_DirectoryLight = 'FFCCCC'; -$getID3checkColor_DirectoryDark = 'EEBBBB'; -$getID3checkColor_FileLight = 'EEEEEE'; -$getID3checkColor_FileDark = 'DDDDDD'; -$getID3checkColor_UnknownLight = 'CCCCFF'; -$getID3checkColor_UnknownDark = 'BBBBDD'; - - -/////////////////////////////////////////////////////////////////////////////// - - -header('Content-Type: text/html; charset=UTF-8'); -ob_start(); -echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'; -echo '<html><head>'; -echo '<title>getID3() - /demo/demo.browse.php (sample script)</title>'; -echo '<link rel="stylesheet" href="getid3.css" type="text/css">'; -echo '</head><body>'; - -if (isset($_REQUEST['deletefile'])) { - if (file_exists($_REQUEST['deletefile'])) { - if (unlink($_REQUEST['deletefile'])) { - $deletefilemessage = 'Successfully deleted '.addslashes($_REQUEST['deletefile']); - } else { - $deletefilemessage = 'FAILED to delete '.addslashes($_REQUEST['deletefile']).' - error deleting file'; - } - } else { - $deletefilemessage = 'FAILED to delete '.addslashes($_REQUEST['deletefile']).' - file does not exist'; - } - if (isset($_REQUEST['noalert'])) { - echo '<b><font color="'.(($deletefilemessage{0} == 'F') ? '#FF0000' : '#008000').'">'.$deletefilemessage.'</font></b><hr>'; - } else { - echo '<script type="text/javascript">alert("'.$deletefilemessage.'");</script>'; - } -} - - -if (isset($_REQUEST['filename'])) { - - if (!file_exists($_REQUEST['filename']) || !is_file($_REQUEST['filename'])) { - die(getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-8', $_REQUEST['filename'].' does not exist')); - } - $starttime = getmicrotime(); - - //$getID3->setOption(array( - // 'option_md5_data' => $AutoGetHashes, - // 'option_sha1_data' => $AutoGetHashes, - //)); - $ThisFileInfo = $getID3->analyze($_REQUEST['filename']); - $AutoGetHashes = (bool) ((@$ThisFileInfo['filesize'] > 0) && ($ThisFileInfo['filesize'] < (50 * 1048576))); // auto-get md5_data, md5_file, sha1_data, sha1_file if filesize < 50MB, and NOT zero (which may indicate a file>2GB) - if ($AutoGetHashes) { - $ThisFileInfo['md5_file'] = getid3_lib::md5_file($_REQUEST['filename']); - $ThisFileInfo['sha1_file'] = getid3_lib::sha1_file($_REQUEST['filename']); - } - - - getid3_lib::CopyTagsToComments($ThisFileInfo); - - $listdirectory = dirname(getid3_lib::SafeStripSlashes($_REQUEST['filename'])); - $listdirectory = realpath($listdirectory); // get rid of /../../ references - - if (GETID3_OS_ISWINDOWS) { - // this mostly just gives a consistant look to Windows and *nix filesystems - // (windows uses \ as directory seperator, *nix uses /) - $listdirectory = str_replace('\\', '/', $listdirectory.'/'); - } - - if (strstr($_REQUEST['filename'], 'http://') || strstr($_REQUEST['filename'], 'ftp://')) { - echo '<i>Cannot browse remote filesystems</i><br>'; - } else { - echo 'Browse: <a href="'.$_SERVER['PHP_SELF'].'?listdirectory='.urlencode($listdirectory).'">'.getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-8', $listdirectory).'</a><br>'; - } - - echo table_var_dump($ThisFileInfo); - $endtime = getmicrotime(); - echo 'File parsed in '.number_format($endtime - $starttime, 3).' seconds.<br>'; - -} else { - - $listdirectory = (isset($_REQUEST['listdirectory']) ? getid3_lib::SafeStripSlashes($_REQUEST['listdirectory']) : '.'); - $listdirectory = realpath($listdirectory); // get rid of /../../ references - $currentfulldir = $listdirectory.'/'; - - if (GETID3_OS_ISWINDOWS) { - // this mostly just gives a consistant look to Windows and *nix filesystems - // (windows uses \ as directory seperator, *nix uses /) - $currentfulldir = str_replace('\\', '/', $listdirectory.'/'); - } - - if ($handle = @opendir($listdirectory)) { - - echo str_repeat(' ', 300); // IE buffers the first 300 or so chars, making this progressive display useless - fill the buffer with spaces - echo 'Processing'; - - $starttime = getmicrotime(); - - $TotalScannedUnknownFiles = 0; - $TotalScannedKnownFiles = 0; - $TotalScannedPlaytimeFiles = 0; - $TotalScannedBitrateFiles = 0; - $TotalScannedFilesize = 0; - $TotalScannedPlaytime = 0; - $TotalScannedBitrate = 0; - $FilesWithWarnings = 0; - $FilesWithErrors = 0; - - while ($file = readdir($handle)) { - $currentfilename = $listdirectory.'/'.$file; - set_time_limit(30); // allocate another 30 seconds to process this file - should go much quicker than this unless intense processing (like bitrate histogram analysis) is enabled - echo ' .'; // progress indicator dot - flush(); // make sure the dot is shown, otherwise it's useless - - switch ($file) { - case '..': - $ParentDir = realpath($file.'/..').'/'; - if (GETID3_OS_ISWINDOWS) { - $ParentDir = str_replace('\\', '/', $ParentDir); - } - $DirectoryContents[$currentfulldir]['dir'][$file]['filename'] = $ParentDir; - continue 2; - break; - - case '.': - // ignore - continue 2; - break; - } - - // symbolic-link-resolution enhancements by davidbullock×´ech-center*com - $TargetObject = realpath($currentfilename); // Find actual file path, resolve if it's a symbolic link - $TargetObjectType = filetype($TargetObject); // Check file type without examining extension - - if ($TargetObjectType == 'dir') { - - $DirectoryContents[$currentfulldir]['dir'][$file]['filename'] = $file; - - } elseif ($TargetObjectType == 'file') { - - $getID3->setOption(array('option_md5_data' => isset($_REQUEST['ShowMD5']))); - $fileinformation = $getID3->analyze($currentfilename); - - getid3_lib::CopyTagsToComments($fileinformation); - - $TotalScannedFilesize += @$fileinformation['filesize']; - - if (isset($_REQUEST['ShowMD5'])) { - $fileinformation['md5_file'] = md5($currentfilename); - $fileinformation['md5_file'] = getid3_lib::md5_file($currentfilename); - } - - if (!empty($fileinformation['fileformat'])) { - $DirectoryContents[$currentfulldir]['known'][$file] = $fileinformation; - $TotalScannedPlaytime += @$fileinformation['playtime_seconds']; - $TotalScannedBitrate += @$fileinformation['bitrate']; - $TotalScannedKnownFiles++; - } else { - $DirectoryContents[$currentfulldir]['other'][$file] = $fileinformation; - $DirectoryContents[$currentfulldir]['other'][$file]['playtime_string'] = '-'; - $TotalScannedUnknownFiles++; - } - if (isset($fileinformation['playtime_seconds']) && ($fileinformation['playtime_seconds'] > 0)) { - $TotalScannedPlaytimeFiles++; - } - if (isset($fileinformation['bitrate']) && ($fileinformation['bitrate'] > 0)) { - $TotalScannedBitrateFiles++; - } - } - } - $endtime = getmicrotime(); - closedir($handle); - echo 'done<br>'; - echo 'Directory scanned in '.number_format($endtime - $starttime, 2).' seconds.<br>'; - flush(); - - $columnsintable = 14; - echo '<table class="table" cellspacing="0" cellpadding="3">'; - - echo '<tr bgcolor="#'.$getID3checkColor_Head.'"><th colspan="'.$columnsintable.'">Files in '.getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-8', $currentfulldir).'</th></tr>'; - $rowcounter = 0; - foreach ($DirectoryContents as $dirname => $val) { - if (isset($DirectoryContents[$dirname]['dir']) && is_array($DirectoryContents[$dirname]['dir'])) { - uksort($DirectoryContents[$dirname]['dir'], 'MoreNaturalSort'); - foreach ($DirectoryContents[$dirname]['dir'] as $filename => $fileinfo) { - echo '<tr bgcolor="#'.(($rowcounter++ % 2) ? $getID3checkColor_DirectoryLight : $getID3checkColor_DirectoryDark).'">'; - if ($filename == '..') { - echo '<td colspan="'.$columnsintable.'">'; - echo '<form action="'.$_SERVER['PHP_SELF'].'" method="get">'; - echo 'Parent directory: '; - echo '<input type="text" name="listdirectory" size="50" style="background-color: '.$getID3checkColor_DirectoryDark.';" value="'; - if (GETID3_OS_ISWINDOWS) { - echo htmlentities(str_replace('\\', '/', realpath($dirname.$filename)), ENT_QUOTES); - } else { - echo htmlentities(realpath($dirname.$filename), ENT_QUOTES); - } - echo '"> <input type="submit" value="Go">'; - echo '</form></td>'; - } else { - echo '<td colspan="'.$columnsintable.'"><a href="'.$_SERVER['PHP_SELF'].'?listdirectory='.urlencode($dirname.$filename).'"><b>'.FixTextFields($filename).'</b></a></td>'; - } - echo '</tr>'; - } - } - - echo '<tr bgcolor="#'.$getID3checkColor_Head.'">'; - echo '<th>Filename</th>'; - echo '<th>File Size</th>'; - echo '<th>Format</th>'; - echo '<th>Playtime</th>'; - echo '<th>Bitrate</th>'; - echo '<th>Artist</th>'; - echo '<th>Title</th>'; - if (isset($_REQUEST['ShowMD5'])) { - echo '<th>MD5 File (File) (<a href="'.$_SERVER['PHP_SELF'].'?listdirectory='.rawurlencode(isset($_REQUEST['listdirectory']) ? $_REQUEST['listdirectory'] : '.').'">disable</a>)</th>'; - echo '<th>MD5 Data (File) (<a href="'.$_SERVER['PHP_SELF'].'?listdirectory='.rawurlencode(isset($_REQUEST['listdirectory']) ? $_REQUEST['listdirectory'] : '.').'">disable</a>)</th>'; - echo '<th>MD5 Data (Source) (<a href="'.$_SERVER['PHP_SELF'].'?listdirectory='.rawurlencode(isset($_REQUEST['listdirectory']) ? $_REQUEST['listdirectory'] : '.').'">disable</a>)</th>'; - } else { - echo '<th colspan="3">MD5 Data (<a href="'.$_SERVER['PHP_SELF'].'?listdirectory='.rawurlencode(isset($_REQUEST['listdirectory']) ? $_REQUEST['listdirectory'] : '.').'&ShowMD5=1">enable</a>)</th>'; - } - echo '<th>Tags</th>'; - echo '<th>Errors & Warnings</th>'; - echo '<th>Edit</th>'; - echo '<th>Delete</th>'; - echo '</tr>'; - - if (isset($DirectoryContents[$dirname]['known']) && is_array($DirectoryContents[$dirname]['known'])) { - uksort($DirectoryContents[$dirname]['known'], 'MoreNaturalSort'); - foreach ($DirectoryContents[$dirname]['known'] as $filename => $fileinfo) { - echo '<tr bgcolor="#'.(($rowcounter++ % 2) ? $getID3checkColor_FileDark : $getID3checkColor_FileLight).'">'; - echo '<td><a href="'.$_SERVER['PHP_SELF'].'?filename='.urlencode($dirname.$filename).'" title="View detailed analysis">'.FixTextFields(getid3_lib::SafeStripSlashes($filename)).'</a></td>'; - echo '<td align="right"> '.number_format($fileinfo['filesize']).'</td>'; - echo '<td align="right"> '.NiceDisplayFiletypeFormat($fileinfo).'</td>'; - echo '<td align="right"> '.(isset($fileinfo['playtime_string']) ? $fileinfo['playtime_string'] : '-').'</td>'; - echo '<td align="right"> '.(isset($fileinfo['bitrate']) ? BitrateText($fileinfo['bitrate'] / 1000, 0, ((@$fileinfo['audio']['bitrate_mode'] == 'vbr') ? true : false)) : '-').'</td>'; - echo '<td align="left"> '.(isset($fileinfo['comments_html']['artist']) ? implode('<br>', $fileinfo['comments_html']['artist']) : '').'</td>'; - echo '<td align="left"> '.(isset($fileinfo['comments_html']['title']) ? implode('<br>', $fileinfo['comments_html']['title']) : '').'</td>'; - if (isset($_REQUEST['ShowMD5'])) { - echo '<td align="left"><tt>'.(isset($fileinfo['md5_file']) ? $fileinfo['md5_file'] : ' ').'</tt></td>'; - echo '<td align="left"><tt>'.(isset($fileinfo['md5_data']) ? $fileinfo['md5_data'] : ' ').'</tt></td>'; - echo '<td align="left"><tt>'.(isset($fileinfo['md5_data_source']) ? $fileinfo['md5_data_source'] : ' ').'</tt></td>'; - } else { - echo '<td align="center" colspan="3">-</td>'; - } - echo '<td align="left"> '.@implode(', ', array_keys($fileinfo['tags'])).'</td>'; - - echo '<td align="left"> '; - if (!empty($fileinfo['warning'])) { - $FilesWithWarnings++; - echo '<a href="#" onClick="alert(\''.FixTextFields(implode('\\n', $fileinfo['warning'])).'\'); return false;" title="'.FixTextFields(implode("\n", $fileinfo['warning'])).'">warning</a><br>'; - } - if (!empty($fileinfo['error'])) { - $FilesWithErrors++; - echo '<a href="#" onClick="alert(\''.FixTextFields(implode('\\n', $fileinfo['error'])).'\'); return false;" title="'.FixTextFields(implode("\n", $fileinfo['error'])).'">error</a><br>'; - } - echo '</td>'; - - echo '<td align="left"> '; - switch (@$fileinfo['fileformat']) { - case 'mp3': - case 'mp2': - case 'mp1': - case 'flac': - case 'mpc': - case 'real': - echo '<a href="'.$writescriptfilename.'?Filename='.urlencode($dirname.$filename).'" title="Edit tags">edit tags</a>'; - break; - case 'ogg': - switch (@$fileinfo['audio']['dataformat']) { - case 'vorbis': - echo '<a href="'.$writescriptfilename.'?Filename='.urlencode($dirname.$filename).'" title="Edit tags">edit tags</a>'; - break; - } - break; - default: - break; - } - echo '</td>'; - echo '<td align="left"> <a href="'.$_SERVER['PHP_SELF'].'?listdirectory='.urlencode($listdirectory).'&deletefile='.urlencode($dirname.$filename).'" onClick="return confirm(\'Are you sure you want to delete '.addslashes(htmlentities($dirname.$filename)).'? \n(this action cannot be un-done)\');" title="Permanently delete '."\n".FixTextFields($filename)."\n".' from'."\n".' '.FixTextFields($dirname).'">delete</a></td>'; - echo '</tr>'; - } - } - - if (isset($DirectoryContents[$dirname]['other']) && is_array($DirectoryContents[$dirname]['other'])) { - uksort($DirectoryContents[$dirname]['other'], 'MoreNaturalSort'); - foreach ($DirectoryContents[$dirname]['other'] as $filename => $fileinfo) { - echo '<tr bgcolor="#'.(($rowcounter++ % 2) ? $getID3checkColor_UnknownDark : $getID3checkColor_UnknownLight).'">'; - echo '<td><a href="'.$_SERVER['PHP_SELF'].'?filename='.urlencode($dirname.$filename).'"><i>'.$filename.'</i></a></td>'; - echo '<td align="right"> '.(isset($fileinfo['filesize']) ? number_format($fileinfo['filesize']) : '-').'</td>'; - echo '<td align="right"> '.NiceDisplayFiletypeFormat($fileinfo).'</td>'; - echo '<td align="right"> '.(isset($fileinfo['playtime_string']) ? $fileinfo['playtime_string'] : '-').'</td>'; - echo '<td align="right"> '.(isset($fileinfo['bitrate']) ? BitrateText($fileinfo['bitrate'] / 1000) : '-').'</td>'; - echo '<td align="left"> </td>'; // Artist - echo '<td align="left"> </td>'; // Title - echo '<td align="left" colspan="3"> </td>'; // MD5_data - echo '<td align="left"> </td>'; // Tags - - //echo '<td align="left"> </td>'; // Warning/Error - echo '<td align="left"> '; - if (!empty($fileinfo['warning'])) { - $FilesWithWarnings++; - echo '<a href="#" onClick="alert(\''.FixTextFields(implode('\\n', $fileinfo['warning'])).'\'); return false;" title="'.FixTextFields(implode("\n", $fileinfo['warning'])).'">warning</a><br>'; - } - if (!empty($fileinfo['error'])) { - if ($fileinfo['error'][0] != 'unable to determine file format') { - $FilesWithErrors++; - echo '<a href="#" onClick="alert(\''.FixTextFields(implode('\\n', $fileinfo['error'])).'\'); return false;" title="'.FixTextFields(implode("\n", $fileinfo['error'])).'">error</a><br>'; - } - } - echo '</td>'; - - echo '<td align="left"> </td>'; // Edit - echo '<td align="left"> <a href="'.$_SERVER['PHP_SELF'].'?listdirectory='.urlencode($listdirectory).'&deletefile='.urlencode($dirname.$filename).'" onClick="return confirm(\'Are you sure you want to delete '.addslashes($dirname.$filename).'? \n(this action cannot be un-done)\');" title="Permanently delete '.addslashes($dirname.$filename).'">delete</a></td>'; - echo '</tr>'; - } - } - - echo '<tr bgcolor="#'.$getID3checkColor_Head.'">'; - echo '<td><b>Average:</b></td>'; - echo '<td align="right">'.number_format($TotalScannedFilesize / max($TotalScannedKnownFiles, 1)).'</td>'; - echo '<td> </td>'; - echo '<td align="right">'.getid3_lib::PlaytimeString($TotalScannedPlaytime / max($TotalScannedPlaytimeFiles, 1)).'</td>'; - echo '<td align="right">'.BitrateText(round(($TotalScannedBitrate / 1000) / max($TotalScannedBitrateFiles, 1))).'</td>'; - echo '<td rowspan="2" colspan="'.($columnsintable - 5).'"><table class="table" border="0" cellspacing="0" cellpadding="2"><tr><th align="right">Identified Files:</th><td align="right">'.number_format($TotalScannedKnownFiles).'</td><td> </td><th align="right">Errors:</th><td align="right">'.number_format($FilesWithErrors).'</td></tr><tr><th align="right">Unknown Files:</th><td align="right">'.number_format($TotalScannedUnknownFiles).'</td><td> </td><th align="right">Warnings:</th><td align="right">'.number_format($FilesWithWarnings).'</td></tr></table>'; - echo '</tr>'; - echo '<tr bgcolor="#'.$getID3checkColor_Head.'">'; - echo '<td><b>Total:</b></td>'; - echo '<td align="right">'.number_format($TotalScannedFilesize).'</td>'; - echo '<td> </td>'; - echo '<td align="right">'.getid3_lib::PlaytimeString($TotalScannedPlaytime).'</td>'; - echo '<td> </td>'; - echo '</tr>'; - } - echo '</table>'; - } else { - echo '<b>ERROR: Could not open directory: <u>'.$currentfulldir.'</u></b><br>'; - } -} -echo PoweredBygetID3(); -echo 'Running on PHP v'.phpversion(); -echo '</body></html>'; -ob_end_flush(); - - -///////////////////////////////////////////////////////////////// - - -function RemoveAccents($string) { - // Revised version by markstewardרotmail*com - // Again revised by James Heinrich (19-June-2006) - return strtr( - strtr( - $string, - "\x8A\x8E\x9A\x9E\x9F\xC0\xC1\xC2\xC3\xC4\xC5\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD1\xD2\xD3\xD4\xD5\xD6\xD8\xD9\xDA\xDB\xDC\xDD\xE0\xE1\xE2\xE3\xE4\xE5\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF1\xF2\xF3\xF4\xF5\xF6\xF8\xF9\xFA\xFB\xFC\xFD\xFF", - 'SZszYAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy' - ), - array( - "\xDE" => 'TH', - "\xFE" => 'th', - "\xD0" => 'DH', - "\xF0" => 'dh', - "\xDF" => 'ss', - "\x8C" => 'OE', - "\x9C" => 'oe', - "\xC6" => 'AE', - "\xE6" => 'ae', - "\xB5" => 'u' - ) - ); -} - - -function BitrateColor($bitrate, $BitrateMaxScale=768) { - // $BitrateMaxScale is bitrate of maximum-quality color (bright green) - // below this is gradient, above is solid green - - $bitrate *= (256 / $BitrateMaxScale); // scale from 1-[768]kbps to 1-256 - $bitrate = round(min(max($bitrate, 1), 256)); - $bitrate--; // scale from 1-256kbps to 0-255kbps - - $Rcomponent = max(255 - ($bitrate * 2), 0); - $Gcomponent = max(($bitrate * 2) - 255, 0); - if ($bitrate > 127) { - $Bcomponent = max((255 - $bitrate) * 2, 0); - } else { - $Bcomponent = max($bitrate * 2, 0); - } - return str_pad(dechex($Rcomponent), 2, '0', STR_PAD_LEFT).str_pad(dechex($Gcomponent), 2, '0', STR_PAD_LEFT).str_pad(dechex($Bcomponent), 2, '0', STR_PAD_LEFT); -} - -function BitrateText($bitrate, $decimals=0, $vbr=false) { - return '<SPAN STYLE="color: #'.BitrateColor($bitrate).($vbr ? '; font-weight: bold;' : '').'">'.number_format($bitrate, $decimals).' kbps</SPAN>'; -} - -function FixTextFields($text) { - $text = getid3_lib::SafeStripSlashes($text); - $text = htmlentities($text, ENT_QUOTES); - return $text; -} - - -function string_var_dump($variable) { - ob_start(); - var_dump($variable); - $dumpedvariable = ob_get_contents(); - ob_end_clean(); - return $dumpedvariable; -} - - -function table_var_dump($variable, $wrap_in_td=false) { - $returnstring = ''; - switch (gettype($variable)) { - case 'array': - $returnstring .= ($wrap_in_td ? '<td>' : ''); - $returnstring .= '<table class="dump" cellspacing="0" cellpadding="2">'; - foreach ($variable as $key => $value) { - $returnstring .= '<tr><td valign="top"><b>'.str_replace("\x00", ' ', $key).'</b></td>'; - $returnstring .= '<td valign="top">'.gettype($value); - if (is_array($value)) { - $returnstring .= ' ('.count($value).')'; - } elseif (is_string($value)) { - $returnstring .= ' ('.strlen($value).')'; - } - if (($key == 'data') && isset($variable['image_mime']) && isset($variable['dataoffset'])) { - $imageinfo = array(); - $imagechunkcheck = getid3_lib::GetDataImageSize($value, $imageinfo); - $DumpedImageSRC = (!empty($_REQUEST['filename']) ? $_REQUEST['filename'] : '.getid3').'.'.$variable['dataoffset'].'.'.getid3_lib::ImageTypesLookup($imagechunkcheck[2]); - if ($tempimagefile = @fopen($DumpedImageSRC, 'wb')) { - fwrite($tempimagefile, $value); - fclose($tempimagefile); - } - $returnstring .= '</td><td><img src="'.$_SERVER['PHP_SELF'].'?showfile='.urlencode($DumpedImageSRC).'&md5='.md5_file($DumpedImageSRC).'" width="'.$imagechunkcheck[0].'" height="'.$imagechunkcheck[1].'"></td></tr>'; - } else { - $returnstring .= '</td>'.table_var_dump($value, true).'</tr>'; - } - } - $returnstring .= '</table>'; - $returnstring .= ($wrap_in_td ? '</td>' : ''); - break; - - case 'boolean': - $returnstring .= ($wrap_in_td ? '<td class="dump_boolean">' : '').($variable ? 'TRUE' : 'FALSE').($wrap_in_td ? '</td>' : ''); - break; - - case 'integer': - $returnstring .= ($wrap_in_td ? '<td class="dump_integer">' : '').$variable.($wrap_in_td ? '</td>' : ''); - break; - - case 'double': - case 'float': - $returnstring .= ($wrap_in_td ? '<td class="dump_double">' : '').$variable.($wrap_in_td ? '</td>' : ''); - break; - - case 'object': - case 'null': - $returnstring .= ($wrap_in_td ? '<td>' : '').string_var_dump($variable).($wrap_in_td ? '</td>' : ''); - break; - - case 'string': - $variable = str_replace("\x00", ' ', $variable); - $varlen = strlen($variable); - for ($i = 0; $i < $varlen; $i++) { - if (ereg('['."\x0A\x0D".' -;0-9A-Za-z]', $variable{$i})) { - $returnstring .= $variable{$i}; - } else { - $returnstring .= '&#'.str_pad(ord($variable{$i}), 3, '0', STR_PAD_LEFT).';'; - } - } - $returnstring = ($wrap_in_td ? '<td class="dump_string">' : '').nl2br($returnstring).($wrap_in_td ? '</td>' : ''); - break; - - default: - $imageinfo = array(); - $imagechunkcheck = getid3_lib::GetDataImageSize($variable, $imageinfo); - if (($imagechunkcheck[2] >= 1) && ($imagechunkcheck[2] <= 3)) { - $returnstring .= ($wrap_in_td ? '<td>' : ''); - $returnstring .= '<table class="dump" cellspacing="0" cellpadding="2">'; - $returnstring .= '<tr><td><b>type</b></td><td>'.getid3_lib::ImageTypesLookup($imagechunkcheck[2]).'</td></tr>'; - $returnstring .= '<tr><td><b>width</b></td><td>'.number_format($imagechunkcheck[0]).' px</td></tr>'; - $returnstring .= '<tr><td><b>height</b></td><td>'.number_format($imagechunkcheck[1]).' px</td></tr>'; - $returnstring .= '<tr><td><b>size</b></td><td>'.number_format(strlen($variable)).' bytes</td></tr></table>'; - $returnstring .= ($wrap_in_td ? '</td>' : ''); - } else { - $returnstring .= ($wrap_in_td ? '<td>' : '').nl2br(htmlspecialchars(str_replace("\x00", ' ', $variable))).($wrap_in_td ? '</td>' : ''); - } - break; - } - return $returnstring; -} - - -function NiceDisplayFiletypeFormat(&$fileinfo) { - - if (empty($fileinfo['fileformat'])) { - return '-'; - } - - $output = $fileinfo['fileformat']; - if (empty($fileinfo['video']['dataformat']) && empty($fileinfo['audio']['dataformat'])) { - return $output; // 'gif' - } - if (empty($fileinfo['video']['dataformat']) && !empty($fileinfo['audio']['dataformat'])) { - if ($fileinfo['fileformat'] == $fileinfo['audio']['dataformat']) { - return $output; // 'mp3' - } - $output .= '.'.$fileinfo['audio']['dataformat']; // 'ogg.flac' - return $output; - } - if (!empty($fileinfo['video']['dataformat']) && empty($fileinfo['audio']['dataformat'])) { - if ($fileinfo['fileformat'] == $fileinfo['video']['dataformat']) { - return $output; // 'mpeg' - } - $output .= '.'.$fileinfo['video']['dataformat']; // 'riff.avi' - return $output; - } - if ($fileinfo['video']['dataformat'] == $fileinfo['audio']['dataformat']) { - if ($fileinfo['fileformat'] == $fileinfo['video']['dataformat']) { - return $output; // 'real' - } - $output .= '.'.$fileinfo['video']['dataformat']; // any examples? - return $output; - } - $output .= '.'.$fileinfo['video']['dataformat']; - $output .= '.'.$fileinfo['audio']['dataformat']; // asf.wmv.wma - return $output; - -} - -function MoreNaturalSort($ar1, $ar2) { - if ($ar1 === $ar2) { - return 0; - } - $len1 = strlen($ar1); - $len2 = strlen($ar2); - $shortest = min($len1, $len2); - if (substr($ar1, 0, $shortest) === substr($ar2, 0, $shortest)) { - // the shorter argument is the beginning of the longer one, like "str" and "string" - if ($len1 < $len2) { - return -1; - } elseif ($len1 > $len2) { - return 1; - } - return 0; - } - $ar1 = RemoveAccents(strtolower(trim($ar1))); - $ar2 = RemoveAccents(strtolower(trim($ar2))); - $translatearray = array('\''=>'', '"'=>'', '_'=>' ', '('=>'', ')'=>'', '-'=>' ', ' '=>' ', '.'=>'', ','=>''); - foreach ($translatearray as $key => $val) { - $ar1 = str_replace($key, $val, $ar1); - $ar2 = str_replace($key, $val, $ar2); - } - - if ($ar1 < $ar2) { - return -1; - } elseif ($ar1 > $ar2) { - return 1; - } - return 0; -} - -function PoweredBygetID3($string='<br><HR NOSHADE><DIV STYLE="font-size: 8pt; font-face: sans-serif;">Powered by <a href="http://getid3.sourceforge.net" TARGET="_blank"><b>getID3() v<!--GETID3VER--></b><br>http://getid3.sourceforge.net</a></DIV>') { - return str_replace('<!--GETID3VER-->', GETID3_VERSION, $string); -} - - -///////////////////////////////////////////////////////////////// -// Unify the contents of GPC, -// whether magic_quotes_gpc is on or off - -function AddStripSlashesArray($input, $addslashes=false) { - if (is_array($input)) { - - $output = $input; - foreach ($input as $key => $value) { - $output[$key] = AddStripSlashesArray($input[$key]); - } - return $output; - - } elseif ($addslashes) { - return addslashes($input); - } - return stripslashes($input); -} - -function UnifyMagicQuotes($turnon=false) { - global $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS; - - if (get_magic_quotes_gpc() && !$turnon) { - - // magic_quotes_gpc is on and we want it off! - $_GET = AddStripSlashesArray($_GET, true); - $_POST = AddStripSlashesArray($_POST, true); - $_COOKIE = AddStripSlashesArray($_COOKIE, true); - - unset($_REQUEST); - $_REQUEST = array_merge_recursive($_GET, $_POST, $_COOKIE); - - } elseif (!get_magic_quotes_gpc() && $turnon) { - - // magic_quotes_gpc is off and we want it on (why??) - $_GET = AddStripSlashesArray($_GET, true); - $_POST = AddStripSlashesArray($_POST, true); - $_COOKIE = AddStripSlashesArray($_COOKIE, true); - - unset($_REQUEST); - $_REQUEST = array_merge_recursive($_GET, $_POST, $_COOKIE); - - } - $HTTP_GET_VARS = $_GET; - $HTTP_POST_VARS = $_POST; - $HTTP_COOKIE_VARS = $_COOKIE; - - return true; -} -///////////////////////////////////////////////////////////////// - -?> \ No newline at end of file diff --git a/apps/media/getID3/demos/demo.cache.dbm.php b/apps/media/getID3/demos/demo.cache.dbm.php deleted file mode 100644 index acaaa0f3f2f0a8156204957597daf8f42e07a5ba..0000000000000000000000000000000000000000 --- a/apps/media/getID3/demos/demo.cache.dbm.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php -///////////////////////////////////////////////////////////////// -/// getID3() by James Heinrich <info@getid3.org> // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// // -// /demo/demo.cache.dbm.php - part of getID3() // -// Sample script demonstrating the use of the DBM caching // -// extension for getID3() // -// See readme.txt for more details // -// /// -///////////////////////////////////////////////////////////////// - -require_once('../getid3/getid3.php'); -getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'extension.cache.dbm.php', __FILE__, true); - -$getID3 = new getID3_cached_dbm('db3', '/zimweb/test/test.dbm', '/zimweb/test/test.lock'); - -$r = $getID3->analyze('/path/to/files/filename.mp3'); - -echo '<pre>'; -var_dump($r); -echo '</pre>'; - -// uncomment to clear cache -// $getID3->clear_cache(); - -?> \ No newline at end of file diff --git a/apps/media/getID3/demos/demo.cache.mysql.php b/apps/media/getID3/demos/demo.cache.mysql.php deleted file mode 100644 index 537b2f0ceb6f081dabbb80f26f2748335e54b1aa..0000000000000000000000000000000000000000 --- a/apps/media/getID3/demos/demo.cache.mysql.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php -///////////////////////////////////////////////////////////////// -/// getID3() by James Heinrich <info@getid3.org> // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// // -// /demo/demo.cache.mysql.php - part of getID3() // -// Sample script demonstrating the use of the DBM caching // -// extension for getID3() // -// See readme.txt for more details // -// /// -///////////////////////////////////////////////////////////////// - -require_once('../getid3/getid3.php'); -getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'extension.cache.mysql.php', __FILE__, true); - -$getID3 = new getID3_cached_mysql('localhost', 'database', 'username', 'password'); - -$r = $getID3->analyze('/path/to/files/filename.mp3'); - -echo '<pre>'; -var_dump($r); -echo '</pre>'; - -// uncomment to clear cache -//$getID3->clear_cache(); - -?> \ No newline at end of file diff --git a/apps/media/getID3/demos/demo.joinmp3.php b/apps/media/getID3/demos/demo.joinmp3.php deleted file mode 100644 index 976884f92ebddc2d43f8ea08b528e02a62edea53..0000000000000000000000000000000000000000 --- a/apps/media/getID3/demos/demo.joinmp3.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php -///////////////////////////////////////////////////////////////// -/// getID3() by James Heinrich <info@getid3.org> // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// // -// /demo/demo.joinmp3.php - part of getID3() // -// Sample script for splicing two or more MP3s together into // -// one file. Does not attempt to fix VBR header frames. // -// See readme.txt for more details // -// /// -///////////////////////////////////////////////////////////////// - - -// sample usage: -// $FilenameOut = 'combined.mp3'; -// $FilenamesIn[] = 'file1.mp3'; -// $FilenamesIn[] = 'file2.mp3'; -// $FilenamesIn[] = 'file3.mp3'; -// -// if (CombineMultipleMP3sTo($FilenameOut, $FilenamesIn)) { -// echo 'Successfully copied '.implode(' + ', $FilenamesIn).' to '.$FilenameOut; -// } else { -// echo 'Failed to copy '.implode(' + ', $FilenamesIn).' to '.$FilenameOut; -// } - -function CombineMultipleMP3sTo($FilenameOut, $FilenamesIn) { - - foreach ($FilenamesIn as $nextinputfilename) { - if (!is_readable($nextinputfilename)) { - echo 'Cannot read "'.$nextinputfilename.'"<BR>'; - return false; - } - } - if (!is_writeable($FilenameOut)) { - echo 'Cannot write "'.$FilenameOut.'"<BR>'; - return false; - } - - require_once('../getid3/getid3.php'); - if ($fp_output = @fopen($FilenameOut, 'wb')) { - - // Initialize getID3 engine - $getID3 = new getID3; - foreach ($FilenamesIn as $nextinputfilename) { - - $CurrentFileInfo = $getID3->analyze($nextinputfilename); - if ($CurrentFileInfo['fileformat'] == 'mp3') { - - if ($fp_source = @fopen($nextinputfilename, 'rb')) { - - $CurrentOutputPosition = ftell($fp_output); - - // copy audio data from first file - fseek($fp_source, $CurrentFileInfo['avdataoffset'], SEEK_SET); - while (!feof($fp_source) && (ftell($fp_source) < $CurrentFileInfo['avdataend'])) { - fwrite($fp_output, fread($fp_source, 32768)); - } - fclose($fp_source); - - // trim post-audio data (if any) copied from first file that we don't need or want - $EndOfFileOffset = $CurrentOutputPosition + ($CurrentFileInfo['avdataend'] - $CurrentFileInfo['avdataoffset']); - fseek($fp_output, $EndOfFileOffset, SEEK_SET); - ftruncate($fp_output, $EndOfFileOffset); - - } else { - - echo 'failed to open '.$nextinputfilename.' for reading'; - fclose($fp_output); - return false; - - } - - } else { - - echo $nextinputfilename.' is not MP3 format'; - fclose($fp_output); - return false; - - } - - } - - } else { - - echo 'failed to open '.$FilenameOut.' for writing'; - return false; - - } - - fclose($fp_output); - return true; -} - -?> \ No newline at end of file diff --git a/apps/media/getID3/demos/demo.mimeonly.php b/apps/media/getID3/demos/demo.mimeonly.php deleted file mode 100644 index dd6dec6fe3d68ddf6c5b6f36c2564057093952fd..0000000000000000000000000000000000000000 --- a/apps/media/getID3/demos/demo.mimeonly.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php -///////////////////////////////////////////////////////////////// -/// getID3() by James Heinrich <info@getid3.org> // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// // -// /demo/demo.mimeonly.php - part of getID3() // -// Sample script for scanning a single file and returning only // -// the MIME information // -// See readme.txt for more details // -// /// -///////////////////////////////////////////////////////////////// - -echo '<HTML><HEAD><STYLE>BODY, TD, TH { font-family: sans-serif; font-size: 10pt; }</STYLE></HEAD><BODY>'; - -if (!empty($_REQUEST['filename'])) { - - echo 'The file "'.$_REQUEST['filename'].'" has a MIME type of "'.GetMIMEtype($_REQUEST['filename']).'"'; - -} else { - - echo 'Usage: <TT>'.$_SERVER['PHP_SELF'].'?filename=<I>filename.ext</I></TT>'; - -} - - -function GetMIMEtype($filename) { - // include getID3() library (can be in a different directory if full path is specified) - require_once('../getid3/getid3.php'); - // Initialize getID3 engine - $getID3 = new getID3; - - $DeterminedMIMEtype = ''; - if ($fp = fopen($filename, 'rb')) { - $ThisFileInfo = array('avdataoffset'=>0, 'avdataend'=>0); - - getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.tag.id3v2.php', __FILE__, true); - $tag = new getid3_id3v2($fp, $ThisFileInfo); - - fseek($fp, $ThisFileInfo['avdataoffset'], SEEK_SET); - $formattest = fread($fp, 16); // 16 bytes is sufficient for any format except ISO CD-image - fclose($fp); - - $DeterminedFormatInfo = $getID3->GetFileFormat($formattest); - $DeterminedMIMEtype = $DeterminedFormatInfo['mime_type']; - } - return $DeterminedMIMEtype; -} - -?> -</BODY> -</HTML> \ No newline at end of file diff --git a/apps/media/getID3/demos/demo.mp3header.php b/apps/media/getID3/demos/demo.mp3header.php deleted file mode 100644 index 2c9c1f223288bcdcee5edfe6619c75126717d677..0000000000000000000000000000000000000000 --- a/apps/media/getID3/demos/demo.mp3header.php +++ /dev/null @@ -1,2890 +0,0 @@ -<?php - -if (!function_exists('PrintHexBytes')) { - function PrintHexBytes($string) { - $returnstring = ''; - for ($i = 0; $i < strlen($string); $i++) { - $returnstring .= str_pad(dechex(ord(substr($string, $i, 1))), 2, '0', STR_PAD_LEFT).' '; - } - return $returnstring; - } -} - -if (!function_exists('PrintTextBytes')) { - function PrintTextBytes($string) { - $returnstring = ''; - for ($i = 0; $i < strlen($string); $i++) { - if (ord(substr($string, $i, 1)) <= 31) { - $returnstring .= ' '; - } else { - $returnstring .= ' '.substr($string, $i, 1).' '; - } - } - return $returnstring; - } -} - -if (!function_exists('FixDBFields')) { - function FixDBFields($text) { - return mysql_escape_string($text); - } -} - -if (!function_exists('FixTextFields')) { - function FixTextFields($text) { - $text = SafeStripSlashes($text); - $text = htmlentities($text, ENT_QUOTES); - return $text; - } -} - -if (!function_exists('SafeStripSlashes')) { - function SafeStripSlashes($text) { - if (get_magic_quotes_gpc()) { - return stripslashes($text); - } - return $text; - } -} - - -if (!function_exists('table_var_dump')) { - function table_var_dump($variable) { - $returnstring = ''; - switch (gettype($variable)) { - case 'array': - $returnstring .= '<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="2">'; - foreach ($variable as $key => $value) { - $returnstring .= '<TR><TD VALIGN="TOP"><B>'.str_replace(chr(0), ' ', $key).'</B></TD>'; - $returnstring .= '<TD VALIGN="TOP">'.gettype($value); - if (is_array($value)) { - $returnstring .= ' ('.count($value).')'; - } elseif (is_string($value)) { - $returnstring .= ' ('.strlen($value).')'; - } - if (($key == 'data') && isset($variable['image_mime']) && isset($variable['dataoffset'])) { - require_once(GETID3_INCLUDEPATH.'getid3.getimagesize.php'); - $imageinfo = array(); - $imagechunkcheck = GetDataImageSize($value, $imageinfo); - $DumpedImageSRC = (!empty($_REQUEST['filename']) ? $_REQUEST['filename'] : '.getid3').'.'.$variable['dataoffset'].'.'.ImageTypesLookup($imagechunkcheck[2]); - if ($tempimagefile = fopen($DumpedImageSRC, 'wb')) { - fwrite($tempimagefile, $value); - fclose($tempimagefile); - } - $returnstring .= '</TD><TD><IMG SRC="'.$DumpedImageSRC.'" WIDTH="'.$imagechunkcheck[0].'" HEIGHT="'.$imagechunkcheck[1].'"></TD></TR>'; - } else { - $returnstring .= '</TD><TD>'.table_var_dump($value).'</TD></TR>'; - } - } - $returnstring .= '</TABLE>'; - break; - - case 'boolean': - $returnstring .= ($variable ? 'TRUE' : 'FALSE'); - break; - - case 'integer': - case 'double': - case 'float': - $returnstring .= $variable; - break; - - case 'object': - case 'null': - $returnstring .= string_var_dump($variable); - break; - - case 'string': - $variable = str_replace(chr(0), ' ', $variable); - $varlen = strlen($variable); - for ($i = 0; $i < $varlen; $i++) { - if (ereg('['.chr(0x0A).chr(0x0D).' -;0-9A-Za-z]', $variable{$i})) { - $returnstring .= $variable{$i}; - } else { - $returnstring .= '&#'.str_pad(ord($variable{$i}), 3, '0', STR_PAD_LEFT).';'; - } - } - $returnstring = nl2br($returnstring); - break; - - default: - require_once(GETID3_INCLUDEPATH.'getid3.getimagesize.php'); - $imageinfo = array(); - $imagechunkcheck = GetDataImageSize(substr($variable, 0, FREAD_BUFFER_SIZE), $imageinfo); - - if (($imagechunkcheck[2] >= 1) && ($imagechunkcheck[2] <= 3)) { - $returnstring .= '<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="2">'; - $returnstring .= '<TR><TD><B>type</B></TD><TD>'.ImageTypesLookup($imagechunkcheck[2]).'</TD></TR>'; - $returnstring .= '<TR><TD><B>width</B></TD><TD>'.number_format($imagechunkcheck[0]).' px</TD></TR>'; - $returnstring .= '<TR><TD><B>height</B></TD><TD>'.number_format($imagechunkcheck[1]).' px</TD></TR>'; - $returnstring .= '<TR><TD><B>size</B></TD><TD>'.number_format(strlen($variable)).' bytes</TD></TR></TABLE>'; - } else { - $returnstring .= nl2br(htmlspecialchars(str_replace(chr(0), ' ', $variable))); - } - break; - } - return $returnstring; - } -} - -if (!function_exists('string_var_dump')) { - function string_var_dump($variable) { - ob_start(); - var_dump($variable); - $dumpedvariable = ob_get_contents(); - ob_end_clean(); - return $dumpedvariable; - } -} - -if (!function_exists('fileextension')) { - function fileextension($filename, $numextensions=1) { - if (strstr($filename, '.')) { - $reversedfilename = strrev($filename); - $offset = 0; - for ($i = 0; $i < $numextensions; $i++) { - $offset = strpos($reversedfilename, '.', $offset + 1); - if ($offset === false) { - return ''; - } - } - return strrev(substr($reversedfilename, 0, $offset)); - } - return ''; - } -} - -if (!function_exists('RemoveAccents')) { - function RemoveAccents($string) { - // return strtr($string, 'ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ', 'SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy'); - // Revised version by marksteward@hotmail.com - return strtr(strtr($string, 'ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ', 'SZszYAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy'), array('Þ' => 'TH', 'þ' => 'th', 'Ð' => 'DH', 'ð' => 'dh', 'ß' => 'ss', 'Œ' => 'OE', 'œ' => 'oe', 'Æ' => 'AE', 'æ' => 'ae', 'µ' => 'u')); - } -} - -if (!function_exists('MoreNaturalSort')) { - function MoreNaturalSort($ar1, $ar2) { - if ($ar1 === $ar2) { - return 0; - } - $len1 = strlen($ar1); - $len2 = strlen($ar2); - $shortest = min($len1, $len2); - if (substr($ar1, 0, $shortest) === substr($ar2, 0, $shortest)) { - // the shorter argument is the beginning of the longer one, like "str" and "string" - if ($len1 < $len2) { - return -1; - } elseif ($len1 > $len2) { - return 1; - } - return 0; - } - $ar1 = RemoveAccents(strtolower(trim($ar1))); - $ar2 = RemoveAccents(strtolower(trim($ar2))); - $translatearray = array('\''=>'', '"'=>'', '_'=>' ', '('=>'', ')'=>'', '-'=>' ', ' '=>' ', '.'=>'', ','=>''); - foreach ($translatearray as $key => $val) { - $ar1 = str_replace($key, $val, $ar1); - $ar2 = str_replace($key, $val, $ar2); - } - - if ($ar1 < $ar2) { - return -1; - } elseif ($ar1 > $ar2) { - return 1; - } - return 0; - } -} - -if (!function_exists('trunc')) { - function trunc($floatnumber) { - // truncates a floating-point number at the decimal point - // returns int (if possible, otherwise float) - if ($floatnumber >= 1) { - $truncatednumber = floor($floatnumber); - } elseif ($floatnumber <= -1) { - $truncatednumber = ceil($floatnumber); - } else { - $truncatednumber = 0; - } - if ($truncatednumber <= pow(2, 30)) { - $truncatednumber = (int) $truncatednumber; - } - return $truncatednumber; - } -} - -if (!function_exists('CastAsInt')) { - function CastAsInt($floatnum) { - // convert to float if not already - $floatnum = (float) $floatnum; - - // convert a float to type int, only if possible - if (trunc($floatnum) == $floatnum) { - // it's not floating point - if ($floatnum <= pow(2, 30)) { - // it's within int range - $floatnum = (int) $floatnum; - } - } - return $floatnum; - } -} - -if (!function_exists('getmicrotime')) { - function getmicrotime() { - list($usec, $sec) = explode(' ', microtime()); - return ((float) $usec + (float) $sec); - } -} - -if (!function_exists('DecimalBinary2Float')) { - function DecimalBinary2Float($binarynumerator) { - $numerator = Bin2Dec($binarynumerator); - $denominator = Bin2Dec(str_repeat('1', strlen($binarynumerator))); - return ($numerator / $denominator); - } -} - -if (!function_exists('NormalizeBinaryPoint')) { - function NormalizeBinaryPoint($binarypointnumber, $maxbits=52) { - // http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/binary.html - if (strpos($binarypointnumber, '.') === false) { - $binarypointnumber = '0.'.$binarypointnumber; - } elseif ($binarypointnumber{0} == '.') { - $binarypointnumber = '0'.$binarypointnumber; - } - $exponent = 0; - while (($binarypointnumber{0} != '1') || (substr($binarypointnumber, 1, 1) != '.')) { - if (substr($binarypointnumber, 1, 1) == '.') { - $exponent--; - $binarypointnumber = substr($binarypointnumber, 2, 1).'.'.substr($binarypointnumber, 3); - } else { - $pointpos = strpos($binarypointnumber, '.'); - $exponent += ($pointpos - 1); - $binarypointnumber = str_replace('.', '', $binarypointnumber); - $binarypointnumber = $binarypointnumber{0}.'.'.substr($binarypointnumber, 1); - } - } - $binarypointnumber = str_pad(substr($binarypointnumber, 0, $maxbits + 2), $maxbits + 2, '0', STR_PAD_RIGHT); - return array('normalized'=>$binarypointnumber, 'exponent'=>(int) $exponent); - } -} - -if (!function_exists('Float2BinaryDecimal')) { - function Float2BinaryDecimal($floatvalue) { - // http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/binary.html - $maxbits = 128; // to how many bits of precision should the calculations be taken? - $intpart = trunc($floatvalue); - $floatpart = abs($floatvalue - $intpart); - $pointbitstring = ''; - while (($floatpart != 0) && (strlen($pointbitstring) < $maxbits)) { - $floatpart *= 2; - $pointbitstring .= (string) trunc($floatpart); - $floatpart -= trunc($floatpart); - } - $binarypointnumber = decbin($intpart).'.'.$pointbitstring; - return $binarypointnumber; - } -} - -if (!function_exists('Float2String')) { - function Float2String($floatvalue, $bits) { - // http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/ieee-expl.html - switch ($bits) { - case 32: - $exponentbits = 8; - $fractionbits = 23; - break; - - case 64: - $exponentbits = 11; - $fractionbits = 52; - break; - - default: - return false; - break; - } - if ($floatvalue >= 0) { - $signbit = '0'; - } else { - $signbit = '1'; - } - $normalizedbinary = NormalizeBinaryPoint(Float2BinaryDecimal($floatvalue), $fractionbits); - $biasedexponent = pow(2, $exponentbits - 1) - 1 + $normalizedbinary['exponent']; // (127 or 1023) +/- exponent - $exponentbitstring = str_pad(decbin($biasedexponent), $exponentbits, '0', STR_PAD_LEFT); - $fractionbitstring = str_pad(substr($normalizedbinary['normalized'], 2), $fractionbits, '0', STR_PAD_RIGHT); - - return BigEndian2String(Bin2Dec($signbit.$exponentbitstring.$fractionbitstring), $bits % 8, false); - } -} - -if (!function_exists('LittleEndian2Float')) { - function LittleEndian2Float($byteword) { - return BigEndian2Float(strrev($byteword)); - } -} - -if (!function_exists('BigEndian2Float')) { - function BigEndian2Float($byteword) { - // ANSI/IEEE Standard 754-1985, Standard for Binary Floating Point Arithmetic - // http://www.psc.edu/general/software/packages/ieee/ieee.html - // http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/ieee.html - - $bitword = BigEndian2Bin($byteword); - $signbit = $bitword{0}; - - switch (strlen($byteword) * 8) { - case 32: - $exponentbits = 8; - $fractionbits = 23; - break; - - case 64: - $exponentbits = 11; - $fractionbits = 52; - break; - - case 80: - $exponentbits = 16; - $fractionbits = 64; - break; - - default: - return false; - break; - } - $exponentstring = substr($bitword, 1, $exponentbits - 1); - $fractionstring = substr($bitword, $exponentbits, $fractionbits); - $exponent = Bin2Dec($exponentstring); - $fraction = Bin2Dec($fractionstring); - - if (($exponentbits == 16) && ($fractionbits == 64)) { - // 80-bit - // As used in Apple AIFF for sample_rate - // A bit of a hack, but it works ;) - return pow(2, ($exponent - 16382)) * DecimalBinary2Float($fractionstring); - } - - - if (($exponent == (pow(2, $exponentbits) - 1)) && ($fraction != 0)) { - // Not a Number - $floatvalue = false; - } elseif (($exponent == (pow(2, $exponentbits) - 1)) && ($fraction == 0)) { - if ($signbit == '1') { - $floatvalue = '-infinity'; - } else { - $floatvalue = '+infinity'; - } - } elseif (($exponent == 0) && ($fraction == 0)) { - if ($signbit == '1') { - $floatvalue = -0; - } else { - $floatvalue = 0; - } - $floatvalue = ($signbit ? 0 : -0); - } elseif (($exponent == 0) && ($fraction != 0)) { - // These are 'unnormalized' values - $floatvalue = pow(2, (-1 * (pow(2, $exponentbits - 1) - 2))) * DecimalBinary2Float($fractionstring); - if ($signbit == '1') { - $floatvalue *= -1; - } - } elseif ($exponent != 0) { - $floatvalue = pow(2, ($exponent - (pow(2, $exponentbits - 1) - 1))) * (1 + DecimalBinary2Float($fractionstring)); - if ($signbit == '1') { - $floatvalue *= -1; - } - } - return (float) $floatvalue; - } -} - -if (!function_exists('BigEndian2Int')) { - function BigEndian2Int($byteword, $synchsafe=false, $signed=false) { - $intvalue = 0; - $bytewordlen = strlen($byteword); - for ($i = 0; $i < $bytewordlen; $i++) { - if ($synchsafe) { // disregard MSB, effectively 7-bit bytes - $intvalue = $intvalue | (ord($byteword{$i}) & 0x7F) << (($bytewordlen - 1 - $i) * 7); - } else { - $intvalue += ord($byteword{$i}) * pow(256, ($bytewordlen - 1 - $i)); - } - } - if ($signed && !$synchsafe) { - // synchsafe ints are not allowed to be signed - switch ($bytewordlen) { - case 1: - case 2: - case 3: - case 4: - $signmaskbit = 0x80 << (8 * ($bytewordlen - 1)); - if ($intvalue & $signmaskbit) { - $intvalue = 0 - ($intvalue & ($signmaskbit - 1)); - } - break; - - default: - die('ERROR: Cannot have signed integers larger than 32-bits in BigEndian2Int()'); - break; - } - } - return CastAsInt($intvalue); - } -} - -if (!function_exists('LittleEndian2Int')) { - function LittleEndian2Int($byteword, $signed=false) { - return BigEndian2Int(strrev($byteword), false, $signed); - } -} - -if (!function_exists('BigEndian2Bin')) { - function BigEndian2Bin($byteword) { - $binvalue = ''; - $bytewordlen = strlen($byteword); - for ($i = 0; $i < $bytewordlen; $i++) { - $binvalue .= str_pad(decbin(ord($byteword{$i})), 8, '0', STR_PAD_LEFT); - } - return $binvalue; - } -} - -if (!function_exists('BigEndian2String')) { - function BigEndian2String($number, $minbytes=1, $synchsafe=false, $signed=false) { - if ($number < 0) { - return false; - } - $maskbyte = (($synchsafe || $signed) ? 0x7F : 0xFF); - $intstring = ''; - if ($signed) { - if ($minbytes > 4) { - die('ERROR: Cannot have signed integers larger than 32-bits in BigEndian2String()'); - } - $number = $number & (0x80 << (8 * ($minbytes - 1))); - } - while ($number != 0) { - $quotient = ($number / ($maskbyte + 1)); - $intstring = chr(ceil(($quotient - floor($quotient)) * $maskbyte)).$intstring; - $number = floor($quotient); - } - return str_pad($intstring, $minbytes, chr(0), STR_PAD_LEFT); - } -} - -if (!function_exists('Dec2Bin')) { - function Dec2Bin($number) { - while ($number >= 256) { - $bytes[] = (($number / 256) - (floor($number / 256))) * 256; - $number = floor($number / 256); - } - $bytes[] = $number; - $binstring = ''; - for ($i = 0; $i < count($bytes); $i++) { - $binstring = (($i == count($bytes) - 1) ? decbin($bytes[$i]) : str_pad(decbin($bytes[$i]), 8, '0', STR_PAD_LEFT)).$binstring; - } - return $binstring; - } -} - -if (!function_exists('Bin2Dec')) { - function Bin2Dec($binstring) { - $decvalue = 0; - for ($i = 0; $i < strlen($binstring); $i++) { - $decvalue += ((int) substr($binstring, strlen($binstring) - $i - 1, 1)) * pow(2, $i); - } - return CastAsInt($decvalue); - } -} - -if (!function_exists('Bin2String')) { - function Bin2String($binstring) { - // return 'hi' for input of '0110100001101001' - $string = ''; - $binstringreversed = strrev($binstring); - for ($i = 0; $i < strlen($binstringreversed); $i += 8) { - $string = chr(Bin2Dec(strrev(substr($binstringreversed, $i, 8)))).$string; - } - return $string; - } -} - -if (!function_exists('LittleEndian2String')) { - function LittleEndian2String($number, $minbytes=1, $synchsafe=false) { - $intstring = ''; - while ($number > 0) { - if ($synchsafe) { - $intstring = $intstring.chr($number & 127); - $number >>= 7; - } else { - $intstring = $intstring.chr($number & 255); - $number >>= 8; - } - } - return str_pad($intstring, $minbytes, chr(0), STR_PAD_RIGHT); - } -} - -if (!function_exists('Bool2IntString')) { - function Bool2IntString($intvalue) { - return ($intvalue ? '1' : '0'); - } -} - -if (!function_exists('IntString2Bool')) { - function IntString2Bool($char) { - if ($char == '1') { - return true; - } elseif ($char == '0') { - return false; - } - return null; - } -} - -if (!function_exists('InverseBoolean')) { - function InverseBoolean($value) { - return ($value ? false : true); - } -} - -if (!function_exists('DeUnSynchronise')) { - function DeUnSynchronise($data) { - return str_replace(chr(0xFF).chr(0x00), chr(0xFF), $data); - } -} - -if (!function_exists('Unsynchronise')) { - function Unsynchronise($data) { - // Whenever a false synchronisation is found within the tag, one zeroed - // byte is inserted after the first false synchronisation byte. The - // format of a correct sync that should be altered by ID3 encoders is as - // follows: - // %11111111 111xxxxx - // And should be replaced with: - // %11111111 00000000 111xxxxx - // This has the side effect that all $FF 00 combinations have to be - // altered, so they won't be affected by the decoding process. Therefore - // all the $FF 00 combinations have to be replaced with the $FF 00 00 - // combination during the unsynchronisation. - - $data = str_replace(chr(0xFF).chr(0x00), chr(0xFF).chr(0x00).chr(0x00), $data); - $unsyncheddata = ''; - for ($i = 0; $i < strlen($data); $i++) { - $thischar = $data{$i}; - $unsyncheddata .= $thischar; - if ($thischar == chr(255)) { - $nextchar = ord(substr($data, $i + 1, 1)); - if (($nextchar | 0xE0) == 0xE0) { - // previous byte = 11111111, this byte = 111????? - $unsyncheddata .= chr(0); - } - } - } - return $unsyncheddata; - } -} - -if (!function_exists('is_hash')) { - function is_hash($var) { - // written by dev-null@christophe.vg - // taken from http://www.php.net/manual/en/function.array-merge-recursive.php - if (is_array($var)) { - $keys = array_keys($var); - $all_num = true; - for ($i = 0; $i < count($keys); $i++) { - if (is_string($keys[$i])) { - return true; - } - } - } - return false; - } -} - -if (!function_exists('array_join_merge')) { - function array_join_merge($arr1, $arr2) { - // written by dev-null@christophe.vg - // taken from http://www.php.net/manual/en/function.array-merge-recursive.php - if (is_array($arr1) && is_array($arr2)) { - // the same -> merge - $new_array = array(); - - if (is_hash($arr1) && is_hash($arr2)) { - // hashes -> merge based on keys - $keys = array_merge(array_keys($arr1), array_keys($arr2)); - foreach ($keys as $key) { - $new_array[$key] = array_join_merge(@$arr1[$key], @$arr2[$key]); - } - } else { - // two real arrays -> merge - $new_array = array_reverse(array_unique(array_reverse(array_merge($arr1,$arr2)))); - } - return $new_array; - } else { - // not the same ... take new one if defined, else the old one stays - return $arr2 ? $arr2 : $arr1; - } - } -} - -if (!function_exists('array_merge_clobber')) { - function array_merge_clobber($array1, $array2) { - // written by kc@hireability.com - // taken from http://www.php.net/manual/en/function.array-merge-recursive.php - if (!is_array($array1) || !is_array($array2)) { - return false; - } - $newarray = $array1; - foreach ($array2 as $key => $val) { - if (is_array($val) && isset($newarray[$key]) && is_array($newarray[$key])) { - $newarray[$key] = array_merge_clobber($newarray[$key], $val); - } else { - $newarray[$key] = $val; - } - } - return $newarray; - } -} - -if (!function_exists('array_merge_noclobber')) { - function array_merge_noclobber($array1, $array2) { - if (!is_array($array1) || !is_array($array2)) { - return false; - } - $newarray = $array1; - foreach ($array2 as $key => $val) { - if (is_array($val) && isset($newarray[$key]) && is_array($newarray[$key])) { - $newarray[$key] = array_merge_noclobber($newarray[$key], $val); - } elseif (!isset($newarray[$key])) { - $newarray[$key] = $val; - } - } - return $newarray; - } -} - -if (!function_exists('RoughTranslateUnicodeToASCII')) { - function RoughTranslateUnicodeToASCII($rawdata, $frame_textencoding) { - // rough translation of data for application that can't handle Unicode data - - $tempstring = ''; - switch ($frame_textencoding) { - case 0: // ISO-8859-1. Terminated with $00. - $asciidata = $rawdata; - break; - - case 1: // UTF-16 encoded Unicode with BOM. Terminated with $00 00. - $asciidata = $rawdata; - if (substr($asciidata, 0, 2) == chr(0xFF).chr(0xFE)) { - // remove BOM, only if present (it should be, but...) - $asciidata = substr($asciidata, 2); - } - if (substr($asciidata, strlen($asciidata) - 2, 2) == chr(0).chr(0)) { - $asciidata = substr($asciidata, 0, strlen($asciidata) - 2); // remove terminator, only if present (it should be, but...) - } - for ($i = 0; $i < strlen($asciidata); $i += 2) { - if ((ord($asciidata{$i}) <= 0x7F) || (ord($asciidata{$i}) >= 0xA0)) { - $tempstring .= $asciidata{$i}; - } else { - $tempstring .= '?'; - } - } - $asciidata = $tempstring; - break; - - case 2: // UTF-16BE encoded Unicode without BOM. Terminated with $00 00. - $asciidata = $rawdata; - if (substr($asciidata, strlen($asciidata) - 2, 2) == chr(0).chr(0)) { - $asciidata = substr($asciidata, 0, strlen($asciidata) - 2); // remove terminator, only if present (it should be, but...) - } - for ($i = 0; $i < strlen($asciidata); $i += 2) { - if ((ord($asciidata{$i}) <= 0x7F) || (ord($asciidata{$i}) >= 0xA0)) { - $tempstring .= $asciidata{$i}; - } else { - $tempstring .= '?'; - } - } - $asciidata = $tempstring; - break; - - case 3: // UTF-8 encoded Unicode. Terminated with $00. - $asciidata = utf8_decode($rawdata); - break; - - case 255: // Unicode, Big-Endian. Terminated with $00 00. - $asciidata = $rawdata; - if (substr($asciidata, strlen($asciidata) - 2, 2) == chr(0).chr(0)) { - $asciidata = substr($asciidata, 0, strlen($asciidata) - 2); // remove terminator, only if present (it should be, but...) - } - for ($i = 0; ($i + 1) < strlen($asciidata); $i += 2) { - if ((ord($asciidata{($i + 1)}) <= 0x7F) || (ord($asciidata{($i + 1)}) >= 0xA0)) { - $tempstring .= $asciidata{($i + 1)}; - } else { - $tempstring .= '?'; - } - } - $asciidata = $tempstring; - break; - - - default: - // shouldn't happen, but in case $frame_textencoding is not 1 <= $frame_textencoding <= 4 - // just pass the data through unchanged. - $asciidata = $rawdata; - break; - } - if (substr($asciidata, strlen($asciidata) - 1, 1) == chr(0)) { - // remove null terminator, if present - $asciidata = NoNullString($asciidata); - } - return $asciidata; - // return str_replace(chr(0), '', $asciidata); // just in case any nulls slipped through - } -} - -if (!function_exists('PlaytimeString')) { - function PlaytimeString($playtimeseconds) { - $contentseconds = round((($playtimeseconds / 60) - floor($playtimeseconds / 60)) * 60); - $contentminutes = floor($playtimeseconds / 60); - if ($contentseconds >= 60) { - $contentseconds -= 60; - $contentminutes++; - } - return number_format($contentminutes).':'.str_pad($contentseconds, 2, 0, STR_PAD_LEFT); - } -} - -if (!function_exists('CloseMatch')) { - function CloseMatch($value1, $value2, $tolerance) { - return (abs($value1 - $value2) <= $tolerance); - } -} - -if (!function_exists('ID3v1matchesID3v2')) { - function ID3v1matchesID3v2($id3v1, $id3v2) { - - $requiredindices = array('title', 'artist', 'album', 'year', 'genre', 'comment'); - foreach ($requiredindices as $requiredindex) { - if (!isset($id3v1["$requiredindex"])) { - $id3v1["$requiredindex"] = ''; - } - if (!isset($id3v2["$requiredindex"])) { - $id3v2["$requiredindex"] = ''; - } - } - - if (trim($id3v1['title']) != trim(substr($id3v2['title'], 0, 30))) { - return false; - } - if (trim($id3v1['artist']) != trim(substr($id3v2['artist'], 0, 30))) { - return false; - } - if (trim($id3v1['album']) != trim(substr($id3v2['album'], 0, 30))) { - return false; - } - if (trim($id3v1['year']) != trim(substr($id3v2['year'], 0, 4))) { - return false; - } - if (trim($id3v1['genre']) != trim($id3v2['genre'])) { - return false; - } - if (isset($id3v1['track'])) { - if (!isset($id3v1['track']) || (trim($id3v1['track']) != trim($id3v2['track']))) { - return false; - } - if (trim($id3v1['comment']) != trim(substr($id3v2['comment'], 0, 28))) { - return false; - } - } else { - if (trim($id3v1['comment']) != trim(substr($id3v2['comment'], 0, 30))) { - return false; - } - } - return true; - } -} - -if (!function_exists('FILETIMEtoUNIXtime')) { - function FILETIMEtoUNIXtime($FILETIME, $round=true) { - // FILETIME is a 64-bit unsigned integer representing - // the number of 100-nanosecond intervals since January 1, 1601 - // UNIX timestamp is number of seconds since January 1, 1970 - // 116444736000000000 = 10000000 * 60 * 60 * 24 * 365 * 369 + 89 leap days - if ($round) { - return round(($FILETIME - 116444736000000000) / 10000000); - } - return ($FILETIME - 116444736000000000) / 10000000; - } -} - -if (!function_exists('GUIDtoBytestring')) { - function GUIDtoBytestring($GUIDstring) { - // Microsoft defines these 16-byte (128-bit) GUIDs in the strangest way: - // first 4 bytes are in little-endian order - // next 2 bytes are appended in little-endian order - // next 2 bytes are appended in little-endian order - // next 2 bytes are appended in big-endian order - // next 6 bytes are appended in big-endian order - - // AaBbCcDd-EeFf-GgHh-IiJj-KkLlMmNnOoPp is stored as this 16-byte string: - // $Dd $Cc $Bb $Aa $Ff $Ee $Hh $Gg $Ii $Jj $Kk $Ll $Mm $Nn $Oo $Pp - - $hexbytecharstring = chr(hexdec(substr($GUIDstring, 6, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 4, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 2, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 0, 2))); - - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 11, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 9, 2))); - - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 16, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 14, 2))); - - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 19, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 21, 2))); - - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 24, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 26, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 28, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 30, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 32, 2))); - $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 34, 2))); - - return $hexbytecharstring; - } -} - -if (!function_exists('BytestringToGUID')) { - function BytestringToGUID($Bytestring) { - $GUIDstring = str_pad(dechex(ord($Bytestring{3})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{2})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{1})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{0})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= '-'; - $GUIDstring .= str_pad(dechex(ord($Bytestring{5})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{4})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= '-'; - $GUIDstring .= str_pad(dechex(ord($Bytestring{7})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{6})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= '-'; - $GUIDstring .= str_pad(dechex(ord($Bytestring{8})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{9})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= '-'; - $GUIDstring .= str_pad(dechex(ord($Bytestring{10})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{11})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{12})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{13})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{14})), 2, '0', STR_PAD_LEFT); - $GUIDstring .= str_pad(dechex(ord($Bytestring{15})), 2, '0', STR_PAD_LEFT); - - return strtoupper($GUIDstring); - } -} - -if (!function_exists('BitrateColor')) { - function BitrateColor($bitrate) { - $bitrate /= 3; // scale from 1-768kbps to 1-256kbps - $bitrate--; // scale from 1-256kbps to 0-255kbps - $bitrate = max($bitrate, 0); - $bitrate = min($bitrate, 255); - //$bitrate = max($bitrate, 32); - //$bitrate = min($bitrate, 143); - //$bitrate = ($bitrate * 2) - 32; - - $Rcomponent = max(255 - ($bitrate * 2), 0); - $Gcomponent = max(($bitrate * 2) - 255, 0); - if ($bitrate > 127) { - $Bcomponent = max((255 - $bitrate) * 2, 0); - } else { - $Bcomponent = max($bitrate * 2, 0); - } - return str_pad(dechex($Rcomponent), 2, '0', STR_PAD_LEFT).str_pad(dechex($Gcomponent), 2, '0', STR_PAD_LEFT).str_pad(dechex($Bcomponent), 2, '0', STR_PAD_LEFT); - } -} - -if (!function_exists('BitrateText')) { - function BitrateText($bitrate) { - return '<SPAN STYLE="color: #'.BitrateColor($bitrate).'">'.round($bitrate).' kbps</SPAN>'; - } -} - -if (!function_exists('image_type_to_mime_type')) { - function image_type_to_mime_type($imagetypeid) { - // only available in PHP v4.3.0+ - static $image_type_to_mime_type = array(); - if (empty($image_type_to_mime_type)) { - $image_type_to_mime_type[1] = 'image/gif'; // GIF - $image_type_to_mime_type[2] = 'image/jpeg'; // JPEG - $image_type_to_mime_type[3] = 'image/png'; // PNG - $image_type_to_mime_type[4] = 'application/x-shockwave-flash'; // Flash - $image_type_to_mime_type[5] = 'image/psd'; // PSD - $image_type_to_mime_type[6] = 'image/bmp'; // BMP - $image_type_to_mime_type[7] = 'image/tiff'; // TIFF: little-endian (Intel) - $image_type_to_mime_type[8] = 'image/tiff'; // TIFF: big-endian (Motorola) - //$image_type_to_mime_type[9] = 'image/jpc'; // JPC - //$image_type_to_mime_type[10] = 'image/jp2'; // JPC - //$image_type_to_mime_type[11] = 'image/jpx'; // JPC - //$image_type_to_mime_type[12] = 'image/jb2'; // JPC - $image_type_to_mime_type[13] = 'application/x-shockwave-flash'; // Shockwave - $image_type_to_mime_type[14] = 'image/iff'; // IFF - } - return (isset($image_type_to_mime_type[$imagetypeid]) ? $image_type_to_mime_type[$imagetypeid] : 'application/octet-stream'); - } -} - -if (!function_exists('utf8_decode')) { - // PHP has this function built-in if it's configured with the --with-xml option - // This version of the function is only provided in case XML isn't installed - function utf8_decode($utf8text) { - // http://www.php.net/manual/en/function.utf8-encode.php - // bytes bits representation - // 1 7 0bbbbbbb - // 2 11 110bbbbb 10bbbbbb - // 3 16 1110bbbb 10bbbbbb 10bbbbbb - // 4 21 11110bbb 10bbbbbb 10bbbbbb 10bbbbbb - - $utf8length = strlen($utf8text); - $decodedtext = ''; - for ($i = 0; $i < $utf8length; $i++) { - if ((ord($utf8text{$i}) & 0x80) == 0) { - $decodedtext .= $utf8text{$i}; - } elseif ((ord($utf8text{$i}) & 0xF0) == 0xF0) { - $decodedtext .= '?'; - $i += 3; - } elseif ((ord($utf8text{$i}) & 0xE0) == 0xE0) { - $decodedtext .= '?'; - $i += 2; - } elseif ((ord($utf8text{$i}) & 0xC0) == 0xC0) { - // 2 11 110bbbbb 10bbbbbb - $decodedchar = Bin2Dec(substr(Dec2Bin(ord($utf8text{$i})), 3, 5).substr(Dec2Bin(ord($utf8text{($i + 1)})), 2, 6)); - if ($decodedchar <= 255) { - $decodedtext .= chr($decodedchar); - } else { - $decodedtext .= '?'; - } - $i += 1; - } - } - return $decodedtext; - } -} - -if (!function_exists('DateMac2Unix')) { - function DateMac2Unix($macdate) { - // Macintosh timestamp: seconds since 00:00h January 1, 1904 - // UNIX timestamp: seconds since 00:00h January 1, 1970 - return CastAsInt($macdate - 2082844800); - } -} - - -if (!function_exists('FixedPoint8_8')) { - function FixedPoint8_8($rawdata) { - return BigEndian2Int(substr($rawdata, 0, 1)) + (float) (BigEndian2Int(substr($rawdata, 1, 1)) / pow(2, 8)); - } -} - - -if (!function_exists('FixedPoint16_16')) { - function FixedPoint16_16($rawdata) { - return BigEndian2Int(substr($rawdata, 0, 2)) + (float) (BigEndian2Int(substr($rawdata, 2, 2)) / pow(2, 16)); - } -} - - -if (!function_exists('FixedPoint2_30')) { - function FixedPoint2_30($rawdata) { - $binarystring = BigEndian2Bin($rawdata); - return Bin2Dec(substr($binarystring, 0, 2)) + (float) (Bin2Dec(substr($binarystring, 2, 30)) / pow(2, 30)); - } -} - - -if (!function_exists('Pascal2String')) { - function Pascal2String($pascalstring) { - // Pascal strings have 1 byte at the beginning saying how many chars are in the string - return substr($pascalstring, 1); - } -} - -if (!function_exists('NoNullString')) { - function NoNullString($nullterminatedstring) { - // remove the single null terminator on null terminated strings - if (substr($nullterminatedstring, strlen($nullterminatedstring) - 1, 1) === chr(0)) { - return substr($nullterminatedstring, 0, strlen($nullterminatedstring) - 1); - } - return $nullterminatedstring; - } -} - -if (!function_exists('FileSizeNiceDisplay')) { - function FileSizeNiceDisplay($filesize, $precision=2) { - if ($filesize < 1000) { - $sizeunit = 'bytes'; - $precision = 0; - } else { - $filesize /= 1024; - $sizeunit = 'kB'; - } - if ($filesize >= 1000) { - $filesize /= 1024; - $sizeunit = 'MB'; - } - if ($filesize >= 1000) { - $filesize /= 1024; - $sizeunit = 'GB'; - } - return number_format($filesize, $precision).' '.$sizeunit; - } -} - -if (!function_exists('DOStime2UNIXtime')) { - function DOStime2UNIXtime($DOSdate, $DOStime) { - // wFatDate - // Specifies the MS-DOS date. The date is a packed 16-bit value with the following format: - // Bits Contents - // 0-4 Day of the month (1-31) - // 5-8 Month (1 = January, 2 = February, and so on) - // 9-15 Year offset from 1980 (add 1980 to get actual year) - - $UNIXday = ($DOSdate & 0x001F); - $UNIXmonth = (($DOSdate & 0x01E0) >> 5); - $UNIXyear = (($DOSdate & 0xFE00) >> 9) + 1980; - - // wFatTime - // Specifies the MS-DOS time. The time is a packed 16-bit value with the following format: - // Bits Contents - // 0-4 Second divided by 2 - // 5-10 Minute (0-59) - // 11-15 Hour (0-23 on a 24-hour clock) - - $UNIXsecond = ($DOStime & 0x001F) * 2; - $UNIXminute = (($DOStime & 0x07E0) >> 5); - $UNIXhour = (($DOStime & 0xF800) >> 11); - - return mktime($UNIXhour, $UNIXminute, $UNIXsecond, $UNIXmonth, $UNIXday, $UNIXyear); - } -} - -if (!function_exists('CreateDeepArray')) { - function CreateDeepArray($ArrayPath, $Separator, $Value) { - // assigns $Value to a nested array path: - // $foo = CreateDeepArray('/path/to/my', '/', 'file.txt') - // is the same as: - // $foo = array('path'=>array('to'=>'array('my'=>array('file.txt')))); - // or - // $foo['path']['to']['my'] = 'file.txt'; - while ($ArrayPath{0} == $Separator) { - $ArrayPath = substr($ArrayPath, 1); - } - if (($pos = strpos($ArrayPath, $Separator)) !== false) { - $ReturnedArray[substr($ArrayPath, 0, $pos)] = CreateDeepArray(substr($ArrayPath, $pos + 1), $Separator, $Value); - } else { - $ReturnedArray["$ArrayPath"] = $Value; - } - return $ReturnedArray; - } -} - -if (!function_exists('md5_file')) { - // Allan Hansen <ah@artemis.dk> - // md5_file() exists in PHP 4.2.0. - // The following works under UNIX only, but dies on windows - function md5_file($file) { - if (substr(php_uname(), 0, 7) == 'Windows') { - die('PHP 4.2.0 or newer required for md5_file()'); - } - - $file = str_replace('`', '\\`', $file); - if (ereg("^([0-9a-f]{32})[ \t\n\r]", `md5sum "$file"`, $r)) { - return $r[1]; - } - return false; - } -} - -if (!function_exists('md5_data')) { - // Allan Hansen <ah@artemis.dk> - // md5_data() - returns md5sum for a file from startuing position to absolute end position - - function md5_data($file, $offset, $end, $invertsign=false) { - // first try and create a temporary file in the same directory as the file being scanned - if (($dataMD5filename = tempnam(dirname($file), eregi_replace('[^[:alnum:]]', '', basename($file)))) === false) { - // if that fails, create a temporary file in the system temp directory - if (($dataMD5filename = tempnam('/tmp', 'getID3')) === false) { - // if that fails, create a temporary file in the current directory - if (($dataMD5filename = tempnam('.', eregi_replace('[^[:alnum:]]', '', basename($file)))) === false) { - // can't find anywhere to create a temp file, just die - return false; - } - } - } - $md5 = false; - set_time_limit(max(filesize($file) / 1000000, 30)); - - // copy parts of file - if ($fp = @fopen($file, 'rb')) { - - if ($MD5fp = @fopen($dataMD5filename, 'wb')) { - - if ($invertsign) { - // Load conversion lookup strings for 8-bit unsigned->signed conversion below - $from = ''; - $to = ''; - for ($i = 0; $i < 128; $i++) { - $from .= chr($i); - $to .= chr($i + 128); - } - for ($i = 128; $i < 256; $i++) { - $from .= chr($i); - $to .= chr($i - 128); - } - } - - fseek($fp, $offset, SEEK_SET); - $byteslefttowrite = $end - $offset; - while (($byteslefttowrite > 0) && ($buffer = fread($fp, FREAD_BUFFER_SIZE))) { - if ($invertsign) { - // Possibly FLAC-specific (?) - // FLAC calculates the MD5sum of the source data of 8-bit files - // not on the actual byte values in the source file, but of those - // values converted from unsigned to signed, or more specifcally, - // with the MSB inverted. ex: 01 -> 81; F5 -> 75; etc - - // Therefore, 8-bit WAV data has to be converted before getting the - // md5_data value so as to match the FLAC value - - // Flip the MSB for each byte in the buffer before copying - $buffer = strtr($buffer, $from, $to); - } - $byteswritten = fwrite($MD5fp, $buffer, $byteslefttowrite); - $byteslefttowrite -= $byteswritten; - } - fclose($MD5fp); - $md5 = md5_file($dataMD5filename); - - } - fclose($fp); - - } - unlink($dataMD5filename); - return $md5; - } -} - -if (!function_exists('TwosCompliment2Decimal')) { - function TwosCompliment2Decimal($BinaryValue) { - // http://sandbox.mc.edu/~bennet/cs110/tc/tctod.html - // First check if the number is negative or positive by looking at the sign bit. - // If it is positive, simply convert it to decimal. - // If it is negative, make it positive by inverting the bits and adding one. - // Then, convert the result to decimal. - // The negative of this number is the value of the original binary. - - if ($BinaryValue & 0x80) { - - // negative number - return (0 - ((~$BinaryValue & 0xFF) + 1)); - - } else { - - // positive number - return $BinaryValue; - - } - - } -} - -if (!function_exists('LastArrayElement')) { - function LastArrayElement($MyArray) { - if (!is_array($MyArray)) { - return false; - } - if (empty($MyArray)) { - return null; - } - foreach ($MyArray as $key => $value) { - } - return $value; - } -} - -if (!function_exists('safe_inc')) { - function safe_inc(&$variable, $increment=1) { - if (isset($variable)) { - $variable += $increment; - } else { - $variable = $increment; - } - return true; - } -} - -if (!function_exists('CalculateCompressionRatioVideo')) { - function CalculateCompressionRatioVideo(&$ThisFileInfo) { - if (empty($ThisFileInfo['video'])) { - return false; - } - if (empty($ThisFileInfo['video']['resolution_x']) || empty($ThisFileInfo['video']['resolution_y'])) { - return false; - } - if (empty($ThisFileInfo['video']['bits_per_sample'])) { - return false; - } - - switch ($ThisFileInfo['video']['dataformat']) { - case 'bmp': - case 'gif': - case 'jpeg': - case 'jpg': - case 'png': - case 'tiff': - $FrameRate = 1; - $PlaytimeSeconds = 1; - $BitrateCompressed = $ThisFileInfo['filesize'] * 8; - break; - - default: - if (!empty($ThisFileInfo['video']['frame_rate'])) { - $FrameRate = $ThisFileInfo['video']['frame_rate']; - } else { - return false; - } - if (!empty($ThisFileInfo['playtime_seconds'])) { - $PlaytimeSeconds = $ThisFileInfo['playtime_seconds']; - } else { - return false; - } - if (!empty($ThisFileInfo['video']['bitrate'])) { - $BitrateCompressed = $ThisFileInfo['video']['bitrate']; - } else { - return false; - } - break; - } - $BitrateUncompressed = $ThisFileInfo['video']['resolution_x'] * $ThisFileInfo['video']['resolution_y'] * $ThisFileInfo['video']['bits_per_sample'] * $FrameRate; - - $ThisFileInfo['video']['compression_ratio'] = $BitrateCompressed / $BitrateUncompressed; - return true; - } -} - -if (!function_exists('CalculateCompressionRatioAudio')) { - function CalculateCompressionRatioAudio(&$ThisFileInfo) { - if (empty($ThisFileInfo['audio']['bitrate']) || empty($ThisFileInfo['audio']['channels']) || empty($ThisFileInfo['audio']['sample_rate']) || empty($ThisFileInfo['audio']['bits_per_sample'])) { - return false; - } - $ThisFileInfo['audio']['compression_ratio'] = $ThisFileInfo['audio']['bitrate'] / ($ThisFileInfo['audio']['channels'] * $ThisFileInfo['audio']['sample_rate'] * $ThisFileInfo['audio']['bits_per_sample']); - return true; - } -} - -if (!function_exists('IsValidMIMEstring')) { - function IsValidMIMEstring($mimestring) { - if ((strlen($mimestring) >= 3) && (strpos($mimestring, '/') > 0) && (strpos($mimestring, '/') < (strlen($mimestring) - 1))) { - return true; - } - return false; - } -} - -if (!function_exists('IsWithinBitRange')) { - function IsWithinBitRange($number, $maxbits, $signed=false) { - if ($signed) { - if (($number > (0 - pow(2, $maxbits - 1))) && ($number <= pow(2, $maxbits - 1))) { - return true; - } - } else { - if (($number >= 0) && ($number <= pow(2, $maxbits))) { - return true; - } - } - return false; - } -} - -if (!function_exists('safe_parse_url')) { - function safe_parse_url($url) { - $parts = @parse_url($url); - $parts['scheme'] = (isset($parts['scheme']) ? $parts['scheme'] : ''); - $parts['host'] = (isset($parts['host']) ? $parts['host'] : ''); - $parts['user'] = (isset($parts['user']) ? $parts['user'] : ''); - $parts['pass'] = (isset($parts['pass']) ? $parts['pass'] : ''); - $parts['path'] = (isset($parts['path']) ? $parts['path'] : ''); - $parts['query'] = (isset($parts['query']) ? $parts['query'] : ''); - return $parts; - } -} - -if (!function_exists('IsValidURL')) { - function IsValidURL($url, $allowUserPass=false) { - if ($url == '') { - return false; - } - if ($allowUserPass !== true) { - if (strstr($url, '@')) { - // in the format http://user:pass@example.com or http://user@example.com - // but could easily be somebody incorrectly entering an email address in place of a URL - return false; - } - } - if ($parts = safe_parse_url($url)) { - if (($parts['scheme'] != 'http') && ($parts['scheme'] != 'https') && ($parts['scheme'] != 'ftp') && ($parts['scheme'] != 'gopher')) { - return false; - } elseif (!eregi("^[[:alnum:]]([-.]?[0-9a-z])*\.[a-z]{2,3}$", $parts['host'], $regs) && !IsValidDottedIP($parts['host'])) { - return false; - } elseif (!eregi("^([[:alnum:]-]|[\_])*$", $parts['user'], $regs)) { - return false; - } elseif (!eregi("^([[:alnum:]-]|[\_])*$", $parts['pass'], $regs)) { - return false; - } elseif (!eregi("^[[:alnum:]/_\.@~-]*$", $parts['path'], $regs)) { - return false; - } elseif (!eregi("^[[:alnum:]?&=+:;_()%#/,\.-]*$", $parts['query'], $regs)) { - return false; - } else { - return true; - } - } - return false; - } -} - -echo '<FORM ACTION="'.$_SERVER['PHP_SELF'].'" METHOD="POST">'; -echo 'Enter 4 hex bytes of MPEG-audio header (ie <I>FF FA 92 44</I>)<BR>'; -echo '<INPUT TYPE="TEXT" NAME="HeaderHexBytes" VALUE="'.(isset($_POST['HeaderHexBytes']) ? strtoupper($_POST['HeaderHexBytes']) : '').'" SIZE="11" MAXLENGTH="11">'; -echo '<INPUT TYPE="SUBMIT" NAME="Analyze" VALUE="Analyze"></FORM>'; -echo '<HR>'; - -echo '<FORM ACTION="'.$_SERVER['PHP_SELF'].'" METHOD="POST">'; -echo 'Generate a MPEG-audio 4-byte header from these values:<BR>'; -echo '<TABLE BORDER="0">'; - -$MPEGgenerateValues = array( - 'version'=>array('1', '2', '2.5'), - 'layer'=>array('I', 'II', 'III'), - 'protection'=>array('Y', 'N'), - 'bitrate'=>array('free', '8', '16', '24', '32', '40', '48', '56', '64', '80', '96', '112', '128', '144', '160', '176', '192', '224', '256', '288', '320', '352', '384', '416', '448'), - 'frequency'=>array('8000', '11025', '12000', '16000', '22050', '24000', '32000', '44100', '48000'), - 'padding'=>array('Y', 'N'), - 'private'=>array('Y', 'N'), - 'channelmode'=>array('stereo', 'joint stereo', 'dual channel', 'mono'), - 'modeextension'=>array('none', 'IS', 'MS', 'IS+MS', '4-31', '8-31', '12-31', '16-31'), - 'copyright'=>array('Y', 'N'), - 'original'=>array('Y', 'N'), - 'emphasis'=>array('none', '50/15ms', 'CCIT J.17') - ); - -foreach ($MPEGgenerateValues as $name => $dataarray) { - echo '<TR><TH>'.$name.':</TH><TD><SELECT NAME="'.$name.'">'; - foreach ($dataarray as $key => $value) { - echo '<OPTION'.((isset($_POST["$name"]) && ($_POST["$name"] == $value)) ? ' SELECTED' : '').'>'.$value.'</OPTION>'; - } - echo '</SELECT></TD></TR>'; -} - -if (isset($_POST['bitrate'])) { - echo '<TR><TH>Frame Length:</TH><TD>'.(int) MPEGaudioFrameLength($_POST['bitrate'], $_POST['version'], $_POST['layer'], (($_POST['padding'] == 'Y') ? '1' : '0'), $_POST['frequency']).'</TD></TR>'; -} -echo '</TABLE>'; -echo '<INPUT TYPE="SUBMIT" NAME="Generate" VALUE="Generate"></FORM>'; -echo '<HR>'; - - -if (isset($_POST['Analyze']) && $_POST['HeaderHexBytes']) { - - $headerbytearray = explode(' ', $_POST['HeaderHexBytes']); - if (count($headerbytearray) != 4) { - die('Invalid byte pattern'); - } - $headerstring = ''; - foreach ($headerbytearray as $textbyte) { - $headerstring .= chr(hexdec($textbyte)); - } - - $MP3fileInfo['error'] = ''; - - $MPEGheaderRawArray = MPEGaudioHeaderDecode(substr($headerstring, 0, 4)); - - if (MPEGaudioHeaderValid($MPEGheaderRawArray, true)) { - - $MP3fileInfo['raw'] = $MPEGheaderRawArray; - - $MP3fileInfo['version'] = MPEGaudioVersionLookup($MP3fileInfo['raw']['version']); - $MP3fileInfo['layer'] = MPEGaudioLayerLookup($MP3fileInfo['raw']['layer']); - $MP3fileInfo['protection'] = MPEGaudioCRCLookup($MP3fileInfo['raw']['protection']); - $MP3fileInfo['bitrate'] = MPEGaudioBitrateLookup($MP3fileInfo['version'], $MP3fileInfo['layer'], $MP3fileInfo['raw']['bitrate']); - $MP3fileInfo['frequency'] = MPEGaudioFrequencyLookup($MP3fileInfo['version'], $MP3fileInfo['raw']['sample_rate']); - $MP3fileInfo['padding'] = (bool) $MP3fileInfo['raw']['padding']; - $MP3fileInfo['private'] = (bool) $MP3fileInfo['raw']['private']; - $MP3fileInfo['channelmode'] = MPEGaudioChannelModeLookup($MP3fileInfo['raw']['channelmode']); - $MP3fileInfo['channels'] = (($MP3fileInfo['channelmode'] == 'mono') ? 1 : 2); - $MP3fileInfo['modeextension'] = MPEGaudioModeExtensionLookup($MP3fileInfo['layer'], $MP3fileInfo['raw']['modeextension']); - $MP3fileInfo['copyright'] = (bool) $MP3fileInfo['raw']['copyright']; - $MP3fileInfo['original'] = (bool) $MP3fileInfo['raw']['original']; - $MP3fileInfo['emphasis'] = MPEGaudioEmphasisLookup($MP3fileInfo['raw']['emphasis']); - - if ($MP3fileInfo['protection']) { - $MP3fileInfo['crc'] = BigEndian2Int(substr($headerstring, 4, 2)); - } - - if ($MP3fileInfo['frequency'] > 0) { - $MP3fileInfo['framelength'] = MPEGaudioFrameLength($MP3fileInfo['bitrate'], $MP3fileInfo['version'], $MP3fileInfo['layer'], (int) $MP3fileInfo['padding'], $MP3fileInfo['frequency']); - } - if ($MP3fileInfo['bitrate'] != 'free') { - $MP3fileInfo['bitrate'] *= 1000; - } - - } else { - - $MP3fileInfo['error'] .= "\n".'Invalid MPEG audio header'; - - } - - if (!$MP3fileInfo['error']) { - unset($MP3fileInfo['error']); - } - - echo table_var_dump($MP3fileInfo); - -} elseif (isset($_POST['Generate'])) { - - // AAAA AAAA AAAB BCCD EEEE FFGH IIJJ KLMM - - $headerbitstream = '11111111111'; // A - Frame sync (all bits set) - - $MPEGversionLookup = array('2.5'=>'00', '2'=>'10', '1'=>'11'); - $headerbitstream .= $MPEGversionLookup[$_POST['version']]; // B - MPEG Audio version ID - - $MPEGlayerLookup = array('III'=>'01', 'II'=>'10', 'I'=>'11'); - $headerbitstream .= $MPEGlayerLookup[$_POST['layer']]; // C - Layer description - - $headerbitstream .= (($_POST['protection'] == 'Y') ? '0' : '1'); // D - Protection bit - - $MPEGaudioBitrateLookup['1']['I'] = array('free'=>'0000', '32'=>'0001', '64'=>'0010', '96'=>'0011', '128'=>'0100', '160'=>'0101', '192'=>'0110', '224'=>'0111', '256'=>'1000', '288'=>'1001', '320'=>'1010', '352'=>'1011', '384'=>'1100', '416'=>'1101', '448'=>'1110'); - $MPEGaudioBitrateLookup['1']['II'] = array('free'=>'0000', '32'=>'0001', '48'=>'0010', '56'=>'0011', '64'=>'0100', '80'=>'0101', '96'=>'0110', '112'=>'0111', '128'=>'1000', '160'=>'1001', '192'=>'1010', '224'=>'1011', '256'=>'1100', '320'=>'1101', '384'=>'1110'); - $MPEGaudioBitrateLookup['1']['III'] = array('free'=>'0000', '32'=>'0001', '40'=>'0010', '48'=>'0011', '56'=>'0100', '64'=>'0101', '80'=>'0110', '96'=>'0111', '112'=>'1000', '128'=>'1001', '160'=>'1010', '192'=>'1011', '224'=>'1100', '256'=>'1101', '320'=>'1110'); - $MPEGaudioBitrateLookup['2']['I'] = array('free'=>'0000', '32'=>'0001', '48'=>'0010', '56'=>'0011', '64'=>'0100', '80'=>'0101', '96'=>'0110', '112'=>'0111', '128'=>'1000', '144'=>'1001', '160'=>'1010', '176'=>'1011', '192'=>'1100', '224'=>'1101', '256'=>'1110'); - $MPEGaudioBitrateLookup['2']['II'] = array('free'=>'0000', '8'=>'0001', '16'=>'0010', '24'=>'0011', '32'=>'0100', '40'=>'0101', '48'=>'0110', '56'=>'0111', '64'=>'1000', '80'=>'1001', '96'=>'1010', '112'=>'1011', '128'=>'1100', '144'=>'1101', '160'=>'1110'); - $MPEGaudioBitrateLookup['2']['III'] = $MPEGaudioBitrateLookup['2']['II']; - $MPEGaudioBitrateLookup['2.5']['I'] = $MPEGaudioBitrateLookup['2']['I']; - $MPEGaudioBitrateLookup['2.5']['II'] = $MPEGaudioBitrateLookup['2']['II']; - $MPEGaudioBitrateLookup['2.5']['III'] = $MPEGaudioBitrateLookup['2']['II']; - if (isset($MPEGaudioBitrateLookup[$_POST['version']][$_POST['layer']][$_POST['bitrate']])) { - $headerbitstream .= $MPEGaudioBitrateLookup[$_POST['version']][$_POST['layer']][$_POST['bitrate']]; // E - Bitrate index - } else { - die('Invalid <B>Bitrate</B>'); - } - - $MPEGaudioFrequencyLookup['1'] = array('44100'=>'00', '48000'=>'01', '32000'=>'10'); - $MPEGaudioFrequencyLookup['2'] = array('22050'=>'00', '24000'=>'01', '16000'=>'10'); - $MPEGaudioFrequencyLookup['2.5'] = array('11025'=>'00', '12000'=>'01', '8000'=>'10'); - if (isset($MPEGaudioFrequencyLookup[$_POST['version']][$_POST['frequency']])) { - $headerbitstream .= $MPEGaudioFrequencyLookup[$_POST['version']][$_POST['frequency']]; // F - Sampling rate frequency index - } else { - die('Invalid <B>Frequency</B>'); - } - - $headerbitstream .= (($_POST['padding'] == 'Y') ? '1' : '0'); // G - Padding bit - - $headerbitstream .= (($_POST['private'] == 'Y') ? '1' : '0'); // H - Private bit - - $MPEGaudioChannelModeLookup = array('stereo'=>'00', 'joint stereo'=>'01', 'dual channel'=>'10', 'mono'=>'11'); - $headerbitstream .= $MPEGaudioChannelModeLookup[$_POST['channelmode']]; // I - Channel Mode - - $MPEGaudioModeExtensionLookup['I'] = array('4-31'=>'00', '8-31'=>'01', '12-31'=>'10', '16-31'=>'11'); - $MPEGaudioModeExtensionLookup['II'] = $MPEGaudioModeExtensionLookup['I']; - $MPEGaudioModeExtensionLookup['III'] = array('none'=>'00', 'IS'=>'01', 'MS'=>'10', 'IS+MS'=>'11'); - if ($_POST['channelmode'] != 'joint stereo') { - $headerbitstream .= '00'; - } elseif (isset($MPEGaudioModeExtensionLookup[$_POST['layer']][$_POST['modeextension']])) { - $headerbitstream .= $MPEGaudioModeExtensionLookup[$_POST['layer']][$_POST['modeextension']]; // J - Mode extension (Only if Joint stereo) - } else { - die('Invalid <B>Mode Extension</B>'); - } - - $headerbitstream .= (($_POST['copyright'] == 'Y') ? '1' : '0'); // K - Copyright - - $headerbitstream .= (($_POST['original'] == 'Y') ? '1' : '0'); // L - Original - - $MPEGaudioEmphasisLookup = array('none'=>'00', '50/15ms'=>'01', 'CCIT J.17'=>'11'); - if (isset($MPEGaudioEmphasisLookup[$_POST['emphasis']])) { - $headerbitstream .= $MPEGaudioEmphasisLookup[$_POST['emphasis']]; // M - Emphasis - } else { - die('Invalid <B>Emphasis</B>'); - } - - echo strtoupper(str_pad(dechex(bindec(substr($headerbitstream, 0, 8))), 2, '0', STR_PAD_LEFT)).' '; - echo strtoupper(str_pad(dechex(bindec(substr($headerbitstream, 8, 8))), 2, '0', STR_PAD_LEFT)).' '; - echo strtoupper(str_pad(dechex(bindec(substr($headerbitstream, 16, 8))), 2, '0', STR_PAD_LEFT)).' '; - echo strtoupper(str_pad(dechex(bindec(substr($headerbitstream, 24, 8))), 2, '0', STR_PAD_LEFT)).'<BR>'; - -} - -function MPEGaudioVersionLookup($rawversion) { - $MPEGaudioVersionLookup = array('2.5', FALSE, '2', '1'); - return (isset($MPEGaudioVersionLookup["$rawversion"]) ? $MPEGaudioVersionLookup["$rawversion"] : FALSE); -} - -function MPEGaudioLayerLookup($rawlayer) { - $MPEGaudioLayerLookup = array(FALSE, 'III', 'II', 'I'); - return (isset($MPEGaudioLayerLookup["$rawlayer"]) ? $MPEGaudioLayerLookup["$rawlayer"] : FALSE); -} - -function MPEGaudioBitrateLookup($version, $layer, $rawbitrate) { - static $MPEGaudioBitrateLookup; - if (empty($MPEGaudioBitrateLookup)) { - $MPEGaudioBitrateLookup = MPEGaudioBitrateArray(); - } - return (isset($MPEGaudioBitrateLookup["$version"]["$layer"]["$rawbitrate"]) ? $MPEGaudioBitrateLookup["$version"]["$layer"]["$rawbitrate"] : FALSE); -} - -function MPEGaudioFrequencyLookup($version, $rawfrequency) { - static $MPEGaudioFrequencyLookup; - if (empty($MPEGaudioFrequencyLookup)) { - $MPEGaudioFrequencyLookup = MPEGaudioFrequencyArray(); - } - return (isset($MPEGaudioFrequencyLookup["$version"]["$rawfrequency"]) ? $MPEGaudioFrequencyLookup["$version"]["$rawfrequency"] : FALSE); -} - -function MPEGaudioChannelModeLookup($rawchannelmode) { - $MPEGaudioChannelModeLookup = array('stereo', 'joint stereo', 'dual channel', 'mono'); - return (isset($MPEGaudioChannelModeLookup["$rawchannelmode"]) ? $MPEGaudioChannelModeLookup["$rawchannelmode"] : FALSE); -} - -function MPEGaudioModeExtensionLookup($layer, $rawmodeextension) { - $MPEGaudioModeExtensionLookup['I'] = array('4-31', '8-31', '12-31', '16-31'); - $MPEGaudioModeExtensionLookup['II'] = array('4-31', '8-31', '12-31', '16-31'); - $MPEGaudioModeExtensionLookup['III'] = array('', 'IS', 'MS', 'IS+MS'); - return (isset($MPEGaudioModeExtensionLookup["$layer"]["$rawmodeextension"]) ? $MPEGaudioModeExtensionLookup["$layer"]["$rawmodeextension"] : FALSE); -} - -function MPEGaudioEmphasisLookup($rawemphasis) { - $MPEGaudioEmphasisLookup = array('none', '50/15ms', FALSE, 'CCIT J.17'); - return (isset($MPEGaudioEmphasisLookup["$rawemphasis"]) ? $MPEGaudioEmphasisLookup["$rawemphasis"] : FALSE); -} - -function MPEGaudioCRCLookup($CRCbit) { - // inverse boolean cast :) - if ($CRCbit == '0') { - return TRUE; - } else { - return FALSE; - } -} - -///////////////////////////////////////////////////////////////// -/// getID3() by James Heinrich <info@getid3.org> // -// available at http://getid3.sourceforge.net /// -// or http://www.getid3.org /// -///////////////////////////////////////////////////////////////// -// // -// getid3.mp3.php - part of getID3() // -// See getid3.readme.txt for more details // -// // -///////////////////////////////////////////////////////////////// - -// number of frames to scan to determine if MPEG-audio sequence is valid -// Lower this number to 5-20 for faster scanning -// Increase this number to 50+ for most accurate detection of valid VBR/CBR -// mpeg-audio streams -define('MPEG_VALID_CHECK_FRAMES', 35); - -function getMP3headerFilepointer(&$fd, &$ThisFileInfo) { - - getOnlyMPEGaudioInfo($fd, $ThisFileInfo, $ThisFileInfo['avdataoffset']); - - if (isset($ThisFileInfo['mpeg']['audio']['bitrate_mode'])) { - $ThisFileInfo['audio']['bitrate_mode'] = strtolower($ThisFileInfo['mpeg']['audio']['bitrate_mode']); - } - - if (((isset($ThisFileInfo['id3v2']) && ($ThisFileInfo['avdataoffset'] > $ThisFileInfo['id3v2']['headerlength'])) || (!isset($ThisFileInfo['id3v2']) && ($ThisFileInfo['avdataoffset'] > 0)))) { - - $ThisFileInfo['warning'] .= "\n".'Unknown data before synch '; - if (isset($ThisFileInfo['id3v2']['headerlength'])) { - $ThisFileInfo['warning'] .= '(ID3v2 header ends at '.$ThisFileInfo['id3v2']['headerlength'].', then '.($ThisFileInfo['avdataoffset'] - $ThisFileInfo['id3v2']['headerlength']).' bytes garbage, '; - } else { - $ThisFileInfo['warning'] .= '(should be at beginning of file, '; - } - $ThisFileInfo['warning'] .= 'synch detected at '.$ThisFileInfo['avdataoffset'].')'; - if ($ThisFileInfo['audio']['bitrate_mode'] == 'cbr') { - if (!empty($ThisFileInfo['id3v2']['headerlength']) && (($ThisFileInfo['avdataoffset'] - $ThisFileInfo['id3v2']['headerlength']) == $ThisFileInfo['mpeg']['audio']['framelength'])) { - $ThisFileInfo['warning'] .= '. This is a known problem with some versions of LAME (3.91, 3.92) DLL in CBR mode.'; - $ThisFileInfo['audio']['codec'] = 'LAME'; - } elseif (empty($ThisFileInfo['id3v2']['headerlength']) && ($ThisFileInfo['avdataoffset'] == $ThisFileInfo['mpeg']['audio']['framelength'])) { - $ThisFileInfo['warning'] .= '. This is a known problem with some versions of LAME (3.91, 3.92) DLL in CBR mode.'; - $ThisFileInfo['audio']['codec'] = 'LAME'; - } - } - - } - - if (isset($ThisFileInfo['mpeg']['audio']['layer']) && ($ThisFileInfo['mpeg']['audio']['layer'] == 'II')) { - $ThisFileInfo['audio']['dataformat'] = 'mp2'; - } elseif (isset($ThisFileInfo['mpeg']['audio']['layer']) && ($ThisFileInfo['mpeg']['audio']['layer'] == 'I')) { - $ThisFileInfo['audio']['dataformat'] = 'mp1'; - } - if ($ThisFileInfo['fileformat'] == 'mp3') { - switch ($ThisFileInfo['audio']['dataformat']) { - case 'mp1': - case 'mp2': - case 'mp3': - $ThisFileInfo['fileformat'] = $ThisFileInfo['audio']['dataformat']; - break; - - default: - $ThisFileInfo['warning'] .= "\n".'Expecting [audio][dataformat] to be mp1/mp2/mp3 when fileformat == mp3, [audio][dataformat] actually "'.$ThisFileInfo['audio']['dataformat'].'"'; - break; - } - } - - if (empty($ThisFileInfo['fileformat'])) { - $ThisFileInfo['error'] .= "\n".'Synch not found'; - unset($ThisFileInfo['fileformat']); - unset($ThisFileInfo['audio']['bitrate_mode']); - unset($ThisFileInfo['avdataoffset']); - unset($ThisFileInfo['avdataend']); - return false; - } - - $ThisFileInfo['mime_type'] = 'audio/mpeg'; - $ThisFileInfo['audio']['lossless'] = false; - - // Calculate playtime - if (!isset($ThisFileInfo['playtime_seconds']) && isset($ThisFileInfo['audio']['bitrate']) && ($ThisFileInfo['audio']['bitrate'] > 0)) { - $ThisFileInfo['playtime_seconds'] = ($ThisFileInfo['avdataend'] - $ThisFileInfo['avdataoffset']) * 8 / $ThisFileInfo['audio']['bitrate']; - } - - if (isset($ThisFileInfo['mpeg']['audio']['LAME'])) { - $ThisFileInfo['audio']['codec'] = 'LAME'; - if (!empty($ThisFileInfo['mpeg']['audio']['LAME']['long_version'])) { - $ThisFileInfo['audio']['encoder'] = trim($ThisFileInfo['mpeg']['audio']['LAME']['long_version']); - } - } - - return true; -} - - -function decodeMPEGaudioHeader($fd, $offset, &$ThisFileInfo, $recursivesearch=true, $ScanAsCBR=false, $FastMPEGheaderScan=false) { - - static $MPEGaudioVersionLookup; - static $MPEGaudioLayerLookup; - static $MPEGaudioBitrateLookup; - static $MPEGaudioFrequencyLookup; - static $MPEGaudioChannelModeLookup; - static $MPEGaudioModeExtensionLookup; - static $MPEGaudioEmphasisLookup; - if (empty($MPEGaudioVersionLookup)) { - $MPEGaudioVersionLookup = MPEGaudioVersionArray(); - $MPEGaudioLayerLookup = MPEGaudioLayerArray(); - $MPEGaudioBitrateLookup = MPEGaudioBitrateArray(); - $MPEGaudioFrequencyLookup = MPEGaudioFrequencyArray(); - $MPEGaudioChannelModeLookup = MPEGaudioChannelModeArray(); - $MPEGaudioModeExtensionLookup = MPEGaudioModeExtensionArray(); - $MPEGaudioEmphasisLookup = MPEGaudioEmphasisArray(); - } - - if ($offset >= $ThisFileInfo['avdataend']) { - $ThisFileInfo['error'] .= "\n".'end of file encounter looking for MPEG synch'; - return false; - } - fseek($fd, $offset, SEEK_SET); - $headerstring = fread($fd, 1441); // worse-case max length = 32kHz @ 320kbps layer 3 = 1441 bytes/frame - - // MP3 audio frame structure: - // $aa $aa $aa $aa [$bb $bb] $cc... - // where $aa..$aa is the four-byte mpeg-audio header (below) - // $bb $bb is the optional 2-byte CRC - // and $cc... is the audio data - - $head4 = substr($headerstring, 0, 4); - - static $MPEGaudioHeaderDecodeCache = array(); - if (isset($MPEGaudioHeaderDecodeCache[$head4])) { - $MPEGheaderRawArray = $MPEGaudioHeaderDecodeCache[$head4]; - } else { - $MPEGheaderRawArray = MPEGaudioHeaderDecode($head4); - $MPEGaudioHeaderDecodeCache[$head4] = $MPEGheaderRawArray; - } - - static $MPEGaudioHeaderValidCache = array(); - - // Not in cache - if (!isset($MPEGaudioHeaderValidCache[$head4])) { - $MPEGaudioHeaderValidCache[$head4] = MPEGaudioHeaderValid($MPEGheaderRawArray); - } - - if ($MPEGaudioHeaderValidCache[$head4]) { - $ThisFileInfo['mpeg']['audio']['raw'] = $MPEGheaderRawArray; - } else { - $ThisFileInfo['error'] .= "\n".'Invalid MPEG audio header at offset '.$offset; - return false; - } - - if (!$FastMPEGheaderScan) { - - $ThisFileInfo['mpeg']['audio']['version'] = $MPEGaudioVersionLookup[$ThisFileInfo['mpeg']['audio']['raw']['version']]; - $ThisFileInfo['mpeg']['audio']['layer'] = $MPEGaudioLayerLookup[$ThisFileInfo['mpeg']['audio']['raw']['layer']]; - - $ThisFileInfo['mpeg']['audio']['channelmode'] = $MPEGaudioChannelModeLookup[$ThisFileInfo['mpeg']['audio']['raw']['channelmode']]; - $ThisFileInfo['mpeg']['audio']['channels'] = (($ThisFileInfo['mpeg']['audio']['channelmode'] == 'mono') ? 1 : 2); - $ThisFileInfo['mpeg']['audio']['sample_rate'] = $MPEGaudioFrequencyLookup[$ThisFileInfo['mpeg']['audio']['version']][$ThisFileInfo['mpeg']['audio']['raw']['sample_rate']]; - $ThisFileInfo['mpeg']['audio']['protection'] = !$ThisFileInfo['mpeg']['audio']['raw']['protection']; - $ThisFileInfo['mpeg']['audio']['private'] = (bool) $ThisFileInfo['mpeg']['audio']['raw']['private']; - $ThisFileInfo['mpeg']['audio']['modeextension'] = $MPEGaudioModeExtensionLookup[$ThisFileInfo['mpeg']['audio']['layer']][$ThisFileInfo['mpeg']['audio']['raw']['modeextension']]; - $ThisFileInfo['mpeg']['audio']['copyright'] = (bool) $ThisFileInfo['mpeg']['audio']['raw']['copyright']; - $ThisFileInfo['mpeg']['audio']['original'] = (bool) $ThisFileInfo['mpeg']['audio']['raw']['original']; - $ThisFileInfo['mpeg']['audio']['emphasis'] = $MPEGaudioEmphasisLookup[$ThisFileInfo['mpeg']['audio']['raw']['emphasis']]; - - $ThisFileInfo['audio']['channels'] = $ThisFileInfo['mpeg']['audio']['channels']; - $ThisFileInfo['audio']['sample_rate'] = $ThisFileInfo['mpeg']['audio']['sample_rate']; - - if ($ThisFileInfo['mpeg']['audio']['protection']) { - $ThisFileInfo['mpeg']['audio']['crc'] = BigEndian2Int(substr($headerstring, 4, 2)); - } - - } - - if ($ThisFileInfo['mpeg']['audio']['raw']['bitrate'] == 15) { - // http://www.hydrogenaudio.org/?act=ST&f=16&t=9682&st=0 - $ThisFileInfo['warning'] .= "\n".'Invalid bitrate index (15), this is a known bug in free-format MP3s encoded by LAME v3.90 - 3.93.1'; - $ThisFileInfo['mpeg']['audio']['raw']['bitrate'] = 0; - } - $ThisFileInfo['mpeg']['audio']['padding'] = (bool) $ThisFileInfo['mpeg']['audio']['raw']['padding']; - $ThisFileInfo['mpeg']['audio']['bitrate'] = $MPEGaudioBitrateLookup[$ThisFileInfo['mpeg']['audio']['version']][$ThisFileInfo['mpeg']['audio']['layer']][$ThisFileInfo['mpeg']['audio']['raw']['bitrate']]; - - if (($ThisFileInfo['mpeg']['audio']['bitrate'] == 'free') && ($offset == $ThisFileInfo['avdataoffset'])) { - // only skip multiple frame check if free-format bitstream found at beginning of file - // otherwise is quite possibly simply corrupted data - $recursivesearch = false; - } - - // For Layer II there are some combinations of bitrate and mode which are not allowed. - if (!$FastMPEGheaderScan && ($ThisFileInfo['mpeg']['audio']['layer'] == 'II')) { - - $ThisFileInfo['audio']['dataformat'] = 'mp2'; - switch ($ThisFileInfo['mpeg']['audio']['channelmode']) { - - case 'mono': - if (($ThisFileInfo['mpeg']['audio']['bitrate'] == 'free') || ($ThisFileInfo['mpeg']['audio']['bitrate'] <= 192)) { - // these are ok - } else { - $ThisFileInfo['error'] .= "\n".$ThisFileInfo['mpeg']['audio']['bitrate'].'kbps not allowed in Layer II, '.$ThisFileInfo['mpeg']['audio']['channelmode'].'.'; - return false; - } - break; - - case 'stereo': - case 'joint stereo': - case 'dual channel': - if (($ThisFileInfo['mpeg']['audio']['bitrate'] == 'free') || ($ThisFileInfo['mpeg']['audio']['bitrate'] == 64) || ($ThisFileInfo['mpeg']['audio']['bitrate'] >= 96)) { - // these are ok - } else { - $ThisFileInfo['error'] .= "\n".$ThisFileInfo['mpeg']['audio']['bitrate'].'kbps not allowed in Layer II, '.$ThisFileInfo['mpeg']['audio']['channelmode'].'.'; - return false; - } - break; - - } - - } - - - if ($ThisFileInfo['audio']['sample_rate'] > 0) { - $ThisFileInfo['mpeg']['audio']['framelength'] = MPEGaudioFrameLength($ThisFileInfo['mpeg']['audio']['bitrate'], $ThisFileInfo['mpeg']['audio']['version'], $ThisFileInfo['mpeg']['audio']['layer'], (int) $ThisFileInfo['mpeg']['audio']['padding'], $ThisFileInfo['audio']['sample_rate']); - } - - if ($ThisFileInfo['mpeg']['audio']['bitrate'] != 'free') { - - $ThisFileInfo['audio']['bitrate'] = 1000 * $ThisFileInfo['mpeg']['audio']['bitrate']; - - if (isset($ThisFileInfo['mpeg']['audio']['framelength'])) { - $nextframetestoffset = $offset + $ThisFileInfo['mpeg']['audio']['framelength']; - } else { - $ThisFileInfo['error'] .= "\n".'Frame at offset('.$offset.') is has an invalid frame length.'; - return false; - } - - } - - $ExpectedNumberOfAudioBytes = 0; - - //////////////////////////////////////////////////////////////////////////////////// - // Variable-bitrate headers - - if (substr($headerstring, 4 + 32, 4) == 'VBRI') { - // Fraunhofer VBR header is hardcoded 'VBRI' at offset 0x24 (36) - // specs taken from http://minnie.tuhs.org/pipermail/mp3encoder/2001-January/001800.html - - $ThisFileInfo['mpeg']['audio']['bitrate_mode'] = 'vbr'; - $ThisFileInfo['mpeg']['audio']['VBR_method'] = 'Fraunhofer'; - $ThisFileInfo['audio']['codec'] = 'Fraunhofer'; - - $SideInfoData = substr($headerstring, 4 + 2, 32); - - $FraunhoferVBROffset = 36; - - $ThisFileInfo['mpeg']['audio']['VBR_encoder_version'] = BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 4, 2)); - $ThisFileInfo['mpeg']['audio']['VBR_encoder_delay'] = BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 6, 2)); - $ThisFileInfo['mpeg']['audio']['VBR_quality'] = BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 8, 2)); - $ThisFileInfo['mpeg']['audio']['VBR_bytes'] = BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 10, 4)); - $ThisFileInfo['mpeg']['audio']['VBR_frames'] = BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 14, 4)); - $ThisFileInfo['mpeg']['audio']['VBR_seek_offsets'] = BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 18, 2)); - //$ThisFileInfo['mpeg']['audio']['reserved'] = BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 20, 4)); // hardcoded $00 $01 $00 $02 - purpose unknown - $ThisFileInfo['mpeg']['audio']['VBR_seek_offsets_stride'] = BigEndian2Int(substr($headerstring, $FraunhoferVBROffset + 24, 2)); - - $ExpectedNumberOfAudioBytes = $ThisFileInfo['mpeg']['audio']['VBR_bytes']; - - $previousbyteoffset = $offset; - for ($i = 0; $i < $ThisFileInfo['mpeg']['audio']['VBR_seek_offsets']; $i++) { - $Fraunhofer_OffsetN = BigEndian2Int(substr($headerstring, $FraunhoferVBROffset, 2)); - $FraunhoferVBROffset += 2; - $ThisFileInfo['mpeg']['audio']['VBR_offsets_relative'][$i] = $Fraunhofer_OffsetN; - $ThisFileInfo['mpeg']['audio']['VBR_offsets_absolute'][$i] = $Fraunhofer_OffsetN + $previousbyteoffset; - $previousbyteoffset += $Fraunhofer_OffsetN; - } - - - } else { - - // Xing VBR header is hardcoded 'Xing' at a offset 0x0D (13), 0x15 (21) or 0x24 (36) - // depending on MPEG layer and number of channels - - if ($ThisFileInfo['mpeg']['audio']['version'] == '1') { - if ($ThisFileInfo['mpeg']['audio']['channelmode'] == 'mono') { - // MPEG-1 (mono) - $VBRidOffset = 4 + 17; // 0x15 - $SideInfoData = substr($headerstring, 4 + 2, 17); - } else { - // MPEG-1 (stereo, joint-stereo, dual-channel) - $VBRidOffset = 4 + 32; // 0x24 - $SideInfoData = substr($headerstring, 4 + 2, 32); - } - } else { // 2 or 2.5 - if ($ThisFileInfo['mpeg']['audio']['channelmode'] == 'mono') { - // MPEG-2, MPEG-2.5 (mono) - $VBRidOffset = 4 + 9; // 0x0D - $SideInfoData = substr($headerstring, 4 + 2, 9); - } else { - // MPEG-2, MPEG-2.5 (stereo, joint-stereo, dual-channel) - $VBRidOffset = 4 + 17; // 0x15 - $SideInfoData = substr($headerstring, 4 + 2, 17); - } - } - - if ((substr($headerstring, $VBRidOffset, strlen('Xing')) == 'Xing') || (substr($headerstring, $VBRidOffset, strlen('Info')) == 'Info')) { - // 'Xing' is traditional Xing VBR frame - // 'Info' is LAME-encoded CBR (This was done to avoid CBR files to be recognized as traditional Xing VBR files by some decoders.) - - $ThisFileInfo['mpeg']['audio']['bitrate_mode'] = 'vbr'; - $ThisFileInfo['mpeg']['audio']['VBR_method'] = 'Xing'; - - $ThisFileInfo['mpeg']['audio']['xing_flags_raw'] = BigEndian2Int(substr($headerstring, $VBRidOffset + 4, 4)); - - $ThisFileInfo['mpeg']['audio']['xing_flags']['frames'] = (bool) ($ThisFileInfo['mpeg']['audio']['xing_flags_raw'] & 0x00000001); - $ThisFileInfo['mpeg']['audio']['xing_flags']['bytes'] = (bool) ($ThisFileInfo['mpeg']['audio']['xing_flags_raw'] & 0x00000002); - $ThisFileInfo['mpeg']['audio']['xing_flags']['toc'] = (bool) ($ThisFileInfo['mpeg']['audio']['xing_flags_raw'] & 0x00000004); - $ThisFileInfo['mpeg']['audio']['xing_flags']['vbr_scale'] = (bool) ($ThisFileInfo['mpeg']['audio']['xing_flags_raw'] & 0x00000008); - - if ($ThisFileInfo['mpeg']['audio']['xing_flags']['frames']) { - $ThisFileInfo['mpeg']['audio']['VBR_frames'] = BigEndian2Int(substr($headerstring, $VBRidOffset + 8, 4)); - } - if ($ThisFileInfo['mpeg']['audio']['xing_flags']['bytes']) { - $ThisFileInfo['mpeg']['audio']['VBR_bytes'] = BigEndian2Int(substr($headerstring, $VBRidOffset + 12, 4)); - } - - if (($ThisFileInfo['mpeg']['audio']['bitrate'] == 'free') && !empty($ThisFileInfo['mpeg']['audio']['VBR_frames']) && !empty($ThisFileInfo['mpeg']['audio']['VBR_bytes'])) { - $framelengthfloat = $ThisFileInfo['mpeg']['audio']['VBR_bytes'] / $ThisFileInfo['mpeg']['audio']['VBR_frames']; - if ($ThisFileInfo['mpeg']['audio']['layer'] == 'I') { - // BitRate = (((FrameLengthInBytes / 4) - Padding) * SampleRate) / 12 - $ThisFileInfo['audio']['bitrate'] = ((($framelengthfloat / 4) - intval($ThisFileInfo['mpeg']['audio']['padding'])) * $ThisFileInfo['mpeg']['audio']['sample_rate']) / 12; - } else { - // Bitrate = ((FrameLengthInBytes - Padding) * SampleRate) / 144 - $ThisFileInfo['audio']['bitrate'] = (($framelengthfloat - intval($ThisFileInfo['mpeg']['audio']['padding'])) * $ThisFileInfo['mpeg']['audio']['sample_rate']) / 144; - } - $ThisFileInfo['mpeg']['audio']['framelength'] = floor($framelengthfloat); - } - - if ($ThisFileInfo['mpeg']['audio']['xing_flags']['toc']) { - $LAMEtocData = substr($headerstring, $VBRidOffset + 16, 100); - for ($i = 0; $i < 100; $i++) { - $ThisFileInfo['mpeg']['audio']['toc'][$i] = ord($LAMEtocData{$i}); - } - } - if ($ThisFileInfo['mpeg']['audio']['xing_flags']['vbr_scale']) { - $ThisFileInfo['mpeg']['audio']['VBR_scale'] = BigEndian2Int(substr($headerstring, $VBRidOffset + 116, 4)); - } - - // http://gabriel.mp3-tech.org/mp3infotag.html - if (substr($headerstring, $VBRidOffset + 120, 4) == 'LAME') { - $ThisFileInfo['mpeg']['audio']['LAME']['long_version'] = substr($headerstring, $VBRidOffset + 120, 20); - $ThisFileInfo['mpeg']['audio']['LAME']['short_version'] = substr($ThisFileInfo['mpeg']['audio']['LAME']['long_version'], 0, 9); - $ThisFileInfo['mpeg']['audio']['LAME']['long_version'] = rtrim($ThisFileInfo['mpeg']['audio']['LAME']['long_version'], "\x55\xAA"); - - if ($ThisFileInfo['mpeg']['audio']['LAME']['short_version'] >= 'LAME3.90.') { - - // It the LAME tag was only introduced in LAME v3.90 - // http://www.hydrogenaudio.org/?act=ST&f=15&t=9933 - - // Offsets of various bytes in http://gabriel.mp3-tech.org/mp3infotag.html - // are assuming a 'Xing' identifier offset of 0x24, which is the case for - // MPEG-1 non-mono, but not for other combinations - $LAMEtagOffsetContant = $VBRidOffset - 0x24; - - // byte $9B VBR Quality - // This field is there to indicate a quality level, although the scale was not precised in the original Xing specifications. - // Actually overwrites original Xing bytes - unset($ThisFileInfo['mpeg']['audio']['VBR_scale']); - $ThisFileInfo['mpeg']['audio']['LAME']['vbr_quality'] = BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0x9B, 1)); - - // bytes $9C-$A4 Encoder short VersionString - $ThisFileInfo['mpeg']['audio']['LAME']['short_version'] = substr($headerstring, $LAMEtagOffsetContant + 0x9C, 9); - $ThisFileInfo['mpeg']['audio']['LAME']['long_version'] = $ThisFileInfo['mpeg']['audio']['LAME']['short_version']; - - // byte $A5 Info Tag revision + VBR method - $LAMEtagRevisionVBRmethod = BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xA5, 1)); - - $ThisFileInfo['mpeg']['audio']['LAME']['tag_revision'] = ($LAMEtagRevisionVBRmethod & 0xF0) >> 4; - $ThisFileInfo['mpeg']['audio']['LAME']['raw']['vbr_method'] = $LAMEtagRevisionVBRmethod & 0x0F; - $ThisFileInfo['mpeg']['audio']['LAME']['vbr_method'] = LAMEvbrMethodLookup($ThisFileInfo['mpeg']['audio']['LAME']['raw']['vbr_method']); - - // byte $A6 Lowpass filter value - $ThisFileInfo['mpeg']['audio']['LAME']['lowpass_frequency'] = BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xA6, 1)) * 100; - - // bytes $A7-$AE Replay Gain - // http://privatewww.essex.ac.uk/~djmrob/replaygain/rg_data_format.html - // bytes $A7-$AA : 32 bit floating point "Peak signal amplitude" - $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['peak_amplitude'] = BigEndian2Float(substr($headerstring, $LAMEtagOffsetContant + 0xA7, 4)); - $ThisFileInfo['mpeg']['audio']['LAME']['raw']['RGAD_radio'] = BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xAB, 2)); - $ThisFileInfo['mpeg']['audio']['LAME']['raw']['RGAD_audiophile'] = BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xAD, 2)); - - if ($ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['peak_amplitude'] == 0) { - $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['peak_amplitude'] = false; - } - - if ($ThisFileInfo['mpeg']['audio']['LAME']['raw']['RGAD_radio'] != 0) { - require_once(GETID3_INCLUDEPATH.'getid3.rgad.php'); - - $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['radio']['raw']['name'] = ($ThisFileInfo['mpeg']['audio']['LAME']['raw']['RGAD_radio'] & 0xE000) >> 13; - $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['radio']['raw']['originator'] = ($ThisFileInfo['mpeg']['audio']['LAME']['raw']['RGAD_radio'] & 0x1C00) >> 10; - $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['radio']['raw']['sign_bit'] = ($ThisFileInfo['mpeg']['audio']['LAME']['raw']['RGAD_radio'] & 0x0200) >> 9; - $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['radio']['raw']['gain_adjust'] = $ThisFileInfo['mpeg']['audio']['LAME']['raw']['RGAD_radio'] & 0x01FF; - $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['radio']['name'] = RGADnameLookup($ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['radio']['raw']['name']); - $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['radio']['originator'] = RGADoriginatorLookup($ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['radio']['raw']['originator']); - $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['radio']['gain_db'] = RGADadjustmentLookup($ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['radio']['raw']['gain_adjust'], $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['radio']['raw']['sign_bit']); - - if ($ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['peak_amplitude'] !== false) { - $ThisFileInfo['replay_gain']['radio']['peak'] = $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['peak_amplitude']; - } - $ThisFileInfo['replay_gain']['radio']['originator'] = $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['radio']['originator']; - $ThisFileInfo['replay_gain']['radio']['adjustment'] = $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['radio']['gain_db']; - } - if ($ThisFileInfo['mpeg']['audio']['LAME']['raw']['RGAD_audiophile'] != 0) { - require_once(GETID3_INCLUDEPATH.'getid3.rgad.php'); - - $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['audiophile']['raw']['name'] = ($ThisFileInfo['mpeg']['audio']['LAME']['raw']['RGAD_audiophile'] & 0xE000) >> 13; - $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['audiophile']['raw']['originator'] = ($ThisFileInfo['mpeg']['audio']['LAME']['raw']['RGAD_audiophile'] & 0x1C00) >> 10; - $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['audiophile']['raw']['sign_bit'] = ($ThisFileInfo['mpeg']['audio']['LAME']['raw']['RGAD_audiophile'] & 0x0200) >> 9; - $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['audiophile']['raw']['gain_adjust'] = $ThisFileInfo['mpeg']['audio']['LAME']['raw']['RGAD_audiophile'] & 0x01FF; - $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['audiophile']['name'] = RGADnameLookup($ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['audiophile']['raw']['name']); - $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['audiophile']['originator'] = RGADoriginatorLookup($ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['audiophile']['raw']['originator']); - $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['audiophile']['gain_db'] = RGADadjustmentLookup($ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['audiophile']['raw']['gain_adjust'], $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['audiophile']['raw']['sign_bit']); - - if ($ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['peak_amplitude'] !== false) { - $ThisFileInfo['replay_gain']['audiophile']['peak'] = $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['peak_amplitude']; - } - $ThisFileInfo['replay_gain']['audiophile']['originator'] = $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['audiophile']['originator']; - $ThisFileInfo['replay_gain']['audiophile']['adjustment'] = $ThisFileInfo['mpeg']['audio']['LAME']['RGAD']['audiophile']['gain_db']; - } - - - // byte $AF Encoding flags + ATH Type - $EncodingFlagsATHtype = BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xAF, 1)); - $ThisFileInfo['mpeg']['audio']['LAME']['encoding_flags']['nspsytune'] = (bool) ($EncodingFlagsATHtype & 0x10); - $ThisFileInfo['mpeg']['audio']['LAME']['encoding_flags']['nssafejoint'] = (bool) ($EncodingFlagsATHtype & 0x20); - $ThisFileInfo['mpeg']['audio']['LAME']['encoding_flags']['nogap_next'] = (bool) ($EncodingFlagsATHtype & 0x40); - $ThisFileInfo['mpeg']['audio']['LAME']['encoding_flags']['nogap_prev'] = (bool) ($EncodingFlagsATHtype & 0x80); - $ThisFileInfo['mpeg']['audio']['LAME']['ath_type'] = $EncodingFlagsATHtype & 0x0F; - - // byte $B0 if ABR {specified bitrate} else {minimal bitrate} - $ABRbitrateMinBitrate = BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xB0, 1)); - if ($ThisFileInfo['mpeg']['audio']['LAME']['raw']['vbr_method'] == 2) { // Average BitRate (ABR) - $ThisFileInfo['mpeg']['audio']['LAME']['bitrate_abr'] = $ABRbitrateMinBitrate; - } elseif ($ABRbitrateMinBitrate > 0) { // Variable BitRate (VBR) - minimum bitrate - $ThisFileInfo['mpeg']['audio']['LAME']['bitrate_min'] = $ABRbitrateMinBitrate; - } - - // bytes $B1-$B3 Encoder delays - $EncoderDelays = BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xB1, 3)); - $ThisFileInfo['mpeg']['audio']['LAME']['encoder_delay'] = ($EncoderDelays & 0xFFF000) >> 12; - $ThisFileInfo['mpeg']['audio']['LAME']['end_padding'] = $EncoderDelays & 0x000FFF; - - // byte $B4 Misc - $MiscByte = BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xB4, 1)); - $ThisFileInfo['mpeg']['audio']['LAME']['raw']['noise_shaping'] = ($MiscByte & 0x03); - $ThisFileInfo['mpeg']['audio']['LAME']['raw']['stereo_mode'] = ($MiscByte & 0x1C) >> 2; - $ThisFileInfo['mpeg']['audio']['LAME']['raw']['not_optimal_quality'] = ($MiscByte & 0x20) >> 5; - $ThisFileInfo['mpeg']['audio']['LAME']['raw']['source_sample_freq'] = ($MiscByte & 0xC0) >> 6; - $ThisFileInfo['mpeg']['audio']['LAME']['noise_shaping'] = $ThisFileInfo['mpeg']['audio']['LAME']['raw']['noise_shaping']; - $ThisFileInfo['mpeg']['audio']['LAME']['stereo_mode'] = LAMEmiscStereoModeLookup($ThisFileInfo['mpeg']['audio']['LAME']['raw']['stereo_mode']); - $ThisFileInfo['mpeg']['audio']['LAME']['not_optimal_quality'] = (bool) $ThisFileInfo['mpeg']['audio']['LAME']['raw']['not_optimal_quality']; - $ThisFileInfo['mpeg']['audio']['LAME']['source_sample_freq'] = LAMEmiscSourceSampleFrequencyLookup($ThisFileInfo['mpeg']['audio']['LAME']['raw']['source_sample_freq']); - - // byte $B5 MP3 Gain - $ThisFileInfo['mpeg']['audio']['LAME']['raw']['mp3_gain'] = BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xB5, 1), false, true); - $ThisFileInfo['mpeg']['audio']['LAME']['mp3_gain_db'] = 1.5 * $ThisFileInfo['mpeg']['audio']['LAME']['raw']['mp3_gain']; - $ThisFileInfo['mpeg']['audio']['LAME']['mp3_gain_factor'] = pow(2, ($ThisFileInfo['mpeg']['audio']['LAME']['mp3_gain_db'] / 6)); - - // bytes $B6-$B7 Preset and surround info - $PresetSurroundBytes = BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xB6, 2)); - // Reserved = ($PresetSurroundBytes & 0xC000); - $ThisFileInfo['mpeg']['audio']['LAME']['raw']['surround_info'] = ($PresetSurroundBytes & 0x3800); - $ThisFileInfo['mpeg']['audio']['LAME']['surround_info'] = LAMEsurroundInfoLookup($ThisFileInfo['mpeg']['audio']['LAME']['raw']['surround_info']); - $ThisFileInfo['mpeg']['audio']['LAME']['preset_used_id'] = ($PresetSurroundBytes & 0x07FF); - - // bytes $B8-$BB MusicLength - $ThisFileInfo['mpeg']['audio']['LAME']['audio_bytes'] = BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xB8, 4)); - $ExpectedNumberOfAudioBytes = (($ThisFileInfo['mpeg']['audio']['LAME']['audio_bytes'] > 0) ? $ThisFileInfo['mpeg']['audio']['LAME']['audio_bytes'] : $ThisFileInfo['mpeg']['audio']['VBR_bytes']); - - // bytes $BC-$BD MusicCRC - $ThisFileInfo['mpeg']['audio']['LAME']['music_crc'] = BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xBC, 2)); - - // bytes $BE-$BF CRC-16 of Info Tag - $ThisFileInfo['mpeg']['audio']['LAME']['lame_tag_crc'] = BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xBE, 2)); - - - // LAME CBR - if ($ThisFileInfo['mpeg']['audio']['LAME']['raw']['vbr_method'] == 1) { - - $ThisFileInfo['mpeg']['audio']['bitrate_mode'] = 'cbr'; - if (empty($ThisFileInfo['mpeg']['audio']['bitrate']) || ($ThisFileInfo['mpeg']['audio']['LAME']['bitrate_min'] != 255)) { - $ThisFileInfo['mpeg']['audio']['bitrate'] = $ThisFileInfo['mpeg']['audio']['LAME']['bitrate_min']; - } - - } - - } - } - - } else { - - // not Fraunhofer or Xing VBR methods, most likely CBR (but could be VBR with no header) - $ThisFileInfo['mpeg']['audio']['bitrate_mode'] = 'cbr'; - if ($recursivesearch) { - $ThisFileInfo['mpeg']['audio']['bitrate_mode'] = 'vbr'; - if (RecursiveFrameScanning($fd, $ThisFileInfo, $offset, $nextframetestoffset, true)) { - $recursivesearch = false; - $ThisFileInfo['mpeg']['audio']['bitrate_mode'] = 'cbr'; - } - if ($ThisFileInfo['mpeg']['audio']['bitrate_mode'] == 'vbr') { - $ThisFileInfo['warning'] .= "\n".'VBR file with no VBR header. Bitrate values calculated from actual frame bitrates.'; - } - } - - } - - } - - if (($ExpectedNumberOfAudioBytes > 0) && ($ExpectedNumberOfAudioBytes != ($ThisFileInfo['avdataend'] - $ThisFileInfo['avdataoffset']))) { - if (($ExpectedNumberOfAudioBytes - ($ThisFileInfo['avdataend'] - $ThisFileInfo['avdataoffset'])) == 1) { - $ThisFileInfo['warning'] .= "\n".'Last byte of data truncated (this is a known bug in Meracl ID3 Tag Writer before v1.3.5)'; - } elseif ($ExpectedNumberOfAudioBytes > ($ThisFileInfo['avdataend'] - $ThisFileInfo['avdataoffset'])) { - $ThisFileInfo['warning'] .= "\n".'Probable truncated file: expecting '.$ExpectedNumberOfAudioBytes.' bytes of audio data, only found '.($ThisFileInfo['avdataend'] - $ThisFileInfo['avdataoffset']).' (short by '.($ExpectedNumberOfAudioBytes - ($ThisFileInfo['avdataend'] - $ThisFileInfo['avdataoffset'])).' bytes)'; - } else { - $ThisFileInfo['warning'] .= "\n".'Too much data in file: expecting '.$ExpectedNumberOfAudioBytes.' bytes of audio data, found '.($ThisFileInfo['avdataend'] - $ThisFileInfo['avdataoffset']).' ('.(($ThisFileInfo['avdataend'] - $ThisFileInfo['avdataoffset']) - $ExpectedNumberOfAudioBytes).' bytes too many)'; - } - } - - if (($ThisFileInfo['mpeg']['audio']['bitrate'] == 'free') && empty($ThisFileInfo['audio']['bitrate'])) { - if (($offset == $ThisFileInfo['avdataoffset']) && empty($ThisFileInfo['mpeg']['audio']['VBR_frames'])) { - $framebytelength = FreeFormatFrameLength($fd, $offset, $ThisFileInfo, true); - if ($framebytelength > 0) { - $ThisFileInfo['mpeg']['audio']['framelength'] = $framebytelength; - if ($ThisFileInfo['mpeg']['audio']['layer'] == 'I') { - // BitRate = (((FrameLengthInBytes / 4) - Padding) * SampleRate) / 12 - $ThisFileInfo['audio']['bitrate'] = ((($framebytelength / 4) - intval($ThisFileInfo['mpeg']['audio']['padding'])) * $ThisFileInfo['mpeg']['audio']['sample_rate']) / 12; - } else { - // Bitrate = ((FrameLengthInBytes - Padding) * SampleRate) / 144 - $ThisFileInfo['audio']['bitrate'] = (($framebytelength - intval($ThisFileInfo['mpeg']['audio']['padding'])) * $ThisFileInfo['mpeg']['audio']['sample_rate']) / 144; - } - } else { - $ThisFileInfo['error'] .= "\n".'Error calculating frame length of free-format MP3 without Xing/LAME header'; - } - } - } - - if (($ThisFileInfo['mpeg']['audio']['bitrate_mode'] == 'vbr') && isset($ThisFileInfo['mpeg']['audio']['VBR_frames']) && ($ThisFileInfo['mpeg']['audio']['VBR_frames'] > 1)) { - $ThisFileInfo['mpeg']['audio']['VBR_frames']--; // don't count the Xing / VBRI frame - if (($ThisFileInfo['mpeg']['audio']['version'] == '1') && ($ThisFileInfo['mpeg']['audio']['layer'] == 'I')) { - $ThisFileInfo['mpeg']['audio']['VBR_bitrate'] = ((($ThisFileInfo['mpeg']['audio']['VBR_bytes'] / $ThisFileInfo['mpeg']['audio']['VBR_frames']) * 8) * ($ThisFileInfo['audio']['sample_rate'] / 384)) / 1000; - } elseif ((($ThisFileInfo['mpeg']['audio']['version'] == '2') || ($ThisFileInfo['mpeg']['audio']['version'] == '2.5')) && ($ThisFileInfo['mpeg']['audio']['layer'] == 'III')) { - $ThisFileInfo['mpeg']['audio']['VBR_bitrate'] = ((($ThisFileInfo['mpeg']['audio']['VBR_bytes'] / $ThisFileInfo['mpeg']['audio']['VBR_frames']) * 8) * ($ThisFileInfo['audio']['sample_rate'] / 576)) / 1000; - } else { - $ThisFileInfo['mpeg']['audio']['VBR_bitrate'] = ((($ThisFileInfo['mpeg']['audio']['VBR_bytes'] / $ThisFileInfo['mpeg']['audio']['VBR_frames']) * 8) * ($ThisFileInfo['audio']['sample_rate'] / 1152)) / 1000; - } - if ($ThisFileInfo['mpeg']['audio']['VBR_bitrate'] > 0) { - $ThisFileInfo['audio']['bitrate'] = 1000 * $ThisFileInfo['mpeg']['audio']['VBR_bitrate']; - $ThisFileInfo['mpeg']['audio']['bitrate'] = $ThisFileInfo['mpeg']['audio']['VBR_bitrate']; // to avoid confusion - } - } - - // End variable-bitrate headers - //////////////////////////////////////////////////////////////////////////////////// - - if ($recursivesearch) { - - if (!RecursiveFrameScanning($fd, $ThisFileInfo, $offset, $nextframetestoffset, $ScanAsCBR)) { - return false; - } - - } - - - //if (false) { - // // experimental side info parsing section - not returning anything useful yet - // - // $SideInfoBitstream = BigEndian2Bin($SideInfoData); - // $SideInfoOffset = 0; - // - // if ($ThisFileInfo['mpeg']['audio']['version'] == '1') { - // if ($ThisFileInfo['mpeg']['audio']['channelmode'] == 'mono') { - // // MPEG-1 (mono) - // $ThisFileInfo['mpeg']['audio']['side_info']['main_data_begin'] = substr($SideInfoBitstream, $SideInfoOffset, 9); - // $SideInfoOffset += 9; - // $SideInfoOffset += 5; - // } else { - // // MPEG-1 (stereo, joint-stereo, dual-channel) - // $ThisFileInfo['mpeg']['audio']['side_info']['main_data_begin'] = substr($SideInfoBitstream, $SideInfoOffset, 9); - // $SideInfoOffset += 9; - // $SideInfoOffset += 3; - // } - // } else { // 2 or 2.5 - // if ($ThisFileInfo['mpeg']['audio']['channelmode'] == 'mono') { - // // MPEG-2, MPEG-2.5 (mono) - // $ThisFileInfo['mpeg']['audio']['side_info']['main_data_begin'] = substr($SideInfoBitstream, $SideInfoOffset, 8); - // $SideInfoOffset += 8; - // $SideInfoOffset += 1; - // } else { - // // MPEG-2, MPEG-2.5 (stereo, joint-stereo, dual-channel) - // $ThisFileInfo['mpeg']['audio']['side_info']['main_data_begin'] = substr($SideInfoBitstream, $SideInfoOffset, 8); - // $SideInfoOffset += 8; - // $SideInfoOffset += 2; - // } - // } - // - // if ($ThisFileInfo['mpeg']['audio']['version'] == '1') { - // for ($channel = 0; $channel < $ThisFileInfo['audio']['channels']; $channel++) { - // for ($scfsi_band = 0; $scfsi_band < 4; $scfsi_band++) { - // $ThisFileInfo['mpeg']['audio']['scfsi'][$channel][$scfsi_band] = substr($SideInfoBitstream, $SideInfoOffset, 1); - // $SideInfoOffset += 2; - // } - // } - // } - // for ($granule = 0; $granule < (($ThisFileInfo['mpeg']['audio']['version'] == '1') ? 2 : 1); $granule++) { - // for ($channel = 0; $channel < $ThisFileInfo['audio']['channels']; $channel++) { - // $ThisFileInfo['mpeg']['audio']['part2_3_length'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 12); - // $SideInfoOffset += 12; - // $ThisFileInfo['mpeg']['audio']['big_values'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 9); - // $SideInfoOffset += 9; - // $ThisFileInfo['mpeg']['audio']['global_gain'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 8); - // $SideInfoOffset += 8; - // if ($ThisFileInfo['mpeg']['audio']['version'] == '1') { - // $ThisFileInfo['mpeg']['audio']['scalefac_compress'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 4); - // $SideInfoOffset += 4; - // } else { - // $ThisFileInfo['mpeg']['audio']['scalefac_compress'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 9); - // $SideInfoOffset += 9; - // } - // $ThisFileInfo['mpeg']['audio']['window_switching_flag'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1); - // $SideInfoOffset += 1; - // - // if ($ThisFileInfo['mpeg']['audio']['window_switching_flag'][$granule][$channel] == '1') { - // - // $ThisFileInfo['mpeg']['audio']['block_type'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 2); - // $SideInfoOffset += 2; - // $ThisFileInfo['mpeg']['audio']['mixed_block_flag'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1); - // $SideInfoOffset += 1; - // - // for ($region = 0; $region < 2; $region++) { - // $ThisFileInfo['mpeg']['audio']['table_select'][$granule][$channel][$region] = substr($SideInfoBitstream, $SideInfoOffset, 5); - // $SideInfoOffset += 5; - // } - // $ThisFileInfo['mpeg']['audio']['table_select'][$granule][$channel][2] = 0; - // - // for ($window = 0; $window < 3; $window++) { - // $ThisFileInfo['mpeg']['audio']['subblock_gain'][$granule][$channel][$window] = substr($SideInfoBitstream, $SideInfoOffset, 3); - // $SideInfoOffset += 3; - // } - // - // } else { - // - // for ($region = 0; $region < 3; $region++) { - // $ThisFileInfo['mpeg']['audio']['table_select'][$granule][$channel][$region] = substr($SideInfoBitstream, $SideInfoOffset, 5); - // $SideInfoOffset += 5; - // } - // - // $ThisFileInfo['mpeg']['audio']['region0_count'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 4); - // $SideInfoOffset += 4; - // $ThisFileInfo['mpeg']['audio']['region1_count'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 3); - // $SideInfoOffset += 3; - // $ThisFileInfo['mpeg']['audio']['block_type'][$granule][$channel] = 0; - // } - // - // if ($ThisFileInfo['mpeg']['audio']['version'] == '1') { - // $ThisFileInfo['mpeg']['audio']['preflag'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1); - // $SideInfoOffset += 1; - // } - // $ThisFileInfo['mpeg']['audio']['scalefac_scale'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1); - // $SideInfoOffset += 1; - // $ThisFileInfo['mpeg']['audio']['count1table_select'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1); - // $SideInfoOffset += 1; - // } - // } - //} - - return true; -} - -function RecursiveFrameScanning(&$fd, &$ThisFileInfo, &$offset, &$nextframetestoffset, $ScanAsCBR) { - for ($i = 0; $i < MPEG_VALID_CHECK_FRAMES; $i++) { - // check next MPEG_VALID_CHECK_FRAMES frames for validity, to make sure we haven't run across a false synch - if (($nextframetestoffset + 4) >= $ThisFileInfo['avdataend']) { - // end of file - return true; - } - - $nextframetestarray = array('error'=>'', 'warning'=>'', 'avdataend'=>$ThisFileInfo['avdataend'], 'avdataoffset'=>$ThisFileInfo['avdataoffset']); - if (decodeMPEGaudioHeader($fd, $nextframetestoffset, $nextframetestarray, false)) { - if ($ScanAsCBR) { - // force CBR mode, used for trying to pick out invalid audio streams with - // valid(?) VBR headers, or VBR streams with no VBR header - if (!isset($nextframetestarray['mpeg']['audio']['bitrate']) || !isset($ThisFileInfo['mpeg']['audio']['bitrate']) || ($nextframetestarray['mpeg']['audio']['bitrate'] != $ThisFileInfo['mpeg']['audio']['bitrate'])) { - return false; - } - } - - - // next frame is OK, get ready to check the one after that - if (isset($nextframetestarray['mpeg']['audio']['framelength']) && ($nextframetestarray['mpeg']['audio']['framelength'] > 0)) { - $nextframetestoffset += $nextframetestarray['mpeg']['audio']['framelength']; - } else { - $ThisFileInfo['error'] .= "\n".'Frame at offset ('.$offset.') is has an invalid frame length.'; - return false; - } - - } else { - - // next frame is not valid, note the error and fail, so scanning can contiue for a valid frame sequence - $ThisFileInfo['error'] .= "\n".'Frame at offset ('.$offset.') is valid, but the next one at ('.$nextframetestoffset.') is not.'; - - return false; - } - } - return true; -} - -function FreeFormatFrameLength($fd, $offset, &$ThisFileInfo, $deepscan=false) { - fseek($fd, $offset, SEEK_SET); - $MPEGaudioData = fread($fd, 32768); - - $SyncPattern1 = substr($MPEGaudioData, 0, 4); - // may be different pattern due to padding - $SyncPattern2 = $SyncPattern1{0}.$SyncPattern1{1}.chr(ord($SyncPattern1{2}) | 0x02).$SyncPattern1{3}; - if ($SyncPattern2 === $SyncPattern1) { - $SyncPattern2 = $SyncPattern1{0}.$SyncPattern1{1}.chr(ord($SyncPattern1{2}) & 0xFD).$SyncPattern1{3}; - } - - $framelength = false; - $framelength1 = strpos($MPEGaudioData, $SyncPattern1, 4); - $framelength2 = strpos($MPEGaudioData, $SyncPattern2, 4); - if ($framelength1 > 4) { - $framelength = $framelength1; - } - if (($framelength2 > 4) && ($framelength2 < $framelength1)) { - $framelength = $framelength2; - } - if (!$framelength) { - - // LAME 3.88 has a different value for modeextension on the first frame vs the rest - $framelength1 = strpos($MPEGaudioData, substr($SyncPattern1, 0, 3), 4); - $framelength2 = strpos($MPEGaudioData, substr($SyncPattern2, 0, 3), 4); - - if ($framelength1 > 4) { - $framelength = $framelength1; - } - if (($framelength2 > 4) && ($framelength2 < $framelength1)) { - $framelength = $framelength2; - } - if (!$framelength) { - $ThisFileInfo['error'] .= "\n".'Cannot find next free-format synch pattern ('.PrintHexBytes($SyncPattern1).' or '.PrintHexBytes($SyncPattern2).') after offset '.$offset; - return false; - } else { - $ThisFileInfo['warning'] .= "\n".'ModeExtension varies between first frame and other frames (known free-format issue in LAME 3.88)'; - $ThisFileInfo['audio']['codec'] = 'LAME'; - $ThisFileInfo['audio']['encoder'] = 'LAME3.88'; - $SyncPattern1 = substr($SyncPattern1, 0, 3); - $SyncPattern2 = substr($SyncPattern2, 0, 3); - } - } - - if ($deepscan) { - - $ActualFrameLengthValues = array(); - $nextoffset = $offset + $framelength; - while ($nextoffset < ($ThisFileInfo['avdataend'] - 6)) { - fseek($fd, $nextoffset - 1, SEEK_SET); - $NextSyncPattern = fread($fd, 6); - if ((substr($NextSyncPattern, 1, strlen($SyncPattern1)) == $SyncPattern1) || (substr($NextSyncPattern, 1, strlen($SyncPattern2)) == $SyncPattern2)) { - // good - found where expected - $ActualFrameLengthValues[] = $framelength; - } elseif ((substr($NextSyncPattern, 0, strlen($SyncPattern1)) == $SyncPattern1) || (substr($NextSyncPattern, 0, strlen($SyncPattern2)) == $SyncPattern2)) { - // ok - found one byte earlier than expected (last frame wasn't padded, first frame was) - $ActualFrameLengthValues[] = ($framelength - 1); - $nextoffset--; - } elseif ((substr($NextSyncPattern, 2, strlen($SyncPattern1)) == $SyncPattern1) || (substr($NextSyncPattern, 2, strlen($SyncPattern2)) == $SyncPattern2)) { - // ok - found one byte later than expected (last frame was padded, first frame wasn't) - $ActualFrameLengthValues[] = ($framelength + 1); - $nextoffset++; - } else { - $ThisFileInfo['error'] .= "\n".'Did not find expected free-format sync pattern at offset '.$nextoffset; - return false; - } - $nextoffset += $framelength; - } - if (count($ActualFrameLengthValues) > 0) { - $framelength = round(array_sum($ActualFrameLengthValues) / count($ActualFrameLengthValues)); - } - } - return $framelength; -} - - -function getOnlyMPEGaudioInfo($fd, &$ThisFileInfo, $avdataoffset, $BitrateHistogram=false) { - // looks for synch, decodes MPEG audio header - - fseek($fd, $avdataoffset, SEEK_SET); - $header = ''; - $SynchSeekOffset = 0; - - if (!defined('CONST_FF')) { - define('CONST_FF', chr(0xFF)); - define('CONST_E0', chr(0xE0)); - } - - static $MPEGaudioVersionLookup; - static $MPEGaudioLayerLookup; - static $MPEGaudioBitrateLookup; - if (empty($MPEGaudioVersionLookup)) { - $MPEGaudioVersionLookup = MPEGaudioVersionArray(); - $MPEGaudioLayerLookup = MPEGaudioLayerArray(); - $MPEGaudioBitrateLookup = MPEGaudioBitrateArray(); - - } - - $header_len = strlen($header) - round(FREAD_BUFFER_SIZE / 2); - while (true) { - - if (($SynchSeekOffset > $header_len) && (($avdataoffset + $SynchSeekOffset) < $ThisFileInfo['avdataend']) && !feof($fd)) { - - if ($SynchSeekOffset > 131072) { - // if a synch's not found within the first 128k bytes, then give up - $ThisFileInfo['error'] .= "\n".'could not find valid MPEG synch within the first 131072 bytes'; - if (isset($ThisFileInfo['audio']['bitrate'])) { - unset($ThisFileInfo['audio']['bitrate']); - } - if (isset($ThisFileInfo['mpeg']['audio'])) { - unset($ThisFileInfo['mpeg']['audio']); - } - if (isset($ThisFileInfo['mpeg']) && (!is_array($ThisFileInfo['mpeg']) || (count($ThisFileInfo['mpeg']) == 0))) { - unset($ThisFileInfo['mpeg']); - } - return false; - - } elseif ($header .= fread($fd, FREAD_BUFFER_SIZE)) { - - // great - $header_len = strlen($header) - round(FREAD_BUFFER_SIZE / 2); - - } else { - - $ThisFileInfo['error'] .= "\n".'could not find valid MPEG synch before end of file'; - if (isset($ThisFileInfo['audio']['bitrate'])) { - unset($ThisFileInfo['audio']['bitrate']); - } - if (isset($ThisFileInfo['mpeg']['audio'])) { - unset($ThisFileInfo['mpeg']['audio']); - } - if (isset($ThisFileInfo['mpeg']) && (!is_array($ThisFileInfo['mpeg']) || (count($ThisFileInfo['mpeg']) == 0))) { - unset($ThisFileInfo['mpeg']); - } - return false; - - } - } - - if (($SynchSeekOffset + 1) >= strlen($header)) { - $ThisFileInfo['error'] .= "\n".'could not find valid MPEG synch before end of file'; - return false; - } - - if (($header{$SynchSeekOffset} == CONST_FF) && ($header{($SynchSeekOffset + 1)} > CONST_E0)) { // synch detected - - if (!isset($FirstFrameThisfileInfo) && !isset($ThisFileInfo['mpeg']['audio'])) { - $FirstFrameThisfileInfo = $ThisFileInfo; - $FirstFrameAVDataOffset = $avdataoffset + $SynchSeekOffset; - if (!decodeMPEGaudioHeader($fd, $avdataoffset + $SynchSeekOffset, $FirstFrameThisfileInfo, false)) { - // if this is the first valid MPEG-audio frame, save it in case it's a VBR header frame and there's - // garbage between this frame and a valid sequence of MPEG-audio frames, to be restored below - unset($FirstFrameThisfileInfo); - } - } - $dummy = $ThisFileInfo; // only overwrite real data if valid header found - - if (decodeMPEGaudioHeader($fd, $avdataoffset + $SynchSeekOffset, $dummy, true)) { - - $ThisFileInfo = $dummy; - $ThisFileInfo['avdataoffset'] = $avdataoffset + $SynchSeekOffset; - switch ($ThisFileInfo['fileformat']) { - case '': - case 'id3': - case 'ape': - case 'mp3': - $ThisFileInfo['fileformat'] = 'mp3'; - $ThisFileInfo['audio']['dataformat'] = 'mp3'; - } - if (isset($FirstFrameThisfileInfo['mpeg']['audio']['bitrate_mode']) && ($FirstFrameThisfileInfo['mpeg']['audio']['bitrate_mode'] == 'vbr')) { - if (!CloseMatch($ThisFileInfo['audio']['bitrate'], $FirstFrameThisfileInfo['audio']['bitrate'], 1)) { - // If there is garbage data between a valid VBR header frame and a sequence - // of valid MPEG-audio frames the VBR data is no longer discarded. - $ThisFileInfo = $FirstFrameThisfileInfo; - $ThisFileInfo['avdataoffset'] = $FirstFrameAVDataOffset; - $ThisFileInfo['fileformat'] = 'mp3'; - $ThisFileInfo['audio']['dataformat'] = 'mp3'; - $dummy = $ThisFileInfo; - unset($dummy['mpeg']['audio']); - $GarbageOffsetStart = $FirstFrameAVDataOffset + $FirstFrameThisfileInfo['mpeg']['audio']['framelength']; - $GarbageOffsetEnd = $avdataoffset + $SynchSeekOffset; - if (decodeMPEGaudioHeader($fd, $GarbageOffsetEnd, $dummy, true, true)) { - - $ThisFileInfo = $dummy; - $ThisFileInfo['avdataoffset'] = $GarbageOffsetEnd; - $ThisFileInfo['warning'] .= "\n".'apparently-valid VBR header not used because could not find '.MPEG_VALID_CHECK_FRAMES.' consecutive MPEG-audio frames immediately after VBR header (garbage data for '.($GarbageOffsetEnd - $GarbageOffsetStart).' bytes between '.$GarbageOffsetStart.' and '.$GarbageOffsetEnd.'), but did find valid CBR stream starting at '.$GarbageOffsetEnd; - - } else { - - $ThisFileInfo['warning'] .= "\n".'using data from VBR header even though could not find '.MPEG_VALID_CHECK_FRAMES.' consecutive MPEG-audio frames immediately after VBR header (garbage data for '.($GarbageOffsetEnd - $GarbageOffsetStart).' bytes between '.$GarbageOffsetStart.' and '.$GarbageOffsetEnd.')'; - - } - } - } - - if (isset($ThisFileInfo['mpeg']['audio']['bitrate_mode']) && ($ThisFileInfo['mpeg']['audio']['bitrate_mode'] == 'vbr') && !isset($ThisFileInfo['mpeg']['audio']['VBR_method'])) { - // VBR file with no VBR header - $BitrateHistogram = true; - } - - if ($BitrateHistogram) { - - $ThisFileInfo['mpeg']['audio']['stereo_distribution'] = array('stereo'=>0, 'joint stereo'=>0, 'dual channel'=>0, 'mono'=>0); - $ThisFileInfo['mpeg']['audio']['version_distribution'] = array('1'=>0, '2'=>0, '2.5'=>0); - - if ($ThisFileInfo['mpeg']['audio']['version'] == '1') { - if ($ThisFileInfo['mpeg']['audio']['layer'] == 'III') { - $ThisFileInfo['mpeg']['audio']['bitrate_distribution'] = array('free'=>0, 32=>0, 40=>0, 48=>0, 56=>0, 64=>0, 80=>0, 96=>0, 112=>0, 128=>0, 160=>0, 192=>0, 224=>0, 256=>0, 320=>0); - } elseif ($ThisFileInfo['mpeg']['audio']['layer'] == 'II') { - $ThisFileInfo['mpeg']['audio']['bitrate_distribution'] = array('free'=>0, 32=>0, 48=>0, 56=>0, 64=>0, 80=>0, 96=>0, 112=>0, 128=>0, 160=>0, 192=>0, 224=>0, 256=>0, 320=>0, 384=>0); - } elseif ($ThisFileInfo['mpeg']['audio']['layer'] == 'I') { - $ThisFileInfo['mpeg']['audio']['bitrate_distribution'] = array('free'=>0, 32=>0, 64=>0, 96=>0, 128=>0, 160=>0, 192=>0, 224=>0, 256=>0, 288=>0, 320=>0, 352=>0, 384=>0, 416=>0, 448=>0); - } - } elseif ($ThisFileInfo['mpeg']['audio']['layer'] == 'I') { - $ThisFileInfo['mpeg']['audio']['bitrate_distribution'] = array('free'=>0, 32=>0, 48=>0, 56=>0, 64=>0, 80=>0, 96=>0, 112=>0, 128=>0, 144=>0, 160=>0, 176=>0, 192=>0, 224=>0, 256=>0); - } else { - $ThisFileInfo['mpeg']['audio']['bitrate_distribution'] = array('free'=>0, 8=>0, 16=>0, 24=>0, 32=>0, 40=>0, 48=>0, 56=>0, 64=>0, 80=>0, 96=>0, 112=>0, 128=>0, 144=>0, 160=>0); - } - - $dummy = array('error'=>$ThisFileInfo['error'], 'warning'=>$ThisFileInfo['warning'], 'avdataend'=>$ThisFileInfo['avdataend'], 'avdataoffset'=>$ThisFileInfo['avdataoffset']); - $synchstartoffset = $ThisFileInfo['avdataoffset']; - - $FastMode = false; - while (decodeMPEGaudioHeader($fd, $synchstartoffset, $dummy, false, false, $FastMode)) { - $FastMode = true; - $thisframebitrate = $MPEGaudioBitrateLookup[$MPEGaudioVersionLookup[$dummy['mpeg']['audio']['raw']['version']]][$MPEGaudioLayerLookup[$dummy['mpeg']['audio']['raw']['layer']]][$dummy['mpeg']['audio']['raw']['bitrate']]; - - $ThisFileInfo['mpeg']['audio']['bitrate_distribution'][$thisframebitrate]++; - $ThisFileInfo['mpeg']['audio']['stereo_distribution'][$dummy['mpeg']['audio']['channelmode']]++; - $ThisFileInfo['mpeg']['audio']['version_distribution'][$dummy['mpeg']['audio']['version']]++; - if (empty($dummy['mpeg']['audio']['framelength'])) { - $ThisFileInfo['warning'] .= "\n".'Invalid/missing framelength in histogram analysis - aborting'; -$synchstartoffset += 4; -// return false; - } - $synchstartoffset += $dummy['mpeg']['audio']['framelength']; - } - - $bittotal = 0; - $framecounter = 0; - foreach ($ThisFileInfo['mpeg']['audio']['bitrate_distribution'] as $bitratevalue => $bitratecount) { - $framecounter += $bitratecount; - if ($bitratevalue != 'free') { - $bittotal += ($bitratevalue * $bitratecount); - } - } - if ($framecounter == 0) { - $ThisFileInfo['error'] .= "\n".'Corrupt MP3 file: framecounter == zero'; - return false; - } - $ThisFileInfo['mpeg']['audio']['frame_count'] = $framecounter; - $ThisFileInfo['mpeg']['audio']['bitrate'] = 1000 * ($bittotal / $framecounter); - - $ThisFileInfo['audio']['bitrate'] = $ThisFileInfo['mpeg']['audio']['bitrate']; - - - // Definitively set VBR vs CBR, even if the Xing/LAME/VBRI header says differently - $distinct_bitrates = 0; - foreach ($ThisFileInfo['mpeg']['audio']['bitrate_distribution'] as $bitrate_value => $bitrate_count) { - if ($bitrate_count > 0) { - $distinct_bitrates++; - } - } - if ($distinct_bitrates > 1) { - $ThisFileInfo['mpeg']['audio']['bitrate_mode'] = 'vbr'; - } else { - $ThisFileInfo['mpeg']['audio']['bitrate_mode'] = 'cbr'; - } - $ThisFileInfo['audio']['bitrate_mode'] = $ThisFileInfo['mpeg']['audio']['bitrate_mode']; - - } - - break; // exit while() - } - } - - $SynchSeekOffset++; - if (($avdataoffset + $SynchSeekOffset) >= $ThisFileInfo['avdataend']) { - // end of file/data - - if (empty($ThisFileInfo['mpeg']['audio'])) { - - $ThisFileInfo['error'] .= "\n".'could not find valid MPEG synch before end of file'; - if (isset($ThisFileInfo['audio']['bitrate'])) { - unset($ThisFileInfo['audio']['bitrate']); - } - if (isset($ThisFileInfo['mpeg']['audio'])) { - unset($ThisFileInfo['mpeg']['audio']); - } - if (isset($ThisFileInfo['mpeg']) && (!is_array($ThisFileInfo['mpeg']) || empty($ThisFileInfo['mpeg']))) { - unset($ThisFileInfo['mpeg']); - } - return false; - - } - break; - } - - } - $ThisFileInfo['audio']['bits_per_sample'] = 16; - $ThisFileInfo['audio']['channels'] = $ThisFileInfo['mpeg']['audio']['channels']; - $ThisFileInfo['audio']['channelmode'] = $ThisFileInfo['mpeg']['audio']['channelmode']; - $ThisFileInfo['audio']['sample_rate'] = $ThisFileInfo['mpeg']['audio']['sample_rate']; - return true; -} - - -function MPEGaudioVersionArray() { - static $MPEGaudioVersion = array('2.5', false, '2', '1'); - return $MPEGaudioVersion; -} - -function MPEGaudioLayerArray() { - static $MPEGaudioLayer = array(false, 'III', 'II', 'I'); - return $MPEGaudioLayer; -} - -function MPEGaudioBitrateArray() { - static $MPEGaudioBitrate; - if (empty($MPEGaudioBitrate)) { - $MPEGaudioBitrate['1']['I'] = array('free', 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448); - $MPEGaudioBitrate['1']['II'] = array('free', 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384); - $MPEGaudioBitrate['1']['III'] = array('free', 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320); - $MPEGaudioBitrate['2']['I'] = array('free', 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256); - $MPEGaudioBitrate['2']['II'] = array('free', 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160); - $MPEGaudioBitrate['2']['III'] = $MPEGaudioBitrate['2']['II']; - $MPEGaudioBitrate['2.5']['I'] = $MPEGaudioBitrate['2']['I']; - $MPEGaudioBitrate['2.5']['II'] = $MPEGaudioBitrate['2']['II']; - $MPEGaudioBitrate['2.5']['III'] = $MPEGaudioBitrate['2']['III']; - } - return $MPEGaudioBitrate; -} - -function MPEGaudioFrequencyArray() { - static $MPEGaudioFrequency; - if (empty($MPEGaudioFrequency)) { - $MPEGaudioFrequency['1'] = array(44100, 48000, 32000); - $MPEGaudioFrequency['2'] = array(22050, 24000, 16000); - $MPEGaudioFrequency['2.5'] = array(11025, 12000, 8000); - } - return $MPEGaudioFrequency; -} - -function MPEGaudioChannelModeArray() { - static $MPEGaudioChannelMode = array('stereo', 'joint stereo', 'dual channel', 'mono'); - return $MPEGaudioChannelMode; -} - -function MPEGaudioModeExtensionArray() { - static $MPEGaudioModeExtension; - if (empty($MPEGaudioModeExtension)) { - $MPEGaudioModeExtension['I'] = array('4-31', '8-31', '12-31', '16-31'); - $MPEGaudioModeExtension['II'] = array('4-31', '8-31', '12-31', '16-31'); - $MPEGaudioModeExtension['III'] = array('', 'IS', 'MS', 'IS+MS'); - } - return $MPEGaudioModeExtension; -} - -function MPEGaudioEmphasisArray() { - static $MPEGaudioEmphasis = array('none', '50/15ms', false, 'CCIT J.17'); - return $MPEGaudioEmphasis; -} - - -function MPEGaudioHeaderBytesValid($head4) { - return MPEGaudioHeaderValid(MPEGaudioHeaderDecode($head4)); -} - -function MPEGaudioHeaderValid($rawarray, $echoerrors=false) { - - if (($rawarray['synch'] & 0x0FFE) != 0x0FFE) { - return false; - } - - static $MPEGaudioVersionLookup; - static $MPEGaudioLayerLookup; - static $MPEGaudioBitrateLookup; - static $MPEGaudioFrequencyLookup; - static $MPEGaudioChannelModeLookup; - static $MPEGaudioModeExtensionLookup; - static $MPEGaudioEmphasisLookup; - if (empty($MPEGaudioVersionLookup)) { - $MPEGaudioVersionLookup = MPEGaudioVersionArray(); - $MPEGaudioLayerLookup = MPEGaudioLayerArray(); - $MPEGaudioBitrateLookup = MPEGaudioBitrateArray(); - $MPEGaudioFrequencyLookup = MPEGaudioFrequencyArray(); - $MPEGaudioChannelModeLookup = MPEGaudioChannelModeArray(); - $MPEGaudioModeExtensionLookup = MPEGaudioModeExtensionArray(); - $MPEGaudioEmphasisLookup = MPEGaudioEmphasisArray(); - } - - if (isset($MPEGaudioVersionLookup[$rawarray['version']])) { - $decodedVersion = $MPEGaudioVersionLookup[$rawarray['version']]; - } else { - if ($echoerrors) { - echo "\n".'invalid Version ('.$rawarray['version'].')'; - } - return false; - } - if (isset($MPEGaudioLayerLookup[$rawarray['layer']])) { - $decodedLayer = $MPEGaudioLayerLookup[$rawarray['layer']]; - } else { - if ($echoerrors) { - echo "\n".'invalid Layer ('.$rawarray['layer'].')'; - } - return false; - } - if (!isset($MPEGaudioBitrateLookup[$decodedVersion][$decodedLayer][$rawarray['bitrate']])) { - if ($echoerrors) { - echo "\n".'invalid Bitrate ('.$rawarray['bitrate'].')'; - } - if ($rawarray['bitrate'] == 15) { - // known issue in LAME 3.90 - 3.93.1 where free-format has bitrate ID of 15 instead of 0 - // let it go through here otherwise file will not be identified - } else { - return false; - } - } - if (!isset($MPEGaudioFrequencyLookup[$decodedVersion][$rawarray['sample_rate']])) { - if ($echoerrors) { - echo "\n".'invalid Frequency ('.$rawarray['sample_rate'].')'; - } - return false; - } - if (!isset($MPEGaudioChannelModeLookup[$rawarray['channelmode']])) { - if ($echoerrors) { - echo "\n".'invalid ChannelMode ('.$rawarray['channelmode'].')'; - } - return false; - } - if (!isset($MPEGaudioModeExtensionLookup[$decodedLayer][$rawarray['modeextension']])) { - if ($echoerrors) { - echo "\n".'invalid Mode Extension ('.$rawarray['modeextension'].')'; - } - return false; - } - if (!isset($MPEGaudioEmphasisLookup[$rawarray['emphasis']])) { - if ($echoerrors) { - echo "\n".'invalid Emphasis ('.$rawarray['emphasis'].')'; - } - return false; - } - // These are just either set or not set, you can't mess that up :) - // $rawarray['protection']; - // $rawarray['padding']; - // $rawarray['private']; - // $rawarray['copyright']; - // $rawarray['original']; - - return true; -} - -function MPEGaudioHeaderDecode($Header4Bytes) { - // AAAA AAAA AAAB BCCD EEEE FFGH IIJJ KLMM - // A - Frame sync (all bits set) - // B - MPEG Audio version ID - // C - Layer description - // D - Protection bit - // E - Bitrate index - // F - Sampling rate frequency index - // G - Padding bit - // H - Private bit - // I - Channel Mode - // J - Mode extension (Only if Joint stereo) - // K - Copyright - // L - Original - // M - Emphasis - - if (strlen($Header4Bytes) != 4) { - return false; - } - - $MPEGrawHeader['synch'] = (BigEndian2Int(substr($Header4Bytes, 0, 2)) & 0xFFE0) >> 4; - $MPEGrawHeader['version'] = (ord($Header4Bytes{1}) & 0x18) >> 3; // BB - $MPEGrawHeader['layer'] = (ord($Header4Bytes{1}) & 0x06) >> 1; // CC - $MPEGrawHeader['protection'] = (ord($Header4Bytes{1}) & 0x01); // D - $MPEGrawHeader['bitrate'] = (ord($Header4Bytes{2}) & 0xF0) >> 4; // EEEE - $MPEGrawHeader['sample_rate'] = (ord($Header4Bytes{2}) & 0x0C) >> 2; // FF - $MPEGrawHeader['padding'] = (ord($Header4Bytes{2}) & 0x02) >> 1; // G - $MPEGrawHeader['private'] = (ord($Header4Bytes{2}) & 0x01); // H - $MPEGrawHeader['channelmode'] = (ord($Header4Bytes{3}) & 0xC0) >> 6; // II - $MPEGrawHeader['modeextension'] = (ord($Header4Bytes{3}) & 0x30) >> 4; // JJ - $MPEGrawHeader['copyright'] = (ord($Header4Bytes{3}) & 0x08) >> 3; // K - $MPEGrawHeader['original'] = (ord($Header4Bytes{3}) & 0x04) >> 2; // L - $MPEGrawHeader['emphasis'] = (ord($Header4Bytes{3}) & 0x03); // MM - - return $MPEGrawHeader; -} - -function MPEGaudioFrameLength(&$bitrate, &$version, &$layer, $padding, &$samplerate) { - static $AudioFrameLengthCache = array(); - - if (!isset($AudioFrameLengthCache[$bitrate][$version][$layer][$padding][$samplerate])) { - $AudioFrameLengthCache[$bitrate][$version][$layer][$padding][$samplerate] = false; - if ($bitrate != 'free') { - - if ($version == '1') { - - if ($layer == 'I') { - - // For Layer I slot is 32 bits long - $FrameLengthCoefficient = 48; - $SlotLength = 4; - - } else { // Layer II / III - - // for Layer II and Layer III slot is 8 bits long. - $FrameLengthCoefficient = 144; - $SlotLength = 1; - - } - - } else { // MPEG-2 / MPEG-2.5 - - if ($layer == 'I') { - - // For Layer I slot is 32 bits long - $FrameLengthCoefficient = 24; - $SlotLength = 4; - - } elseif ($layer == 'II') { - - // for Layer II and Layer III slot is 8 bits long. - $FrameLengthCoefficient = 144; - $SlotLength = 1; - - } else { // III - - // for Layer II and Layer III slot is 8 bits long. - $FrameLengthCoefficient = 72; - $SlotLength = 1; - - } - - } - - // FrameLengthInBytes = ((Coefficient * BitRate) / SampleRate) + Padding - // http://66.96.216.160/cgi-bin/YaBB.pl?board=c&action=display&num=1018474068 - // -> [Finding the next frame synch] on www.r3mix.net forums if the above link goes dead - if ($samplerate > 0) { - $NewFramelength = ($FrameLengthCoefficient * $bitrate * 1000) / $samplerate; - $NewFramelength = floor($NewFramelength / $SlotLength) * $SlotLength; // round to next-lower multiple of SlotLength (1 byte for Layer II/III, 4 bytes for Layer I) - if ($padding) { - $NewFramelength += $SlotLength; - } - $AudioFrameLengthCache[$bitrate][$version][$layer][$padding][$samplerate] = (int) $NewFramelength; - } - } - } - return $AudioFrameLengthCache[$bitrate][$version][$layer][$padding][$samplerate]; -} - -function LAMEvbrMethodLookup($VBRmethodID) { - static $LAMEvbrMethodLookup = array(); - if (empty($LAMEvbrMethodLookup)) { - $LAMEvbrMethodLookup[0x00] = 'unknown'; - $LAMEvbrMethodLookup[0x01] = 'cbr'; - $LAMEvbrMethodLookup[0x02] = 'abr'; - $LAMEvbrMethodLookup[0x03] = 'vbr-old / vbr-rh'; - $LAMEvbrMethodLookup[0x04] = 'vbr-mtrh'; - $LAMEvbrMethodLookup[0x05] = 'vbr-new / vbr-mt'; - } - return (isset($LAMEvbrMethodLookup[$VBRmethodID]) ? $LAMEvbrMethodLookup[$VBRmethodID] : ''); -} - -function LAMEmiscStereoModeLookup($StereoModeID) { - static $LAMEmiscStereoModeLookup = array(); - if (empty($LAMEmiscStereoModeLookup)) { - $LAMEmiscStereoModeLookup[0] = 'mono'; - $LAMEmiscStereoModeLookup[1] = 'stereo'; - $LAMEmiscStereoModeLookup[2] = 'dual'; - $LAMEmiscStereoModeLookup[3] = 'joint'; - $LAMEmiscStereoModeLookup[4] = 'forced'; - $LAMEmiscStereoModeLookup[5] = 'auto'; - $LAMEmiscStereoModeLookup[6] = 'intensity'; - $LAMEmiscStereoModeLookup[7] = 'other'; - } - return (isset($LAMEmiscStereoModeLookup[$StereoModeID]) ? $LAMEmiscStereoModeLookup[$StereoModeID] : ''); -} - -function LAMEmiscSourceSampleFrequencyLookup($SourceSampleFrequencyID) { - static $LAMEmiscSourceSampleFrequencyLookup = array(); - if (empty($LAMEmiscSourceSampleFrequencyLookup)) { - $LAMEmiscSourceSampleFrequencyLookup[0] = '<= 32 kHz'; - $LAMEmiscSourceSampleFrequencyLookup[1] = '44.1 kHz'; - $LAMEmiscSourceSampleFrequencyLookup[2] = '48 kHz'; - $LAMEmiscSourceSampleFrequencyLookup[3] = '> 48kHz'; - } - return (isset($LAMEmiscSourceSampleFrequencyLookup[$SourceSampleFrequencyID]) ? $LAMEmiscSourceSampleFrequencyLookup[$SourceSampleFrequencyID] : ''); -} - -function LAMEsurroundInfoLookup($SurroundInfoID) { - static $LAMEsurroundInfoLookup = array(); - if (empty($LAMEsurroundInfoLookup)) { - $LAMEsurroundInfoLookup[0] = 'no surround info'; - $LAMEsurroundInfoLookup[1] = 'DPL encoding'; - $LAMEsurroundInfoLookup[2] = 'DPL2 encoding'; - $LAMEsurroundInfoLookup[3] = 'Ambisonic encoding'; - } - return (isset($LAMEsurroundInfoLookup[$SurroundInfoID]) ? $LAMEsurroundInfoLookup[$SurroundInfoID] : 'reserved'); -} - -?> \ No newline at end of file diff --git a/apps/media/getID3/demos/demo.mysql.php b/apps/media/getID3/demos/demo.mysql.php deleted file mode 100644 index c6b7c6b5effeb5cce5b5e09dea12e80e52466209..0000000000000000000000000000000000000000 --- a/apps/media/getID3/demos/demo.mysql.php +++ /dev/null @@ -1,2182 +0,0 @@ -<?php -///////////////////////////////////////////////////////////////// -/// getID3() by James Heinrich <info@getid3.org> // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// // -// /demo/demo.mysql.php - part of getID3() // -// Sample script for recursively scanning directories and // -// storing the results in a database // -// See readme.txt for more details // -// /// -///////////////////////////////////////////////////////////////// - - -//die('Due to a security issue, this demo has been disabled. It can be enabled by removing line 16 in demos/demo.mysql.php'); - - -// OPTIONS: -$getid3_demo_mysql_encoding = 'ISO-8859-1'; -$getid3_demo_mysql_md5_data = false; // All data hashes are by far the slowest part of scanning -$getid3_demo_mysql_md5_file = false; - -define('GETID3_DB_HOST', 'localhost'); -define('GETID3_DB_USER', 'root'); -define('GETID3_DB_PASS', 'password'); -define('GETID3_DB_DB', 'getid3'); -define('GETID3_DB_TABLE', 'files'); - -// CREATE DATABASE `getid3`; - -if (!@mysql_connect(GETID3_DB_HOST, GETID3_DB_USER, GETID3_DB_PASS)) { - die('Could not connect to MySQL host: <blockquote style="background-color: #FF9933; padding: 10px;">'.mysql_error().'</blockquote>'); -} -if (!@mysql_select_db(GETID3_DB_DB)) { - die('Could not select database: <blockquote style="background-color: #FF9933; padding: 10px;">'.mysql_error().'</blockquote>'); -} - -if (!@include_once('../getid3/getid3.php')) { - die('Cannot open '.realpath('../getid3/getid3.php')); -} -// Initialize getID3 engine -$getID3 = new getID3; -$getID3->setOption(array( - 'option_md5_data' => $getid3_demo_mysql_md5_data, - 'encoding' => $getid3_demo_mysql_encoding, -)); - - -function RemoveAccents($string) { - // Revised version by markstewardØhotmail*com - return strtr(strtr($string, 'ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ', 'SZszYAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy'), array('Þ' => 'TH', 'þ' => 'th', 'Ð' => 'DH', 'ð' => 'dh', 'ß' => 'ss', 'Œ' => 'OE', 'œ' => 'oe', 'Æ' => 'AE', 'æ' => 'ae', 'µ' => 'u')); -} - -function FixTextFields($text) { - $text = getid3_lib::SafeStripSlashes($text); - $text = htmlentities($text, ENT_QUOTES); - return $text; -} - -function BitrateColor($bitrate, $BitrateMaxScale=768) { - // $BitrateMaxScale is bitrate of maximum-quality color (bright green) - // below this is gradient, above is solid green - - $bitrate *= (256 / $BitrateMaxScale); // scale from 1-[768]kbps to 1-256 - $bitrate = round(min(max($bitrate, 1), 256)); - $bitrate--; // scale from 1-256kbps to 0-255kbps - - $Rcomponent = max(255 - ($bitrate * 2), 0); - $Gcomponent = max(($bitrate * 2) - 255, 0); - if ($bitrate > 127) { - $Bcomponent = max((255 - $bitrate) * 2, 0); - } else { - $Bcomponent = max($bitrate * 2, 0); - } - return str_pad(dechex($Rcomponent), 2, '0', STR_PAD_LEFT).str_pad(dechex($Gcomponent), 2, '0', STR_PAD_LEFT).str_pad(dechex($Bcomponent), 2, '0', STR_PAD_LEFT); -} - -function BitrateText($bitrate, $decimals=0) { - return '<span style="color: #'.BitrateColor($bitrate).'">'.number_format($bitrate, $decimals).' kbps</span>'; -} - -function fileextension($filename, $numextensions=1) { - if (strstr($filename, '.')) { - $reversedfilename = strrev($filename); - $offset = 0; - for ($i = 0; $i < $numextensions; $i++) { - $offset = strpos($reversedfilename, '.', $offset + 1); - if ($offset === false) { - return ''; - } - } - return strrev(substr($reversedfilename, 0, $offset)); - } - return ''; -} - -function RenameFileFromTo($from, $to, &$results) { - $success = true; - if ($from === $to) { - $results = '<span style="color: #FF0000;"><b>Source and Destination filenames identical</b><br>FAILED to rename'; - } elseif (!file_exists($from)) { - $results = '<span style="color: #FF0000;"><b>Source file does not exist</b><br>FAILED to rename'; - } elseif (file_exists($to) && (strtolower($from) !== strtolower($to))) { - $results = '<span style="color: #FF0000;"><b>Destination file already exists</b><br>FAILED to rename'; - } elseif (@rename($from, $to)) { - $SQLquery = 'DELETE FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`filename` = "'.mysql_escape_string($from).'")'; - safe_mysql_query($SQLquery); - $results = '<span style="color: #008000;">Successfully renamed'; - } else { - $results = '<br><span style="color: #FF0000;">FAILED to rename'; - $success = false; - } - $results .= ' from:<br><i>'.$from.'</i><br>to:<br><i>'.$to.'</i></span><hr>'; - return $success; -} - -if (!empty($_REQUEST['renamefilefrom']) && !empty($_REQUEST['renamefileto'])) { - - $results = ''; - RenameFileFromTo($_REQUEST['renamefilefrom'], $_REQUEST['renamefileto'], $results); - echo $results; - exit; - -} elseif (!empty($_REQUEST['m3ufilename'])) { - - header('Content-type: audio/x-mpegurl'); - echo '#EXTM3U'."\n"; - echo WindowsShareSlashTranslate($_REQUEST['m3ufilename'])."\n"; - exit; - -} elseif (!isset($_REQUEST['m3u']) && !isset($_REQUEST['m3uartist']) && !isset($_REQUEST['m3utitle'])) { - - echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'; - echo '<html><head><title>getID3() demo - /demo/mysql.php</title><style>BODY, TD, TH { font-family: sans-serif; font-size: 10pt; } A { text-decoration: none; } A:hover { text-decoration: underline; } A:visited { font-style: italic; }</style></head><body>'; - -} - - -function WindowsShareSlashTranslate($filename) { - if (substr($filename, 0, 2) == '//') { - return str_replace('/', '\\', $filename); - } - return $filename; -} - -function safe_mysql_query($SQLquery) { - $result = @mysql_query($SQLquery); - if (mysql_error()) { - die('<FONT COLOR="red">'.mysql_error().'</FONT><hr><TT>'.$SQLquery.'</TT>'); - } - return $result; -} - -function mysql_table_exists($tablename) { - return (bool) mysql_query('DESCRIBE '.$tablename); -} - -function AcceptableExtensions($fileformat, $audio_dataformat='', $video_dataformat='') { - static $AcceptableExtensionsAudio = array(); - if (empty($AcceptableExtensionsAudio)) { - $AcceptableExtensionsAudio['mp3']['mp3'] = array('mp3'); - $AcceptableExtensionsAudio['mp2']['mp2'] = array('mp2'); - $AcceptableExtensionsAudio['mp1']['mp1'] = array('mp1'); - $AcceptableExtensionsAudio['asf']['asf'] = array('asf'); - $AcceptableExtensionsAudio['asf']['wma'] = array('wma'); - $AcceptableExtensionsAudio['riff']['mp3'] = array('wav'); - $AcceptableExtensionsAudio['riff']['wav'] = array('wav'); - } - static $AcceptableExtensionsVideo = array(); - if (empty($AcceptableExtensionsVideo)) { - $AcceptableExtensionsVideo['mp3']['mp3'] = array('mp3'); - $AcceptableExtensionsVideo['mp2']['mp2'] = array('mp2'); - $AcceptableExtensionsVideo['mp1']['mp1'] = array('mp1'); - $AcceptableExtensionsVideo['asf']['asf'] = array('asf'); - $AcceptableExtensionsVideo['asf']['wmv'] = array('wmv'); - $AcceptableExtensionsVideo['gif']['gif'] = array('gif'); - $AcceptableExtensionsVideo['jpg']['jpg'] = array('jpg'); - $AcceptableExtensionsVideo['png']['png'] = array('png'); - $AcceptableExtensionsVideo['bmp']['bmp'] = array('bmp'); - } - if (!empty($video_dataformat)) { - return (isset($AcceptableExtensionsVideo[$fileformat][$video_dataformat]) ? $AcceptableExtensionsVideo[$fileformat][$video_dataformat] : array()); - } else { - return (isset($AcceptableExtensionsAudio[$fileformat][$audio_dataformat]) ? $AcceptableExtensionsAudio[$fileformat][$audio_dataformat] : array()); - } -} - - -if (!empty($_REQUEST['scan'])) { - if (mysql_table_exists(GETID3_DB_TABLE)) { - $SQLquery = 'DROP TABLE `'.GETID3_DB_TABLE.'`'; - safe_mysql_query($SQLquery); - } -} -if (!mysql_table_exists(GETID3_DB_TABLE)) { - $SQLquery = 'CREATE TABLE `'.GETID3_DB_TABLE.'` ('; - $SQLquery .= ' `ID` mediumint(8) unsigned NOT NULL auto_increment,'; - $SQLquery .= ' `filename` text NOT NULL,'; - $SQLquery .= ' `LastModified` int(11) NOT NULL default "0",'; - $SQLquery .= ' `md5_file` varchar(32) NOT NULL default "",'; - $SQLquery .= ' `md5_data` varchar(32) NOT NULL default "",'; - $SQLquery .= ' `md5_data_source` varchar(32) NOT NULL default "",'; - $SQLquery .= ' `filesize` int(10) unsigned NOT NULL default "0",'; - $SQLquery .= ' `fileformat` varchar(255) NOT NULL default "",'; - $SQLquery .= ' `audio_dataformat` varchar(255) NOT NULL default "",'; - $SQLquery .= ' `video_dataformat` varchar(255) NOT NULL default "",'; - $SQLquery .= ' `audio_bitrate` float NOT NULL default "0",'; - $SQLquery .= ' `video_bitrate` float NOT NULL default "0",'; - $SQLquery .= ' `playtime_seconds` varchar(255) NOT NULL default "",'; - $SQLquery .= ' `tags` varchar(255) NOT NULL default "",'; - $SQLquery .= ' `artist` varchar(255) NOT NULL default "",'; - $SQLquery .= ' `title` varchar(255) NOT NULL default "",'; - $SQLquery .= ' `remix` varchar(255) NOT NULL default "",'; - $SQLquery .= ' `album` varchar(255) NOT NULL default "",'; - $SQLquery .= ' `genre` varchar(255) NOT NULL default "",'; - $SQLquery .= ' `comment` text NOT NULL,'; - $SQLquery .= ' `track` varchar(7) NOT NULL default "",'; - $SQLquery .= ' `comments_all` text NOT NULL,'; - $SQLquery .= ' `comments_id3v2` text NOT NULL,'; - $SQLquery .= ' `comments_ape` text NOT NULL,'; - $SQLquery .= ' `comments_lyrics3` text NOT NULL,'; - $SQLquery .= ' `comments_id3v1` text NOT NULL,'; - $SQLquery .= ' `warning` text NOT NULL,'; - $SQLquery .= ' `error` text NOT NULL,'; - $SQLquery .= ' `track_volume` float NOT NULL default "0",'; - $SQLquery .= ' `encoder_options` varchar(255) NOT NULL default "",'; - $SQLquery .= ' `vbr_method` varchar(255) NOT NULL default "",'; - $SQLquery .= ' PRIMARY KEY (`ID`)'; - $SQLquery .= ') TYPE=MyISAM;'; - - safe_mysql_query($SQLquery); -} - -$ExistingTableFields = array(); -$result = mysql_query('DESCRIBE `'.GETID3_DB_TABLE.'`'); -while ($row = mysql_fetch_array($result)) { - $ExistingTableFields[$row['Field']] = $row; -} -if (!isset($ExistingTableFields['encoder_options'])) { // Added in 1.7.0b2 - echo '<b>adding field `encoder_options`</b><br>'; - mysql_query('ALTER TABLE `'.GETID3_DB_TABLE.'` ADD `encoder_options` VARCHAR(255) DEFAULT "" NOT NULL AFTER `error`'); - mysql_query('OPTIMIZE TABLE `'.GETID3_DB_TABLE.'`'); -} -if (isset($ExistingTableFields['track']) && ($ExistingTableFields['track']['Type'] != 'varchar(7)')) { // Changed in 1.7.0b2 - echo '<b>changing field `track` to VARCHAR(7)</b><br>'; - mysql_query('ALTER TABLE `'.GETID3_DB_TABLE.'` CHANGE `track` `track` VARCHAR(7) DEFAULT "" NOT NULL'); - mysql_query('OPTIMIZE TABLE `'.GETID3_DB_TABLE.'`'); -} -if (!isset($ExistingTableFields['track_volume'])) { // Added in 1.7.0b5 - echo '<H1><FONT COLOR="red">WARNING! You should erase your database and rescan everything because the comment storing has been changed since the last version</FONT></H1><hr>'; - echo '<b>adding field `track_volume`</b><br>'; - mysql_query('ALTER TABLE `'.GETID3_DB_TABLE.'` ADD `track_volume` FLOAT NOT NULL AFTER `error`'); - mysql_query('OPTIMIZE TABLE `'.GETID3_DB_TABLE.'`'); -} -if (!isset($ExistingTableFields['remix'])) { // Added in 1.7.3b1 - echo '<b>adding field `encoder_options`, `alternate_name`, `parody`</b><br>'; - mysql_query('ALTER TABLE `'.GETID3_DB_TABLE.'` ADD `remix` VARCHAR(255) DEFAULT "" NOT NULL AFTER `title`'); - mysql_query('ALTER TABLE `'.GETID3_DB_TABLE.'` ADD `alternate_name` VARCHAR(255) DEFAULT "" NOT NULL AFTER `track`'); - mysql_query('ALTER TABLE `'.GETID3_DB_TABLE.'` ADD `parody` VARCHAR(255) DEFAULT "" NOT NULL AFTER `alternate_name`'); - mysql_query('OPTIMIZE TABLE `'.GETID3_DB_TABLE.'`'); -} - - -function SynchronizeAllTags($filename, $synchronizefrom='all', $synchronizeto='A12', &$errors) { - global $getID3; - - set_time_limit(30); - - $ThisFileInfo = $getID3->analyze($filename); - getid3_lib::CopyTagsToComments($ThisFileInfo); - - if ($synchronizefrom == 'all') { - $SourceArray = @$ThisFileInfo['comments']; - } elseif (!empty($ThisFileInfo['tags'][$synchronizefrom])) { - $SourceArray = @$ThisFileInfo['tags'][$synchronizefrom]; - } else { - die('ERROR: $ThisFileInfo[tags]['.$synchronizefrom.'] does not exist'); - } - - $SQLquery = 'DELETE FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`filename` = "'.mysql_escape_string($filename).'")'; - safe_mysql_query($SQLquery); - - - $TagFormatsToWrite = array(); - if ((strpos($synchronizeto, '2') !== false) && ($synchronizefrom != 'id3v2')) { - $TagFormatsToWrite[] = 'id3v2.3'; - } - if ((strpos($synchronizeto, 'A') !== false) && ($synchronizefrom != 'ape')) { - $TagFormatsToWrite[] = 'ape'; - } - if ((strpos($synchronizeto, 'L') !== false) && ($synchronizefrom != 'lyrics3')) { - $TagFormatsToWrite[] = 'lyrics3'; - } - if ((strpos($synchronizeto, '1') !== false) && ($synchronizefrom != 'id3v1')) { - $TagFormatsToWrite[] = 'id3v1'; - } - - getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'write.php', __FILE__, true); - $tagwriter = new getid3_writetags; - $tagwriter->filename = $filename; - $tagwriter->tagformats = $TagFormatsToWrite; - $tagwriter->overwrite_tags = true; - $tagwriter->tag_encoding = $getID3->encoding; - $tagwriter->tag_data = $SourceArray; - - if ($tagwriter->WriteTags()) { - $errors = $tagwriter->errors; - return true; - } - $errors = $tagwriter->errors; - return false; -} - -$IgnoreNoTagFormats = array('', 'png', 'jpg', 'gif', 'bmp', 'swf', 'pdf', 'zip', 'rar', 'mid', 'mod', 'xm', 'it', 's3m'); - -if (!empty($_REQUEST['scan']) || !empty($_REQUEST['newscan']) || !empty($_REQUEST['rescanerrors'])) { - - $SQLquery = 'DELETE from `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`fileformat` = "")'; - safe_mysql_query($SQLquery); - - $FilesInDir = array(); - - if (!empty($_REQUEST['rescanerrors'])) { - - echo '<a href="'.htmlentities($_SERVER['PHP_SELF']).'">abort</a><hr>'; - - echo 'Re-scanning all media files already in database that had errors and/or warnings in last scan<hr>'; - - $SQLquery = 'SELECT `filename`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`error` <> "")'; - $SQLquery .= ' OR (`warning` <> "")'; - $SQLquery .= ' ORDER BY `filename` ASC'; - $result = safe_mysql_query($SQLquery); - while ($row = mysql_fetch_array($result)) { - - if (!file_exists($row['filename'])) { - echo '<b>File missing: '.$row['filename'].'</b><br>'; - $SQLquery = 'DELETE FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`filename` = "'.mysql_escape_string($row['filename']).'")'; - safe_mysql_query($SQLquery); - } else { - $FilesInDir[] = $row['filename']; - } - - } - - } elseif (!empty($_REQUEST['scan']) || !empty($_REQUEST['newscan'])) { - - echo '<a href="'.htmlentities($_SERVER['PHP_SELF']).'">abort</a><hr>'; - - echo 'Scanning all media files in <b>'.str_replace('\\', '/', realpath(!empty($_REQUEST['scan']) ? $_REQUEST['scan'] : $_REQUEST['newscan'])).'</b> (and subdirectories)<hr>'; - - $SQLquery = 'SELECT COUNT(*) AS `num`, `filename`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' GROUP BY `filename`'; - $SQLquery .= ' ORDER BY `num` DESC'; - $result = safe_mysql_query($SQLquery); - $DupesDeleted = 0; - while ($row = mysql_fetch_array($result)) { - set_time_limit(30); - if ($row['num'] <= 1) { - break; - } - $SQLquery = 'DELETE FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE `filename` LIKE "'.mysql_escape_string($row['filename']).'"'; - safe_mysql_query($SQLquery); - $DupesDeleted++; - } - if ($DupesDeleted > 0) { - echo 'Deleted <b>'.number_format($DupesDeleted).'</b> duplicate filenames<hr>'; - } - - if (!empty($_REQUEST['newscan'])) { - $AlreadyInDatabase = array(); - set_time_limit(60); - $SQLquery = 'SELECT `filename`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' ORDER BY `filename` ASC'; - $result = safe_mysql_query($SQLquery); - while ($row = mysql_fetch_array($result)) { - //$AlreadyInDatabase[] = strtolower($row['filename']); - $AlreadyInDatabase[] = $row['filename']; - } - } - - $DirectoriesToScan = array(@$_REQUEST['scan'] ? $_REQUEST['scan'] : $_REQUEST['newscan']); - $DirectoriesScanned = array(); - while (count($DirectoriesToScan) > 0) { - foreach ($DirectoriesToScan as $DirectoryKey => $startingdir) { - if ($dir = opendir($startingdir)) { - set_time_limit(30); - echo '<b>'.str_replace('\\', '/', $startingdir).'</b><br>'; - flush(); - while (($file = readdir($dir)) !== false) { - if (($file != '.') && ($file != '..')) { - $RealPathName = realpath($startingdir.'/'.$file); - if (is_dir($RealPathName)) { - if (!in_array($RealPathName, $DirectoriesScanned) && !in_array($RealPathName, $DirectoriesToScan)) { - $DirectoriesToScan[] = $RealPathName; - } - } else if (is_file($RealPathName)) { - if (!empty($_REQUEST['newscan'])) { - if (!in_array(str_replace('\\', '/', $RealPathName), $AlreadyInDatabase)) { - $FilesInDir[] = $RealPathName; - } - } elseif (!empty($_REQUEST['scan'])) { - $FilesInDir[] = $RealPathName; - } - } - } - } - closedir($dir); - } else { - echo '<FONT COLOR="RED">Failed to open directory "<b>'.$startingdir.'</b>"</FONT><br><br>'; - } - $DirectoriesScanned[] = $startingdir; - unset($DirectoriesToScan[$DirectoryKey]); - } - } - echo '<i>List of files to scan complete (added '.number_format(count($FilesInDir)).' files to scan)</i><hr>'; - flush(); - } - - $FilesInDir = array_unique($FilesInDir); - sort($FilesInDir); - - $starttime = time(); - $rowcounter = 0; - $totaltoprocess = count($FilesInDir); - - foreach ($FilesInDir as $filename) { - set_time_limit(300); - - echo '<br>'.date('H:i:s').' ['.number_format(++$rowcounter).' / '.number_format($totaltoprocess).'] '.str_replace('\\', '/', $filename); - - $ThisFileInfo = $getID3->analyze($filename); - getid3_lib::CopyTagsToComments($ThisFileInfo); - - if (file_exists($filename)) { - $ThisFileInfo['file_modified_time'] = filemtime($filename); - $ThisFileInfo['md5_file'] = ($getid3_demo_mysql_md5_file ? md5_file($filename) : ''); - } - - if (empty($ThisFileInfo['fileformat'])) { - - echo ' (<span style="color: #990099;">unknown file type</span>)'; - - } else { - - if (!empty($ThisFileInfo['error'])) { - echo ' (<span style="color: #FF0000;">errors</span>)'; - } elseif (!empty($ThisFileInfo['warning'])) { - echo ' (<span style="color: #FF9999;">warnings</span>)'; - } else { - echo ' (<span style="color: #009900;">OK</span>)'; - } - - $this_track_track = ''; - if (!empty($ThisFileInfo['comments']['track'])) { - foreach ($ThisFileInfo['comments']['track'] as $key => $value) { - if (strlen($value) > strlen($this_track_track)) { - $this_track_track = str_pad($value, 2, '0', STR_PAD_LEFT); - } - } - if (ereg('^([0-9]+)/([0-9]+)$', $this_track_track, $matches)) { - // change "1/5"->"01/05", "3/12"->"03/12", etc - $this_track_track = str_pad($matches[1], 2, '0', STR_PAD_LEFT).'/'.str_pad($matches[2], 2, '0', STR_PAD_LEFT); - } - } - - $this_track_remix = ''; - $this_track_title = ''; - if (!empty($ThisFileInfo['comments']['title'])) { - foreach ($ThisFileInfo['comments']['title'] as $possible_title) { - if (strlen($possible_title) > strlen($this_track_title)) { - $this_track_title = $possible_title; - } - } - } - - $ParenthesesPairs = array('()', '[]', '{}'); - foreach ($ParenthesesPairs as $pair) { - if (preg_match_all('/(.*) '.preg_quote($pair{0}).'(([^'.preg_quote($pair).']*[\- '.preg_quote($pair{0}).'])?(cut|dub|edit|version|live|reprise|[a-z]*mix))'.preg_quote($pair{1}).'/iU', $this_track_title, $matches)) { - $this_track_title = $matches[1][0]; - $this_track_remix = implode("\t", $matches[2]); - } - } - - - - if (!empty($_REQUEST['rescanerrors'])) { - - $SQLquery = 'UPDATE `'.GETID3_DB_TABLE.'` SET '; - $SQLquery .= '`LastModified` = "'.mysql_escape_string(@$ThisFileInfo['file_modified_time']).'", '; - $SQLquery .= '`md5_file` = "'.mysql_escape_string(@$ThisFileInfo['md5_file']).'", '; - $SQLquery .= '`md5_data` = "'.mysql_escape_string(@$ThisFileInfo['md5_data']).'", '; - $SQLquery .= '`md5_data_source` = "'.mysql_escape_string(@$ThisFileInfo['md5_data_source']).'", '; - $SQLquery .= '`filesize` = "'.mysql_escape_string(@$ThisFileInfo['filesize']).'", '; - $SQLquery .= '`fileformat` = "'.mysql_escape_string(@$ThisFileInfo['fileformat']).'", '; - $SQLquery .= '`audio_dataformat` = "'.mysql_escape_string(@$ThisFileInfo['audio']['dataformat']).'", '; - $SQLquery .= '`video_dataformat` = "'.mysql_escape_string(@$ThisFileInfo['video']['dataformat']).'", '; - $SQLquery .= '`audio_bitrate` = "'.mysql_escape_string(floatval(@$ThisFileInfo['audio']['bitrate'])).'", '; - $SQLquery .= '`video_bitrate` = "'.mysql_escape_string(floatval(@$ThisFileInfo['video']['bitrate'])).'", '; - $SQLquery .= '`playtime_seconds` = "'.mysql_escape_string(floatval(@$ThisFileInfo['playtime_seconds'])).'", '; - $SQLquery .= '`tags` = "'.mysql_escape_string(@implode("\t", @array_keys(@$ThisFileInfo['tags']))).'", '; - $SQLquery .= '`artist` = "'.mysql_escape_string(@implode("\t", @$ThisFileInfo['comments']['artist'])).'", '; - - $SQLquery .= '`title` = "'.mysql_escape_string($this_track_title).'", '; - $SQLquery .= '`remix` = "'.mysql_escape_string($this_track_remix).'", '; - - $SQLquery .= '`album` = "'.mysql_escape_string(@implode("\t", @$ThisFileInfo['comments']['album'])).'", '; - $SQLquery .= '`genre` = "'.mysql_escape_string(@implode("\t", @$ThisFileInfo['comments']['genre'])).'", '; - $SQLquery .= '`comment` = "'.mysql_escape_string(@implode("\t", @$ThisFileInfo['comments']['comment'])).'", '; - - $SQLquery .= '`track` = "'.mysql_escape_string($this_track_track).'", '; - - $SQLquery .= '`comments_all` = "'.mysql_escape_string(@serialize(@$ThisFileInfo['comments'])).'", '; - $SQLquery .= '`comments_id3v2` = "'.mysql_escape_string(@serialize(@$ThisFileInfo['tags']['id3v2'])).'", '; - $SQLquery .= '`comments_ape` = "'.mysql_escape_string(@serialize(@$ThisFileInfo['tags']['ape'])).'", '; - $SQLquery .= '`comments_lyrics3` = "'.mysql_escape_string(@serialize(@$ThisFileInfo['tags']['lyrics3'])).'", '; - $SQLquery .= '`comments_id3v1` = "'.mysql_escape_string(@serialize(@$ThisFileInfo['tags']['id3v1'])).'", '; - $SQLquery .= '`warning` = "'.mysql_escape_string(@implode("\t", @$ThisFileInfo['warning'])).'", '; - $SQLquery .= '`error` = "'.mysql_escape_string(@implode("\t", @$ThisFileInfo['error'])).'", '; - $SQLquery .= '`encoder_options` = "'.mysql_escape_string(trim(@$ThisFileInfo['audio']['encoder'].' '.@$ThisFileInfo['audio']['encoder_options'])).'", '; - $SQLquery .= '`vbr_method` = "'.mysql_escape_string(@$ThisFileInfo['mpeg']['audio']['VBR_method']).'", '; - $SQLquery .= '`track_volume` = "'.mysql_escape_string(floatval(@$ThisFileInfo['replay_gain']['track']['volume'])).'" '; - $SQLquery .= 'WHERE (`filename` = "'.mysql_escape_string(@$ThisFileInfo['filenamepath']).'")'; - - } elseif (!empty($_REQUEST['scan']) || !empty($_REQUEST['newscan'])) { - - $SQLquery = 'INSERT INTO `'.GETID3_DB_TABLE.'` (`filename`, `LastModified`, `md5_file`, `md5_data`, `md5_data_source`, `filesize`, `fileformat`, `audio_dataformat`, `video_dataformat`, `audio_bitrate`, `video_bitrate`, `playtime_seconds`, `tags`, `artist`, `title`, `remix`, `album`, `genre`, `comment`, `track`, `comments_all`, `comments_id3v2`, `comments_ape`, `comments_lyrics3`, `comments_id3v1`, `warning`, `error`, `encoder_options`, `vbr_method`, `track_volume`) VALUES ('; - $SQLquery .= '"'.mysql_escape_string(@$ThisFileInfo['filenamepath']).'", '; - $SQLquery .= '"'.mysql_escape_string(@$ThisFileInfo['file_modified_time']).'", '; - $SQLquery .= '"'.mysql_escape_string(@$ThisFileInfo['md5_file']).'", '; - $SQLquery .= '"'.mysql_escape_string(@$ThisFileInfo['md5_data']).'", '; - $SQLquery .= '"'.mysql_escape_string(@$ThisFileInfo['md5_data_source']).'", '; - $SQLquery .= '"'.mysql_escape_string(@$ThisFileInfo['filesize']).'", '; - $SQLquery .= '"'.mysql_escape_string(@$ThisFileInfo['fileformat']).'", '; - $SQLquery .= '"'.mysql_escape_string(@$ThisFileInfo['audio']['dataformat']).'", '; - $SQLquery .= '"'.mysql_escape_string(@$ThisFileInfo['video']['dataformat']).'", '; - $SQLquery .= '"'.mysql_escape_string(floatval(@$ThisFileInfo['audio']['bitrate'])).'", '; - $SQLquery .= '"'.mysql_escape_string(floatval(@$ThisFileInfo['video']['bitrate'])).'", '; - $SQLquery .= '"'.mysql_escape_string(floatval(@$ThisFileInfo['playtime_seconds'])).'", '; - $SQLquery .= '"'.mysql_escape_string(@implode("\t", @array_keys(@$ThisFileInfo['tags']))).'", '; - $SQLquery .= '"'.mysql_escape_string(@implode("\t", @$ThisFileInfo['comments']['artist'])).'", '; - - $SQLquery .= '"'.mysql_escape_string($this_track_title).'", '; - $SQLquery .= '"'.mysql_escape_string($this_track_remix).'", '; - - $SQLquery .= '"'.mysql_escape_string(@implode("\t", @$ThisFileInfo['comments']['album'])).'", '; - $SQLquery .= '"'.mysql_escape_string(@implode("\t", @$ThisFileInfo['comments']['genre'])).'", '; - $SQLquery .= '"'.mysql_escape_string(@implode("\t", @$ThisFileInfo['comments']['comment'])).'", '; - - $SQLquery .= '"'.mysql_escape_string($this_track_track).'", '; - - $SQLquery .= '"'.mysql_escape_string(@serialize(@$ThisFileInfo['comments'])).'", '; - $SQLquery .= '"'.mysql_escape_string(@serialize(@$ThisFileInfo['tags']['id3v2'])).'", '; - $SQLquery .= '"'.mysql_escape_string(@serialize(@$ThisFileInfo['tags']['ape'])).'", '; - $SQLquery .= '"'.mysql_escape_string(@serialize(@$ThisFileInfo['tags']['lyrics3'])).'", '; - $SQLquery .= '"'.mysql_escape_string(@serialize(@$ThisFileInfo['tags']['id3v1'])).'", '; - $SQLquery .= '"'.mysql_escape_string(@implode("\t", @$ThisFileInfo['warning'])).'", '; - $SQLquery .= '"'.mysql_escape_string(@implode("\t", @$ThisFileInfo['error'])).'", '; - $SQLquery .= '"'.mysql_escape_string(trim(@$ThisFileInfo['audio']['encoder'].' '.@$ThisFileInfo['audio']['encoder_options'])).'", '; - $SQLquery .= '"'.mysql_escape_string(!empty($ThisFileInfo['mpeg']['audio']['LAME']) ? 'LAME' : @$ThisFileInfo['mpeg']['audio']['VBR_method']).'", '; - $SQLquery .= '"'.mysql_escape_string(floatval(@$ThisFileInfo['replay_gain']['track']['volume'])).'")'; - - } - flush(); - safe_mysql_query($SQLquery); - } - - } - - $SQLquery = 'OPTIMIZE TABLE `'.GETID3_DB_TABLE.'`'; - safe_mysql_query($SQLquery); - - echo '<hr>Done scanning!<hr>'; - -} elseif (!empty($_REQUEST['missingtrackvolume'])) { - - $MissingTrackVolumeFilesScanned = 0; - $MissingTrackVolumeFilesAdjusted = 0; - $MissingTrackVolumeFilesDeleted = 0; - $SQLquery = 'SELECT `filename`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`track_volume` = "0")'; - $SQLquery .= ' AND (`audio_bitrate` > "0")'; - $result = safe_mysql_query($SQLquery); - echo 'Scanning <span ID="missingtrackvolumeNowScanning">0</span> / '.number_format(mysql_num_rows($result)).' files for track volume information:<hr>'; - while ($row = mysql_fetch_array($result)) { - set_time_limit(30); - echo '<script type="text/javascript">if (document.getElementById("missingtrackvolumeNowScanning")) document.getElementById("missingtrackvolumeNowScanning").innerHTML = "'.number_format($MissingTrackVolumeFilesScanned++).'";</script>. '; - flush(); - if (file_exists($row['filename'])) { - - $ThisFileInfo = $getID3->analyze($row['filename']); - if (!empty($ThisFileInfo['replay_gain']['track']['volume'])) { - $MissingTrackVolumeFilesAdjusted++; - $SQLquery = 'UPDATE `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' SET `track_volume` = "'.$ThisFileInfo['replay_gain']['track']['volume'].'"'; - $SQLquery .= ' WHERE (`filename` = "'.mysql_escape_string($row['filename']).'")'; - safe_mysql_query($SQLquery); - } - - } else { - - $MissingTrackVolumeFilesDeleted++; - $SQLquery = 'DELETE FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`filename` = "'.mysql_escape_string($row['filename']).'")'; - safe_mysql_query($SQLquery); - - } - } - echo '<hr>Scanned '.number_format($MissingTrackVolumeFilesScanned).' files with no track volume information.<br>'; - echo 'Found track volume information for '.number_format($MissingTrackVolumeFilesAdjusted).' of them (could not find info for '.number_format($MissingTrackVolumeFilesScanned - $MissingTrackVolumeFilesAdjusted).' files; deleted '.number_format($MissingTrackVolumeFilesDeleted).' records of missing files)<hr>'; - -} elseif (!empty($_REQUEST['deadfilescheck'])) { - - $SQLquery = 'SELECT COUNT(*) AS `num`, `filename`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' GROUP BY `filename`'; - $SQLquery .= ' ORDER BY `num` DESC'; - $result = safe_mysql_query($SQLquery); - $DupesDeleted = 0; - while ($row = mysql_fetch_array($result)) { - set_time_limit(30); - if ($row['num'] <= 1) { - break; - } - echo '<br>'.FixTextFields($row['filename']).' (<font color="#FF9999">duplicate</font>)'; - $SQLquery = 'DELETE FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE `filename` LIKE "'.mysql_escape_string($row['filename']).'"'; - safe_mysql_query($SQLquery); - $DupesDeleted++; - } - if ($DupesDeleted > 0) { - echo '<hr>Deleted <b>'.number_format($DupesDeleted).'</b> duplicate filenames<hr>'; - } - - $SQLquery = 'SELECT `filename`, `filesize`, `LastModified`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' ORDER BY `filename` ASC'; - $result = safe_mysql_query($SQLquery); - $totalchecked = 0; - $totalremoved = 0; - $previousdir = ''; - while ($row = mysql_fetch_array($result)) { - $totalchecked++; - set_time_limit(30); - $reason = ''; - if (!file_exists($row['filename'])) { - $reason = 'deleted'; - } elseif (filesize($row['filename']) != $row['filesize']) { - $reason = 'filesize changed'; - } elseif (filemtime($row['filename']) != $row['LastModified']) { - if (abs(filemtime($row['filename']) - $row['LastModified']) != 3600) { - // off by exactly one hour == daylight savings time - $reason = 'last-modified time changed'; - } - } - - $thisdir = dirname($row['filename']); - if ($reason) { - - $totalremoved++; - echo '<br>'.FixTextFields($row['filename']).' (<font color="#FF9999">'.$reason.'</font>)'; - flush(); - $SQLquery = 'DELETE FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`filename` = "'.mysql_escape_string($row['filename']).'")'; - safe_mysql_query($SQLquery); - - } elseif ($thisdir != $previousdir) { - - echo '. '; - flush(); - - } - $previousdir = $thisdir; - } - - echo '<hr><b>'.number_format($totalremoved).' of '.number_format($totalchecked).' files in database no longer exist, or have been altered since last scan. Removed from database.</b><hr>'; - -} elseif (!empty($_REQUEST['encodedbydistribution'])) { - - if (!empty($_REQUEST['m3u'])) { - - header('Content-type: audio/x-mpegurl'); - echo '#EXTM3U'."\n"; - - $SQLquery = 'SELECT `filename`, `comments_id3v2`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`encoder_options` = "'.mysql_escape_string($_REQUEST['encodedbydistribution']).'")'; - $result = mysql_query($SQLquery); - $NonBlankEncodedBy = ''; - $BlankEncodedBy = ''; - while ($row = mysql_fetch_array($result)) { - set_time_limit(30); - $CommentArray = unserialize($row['comments_id3v2']); - if (isset($CommentArray['encoded_by'][0])) { - $NonBlankEncodedBy .= WindowsShareSlashTranslate($row['filename'])."\n"; - } else { - $BlankEncodedBy .= WindowsShareSlashTranslate($row['filename'])."\n"; - } - } - echo $NonBlankEncodedBy; - echo $BlankEncodedBy; - exit; - - } elseif (!empty($_REQUEST['showfiles'])) { - - echo '<a href="'.htmlentities($_SERVER['PHP_SELF'].'?encodedbydistribution='.urlencode('%')).'">show all</a><br>'; - echo '<table border="1">'; - - $SQLquery = 'SELECT `filename`, `comments_id3v2`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $result = mysql_query($SQLquery); - while ($row = mysql_fetch_array($result)) { - set_time_limit(30); - $CommentArray = unserialize($row['comments_id3v2']); - if (($_REQUEST['encodedbydistribution'] == '%') || (!empty($CommentArray['encoded_by'][0]) && ($_REQUEST['encodedbydistribution'] == $CommentArray['encoded_by'][0]))) { - echo '<tr><td><a href="'.htmlentities($_SERVER['PHP_SELF'].'?m3ufilename='.urlencode($row['filename'])).'">m3u</a></td>'; - echo '<td><a href="'.htmlentities('demo.browse.php?filename='.rawurlencode($row['filename'])).'">'.FixTextFields($row['filename']).'</a></td></tr>'; - } - } - echo '</table>'; - - } else { - - $SQLquery = 'SELECT `encoder_options`, `comments_id3v2`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' ORDER BY (`encoder_options` LIKE "LAME%") DESC, (`encoder_options` LIKE "CBR%") DESC'; - $result = mysql_query($SQLquery); - $EncodedBy = array(); - while ($row = mysql_fetch_array($result)) { - set_time_limit(30); - $CommentArray = unserialize($row['comments_id3v2']); - if (isset($EncodedBy[$row['encoder_options']][@$CommentArray['encoded_by'][0]])) { - $EncodedBy[$row['encoder_options']][@$CommentArray['encoded_by'][0]]++; - } else { - $EncodedBy[$row['encoder_options']][@$CommentArray['encoded_by'][0]] = 1; - } - } - echo '<a href="'.htmlentities($_SERVER['PHP_SELF'].'?encodedbydistribution='.urlencode('%').'&m3u=1').'">.m3u version</a><br>'; - echo '<table border="1"><tr><th>m3u</th><th>Encoder Options</th><th>Encoded By (ID3v2)</th></tr>'; - foreach ($EncodedBy as $key => $value) { - echo '<tr><TD VALIGN="TOP"><a href="'.htmlentities($_SERVER['PHP_SELF'].'?encodedbydistribution='.urlencode($key).'&showfiles=1&m3u=1').'">m3u</a></td>'; - echo '<TD VALIGN="TOP"><b>'.$key.'</b></td>'; - echo '<td><table border="0" WIDTH="100%">'; - arsort($value); - foreach ($value as $string => $count) { - echo '<tr><TD ALIGN="RIGHT" WIDTH="50"><i>'.number_format($count).'</i></td><td> </td>'; - echo '<td><a href="'.htmlentities($_SERVER['PHP_SELF'].'?encodedbydistribution='.urlencode($string).'&showfiles=1').'">'.$string.'</a></td></tr>'; - } - echo '</table></td></tr>'; - } - echo '</table>'; - - } - -} elseif (!empty($_REQUEST['audiobitrates'])) { - - getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.mp3.php', __FILE__, true); - $BitrateDistribution = array(); - $SQLquery = 'SELECT ROUND(audio_bitrate / 1000) AS `RoundBitrate`, COUNT(*) AS `num`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`audio_bitrate` > 0)'; - $SQLquery .= ' GROUP BY `RoundBitrate`'; - $result = safe_mysql_query($SQLquery); - while ($row = mysql_fetch_array($result)) { - @$BitrateDistribution[getid3_mp3::ClosestStandardMP3Bitrate($row['RoundBitrate'] * 1000)] += $row['num']; // safe_inc - } - - echo '<table border="1" cellspacing="0" cellpadding="3">'; - echo '<tr><th>Bitrate</th><th>Count</th></tr>'; - foreach ($BitrateDistribution as $Bitrate => $Count) { - echo '<tr>'; - echo '<TD ALIGN="RIGHT">'.round($Bitrate / 1000).' kbps</td>'; - echo '<TD ALIGN="RIGHT">'.number_format($Count).'</td>'; - echo '</tr>'; - } - echo '</table>'; - - -} elseif (!empty($_REQUEST['emptygenres'])) { - - $SQLquery = 'SELECT `fileformat`, `filename`, `genre`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`genre` = "")'; - $SQLquery .= ' OR (`genre` = "Unknown")'; - $SQLquery .= ' OR (`genre` = "Other")'; - $SQLquery .= ' ORDER BY `filename` ASC'; - $result = safe_mysql_query($SQLquery); - - if (!empty($_REQUEST['m3u'])) { - - header('Content-type: audio/x-mpegurl'); - echo '#EXTM3U'."\n"; - while ($row = mysql_fetch_array($result)) { - if (!in_array($row['fileformat'], $IgnoreNoTagFormats)) { - echo WindowsShareSlashTranslate($row['filename'])."\n"; - } - } - exit; - - } else { - - echo '<a href="'.htmlentities($_SERVER['PHP_SELF'].'?emptygenres='.urlencode($_REQUEST['emptygenres']).'&m3u=1').'">.m3u version</a><br>'; - $EmptyGenreCounter = 0; - echo '<table border="1" cellspacing="0" cellpadding="3">'; - echo '<tr><th>m3u</th><th>filename</th></tr>'; - while ($row = mysql_fetch_array($result)) { - if (!in_array($row['fileformat'], $IgnoreNoTagFormats)) { - $EmptyGenreCounter++; - echo '<tr>'; - echo '<td><a href="'.htmlentities($_SERVER['PHP_SELF'].'?m3ufilename='.urlencode($row['filename'])).'">m3u</a></td>'; - echo '<td><a href="'.htmlentities('demo.browse.php?filename='.rawurlencode($row['filename'])).'">'.FixTextFields($row['filename']).'</a></td>'; - echo '</tr>'; - } - } - echo '</table>'; - echo '<b>'.number_format($EmptyGenreCounter).'</b> files with empty genres'; - - } - -} elseif (!empty($_REQUEST['nonemptycomments'])) { - - $SQLquery = 'SELECT `filename`, `comment`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`comment` <> "")'; - $SQLquery .= ' ORDER BY `comment` ASC'; - $result = safe_mysql_query($SQLquery); - - if (!empty($_REQUEST['m3u'])) { - - header('Content-type: audio/x-mpegurl'); - echo '#EXTM3U'."\n"; - while ($row = mysql_fetch_array($result)) { - echo WindowsShareSlashTranslate($row['filename'])."\n"; - } - exit; - - } else { - - $NonEmptyCommentsCounter = 0; - echo '<a href="'.htmlentities($_SERVER['PHP_SELF'].'?nonemptycomments='.urlencode($_REQUEST['nonemptycomments']).'&m3u=1').'">.m3u version</a><br>'; - echo '<table border="1" cellspacing="0" cellpadding="3">'; - echo '<tr><th>m3u</th><th>filename</th><th>comments</th></tr>'; - while ($row = mysql_fetch_array($result)) { - $NonEmptyCommentsCounter++; - echo '<tr>'; - echo '<td><a href="'.htmlentities($_SERVER['PHP_SELF'].'?m3ufilename='.urlencode($row['filename'])).'">m3u</a></td>'; - echo '<td><a href="'.htmlentities('demo.browse.php?filename='.rawurlencode($row['filename'])).'">'.FixTextFields($row['filename']).'</a></td>'; - if (strlen(trim($row['comment'])) > 0) { - echo '<td>'.FixTextFields($row['comment']).'</td>'; - } else { - echo '<td><i>space</i></td>'; - } - echo '</tr>'; - } - echo '</table>'; - echo '<b>'.number_format($NonEmptyCommentsCounter).'</b> files with non-empty comments'; - - } - -} elseif (!empty($_REQUEST['trackzero'])) { - - $SQLquery = 'SELECT `filename`, `track`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`track` <> "")'; - $SQLquery .= ' AND ((`track` < "1")'; - $SQLquery .= ' OR (`track` > "99"))'; - $SQLquery .= ' ORDER BY `filename` ASC'; - $result = safe_mysql_query($SQLquery); - - if (!empty($_REQUEST['m3u'])) { - - header('Content-type: audio/x-mpegurl'); - echo '#EXTM3U'."\n"; - while ($row = mysql_fetch_array($result)) { - if ((strlen($row['track']) > 0) && ($row['track'] < 1) || ($row['track'] > 99)) { - echo WindowsShareSlashTranslate($row['filename'])."\n"; - } - } - exit; - - } else { - - echo '<a href="'.htmlentities($_SERVER['PHP_SELF'].'?trackzero='.urlencode($_REQUEST['trackzero']).'&m3u=1').'">.m3u version</a><br>'; - $TrackZeroCounter = 0; - echo '<table border="1" cellspacing="0" cellpadding="3">'; - echo '<tr><th>m3u</th><th>filename</th><th>track</th></tr>'; - while ($row = mysql_fetch_array($result)) { - if ((strlen($row['track']) > 0) && ($row['track'] < 1) || ($row['track'] > 99)) { - $TrackZeroCounter++; - echo '<tr>'; - echo '<td><a href="'.htmlentities($_SERVER['PHP_SELF'].'?m3ufilename='.urlencode($row['filename'])).'">m3u</a></td>'; - echo '<td><a href="'.htmlentities('demo.browse.php?filename='.rawurlencode($row['filename'])).'">'.FixTextFields($row['filename']).'</a></td>'; - echo '<td>'.FixTextFields($row['track']).'</td>'; - echo '</tr>'; - } - } - echo '</table>'; - echo '<b>'.number_format($TrackZeroCounter).'</b> files with track "zero"'; - - } - - -} elseif (!empty($_REQUEST['titlefeat'])) { - - $SQLquery = 'SELECT `filename`, `title`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`title` LIKE "%feat.%")'; - $SQLquery .= ' ORDER BY `filename` ASC'; - $result = safe_mysql_query($SQLquery); - - if (!empty($_REQUEST['m3u'])) { - - header('Content-type: audio/x-mpegurl'); - echo '#EXTM3U'."\n"; - while ($row = mysql_fetch_array($result)) { - echo WindowsShareSlashTranslate($row['filename'])."\n"; - } - exit; - - } else { - - echo '<b>'.number_format(mysql_num_rows($result)).'</b> files with "feat." in the title (instead of the artist)<br><br>'; - echo '<a href="'.htmlentities($_SERVER['PHP_SELF'].'?titlefeat='.urlencode($_REQUEST['titlefeat']).'&m3u=1').'">.m3u version</a><br>'; - echo '<table border="1" cellspacing="0" cellpadding="3">'; - echo '<tr><th>m3u</th><th>filename</th><th>title</th></tr>'; - while ($row = mysql_fetch_array($result)) { - echo '<tr>'; - echo '<td><a href="'.htmlentities($_SERVER['PHP_SELF'].'?m3ufilename='.urlencode($row['filename'])).'">m3u</a></td>'; - echo '<td><a href="'.htmlentities('demo.browse.php?filename='.rawurlencode($row['filename'])).'">'.FixTextFields($row['filename']).'</a></td>'; - echo '<td>'.eregi_replace('(feat\. .*)', '<b>\\1</b>', FixTextFields($row['title'])).'</td>'; - echo '</tr>'; - } - echo '</table>'; - - } - - -} elseif (!empty($_REQUEST['tracknoalbum'])) { - - $SQLquery = 'SELECT `filename`, `track`, `album`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`track` <> "")'; - $SQLquery .= ' AND (`album` = "")'; - $SQLquery .= ' ORDER BY `filename` ASC'; - $result = safe_mysql_query($SQLquery); - - if (!empty($_REQUEST['m3u'])) { - - header('Content-type: audio/x-mpegurl'); - echo '#EXTM3U'."\n"; - while ($row = mysql_fetch_array($result)) { - echo WindowsShareSlashTranslate($row['filename'])."\n"; - } - exit; - - } else { - - echo '<b>'.number_format(mysql_num_rows($result)).'</b> files with a track number, but no album<br><br>'; - echo '<a href="'.htmlentities($_SERVER['PHP_SELF'].'?tracknoalbum='.urlencode($_REQUEST['tracknoalbum']).'&m3u=1').'">.m3u version</a><br>'; - echo '<table border="1" cellspacing="0" cellpadding="3">'; - echo '<tr><th>m3u</th><th>filename</th><th>track</th><th>album</th></tr>'; - while ($row = mysql_fetch_array($result)) { - echo '<tr>'; - echo '<td><a href="'.htmlentities($_SERVER['PHP_SELF'].'?m3ufilename='.urlencode($row['filename'])).'">m3u</a></td>'; - echo '<td><a href="'.htmlentities('demo.browse.php?filename='.rawurlencode($row['filename'])).'">'.FixTextFields($row['filename']).'</a></td>'; - echo '<td>'.FixTextFields($row['track']).'</td>'; - echo '<td>'.FixTextFields($row['album']).'</td>'; - echo '</tr>'; - } - echo '</table>'; - - } - - -} elseif (!empty($_REQUEST['synchronizetagsfrom']) && !empty($_REQUEST['filename'])) { - - echo 'Applying new tags from <b>'.$_REQUEST['synchronizetagsfrom'].'</b> in <b>'.FixTextFields($_REQUEST['filename']).'</b><ul>'; - $errors = array(); - if (SynchronizeAllTags($_REQUEST['filename'], $_REQUEST['synchronizetagsfrom'], 'A12', $errors)) { - echo '<li>Sucessfully wrote tags</li>'; - } else { - echo '<li>Tag writing had errors: <ul><li>'.implode('</li><li>', $errors).'</li></ul></li>'; - } - echo '</ul>'; - - -} elseif (!empty($_REQUEST['unsynchronizedtags'])) { - - $NotOKfiles = 0; - $Autofixedfiles = 0; - $FieldsToCompare = array('title', 'artist', 'album', 'year', 'genre', 'comment', 'track'); - $TagsToCompare = array('id3v2'=>false, 'ape'=>false, 'lyrics3'=>false, 'id3v1'=>false); - $ID3v1FieldLengths = array('title'=>30, 'artist'=>30, 'album'=>30, 'year'=>4, 'genre'=>99, 'comment'=>28); - if (strpos($_REQUEST['unsynchronizedtags'], '2') !== false) { - $TagsToCompare['id3v2'] = true; - } - if (strpos($_REQUEST['unsynchronizedtags'], 'A') !== false) { - $TagsToCompare['ape'] = true; - } - if (strpos($_REQUEST['unsynchronizedtags'], 'L') !== false) { - $TagsToCompare['lyrics3'] = true; - } - if (strpos($_REQUEST['unsynchronizedtags'], '1') !== false) { - $TagsToCompare['id3v1'] = true; - } - - echo '<a href="'.htmlentities($_SERVER['PHP_SELF'].'?unsynchronizedtags='.urlencode($_REQUEST['unsynchronizedtags']).'&autofix=1').'">Auto-fix empty tags</a><br><br>'; - echo '<div id="Autofixing"></div>'; - echo '<table border="1" cellspacing="0" cellpadding="3">'; - echo '<tr>'; - echo '<th>View</th>'; - echo '<th>Filename</th>'; - echo '<th>Combined</th>'; - if ($TagsToCompare['id3v2']) { - echo '<th><a href="'.htmlentities($_SERVER['PHP_SELF'].'?unsynchronizedtags='.urlencode($_REQUEST['unsynchronizedtags']).'&autofix=1&autofixforcesource=id3v2&autofixforcedest=A1').'" title="Auto-fix all tags to match ID3v2 contents" onClick="return confirm(\'Are you SURE you want to synchronize all tags to match ID3v2?\');">ID3v2</a></th>'; - } - if ($TagsToCompare['ape']) { - echo '<th><a href="'.htmlentities($_SERVER['PHP_SELF'].'?unsynchronizedtags='.urlencode($_REQUEST['unsynchronizedtags']).'&autofix=1&autofixforcesource=ape&autofixforcedest=21').'" title="Auto-fix all tags to match APE contents" onClick="return confirm(\'Are you SURE you want to synchronize all tags to match APE?\');">APE</a></th>'; - } - if ($TagsToCompare['lyrics3']) { - echo '<th>Lyrics3</th>'; - } - if ($TagsToCompare['id3v1']) { - echo '<th><a href="'.htmlentities($_SERVER['PHP_SELF'].'?unsynchronizedtags='.urlencode($_REQUEST['unsynchronizedtags']).'&autofix=1&autofixforcesource=ape&autofixforcedest=2A').'" title="Auto-fix all tags to match ID3v1 contents" onClick="return confirm(\'Are you SURE you want to synchronize all tags to match ID3v1?\');">ID3v1</a></th>'; - } - echo '</tr>'; - - $SQLquery = 'SELECT `filename`, `comments_all`, `comments_id3v2`, `comments_ape`, `comments_lyrics3`, `comments_id3v1`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`fileformat` = "mp3")'; - $SQLquery .= ' ORDER BY `filename` ASC'; - $result = safe_mysql_query($SQLquery); - $lastdir = ''; - while ($row = mysql_fetch_array($result)) { - set_time_limit(30); - if ($lastdir != dirname($row['filename'])) { - echo '<script type="text/javascript">if (document.getElementById("Autofixing")) document.getElementById("Autofixing").innerHTML = "'.htmlentities($lastdir, ENT_QUOTES).'";</script>'; - flush(); - } - - $FileOK = true; - $Mismatched = array('id3v2'=>false, 'ape'=>false, 'lyrics3'=>false, 'id3v1'=>false); - $SemiMatched = array('id3v2'=>false, 'ape'=>false, 'lyrics3'=>false, 'id3v1'=>false); - $EmptyTags = array('id3v2'=>true, 'ape'=>true, 'lyrics3'=>true, 'id3v1'=>true); - - $Comments['all'] = @unserialize($row['comments_all']); - $Comments['id3v2'] = @unserialize($row['comments_id3v2']); - $Comments['ape'] = @unserialize($row['comments_ape']); - $Comments['lyrics3'] = @unserialize($row['comments_lyrics3']); - $Comments['id3v1'] = @unserialize($row['comments_id3v1']); - - if (isset($Comments['ape']['tracknumber'])) { - $Comments['ape']['track'] = $Comments['ape']['tracknumber']; - unset($Comments['ape']['tracknumber']); - } - if (isset($Comments['ape']['track_number'])) { - $Comments['ape']['track'] = $Comments['ape']['track_number']; - unset($Comments['ape']['track_number']); - } - if (isset($Comments['id3v2']['track_number'])) { - $Comments['id3v2']['track'] = $Comments['id3v2']['track_number']; - unset($Comments['id3v2']['track_number']); - } - if (!empty($Comments['all']['track'])) { - $besttrack = ''; - foreach ($Comments['all']['track'] as $key => $value) { - if (strlen($value) > strlen($besttrack)) { - $besttrack = $value; - } - } - $Comments['all']['track'] = array(0=>$besttrack); - } - - $ThisLine = '<tr>'; - $ThisLine .= '<td><a href="'.htmlentities('demo.browse.php?filename='.rawurlencode($row['filename'])).'">view</a></td>'; - $ThisLine .= '<td><a href="'.htmlentities($_SERVER['PHP_SELF'].'?m3ufilename='.urlencode($row['filename'])).'">'.FixTextFields($row['filename']).'</a></td>'; - $tagvalues = ''; - foreach ($FieldsToCompare as $fieldname) { - $tagvalues .= $fieldname.' = '.@implode(" \n", @$Comments['all'][$fieldname])." \n"; - } - $ThisLine .= '<td><a href="'.htmlentities($_SERVER['PHP_SELF'].'?synchronizetagsfrom=all&filename='.urlencode($row['filename'])).'" title="'.htmlentities(rtrim($tagvalues, "\n"), ENT_QUOTES).'" target="retagwindow">all</a></td>'; - foreach ($TagsToCompare as $tagtype => $CompareThisTagType) { - if ($CompareThisTagType) { - $tagvalues = ''; - foreach ($FieldsToCompare as $fieldname) { - - if ($tagtype == 'id3v1') { - - getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.tag.id3v1.php', __FILE__, true); - if (($fieldname == 'genre') && !getid3_id3v1::LookupGenreID(@$Comments['all'][$fieldname][0])) { - - // non-standard genres can never match, so just ignore - $tagvalues .= $fieldname.' = '.@$Comments[$tagtype][$fieldname][0]."\n"; - - } elseif ($fieldname == 'comment') { - - if (rtrim(substr(@$Comments[$tagtype][$fieldname][0], 0, 28)) != rtrim(substr(@$Comments['all'][$fieldname][0], 0, 28))) { -//echo __LINE__.'<br>'; -//echo '<pre>'; -//var_dump($tagtype); -//var_dump($fieldname); -//echo '<pre>'; -//exit; - $tagvalues .= $fieldname.' = [['.@$Comments[$tagtype][$fieldname][0].']]'."\n"; - if (trim(strtolower(RemoveAccents(substr(@$Comments[$tagtype][$fieldname][0], 0, 28)))) == trim(strtolower(RemoveAccents(substr(@$Comments['all'][$fieldname][0], 0, 28))))) { - $SemiMatched[$tagtype] = true; - } else { - $Mismatched[$tagtype] = true; - } - $FileOK = false; - } else { - $tagvalues .= $fieldname.' = '.@$Comments[$tagtype][$fieldname][0]."\n"; - } - - } elseif ($fieldname == 'track') { - - // intval('01/20') == intval('1') - if (intval(@$Comments[$tagtype][$fieldname][0]) != intval(@$Comments['all'][$fieldname][0])) { -//echo __LINE__.'<br>'; -//echo '<pre>'; -//var_dump($tagtype); -//var_dump($fieldname); -//echo '<pre>'; -//exit; - $tagvalues .= $fieldname.' = [['.@$Comments[$tagtype][$fieldname][0].']]'."\n"; - $Mismatched[$tagtype] = true; - $FileOK = false; - } else { - $tagvalues .= $fieldname.' = '.@$Comments[$tagtype][$fieldname][0]."\n"; - } - - } elseif (rtrim(substr(@$Comments[$tagtype][$fieldname][0], 0, 30)) != rtrim(substr(@$Comments['all'][$fieldname][0], 0, 30))) { - -//echo __LINE__.'<br>'; -//echo '<pre>'; -//var_dump($tagtype); -//var_dump($fieldname); -//echo '<pre>'; -//exit; - $tagvalues .= $fieldname.' = [['.@$Comments[$tagtype][$fieldname][0].']]'."\n"; - if (strtolower(RemoveAccents(trim(substr(@$Comments[$tagtype][$fieldname][0], 0, 30)))) == strtolower(RemoveAccents(trim(substr(@$Comments['all'][$fieldname][0], 0, 30))))) { - $SemiMatched[$tagtype] = true; - } else { - $Mismatched[$tagtype] = true; - } - $FileOK = false; - if (strlen(trim(@$Comments[$tagtype][$fieldname][0])) > 0) { - $EmptyTags[$tagtype] = false; - } - - } else { - - $tagvalues .= $fieldname.' = '.@$Comments[$tagtype][$fieldname][0]."\n"; - if (strlen(trim(@$Comments[$tagtype][$fieldname][0])) > 0) { - $EmptyTags[$tagtype] = false; - } - - } - - } elseif (($tagtype == 'ape') && ($fieldname == 'year')) { - - if ((@$Comments['ape']['date'][0] != @$Comments['all']['year'][0]) && (@$Comments['ape']['year'][0] != @$Comments['all']['year'][0])) { - - $tagvalues .= $fieldname.' = [['.@$Comments['ape']['date'][0].']]'."\n"; - $Mismatched[$tagtype] = true; - $FileOK = false; - if (strlen(trim(@$Comments['ape']['date'][0])) > 0) { - $EmptyTags[$tagtype] = false; - } - - } else { - - $tagvalues .= $fieldname.' = '.@$Comments[$tagtype][$fieldname][0]."\n"; - if (strlen(trim(@$Comments[$tagtype][$fieldname][0])) > 0) { - $EmptyTags[$tagtype] = false; - } - - } - - } elseif (($fieldname == 'genre') && !empty($Comments['all'][$fieldname]) && !empty($Comments[$tagtype][$fieldname]) && in_array($Comments[$tagtype][$fieldname][0], $Comments['all'][$fieldname])) { - - $tagvalues .= $fieldname.' = '.@$Comments[$tagtype][$fieldname][0]."\n"; - if (strlen(trim(@$Comments[$tagtype][$fieldname][0])) > 0) { - $EmptyTags[$tagtype] = false; - } - - } elseif (@$Comments[$tagtype][$fieldname][0] != @$Comments['all'][$fieldname][0]) { - -//echo __LINE__.'<br>'; -//echo '<pre>'; -//var_dump($tagtype); -//var_dump($fieldname); -//var_dump($Comments[$tagtype][$fieldname][0]); -//var_dump($Comments['all'][$fieldname][0]); -//echo '<pre>'; -//exit; - $skiptracknumberfield = false; - switch ($fieldname) { - case 'track': - case 'tracknumber': - case 'track_number': - if (intval(@$Comments[$tagtype][$fieldname][0]) == intval(@$Comments['all'][$fieldname][0])) { - $skiptracknumberfield = true; - } - break; - } - if (!$skiptracknumberfield) { - $tagvalues .= $fieldname.' = [['.@$Comments[$tagtype][$fieldname][0].']]'."\n"; - if (trim(strtolower(RemoveAccents(@$Comments[$tagtype][$fieldname][0]))) == trim(strtolower(RemoveAccents(@$Comments['all'][$fieldname][0])))) { - $SemiMatched[$tagtype] = true; - } else { - $Mismatched[$tagtype] = true; - } - $FileOK = false; - if (strlen(trim(@$Comments[$tagtype][$fieldname][0])) > 0) { - $EmptyTags[$tagtype] = false; - } - } - - } else { - - $tagvalues .= $fieldname.' = '.@$Comments[$tagtype][$fieldname][0]."\n"; - if (strlen(trim(@$Comments[$tagtype][$fieldname][0])) > 0) { - $EmptyTags[$tagtype] = false; - } - - } - } - - if ($EmptyTags[$tagtype]) { - $FileOK = false; - $ThisLine .= '<td bgcolor="#0099cc">'; - } elseif ($SemiMatched[$tagtype]) { - $ThisLine .= '<td bgcolor="#ff9999">'; - } elseif ($Mismatched[$tagtype]) { - $ThisLine .= '<td bgcolor="#ff0000">'; - } else { - $ThisLine .= '<td bgcolor="#00cc00">'; - } - $ThisLine .= '<a href="'.htmlentities($_SERVER['PHP_SELF'].'?synchronizetagsfrom='.$tagtype.'&filename='.urlencode($row['filename'])).'" title="'.htmlentities(rtrim($tagvalues, "\n"), ENT_QUOTES).'" TARGET="retagwindow">'.$tagtype.'</a>'; - $ThisLine .= '</td>'; - } - } - $ThisLine .= '</tr>'; - - if (!$FileOK) { - $NotOKfiles++; - - echo '<script type="text/javascript">if (document.getElementById("Autofixing")) document.getElementById("Autofixing").innerHTML = "'.htmlentities($row['filename'], ENT_QUOTES).'";</script>'; - flush(); - - if (!empty($_REQUEST['autofix'])) { - - $AnyMismatched = false; - foreach ($Mismatched as $key => $value) { - if ($value && ($EmptyTags["$key"] === false)) { - $AnyMismatched = true; - } - } - if ($AnyMismatched && empty($_REQUEST['autofixforcesource'])) { - - echo $ThisLine; - - } else { - - $TagsToSynch = ''; - foreach ($EmptyTags as $key => $value) { - if ($value) { - switch ($key) { - case 'id3v1': - $TagsToSynch .= '1'; - break; - case 'id3v2': - $TagsToSynch .= '2'; - break; - case 'ape': - $TagsToSynch .= 'A'; - break; - } - } - } - - $autofixforcesource = (@$_REQUEST['autofixforcesource'] ? $_REQUEST['autofixforcesource'] : 'all'); - $TagsToSynch = (@$_REQUEST['autofixforcedest'] ? $_REQUEST['autofixforcedest'] : $TagsToSynch); - - $errors = array(); - if (SynchronizeAllTags($row['filename'], $autofixforcesource, $TagsToSynch, $errors)) { - $Autofixedfiles++; - echo '<tr bgcolor="#00CC00">'; - } else { - echo '<tr bgcolor="#FF0000">'; - } - echo '<td> </th>'; - echo '<td><a href="'.htmlentities($_SERVER['PHP_SELF'].'?m3ufilename='.urlencode($row['filename'])).'" title="'.FixTextFields(implode("\n", $errors)).'">'.FixTextFields($row['filename']).'</a></td>'; - echo '<td><table border="0">'; - echo '<tr><td><b>'.$TagsToSynch.'</b></td></tr>'; - echo '</table></td></tr>'; - } - - } else { - - echo $ThisLine; - - } - } - } - - echo '</table><br>'; - echo '<script type="text/javascript">if (document.getElementById("Autofixing")) document.getElementById("Autofixing").innerHTML = "";</script>'; - echo 'Found <b>'.number_format($NotOKfiles).'</b> files with unsynchronized tags, and auto-fixed '.number_format($Autofixedfiles).' of them.'; - -} elseif (!empty($_REQUEST['filenamepattern'])) { - - $patterns['A'] = 'artist'; - $patterns['T'] = 'title'; - $patterns['M'] = 'album'; - $patterns['N'] = 'track'; - $patterns['G'] = 'genre'; - $patterns['R'] = 'remix'; - - $FieldsToUse = explode(' ', wordwrap(eregi_replace('[^A-Z]', '', $_REQUEST['filenamepattern']), 1, ' ', 1)); - //$FieldsToUse = explode(' ', wordwrap($_REQUEST['filenamepattern'], 1, ' ', 1)); - foreach ($FieldsToUse as $FieldID) { - $FieldNames[] = $patterns["$FieldID"]; - } - - $SQLquery = 'SELECT `filename`, `fileformat`, '.implode(', ', $FieldNames); - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`fileformat` NOT LIKE "'.implode('") AND (`fileformat` NOT LIKE "', $IgnoreNoTagFormats).'")'; - $SQLquery .= ' ORDER BY `filename` ASC'; - $result = safe_mysql_query($SQLquery); - echo 'Files that do not match naming pattern: (<a href="'.htmlentities($_SERVER['PHP_SELF'].'?filenamepattern='.urlencode($_REQUEST['filenamepattern']).'&autofix=1').'">auto-fix</a>)<br>'; - echo '<table border="1" cellspacing="0" cellpadding="3">'; - echo '<tr><th>view</th><th>Why</th><td><b>Actual filename</b><br>(click to play/edit file)</td><td><b>Correct filename (based on tags)</b>'.(!@$_REQUEST['autofix'] ? '<br>(click to rename file to this)' : '').'</td></tr>'; - $nonmatchingfilenames = 0; - $Pattern = $_REQUEST['filenamepattern']; - $PatternLength = strlen($Pattern); - while ($row = mysql_fetch_array($result)) { - set_time_limit(10); - $PatternFilename = ''; - for ($i = 0; $i < $PatternLength; $i++) { - if (isset($patterns[$Pattern{$i}])) { - $PatternFilename .= trim(strtr($row[$patterns[$Pattern{$i}]], ':\\*<>|', ';-¤«»¦'), ' '); - } else { - $PatternFilename .= $Pattern{$i}; - } - } - - // Replace "~" with "-" if characters immediately before and after are both numbers, - // "/" has been replaced with "~" above which is good for multi-song medley dividers, - // but for things like 24/7, 7/8ths, etc it looks better if it's 24-7, 7-8ths, etc. - $PatternFilename = eregi_replace('([ a-z]+)/([ a-z]+)', '\\1~\\2', $PatternFilename); - $PatternFilename = str_replace('/', '×', $PatternFilename); - - $PatternFilename = str_replace('?', '¿', $PatternFilename); - $PatternFilename = str_replace(' "', ' “', $PatternFilename); - $PatternFilename = str_replace('("', '(“', $PatternFilename); - $PatternFilename = str_replace('-"', '-“', $PatternFilename); - $PatternFilename = str_replace('" ', '” ', $PatternFilename.' '); - $PatternFilename = str_replace('"', '”', $PatternFilename); - $PatternFilename = str_replace(' ', ' ', $PatternFilename); - - - $ParenthesesPairs = array('()', '[]', '{}'); - foreach ($ParenthesesPairs as $pair) { - - // multiple remixes are stored tab-seperated in the database. - // change "{2000 Version\tSomebody Remix}" into "{2000 Version} {Somebody Remix}" - while (ereg('^(.*)'.preg_quote($pair{0}).'([^'.preg_quote($pair{1}).']*)('."\t".')([^'.preg_quote($pair{0}).']*)'.preg_quote($pair{1}), $PatternFilename, $matches)) { - $PatternFilename = $matches[1].$pair{0}.$matches[2].$pair{1}.' '.$pair{0}.$matches[4].$pair{1}; - } - - // remove empty parenthesized pairs (probably where no track numbers, remix version, etc) - $PatternFilename = ereg_replace(preg_quote($pair), '', $PatternFilename); - - // "[01] - Title With No Artist.mp3" ==> "[01] Title With No Artist.mp3" - $PatternFilename = ereg_replace(preg_quote($pair{1}).' +\- ', $pair{1}.' ', $PatternFilename); - - } - - // get rid of leading & trailing spaces if end items (artist or title for example) are missing - $PatternFilename = trim($PatternFilename, ' -'); - - if (!$PatternFilename) { - // no tags to create a filename from -- skip this file - continue; - } - $PatternFilename .= '.'.$row['fileformat']; - - $ActualFilename = basename($row['filename']); - if ($ActualFilename != $PatternFilename) { - - $NotMatchedReasons = ''; - if (strtolower($ActualFilename) === strtolower($PatternFilename)) { - $NotMatchedReasons .= 'Aa '; - } elseif (RemoveAccents($ActualFilename) === RemoveAccents($PatternFilename)) { - $NotMatchedReasons .= 'ée '; - } - - - $actualExt = '.'.fileextension($ActualFilename); - $patternExt = '.'.fileextension($PatternFilename); - $ActualFilenameNoExt = (($actualExt != '.') ? substr($ActualFilename, 0, 0 - strlen($actualExt)) : $ActualFilename); - $PatternFilenameNoExt = (($patternExt != '.') ? substr($PatternFilename, 0, 0 - strlen($patternExt)) : $PatternFilename); - - if (strpos($PatternFilenameNoExt, $ActualFilenameNoExt) !== false) { - $DifferenceBoldedName = str_replace($ActualFilenameNoExt, '</b>'.$ActualFilenameNoExt.'<b>', $PatternFilenameNoExt); - } else { - $ShortestNameLength = min(strlen($ActualFilenameNoExt), strlen($PatternFilenameNoExt)); - for ($DifferenceOffset = 0; $DifferenceOffset < $ShortestNameLength; $DifferenceOffset++) { - if ($ActualFilenameNoExt{$DifferenceOffset} !== $PatternFilenameNoExt{$DifferenceOffset}) { - break; - } - } - $DifferenceBoldedName = '</b>'.substr($PatternFilenameNoExt, 0, $DifferenceOffset).'<b>'.substr($PatternFilenameNoExt, $DifferenceOffset); - } - $DifferenceBoldedName .= (($actualExt == $patternExt) ? '</b>'.$patternExt.'<b>' : $patternExt); - - - echo '<tr>'; - echo '<td><a href="'.htmlentities('demo.browse.php?filename='.rawurlencode($row['filename'])).'">view</a></td>'; - echo '<td> '.$NotMatchedReasons.'</td>'; - echo '<td><a href="'.htmlentities($_SERVER['PHP_SELF'].'?m3ufilename='.urlencode($row['filename'])).'">'.FixTextFields($ActualFilename).'</a></td>'; - - if (@$_REQUEST['autofix']) { - - $results = ''; - if (RenameFileFromTo($row['filename'], dirname($row['filename']).'/'.$PatternFilename, $results)) { - echo '<TD BGCOLOR="#009900">'; - } else { - echo '<TD BGCOLOR="#FF0000">'; - } - echo '<b>'.$DifferenceBoldedName.'</b></td>'; - - - } else { - - echo '<td><a href="'.htmlentities($_SERVER['PHP_SELF'].'?filenamepattern='.urlencode($_REQUEST['filenamepattern']).'&renamefilefrom='.urlencode($row['filename']).'&renamefileto='.urlencode(dirname($row['filename']).'/'.$PatternFilename)).'" title="'.FixTextFields(basename($row['filename']))."\n".FixTextFields(basename($PatternFilename)).'" TARGET="renamewindow">'; - echo '<b>'.$DifferenceBoldedName.'</b></a></td>'; - - } - echo '</tr>'; - - $nonmatchingfilenames++; - } - } - echo '</table><br>'; - echo 'Found '.number_format($nonmatchingfilenames).' files that do not match naming pattern<br>'; - - -} elseif (!empty($_REQUEST['encoderoptionsdistribution'])) { - - if (isset($_REQUEST['showtagfiles'])) { - $SQLquery = 'SELECT `filename`, `encoder_options` FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`encoder_options` LIKE "'.mysql_escape_string($_REQUEST['showtagfiles']).'")'; - $SQLquery .= ' AND (`fileformat` NOT LIKE "'.implode('") AND (`fileformat` NOT LIKE "', $IgnoreNoTagFormats).'")'; - $SQLquery .= ' ORDER BY `filename` ASC'; - $result = safe_mysql_query($SQLquery); - - if (!empty($_REQUEST['m3u'])) { - - header('Content-type: audio/x-mpegurl'); - echo '#EXTM3U'."\n"; - while ($row = mysql_fetch_array($result)) { - echo WindowsShareSlashTranslate($row['filename'])."\n"; - } - exit; - - } else { - - echo '<a href="'.htmlentities($_SERVER['PHP_SELF'].'?encoderoptionsdistribution=1').'">Show all Encoder Options</a><hr>'; - echo 'Files with Encoder Options <b>'.$_REQUEST['showtagfiles'].'</b>:<br>'; - echo '<table border="1" cellspacing="0" cellpadding="3">'; - while ($row = mysql_fetch_array($result)) { - echo '<tr>'; - echo '<td><a href="'.htmlentities('demo.browse.php?filename='.rawurlencode($row['filename'])).'">'.FixTextFields($row['filename']).'</a></td>'; - echo '<td>'.$row['encoder_options'].'</td>'; - echo '</tr>'; - } - echo '</table>'; - - } - - } elseif (!isset($_REQUEST['m3u'])) { - - $SQLquery = 'SELECT `encoder_options`, COUNT(*) AS `num` FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`fileformat` NOT LIKE "'.implode('") AND (`fileformat` NOT LIKE "', $IgnoreNoTagFormats).'")'; - $SQLquery .= ' GROUP BY `encoder_options`'; - $SQLquery .= ' ORDER BY (`encoder_options` LIKE "LAME%") DESC, (`encoder_options` LIKE "CBR%") DESC, `num` DESC, `encoder_options` ASC'; - $result = safe_mysql_query($SQLquery); - echo 'Files with Encoder Options:<br>'; - echo '<table border="1" cellspacing="0" cellpadding="3">'; - echo '<tr><th>Encoder Options</th><th>Count</th><th>M3U</th></tr>'; - while ($row = mysql_fetch_array($result)) { - echo '<tr>'; - echo '<td>'.$row['encoder_options'].'</td>'; - echo '<TD ALIGN="RIGHT"><a href="'.htmlentities($_SERVER['PHP_SELF'].'?encoderoptionsdistribution=1&showtagfiles='.($row['encoder_options'] ? urlencode($row['encoder_options']) : '')).'">'.number_format($row['num']).'</a></td>'; - echo '<TD ALIGN="RIGHT"><a href="'.htmlentities($_SERVER['PHP_SELF'].'?encoderoptionsdistribution=1&showtagfiles='.($row['encoder_options'] ? urlencode($row['encoder_options']) : '').'&m3u=.m3u').'">m3u</a></td>'; - echo '</tr>'; - } - echo '</table><hr>'; - - } - -} elseif (!empty($_REQUEST['tagtypes'])) { - - if (!isset($_REQUEST['m3u'])) { - $SQLquery = 'SELECT `tags`, COUNT(*) AS `num` FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`fileformat` NOT LIKE "'.implode('") AND (`fileformat` NOT LIKE "', $IgnoreNoTagFormats).'")'; - $SQLquery .= ' GROUP BY `tags`'; - $SQLquery .= ' ORDER BY `num` DESC'; - $result = safe_mysql_query($SQLquery); - echo 'Files with tags:<br>'; - echo '<table border="1" cellspacing="0" cellpadding="3">'; - echo '<tr><th>Tags</th><th>Count</th><th>M3U</th></tr>'; - while ($row = mysql_fetch_array($result)) { - echo '<tr>'; - echo '<td>'.$row['tags'].'</td>'; - echo '<TD ALIGN="RIGHT"><a href="'.htmlentities($_SERVER['PHP_SELF'].'?tagtypes=1&showtagfiles='.($row['tags'] ? urlencode($row['tags']) : '')).'">'.number_format($row['num']).'</a></td>'; - echo '<TD ALIGN="RIGHT"><a href="'.htmlentities($_SERVER['PHP_SELF'].'?tagtypes=1&showtagfiles='.($row['tags'] ? urlencode($row['tags']) : '').'&m3u=.m3u').'">m3u</a></td>'; - echo '</tr>'; - } - echo '</table><hr>'; - } - - if (isset($_REQUEST['showtagfiles'])) { - $SQLquery = 'SELECT `filename`, `tags` FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`tags` LIKE "'.mysql_escape_string($_REQUEST['showtagfiles']).'")'; - $SQLquery .= ' AND (`fileformat` NOT LIKE "'.implode('") AND (`fileformat` NOT LIKE "', $IgnoreNoTagFormats).'")'; - $SQLquery .= ' ORDER BY `filename` ASC'; - $result = safe_mysql_query($SQLquery); - - if (!empty($_REQUEST['m3u'])) { - - header('Content-type: audio/x-mpegurl'); - echo '#EXTM3U'."\n"; - while ($row = mysql_fetch_array($result)) { - echo WindowsShareSlashTranslate($row['filename'])."\n"; - } - exit; - - } else { - - echo '<table border="1" cellspacing="0" cellpadding="3">'; - while ($row = mysql_fetch_array($result)) { - echo '<tr>'; - echo '<td><a href="demo.browse.php?filename='.rawurlencode($row['filename']).'">'.FixTextFields($row['filename']).'</a></td>'; - echo '<td>'.$row['tags'].'</td>'; - echo '</tr>'; - } - echo '</table>'; - - } - } - - -} elseif (!empty($_REQUEST['md5datadupes'])) { - - $OtherFormats = ''; - $AVFormats = ''; - - $SQLquery = 'SELECT `md5_data`, `filename`, COUNT(*) AS `num`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`md5_data` <> "")'; - $SQLquery .= ' GROUP BY `md5_data`'; - $SQLquery .= ' ORDER BY `num` DESC'; - $result = safe_mysql_query($SQLquery); - while (($row = mysql_fetch_array($result)) && ($row['num'] > 1)) { - set_time_limit(30); - - $filenames = array(); - $tags = array(); - $md5_data = array(); - $SQLquery = 'SELECT `fileformat`, `filename`, `tags`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`md5_data` = "'.mysql_escape_string($row['md5_data']).'")'; - $SQLquery .= ' ORDER BY `filename` ASC'; - $result2 = safe_mysql_query($SQLquery); - while ($row2 = mysql_fetch_array($result2)) { - $thisfileformat = $row2['fileformat']; - $filenames[] = $row2['filename']; - $tags[] = $row2['tags']; - $md5_data[] = $row['md5_data']; - } - - $thisline = '<tr>'; - $thisline .= '<TD VALIGN="TOP" style="font-family: monospace;">'.implode('<br>', $md5_data).'</td>'; - $thisline .= '<TD VALIGN="TOP" NOWRAP>'.implode('<br>', $tags).'</td>'; - $thisline .= '<TD VALIGN="TOP">'.implode('<br>', $filenames).'</td>'; - $thisline .= '</tr>'; - - if (in_array($thisfileformat, $IgnoreNoTagFormats)) { - $OtherFormats .= $thisline; - } else { - $AVFormats .= $thisline; - } - } - echo 'Duplicated MD5_DATA (Audio/Video files):<table border="1" cellspacing="0" cellpadding="2">'; - echo $AVFormats.'</table><hr>'; - echo 'Duplicated MD5_DATA (Other files):<table border="1" cellspacing="0" cellpadding="2">'; - echo $OtherFormats.'</table><hr>'; - - -} elseif (!empty($_REQUEST['artisttitledupes'])) { - - if (isset($_REQUEST['m3uartist']) && isset($_REQUEST['m3utitle'])) { - - header('Content-type: audio/x-mpegurl'); - echo '#EXTM3U'."\n"; - $SQLquery = 'SELECT `filename`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`artist` = "'.mysql_escape_string($_REQUEST['m3uartist']).'")'; - $SQLquery .= ' AND (`title` = "'.mysql_escape_string($_REQUEST['m3utitle']).'")'; - $SQLquery .= ' ORDER BY `playtime_seconds` ASC, `remix` ASC, `filename` ASC'; - $result = safe_mysql_query($SQLquery); - while ($row = mysql_fetch_array($result)) { - echo WindowsShareSlashTranslate($row['filename'])."\n"; - } - exit; - - } - - $SQLquery = 'SELECT `artist`, `title`, `filename`, COUNT(*) AS `num`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`artist` <> "")'; - $SQLquery .= ' AND (`title` <> "")'; - $SQLquery .= ' GROUP BY `artist`, `title`'.(@$_REQUEST['samemix'] ? ', `remix`' : ''); - $SQLquery .= ' ORDER BY `num` DESC, `artist` ASC, `title` ASC, `playtime_seconds` ASC, `remix` ASC'; - $result = safe_mysql_query($SQLquery); - $uniquetitles = 0; - $uniquefiles = 0; - - if (!empty($_REQUEST['m3u'])) { - - header('Content-type: audio/x-mpegurl'); - echo '#EXTM3U'."\n"; - while (($row = mysql_fetch_array($result)) && ($row['num'] > 1)) { - $SQLquery = 'SELECT `filename`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`artist` = "'.mysql_escape_string($row['artist']).'")'; - $SQLquery .= ' AND (`title` = "'.mysql_escape_string($row['title']).'")'; - if (@$_REQUEST['samemix']) { - $SQLquery .= ' AND (`remix` = "'.mysql_escape_string($row['remix']).'")'; - } - $SQLquery .= ' ORDER BY `playtime_seconds` ASC, `remix` ASC, `filename` ASC'; - $result2 = safe_mysql_query($SQLquery); - while ($row2 = mysql_fetch_array($result2)) { - echo WindowsShareSlashTranslate($row2['filename'])."\n"; - } - } - exit; - - } else { - - echo 'Duplicated aritst + title: (<a href="'.htmlentities($_SERVER['PHP_SELF'].'?artisttitledupes=1&samemix=1').'">Identical Mix/Version only</a>)<br>'; - echo '(<a href="'.htmlentities($_SERVER['PHP_SELF'].'?artisttitledupes=1&m3u=.m3u').'">.m3u version</a>)<br>'; - echo '<table border="1" cellspacing="0" cellpadding="2">'; - echo '<tr><th colspan="3"> </th><th>Artist</th><th>Title</th><th>Version</th><th> </th><th> </th><th>Filename</th></tr>'; - - while (($row = mysql_fetch_array($result)) && ($row['num'] > 1)) { - $uniquetitles++; - set_time_limit(30); - - $filenames = array(); - $artists = array(); - $titles = array(); - $remixes = array(); - $bitrates = array(); - $playtimes = array(); - $SQLquery = 'SELECT `filename`, `artist`, `title`, `remix`, `audio_bitrate`, `vbr_method`, `playtime_seconds`, `encoder_options`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`artist` = "'.mysql_escape_string($row['artist']).'")'; - $SQLquery .= ' AND (`title` = "'.mysql_escape_string($row['title']).'")'; - $SQLquery .= ' ORDER BY `playtime_seconds` ASC, `remix` ASC, `filename` ASC'; - $result2 = safe_mysql_query($SQLquery); - while ($row2 = mysql_fetch_array($result2)) { - $uniquefiles++; - $filenames[] = $row2['filename']; - $artists[] = $row2['artist']; - $titles[] = $row2['title']; - $remixes[] = $row2['remix']; - if ($row2['vbr_method']) { - $bitrates[] = '<B'.($row2['encoder_options'] ? ' style="text-decoration: underline; cursor: help;" title="'.$row2['encoder_options'] : '').'">'.BitrateText($row2['audio_bitrate'] / 1000).'</b>'; - } else { - $bitrates[] = BitrateText($row2['audio_bitrate'] / 1000); - } - $playtimes[] = getid3_lib::PlaytimeString($row2['playtime_seconds']); - } - - echo '<tr>'; - echo '<TD NOWRAP VALIGN="TOP">'; - foreach ($filenames as $file) { - echo '<a href="'.htmlentities('demo.browse.php?deletefile='.urlencode($file).'&noalert=1').'" onClick="return confirm(\'Are you sure you want to delete '.addslashes($file).'? \n(this action cannot be un-done)\');" title="Permanently delete '."\n".FixTextFields($file)."\n".'" TARGET="deletedupewindow">delete</a><br>'; - } - echo '</td>'; - echo '<TD NOWRAP VALIGN="TOP">'; - foreach ($filenames as $file) { - echo '<a href="'.htmlentities($_SERVER['PHP_SELF'].'?m3ufilename='.urlencode($file)).'">play</a><br>'; - } - echo '</td>'; - echo '<TD VALIGN="MIDDLE" ALIGN="CENTER" ><a href="'.htmlentities($_SERVER['PHP_SELF'].'?artisttitledupes=1&m3uartist='.urlencode($artists[0]).'&m3utitle='.urlencode($titles[0])).'">play all</a></td>'; - echo '<TD VALIGN="TOP" NOWRAP>'.implode('<br>', $artists).'</td>'; - echo '<TD VALIGN="TOP" NOWRAP>'.implode('<br>', $titles).'</td>'; - echo '<TD VALIGN="TOP" NOWRAP>'.implode('<br>', $remixes).'</td>'; - echo '<TD VALIGN="TOP" NOWRAP ALIGN="RIGHT">'.implode('<br>', $bitrates).'</td>'; - echo '<TD VALIGN="TOP" NOWRAP ALIGN="RIGHT">'.implode('<br>', $playtimes).'</td>'; - - echo '<TD VALIGN="TOP" NOWRAP ALIGN="LEFT"><table border="0" cellspacing="0" cellpadding="0">'; - foreach ($filenames as $file) { - echo '<tr><TD NOWRAP ALIGN="RIGHT"><a href="'.htmlentities('demo.browse.php?filename='.rawurlencode($file)).'"><span style="color: #339966;">'.dirname($file).'/</span>'.basename($file).'</a></td></tr>'; - } - echo '</table></td>'; - - echo '</tr>'; - } - - } - echo '</table>'; - echo number_format($uniquefiles).' files with '.number_format($uniquetitles).' unique <i>aritst + title</i><br>'; - echo '<hr>'; - -} elseif (!empty($_REQUEST['filetypelist'])) { - - list($fileformat, $audioformat) = explode('|', $_REQUEST['filetypelist']); - $SQLquery = 'SELECT `filename`, `fileformat`, `audio_dataformat`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`fileformat` = "'.mysql_escape_string($fileformat).'")'; - $SQLquery .= ' AND (`audio_dataformat` = "'.mysql_escape_string($audioformat).'")'; - $SQLquery .= ' ORDER BY `filename` ASC'; - $result = safe_mysql_query($SQLquery); - echo 'Files of format <b>'.$fileformat.'.'.$audioformat.'</b>:<table border="1" cellspacing="0" cellpadding="4">'; - echo '<tr><th>file</th><th>audio</th><th>filename</th></tr>'; - while ($row = mysql_fetch_array($result)) { - echo '<tr>'; - echo '<td>'.$row['fileformat'].'</td>'; - echo '<td>'.$row['audio_dataformat'].'</td>'; - echo '<td><a href="'.htmlentities('demo.browse.php?filename='.rawurlencode($row['filename'])).'">'.FixTextFields($row['filename']).'</a></td>'; - echo '</tr>'; - } - echo '</table><hr>'; - -} elseif (!empty($_REQUEST['trackinalbum'])) { - - $SQLquery = 'SELECT `filename`, `album`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`album` LIKE "% [%")'; - $SQLquery .= ' ORDER BY `album` ASC, `filename` ASC'; - $result = safe_mysql_query($SQLquery); - if (!empty($_REQUEST['m3u'])) { - - header('Content-type: audio/x-mpegurl'); - echo '#EXTM3U'."\n"; - while ($row = mysql_fetch_array($result)) { - echo WindowsShareSlashTranslate($row['filename'])."\n"; - } - exit; - - } elseif (!empty($_REQUEST['autofix'])) { - - getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.tag.id3v1.php', __FILE__, true); - getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.tag.id3v2.php', __FILE__, true); - - while ($row = mysql_fetch_array($result)) { - set_time_limit(30); - $ThisFileInfo = $getID3->analyze($filename); - getid3_lib::CopyTagsToComments($ThisFileInfo); - - if (!empty($ThisFileInfo['tags'])) { - - $Album = trim(str_replace(strstr($ThisFileInfo['comments']['album'][0], ' ['), '', $ThisFileInfo['comments']['album'][0])); - $Track = (string) intval(str_replace(' [', '', str_replace(']', '', strstr($ThisFileInfo['comments']['album'][0], ' [')))); - if ($Track == '0') { - $Track = ''; - } - if ($Album && $Track) { - echo '<hr>'.FixTextFields($row['filename']).'<br>'; - echo '<i>'.$Album.'</i> (track #'.$Track.')<br>'; - echo '<b>ID3v2:</b> '.(RemoveID3v2($row['filename'], false) ? 'removed' : 'REMOVAL FAILED!').', '; - echo '<b>ID3v1:</b> '.(WriteID3v1($row['filename'], @$ThisFileInfo['comments']['title'][0], @$ThisFileInfo['comments']['artist'][0], $Album, @$ThisFileInfo['comments']['year'][0], @$ThisFileInfo['comments']['comment'][0], @$ThisFileInfo['comments']['genreid'][0], $Track, false) ? 'updated' : 'UPDATE FAILED').'<br>'; - } else { - echo ' . '; - } - - } else { - - echo '<hr>FAILED<br>'.FixTextFields($row['filename']).'<hr>'; - - } - flush(); - } - - } else { - - echo '<b>'.number_format(mysql_num_rows($result)).'</b> files with <b>[??]</b>-format track numbers in album field:<br>'; - if (mysql_num_rows($result) > 0) { - echo '(<a href="'.htmlentities($_SERVER['PHP_SELF'].'?trackinalbum=1&m3u=.m3u').'">.m3u version</a>)<br>'; - echo '<a href="'.htmlentities($_SERVER['PHP_SELF'].'?trackinalbum=1&autofix=1').'">Try to auto-fix</a><br>'; - echo '<table border="1" cellspacing="0" cellpadding="4">'; - while ($row = mysql_fetch_array($result)) { - echo '<tr>'; - echo '<td>'.$row['album'].'</td>'; - echo '<td><a href="'.htmlentities('demo.browse.php?filename='.rawurlencode($row['filename'])).'">'.FixTextFields($row['filename']).'</a></td>'; - echo '</tr>'; - } - echo '</table>'; - } - echo '<hr>'; - - } - -} elseif (!empty($_REQUEST['fileextensions'])) { - - $SQLquery = 'SELECT `filename`, `fileformat`, `audio_dataformat`, `video_dataformat`, `tags`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' ORDER BY `filename` ASC'; - $result = safe_mysql_query($SQLquery); - $invalidextensionfiles = 0; - $invalidextensionline = '<table border="1" cellspacing="0" cellpadding="4">'; - $invalidextensionline .= '<tr><th>file</th><th>audio</th><th>video</th><th>tags</th><th>actual</th><th>correct</th><th>filename</th></tr>'; - while ($row = mysql_fetch_array($result)) { - set_time_limit(30); - - $acceptableextensions = AcceptableExtensions($row['fileformat'], $row['audio_dataformat'], $row['video_dataformat']); - $actualextension = strtolower(fileextension($row['filename'])); - if ($acceptableextensions && !in_array($actualextension, $acceptableextensions)) { - $invalidextensionfiles++; - - $invalidextensionline .= '<tr>'; - $invalidextensionline .= '<td>'.$row['fileformat'].'</td>'; - $invalidextensionline .= '<td>'.$row['audio_dataformat'].'</td>'; - $invalidextensionline .= '<td>'.$row['video_dataformat'].'</td>'; - $invalidextensionline .= '<td>'.$row['tags'].'</td>'; - $invalidextensionline .= '<td>'.$actualextension.'</td>'; - $invalidextensionline .= '<td>'.implode('; ', $acceptableextensions).'</td>'; - $invalidextensionline .= '<td><a href="'.htmlentities('demo.browse.php?filename='.rawurlencode($row['filename'])).'">'.FixTextFields($row['filename']).'</a></td>'; - $invalidextensionline .= '</tr>'; - } - } - $invalidextensionline .= '</table><hr>'; - echo number_format($invalidextensionfiles).' files with incorrect filename extension:<br>'; - echo $invalidextensionline; - -} elseif (isset($_REQUEST['genredistribution'])) { - - if (!empty($_REQUEST['m3u'])) { - - header('Content-type: audio/x-mpegurl'); - echo '#EXTM3U'."\n"; - $SQLquery = 'SELECT `filename`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (BINARY `genre` = "'.$_REQUEST['genredistribution'].'")'; - $SQLquery .= ' AND (`fileformat` NOT LIKE "'.implode('") AND (`fileformat` NOT LIKE "', $IgnoreNoTagFormats).'")'; - $SQLquery .= ' ORDER BY `filename` ASC'; - $result = safe_mysql_query($SQLquery); - while ($row = mysql_fetch_array($result)) { - echo WindowsShareSlashTranslate($row['filename'])."\n"; - } - exit; - - } else { - - if ($_REQUEST['genredistribution'] == '%') { - - $SQLquery = 'SELECT COUNT(*) AS `num`, `genre`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`fileformat` NOT LIKE "'.implode('") AND (`fileformat` NOT LIKE "', $IgnoreNoTagFormats).'")'; - $SQLquery .= ' GROUP BY `genre`'; - $SQLquery .= ' ORDER BY `num` DESC'; - $result = safe_mysql_query($SQLquery); - getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.tag.id3v1.php', __FILE__, true); - echo '<table border="1" cellspacing="0" cellpadding="4">'; - echo '<tr><th>Count</th><th>Genre</th><th>m3u</th></tr>'; - while ($row = mysql_fetch_array($result)) { - $GenreID = getid3_id3v1::LookupGenreID($row['genre']); - if (is_numeric($GenreID)) { - echo '<tr bgcolor="#00FF00;">'; - } else { - echo '<tr bgcolor="#FF9999;">'; - } - echo '<td><a href="'.htmlentities($_SERVER['PHP_SELF'].'?genredistribution='.urlencode($row['genre'])).'">'.number_format($row['num']).'</a></td>'; - echo '<td nowrap>'.str_replace("\t", '<br>', $row['genre']).'</td>'; - echo '<td><a href="'.htmlentities($_SERVER['PHP_SELF'].'?m3u=.m3u&genredistribution='.urlencode($row['genre'])).'">.m3u</a></td>'; - echo '</tr>'; - } - echo '</table><hr>'; - - } else { - - $SQLquery = 'SELECT `filename`, `genre`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`genre` LIKE "'.mysql_escape_string($_REQUEST['genredistribution']).'")'; - $SQLquery .= ' ORDER BY `filename` ASC'; - $result = safe_mysql_query($SQLquery); - echo '<a href="'.htmlentities($_SERVER['PHP_SELF'].'?genredistribution='.urlencode('%')).'">All Genres</a><br>'; - echo '<table border="1" cellspacing="0" cellpadding="4">'; - echo '<tr><th>Genre</th><th>m3u</th><th>Filename</th></tr>'; - while ($row = mysql_fetch_array($result)) { - echo '<tr>'; - echo '<TD NOWRAP>'.str_replace("\t", '<br>', $row['genre']).'</td>'; - echo '<td><a href="'.htmlentities($_SERVER['PHP_SELF'].'?m3ufilename='.urlencode($row['filename'])).'">m3u</a></td>'; - echo '<td><a href="'.htmlentities('demo.browse.php?filename='.rawurlencode($row['filename'])).'">'.FixTextFields($row['filename']).'</a></td>'; - echo '</tr>'; - } - echo '</table><hr>'; - - } - - - } - -} elseif (!empty($_REQUEST['formatdistribution'])) { - - $SQLquery = 'SELECT `fileformat`, `audio_dataformat`, COUNT(*) AS `num`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' GROUP BY `fileformat`, `audio_dataformat`'; - $SQLquery .= ' ORDER BY `num` DESC'; - $result = safe_mysql_query($SQLquery); - echo 'File format distribution:<table border="1" cellspacing="0" cellpadding="4">'; - echo '<tr><th>Number</th><th>Format</th></tr>'; - while ($row = mysql_fetch_array($result)) { - echo '<tr>'; - echo '<TD ALIGN="RIGHT">'.number_format($row['num']).'</td>'; - echo '<td><a href="'.htmlentities($_SERVER['PHP_SELF'].'?filetypelist='.$row['fileformat'].'|'.$row['audio_dataformat']).'">'.($row['fileformat'] ? $row['fileformat'] : '<i>unknown</i>').(($row['audio_dataformat'] && ($row['audio_dataformat'] != $row['fileformat'])) ? '.'.$row['audio_dataformat'] : '').'</a></td>'; - echo '</tr>'; - } - echo '</table><hr>'; - -} elseif (!empty($_REQUEST['errorswarnings'])) { - - $SQLquery = 'SELECT `filename`, `error`, `warning`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`error` <> "")'; - $SQLquery .= ' OR (`warning` <> "")'; - $SQLquery .= ' ORDER BY `filename` ASC'; - $result = safe_mysql_query($SQLquery); - - if (!empty($_REQUEST['m3u'])) { - - header('Content-type: audio/x-mpegurl'); - echo '#EXTM3U'."\n"; - while ($row = mysql_fetch_array($result)) { - echo WindowsShareSlashTranslate($row['filename'])."\n"; - } - exit; - - } else { - - echo number_format(mysql_num_rows($result)).' files with errors or warnings:<br>'; - echo '(<a href="'.htmlentities($_SERVER['PHP_SELF'].'?errorswarnings=1&m3u=.m3u').'">.m3u version</a>)<br>'; - echo '<table border="1" cellspacing="0" cellpadding="4">'; - echo '<tr><th>Filename</th><th>Error</th><th>Warning</th></tr>'; - while ($row = mysql_fetch_array($result)) { - echo '<tr>'; - echo '<td><a href="'.htmlentities('demo.browse.php?filename='.rawurlencode($row['filename'])).'">'.FixTextFields($row['filename']).'</a></td>'; - echo '<td>'.(!empty($row['error']) ? '<li>'.str_replace("\t", '<li>', FixTextFields($row['error'])).'</li>' : ' ').'</td>'; - echo '<td>'.(!empty($row['warning']) ? '<li>'.str_replace("\t", '<li>', FixTextFields($row['warning'])).'</li>' : ' ').'</td>'; - echo '</tr>'; - } - } - echo '</table><hr>'; - -} elseif (!empty($_REQUEST['fixid3v1padding'])) { - - getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'write.id3v1.php', __FILE__, true); - $id3v1_writer = new getid3_write_id3v1; - - $SQLquery = 'SELECT `filename`, `error`, `warning`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`fileformat` = "mp3")'; - $SQLquery .= ' AND (`warning` <> "")'; - $SQLquery .= ' ORDER BY `filename` ASC'; - $result = safe_mysql_query($SQLquery); - $totaltofix = mysql_num_rows($result); - $rowcounter = 0; - while ($row = mysql_fetch_array($result)) { - set_time_limit(30); - if (strpos($row['warning'], 'Some ID3v1 fields do not use NULL characters for padding') !== false) { - set_time_limit(30); - $id3v1_writer->filename = $row['filename']; - echo ($id3v1_writer->FixID3v1Padding() ? '<span style="color: #009900;">fixed - ' : '<span style="color: #FF0000;">error - '); - } else { - echo '<span style="color: #0000FF;">No error? - '; - } - echo '['.++$rowcounter.' / '.$totaltofix.'] '; - echo FixTextFields($row['filename']).'</span><br>'; - flush(); - } - -} elseif (!empty($_REQUEST['vbrmethod'])) { - - if ($_REQUEST['vbrmethod'] == '1') { - - $SQLquery = 'SELECT COUNT(*) AS `num`, `vbr_method`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' GROUP BY `vbr_method`'; - $SQLquery .= ' ORDER BY `vbr_method`'; - $result = safe_mysql_query($SQLquery); - echo 'VBR methods:<table border="1" cellspacing="0" cellpadding="4">'; - echo '<tr><th>Count</th><th>VBR Method</th></tr>'; - while ($row = mysql_fetch_array($result)) { - echo '<tr>'; - echo '<TD ALIGN="RIGHT">'.FixTextFields(number_format($row['num'])).'</td>'; - if ($row['vbr_method']) { - echo '<td><a href="'.htmlentities($_SERVER['PHP_SELF'].'?vbrmethod='.$row['vbr_method']).'">'.FixTextFields($row['vbr_method']).'</a></td>'; - } else { - echo '<td><i>CBR</i></td>'; - } - echo '</tr>'; - } - echo '</table>'; - - } else { - - $SQLquery = 'SELECT `filename`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`vbr_method` = "'.mysql_escape_string($_REQUEST['vbrmethod']).'")'; - $result = safe_mysql_query($SQLquery); - echo number_format(mysql_num_rows($result)).' files with VBR_method of "'.$_REQUEST['vbrmethod'].'":<table border="1" cellspacing="0" cellpadding="3">'; - while ($row = mysql_fetch_array($result)) { - echo '<tr><td><a href="'.htmlentities($_SERVER['PHP_SELF'].'?m3ufilename='.urlencode($row['filename'])).'">m3u</a></td>'; - echo '<td><a href="'.htmlentities('demo.browse.php?filename='.rawurlencode($row['filename'])).'">'.FixTextFields($row['filename']).'</a></td></tr>'; - } - echo '</table>'; - - } - echo '<hr>'; - -} elseif (!empty($_REQUEST['correctcase'])) { - - $SQLquery = 'SELECT `filename`, `fileformat`'; - $SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; - $SQLquery .= ' WHERE (`fileformat` <> "")'; - $SQLquery .= ' ORDER BY `filename` ASC'; - $result = safe_mysql_query($SQLquery); - echo 'Copy and paste the following into a DOS batch file. You may have to run this script more than once to catch all the changes (remember to scan for deleted/changed files and rescan directory between scans)<hr>'; - echo '<PRE>'; - $lastdir = ''; - while ($row = mysql_fetch_array($result)) { - set_time_limit(30); - $CleanedFilename = CleanUpFileName($row['filename']); - if ($row['filename'] != $CleanedFilename) { - if (strtolower($lastdir) != strtolower(str_replace('/', '\\', dirname($row['filename'])))) { - $lastdir = str_replace('/', '\\', dirname($row['filename'])); - echo 'cd "'.$lastdir.'"'."\n"; - } - echo 'ren "'.basename($row['filename']).'" "'.basename(CleanUpFileName($row['filename'])).'"'."\n"; - } - } - echo '</PRE>'; - echo '<hr>'; - -} - -function CleanUpFileName($filename) { - $DirectoryName = dirname($filename); - $FileExtension = fileextension(basename($filename)); - $BaseFilename = basename($filename, '.'.$FileExtension); - - $BaseFilename = strtolower($BaseFilename); - $BaseFilename = str_replace('_', ' ', $BaseFilename); - //$BaseFilename = str_replace('-', ' - ', $BaseFilename); - $BaseFilename = str_replace('(', ' (', $BaseFilename); - $BaseFilename = str_replace('( ', '(', $BaseFilename); - $BaseFilename = str_replace(')', ') ', $BaseFilename); - $BaseFilename = str_replace(' )', ')', $BaseFilename); - $BaseFilename = str_replace(' \'\'', ' “', $BaseFilename); - $BaseFilename = str_replace('\'\' ', '” ', $BaseFilename); - $BaseFilename = str_replace(' vs ', ' vs. ', $BaseFilename); - while (strstr($BaseFilename, ' ') !== false) { - $BaseFilename = str_replace(' ', ' ', $BaseFilename); - } - $BaseFilename = trim($BaseFilename); - - return $DirectoryName.'/'.BetterUCwords($BaseFilename).'.'.strtolower($FileExtension); -} - -function BetterUCwords($string) { - $stringlength = strlen($string); - - $string{0} = strtoupper($string{0}); - for ($i = 1; $i < $stringlength; $i++) { - if (($string{$i - 1} == '\'') && ($i > 1) && (($string{$i - 2} == 'O') || ($string{$i - 2} == ' '))) { - // O'Clock, 'Em - $string{$i} = strtoupper($string{$i}); - } elseif (ereg('^[\'A-Za-z0-9À-ÿ]$', $string{$i - 1})) { - $string{$i} = strtolower($string{$i}); - } else { - $string{$i} = strtoupper($string{$i}); - } - } - - static $LowerCaseWords = array('vs.', 'feat.'); - static $UpperCaseWords = array('DJ', 'USA', 'II', 'MC', 'CD', 'TV', '\'N\''); - - $OutputListOfWords = array(); - $ListOfWords = explode(' ', $string); - foreach ($ListOfWords as $ThisWord) { - if (in_array(strtolower(str_replace('(', '', $ThisWord)), $LowerCaseWords)) { - $ThisWord = strtolower($ThisWord); - } elseif (in_array(strtoupper(str_replace('(', '', $ThisWord)), $UpperCaseWords)) { - $ThisWord = strtoupper($ThisWord); - } elseif ((substr($ThisWord, 0, 2) == 'Mc') && (strlen($ThisWord) > 2)) { - $ThisWord{2} = strtoupper($ThisWord{2}); - } elseif ((substr($ThisWord, 0, 3) == 'Mac') && (strlen($ThisWord) > 3)) { - $ThisWord{3} = strtoupper($ThisWord{3}); - } - $OutputListOfWords[] = $ThisWord; - } - $UCstring = implode(' ', $OutputListOfWords); - $UCstring = str_replace(' From “', ' from “', $UCstring); - $UCstring = str_replace(' \'n\' ', ' \'N\' ', $UCstring); - - return $UCstring; -} - - - -echo '<hr><form action="'.FixTextFields($_SERVER['PHP_SELF']).'">'; -echo '<b>Warning:</b> Scanning a new directory will erase all previous entries in the database!<br>'; -echo 'Directory: <input type="text" name="scan" size="50" value="'.FixTextFields(!empty($_REQUEST['scan']) ? $_REQUEST['scan'] : '').'"> '; -echo '<input type="submit" value="Go" onClick="return confirm(\'Are you sure you want to erase all entries in the database and start scanning again?\');">'; -echo '</form>'; -echo '<hr><form action="'.FixTextFields($_SERVER['PHP_SELF']).'">'; -echo 'Re-scanning a new directory will only add new, previously unscanned files into the list (and not erase the database).<br>'; -echo 'Directory: <input type="text" name="newscan" size="50" value="'.FixTextFields(!empty($_REQUEST['newscan']) ? $_REQUEST['newscan'] : '').'"> '; -echo '<input type="SUBMIT" value="Go">'; -echo '</form><hr>'; -echo '<ul>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?deadfilescheck=1').'">Remove deleted or changed files from database</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?md5datadupes=1').'">List files with identical MD5_DATA values</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?artisttitledupes=1').'">List files with identical artist + title</a> (<a href="'.$_SERVER['PHP_SELF'].'?artisttitledupes=1&samemix=1">same mix only</a>)</li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?fileextensions=1').'">File with incorrect file extension</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?formatdistribution=1').'">File Format Distribution</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?audiobitrates=1').'">Audio Bitrate Distribution</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?vbrmethod=1').'">VBR_Method Distribution</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?tagtypes=1').'">Tag Type Distribution</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?genredistribution='.urlencode('%')).'">Genre Distribution</a></li>'; -//echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?missingtrackvolume=1').'">Scan for missing track volume information (update database from pre-v1.7.0b5)</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?encoderoptionsdistribution=1').'">Encoder Options Distribution</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?encodedbydistribution='.urlencode('%')).'">Encoded By (ID3v2) Distribution</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?trackinalbum=1').'">Track number in Album field</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?tracknoalbum=1').'">Track number, but no Album</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?titlefeat=1').'">"feat." in Title field</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?emptygenres=1').'">Blank genres</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?trackzero=1').'">Track "zero"</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?nonemptycomments=1').'">non-empty comments</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?unsynchronizedtags=2A1').'">Tags that are not synchronized</a> (<a href="'.$_SERVER['PHP_SELF'].'?unsynchronizedtags=2A1&autofix=1">autofix</a>)</li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?filenamepattern='.urlencode('[N] A - T {R}')).'">Filenames that don\'t match pattern</a> (<a href="?filenamepattern='.urlencode('[N] A - T {R}').'&autofix=1">auto-fix</a>)</li>'; -//echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?filenamepattern='.urlencode('A - T')).'">Filenames that don\'t match pattern</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?correctcase=1').'">Correct filename case (Win/DOS)</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?fixid3v1padding=1').'">Fix ID3v1 invalid padding</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?errorswarnings=1').'">Files with Errors and/or Warnings</a></li>'; -echo '<li><a href="'.htmlentities($_SERVER['PHP_SELF'].'?rescanerrors=1').'">Re-scan only files with Errors and/or Warnings</a></li>'; -echo '</ul>'; - -$SQLquery = 'SELECT COUNT(*) AS `TotalFiles`, SUM(`playtime_seconds`) AS `TotalPlaytime`, SUM(`filesize`) AS `TotalFilesize`, AVG(`playtime_seconds`) AS `AvgPlaytime`, AVG(`filesize`) AS `AvgFilesize`, AVG(`audio_bitrate` + `video_bitrate`) AS `AvgBitrate`'; -$SQLquery .= ' FROM `'.GETID3_DB_TABLE.'`'; -$result = mysql_query($SQLquery); -if ($row = mysql_fetch_array($result)) { - echo '<hr><b>Currently in the database:</b><TABLE>'; - echo '<tr><TH ALIGN="LEFT">Total Files</th><td>'.number_format($row['TotalFiles']).'</td></tr>'; - echo '<tr><TH ALIGN="LEFT">Total Filesize</th><td>'.number_format($row['TotalFilesize'] / 1048576).' MB</td></tr>'; - echo '<tr><TH ALIGN="LEFT">Total Playtime</th><td>'.number_format($row['TotalPlaytime'] / 3600, 1).' hours</td></tr>'; - echo '<tr><TH ALIGN="LEFT">Average Filesize</th><td>'.number_format($row['AvgFilesize'] / 1048576, 1).' MB</td></tr>'; - echo '<tr><TH ALIGN="LEFT">Average Playtime</th><td>'.getid3_lib::PlaytimeString($row['AvgPlaytime']).'</td></tr>'; - echo '<tr><TH ALIGN="LEFT">Average Bitrate</th><td>'.BitrateText($row['AvgBitrate'] / 1000, 1).'</td></tr>'; - echo '</table>'; -} - -?> -</BODY> -</HTML> \ No newline at end of file diff --git a/apps/media/getID3/demos/demo.simple.php b/apps/media/getID3/demos/demo.simple.php deleted file mode 100644 index db937f1e2da8819960d13df7871990382f070757..0000000000000000000000000000000000000000 --- a/apps/media/getID3/demos/demo.simple.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php -///////////////////////////////////////////////////////////////// -/// getID3() by James Heinrich <info@getid3.org> // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// // -// /demo/demo.simple.php - part of getID3() // -// Sample script for scanning a single directory and // -// displaying a few pieces of information for each file // -// See readme.txt for more details // -// /// -///////////////////////////////////////////////////////////////// - -echo '<HTML><HEAD>'; -echo '<TITLE>getID3() - /demo/demo.simple.php (sample script)</TITLE>'; -echo '<STYLE>BODY,TD,TH { font-family: sans-serif; font-size: 9pt; }</STYLE>'; -echo '</HEAD><BODY>'; - - -// include getID3() library (can be in a different directory if full path is specified) -require_once('../getid3/getid3.php'); - -// Initialize getID3 engine -$getID3 = new getID3; - -$DirectoryToScan = '/change/to/directory/you/want/to/scan'; // change to whatever directory you want to scan -$dir = opendir($DirectoryToScan); -echo '<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3">'; -echo '<TR><TH>Filename</TH><TH>Artist</TH><TH>Title</TH><TH>Bitrate</TH><TH>Playtime</TH></TR>'; -while (($file = readdir($dir)) !== false) { - $FullFileName = realpath($DirectoryToScan.'/'.$file); - if (is_file($FullFileName)) { - set_time_limit(30); - - $ThisFileInfo = $getID3->analyze($FullFileName); - - getid3_lib::CopyTagsToComments($ThisFileInfo); - - // output desired information in whatever format you want - echo '<TR>'; - echo '<TD>'.$ThisFileInfo['filenamepath'].'</TD>'; - echo '<TD>'.(!empty($ThisFileInfo['comments_html']['artist']) ? implode('<BR>', $ThisFileInfo['comments_html']['artist']) : ' ').'</TD>'; - echo '<TD>'.(!empty($ThisFileInfo['comments_html']['title']) ? implode('<BR>', $ThisFileInfo['comments_html']['title']) : ' ').'</TD>'; - echo '<TD ALIGN="RIGHT">'.(!empty($ThisFileInfo['audio']['bitrate']) ? round($ThisFileInfo['audio']['bitrate'] / 1000).' kbps' : ' ').'</TD>'; - echo '<TD ALIGN="RIGHT">'.(!empty($ThisFileInfo['playtime_string']) ? $ThisFileInfo['playtime_string'] : ' ').'</TD>'; - echo '</TR>'; - } -} - -?> -</BODY> -</HTML> \ No newline at end of file diff --git a/apps/media/getID3/demos/demo.simple.write.php b/apps/media/getID3/demos/demo.simple.write.php deleted file mode 100644 index 468984e39e0d9a910c4af31581e6f6ad5914d926..0000000000000000000000000000000000000000 --- a/apps/media/getID3/demos/demo.simple.write.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php -///////////////////////////////////////////////////////////////// -/// getID3() by James Heinrich <info@getid3.org> // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// // -// /demo/demo.simple.write.php - part of getID3() // -// Sample script showing basic syntax for writing tags // -// See readme.txt for more details // -// /// -///////////////////////////////////////////////////////////////// - -$TaggingFormat = 'UTF-8'; - -require_once('../getid3/getid3.php'); -// Initialize getID3 engine -$getID3 = new getID3; -$getID3->setOption(array('encoding'=>$TaggingFormat)); - -require_once('../getid3/write.php'); -// Initialize getID3 tag-writing module -$tagwriter = new getid3_writetags; -//$tagwriter->filename = '/path/to/file.mp3'; -$tagwriter->filename = 'd:/file.mp3'; -$tagwriter->tagformats = array('id3v1', 'id3v2.3'); - -// set various options (optional) -$tagwriter->overwrite_tags = true; -$tagwriter->tag_encoding = $TaggingFormat; -$tagwriter->remove_other_tags = true; - -// populate data array -$TagData['title'][] = 'My Song'; -$TagData['artist'][] = 'The Artist'; -$TagData['album'][] = 'Greatest Hits'; -$TagData['year'][] = '2004'; -$TagData['genre'][] = 'Rock'; -$TagData['comment'][] = 'excellent!'; -$TagData['track'][] = '04/16'; - -$tagwriter->tag_data = $TagData; - -// write tags -if ($tagwriter->WriteTags()) { - echo 'Successfully wrote tags<br>'; - if (!empty($tagwriter->warnings)) { - echo 'There were some warnings:<br>'.implode('<br><br>', $tagwriter->warnings); - } -} else { - echo 'Failed to write tags!<br>'.implode('<br><br>', $tagwriter->errors); -} - -?> \ No newline at end of file diff --git a/apps/media/getID3/demos/demo.write.php b/apps/media/getID3/demos/demo.write.php deleted file mode 100644 index 6f03b4783834cfe9d422a38a588f7fecd345a983..0000000000000000000000000000000000000000 --- a/apps/media/getID3/demos/demo.write.php +++ /dev/null @@ -1,271 +0,0 @@ -<?php -///////////////////////////////////////////////////////////////// -/// getID3() by James Heinrich <info@getid3.org> // -// available at http://getid3.sourceforge.net // -// or http://www.getid3.org // -///////////////////////////////////////////////////////////////// -// // -// /demo/demo.write.php - part of getID3() // -// sample script for demonstrating writing ID3v1 and ID3v2 // -// tags for MP3, or Ogg comment tags for Ogg Vorbis // -// See readme.txt for more details // -// /// -///////////////////////////////////////////////////////////////// - - -die('Due to a security issue, this demo has been disabled. It can be enabled by removing line 16 in demos/demo.write.php'); - - -$TaggingFormat = 'UTF-8'; - -header('Content-Type: text/html; charset='.$TaggingFormat); -echo '<HTML><HEAD><TITLE>getID3() - Sample tag writer</TITLE></HEAD><BODY>'; - -require_once('../getid3/getid3.php'); -// Initialize getID3 engine -$getID3 = new getID3; -$getID3->setOption(array('encoding'=>$TaggingFormat)); - -getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'write.php', __FILE__, true); - -$browsescriptfilename = 'demo.browse.php'; - -function FixTextFields($text) { - return htmlentities(getid3_lib::SafeStripSlashes($text), ENT_QUOTES); -} - -$Filename = (isset($_REQUEST['Filename']) ? getid3_lib::SafeStripSlashes($_REQUEST['Filename']) : ''); - - - -if (isset($_POST['WriteTags'])) { - - $TagFormatsToWrite = (isset($_POST['TagFormatsToWrite']) ? $_POST['TagFormatsToWrite'] : array()); - if (!empty($TagFormatsToWrite)) { - echo 'starting to write tag(s)<BR>'; - - $tagwriter = new getid3_writetags; - $tagwriter->filename = $Filename; - $tagwriter->tagformats = $TagFormatsToWrite; - $tagwriter->overwrite_tags = true; - $tagwriter->tag_encoding = $TaggingFormat; - if (!empty($_POST['remove_other_tags'])) { - $tagwriter->remove_other_tags = true; - } - - $commonkeysarray = array('Title', 'Artist', 'Album', 'Year', 'Comment'); - foreach ($commonkeysarray as $key) { - if (!empty($_POST[$key])) { - $TagData[strtolower($key)][] = getid3_lib::SafeStripSlashes($_POST[$key]); - } - } - if (!empty($_POST['Genre'])) { - $TagData['genre'][] = getid3_lib::SafeStripSlashes($_POST['Genre']); - } - if (!empty($_POST['GenreOther'])) { - $TagData['genre'][] = getid3_lib::SafeStripSlashes($_POST['GenreOther']); - } - if (!empty($_POST['Track'])) { - $TagData['track'][] = getid3_lib::SafeStripSlashes($_POST['Track'].(!empty($_POST['TracksTotal']) ? '/'.$_POST['TracksTotal'] : '')); - } - - if (!empty($_FILES['userfile']['tmp_name'])) { - if (in_array('id3v2.4', $tagwriter->tagformats) || in_array('id3v2.3', $tagwriter->tagformats) || in_array('id3v2.2', $tagwriter->tagformats)) { - if (is_uploaded_file($_FILES['userfile']['tmp_name'])) { - if ($fd = @fopen($_FILES['userfile']['tmp_name'], 'rb')) { - $APICdata = fread($fd, filesize($_FILES['userfile']['tmp_name'])); - fclose ($fd); - - list($APIC_width, $APIC_height, $APIC_imageTypeID) = GetImageSize($_FILES['userfile']['tmp_name']); - $imagetypes = array(1=>'gif', 2=>'jpeg', 3=>'png'); - if (isset($imagetypes[$APIC_imageTypeID])) { - - $TagData['attached_picture'][0]['data'] = $APICdata; - $TagData['attached_picture'][0]['picturetypeid'] = $_POST['APICpictureType']; - $TagData['attached_picture'][0]['description'] = $_FILES['userfile']['name']; - $TagData['attached_picture'][0]['mime'] = 'image/'.$imagetypes[$APIC_imageTypeID]; - - } else { - echo '<B>invalid image format (only GIF, JPEG, PNG)</B><BR>'; - } - } else { - echo '<B>cannot open '.$_FILES['userfile']['tmp_name'].'</B><BR>'; - } - } else { - echo '<B>!is_uploaded_file('.$_FILES['userfile']['tmp_name'].')</B><BR>'; - } - } else { - echo '<B>WARNING:</B> Can only embed images for ID3v2<BR>'; - } - } - - $tagwriter->tag_data = $TagData; - if ($tagwriter->WriteTags()) { - echo 'Successfully wrote tags<BR>'; - if (!empty($tagwriter->warnings)) { - echo 'There were some warnings:<BLOCKQUOTE STYLE="background-color:#FFCC33; padding: 10px;">'.implode('<BR><BR>', $tagwriter->warnings).'</BLOCKQUOTE>'; - } - } else { - echo 'Failed to write tags!<BLOCKQUOTE STYLE="background-color:#FF9999; padding: 10px;">'.implode('<BR><BR>', $tagwriter->errors).'</BLOCKQUOTE>'; - } - - } else { - - echo 'WARNING: no tag formats selected for writing - nothing written'; - - } - echo '<HR>'; - -} - - -echo '<H4>Sample tag editor/writer</H4>'; -echo '<A HREF="'.$browsescriptfilename.'?listdirectory='.rawurlencode(realpath(dirname($Filename))).'">Browse current directory</A><BR>'; -if (!empty($Filename)) { - echo '<A HREF="'.$_SERVER['PHP_SELF'].'">Start Over</A><BR><BR>'; - echo '<TABLE BORDER="3" CELLSPACING="0" CELLPADDING="4"><FORM ACTION="'.$_SERVER['PHP_SELF'].'" METHOD="POST" ENCTYPE="multipart/form-data">'; - echo '<TR><TD ALIGN="RIGHT"><B>Filename: </B></TD><TD><INPUT TYPE="HIDDEN" NAME="Filename" VALUE="'.FixTextFields($Filename).'"><A HREF="'.$browsescriptfilename.'?filename='.rawurlencode($Filename).'" TARGET="_blank">'.$Filename.'</A></TD></TR>'; - if (file_exists($Filename)) { - - // Initialize getID3 engine - $getID3 = new getID3; - $OldThisFileInfo = $getID3->analyze($Filename); - getid3_lib::CopyTagsToComments($OldThisFileInfo); - - switch ($OldThisFileInfo['fileformat']) { - case 'mp3': - case 'mp2': - case 'mp1': - $ValidTagTypes = array('id3v1', 'id3v2.3', 'ape'); - break; - - case 'mpc': - $ValidTagTypes = array('ape'); - break; - - case 'ogg': - if (@$OldThisFileInfo['audio']['dataformat'] == 'flac') { - //$ValidTagTypes = array('metaflac'); - // metaflac doesn't (yet) work with OggFLAC files - $ValidTagTypes = array(); - } else { - $ValidTagTypes = array('vorbiscomment'); - } - break; - - case 'flac': - $ValidTagTypes = array('metaflac'); - break; - - case 'real': - $ValidTagTypes = array('real'); - break; - - default: - $ValidTagTypes = array(); - break; - } - echo '<TR><TD ALIGN="RIGHT"><B>Title</B></TD> <TD><INPUT TYPE="TEXT" SIZE="40" NAME="Title" VALUE="'.FixTextFields(@implode(', ', @$OldThisFileInfo['comments']['title'])).'"></TD></TR>'; - echo '<TR><TD ALIGN="RIGHT"><B>Artist</B></TD><TD><INPUT TYPE="TEXT" SIZE="40" NAME="Artist" VALUE="'.FixTextFields(@implode(', ', @$OldThisFileInfo['comments']['artist'])).'"></TD></TR>'; - echo '<TR><TD ALIGN="RIGHT"><B>Album</B></TD> <TD><INPUT TYPE="TEXT" SIZE="40" NAME="Album" VALUE="'.FixTextFields(@implode(', ', @$OldThisFileInfo['comments']['album'])).'"></TD></TR>'; - echo '<TR><TD ALIGN="RIGHT"><B>Year</B></TD> <TD><INPUT TYPE="TEXT" SIZE="4" NAME="Year" VALUE="'.FixTextFields(@implode(', ', @$OldThisFileInfo['comments']['year'])).'"></TD></TR>'; - - $TracksTotal = ''; - $TrackNumber = ''; - if (!empty($OldThisFileInfo['comments']['tracknumber']) && is_array($OldThisFileInfo['comments']['tracknumber'])) { - $RawTrackNumberArray = $OldThisFileInfo['comments']['tracknumber']; - } elseif (!empty($OldThisFileInfo['comments']['track']) && is_array($OldThisFileInfo['comments']['track'])) { - $RawTrackNumberArray = $OldThisFileInfo['comments']['track']; - } else { - $RawTrackNumberArray = array(); - } - foreach ($RawTrackNumberArray as $key => $value) { - if (strlen($value) > strlen($TrackNumber)) { - // ID3v1 may store track as "3" but ID3v2/APE would store as "03/16" - $TrackNumber = $value; - } - } - if (strstr($TrackNumber, '/')) { - list($TrackNumber, $TracksTotal) = explode('/', $TrackNumber); - } - echo '<TR><TD ALIGN="RIGHT"><B>Track</B></TD><TD><INPUT TYPE="TEXT" SIZE="2" NAME="Track" VALUE="'.FixTextFields($TrackNumber).'"> of <INPUT TYPE="TEXT" SIZE="2" NAME="TracksTotal" VALUE="'.FixTextFields($TracksTotal).'"></TD></TR>'; - - $ArrayOfGenresTemp = getid3_id3v1::ArrayOfGenres(); // get the array of genres - foreach ($ArrayOfGenresTemp as $key => $value) { // change keys to match displayed value - $ArrayOfGenres[$value] = $value; - } - unset($ArrayOfGenresTemp); // remove temporary array - unset($ArrayOfGenres['Cover']); // take off these special cases - unset($ArrayOfGenres['Remix']); - unset($ArrayOfGenres['Unknown']); - $ArrayOfGenres[''] = '- Unknown -'; // Add special cases back in with renamed key/value - $ArrayOfGenres['Cover'] = '-Cover-'; - $ArrayOfGenres['Remix'] = '-Remix-'; - asort($ArrayOfGenres); // sort into alphabetical order - echo '<TR><TD ALIGN="RIGHT"><B>Genre</B></TD><TD><SELECT NAME="Genre">'; - $AllGenresArray = (!empty($OldThisFileInfo['comments']['genre']) ? $OldThisFileInfo['comments']['genre'] : array()); - foreach ($ArrayOfGenres as $key => $value) { - echo '<OPTION VALUE="'.$key.'"'; - if (in_array($key, $AllGenresArray)) { - echo ' SELECTED'; - unset($AllGenresArray[array_search($key, $AllGenresArray)]); - sort($AllGenresArray); - } - echo '>'.$value.'</OPTION>'; - //echo '<OPTION VALUE="'.FixTextFields($value).'"'.((@$OldThisFileInfo['comments']['genre'][0] == $value) ? ' SELECTED' : '').'>'.$value.'</OPTION>'; - } - echo '</SELECT><INPUT TYPE="TEXT" NAME="GenreOther" SIZE="10" VALUE="'.FixTextFields(@$AllGenresArray[0]).'"></TD></TR>'; - - echo '<TR><TD ALIGN="RIGHT"><B>Write Tags</B></TD><TD>'; - foreach ($ValidTagTypes as $ValidTagType) { - echo '<INPUT TYPE="CHECKBOX" NAME="TagFormatsToWrite[]" VALUE="'.$ValidTagType.'"'; - if (count($ValidTagTypes) == 1) { - echo ' CHECKED'; - } else { - switch ($ValidTagType) { - case 'id3v2.2': - case 'id3v2.3': - case 'id3v2.4': - if (isset($OldThisFileInfo['tags']['id3v2'])) { - echo ' CHECKED'; - } - break; - - default: - if (isset($OldThisFileInfo['tags'][$ValidTagType])) { - echo ' CHECKED'; - } - break; - } - } - echo '>'.$ValidTagType.'<BR>'; - } - if (count($ValidTagTypes) > 1) { - echo '<hr><input type="checkbox" name="remove_other_tags" value="1"> Remove non-selected tag formats when writing new tag<br>'; - } - echo '</TD></TR>'; - - echo '<TR><TD ALIGN="RIGHT"><B>Comment</B></TD><TD><TEXTAREA COLS="30" ROWS="3" NAME="Comment" WRAP="VIRTUAL">'.(isset($OldThisFileInfo['comments']['comment']) ? @implode("\n", $OldThisFileInfo['comments']['comment']) : '').'</TEXTAREA></TD></TR>'; - - echo '<TR><TD ALIGN="RIGHT"><B>Picture</B><BR>(ID3v2 only)</TD><TD><INPUT TYPE="FILE" NAME="userfile" ACCEPT="image/jpeg, image/gif, image/png"><BR>'; - echo '<SELECT NAME="APICpictureType">'; - $APICtypes = getid3_id3v2::APICPictureTypeLookup('', true); - foreach ($APICtypes as $key => $value) { - echo '<OPTION VALUE="'.FixTextFields($key).'">'.FixTextFields($value).'</OPTION>'; - } - echo '</SELECT></TD></TR>'; - echo '<TR><TD ALIGN="CENTER" COLSPAN="2"><INPUT TYPE="SUBMIT" NAME="WriteTags" VALUE="Save Changes"> '; - echo '<INPUT TYPE="RESET" VALUE="Reset"></TD></TR>'; - - } else { - - echo '<TR><TD ALIGN="RIGHT"><B>Error</B></TD><TD>'.FixTextFields($Filename).' does not exist</TD></TR>'; - - } - echo '</FORM></TABLE>'; - -} - -?> -</BODY> -</HTML> \ No newline at end of file diff --git a/apps/media/getID3/demos/getid3.css b/apps/media/getID3/demos/getid3.css deleted file mode 100644 index 0694eff2ad147e463d33d1e606870094bdee9a3b..0000000000000000000000000000000000000000 --- a/apps/media/getID3/demos/getid3.css +++ /dev/null @@ -1,195 +0,0 @@ - -/** -* Common elements -*/ - -body { - font: 12px Verdana, sans-serif; - background-color: white; - color: black; - margin-top: 6px; - margin-bottom: 30px; - margin-left: 12px; - margin-right: 12px; -} - - -h1 { - font: bold 18px Verdana, sans-serif; - line-height: 26px; - margin-top: 12px; - margin-bottom: 15px; - margin-left: 0px; - margin-right: 7px; - background-color: #e6eaf6; - padding-left: 10px; - padding-top: 2px; - padding-bottom: 4px; -} - - -h3 { - font: bold 13px Verdana, sans-serif; - line-height: 26px; - margin-top: 12px; - margin-bottom: 0px; - margin-left: 0px; - margin-right: 7px; - padding-left: 4px; -} - - -ul { - margin-top: 0px; -} - - -p, li { - font: 9pt/135% sans-serif; - margin-top: 1x; - margin-bottom: 0x; -} - - -a, a:link, a:visited { - color: #0000cc; -} - - -hr { - height: 0; - border: solid gray 0; - border-top-width: thin; - width: 700px; -} - - -table.table td { - font: 9pt sans-serif; - padding-top: 1px; - padding-bottom: 1px; - padding-left: 5px; - padding-right: 5px; -} - - -table.table td.header { - background-color: #cccccc; - padding-top: 2px; - padding-bottom: 2px; - font-weight: bold; -} - - -table.table tr.even_files { - background-color: #fefefe; -} - - -table.table tr.odd_files { - background-color: #e9e9e9; -} - - -table.dump { - border-top: solid 1px #cccccc; - border-left: solid 1px #cccccc; - margin: 2px; -} - - -table.dump td { - font: 9pt sans-serif; - padding-top: 1px; - padding-bottom: 1px; - padding-left: 5px; - padding-right: 5px; - border-right: solid 1px #cccccc; - border-bottom: solid 1px #cccccc; -} - - -td.dump_string { - font-weight: bold; - color: #0000cc; -} - - -td.dump_integer { - color: #cc0000; - font-weight: bold; -} - - -td.dump_double { - color: orange; - font-weight: bold; -} - - -td.dump_boolean { - color: #333333; - font-weight: bold; -} - - -.error { - color: red -} - - - - -/** -* Tool Tips -*/ - -.tooltip { - font: 9pt sans-serif; - background: #ffffe1; - color: black; - border: black 1px solid; - margin: 2px; - padding: 7px; - position: absolute; - top: 10px; - left: 10px; - z-index: 10000; - visibility: hidden; -} - - -.tooltip p { - margin-top: -2px; - margin-bottom: 4px; -} - - - - - /** - * Forms - */ - -table.form td { - font: 9pt/135% sans-serif; - padding: 2px; -} - - -select, input { - font: 9pt/135% sans-serif; -} - -.select, .field { - width: 260px; -} - -#sel_field { - width: 85px; -} - - -.button { - margin-top: 10px; -} diff --git a/apps/media/getID3/demos/index.php b/apps/media/getID3/demos/index.php deleted file mode 100644 index 13783f0daf44dfa87fe1c09825957d8bf787bd7f..0000000000000000000000000000000000000000 --- a/apps/media/getID3/demos/index.php +++ /dev/null @@ -1 +0,0 @@ -In this directory are a number of examples of how to use <A HREF="http://www.getid3.org">getID3()</A> - if you don't know what to run, take a look at <A HREF="demo.browse.php">demo.browse.php</A> \ No newline at end of file diff --git a/apps/media/getID3/getid3/getid3.lib.php b/apps/media/getID3/getid3/getid3.lib.php index 4ed5e361f50339fdf913df89ba4af472e4c835b0..9322cae4dd813deac1a0ba70c4c83ea84137e462 100644 --- a/apps/media/getID3/getid3/getid3.lib.php +++ b/apps/media/getID3/getid3/getid3.lib.php @@ -1006,7 +1006,7 @@ class getid3_lib } - function MultiByteCharString2HTML($string, $charset='ISO-8859-1') { + static function MultiByteCharString2HTML($string, $charset='ISO-8859-1') { $HTMLstring = ''; switch ($charset) { @@ -1187,7 +1187,7 @@ class getid3_lib return (isset($ImageTypesLookup[$imagetypeid]) ? $ImageTypesLookup[$imagetypeid] : ''); } - function CopyTagsToComments(&$ThisFileInfo) { + static function CopyTagsToComments(&$ThisFileInfo) { // Copy all entries from ['tags'] into common ['comments'] if (!empty($ThisFileInfo['tags'])) { diff --git a/apps/media/img/jplayer.blue.monday.jpg b/apps/media/img/jplayer.blue.monday.jpg deleted file mode 100644 index 29c9382df7425f5b3e006dd540616c9d92540c7f..0000000000000000000000000000000000000000 Binary files a/apps/media/img/jplayer.blue.monday.jpg and /dev/null differ diff --git a/apps/media/img/jplayer.blue.monday.png b/apps/media/img/jplayer.blue.monday.png deleted file mode 100644 index 16cf2892993cb11340189e1158b3f810aa9be221..0000000000000000000000000000000000000000 Binary files a/apps/media/img/jplayer.blue.monday.png and /dev/null differ diff --git a/apps/media/img/pbar-ani.gif b/apps/media/img/pbar-ani.gif deleted file mode 100644 index 0dfd45b885a2dd69a4c16febc5e886300cdb08e0..0000000000000000000000000000000000000000 Binary files a/apps/media/img/pbar-ani.gif and /dev/null differ diff --git a/apps/media/index.php b/apps/media/index.php index fe724b45ddf2e850809e35be21a3d30f8fa73d44..419d4ae0bde1bbc70ef0be4232201132236fc23f 100644 --- a/apps/media/index.php +++ b/apps/media/index.php @@ -25,10 +25,8 @@ require_once('../../lib/base.php'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - header( "Location: ".OC_Helper::linkTo( '', 'index.php' )); - exit(); -} +OC_Util::checkLoggedIn(); +OC_Util::checkAppEnabled('media'); require_once('lib_collection.php'); require_once('lib_scanner.php'); @@ -39,7 +37,6 @@ OC_Util::addScript('media','playlist'); OC_Util::addScript('media','collection'); OC_Util::addScript('media','scanner'); OC_Util::addScript('media','jquery.jplayer.min'); -OC_Util::addStyle('media','player'); OC_Util::addStyle('media','music'); OC_App::setActiveNavigationEntry( 'media_index' ); diff --git a/apps/media/js/collection.js b/apps/media/js/collection.js index 13eb0aff7d98a2901c8944e5900bea93384ef240..29ba45919cfd101771a94e8e27e49b679e5cda48 100644 --- a/apps/media/js/collection.js +++ b/apps/media/js/collection.js @@ -50,6 +50,10 @@ Collection={ } } + Collection.artists.sort(function(a,b){ + return a.name.localeCompare(b.name); + }); + Collection.loaded=true; Collection.loading=false; for(var i=0;i<Collection.loadedListeners.length;i++){ @@ -79,8 +83,13 @@ Collection={ $.each(Collection.artists,function(i,artist){ if(artist.name && artist.songs.length>0){ var tr=template.clone().removeClass('template'); - tr.find('td.title a').text(artist.songs.length+' '+t('media','songs')); - tr.find('td.album a').text(artist.albums.length+' '+t('media','albums')); + if(artist.songs.length>1){ + tr.find('td.title a').text(artist.songs.length+' '+t('media','songs')); + tr.find('td.album a').text(artist.albums.length+' '+t('media','albums')); + }else{ + tr.find('td.title a').text(artist.songs[0].name); + tr.find('td.album a').text(artist.albums[0].name); + } tr.find('td.artist a').text(artist.name); tr.data('artistData',artist); tr.find('td.artist a').click(function(event){ @@ -90,18 +99,20 @@ Collection={ Collection.parent.find('tr').removeClass('active'); $('tr[data-artist="'+artist.name+'"]').addClass('active'); }); - var expander=$('<a class="expander">></a>'); - expander.data('expanded',false); - expander.click(function(event){ - var tr=$(this).parent().parent(); - if(expander.data('expanded')){ - Collection.hideArtist(tr.data('artist')); - }else{ - Collection.showArtist(tr.data('artist')); - } - }); - tr.find('td.artist').addClass('buttons'); - Collection.addButtons(tr,artist); + if(artist.songs.length>1){ + var expander=$('<a class="expander">></a>'); + expander.data('expanded',false); + expander.click(function(event){ + var tr=$(this).parent().parent(); + if(expander.data('expanded')){ + Collection.hideArtist(tr.data('artist')); + }else{ + Collection.showArtist(tr.data('artist')); + } + }); + } + tr.find('td.artist').addClass('buttons'); + Collection.addButtons(tr,artist); tr.children('td.artist').append(expander); tr.attr('data-artist',artist.name); Collection.parent.find('tbody').append(tr); @@ -115,14 +126,16 @@ Collection={ var nextRow=tr.next(); var artist=tr.data('artistData'); var first=true; - $.each(artist.albums,function(foo,album){ + $.each(artist.albums,function(j,album){ $.each(album.songs,function(i,song){ if(first){ newRow=tr; }else{ var newRow=tr.clone(); + newRow.find('td.artist').text(''); + newRow.find('.expander').remove(); } - newRow.find('.expander').remove(); + newRow.find('td.album .expander').remove(); if(i==0){ newRow.find('td.album a').text(album.name); newRow.find('td.album a').click(function(event){ @@ -132,21 +145,23 @@ Collection={ Collection.parent.find('tr').removeClass('active'); $('tr[data-album="'+album.name+'"]').addClass('active'); }); - var expander=$('<a class="expander">v </a>'); - expander.data('expanded',true); - expander.click(function(event){ - var tr=$(this).parent().parent(); - if(expander.data('expanded')) { - Collection.hideAlbum(tr.data('artist'),tr.data('album')); - } else { - Collection.showAlbum(tr.data('artist'),tr.data('album')); - } - }); - newRow.children('td.artist').append(expander); - Collection.addButtons(newRow,album); + if(album.songs.length>1){ + var expander=$('<a class="expander">v </a>'); + expander.data('expanded',true); + expander.click(function(event){ + var tr=$(this).parent().parent(); + if(expander.data('expanded')) { + Collection.hideAlbum(tr.data('artist'),tr.data('album')); + } else { + Collection.showAlbum(tr.data('artist'),tr.data('album')); + } + }); + newRow.children('td.album').append(expander); + } + Collection.addButtons(newRow,album); } else { newRow.find('td.album a').text(''); - Collection.addButtons(newRow,song); + Collection.addButtons(newRow,song); } newRow.find('td.title a').text(song.name); newRow.find('td.title a').click(function(event){ @@ -159,6 +174,7 @@ Collection={ newRow.attr('data-album',album.name); newRow.attr('data-title',song.name); newRow.attr('data-artist',artist.name); + newRow.data('albumData',album); if(!first){ nextRow.before(newRow); } @@ -166,43 +182,62 @@ Collection={ }); }); tr.removeClass('collapsed'); - tr.find('a.expander').data('expanded',true); - tr.find('a.expander').addClass('expanded'); - tr.find('a.expander').text('v'); + tr.find('td.artist a.expander').data('expanded',true); + tr.find('td.artist a.expander').addClass('expanded'); + tr.find('td.artist a.expander').text('v'); }, hideArtist:function(artist){ var tr=Collection.parent.find('tr[data-artist="'+artist+'"]'); - if(tr.length>1){ - var artist=tr.first().data('artistData'); - tr.first().find('td.album a').text(artist.albums.length+' '+t('media','albums')); - tr.first().find('td.title a').text(artist.songs.length+' '+t('media','songs')); - tr.first().find('td.album a').unbind('click'); - tr.first().find('td.title a').unbind('click'); - tr.each(function(i,row){ - if(i>0){ - $(row).remove(); - } - }); - tr.find('a.expander').data('expanded',false); - tr.find('a.expander').removeClass('expanded'); - tr.find('a.expander').text('>'); - Collection.addButtons(tr,artist); - } + var artist=tr.first().data('artistData'); + tr.first().find('td.album a').first().text(artist.albums.length+' '+t('media','albums')); + tr.first().find('td.album a.expander').remove(); + tr.first().find('td.title a').text(artist.songs.length+' '+t('media','songs')); + tr.first().find('td.album a').unbind('click'); + tr.first().find('td.title a').unbind('click'); + tr.each(function(i,row){ + if(i>0){ + $(row).remove(); + } + }); + tr.find('td.artist a.expander').data('expanded',false); + tr.find('td.artist a.expander').removeClass('expanded'); + tr.find('td.artist a.expander').text('>'); + Collection.addButtons(tr,artist); }, showAlbum:function(artist,album){ - var tr = Collection.parent.find('tr[data-artist="'+artist+'"][data-album="'+album+'"]'); - tr.find('a.expander').data('expanded',true); - tr.find('a.expander').addClass('expanded'); - tr.find('a.expander').text('v '); - tr.show(); + var tr = Collection.parent.find('tr[data-artist="'+artist+'"][data-album="'+album+'"]'); + var albumData=tr.data('albumData'); + tr.find('td.album a.expander').data('expanded',true); + tr.find('td.album a.expander').addClass('expanded'); + tr.find('td.album a.expander').text('v'); + var nextRow=tr.next(); + $.each(albumData.songs,function(i,song){ + if(i>0){ + var newRow=tr.clone(); + newRow.find('a.expander').remove(); + newRow.find('td.album a').text(''); + newRow.find('td.artist a').text(''); + }else{ + var newRow=tr; + } + newRow.find('td.title a').text(song.name); + if(i>0){ + nextRow.before(newRow); + } + }); }, hideAlbum:function(artist,album){ var tr = Collection.parent.find('tr[data-artist="'+artist+'"][data-album="'+album+'"]'); - tr.find('a.expander').data('expanded',false); - tr.find('a.expander').removeClass('expanded'); - tr.find('a.expander').text('> '); - tr.hide(); - tr.first().show(); + var albumData=tr.data('albumData'); + tr.first().find('td.title a').text(albumData.songs.length+' '+t('media','songs')); + tr.find('td.album a.expander').data('expanded',false); + tr.find('td.album a.expander').removeClass('expanded'); + tr.find('td.album a.expander').text('> '); + tr.each(function(i,row){ + if(i>0){ + $(row).remove(); + } + }); }, parent:null, hide:function(){ @@ -217,25 +252,15 @@ Collection={ } }, addButtons:function(parent,data){ - buttons = parent.find('.buttons'); - if(buttons.find('.add').length<=0) { - buttons.append('<img class="add" src="'+OC.imagePath('core','actions/play-add')+'"/>'); - } - if(buttons.find('.play').length<=0) { - buttons.append('<img class="play" src="'+OC.imagePath('core','actions/play')+'"/>'); - } + buttons = parent.find('.buttons'); + if(buttons.find('.add').length<=0) { + buttons.prepend('<img class="add action" src="'+OC.imagePath('core','actions/play-add')+'" title="Add to playlist" />'); + } buttons.find('.add').unbind('click'); buttons.find('.add').click(function(event){ - event.preventDefault(); + event.preventDefault(); PlayList.add(data,true); - PlayList.render(); - }); - buttons.find('.play').unbind('click'); - buttons.find('.play').click(function(event){ - event.preventDefault(); - PlayList.add(data); - PlayList.play(0,0); - PlayList.render(); + PlayList.render(); }); }, find:function(artistName,albumName,songName){ @@ -249,7 +274,7 @@ Collection={ }, findArtist:function(name){ for(var i=0;i<Collection.artists.length;i++){ - if(Collection.artists[i].artist_name==name){ + if(Collection.artists[i].name==name){ return Collection.artists[i]; } } @@ -258,7 +283,7 @@ Collection={ var artist=Collection.findArtist(artistName); if(artist){ for(var i=0;i<artist.albums.length;i++){ - if(artist.albums[i].album_name==albumName){ + if(artist.albums[i].name==albumName){ return artist.albums[i]; } } @@ -268,7 +293,7 @@ Collection={ var album=Collection.findAlbum(artistName,albumName); if(album){ for(var i=0;i<album.songs.length;i++){ - if(album.songs[i].song_name==songName){ + if(album.songs[i].name==songName){ return album.songs[i]; } } diff --git a/apps/media/js/loader.js b/apps/media/js/loader.js index ef8647eeca5c18dcbaa5a3f23ea9dcbf8d493dd6..dff4163897f29c643dd9dc4f0582683162327e06 100644 --- a/apps/media/js/loader.js +++ b/apps/media/js/loader.js @@ -22,16 +22,17 @@ function addAudio(filename){ function loadPlayer(type,ready){ if(!loadPlayer.done){ + loadPlayer.done=true; + OC.addStyle('media','player'); OC.addScript('media','jquery.jplayer.min',function(){ OC.addScript('media','player',function(){ - $('body').append($('<div id="playerPlaceholder"/>')) - $('#playerPlaceholder').append($('<div/>')).load(OC.filePath('media','templates','player.php'),function(){ - loadPlayer.done=true; + var navItem=$('#apps a[href="'+OC.linkTo('media','index.php')+'"]'); + navItem.height(navItem.height()); + navItem.load(OC.filePath('media','templates','player.php'),function(){ PlayList.init(type,ready); }); }); }); - OC.addStyle('media','player'); }else{ ready(); } @@ -52,7 +53,7 @@ $(document).ready(function() { var oc_current_user=OC.currentUser; if(typeof PlayList==='undefined'){ if(typeof localStorage !== 'undefined' && localStorage){ - if(localStorage.hasOwnProperty(oc_current_user+'oc_playlist_items') && localStorage.getItem(oc_current_user+'oc_playlist_items')!='[]' && localStorage.getItem(oc_current_user+'oc_playlist_active')!='true'){ + if(localStorage.getItem(oc_current_user+'oc_playlist_items') && localStorage.getItem(oc_current_user+'oc_playlist_items')!='[]' && localStorage.getItem(oc_current_user+'oc_playlist_active')!='true'){ loadPlayer(); } } diff --git a/apps/media/js/music.js b/apps/media/js/music.js index c04c579d1ca04805d164a3f16b1d8f9c4b1cce98..bf08220782948135191e1be5cf609a4e36765a13 100644 --- a/apps/media/js/music.js +++ b/apps/media/js/music.js @@ -15,7 +15,7 @@ $(document).ready(function(){ PlayList.play(oldSize); PlayList.render(); }); - var button=$('<input type="button" title="'+t('media','Add to playlist')+'" class="add"></input>'); + var button=$('<input type="button" title="'+t('media','Add album to playlist')+'" class="add"></input>'); button.css('background-image','url('+OC.imagePath('core','actions/play-add')+')') button.click(function(event){ event.stopPropagation(); @@ -23,6 +23,7 @@ $(document).ready(function(){ PlayList.render(); }); row.find('div.name').append(button); + button.tipsy({gravity:'n', fade:true, delayIn: 400, live:true}); } Collection.display(); }); diff --git a/apps/media/js/player.js b/apps/media/js/player.js index f696b87bbde5ec2bb2b0909440bd2021b2de84bb..3c022e9f8c48ebf69a57ceaf37d54c0645fca1bd 100644 --- a/apps/media/js/player.js +++ b/apps/media/js/player.js @@ -28,17 +28,19 @@ var PlayList={ if(index==null){ index=PlayList.current; } + PlayList.save(); if(index>-1 && index<items.length){ PlayList.current=index; if(PlayList.player){ if(PlayList.player.data('jPlayer').options.supplied!=items[index].type){//the the audio type changes we need to reinitialize jplayer PlayList.player.jPlayer("play",time); - localStorage.setItem(oc_current_user+'oc_playlist_time',time); + localStorage.setItem(oc_current_user+'oc_playlist_time',time); PlayList.player.jPlayer("destroy"); - PlayList.save(); // so that the init don't lose the playlist +// PlayList.save(); // so that the init don't lose the playlist PlayList.init(items[index].type,null); // init calls load that calls play }else{ PlayList.player.jPlayer("setMedia", items[PlayList.current]); + $(".jp-current-song").text(items[PlayList.current].name); items[index].playcount++; PlayList.player.jPlayer("play",time); if(index>0){ @@ -56,6 +58,7 @@ var PlayList={ if (typeof Collection !== 'undefined') { Collection.registerPlay(); } + PlayList.render(); if(ready){ ready(); } @@ -63,10 +66,12 @@ var PlayList={ }else{ localStorage.setItem(oc_current_user+'oc_playlist_time',time); localStorage.setItem(oc_current_user+'oc_playlist_playing','true'); - PlayList.save(); // so that the init don't lose the playlist +// PlayList.save(); // so that the init don't lose the playlist PlayList.init(items[index].type,null); // init calls load that calls play } } + $(".song").removeClass("collection_playing"); + $(".jp-playlist-" + index).addClass("collection_playing"); }, init:function(type,ready){ if(!PlayList.player){ @@ -82,7 +87,7 @@ var PlayList={ PlayList.render(); return false; }); - PlayList.player=$('#controls div.player'); + PlayList.player=$('#jp-player'); } $(PlayList.player).jPlayer({ ended:PlayList.next, @@ -100,7 +105,7 @@ var PlayList={ } }, volume:PlayList.volume, - cssSelectorAncestor:'#controls', + cssSelectorAncestor:'.player-controls', swfPath:OC.linkTo('media','js'), }); }, @@ -127,7 +132,7 @@ var PlayList={ var type=musicTypeFromFile(song.path); var item={name:song.name,type:type,artist:song.artist,album:song.album,length:song.length,playcount:song.playCount}; item[type]=PlayList.urlBase+encodeURIComponent(song.path); - PlayList.items.push(item); + PlayList.items.push(item); } }, addFile:function(path){ @@ -157,17 +162,15 @@ var PlayList={ if(typeof localStorage !== 'undefined' && localStorage){ localStorage.setItem(oc_current_user+'oc_playlist_items',JSON.stringify(PlayList.items)); localStorage.setItem(oc_current_user+'oc_playlist_current',PlayList.current); - if(PlayList.player) { - if(PlayList.player.data('jPlayer')) { - var time=Math.round(PlayList.player.data('jPlayer').status.currentTime); - localStorage.setItem(oc_current_user+'oc_playlist_time',time); - var volume=PlayList.player.data('jPlayer').options.volume*100; - localStorage.setItem(oc_current_user+'oc_playlist_volume',volume); - } - } - if(PlayList.active){ - localStorage.setItem(oc_current_user+'oc_playlist_active','false'); + if(PlayList.player) { + if(PlayList.player.data('jPlayer')) { + var time=Math.round(PlayList.player.data('jPlayer').status.currentTime); + localStorage.setItem(oc_current_user+'oc_playlist_time',time); + var volume=PlayList.player.data('jPlayer').options.volume*100; + localStorage.setItem(oc_current_user+'oc_playlist_volume',volume); + } } + localStorage.setItem(oc_current_user+'oc_playlist_active','true'); } }, load:function(){ @@ -204,6 +207,9 @@ var PlayList={ $(document).ready(function(){ $(window).bind('beforeunload', function (){ PlayList.save(); + if(PlayList.active){ + localStorage.setItem(oc_current_user+'oc_playlist_active','false'); + } }); $('jp-previous').tipsy({gravity:'n', fade:true, live:true}); diff --git a/apps/media/js/playlist.js b/apps/media/js/playlist.js index cb7f24522a4751bda0d891cd04f47d1794399c7f..57180b3be7b6323742105a896ad0e043f58e35fe 100644 --- a/apps/media/js/playlist.js +++ b/apps/media/js/playlist.js @@ -5,6 +5,7 @@ PlayList.render=function(){ var item=PlayList.items[i]; var li=$('<li/>'); li.append(item.name); + li.attr('class', 'jp-playlist-' + i); var img=$('<img class="remove svg action" src="'+OC.imagePath('core','actions/delete')+'"/>'); img.click(function(event){ event.stopPropagation(); @@ -18,6 +19,7 @@ PlayList.render=function(){ li.addClass('song'); PlayList.parent.append(li); } + $(".jp-playlist-" + PlayList.current).addClass("collection_playing"); } PlayList.getSelected=function(){ return $('tbody td.name input:checkbox:checked').parent().parent(); @@ -28,6 +30,7 @@ PlayList.hide=function(){ $(document).ready(function(){ PlayList.parent=$('#leftcontent'); + PlayList.init(); $('#selectAll').click(function(){ if($(this).attr('checked')){ // Check all diff --git a/apps/media/l10n/bg_BG.php b/apps/media/l10n/bg_BG.php new file mode 100644 index 0000000000000000000000000000000000000000..411ab0a89561761431db6b5077e69aadbfff9757 --- /dev/null +++ b/apps/media/l10n/bg_BG.php @@ -0,0 +1,14 @@ +<?php $TRANSLATIONS = array( +"Music" => "Музика", +"Play" => "ПуÑни", +"Pause" => "Пауза", +"Previous" => "Предишна", +"Next" => "Следваща", +"Mute" => "Отнеми", +"Unmute" => "Върни", +"Songs scanned" => "Сканирани пеÑни", +"Rescan Collection" => "Повторно Ñканиране", +"Artist" => "ÐртиÑÑ‚", +"Album" => "Ðлбум", +"Title" => "Заглавие" +); diff --git a/apps/media/l10n/et_EE.php b/apps/media/l10n/et_EE.php new file mode 100644 index 0000000000000000000000000000000000000000..c516ca64f26f024c2ef3fc1e6fc5972efc82e52f --- /dev/null +++ b/apps/media/l10n/et_EE.php @@ -0,0 +1,14 @@ +<?php $TRANSLATIONS = array( +"Music" => "Muusika", +"Play" => "Esita", +"Pause" => "Paus", +"Previous" => "Eelmine", +"Next" => "Järgmine", +"Mute" => "Vaikseks", +"Unmute" => "Hääl tagasi", +"Songs scanned" => "Skännitud lood", +"Rescan Collection" => "Skänni kollekttsiooni uuesti", +"Artist" => "Esitaja", +"Album" => "Album", +"Title" => "Pealkiri" +); diff --git a/apps/media/l10n/ms_MY.php b/apps/media/l10n/ms_MY.php new file mode 100644 index 0000000000000000000000000000000000000000..43cc47c81d77a65afe98f448d9923ce354b293f0 --- /dev/null +++ b/apps/media/l10n/ms_MY.php @@ -0,0 +1,14 @@ +<?php $TRANSLATIONS = array( +"Music" => "Muzik", +"Play" => "Main", +"Pause" => "Jeda", +"Previous" => "Sebelum", +"Next" => "Seterus", +"Mute" => "Bisu", +"Unmute" => "Nyahbisu", +"Songs scanned" => "Lagu telah diimbas", +"Rescan Collection" => "Imbas semula koleksi", +"Artist" => "Artis", +"Album" => "Album", +"Title" => "Judul" +); diff --git a/apps/media/l10n/sr.php b/apps/media/l10n/sr.php new file mode 100644 index 0000000000000000000000000000000000000000..7440bf430195aa9fe9198ab337096c73ce272fd8 --- /dev/null +++ b/apps/media/l10n/sr.php @@ -0,0 +1,14 @@ +<?php $TRANSLATIONS = array( +"Music" => "Музика", +"Play" => "ПуÑти", +"Pause" => "Паузирај", +"Previous" => "Претходна", +"Next" => "Следећа", +"Mute" => "ИÑкључи звук", +"Unmute" => "Укључи звук", +"Songs scanned" => "Претражених пеÑама", +"Rescan Collection" => "Поново претражи збирку", +"Artist" => "Извођач", +"Album" => "Ðлбум", +"Title" => "ÐаÑлов" +); diff --git a/apps/media/l10n/sr@latin.php b/apps/media/l10n/sr@latin.php new file mode 100644 index 0000000000000000000000000000000000000000..fecdb0a5a749a0a611e8c2d77bd0673841667add --- /dev/null +++ b/apps/media/l10n/sr@latin.php @@ -0,0 +1,14 @@ +<?php $TRANSLATIONS = array( +"Music" => "Muzika", +"Play" => "Pusti", +"Pause" => "Pauziraj", +"Previous" => "Prethodna", +"Next" => "Sledeća", +"Mute" => "IskljuÄi zvuk", +"Unmute" => "UkljuÄi zvuk", +"Songs scanned" => "Pretraženih pesama", +"Rescan Collection" => "Ponovo pretraži zbirku", +"Artist" => "IzvoÄ‘aÄ", +"Album" => "Album", +"Title" => "Naslov" +); diff --git a/apps/media/l10n/sv.php b/apps/media/l10n/sv.php index b3a7f18f7b225b1fc053181815eabb9c774a8055..f20fb2c6a57785740d83017ef87bcdc0c721d57d 100644 --- a/apps/media/l10n/sv.php +++ b/apps/media/l10n/sv.php @@ -1,6 +1,11 @@ <?php $TRANSLATIONS = array( "Music" => "Musik", +"Play" => "Spela", "Pause" => "Paus", +"Previous" => "FöregÃ¥ende", +"Next" => "Nästa", +"Mute" => "Ljudlös", +"Unmute" => "Ljud pÃ¥", "Songs scanned" => "Skannade lÃ¥tar", "Rescan Collection" => "Sök igenom samlingen", "Artist" => "Artist", diff --git a/apps/media/lib_ampache.php b/apps/media/lib_ampache.php index b3bd7b16189e8189ee74b4a97030552402fa82c2..87291958af3b1c431c97d93a4e8c38ca14de7f6b 100644 --- a/apps/media/lib_ampache.php +++ b/apps/media/lib_ampache.php @@ -157,7 +157,6 @@ class OC_MEDIA_AMPACHE{ } private static function printSong($song,$artistName=false,$albumName=false){ - global $WEBROOT; if(!$artistName){ $artistName=OC_MEDIA_COLLECTION::getArtistName($song['song_artist']); } @@ -196,7 +195,7 @@ class OC_MEDIA_AMPACHE{ $filter=isset($params['filter'])?$params['filter']:''; $exact=isset($params['exact'])?($params['exact']=='true'):false; $artists=OC_MEDIA_COLLECTION::getArtists($filter,$exact); - error_log('artists found: '.print_r($artists,true)); + if(defined("DEBUG") && DEBUG) {error_log('artists found: '.print_r($artists,true));} echo('<root>'); foreach($artists as $artist){ self::printArtist($artist); @@ -363,4 +362,4 @@ class OC_MEDIA_AMPACHE{ } } -?> \ No newline at end of file +?> diff --git a/apps/media/lib_collection.php b/apps/media/lib_collection.php index 273ea2494f8589a328220de93ac12619bec7e2f6..82c4afedd0a1c000f4ae2295316e3bca89e1d7d1 100644 --- a/apps/media/lib_collection.php +++ b/apps/media/lib_collection.php @@ -251,10 +251,12 @@ class OC_MEDIA_COLLECTION{ if($name=='' or $path==''){ return 0; } - $uid=$_SESSION['user_id']; + $uid=OC_User::getUser(); //check if the song is already in the database $songId=self::getSongId($name,$artist,$album); if($songId!=0){ + $songInfo=self::getSong($songId); + self::moveSong($songInfo['song_path'],$path); return $songId; }else{ if(!isset(self::$queries['addsong'])){ @@ -357,13 +359,23 @@ class OC_MEDIA_COLLECTION{ */ public static function getSongByPath($path){ $query=OC_DB::prepare("SELECT song_id FROM *PREFIX*media_songs WHERE song_path = ?"); - $result=$query->execute(array($path))->fetchAll(); - if(count($result)>0){ - return $result[0]['song_id']; + $result=$query->execute(array($path)); + if($row=$result->fetchRow()){ + return $row['song_id']; }else{ return 0; } } + + /** + * set the path of a song + * @param string $oldPath + * @param string $newPath + */ + public static function moveSong($oldPath,$newPath){ + $query=OC_DB::prepare("UPDATE *PREFIX*media_songs SET song_path = ? WHERE song_path = ?"); + $query->execute(array($newPath,$oldPath)); + } } ?> \ No newline at end of file diff --git a/apps/media/lib_media.php b/apps/media/lib_media.php index 3086f84a93a6794b8f46524c6622d14b25927fc8..7a666be8c274f0a1ea7d69a56eb5616d414f978c 100644 --- a/apps/media/lib_media.php +++ b/apps/media/lib_media.php @@ -30,6 +30,9 @@ OC_Hook::connect('OC_Filesystem','post_write','OC_MEDIA','updateFile'); //listen for file deletions to clean the database if a song is deleted OC_Hook::connect('OC_Filesystem','delete','OC_MEDIA','deleteFile'); +//list for file moves to update the database +OC_Hook::connect('OC_Filesystem','post_rename','OC_MEDIA','moveFile'); + class OC_MEDIA{ /** * get the sha256 hash of the password needed for ampache @@ -37,7 +40,7 @@ class OC_MEDIA{ */ public static function loginListener($params){ if(isset($_POST['user']) and $_POST['password']){ - error_log('postlogin'); + if(defined("DEBUG") && DEBUG) {error_log('postlogin');} $name=$_POST['user']; $query=OC_DB::prepare("SELECT user_id from *PREFIX*media_users WHERE user_id LIKE ?"); $uid=$query->execute(array($name))->fetchAll(); @@ -61,6 +64,7 @@ class OC_MEDIA{ $path=substr($path,1); } $path='/'.$path; + error_log("$path was updated"); OC_MEDIA_SCANNER::scanFile($path); } @@ -72,6 +76,11 @@ class OC_MEDIA{ require_once 'lib_collection.php'; OC_MEDIA_COLLECTION::deleteSongByPath($path); } + + public static function moveFile($params){ + require_once 'lib_collection.php'; + OC_MEDIA_COLLECTION::moveSong($params['oldpath'],$params['newpath']); + } } class OC_MediaSearchProvider extends OC_Search_Provider{ diff --git a/apps/media/lib_scanner.php b/apps/media/lib_scanner.php index c774c3c9fdb69ff45d1205266d0cec0904424b68..9bf9397b19a37bc290529f44a1d9bc99b3e7c150 100644 --- a/apps/media/lib_scanner.php +++ b/apps/media/lib_scanner.php @@ -97,25 +97,25 @@ class OC_MEDIA_SCANNER{ $data=@self::$getID3->analyze($file); getid3_lib::CopyTagsToComments($data); if(!isset($data['comments'])){ - error_log("error reading id3 tags in '$file'"); + if(defined("DEBUG") && DEBUG) {error_log("error reading id3 tags in '$file'");} return; } if(!isset($data['comments']['artist'])){ - error_log("error reading artist tag in '$file'"); + if(defined("DEBUG") && DEBUG) {error_log("error reading artist tag in '$file'");} $artist='unknown'; }else{ $artist=stripslashes($data['comments']['artist'][0]); $artist=utf8_encode($artist); } if(!isset($data['comments']['album'])){ - error_log("error reading album tag in '$file'"); + if(defined("DEBUG") && DEBUG) {error_log("error reading album tag in '$file'");} $album='unknown'; }else{ $album=stripslashes($data['comments']['album'][0]); $album=utf8_encode($album); } if(!isset($data['comments']['title'])){ - error_log("error reading title tag in '$file'"); + if(defined("DEBUG") && DEBUG) {error_log("error reading title tag in '$file'");} $title='unknown'; }else{ $title=stripslashes($data['comments']['title'][0]); diff --git a/apps/media/server/xml.server.php b/apps/media/server/xml.server.php index 516ab740072d8db8bd4a26f3eb43066f307ceca8..44a16793bf23a131c54ef7a6e83281e750244183 100644 --- a/apps/media/server/xml.server.php +++ b/apps/media/server/xml.server.php @@ -23,6 +23,7 @@ require_once('../../../lib/base.php'); +OC_Util::checkAppEnabled('media'); require_once('../lib_collection.php'); require_once('../lib_ampache.php'); @@ -35,9 +36,8 @@ foreach($arguments as &$argument){ $argument=stripslashes($argument); } ob_clean(); -global $CONFIG_DATADIRECTORY; if(isset($arguments['action'])){ - error_log($arguments['action']); + if(defined("DEBUG") && DEBUG) {error_log($arguments['action']);} switch($arguments['action']){ case 'url_to_song': OC_MEDIA_AMPACHE::url_to_song($arguments); diff --git a/apps/media/settings.php b/apps/media/settings.php new file mode 100644 index 0000000000000000000000000000000000000000..133440a9af65a9d4ed34a2bf707a9ceed1bf5de8 --- /dev/null +++ b/apps/media/settings.php @@ -0,0 +1,6 @@ +<?php + +$tmpl = new OC_Template( 'media', 'settings'); + +return $tmpl->fetchPage(); +?> diff --git a/apps/media/templates/music.php b/apps/media/templates/music.php index 9b40faa96191f0939b7bebfe875db1f74b51ec20..7764a315a8f43c1b55eebb7385cefc9e98275726 100644 --- a/apps/media/templates/music.php +++ b/apps/media/templates/music.php @@ -1,4 +1,4 @@ -<div id="controls"> +<div class='player-controls' id="controls"> <ul class="jp-controls"> <li><a href="#" class="jp-play action"><img class="svg" alt="<?php echo $l->t('Play');?>" src="<?php echo image_path('core', 'actions/play-big.svg'); ?>" /></a></li> <li><a href="#" class="jp-pause action"><img class="svg" alt="<?php echo $l->t('Pause');?>" src="<?php echo image_path('core', 'actions/pause-big.svg'); ?>" /></a></li> @@ -17,20 +17,20 @@ <div class="jp-volume-bar"> <div class="jp-volume-bar-value"></div> </div> + <div class="jp-current-song"></div> <div class="player" id="jp-player"></div> + + <div id="scan"> + <input type="button" class="start" value="<?php echo $l->t('Rescan Collection')?>" /> + <input type="button" class="stop" style="display:none" value="<?php echo $l->t('Pause')?>" /> + <div id="scanprogressbar"></div> + </div> </div> <ul id="leftcontent"></ul> <div id="rightcontent"> -<div id="scan"> - <p id="scancount" style="display:none"><span class="songCount">0</span> <?php echo $l->t('Songs scanned')?></p> - <input type="button" class="start" value="<?php echo $l->t('Rescan Collection')?>" /> - <input type="button" class="stop" style="display:none" value="<?php echo $l->t('Pause')?>" /> - <div id="scanprogressbar"></div> - -</div> <table id="collection"> <thead> <tr> diff --git a/apps/media/templates/player.php b/apps/media/templates/player.php new file mode 100644 index 0000000000000000000000000000000000000000..295f33ab9e0ab4af7e82c22195e8ad72ae06516b --- /dev/null +++ b/apps/media/templates/player.php @@ -0,0 +1,17 @@ +<?php +if(!isset($_)){//allow the template to be loaded standalone + require_once '../../../lib/base.php'; + $tmpl = new OC_Template( 'media', 'player'); + $tmpl->printPage(); + exit; +} +?> +Music +<div class='player-controls' id="playercontrols"> + <div class="player" id="jp-player"></div> + <ul class="jp-controls"> + <li><a href="#" class="jp-play action"><img class="svg" alt="<?php echo $l->t('Play');?>" src="<?php echo image_path('core', 'actions/play.svg'); ?>" /></a></li> + <li><a href="#" class="jp-pause action"><img class="svg" alt="<?php echo $l->t('Pause');?>" src="<?php echo image_path('core', 'actions/pause.svg'); ?>" /></a></li> + <li><a href="#" class="jp-next action"><img class="svg" alt="<?php echo $l->t('Next');?>" src="<?php echo image_path('core', 'actions/play-next.svg'); ?>" /></a></li> + </ul> +</div> \ No newline at end of file diff --git a/apps/media/templates/settings.php b/apps/media/templates/settings.php new file mode 100644 index 0000000000000000000000000000000000000000..ac813c208503a9c57b2d90918592a73915c3d539 --- /dev/null +++ b/apps/media/templates/settings.php @@ -0,0 +1,7 @@ +<form id="mediaform"> + <fieldset class="personalblock"> + <strong>Media</strong><br /> + Ampache address: + <?php echo OC_Helper::linkTo('apps/media', '', null, true); ?><br /> + </fieldset> +</form> diff --git a/apps/media/tomahawk.php b/apps/media/tomahawk.php index bf0c2c2a7563b13189c04b8c9e7d73974d82fd3c..68401db67ae184e07b9e5302eb2e3b3c015d3152 100644 --- a/apps/media/tomahawk.php +++ b/apps/media/tomahawk.php @@ -24,6 +24,7 @@ $_POST=$_GET; //debug require_once('../../lib/base.php'); +OC_JSON::checkAppEnabled('media'); require_once('lib_collection.php'); $user=isset($_POST['user'])?$_POST['user']:''; @@ -77,5 +78,5 @@ foreach($songs as $song) { 'score' => (float)1.0 ); } -echo json_encode($results); -?> \ No newline at end of file +OC_JSON::encodedPrint($results); +?> diff --git a/apps/remoteStorage/appinfo/app.php b/apps/remoteStorage/appinfo/app.php new file mode 100644 index 0000000000000000000000000000000000000000..ac1ecde50824b2a9181152b4ccf24cb73c3c10a9 --- /dev/null +++ b/apps/remoteStorage/appinfo/app.php @@ -0,0 +1,5 @@ +<?php +OC_App::register( array( + 'order' => 10, + 'id' => 'remoteStorage', + 'name' => 'remoteStorage compatibility' )); diff --git a/apps/unhosted/appinfo/database.xml b/apps/remoteStorage/appinfo/database.xml similarity index 96% rename from apps/unhosted/appinfo/database.xml rename to apps/remoteStorage/appinfo/database.xml index db25657085b841427421feacb95b21c739369b8e..b4e1ac7d8af448f396795024648182d47ed59015 100644 --- a/apps/unhosted/appinfo/database.xml +++ b/apps/remoteStorage/appinfo/database.xml @@ -43,7 +43,7 @@ <length>64</length> </field> <index> - <name>a_app_unhostedweb_user</name> + <name>a_app_remotestorage_user</name> <unique>true</unique> <field> <name>user</name> diff --git a/apps/remoteStorage/appinfo/info.xml b/apps/remoteStorage/appinfo/info.xml new file mode 100644 index 0000000000000000000000000000000000000000..a20c6ff4cd49d62f03e11adffa48169fabb374a6 --- /dev/null +++ b/apps/remoteStorage/appinfo/info.xml @@ -0,0 +1,10 @@ +<?xml version="1.0"?> +<info> + <id>remoteStorage</id> + <name>remoteStorage compatibility</name> + <description>Enables your users to use ownCloud as their remote storage for unhosted applications.</description> + <version>0.1</version> + <licence>AGPL</licence> + <author>Michiel de Jong</author> + <require>2</require> +</info> diff --git a/apps/unhosted/compat.php b/apps/remoteStorage/compat.php similarity index 80% rename from apps/unhosted/compat.php rename to apps/remoteStorage/compat.php index 5034d04de311b29b916dd0e9a54fe827a9e500e1..35a133c43c705e7bfb777444895d4d3dbf5b6bf1 100644 --- a/apps/unhosted/compat.php +++ b/apps/remoteStorage/compat.php @@ -30,20 +30,21 @@ $RUNTIME_NOSETUPFS = true; require_once('../../lib/base.php'); +OC_Util::checkAppEnabled('remoteStorage'); require_once('Sabre/autoload.php'); -require_once('lib_unhosted.php'); +require_once('lib_remoteStorage.php'); require_once('oauth_ro_auth.php'); ini_set('default_charset', 'UTF-8'); #ini_set('error_reporting', ''); @ob_clean(); -//allow use as unhosted storage for other websites +//allow use as remote storage for other websites if(isset($_SERVER['HTTP_ORIGIN'])) { header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']); header('Access-Control-Max-Age: 3600'); header('Access-Control-Allow-Methods: OPTIONS, GET, PUT, DELETE, PROPFIND'); - header('Access-Control-Allow-Headers: Authorization'); + header('Access-Control-Allow-Headers: Authorization, Content-Type'); } else { header('Access-Control-Allow-Origin: *'); } @@ -52,12 +53,12 @@ $path = substr($_SERVER["REQUEST_URI"], strlen($_SERVER["SCRIPT_NAME"])); $pathParts = explode('/', $path); // for webdav: // 0/ 1 / 2 / 3 / 4 / 5 / 6 / 7 -// /$ownCloudUser/unhosted/webdav/$userHost/$userName/$dataScope/$key +// /$ownCloudUser/remoteStorage/webdav/$userHost/$userName/$dataScope/$key // for oauth: // 0/ 1 / 2 / 3 / 4 -// /$ownCloudUser/unhosted/oauth/auth +// /$ownCloudUser/remoteStorage/oauth/auth -if(count($pathParts) >= 8 && $pathParts[0] == '' && $pathParts[2] == 'unhosted' && $pathParts[3] == 'webdav') { +if(count($pathParts) >= 8 && $pathParts[0] == '' && $pathParts[2] == 'remoteStorage' && $pathParts[3] == 'webdav') { list($dummy0, $ownCloudUser, $dummy2, $dummy3, $userHost, $userName, $dataScope) = $pathParts; OC_Util::setupFS($ownCloudUser); @@ -67,10 +68,10 @@ if(count($pathParts) >= 8 && $pathParts[0] == '' && $pathParts[2] == 'unhosted' $server = new Sabre_DAV_Server($publicDir); // Path to our script - $server->setBaseUri("$WEBROOT/apps/unhosted/compat.php/$ownCloudUser"); + $server->setBaseUri(OC::$WEBROOT."/apps/remoteStorage/compat.php/$ownCloudUser"); // Auth backend - $authBackend = new OC_Connector_Sabre_Auth_ro_oauth(OC_UnhostedWeb::getValidTokens($ownCloudUser, $userName.'@'.$userHost, $dataScope)); + $authBackend = new OC_Connector_Sabre_Auth_ro_oauth(OC_remoteStorage::getValidTokens($ownCloudUser, $userName.'@'.$userHost, $dataScope)); $authPlugin = new Sabre_DAV_Auth_Plugin($authBackend,'ownCloud');//should use $validTokens here $server->addPlugin($authPlugin); @@ -82,7 +83,7 @@ if(count($pathParts) >= 8 && $pathParts[0] == '' && $pathParts[2] == 'unhosted' // And off we go! $server->exec(); -} else if(count($pathParts) >= 4 && $pathParts[0] == '' && $pathParts[2] == 'unhosted' && $pathParts[3] == 'oauth2' && $pathParts[4] = 'auth') { +} else if(count($pathParts) >= 4 && $pathParts[0] == '' && $pathParts[2] == 'remoteStorage' && $pathParts[3] == 'oauth2' && $pathParts[4] = 'auth') { if(isset($_POST['allow'])) { //TODO: input checking. these explodes may fail to produces the desired arrays: $ownCloudUser = $pathParts[1]; @@ -97,8 +98,8 @@ if(count($pathParts) >= 8 && $pathParts[0] == '' && $pathParts[2] == 'unhosted' } if(OC_User::getUser() == $ownCloudUser) { //TODO: check if this can be faked by editing the cookie in firebug! - $token=OC_UnhostedWeb::createDataScope($appUrl, $userAddress, $dataScope); - header('Location: '.$_GET['redirect_uri'].'#access_token='.$token.'&token_type=unhosted'); + $token=OC_remoteStorage::createDataScope($appUrl, $userAddress, $dataScope); + header('Location: '.$_GET['redirect_uri'].'#access_token='.$token.'&token_type=remoteStorage'); } else { if($_SERVER['HTTPS']){ $url = "https://"; @@ -106,7 +107,7 @@ if(count($pathParts) >= 8 && $pathParts[0] == '' && $pathParts[2] == 'unhosted' $url = "http://"; } $url .= $_SERVER['SERVER_NAME']; - $url .= substr($_SERVER['SCRIPT_NAME'], 0, -strlen('apps/unhosted/compat.php')); + $url .= substr($_SERVER['SCRIPT_NAME'], 0, -strlen('apps/remoteStorage/compat.php')); die('Please ' .'<input type="submit" onclick="' ."window.open('$url','Close me!','height=600,width=300');" diff --git a/apps/unhosted/lib_unhosted.php b/apps/remoteStorage/lib_remoteStorage.php similarity index 86% rename from apps/unhosted/lib_unhosted.php rename to apps/remoteStorage/lib_remoteStorage.php index 59dc380c45c3997eee55cb6f0b04ea77232cdbee..5677ab3c6e0149d4b90becb885b71cd696207f55 100644 --- a/apps/unhosted/lib_unhosted.php +++ b/apps/remoteStorage/lib_remoteStorage.php @@ -1,13 +1,13 @@ <?php -class OC_UnhostedWeb { +class OC_remoteStorage { public static function getValidTokens($ownCloudUser, $userAddress, $dataScope) { $query=OC_DB::prepare("SELECT token,appUrl FROM *PREFIX*authtoken WHERE user=? AND userAddress=? AND dataScope=? LIMIT 100"); - $result=$query->execute(array($user,$userAddress,$dataScope)); + $result=$query->execute(array($ownCloudUser,$userAddress,$dataScope)); if( PEAR::isError($result)) { $entry = 'DB Error: "'.$result->getMessage().'"<br />'; $entry .= 'Offending command was: '.$result->getDebugInfo().'<br />'; - error_log( $entry ); + if(defined("DEBUG") && DEBUG) {error_log( $entry );} die( $entry ); } $ret = array(); @@ -24,7 +24,7 @@ class OC_UnhostedWeb { if( PEAR::isError($result)) { $entry = 'DB Error: "'.$result->getMessage().'"<br />'; $entry .= 'Offending command was: '.$result->getDebugInfo().'<br />'; - error_log( $entry ); + if(defined("DEBUG") && DEBUG) {error_log( $entry );} die( $entry ); } $ret = array(); @@ -45,7 +45,7 @@ class OC_UnhostedWeb { if( PEAR::isError($result)) { $entry = 'DB Error: "'.$result->getMessage().'"<br />'; $entry .= 'Offending command was: '.$result->getDebugInfo().'<br />'; - error_log( $entry ); + if(defined("DEBUG") && DEBUG) {error_log( $entry );} die( $entry ); } } @@ -56,7 +56,7 @@ class OC_UnhostedWeb { if( PEAR::isError($result)) { $entry = 'DB Error: "'.$result->getMessage().'"<br />'; $entry .= 'Offending command was: '.$result->getDebugInfo().'<br />'; - error_log( $entry ); + if(defined("DEBUG") && DEBUG) {error_log( $entry );} die( $entry ); } } @@ -66,7 +66,7 @@ class OC_UnhostedWeb { //TODO: input checking on $userAddress and $dataScope list($userName, $userHost) = explode('@', $userAddress); OC_Util::setupFS(OC_User::getUser()); - $scopePathParts = array('unhosted', 'webdav', $userHost, $userName, $dataScope); + $scopePathParts = array('remoteStorage', 'webdav', $userHost, $userName, $dataScope); for($i=0;$i<=count($scopePathParts);$i++){ $thisPath = '/'.implode('/', array_slice($scopePathParts, 0, $i)); if(!OC_Filesystem::file_exists($thisPath)) { diff --git a/apps/unhosted/oauth_ro_auth.php b/apps/remoteStorage/oauth_ro_auth.php similarity index 100% rename from apps/unhosted/oauth_ro_auth.php rename to apps/remoteStorage/oauth_ro_auth.php diff --git a/apps/unhosted/appinfo/app.php b/apps/unhosted/appinfo/app.php deleted file mode 100644 index 84e07304534111bd092f98d96b44bcfa45a26e11..0000000000000000000000000000000000000000 --- a/apps/unhosted/appinfo/app.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php -OC_App::register( array( - 'order' => 10, - 'id' => 'unhosted', - 'name' => 'Unhosted Web' )); diff --git a/apps/unhosted/appinfo/info.xml b/apps/unhosted/appinfo/info.xml deleted file mode 100644 index 359620f457807c86457ab6d8e9ac9fc7d5c08038..0000000000000000000000000000000000000000 --- a/apps/unhosted/appinfo/info.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0"?> -<info> - <id>unhosted</id> - <name>Unhosted Web</name> - <description>On websites that allow unhosted accounts, use your owncloud as the storage for your user data</description> - <version>0.1</version> - <licence>AGPL</licence> - <author>Michiel de Jong</author> - <require>2</require> -</info> diff --git a/apps/user_openid/appinfo/app.php b/apps/user_openid/appinfo/app.php index e8e9fd2296b5ad7ce54b1a617e2bf39895e63f46..546f9f4565aa57ebb03e81e596e9d3ad57029029 100644 --- a/apps/user_openid/appinfo/app.php +++ b/apps/user_openid/appinfo/app.php @@ -26,29 +26,28 @@ OC_User::useBackend('openid'); //check for results from openid requests if(isset($_GET['openid_mode']) and $_GET['openid_mode'] == 'id_res'){ - error_log('openid retured'); + if(defined("DEBUG") && DEBUG) {error_log('openid retured');} $openid = new SimpleOpenID; $openid->SetIdentity($_GET['openid_identity']); $openid_validation_result = $openid->ValidateWithServer(); if ($openid_validation_result == true){ // OK HERE KEY IS VALID - error_log('auth sucessfull'); - global $WEBROOT; + if(defined("DEBUG") && DEBUG) {error_log('auth sucessfull');} $identity=$openid->GetIdentity(); - error_log("auth as $identity"); + if(defined("DEBUG") && DEBUG) {error_log("auth as $identity");} $user=OC_USER_OPENID::findUserForIdentity($identity); if($user){ $_SESSION['user_id']=$user; - header("Location: $WEBROOT"); + header("Location: ".OC::$WEBROOT); } }else if($openid->IsError() == true){ // ON THE WAY, WE GOT SOME ERROR $error = $openid->GetError(); - error_log("ERROR CODE: " . $error['code']); - error_log("ERROR DESCRIPTION: " . $error['description']); + if(defined("DEBUG") && DEBUG) {error_log("ERROR CODE: " . $error['code']);} + if(defined("DEBUG") && DEBUG) {error_log("ERROR DESCRIPTION: " . $error['description']);} }else{ // Signature Verification Failed - error_log("INVALID AUTHORIZATION"); + if(defined("DEBUG") && DEBUG) {error_log("INVALID AUTHORIZATION");} } }else if (isset($_GET['openid_mode']) and $_GET['openid_mode'] == 'cancel'){ // User Canceled your Request - error_log("USER CANCELED REQUEST"); + if(defined("DEBUG") && DEBUG) {error_log("USER CANCELED REQUEST");} return false; } diff --git a/apps/user_openid/appinfo/info.xml b/apps/user_openid/appinfo/info.xml index 32525009d616ed7bbb31000dc0ba4723ecd7f05a..37be15abfda39283fa678a1388622a16bbf0b03f 100644 --- a/apps/user_openid/appinfo/info.xml +++ b/apps/user_openid/appinfo/info.xml @@ -7,4 +7,4 @@ <licence>AGPL</licence> <author>Robin Appelman</author> <require>2</require> -</info> \ No newline at end of file +</info> diff --git a/apps/user_openid/phpmyid.php b/apps/user_openid/phpmyid.php index 24fab44ca7aa0281d33834bb804c33e9fa7c53ec..5009fa410aac340ba46685375621ee86f9c52e78 100644 --- a/apps/user_openid/phpmyid.php +++ b/apps/user_openid/phpmyid.php @@ -1054,7 +1054,7 @@ function debug ($x, $m = null) { $x .= "\n"; } - error_log($x . "\n", 3, $profile['logfile']); + if(defined("DEBUG") && DEBUG) {error_log($x . "\n", 3, $profile['logfile']);} } @@ -1069,6 +1069,9 @@ function destroy_assoc_handle ( $id ) { session_write_close(); session_id($id); + if (OC_Config::getValue( "forcessl", false )) { + ini_set("session.cookie_secure", "on"); + } session_start(); session_destroy(); @@ -1194,6 +1197,9 @@ function new_assoc ( $expiration ) { session_write_close(); } + if (OC_Config::getValue( "forcessl", false )) { + ini_set("session.cookie_secure", "on"); + } session_start(); session_regenerate_id('false'); @@ -1265,6 +1271,9 @@ function secret ( $handle ) { } session_id($handle); + if (OC_Config::getValue( "forcessl", false )) { + ini_set("session.cookie_secure", "on"); + } session_start(); debug('Started session to acquire key: ' . session_id()); @@ -1467,6 +1476,9 @@ function user_session () { global $proto, $profile; session_name('phpMyID_Server'); + if (OC_Config::getValue( "forcessl", false )) { + ini_set("session.cookie_secure", "on"); + } @session_start(); $profile['authorized'] = (isset($_SESSION['auth_username']) @@ -1501,7 +1513,7 @@ function wrap_html ( $message ) { </body> </html> '; - error_log($html); + if(defined("DEBUG") && DEBUG) {error_log($html);} echo $html; exit(0); } @@ -1653,8 +1665,8 @@ $profile['req_url'] = sprintf("%s://%s%s", // $profile['req_url']=str_replace($incompleteId,$fullId,$profile['req_url']); // } -// error_log('inc id: '.$fullId); -// error_log('req url: '.$profile['req_url']); +// if(defined("DEBUG") && DEBUG) {error_log('inc id: '.$fullId);} +// if(defined("DEBUG") && DEBUG) {error_log('req url: '.$profile['req_url']);} // Set the default allowance for testing if (! array_key_exists('allow_test', $profile)) diff --git a/apps/user_openid/user.php b/apps/user_openid/user.php index 52fa10473441f690483f4ee749a53b03fe2d419f..3cbc38491ca2808ca248ed58213e6f29e7a4ca29 100644 --- a/apps/user_openid/user.php +++ b/apps/user_openid/user.php @@ -37,15 +37,15 @@ if($USERNAME=='' and isset($_SERVER['PHP_AUTH_USER'])){ $RUNTIME_NOAPPS=true; $RUNTIME_NOAPPS=false; require_once '../../lib/base.php'; +OC_Util::checkAppEnabled('user_openid'); if(!OC_User::userExists($USERNAME)){ - error_log($USERNAME.' doesn\'t exist'); + if(defined("DEBUG") && DEBUG) {error_log($USERNAME.' doesn\'t exist');} $USERNAME=''; } -global $WEBROOT; $IDENTITY=OC_Helper::linkTo( "user_openid", "user.php", null, true ).'/'.$USERNAME; require_once 'phpmyid.php'; -?> \ No newline at end of file +?> diff --git a/apps/user_openid/user_openid.php b/apps/user_openid/user_openid.php index d9af94dcafa70dd006cea6b9a0cbbdb8d388bc97..df050e908dec6923a1264b08d58ef1eceff8f1fc 100644 --- a/apps/user_openid/user_openid.php +++ b/apps/user_openid/user_openid.php @@ -36,13 +36,12 @@ class OC_USER_OPENID extends OC_User_Backend { * Check if the password is correct without logging in the user */ public function checkPassword( $uid, $password ){ - global $WEBROOT; // Get identity from user and redirect browser to OpenID Server $openid = new SimpleOpenID; $openid->SetIdentity($uid); $openid->SetTrustRoot('http://' . $_SERVER["HTTP_HOST"]); if ($openid->GetOpenIDServer()){ - $openid->SetApprovedURL('http://' . $_SERVER["HTTP_HOST"] . $WEBROOT); // Send Response from OpenID server to this script + $openid->SetApprovedURL('http://' . $_SERVER["HTTP_HOST"] . OC::$WEBROOT); // Send Response from OpenID server to this script $openid->Redirect(); // This will redirect user to OpenID Server exit; }else{ @@ -67,4 +66,4 @@ class OC_USER_OPENID extends OC_User_Backend { -?> \ No newline at end of file +?> diff --git a/apps/user_webfinger/activate.php b/apps/user_webfinger/activate.php deleted file mode 100644 index 547c8e54d32c2c8be1308900425e7ecb216b0e2c..0000000000000000000000000000000000000000 --- a/apps/user_webfinger/activate.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -// comment out this line: - die("This feature is still experimental. Please comment out this line in the code, then try again\n"); -// - - - -$ownCloudBaseUri = substr($_SERVER['REQUEST_URI'],0, -(strlen('/apps/user_webfinger/activate.php'))); -$thisAppDir = __DIR__; -$appsDir = dirname($thisAppDir); -$ownCloudDir = dirname($appsDir); -try{ - symlink($thisAppDir, $ownCloudDir.'/.well-known'); - echo "Webfinger should now work.\n"; -} catch(Exception $e) { - echo "Please create a file called '.well-known in the ownCloud root, give the web server user permission to change it, and retry.\n"; -} diff --git a/apps/user_webfinger/appinfo/info.xml b/apps/user_webfinger/appinfo/info.xml index b5e79bd676241a58d35c030284a2d53b0d2e9738..a4071dae1725e7e124dc6a765ecf7556a39d0362 100644 --- a/apps/user_webfinger/appinfo/info.xml +++ b/apps/user_webfinger/appinfo/info.xml @@ -2,7 +2,7 @@ <info> <id>user_webfinger</id> <name>Webfinger</name> - <description>Provide webfinger for all users, so that they can use their ownCloud account as their remote storage on the web. If you don't run owncloud in the root of your domain, for instance if you run it on http://example.com/owncloud/, then makes sure you link http://example.com/.well-known/ to http://example.com/owncloud/apps/user_webfinger/ - for instance by running something like "ln -s /var/www/owncloud/apps/user_webfinger /var/www/.well-known". Only enable this app if you run this owncloud installation on a public web address, not if you run it on an intranet or on localhost.</description> + <description>Provide WebFinger for all users so they get a user address like user@owncloudinstance which can be used for unhosted applications. If you don't run ownCloud in the root of your domain, for instance if you run it on example.com/owncloud/, then make sure you link example.com/.well-known/ to example.com/owncloud/apps/user_webfinger/ - by running something like "ln -s /var/www/owncloud/apps/user_webfinger /var/www/.well-known". Only enable this app if you run this ownCloud installation on a public web address, not if you run it on an intranet or on localhost.</description> <version>0.1</version> <licence>AGPL</licence> <author>Michiel de Jong</author> diff --git a/apps/user_webfinger/appinfo/install.php b/apps/user_webfinger/appinfo/install.php new file mode 100644 index 0000000000000000000000000000000000000000..079043cd102200a8378d55622f497f4e2154d447 --- /dev/null +++ b/apps/user_webfinger/appinfo/install.php @@ -0,0 +1,6 @@ +<?php +$appInfoDir = __DIR__; +$thisAppDir = dirname($appInfoDir); +$appsDir = dirname($thisAppDir); +$ownCloudDir = dirname($appsDir); +symlink($thisAppDir, $ownCloudDir.'/.well-known'); diff --git a/apps/user_webfinger/webfinger.php b/apps/user_webfinger/webfinger.php index 269bb4758ed1c5b2ec31ee00b606551a366f1d29..afb536896827a4fc5769b42ed9f2a449aac973a2 100644 --- a/apps/user_webfinger/webfinger.php +++ b/apps/user_webfinger/webfinger.php @@ -20,5 +20,5 @@ echo "<"; ?xml version="1.0" encoding="UTF-8"?> <XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0" xmlns:hm="http://host-meta.net/xrd/1.0"> <hm:Host xmlns="http://host-meta.net/xrd/1.0"><?php echo $_SERVER['SERVER_NAME'] ?></hm:Host> - <Link rel="http://unhosted.org/spec/dav/0.1" href="http<?php echo ($_SERVER['HTTPS']?'s':''); ?>://<?php echo $_SERVER['SERVER_NAME'] ?>/apps/unhosted/compat.php/<?php echo $userName ?>/unhosted/" /> + <Link rel="http://unhosted.org/spec/dav/0.1" href="http<?php echo ($_SERVER['HTTPS']?'s':''); ?>://<?php echo $_SERVER['SERVER_NAME'] ?>/apps/remoteStorage/compat.php/<?php echo $userName ?>/remoteStorage/" /> </XRD> diff --git a/config/config.sample.php b/config/config.sample.php index 5575340bc1be27455f72fcfdbcc8836dbd6bbc37..a40ce073bf67516d9c60dd122aee8cdb4f7e2d4b 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -1,5 +1,7 @@ <?php +define("DEBUG", true); + $CONFIG = array( "installed" => false, "dbtype" => "sqlite", diff --git a/core/ajax/grouplist.php b/core/ajax/grouplist.php index d0d10f7a84e01dd65f1607b5a5cd610bb6e3bd40..cc15102bbc343ece229cfe21bde953fc9638a325 100644 --- a/core/ajax/grouplist.php +++ b/core/ajax/grouplist.php @@ -44,8 +44,6 @@ foreach( OC_Group::getGroups() as $i ){ $groups[] = array( "groupname" => $i ); } -// We send json data -header( "Content-Type: application/jsonrequest" ); -echo json_encode($groups); +OC_JSON::encodedPrint($groups); ?> diff --git a/core/ajax/translations.php b/core/ajax/translations.php index adaf7dcb75800e5d604c4a7f66eef0bf253f3c54..2e436f8d84eb01fa316e5d50bde5c369bbc04520 100644 --- a/core/ajax/translations.php +++ b/core/ajax/translations.php @@ -26,9 +26,7 @@ require_once('../../lib/base.php'); $app = $_POST["app"]; -// We send json data -header( "Content-Type: application/jsonrequest" ); $l = new OC_L10N( $app ); -echo json_encode( array( 'status' => 'success', 'data' => $l->getTranslations())); +OC_JSON::success(array('data' => $l->getTranslations())); ?> diff --git a/core/ajax/userlist.php b/core/ajax/userlist.php index 0485f514550a3aaa9cb686eef0214ecdb8e8e725..c8168eaf460869eca114f43a218eb2720157b020 100644 --- a/core/ajax/userlist.php +++ b/core/ajax/userlist.php @@ -43,8 +43,6 @@ foreach( OC_User::getUsers() as $i ){ $users[] = array( "username" => $i, "groups" => join( ", ", OC_Group::getUserGroups( $i ) )); } -// We send json data -header( "Content-Type: application/jsonrequest" ); -echo json_encode($users); +OC_JSON::encodedPrint($users); ?> diff --git a/core/ajax/validateuser.php b/core/ajax/validateuser.php index 032948fc331102fac4e7519b227db16bb4b390c1..258bd50fcad01bd14838e507ecee2856b5418a28 100644 --- a/core/ajax/validateuser.php +++ b/core/ajax/validateuser.php @@ -30,11 +30,10 @@ if(!isset($_SERVER['PHP_AUTH_USER'])){ echo 'Valid credentials must be supplied'; exit(); } else { - header("Content-Type: application/jsonrequest"); if(OC_User::checkPassword($_SERVER["PHP_AUTH_USER"], $_SERVER["PHP_AUTH_PW"])){ - echo json_encode(array("username" => $_SERVER["PHP_AUTH_USER"], "user_valid" => "true")); + OC_JSON::encodedPrint(array("username" => $_SERVER["PHP_AUTH_USER"], "user_valid" => "true")); } else { - echo json_encode(array("username" => $_SERVER["PHP_AUTH_USER"], "user_valid" => "false")); + OC_JSON::encodedPrint(array("username" => $_SERVER["PHP_AUTH_USER"], "user_valid" => "false")); } } diff --git a/core/css/images/no.png b/core/css/images/no.png deleted file mode 100644 index fdc0f42125585d0c99e64deddc1e1aaade72a873..0000000000000000000000000000000000000000 Binary files a/core/css/images/no.png and /dev/null differ diff --git a/core/css/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png b/core/css/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png deleted file mode 100644 index 6348115e6be09c044cd20ead0202c3ab5b2f9c19..0000000000000000000000000000000000000000 Binary files a/core/css/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png and /dev/null differ diff --git a/core/css/images/ui-bg_flat_15_cd0a0a_40x100.png b/core/css/images/ui-bg_flat_15_cd0a0a_40x100.png deleted file mode 100644 index 7680b5437cf820615e472dc4f9a18fd0ba8b7881..0000000000000000000000000000000000000000 Binary files a/core/css/images/ui-bg_flat_15_cd0a0a_40x100.png and /dev/null differ diff --git a/core/css/images/ui-bg_glass_100_e4f1fb_1x400.png b/core/css/images/ui-bg_glass_100_e4f1fb_1x400.png deleted file mode 100644 index 705a32ea35d4d0012bfd3b6a3ffe17a2aaf21bb5..0000000000000000000000000000000000000000 Binary files a/core/css/images/ui-bg_glass_100_e4f1fb_1x400.png and /dev/null differ diff --git a/core/css/images/ui-bg_glass_50_3baae3_1x400.png b/core/css/images/ui-bg_glass_50_3baae3_1x400.png deleted file mode 100644 index baabca6baaff94ade4ecd5ddad28e35f52ea3af7..0000000000000000000000000000000000000000 Binary files a/core/css/images/ui-bg_glass_50_3baae3_1x400.png and /dev/null differ diff --git a/core/css/images/ui-bg_glass_80_d7ebf9_1x400.png b/core/css/images/ui-bg_glass_80_d7ebf9_1x400.png deleted file mode 100644 index d9387e9507ef5b48483315affdcf7e69a6a5cbd1..0000000000000000000000000000000000000000 Binary files a/core/css/images/ui-bg_glass_80_d7ebf9_1x400.png and /dev/null differ diff --git a/core/css/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png b/core/css/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png deleted file mode 100644 index 28b566c2c29cc0f849995be62c10d7c292697803..0000000000000000000000000000000000000000 Binary files a/core/css/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png and /dev/null differ diff --git a/core/css/images/ui-bg_highlight-hard_70_000000_1x100.png b/core/css/images/ui-bg_highlight-hard_70_000000_1x100.png deleted file mode 100644 index d58829780430e138704e956a850c2913039fd4d9..0000000000000000000000000000000000000000 Binary files a/core/css/images/ui-bg_highlight-hard_70_000000_1x100.png and /dev/null differ diff --git a/core/css/images/ui-bg_highlight-soft_100_deedf7_1x100.png b/core/css/images/ui-bg_highlight-soft_100_deedf7_1x100.png deleted file mode 100644 index 2289d3c7d7b8e0892f5921de1af87a44b7059eb2..0000000000000000000000000000000000000000 Binary files a/core/css/images/ui-bg_highlight-soft_100_deedf7_1x100.png and /dev/null differ diff --git a/core/css/images/ui-bg_highlight-soft_25_ffef8f_1x100.png b/core/css/images/ui-bg_highlight-soft_25_ffef8f_1x100.png deleted file mode 100644 index 54aff0cb974c7bbde9bed3eb8a05c3b24f140965..0000000000000000000000000000000000000000 Binary files a/core/css/images/ui-bg_highlight-soft_25_ffef8f_1x100.png and /dev/null differ diff --git a/core/css/images/ui-icons_2694e8_256x240.png b/core/css/images/ui-icons_2694e8_256x240.png deleted file mode 100644 index 9d192c2f65905cc05b66db64ee396b66299e8fc5..0000000000000000000000000000000000000000 Binary files a/core/css/images/ui-icons_2694e8_256x240.png and /dev/null differ diff --git a/core/css/images/ui-icons_2e83ff_256x240.png b/core/css/images/ui-icons_2e83ff_256x240.png deleted file mode 100644 index 09d1cdc856c292c4ab6dd818c7543ac0828bd616..0000000000000000000000000000000000000000 Binary files a/core/css/images/ui-icons_2e83ff_256x240.png and /dev/null differ diff --git a/core/css/images/ui-icons_3d80b3_256x240.png b/core/css/images/ui-icons_3d80b3_256x240.png deleted file mode 100644 index f13b206645b11f97fc59feaa18002b2002b118fa..0000000000000000000000000000000000000000 Binary files a/core/css/images/ui-icons_3d80b3_256x240.png and /dev/null differ diff --git a/core/css/images/ui-icons_72a7cf_256x240.png b/core/css/images/ui-icons_72a7cf_256x240.png deleted file mode 100644 index 0d20b7308331069ee2950fa64cb15f4a29ca55f3..0000000000000000000000000000000000000000 Binary files a/core/css/images/ui-icons_72a7cf_256x240.png and /dev/null differ diff --git a/core/css/images/ui-icons_ffffff_256x240.png b/core/css/images/ui-icons_ffffff_256x240.png deleted file mode 100644 index 42f8f992c727ddaa617da224a522e463df690387..0000000000000000000000000000000000000000 Binary files a/core/css/images/ui-icons_ffffff_256x240.png and /dev/null differ diff --git a/core/css/jquery-ui-1.8.14.custom.css b/core/css/jquery-ui-1.8.14.custom.css index fe310705756befa7e6c0e28fc7edd0d2e4323275..887e4b5e57b2a6f480ef9e2dd7ce67b6b5f07de7 100644 --- a/core/css/jquery-ui-1.8.14.custom.css +++ b/core/css/jquery-ui-1.8.14.custom.css @@ -33,6 +33,9 @@ /* states and images */ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } +/* states and images */ +.ui-icon { width: 16px; height: 16px; } +.ui-icon-closethick { background-image: url(../img/actions/delete.png); } /* Misc visuals ----------------------------------*/ @@ -59,222 +62,32 @@ .ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; } .ui-widget .ui-widget { font-size: 1em; } .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; } -.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; } +.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee 50% top repeat-x; color: #333333; } .ui-widget-content a { color: #333333; } -.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } +.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 50% 50% repeat-x; color: #ffffff; font-weight: bold; } .ui-widget-header a { color: #ffffff; } /* Interaction states ----------------------------------*/ -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; } +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 50% 50% repeat-x; font-weight: bold; color: #1c94c4; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; } -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce 50% 50% repeat-x; font-weight: bold; color: #c77405; } .ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; } -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff 50% 50% repeat-x; font-weight: bold; color: #eb8f00; } .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; } .ui-widget :active { outline: none; } /* Interaction Cues ----------------------------------*/ -.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; } +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c 50% top repeat-x; color: #363636; } .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } -.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 50% 50% repeat; color: #ffffff; } .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } -.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } -.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } -.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); } -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } -.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } -.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); } -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); } - -/* positioning */ -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -64px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -64px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 0 -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-off { background-position: -96px -144px; } -.ui-icon-radio-on { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - /* Misc visuals ----------------------------------*/ @@ -286,8 +99,8 @@ .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } /* Overlays */ -.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); } -.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/* +.ui-widget-overlay { background: #666666 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); } +.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/* * jQuery UI Resizable 1.8.14 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) @@ -565,4 +378,4 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad * http://docs.jquery.com/UI/Progressbar#theming */ .ui-progressbar { height:2em; text-align: left; } -.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } \ No newline at end of file +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } diff --git a/core/css/jquery.multiselect.css b/core/css/jquery.multiselect.css new file mode 100644 index 0000000000000000000000000000000000000000..156799f086957657f4406c0ba0dd74ff80f8b6c8 --- /dev/null +++ b/core/css/jquery.multiselect.css @@ -0,0 +1,23 @@ +.ui-multiselect { padding:2px 0 2px 4px; text-align:left } +.ui-multiselect span.ui-icon { float:right } +.ui-multiselect-single .ui-multiselect-checkboxes input { position:absolute !important; top: auto !important; left:-9999px; } +.ui-multiselect-single .ui-multiselect-checkboxes label { padding:5px !important } + +.ui-multiselect-header { margin-bottom:3px; padding:3px 0 3px 4px } +.ui-multiselect-header ul { font-size:0.9em } +.ui-multiselect-header ul li { float:left; padding:0 10px 0 0 } +.ui-multiselect-header a { text-decoration:none } +.ui-multiselect-header a:hover { text-decoration:underline } +.ui-multiselect-header span.ui-icon { float:left } +.ui-multiselect-header li.ui-multiselect-close { float:right; text-align:right; padding-right:0 } + +.ui-multiselect-menu { display:none; padding:3px; position:absolute; z-index:10000 } +.ui-multiselect-checkboxes { position:relative /* fixes bug in IE6/7 */; overflow-y:scroll } +.ui-multiselect-checkboxes label { cursor:default; display:block; border:1px solid transparent; padding:3px 1px } +.ui-multiselect-checkboxes label input { position:relative; top:1px } +.ui-multiselect-checkboxes li { clear:both; font-size:0.9em; padding-right:3px } +.ui-multiselect-checkboxes li.ui-multiselect-optgroup-label { text-align:center; font-weight:bold; border-bottom:1px solid } +.ui-multiselect-checkboxes li.ui-multiselect-optgroup-label a { display:block; padding:3px; margin:1px 0; text-decoration:none } + +/* remove label borders in IE6 because IE6 does not support transparency */ +* html .ui-multiselect-checkboxes label { border:none } diff --git a/core/css/multiselect.css b/core/css/multiselect.css index 22e5098d3bf1c62179f90a137af0506480d0cb44..ee4263517690c846198c368665118457e8258a47 100644 --- a/core/css/multiselect.css +++ b/core/css/multiselect.css @@ -1,5 +1,5 @@ ul.multiselectoptions { z-index:49; position:absolute; background-color:#fff; padding-top:.5em; border:1px solid #ddd; border-top:none; -moz-border-radius-bottomleft:.5em; -webkit-border-bottom-left-radius:.5em; border-bottom-left-radius:.5em; -moz-border-radius-bottomright:.5em; -webkit-border-bottom-right-radius:.5em; border-bottom-right-radius:.5em; -moz-box-shadow:0 1px 1px #ddd; -webkit-box-shadow:0 1px 1px #ddd; box-shadow:0 1px 1px #ddd; } -div.multiselect { padding-right:.6em; display:inline; position:relative; display:inline-block } +div.multiselect { padding-right:.6em; display:inline; position:relative; display:inline-block; vertical-align: bottom; } div.multiselect.active { background-color:#fff; border-bottom:none; border-bottom-left-radius:0; border-bottom-right-radius:0; z-index:50; position:relative } div.multiselect>span:first-child { margin-right:2em; float:left; } div.multiselect>span:last-child { float:right; position:relative } diff --git a/core/css/styles.css b/core/css/styles.css index e545d521416d85e742915494724591df84d4b52d..46b340be961a042bdab5f506b01c5e3ef9cc4f2f 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -15,9 +15,9 @@ body { background:#fefefe; font:normal .8em/1.6em "Lucida Grande", Arial, Verdan /* HEADERS */ -#body-user #header, #body-settings #header { position:fixed; top:0; z-index:100; width:100%; height:2.5em; padding:.5em; background:#1d2d44; -moz-box-shadow:0 0 10px #000, inset 0 -2px 10px #222; -webkit-box-shadow:0 0 10px #000, inset 0 -2px 10px #222; box-shadow:0 0 10px #000, inset 0 -2px 10px #222; } -#body-login #header { margin:-2em auto 0; text-align:center; height:10em; - -moz-box-shadow:0 0 1em #000; -webkit-box-shadow:0 0 1em #000; box-shadow:0 0 1em #000; +#body-user #header, #body-settings #header { position:fixed; top:0; z-index:100; width:100%; height:2.5em; padding:.5em; background:#1d2d44; -moz-box-shadow:0 0 10px rgba(0, 0, 0, .5), inset 0 -2px 10px #222; -webkit-box-shadow:0 0 10px rgba(0, 0, 0, .5), inset 0 -2px 10px #222; box-shadow:0 0 10px rgba(0, 0, 0, .5), inset 0 -2px 10px #222; } +#body-login #header { margin: -2em auto 0; text-align:center; height:10em; + -moz-box-shadow:0 0 1em rgba(0, 0, 0, .5); -webkit-box-shadow:0 0 1em rgba(0, 0, 0, .5); box-shadow:0 0 1em rgba(0, 0, 0, .5); background: #1d2d44; /* Old browsers */ background: -moz-linear-gradient(top, #35537a 0%, #1d2d42 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#35537a), color-stop(100%,#1d2d42)); /* Chrome,Safari4+ */ @@ -34,25 +34,27 @@ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#35537a', end input[type="text"], input[type="password"] { cursor:text; } input, select, .button, #quota, div.jp-progress, .pager li a { font-size:1em; width:10em; margin:.3em; padding:.6em .5em .4em; background:#fff; color:#333; border:1px solid #ddd; -moz-box-shadow:0 1px 1px #fff, 0 2px 0 #bbb inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; outline:none; } input[type="text"], input[type="password"], input[type="search"] { background:#f8f8f8; color:#555; cursor:text; } +input[type="text"], input[type="password"], input[type="search"] { -webkit-appearance:textfield; -webkit-box-sizing:content-box; } input[type="text"]:hover, input[type="text"]:focus, input[type="password"]:hover, input[type="password"]:focus, input[type="search"]:hover, input[type="search"]:focus { background:#fff; color:#333; } input[type="submit"], input[type="button"], .button, #quota, div.jp-progress, .pager li a { width:auto; padding:.4em; border:1px solid #ddd; font-weight:bold; cursor:pointer; background:#f8f8f8; color:#555; text-shadow:#fff 0 1px 0; -moz-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; } input[type="submit"]:hover, input[type="submit"]:focus, input[type="button"]:hover, input[type="button"]:focus, .button:hover { background:#fff; color:#333; } input[type="checkbox"] { width:auto; } +#quota { cursor:default; } #body-login input { font-size:1.5em; } -#body-login input[type="submit"] { float:right; margin-right:.8em; } +#body-login input[type="text"], #body-login input[type="password"] { width: 13em; } +#body-login input.login { width: auto; float: right; } #remember_login { margin:.8em .2em 0 1em; } form.searchbox input[type="search"] { position:fixed; font-size:1.2em; top:.4em; right:3em; padding:.2em .5em .2em 1.5em; background-image:url('../img/actions/search.svg'); background-repeat:no-repeat; background-position:.5em center; border:0; -moz-border-radius:1em; -webkit-border-radius:1em; border-radius:1em; } input[type="submit"].enabled { background:#66f866; border:1px solid #5e5; -moz-box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #cfc inset; -webkit-box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #cfc inset; box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #cfc inset; } input[type="submit"].highlight{ background:#ffc100; border:1px solid #db0; text-shadow:#ffeedd 0 1px 0; -moz-box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #ffeedd inset; -webkit-box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #ffeedd inset; box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #ffeedd inset; } - /* CONTENT ------------------------------------------------------------------ */ -#controls { width:100%; top:3.5em; height:2.8em; margin:0; background:#f7f7f7; border-bottom:1px solid #eee; position:fixed; z-index:50; -moz-box-shadow:0 -3px 7px #000; -webkit-box-shadow:0 -3px 7px #000; box-shadow:0 -3px 7px #000; } +#controls { padding: 0 0.5em; width:100%; top:3.5em; height:2.8em; margin:0; background:#f7f7f7; border-bottom:1px solid #eee; position:fixed; z-index:50; -moz-box-shadow:0 -3px 7px #000; -webkit-box-shadow:0 -3px 7px #000; box-shadow:0 -3px 7px #000; } #controls .button { display:inline-block; } #content { margin:3.5em 0 0 12.5em; } -#leftcontent, .leftcontent { position:absolute; top:6.4em; width:20em; background:#f8f8f8; height:100%; border-right:1px solid #ddd; } +#leftcontent, .leftcontent { position:fixed; overflow: auto; top:6.4em; width:20em; background:#f8f8f8; border-right:1px solid #ddd; } #leftcontent li, .leftcontent li { padding:.3em .8em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; -webkit-transition:background-color 500ms; -moz-transition:background-color 500ms; -o-transition:background-color 500ms; transition:background-color 500ms; } #leftcontent li:hover, #leftcontent li:active, #leftcontent li.active, .leftcontent li:hover, .leftcontent li:active, .leftcontent li.active { background:#eee; } #rightcontent, .rightcontent { position:absolute; top:6.4em; left:33em; } @@ -60,17 +62,22 @@ input[type="submit"].highlight{ background:#ffc100; border:1px solid #db0; text- /* LOG IN & INSTALLATION ------------------------------------------------------------ */ #body-login { background:#ddd; } -#body-login p.info { width:16em; margin:2em auto; padding:1em; background:#eee; -moz-box-shadow:0 1px 0 #bbb inset; -webkit-box-shadow:0 1px 0 #bbb inset; box-shadow:0 1px 0 #bbb inset; -moz-border-radius:1em; -webkit-border-radius:1em; border-radius:1em; } -#body-login p.info a { font-weight:bold; } +#body-login div.buttons { text-align: center; } +#body-login p.info { width:22em; text-align: center; margin:2em auto; color:#777; text-shadow:#fff 0 1px 0; } +#body-login p.info a { font-weight:bold; color:#777; } #login { min-height:30em; margin:2em auto 0; border-bottom:1px solid #f8f8f8; background:#eee; } -#login form { width:18em; margin:2em auto 5em; padding:0; } +#login form { width:22em; margin:2em auto 2em; padding:0; } #login form fieldset { background:0; border:0; margin-bottom:2em; padding:0; } #login form fieldset legend { font-weight:bold; } -#login form label { position:absolute; margin:.8em .8em; font-size:1.5em; color:#666; } -#login #dbhostlabel, #login #directorylabel { display:block; margin:.95em 0 .8em -7em; } +#login form label { margin:.9em .8em .7em;; color:#666; } +/* NEEDED FOR INFIELD LABELS */ +p.infield { position: relative; } +label.infield { cursor: text !important; } +#login form label.infield { position:absolute; font-size:1.5em; color:#AAA; } +#login #dbhostlabel, #login #directorylabel { display:block; margin:.95em 0 .8em -8em; } #login form input[type="checkbox"]+label { position:relative; margin:0; font-size:1em; text-shadow:#fff 0 1px 0; } -#login form ul.errors { background:#fed7d7; border:1px solid #f00; list-style-indent:inside; margin:0 0 4em 0; padding:1em 1em 1em 5em; } +#login form ul.errors { background:#fed7d7; border:1px solid #f00; list-style-indent:inside; margin:0 0 2em; padding:1em; } #login form #selectDbType { text-align:center; } #login form #selectDbType label { position:static; font-size:1em; margin:0 -.3em 1em; cursor:pointer; padding:.4em; border:1px solid #ddd; font-weight:bold; background:#f8f8f8; color:#555; text-shadow:#eee 0 1px 0; -moz-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; } @@ -92,23 +99,26 @@ input[type="submit"].highlight{ background:#ffc100; border:1px solid #db0; text- /* VARIOUS REUSABLE SELECTORS */ .hidden { display:none; } +.bold { font-weight: bold; } #notification { z-index:101; cursor:pointer; background-color:#fc4; border:0; padding:0 .7em .3em; display:none; position:fixed; left:50%; top:0; -moz-border-radius-bottomleft:1em; -webkit-border-bottom-left-radius:1em; border-bottom-left-radius:1em; -moz-border-radius-bottomright:1em; -webkit-border-bottom-right-radius:1em; border-bottom-right-radius:1em; } .action, .selectedActions a, #logout { opacity:.3; -webkit-transition:opacity 500ms; -moz-transition:opacity 500ms; -o-transition:opacity 500ms; transition:opacity 500ms; } .action:hover, .selectedActions a:hover, #logout:hover { opacity:1; } -table tr { -webkit-transition:background-color 500ms; -moz-transition:background-color 500ms; -o-transition:background-color 500ms; transition:background-color 500ms; } +table:not(.nostyle) tr { -webkit-transition:background-color 500ms; -moz-transition:background-color 500ms; -o-transition:background-color 500ms; transition:background-color 500ms; } tbody tr:hover, tr:active { background-color:#f8f8f8; } #body-settings .personalblock, #body-settings .helpblock { padding:.5em 1em; margin:1em; background:#f8f8f8; color:#555; text-shadow:#fff 0 1px 0; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; } #body-settings .personalblock#quota { position:relative; margin-top:4.5em; padding:0; } #body-settings #controls+.helpblock { position:relative; margin-top:7.3em; } +.personalblock > legend { margin-top:2em; } -#quota div, div.jp-play-bar, div.jp-seek-bar { padding:.6em 1em; background:#e6e6e6; font-weight:normal; white-space:nowrap; -moz-border-radius-bottomleft:.4em; -webkit-border-bottom-left-radius:.4em; border-bottom-left-radius:.4em; -moz-border-radius-topleft:.4em; -webkit-border-top-left-radius:.4em; border-top-left-radius:.4em; } +#quota div, div.jp-play-bar, div.jp-seek-bar { padding:0; background:#e6e6e6; font-weight:normal; white-space:nowrap; -moz-border-radius-bottomleft:.4em; -webkit-border-bottom-left-radius:.4em; border-bottom-left-radius:.4em; -moz-border-radius-topleft:.4em; -webkit-border-top-left-radius:.4em; border-top-left-radius:.4em; } +#quotatext {padding: .6em 1em;} div.jp-play-bar, div.jp-seek-bar { padding:0; } -.pager { list-style:none; float:right; display:inline; margin:.7em 12.7em 0 0; } +.pager { list-style:none; float:right; display:inline; margin:.7em 13em 0 0; } .pager li { display:inline-block; } li.error { width:640px; margin:4em auto; padding:1em 1em 1em 4em; background:#ffe .8em .8em no-repeat; border:1px solid #ccc; -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; } diff --git a/core/img/filetypes/application-pdf.png b/core/img/filetypes/application-pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..8f8095e46fa4965700afe1f9d065d8a37b101676 Binary files /dev/null and b/core/img/filetypes/application-pdf.png differ diff --git a/core/img/filetypes/application-rss+xml.png b/core/img/filetypes/application-rss+xml.png new file mode 100644 index 0000000000000000000000000000000000000000..315c4f4fa62cb720326ba3f54259666ba3999e42 Binary files /dev/null and b/core/img/filetypes/application-rss+xml.png differ diff --git a/core/img/filetypes/audio.png b/core/img/filetypes/audio.png index 4c844425d644f2c6e83e2962ec6c4dd201e3100e..a8b3ede3df956f8d505543b190bc8d1b5b4dce75 100644 Binary files a/core/img/filetypes/audio.png and b/core/img/filetypes/audio.png differ diff --git a/core/img/filetypes/code-script.png b/core/img/filetypes/code-script.png new file mode 100644 index 0000000000000000000000000000000000000000..63fe6ceff5bfcedb9670279d4bb8d25807f6ecee Binary files /dev/null and b/core/img/filetypes/code-script.png differ diff --git a/core/img/filetypes/code.png b/core/img/filetypes/code.png new file mode 100644 index 0000000000000000000000000000000000000000..0c76bd1297751b66230f74719504b2adb02b1615 Binary files /dev/null and b/core/img/filetypes/code.png differ diff --git a/core/img/filetypes/database.png b/core/img/filetypes/database.png new file mode 100644 index 0000000000000000000000000000000000000000..3d09261a26eb97c6dedc1d3504cbc2cf915eb642 Binary files /dev/null and b/core/img/filetypes/database.png differ diff --git a/core/img/filetypes/file.png b/core/img/filetypes/file.png index 4979044889708bf736aefaee7ade0b1f4462600e..8b8b1ca0000bc8fa8d0379926736029f8fabe364 100644 Binary files a/core/img/filetypes/file.png and b/core/img/filetypes/file.png differ diff --git a/core/img/filetypes/flash.png b/core/img/filetypes/flash.png new file mode 100644 index 0000000000000000000000000000000000000000..5769120b1b6d38019b505c9167498ea199212cc1 Binary files /dev/null and b/core/img/filetypes/flash.png differ diff --git a/core/img/filetypes/folder.png b/core/img/filetypes/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..784e8fa48234f4f64b6922a6758f254ee0ca08ec Binary files /dev/null and b/core/img/filetypes/folder.png differ diff --git a/core/img/filetypes/font.png b/core/img/filetypes/font.png new file mode 100644 index 0000000000000000000000000000000000000000..81e41de7d3a9bcc50267b34d0005487d5c7cc7c0 Binary files /dev/null and b/core/img/filetypes/font.png differ diff --git a/core/img/filetypes/image-svg+xml.png b/core/img/filetypes/image-svg+xml.png new file mode 100644 index 0000000000000000000000000000000000000000..a1291c2dfad75b289f88ab762a3a32ccb436c1ed Binary files /dev/null and b/core/img/filetypes/image-svg+xml.png differ diff --git a/core/img/filetypes/image.png b/core/img/filetypes/image.png index 980a7c6981311787a5c33102fb23d0157103b65f..4a158fef7e0da8fd19525f574f2c4966443866cf 100644 Binary files a/core/img/filetypes/image.png and b/core/img/filetypes/image.png differ diff --git a/core/img/filetypes/link.png b/core/img/filetypes/link.png new file mode 100644 index 0000000000000000000000000000000000000000..68f21d30116710e48a8bf462cb32441e51fad5f6 Binary files /dev/null and b/core/img/filetypes/link.png differ diff --git a/core/img/filetypes/model.png b/core/img/filetypes/model.png new file mode 100644 index 0000000000000000000000000000000000000000..7851cf34c946e5667221e3478668503eb1cd733f Binary files /dev/null and b/core/img/filetypes/model.png differ diff --git a/core/img/filetypes/ms-excel.png b/core/img/filetypes/ms-excel.png new file mode 100644 index 0000000000000000000000000000000000000000..abcd93689a08ec9bdbf0984927e8da06c043c7cd Binary files /dev/null and b/core/img/filetypes/ms-excel.png differ diff --git a/core/img/filetypes/ms-powerpoint.png b/core/img/filetypes/ms-powerpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..b4aaad9a45c9abbee2d47611a6963101b64a8023 Binary files /dev/null and b/core/img/filetypes/ms-powerpoint.png differ diff --git a/core/img/filetypes/presentation.png b/core/img/filetypes/presentation.png new file mode 100644 index 0000000000000000000000000000000000000000..b4aaad9a45c9abbee2d47611a6963101b64a8023 Binary files /dev/null and b/core/img/filetypes/presentation.png differ diff --git a/core/img/filetypes/readme.txt b/core/img/filetypes/readme.txt new file mode 100644 index 0000000000000000000000000000000000000000..400a64d7857425f6aa49877a91a9bf8a5737400a --- /dev/null +++ b/core/img/filetypes/readme.txt @@ -0,0 +1,22 @@ +Silk icon set 1.3 + +_________________________________________ +Mark James +http://www.famfamfam.com/lab/icons/silk/ +_________________________________________ + +This work is licensed under a +Creative Commons Attribution 2.5 License. +[ http://creativecommons.org/licenses/by/2.5/ ] + +This means you may use it for any purpose, +and make any changes you like. +All I ask is that you include a link back +to this page in your credits. + +Are you using this icon set? Send me an email +(including a link or picture if available) to +mjames@gmail.com + +Any other questions about this icon set please +contact mjames@gmail.com \ No newline at end of file diff --git a/core/img/filetypes/ruby.png b/core/img/filetypes/ruby.png new file mode 100644 index 0000000000000000000000000000000000000000..f59b7c4365fa1720af1aa04eb47167ddaa6eeed4 Binary files /dev/null and b/core/img/filetypes/ruby.png differ diff --git a/core/img/filetypes/spreadsheet.png b/core/img/filetypes/spreadsheet.png new file mode 100644 index 0000000000000000000000000000000000000000..abcd93689a08ec9bdbf0984927e8da06c043c7cd Binary files /dev/null and b/core/img/filetypes/spreadsheet.png differ diff --git a/core/img/filetypes/text-calendar.png b/core/img/filetypes/text-calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..658913852d60fc6ca8557568d26b8e93e7d56525 Binary files /dev/null and b/core/img/filetypes/text-calendar.png differ diff --git a/core/img/filetypes/text-css.png b/core/img/filetypes/text-css.png new file mode 100644 index 0000000000000000000000000000000000000000..23f3101811f2e402b8c581ba2e39977a675e0295 Binary files /dev/null and b/core/img/filetypes/text-css.png differ diff --git a/core/img/filetypes/text-html.png b/core/img/filetypes/text-html.png new file mode 100644 index 0000000000000000000000000000000000000000..55d1072eafda48abb0a5fcecb98b114d866077b9 Binary files /dev/null and b/core/img/filetypes/text-html.png differ diff --git a/core/img/filetypes/text-x-c++.png b/core/img/filetypes/text-x-c++.png new file mode 100644 index 0000000000000000000000000000000000000000..a87cf847cb768acb8c600759ce433ce1bad3cdc0 Binary files /dev/null and b/core/img/filetypes/text-x-c++.png differ diff --git a/core/img/filetypes/text-x-c.png b/core/img/filetypes/text-x-c.png new file mode 100644 index 0000000000000000000000000000000000000000..34a05cccf064b35701b61ba1d395048873d7b48e Binary files /dev/null and b/core/img/filetypes/text-x-c.png differ diff --git a/core/img/filetypes/text-x-csharp.png b/core/img/filetypes/text-x-csharp.png new file mode 100644 index 0000000000000000000000000000000000000000..ffb8fc932f321d19049a51e0134459e7d6549226 Binary files /dev/null and b/core/img/filetypes/text-x-csharp.png differ diff --git a/core/img/filetypes/text-x-h.png b/core/img/filetypes/text-x-h.png new file mode 100644 index 0000000000000000000000000000000000000000..e902abb07671254da98cd4eb0f7d21fab89d2332 Binary files /dev/null and b/core/img/filetypes/text-x-h.png differ diff --git a/core/img/filetypes/text-x-php.png b/core/img/filetypes/text-x-php.png new file mode 100644 index 0000000000000000000000000000000000000000..7868a25945cd5e5cb7daaca9591927511ca65c0f Binary files /dev/null and b/core/img/filetypes/text-x-php.png differ diff --git a/core/img/filetypes/text.png b/core/img/filetypes/text.png new file mode 100644 index 0000000000000000000000000000000000000000..813f712f726c935f9adf8d2f2dd0d7683791ef11 Binary files /dev/null and b/core/img/filetypes/text.png differ diff --git a/core/img/filetypes/vcf.png b/core/img/filetypes/vcf.png new file mode 100644 index 0000000000000000000000000000000000000000..c02f315d20749098a50e79bd9525eed3cda7be6b Binary files /dev/null and b/core/img/filetypes/vcf.png differ diff --git a/core/img/filetypes/video.png b/core/img/filetypes/video.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ce7bb198a3b268bd634d2b26e9b710f3797d37 Binary files /dev/null and b/core/img/filetypes/video.png differ diff --git a/core/img/filetypes/x-.png b/core/img/filetypes/x-.png new file mode 100644 index 0000000000000000000000000000000000000000..8443c23eb944cf8ef49c9d13cd496502f46f1885 Binary files /dev/null and b/core/img/filetypes/x-.png differ diff --git a/core/img/jquery-tipsy.gif b/core/img/jquery-tipsy.gif deleted file mode 100644 index eb7718dfc168c3c63382c36c55e0fc3ab53974c1..0000000000000000000000000000000000000000 Binary files a/core/img/jquery-tipsy.gif and /dev/null differ diff --git a/core/img/places/file.png b/core/img/places/file.png new file mode 100644 index 0000000000000000000000000000000000000000..4979044889708bf736aefaee7ade0b1f4462600e Binary files /dev/null and b/core/img/places/file.png differ diff --git a/core/img/filetypes/file.svg b/core/img/places/file.svg similarity index 100% rename from core/img/filetypes/file.svg rename to core/img/places/file.svg diff --git a/core/img/places/music.png b/core/img/places/music.png new file mode 100644 index 0000000000000000000000000000000000000000..4c844425d644f2c6e83e2962ec6c4dd201e3100e Binary files /dev/null and b/core/img/places/music.png differ diff --git a/core/img/filetypes/audio.svg b/core/img/places/music.svg similarity index 100% rename from core/img/filetypes/audio.svg rename to core/img/places/music.svg diff --git a/core/img/places/picture.png b/core/img/places/picture.png new file mode 100644 index 0000000000000000000000000000000000000000..980a7c6981311787a5c33102fb23d0157103b65f Binary files /dev/null and b/core/img/places/picture.png differ diff --git a/core/img/filetypes/image.svg b/core/img/places/picture.svg similarity index 100% rename from core/img/filetypes/image.svg rename to core/img/places/picture.svg diff --git a/core/js/jquery-1.6.2.min.js b/core/js/jquery-1.6.2.min.js deleted file mode 100644 index 48590ecb96a74f5987d125e7fbc5a26c1392543a..0000000000000000000000000000000000000000 --- a/core/js/jquery-1.6.2.min.js +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * jQuery JavaScript Library v1.6.2 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Thu Jun 30 14:16:56 2011 -0400 - */ -(function(a,b){function cv(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cs(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cr(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cq(){cn=b}function cp(){setTimeout(cq,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bC.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bR,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bX(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bX(a,c,d,e,"*",g));return l}function bW(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bN),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bA(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bv:bw;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bx(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bm(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(be,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bl(a){f.nodeName(a,"input")?bk(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bk)}function bk(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bj(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bi(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bh(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bg(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function W(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(R.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(x,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z])/ig,x=function(a,b){return b.toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!A){A=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||D.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(H)return H.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g](h)}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]||i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u=/\:|^on/,v,w;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=w:v&&c!=="className"&&(f.nodeName(a,"form")||u.test(c))&&(i=v)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}},value:{get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return f.prop(a,c)?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.attrHooks.title=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i. -shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,N(a.origType,a.selector),f.extend({},a,{handler:M,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,N(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?E:D):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=E;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=E;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=E,this.stopPropagation()},isDefaultPrevented:D,isPropagationStopped:D,isImmediatePropagationStopped:D};var F=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},G=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?G:F,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?G:F)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&f(b).closest("form").length&&K("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&K("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var H,I=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function(c){var d=c.target,e,g;if(!!y.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=I(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var L={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||D,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=x.exec(h),k="",j&&(k=j[0],h=h.replace(x,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,L[h]?(a.push(L[h]+k),h=h+k):h=(L[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+N(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+N(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var O=/Until$/,P=/^(?:parents|prevUntil|prevAll)/,Q=/,/,R=/^.[^:#\[\.,]*$/,S=Array.prototype.slice,T=f.expr.match.POS,U={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(W(this,a,!1),"not",a)},filter:function(a){return this.pushStack(W(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=T.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/<tbody/i,ba=/<|&#?\w+;/,bb=/<(?:script|object|embed|option|style)/i,bc=/checked\s*(?:[^=]|=\s*.checked.)/i,bd=/\/(java|ecma)script/i,be=/^\s*<!(?:\[CDATA\[|\-\-)/,bf={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};bf.optgroup=bf.option,bf.tbody=bf.tfoot=bf.colgroup=bf.caption=bf.thead,bf.th=bf.td,f.support.htmlSerialize||(bf._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!bf[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bc.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bg(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bm)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!bb.test(a[0])&&(f.support.checkClone||!bc.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j -)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bi(a,d),e=bj(a),g=bj(d);for(h=0;e[h];++h)bi(e[h],g[h])}if(b){bh(a,d);if(c){e=bj(a),g=bj(d);for(h=0;e[h];++h)bh(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!ba.test(k))k=b.createTextNode(k);else{k=k.replace(Z,"<$1></$2>");var l=($.exec(k)||["",""])[1].toLowerCase(),m=bf[l]||bf._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=_.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Y.test(k)&&o.insertBefore(b.createTextNode(Y.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bl(k[i]);else bl(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bd.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bn=/alpha\([^)]*\)/i,bo=/opacity=([^)]*)/,bp=/([A-Z]|^ms)/g,bq=/^-?\d+(?:px)?$/i,br=/^-?\d/,bs=/^[+\-]=/,bt=/[^+\-\.\de]+/g,bu={position:"absolute",visibility:"hidden",display:"block"},bv=["Left","Right"],bw=["Top","Bottom"],bx,by,bz;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bx(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d;if(h==="number"&&isNaN(d)||d==null)return;h==="string"&&bs.test(d)&&(d=+d.replace(bt,"")+parseFloat(f.css(a,c)),h="number"),h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bx)return bx(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bA(a,b,d);f.swap(a,bu,function(){e=bA(a,b,d)});return e}},set:function(a,b){if(!bq.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bo.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bn.test(g)?g.replace(bn,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bB=/%20/g,bC=/\[\]$/,bD=/\r?\n/g,bE=/#.*$/,bF=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bG=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bH=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bI=/^(?:GET|HEAD)$/,bJ=/^\/\//,bK=/\?/,bL=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bM=/^(?:select|textarea)/i,bN=/\s+/,bO=/([?&])_=[^&]*/,bP=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bQ=f.fn.load,bR={},bS={},bT,bU;try{bT=e.href}catch(bV){bT=c.createElement("a"),bT.href="",bT=bT.href}bU=bP.exec(bT.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bQ)return bQ.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bL,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bM.test(this.nodeName)||bG.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bD,"\r\n")}}):{name:b.name,value:c.replace(bD,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bT,isLocal:bH.test(bU[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bW(bR),ajaxTransport:bW(bS),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?bZ(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b$(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bF.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bE,"").replace(bJ,bU[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bN),d.crossDomain==null&&(r=bP.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bU[1]&&r[2]==bU[2]&&(r[3]||(r[1]==="http:"?80:443))==(bU[3]||(bU[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bX(bR,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bI.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bK.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bO,"$1_="+x);d.url=y+(y===d.url?(bK.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bX(bS,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bB,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn,co=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cr("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cs(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cr("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cr("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cs(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cr("show",1),slideUp:cr("hide",1),slideToggle:cr("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function h(a){return d.step(a)}var d=this,e=f.fx,g;this.startTime=cn||cp(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,h.elem=this.elem,h()&&f.timers.push(h)&&!cl&&(co?(cl=!0,g=function(){cl&&(co(g),e.tick())},co(g)):cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||cp(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var ct=/^t(?:able|d|h)$/i,cu=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cv(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!ct.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cu.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cu.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cv(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cv(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/core/js/jquery-1.6.4.min.js b/core/js/jquery-1.6.4.min.js new file mode 100644 index 0000000000000000000000000000000000000000..628ed9b31604ed868f70c7a593441cfcdced1723 --- /dev/null +++ b/core/js/jquery-1.6.4.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.6.4 http://jquery.com/ | http://jquery.org/license */ +(function(a,b){function cu(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cr(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bA.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bW(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bP,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bW(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bW(a,c,d,e,"*",g));return l}function bV(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bL),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function by(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bt:bu;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bv(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bd,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,"input")?bj(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bj)}function bj(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bi(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bf(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function V(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(Q.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a&&a!=="*"?a+".":"")+b.replace(y,"`").replace(z,"&")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(w,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.4",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;B.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?"":H.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(!b)return-1;if(I)return I.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(arguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){J["[object "+b+"]"]=b.toLowerCase()}),A=e.uaMatch(z),A.browser&&(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener("DOMContentLoaded",C,!1),e.ready()}:c.attachEvent&&(C=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",C),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g+"With"](this===b?d:this,[h])}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-1000px",top:"-1000px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c=="string",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]&&f.expando;if((!m||e&&m&&l[m]&&!l[m][i])&&j&&d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e&&(g[i]||(g[i]={}),g=g[i]),d!==b&&(g[f.camelCase(c)]=d);if(c==="events"&&!g[c])return g[i]&&g[i].events;j?(h=g[c],h==null&&(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u,v;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u&&(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.attr(a,b,""),a.removeAttribute(b),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(u&&f.nodeName(a,"button"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u&&f.nodeName(a,"button"))return u.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=/\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\./g,z=/ /g,A=/[^\w\s.|`]/g,B=function(a){return a.replace(A,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),B).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete +t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,M(a.origType,a.selector),f.extend({},a,{handler:L,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,M(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?D:C):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=D;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=D;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=D,this.stopPropagation()},isDefaultPrevented:C,isPropagationStopped:C,isImmediatePropagationStopped:C};var E=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},F=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?F:E,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?F:E)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")||f.nodeName(b,"button")?b.type:"";(c==="submit"||c==="image")&&f(b).closest("form").length&&J("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")||f.nodeName(b,"button")?b.type:"";(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&J("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var G,H=function(a){var b=f.nodeName(a,"input")?a.type:"",c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},I=function(c){var d=c.target,e,g;if(!!x.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=H(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:I,beforedeactivate:I,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&I.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&I.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",H(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in G)f.event.add(this,c+".specialChange",G[c]);return x.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return x.test(this.nodeName)}},G=f.event.special.change.filters,G.focus=G.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var K={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||C,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=w.exec(h),k="",j&&(k=j[0],h=h.replace(w,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,K[h]?(a.push(K[h]+k),h=h+k):h=(K[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+M(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+M(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var N=/Until$/,O=/^(?:parents|prevUntil|prevAll)/,P=/,/,Q=/^.[^:#\[\.,]*$/,R=Array.prototype.slice,S=f.expr.match.POS,T={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(V(this,a,!1),"not",a)},filter:function(a){return this.pushStack(V(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=S.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=S.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(U(c[0])||U(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=R.call(arguments);N.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!T[a]?f.unique(e):e,(this.length>1||P.test(d))&&O.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|object|embed|option|style)/i,bb=/checked\s*(?:[^=]|=\s*.checked.)/i,bc=/\/(java|ecma)script/i,bd=/^\s*<!(?:\[CDATA\[|\-\-)/,be={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!be[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bb.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bf(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bl)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!ba.test(a[0])&&(f.support.checkClone||!bb.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean +(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)g[h]&&bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=be[l]||be._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bk(k[i]);else bk(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bc.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bm=/alpha\([^)]*\)/i,bn=/opacity=([^)]*)/,bo=/([A-Z]|^ms)/g,bp=/^-?\d+(?:px)?$/i,bq=/^-?\d/,br=/^([\-+])=([\-+.\de]+)/,bs={position:"absolute",visibility:"hidden",display:"block"},bt=["Left","Right"],bu=["Top","Bottom"],bv,bw,bx;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bv(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=br.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bv)return bv(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return by(a,b,d);f.swap(a,bs,function(){e=by(a,b,d)});return e}},set:function(a,b){if(!bp.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bm,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bv(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bw=function(a,c){var d,e,g;c=c.replace(bo,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bx=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bp.test(d)&&bq.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bv=bw||bx,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bz=/%20/g,bA=/\[\]$/,bB=/\r?\n/g,bC=/#.*$/,bD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bE=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bF=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bG=/^(?:GET|HEAD)$/,bH=/^\/\//,bI=/\?/,bJ=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bK=/^(?:select|textarea)/i,bL=/\s+/,bM=/([?&])_=[^&]*/,bN=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bO=f.fn.load,bP={},bQ={},bR,bS,bT=["*/"]+["*"];try{bR=e.href}catch(bU){bR=c.createElement("a"),bR.href="",bR=bR.href}bS=bN.exec(bR.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bO)return bO.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bJ,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bK.test(this.nodeName)||bE.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bB,"\r\n")}}):{name:b.name,value:c.replace(bB,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?bX(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),bX(a,b);return a},ajaxSettings:{url:bR,isLocal:bF.test(bS[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bT},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bV(bP),ajaxTransport:bV(bQ),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?bZ(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=b$(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bD.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bC,"").replace(bH,bS[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bL),d.crossDomain==null&&(r=bN.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bS[1]&&r[2]==bS[2]&&(r[3]||(r[1]==="http:"?80:443))==(bS[3]||(bS[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bW(bP,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bG.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bI.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bM,"$1_="+x);d.url=y+(y===d.url?(bI.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bT+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bW(bQ,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bz,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cq("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cr(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cq("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cq("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cr(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cq("show",1),slideUp:cq("hide",1),slideToggle:cq("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return d.step(a)}var d=this,e=f.fx;this.startTime=cn||co(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&f.timers.push(g)&&!cl&&(cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||co(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cs=/^t(?:able|d|h)$/i,ct=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cu(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cs.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=ct.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!ct.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cu(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cu(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNaN(j)?i:j}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/core/js/jquery.infieldlabel.min.js b/core/js/jquery.infieldlabel.min.js new file mode 100755 index 0000000000000000000000000000000000000000..8f0ab9f7c5ea845477d14fc7b84cf31020354b45 --- /dev/null +++ b/core/js/jquery.infieldlabel.min.js @@ -0,0 +1,12 @@ +/* + * In-Field Label jQuery Plugin + * http://fuelyourcoding.com/scripts/infield.html + * + * Copyright (c) 2009 Doug Neiner + * Dual licensed under the MIT and GPL licenses. + * Uses the same license as jQuery, see: + * http://docs.jquery.com/License + * + * @version 0.1 + */ +(function($){$.InFieldLabels=function(b,c,d){var f=this;f.$label=$(b);f.label=b;f.$field=$(c);f.field=c;f.$label.data("InFieldLabels",f);f.showing=true;f.init=function(){f.options=$.extend({},$.InFieldLabels.defaultOptions,d);if(f.$field.val()!=""){f.$label.hide();f.showing=false};f.$field.focus(function(){f.fadeOnFocus()}).blur(function(){f.checkForEmpty(true)}).bind('keydown.infieldlabel',function(e){f.hideOnChange(e)}).change(function(e){f.checkForEmpty()}).bind('onPropertyChange',function(){f.checkForEmpty()})};f.fadeOnFocus=function(){if(f.showing){f.setOpacity(f.options.fadeOpacity)}};f.setOpacity=function(a){f.$label.stop().animate({opacity:a},f.options.fadeDuration);f.showing=(a>0.0)};f.checkForEmpty=function(a){if(f.$field.val()==""){f.prepForShow();f.setOpacity(a?1.0:f.options.fadeOpacity)}else{f.setOpacity(0.0)}};f.prepForShow=function(e){if(!f.showing){f.$label.css({opacity:0.0}).show();f.$field.bind('keydown.infieldlabel',function(e){f.hideOnChange(e)})}};f.hideOnChange=function(e){if((e.keyCode==16)||(e.keyCode==9))return;if(f.showing){f.$label.hide();f.showing=false};f.$field.unbind('keydown.infieldlabel')};f.init()};$.InFieldLabels.defaultOptions={fadeOpacity:0.5,fadeDuration:300};$.fn.inFieldLabels=function(c){return this.each(function(){var a=$(this).attr('for');if(!a)return;var b=$("input#"+a+"[type='text'],"+"input#"+a+"[type='password'],"+"textarea#"+a);if(b.length==0)return;(new $.InFieldLabels(this,b[0],c))})}})(jQuery); \ No newline at end of file diff --git a/core/js/jquery.multiselect.js b/core/js/jquery.multiselect.js new file mode 100644 index 0000000000000000000000000000000000000000..46aab7ebf0156b02441c8b3aef720e6e1fb87cd8 --- /dev/null +++ b/core/js/jquery.multiselect.js @@ -0,0 +1,658 @@ +/* + * jQuery MultiSelect UI Widget 1.11 + * Copyright (c) 2011 Eric Hynds + * + * http://www.erichynds.com/jquery/jquery-ui-multiselect-widget/ + * + * Depends: + * - jQuery 1.4.2+ + * - jQuery UI 1.8 widget factory + * + * Optional: + * - jQuery UI effects + * - jQuery UI position utility + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * +*/ +(function($, undefined){ + +var multiselectID = 0; + +$.widget("ech.multiselect", { + + // default options + options: { + header: true, + height: 175, + minWidth: 225, + classes: '', + checkAllText: 'Check all', + uncheckAllText: 'Uncheck all', + noneSelectedText: 'Select options', + selectedText: '# selected', + selectedList: 0, + show: '', + hide: '', + autoOpen: false, + multiple: true, + position: {} + }, + + _create: function(){ + var el = this.element.hide(), + o = this.options; + + this.speed = $.fx.speeds._default; // default speed for effects + this._isOpen = false; // assume no + + var + button = (this.button = $('<button type="button"><span class="ui-icon ui-icon-triangle-2-n-s"></span></button>')) + .addClass('ui-multiselect ui-widget ui-state-default ui-corner-all') + .addClass( o.classes ) + .attr({ 'title':el.attr('title'), 'aria-haspopup':true, 'tabIndex':el.attr('tabIndex') }) + .insertAfter( el ), + + buttonlabel = (this.buttonlabel = $('<span />')) + .html( o.noneSelectedText ) + .appendTo( button ), + + menu = (this.menu = $('<div />')) + .addClass('ui-multiselect-menu ui-widget ui-widget-content ui-corner-all') + .addClass( o.classes ) + .insertAfter( button ), + + header = (this.header = $('<div />')) + .addClass('ui-widget-header ui-corner-all ui-multiselect-header ui-helper-clearfix') + .appendTo( menu ), + + headerLinkContainer = (this.headerLinkContainer = $('<ul />')) + .addClass('ui-helper-reset') + .html(function(){ + if( o.header === true ){ + return '<li><a class="ui-multiselect-all" href="#"><span class="ui-icon ui-icon-check"></span><span>' + o.checkAllText + '</span></a></li><li><a class="ui-multiselect-none" href="#"><span class="ui-icon ui-icon-closethick"></span><span>' + o.uncheckAllText + '</span></a></li>'; + } else if(typeof o.header === "string"){ + return '<li>' + o.header + '</li>'; + } else { + return ''; + } + }) + .append('<li class="ui-multiselect-close"><a href="#" class="ui-multiselect-close"><span class="ui-icon ui-icon-circle-close"></span></a></li>') + .appendTo( header ), + + checkboxContainer = (this.checkboxContainer = $('<ul />')) + .addClass('ui-multiselect-checkboxes ui-helper-reset') + .appendTo( menu ); + + // perform event bindings + this._bindEvents(); + + // build menu + this.refresh( true ); + + // some addl. logic for single selects + if( !o.multiple ){ + menu.addClass('ui-multiselect-single'); + } + }, + + _init: function(){ + if( this.options.header === false ){ + this.header.hide(); + } + if( !this.options.multiple ){ + this.headerLinkContainer.find('.ui-multiselect-all, .ui-multiselect-none').hide(); + } + if( this.options.autoOpen ){ + this.open(); + } + if( this.element.is(':disabled') ){ + this.disable(); + } + }, + + refresh: function( init ){ + var el = this.element, + o = this.options, + menu = this.menu, + checkboxContainer = this.checkboxContainer, + optgroups = [], + html = [], + id = el.attr('id') || multiselectID++; // unique ID for the label & option tags + + // build items + this.element.find('option').each(function( i ){ + var $this = $(this), + parent = this.parentNode, + title = this.innerHTML, + description = this.title, + value = this.value, + inputID = this.id || 'ui-multiselect-'+id+'-option-'+i, + isDisabled = this.disabled, + isSelected = this.selected, + labelClasses = ['ui-corner-all'], + optLabel; + + // is this an optgroup? + if( parent.tagName.toLowerCase() === 'optgroup' ){ + optLabel = parent.getAttribute('label'); + + // has this optgroup been added already? + if( $.inArray(optLabel, optgroups) === -1 ){ + html.push('<li class="ui-multiselect-optgroup-label"><a href="#">' + optLabel + '</a></li>'); + optgroups.push( optLabel ); + } + } + + if( isDisabled ){ + labelClasses.push('ui-state-disabled'); + } + + // browsers automatically select the first option + // by default with single selects + if( isSelected && !o.multiple ){ + labelClasses.push('ui-state-active'); + } + + html.push('<li class="' + (isDisabled ? 'ui-multiselect-disabled' : '') + '">'); + + // create the label + html.push('<label for="'+inputID+'" title="'+description+'" class="'+labelClasses.join(' ')+ '">'); + html.push('<input id="'+inputID+'" name="multiselect_'+id+'" type="'+(o.multiple ? "checkbox" : "radio")+'" value="'+value+'" title="'+title+'"'); + + // pre-selected? + if( isSelected ){ + html.push(' checked="checked"'); + html.push(' aria-selected="true"'); + } + + // disabled? + if( isDisabled ){ + html.push(' disabled="disabled"'); + html.push(' aria-disabled="true"'); + } + + // add the title and close everything off + html.push(' /><span>' + title + '</span></label></li>'); + }); + + // insert into the DOM + checkboxContainer.html( html.join('') ); + + // cache some moar useful elements + this.labels = menu.find('label'); + + // set widths + this._setButtonWidth(); + this._setMenuWidth(); + + // remember default value + this.button[0].defaultValue = this.update(); + + // broadcast refresh event; useful for widgets + if( !init ){ + this._trigger('refresh'); + } + }, + + // updates the button text. call refresh() to rebuild + update: function(){ + var o = this.options, + $inputs = this.labels.find('input'), + $checked = $inputs.filter(':checked'), + numChecked = $checked.length, + value; + + if( numChecked === 0 ){ + value = o.noneSelectedText; + } else { + if($.isFunction( o.selectedText )){ + value = o.selectedText.call(this, numChecked, $inputs.length, $checked.get()); + } else if( /\d/.test(o.selectedList) && o.selectedList > 0 && numChecked <= o.selectedList){ + value = $checked.map(function(){ return this.title; }).get().join(', '); + } else { + value = o.selectedText.replace('#', numChecked).replace('#', $inputs.length); + } + } + + this.buttonlabel.html( value ); + return value; + }, + + // binds events + _bindEvents: function(){ + var self = this, button = this.button; + + function clickHandler(){ + self[ self._isOpen ? 'close' : 'open' ](); + return false; + } + + // webkit doesn't like it when you click on the span :( + button + .find('span') + .bind('click.multiselect', clickHandler); + + // button events + button.bind({ + click: clickHandler, + keypress: function( e ){ + switch(e.which){ + case 27: // esc + case 38: // up + case 37: // left + self.close(); + break; + case 39: // right + case 40: // down + self.open(); + break; + } + }, + mouseenter: function(){ + if( !button.hasClass('ui-state-disabled') ){ + $(this).addClass('ui-state-hover'); + } + }, + mouseleave: function(){ + $(this).removeClass('ui-state-hover'); + }, + focus: function(){ + if( !button.hasClass('ui-state-disabled') ){ + $(this).addClass('ui-state-focus'); + } + }, + blur: function(){ + $(this).removeClass('ui-state-focus'); + } + }); + + // header links + this.header + .delegate('a', 'click.multiselect', function( e ){ + // close link + if( $(this).hasClass('ui-multiselect-close') ){ + self.close(); + + // check all / uncheck all + } else { + self[ $(this).hasClass('ui-multiselect-all') ? 'checkAll' : 'uncheckAll' ](); + } + + e.preventDefault(); + }); + + // optgroup label toggle support + this.menu + .delegate('li.ui-multiselect-optgroup-label a', 'click.multiselect', function( e ){ + e.preventDefault(); + + var $this = $(this), + $inputs = $this.parent().nextUntil('li.ui-multiselect-optgroup-label').find('input:visible:not(:disabled)'), + nodes = $inputs.get(), + label = $this.parent().text(); + + // trigger event and bail if the return is false + if( self._trigger('beforeoptgrouptoggle', e, { inputs:nodes, label:label }) === false ){ + return; + } + + // toggle inputs + self._toggleChecked( + $inputs.filter(':checked').length !== $inputs.length, + $inputs + ); + + self._trigger('optgrouptoggle', e, { + inputs: nodes, + label: label, + checked: nodes[0].checked + }); + }) + .delegate('label', 'mouseenter.multiselect', function(){ + if( !$(this).hasClass('ui-state-disabled') ){ + self.labels.removeClass('ui-state-hover'); + $(this).addClass('ui-state-hover').find('input').focus(); + } + }) + .delegate('label', 'keydown.multiselect', function( e ){ + e.preventDefault(); + + switch(e.which){ + case 9: // tab + case 27: // esc + self.close(); + break; + case 38: // up + case 40: // down + case 37: // left + case 39: // right + self._traverse(e.which, this); + break; + case 13: // enter + $(this).find('input')[0].click(); + break; + } + }) + .delegate('input[type="checkbox"], input[type="radio"]', 'click.multiselect', function( e ){ + var $this = $(this), + val = this.value, + checked = this.checked, + tags = self.element.find('option'); + + // bail if this input is disabled or the event is cancelled + if( this.disabled || self._trigger('click', e, { value:val, text:this.title, checked:checked }) === false ){ + e.preventDefault(); + return; + } + + // toggle aria state + $this.attr('aria-selected', checked); + + // change state on the original option tags + tags.each(function(){ + if( this.value === val ){ + this.selected = checked; + } else if( !self.options.multiple ){ + this.selected = false; + } + }); + + // some additional single select-specific logic + if( !self.options.multiple ){ + self.labels.removeClass('ui-state-active'); + $this.closest('label').toggleClass('ui-state-active', checked ); + + // close menu + self.close(); + } + + // fire change on the select box + self.element.trigger("change"); + + // setTimeout is to fix multiselect issue #14 and #47. caused by jQuery issue #3827 + // http://bugs.jquery.com/ticket/3827 + setTimeout($.proxy(self.update, self), 10); + }); + + // close each widget when clicking on any other element/anywhere else on the page + $(document).bind('mousedown.multiselect', function( e ){ + if(self._isOpen && !$.contains(self.menu[0], e.target) && !$.contains(self.button[0], e.target) && e.target !== self.button[0]){ + self.close(); + } + }); + + // deal with form resets. the problem here is that buttons aren't + // restored to their defaultValue prop on form reset, and the reset + // handler fires before the form is actually reset. delaying it a bit + // gives the form inputs time to clear. + $(this.element[0].form).bind('reset.multiselect', function(){ + setTimeout(function(){ self.update(); }, 10); + }); + }, + + // set button width + _setButtonWidth: function(){ + var width = this.element.outerWidth(), + o = this.options; + + if( /\d/.test(o.minWidth) && width < o.minWidth){ + width = o.minWidth; + } + + // set widths + this.button.width( width ); + }, + + // set menu width + _setMenuWidth: function(){ + var m = this.menu, + width = this.button.outerWidth()- + parseInt(m.css('padding-left'),10)- + parseInt(m.css('padding-right'),10)- + parseInt(m.css('border-right-width'),10)- + parseInt(m.css('border-left-width'),10); + + m.width( width || this.button.outerWidth() ); + }, + + // move up or down within the menu + _traverse: function( which, start ){ + var $start = $(start), + moveToLast = which === 38 || which === 37, + + // select the first li that isn't an optgroup label / disabled + $next = $start.parent()[moveToLast ? 'prevAll' : 'nextAll']('li:not(.ui-multiselect-disabled, .ui-multiselect-optgroup-label)')[ moveToLast ? 'last' : 'first'](); + + // if at the first/last element + if( !$next.length ){ + var $container = this.menu.find('ul:last'); + + // move to the first/last + this.menu.find('label')[ moveToLast ? 'last' : 'first' ]().trigger('mouseover'); + + // set scroll position + $container.scrollTop( moveToLast ? $container.height() : 0 ); + + } else { + $next.find('label').trigger('mouseover'); + } + }, + + // This is an internal function to toggle the checked property and + // other related attributes of a checkbox. + // + // The context of this function should be a checkbox; do not proxy it. + _toggleCheckbox: function( prop, flag ){ + return function(){ + !this.disabled && (this[ prop ] = flag); + + if( flag ){ + this.setAttribute('aria-selected', true); + } else { + this.removeAttribute('aria-selected'); + } + } + }, + + _toggleChecked: function( flag, group ){ + var $inputs = (group && group.length) ? + group : + this.labels.find('input'), + + self = this; + + // toggle state on inputs + $inputs.each(this._toggleCheckbox('checked', flag)); + + // update button text + this.update(); + + // gather an array of the values that actually changed + var values = $inputs.map(function(){ + return this.value; + }).get(); + + // toggle state on original option tags + this.element + .find('option') + .each(function(){ + if( !this.disabled && $.inArray(this.value, values) > -1 ){ + self._toggleCheckbox('selected', flag).call( this ); + } + }); + + // trigger the change event on the select + if( $inputs.length ) { + this.element.trigger("change"); + } + }, + + _toggleDisabled: function( flag ){ + this.button + .attr({ 'disabled':flag, 'aria-disabled':flag })[ flag ? 'addClass' : 'removeClass' ]('ui-state-disabled'); + + this.menu + .find('input') + .attr({ 'disabled':flag, 'aria-disabled':flag }) + .parent()[ flag ? 'addClass' : 'removeClass' ]('ui-state-disabled'); + + this.element + .attr({ 'disabled':flag, 'aria-disabled':flag }); + }, + + // open the menu + open: function( e ){ + var self = this, + button = this.button, + menu = this.menu, + speed = this.speed, + o = this.options; + + // bail if the multiselectopen event returns false, this widget is disabled, or is already open + if( this._trigger('beforeopen') === false || button.hasClass('ui-state-disabled') || this._isOpen ){ + return; + } + + var $container = menu.find('ul:last'), + effect = o.show, + pos = button.position(); + + // figure out opening effects/speeds + if( $.isArray(o.show) ){ + effect = o.show[0]; + speed = o.show[1] || self.speed; + } + + // set the scroll of the checkbox container + $container.scrollTop(0).height(o.height); + + // position and show menu + if( $.ui.position && !$.isEmptyObject(o.position) ){ + o.position.of = o.position.of || button; + + menu + .show() + .position( o.position ) + .hide() + .show( effect, speed ); + + // if position utility is not available... + } else { + menu.css({ + top: pos.top+button.outerHeight(), + left: pos.left + }).show( effect, speed ); + } + + // select the first option + // triggering both mouseover and mouseover because 1.4.2+ has a bug where triggering mouseover + // will actually trigger mouseenter. the mouseenter trigger is there for when it's eventually fixed + this.labels.eq(0).trigger('mouseover').trigger('mouseenter').find('input').trigger('focus'); + + button.addClass('ui-state-active'); + this._isOpen = true; + this._trigger('open'); + }, + + // close the menu + close: function(){ + if(this._trigger('beforeclose') === false){ + return; + } + + var o = this.options, effect = o.hide, speed = this.speed; + + // figure out opening effects/speeds + if( $.isArray(o.hide) ){ + effect = o.hide[0]; + speed = o.hide[1] || this.speed; + } + + this.menu.hide(effect, speed); + this.button.removeClass('ui-state-active').trigger('blur').trigger('mouseleave'); + this._isOpen = false; + this._trigger('close'); + }, + + enable: function(){ + this._toggleDisabled(false); + }, + + disable: function(){ + this._toggleDisabled(true); + }, + + checkAll: function( e ){ + this._toggleChecked(true); + this._trigger('checkAll'); + }, + + uncheckAll: function(){ + this._toggleChecked(false); + this._trigger('uncheckAll'); + }, + + getChecked: function(){ + return this.menu.find('input').filter(':checked'); + }, + + destroy: function(){ + // remove classes + data + $.Widget.prototype.destroy.call( this ); + + this.button.remove(); + this.menu.remove(); + this.element.show(); + + return this; + }, + + isOpen: function(){ + return this._isOpen; + }, + + widget: function(){ + return this.menu; + }, + + // react to option changes after initialization + _setOption: function( key, value ){ + var menu = this.menu; + + switch(key){ + case 'header': + menu.find('div.ui-multiselect-header')[ value ? 'show' : 'hide' ](); + break; + case 'checkAllText': + menu.find('a.ui-multiselect-all span').eq(-1).text(value); + break; + case 'uncheckAllText': + menu.find('a.ui-multiselect-none span').eq(-1).text(value); + break; + case 'height': + menu.find('ul:last').height( parseInt(value,10) ); + break; + case 'minWidth': + this.options[ key ] = parseInt(value,10); + this._setButtonWidth(); + this._setMenuWidth(); + break; + case 'selectedText': + case 'selectedList': + case 'noneSelectedText': + this.options[key] = value; // these all needs to update immediately for the update() call + this.update(); + break; + case 'classes': + menu.add(this.button).removeClass(this.options.classes).addClass(value); + break; + } + + $.Widget.prototype._setOption.apply( this, arguments ); + } +}); + +})(jQuery); diff --git a/core/js/js.js b/core/js/js.js index 9d2b20d10f095804200b6b52544b2e8f97e89039..9e814ca07298d23fae5a176997c84ab065d67d80 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -83,8 +83,8 @@ OC={ */ addScript:function(app,script,ready){ var path=OC.filePath(app,'js',script+'.js'); - if(OC.addStyle.loaded.indexOf(path)==-1){ - OC.addStyle.loaded.push(path); + if(OC.addScript.loaded.indexOf(path)==-1){ + OC.addScript.loaded.push(path); if(ready){ $.getScript(path,ready); }else{ @@ -103,8 +103,8 @@ OC={ */ addStyle:function(app,style){ var path=OC.filePath(app,'css',style+'.css'); - if(OC.addScript.loaded.indexOf(path)==-1){ - OC.addScript.loaded.push(path); + if(OC.addStyle.loaded.indexOf(path)==-1){ + OC.addStyle.loaded.push(path); var style=$('<link rel="stylesheet" type="text/css" href="'+path+'"/>'); $('head').append(style); } @@ -244,7 +244,36 @@ function object(o) { return new F(); } + +/** + * Fills height of window. (more precise than height: 100%;) + */ +function fillHeight(selector) { + var height = parseFloat($(window).height())-parseFloat(selector.css('top')); + selector.css('height', height + 'px'); + if(selector.outerHeight() > selector.height()) + selector.css('height', height-(selector.outerHeight()-selector.height()) + 'px'); +} + +/** + * Fills height and width of window. (more precise than height: 100%; or width: 100%;) + */ +function fillWindow(selector) { + fillHeight(selector); + var width = parseFloat($(window).width())-parseFloat(selector.css('left')); + selector.css('width', width + 'px'); + if(selector.outerWidth() > selector.width()) + selector.css('width', width-(selector.outerWidth()-selector.width()) + 'px'); +} + $(document).ready(function(){ + + $(window).resize(function () { + fillHeight($('#leftcontent')); + fillWindow($('#rightcontent')); + }); + $(window).trigger('resize'); + if(!SVGSupport()){//replace all svg images with png images for browser that dont support svg replaceSVG(); }else{ @@ -252,7 +281,7 @@ $(document).ready(function(){ } $('form.searchbox').submit(function(event){ event.preventDefault(); - }) + }); $('#searchbox').keyup(function(event){ if(event.keyCode==13){//enter if(OC.search.currentResult>-1){ @@ -290,6 +319,9 @@ $(document).ready(function(){ // 'show password' checkbox $('#pass2').showPassword(); + //use infield labels + $("label.infield").inFieldLabels(); + // hide log in button etc. when form fields not filled $('#submit').hide(); $('#remember_login').hide(); @@ -301,14 +333,13 @@ $(document).ready(function(){ empty = true; } }); - if(empty) { $('#submit').fadeOut(); - $('#remember_login').fadeOut(); + $('#remember_login').hide(); $('#remember_login+label').fadeOut(); } else { $('#submit').fadeIn(); - $('#remember_login').fadeIn(); + $('#remember_login').show(); $('#remember_login+label').fadeIn(); } }); @@ -320,7 +351,7 @@ $(document).ready(function(){ }); $('#settings #expanddiv').click(function(event){ event.stopPropagation(); - }) + }); $('#settings #expand').hover(function(){ $('#settings #expand+span').fadeToggle(); }); diff --git a/core/js/multiselect.js b/core/js/multiselect.js index 559cdf9b167ef0189d1bbfcfddb2ab77f278164d..263808240472d9041ea4f80a852a16a227d7be71 100644 --- a/core/js/multiselect.js +++ b/core/js/multiselect.js @@ -43,25 +43,25 @@ }); button.addClass('active'); event.stopPropagation(); - var options=$(this).parent().next().children().map(function(){return $(this).val()}); + var options=$(this).parent().next().children().map(function(){return $(this).val();}); var list=$('<ul class="multiselectoptions"/>').hide().appendTo($(this).parent()); function createItem(item,checked){ var id='ms'+multiSelectId+'-option-'+item; var input=$('<input id="'+id+'" type="checkbox"/>'); var label=$('<label for="'+id+'">'+item+'</label>'); if(settings.checked.indexOf(item)!=-1 || checked){ - input.attr('checked','checked'); + input.attr('checked',true); } if(checked){ settings.checked.push(item); } input.change(function(){ var groupname=$(this).next().text(); - if($(this).attr('checked')){ + if($(this).is(':checked')){ settings.checked.push(groupname); if(settings.oncheck){ if(settings.oncheck(groupname)===false){ - $(this).removeAttr('checked'); + $(this).attr('checked', false); return; } } @@ -70,7 +70,7 @@ settings.checked.splice(index,1); if(settings.onuncheck){ if(settings.onuncheck(groupname)===false){ - $(this).attr('checked','checked'); + $(this).attr('checked',true); return; } } @@ -81,7 +81,7 @@ }else{ button.children('span').first().text(settings.title); } - var newOuterWidth=Math.max((button.outerWidth()-2),settings.minOuterWidth)+'px' + var newOuterWidth=Math.max((button.outerWidth()-2),settings.minOuterWidth)+'px'; var newWidth=Math.max(button.width(),settings.minWidth); button.css('height',button.height()); button.css('white-space','nowrap'); diff --git a/core/js/setup.js b/core/js/setup.js index 7c44362f05194c43e5dfe39d5181125e1478b511..b765d41ba351a7bac15c4aeee25bd78a2d8fa9fd 100644 --- a/core/js/setup.js +++ b/core/js/setup.js @@ -1,8 +1,8 @@ $(document).ready(function() { $('#selectDbType').buttonset(); - $('#datadirField').hide(250); + $('#datadirContent').hide(250); + $('#databaseField').hide(250); if($('#hasSQLite').val()=='true'){ - $('#databaseField').hide(); $('#use_other_db').hide(); $('#dbhost').hide(); $('#dbhostlabel').hide(); @@ -26,10 +26,36 @@ $(document).ready(function() { $('#dbhostlabel').show(250); }); + $('input[checked]').trigger('click'); + $('#showAdvanced').click(function() { - $('#datadirField').slideToggle(250); - if($('#hasSQLite').val()=='true'){ - $('#databaseField').slideToggle(250); + $('#datadirContent').slideToggle(250); + $('#databaseField').slideToggle(250); + }); + $("form").submit(function(){ + // Save form parameters + var post = $(this).serializeArray(); + + // Disable inputs + $(':submit', this).attr('disabled','disabled').val('Finishing …'); + $('input', this).addClass('ui-state-disabled').attr('disabled','disabled'); + $('#selectDbType').button('disable'); + $('label.ui-button', this).addClass('ui-state-disabled').attr('aria-disabled', 'true').button('disable'); + + // Create the form + var form = $('<form>'); + form.attr('action', $(this).attr('action')); + form.attr('method', 'POST'); + + for(var i=0; i<post.length; i++){ + var input = $('<input type="hidden">'); + input.attr(post[i]); + form.append(input); } + + // Submit the form + form.appendTo(document.body); + form.submit(); + return false; }); }); diff --git a/core/l10n/bg_BG.php b/core/l10n/bg_BG.php index 163510bdaff6794f7bd74e9e93719e9d122de1fa..6bf25e5598bbf7862aabd9cbb0ea0a99207ffaa8 100644 --- a/core/l10n/bg_BG.php +++ b/core/l10n/bg_BG.php @@ -1,11 +1,36 @@ <?php $TRANSLATIONS = array( -"Cloud not found" => "обклакът не намерен", +"Personal" => "Лични", +"Users" => "Потребители", +"Apps" => "Програми", +"Admin" => "Ðдмин", +"Help" => "Помощ", +"Cloud not found" => "облакът не намерен", +"Create an <strong>admin account</strong>" => "Създаване на <strong>админ профил</strong>", +"Username" => "Потребител", +"Password" => "Парола", +"Configure the database" => "Конфигуриране на базата", +"will be used" => "ще Ñе ползва", +"Database user" => "Потребител за базата", +"Database password" => "Парола за базата", "Database name" => "Име на базата", "Advanced" => "Разширено", +"Database host" => "ХоÑÑ‚ за базата", "Data folder" => "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° данни", "Finish setup" => "Завършване на наÑтройките", +"gives you freedom and control over your own data" => "дава Ви Ñвобода и контрол на Вашите лични данни", +"Log out" => "Изход", +"Settings" => "ÐаÑтройки", +"Lost your password?" => "Забравена парола?", +"remember" => "запомни", "You are logged out." => "Вие излÑзохте.", +"You will receive a link to reset your password via Email." => "Ще получите връзка за да нулирате паролата Ñи.", +"Requested" => "ЗаÑвено", "Login failed!" => "Входа пропадна!", +"Username or Email" => "ПотребителÑко име или Email", +"Request reset" => "ЗаÑвка за нулиране", "prev" => "пред.", -"next" => "Ñледващо" +"next" => "Ñледващо", +"Your password was reset" => "Вашата парола е нулирана", +"New password" => "Ðова парола", +"Reset password" => "Ðулиране на парола" ); diff --git a/core/l10n/ca.php b/core/l10n/ca.php index d5020abbd559be7f647759e1f6ad71cfd72d8c86..3ecd041ad012bb83652d73c2309b6fc770fc8988 100644 --- a/core/l10n/ca.php +++ b/core/l10n/ca.php @@ -30,6 +30,7 @@ "Request reset" => "Sol.licitud de restabliment", "prev" => "anterior", "next" => "següent", +"Your password was reset" => "La vostra contrasenya s'ha restablert", "New password" => "Nova contrasenya", "Reset password" => "Restabliment de la contrasenya" ); diff --git a/core/l10n/da.php b/core/l10n/da.php index 5deaa15cdf53b218f2a95602ccbab199e8ade629..5c1ca0dc211d617ae749ff03133aa4aa874acc6c 100644 --- a/core/l10n/da.php +++ b/core/l10n/da.php @@ -14,13 +14,23 @@ "Database password" => "Database-kodeord", "Database name" => "Database-navn", "Advanced" => "Avanceret", +"Database host" => "Database host", "Data folder" => "Data mappe", "Finish setup" => "Afslut installation", +"gives you freedom and control over your own data" => "giver dig frihed og kontrol over dine egne data", "Log out" => "Log ud", "Settings" => "Indstillinger", +"Lost your password?" => "Mistet dit kodeord?", "remember" => "husk", "You are logged out." => "Du er nu logget ud", +"You will receive a link to reset your password via Email." => "Du vil modtage et link til at nulstille din adgangskode via e-mail.", +"Requested" => "Anmodet", "Login failed!" => "Login mislykkedes!", +"Username or Email" => "Brugernavn eller E-mail", +"Request reset" => "Anmod om nulstilling", "prev" => "forrige", -"next" => "næste" +"next" => "næste", +"Your password was reset" => "Din adgangskode blev nulstillet", +"New password" => "Ny adgangskode", +"Reset password" => "Nulstil adgangskode" ); diff --git a/core/l10n/de.php b/core/l10n/de.php index 0cdb99e0a64d7ed4bc58e92b070168f6540bf6f6..0b5a0e13cea1ca3d7799e3c903fea2552e8ace47 100644 --- a/core/l10n/de.php +++ b/core/l10n/de.php @@ -23,13 +23,14 @@ "Lost your password?" => "Passwort vergessen?", "remember" => "merken", "You are logged out." => "Abgemeldet", -"You will receive a link to reset your password via Email." => "Du wirst eine Email erhalten.", +"You will receive a link to reset your password via Email." => "Du wirst per Email einen Link zum Zurücksetzen deines Passworts erhalten.", "Requested" => "zurückgesetzt", "Login failed!" => "Anmeldung fehlgeschlagen!", "Username or Email" => "Nutzername oder Email", "Request reset" => "Zurücksetzen", "prev" => "Zurück", "next" => "Weiter", +"Your password was reset" => "Dein Passwort wurde zurückgesetzt.", "New password" => "Neues Passwort", "Reset password" => "Zurücksetzen" ); diff --git a/core/l10n/el.php b/core/l10n/el.php index 91daff8a862442cddc2c9b3ac1cac4e2cdd5485d..c75227f8aad323dff01ce42817bddc1aa0e46e94 100644 --- a/core/l10n/el.php +++ b/core/l10n/el.php @@ -14,13 +14,23 @@ "Database password" => "Κωδικός Ï€Ïόσβασης βάσης δεδομÎνων", "Database name" => "Όνομα βάσης δεδομÎνων", "Advanced" => "Για Ï€ÏοχωÏημÎνους", +"Database host" => "Διακομιστής βάσης δεδομÎνων", "Data folder" => "Φάκελος δεδομÎνων", "Finish setup" => "ΟλοκλήÏωση εγκατάστασης", +"gives you freedom and control over your own data" => "σας δίνει την ελευθεÏία και τον Îλεγχο επί των δικών σας δεδομÎνων", "Log out" => "ΑποσÏνδεση", "Settings" => "Ρυθμίσεις", +"Lost your password?" => "Ξεχάσατε τον κωδικό σας;", "remember" => "να με θυμάσαι", "You are logged out." => "Έχετε αποσυνδεθεί.", +"You will receive a link to reset your password via Email." => "Θα λάβετε Îνα σÏνδεσμο για να επαναφÎÏετε τον κωδικό Ï€Ïόσβασής σας, μÎσω ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου.", +"Requested" => "Αιτήθησαν", "Login failed!" => "Η σÏνδεση απÎτυχε!", +"Username or Email" => "Όνομα ΧÏήστη ή Email", +"Request reset" => "ΕπαναφοÏάς αίτησης", "prev" => "Ï€ÏοηγοÏμενο", -"next" => "επόμενο" +"next" => "επόμενο", +"Your password was reset" => "Έγινε επαναφοÏά του ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασής σας", +"New password" => "ÎÎος κωδικός", +"Reset password" => "ΕπαναφοÏά ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης" ); diff --git a/core/l10n/es.php b/core/l10n/es.php index e58f0fa82162a1298335efbf2e9d967234cc036e..e997a17002f7b0a83e50b77e082c63766caa7152 100644 --- a/core/l10n/es.php +++ b/core/l10n/es.php @@ -17,6 +17,7 @@ "Database host" => "Host de la base de datos", "Data folder" => "Directorio de almacenamiento", "Finish setup" => "Completar la instalación", +"gives you freedom and control over your own data" => "te da la libertad y el control sobre tus propios datos", "Log out" => "Salir", "Settings" => "Ajustes", "Lost your password?" => "¿Has perdido tu contraseña?", @@ -29,6 +30,7 @@ "Request reset" => "Solicitar restablecimiento", "prev" => "anterior", "next" => "siguiente", +"Your password was reset" => "Tu contraseña se ha restablecido", "New password" => "Nueva contraseña", "Reset password" => "Restablecer contraseña" ); diff --git a/core/l10n/et_EE.php b/core/l10n/et_EE.php new file mode 100644 index 0000000000000000000000000000000000000000..84d05d17ba70cdee49c059e3f81aa83651c626d3 --- /dev/null +++ b/core/l10n/et_EE.php @@ -0,0 +1,36 @@ +<?php $TRANSLATIONS = array( +"Personal" => "isiklik", +"Users" => "Kasutajad", +"Apps" => "Programmid", +"Admin" => "Admin", +"Help" => "Abiinfo", +"Cloud not found" => "Pilve ei leitud", +"Create an <strong>admin account</strong>" => "Loo <strong>admini konto</strong>", +"Username" => "Kasutajanimi", +"Password" => "Parool", +"Configure the database" => "Seadista andmebaasi", +"will be used" => "kasutatakse", +"Database user" => "Andmebaasi kasutaja", +"Database password" => "Andmebaasi parool", +"Database name" => "Andmebasi nimi", +"Advanced" => "Lisavalikud", +"Database host" => "Andmebaasi host", +"Data folder" => "Andmete kaust", +"Finish setup" => "Lõpeta seadistamine", +"gives you freedom and control over your own data" => "Annab sulle vabaduse ja kontrolli sinu enda andmete üle", +"Log out" => "Logi välja", +"Settings" => "Seaded", +"Lost your password?" => "Kaotasid oma parooli?", +"remember" => "pea meeles", +"You are logged out." => "Sa oled välja loginud", +"You will receive a link to reset your password via Email." => "Sulle saadetakse e-postile link, millelt sa saad oma parooli taastada.", +"Requested" => "Kohustuslik", +"Login failed!" => "Sisselogimine ebaõnnestus", +"Username or Email" => "Kasutajanimi või e-post", +"Request reset" => "Palu taastamist", +"prev" => "eelm", +"next" => "järgm", +"Your password was reset" => "Sinu parool on taastatud", +"New password" => "Uus parool", +"Reset password" => "Nulli parool" +); diff --git a/core/l10n/fr.php b/core/l10n/fr.php index 3f668f786dc66b778ddd2af4d2bcc88113bfe677..15e7846efbb99b428dd4f3107d6d89fbcae9e748 100644 --- a/core/l10n/fr.php +++ b/core/l10n/fr.php @@ -17,6 +17,7 @@ "Database host" => "Serveur de la base de données", "Data folder" => "Répertoire des données", "Finish setup" => "Terminer l'installation", +"gives you freedom and control over your own data" => "vous donne la liberté et le contrôle de vos propres données", "Log out" => "Se déconnecter", "Settings" => "Paramètres", "Lost your password?" => "Mot de passe perdu ?", @@ -29,6 +30,7 @@ "Request reset" => "Demande de réinitialisation", "prev" => "précédent", "next" => "suivant", +"Your password was reset" => "Votre mot de passe a été réinitialisé", "New password" => "Nouveau mot de passe", "Reset password" => "Réinitialisation du mot de passe" ); diff --git a/core/l10n/id.php b/core/l10n/id.php index 221e0cb13e41619ddbf710566e1fb395aaf61956..56221fafb96d2e8de828017fce9f5fae109ede46 100644 --- a/core/l10n/id.php +++ b/core/l10n/id.php @@ -30,6 +30,7 @@ "Request reset" => "Meminta set ulang", "prev" => "sebelum", "next" => "selanjutnya", +"Your password was reset" => "Password anda telah diset ulang", "New password" => "Password Baru", "Reset password" => "Set Ulang Password" ); diff --git a/core/l10n/it.php b/core/l10n/it.php index 4391b53fc541052ad24802bee5eb01e9a5af93c8..1d743fa87eddafba48302372ca1d1e78b4c7929f 100644 --- a/core/l10n/it.php +++ b/core/l10n/it.php @@ -14,15 +14,23 @@ "Database password" => "Password database", "Database name" => "Nome database", "Advanced" => "Opzioni avanzate", +"Database host" => "Host del database", "Data folder" => "Cartella dati", "Finish setup" => "Termina", +"gives you freedom and control over your own data" => "Libertà e controllo dei propri dati", "Log out" => "Log out", "Settings" => "Impostazioni", "Lost your password?" => "Password persa?", "remember" => "ricorda", "You are logged out." => "Sei uscito.", +"You will receive a link to reset your password via Email." => "Riceverai via email un link per il reset della tua password", +"Requested" => "Richiesto", "Login failed!" => "Login fallito!", +"Username or Email" => "Username o email", +"Request reset" => "Reset richiesta", "prev" => "precedente", "next" => "successivo", -"New password" => "Nuova password" +"Your password was reset" => "tua password è stata resettata", +"New password" => "Nuova password", +"Reset password" => "Reset password" ); diff --git a/core/l10n/lb.php b/core/l10n/lb.php index 705e44b5c53394f3f2e7fa3eab9ab812562706ed..40bd86d6a3a402311fb2a6ef8bed9cbfaa4664c1 100644 --- a/core/l10n/lb.php +++ b/core/l10n/lb.php @@ -14,13 +14,23 @@ "Database password" => "Datebank Passwuert", "Database name" => "Datebank Numm", "Advanced" => "Erweidert", +"Database host" => "Datebank Server", "Data folder" => "Daten Dossier", "Finish setup" => "Installatioun ofschléissen", +"gives you freedom and control over your own data" => "gëtt dir Fräiheet an Kontroll iwwert deng eegen Daten", "Log out" => "Ausloggen", "Settings" => "Astellungen", +"Lost your password?" => "Passwuert vergiess?", "remember" => "verhalen", "You are logged out." => "Du bass ausgeloggt.", +"You will receive a link to reset your password via Email." => "Du kriss per E-mail en Link geschéckt fir däin Passwuert nei ze setzen.", +"Requested" => "Verlaangt", "Login failed!" => "Aloggen feelgeschloen!", +"Username or Email" => "Benotzernumm oder E-Mail", +"Request reset" => "Reset ufroen", "prev" => "zeréck", -"next" => "weider" +"next" => "weider", +"Your password was reset" => "Dän Passwuert ass nei gesat ginn", +"New password" => "Neit Passwuert", +"Reset password" => "Passwuert nei setzen" ); diff --git a/core/l10n/ms_MY.php b/core/l10n/ms_MY.php new file mode 100644 index 0000000000000000000000000000000000000000..e7551a30bb879101b6ba7353f7891a747c2a1612 --- /dev/null +++ b/core/l10n/ms_MY.php @@ -0,0 +1,36 @@ +<?php $TRANSLATIONS = array( +"Personal" => "Peribadi", +"Users" => "Pengguna", +"Apps" => "Aplikasi", +"Admin" => "Admin", +"Help" => "Bantuan", +"Cloud not found" => "Awan tidak dijumpai", +"Create an <strong>admin account</strong>" => "buat <strong>akaun admin</strong>", +"Username" => "Nama pengguna", +"Password" => "Kata laluan", +"Configure the database" => "Konfigurasi pangkalan data", +"will be used" => "akan digunakan", +"Database user" => "Nama pengguna pangkalan data", +"Database password" => "Kata laluan pangkalan data", +"Database name" => "Nama pangkalan data", +"Advanced" => "Maju", +"Database host" => "Hos pangkalan data", +"Data folder" => "Fail data", +"Finish setup" => "Setup selesai", +"gives you freedom and control over your own data" => "memberikan anda kebebasan dan kendalian keatas data anda", +"Log out" => "Log keluar", +"Settings" => "Tetapan", +"Lost your password?" => "Hilang kata laluan?", +"remember" => "ingat", +"You are logged out." => "Anda telah log keluar.", +"You will receive a link to reset your password via Email." => "Anda akan menerima link untuk menetapkan semula kata laluan anda melalui emel", +"Requested" => "diminta", +"Login failed!" => "Log in gagal!", +"Username or Email" => "Nama pengguna atau Emel", +"Request reset" => "Minta set semula", +"prev" => "sebelum", +"next" => "seterus", +"Your password was reset" => "Kata laluan anda diset semula", +"New password" => "Kata laluan baru", +"Reset password" => "Set semula kata laluan" +); diff --git a/core/l10n/nl.php b/core/l10n/nl.php index 74a5182be405ddd0b0149dc56fd6f8c084c318e4..98ad267ff512cf13582cce6722fb6e8d4735c66e 100644 --- a/core/l10n/nl.php +++ b/core/l10n/nl.php @@ -14,13 +14,23 @@ "Database password" => "Wachtwoord databank", "Database name" => "Naam databank", "Advanced" => "Geavanceerd", +"Database host" => "Database server", "Data folder" => "Gegevensmap", "Finish setup" => "Installatie afronden", +"gives you freedom and control over your own data" => "geeft u vrijheid en controle over uw eigen data", "Log out" => "Afmelden", "Settings" => "Instellingen", +"Lost your password?" => "Uw wachtwoord vergeten?", "remember" => "onthoud gegevens", "You are logged out." => "U bent afgemeld.", +"You will receive a link to reset your password via Email." => "U ontvangt een link om uw wachtwoord te wijzigen via Email", +"Requested" => "Aangevraagd", "Login failed!" => "Aanmelden mislukt!", +"Username or Email" => "Gebruikersnaam of Email", +"Request reset" => "Wachtwoordreset aanvragen", "prev" => "vorige", -"next" => "volgende" +"next" => "volgende", +"Your password was reset" => "Uw wachtwoord is opnieuw ingesteld", +"New password" => "Nieuw wachtwoord", +"Reset password" => "Reset wachtwoord" ); diff --git a/core/l10n/pl.php b/core/l10n/pl.php index 49bf7ab72710ba6bbef8f73e09f6727d747cf10c..b4d9fbe9248e4f2660b7e138e227283b810702f5 100644 --- a/core/l10n/pl.php +++ b/core/l10n/pl.php @@ -17,6 +17,7 @@ "Database host" => "Host bazy danych", "Data folder" => "Katalog danych", "Finish setup" => "ZakoÅ„cz instalacjÄ™", +"gives you freedom and control over your own data" => "zapewnia Ci wolność i kontrolÄ™ nad wÅ‚asnymi danymi", "Log out" => "Wyloguj siÄ™", "Settings" => "Ustawienia", "Lost your password?" => "Nie pamiÄ™tasz hasÅ‚a?", @@ -29,6 +30,7 @@ "Request reset" => "Zresetuj hasÅ‚o", "prev" => "wstecz", "next" => "dalej", +"Your password was reset" => "Twoje hasÅ‚o zostaÅ‚o zresetowane", "New password" => "Nowe hasÅ‚o", "Reset password" => "Zresetuj hasÅ‚o" ); diff --git a/core/l10n/pt_BR.php b/core/l10n/pt_BR.php index 6fa33e65b8ad63a431bc1210804c63078fd4844d..229d60f65c41f22ea8a3af64641693503656f167 100644 --- a/core/l10n/pt_BR.php +++ b/core/l10n/pt_BR.php @@ -14,13 +14,23 @@ "Database password" => "Senha do banco de dados", "Database name" => "Nome do banco de dados", "Advanced" => "Avançado", +"Database host" => "Banco de dados do host", "Data folder" => "Pasta de dados", "Finish setup" => "Concluir configuração", +"gives you freedom and control over your own data" => "proporciona liberdade e controle sobre seus próprios dados", "Log out" => "Sair", "Settings" => "Configurações", +"Lost your password?" => "Esqueçeu sua senha?", "remember" => "lembrete", "You are logged out." => "Você está desconectado.", +"You will receive a link to reset your password via Email." => "Você receberá um link para redefinir sua senha via e-mail.", +"Requested" => "Solicitado", "Login failed!" => "Login sem sucesso", +"Username or Email" => "Nome de usuário ou e-mail", +"Request reset" => "Pedido de troca", "prev" => "anterior", -"next" => "próximo" +"next" => "próximo", +"Your password was reset" => "Sua senha foi trocada", +"New password" => "Nova senha", +"Reset password" => "Toca de senha" ); diff --git a/core/l10n/ro.php b/core/l10n/ro.php index 1ead055905fbbc4894bfc1ff2d25231914115a03..8440c44d1d8938fdb8de22e7ce3bfef9871ceb7d 100644 --- a/core/l10n/ro.php +++ b/core/l10n/ro.php @@ -2,7 +2,7 @@ "Personal" => "Personal", "Users" => "Utilizatori", "Apps" => "AplicaÈ›ii", -"Admin" => "Administrator", +"Admin" => "Administrare", "Help" => "Ajutor", "Cloud not found" => "Nu s-a găsit", "Create an <strong>admin account</strong>" => "Crează un <strong>cont de administrator</strong>", @@ -14,13 +14,23 @@ "Database password" => "Parola bazei de date", "Database name" => "Numele bazei de date", "Advanced" => "Avansat", +"Database host" => "Baza de date", "Data folder" => "Directorul cu date", "Finish setup" => "Finalizează instalarea", +"gives you freedom and control over your own data" => "îți oferă libertatea de a-È›i controla datele", "Log out" => "IeÈ™ire", "Settings" => "Setări", +"Lost your password?" => "Ai uitat parola?", "remember" => "È›ine minte", "You are logged out." => "Ai ieÈ™it", +"You will receive a link to reset your password via Email." => "Vei primi prin email un link pentru resetarea parolei", +"Requested" => "Cerută", "Login failed!" => "Autentificare eÈ™uată!", +"Username or Email" => "Utilizator sau email", +"Request reset" => "Cere schimbarea parolei", "prev" => "precedentul", -"next" => "următorul" +"next" => "următorul", +"Your password was reset" => "Parola a fost schimbată", +"New password" => "Parola nouă", +"Reset password" => "Schimbă parola" ); diff --git a/core/l10n/ru.php b/core/l10n/ru.php index 110a7495af0eabec22e1e483f980b8f1c893a407..45f0f4aef9df31ecd3cc5f95fe879df6e7473f03 100644 --- a/core/l10n/ru.php +++ b/core/l10n/ru.php @@ -30,6 +30,7 @@ "Request reset" => "ЗапроÑить ÑброÑ", "prev" => "пред", "next" => "Ñлед", +"Your password was reset" => "Пароль был Ñброшен", "New password" => "Ðовый пароль", "Reset password" => "СброÑить пароль" ); diff --git a/core/l10n/sr.php b/core/l10n/sr.php new file mode 100644 index 0000000000000000000000000000000000000000..0fd43c7b0a400c1f76de9b3bdc095388ab10ffcc --- /dev/null +++ b/core/l10n/sr.php @@ -0,0 +1,36 @@ +<?php $TRANSLATIONS = array( +"Personal" => "Лична", +"Users" => "КориÑници", +"Apps" => "Програми", +"Admin" => "ÐдниниÑтрација", +"Help" => "Помоћ", +"Cloud not found" => "Облак није нађен", +"Create an <strong>admin account</strong>" => "Ðаправи <strong>админиÑтративни налог</strong>", +"Username" => "КориÑничко име", +"Password" => "Лозинка", +"Configure the database" => "Подешавање базе", +"will be used" => "ће бити коришћен", +"Database user" => "КориÑник базе", +"Database password" => "Лозинка базе", +"Database name" => "Име базе", +"Advanced" => "Ðапредно", +"Database host" => "Домаћин базе", +"Data folder" => "Фацикла података", +"Finish setup" => "Заврши подешавање", +"gives you freedom and control over your own data" => "вам даје Ñлободу и контролу над вашим подацима", +"Log out" => "Одјава", +"Settings" => "Подешавања", +"Lost your password?" => "Изгубили Ñте лозинку?", +"remember" => "упамти", +"You are logged out." => "Одјављени Ñте.", +"You will receive a link to reset your password via Email." => "Добићете везу за реÑетовање лозинке путем е-поште.", +"Requested" => "Захтев поÑлат", +"Login failed!" => "ÐеуÑпешно пријављивање!", +"Username or Email" => "КориÑничко име или адреÑа е-поште", +"Request reset" => "Захтев за реÑетовање", +"prev" => "претходно", +"next" => "Ñледеће", +"Your password was reset" => "Ваша лозинка је реÑетована", +"New password" => "Ðова лозинка", +"Reset password" => "РеÑетуј лозинку" +); diff --git a/core/l10n/sr@latin.php b/core/l10n/sr@latin.php new file mode 100644 index 0000000000000000000000000000000000000000..f8565f6ee4e68678e020c6b33d1d0a5a1f893a85 --- /dev/null +++ b/core/l10n/sr@latin.php @@ -0,0 +1,36 @@ +<?php $TRANSLATIONS = array( +"Personal" => "LiÄna", +"Users" => "Korisnici", +"Apps" => "Programi", +"Admin" => "Adninistracija", +"Help" => "Pomoć", +"Cloud not found" => "Oblak nije naÄ‘en", +"Create an <strong>admin account</strong>" => "Napravi <strong>administrativni nalog</strong>", +"Username" => "KorisniÄko ime", +"Password" => "Lozinka", +"Configure the database" => "PodeÅ¡avanje baze", +"will be used" => "će biti korišćen", +"Database user" => "Korisnik baze", +"Database password" => "Lozinka baze", +"Database name" => "Ime baze", +"Advanced" => "Napredno", +"Database host" => "Domaćin baze", +"Data folder" => "Facikla podataka", +"Finish setup" => "ZavrÅ¡i podeÅ¡avanje", +"gives you freedom and control over your own data" => "vam daje slobodu i kontrolu nad vaÅ¡im podacima", +"Log out" => "Odjava", +"Settings" => "PodeÅ¡avanja", +"Lost your password?" => "Izgubili ste lozinku?", +"remember" => "upamti", +"You are logged out." => "Odjavljeni ste.", +"You will receive a link to reset your password via Email." => "Dobićete vezu za resetovanje lozinke putem e-poÅ¡te.", +"Requested" => "Zahtev poslat", +"Login failed!" => "NeuspeÅ¡no prijavljivanje!", +"Username or Email" => "KorisniÄko ime ili adresa e-poÅ¡te", +"Request reset" => "Zahtev za resetovanje", +"prev" => "prethodno", +"next" => "sledeće", +"Your password was reset" => "VaÅ¡a lozinka je resetovana", +"New password" => "Nova lozinka", +"Reset password" => "Resetuj lozinku" +); diff --git a/core/l10n/sv.php b/core/l10n/sv.php index 3475d81f94247c229a094d2bea038b8d7633f491..d7e1c240378ba8e4bf5521e1a73614e610ae1059 100644 --- a/core/l10n/sv.php +++ b/core/l10n/sv.php @@ -1,6 +1,8 @@ <?php $TRANSLATIONS = array( +"Personal" => "Personlig", "Users" => "Användare", "Apps" => "Program", +"Admin" => "Admin", "Help" => "Hjälp", "Cloud not found" => "Hittade inget moln", "Create an <strong>admin account</strong>" => "Skapa ett <strong>administratörskonto</strong>", @@ -9,15 +11,26 @@ "Configure the database" => "Konfigurera databasen", "will be used" => "kommer att användas", "Database user" => "Databas-användare", -"Database password" => "Databas-lösenord", -"Database name" => "Databasnamn", +"Database password" => "Lösenord för databasen", +"Database name" => "Databasens namn", "Advanced" => "Avancerat", +"Database host" => "Databasserver", "Data folder" => "Datamapp", "Finish setup" => "Avsluta installation", +"gives you freedom and control over your own data" => "ger dig frihet och kontroll över din egen data", +"Log out" => "Logga ut", "Settings" => "Inställningar", +"Lost your password?" => "Tappat bort ditt lösenord?", "remember" => "kom ihÃ¥g", "You are logged out." => "Du är utloggad", +"You will receive a link to reset your password via Email." => "Du kommer fÃ¥ en länk, via e-post, där du kan Ã¥terställ ditt lösenord", +"Requested" => "Begärd", "Login failed!" => "Inloggning misslyckades!", +"Username or Email" => "Användarnamn eller e-post", +"Request reset" => "Begär Ã¥terställning", "prev" => "föregÃ¥ende", -"next" => "nästa" +"next" => "nästa", +"Your password was reset" => "Ditt lösenord har Ã¥terställts", +"New password" => "Nytt lösenord", +"Reset password" => "Ã…terställ lösenord" ); diff --git a/core/l10n/zh_CN.php b/core/l10n/zh_CN.php index 8f1b8d4f8aa41051a3eb5e4ee03a8060abe0c1b9..4c9f197346c3252c2373f370bfd6e670712837aa 100644 --- a/core/l10n/zh_CN.php +++ b/core/l10n/zh_CN.php @@ -17,6 +17,7 @@ "Database host" => "æ•°æ®åº“主机", "Data folder" => "æ•°æ®ç›®å½•", "Finish setup" => "安装完æˆ", +"gives you freedom and control over your own data" => "自由掌控您的数æ®", "Log out" => "注销", "Settings" => "设置", "Lost your password?" => "忘记密ç ?", @@ -29,6 +30,7 @@ "Request reset" => "请求é‡ç½®", "prev" => "上一页", "next" => "下一页", +"Your password was reset" => "您的密ç å·²é‡ç½®", "New password" => "新密ç ", "Reset password" => "é‡ç½®å¯†ç " ); diff --git a/core/lostpassword/index.php b/core/lostpassword/index.php new file mode 100644 index 0000000000000000000000000000000000000000..de0d393ec783ec109a8926bbd402e158d736e570 --- /dev/null +++ b/core/lostpassword/index.php @@ -0,0 +1,32 @@ +<?php +/** + * Copyright (c) 2010 Frank Karlitschek karlitschek@kde.org + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. +*/ + +$RUNTIME_NOAPPS = TRUE; //no apps +require_once('../../lib/base.php'); + +// Someone lost their password: +if (isset($_POST['user'])) { + if (OC_User::userExists($_POST['user'])) { + $token = sha1($_POST['user']+uniqId()); + OC_Preferences::setValue($_POST['user'], 'owncloud', 'lostpassword', $token); + $email = OC_Preferences::getValue($_POST['user'], 'lostpassword', 'email', ''); + if (!empty($email)) { + $link = OC_Helper::linkTo('core/lostpassword', 'resetpassword.php', null, true).'?user='.$_POST['user'].'&token='.$token; + $tmpl = new OC_Template('core/lostpassword', 'email'); + $tmpl->assign('link', $link); + $msg = $tmpl->fetchPage(); + $l = new OC_L10N('core'); + mail($email, $l->t('Owncloud password reset'), $msg); + } + OC_Template::printGuestPage('core/lostpassword', 'lostpassword', array('error' => false, 'requested' => true)); + } else { + OC_Template::printGuestPage('core/lostpassword', 'lostpassword', array('error' => true, 'requested' => false)); + } +} else { + OC_Template::printGuestPage('core/lostpassword', 'lostpassword', array('error' => false, 'requested' => false)); +} diff --git a/core/lostpassword/resetpassword.php b/core/lostpassword/resetpassword.php new file mode 100644 index 0000000000000000000000000000000000000000..1c78d720947a7c5501ff74080808dbc3622f6601 --- /dev/null +++ b/core/lostpassword/resetpassword.php @@ -0,0 +1,27 @@ +<?php +/** + * Copyright (c) 2010 Frank Karlitschek karlitschek@kde.org + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. +*/ + +$RUNTIME_NOAPPS = TRUE; //no apps +require_once('../../lib/base.php'); + +// Someone wants to reset their password: +if(isset($_GET['token']) && isset($_GET['user']) && OC_Preferences::getValue($_GET['user'], 'owncloud', 'lostpassword') === $_GET['token']) { + if (isset($_POST['password'])) { + if (OC_User::setPassword($_GET['user'], $_POST['password'])) { + OC_Preferences::deleteKey($_GET['user'], 'owncloud', 'lostpassword'); + OC_Template::printGuestPage('core/lostpassword', 'resetpassword', array('success' => true)); + } else { + OC_Template::printGuestPage('core/lostpassword', 'resetpassword', array('success' => false)); + } + } else { + OC_Template::printGuestPage('core/lostpassword', 'resetpassword', array('success' => false)); + } +} else { + // Someone lost their password + OC_Template::printGuestPage('core/lostpassword', 'lostpassword', array('error' => false, 'requested' => false)); +} diff --git a/core/lostpassword/templates/email.php b/core/lostpassword/templates/email.php new file mode 100644 index 0000000000000000000000000000000000000000..d146d8e4c373aa481798546ad275e8eb84a1cdff --- /dev/null +++ b/core/lostpassword/templates/email.php @@ -0,0 +1 @@ +<?php echo str_replace('{link}', $_['link'], $l->t('Use the following link to reset your password: {link}')) ?> diff --git a/core/templates/lostpassword.php b/core/lostpassword/templates/lostpassword.php similarity index 60% rename from core/templates/lostpassword.php rename to core/lostpassword/templates/lostpassword.php index 67e34164d0815543821e8acf2ec69f02901b27e2..4b871963b8055fbc6159ba0b8dcb595acd51da42 100644 --- a/core/templates/lostpassword.php +++ b/core/lostpassword/templates/lostpassword.php @@ -1,4 +1,4 @@ -<form action="index.php?lostpassword" method="post"> +<form action="index.php" method="post"> <fieldset> <?php echo $l->t('You will receive a link to reset your password via Email.'); ?> <?php if ($_['requested']): ?> @@ -7,8 +7,11 @@ <?php if ($_['error']): ?> <?php echo $l->t('Login failed!'); ?> <?php endif; ?> - <input type="text" name="user" id="user" placeholder="<?php echo $l->t('Username or Email'); ?>" value="" autocomplete="off" required autofocus /> + <p class="infield"> + <label for="user" class="infield"><?php echo $l->t( 'Username' ); ?></label> + <input type="text" name="user" id="user" value="" autocomplete="off" required autofocus /> + </p> <input type="submit" id="submit" value="<?php echo $l->t('Request reset'); ?>" /> <?php endif; ?> </fieldset> -</form> \ No newline at end of file +</form> diff --git a/core/lostpassword/templates/resetpassword.php b/core/lostpassword/templates/resetpassword.php new file mode 100644 index 0000000000000000000000000000000000000000..56257de7f1371f7f8a4aa3747b651ebd7123adf7 --- /dev/null +++ b/core/lostpassword/templates/resetpassword.php @@ -0,0 +1,14 @@ +<form action="<?php echo 'resetpassword.php?'.$_SERVER['QUERY_STRING']; ?>" method="post"> + <fieldset> + <?php if($_['success']): ?> + <h1><?php echo $l->t('Your password was reset'); ?></h1> + <p><a href="<?php echo OC::$WEBROOT ?>/"><?php echo $l->t('To login page'); ?></a></p> + <?php else: ?> + <p class="infield"> + <label for="password" class="infield"><?php echo $l->t( 'New password' ); ?></label> + <input type="password" name="password" id="password" value="" required /> + </p> + <input type="submit" id="submit" value="<?php echo $l->t('Reset password'); ?>" /> + <?php endif; ?> + </fieldset> +</form> diff --git a/core/templates/installation.php b/core/templates/installation.php index 09f9ad8c359d6f1c18deae359a81241ed96224de..70a545d66cf0f7f0b525c43dcdfb9c49c8799764 100644 --- a/core/templates/installation.php +++ b/core/templates/installation.php @@ -18,21 +18,35 @@ <fieldset> <legend><?php echo $l->t( 'Create an <strong>admin account</strong>' ); ?></legend> - <input type="text" name="adminlogin" id="adminlogin" value="<?php print OC_Helper::init_var('adminlogin'); ?>" placeholder="<?php echo $l->t( 'Username' ); ?>" autocomplete="off" autofocus required /> - <input type="password" name="adminpass" id="adminpass" value="<?php print OC_Helper::init_var('adminpass'); ?>" placeholder="<?php echo $l->t( 'Password' ); ?>" required /> + <p class="infield"> + <label for="adminlogin" class="infield"><?php echo $l->t( 'Username' ); ?></label> + <input type="text" name="adminlogin" id="adminlogin" value="<?php print OC_Helper::init_var('adminlogin'); ?>" autocomplete="off" autofocus required /> + </p> + <p class="infield"> + <label for="adminpass" class="infield"><?php echo $l->t( 'Password' ); ?></label> + <input type="password" name="adminpass" id="adminpass" value="<?php print OC_Helper::init_var('adminpass'); ?>" required /> + </p> </fieldset> - + + <fieldset id="datadirField"> + <legend><a id="showAdvanced"><?php echo $l->t( 'Advanced' ); ?> â–¾</a></legend> + <div id="datadirContent"> + <label for="directory"><?php echo $l->t( 'Data folder' ); ?>:</label><br/> + <input type="text" name="directory" id="directory" value="<?php print OC_Helper::init_var('directory', $_['directory']); ?>" /> + </div> + </fieldset> + <fieldset id='databaseField'> <?php if($_['hasMySQL'] or $_['hasPostgreSQL']) $hasOtherDB = true; //other than SQLite ?> <legend><?php echo $l->t( 'Configure the database' ); ?></legend> <div id="selectDbType"> <?php if($_['hasSQLite']): ?> - <input type='hidden' id='hasSQLite' value='true' /> + <input type='hidden' id='hasSQLite' value="true" /> <?php if(!$hasOtherDB): ?> <p>SQLite <?php echo $l->t( 'will be used' ); ?>.</p> <input type="hidden" id="dbtype" name="dbtype" value="sqlite" /> <?php else: ?> - <input type="radio" name="dbtype" value='sqlite' id="sqlite" <?php OC_Helper::init_radio('dbtype', 'sqlite', 'sqlite'); ?>/> + <input type="radio" name="dbtype" value="sqlite" id="sqlite" <?php OC_Helper::init_radio('dbtype', 'sqlite', 'sqlite'); ?>/> <label class="sqlite" for="sqlite">SQLite</label> <?php endif; ?> <?php endif; ?> @@ -43,7 +57,7 @@ <p>MySQL <?php echo $l->t( 'will be used' ); ?>.</p> <input type="hidden" id="dbtype" name="dbtype" value="mysql" /> <?php else: ?> - <input type="radio" name="dbtype" value='mysql' id="mysql" <?php OC_Helper::init_radio('dbtype','pgsql', 'mysql', 'sqlite'); ?>/> + <input type="radio" name="dbtype" value="mysql" id="mysql" <?php OC_Helper::init_radio('dbtype','mysql', 'sqlite'); ?>/> <label class="mysql" for="mysql">MySQL</label> <?php endif; ?> <?php endif; ?> @@ -54,27 +68,32 @@ <input type="hidden" id="dbtype" name="dbtype" value="pgsql" /> <?php else: ?> <label class="pgsql" for="pgsql">PostgreSQL</label> - <input type="radio" name="dbtype" value='pgsql' id="pgsql" <?php OC_Helper::init_radio('dbtype','pgsql', 'mysql', 'sqlite'); ?>/> + <input type="radio" name="dbtype" value='pgsql' id="pgsql" <?php OC_Helper::init_radio('dbtype','pgsql', 'sqlite'); ?>/> <?php endif; ?> <?php endif; ?> </div> <?php if($hasOtherDB): ?> <div id="use_other_db"> - <input type="text" name="dbuser" id="dbuser" value="<?php print OC_Helper::init_var('dbuser'); ?>" placeholder="<?php echo $l->t( 'Database user' ); ?>" autocomplete="off" /> - <input type="password" name="dbpass" id="dbpass" value="<?php print OC_Helper::init_var('dbpass'); ?>" placeholder="<?php echo $l->t( 'Database password' ); ?>" /> - <input type="text" name="dbname" id="dbname" value="<?php print OC_Helper::init_var('dbname'); ?>" placeholder="<?php echo $l->t( 'Database name' ); ?>" autocomplete="off" /> + <p class="infield"> + <label for="dbuser" class="infield"><?php echo $l->t( 'Database user' ); ?></label> + <input type="text" name="dbuser" id="dbuser" value="<?php print OC_Helper::init_var('dbuser'); ?>" autocomplete="off" /> + </p> + <p class="infield"> + <label for="dbpass" class="infield"><?php echo $l->t( 'Database password' ); ?></label> + <input type="password" name="dbpass" id="dbpass" value="<?php print OC_Helper::init_var('dbpass'); ?>" /> + </p> + <p class="infield"> + <label for="dbname" class="infield"><?php echo $l->t( 'Database name' ); ?></label> + <input type="text" name="dbname" id="dbname" value="<?php print OC_Helper::init_var('dbname'); ?>" autocomplete="off" /> + </p> </div> <?php endif; ?> - - </fieldset> - - <a id='showAdvanced'><strong><?php echo $l->t( 'Advanced' ); ?> â–¾</strong></a> - - <fieldset id='datadirField'> - <label id="dbhostlabel" for="dbhost"><?php echo $l->t( 'Database host' ); ?></label><input type="text" name="dbhost" id="dbhost" value="<?php print OC_Helper::init_var('dbhost', 'localhost'); ?>" placeholder="<?php echo $l->t( 'Database host' ); ?>" /> - <label id="directorylabel" for="directory"><?php echo $l->t( 'Data folder' ); ?></label><input type="text" name="directory" id="directory" value="<?php print OC_Helper::init_var('directory', $_['directory']); ?>" placeholder="<?php echo $l->t( 'Data folder' ); ?>" /> + <p class="infield"> + <label for="dbhost" class="infield"><?php echo $l->t( 'Database host' ); ?></label> + <input type="text" name="dbhost" id="dbhost" value="<?php print OC_Helper::init_var('dbhost', 'localhost'); ?>" /> + </p> </fieldset> - <input type="submit" value="<?php echo $l->t( 'Finish setup' ); ?>" /> + <div class="buttons"><input type="submit" value="<?php echo $l->t( 'Finish setup' ); ?>" /></div> </form> diff --git a/core/templates/layout.guest.php b/core/templates/layout.guest.php index 6f40619f5f5d1883381eed7963b5bcad9a2eccf3..e1f8928fc9b7557cfd9213700d7bd22c4ef4df92 100644 --- a/core/templates/layout.guest.php +++ b/core/templates/layout.guest.php @@ -8,7 +8,7 @@ <link rel="stylesheet" href="<?php echo $cssfile; ?>" type="text/css" media="screen" /> <?php endforeach; ?> <script type="text/javascript"> - var oc_webroot = '<?php global $WEBROOT; echo $WEBROOT; ?>'; + var oc_webroot = '<?php echo OC::$WEBROOT; ?>'; </script> <?php foreach($_['jsfiles'] as $jsfile): ?> <script type="text/javascript" src="<?php echo $jsfile; ?>"></script> @@ -32,6 +32,6 @@ </div></header> <?php echo $_['content']; ?> </div> - <footer><p class="info"><a href="http://owncloud.org/">ownCloud</a> <?php echo $l->t( 'gives you freedom and control over your own data' ); ?></p></footer> + <footer><p class="info"><a href="http://owncloud.org/">ownCloud</a> – <?php echo $l->t( 'web services under your control' ); ?></p></footer> </body> </html> diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index 90b19259292aa0ce1814ec92a8070c0422804d47..f793275f2ca9948c9b9189403250d2f09e6920fd 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -8,7 +8,7 @@ <link rel="stylesheet" href="<?php echo $cssfile; ?>" type="text/css" media="screen" /> <?php endforeach; ?> <script type="text/javascript"> - var oc_webroot = '<?php global $WEBROOT; echo $WEBROOT; ?>'; + var oc_webroot = '<?php echo OC::$WEBROOT; ?>'; var oc_current_user = '<?php echo OC_User::getUser() ?>'; </script> <?php foreach($_['jsfiles'] as $jsfile): ?> diff --git a/core/templates/login.php b/core/templates/login.php index 717f6bcabdaf8cb7b42ffc8e1fe3b5668e0bdc1b..6c0a7a12227a64102ddf4af3c14e893cd9d9b0d3 100644 --- a/core/templates/login.php +++ b/core/templates/login.php @@ -1,17 +1,18 @@ <form action="index.php" method="post"> <fieldset> + <?php if(!empty($_['redirect'])) { echo '<input type="hidden" name="redirect_url" value="'.$_['redirect'].'" />'; } ?> <?php if($_['error']): ?> - <a href="index.php?lostpassword"><?php echo $l->t('Lost your password?'); ?></a> + <a href="./core/lostpassword/"><?php echo $l->t('Lost your password?'); ?></a> <?php endif; ?> - <?php if(empty($_["username"])): ?> - <input type="text" name="user" id="user" placeholder="Username" value="" autocomplete="off" required autofocus /> - <input type="password" name="password" id="password" placeholder="Password" value="" required /> - <input type="checkbox" name="remember_login" id="remember_login" /><label for="remember_login"><?php echo $l->t('remember'); ?></label> - <?php else: ?> - <input type="text" name="user" id="user" placeholder="Username" value="<?php echo $_['username']; ?>" autocomplete="off" required > - <input type="password" name="password" id="password" placeholder="Password" value="" required autofocus /> - <input type="checkbox" name="remember_login" id="remember_login" checked /><label for="remember_login"><?php echo $l->t('remember'); ?></label> - <?php endif; ?> - <input type="submit" id="submit" value="Log in" /> + <p class="infield"> + <label for="user" class="infield"><?php echo $l->t( 'Username' ); ?></label> + <input type="text" name="user" id="user" value="<?php echo !empty($_POST['user'])?$_POST['user'].'"':'" autofocus'; ?> autocomplete="off" required /> + </p> + <p class="infield"> + <label for="password" class="infield"><?php echo $l->t( 'Password' ); ?></label> + <input type="password" name="password" id="password" value="" required <?php echo !empty($_POST['user'])?'autofocus':''; ?> /> + </p> + <input type="checkbox" name="remember_login" value="1" id="remember_login" /><label for="remember_login"><?php echo $l->t('remember'); ?></label> + <input type="submit" id="submit" class="login" value="<?php echo $l->t( 'Log in' ); ?>" /> </fieldset> </form> diff --git a/core/templates/resetpassword.php b/core/templates/resetpassword.php deleted file mode 100644 index 2f43a93cfb595a7d7b7025f370c5786ff6c200d6..0000000000000000000000000000000000000000 --- a/core/templates/resetpassword.php +++ /dev/null @@ -1,10 +0,0 @@ -<form action="<?php echo 'index.php?'.$_SERVER['QUERY_STRING']; ?>" method="post"> - <fieldset> - <?php if($_['success']): ?> - <?php echo $l->t('Your password was reset'); ?> - <?php else: ?> - <input type="password" name="password" id="password" placeholder="<?php echo $l->t('New password'); ?>" value="" required /> - <input type="submit" id="submit" value="<?php echo $l->t('Reset password'); ?>" /> - <?php endif; ?> - </fieldset> -</form> diff --git a/files/admin.php b/files/admin.php index db47bc7c033584cf5fa40f319a99dc0d4580dcce..861b6037f3c4f8d5e3614a0079264c361337c575 100644 --- a/files/admin.php +++ b/files/admin.php @@ -25,19 +25,16 @@ // Init owncloud require_once('../lib/base.php'); - -// Check if we are a user -if( !OC_User::isLoggedIn() || !OC_Group::inGroup( OC_User::getUser(), 'admin' )){ - header( "Location: ".OC_Helper::linkTo( "files", "index.php" )); - exit(); -} +OC_User::checkAdminUser(); $htaccessWorking=(getenv('htaccessWorking')=='true'); if(isset($_POST['maxUploadSize'])){ $maxUploadFilesize=$_POST['maxUploadSize']; OC_Files::setUploadLimit(OC_Helper::computerFileSize($maxUploadFilesize)); }else{ - $maxUploadFilesize = ini_get('upload_max_filesize').'B'; + $upload_max_filesize = OC_Helper::computerFileSize(ini_get('upload_max_filesize')); + $post_max_size = OC_Helper::computerFileSize(ini_get('post_max_size')); + $maxUploadFilesize = min($upload_max_filesize, $post_max_size); } OC_App::setActiveNavigationEntry( "files_administration" ); diff --git a/files/ajax/autocomplete.php b/files/ajax/autocomplete.php index 183ee86c7889d119c5fc1c586de95f673c6112ef..8d7a5b482bd490903705b1661c586d4339f2ab9b 100644 --- a/files/ajax/autocomplete.php +++ b/files/ajax/autocomplete.php @@ -5,14 +5,7 @@ // Init owncloud require_once('../../lib/base.php'); -// We send json data -// header( "Content-Type: application/jsonrequest" ); - -// Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" ))); - exit(); -} +OC_JSON::checkLoggedIn(); // Get data $query = $_GET['term']; @@ -58,6 +51,6 @@ if(OC_Filesystem::file_exists($base) and OC_Filesystem::is_dir($base)){ } } } -echo json_encode($files); +OC_JSON::encodedPrint($files); ?> diff --git a/files/ajax/delete.php b/files/ajax/delete.php index 782db215dfc2ef74eefd0ec32203efacbb357c4c..48df5862db2d763978fc6a5d040b94bc7c279c27 100644 --- a/files/ajax/delete.php +++ b/files/ajax/delete.php @@ -3,14 +3,7 @@ // Init owncloud require_once('../../lib/base.php'); -// We send json data -header( "Content-Type: application/jsonrequest" ); - -// Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" ))); - exit(); -} +OC_JSON::checkLoggedIn(); // Get data $dir = $_GET["dir"]; @@ -18,19 +11,19 @@ $files = isset($_GET["file"]) ? $_GET["file"] : $_GET["files"]; $files = explode(';', $files); $filesWithError = ''; -$status = 'success'; +$success = true; //Now delete foreach($files as $file) { if( !OC_Files::delete( $dir, $file )){ $filesWithError .= $file . "\n"; - $status = 'error'; + $success = false; } } -if($status == 'success') { - echo json_encode( array( "status" => $status, "data" => array( "dir" => $dir, "files" => $files ))); +if($success) { + OC_JSON::success(array("data" => array( "dir" => $dir, "files" => $files ))); } else { - echo json_encode( array( "status" => $status, "data" => array( "message" => "Could not delete:\n" . $filesWithError ))); + OC_JSON::error(array("data" => array( "message" => "Could not delete:\n" . $filesWithError ))); } ?> diff --git a/files/ajax/download.php b/files/ajax/download.php index 4c756f9b1905570f7900cea78a3a9f15a59beff1..198069f3fa1c212a83360a13443fdfe39f867c97 100644 --- a/files/ajax/download.php +++ b/files/ajax/download.php @@ -25,10 +25,7 @@ require_once('../../lib/base.php'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - header( "Location: ".OC_Helper::linkTo( "", "index.php" )); - exit(); -} +OC_Util::checkLoggedIn(); $files = $_GET["files"]; $dir = $_GET["dir"]; diff --git a/files/ajax/list.php b/files/ajax/list.php index 547bc91fb052ab1f1ca8e5bdc99c6ef36baa9bf6..8a414827e1c8c43db3dee18a0005ea89e87c17c9 100644 --- a/files/ajax/list.php +++ b/files/ajax/list.php @@ -3,14 +3,7 @@ // Init owncloud require_once('../../lib/base.php'); -// We send json data -header( "Content-Type: application/jsonrequest" ); - -// Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" ))); - exit(); -} +OC_JSON::checkLoggedIn(); // Load the files $dir = isset( $_GET['dir'] ) ? $_GET['dir'] : ''; @@ -45,6 +38,6 @@ $list = new OC_Template( "files", "part.list", "" ); $list->assign( "files", $files ); $data = array('files' => $list->fetchPage()); -echo json_encode( array( "status" => "success", "data" => $data)); +OC_JSON::success(array('data' => $data)); ?> diff --git a/files/ajax/mimeicon.php b/files/ajax/mimeicon.php new file mode 100644 index 0000000000000000000000000000000000000000..8724016b3a190b25e2010dcd78fbebe05cfdad18 --- /dev/null +++ b/files/ajax/mimeicon.php @@ -0,0 +1,8 @@ +<?php + +// Init owncloud +require_once('../../lib/base.php'); + +print OC_Helper::mimetypeIcon($_GET['mime']); + +?> diff --git a/files/ajax/move.php b/files/ajax/move.php index 4224cbce6d0b4f9d282b98cd9d8ae0de99581ed0..8a56a0154868c763334331a60429099c845f0a14 100644 --- a/files/ajax/move.php +++ b/files/ajax/move.php @@ -3,14 +3,7 @@ // Init owncloud require_once('../../lib/base.php'); -// We send json data -header( "Content-Type: application/jsonrequest" ); - -// Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" ))); - exit(); -} +OC_JSON::checkLoggedIn(); // Get data $dir = $_GET["dir"]; @@ -19,9 +12,9 @@ $target = $_GET["target"]; if(OC_Files::move($dir,$file,$target,$file)){ - echo json_encode( array( "status" => 'success', "data" => array( "dir" => $dir, "files" => $file ))); + OC_JSON::success(array("data" => array( "dir" => $dir, "files" => $file ))); }else{ - echo json_encode( array( "status" => 'error', "data" => array( "message" => "Could move $file" ))); + OC_JSON::error(array("data" => array( "message" => "Could move $file" ))); } -?> \ No newline at end of file +?> diff --git a/files/ajax/newfolder.php b/files/ajax/newfolder.php index 610418583bd680bfb334047ef59f506fb4f4a7dd..43d87461fc72fa1026a6abfe1170ecdcb7ddf599 100644 --- a/files/ajax/newfolder.php +++ b/files/ajax/newfolder.php @@ -3,27 +3,20 @@ // Init owncloud require_once('../../lib/base.php'); -// We send json data -header( "Content-Type: application/jsonrequest" ); - -// Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" ))); - exit(); -} +OC_JSON::checkLoggedIn(); // Get the params $dir = isset( $_GET['dir'] ) ? $_GET['dir'] : ''; $foldername = isset( $_GET['foldername'] ) ? $_GET['foldername'] : ''; if($foldername == '') { - echo json_encode( array( "status" => "error", "data" => array( "message" => "Empty Foldername" ))); + OC_JSON::error(array("data" => array( "message" => "Empty Foldername" ))); exit(); } -error_log('try to create ' . $foldername . ' in ' . $dir); +if(defined("DEBUG") && DEBUG) {error_log('try to create ' . $foldername . ' in ' . $dir);} if(OC_Files::newFile($dir, $foldername, 'dir')) { - echo json_encode( array( "status" => "success", "data" => array())); + OC_JSON::success(array("data" => array())); exit(); } -echo json_encode( array( "status" => "error", "data" => array( "message" => "Error when creating the folder" ))); \ No newline at end of file +OC_JSON::error(array("data" => array( "message" => "Error when creating the folder" ))); diff --git a/files/ajax/rename.php b/files/ajax/rename.php index 516077f6fda08b3d6799b9cead6e07515316b5ff..87ffbc3ada0784ee9a88819bb173e1ffa8f5dda8 100644 --- a/files/ajax/rename.php +++ b/files/ajax/rename.php @@ -3,14 +3,7 @@ // Init owncloud require_once('../../lib/base.php'); -// We send json data -header( "Content-Type: application/jsonrequest" ); - -// Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" ))); - exit(); -} +OC_JSON::checkLoggedIn(); // Get data $dir = $_GET["dir"]; @@ -19,10 +12,10 @@ $newname = $_GET["newname"]; // Delete if( OC_Files::move( $dir, $file, $dir, $newname )) { - echo json_encode( array( "status" => "success", "data" => array( "dir" => $dir, "file" => $file, "newname" => $newname ))); + OC_JSON::success(array("data" => array( "dir" => $dir, "file" => $file, "newname" => $newname ))); } else{ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to rename file" ))); + OC_JSON::error(array("data" => array( "message" => "Unable to rename file" ))); } ?> diff --git a/files/ajax/timezone.php b/files/ajax/timezone.php index 93d06611a0d977fb830ad576feca1a0faaf632a7..8e1d2aa1ec132b37677ae99614b81154e23f3128 100644 --- a/files/ajax/timezone.php +++ b/files/ajax/timezone.php @@ -1,4 +1,6 @@ <?php + // FIXME: this should start a secure session if forcessl is enabled + // see lib/base.php for an example session_start(); $_SESSION['timezone'] = $_GET['time']; -?> \ No newline at end of file +?> diff --git a/files/ajax/upload.php b/files/ajax/upload.php index c642b0ded1cf8b2910d4a880c93a607583b6fe5d..041ec0c92e354284fb12d55d123eb94225b81094 100644 --- a/files/ajax/upload.php +++ b/files/ajax/upload.php @@ -3,17 +3,29 @@ // Init owncloud require_once('../../lib/base.php'); -// We send json data -// header( "Content-Type: application/json" ); // Firefox and Konqueror tries to download application/json for me. --Arthur -header( "Content-Type: text/plain" ); +OC_JSON::setContentTypeHeader('text/plain'); -// Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" ))); +OC_JSON::checkLoggedIn(); + +if (!isset($_FILES['files'])) { + OC_JSON::error(array("data" => array( "message" => "No file was uploaded. Unknown error" ))); exit(); } - +foreach ($_FILES['files']['error'] as $error) { + if ($error != 0) { + $errors = array( + 0=>$l->t("There is no error, the file uploaded with success"), + 1=>$l->t("The uploaded file exceeds the upload_max_filesize directive in php.ini"), + 2=>$l->t("The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form"), + 3=>$l->t("The uploaded file was only partially uploaded"), + 4=>$l->t("No file was uploaded"), + 6=>$l->t("Missing a temporary folder") + ); + OC_JSON::error(array("data" => array( "message" => $errors[$error] ))); + exit(); + } +} $files=$_FILES['files']; $dir = $_POST['dir']; @@ -25,7 +37,7 @@ foreach($files['size'] as $size){ $totalSize+=$size; } if($totalSize>OC_Filesystem::free_space('/')){ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Not enough space available" ))); + OC_JSON::error(array("data" => array( "message" => "Not enough space available" ))); exit(); } @@ -38,12 +50,12 @@ if(strpos($dir,'..') === false){ $result[]=array( "status" => "success", 'mime'=>OC_Filesystem::getMimeType($target),'size'=>OC_Filesystem::filesize($target),'name'=>$files['name'][$i]); } } - echo json_encode($result); + OC_JSON::encodedPrint($result); exit(); }else{ $error='invalid dir'; } -echo json_encode(array( 'status' => 'error', 'data' => array('error' => $error, "file" => $fileName))); +OC_JSON::error(array('data' => array('error' => $error, "file" => $fileName))); ?> diff --git a/files/css/files.css b/files/css/files.css index 27ead667dc4423344b7470778655d5248bd25feb..a8419e972ef2794463084afa5a8eaf95b6a0c73e 100644 --- a/files/css/files.css +++ b/files/css/files.css @@ -10,7 +10,7 @@ .file_upload_form, #file_newfolder_form { display:inline; float: left;} #fileSelector, #file_upload_submit, #file_newfolder_submit { display:none; } .file_upload_wrapper, #file_newfolder_name { background-repeat:no-repeat; background-position:.5em .5em; padding-left:2em; } -.file_upload_wrapper { font-weight:bold; display:-moz-inline-box; /* fallback for older firefox versions*/ display:inline-block; padding-left:0; overflow:hidden; position:relative; margin:.1em 1em;} +.file_upload_wrapper { font-weight:bold; display:-moz-inline-box; /* fallback for older firefox versions*/ display:inline-block; padding-left:0; overflow:hidden; position:relative; margin:.1em 1em .1em 0em;} .file_upload_wrapper .file_upload_button_wrapper { position:absolute; top:0; left:0; width:100%; height:100%; cursor:pointer; z-index:1000; } #file_newfolder_name { background-image:url('../../core/img/places/folder.svg'); font-weight:normal; width:7em; } @@ -59,7 +59,7 @@ table thead.fixed { height:2em; } #fileList tr td.filename { -webkit-transition:background-image 500ms; -moz-transition:background-image 500ms; -o-transition:background-image 500ms; transition:background-image 500ms; } #select_all { float:left; margin:.3em 0.6em 0 .5em; } #uploadsize-message,#delete-confirm { display:none; } -.selectedActions a, a.action { float:right; display:inline; margin:0 .5em; padding:.3em .3em 0 .3em !important; } +.selectedActions a,#fileList a.action { float:right; display:inline; margin:0 .5em; padding:.3em .3em 0 .3em !important; } .selectedActions { display:none; } /* add breadcrumb divider to the File item in navigation panel */ diff --git a/files/download.php b/files/download.php index ccd3eb43d8e7bac556c2d274823ab5f624f671f5..c8a2692d015359e27e5a9304c07a7dc47e03f9e1 100644 --- a/files/download.php +++ b/files/download.php @@ -25,10 +25,7 @@ require_once('../lib/base.php'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - header( "Location: ".OC_Helper::linkTo( "", "index.php" )); - exit(); -} +OC_Util::checkLoggedIn(); $filename = $_GET["file"]; diff --git a/files/index.php b/files/index.php index 3d62c3385faf60c64ea8e20dde8be3f82cd41544..aa081d4880432433a2f1723b3fe5117e0380c16e 100644 --- a/files/index.php +++ b/files/index.php @@ -26,10 +26,7 @@ require_once('../lib/base.php'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - header( "Location: ".OC_Helper::linkTo( '', 'index.php' )); - exit(); -} +OC_Util::checkLoggedIn(); // Load the files we need OC_Util::addStyle( "files", "files" ); @@ -81,7 +78,9 @@ $breadcrumbNav = new OC_Template( "files", "part.breadcrumb", "" ); $breadcrumbNav->assign( "breadcrumb", $breadcrumb ); $breadcrumbNav->assign( "baseURL", OC_Helper::linkTo("files", "index.php?dir=")); -$maxUploadFilesize = OC_Helper::computerFileSize(ini_get('upload_max_filesize')); +$upload_max_filesize = OC_Helper::computerFileSize(ini_get('upload_max_filesize')); +$post_max_size = OC_Helper::computerFileSize(ini_get('post_max_size')); +$maxUploadFilesize = min($upload_max_filesize, $post_max_size); $tmpl = new OC_Template( "files", "index", "user" ); $tmpl->assign( "fileList", $list->fetchPage() ); diff --git a/files/js/fileactions.js b/files/js/fileactions.js index 4ff8562fef3bcbf3af21f0b6bced2d8bf8042ee5..0089c235ebf18a7b0caf009bba0db752161d9133 100644 --- a/files/js/fileactions.js +++ b/files/js/fileactions.js @@ -53,7 +53,7 @@ FileActions={ }, display:function(parent){ FileActions.currentFile=parent; - $('.action').remove(); + $('#fileList .action').remove(); var actions=FileActions.get(FileActions.getCurrentMimeType(),FileActions.getCurrentType()); var file=FileActions.getCurrentFile(); if($('tr[data-file="'+file+'"]').data('renaming')){ @@ -104,12 +104,12 @@ FileActions={ }); parent.parent().children().last().append(element); } - $('.action').hide(); - $('.action').fadeIn(200); + $('#fileList .action').hide(); + $('#fileList .action').fadeIn(200); return false; }, hide:function(){ - $('.action').fadeOut(200,function(){ + $('#fileList .action').fadeOut(200,function(){ $(this).remove(); }); }, @@ -125,7 +125,7 @@ FileActions={ } FileActions.register('all','Download',function(){return OC.imagePath('core','actions/download')},function(filename){ - window.location='ajax/download.php?files='+filename+'&dir='+$('#dir').val(); + window.location='ajax/download.php?files='+encodeURIComponent(filename)+'&dir='+encodeURIComponent($('#dir').val()); }); FileActions.register('all','Delete',function(){return OC.imagePath('core','actions/delete')},function(filename){ diff --git a/files/js/filelist.js b/files/js/filelist.js index ae9e7977c95e156191730618a79126954e6532c6..e6da922700d720d209ec8efe051e1eb5f18956b0 100644 --- a/files/js/filelist.js +++ b/files/js/filelist.js @@ -3,7 +3,7 @@ FileList={ $('#fileList').empty().html(fileListHtml); }, addFile:function(name,size,lastModified,loading){ - var img=(loading)?OC.imagePath('core', 'loading.gif'):OC.imagePath('core', 'filetypes/file'); + var img=(loading)?OC.imagePath('core', 'loading.gif'):OC.imagePath('core', 'filetypes/file.png'); var html='<tr data-file="'+name+'" data-type="file" data-size="'+size+'">'; if(name.indexOf('.')!=-1){ var basename=name.substr(0,name.lastIndexOf('.')); @@ -27,7 +27,7 @@ FileList={ lastModifiedTime=Math.round(lastModified.getTime() / 1000); modifiedColor=Math.round((Math.round((new Date()).getTime() / 1000)-lastModifiedTime)/60/60/24*14); html+='<td class="filesize" title="'+humanFileSize(size)+'" style="color:rgb('+sizeColor+','+sizeColor+','+sizeColor+')">'+simpleSize+'</td>'; - html+='<td class="date" title="'+formatDate(lastModified)+'" style="color:rgb('+modifiedColor+','+modifiedColor+','+modifiedColor+')">'+relative_modified_date(lastModified.getTime() / 1000)+'</td>'; + html+='<td class="date"><span class="modified" title="'+formatDate(lastModified)+'" style="color:rgb('+modifiedColor+','+modifiedColor+','+modifiedColor+')">'+relative_modified_date(lastModified.getTime() / 1000)+'</span></td>'; html+='</tr>'; FileList.insertElement(name,'file',$(html)); if(loading){ @@ -48,7 +48,7 @@ FileList={ lastModifiedTime=Math.round(lastModified.getTime() / 1000); modifiedColor=Math.round((Math.round((new Date()).getTime() / 1000)-lastModifiedTime)/60/60/24*5); html+='<td class="filesize" title="'+humanFileSize(size)+'" style="color:rgb('+sizeColor+','+sizeColor+','+sizeColor+')">'+simpleSize+'</td>'; - html+='<td class="date" title="'+formatDate(lastModified)+'" style="color:rgb('+modifiedColor+','+modifiedColor+','+modifiedColor+')">'+relative_modified_date(lastModified.getTime() / 1000)+'</td>'; + html+='<td class="date"><span class="modified" title="'+formatDate(lastModified)+'" style="color:rgb('+modifiedColor+','+modifiedColor+','+modifiedColor+')">'+relative_modified_date(lastModified.getTime() / 1000)+'</span></td>'; html+='</tr>'; FileList.insertElement(name,'dir',$(html)); @@ -101,10 +101,14 @@ FileList={ $('.file_upload_filename').removeClass('highlight'); }, loadingDone:function(name){ - $('tr[data-file="'+name+'"]').data('loading',false); - var mime=$('tr[data-file="'+name+'"]').data('mime'); - $('tr[data-file="'+name+'"] td.filename').attr('style','background-image:url('+getMimeIcon(mime)+')'); - $('tr[data-file="'+name+'"] td.filename').draggable(dragOptions); + var tr=$('tr[data-file="'+name+'"]'); + tr.data('loading',false); + var mime=tr.data('mime'); + tr.attr('data-mime',mime); + getMimeIcon(mime,function(path){ + tr.find('td.filename').attr('style','background-image:url('+path+')'); + }); + tr.find('td.filename').draggable(dragOptions); }, isLoading:function(name){ return $('tr[data-file="'+name+'"]').data('loading'); diff --git a/files/js/files.js b/files/js/files.js index 7b37837d9ccd69ef81b4cf834b5ed969568be871..079646070d4b0db195ed2e9284b34db1f6a353bf 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -163,8 +163,10 @@ $(document).ready(function() { var files=this.files; var target=form.children('iframe'); var totalSize=0; - for(var i=0;i<files.length;i++){ - totalSize+=files[i].size; + if(files){ + for(var i=0;i<files.length;i++){ + totalSize+=files[i].size; + } } if(totalSize>$('#max_upload').val()){ $( "#uploadsize-message" ).dialog({ @@ -192,13 +194,20 @@ $(document).ready(function() { }); form.submit(); var date=new Date(); - for(var i=0;i<files.length;i++){ - if(files[i].size>0){ - var size=files[i].size; - }else{ - var size=t('files','Pending'); + if(files){ + for(var i=0;i<files.length;i++){ + if(files[i].size>0){ + var size=files[i].size; + }else{ + var size=t('files','Pending'); + } + if(files){ + FileList.addFile(files[i].name,size,date,true); + } } - FileList.addFile(files[i].name,size,date,true); + }else{ + var filename=this.value.split('\\').pop(); //ie prepends C:\fakepath\ in front of the filename + FileList.addFile(filename,'Pending',date,true); } //clone the upload form and hide the new one to allow users to start a new upload while the old one is still uploading @@ -376,11 +385,9 @@ function procesSelection(){ $('table').css('padding-top','0'); }else{ var width={name:$('#headerName').css('width'),size:$('#headerSize').css('width'),date:$('#headerDate').css('width')}; - $('thead').addClass('fixed'); $('#headerName').css('width',width.name); $('#headerSize').css('width',width.size); $('#headerDate').css('width',width.date); - $('table').css('padding-top','2.1em'); $('.selectedActions').show(); var totalSize=0; for(var i=0;i<selectedFiles.length;i++){ @@ -466,11 +473,14 @@ function relative_modified_date(timestamp) { else { return diffyears+' '+t('files','years ago'); } } -function getMimeIcon(mime){ - mime=mime.substr(0,mime.indexOf('/')); - var knownMimes=['image','audio']; - if(knownMimes.indexOf(mime)==-1){ - mime='file'; +function getMimeIcon(mime, ready){ + if(getMimeIcon.cache[mime]){ + ready(getMimeIcon.cache[mime]); + }else{ + $.get( OC.filePath('files','ajax','mimeicon.php')+'?mime='+mime, function(path){ + getMimeIcon.cache[mime]=path; + ready(getMimeIcon.cache[mime]); + }); } - return OC.imagePath('core','filetypes/'+mime); } +getMimeIcon.cache={}; diff --git a/files/l10n/bg_BG.php b/files/l10n/bg_BG.php new file mode 100644 index 0000000000000000000000000000000000000000..db5a095c2cbdeff90a26a91551b4324f1fd4c479 --- /dev/null +++ b/files/l10n/bg_BG.php @@ -0,0 +1,14 @@ +<?php $TRANSLATIONS = array( +"Files" => "Файлове", +"Maximum upload size" => "МакÑ. размер за качване", +"Upload" => "Качване", +"New Folder" => "Ðова папка", +"Nothing in here. Upload something!" => "ÐÑма нищо, качете нещо!", +"Name" => "Име", +"Download" => "ИзтеглÑне", +"Size" => "Размер", +"Modified" => "Променено", +"Delete" => "Изтриване", +"Upload too large" => "Файлът е прекалено голÑм", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Файловете които Ñе опитвате да качите Ñа по-големи от позволеното за Ñървъра." +); diff --git a/files/l10n/ca.php b/files/l10n/ca.php index 14ab8b70a8d3de51d67666bf375c17ceb1f81e12..8515ab35f2712adca7f6ab5a44d7d75e532d5b00 100644 --- a/files/l10n/ca.php +++ b/files/l10n/ca.php @@ -1,9 +1,9 @@ <?php $TRANSLATIONS = array( "Files" => "Fitxers", "Maximum upload size" => "Mida mà xima de pujada", -"Nothing in here. Upload something!" => "Res per aquÃ. Pugeu alguna cosa!", "Upload" => "Puja", "New Folder" => "Carpeta nova", +"Nothing in here. Upload something!" => "Res per aquÃ. Pugeu alguna cosa!", "Name" => "Nom", "Download" => "Descarrega", "Size" => "Mida", diff --git a/files/l10n/da.php b/files/l10n/da.php index 7bbcc6f8c23cc66b664b05f2868542dfd751f7d7..bc909a923317a334e0be0feb2946ebf90fa5f389 100644 --- a/files/l10n/da.php +++ b/files/l10n/da.php @@ -1,9 +1,9 @@ <?php $TRANSLATIONS = array( "Files" => "Filer", "Maximum upload size" => "Maksimal upload-størrelse", -"Nothing in here. Upload something!" => "Her er tomt. Upload noget!", "Upload" => "Upload", "New Folder" => "Ny Mappe", +"Nothing in here. Upload something!" => "Her er tomt. Upload noget!", "Name" => "Navn", "Download" => "Download", "Size" => "Størrelse", diff --git a/files/l10n/de.php b/files/l10n/de.php index ade5a0495039d4a55c178453fb1ba185591b3e48..0259dd02e848ed70c0864b29790adb5e66e30bf3 100644 --- a/files/l10n/de.php +++ b/files/l10n/de.php @@ -1,9 +1,9 @@ <?php $TRANSLATIONS = array( "Files" => "Dateien", "Maximum upload size" => "Maximale Größe", -"Nothing in here. Upload something!" => "Alles leer. Lad’ was hoch!", "Upload" => "Hochladen", "New Folder" => "Neuer Ordner", +"Nothing in here. Upload something!" => "Alles leer. Lad’ was hoch!", "Name" => "Name", "Download" => "Herunterladen", "Size" => "Größe", diff --git a/files/l10n/el.php b/files/l10n/el.php index 3537419e24d80d0b9ddcf92c87a20b5322941b1f..14b95e69ca6fc85e995210007d658d87e9b57f73 100644 --- a/files/l10n/el.php +++ b/files/l10n/el.php @@ -1,9 +1,9 @@ <?php $TRANSLATIONS = array( "Files" => "ΑÏχεία", "Maximum upload size" => "ÎœÎγιστο μÎγεθος μεταφόÏτωσης", -"Nothing in here. Upload something!" => "Δεν υπάÏχει τίποτα εδώ. ΑνÎβασε κάτι!", "Upload" => "ΜεταφόÏτωση", "New Folder" => "ÎÎος φάκελος", +"Nothing in here. Upload something!" => "Δεν υπάÏχει τίποτα εδώ. ΑνÎβασε κάτι!", "Name" => "Όνομα", "Download" => "Λήψη", "Size" => "ÎœÎγεθος", diff --git a/files/l10n/es.php b/files/l10n/es.php index acb9d8c7083716f2f5d8840b4b9ddc0769774433..28dc17af761ae8d67abf6653df44a16c7be4d14f 100644 --- a/files/l10n/es.php +++ b/files/l10n/es.php @@ -1,9 +1,9 @@ <?php $TRANSLATIONS = array( "Files" => "Archivos", "Maximum upload size" => "Tamaño máximo de subida", -"Nothing in here. Upload something!" => "Aquà no hay nada. ¡Sube algo!", "Upload" => "Subir", "New Folder" => "Crear Carpeta", +"Nothing in here. Upload something!" => "Aquà no hay nada. ¡Sube algo!", "Name" => "Nombre", "Download" => "Descargar", "Size" => "Tamaño", diff --git a/files/l10n/et_EE.php b/files/l10n/et_EE.php new file mode 100644 index 0000000000000000000000000000000000000000..29c44dac10693bece41498cc468370d497a232c8 --- /dev/null +++ b/files/l10n/et_EE.php @@ -0,0 +1,14 @@ +<?php $TRANSLATIONS = array( +"Files" => "Failid", +"Maximum upload size" => "Maksimaalne üleslaadimise suurus", +"Upload" => "Lae üles", +"New Folder" => "Uus kaust", +"Nothing in here. Upload something!" => "Siin pole midagi. Lae midagi üles!", +"Name" => "Nimi", +"Download" => "Lae alla", +"Size" => "Suurus", +"Modified" => "Muudetud", +"Delete" => "Kustuta", +"Upload too large" => "Ãœleslaadimine on liiga suur", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Failid, mida sa proovid üles laadida, ületab serveri poolt üleslaetavatele failidele määratud maksimaalse suuruse." +); diff --git a/files/l10n/fr.php b/files/l10n/fr.php index ccaf9a3867db30cc2528e5b562a0f0c84c42b424..fa58f073d667daeb4d6d5449be1496eecfc4c650 100644 --- a/files/l10n/fr.php +++ b/files/l10n/fr.php @@ -1,9 +1,9 @@ <?php $TRANSLATIONS = array( "Files" => "Fichiers", "Maximum upload size" => "Taille max. d'envoi", -"Nothing in here. Upload something!" => "Il n'y a rien ici ! Envoyez donc quelque chose :)", "Upload" => "Envoyer", "New Folder" => "Nouveau dossier", +"Nothing in here. Upload something!" => "Il n'y a rien ici ! Envoyez donc quelque chose :)", "Name" => "Nom", "Download" => "Téléchargement", "Size" => "Taille", diff --git a/files/l10n/id.php b/files/l10n/id.php index 28b298f289a8b167520afb2cbdec8d53f759b6d0..feb5c6d863152a252f394a7f2cbc92e267c8a86c 100644 --- a/files/l10n/id.php +++ b/files/l10n/id.php @@ -1,9 +1,9 @@ <?php $TRANSLATIONS = array( "Files" => "Berkas", "Maximum upload size" => "Ukuran unggah maksimum", -"Nothing in here. Upload something!" => "Tidak ada apa-apa di sini. Unggah sesuatu!", "Upload" => "Unggah", "New Folder" => "Folder Baru", +"Nothing in here. Upload something!" => "Tidak ada apa-apa di sini. Unggah sesuatu!", "Name" => "Nama", "Download" => "Unduh", "Size" => "Ukuran", diff --git a/files/l10n/it.php b/files/l10n/it.php index c83e223eb9d84ad98f16a5ff6cc14f9962309886..4c958924ceb7fad01a58fae4306cbcaa81265637 100644 --- a/files/l10n/it.php +++ b/files/l10n/it.php @@ -1,9 +1,9 @@ <?php $TRANSLATIONS = array( "Files" => "File", "Maximum upload size" => "Dimensione massima upload", -"Nothing in here. Upload something!" => "Non c'è niente qui. Carica qualcosa!", "Upload" => "Carica", "New Folder" => "Nuova Cartella", +"Nothing in here. Upload something!" => "Non c'è niente qui. Carica qualcosa!", "Name" => "Nome", "Download" => "Scarica", "Size" => "Dimensione", diff --git a/files/l10n/ms_MY.php b/files/l10n/ms_MY.php new file mode 100644 index 0000000000000000000000000000000000000000..3b654cccdafe86de7a52595b76d33d481b18507b --- /dev/null +++ b/files/l10n/ms_MY.php @@ -0,0 +1,14 @@ +<?php $TRANSLATIONS = array( +"Files" => "fail", +"Maximum upload size" => "Saiz maksimum muat naik", +"Upload" => "Muat naik", +"New Folder" => "Folder baru", +"Nothing in here. Upload something!" => "Tiada apa-apa di sini. Muat naik sesuatu!", +"Name" => "Nama ", +"Download" => "Muat turun", +"Size" => "Saiz", +"Modified" => "Dimodifikasi", +"Delete" => "Padam", +"Upload too large" => "Muat naik terlalu besar", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Fail yang cuba dimuat naik melebihi saiz maksimum fail upload server" +); diff --git a/files/l10n/nl.php b/files/l10n/nl.php index 5ad054877126282833cbb5571af58a1af4526bdb..c474d9a4ca2c7a6cd054ce67bbfa1872f212a1f1 100644 --- a/files/l10n/nl.php +++ b/files/l10n/nl.php @@ -1,14 +1,14 @@ <?php $TRANSLATIONS = array( "Files" => "Bestanden", -"Maximum upload size" => "Maximaale bestands groote voor uploads", -"Nothing in here. Upload something!" => "Er bevind zich hier niks, upload een bestand.", -"Upload" => "Uploaden", -"New Folder" => "Nieuwe Map", +"Maximum upload size" => "Maximale bestandsgrootte voor uploads", +"Upload" => "Upload", +"New Folder" => "Nieuwe map", +"Nothing in here. Upload something!" => "Er bevindt zich hier niets. Upload een bestand!", "Name" => "Naam", "Download" => "Download", -"Size" => "Bestandsgroote", +"Size" => "Bestandsgrootte", "Modified" => "Laatst aangepast", -"Delete" => "Verwijderen", +"Delete" => "Verwijder", "Upload too large" => "Bestanden te groot", -"The files you are trying to upload exceed the maximum size for file uploads on this server." => "De bestanden die U probeert up te loaden zijn grooter dan de maximaal toegstane groote voor deze server." +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "De bestanden die u probeert te uploaden zijn groter dan de maximaal toegestane bestandsgrootte voor deze server." ); diff --git a/files/l10n/pl.php b/files/l10n/pl.php new file mode 100644 index 0000000000000000000000000000000000000000..6cd60267fc815b68e9397dc970cce4477bc937e2 --- /dev/null +++ b/files/l10n/pl.php @@ -0,0 +1,14 @@ +<?php $TRANSLATIONS = array( +"Files" => "Pliki", +"Maximum upload size" => "Maksymalna wielkość przesyÅ‚anego pliku", +"Upload" => "PrzeÅ›lij", +"New Folder" => "Nowy katalog", +"Nothing in here. Upload something!" => "Nic tu nie ma. PrzeÅ›lij jakieÅ› pliki!", +"Name" => "Nazwa", +"Download" => "ÅšciÄ…ganie", +"Size" => "Wielkość", +"Modified" => "Zmodyfikowano", +"Delete" => "Skasuj", +"Upload too large" => "PrzesyÅ‚any plik jest za duży", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Pliki które próbujesz przesÅ‚ać, przekraczajÄ… maksymalnÄ…, dopuszczalnÄ… wielkość." +); diff --git a/files/l10n/pt_BR.php b/files/l10n/pt_BR.php index dbafd695643f8e75fcbce4e37d573c5ebdfa7f36..efaefe51655a8bb0cc0f11a29fd0e8e8aa787e7b 100644 --- a/files/l10n/pt_BR.php +++ b/files/l10n/pt_BR.php @@ -1,9 +1,9 @@ <?php $TRANSLATIONS = array( "Files" => "Arquivos", "Maximum upload size" => "Tamanho máximo para carregar", -"Nothing in here. Upload something!" => "Nada aqui.Carregar alguma coisa!", "Upload" => "Carregar", "New Folder" => "Nova Pasta", +"Nothing in here. Upload something!" => "Nada aqui.Carregar alguma coisa!", "Name" => "Nome", "Download" => "Baixar", "Size" => "Tamanho", diff --git a/files/l10n/sr.php b/files/l10n/sr.php new file mode 100644 index 0000000000000000000000000000000000000000..445387ffa2fec89469d3405b81d26c7329d516ac --- /dev/null +++ b/files/l10n/sr.php @@ -0,0 +1,14 @@ +<?php $TRANSLATIONS = array( +"Files" => "Фајлови", +"Maximum upload size" => "МакÑимална величина пошиљке", +"Upload" => "Пошаљи", +"New Folder" => "Ðова фаÑцикла", +"Nothing in here. Upload something!" => "Овде нема ничег. Пошаљите нешто!", +"Name" => "Име", +"Download" => "Преузми", +"Size" => "Величина", +"Modified" => "Задња измена", +"Delete" => "Обриши", +"Upload too large" => "Пошиљка је превелика", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Фајлови које желите да пошаљете превазилазе ограничење макÑималне величине пошиљке на овом Ñерверу." +); diff --git a/files/l10n/sr@latin.php b/files/l10n/sr@latin.php new file mode 100644 index 0000000000000000000000000000000000000000..3cc0ee0f1506f92de0d947fe9eee1a30ed313fe4 --- /dev/null +++ b/files/l10n/sr@latin.php @@ -0,0 +1,14 @@ +<?php $TRANSLATIONS = array( +"Files" => "Fajlovi", +"Maximum upload size" => "Maksimalna veliÄina poÅ¡iljke", +"Upload" => "PoÅ¡alji", +"New Folder" => "Nova fascikla", +"Nothing in here. Upload something!" => "Ovde nema niÄeg. PoÅ¡aljite neÅ¡to!", +"Name" => "Ime", +"Download" => "Preuzmi", +"Size" => "VeliÄina", +"Modified" => "Zadnja izmena", +"Delete" => "ObriÅ¡i", +"Upload too large" => "PoÅ¡iljka je prevelika", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Fajlovi koje želite da poÅ¡aljete prevazilaze ograniÄenje maksimalne veliÄine poÅ¡iljke na ovom serveru." +); diff --git a/files/l10n/sv.php b/files/l10n/sv.php index 122905c950104d9b6c7a6593fa900d1b9508f03f..dd1ac479366aafa050520da621488afd30796de6 100644 --- a/files/l10n/sv.php +++ b/files/l10n/sv.php @@ -1,9 +1,9 @@ <?php $TRANSLATIONS = array( "Files" => "Filer", "Maximum upload size" => "Maximal storlek att lägga upp", -"Nothing in here. Upload something!" => "Ingenting här. Lägg upp nÃ¥got!", "Upload" => "Lägg upp", "New Folder" => "Ny katalog", +"Nothing in here. Upload something!" => "Ingenting här. Lägg upp nÃ¥got!", "Name" => "Namn", "Download" => "Ladda ned", "Size" => "Storlek", diff --git a/files/settings.php b/files/settings.php index 2bbcb2acd3aec2e178fa165339e4845d449c11d6..c47eb130095a236b5c38135f5809ee13838c9e7d 100644 --- a/files/settings.php +++ b/files/settings.php @@ -26,10 +26,7 @@ require_once('../lib/base.php'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - header( "Location: ".OC_Helper::linkTo( "", "index.php" )); - exit(); -} +OC_Util::checkLoggedIn(); // Load the files we need OC_Util::addStyle( "files", "files" ); diff --git a/files/templates/index.php b/files/templates/index.php index 4e105811f051a7d41c9a2fd9e5102847f2f5378f..e2e9dc030017b1c1a45c9adac63faabbecef04df 100644 --- a/files/templates/index.php +++ b/files/templates/index.php @@ -1,5 +1,6 @@ <div id="controls"> <?php echo($_['breadcrumb']); ?> + <?php if (!isset($_['readonly']) || !$_['readonly']) {?> <div class="actions"> <form data-upload-id='1' class="file_upload_form" action="ajax/upload.php" method="post" enctype="multipart/form-data" target="file_upload_target_1"> <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $_['uploadMaxFilesize'] ?>" id="max_upload"> @@ -19,23 +20,30 @@ <div id="file_action_panel"> </div> </div> +<?php +} +?> <div id='notification'></div> -<div id="emptyfolder" <?php if(count($_['files'])) echo 'style="display:none;"';?>><?php echo $l->t('Nothing in here. Upload something!')?></div> +<?php +if (isset($_['files'])) { + if (!count($_['files'])) { ?> +<div id="emptyfolder"><?php echo $l->t('Nothing in here. Upload something!')?></div> +<?php }}?> <table> <thead> <tr> <th id='headerName'> - <input type="checkbox" id="select_all" /> + <?php if(!isset($_['readonly']) || !$_['readonly']) { ?><input type="checkbox" id="select_all" /><?php } ?> <span class='name'><?php echo $l->t( 'Name' ); ?></span> <span class='selectedActions'> - <a href="" title="<?php echo $l->t('Download')?>" class="download"><img class='svg' alt="Download" src="../core/img/actions/download.svg" /></a> - <a href="" title="Share" class="share"><img class='svg' alt="Share" src="../core/img/actions/share.svg" /></a> + <a href="" title="<?php echo $l->t('Download')?>" class="download"><img class='svg' alt="Download" src="<?php echo image_path("core", "actions/download.svg"); ?>" /></a> + <a href="" title="Share" class="share"><img class='svg' alt="Share" src="<?php echo image_path("core", "actions/share.svg"); ?>" /></a> </span> </th> <th id="headerSize"><?php echo $l->t( 'Size' ); ?></th> - <th id="headerDate"><span id="modified"><?php echo $l->t( 'Modified' ); ?></span><span class="selectedActions"><a href="" title="Delete" class="delete"><img class="svg" alt="<?php echo $l->t('Delete')?>" src="../core/img/actions/delete.svg" /></a></span></th> + <th id="headerDate"><span id="modified"><?php echo $l->t( 'Modified' ); ?></span><span class="selectedActions"><a href="" title="Delete" class="delete"><img class="svg" alt="<?php echo $l->t('Delete')?>" src="<?php echo image_path("core", "actions/delete.svg"); ?>" /></a></span></th> </tr> </thead> <tbody id="fileList"> diff --git a/files/templates/part.list.php b/files/templates/part.list.php index 5995976f73a8f541a6a63d9f75c33a1fe7b1b473..6bf5efe2fb2c6c0101bba8e29704da64e5e4aa9c 100644 --- a/files/templates/part.list.php +++ b/files/templates/part.list.php @@ -7,8 +7,8 @@ if($relative_date_color>200) $relative_date_color = 200; ?> <tr data-file="<?php echo $file['name'];?>" data-type="<?php echo ($file['type'] == 'dir')?'dir':'file'?>" data-mime="<?php echo $file['mime']?>" data-size='<?php echo $file['size'];?>'> <td class="filename svg" style="background-image:url(<?php if($file['type'] == 'dir') echo mimetype_icon('dir'); else echo mimetype_icon($file['mime']); ?>)"> - <input type="checkbox" /> - <a class="name" href="<?php if($file['type'] == 'dir') echo $_['baseURL'].$file['directory'].'/'.$file['name']; else echo $_['downloadURL'].$file['directory'].'/'.$file['name']; ?>" title=""> + <?php if(!isset($_['readonly']) || !$_['readonly']) { ?><input type="checkbox" /><?php } ?> + <a class="name" href="<?php if($file['type'] == 'dir') echo $_['baseURL'].$file['directory'].'/'.$file['name']; else echo $_['downloadURL'].urlencode($file['directory']).'/'.urlencode($file['name']); ?>" title=""> <span class="nametext"> <?php if($file['type'] == 'dir'):?> <?php echo htmlspecialchars($file['name']);?> diff --git a/files/webdav.php b/files/webdav.php index b1d242b2cc9017f5309cef378e7e4b1e0d2d8d78..6fae33a8f719bc50f65d9584616b936e442533d7 100644 --- a/files/webdav.php +++ b/files/webdav.php @@ -37,11 +37,12 @@ $publicDir = new OC_Connector_Sabre_Directory(''); // Fire up server $server = new Sabre_DAV_Server($publicDir); -$server->setBaseUri($WEBROOT.'/files/webdav.php'); +$server->setBaseUri(OC::$WEBROOT.'/files/webdav.php'); // Load plugins $server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend,'ownCloud')); $server->addPlugin(new Sabre_DAV_Locks_Plugin($lockBackend)); +$server->addPlugin(new Sabre_DAV_Browser_Plugin(false)); // Show something in the Browser, but no upload // And off we go! $server->exec(); diff --git a/index.php b/index.php index 3c8a0e3bed62bbc59a62e52fd249a6c1ba8e851f..4e1f5bcc8d6d9eb7f5458faf7e036aea255993eb 100644 --- a/index.php +++ b/index.php @@ -25,23 +25,25 @@ $RUNTIME_NOAPPS = TRUE; //no apps, yet require_once('lib/base.php'); -OC_Util::addScript('setup'); - -$not_installed = !OC_Config::getValue('installed', false); -$install_called = (isset($_POST['install']) AND $_POST['install']=='true'); -// First step : check if the server is correctly configured for ownCloud : -$errors = OC_Util::checkServer(); -if(count($errors) > 0) { - OC_Template::printGuestPage("", "error", array("errors" => $errors)); -} - // Setup required : -elseif($not_installed OR $install_called) { +$not_installed = !OC_Config::getValue('installed', false); +if($not_installed) { + // Check for autosetup: + $autosetup_file = OC::$SERVERROOT."/config/autoconfig.php"; + if( file_exists( $autosetup_file )){ + error_log("Autoconfig file found, setting up owncloud..."); + include( $autosetup_file ); + $_POST['install'] = 'true'; + $_POST = array_merge ($_POST, $AUTOCONFIG); + unlink($autosetup_file); + } + OC_Util::addScript('setup'); require_once('setup.php'); exit(); } -if($_SERVER['REQUEST_METHOD']=='PROPFIND'){//handle webdav +// Handle WebDAV +if($_SERVER['REQUEST_METHOD']=='PROPFIND'){ header('location: '.OC_Helper::linkTo('files','webdav.php')); exit(); } @@ -50,101 +52,54 @@ if($_SERVER['REQUEST_METHOD']=='PROPFIND'){//handle webdav elseif(OC_User::isLoggedIn()) { if(isset($_GET["logout"]) and ($_GET["logout"])) { OC_User::logout(); - header("Location: ".$WEBROOT.'/'); + header("Location: ".OC::$WEBROOT.'/'); exit(); } else { - header("Location: ".$WEBROOT.'/'.OC_Appconfig::getValue("core", "defaultpage", "files/index.php")); - exit(); + OC_Util::redirectToDefaultPage(); } } -// Semeone set remember login when login -elseif(isset($_COOKIE["oc_remember_login"]) && $_COOKIE["oc_remember_login"]) { +// For all others cases, we display the guest page : +else { OC_App::loadApps(); - error_log("Trying to login from cookie"); - if(OC_User::login($_COOKIE["oc_username"], $_COOKIE["oc_password"])) { - header("Location: ". $WEBROOT.'/'.OC_Appconfig::getValue("core", "defaultpage", "files/index.php")); - if(!empty($_POST["remember_login"])){ - OC_User::setUsernameInCookie($_POST["user"], $_POST["password"]); - } - else { - OC_User::unsetUsernameInCookie(); - } - exit(); - } - else { - if(isset($_COOKIE["username"])){ - OC_Template::printGuestPage("", "login", array("error" => true, "username" => $_COOKIE["username"])); - }else{ - OC_Template::printGuestPage("", "login", array("error" => true)); - } - } -} + $error = false; -// Someone wants to log in : -elseif(isset($_POST["user"]) && isset($_POST['password'])) { - OC_App::loadApps(); - if(OC_User::login($_POST["user"], $_POST["password"])) { - header("Location: ".$WEBROOT.'/'.OC_Appconfig::getValue("core", "defaultpage", "files/index.php")); - if(!empty($_POST["remember_login"])){ - error_log("Setting remember login to cookie"); - OC_User::setUsernameInCookie($_POST["user"], $_POST["password"]); + // remember was checked after last login + if(isset($_COOKIE["oc_remember_login"]) && isset($_COOKIE["oc_token"]) && isset($_COOKIE["oc_username"]) && $_COOKIE["oc_remember_login"]) { + if(defined("DEBUG") && DEBUG) { + error_log("Trying to login from cookie"); } - else { - OC_User::unsetUsernameInCookie(); + // confirm credentials in cookie + if(isset($_COOKIE['oc_token']) && OC_User::userExists($_COOKIE['oc_username']) && + OC_Preferences::getValue($_COOKIE['oc_username'], "login", "token") == $_COOKIE['oc_token']) { + OC_User::setUserId($_COOKIE['oc_username']); + OC_Util::redirectToDefaultPage(); } - exit(); - } - else { - if(isset($_COOKIE["oc_username"])){ - OC_Template::printGuestPage("", "login", array("error" => true, "username" => $_COOKIE["oc_username"])); - }else{ - OC_Template::printGuestPage("", "login", array("error" => true)); + else { + OC_User::unsetMagicInCookie(); } } -} - -// Someone lost their password: -elseif(isset($_GET['lostpassword'])) { - OC_App::loadApps(); - if (isset($_POST['user'])) { - if (OC_User::userExists($_POST['user'])) { - $token = sha1($_POST['user']+uniqId()); - OC_Preferences::setValue($_POST['user'], "owncloud", "lostpassword", $token); - // TODO send email with link+token - OC_Template::printGuestPage("", "lostpassword", array("error" => false, "requested" => true)); + + // Someone wants to log in : + elseif(isset($_POST["user"]) && isset($_POST['password'])) { + if(OC_User::login($_POST["user"], $_POST["password"])) { + if(!empty($_POST["remember_login"])){ + if(defined("DEBUG") && DEBUG) { + error_log("Setting remember login to cookie"); + } + $token = md5($_POST["user"].time()); + OC_Preferences::setValue($_POST['user'], 'login', 'token', $token); + OC_User::setMagicInCookie($_POST["user"], $token); + } + else { + OC_User::unsetMagicInCookie(); + } + OC_Util::redirectToDefaultPage(); } else { - OC_Template::printGuestPage("", "lostpassword", array("error" => true, "requested" => false)); + $error = true; } - } else { - OC_Template::printGuestPage("", "lostpassword", array("error" => false, "requested" => false)); } -} -// Someone wants to reset their password: -elseif(isset($_GET['resetpassword']) && isset($_GET['token']) && isset($_GET['user']) && OC_Preferences::getValue($_GET['user'], "owncloud", "lostpassword") === $_GET['token']) { - OC_App::loadApps(); - if (isset($_POST['password'])) { - if (OC_User::setPassword($_GET['user'], $_POST['password'])) { - OC_Preferences::deleteKey($_GET['user'], "owncloud", "lostpassword"); - OC_Template::printGuestPage("", "resetpassword", array("success" => true)); - } else { - OC_Template::printGuestPage("", "resetpassword", array("success" => false)); - } - } else { - OC_Template::printGuestPage("", "resetpassword", array("success" => false)); - } + OC_Template::printGuestPage('', 'login', array('error' => $error, 'redirect' => isset($_REQUEST['redirect_url'])?$_REQUEST['redirect_url']:'' )); } - -// For all others cases, we display the guest page : -else { - OC_App::loadApps(); - if(isset($_COOKIE["username"])){ - OC_Template::printGuestPage("", "login", array("error" => false, "username" => $_COOKIE["username"])); - }else{ - OC_Template::printGuestPage("", "login", array("error" => false)); - } -} - -?> \ No newline at end of file diff --git a/l10n/bg_BG/calendar.po b/l10n/bg_BG/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..7369aa683584301aea3b15636cb6e39a367481a0 --- /dev/null +++ b/l10n/bg_BG/calendar.po @@ -0,0 +1,465 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Stefan Ilivanov <ilivanov@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Bulgarian (Bulgaria) (http://www.transifex.net/projects/p/owncloud/team/bg_BG/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bg_BG\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "Проблем Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñта" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "ЧаÑовата зона е Ñменена" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "Ðевалидна заÑвка" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "Календар" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "" + +#: lib/object.php:293 +msgid "Business" +msgstr "" + +#: lib/object.php:294 +msgid "Call" +msgstr "" + +#: lib/object.php:295 +msgid "Clients" +msgstr "" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "" + +#: lib/object.php:299 +msgid "Journey" +msgstr "" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "" + +#: lib/object.php:302 +msgid "Other" +msgstr "" + +#: lib/object.php:303 +msgid "Personal" +msgstr "" + +#: lib/object.php:304 +msgid "Projects" +msgstr "" + +#: lib/object.php:305 +msgid "Questions" +msgstr "" + +#: lib/object.php:306 +msgid "Work" +msgstr "" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "Ðе Ñе повтарÑ" + +#: lib/object.php:314 +msgid "Daily" +msgstr "Дневно" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "Седмично" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "Ð’Ñеки делничен ден" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "ДвуÑедмично" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "МеÑечно" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "Годишно" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "Ð’Ñички дни" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "ÐеделÑ" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "Понеделник" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "Вторник" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "СрÑда" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "Четвъртък" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "Петък" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Събота" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "Ðед." + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "Пон." + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "Ð’Ñ‚Ñ€." + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "СрÑ." + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "Чет." + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "Пет." + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "Съб." + +#: templates/calendar.php:34 +msgid "January" +msgstr "Януари" + +#: templates/calendar.php:34 +msgid "February" +msgstr "Февруари" + +#: templates/calendar.php:34 +msgid "March" +msgstr "Март" + +#: templates/calendar.php:34 +msgid "April" +msgstr "Ðприл" + +#: templates/calendar.php:34 +msgid "May" +msgstr "Май" + +#: templates/calendar.php:34 +msgid "June" +msgstr "Юни" + +#: templates/calendar.php:34 +msgid "July" +msgstr "Юли" + +#: templates/calendar.php:34 +msgid "August" +msgstr "ÐвгуÑÑ‚" + +#: templates/calendar.php:34 +msgid "September" +msgstr "Септември" + +#: templates/calendar.php:34 +msgid "October" +msgstr "Октомври" + +#: templates/calendar.php:34 +msgid "November" +msgstr "Ðоември" + +#: templates/calendar.php:34 +msgid "December" +msgstr "Декември" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "Ян." + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "Фв." + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "Март" + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "Ðпр." + +#: templates/calendar.php:35 +msgid "May." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "Юни" + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "Юли" + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "Ðвг." + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "Сеп." + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "Окт." + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "Ðое." + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "Дек." + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "Седмица" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Седмици" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "Ден" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "МеÑец" + +#: templates/calendar.php:53 +msgid "List" +msgstr "" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "ДнеÑ" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "Календари" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "ЧаÑ" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "Възникна проблем Ñ Ñ€Ð°Ð·Ð»Ð¸Ñтването на файла." + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "Изберете активен календар" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "ИзтеглÑне" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "ПромÑна" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "Промени календар" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Екранно име" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "Ðктивен" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "ОпиÑание" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "ЦвÑÑ‚ на календара" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "Продължи" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "ПромÑна на Ñъбитие" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "Заглавие" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "Ðаименование" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "ЛокациÑ" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "ЛокациÑ" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "КатегориÑ" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "Целодневно Ñъбитие" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "От" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "До" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "Повтори" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "ПриÑÑŠÑтващи" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "ОпиÑание" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "Затвори" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "Ðово Ñъбитие" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "ЧаÑова зона" + + diff --git a/l10n/bg_BG/contacts.po b/l10n/bg_BG/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..4b6ca8fc510d6606ecc55f37cde0aa1729fe87d0 --- /dev/null +++ b/l10n/bg_BG/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:10+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Bulgarian (Bulgaria) (http://www.transifex.net/projects/p/owncloud/team/bg_BG/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bg_BG\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/bg_BG/core.po b/l10n/bg_BG/core.po index 8a9375d4b6fb51a1cb4b798022818beca512fa3c..f23044c98784e0f0696fa272368ebeb2db1ab552 100644 --- a/l10n/bg_BG/core.po +++ b/l10n/bg_BG/core.po @@ -2,15 +2,17 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # -# Stefan Ilivanov <ilivanov@gmail.com>, 2011. +# Translators: +# <adn.adin@gmail.com>, 2011. # Jan-Christoph Borchardt <JanCBorchardt@fsfe.org>, 2011. +# Stefan Ilivanov <ilivanov@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" -"POT-Creation-Date: 2011-09-04 18:14+0200\n" -"PO-Revision-Date: 2011-09-04 16:14+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-06 19:20+0000\n" +"Last-Translator: adin <adn.adin@gmail.com>\n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.net/projects/p/owncloud/team/bg_BG/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,56 +22,56 @@ msgstr "" #: strings.php:5 msgid "Personal" -msgstr "" +msgstr "Лични" #: strings.php:6 msgid "Users" -msgstr "" +msgstr "Потребители" #: strings.php:7 msgid "Apps" -msgstr "" +msgstr "Програми" #: strings.php:8 msgid "Admin" -msgstr "" +msgstr "Ðдмин" #: strings.php:9 msgid "Help" -msgstr "" +msgstr "Помощ" #: templates/404.php:12 msgid "Cloud not found" -msgstr "обклакът не намерен" +msgstr "облакът не намерен" #: templates/installation.php:20 msgid "Create an <strong>admin account</strong>" -msgstr "" +msgstr "Създаване на <strong>админ профил</strong>" #: templates/installation.php:21 msgid "Username" -msgstr "" +msgstr "Потребител" #: templates/installation.php:22 msgid "Password" -msgstr "" +msgstr "Парола" #: templates/installation.php:27 msgid "Configure the database" -msgstr "" +msgstr "Конфигуриране на базата" #: templates/installation.php:32 templates/installation.php:43 #: templates/installation.php:53 msgid "will be used" -msgstr "" +msgstr "ще Ñе ползва" #: templates/installation.php:64 msgid "Database user" -msgstr "" +msgstr "Потребител за базата" #: templates/installation.php:65 msgid "Database password" -msgstr "" +msgstr "Парола за базата" #: templates/installation.php:66 msgid "Database name" @@ -81,7 +83,7 @@ msgstr "Разширено" #: templates/installation.php:75 msgid "Database host" -msgstr "" +msgstr "ХоÑÑ‚ за базата" #: templates/installation.php:76 msgid "Data folder" @@ -93,23 +95,23 @@ msgstr "Завършване на наÑтройките" #: templates/layout.guest.php:35 msgid "gives you freedom and control over your own data" -msgstr "" +msgstr "дава Ви Ñвобода и контрол на Вашите лични данни" #: templates/layout.user.php:34 msgid "Log out" -msgstr "" +msgstr "Изход" #: templates/layout.user.php:46 templates/layout.user.php:47 msgid "Settings" -msgstr "" +msgstr "ÐаÑтройки" #: templates/login.php:4 msgid "Lost your password?" -msgstr "" +msgstr "Забравена парола?" #: templates/login.php:9 templates/login.php:13 msgid "remember" -msgstr "" +msgstr "запомни" #: templates/logout.php:1 msgid "You are logged out." @@ -117,11 +119,11 @@ msgstr "Вие излÑзохте." #: templates/lostpassword.php:3 msgid "You will receive a link to reset your password via Email." -msgstr "" +msgstr "Ще получите връзка за да нулирате паролата Ñи." #: templates/lostpassword.php:5 msgid "Requested" -msgstr "" +msgstr "ЗаÑвено" #: templates/lostpassword.php:8 msgid "Login failed!" @@ -129,11 +131,11 @@ msgstr "Входа пропадна!" #: templates/lostpassword.php:10 msgid "Username or Email" -msgstr "" +msgstr "ПотребителÑко име или Email" #: templates/lostpassword.php:11 msgid "Request reset" -msgstr "" +msgstr "ЗаÑвка за нулиране" #: templates/part.pagenavi.php:3 msgid "prev" @@ -145,14 +147,14 @@ msgstr "Ñледващо" #: templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "" +msgstr "Вашата парола е нулирана" #: templates/resetpassword.php:6 msgid "New password" -msgstr "" +msgstr "Ðова парола" #: templates/resetpassword.php:7 msgid "Reset password" -msgstr "" +msgstr "Ðулиране на парола" diff --git a/l10n/bg_BG/files.po b/l10n/bg_BG/files.po index dbdf61722ba3f69b80234e003fddf85c0f14012f..475f6dc3fae3f2c980a0db35fb0bb3e85ba7fdd6 100644 --- a/l10n/bg_BG/files.po +++ b/l10n/bg_BG/files.po @@ -2,13 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: +# Stefan Ilivanov <ilivanov@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-08-13 12:41+0200\n" -"PO-Revision-Date: 2011-08-13 02:25+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.net/projects/p/owncloud/team/bg_BG/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -16,54 +18,82 @@ msgstr "" "Language: bg_BG\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: appinfo/app.php:7 -msgid "Files" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" msgstr "" -#: templates/admin.php:5 -msgid "Maximum upload size" +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" msgstr "" -#: templates/part.list.php:1 -msgid "Nothing in here. Upload something!" +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" msgstr "" -#: templates/index.php:9 -msgid "Upload" +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" msgstr "" -#: templates/index.php:16 -msgid "New Folder" +#: ajax/upload.php:28 +msgid "No file was uploaded" msgstr "" -#: templates/index.php:29 -msgid "Name" +#: ajax/upload.php:29 +msgid "Missing a temporary folder" msgstr "" +#: appinfo/app.php:7 +msgid "Files" +msgstr "Файлове" + +#: templates/admin.php:5 +msgid "Maximum upload size" +msgstr "МакÑ. размер за качване" + +#: templates/index.php:10 +msgid "Upload" +msgstr "Качване" + +#: templates/index.php:17 +msgid "New Folder" +msgstr "Ðова папка" + #: templates/index.php:31 +msgid "Nothing in here. Upload something!" +msgstr "ÐÑма нищо, качете нещо!" + +#: templates/index.php:39 +msgid "Name" +msgstr "Име" + +#: templates/index.php:41 msgid "Download" -msgstr "" +msgstr "ИзтеглÑне" -#: templates/index.php:35 +#: templates/index.php:45 msgid "Size" -msgstr "" +msgstr "Размер" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Modified" -msgstr "" +msgstr "Променено" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Delete" -msgstr "" +msgstr "Изтриване" -#: templates/index.php:44 +#: templates/index.php:54 msgid "Upload too large" -msgstr "" +msgstr "Файлът е прекалено голÑм" -#: templates/index.php:46 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "" +"Файловете които Ñе опитвате да качите Ñа по-големи от позволеното за " +"Ñървъра." diff --git a/l10n/bg_BG/media.po b/l10n/bg_BG/media.po index 3f35e23fb8b26dcd705282d38df9ee179b494abe..e8fa24bbe50b70a5504925a6b1b1e4c02e681f48 100644 --- a/l10n/bg_BG/media.po +++ b/l10n/bg_BG/media.po @@ -2,13 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: +# Stefan Ilivanov <ilivanov@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-08-20 05:08+0200\n" -"PO-Revision-Date: 2011-08-20 03:08+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-06 08:43+0000\n" +"Last-Translator: ep98 <ilivanov@gmail.com>\n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.net/projects/p/owncloud/team/bg_BG/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,50 +20,50 @@ msgstr "" #: appinfo/app.php:31 msgid "Music" -msgstr "" +msgstr "Музика" #: templates/music.php:3 msgid "Play" -msgstr "" +msgstr "ПуÑни" #: templates/music.php:4 templates/music.php:30 msgid "Pause" -msgstr "" +msgstr "Пауза" #: templates/music.php:5 msgid "Previous" -msgstr "" +msgstr "Предишна" #: templates/music.php:6 msgid "Next" -msgstr "" +msgstr "Следваща" #: templates/music.php:7 msgid "Mute" -msgstr "" +msgstr "Отнеми" #: templates/music.php:8 msgid "Unmute" -msgstr "" +msgstr "Върни" #: templates/music.php:28 msgid "Songs scanned" -msgstr "" +msgstr "Сканирани пеÑни" #: templates/music.php:29 msgid "Rescan Collection" -msgstr "" +msgstr "Повторно Ñканиране" #: templates/music.php:37 msgid "Artist" -msgstr "" +msgstr "ÐртиÑÑ‚" #: templates/music.php:38 msgid "Album" -msgstr "" +msgstr "Ðлбум" #: templates/music.php:39 msgid "Title" -msgstr "" +msgstr "Заглавие" diff --git a/l10n/bg_BG/settings.po b/l10n/bg_BG/settings.po index 7a36a21518aad71c05f3cab168d79ca1cf266e2b..9f23a84787f9067820061b50b15e00c6eae6b2da 100644 --- a/l10n/bg_BG/settings.po +++ b/l10n/bg_BG/settings.po @@ -2,14 +2,16 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: +# <adn.adin@gmail.com>, 2011. # Stefan Ilivanov <ilivanov@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-08-28 01:13+0200\n" -"PO-Revision-Date: 2011-08-27 23:13+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-06 19:21+0000\n" +"Last-Translator: adin <adn.adin@gmail.com>\n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.net/projects/p/owncloud/team/bg_BG/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,11 +21,11 @@ msgstr "" #: ajax/openid.php:13 ajax/setlanguage.php:13 msgid "Authentication error" -msgstr "Проблем Ñ Ð¸Ð½Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñта" +msgstr "Проблем Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñта" #: ajax/openid.php:21 msgid "OpenID Changed" -msgstr "" +msgstr "OpenID е Ñменено" #: ajax/openid.php:23 ajax/setlanguage.php:23 msgid "Invalid request" @@ -35,43 +37,43 @@ msgstr "Езика е Ñменен" #: templates/apps.php:8 msgid "Add your application" -msgstr "" +msgstr "Добавете Ваша програма" #: templates/apps.php:21 msgid "Select an App" -msgstr "" +msgstr "Изберете програма" #: templates/apps.php:23 msgid "-licensed" -msgstr "" +msgstr "-лицензирано" #: templates/apps.php:23 msgid "by" -msgstr "" +msgstr "от" #: templates/help.php:8 msgid "Ask a question" -msgstr "" +msgstr "Задайте въпроÑ" #: templates/help.php:17 msgid "Problems connecting to help database." -msgstr "" +msgstr "Проблеми при Ñвързване Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰Ð½Ð°Ñ‚Ð° база" #: templates/help.php:18 msgid "Go there manually." -msgstr "" +msgstr "Отидете ръчно." #: templates/help.php:26 msgid "Answer" -msgstr "" +msgstr "Отговор" #: templates/personal.php:8 msgid "You use" -msgstr "" +msgstr "Вие ползвате" #: templates/personal.php:8 msgid "of the available" -msgstr "" +msgstr "от наличните" #: templates/personal.php:13 msgid "Your password got changed" @@ -79,11 +81,11 @@ msgstr "Вашата парола е Ñменена" #: templates/personal.php:14 msgid "Unable to change your password" -msgstr "" +msgstr "Ðевъзможна промÑна на паролата" #: templates/personal.php:15 msgid "Current password" -msgstr "" +msgstr "Текуща парола" #: templates/personal.php:16 msgid "New password" @@ -91,42 +93,42 @@ msgstr "Ðова парола" #: templates/personal.php:17 msgid "show" -msgstr "" +msgstr "показва" #: templates/personal.php:18 msgid "Change password" -msgstr "" +msgstr "ПромÑна на парола" -#: templates/personal.php:24 +#: templates/personal.php:24 templates/personal.php:25 msgid "Language" msgstr "Език" #: templates/personal.php:30 msgid "Help translating" -msgstr "" +msgstr "Помогнете Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð°" -#: templates/personal.php:36 +#: templates/personal.php:37 msgid "use this address to connect to your ownCloud in your file manager" -msgstr "" +msgstr "ползвай този Ð°Ð´Ñ€ÐµÑ Ð·Ð° връзка Ñ Ð’Ð°ÑˆÐ¸Ñ ownCloud във Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð¼ÐµÐ½Ð¸Ð´Ð¶ÑŠÑ€" #: templates/users.php:16 msgid "Name" -msgstr "" +msgstr "Име" #: templates/users.php:17 msgid "Password" -msgstr "" +msgstr "Парола" #: templates/users.php:18 templates/users.php:36 msgid "Groups" -msgstr "" +msgstr "Групи" #: templates/users.php:24 msgid "Create" -msgstr "" +msgstr "Ðово" #: templates/users.php:48 msgid "Delete" -msgstr "" +msgstr "Изтриване" diff --git a/l10n/ca/calendar.po b/l10n/ca/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..f535d8d1170c015396c223ce553bf1a61aa74235 --- /dev/null +++ b/l10n/ca/calendar.po @@ -0,0 +1,465 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# <rcalvoi@yahoo.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Catalan (http://www.transifex.net/projects/p/owncloud/team/ca/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "Error d'autenticació" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "La zona horà ria ha canviat" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "Sol.licitud no và lida" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "Calendari" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "" + +#: lib/object.php:293 +msgid "Business" +msgstr "" + +#: lib/object.php:294 +msgid "Call" +msgstr "" + +#: lib/object.php:295 +msgid "Clients" +msgstr "" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "" + +#: lib/object.php:299 +msgid "Journey" +msgstr "" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "" + +#: lib/object.php:302 +msgid "Other" +msgstr "" + +#: lib/object.php:303 +msgid "Personal" +msgstr "" + +#: lib/object.php:304 +msgid "Projects" +msgstr "" + +#: lib/object.php:305 +msgid "Questions" +msgstr "" + +#: lib/object.php:306 +msgid "Work" +msgstr "" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "No es repeteix" + +#: lib/object.php:314 +msgid "Daily" +msgstr "Diari" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "Mensual" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "Cada setmana" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "Bisetmanalment" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "Mensualment" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "Cada any" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "Tot el dia" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "Diumenge" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "Dilluns" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "Dimarts" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "Dimecres" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "Dijous" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "Divendres" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Dissabte" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "dg." + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "dl." + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "dm." + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "dc." + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "dj." + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "dv." + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "ds." + +#: templates/calendar.php:34 +msgid "January" +msgstr "Gener" + +#: templates/calendar.php:34 +msgid "February" +msgstr "Febrer" + +#: templates/calendar.php:34 +msgid "March" +msgstr "Març" + +#: templates/calendar.php:34 +msgid "April" +msgstr "Abril" + +#: templates/calendar.php:34 +msgid "May" +msgstr "Maig" + +#: templates/calendar.php:34 +msgid "June" +msgstr "Juny" + +#: templates/calendar.php:34 +msgid "July" +msgstr "Juliol" + +#: templates/calendar.php:34 +msgid "August" +msgstr "Agost" + +#: templates/calendar.php:34 +msgid "September" +msgstr "Setembre" + +#: templates/calendar.php:34 +msgid "October" +msgstr "Octubre" + +#: templates/calendar.php:34 +msgid "November" +msgstr "Novembre" + +#: templates/calendar.php:34 +msgid "December" +msgstr "Desembre" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "gen." + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "febr." + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "març" + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "abr." + +#: templates/calendar.php:35 +msgid "May." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "juny" + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "jul." + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "ag." + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "set." + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "oct." + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "nov." + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "des." + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "Setmana" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Setmanes" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "Dia" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "Mes" + +#: templates/calendar.php:53 +msgid "List" +msgstr "" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "Avui" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "Calendaris" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "Hora" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "S'ha produït un error en analitzar el fitxer." + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "Seleccioneu calendaris actius" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "Baixa" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "Edita" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "Edita el calendari" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Mostra el nom" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "Actiu" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "Descripció" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "Color del calendari" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "Tramet" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "Edició d'un esdeveniment" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "TÃtol" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "TÃtol de l'esdeveniment" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "Ubicació" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "Ubicació de l'esdeveniment" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "Categoria" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "Esdeveniment de tot el dia" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "Des de" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "Fins a" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "Repeteix" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "Assistents" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "Descripció de l'esdeveniment" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "Tanca" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "Crea un nou esdeveniment" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "Zona horà ria" + + diff --git a/l10n/ca/contacts.po b/l10n/ca/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..a9a23483bc38906c67ce1c283592f10306e40bf1 --- /dev/null +++ b/l10n/ca/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:11+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Catalan (http://www.transifex.net/projects/p/owncloud/team/ca/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/ca/core.po b/l10n/ca/core.po index d4fd3c4e41889c5f211aa54af464a79bbf09417a..cfbd4678f9f62ad988bf1b2f88b191330d705ca4 100644 --- a/l10n/ca/core.po +++ b/l10n/ca/core.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # <rcalvoi@yahoo.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" -"POT-Creation-Date: 2011-09-04 18:14+0200\n" -"PO-Revision-Date: 2011-09-04 16:14+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-05 13:54+0000\n" +"Last-Translator: rogerc <rcalvoi@yahoo.com>\n" "Language-Team: Catalan (http://www.transifex.net/projects/p/owncloud/team/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -144,7 +145,7 @@ msgstr "següent" #: templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "" +msgstr "La vostra contrasenya s'ha restablert" #: templates/resetpassword.php:6 msgid "New password" diff --git a/l10n/ca/files.po b/l10n/ca/files.po index 9551131e02a4d4f6fc6132c44ca1f41f58d75cd5..faf3ca5063e2fe200fd9fb0b7f686cb886496d5f 100644 --- a/l10n/ca/files.po +++ b/l10n/ca/files.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # <rcalvoi@yahoo.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-08-13 12:41+0200\n" -"PO-Revision-Date: 2011-08-16 18:04+0000\n" -"Last-Translator: rogerc <rcalvoi@yahoo.com>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" "Language-Team: Catalan (http://www.transifex.net/projects/p/owncloud/team/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,6 +18,32 @@ msgstr "" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + #: appinfo/app.php:7 msgid "Files" msgstr "Fitxers" @@ -25,43 +52,43 @@ msgstr "Fitxers" msgid "Maximum upload size" msgstr "Mida mà xima de pujada" -#: templates/part.list.php:1 -msgid "Nothing in here. Upload something!" -msgstr "Res per aquÃ. Pugeu alguna cosa!" - -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" msgstr "Puja" -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" msgstr "Carpeta nova" -#: templates/index.php:29 +#: templates/index.php:31 +msgid "Nothing in here. Upload something!" +msgstr "Res per aquÃ. Pugeu alguna cosa!" + +#: templates/index.php:39 msgid "Name" msgstr "Nom" -#: templates/index.php:31 +#: templates/index.php:41 msgid "Download" msgstr "Descarrega" -#: templates/index.php:35 +#: templates/index.php:45 msgid "Size" msgstr "Mida" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Modified" msgstr "Modificat" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Delete" msgstr "Esborra" -#: templates/index.php:44 +#: templates/index.php:54 msgid "Upload too large" msgstr "La pujada és massa gran" -#: templates/index.php:46 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." diff --git a/l10n/cs_CZ/calendar.po b/l10n/cs_CZ/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..071b0bde7117c1e74cc20e45c65a63a803aeea24 --- /dev/null +++ b/l10n/cs_CZ/calendar.po @@ -0,0 +1,464 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Czech (Czech Republic) (http://www.transifex.net/projects/p/owncloud/team/cs_CZ/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs_CZ\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "" + +#: lib/object.php:293 +msgid "Business" +msgstr "" + +#: lib/object.php:294 +msgid "Call" +msgstr "" + +#: lib/object.php:295 +msgid "Clients" +msgstr "" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "" + +#: lib/object.php:299 +msgid "Journey" +msgstr "" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "" + +#: lib/object.php:302 +msgid "Other" +msgstr "" + +#: lib/object.php:303 +msgid "Personal" +msgstr "" + +#: lib/object.php:304 +msgid "Projects" +msgstr "" + +#: lib/object.php:305 +msgid "Questions" +msgstr "" + +#: lib/object.php:306 +msgid "Work" +msgstr "" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "" + +#: lib/object.php:314 +msgid "Daily" +msgstr "" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "" + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "" + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "" + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "" + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "" + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "" + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "" + +#: templates/calendar.php:34 +msgid "January" +msgstr "" + +#: templates/calendar.php:34 +msgid "February" +msgstr "" + +#: templates/calendar.php:34 +msgid "March" +msgstr "" + +#: templates/calendar.php:34 +msgid "April" +msgstr "" + +#: templates/calendar.php:34 +msgid "May" +msgstr "" + +#: templates/calendar.php:34 +msgid "June" +msgstr "" + +#: templates/calendar.php:34 +msgid "July" +msgstr "" + +#: templates/calendar.php:34 +msgid "August" +msgstr "" + +#: templates/calendar.php:34 +msgid "September" +msgstr "" + +#: templates/calendar.php:34 +msgid "October" +msgstr "" + +#: templates/calendar.php:34 +msgid "November" +msgstr "" + +#: templates/calendar.php:34 +msgid "December" +msgstr "" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "" + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "" + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "" + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "" + +#: templates/calendar.php:35 +msgid "May." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "" + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "" + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "" + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "" + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "" + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "" + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "" + +#: templates/calendar.php:53 +msgid "List" +msgstr "" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "" + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "" + + diff --git a/l10n/cs_CZ/contacts.po b/l10n/cs_CZ/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..76af9f7e5caaba5623e1f96a5857bfb6a8ee8bdc --- /dev/null +++ b/l10n/cs_CZ/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:11+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Czech (Czech Republic) (http://www.transifex.net/projects/p/owncloud/team/cs_CZ/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs_CZ\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/cs_CZ/files.po b/l10n/cs_CZ/files.po index 1969c666ba26ee96a90a1a003dc22d2504cca24a..6dc49c6a5d584bffecfd9f47f1505b49aa3bf6f6 100644 --- a/l10n/cs_CZ/files.po +++ b/l10n/cs_CZ/files.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # Martin <fireball@atlas.cz>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-09-03 14:50+0200\n" -"PO-Revision-Date: 2011-09-01 14:06+0000\n" -"Last-Translator: Fireball <fireball@atlas.cz>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" "Language-Team: Czech (Czech Republic) (http://www.transifex.net/projects/p/owncloud/team/cs_CZ/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,6 +18,32 @@ msgstr "" "Language: cs_CZ\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + #: appinfo/app.php:7 msgid "Files" msgstr "Soubory" @@ -25,43 +52,43 @@ msgstr "Soubory" msgid "Maximum upload size" msgstr "Maximálnà velikost ukládaných souborů" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" msgstr "Uložit" -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" msgstr "Nový adresář" -#: templates/index.php:24 +#: templates/index.php:31 msgid "Nothing in here. Upload something!" msgstr "Žádný obsah. Uložte si nÄ›co!" -#: templates/index.php:31 +#: templates/index.php:39 msgid "Name" msgstr "Název" -#: templates/index.php:33 +#: templates/index.php:41 msgid "Download" msgstr "Stáhnout" -#: templates/index.php:37 +#: templates/index.php:45 msgid "Size" msgstr "Velikost" -#: templates/index.php:38 +#: templates/index.php:46 msgid "Modified" msgstr "ZmÄ›nÄ›no" -#: templates/index.php:38 +#: templates/index.php:46 msgid "Delete" msgstr "Vymazat" -#: templates/index.php:46 +#: templates/index.php:54 msgid "Upload too large" msgstr "PÅ™ÃliÅ¡ velký soubor" -#: templates/index.php:48 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." diff --git a/l10n/da/calendar.po b/l10n/da/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..f78c8d1a810f959dfcc9c931e5137fc29191b7d9 --- /dev/null +++ b/l10n/da/calendar.po @@ -0,0 +1,466 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# <mikkelbjerglarsen@gmail.com>, 2011. +# Pascal d'Hermilly <pascal@dhermilly.dk>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Danish (http://www.transifex.net/projects/p/owncloud/team/da/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: da\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "Godkendelsesfejl" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "Forkert kalender" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "Tidszone ændret" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "Ugyldig forespørgsel" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "Kalender" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "Fødselsdag" + +#: lib/object.php:293 +msgid "Business" +msgstr "Forretning" + +#: lib/object.php:294 +msgid "Call" +msgstr "Ring" + +#: lib/object.php:295 +msgid "Clients" +msgstr "Kunder" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "Helligdage" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "Ideér" + +#: lib/object.php:299 +msgid "Journey" +msgstr "Rejse" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "Jubilæum" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "Møde" + +#: lib/object.php:302 +msgid "Other" +msgstr "Andet" + +#: lib/object.php:303 +msgid "Personal" +msgstr "Privat" + +#: lib/object.php:304 +msgid "Projects" +msgstr "Projekter" + +#: lib/object.php:305 +msgid "Questions" +msgstr "SpørgsmÃ¥l" + +#: lib/object.php:306 +msgid "Work" +msgstr "Arbejde" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "Gentages ikke" + +#: lib/object.php:314 +msgid "Daily" +msgstr "Daglig" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "Ugentlig" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "Alle hverdage" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "Bi-Ugentligt" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "MÃ¥nedlige" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "Ã…rlig" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "Hele dagen" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "Søndag" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "Mandag" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "Tirsdag" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "Onsdag" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "Torsdag" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "Fredag" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Lørdag" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "Søn." + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "Man." + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "Tir." + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "Ons." + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "Tor." + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "Fre." + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "Lør." + +#: templates/calendar.php:34 +msgid "January" +msgstr "Januar" + +#: templates/calendar.php:34 +msgid "February" +msgstr "Februar" + +#: templates/calendar.php:34 +msgid "March" +msgstr "Marts" + +#: templates/calendar.php:34 +msgid "April" +msgstr "April" + +#: templates/calendar.php:34 +msgid "May" +msgstr "Maj" + +#: templates/calendar.php:34 +msgid "June" +msgstr "Juni" + +#: templates/calendar.php:34 +msgid "July" +msgstr "Juli" + +#: templates/calendar.php:34 +msgid "August" +msgstr "August" + +#: templates/calendar.php:34 +msgid "September" +msgstr "September" + +#: templates/calendar.php:34 +msgid "October" +msgstr "Oktober" + +#: templates/calendar.php:34 +msgid "November" +msgstr "November" + +#: templates/calendar.php:34 +msgid "December" +msgstr "December" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "Jan." + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "Feb." + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "Mar." + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "Apr." + +#: templates/calendar.php:35 +msgid "May." +msgstr "Maj." + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "Jun." + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "Jul." + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "Aug." + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "Sep." + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "Oct." + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "Nov." + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "Dec." + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "Uge" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Uger" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "Mere før {startdate}" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "Mere efter {enddate}" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "Dag" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "MÃ¥ned" + +#: templates/calendar.php:53 +msgid "List" +msgstr "Liste" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "I dag" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "Kalendere" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "Tid" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "Der opstod en fejl under gennemlæsning af filen." + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "Vælg aktiv kalendere" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "Ny Kalender" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "CalDav Link" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "Hent" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "Rediger" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "Ny kalender" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "Rediger kalender" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Visningsnavn" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "Aktiv" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "Beskrivelse" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "Kalender farve" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "Gem" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "Send" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "Annullér" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "Redigér en begivenhed" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "Titel" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "Titel pÃ¥ begivenheden" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "Sted" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "Placering af begivenheden" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "Kategori" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "Vælg kategori" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "Heldagsarrangement" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "Fra" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "Til" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "Gentag" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "Deltagere" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "Beskrivelse af begivenheden" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "Luk" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "Opret en ny begivenhed" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "Tidszone" + + diff --git a/l10n/da/contacts.po b/l10n/da/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..c65bf62822a8cf4c8841992f3741ac066e5b21bd --- /dev/null +++ b/l10n/da/contacts.po @@ -0,0 +1,181 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Pascal d'Hermilly <pascal@dhermilly.dk>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 20:41+0000\n" +"Last-Translator: pascal_a <pascal@dhermilly.dk>\n" +"Language-Team: Danish (http://www.transifex.net/projects/p/owncloud/team/da/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: da\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "Du skal logge ind." + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "Dette er ikke din adressebog." + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "Kontakt kunne ikke findes." + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "Dette er ikke din kontakt." + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "Kunne ikke læse vCard." + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "Informationen om vCard er forkert. Genindlæs siden." + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "Dette kort er ikke RFC-kompatibelt." + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "Dette kort indeholder ikke et foto." + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "Tilføj kontakt" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "Gruppe" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "Navn" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "Ny Kontakt" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "Adresse" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "Telefon" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "Email" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "Organisation" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "Arbejde" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "Hjem" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "Postboks" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "Udvidet" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "Vej" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "By" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "Region" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "Postnummer" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "Land" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "Mobil" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "SMS" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "Telefonsvarer" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "Fax" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "Video" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "Personsøger" + +#: templates/part.details.php:31 +msgid "Delete" +msgstr "Slet" + +#: templates/part.details.php:32 +msgid "Add Property" +msgstr "Tilføj Egenskab" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "Fødselsdag" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "Telefon" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "Redigér" + + diff --git a/l10n/da/core.po b/l10n/da/core.po index 18abc6b98f7da0fc96c03f12d45520db91641a94..90f79622ab26d0733396c4f0950d565f69b253f2 100644 --- a/l10n/da/core.po +++ b/l10n/da/core.po @@ -2,14 +2,16 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: +# <mikkelbjerglarsen@gmail.com>, 2011. # Pascal d'Hermilly <pascal@dhermilly.dk>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" -"POT-Creation-Date: 2011-09-04 18:14+0200\n" -"PO-Revision-Date: 2011-09-04 16:14+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-14 07:41+0000\n" +"Last-Translator: mikkel_ilu <mikkelbjerglarsen@gmail.com>\n" "Language-Team: Danish (http://www.transifex.net/projects/p/owncloud/team/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -80,7 +82,7 @@ msgstr "Avanceret" #: templates/installation.php:75 msgid "Database host" -msgstr "" +msgstr "Database host" #: templates/installation.php:76 msgid "Data folder" @@ -92,7 +94,7 @@ msgstr "Afslut installation" #: templates/layout.guest.php:35 msgid "gives you freedom and control over your own data" -msgstr "" +msgstr "giver dig frihed og kontrol over dine egne data" #: templates/layout.user.php:34 msgid "Log out" @@ -104,7 +106,7 @@ msgstr "Indstillinger" #: templates/login.php:4 msgid "Lost your password?" -msgstr "" +msgstr "Mistet dit kodeord?" #: templates/login.php:9 templates/login.php:13 msgid "remember" @@ -116,11 +118,11 @@ msgstr "Du er nu logget ud" #: templates/lostpassword.php:3 msgid "You will receive a link to reset your password via Email." -msgstr "" +msgstr "Du vil modtage et link til at nulstille din adgangskode via e-mail." #: templates/lostpassword.php:5 msgid "Requested" -msgstr "" +msgstr "Anmodet" #: templates/lostpassword.php:8 msgid "Login failed!" @@ -128,11 +130,11 @@ msgstr "Login mislykkedes!" #: templates/lostpassword.php:10 msgid "Username or Email" -msgstr "" +msgstr "Brugernavn eller E-mail" #: templates/lostpassword.php:11 msgid "Request reset" -msgstr "" +msgstr "Anmod om nulstilling" #: templates/part.pagenavi.php:3 msgid "prev" @@ -144,14 +146,14 @@ msgstr "næste" #: templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "" +msgstr "Din adgangskode blev nulstillet" #: templates/resetpassword.php:6 msgid "New password" -msgstr "" +msgstr "Ny adgangskode" #: templates/resetpassword.php:7 msgid "Reset password" -msgstr "" +msgstr "Nulstil adgangskode" diff --git a/l10n/da/files.po b/l10n/da/files.po index e011eb0eb2a8a1d2c076cacc2bb3350b4a0acf95..ac9da46eefa7e055bdc0036079d83d50b142a008 100644 --- a/l10n/da/files.po +++ b/l10n/da/files.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # Pascal d'Hermilly <pascal@dhermilly.dk>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-08-13 12:41+0200\n" -"PO-Revision-Date: 2011-08-17 17:24+0000\n" -"Last-Translator: pascal_a <pascal@dhermilly.dk>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" "Language-Team: Danish (http://www.transifex.net/projects/p/owncloud/team/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,6 +18,32 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + #: appinfo/app.php:7 msgid "Files" msgstr "Filer" @@ -25,43 +52,43 @@ msgstr "Filer" msgid "Maximum upload size" msgstr "Maksimal upload-størrelse" -#: templates/part.list.php:1 -msgid "Nothing in here. Upload something!" -msgstr "Her er tomt. Upload noget!" - -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" msgstr "Upload" -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" msgstr "Ny Mappe" -#: templates/index.php:29 +#: templates/index.php:31 +msgid "Nothing in here. Upload something!" +msgstr "Her er tomt. Upload noget!" + +#: templates/index.php:39 msgid "Name" msgstr "Navn" -#: templates/index.php:31 +#: templates/index.php:41 msgid "Download" msgstr "Download" -#: templates/index.php:35 +#: templates/index.php:45 msgid "Size" msgstr "Størrelse" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Modified" msgstr "Ændret" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Delete" msgstr "Slet" -#: templates/index.php:44 +#: templates/index.php:54 msgid "Upload too large" msgstr "Upload for stor" -#: templates/index.php:46 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." diff --git a/l10n/de/calendar.po b/l10n/de/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..a75ca864a1b92f7dd93e663ca2d8e29af234c9bf --- /dev/null +++ b/l10n/de/calendar.po @@ -0,0 +1,466 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jan-Christoph Borchardt <JanCBorchardt@fsfe.org>, 2011. +# Jan-Christoph Borchardt <jan@unhosted.org>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: German (http://www.transifex.net/projects/p/owncloud/team/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "Anmeldefehler" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "Falscher Kalender" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "Zeitzone geändert" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "Anfragefehler" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "Kalender" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "Geburtstag" + +#: lib/object.php:293 +msgid "Business" +msgstr "Geschäftlich" + +#: lib/object.php:294 +msgid "Call" +msgstr "Anruf" + +#: lib/object.php:295 +msgid "Clients" +msgstr "Kunden" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "Lieferant" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "Urlaub" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "Ideen" + +#: lib/object.php:299 +msgid "Journey" +msgstr "Reise" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "Jubiläum" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "Treffen" + +#: lib/object.php:302 +msgid "Other" +msgstr "Anderes" + +#: lib/object.php:303 +msgid "Personal" +msgstr "Persönlich" + +#: lib/object.php:304 +msgid "Projects" +msgstr "Projekte" + +#: lib/object.php:305 +msgid "Questions" +msgstr "Fragen" + +#: lib/object.php:306 +msgid "Work" +msgstr "Arbeit" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "einmalig" + +#: lib/object.php:314 +msgid "Daily" +msgstr "täglich" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "wöchentlich" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "jeden Wochentag" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "jede zweite Woche" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "monatlich" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "jährlich" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "Kein Feld" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "Ganztags" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "Sonntag" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "Montag" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "Dienstag" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "Mittwoch" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "Donnerstag" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "Freitag" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Samstag" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "Son." + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "Mon." + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "Die." + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "Mit." + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "Don." + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "Fre." + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "Sam." + +#: templates/calendar.php:34 +msgid "January" +msgstr "Januar" + +#: templates/calendar.php:34 +msgid "February" +msgstr "Februar" + +#: templates/calendar.php:34 +msgid "March" +msgstr "März" + +#: templates/calendar.php:34 +msgid "April" +msgstr "April" + +#: templates/calendar.php:34 +msgid "May" +msgstr "Mai" + +#: templates/calendar.php:34 +msgid "June" +msgstr "Juni" + +#: templates/calendar.php:34 +msgid "July" +msgstr "Juli" + +#: templates/calendar.php:34 +msgid "August" +msgstr "August" + +#: templates/calendar.php:34 +msgid "September" +msgstr "September" + +#: templates/calendar.php:34 +msgid "October" +msgstr "Oktober" + +#: templates/calendar.php:34 +msgid "November" +msgstr "November" + +#: templates/calendar.php:34 +msgid "December" +msgstr "Dezember" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "Jan." + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "Feb." + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "Mär." + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "Apr." + +#: templates/calendar.php:35 +msgid "May." +msgstr "Mai" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "Jun." + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "Jul." + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "Aug." + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "Sep." + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "Okt." + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "Nov." + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "Dez." + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "Woche" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Wochen" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "Mehr vor {startdate}" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "Mehr nach {enddate}" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "Tag" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "Monat" + +#: templates/calendar.php:53 +msgid "List" +msgstr "Liste" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "Heute" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "Kalender" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "Zeit" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "Fehler beim Einlesen der Datei." + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "Aktive Kalender wählen" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "Neuer Kalender" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "CalDAV-Link" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "Herunterladen" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "Bearbeiten" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "Neuer Kalender" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "Kalender bearbeiten" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Anzeigename" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "Aktiv" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "Beschreibung" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "Kalenderfarbe" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "Speichern" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "Bestätigen" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "Abbrechen" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "Ereignis bearbeiten" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "Titel" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "Name" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "Ort" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "Ort" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "Kategorie" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "Kategorie auswählen" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "Ganztägiges Ereignis" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "von" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "bis" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "wiederholen" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "Teilnehmer" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "Beschreibung" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "Schließen" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "Neues Ereignis" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "Zeitzone" + + diff --git a/l10n/de/contacts.po b/l10n/de/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..75f737b01357a31f1cac32bbf726a7f2523c72be --- /dev/null +++ b/l10n/de/contacts.po @@ -0,0 +1,181 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Jan-Christoph Borchardt <JanCBorchardt@fsfe.org>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:11+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: German (http://www.transifex.net/projects/p/owncloud/team/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "Mobil" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "Text" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "Fax" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "Video" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "Pager" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "Geburtstag" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "Bearbeiten" + + diff --git a/l10n/de/core.po b/l10n/de/core.po index 797a2370437143a859b48ab1d319b6438f11765c..893b8acc4a77d57c179e51e0bfff0c6a4d4c3c68 100644 --- a/l10n/de/core.po +++ b/l10n/de/core.po @@ -2,15 +2,17 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: +# <alex.hotz@gmail.com>, 2011. # <georg.stefan.germany@googlemail.com>, 2011. # Jan-Christoph Borchardt <JanCBorchardt@fsfe.org>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" -"POT-Creation-Date: 2011-09-04 18:14+0200\n" -"PO-Revision-Date: 2011-09-04 16:14+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-07 22:59+0000\n" +"Last-Translator: infinity8 <alex.hotz@gmail.com>\n" "Language-Team: German (http://www.transifex.net/projects/p/owncloud/team/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -117,7 +119,8 @@ msgstr "Abgemeldet" #: templates/lostpassword.php:3 msgid "You will receive a link to reset your password via Email." -msgstr "Du wirst eine Email erhalten." +msgstr "" +"Du wirst per Email einen Link zum Zurücksetzen deines Passworts erhalten." #: templates/lostpassword.php:5 msgid "Requested" @@ -145,7 +148,7 @@ msgstr "Weiter" #: templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "" +msgstr "Dein Passwort wurde zurückgesetzt." #: templates/resetpassword.php:6 msgid "New password" diff --git a/l10n/de/files.po b/l10n/de/files.po index 870b38d767a72aab4cfbfd8f46f418bbe083003f..b0d31fb286cdaafc5a15575f25c5c6ce062318dd 100644 --- a/l10n/de/files.po +++ b/l10n/de/files.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # Jan-Christoph Borchardt <JanCBorchardt@fsfe.org>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-08-13 05:10+0200\n" -"PO-Revision-Date: 2011-08-13 02:38+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" "Language-Team: German (http://www.transifex.net/projects/p/owncloud/team/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,6 +18,32 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + #: appinfo/app.php:7 msgid "Files" msgstr "Dateien" @@ -25,43 +52,43 @@ msgstr "Dateien" msgid "Maximum upload size" msgstr "Maximale Größe" -#: templates/part.list.php:1 -msgid "Nothing in here. Upload something!" -msgstr "Alles leer. Lad’ was hoch!" - -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" msgstr "Hochladen" -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" msgstr "Neuer Ordner" -#: templates/index.php:29 +#: templates/index.php:31 +msgid "Nothing in here. Upload something!" +msgstr "Alles leer. Lad’ was hoch!" + +#: templates/index.php:39 msgid "Name" msgstr "Name" -#: templates/index.php:31 +#: templates/index.php:41 msgid "Download" msgstr "Herunterladen" -#: templates/index.php:35 +#: templates/index.php:45 msgid "Size" msgstr "Größe" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Modified" msgstr "Bearbeitet" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Delete" msgstr "Löschen" -#: templates/index.php:44 +#: templates/index.php:54 msgid "Upload too large" msgstr "Upload zu groß" -#: templates/index.php:46 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." diff --git a/l10n/el/calendar.po b/l10n/el/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..15e4e959f34f88fcc718e6959efc1fa819923b2f --- /dev/null +++ b/l10n/el/calendar.po @@ -0,0 +1,465 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Petros Kyladitis <petros.kyladitis@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Greek (http://www.transifex.net/projects/p/owncloud/team/el/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: el\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "Σφάλμα ταυτοποίησης" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "Λάθος ημεÏολόγιο" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "Η ζώνη ÏŽÏας άλλαξε" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "Μη ÎγκυÏο αίτημα" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "ΗμεÏολόγιο" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "ΓενÎθλια" + +#: lib/object.php:293 +msgid "Business" +msgstr "ΕπιχείÏηση" + +#: lib/object.php:294 +msgid "Call" +msgstr "Κλήση" + +#: lib/object.php:295 +msgid "Clients" +msgstr "Πελάτες" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "ΔιακοπÎÏ‚" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "ΙδÎες" + +#: lib/object.php:299 +msgid "Journey" +msgstr "Ταξίδι" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "" + +#: lib/object.php:302 +msgid "Other" +msgstr "Άλλο" + +#: lib/object.php:303 +msgid "Personal" +msgstr "Î Ïοσωπικό" + +#: lib/object.php:304 +msgid "Projects" +msgstr "ΈÏγα" + +#: lib/object.php:305 +msgid "Questions" +msgstr "ΕÏωτήσεις" + +#: lib/object.php:306 +msgid "Work" +msgstr "ΕÏγασία" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "Μη επαναλαμβανόμενο" + +#: lib/object.php:314 +msgid "Daily" +msgstr "ΚαθημεÏινά" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "Εβδομαδιαία" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "Κάθε μÎÏα" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "ΔÏο φοÏÎÏ‚ την εβδομάδα" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "Μηνιαία" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "Ετήσια" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "Δεν είναι μια σειÏά" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "ΟλοήμεÏο" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "ΚυÏιακή" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "ΔευτÎÏα" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "ΤÏίτη" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "ΤετάÏτη" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "Î Îμπτη" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "ΠαÏασκευή" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Σάββατο" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "ΚυÏ." + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "Δευτ." + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "ΤÏ." + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "Τετ." + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "Î Îμ." + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "ΠαÏ." + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "Σάβ." + +#: templates/calendar.php:34 +msgid "January" +msgstr "ΙανουάÏιος" + +#: templates/calendar.php:34 +msgid "February" +msgstr "ΦεβÏουάÏιος" + +#: templates/calendar.php:34 +msgid "March" +msgstr "ΜάÏτιος" + +#: templates/calendar.php:34 +msgid "April" +msgstr "ΑπÏίλιος" + +#: templates/calendar.php:34 +msgid "May" +msgstr "Μάιος" + +#: templates/calendar.php:34 +msgid "June" +msgstr "ΙοÏνιος" + +#: templates/calendar.php:34 +msgid "July" +msgstr "ΙοÏλιος" + +#: templates/calendar.php:34 +msgid "August" +msgstr "ΑÏγουστος" + +#: templates/calendar.php:34 +msgid "September" +msgstr "ΣεπτÎμβÏιος" + +#: templates/calendar.php:34 +msgid "October" +msgstr "ΟκτώβÏιος" + +#: templates/calendar.php:34 +msgid "November" +msgstr "ÎοÎμβÏιος" + +#: templates/calendar.php:34 +msgid "December" +msgstr "ΔεκÎμβÏιος" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "Ιαν." + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "Φεβ." + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "ΜαÏ." + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "ΑπÏ." + +#: templates/calendar.php:35 +msgid "May." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "ΙοÏν." + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "ΙοÏλ." + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "ΑÏγ." + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "Σεπ." + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "Οκτ." + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "ÎοÎ." + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "Δεκ." + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "Εβδομάδα" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Εβδομάδες" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "ΗμÎÏα" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "Μήνας" + +#: templates/calendar.php:53 +msgid "List" +msgstr "Λίστα" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "ΣήμεÏα" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "ΗμεÏολόγια" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "ÎÏα" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "ΥπήÏχε μια αποτυχία, κατά την ανάλυση του αÏχείου." + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "ΕπιλÎξτε τα ενεÏγά ημεÏολόγια" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "ÎÎα ΗμεÏολόγιο" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "Λήψη" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "ΕπεξεÏγασία" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "ÎÎο ημεÏολόγιο" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "ΕπεξεÏγασία ημεÏολογίου" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Î Ïοβολή ονόματος" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "ΕνεÏγό" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "ΠεÏιγÏαφή" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "ΧÏώμα ημεÏολογίου" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "Υποβολή" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "ΑκÏÏωση" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "ΕπεξεÏγασία ενός γεγονότος" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "Τίτλος" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "Τίτλος συμβάντος" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "Τοποθεσία" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "Τοποθεσία συμβάντος" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "ΚατηγοÏία" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "ΕπιλÎξτε κατηγοÏία" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "ΟλοήμεÏο συμβάν" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "Από" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "Έως" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "Επαναλαμβανόμενο" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "ΠαÏευÏισκόμενοι" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "ΠεÏιγÏαφή του συμβάντος" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "Κλείσιμο" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "ΔημιουÏγήστε Îνα νÎο συμβάν" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "Ζώνη ÏŽÏας" + + diff --git a/l10n/el/contacts.po b/l10n/el/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..bdd775c8ba2bbc11c4530fab3520bd45f9fce5f8 --- /dev/null +++ b/l10n/el/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:11+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Greek (http://www.transifex.net/projects/p/owncloud/team/el/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: el\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/el/core.po b/l10n/el/core.po index 9d4804387a424b3871983427eed26c61d4e068c7..f7d9f565555db2a7ea903c33b3a9bde06daad52b 100644 --- a/l10n/el/core.po +++ b/l10n/el/core.po @@ -2,15 +2,16 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # <petros.kyladitis@gmail.com>, 2011. # Petros Kyladitis <petros.kyladitis@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" -"POT-Creation-Date: 2011-09-04 18:14+0200\n" -"PO-Revision-Date: 2011-09-04 16:14+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-07 09:13+0000\n" +"Last-Translator: multipetros <petros.kyladitis@gmail.com>\n" "Language-Team: Greek (http://www.transifex.net/projects/p/owncloud/team/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -81,7 +82,7 @@ msgstr "Για Ï€ÏοχωÏημÎνους" #: templates/installation.php:75 msgid "Database host" -msgstr "" +msgstr "Διακομιστής βάσης δεδομÎνων" #: templates/installation.php:76 msgid "Data folder" @@ -93,7 +94,7 @@ msgstr "ΟλοκλήÏωση εγκατάστασης" #: templates/layout.guest.php:35 msgid "gives you freedom and control over your own data" -msgstr "" +msgstr "σας δίνει την ελευθεÏία και τον Îλεγχο επί των δικών σας δεδομÎνων" #: templates/layout.user.php:34 msgid "Log out" @@ -105,7 +106,7 @@ msgstr "Ρυθμίσεις" #: templates/login.php:4 msgid "Lost your password?" -msgstr "" +msgstr "Ξεχάσατε τον κωδικό σας;" #: templates/login.php:9 templates/login.php:13 msgid "remember" @@ -118,10 +119,12 @@ msgstr "Έχετε αποσυνδεθεί." #: templates/lostpassword.php:3 msgid "You will receive a link to reset your password via Email." msgstr "" +"Θα λάβετε Îνα σÏνδεσμο για να επαναφÎÏετε τον κωδικό Ï€Ïόσβασής σας, μÎσω " +"ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου." #: templates/lostpassword.php:5 msgid "Requested" -msgstr "" +msgstr "Αιτήθησαν" #: templates/lostpassword.php:8 msgid "Login failed!" @@ -129,11 +132,11 @@ msgstr "Η σÏνδεση απÎτυχε!" #: templates/lostpassword.php:10 msgid "Username or Email" -msgstr "" +msgstr "Όνομα ΧÏήστη ή Email" #: templates/lostpassword.php:11 msgid "Request reset" -msgstr "" +msgstr "ΕπαναφοÏάς αίτησης" #: templates/part.pagenavi.php:3 msgid "prev" @@ -145,14 +148,14 @@ msgstr "επόμενο" #: templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "" +msgstr "Έγινε επαναφοÏά του ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασής σας" #: templates/resetpassword.php:6 msgid "New password" -msgstr "" +msgstr "ÎÎος κωδικός" #: templates/resetpassword.php:7 msgid "Reset password" -msgstr "" +msgstr "ΕπαναφοÏά ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης" diff --git a/l10n/el/files.po b/l10n/el/files.po index 86f5a4e206c1dd0d3c12f0d3f361e717e954b0a6..da78a25356e6f54f3103d1329ad8fe87c321d82b 100644 --- a/l10n/el/files.po +++ b/l10n/el/files.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # Petros Kyladitis <petros.kyladitis@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-08-13 12:41+0200\n" -"PO-Revision-Date: 2011-08-13 17:44+0000\n" -"Last-Translator: multipetros <petros.kyladitis@gmail.com>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" "Language-Team: Greek (http://www.transifex.net/projects/p/owncloud/team/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,6 +18,32 @@ msgstr "" "Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + #: appinfo/app.php:7 msgid "Files" msgstr "ΑÏχεία" @@ -25,43 +52,43 @@ msgstr "ΑÏχεία" msgid "Maximum upload size" msgstr "ÎœÎγιστο μÎγεθος μεταφόÏτωσης" -#: templates/part.list.php:1 -msgid "Nothing in here. Upload something!" -msgstr "Δεν υπάÏχει τίποτα εδώ. ΑνÎβασε κάτι!" - -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" msgstr "ΜεταφόÏτωση" -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" msgstr "ÎÎος φάκελος" -#: templates/index.php:29 +#: templates/index.php:31 +msgid "Nothing in here. Upload something!" +msgstr "Δεν υπάÏχει τίποτα εδώ. ΑνÎβασε κάτι!" + +#: templates/index.php:39 msgid "Name" msgstr "Όνομα" -#: templates/index.php:31 +#: templates/index.php:41 msgid "Download" msgstr "Λήψη" -#: templates/index.php:35 +#: templates/index.php:45 msgid "Size" msgstr "ÎœÎγεθος" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Modified" msgstr "ΤÏοποποιήθηκε" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Delete" msgstr "ΔιαγÏαφή" -#: templates/index.php:44 +#: templates/index.php:54 msgid "Upload too large" msgstr "Î Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿ το αÏχείο Ï€Ïος μεταφόÏτωση" -#: templates/index.php:46 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." diff --git a/l10n/es/calendar.po b/l10n/es/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..6b98beb81a5e4b5736994afa622fa15b5c28bb14 --- /dev/null +++ b/l10n/es/calendar.po @@ -0,0 +1,466 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# <juanma@kde.org.ar>, 2011. +# <sergioballesterossolanas@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/owncloud/team/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "Error de autentificación" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "Calendario incorrecto" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "Zona horaria cambiada" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "Petición no válida" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "Calendario" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "Cumpleaños" + +#: lib/object.php:293 +msgid "Business" +msgstr "Negocios" + +#: lib/object.php:294 +msgid "Call" +msgstr "" + +#: lib/object.php:295 +msgid "Clients" +msgstr "Clientes" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "Feriados" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "Ideas" + +#: lib/object.php:299 +msgid "Journey" +msgstr "Viaje" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "Aniversario" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "Reunión" + +#: lib/object.php:302 +msgid "Other" +msgstr "Otro" + +#: lib/object.php:303 +msgid "Personal" +msgstr "Personal" + +#: lib/object.php:304 +msgid "Projects" +msgstr "Projectos" + +#: lib/object.php:305 +msgid "Questions" +msgstr "Preguntas" + +#: lib/object.php:306 +msgid "Work" +msgstr "Trabajo" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "No se repite" + +#: lib/object.php:314 +msgid "Daily" +msgstr "Diariamente" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "Semanalmente" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "Una vez a la semana" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "Dos veces a la semana" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "Mensualmente" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "Anualmente" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "Todo el dÃa" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "Domingo" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "Lunes" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "Martes" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "Miércoles" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "Jueves" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "Viernes" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Sábado" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "Dom." + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "Lun." + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "Mar." + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "Mie." + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "Jue." + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "Vie." + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "Sáb." + +#: templates/calendar.php:34 +msgid "January" +msgstr "Enero" + +#: templates/calendar.php:34 +msgid "February" +msgstr "Febrero" + +#: templates/calendar.php:34 +msgid "March" +msgstr "Marzo" + +#: templates/calendar.php:34 +msgid "April" +msgstr "Abril" + +#: templates/calendar.php:34 +msgid "May" +msgstr "Mayo" + +#: templates/calendar.php:34 +msgid "June" +msgstr "Junio" + +#: templates/calendar.php:34 +msgid "July" +msgstr "Julio" + +#: templates/calendar.php:34 +msgid "August" +msgstr "Agosto" + +#: templates/calendar.php:34 +msgid "September" +msgstr "Septiembre" + +#: templates/calendar.php:34 +msgid "October" +msgstr "Octubre" + +#: templates/calendar.php:34 +msgid "November" +msgstr "Noviembre" + +#: templates/calendar.php:34 +msgid "December" +msgstr "Diciembre" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "Ene." + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "Feb." + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "Mar." + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "Abr." + +#: templates/calendar.php:35 +msgid "May." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "Jun." + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "Jul." + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "Ago." + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "Sep." + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "Oct." + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "Nov." + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "Dic." + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "Semana" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Semanas" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "DÃa" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "Mes" + +#: templates/calendar.php:53 +msgid "List" +msgstr "Lista" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "Hoy" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "Calendarios" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "Hora" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "Hubo un fallo al analizar el archivo." + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "Elige los calendarios activos" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "Nuevo calendario" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "Descargar" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "Editar" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "Nuevo calendario" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "Editar calendario" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Nombre" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "Activo" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "Descripción" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "Color del calendario" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "Guardar" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "Guardar" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "Cancelar" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "Editar un evento" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "TÃtulo" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "TÃtulo del evento" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "Lugar" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "Lugar del Evento" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "CategorÃa" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "Seleccionar categorÃa" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "Todo el dÃa" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "Desde" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "Hasta" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "Repetir" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "Asistentes" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "Descripción del evento" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "Cerrar" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "Crear un nuevo evento" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "Zona horaria" + + diff --git a/l10n/es/contacts.po b/l10n/es/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..08f4ae29109e7601040f715ee6f9a211c61be34c --- /dev/null +++ b/l10n/es/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:11+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/owncloud/team/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/es/core.po b/l10n/es/core.po index 97bbbb520eccd7c3e3d8a9ef4e8c2e341f360814..2fe3fcaa7830d15d9e424ba915cc342076a19846 100644 --- a/l10n/es/core.po +++ b/l10n/es/core.po @@ -2,15 +2,16 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # -# <sergioballesterossolanas@gmail.com>, 2011. +# Translators: # <rom1dep@gmail.com>, 2011. +# <sergioballesterossolanas@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" -"POT-Creation-Date: 2011-09-04 18:14+0200\n" -"PO-Revision-Date: 2011-09-04 16:14+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-04 17:01+0000\n" +"Last-Translator: xsergiolpx <sergioballesterossolanas@gmail.com>\n" "Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/owncloud/team/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -93,7 +94,7 @@ msgstr "Completar la instalación" #: templates/layout.guest.php:35 msgid "gives you freedom and control over your own data" -msgstr "" +msgstr "te da la libertad y el control sobre tus propios datos" #: templates/layout.user.php:34 msgid "Log out" @@ -145,7 +146,7 @@ msgstr "siguiente" #: templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "" +msgstr "Tu contraseña se ha restablecido" #: templates/resetpassword.php:6 msgid "New password" diff --git a/l10n/es/files.po b/l10n/es/files.po index 763fd3ae75fe655f12ab5816c7e8f545f2788ab3..2c2bed5cdc4b81df8901a7bc5fa011d35ebcd235 100644 --- a/l10n/es/files.po +++ b/l10n/es/files.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # <sergioballesterossolanas@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-08-13 12:41+0200\n" -"PO-Revision-Date: 2011-08-17 07:24+0000\n" -"Last-Translator: xsergiolpx <sergioballesterossolanas@gmail.com>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" "Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/owncloud/team/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,6 +18,32 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + #: appinfo/app.php:7 msgid "Files" msgstr "Archivos" @@ -25,43 +52,43 @@ msgstr "Archivos" msgid "Maximum upload size" msgstr "Tamaño máximo de subida" -#: templates/part.list.php:1 -msgid "Nothing in here. Upload something!" -msgstr "Aquà no hay nada. ¡Sube algo!" - -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" msgstr "Subir" -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" msgstr "Crear Carpeta" -#: templates/index.php:29 +#: templates/index.php:31 +msgid "Nothing in here. Upload something!" +msgstr "Aquà no hay nada. ¡Sube algo!" + +#: templates/index.php:39 msgid "Name" msgstr "Nombre" -#: templates/index.php:31 +#: templates/index.php:41 msgid "Download" msgstr "Descargar" -#: templates/index.php:35 +#: templates/index.php:45 msgid "Size" msgstr "Tamaño" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Modified" msgstr "Modificado" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Delete" msgstr "Eliminado" -#: templates/index.php:44 +#: templates/index.php:54 msgid "Upload too large" msgstr "El archivo es demasiado grande" -#: templates/index.php:46 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." diff --git a/l10n/et_EE/calendar.po b/l10n/et_EE/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..8f1f95b962ad46e534dbb22665ba7fa44c9b2038 --- /dev/null +++ b/l10n/et_EE/calendar.po @@ -0,0 +1,465 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Rivo Zängov <eraser@eraser.ee>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Estonian (Estonia) (http://www.transifex.net/projects/p/owncloud/team/et_EE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: et_EE\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "Autentimise viga" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "Ajavöönd on muudetud" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "Vigane päring" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "Kalender" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "" + +#: lib/object.php:293 +msgid "Business" +msgstr "" + +#: lib/object.php:294 +msgid "Call" +msgstr "" + +#: lib/object.php:295 +msgid "Clients" +msgstr "" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "" + +#: lib/object.php:299 +msgid "Journey" +msgstr "" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "" + +#: lib/object.php:302 +msgid "Other" +msgstr "" + +#: lib/object.php:303 +msgid "Personal" +msgstr "" + +#: lib/object.php:304 +msgid "Projects" +msgstr "" + +#: lib/object.php:305 +msgid "Questions" +msgstr "" + +#: lib/object.php:306 +msgid "Work" +msgstr "" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "Ei kordu" + +#: lib/object.php:314 +msgid "Daily" +msgstr "Iga päev" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "Iga nädal" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "Igal nädalapäeval" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "Ãœle nädala" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "Igal kuul" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "Igal aastal" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "Kogu päev" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "Pühapäev" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "Esmaspäev" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "Teisipäev" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "Kolmapäev" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "Neljapäev" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "Reede" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Laupäev" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "Pü." + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "Esm." + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "Teisip." + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "Kolmap." + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "Neljap." + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "Reede" + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "Laup." + +#: templates/calendar.php:34 +msgid "January" +msgstr "Jaanuar" + +#: templates/calendar.php:34 +msgid "February" +msgstr "Veebruar" + +#: templates/calendar.php:34 +msgid "March" +msgstr "Märts" + +#: templates/calendar.php:34 +msgid "April" +msgstr "Aprill" + +#: templates/calendar.php:34 +msgid "May" +msgstr "Mai" + +#: templates/calendar.php:34 +msgid "June" +msgstr "Juuni" + +#: templates/calendar.php:34 +msgid "July" +msgstr "Juuli" + +#: templates/calendar.php:34 +msgid "August" +msgstr "August" + +#: templates/calendar.php:34 +msgid "September" +msgstr "September" + +#: templates/calendar.php:34 +msgid "October" +msgstr "Oktoober" + +#: templates/calendar.php:34 +msgid "November" +msgstr "November" + +#: templates/calendar.php:34 +msgid "December" +msgstr "Detsember" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "Jan." + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "Veebr." + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "Märts" + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "Apr." + +#: templates/calendar.php:35 +msgid "May." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "Jun." + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "Jul." + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "Aug." + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "Sept." + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "Okt." + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "Nov." + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "Dets." + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "Nädal" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Nädalat" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "Päev" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "Kuu" + +#: templates/calendar.php:53 +msgid "List" +msgstr "" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "Täna" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "Kalendrid" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "Kellaaeg" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "Faili parsimisel tekkis viga." + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "Vali aktiivsed kalendrid" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "Lae alla" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "Muuda" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "Muuda kalendrit" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Näidatav nimi" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "Aktiivne" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "Kirjeldus" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "Kalendri värv" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "OK" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "Muuda sündmust" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "Pealkiri" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "Sündmuse pealkiri" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "Asukoht" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "Sündmuse toimumiskoht" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "Kategooria" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "Kogu päeva sündmus" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "Alates" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "Kuni" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "Korda" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "Osalejad" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "Sündmuse kirjeldus" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "Sulge" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "Loo sündmus" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "Ajavöönd" + + diff --git a/l10n/et_EE/contacts.po b/l10n/et_EE/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..119d01b09f02e946356699cdd3ab8e3b9aa591f3 --- /dev/null +++ b/l10n/et_EE/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:11+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Estonian (Estonia) (http://www.transifex.net/projects/p/owncloud/team/et_EE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: et_EE\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/et_EE/core.po b/l10n/et_EE/core.po new file mode 100644 index 0000000000000000000000000000000000000000..02b3782f220536d56d3aeaed079662dac7f82f7b --- /dev/null +++ b/l10n/et_EE/core.po @@ -0,0 +1,159 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Rivo Zängov <eraser@eraser.ee>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-05 14:48+0000\n" +"Last-Translator: Eraser <eraser@eraser.ee>\n" +"Language-Team: Estonian (Estonia) (http://www.transifex.net/projects/p/owncloud/team/et_EE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: et_EE\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: strings.php:5 +msgid "Personal" +msgstr "isiklik" + +#: strings.php:6 +msgid "Users" +msgstr "Kasutajad" + +#: strings.php:7 +msgid "Apps" +msgstr "Programmid" + +#: strings.php:8 +msgid "Admin" +msgstr "Admin" + +#: strings.php:9 +msgid "Help" +msgstr "Abiinfo" + +#: templates/404.php:12 +msgid "Cloud not found" +msgstr "Pilve ei leitud" + +#: templates/installation.php:20 +msgid "Create an <strong>admin account</strong>" +msgstr "Loo <strong>admini konto</strong>" + +#: templates/installation.php:21 +msgid "Username" +msgstr "Kasutajanimi" + +#: templates/installation.php:22 +msgid "Password" +msgstr "Parool" + +#: templates/installation.php:27 +msgid "Configure the database" +msgstr "Seadista andmebaasi" + +#: templates/installation.php:32 templates/installation.php:43 +#: templates/installation.php:53 +msgid "will be used" +msgstr "kasutatakse" + +#: templates/installation.php:64 +msgid "Database user" +msgstr "Andmebaasi kasutaja" + +#: templates/installation.php:65 +msgid "Database password" +msgstr "Andmebaasi parool" + +#: templates/installation.php:66 +msgid "Database name" +msgstr "Andmebasi nimi" + +#: templates/installation.php:72 +msgid "Advanced" +msgstr "Lisavalikud" + +#: templates/installation.php:75 +msgid "Database host" +msgstr "Andmebaasi host" + +#: templates/installation.php:76 +msgid "Data folder" +msgstr "Andmete kaust" + +#: templates/installation.php:79 +msgid "Finish setup" +msgstr "Lõpeta seadistamine" + +#: templates/layout.guest.php:35 +msgid "gives you freedom and control over your own data" +msgstr "Annab sulle vabaduse ja kontrolli sinu enda andmete üle" + +#: templates/layout.user.php:34 +msgid "Log out" +msgstr "Logi välja" + +#: templates/layout.user.php:46 templates/layout.user.php:47 +msgid "Settings" +msgstr "Seaded" + +#: templates/login.php:4 +msgid "Lost your password?" +msgstr "Kaotasid oma parooli?" + +#: templates/login.php:9 templates/login.php:13 +msgid "remember" +msgstr "pea meeles" + +#: templates/logout.php:1 +msgid "You are logged out." +msgstr "Sa oled välja loginud" + +#: templates/lostpassword.php:3 +msgid "You will receive a link to reset your password via Email." +msgstr "" +"Sulle saadetakse e-postile link, millelt sa saad oma parooli taastada." + +#: templates/lostpassword.php:5 +msgid "Requested" +msgstr "Kohustuslik" + +#: templates/lostpassword.php:8 +msgid "Login failed!" +msgstr "Sisselogimine ebaõnnestus" + +#: templates/lostpassword.php:10 +msgid "Username or Email" +msgstr "Kasutajanimi või e-post" + +#: templates/lostpassword.php:11 +msgid "Request reset" +msgstr "Palu taastamist" + +#: templates/part.pagenavi.php:3 +msgid "prev" +msgstr "eelm" + +#: templates/part.pagenavi.php:20 +msgid "next" +msgstr "järgm" + +#: templates/resetpassword.php:4 +msgid "Your password was reset" +msgstr "Sinu parool on taastatud" + +#: templates/resetpassword.php:6 +msgid "New password" +msgstr "Uus parool" + +#: templates/resetpassword.php:7 +msgid "Reset password" +msgstr "Nulli parool" + + diff --git a/l10n/et_EE/files.po b/l10n/et_EE/files.po new file mode 100644 index 0000000000000000000000000000000000000000..92f9fa8d85587a3704a9ef34c0cf84302cfd2267 --- /dev/null +++ b/l10n/et_EE/files.po @@ -0,0 +1,99 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Rivo Zängov <eraser@eraser.ee>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Estonian (Estonia) (http://www.transifex.net/projects/p/owncloud/team/et_EE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: et_EE\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + +#: appinfo/app.php:7 +msgid "Files" +msgstr "Failid" + +#: templates/admin.php:5 +msgid "Maximum upload size" +msgstr "Maksimaalne üleslaadimise suurus" + +#: templates/index.php:10 +msgid "Upload" +msgstr "Lae üles" + +#: templates/index.php:17 +msgid "New Folder" +msgstr "Uus kaust" + +#: templates/index.php:31 +msgid "Nothing in here. Upload something!" +msgstr "Siin pole midagi. Lae midagi üles!" + +#: templates/index.php:39 +msgid "Name" +msgstr "Nimi" + +#: templates/index.php:41 +msgid "Download" +msgstr "Lae alla" + +#: templates/index.php:45 +msgid "Size" +msgstr "Suurus" + +#: templates/index.php:46 +msgid "Modified" +msgstr "Muudetud" + +#: templates/index.php:46 +msgid "Delete" +msgstr "Kustuta" + +#: templates/index.php:54 +msgid "Upload too large" +msgstr "Ãœleslaadimine on liiga suur" + +#: templates/index.php:56 +msgid "" +"The files you are trying to upload exceed the maximum size for file uploads " +"on this server." +msgstr "" +"Failid, mida sa proovid üles laadida, ületab serveri poolt üleslaetavatele " +"failidele määratud maksimaalse suuruse." + + diff --git a/l10n/et_EE/media.po b/l10n/et_EE/media.po new file mode 100644 index 0000000000000000000000000000000000000000..7d40f8a4ffad431323824b91cb624b5b0222551f --- /dev/null +++ b/l10n/et_EE/media.po @@ -0,0 +1,69 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Rivo Zängov <eraser@eraser.ee>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-05 14:54+0000\n" +"Last-Translator: Eraser <eraser@eraser.ee>\n" +"Language-Team: Estonian (Estonia) (http://www.transifex.net/projects/p/owncloud/team/et_EE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: et_EE\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: appinfo/app.php:31 +msgid "Music" +msgstr "Muusika" + +#: templates/music.php:3 +msgid "Play" +msgstr "Esita" + +#: templates/music.php:4 templates/music.php:30 +msgid "Pause" +msgstr "Paus" + +#: templates/music.php:5 +msgid "Previous" +msgstr "Eelmine" + +#: templates/music.php:6 +msgid "Next" +msgstr "Järgmine" + +#: templates/music.php:7 +msgid "Mute" +msgstr "Vaikseks" + +#: templates/music.php:8 +msgid "Unmute" +msgstr "Hääl tagasi" + +#: templates/music.php:28 +msgid "Songs scanned" +msgstr "Skännitud lood" + +#: templates/music.php:29 +msgid "Rescan Collection" +msgstr "Skänni kollekttsiooni uuesti" + +#: templates/music.php:37 +msgid "Artist" +msgstr "Esitaja" + +#: templates/music.php:38 +msgid "Album" +msgstr "Album" + +#: templates/music.php:39 +msgid "Title" +msgstr "Pealkiri" + + diff --git a/l10n/et_EE/settings.po b/l10n/et_EE/settings.po new file mode 100644 index 0000000000000000000000000000000000000000..3fad92d9479ef19cf5dc72a02a718e42302bf73b --- /dev/null +++ b/l10n/et_EE/settings.po @@ -0,0 +1,133 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Rivo Zängov <eraser@eraser.ee>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-05 14:59+0000\n" +"Last-Translator: Eraser <eraser@eraser.ee>\n" +"Language-Team: Estonian (Estonia) (http://www.transifex.net/projects/p/owncloud/team/et_EE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: et_EE\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/openid.php:13 ajax/setlanguage.php:13 +msgid "Authentication error" +msgstr "Autentimise viga" + +#: ajax/openid.php:21 +msgid "OpenID Changed" +msgstr "OpenID on muudetud" + +#: ajax/openid.php:23 ajax/setlanguage.php:23 +msgid "Invalid request" +msgstr "Vigane päring" + +#: ajax/setlanguage.php:21 +msgid "Language changed" +msgstr "Keel on muudetud" + +#: templates/apps.php:8 +msgid "Add your application" +msgstr "Lisa oma programm" + +#: templates/apps.php:21 +msgid "Select an App" +msgstr "Vali programm" + +#: templates/apps.php:23 +msgid "-licensed" +msgstr "-litsenseeritud" + +#: templates/apps.php:23 +msgid "by" +msgstr "kelle poolt" + +#: templates/help.php:8 +msgid "Ask a question" +msgstr "Küsi küsimus" + +#: templates/help.php:17 +msgid "Problems connecting to help database." +msgstr "Probleemid abiinfo andmebaasiga ühendumisel." + +#: templates/help.php:18 +msgid "Go there manually." +msgstr "Mine sinna käsitsi." + +#: templates/help.php:26 +msgid "Answer" +msgstr "Vasta" + +#: templates/personal.php:8 +msgid "You use" +msgstr "Sa kasutad" + +#: templates/personal.php:8 +msgid "of the available" +msgstr "saadaolevast" + +#: templates/personal.php:13 +msgid "Your password got changed" +msgstr "Sinu parooli on muudetud" + +#: templates/personal.php:14 +msgid "Unable to change your password" +msgstr "Sa ei saa oma parooli muuta" + +#: templates/personal.php:15 +msgid "Current password" +msgstr "Praegune parool" + +#: templates/personal.php:16 +msgid "New password" +msgstr "Uus parool" + +#: templates/personal.php:17 +msgid "show" +msgstr "näita" + +#: templates/personal.php:18 +msgid "Change password" +msgstr "Muuda parooli" + +#: templates/personal.php:24 templates/personal.php:25 +msgid "Language" +msgstr "Keel" + +#: templates/personal.php:30 +msgid "Help translating" +msgstr "Abiinfo tõlkimine" + +#: templates/personal.php:37 +msgid "use this address to connect to your ownCloud in your file manager" +msgstr "kasuta seda aadressi oma ownCloudiga ühendamiseks failihalduriga" + +#: templates/users.php:16 +msgid "Name" +msgstr "Nimi" + +#: templates/users.php:17 +msgid "Password" +msgstr "Parool" + +#: templates/users.php:18 templates/users.php:36 +msgid "Groups" +msgstr "Grupid" + +#: templates/users.php:24 +msgid "Create" +msgstr "Lisa" + +#: templates/users.php:48 +msgid "Delete" +msgstr "Kustuta" + + diff --git a/l10n/fr/calendar.po b/l10n/fr/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..3c961b669c81a75e8034a8119df4e4725a225c45 --- /dev/null +++ b/l10n/fr/calendar.po @@ -0,0 +1,465 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# <rom1dep@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: French (http://www.transifex.net/projects/p/owncloud/team/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1)\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "Erreur d'authentification" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "Mauvais calendrier" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "Fuseau horaire modifié" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "Requête invalide" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "Calendrier" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "Anniversaire" + +#: lib/object.php:293 +msgid "Business" +msgstr "Business" + +#: lib/object.php:294 +msgid "Call" +msgstr "Appel" + +#: lib/object.php:295 +msgid "Clients" +msgstr "Clients" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "Livreur" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "Vacances" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "Idées" + +#: lib/object.php:299 +msgid "Journey" +msgstr "Journée" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "Jubilé" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "Meeting" + +#: lib/object.php:302 +msgid "Other" +msgstr "Autre" + +#: lib/object.php:303 +msgid "Personal" +msgstr "Personnel" + +#: lib/object.php:304 +msgid "Projects" +msgstr "Projets" + +#: lib/object.php:305 +msgid "Questions" +msgstr "Questions" + +#: lib/object.php:306 +msgid "Work" +msgstr "Travail" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "Pas de répétition" + +#: lib/object.php:314 +msgid "Daily" +msgstr "Tous les jours" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "Toutes les semaines" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "Chaque jour de la semaine" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "Bimestriel" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "Tous les mois" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "Tous les ans" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "Ce n'est pas un tableau" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "Tous les jours" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "Dimanche" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "Lundi" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "Mardi" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "Mercredi" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "Jeudi" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "Vendredi" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Samedi" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "Dim." + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "Lun." + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "Mar." + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "Mer." + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "Jeu." + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "Ven." + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "Sam." + +#: templates/calendar.php:34 +msgid "January" +msgstr "Janvier" + +#: templates/calendar.php:34 +msgid "February" +msgstr "Février" + +#: templates/calendar.php:34 +msgid "March" +msgstr "Mars" + +#: templates/calendar.php:34 +msgid "April" +msgstr "Avril" + +#: templates/calendar.php:34 +msgid "May" +msgstr "Mai" + +#: templates/calendar.php:34 +msgid "June" +msgstr "Juin" + +#: templates/calendar.php:34 +msgid "July" +msgstr "Juillet" + +#: templates/calendar.php:34 +msgid "August" +msgstr "Août" + +#: templates/calendar.php:34 +msgid "September" +msgstr "Septembre" + +#: templates/calendar.php:34 +msgid "October" +msgstr "Octobre" + +#: templates/calendar.php:34 +msgid "November" +msgstr "Novembre" + +#: templates/calendar.php:34 +msgid "December" +msgstr "Décembre" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "Jan." + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "Fév." + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "Mar." + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "Avr." + +#: templates/calendar.php:35 +msgid "May." +msgstr "Peut-être *****" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "Juin" + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "Juil." + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "Aoû." + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "Sep." + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "Oct." + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "Nov." + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "Déc." + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "Semaine" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Semaines" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "Voir plus avant {startdate}" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "Voir plus après {enddate}" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "Jour" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "Mois" + +#: templates/calendar.php:53 +msgid "List" +msgstr "Liste" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "Aujourd'hui" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "Calendriers" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "Heure" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "Une erreur est survenue pendant la lecture du fichier." + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "Choix des calendriers actifs" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "Nouveau Calendrier" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "Lien CalDav" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "Télécharger" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "Éditer" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "Nouveau calendrier" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "Éditer le calendrier" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Nom d'affichage" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "Actif" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "Description" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "Couleur du calendrier" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "Sauvegarder" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "Soumettre" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "Annuler" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "Éditer un événement" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "Titre" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "Titre de l'événement" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "Localisation" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "Localisation de l'événement" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "Catégorie" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "Sélectionner une catégorie" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "Événement de toute une journée" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "De" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "À" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "Répétition" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "Personnes présentes" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "Description de l'événement" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "Fermer" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "Créer un nouvel événement" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "Fuseau horaire" + + diff --git a/l10n/fr/contacts.po b/l10n/fr/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..1a7dea24d8d08037d9d17d10a0810b19b025fd23 --- /dev/null +++ b/l10n/fr/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:11+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: French (http://www.transifex.net/projects/p/owncloud/team/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1)\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/fr/core.po b/l10n/fr/core.po index a24c0688fc4811670f26f4124c96e0661202e4dc..b1e286ce6ea8879a439c14bdb43a7100d745ae53 100644 --- a/l10n/fr/core.po +++ b/l10n/fr/core.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # <rom1dep@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" -"POT-Creation-Date: 2011-09-04 18:14+0200\n" -"PO-Revision-Date: 2011-09-04 16:14+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-05 15:01+0000\n" +"Last-Translator: bibzor <borjan@tchaka.fr>\n" "Language-Team: French (http://www.transifex.net/projects/p/owncloud/team/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -92,7 +93,7 @@ msgstr "Terminer l'installation" #: templates/layout.guest.php:35 msgid "gives you freedom and control over your own data" -msgstr "" +msgstr "vous donne la liberté et le contrôle de vos propres données" #: templates/layout.user.php:34 msgid "Log out" @@ -146,7 +147,7 @@ msgstr "suivant" #: templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "" +msgstr "Votre mot de passe a été réinitialisé" #: templates/resetpassword.php:6 msgid "New password" diff --git a/l10n/fr/files.po b/l10n/fr/files.po index c75745d8bd0f2492d3228fd239bf25e961142c3a..b898f18703018eab455041d2889064bb2db28ad7 100644 --- a/l10n/fr/files.po +++ b/l10n/fr/files.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # <rom1dep@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-08-13 05:10+0200\n" -"PO-Revision-Date: 2011-08-13 09:14+0000\n" -"Last-Translator: rom1dep <rom1dep@gmail.com>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" "Language-Team: French (http://www.transifex.net/projects/p/owncloud/team/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,6 +18,32 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + #: appinfo/app.php:7 msgid "Files" msgstr "Fichiers" @@ -25,43 +52,43 @@ msgstr "Fichiers" msgid "Maximum upload size" msgstr "Taille max. d'envoi" -#: templates/part.list.php:1 -msgid "Nothing in here. Upload something!" -msgstr "Il n'y a rien ici ! Envoyez donc quelque chose :)" - -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" msgstr "Envoyer" -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" msgstr "Nouveau dossier" -#: templates/index.php:29 +#: templates/index.php:31 +msgid "Nothing in here. Upload something!" +msgstr "Il n'y a rien ici ! Envoyez donc quelque chose :)" + +#: templates/index.php:39 msgid "Name" msgstr "Nom" -#: templates/index.php:31 +#: templates/index.php:41 msgid "Download" msgstr "Téléchargement" -#: templates/index.php:35 +#: templates/index.php:45 msgid "Size" msgstr "Taille" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Modified" msgstr "Modifié" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Delete" msgstr "Supprimer" -#: templates/index.php:44 +#: templates/index.php:54 msgid "Upload too large" msgstr "Fichier trop volumineux" -#: templates/index.php:46 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." diff --git a/l10n/id/calendar.po b/l10n/id/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..56e64399dd09eb661c5aa5351648eb47489cc0a9 --- /dev/null +++ b/l10n/id/calendar.po @@ -0,0 +1,465 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Muhammad Radifar <m_radifar05@yahoo.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Indonesian (http://www.transifex.net/projects/p/owncloud/team/id/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: id\n" +"Plural-Forms: nplurals=1; plural=0\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "Kesalahan otentikasi" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "Zona waktu telah diubah" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "Permintaan tidak sah" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "Kalender" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "" + +#: lib/object.php:293 +msgid "Business" +msgstr "" + +#: lib/object.php:294 +msgid "Call" +msgstr "" + +#: lib/object.php:295 +msgid "Clients" +msgstr "" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "" + +#: lib/object.php:299 +msgid "Journey" +msgstr "" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "" + +#: lib/object.php:302 +msgid "Other" +msgstr "" + +#: lib/object.php:303 +msgid "Personal" +msgstr "" + +#: lib/object.php:304 +msgid "Projects" +msgstr "" + +#: lib/object.php:305 +msgid "Questions" +msgstr "" + +#: lib/object.php:306 +msgid "Work" +msgstr "" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "Tidak akan mengulangi" + +#: lib/object.php:314 +msgid "Daily" +msgstr "Harian" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "Mingguan" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "Setiap Hari Minggu" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "Dwi-mingguan" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "Bulanan" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "Tahunan" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "Semua Hari" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "Minggu" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "Senin" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "Selasa" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "Rabu" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "Kamis" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "Jumat" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Sabtu" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "Min." + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "Sen." + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "Sel." + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "Rab." + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "Kam." + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "Jum." + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "Sab." + +#: templates/calendar.php:34 +msgid "January" +msgstr "Januari" + +#: templates/calendar.php:34 +msgid "February" +msgstr "Februari" + +#: templates/calendar.php:34 +msgid "March" +msgstr "Maret" + +#: templates/calendar.php:34 +msgid "April" +msgstr "April" + +#: templates/calendar.php:34 +msgid "May" +msgstr "Mei" + +#: templates/calendar.php:34 +msgid "June" +msgstr "Juni" + +#: templates/calendar.php:34 +msgid "July" +msgstr "Juli" + +#: templates/calendar.php:34 +msgid "August" +msgstr "Agustus" + +#: templates/calendar.php:34 +msgid "September" +msgstr "September" + +#: templates/calendar.php:34 +msgid "October" +msgstr "Oktober" + +#: templates/calendar.php:34 +msgid "November" +msgstr "November" + +#: templates/calendar.php:34 +msgid "December" +msgstr "Desember" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "Jan." + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "Feb." + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "Mar." + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "Apr." + +#: templates/calendar.php:35 +msgid "May." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "Jun." + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "Jul." + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "Agu." + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "Sep." + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "Okt." + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "Nov." + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "Des." + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "Minggu" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Minggu" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "Hari" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "Bulan" + +#: templates/calendar.php:53 +msgid "List" +msgstr "" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "Hari ini" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "Kalender" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "Waktu" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "Terjadi kesalahan, saat mengurai berkas." + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "Pilih kalender aktif" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "Unduh" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "Sunting" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "Sunting kalender" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Namatampilan" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "Aktif" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "Deskripsi" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "Warna kalender" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "Sampaikan" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "Sunting agenda" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "Judul" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "Judul Agenda" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "Lokasi" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "Lokasi Agenda" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "Kategori" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "Agenda di Semua Hari" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "Dari" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "Ke" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "Ulangi" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "Yang menghadiri" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "Deskripsi dari Agenda" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "Tutup" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "Buat agenda baru" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "Zonawaktu" + + diff --git a/l10n/id/contacts.po b/l10n/id/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..3a6360c599f17449c42328ac5bd9739c51e502e3 --- /dev/null +++ b/l10n/id/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:10+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Indonesian (http://www.transifex.net/projects/p/owncloud/team/id/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: id\n" +"Plural-Forms: nplurals=1; plural=0\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/id/core.po b/l10n/id/core.po index b0aec1919e8fca09dae8d669fb57ac7649db649f..d19793d98a188b97ea887a56c9ddec93b871317b 100644 --- a/l10n/id/core.po +++ b/l10n/id/core.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # Muhammad Radifar <m_radifar05@yahoo.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" -"POT-Creation-Date: 2011-09-04 18:14+0200\n" -"PO-Revision-Date: 2011-09-04 16:14+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-05 01:19+0000\n" +"Last-Translator: radifar <m_radifar05@yahoo.com>\n" "Language-Team: Indonesian (http://www.transifex.net/projects/p/owncloud/team/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -144,7 +145,7 @@ msgstr "selanjutnya" #: templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "" +msgstr "Password anda telah diset ulang" #: templates/resetpassword.php:6 msgid "New password" diff --git a/l10n/id/files.po b/l10n/id/files.po index c3fcfc353675241b916fd554095654ae39b2d9e3..8b116d05259eb12478b112abfaaeb74ea5b5537b 100644 --- a/l10n/id/files.po +++ b/l10n/id/files.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # Muhammad Radifar <m_radifar05@yahoo.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-08-13 12:41+0200\n" -"PO-Revision-Date: 2011-08-13 14:38+0000\n" -"Last-Translator: radifar <m_radifar05@yahoo.com>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" "Language-Team: Indonesian (http://www.transifex.net/projects/p/owncloud/team/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,6 +18,32 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0\n" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + #: appinfo/app.php:7 msgid "Files" msgstr "Berkas" @@ -25,43 +52,43 @@ msgstr "Berkas" msgid "Maximum upload size" msgstr "Ukuran unggah maksimum" -#: templates/part.list.php:1 -msgid "Nothing in here. Upload something!" -msgstr "Tidak ada apa-apa di sini. Unggah sesuatu!" - -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" msgstr "Unggah" -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" msgstr "Folder Baru" -#: templates/index.php:29 +#: templates/index.php:31 +msgid "Nothing in here. Upload something!" +msgstr "Tidak ada apa-apa di sini. Unggah sesuatu!" + +#: templates/index.php:39 msgid "Name" msgstr "Nama" -#: templates/index.php:31 +#: templates/index.php:41 msgid "Download" msgstr "Unduh" -#: templates/index.php:35 +#: templates/index.php:45 msgid "Size" msgstr "Ukuran" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Modified" msgstr "Dimodifikasi" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Delete" msgstr "Hapus" -#: templates/index.php:44 +#: templates/index.php:54 msgid "Upload too large" msgstr "Unggahan terlalu besar" -#: templates/index.php:46 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." diff --git a/l10n/it/calendar.po b/l10n/it/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..fab6060c4875eda4804859b9172ae54ace03b834 --- /dev/null +++ b/l10n/it/calendar.po @@ -0,0 +1,467 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# <cosenal@gmail.com>, 2011. +# Francesco Apruzzese <cescoap@gmail.com>, 2011. +# <rb.colombo@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Italian (http://www.transifex.net/projects/p/owncloud/team/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "Errore di autenticazione" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "Calendario sbagliato" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "Fuso orario cambiato" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "Richiesta non validia" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "Calendario" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "Compleanno" + +#: lib/object.php:293 +msgid "Business" +msgstr "Azienda" + +#: lib/object.php:294 +msgid "Call" +msgstr "Chiama" + +#: lib/object.php:295 +msgid "Clients" +msgstr "Clienti" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "Consegna" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "Vacanze" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "Idee" + +#: lib/object.php:299 +msgid "Journey" +msgstr "Viaggio" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "Anniversario" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "Riunione" + +#: lib/object.php:302 +msgid "Other" +msgstr "Altro" + +#: lib/object.php:303 +msgid "Personal" +msgstr "Personale" + +#: lib/object.php:304 +msgid "Projects" +msgstr "Progetti" + +#: lib/object.php:305 +msgid "Questions" +msgstr "Domande" + +#: lib/object.php:306 +msgid "Work" +msgstr "Lavoro" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "Non ripetere" + +#: lib/object.php:314 +msgid "Daily" +msgstr "Giornaliero" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "Settimanale" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "Ogni settimana" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "Ogni due settimane" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "Mensile" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "Annuale" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "Non è un array" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "Tutti i giorni" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "Domenica" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "Lunedì" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "Martedì" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "Mercoledì" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "Giovedì" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "Venerdì" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Sabato" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "Dom." + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "Lun." + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "Mar." + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "Mer." + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "Gio." + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "Ven." + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "Sab." + +#: templates/calendar.php:34 +msgid "January" +msgstr "Gennaio" + +#: templates/calendar.php:34 +msgid "February" +msgstr "Febbraio" + +#: templates/calendar.php:34 +msgid "March" +msgstr "Marzo" + +#: templates/calendar.php:34 +msgid "April" +msgstr "Aprile" + +#: templates/calendar.php:34 +msgid "May" +msgstr "Maggio" + +#: templates/calendar.php:34 +msgid "June" +msgstr "Giugno" + +#: templates/calendar.php:34 +msgid "July" +msgstr "Luglio" + +#: templates/calendar.php:34 +msgid "August" +msgstr "Agosto" + +#: templates/calendar.php:34 +msgid "September" +msgstr "Settembre" + +#: templates/calendar.php:34 +msgid "October" +msgstr "Ottobre" + +#: templates/calendar.php:34 +msgid "November" +msgstr "Novembre" + +#: templates/calendar.php:34 +msgid "December" +msgstr "Dicembre" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "Gen." + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "Feb." + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "Mar." + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "Apr." + +#: templates/calendar.php:35 +msgid "May." +msgstr "Maggio." + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "Giu." + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "Lug." + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "Ago." + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "Set." + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "Ott." + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "Nov." + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "Dic." + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "Settimana" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Settimane" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "Prima di {startdate}" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "Dopo {enddate}" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "Giorno" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "Mese" + +#: templates/calendar.php:53 +msgid "List" +msgstr "Lista" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "Oggi" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "Calendari" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "Ora" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "C'è stato un errore nel parsing del file." + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "Selezionare calendari attivi" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "Nuovo Calendario" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "CalDav Link" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "Download" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "Modifica" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "Nuovo calendario" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "Modifica calendario" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Mostra nome" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "Attivo" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "Descrizione" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "Colore calendario" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "Salva" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "Invia" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "Annulla" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "Modifica evento" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "Titolo" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "Titolo evento" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "Luogo" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "Luogo evento" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "Categoria" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "Seleziona categoria" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "Tutti gli eventi del giorno" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "Da" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "A" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "Ripeti" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "Partecipanti" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "Descrizione evento" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "Chiuso" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "Crea evento" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "Timezone" + + diff --git a/l10n/it/contacts.po b/l10n/it/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..3f8e3bd169658e79ddd67e4130a3ded4557c6991 --- /dev/null +++ b/l10n/it/contacts.po @@ -0,0 +1,181 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Francesco Apruzzese <cescoap@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:10+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Italian (http://www.transifex.net/projects/p/owncloud/team/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "Bisogna effettuare il login." + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "Questa non è la tua rubrica." + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "Il contatto non può essere trovato" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "Questo non è un tuo contatto." + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "La vCard non può essere letta" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "Informazioni sulla vCard incorrette. Ricaricare la pagina." + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "Questa card non è compatibile con il protocollo RFC." + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "Questa card non contiene una foto." + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "Aggiungi contatto" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "Gruppo" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "Nome" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "Crea contatto" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "Indirizzo" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "Telefono" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "Email" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "Organizzazione" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "Lavoro" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "Casa" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "PO Box" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "Estendi" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "Via" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "Città " + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "Regione" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "CAP" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "Stato" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "Cellulare" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "Testo" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "Voce" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "Fax" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "Video" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "Pager" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "Cancella" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "Aggiungi proprietà " + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "Compleanno" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "Telefono" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "Modifica" + + diff --git a/l10n/it/core.po b/l10n/it/core.po index 5551ee636bf2f460429d91c55325da0f01d6b7f1..cd840405802bf3725369fb13da34471c8be4baa6 100644 --- a/l10n/it/core.po +++ b/l10n/it/core.po @@ -2,15 +2,17 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # -# <rb.colombo@gmail.com>, 2011. +# Translators: # <cosenal@gmail.com>, 2011. +# Francesco Apruzzese <cescoap@gmail.com>, 2011. +# <rb.colombo@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" -"POT-Creation-Date: 2011-09-04 18:14+0200\n" -"PO-Revision-Date: 2011-09-04 16:14+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-23 08:17+0000\n" +"Last-Translator: OpenCode <cescoap@gmail.com>\n" "Language-Team: Italian (http://www.transifex.net/projects/p/owncloud/team/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -81,7 +83,7 @@ msgstr "Opzioni avanzate" #: templates/installation.php:75 msgid "Database host" -msgstr "" +msgstr "Host del database" #: templates/installation.php:76 msgid "Data folder" @@ -93,7 +95,7 @@ msgstr "Termina" #: templates/layout.guest.php:35 msgid "gives you freedom and control over your own data" -msgstr "" +msgstr "Libertà e controllo dei propri dati" #: templates/layout.user.php:34 msgid "Log out" @@ -117,11 +119,11 @@ msgstr "Sei uscito." #: templates/lostpassword.php:3 msgid "You will receive a link to reset your password via Email." -msgstr "" +msgstr "Riceverai via email un link per il reset della tua password" #: templates/lostpassword.php:5 msgid "Requested" -msgstr "" +msgstr "Richiesto" #: templates/lostpassword.php:8 msgid "Login failed!" @@ -129,11 +131,11 @@ msgstr "Login fallito!" #: templates/lostpassword.php:10 msgid "Username or Email" -msgstr "" +msgstr "Username o email" #: templates/lostpassword.php:11 msgid "Request reset" -msgstr "" +msgstr "Reset richiesta" #: templates/part.pagenavi.php:3 msgid "prev" @@ -145,7 +147,7 @@ msgstr "successivo" #: templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "" +msgstr "tua password è stata resettata" #: templates/resetpassword.php:6 msgid "New password" @@ -153,6 +155,6 @@ msgstr "Nuova password" #: templates/resetpassword.php:7 msgid "Reset password" -msgstr "" +msgstr "Reset password" diff --git a/l10n/it/files.po b/l10n/it/files.po index 2210317cc370541c64d3741dd64f6104fd9fb47c..ee66302f62f9159d6fa37cb0cba752703e8087eb 100644 --- a/l10n/it/files.po +++ b/l10n/it/files.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # <cosenal@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-08-13 12:41+0200\n" -"PO-Revision-Date: 2011-08-15 02:09+0000\n" -"Last-Translator: zimba12 <cosenal@gmail.com>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" "Language-Team: Italian (http://www.transifex.net/projects/p/owncloud/team/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,6 +18,32 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + #: appinfo/app.php:7 msgid "Files" msgstr "File" @@ -25,43 +52,43 @@ msgstr "File" msgid "Maximum upload size" msgstr "Dimensione massima upload" -#: templates/part.list.php:1 -msgid "Nothing in here. Upload something!" -msgstr "Non c'è niente qui. Carica qualcosa!" - -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" msgstr "Carica" -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" msgstr "Nuova Cartella" -#: templates/index.php:29 +#: templates/index.php:31 +msgid "Nothing in here. Upload something!" +msgstr "Non c'è niente qui. Carica qualcosa!" + +#: templates/index.php:39 msgid "Name" msgstr "Nome" -#: templates/index.php:31 +#: templates/index.php:41 msgid "Download" msgstr "Scarica" -#: templates/index.php:35 +#: templates/index.php:45 msgid "Size" msgstr "Dimensione" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Modified" msgstr "Modificato" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Delete" msgstr "Cancella" -#: templates/index.php:44 +#: templates/index.php:54 msgid "Upload too large" msgstr "Il file caricato è troppo grande" -#: templates/index.php:46 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." diff --git a/l10n/lb/calendar.po b/l10n/lb/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..9aea18b69ac55035d7b9232712dfb8a06bc987c0 --- /dev/null +++ b/l10n/lb/calendar.po @@ -0,0 +1,465 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# <sim0n@trypill.org>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Luxembourgish (http://www.transifex.net/projects/p/owncloud/team/lb/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lb\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "Authentifizéierung's Feeler" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "Zäitzon geännert" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "Ongülteg Requête" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "Kalenner" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "" + +#: lib/object.php:293 +msgid "Business" +msgstr "" + +#: lib/object.php:294 +msgid "Call" +msgstr "" + +#: lib/object.php:295 +msgid "Clients" +msgstr "" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "" + +#: lib/object.php:299 +msgid "Journey" +msgstr "" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "" + +#: lib/object.php:302 +msgid "Other" +msgstr "" + +#: lib/object.php:303 +msgid "Personal" +msgstr "" + +#: lib/object.php:304 +msgid "Projects" +msgstr "" + +#: lib/object.php:305 +msgid "Questions" +msgstr "" + +#: lib/object.php:306 +msgid "Work" +msgstr "" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "Widderhëlt sech net" + +#: lib/object.php:314 +msgid "Daily" +msgstr "Deeglech" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "All Woch" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "All Wochendag" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "All zweet Woch" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "All Mount" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "All Joer" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "All Dag" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "Sonnden" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "Méinden" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "Dënschden" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "Mëttwoch" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "Donneschden" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "Freiden" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Samschden" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "So. " + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "Méin. " + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "Dën." + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "Mëtt." + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "Do." + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "Fr." + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "Sam." + +#: templates/calendar.php:34 +msgid "January" +msgstr "Januar" + +#: templates/calendar.php:34 +msgid "February" +msgstr "Februar" + +#: templates/calendar.php:34 +msgid "March" +msgstr "Mäerz" + +#: templates/calendar.php:34 +msgid "April" +msgstr "Abrëll" + +#: templates/calendar.php:34 +msgid "May" +msgstr "Mäi" + +#: templates/calendar.php:34 +msgid "June" +msgstr "Juni" + +#: templates/calendar.php:34 +msgid "July" +msgstr "Juli" + +#: templates/calendar.php:34 +msgid "August" +msgstr "August" + +#: templates/calendar.php:34 +msgid "September" +msgstr "September" + +#: templates/calendar.php:34 +msgid "October" +msgstr "Oktober" + +#: templates/calendar.php:34 +msgid "November" +msgstr "November" + +#: templates/calendar.php:34 +msgid "December" +msgstr "Dezember" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "Jan." + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "Feb." + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "Mär." + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "Abr." + +#: templates/calendar.php:35 +msgid "May." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "Jun." + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "Jul." + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "Aug." + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "Sep." + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "Okt." + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "Nov." + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "Dez." + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "Woch" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Wochen" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "Dag" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "Mount" + +#: templates/calendar.php:53 +msgid "List" +msgstr "" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "Haut" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "Kalenneren" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "Zäit" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "Feeler beim lueden vum Fichier." + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "Wiel aktiv Kalenneren aus" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "Eroflueden" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "Editéieren" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "Kalenner editéieren" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Numm" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "Aktiv" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "Beschreiwung" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "Fuerf vum Kalenner" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "Fortschécken" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "Evenement editéieren" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "Titel" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "Titel vum Evenement" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "Uert" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "Uert vum Evenement" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "Kategorie" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "Ganz-Dag Evenement" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "Vun" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "Fir" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "Widderhuelen" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "Participanten" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "Beschreiwung vum Evenement" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "Zoumaachen" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "En Evenement maachen" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "Zäitzon" + + diff --git a/l10n/lb/contacts.po b/l10n/lb/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..63d22e6f7c8b2dce0417f8321f9c80b945b8e251 --- /dev/null +++ b/l10n/lb/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:11+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Luxembourgish (http://www.transifex.net/projects/p/owncloud/team/lb/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lb\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/lb/core.po b/l10n/lb/core.po index 476e57f8bb6b16b3e5518e1c40a9090db57c1bdf..9e0db1c821d3be0f062ffda20feb69b830503b90 100644 --- a/l10n/lb/core.po +++ b/l10n/lb/core.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # <sim0n@trypill.org>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" -"POT-Creation-Date: 2011-09-04 18:14+0200\n" -"PO-Revision-Date: 2011-09-04 16:14+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-17 14:32+0000\n" +"Last-Translator: sim0n <sim0n@trypill.org>\n" "Language-Team: Luxembourgish (http://www.transifex.net/projects/p/owncloud/team/lb/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -80,7 +81,7 @@ msgstr "Erweidert" #: templates/installation.php:75 msgid "Database host" -msgstr "" +msgstr "Datebank Server" #: templates/installation.php:76 msgid "Data folder" @@ -92,7 +93,7 @@ msgstr "Installatioun ofschléissen" #: templates/layout.guest.php:35 msgid "gives you freedom and control over your own data" -msgstr "" +msgstr "gëtt dir Fräiheet an Kontroll iwwert deng eegen Daten" #: templates/layout.user.php:34 msgid "Log out" @@ -104,7 +105,7 @@ msgstr "Astellungen" #: templates/login.php:4 msgid "Lost your password?" -msgstr "" +msgstr "Passwuert vergiess?" #: templates/login.php:9 templates/login.php:13 msgid "remember" @@ -117,10 +118,11 @@ msgstr "Du bass ausgeloggt." #: templates/lostpassword.php:3 msgid "You will receive a link to reset your password via Email." msgstr "" +"Du kriss per E-mail en Link geschéckt fir däin Passwuert nei ze setzen." #: templates/lostpassword.php:5 msgid "Requested" -msgstr "" +msgstr "Verlaangt" #: templates/lostpassword.php:8 msgid "Login failed!" @@ -128,11 +130,11 @@ msgstr "Aloggen feelgeschloen!" #: templates/lostpassword.php:10 msgid "Username or Email" -msgstr "" +msgstr "Benotzernumm oder E-Mail" #: templates/lostpassword.php:11 msgid "Request reset" -msgstr "" +msgstr "Reset ufroen" #: templates/part.pagenavi.php:3 msgid "prev" @@ -144,14 +146,14 @@ msgstr "weider" #: templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "" +msgstr "Dän Passwuert ass nei gesat ginn" #: templates/resetpassword.php:6 msgid "New password" -msgstr "" +msgstr "Neit Passwuert" #: templates/resetpassword.php:7 msgid "Reset password" -msgstr "" +msgstr "Passwuert nei setzen" diff --git a/l10n/lb/files.po b/l10n/lb/files.po index e0b8b1c4bcd085812fc5d24ad008bd7a09b12ea3..795847eb7abd49b0f3646e9a4d1801fe259ecffb 100644 --- a/l10n/lb/files.po +++ b/l10n/lb/files.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # <sim0n@trypill.org>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-09-03 14:50+0200\n" -"PO-Revision-Date: 2011-08-25 14:23+0000\n" -"Last-Translator: sim0n <sim0n@trypill.org>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" "Language-Team: Luxembourgish (http://www.transifex.net/projects/p/owncloud/team/lb/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,6 +18,32 @@ msgstr "" "Language: lb\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + #: appinfo/app.php:7 msgid "Files" msgstr "Dateien" @@ -25,43 +52,43 @@ msgstr "Dateien" msgid "Maximum upload size" msgstr "Maximum Upload Gréisst " -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" msgstr "Eroplueden" -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" msgstr "Neien Dossier" -#: templates/index.php:24 +#: templates/index.php:31 msgid "Nothing in here. Upload something!" msgstr "Hei ass näischt. Lued eppes rop!" -#: templates/index.php:31 +#: templates/index.php:39 msgid "Name" msgstr "Numm" -#: templates/index.php:33 +#: templates/index.php:41 msgid "Download" msgstr "Eroflueden" -#: templates/index.php:37 +#: templates/index.php:45 msgid "Size" msgstr "Gréisst" -#: templates/index.php:38 +#: templates/index.php:46 msgid "Modified" msgstr "Geännert" -#: templates/index.php:38 +#: templates/index.php:46 msgid "Delete" msgstr "Läschen" -#: templates/index.php:46 +#: templates/index.php:54 msgid "Upload too large" msgstr "Upload ze grouss" -#: templates/index.php:48 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." diff --git a/l10n/lb/settings.po b/l10n/lb/settings.po index c0c6183555964237d21dd0c311fea90f2bb8b068..3f8ef7ff305557c211b233e382b09114a90f5f50 100644 --- a/l10n/lb/settings.po +++ b/l10n/lb/settings.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # <sim0n@trypill.org>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-09-03 14:50+0200\n" -"PO-Revision-Date: 2011-08-27 23:13+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-17 14:28+0000\n" +"Last-Translator: sim0n <sim0n@trypill.org>\n" "Language-Team: Luxembourgish (http://www.transifex.net/projects/p/owncloud/team/lb/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -81,7 +82,7 @@ msgstr "Däin Passwuert ass geännert ginn" #: templates/personal.php:14 msgid "Unable to change your password" -msgstr "" +msgstr "Konnt däin Passwuert net änneren" #: templates/personal.php:15 msgid "Current password" @@ -107,7 +108,7 @@ msgstr "Sprooch" msgid "Help translating" msgstr "Hëllef ze Iwwersetzen" -#: templates/personal.php:36 +#: templates/personal.php:37 msgid "use this address to connect to your ownCloud in your file manager" msgstr "" "benotz dës Adress fir dech un deng ownCloud iwwert däin Datei Manager ze " diff --git a/l10n/ms_MY/calendar.po b/l10n/ms_MY/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..24fa26eeda3c077830e9a805d39ed9a7198f5636 --- /dev/null +++ b/l10n/ms_MY/calendar.po @@ -0,0 +1,465 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# <hadri.hilmi@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Malay (Malaysia) (http://www.transifex.net/projects/p/owncloud/team/ms_MY/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ms_MY\n" +"Plural-Forms: nplurals=1; plural=0\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "Ralat pengesahan" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "Zon waktu diubah" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "Permintaan tidak sah" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "Kalendar" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "" + +#: lib/object.php:293 +msgid "Business" +msgstr "" + +#: lib/object.php:294 +msgid "Call" +msgstr "" + +#: lib/object.php:295 +msgid "Clients" +msgstr "" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "" + +#: lib/object.php:299 +msgid "Journey" +msgstr "" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "" + +#: lib/object.php:302 +msgid "Other" +msgstr "" + +#: lib/object.php:303 +msgid "Personal" +msgstr "" + +#: lib/object.php:304 +msgid "Projects" +msgstr "" + +#: lib/object.php:305 +msgid "Questions" +msgstr "" + +#: lib/object.php:306 +msgid "Work" +msgstr "" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "Tidak berulang" + +#: lib/object.php:314 +msgid "Daily" +msgstr "Harian" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "Mingguan" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "Setiap hari minggu" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "Dua kali seminggu" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "Bulanan" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "Tahunan" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "Sepanjang hari" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "Ahad" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "Isnin" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "Selasa" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "Rabu" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "Khamis" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "Jumaat" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Sabtu" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "Ahad" + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "Isnin" + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "Selasa" + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "Rabu" + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "Khamis" + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "Jumaat" + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "Sabtu" + +#: templates/calendar.php:34 +msgid "January" +msgstr "Januari" + +#: templates/calendar.php:34 +msgid "February" +msgstr "Februari" + +#: templates/calendar.php:34 +msgid "March" +msgstr "Mac" + +#: templates/calendar.php:34 +msgid "April" +msgstr "April " + +#: templates/calendar.php:34 +msgid "May" +msgstr "Mei" + +#: templates/calendar.php:34 +msgid "June" +msgstr "Jun" + +#: templates/calendar.php:34 +msgid "July" +msgstr "Julai" + +#: templates/calendar.php:34 +msgid "August" +msgstr "Ogos" + +#: templates/calendar.php:34 +msgid "September" +msgstr "September" + +#: templates/calendar.php:34 +msgid "October" +msgstr "Oktober" + +#: templates/calendar.php:34 +msgid "November" +msgstr "November" + +#: templates/calendar.php:34 +msgid "December" +msgstr "Disember" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "Jan" + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "Feb" + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "Mac" + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "Apr" + +#: templates/calendar.php:35 +msgid "May." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "Jun" + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "Jul" + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "Ogos" + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "Sep" + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "Okt" + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "Nov" + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "Dis" + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "Minggu" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Minggu" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "Hari" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "Bulan" + +#: templates/calendar.php:53 +msgid "List" +msgstr "" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "Hari ini" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "Kalendar" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "Waktu" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "Berlaku kegagalan ketika penguraian fail. " + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "Pilih kalendar yang aktif" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "Muat turun" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "Edit" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "Edit kalendar" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Paparan nama" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "Aktif" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "Huraian" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "Warna kalendar" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "Hantar" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "Edit agenda" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "Tajuk" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "Tajuk agenda" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "Lokasi" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "Lokasi agenda" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "kategori" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "Agenda di sepanjang hari " + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "Dari" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "ke" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "Ulang" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "Hadirin" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "Huraian agenda" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "Tutup" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "Buat agenda baru" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "Zon waktu" + + diff --git a/l10n/ms_MY/contacts.po b/l10n/ms_MY/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..59b737d3660dc17f9c5f5d2676021600c7c47719 --- /dev/null +++ b/l10n/ms_MY/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:10+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Malay (Malaysia) (http://www.transifex.net/projects/p/owncloud/team/ms_MY/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ms_MY\n" +"Plural-Forms: nplurals=1; plural=0\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/ms_MY/core.po b/l10n/ms_MY/core.po new file mode 100644 index 0000000000000000000000000000000000000000..fdd7e66e3ae819cdff7ffeec4e2442629bf53864 --- /dev/null +++ b/l10n/ms_MY/core.po @@ -0,0 +1,160 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# <hadri.hilmi@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-15 13:57+0000\n" +"Last-Translator: hadrihilmi <hadri.hilmi@gmail.com>\n" +"Language-Team: Malay (Malaysia) (http://www.transifex.net/projects/p/owncloud/team/ms_MY/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ms_MY\n" +"Plural-Forms: nplurals=1; plural=0\n" + +#: strings.php:5 +msgid "Personal" +msgstr "Peribadi" + +#: strings.php:6 +msgid "Users" +msgstr "Pengguna" + +#: strings.php:7 +msgid "Apps" +msgstr "Aplikasi" + +#: strings.php:8 +msgid "Admin" +msgstr "Admin" + +#: strings.php:9 +msgid "Help" +msgstr "Bantuan" + +#: templates/404.php:12 +msgid "Cloud not found" +msgstr "Awan tidak dijumpai" + +#: templates/installation.php:20 +msgid "Create an <strong>admin account</strong>" +msgstr "buat <strong>akaun admin</strong>" + +#: templates/installation.php:21 +msgid "Username" +msgstr "Nama pengguna" + +#: templates/installation.php:22 +msgid "Password" +msgstr "Kata laluan" + +#: templates/installation.php:27 +msgid "Configure the database" +msgstr "Konfigurasi pangkalan data" + +#: templates/installation.php:32 templates/installation.php:43 +#: templates/installation.php:53 +msgid "will be used" +msgstr "akan digunakan" + +#: templates/installation.php:64 +msgid "Database user" +msgstr "Nama pengguna pangkalan data" + +#: templates/installation.php:65 +msgid "Database password" +msgstr "Kata laluan pangkalan data" + +#: templates/installation.php:66 +msgid "Database name" +msgstr "Nama pangkalan data" + +#: templates/installation.php:72 +msgid "Advanced" +msgstr "Maju" + +#: templates/installation.php:75 +msgid "Database host" +msgstr "Hos pangkalan data" + +#: templates/installation.php:76 +msgid "Data folder" +msgstr "Fail data" + +#: templates/installation.php:79 +msgid "Finish setup" +msgstr "Setup selesai" + +#: templates/layout.guest.php:35 +msgid "gives you freedom and control over your own data" +msgstr "memberikan anda kebebasan dan kendalian keatas data anda" + +#: templates/layout.user.php:34 +msgid "Log out" +msgstr "Log keluar" + +#: templates/layout.user.php:46 templates/layout.user.php:47 +msgid "Settings" +msgstr "Tetapan" + +#: templates/login.php:4 +msgid "Lost your password?" +msgstr "Hilang kata laluan?" + +#: templates/login.php:9 templates/login.php:13 +msgid "remember" +msgstr "ingat" + +#: templates/logout.php:1 +msgid "You are logged out." +msgstr "Anda telah log keluar." + +#: templates/lostpassword.php:3 +msgid "You will receive a link to reset your password via Email." +msgstr "" +"Anda akan menerima link untuk menetapkan semula kata laluan anda melalui " +"emel" + +#: templates/lostpassword.php:5 +msgid "Requested" +msgstr "diminta" + +#: templates/lostpassword.php:8 +msgid "Login failed!" +msgstr "Log in gagal!" + +#: templates/lostpassword.php:10 +msgid "Username or Email" +msgstr "Nama pengguna atau Emel" + +#: templates/lostpassword.php:11 +msgid "Request reset" +msgstr "Minta set semula" + +#: templates/part.pagenavi.php:3 +msgid "prev" +msgstr "sebelum" + +#: templates/part.pagenavi.php:20 +msgid "next" +msgstr "seterus" + +#: templates/resetpassword.php:4 +msgid "Your password was reset" +msgstr "Kata laluan anda diset semula" + +#: templates/resetpassword.php:6 +msgid "New password" +msgstr "Kata laluan baru" + +#: templates/resetpassword.php:7 +msgid "Reset password" +msgstr "Set semula kata laluan" + + diff --git a/l10n/ms_MY/files.po b/l10n/ms_MY/files.po new file mode 100644 index 0000000000000000000000000000000000000000..2e340c01696a67328a1c0eadf6732649b64a2ebf --- /dev/null +++ b/l10n/ms_MY/files.po @@ -0,0 +1,97 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# <hadri.hilmi@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Malay (Malaysia) (http://www.transifex.net/projects/p/owncloud/team/ms_MY/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ms_MY\n" +"Plural-Forms: nplurals=1; plural=0\n" + +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + +#: appinfo/app.php:7 +msgid "Files" +msgstr "fail" + +#: templates/admin.php:5 +msgid "Maximum upload size" +msgstr "Saiz maksimum muat naik" + +#: templates/index.php:10 +msgid "Upload" +msgstr "Muat naik" + +#: templates/index.php:17 +msgid "New Folder" +msgstr "Folder baru" + +#: templates/index.php:31 +msgid "Nothing in here. Upload something!" +msgstr "Tiada apa-apa di sini. Muat naik sesuatu!" + +#: templates/index.php:39 +msgid "Name" +msgstr "Nama " + +#: templates/index.php:41 +msgid "Download" +msgstr "Muat turun" + +#: templates/index.php:45 +msgid "Size" +msgstr "Saiz" + +#: templates/index.php:46 +msgid "Modified" +msgstr "Dimodifikasi" + +#: templates/index.php:46 +msgid "Delete" +msgstr "Padam" + +#: templates/index.php:54 +msgid "Upload too large" +msgstr "Muat naik terlalu besar" + +#: templates/index.php:56 +msgid "" +"The files you are trying to upload exceed the maximum size for file uploads " +"on this server." +msgstr "Fail yang cuba dimuat naik melebihi saiz maksimum fail upload server" + + diff --git a/l10n/ms_MY/media.po b/l10n/ms_MY/media.po new file mode 100644 index 0000000000000000000000000000000000000000..f6c41264bc10700c8e4225b402b494f1893312d0 --- /dev/null +++ b/l10n/ms_MY/media.po @@ -0,0 +1,69 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# <hadri.hilmi@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-09 00:01+0000\n" +"Last-Translator: hadrihilmi <hadri.hilmi@gmail.com>\n" +"Language-Team: Malay (Malaysia) (http://www.transifex.net/projects/p/owncloud/team/ms_MY/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ms_MY\n" +"Plural-Forms: nplurals=1; plural=0\n" + +#: appinfo/app.php:31 +msgid "Music" +msgstr "Muzik" + +#: templates/music.php:3 +msgid "Play" +msgstr "Main" + +#: templates/music.php:4 templates/music.php:30 +msgid "Pause" +msgstr "Jeda" + +#: templates/music.php:5 +msgid "Previous" +msgstr "Sebelum" + +#: templates/music.php:6 +msgid "Next" +msgstr "Seterus" + +#: templates/music.php:7 +msgid "Mute" +msgstr "Bisu" + +#: templates/music.php:8 +msgid "Unmute" +msgstr "Nyahbisu" + +#: templates/music.php:28 +msgid "Songs scanned" +msgstr "Lagu telah diimbas" + +#: templates/music.php:29 +msgid "Rescan Collection" +msgstr "Imbas semula koleksi" + +#: templates/music.php:37 +msgid "Artist" +msgstr "Artis" + +#: templates/music.php:38 +msgid "Album" +msgstr "Album" + +#: templates/music.php:39 +msgid "Title" +msgstr "Judul" + + diff --git a/l10n/ms_MY/settings.po b/l10n/ms_MY/settings.po new file mode 100644 index 0000000000000000000000000000000000000000..dda63fafd8d92a6516aa8297dcd4b1663a09d3b6 --- /dev/null +++ b/l10n/ms_MY/settings.po @@ -0,0 +1,134 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# <hadri.hilmi@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-15 14:00+0000\n" +"Last-Translator: hadrihilmi <hadri.hilmi@gmail.com>\n" +"Language-Team: Malay (Malaysia) (http://www.transifex.net/projects/p/owncloud/team/ms_MY/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ms_MY\n" +"Plural-Forms: nplurals=1; plural=0\n" + +#: ajax/openid.php:13 ajax/setlanguage.php:13 +msgid "Authentication error" +msgstr "Ralat pengesahan" + +#: ajax/openid.php:21 +msgid "OpenID Changed" +msgstr "OpenID ditukar" + +#: ajax/openid.php:23 ajax/setlanguage.php:23 +msgid "Invalid request" +msgstr "Permintaan tidak sah" + +#: ajax/setlanguage.php:21 +msgid "Language changed" +msgstr "Bahasa ditukar" + +#: templates/apps.php:8 +msgid "Add your application" +msgstr "Tambah aplikasi anda" + +#: templates/apps.php:21 +msgid "Select an App" +msgstr "Pilih aplikasi" + +#: templates/apps.php:23 +msgid "-licensed" +msgstr "-dilesen" + +#: templates/apps.php:23 +msgid "by" +msgstr "oleh" + +#: templates/help.php:8 +msgid "Ask a question" +msgstr "Tanya soalan" + +#: templates/help.php:17 +msgid "Problems connecting to help database." +msgstr "Masalah menghubung untuk membantu pengkalan data" + +#: templates/help.php:18 +msgid "Go there manually." +msgstr "Pergi ke sana secara manual" + +#: templates/help.php:26 +msgid "Answer" +msgstr "Jawapan" + +#: templates/personal.php:8 +msgid "You use" +msgstr "Anda menggunakan" + +#: templates/personal.php:8 +msgid "of the available" +msgstr "yang tersedia" + +#: templates/personal.php:13 +msgid "Your password got changed" +msgstr "Kata laluan anda ditukar" + +#: templates/personal.php:14 +msgid "Unable to change your password" +msgstr "Gagal menukar kata laluan anda " + +#: templates/personal.php:15 +msgid "Current password" +msgstr "Kata laluan terkini" + +#: templates/personal.php:16 +msgid "New password" +msgstr "Kata laluan baru" + +#: templates/personal.php:17 +msgid "show" +msgstr "Papar" + +#: templates/personal.php:18 +msgid "Change password" +msgstr "Tukar kata laluan" + +#: templates/personal.php:24 templates/personal.php:25 +msgid "Language" +msgstr "Bahasa" + +#: templates/personal.php:30 +msgid "Help translating" +msgstr "Bantu perterjemahan" + +#: templates/personal.php:37 +msgid "use this address to connect to your ownCloud in your file manager" +msgstr "" +"guna alamat ini untuk menyambung owncloud anda dalam pengurus fail anda" + +#: templates/users.php:16 +msgid "Name" +msgstr "Nama" + +#: templates/users.php:17 +msgid "Password" +msgstr "Kata laluan " + +#: templates/users.php:18 templates/users.php:36 +msgid "Groups" +msgstr "Kumpulan" + +#: templates/users.php:24 +msgid "Create" +msgstr "Buat" + +#: templates/users.php:48 +msgid "Delete" +msgstr "Padam" + + diff --git a/l10n/nb_NO/calendar.po b/l10n/nb_NO/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..b80bf9cbb764a259f0852bd2d9b0fdd9593d4b6f --- /dev/null +++ b/l10n/nb_NO/calendar.po @@ -0,0 +1,465 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# <ajarmund@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.net/projects/p/owncloud/team/nb_NO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nb_NO\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "Autentifikasjonsfeil" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "Tidssone endret" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "Ugyldig forespørsel" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "Kalender" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "" + +#: lib/object.php:293 +msgid "Business" +msgstr "" + +#: lib/object.php:294 +msgid "Call" +msgstr "" + +#: lib/object.php:295 +msgid "Clients" +msgstr "" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "" + +#: lib/object.php:299 +msgid "Journey" +msgstr "" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "" + +#: lib/object.php:302 +msgid "Other" +msgstr "" + +#: lib/object.php:303 +msgid "Personal" +msgstr "" + +#: lib/object.php:304 +msgid "Projects" +msgstr "" + +#: lib/object.php:305 +msgid "Questions" +msgstr "" + +#: lib/object.php:306 +msgid "Work" +msgstr "" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "Gjentas ikke" + +#: lib/object.php:314 +msgid "Daily" +msgstr "Daglig" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "Ukentlig" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "Hver ukedag" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "MÃ¥nedlig" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "Ã…rlig" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "Hele dagen " + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "Søndag" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "Mandag" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "Tirsdag" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "Onsdag" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "Torsdag" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "Fredag" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Lørdag" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "Sø." + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "Ma." + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "Ti." + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "On." + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "To." + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "Fr." + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "Lø." + +#: templates/calendar.php:34 +msgid "January" +msgstr "Januar" + +#: templates/calendar.php:34 +msgid "February" +msgstr "Februar" + +#: templates/calendar.php:34 +msgid "March" +msgstr "Mars" + +#: templates/calendar.php:34 +msgid "April" +msgstr "April" + +#: templates/calendar.php:34 +msgid "May" +msgstr "Mai" + +#: templates/calendar.php:34 +msgid "June" +msgstr "Juni" + +#: templates/calendar.php:34 +msgid "July" +msgstr "Juli" + +#: templates/calendar.php:34 +msgid "August" +msgstr "August" + +#: templates/calendar.php:34 +msgid "September" +msgstr "September" + +#: templates/calendar.php:34 +msgid "October" +msgstr "Oktober" + +#: templates/calendar.php:34 +msgid "November" +msgstr "November" + +#: templates/calendar.php:34 +msgid "December" +msgstr "Desember" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "jan." + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "feb." + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "mar." + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "apr." + +#: templates/calendar.php:35 +msgid "May." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "jun." + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "jul." + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "aug." + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "sep." + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "okt." + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "nov." + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "des." + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "Uke" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Uke" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "Dag" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "ned" + +#: templates/calendar.php:53 +msgid "List" +msgstr "" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "I dag" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "Kalendre" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "Tid" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "" + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "Velg en aktiv kalender" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "Last ned" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "Endre" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "Rediger kalender" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Visningsnavn" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "Aktiv" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "Beskrivelse" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "Kalenderfarge" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "Lagre" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "Rediger en hendelse" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "Tittel" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "Hendelsestittel" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "Sted" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "Hendelsessted" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "Kategori" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "Hele dagen-hendelse" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "Fra" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "Til" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "Gjenta" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "Deltakere" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "Hendelesebeskrivelse" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "Lukk" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "Opprett en ny hendelse" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "Tidssone" + + diff --git a/l10n/nb_NO/contacts.po b/l10n/nb_NO/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..430819ce1c97b302dafd4c7fac67c6497c10b8d9 --- /dev/null +++ b/l10n/nb_NO/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:11+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.net/projects/p/owncloud/team/nb_NO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nb_NO\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/nb_NO/files.po b/l10n/nb_NO/files.po index 9ef6153604a93d9da8d1b6a106afa4740227da2b..c3bfd2ffbfc868f9037e54249638ce6d7cb31dda 100644 --- a/l10n/nb_NO/files.po +++ b/l10n/nb_NO/files.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # <ajarmund@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-09-03 14:50+0200\n" -"PO-Revision-Date: 2011-08-28 19:32+0000\n" -"Last-Translator: anjar <ajarmund@gmail.com>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" "Language-Team: Norwegian BokmÃ¥l (Norway) (http://www.transifex.net/projects/p/owncloud/team/nb_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,6 +18,32 @@ msgstr "" "Language: nb_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + #: appinfo/app.php:7 msgid "Files" msgstr "Filer" @@ -25,43 +52,43 @@ msgstr "Filer" msgid "Maximum upload size" msgstr "Maksimum opplastingsstørrelse" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" msgstr "Last opp" -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" msgstr "Ny mappe" -#: templates/index.php:24 +#: templates/index.php:31 msgid "Nothing in here. Upload something!" msgstr "Ingenting her. Last opp noe!" -#: templates/index.php:31 +#: templates/index.php:39 msgid "Name" msgstr "Navn" -#: templates/index.php:33 +#: templates/index.php:41 msgid "Download" msgstr "Last ned" -#: templates/index.php:37 +#: templates/index.php:45 msgid "Size" msgstr "Størrelse" -#: templates/index.php:38 +#: templates/index.php:46 msgid "Modified" msgstr "Endret" -#: templates/index.php:38 +#: templates/index.php:46 msgid "Delete" msgstr "Slett" -#: templates/index.php:46 +#: templates/index.php:54 msgid "Upload too large" msgstr "Opplasting for stor" -#: templates/index.php:48 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." diff --git a/l10n/nl/calendar.po b/l10n/nl/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..8688a7d55f476dbdf35dd9ecb5037b5ba468e6b8 --- /dev/null +++ b/l10n/nl/calendar.po @@ -0,0 +1,465 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# <bart.formosus@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Dutch (http://www.transifex.net/projects/p/owncloud/team/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "Foute aanvraag" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "U kunt maar een venster tegelijk openen." + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "Ongeldige aanvraag" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "Weergavenaam" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "" + +#: lib/object.php:293 +msgid "Business" +msgstr "" + +#: lib/object.php:294 +msgid "Call" +msgstr "" + +#: lib/object.php:295 +msgid "Clients" +msgstr "" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "" + +#: lib/object.php:299 +msgid "Journey" +msgstr "" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "" + +#: lib/object.php:302 +msgid "Other" +msgstr "" + +#: lib/object.php:303 +msgid "Personal" +msgstr "" + +#: lib/object.php:304 +msgid "Projects" +msgstr "" + +#: lib/object.php:305 +msgid "Questions" +msgstr "" + +#: lib/object.php:306 +msgid "Work" +msgstr "" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "Wordt niet herhaald" + +#: lib/object.php:314 +msgid "Daily" +msgstr "Dagelijks" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "Wekelijks" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "Elke weekdag" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "Tweewekelijks" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "Maandelijks" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "Jaarlijks" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "Tweewekelijks" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "Zondag" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "Maandag" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "Dinsdag" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "Woensdag" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "Donderdag" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "Vrijdag" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Zaterdag" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "Zo" + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "Ma" + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "Di" + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "Wo" + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "Do" + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "Vr" + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "Za" + +#: templates/calendar.php:34 +msgid "January" +msgstr "Januari" + +#: templates/calendar.php:34 +msgid "February" +msgstr "Februari" + +#: templates/calendar.php:34 +msgid "March" +msgstr "Maart" + +#: templates/calendar.php:34 +msgid "April" +msgstr "April" + +#: templates/calendar.php:34 +msgid "May" +msgstr "Mei" + +#: templates/calendar.php:34 +msgid "June" +msgstr "Juni" + +#: templates/calendar.php:34 +msgid "July" +msgstr "Juli" + +#: templates/calendar.php:34 +msgid "August" +msgstr "Augustus" + +#: templates/calendar.php:34 +msgid "September" +msgstr "September" + +#: templates/calendar.php:34 +msgid "October" +msgstr "Oktober" + +#: templates/calendar.php:34 +msgid "November" +msgstr "November" + +#: templates/calendar.php:34 +msgid "December" +msgstr "December" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "Jan" + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "Feb" + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "Maa" + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "Apr" + +#: templates/calendar.php:35 +msgid "May." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "Jun" + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "Jul" + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "Aug" + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "Sept" + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "Okt" + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "Nov" + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "Dec" + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "Week" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Weken" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "Dag" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "Maand" + +#: templates/calendar.php:53 +msgid "List" +msgstr "" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "Vandaag" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "Kalenders" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "Tijd" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "Er is een fout opgetreden bij het verwerken van het bestand." + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "Kies actieve kalenders" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "Download" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "Bewerken" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "Bewerk kalender" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Weergavenaam" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "Actief" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "Beschrijving" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "Kalender kleur" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "Opslaan" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "Bewerken een evenement" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "Titel" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "Titel van het evenement" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "Locatie" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "Locatie van het evenement" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "Categorie" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "Hele dag" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "Van" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "Aan" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "Herhalen" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "Deelnemers" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "Beschrijving van het evenement" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "Sluiten" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "Maak een nieuw evenement" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "Tijdzone" + + diff --git a/l10n/nl/contacts.po b/l10n/nl/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..48de047d7a44b23289df69bcb421409d855df919 --- /dev/null +++ b/l10n/nl/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:11+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Dutch (http://www.transifex.net/projects/p/owncloud/team/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/nl/core.po b/l10n/nl/core.po index 37d7bd57e4adae03de9a448cc55ec23ad0b4f391..0a296a3685d5d5eb24b83f259b98ee3dbcbb5f25 100644 --- a/l10n/nl/core.po +++ b/l10n/nl/core.po @@ -2,15 +2,17 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # -# <koen@vervloesem.eu>, 2011. +# Translators: +# <bart.formosus@gmail.com>, 2011. # <icewind1991@gmail.com>, 2011. +# <koen@vervloesem.eu>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" -"POT-Creation-Date: 2011-09-04 18:14+0200\n" -"PO-Revision-Date: 2011-09-04 16:14+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-15 09:12+0000\n" +"Last-Translator: isama <bart.formosus@gmail.com>\n" "Language-Team: Dutch (http://www.transifex.net/projects/p/owncloud/team/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -81,7 +83,7 @@ msgstr "Geavanceerd" #: templates/installation.php:75 msgid "Database host" -msgstr "" +msgstr "Database server" #: templates/installation.php:76 msgid "Data folder" @@ -93,7 +95,7 @@ msgstr "Installatie afronden" #: templates/layout.guest.php:35 msgid "gives you freedom and control over your own data" -msgstr "" +msgstr "geeft u vrijheid en controle over uw eigen data" #: templates/layout.user.php:34 msgid "Log out" @@ -105,7 +107,7 @@ msgstr "Instellingen" #: templates/login.php:4 msgid "Lost your password?" -msgstr "" +msgstr "Uw wachtwoord vergeten?" #: templates/login.php:9 templates/login.php:13 msgid "remember" @@ -117,11 +119,11 @@ msgstr "U bent afgemeld." #: templates/lostpassword.php:3 msgid "You will receive a link to reset your password via Email." -msgstr "" +msgstr "U ontvangt een link om uw wachtwoord te wijzigen via Email" #: templates/lostpassword.php:5 msgid "Requested" -msgstr "" +msgstr "Aangevraagd" #: templates/lostpassword.php:8 msgid "Login failed!" @@ -129,11 +131,11 @@ msgstr "Aanmelden mislukt!" #: templates/lostpassword.php:10 msgid "Username or Email" -msgstr "" +msgstr "Gebruikersnaam of Email" #: templates/lostpassword.php:11 msgid "Request reset" -msgstr "" +msgstr "Wachtwoordreset aanvragen" #: templates/part.pagenavi.php:3 msgid "prev" @@ -145,14 +147,14 @@ msgstr "volgende" #: templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "" +msgstr "Uw wachtwoord is opnieuw ingesteld" #: templates/resetpassword.php:6 msgid "New password" -msgstr "" +msgstr "Nieuw wachtwoord" #: templates/resetpassword.php:7 msgid "Reset password" -msgstr "" +msgstr "Reset wachtwoord" diff --git a/l10n/nl/files.po b/l10n/nl/files.po index 8591e5d7843b16bcfe65d15630b76b8f80ee1914..67178beb961147295fa3f4ae12b89d2606bd422a 100644 --- a/l10n/nl/files.po +++ b/l10n/nl/files.po @@ -2,14 +2,16 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # <icewind1991@gmail.com>, 2011. +# <koen@vervloesem.eu>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-08-18 18:58+0200\n" -"PO-Revision-Date: 2011-08-18 13:14+0000\n" -"Last-Translator: icewind <icewind1991@gmail.com>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" "Language-Team: Dutch (http://www.transifex.net/projects/p/owncloud/team/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,56 +19,82 @@ msgstr "" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + #: appinfo/app.php:7 msgid "Files" msgstr "Bestanden" #: templates/admin.php:5 msgid "Maximum upload size" -msgstr "Maximaale bestands groote voor uploads" - -#: templates/part.list.php:1 -msgid "Nothing in here. Upload something!" -msgstr "Er bevind zich hier niks, upload een bestand." +msgstr "Maximale bestandsgrootte voor uploads" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" -msgstr "Uploaden" +msgstr "Upload" -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" -msgstr "Nieuwe Map" +msgstr "Nieuwe map" -#: templates/index.php:29 +#: templates/index.php:31 +msgid "Nothing in here. Upload something!" +msgstr "Er bevindt zich hier niets. Upload een bestand!" + +#: templates/index.php:39 msgid "Name" msgstr "Naam" -#: templates/index.php:31 +#: templates/index.php:41 msgid "Download" msgstr "Download" -#: templates/index.php:35 +#: templates/index.php:45 msgid "Size" -msgstr "Bestandsgroote" +msgstr "Bestandsgrootte" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Modified" msgstr "Laatst aangepast" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Delete" -msgstr "Verwijderen" +msgstr "Verwijder" -#: templates/index.php:44 +#: templates/index.php:54 msgid "Upload too large" msgstr "Bestanden te groot" -#: templates/index.php:46 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "" -"De bestanden die U probeert up te loaden zijn grooter dan de maximaal " -"toegstane groote voor deze server." +"De bestanden die u probeert te uploaden zijn groter dan de maximaal " +"toegestane bestandsgrootte voor deze server." diff --git a/l10n/pl/calendar.po b/l10n/pl/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..d1010cebe43c5d7e3fce822b0f3bea6b52e1ef6b --- /dev/null +++ b/l10n/pl/calendar.po @@ -0,0 +1,465 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Marcin MaÅ‚ecki <gerber@tkdami.net>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Polish (http://www.transifex.net/projects/p/owncloud/team/pl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pl\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "BÅ‚Ä…d uwierzytelniania" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "ZÅ‚y kalendarz" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "Strefa czasowa zostaÅ‚a zmieniona" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "NieprawidÅ‚owe żądanie" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "Kalendarz" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "Urodziny" + +#: lib/object.php:293 +msgid "Business" +msgstr "Interes" + +#: lib/object.php:294 +msgid "Call" +msgstr "Rozmowa" + +#: lib/object.php:295 +msgid "Clients" +msgstr "Klienci" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "PrzesyÅ‚ka" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "ÅšwiÄ™ta" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "PomysÅ‚y" + +#: lib/object.php:299 +msgid "Journey" +msgstr "Podróż" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "Jubileusz" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "Spotkanie" + +#: lib/object.php:302 +msgid "Other" +msgstr "Inne" + +#: lib/object.php:303 +msgid "Personal" +msgstr "Osobisty" + +#: lib/object.php:304 +msgid "Projects" +msgstr "Projekty" + +#: lib/object.php:305 +msgid "Questions" +msgstr "Pytania" + +#: lib/object.php:306 +msgid "Work" +msgstr "Praca" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "Nie powtarza siÄ™" + +#: lib/object.php:314 +msgid "Daily" +msgstr "Codziennie" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "Tygodniowo" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "Każdy dzieÅ„ tygodnia" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "Dwa razy w tygodniu" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "MiesiÄ™cznie" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "Rocznie" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "Nie ma w tablicy" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "CaÅ‚y dzieÅ„" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "Niedziela" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "PoniedziaÅ‚ek" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "Wtorek" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "Åšroda" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "Czwartek" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "PiÄ…tek" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Sobota" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "Nie." + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "Po." + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "Wt." + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "Åšr." + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "Cz.." + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "PiÄ…." + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "So." + +#: templates/calendar.php:34 +msgid "January" +msgstr "StyczeÅ„" + +#: templates/calendar.php:34 +msgid "February" +msgstr "Luty" + +#: templates/calendar.php:34 +msgid "March" +msgstr "Marzec" + +#: templates/calendar.php:34 +msgid "April" +msgstr "KwiecieÅ„" + +#: templates/calendar.php:34 +msgid "May" +msgstr "Maj" + +#: templates/calendar.php:34 +msgid "June" +msgstr "Czerwiec" + +#: templates/calendar.php:34 +msgid "July" +msgstr "Lipiec" + +#: templates/calendar.php:34 +msgid "August" +msgstr "SierpieÅ„" + +#: templates/calendar.php:34 +msgid "September" +msgstr "WrzesieÅ„" + +#: templates/calendar.php:34 +msgid "October" +msgstr "Październik" + +#: templates/calendar.php:34 +msgid "November" +msgstr "Listopad" + +#: templates/calendar.php:34 +msgid "December" +msgstr "GrudzieÅ„" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "Sty." + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "Lut." + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "Mar." + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "Kwi." + +#: templates/calendar.php:35 +msgid "May." +msgstr "Może." + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "Cze." + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "Lip." + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "Sie." + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "Wrz." + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "Paź." + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "Lis." + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "Gru." + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "TydzieÅ„" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Tygodnie" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "WiÄ™cej przed {startdate}" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "WiÄ™cej po {enddate}" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "DzieÅ„" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "MiesiÄ…c" + +#: templates/calendar.php:53 +msgid "List" +msgstr "Lista" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "Dzisiaj" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "Kalendarze" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "Czas" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "NastÄ…piÅ‚ problem przy parsowaniu pliku.." + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "Wybierz aktywne kalendarze" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "Nowy kalendarz" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "Link do CalDAV" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "Pobierz" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "Edytuj" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "Nowy kalendarz" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "Edycja kalendarza" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Displayname" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "Aktywny" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "Opis" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "Kalendarz kolor" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "Zapisz" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "PrzeÅ›lij" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "Anuluj" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "Edycja zdarzenia" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "TytuÅ‚" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "TytuÅ‚ zdarzenia" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "Lokalizacja" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "Lokalizacja zdarzenia" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "Kategoria" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "Wybierz kategoriÄ™" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "CaÅ‚odniowe wydarzenie" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "Z" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "Do" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "Powtórz" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "Uczestnicy" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "Opis zdarzenia" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "Zamknij" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "Stwórz nowe wydarzenie" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "Strefa czasowa" + + diff --git a/l10n/pl/contacts.po b/l10n/pl/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..a8793db4831df1a93bd82205c50167eb977950d1 --- /dev/null +++ b/l10n/pl/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:11+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Polish (http://www.transifex.net/projects/p/owncloud/team/pl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pl\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/pl/core.po b/l10n/pl/core.po index 63dfc9651e9f6520bad66bf09fb444992019f036..4883af328b9787f7d96c8248bf088724667c3d41 100644 --- a/l10n/pl/core.po +++ b/l10n/pl/core.po @@ -2,17 +2,18 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # Kamil DomaÅ„ski <kdomanski@kdemail.net>, 2011. -# <mosslar@gmail.com>, 2011. # Marcin MaÅ‚ecki <gerber@tkdami.net>, 2011. # Marcin MaÅ‚ecki <mosslar@gmail.com>, 2011. +# <mosslar@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" -"POT-Creation-Date: 2011-09-04 18:14+0200\n" -"PO-Revision-Date: 2011-09-04 16:14+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-05 09:18+0000\n" +"Last-Translator: mosslar <gerber@tkdami.net>\n" "Language-Team: Polish (http://www.transifex.net/projects/p/owncloud/team/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -95,7 +96,7 @@ msgstr "ZakoÅ„cz instalacjÄ™" #: templates/layout.guest.php:35 msgid "gives you freedom and control over your own data" -msgstr "" +msgstr "zapewnia Ci wolność i kontrolÄ™ nad wÅ‚asnymi danymi" #: templates/layout.user.php:34 msgid "Log out" @@ -147,7 +148,7 @@ msgstr "dalej" #: templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "" +msgstr "Twoje hasÅ‚o zostaÅ‚o zresetowane" #: templates/resetpassword.php:6 msgid "New password" diff --git a/l10n/pl/files.po b/l10n/pl/files.po index 3856765cf663c08bef01aec816d7485db85c9ebb..f7bf94df142f74af9bcf4d66717b5b472cdf865d 100644 --- a/l10n/pl/files.po +++ b/l10n/pl/files.po @@ -2,68 +2,98 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: +# <mosslar@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-08-19 13:10+0200\n" -"PO-Revision-Date: 2011-08-19 11:11+0000\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Polish (http://www.transifex.net/projects/p/owncloud/team/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" -#: appinfo/app.php:7 -msgid "Files" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" msgstr "" -#: templates/admin.php:5 -msgid "Maximum upload size" +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" msgstr "" -#: templates/part.list.php:1 -msgid "Nothing in here. Upload something!" +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" msgstr "" -#: templates/index.php:9 -msgid "Upload" +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" msgstr "" -#: templates/index.php:16 -msgid "New Folder" +#: ajax/upload.php:28 +msgid "No file was uploaded" msgstr "" -#: templates/index.php:29 -msgid "Name" +#: ajax/upload.php:29 +msgid "Missing a temporary folder" msgstr "" +#: appinfo/app.php:7 +msgid "Files" +msgstr "Pliki" + +#: templates/admin.php:5 +msgid "Maximum upload size" +msgstr "Maksymalna wielkość przesyÅ‚anego pliku" + +#: templates/index.php:10 +msgid "Upload" +msgstr "PrzeÅ›lij" + +#: templates/index.php:17 +msgid "New Folder" +msgstr "Nowy katalog" + #: templates/index.php:31 +msgid "Nothing in here. Upload something!" +msgstr "Nic tu nie ma. PrzeÅ›lij jakieÅ› pliki!" + +#: templates/index.php:39 +msgid "Name" +msgstr "Nazwa" + +#: templates/index.php:41 msgid "Download" -msgstr "" +msgstr "ÅšciÄ…ganie" -#: templates/index.php:35 +#: templates/index.php:45 msgid "Size" -msgstr "" +msgstr "Wielkość" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Modified" -msgstr "" +msgstr "Zmodyfikowano" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Delete" -msgstr "" +msgstr "Skasuj" -#: templates/index.php:44 +#: templates/index.php:54 msgid "Upload too large" -msgstr "" +msgstr "PrzesyÅ‚any plik jest za duży" -#: templates/index.php:46 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "" +"Pliki które próbujesz przesÅ‚ać, przekraczajÄ… maksymalnÄ…, dopuszczalnÄ… " +"wielkość." diff --git a/l10n/pt_BR/calendar.po b/l10n/pt_BR/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..12e2e31f03b53d746673ca6325c364cc3d2fb5d5 --- /dev/null +++ b/l10n/pt_BR/calendar.po @@ -0,0 +1,465 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Van Der Fran <transifex@vanderland.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Portuguese (Brazilian) (http://www.transifex.net/projects/p/owncloud/team/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1)\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "Erro de autenticação" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "Fuso horário alterado" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "Pedido inválido" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "Calendário" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "" + +#: lib/object.php:293 +msgid "Business" +msgstr "" + +#: lib/object.php:294 +msgid "Call" +msgstr "" + +#: lib/object.php:295 +msgid "Clients" +msgstr "" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "" + +#: lib/object.php:299 +msgid "Journey" +msgstr "" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "" + +#: lib/object.php:302 +msgid "Other" +msgstr "" + +#: lib/object.php:303 +msgid "Personal" +msgstr "" + +#: lib/object.php:304 +msgid "Projects" +msgstr "" + +#: lib/object.php:305 +msgid "Questions" +msgstr "" + +#: lib/object.php:306 +msgid "Work" +msgstr "" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "Não repetir" + +#: lib/object.php:314 +msgid "Daily" +msgstr "Diariamente" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "Semanal" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "Cada dia da semana" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "De duas em duas semanas" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "Mensal" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "Anual" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "Todo o dia" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "Domingo" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "Segunda-feira" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "Terça-feira" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "Quarta-feira" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "Quinta-feira" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "Sexta-feira" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Sábado" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "Dom." + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "Seg." + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "Ter." + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "Qua." + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "Qui." + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "Sex." + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "Sáb." + +#: templates/calendar.php:34 +msgid "January" +msgstr "Janeiro" + +#: templates/calendar.php:34 +msgid "February" +msgstr "Fevereiro" + +#: templates/calendar.php:34 +msgid "March" +msgstr "Março" + +#: templates/calendar.php:34 +msgid "April" +msgstr "Abril" + +#: templates/calendar.php:34 +msgid "May" +msgstr "Maio" + +#: templates/calendar.php:34 +msgid "June" +msgstr "Junho" + +#: templates/calendar.php:34 +msgid "July" +msgstr "Julho" + +#: templates/calendar.php:34 +msgid "August" +msgstr "Agosto" + +#: templates/calendar.php:34 +msgid "September" +msgstr "Setembro" + +#: templates/calendar.php:34 +msgid "October" +msgstr "Outubro" + +#: templates/calendar.php:34 +msgid "November" +msgstr "Novembro" + +#: templates/calendar.php:34 +msgid "December" +msgstr "Dezembro" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "Jan." + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "Fev." + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "Mar." + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "Abr." + +#: templates/calendar.php:35 +msgid "May." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "Jun." + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "Jul." + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "Ago." + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "Set." + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "Out." + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "Nov." + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "Dez." + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "Semana" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Semanas" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "Dia" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "Mês" + +#: templates/calendar.php:53 +msgid "List" +msgstr "" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "Hoje" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "Calendários" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "Tempo" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "Houve uma falha, ao analisar o arquivo." + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "Escolha calendários ativos" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "Baixar" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "Editar" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "Editar calendário" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Mostrar Nome" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "Ativo" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "Descrição" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "Cor do Calendário" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "Submeter" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "Editar um evento" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "TÃtulo" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "TÃtulo do evento" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "Local" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "Local do evento" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "Categoria" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "Evento de dia inteiro" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "De" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "Para" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "Repetir" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "Participantes" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "Descrição do Evento" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "Fechar" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "Criar um novo evento" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "Fuso horário" + + diff --git a/l10n/pt_BR/contacts.po b/l10n/pt_BR/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..4b44d17178d95d5ace67ed7b0a483883b6415d56 --- /dev/null +++ b/l10n/pt_BR/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:10+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Portuguese (Brazilian) (http://www.transifex.net/projects/p/owncloud/team/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1)\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/pt_BR/core.po b/l10n/pt_BR/core.po index c5a0595d5ad19b128e5a6c7106abc247095a1af1..4fbf39e1fffebc2d39d42418393c44e5756ec0aa 100644 --- a/l10n/pt_BR/core.po +++ b/l10n/pt_BR/core.po @@ -2,15 +2,16 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # -# Van Der Fran <transifex@vanderland.com>, 2011. +# Translators: # <duda.nogueira@metasys.com.br>, 2011. +# Van Der Fran <transifex@vanderland.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" -"POT-Creation-Date: 2011-09-04 18:14+0200\n" -"PO-Revision-Date: 2011-09-04 16:14+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-06 12:04+0000\n" +"Last-Translator: vanderland <transifex@vanderland.com>\n" "Language-Team: Portuguese (Brazilian) (http://www.transifex.net/projects/p/owncloud/team/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -81,7 +82,7 @@ msgstr "Avançado" #: templates/installation.php:75 msgid "Database host" -msgstr "" +msgstr "Banco de dados do host" #: templates/installation.php:76 msgid "Data folder" @@ -93,7 +94,7 @@ msgstr "Concluir configuração" #: templates/layout.guest.php:35 msgid "gives you freedom and control over your own data" -msgstr "" +msgstr "proporciona liberdade e controle sobre seus próprios dados" #: templates/layout.user.php:34 msgid "Log out" @@ -105,7 +106,7 @@ msgstr "Configurações" #: templates/login.php:4 msgid "Lost your password?" -msgstr "" +msgstr "Esqueçeu sua senha?" #: templates/login.php:9 templates/login.php:13 msgid "remember" @@ -117,11 +118,11 @@ msgstr "Você está desconectado." #: templates/lostpassword.php:3 msgid "You will receive a link to reset your password via Email." -msgstr "" +msgstr "Você receberá um link para redefinir sua senha via e-mail." #: templates/lostpassword.php:5 msgid "Requested" -msgstr "" +msgstr "Solicitado" #: templates/lostpassword.php:8 msgid "Login failed!" @@ -129,11 +130,11 @@ msgstr "Login sem sucesso" #: templates/lostpassword.php:10 msgid "Username or Email" -msgstr "" +msgstr "Nome de usuário ou e-mail" #: templates/lostpassword.php:11 msgid "Request reset" -msgstr "" +msgstr "Pedido de troca" #: templates/part.pagenavi.php:3 msgid "prev" @@ -145,14 +146,14 @@ msgstr "próximo" #: templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "" +msgstr "Sua senha foi trocada" #: templates/resetpassword.php:6 msgid "New password" -msgstr "" +msgstr "Nova senha" #: templates/resetpassword.php:7 msgid "Reset password" -msgstr "" +msgstr "Toca de senha" diff --git a/l10n/pt_BR/files.po b/l10n/pt_BR/files.po index 865b3eaeb9138c48c73b32ecbd3ee53f4e82eb1f..e4fba97298bb66e3b50fed223404fd2369cd94dd 100644 --- a/l10n/pt_BR/files.po +++ b/l10n/pt_BR/files.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # Van Der Fran <transifex@vanderland.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-08-13 12:41+0200\n" -"PO-Revision-Date: 2011-08-15 16:00+0000\n" -"Last-Translator: vanderland <transifex@vanderland.com>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" "Language-Team: Portuguese (Brazilian) (http://www.transifex.net/projects/p/owncloud/team/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,6 +18,32 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + #: appinfo/app.php:7 msgid "Files" msgstr "Arquivos" @@ -25,43 +52,43 @@ msgstr "Arquivos" msgid "Maximum upload size" msgstr "Tamanho máximo para carregar" -#: templates/part.list.php:1 -msgid "Nothing in here. Upload something!" -msgstr "Nada aqui.Carregar alguma coisa!" - -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" msgstr "Carregar" -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" msgstr "Nova Pasta" -#: templates/index.php:29 +#: templates/index.php:31 +msgid "Nothing in here. Upload something!" +msgstr "Nada aqui.Carregar alguma coisa!" + +#: templates/index.php:39 msgid "Name" msgstr "Nome" -#: templates/index.php:31 +#: templates/index.php:41 msgid "Download" msgstr "Baixar" -#: templates/index.php:35 +#: templates/index.php:45 msgid "Size" msgstr "Tamanho" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Modified" msgstr "Modificado" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Delete" msgstr "Excluir" -#: templates/index.php:44 +#: templates/index.php:54 msgid "Upload too large" msgstr "Arquivo muito grande" -#: templates/index.php:46 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." diff --git a/l10n/pt_BR/settings.po b/l10n/pt_BR/settings.po index 624078ef167eb04f56ec03740ef9f168c7aca2fb..987459779e9ba2cd0152dc03b5101a0873e30c8a 100644 --- a/l10n/pt_BR/settings.po +++ b/l10n/pt_BR/settings.po @@ -2,15 +2,16 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # -# Van Der Fran <transifex@vanderland.com>, 2011. +# Translators: # <duda.nogueira@metasys.com.br>, 2011. +# Van Der Fran <transifex@vanderland.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-08-28 01:11+0200\n" -"PO-Revision-Date: 2011-08-24 12:54+0000\n" -"Last-Translator: dudanogueira <duda.nogueira@metasys.com.br>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-06 12:01+0000\n" +"Last-Translator: vanderland <transifex@vanderland.com>\n" "Language-Team: Portuguese (Brazilian) (http://www.transifex.net/projects/p/owncloud/team/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -78,6 +79,10 @@ msgstr "do disponÃvel" msgid "Your password got changed" msgstr "Sua senha foi modificada" +#: templates/personal.php:14 +msgid "Unable to change your password" +msgstr "Não é possivel alterar a sua senha" + #: templates/personal.php:15 msgid "Current password" msgstr "Senha atual" @@ -94,7 +99,7 @@ msgstr "mostrar" msgid "Change password" msgstr "Alterar senha" -#: templates/personal.php:24 +#: templates/personal.php:24 templates/personal.php:25 msgid "Language" msgstr "Idioma" @@ -102,7 +107,7 @@ msgstr "Idioma" msgid "Help translating" msgstr "Ajuda na Tradução" -#: templates/personal.php:36 +#: templates/personal.php:37 msgid "use this address to connect to your ownCloud in your file manager" msgstr "" "use este endereço para se conectar ao seu ownCloud no seu gerenciador de " diff --git a/l10n/pt_PT/calendar.po b/l10n/pt_PT/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..b3ee449d891707b27ac51fb77dd23e6d62407403 --- /dev/null +++ b/l10n/pt_PT/calendar.po @@ -0,0 +1,464 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Portuguese (Portugal) (http://www.transifex.net/projects/p/owncloud/team/pt_PT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_PT\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "" + +#: lib/object.php:293 +msgid "Business" +msgstr "" + +#: lib/object.php:294 +msgid "Call" +msgstr "" + +#: lib/object.php:295 +msgid "Clients" +msgstr "" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "" + +#: lib/object.php:299 +msgid "Journey" +msgstr "" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "" + +#: lib/object.php:302 +msgid "Other" +msgstr "" + +#: lib/object.php:303 +msgid "Personal" +msgstr "" + +#: lib/object.php:304 +msgid "Projects" +msgstr "" + +#: lib/object.php:305 +msgid "Questions" +msgstr "" + +#: lib/object.php:306 +msgid "Work" +msgstr "" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "" + +#: lib/object.php:314 +msgid "Daily" +msgstr "" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "" + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "" + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "" + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "" + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "" + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "" + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "" + +#: templates/calendar.php:34 +msgid "January" +msgstr "" + +#: templates/calendar.php:34 +msgid "February" +msgstr "" + +#: templates/calendar.php:34 +msgid "March" +msgstr "" + +#: templates/calendar.php:34 +msgid "April" +msgstr "" + +#: templates/calendar.php:34 +msgid "May" +msgstr "" + +#: templates/calendar.php:34 +msgid "June" +msgstr "" + +#: templates/calendar.php:34 +msgid "July" +msgstr "" + +#: templates/calendar.php:34 +msgid "August" +msgstr "" + +#: templates/calendar.php:34 +msgid "September" +msgstr "" + +#: templates/calendar.php:34 +msgid "October" +msgstr "" + +#: templates/calendar.php:34 +msgid "November" +msgstr "" + +#: templates/calendar.php:34 +msgid "December" +msgstr "" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "" + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "" + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "" + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "" + +#: templates/calendar.php:35 +msgid "May." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "" + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "" + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "" + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "" + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "" + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "" + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "" + +#: templates/calendar.php:53 +msgid "List" +msgstr "" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "" + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "" + + diff --git a/l10n/pt_PT/contacts.po b/l10n/pt_PT/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..fcc5bb2f7ed0619f0881d47bb1d45b3f9727894b --- /dev/null +++ b/l10n/pt_PT/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:11+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Portuguese (Portugal) (http://www.transifex.net/projects/p/owncloud/team/pt_PT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_PT\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/pt_PT/core.po b/l10n/pt_PT/core.po new file mode 100644 index 0000000000000000000000000000000000000000..8c79bfcd9c53c4ea5ec0ed61c0efcdf42f440156 --- /dev/null +++ b/l10n/pt_PT/core.po @@ -0,0 +1,157 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-23 16:41+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Portuguese (Portugal) (http://www.transifex.net/projects/p/owncloud/team/pt_PT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_PT\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: strings.php:5 +msgid "Personal" +msgstr "" + +#: strings.php:6 +msgid "Users" +msgstr "" + +#: strings.php:7 +msgid "Apps" +msgstr "" + +#: strings.php:8 +msgid "Admin" +msgstr "" + +#: strings.php:9 +msgid "Help" +msgstr "" + +#: templates/404.php:12 +msgid "Cloud not found" +msgstr "" + +#: templates/installation.php:20 +msgid "Create an <strong>admin account</strong>" +msgstr "" + +#: templates/installation.php:21 +msgid "Username" +msgstr "" + +#: templates/installation.php:22 +msgid "Password" +msgstr "" + +#: templates/installation.php:27 +msgid "Configure the database" +msgstr "" + +#: templates/installation.php:32 templates/installation.php:43 +#: templates/installation.php:53 +msgid "will be used" +msgstr "" + +#: templates/installation.php:64 +msgid "Database user" +msgstr "" + +#: templates/installation.php:65 +msgid "Database password" +msgstr "" + +#: templates/installation.php:66 +msgid "Database name" +msgstr "" + +#: templates/installation.php:72 +msgid "Advanced" +msgstr "" + +#: templates/installation.php:75 +msgid "Database host" +msgstr "" + +#: templates/installation.php:76 +msgid "Data folder" +msgstr "" + +#: templates/installation.php:79 +msgid "Finish setup" +msgstr "" + +#: templates/layout.guest.php:35 +msgid "gives you freedom and control over your own data" +msgstr "" + +#: templates/layout.user.php:34 +msgid "Log out" +msgstr "" + +#: templates/layout.user.php:46 templates/layout.user.php:47 +msgid "Settings" +msgstr "" + +#: templates/login.php:4 +msgid "Lost your password?" +msgstr "" + +#: templates/login.php:9 templates/login.php:13 +msgid "remember" +msgstr "" + +#: templates/logout.php:1 +msgid "You are logged out." +msgstr "" + +#: templates/lostpassword.php:3 +msgid "You will receive a link to reset your password via Email." +msgstr "" + +#: templates/lostpassword.php:5 +msgid "Requested" +msgstr "" + +#: templates/lostpassword.php:8 +msgid "Login failed!" +msgstr "" + +#: templates/lostpassword.php:10 +msgid "Username or Email" +msgstr "" + +#: templates/lostpassword.php:11 +msgid "Request reset" +msgstr "" + +#: templates/part.pagenavi.php:3 +msgid "prev" +msgstr "" + +#: templates/part.pagenavi.php:20 +msgid "next" +msgstr "" + +#: templates/resetpassword.php:4 +msgid "Your password was reset" +msgstr "" + +#: templates/resetpassword.php:6 +msgid "New password" +msgstr "" + +#: templates/resetpassword.php:7 +msgid "Reset password" +msgstr "" + + diff --git a/l10n/pt_PT/files.po b/l10n/pt_PT/files.po new file mode 100644 index 0000000000000000000000000000000000000000..b41320ef456d47dd7047c8d52d258df45101c329 --- /dev/null +++ b/l10n/pt_PT/files.po @@ -0,0 +1,96 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Portuguese (Portugal) (http://www.transifex.net/projects/p/owncloud/team/pt_PT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_PT\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + +#: appinfo/app.php:7 +msgid "Files" +msgstr "" + +#: templates/admin.php:5 +msgid "Maximum upload size" +msgstr "" + +#: templates/index.php:10 +msgid "Upload" +msgstr "" + +#: templates/index.php:17 +msgid "New Folder" +msgstr "" + +#: templates/index.php:31 +msgid "Nothing in here. Upload something!" +msgstr "" + +#: templates/index.php:39 +msgid "Name" +msgstr "" + +#: templates/index.php:41 +msgid "Download" +msgstr "" + +#: templates/index.php:45 +msgid "Size" +msgstr "" + +#: templates/index.php:46 +msgid "Modified" +msgstr "" + +#: templates/index.php:46 +msgid "Delete" +msgstr "" + +#: templates/index.php:54 +msgid "Upload too large" +msgstr "" + +#: templates/index.php:56 +msgid "" +"The files you are trying to upload exceed the maximum size for file uploads " +"on this server." +msgstr "" + + diff --git a/l10n/pt_PT/media.po b/l10n/pt_PT/media.po new file mode 100644 index 0000000000000000000000000000000000000000..ae7c1aba234d7d181d1d8314e9e6870f2bb810c9 --- /dev/null +++ b/l10n/pt_PT/media.po @@ -0,0 +1,68 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-23 16:42+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Portuguese (Portugal) (http://www.transifex.net/projects/p/owncloud/team/pt_PT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_PT\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: appinfo/app.php:31 +msgid "Music" +msgstr "" + +#: templates/music.php:3 +msgid "Play" +msgstr "" + +#: templates/music.php:4 templates/music.php:30 +msgid "Pause" +msgstr "" + +#: templates/music.php:5 +msgid "Previous" +msgstr "" + +#: templates/music.php:6 +msgid "Next" +msgstr "" + +#: templates/music.php:7 +msgid "Mute" +msgstr "" + +#: templates/music.php:8 +msgid "Unmute" +msgstr "" + +#: templates/music.php:28 +msgid "Songs scanned" +msgstr "" + +#: templates/music.php:29 +msgid "Rescan Collection" +msgstr "" + +#: templates/music.php:37 +msgid "Artist" +msgstr "" + +#: templates/music.php:38 +msgid "Album" +msgstr "" + +#: templates/music.php:39 +msgid "Title" +msgstr "" + + diff --git a/l10n/pt_PT/settings.po b/l10n/pt_PT/settings.po new file mode 100644 index 0000000000000000000000000000000000000000..ba8649456a4430517d307d636b3fd2b515e80523 --- /dev/null +++ b/l10n/pt_PT/settings.po @@ -0,0 +1,132 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-23 16:42+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Portuguese (Portugal) (http://www.transifex.net/projects/p/owncloud/team/pt_PT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_PT\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/openid.php:13 ajax/setlanguage.php:13 +msgid "Authentication error" +msgstr "" + +#: ajax/openid.php:21 +msgid "OpenID Changed" +msgstr "" + +#: ajax/openid.php:23 ajax/setlanguage.php:23 +msgid "Invalid request" +msgstr "" + +#: ajax/setlanguage.php:21 +msgid "Language changed" +msgstr "" + +#: templates/apps.php:8 +msgid "Add your application" +msgstr "" + +#: templates/apps.php:21 +msgid "Select an App" +msgstr "" + +#: templates/apps.php:23 +msgid "-licensed" +msgstr "" + +#: templates/apps.php:23 +msgid "by" +msgstr "" + +#: templates/help.php:8 +msgid "Ask a question" +msgstr "" + +#: templates/help.php:17 +msgid "Problems connecting to help database." +msgstr "" + +#: templates/help.php:18 +msgid "Go there manually." +msgstr "" + +#: templates/help.php:26 +msgid "Answer" +msgstr "" + +#: templates/personal.php:8 +msgid "You use" +msgstr "" + +#: templates/personal.php:8 +msgid "of the available" +msgstr "" + +#: templates/personal.php:13 +msgid "Your password got changed" +msgstr "" + +#: templates/personal.php:14 +msgid "Unable to change your password" +msgstr "" + +#: templates/personal.php:15 +msgid "Current password" +msgstr "" + +#: templates/personal.php:16 +msgid "New password" +msgstr "" + +#: templates/personal.php:17 +msgid "show" +msgstr "" + +#: templates/personal.php:18 +msgid "Change password" +msgstr "" + +#: templates/personal.php:24 templates/personal.php:25 +msgid "Language" +msgstr "" + +#: templates/personal.php:30 +msgid "Help translating" +msgstr "" + +#: templates/personal.php:37 +msgid "use this address to connect to your ownCloud in your file manager" +msgstr "" + +#: templates/users.php:16 +msgid "Name" +msgstr "" + +#: templates/users.php:17 +msgid "Password" +msgstr "" + +#: templates/users.php:18 templates/users.php:36 +msgid "Groups" +msgstr "" + +#: templates/users.php:24 +msgid "Create" +msgstr "" + +#: templates/users.php:48 +msgid "Delete" +msgstr "" + + diff --git a/l10n/ro/calendar.po b/l10n/ro/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..e87d6c47a95f510b5f4bb90275e13fbd796c42c8 --- /dev/null +++ b/l10n/ro/calendar.po @@ -0,0 +1,465 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Claudiu <claudiu@tanaselia.ro>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Romanian (http://www.transifex.net/projects/p/owncloud/team/ro/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "Eroare de autentificare" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "A fost schimbat fusul orar" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "Cerere eronată" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "Calendar" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "" + +#: lib/object.php:293 +msgid "Business" +msgstr "" + +#: lib/object.php:294 +msgid "Call" +msgstr "" + +#: lib/object.php:295 +msgid "Clients" +msgstr "" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "" + +#: lib/object.php:299 +msgid "Journey" +msgstr "" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "" + +#: lib/object.php:302 +msgid "Other" +msgstr "" + +#: lib/object.php:303 +msgid "Personal" +msgstr "" + +#: lib/object.php:304 +msgid "Projects" +msgstr "" + +#: lib/object.php:305 +msgid "Questions" +msgstr "" + +#: lib/object.php:306 +msgid "Work" +msgstr "" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "Nu se repetă" + +#: lib/object.php:314 +msgid "Daily" +msgstr "Zilnic" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "Săptămânal" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "ÃŽn fiecare săptămână" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "Din două în două săptămâni" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "Lunar" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "Anual" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "Toată ziua" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "Duminică" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "Luni" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "MarÈ›i" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "Miercuri" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "Joi" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "Vineri" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Sâmbătă" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "Dum." + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "Lun." + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "Mar." + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "Mie." + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "Joi." + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "Vin." + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "Sâm." + +#: templates/calendar.php:34 +msgid "January" +msgstr "Ianuarie" + +#: templates/calendar.php:34 +msgid "February" +msgstr "Februarie" + +#: templates/calendar.php:34 +msgid "March" +msgstr "Martie" + +#: templates/calendar.php:34 +msgid "April" +msgstr "Aprilie" + +#: templates/calendar.php:34 +msgid "May" +msgstr "Mai" + +#: templates/calendar.php:34 +msgid "June" +msgstr "Iunie" + +#: templates/calendar.php:34 +msgid "July" +msgstr "Iulie" + +#: templates/calendar.php:34 +msgid "August" +msgstr "August" + +#: templates/calendar.php:34 +msgid "September" +msgstr "Septembrie" + +#: templates/calendar.php:34 +msgid "October" +msgstr "Octombrie" + +#: templates/calendar.php:34 +msgid "November" +msgstr "Noiembrie" + +#: templates/calendar.php:34 +msgid "December" +msgstr "Decembrie" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "Ian." + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "Feb." + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "Mar." + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "Apr." + +#: templates/calendar.php:35 +msgid "May." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "Iun." + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "Iul." + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "Aug." + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "Sep." + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "Oct." + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "Nov." + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "Dec." + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "Săptămâna" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Săptămâni" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "Zi" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "Luna" + +#: templates/calendar.php:53 +msgid "List" +msgstr "" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "Astăzi" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "Calendare" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "Ora" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "A fost întâmpinată o eroare în procesarea fiÈ™ierului" + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "Alege activitățile din calendar" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "Descarcă" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "Modifică" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "Modifcă acest calendar" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Nume" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "Activ" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "Descriere" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "Culoare calendar" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "Trimite" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "Modifică un eveniment" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "Titlu" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "Numele evenimentului" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "Localizare" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "Localizarea evenimentului" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "Categorie" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "Toată ziua" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "De la" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "Către" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "Repetă" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "ParticipanÈ›i" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "Descrierea evenimentului" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "ÃŽnchide" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "Crează un evenimetn nou" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "Fus orar" + + diff --git a/l10n/ro/contacts.po b/l10n/ro/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..95b3d705a3df31bd945f8b3585f01cbbc0f2ccf3 --- /dev/null +++ b/l10n/ro/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:11+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Romanian (http://www.transifex.net/projects/p/owncloud/team/ro/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/ro/core.po b/l10n/ro/core.po index d573959535e68900529dcc23dd56a95d6cf1087e..df95994f468296e47c091310888f972f42b6f94b 100644 --- a/l10n/ro/core.po +++ b/l10n/ro/core.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # Claudiu <claudiu@tanaselia.ro>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" -"POT-Creation-Date: 2011-09-04 18:14+0200\n" -"PO-Revision-Date: 2011-09-04 16:14+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-05 11:11+0000\n" +"Last-Translator: rawbeef64 <claudiu@tanaselia.ro>\n" "Language-Team: Romanian (http://www.transifex.net/projects/p/owncloud/team/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -31,7 +32,7 @@ msgstr "AplicaÈ›ii" #: strings.php:8 msgid "Admin" -msgstr "Administrator" +msgstr "Administrare" #: strings.php:9 msgid "Help" @@ -80,7 +81,7 @@ msgstr "Avansat" #: templates/installation.php:75 msgid "Database host" -msgstr "" +msgstr "Baza de date" #: templates/installation.php:76 msgid "Data folder" @@ -92,7 +93,7 @@ msgstr "Finalizează instalarea" #: templates/layout.guest.php:35 msgid "gives you freedom and control over your own data" -msgstr "" +msgstr "îți oferă libertatea de a-È›i controla datele" #: templates/layout.user.php:34 msgid "Log out" @@ -104,7 +105,7 @@ msgstr "Setări" #: templates/login.php:4 msgid "Lost your password?" -msgstr "" +msgstr "Ai uitat parola?" #: templates/login.php:9 templates/login.php:13 msgid "remember" @@ -116,11 +117,11 @@ msgstr "Ai ieÈ™it" #: templates/lostpassword.php:3 msgid "You will receive a link to reset your password via Email." -msgstr "" +msgstr "Vei primi prin email un link pentru resetarea parolei" #: templates/lostpassword.php:5 msgid "Requested" -msgstr "" +msgstr "Cerută" #: templates/lostpassword.php:8 msgid "Login failed!" @@ -128,11 +129,11 @@ msgstr "Autentificare eÈ™uată!" #: templates/lostpassword.php:10 msgid "Username or Email" -msgstr "" +msgstr "Utilizator sau email" #: templates/lostpassword.php:11 msgid "Request reset" -msgstr "" +msgstr "Cere schimbarea parolei" #: templates/part.pagenavi.php:3 msgid "prev" @@ -144,14 +145,14 @@ msgstr "următorul" #: templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "" +msgstr "Parola a fost schimbată" #: templates/resetpassword.php:6 msgid "New password" -msgstr "" +msgstr "Parola nouă" #: templates/resetpassword.php:7 msgid "Reset password" -msgstr "" +msgstr "Schimbă parola" diff --git a/l10n/ro/files.po b/l10n/ro/files.po index 132e4963af95dc954aceeade97a36176047e1b10..00676c5fca66870781ac0a4b34143d950baa5cf8 100644 --- a/l10n/ro/files.po +++ b/l10n/ro/files.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # Claudiu <claudiu@tanaselia.ro>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-09-03 14:50+0200\n" -"PO-Revision-Date: 2011-08-31 08:18+0000\n" -"Last-Translator: rawbeef64 <claudiu@tanaselia.ro>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" "Language-Team: Romanian (http://www.transifex.net/projects/p/owncloud/team/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,6 +18,32 @@ msgstr "" "Language: ro\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + #: appinfo/app.php:7 msgid "Files" msgstr "FiÈ™iere" @@ -25,43 +52,43 @@ msgstr "FiÈ™iere" msgid "Maximum upload size" msgstr "Dimensiunea maximă" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" msgstr "ÃŽncarcă" -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" msgstr "Director nou" -#: templates/index.php:24 +#: templates/index.php:31 msgid "Nothing in here. Upload something!" msgstr "Nici un fiÈ™ier, încarcă ceva!" -#: templates/index.php:31 +#: templates/index.php:39 msgid "Name" msgstr "Nume" -#: templates/index.php:33 +#: templates/index.php:41 msgid "Download" msgstr "Descarcă" -#: templates/index.php:37 +#: templates/index.php:45 msgid "Size" msgstr "Dimensiune" -#: templates/index.php:38 +#: templates/index.php:46 msgid "Modified" msgstr "Modificat" -#: templates/index.php:38 +#: templates/index.php:46 msgid "Delete" msgstr "Șterge" -#: templates/index.php:46 +#: templates/index.php:54 msgid "Upload too large" msgstr "FiÈ™ierul este prea mare" -#: templates/index.php:48 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." diff --git a/l10n/ru/calendar.po b/l10n/ru/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..f2879ad1504eb23decdd522225af4503b0aaa014 --- /dev/null +++ b/l10n/ru/calendar.po @@ -0,0 +1,466 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# <jekader@gmail.com>, 2011. +# <tony.mccourin@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Russian (http://www.transifex.net/projects/p/owncloud/team/ru/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\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" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "Ошибка аутентификации" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "Ðеверный календарь" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "ЧаÑовой поÑÑ Ð¸Ð·Ð¼ÐµÐ½Ñ‘Ð½" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "Ðеверный запроÑ" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "Календарь" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "День рождениÑ" + +#: lib/object.php:293 +msgid "Business" +msgstr "БизнеÑ" + +#: lib/object.php:294 +msgid "Call" +msgstr "Звонить" + +#: lib/object.php:295 +msgid "Clients" +msgstr "Клиенты" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "ДоÑтавщик" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "Праздники" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "Идеи" + +#: lib/object.php:299 +msgid "Journey" +msgstr "Поездка" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "Юбилей" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "Ð’Ñтреча" + +#: lib/object.php:302 +msgid "Other" +msgstr "Другое" + +#: lib/object.php:303 +msgid "Personal" +msgstr "Личное" + +#: lib/object.php:304 +msgid "Projects" +msgstr "Проекты" + +#: lib/object.php:305 +msgid "Questions" +msgstr "ВопроÑÑ‹" + +#: lib/object.php:306 +msgid "Work" +msgstr "Работа" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "Ðе повторÑетÑÑ" + +#: lib/object.php:314 +msgid "Daily" +msgstr "Ежедневно" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "Еженедельно" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "По буднÑм" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "Каждые две недели" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "Каждый меÑÑц" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "Каждый год" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "Ðе маÑÑив" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "ВеÑÑŒ день" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "ВоÑкреÑенье" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "Понедельник" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "Вторник" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "Среда" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "Четверг" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "ПÑтница" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Суббота" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "Ð’Ñ." + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "Пн." + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "Ð’Ñ‚." + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "Ср." + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "Чт." + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "Пт." + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "Сб." + +#: templates/calendar.php:34 +msgid "January" +msgstr "Январь" + +#: templates/calendar.php:34 +msgid "February" +msgstr "Февраль" + +#: templates/calendar.php:34 +msgid "March" +msgstr "Март" + +#: templates/calendar.php:34 +msgid "April" +msgstr "Ðпрель" + +#: templates/calendar.php:34 +msgid "May" +msgstr "Май" + +#: templates/calendar.php:34 +msgid "June" +msgstr "Июнь" + +#: templates/calendar.php:34 +msgid "July" +msgstr "Июль" + +#: templates/calendar.php:34 +msgid "August" +msgstr "ÐвгуÑÑ‚" + +#: templates/calendar.php:34 +msgid "September" +msgstr "СентÑбрь" + +#: templates/calendar.php:34 +msgid "October" +msgstr "ОктÑбрь" + +#: templates/calendar.php:34 +msgid "November" +msgstr "ÐоÑбрь" + +#: templates/calendar.php:34 +msgid "December" +msgstr "Декабрь" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "Янв." + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "Фев." + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "Мар." + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "Ðпр." + +#: templates/calendar.php:35 +msgid "May." +msgstr "Май." + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "Июн." + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "Июл." + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "Ðвг." + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "Сен." + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "Окт." + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "ÐоÑ." + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "Дек." + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "ÐеделÑ" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Ðедели" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "Еще до {startdate}" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "Больше поÑле {startdate}" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "День" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "МеÑÑц" + +#: templates/calendar.php:53 +msgid "List" +msgstr "СпиÑок" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "СегоднÑ" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "Календари" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "ВремÑ" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "Ðе удалоÑÑŒ обработать файл." + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "Выберите активные календари" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "Ðовый Календарь" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "СÑылка Ð´Ð»Ñ CalDav" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "Скачать" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "Редактировать" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "Ðовый календарь" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "Редактировать календарь" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Отображаемое имÑ" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "Ðктивен" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "ОпиÑание" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "Цвет календарÑ" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "Сохранить" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "Отправить" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "Отмена" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "Редактировать Ñобытие" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "Ðазвание" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "Ðазвание Ñобытие" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "МеÑто" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "МеÑто ÑобытиÑ" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "КатегориÑ" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "Выбрать категорию" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "Событие на веÑÑŒ день" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "От" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "До" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "Повтор" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "ПриÑутÑтвующие" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "ОпиÑание ÑобытиÑ" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "Закрыть" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "Создать новое Ñобытие" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "ЧаÑовой поÑÑ" + + diff --git a/l10n/ru/contacts.po b/l10n/ru/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..d571caba891dfa66243c86b076ceab40863ce886 --- /dev/null +++ b/l10n/ru/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:10+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Russian (http://www.transifex.net/projects/p/owncloud/team/ru/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\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" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/ru/core.po b/l10n/ru/core.po index 14e1e602807bd64536cdb1a8587fb9f4659184ae..49a8891db3bf2404a19bc5da0b98bb91fff2a402 100644 --- a/l10n/ru/core.po +++ b/l10n/ru/core.po @@ -2,14 +2,16 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: +# <jekader@gmail.com>, 2011. # <tony.mccourin@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" -"POT-Creation-Date: 2011-09-04 18:14+0200\n" -"PO-Revision-Date: 2011-09-04 16:14+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-04 17:42+0000\n" +"Last-Translator: jekader <jekader@gmail.com>\n" "Language-Team: Russian (http://www.transifex.net/projects/p/owncloud/team/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -144,7 +146,7 @@ msgstr "Ñлед" #: templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "" +msgstr "Пароль был Ñброшен" #: templates/resetpassword.php:6 msgid "New password" diff --git a/l10n/ru/files.po b/l10n/ru/files.po index 048911842841a3da91218e1eaee3e70508c02e49..2345bd74eaddf1f97b25013b4628fbe91da8e1eb 100644 --- a/l10n/ru/files.po +++ b/l10n/ru/files.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # <tony.mccourin@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-09-03 14:50+0200\n" -"PO-Revision-Date: 2011-09-03 12:58+0000\n" -"Last-Translator: tonymc <tony.mccourin@gmail.com>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" "Language-Team: Russian (http://www.transifex.net/projects/p/owncloud/team/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,6 +18,32 @@ msgstr "" "Language: ru\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" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + #: appinfo/app.php:7 msgid "Files" msgstr "Файлы" @@ -25,43 +52,43 @@ msgstr "Файлы" msgid "Maximum upload size" msgstr "МакÑимальный размер файла" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" msgstr "Закачать" -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" msgstr "ÐÐ¾Ð²Ð°Ñ Ð¿Ð°Ð¿ÐºÐ°" -#: templates/index.php:24 +#: templates/index.php:31 msgid "Nothing in here. Upload something!" msgstr "ЗдеÑÑŒ ничего нет. Закачайте что-нибудь!" -#: templates/index.php:31 +#: templates/index.php:39 msgid "Name" msgstr "Ðазвание" -#: templates/index.php:33 +#: templates/index.php:41 msgid "Download" msgstr "Скачать" -#: templates/index.php:37 +#: templates/index.php:45 msgid "Size" msgstr "Размер" -#: templates/index.php:38 +#: templates/index.php:46 msgid "Modified" msgstr "Изменен" -#: templates/index.php:38 +#: templates/index.php:46 msgid "Delete" msgstr "Удалить" -#: templates/index.php:46 +#: templates/index.php:54 msgid "Upload too large" msgstr "Файл Ñлишком большой" -#: templates/index.php:48 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." diff --git a/l10n/sr/calendar.po b/l10n/sr/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..31a841e957b49f94117db9987e64c2dcffec8bdd --- /dev/null +++ b/l10n/sr/calendar.po @@ -0,0 +1,465 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Slobodan Terzić <githzerai06@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Serbian (http://www.transifex.net/projects/p/owncloud/team/sr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr\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" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "Грешка аутентификације" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "ВременÑка зона је промењена" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "ÐеиÑправан захтев" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "Календар" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "" + +#: lib/object.php:293 +msgid "Business" +msgstr "" + +#: lib/object.php:294 +msgid "Call" +msgstr "" + +#: lib/object.php:295 +msgid "Clients" +msgstr "" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "" + +#: lib/object.php:299 +msgid "Journey" +msgstr "" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "" + +#: lib/object.php:302 +msgid "Other" +msgstr "" + +#: lib/object.php:303 +msgid "Personal" +msgstr "" + +#: lib/object.php:304 +msgid "Projects" +msgstr "" + +#: lib/object.php:305 +msgid "Questions" +msgstr "" + +#: lib/object.php:306 +msgid "Work" +msgstr "" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "Ðе понавља Ñе" + +#: lib/object.php:314 +msgid "Daily" +msgstr "дневно" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "недељно" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "Ñваког дана у недељи" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "двонедељно" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "меÑечно" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "годишње" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "Цео дан" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "Ðедеља" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "Понедељак" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "Уторак" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "Среда" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "Четвртак" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "Петак" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Субота" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "Ðед" + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "Пон" + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "Уто" + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "Сре" + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "Чет" + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "Пет" + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "Суб" + +#: templates/calendar.php:34 +msgid "January" +msgstr "Јануар" + +#: templates/calendar.php:34 +msgid "February" +msgstr "Фебруар" + +#: templates/calendar.php:34 +msgid "March" +msgstr "Март" + +#: templates/calendar.php:34 +msgid "April" +msgstr "Ðприл" + +#: templates/calendar.php:34 +msgid "May" +msgstr "Мај" + +#: templates/calendar.php:34 +msgid "June" +msgstr "Јун" + +#: templates/calendar.php:34 +msgid "July" +msgstr "Јул" + +#: templates/calendar.php:34 +msgid "August" +msgstr "ÐвгуÑÑ‚" + +#: templates/calendar.php:34 +msgid "September" +msgstr "Септембар" + +#: templates/calendar.php:34 +msgid "October" +msgstr "Октобар" + +#: templates/calendar.php:34 +msgid "November" +msgstr "Ðовембар" + +#: templates/calendar.php:34 +msgid "December" +msgstr "Децембар" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "Јан" + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "Феб" + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "Мар" + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "Ðпр" + +#: templates/calendar.php:35 +msgid "May." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "Јун" + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "Јул" + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "Ðвг" + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "Сеп" + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "Окт" + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "Ðов" + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "Дец" + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "Ðедеља" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Ðедеља" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "Дан" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "МеÑец" + +#: templates/calendar.php:53 +msgid "List" +msgstr "" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "ДанаÑ" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "Календари" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "Време" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "дошло је до грешке при раÑчлањивању фајла." + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "Изаберите активне календаре" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "Преузми" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "Уреди" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "Уреди календар" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Приказаноиме" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "Ðктиван" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "ОпиÑ" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "Боја календара" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "Пошаљи" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "Уреди догађај" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "ÐаÑлов" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "ÐаÑлов догађаја" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "Локација" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "Локација догађаја" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "Категорија" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "Целодневни догађај" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "Од" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "До" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "Понављај" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "ПриÑутни" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "ÐžÐ¿Ð¸Ñ Ð´Ð¾Ð³Ð°Ñ’Ð°Ñ˜Ð°" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "Затвори" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "Ðаправи нови догађај" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "ВременÑка зона" + + diff --git a/l10n/sr/contacts.po b/l10n/sr/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..780af00702dc7a1ea8c3de60d27bd7e62bf13dd5 --- /dev/null +++ b/l10n/sr/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:10+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Serbian (http://www.transifex.net/projects/p/owncloud/team/sr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr\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" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/sr/core.po b/l10n/sr/core.po new file mode 100644 index 0000000000000000000000000000000000000000..77abd7989895e546a64161c716222a796f8dce67 --- /dev/null +++ b/l10n/sr/core.po @@ -0,0 +1,158 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Slobodan Terzić <githzerai06@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-14 11:23+0000\n" +"Last-Translator: Xabre <githzerai06@gmail.com>\n" +"Language-Team: Serbian (http://www.transifex.net/projects/p/owncloud/team/sr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr\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" + +#: strings.php:5 +msgid "Personal" +msgstr "Лична" + +#: strings.php:6 +msgid "Users" +msgstr "КориÑници" + +#: strings.php:7 +msgid "Apps" +msgstr "Програми" + +#: strings.php:8 +msgid "Admin" +msgstr "ÐдниниÑтрација" + +#: strings.php:9 +msgid "Help" +msgstr "Помоћ" + +#: templates/404.php:12 +msgid "Cloud not found" +msgstr "Облак није нађен" + +#: templates/installation.php:20 +msgid "Create an <strong>admin account</strong>" +msgstr "Ðаправи <strong>админиÑтративни налог</strong>" + +#: templates/installation.php:21 +msgid "Username" +msgstr "КориÑничко име" + +#: templates/installation.php:22 +msgid "Password" +msgstr "Лозинка" + +#: templates/installation.php:27 +msgid "Configure the database" +msgstr "Подешавање базе" + +#: templates/installation.php:32 templates/installation.php:43 +#: templates/installation.php:53 +msgid "will be used" +msgstr "ће бити коришћен" + +#: templates/installation.php:64 +msgid "Database user" +msgstr "КориÑник базе" + +#: templates/installation.php:65 +msgid "Database password" +msgstr "Лозинка базе" + +#: templates/installation.php:66 +msgid "Database name" +msgstr "Име базе" + +#: templates/installation.php:72 +msgid "Advanced" +msgstr "Ðапредно" + +#: templates/installation.php:75 +msgid "Database host" +msgstr "Домаћин базе" + +#: templates/installation.php:76 +msgid "Data folder" +msgstr "Фацикла података" + +#: templates/installation.php:79 +msgid "Finish setup" +msgstr "Заврши подешавање" + +#: templates/layout.guest.php:35 +msgid "gives you freedom and control over your own data" +msgstr "вам даје Ñлободу и контролу над вашим подацима" + +#: templates/layout.user.php:34 +msgid "Log out" +msgstr "Одјава" + +#: templates/layout.user.php:46 templates/layout.user.php:47 +msgid "Settings" +msgstr "Подешавања" + +#: templates/login.php:4 +msgid "Lost your password?" +msgstr "Изгубили Ñте лозинку?" + +#: templates/login.php:9 templates/login.php:13 +msgid "remember" +msgstr "упамти" + +#: templates/logout.php:1 +msgid "You are logged out." +msgstr "Одјављени Ñте." + +#: templates/lostpassword.php:3 +msgid "You will receive a link to reset your password via Email." +msgstr "Добићете везу за реÑетовање лозинке путем е-поште." + +#: templates/lostpassword.php:5 +msgid "Requested" +msgstr "Захтев поÑлат" + +#: templates/lostpassword.php:8 +msgid "Login failed!" +msgstr "ÐеуÑпешно пријављивање!" + +#: templates/lostpassword.php:10 +msgid "Username or Email" +msgstr "КориÑничко име или адреÑа е-поште" + +#: templates/lostpassword.php:11 +msgid "Request reset" +msgstr "Захтев за реÑетовање" + +#: templates/part.pagenavi.php:3 +msgid "prev" +msgstr "претходно" + +#: templates/part.pagenavi.php:20 +msgid "next" +msgstr "Ñледеће" + +#: templates/resetpassword.php:4 +msgid "Your password was reset" +msgstr "Ваша лозинка је реÑетована" + +#: templates/resetpassword.php:6 +msgid "New password" +msgstr "Ðова лозинка" + +#: templates/resetpassword.php:7 +msgid "Reset password" +msgstr "РеÑетуј лозинку" + + diff --git a/l10n/sr/files.po b/l10n/sr/files.po new file mode 100644 index 0000000000000000000000000000000000000000..778a30135e7d99a2382b5779a9cfd36a8bfdc243 --- /dev/null +++ b/l10n/sr/files.po @@ -0,0 +1,99 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Slobodan Terzić <githzerai06@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Serbian (http://www.transifex.net/projects/p/owncloud/team/sr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr\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" + +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + +#: appinfo/app.php:7 +msgid "Files" +msgstr "Фајлови" + +#: templates/admin.php:5 +msgid "Maximum upload size" +msgstr "МакÑимална величина пошиљке" + +#: templates/index.php:10 +msgid "Upload" +msgstr "Пошаљи" + +#: templates/index.php:17 +msgid "New Folder" +msgstr "Ðова фаÑцикла" + +#: templates/index.php:31 +msgid "Nothing in here. Upload something!" +msgstr "Овде нема ничег. Пошаљите нешто!" + +#: templates/index.php:39 +msgid "Name" +msgstr "Име" + +#: templates/index.php:41 +msgid "Download" +msgstr "Преузми" + +#: templates/index.php:45 +msgid "Size" +msgstr "Величина" + +#: templates/index.php:46 +msgid "Modified" +msgstr "Задња измена" + +#: templates/index.php:46 +msgid "Delete" +msgstr "Обриши" + +#: templates/index.php:54 +msgid "Upload too large" +msgstr "Пошиљка је превелика" + +#: templates/index.php:56 +msgid "" +"The files you are trying to upload exceed the maximum size for file uploads " +"on this server." +msgstr "" +"Фајлови које желите да пошаљете превазилазе ограничење макÑималне величине " +"пошиљке на овом Ñерверу." + + diff --git a/l10n/sr/media.po b/l10n/sr/media.po new file mode 100644 index 0000000000000000000000000000000000000000..aaab3c163d9eedb75ca6f3dd4804961f4b8fd90c --- /dev/null +++ b/l10n/sr/media.po @@ -0,0 +1,69 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Slobodan Terzić <githzerai06@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-13 22:01+0000\n" +"Last-Translator: Xabre <githzerai06@gmail.com>\n" +"Language-Team: Serbian (http://www.transifex.net/projects/p/owncloud/team/sr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr\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" + +#: appinfo/app.php:31 +msgid "Music" +msgstr "Музика" + +#: templates/music.php:3 +msgid "Play" +msgstr "ПуÑти" + +#: templates/music.php:4 templates/music.php:30 +msgid "Pause" +msgstr "Паузирај" + +#: templates/music.php:5 +msgid "Previous" +msgstr "Претходна" + +#: templates/music.php:6 +msgid "Next" +msgstr "Следећа" + +#: templates/music.php:7 +msgid "Mute" +msgstr "ИÑкључи звук" + +#: templates/music.php:8 +msgid "Unmute" +msgstr "Укључи звук" + +#: templates/music.php:28 +msgid "Songs scanned" +msgstr "Претражених пеÑама" + +#: templates/music.php:29 +msgid "Rescan Collection" +msgstr "Поново претражи збирку" + +#: templates/music.php:37 +msgid "Artist" +msgstr "Извођач" + +#: templates/music.php:38 +msgid "Album" +msgstr "Ðлбум" + +#: templates/music.php:39 +msgid "Title" +msgstr "ÐаÑлов" + + diff --git a/l10n/sr/settings.po b/l10n/sr/settings.po new file mode 100644 index 0000000000000000000000000000000000000000..a81b25b947498f73e7cec3595dfc045d6bba80ff --- /dev/null +++ b/l10n/sr/settings.po @@ -0,0 +1,134 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Slobodan Terzić <githzerai06@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-13 22:02+0000\n" +"Last-Translator: Xabre <githzerai06@gmail.com>\n" +"Language-Team: Serbian (http://www.transifex.net/projects/p/owncloud/team/sr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr\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" + +#: ajax/openid.php:13 ajax/setlanguage.php:13 +msgid "Authentication error" +msgstr "Грешка аутентификације" + +#: ajax/openid.php:21 +msgid "OpenID Changed" +msgstr "OpenID је измењен" + +#: ajax/openid.php:23 ajax/setlanguage.php:23 +msgid "Invalid request" +msgstr "ÐеиÑправан захтев" + +#: ajax/setlanguage.php:21 +msgid "Language changed" +msgstr "Језик је измењен" + +#: templates/apps.php:8 +msgid "Add your application" +msgstr "Додајте Ñвој програм" + +#: templates/apps.php:21 +msgid "Select an App" +msgstr "Изаберите програм" + +#: templates/apps.php:23 +msgid "-licensed" +msgstr "-лиценциран" + +#: templates/apps.php:23 +msgid "by" +msgstr "од" + +#: templates/help.php:8 +msgid "Ask a question" +msgstr "ПоÑтавите питање" + +#: templates/help.php:17 +msgid "Problems connecting to help database." +msgstr "Проблем у повезивању Ñа базом помоћи" + +#: templates/help.php:18 +msgid "Go there manually." +msgstr "Отиђите тамо ручно." + +#: templates/help.php:26 +msgid "Answer" +msgstr "Одговор" + +#: templates/personal.php:8 +msgid "You use" +msgstr "КориÑтите" + +#: templates/personal.php:8 +msgid "of the available" +msgstr "од доÑтупних" + +#: templates/personal.php:13 +msgid "Your password got changed" +msgstr "Ваша лозинка је измењена" + +#: templates/personal.php:14 +msgid "Unable to change your password" +msgstr "Ðе могу да изменим вашу лозинку" + +#: templates/personal.php:15 +msgid "Current password" +msgstr "Тренутна лозинка" + +#: templates/personal.php:16 +msgid "New password" +msgstr "Ðова лозинка" + +#: templates/personal.php:17 +msgid "show" +msgstr "прикажи" + +#: templates/personal.php:18 +msgid "Change password" +msgstr "Измени лозинку" + +#: templates/personal.php:24 templates/personal.php:25 +msgid "Language" +msgstr "Језик" + +#: templates/personal.php:30 +msgid "Help translating" +msgstr "Помозите у превођењу" + +#: templates/personal.php:37 +msgid "use this address to connect to your ownCloud in your file manager" +msgstr "" +"кориÑтите ову адреÑу да би Ñе повезали на ownCloud путем менаџњера фајлова" + +#: templates/users.php:16 +msgid "Name" +msgstr "Име" + +#: templates/users.php:17 +msgid "Password" +msgstr "Лозинка" + +#: templates/users.php:18 templates/users.php:36 +msgid "Groups" +msgstr "Групе" + +#: templates/users.php:24 +msgid "Create" +msgstr "Ðаправи" + +#: templates/users.php:48 +msgid "Delete" +msgstr "Обриши" + + diff --git a/l10n/sr@latin/calendar.po b/l10n/sr@latin/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..30f68f4e4d7f60cbc672cc1366e432bbf080d264 --- /dev/null +++ b/l10n/sr@latin/calendar.po @@ -0,0 +1,465 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Slobodan Terzić <githzerai06@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Serbian (Latin) (http://www.transifex.net/projects/p/owncloud/team/sr@latin/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr@latin\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" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "GreÅ¡ka autentifikacije" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "Vremenska zona je promenjena" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "Neispravan zahtev" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "Kalendar" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "" + +#: lib/object.php:293 +msgid "Business" +msgstr "" + +#: lib/object.php:294 +msgid "Call" +msgstr "" + +#: lib/object.php:295 +msgid "Clients" +msgstr "" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "" + +#: lib/object.php:299 +msgid "Journey" +msgstr "" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "" + +#: lib/object.php:302 +msgid "Other" +msgstr "" + +#: lib/object.php:303 +msgid "Personal" +msgstr "" + +#: lib/object.php:304 +msgid "Projects" +msgstr "" + +#: lib/object.php:305 +msgid "Questions" +msgstr "" + +#: lib/object.php:306 +msgid "Work" +msgstr "" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "Ne ponavlja se" + +#: lib/object.php:314 +msgid "Daily" +msgstr "dnevno" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "nedeljno" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "svakog dana u nedelji" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "dvonedeljno" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "meseÄno" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "godiÅ¡nje" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "Ceo dan" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "Nedelja" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "Ponedeljak" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "Utorak" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "Sreda" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "ÄŒetvrtak" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "Petak" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "Subota" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "Ned" + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "Pon" + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "Uto" + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "Sre" + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "ÄŒet" + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "Pet" + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "Sub" + +#: templates/calendar.php:34 +msgid "January" +msgstr "Januar" + +#: templates/calendar.php:34 +msgid "February" +msgstr "Februar" + +#: templates/calendar.php:34 +msgid "March" +msgstr "Mart" + +#: templates/calendar.php:34 +msgid "April" +msgstr "April" + +#: templates/calendar.php:34 +msgid "May" +msgstr "Maj" + +#: templates/calendar.php:34 +msgid "June" +msgstr "Jun" + +#: templates/calendar.php:34 +msgid "July" +msgstr "Jul" + +#: templates/calendar.php:34 +msgid "August" +msgstr "Avgust" + +#: templates/calendar.php:34 +msgid "September" +msgstr "Septembar" + +#: templates/calendar.php:34 +msgid "October" +msgstr "Oktobar" + +#: templates/calendar.php:34 +msgid "November" +msgstr "Novembar" + +#: templates/calendar.php:34 +msgid "December" +msgstr "Decembar" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "Jan" + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "Feb" + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "Mar" + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "Apr" + +#: templates/calendar.php:35 +msgid "May." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "Jun" + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "Jul" + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "Avg" + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "Sep" + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "Okt" + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "Nov" + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "Dec" + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "Nedelja" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "Nedelja" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "Dan" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "Mesec" + +#: templates/calendar.php:53 +msgid "List" +msgstr "" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "Danas" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "Kalendari" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "Vreme" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "doÅ¡lo je do greÅ¡ke pri rasÄlanjivanju fajla." + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "Izaberite aktivne kalendare" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "Preuzmi" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "Uredi" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "Uredi kalendar" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "Prikazanoime" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "Aktivan" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "Opis" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "Boja kalendara" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "PoÅ¡alji" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "Uredi dogaÄ‘aj" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "Naslov" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "Naslov dogaÄ‘aja" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "Lokacija" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "Lokacija dogaÄ‘aja" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "Kategorija" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "Celodnevni dogaÄ‘aj" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "Od" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "Do" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "Ponavljaj" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "Prisutni" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "Opis dogaÄ‘aja" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "Zatvori" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "Napravi novi dogaÄ‘aj" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "Vremenska zona" + + diff --git a/l10n/sr@latin/contacts.po b/l10n/sr@latin/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..3066a8fc0903250d84f15447a900903d22450dd4 --- /dev/null +++ b/l10n/sr@latin/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:10+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Serbian (Latin) (http://www.transifex.net/projects/p/owncloud/team/sr@latin/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr@latin\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" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/sr@latin/core.po b/l10n/sr@latin/core.po new file mode 100644 index 0000000000000000000000000000000000000000..33bd96a4c3da941d86a8a1bb64a79485322efb8d --- /dev/null +++ b/l10n/sr@latin/core.po @@ -0,0 +1,158 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Slobodan Terzić <githzerai06@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-14 11:23+0000\n" +"Last-Translator: Xabre <githzerai06@gmail.com>\n" +"Language-Team: Serbian (Latin) (http://www.transifex.net/projects/p/owncloud/team/sr@latin/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr@latin\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" + +#: strings.php:5 +msgid "Personal" +msgstr "LiÄna" + +#: strings.php:6 +msgid "Users" +msgstr "Korisnici" + +#: strings.php:7 +msgid "Apps" +msgstr "Programi" + +#: strings.php:8 +msgid "Admin" +msgstr "Adninistracija" + +#: strings.php:9 +msgid "Help" +msgstr "Pomoć" + +#: templates/404.php:12 +msgid "Cloud not found" +msgstr "Oblak nije naÄ‘en" + +#: templates/installation.php:20 +msgid "Create an <strong>admin account</strong>" +msgstr "Napravi <strong>administrativni nalog</strong>" + +#: templates/installation.php:21 +msgid "Username" +msgstr "KorisniÄko ime" + +#: templates/installation.php:22 +msgid "Password" +msgstr "Lozinka" + +#: templates/installation.php:27 +msgid "Configure the database" +msgstr "PodeÅ¡avanje baze" + +#: templates/installation.php:32 templates/installation.php:43 +#: templates/installation.php:53 +msgid "will be used" +msgstr "će biti korišćen" + +#: templates/installation.php:64 +msgid "Database user" +msgstr "Korisnik baze" + +#: templates/installation.php:65 +msgid "Database password" +msgstr "Lozinka baze" + +#: templates/installation.php:66 +msgid "Database name" +msgstr "Ime baze" + +#: templates/installation.php:72 +msgid "Advanced" +msgstr "Napredno" + +#: templates/installation.php:75 +msgid "Database host" +msgstr "Domaćin baze" + +#: templates/installation.php:76 +msgid "Data folder" +msgstr "Facikla podataka" + +#: templates/installation.php:79 +msgid "Finish setup" +msgstr "ZavrÅ¡i podeÅ¡avanje" + +#: templates/layout.guest.php:35 +msgid "gives you freedom and control over your own data" +msgstr "vam daje slobodu i kontrolu nad vaÅ¡im podacima" + +#: templates/layout.user.php:34 +msgid "Log out" +msgstr "Odjava" + +#: templates/layout.user.php:46 templates/layout.user.php:47 +msgid "Settings" +msgstr "PodeÅ¡avanja" + +#: templates/login.php:4 +msgid "Lost your password?" +msgstr "Izgubili ste lozinku?" + +#: templates/login.php:9 templates/login.php:13 +msgid "remember" +msgstr "upamti" + +#: templates/logout.php:1 +msgid "You are logged out." +msgstr "Odjavljeni ste." + +#: templates/lostpassword.php:3 +msgid "You will receive a link to reset your password via Email." +msgstr "Dobićete vezu za resetovanje lozinke putem e-poÅ¡te." + +#: templates/lostpassword.php:5 +msgid "Requested" +msgstr "Zahtev poslat" + +#: templates/lostpassword.php:8 +msgid "Login failed!" +msgstr "NeuspeÅ¡no prijavljivanje!" + +#: templates/lostpassword.php:10 +msgid "Username or Email" +msgstr "KorisniÄko ime ili adresa e-poÅ¡te" + +#: templates/lostpassword.php:11 +msgid "Request reset" +msgstr "Zahtev za resetovanje" + +#: templates/part.pagenavi.php:3 +msgid "prev" +msgstr "prethodno" + +#: templates/part.pagenavi.php:20 +msgid "next" +msgstr "sledeće" + +#: templates/resetpassword.php:4 +msgid "Your password was reset" +msgstr "VaÅ¡a lozinka je resetovana" + +#: templates/resetpassword.php:6 +msgid "New password" +msgstr "Nova lozinka" + +#: templates/resetpassword.php:7 +msgid "Reset password" +msgstr "Resetuj lozinku" + + diff --git a/l10n/sr@latin/files.po b/l10n/sr@latin/files.po new file mode 100644 index 0000000000000000000000000000000000000000..f9af37cbadaceb4486cdd5eda2d33cb11c5a1fd2 --- /dev/null +++ b/l10n/sr@latin/files.po @@ -0,0 +1,99 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Slobodan Terzić <githzerai06@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Serbian (Latin) (http://www.transifex.net/projects/p/owncloud/team/sr@latin/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr@latin\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" + +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + +#: appinfo/app.php:7 +msgid "Files" +msgstr "Fajlovi" + +#: templates/admin.php:5 +msgid "Maximum upload size" +msgstr "Maksimalna veliÄina poÅ¡iljke" + +#: templates/index.php:10 +msgid "Upload" +msgstr "PoÅ¡alji" + +#: templates/index.php:17 +msgid "New Folder" +msgstr "Nova fascikla" + +#: templates/index.php:31 +msgid "Nothing in here. Upload something!" +msgstr "Ovde nema niÄeg. PoÅ¡aljite neÅ¡to!" + +#: templates/index.php:39 +msgid "Name" +msgstr "Ime" + +#: templates/index.php:41 +msgid "Download" +msgstr "Preuzmi" + +#: templates/index.php:45 +msgid "Size" +msgstr "VeliÄina" + +#: templates/index.php:46 +msgid "Modified" +msgstr "Zadnja izmena" + +#: templates/index.php:46 +msgid "Delete" +msgstr "ObriÅ¡i" + +#: templates/index.php:54 +msgid "Upload too large" +msgstr "PoÅ¡iljka je prevelika" + +#: templates/index.php:56 +msgid "" +"The files you are trying to upload exceed the maximum size for file uploads " +"on this server." +msgstr "" +"Fajlovi koje želite da poÅ¡aljete prevazilaze ograniÄenje maksimalne veliÄine" +" poÅ¡iljke na ovom serveru." + + diff --git a/l10n/sr@latin/media.po b/l10n/sr@latin/media.po new file mode 100644 index 0000000000000000000000000000000000000000..a647feac32c4c0def6d562217b1e0c39cc49a198 --- /dev/null +++ b/l10n/sr@latin/media.po @@ -0,0 +1,69 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Slobodan Terzić <githzerai06@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-13 22:12+0000\n" +"Last-Translator: Xabre <githzerai06@gmail.com>\n" +"Language-Team: Serbian (Latin) (http://www.transifex.net/projects/p/owncloud/team/sr@latin/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr@latin\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" + +#: appinfo/app.php:31 +msgid "Music" +msgstr "Muzika" + +#: templates/music.php:3 +msgid "Play" +msgstr "Pusti" + +#: templates/music.php:4 templates/music.php:30 +msgid "Pause" +msgstr "Pauziraj" + +#: templates/music.php:5 +msgid "Previous" +msgstr "Prethodna" + +#: templates/music.php:6 +msgid "Next" +msgstr "Sledeća" + +#: templates/music.php:7 +msgid "Mute" +msgstr "IskljuÄi zvuk" + +#: templates/music.php:8 +msgid "Unmute" +msgstr "UkljuÄi zvuk" + +#: templates/music.php:28 +msgid "Songs scanned" +msgstr "Pretraženih pesama" + +#: templates/music.php:29 +msgid "Rescan Collection" +msgstr "Ponovo pretraži zbirku" + +#: templates/music.php:37 +msgid "Artist" +msgstr "IzvoÄ‘aÄ" + +#: templates/music.php:38 +msgid "Album" +msgstr "Album" + +#: templates/music.php:39 +msgid "Title" +msgstr "Naslov" + + diff --git a/l10n/sr@latin/settings.po b/l10n/sr@latin/settings.po new file mode 100644 index 0000000000000000000000000000000000000000..cb8b76399c1efe01ed5d61bc71d2d5f5322a873b --- /dev/null +++ b/l10n/sr@latin/settings.po @@ -0,0 +1,134 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Slobodan Terzić <githzerai06@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-13 22:13+0000\n" +"Last-Translator: Xabre <githzerai06@gmail.com>\n" +"Language-Team: Serbian (Latin) (http://www.transifex.net/projects/p/owncloud/team/sr@latin/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr@latin\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" + +#: ajax/openid.php:13 ajax/setlanguage.php:13 +msgid "Authentication error" +msgstr "GreÅ¡ka autentifikacije" + +#: ajax/openid.php:21 +msgid "OpenID Changed" +msgstr "OpenID je izmenjen" + +#: ajax/openid.php:23 ajax/setlanguage.php:23 +msgid "Invalid request" +msgstr "Neispravan zahtev" + +#: ajax/setlanguage.php:21 +msgid "Language changed" +msgstr "Jezik je izmenjen" + +#: templates/apps.php:8 +msgid "Add your application" +msgstr "Dodajte svoj program" + +#: templates/apps.php:21 +msgid "Select an App" +msgstr "Izaberite program" + +#: templates/apps.php:23 +msgid "-licensed" +msgstr "-licenciran" + +#: templates/apps.php:23 +msgid "by" +msgstr "od" + +#: templates/help.php:8 +msgid "Ask a question" +msgstr "Postavite pitanje" + +#: templates/help.php:17 +msgid "Problems connecting to help database." +msgstr "Problem u povezivanju sa bazom pomoći" + +#: templates/help.php:18 +msgid "Go there manually." +msgstr "OtiÄ‘ite tamo ruÄno." + +#: templates/help.php:26 +msgid "Answer" +msgstr "Odgovor" + +#: templates/personal.php:8 +msgid "You use" +msgstr "Koristite" + +#: templates/personal.php:8 +msgid "of the available" +msgstr "od dostupnih" + +#: templates/personal.php:13 +msgid "Your password got changed" +msgstr "VaÅ¡a lozinka je izmenjena" + +#: templates/personal.php:14 +msgid "Unable to change your password" +msgstr "Ne mogu da izmenim vaÅ¡u lozinku" + +#: templates/personal.php:15 +msgid "Current password" +msgstr "Trenutna lozinka" + +#: templates/personal.php:16 +msgid "New password" +msgstr "Nova lozinka" + +#: templates/personal.php:17 +msgid "show" +msgstr "prikaži" + +#: templates/personal.php:18 +msgid "Change password" +msgstr "Izmeni lozinku" + +#: templates/personal.php:24 templates/personal.php:25 +msgid "Language" +msgstr "Jezik" + +#: templates/personal.php:30 +msgid "Help translating" +msgstr "Pomozite u prevoÄ‘enju" + +#: templates/personal.php:37 +msgid "use this address to connect to your ownCloud in your file manager" +msgstr "" +"koristite ovu adresu da bi se povezali na ownCloud putem menadžnjera fajlova" + +#: templates/users.php:16 +msgid "Name" +msgstr "Ime" + +#: templates/users.php:17 +msgid "Password" +msgstr "Lozinka" + +#: templates/users.php:18 templates/users.php:36 +msgid "Groups" +msgstr "Grupe" + +#: templates/users.php:24 +msgid "Create" +msgstr "Napravi" + +#: templates/users.php:48 +msgid "Delete" +msgstr "ObriÅ¡i" + + diff --git a/l10n/sv/calendar.po b/l10n/sv/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..db5536fcbc9b971f3677e4fe96aaa3dd4600c2ac --- /dev/null +++ b/l10n/sv/calendar.po @@ -0,0 +1,464 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Swedish (http://www.transifex.net/projects/p/owncloud/team/sv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "" + +#: lib/object.php:293 +msgid "Business" +msgstr "" + +#: lib/object.php:294 +msgid "Call" +msgstr "" + +#: lib/object.php:295 +msgid "Clients" +msgstr "" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "" + +#: lib/object.php:299 +msgid "Journey" +msgstr "" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "" + +#: lib/object.php:302 +msgid "Other" +msgstr "" + +#: lib/object.php:303 +msgid "Personal" +msgstr "" + +#: lib/object.php:304 +msgid "Projects" +msgstr "" + +#: lib/object.php:305 +msgid "Questions" +msgstr "" + +#: lib/object.php:306 +msgid "Work" +msgstr "" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "" + +#: lib/object.php:314 +msgid "Daily" +msgstr "" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "" + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "" + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "" + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "" + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "" + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "" + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "" + +#: templates/calendar.php:34 +msgid "January" +msgstr "" + +#: templates/calendar.php:34 +msgid "February" +msgstr "" + +#: templates/calendar.php:34 +msgid "March" +msgstr "" + +#: templates/calendar.php:34 +msgid "April" +msgstr "" + +#: templates/calendar.php:34 +msgid "May" +msgstr "" + +#: templates/calendar.php:34 +msgid "June" +msgstr "" + +#: templates/calendar.php:34 +msgid "July" +msgstr "" + +#: templates/calendar.php:34 +msgid "August" +msgstr "" + +#: templates/calendar.php:34 +msgid "September" +msgstr "" + +#: templates/calendar.php:34 +msgid "October" +msgstr "" + +#: templates/calendar.php:34 +msgid "November" +msgstr "" + +#: templates/calendar.php:34 +msgid "December" +msgstr "" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "" + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "" + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "" + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "" + +#: templates/calendar.php:35 +msgid "May." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "" + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "" + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "" + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "" + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "" + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "" + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "" + +#: templates/calendar.php:53 +msgid "List" +msgstr "" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "" + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "" + + diff --git a/l10n/sv/contacts.po b/l10n/sv/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..f492fa61d7d0d09326410cee03736b5a1b234adc --- /dev/null +++ b/l10n/sv/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:10+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Swedish (http://www.transifex.net/projects/p/owncloud/team/sv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/sv/core.po b/l10n/sv/core.po index 85c6092cf318a050c19ac2f9ddac66ab8e351ca2..0870f7efb7e4cb59229178f29a3e52526a2c9f55 100644 --- a/l10n/sv/core.po +++ b/l10n/sv/core.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # <hakan.thn@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" -"POT-Creation-Date: 2011-09-04 18:14+0200\n" -"PO-Revision-Date: 2011-09-04 16:14+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-12 07:50+0000\n" +"Last-Translator: HakanS <hakan.thn@gmail.com>\n" "Language-Team: Swedish (http://www.transifex.net/projects/p/owncloud/team/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,7 +20,7 @@ msgstr "" #: strings.php:5 msgid "Personal" -msgstr "" +msgstr "Personlig" #: strings.php:6 msgid "Users" @@ -31,7 +32,7 @@ msgstr "Program" #: strings.php:8 msgid "Admin" -msgstr "" +msgstr "Admin" #: strings.php:9 msgid "Help" @@ -68,11 +69,11 @@ msgstr "Databas-användare" #: templates/installation.php:65 msgid "Database password" -msgstr "Databas-lösenord" +msgstr "Lösenord för databasen" #: templates/installation.php:66 msgid "Database name" -msgstr "Databasnamn" +msgstr "Databasens namn" #: templates/installation.php:72 msgid "Advanced" @@ -80,7 +81,7 @@ msgstr "Avancerat" #: templates/installation.php:75 msgid "Database host" -msgstr "" +msgstr "Databasserver" #: templates/installation.php:76 msgid "Data folder" @@ -92,11 +93,11 @@ msgstr "Avsluta installation" #: templates/layout.guest.php:35 msgid "gives you freedom and control over your own data" -msgstr "" +msgstr "ger dig frihet och kontroll över din egen data" #: templates/layout.user.php:34 msgid "Log out" -msgstr "" +msgstr "Logga ut" #: templates/layout.user.php:46 templates/layout.user.php:47 msgid "Settings" @@ -104,7 +105,7 @@ msgstr "Inställningar" #: templates/login.php:4 msgid "Lost your password?" -msgstr "" +msgstr "Tappat bort ditt lösenord?" #: templates/login.php:9 templates/login.php:13 msgid "remember" @@ -116,11 +117,11 @@ msgstr "Du är utloggad" #: templates/lostpassword.php:3 msgid "You will receive a link to reset your password via Email." -msgstr "" +msgstr "Du kommer fÃ¥ en länk, via e-post, där du kan Ã¥terställ ditt lösenord" #: templates/lostpassword.php:5 msgid "Requested" -msgstr "" +msgstr "Begärd" #: templates/lostpassword.php:8 msgid "Login failed!" @@ -128,11 +129,11 @@ msgstr "Inloggning misslyckades!" #: templates/lostpassword.php:10 msgid "Username or Email" -msgstr "" +msgstr "Användarnamn eller e-post" #: templates/lostpassword.php:11 msgid "Request reset" -msgstr "" +msgstr "Begär Ã¥terställning" #: templates/part.pagenavi.php:3 msgid "prev" @@ -144,14 +145,14 @@ msgstr "nästa" #: templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "" +msgstr "Ditt lösenord har Ã¥terställts" #: templates/resetpassword.php:6 msgid "New password" -msgstr "" +msgstr "Nytt lösenord" #: templates/resetpassword.php:7 msgid "Reset password" -msgstr "" +msgstr "Ã…terställ lösenord" diff --git a/l10n/sv/files.po b/l10n/sv/files.po index d9ca9ae2cad81cd9ccb47f6954d950626c3cff1d..64566d0b29b2313c21d868f995790cf7f8c25002 100644 --- a/l10n/sv/files.po +++ b/l10n/sv/files.po @@ -2,13 +2,14 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-08-18 10:45+0200\n" -"PO-Revision-Date: 2011-08-18 11:08+0000\n" -"Last-Translator: HakanS <hakan.thn@gmail.com>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" "Language-Team: Swedish (http://www.transifex.net/projects/p/owncloud/team/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -16,6 +17,32 @@ msgstr "" "Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + #: appinfo/app.php:7 msgid "Files" msgstr "Filer" @@ -24,43 +51,43 @@ msgstr "Filer" msgid "Maximum upload size" msgstr "Maximal storlek att lägga upp" -#: templates/part.list.php:1 -msgid "Nothing in here. Upload something!" -msgstr "Ingenting här. Lägg upp nÃ¥got!" - -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" msgstr "Lägg upp" -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" msgstr "Ny katalog" -#: templates/index.php:29 +#: templates/index.php:31 +msgid "Nothing in here. Upload something!" +msgstr "Ingenting här. Lägg upp nÃ¥got!" + +#: templates/index.php:39 msgid "Name" msgstr "Namn" -#: templates/index.php:31 +#: templates/index.php:41 msgid "Download" msgstr "Ladda ned" -#: templates/index.php:35 +#: templates/index.php:45 msgid "Size" msgstr "Storlek" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Modified" msgstr "Ändrad" -#: templates/index.php:36 +#: templates/index.php:46 msgid "Delete" msgstr "Ta bort" -#: templates/index.php:44 +#: templates/index.php:54 msgid "Upload too large" msgstr "För stor överföring" -#: templates/index.php:46 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." diff --git a/l10n/sv/media.po b/l10n/sv/media.po index 7eea58d1b7a523c2a0fcf1a5d6deffce4c43a1df..9c01948ed2920c40f4c303295075407ba6567c32 100644 --- a/l10n/sv/media.po +++ b/l10n/sv/media.po @@ -2,13 +2,14 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-08-20 05:08+0200\n" -"PO-Revision-Date: 2011-08-20 03:08+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-12 06:24+0000\n" +"Last-Translator: HakanS <hakan.thn@gmail.com>\n" "Language-Team: Swedish (http://www.transifex.net/projects/p/owncloud/team/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,7 +23,7 @@ msgstr "Musik" #: templates/music.php:3 msgid "Play" -msgstr "" +msgstr "Spela" #: templates/music.php:4 templates/music.php:30 msgid "Pause" @@ -30,19 +31,19 @@ msgstr "Paus" #: templates/music.php:5 msgid "Previous" -msgstr "" +msgstr "FöregÃ¥ende" #: templates/music.php:6 msgid "Next" -msgstr "" +msgstr "Nästa" #: templates/music.php:7 msgid "Mute" -msgstr "" +msgstr "Ljudlös" #: templates/music.php:8 msgid "Unmute" -msgstr "" +msgstr "Ljud pÃ¥" #: templates/music.php:28 msgid "Songs scanned" diff --git a/l10n/sv/settings.po b/l10n/sv/settings.po index 4507424b33cb956cc5557a7187bd13e4ac4f6f60..4ffc833e868bdf76f3b593a99ff9f9e13957072b 100644 --- a/l10n/sv/settings.po +++ b/l10n/sv/settings.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # <hakan.thn@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-08-28 01:13+0200\n" -"PO-Revision-Date: 2011-08-27 23:13+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-12 07:57+0000\n" +"Last-Translator: HakanS <hakan.thn@gmail.com>\n" "Language-Team: Swedish (http://www.transifex.net/projects/p/owncloud/team/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -35,7 +36,7 @@ msgstr "SprÃ¥k ändrades" #: templates/apps.php:8 msgid "Add your application" -msgstr "" +msgstr "Lägg till din applikation" #: templates/apps.php:21 msgid "Select an App" @@ -79,7 +80,7 @@ msgstr "Ditt lösenord ändrades" #: templates/personal.php:14 msgid "Unable to change your password" -msgstr "" +msgstr "Kunde inte ändra ditt lösenord" #: templates/personal.php:15 msgid "Current password" @@ -97,7 +98,7 @@ msgstr "visa" msgid "Change password" msgstr "Ändra lösenord" -#: templates/personal.php:24 +#: templates/personal.php:24 templates/personal.php:25 msgid "Language" msgstr "SprÃ¥k" @@ -105,7 +106,7 @@ msgstr "SprÃ¥k" msgid "Help translating" msgstr "Hjälp till att översätta" -#: templates/personal.php:36 +#: templates/personal.php:37 msgid "use this address to connect to your ownCloud in your file manager" msgstr "" "använd denna adress för att ansluta till ditt ownCloud i din filhanterare" diff --git a/l10n/templates/calendar.pot b/l10n/templates/calendar.pot index 83af928bf44ca99af1f778eb74ddfd6f4583053c..66cc90a4bfdd89a850f41bbc002a143be744ffd0 100644 --- a/l10n/templates/calendar.pot +++ b/l10n/templates/calendar.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-09-04 18:15+0200\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,25 +17,118 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: ajax/settimezone.php:13 ajax/updatecalendar.php:29 +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 msgid "Authentication error" msgstr "" -#: ajax/settimezone.php:21 +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "" + +#: ajax/settimezone.php:27 msgid "Timezone changed" msgstr "" -#: ajax/settimezone.php:23 +#: ajax/settimezone.php:29 msgid "Invalid request" msgstr "" -#: appinfo/app.php:18 templates/part.editevent.php:25 -#: templates/part.eventinfo.php:18 templates/part.newevent.php:41 +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 msgid "Calendar" msgstr "" -#: js/calendar.js:801 js/calendar.js:809 -msgid "You can't open more than one dialog per site!" +#: lib/object.php:292 +msgid "Birthday" +msgstr "" + +#: lib/object.php:293 +msgid "Business" +msgstr "" + +#: lib/object.php:294 +msgid "Call" +msgstr "" + +#: lib/object.php:295 +msgid "Clients" +msgstr "" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "" + +#: lib/object.php:299 +msgid "Journey" +msgstr "" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "" + +#: lib/object.php:302 +msgid "Other" +msgstr "" + +#: lib/object.php:303 +msgid "Personal" +msgstr "" + +#: lib/object.php:304 +msgid "Projects" +msgstr "" + +#: lib/object.php:305 +msgid "Questions" +msgstr "" + +#: lib/object.php:306 +msgid "Work" +msgstr "" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "" + +#: lib/object.php:314 +msgid "Daily" +msgstr "" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "" + +#: lib/object.php:337 +msgid "Not an array" msgstr "" #: templates/calendar.php:3 @@ -114,7 +207,7 @@ msgstr "" msgid "April" msgstr "" -#: templates/calendar.php:34 templates/calendar.php:35 +#: templates/calendar.php:34 msgid "May" msgstr "" @@ -162,6 +255,10 @@ msgstr "" msgid "Apr." msgstr "" +#: templates/calendar.php:35 +msgid "May." +msgstr "" + #: templates/calendar.php:35 msgid "Jun." msgstr "" @@ -190,43 +287,48 @@ msgstr "" msgid "Dec." msgstr "" -#: templates/calendar.php:36 templates/calendar.php:45 +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 msgid "Week" msgstr "" -#: templates/calendar.php:37 templates/calendar.php:46 +#: templates/calendar.php:37 templates/calendar.php:51 msgid "Weeks" msgstr "" -#: templates/calendar.php:44 +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "" + +#: templates/calendar.php:49 msgid "Day" msgstr "" -#: templates/calendar.php:47 +#: templates/calendar.php:52 msgid "Month" msgstr "" -#: templates/calendar.php:48 -msgid "Listview" +#: templates/calendar.php:53 +msgid "List" msgstr "" -#: templates/calendar.php:53 +#: templates/calendar.php:58 msgid "Today" msgstr "" -#: templates/calendar.php:54 +#: templates/calendar.php:59 msgid "Calendars" msgstr "" -#: templates/calendar.php:71 templates/calendar.php:89 +#: templates/calendar.php:76 templates/calendar.php:94 msgid "Time" msgstr "" -#: templates/calendar.php:111 -msgid "CW" -msgstr "" - -#: templates/calendar.php:162 +#: templates/calendar.php:169 msgid "There was a fail, while parsing the file." msgstr "" @@ -234,6 +336,15 @@ msgstr "" msgid "Choose active calendars" msgstr "" +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "" + #: templates/part.choosecalendar.rowfields.php:4 msgid "Download" msgstr "" @@ -243,124 +354,109 @@ msgstr "" msgid "Edit" msgstr "" -#: templates/part.editcalendar.php:1 +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "" + +#: templates/part.editcalendar.php:9 msgid "Edit calendar" msgstr "" -#: templates/part.editcalendar.php:4 +#: templates/part.editcalendar.php:12 msgid "Displayname" msgstr "" -#: templates/part.editcalendar.php:14 +#: templates/part.editcalendar.php:23 msgid "Active" msgstr "" -#: templates/part.editcalendar.php:19 templates/part.editevent.php:93 -#: templates/part.eventinfo.php:58 templates/part.newevent.php:127 +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 msgid "Description" msgstr "" -#: templates/part.editcalendar.php:25 +#: templates/part.editcalendar.php:35 msgid "Calendar color" msgstr "" -#: templates/part.editcalendar.php:31 templates/part.editevent.php:98 -#: templates/part.newevent.php:133 +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 msgid "Submit" msgstr "" +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "" + #: templates/part.editevent.php:1 templates/part.eventinfo.php:1 msgid "Edit an event" msgstr "" -#: templates/part.editevent.php:4 templates/part.eventinfo.php:4 -#: templates/part.newevent.php:6 +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 msgid "Title" msgstr "" -#: templates/part.editevent.php:10 templates/part.eventinfo.php:9 -#: templates/part.newevent.php:12 +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 msgid "Location" msgstr "" -#: templates/part.editevent.php:18 templates/part.eventinfo.php:16 -#: templates/part.newevent.php:20 +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 msgid "Category" msgstr "" -#: templates/part.editevent.php:41 templates/part.eventinfo.php:28 -#: templates/part.newevent.php:76 +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 msgid "All Day Event" msgstr "" -#: templates/part.editevent.php:48 templates/part.eventinfo.php:31 -#: templates/part.newevent.php:80 +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 msgid "From" msgstr "" -#: templates/part.editevent.php:62 templates/part.eventinfo.php:38 -#: templates/part.newevent.php:96 +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 msgid "To" msgstr "" -#: templates/part.editevent.php:70 templates/part.eventinfo.php:44 -#: templates/part.newevent.php:104 +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 msgid "Repeat" msgstr "" -#: templates/part.editevent.php:86 templates/part.eventinfo.php:51 -#: templates/part.newevent.php:120 +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 msgid "Attendees" msgstr "" +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "" + #: templates/part.eventinfo.php:63 msgid "Close" msgstr "" -#: templates/part.newevent.php:2 +#: templates/part.newevent.php:1 msgid "Create a new event" msgstr "" -#: templates/part.newevent.php:8 -msgid "Title of the Event" -msgstr "" - -#: templates/part.newevent.php:14 -msgid "Location of the Event" -msgstr "" - -#: templates/part.newevent.php:107 -msgid "Does not repeat" -msgstr "" - -#: templates/part.newevent.php:108 -msgid "Daily" -msgstr "" - -#: templates/part.newevent.php:109 -msgid "Weekly" -msgstr "" - -#: templates/part.newevent.php:110 -msgid "Every Weekday" -msgstr "" - -#: templates/part.newevent.php:111 -msgid "Bi-Weekly" -msgstr "" - -#: templates/part.newevent.php:112 -msgid "Monthly" -msgstr "" - -#: templates/part.newevent.php:113 -msgid "Yearly" -msgstr "" - -#: templates/part.newevent.php:128 -msgid "Description of the Event" -msgstr "" - -#: templates/settings.php:3 +#: templates/settings.php:11 msgid "Timezone" msgstr "" diff --git a/l10n/templates/contacts.pot b/l10n/templates/contacts.pot new file mode 100644 index 0000000000000000000000000000000000000000..b0426f2bb592d6163d461f83ee23165466e1a227 --- /dev/null +++ b/l10n/templates/contacts.pot @@ -0,0 +1,178 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:31 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:32 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" diff --git a/l10n/templates/core.pot b/l10n/templates/core.pot index 4dd47a6ad7c9424d20bf9fb8683889940dd71c2e..98b310f2d14d81775d36847abc1a00132777a4b4 100644 --- a/l10n/templates/core.pot +++ b/l10n/templates/core.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-09-04 18:15+0200\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/files.pot b/l10n/templates/files.pot index 506824425fea072d9f4ed1ff3e718b40cecc7667..5b57ccec9a2081909df242aec096a4894fdc24ef 100644 --- a/l10n/templates/files.pot +++ b/l10n/templates/files.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-09-04 18:15+0200\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,6 +17,32 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + #: appinfo/app.php:7 msgid "Files" msgstr "" @@ -25,43 +51,43 @@ msgstr "" msgid "Maximum upload size" msgstr "" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" msgstr "" -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" msgstr "" -#: templates/index.php:24 +#: templates/index.php:31 msgid "Nothing in here. Upload something!" msgstr "" -#: templates/index.php:31 +#: templates/index.php:39 msgid "Name" msgstr "" -#: templates/index.php:33 +#: templates/index.php:41 msgid "Download" msgstr "" -#: templates/index.php:37 +#: templates/index.php:45 msgid "Size" msgstr "" -#: templates/index.php:38 +#: templates/index.php:46 msgid "Modified" msgstr "" -#: templates/index.php:38 +#: templates/index.php:46 msgid "Delete" msgstr "" -#: templates/index.php:46 +#: templates/index.php:54 msgid "Upload too large" msgstr "" -#: templates/index.php:48 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." diff --git a/l10n/templates/media.pot b/l10n/templates/media.pot index a3f3bde6fb87ac5e751f915b6d761a5fece0083c..0a2757a306eeec01d67f230539e248d88e9319e9 100644 --- a/l10n/templates/media.pot +++ b/l10n/templates/media.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-09-04 18:15+0200\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/settings.pot b/l10n/templates/settings.pot index 21a744f1d84a408069858e783a00eb5e60842422..b14443191534ff55028e864ffe70e51f0d8263b6 100644 --- a/l10n/templates/settings.pot +++ b/l10n/templates/settings.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-09-04 18:15+0200\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/zh_CN/calendar.po b/l10n/zh_CN/calendar.po new file mode 100644 index 0000000000000000000000000000000000000000..7e2d49b529b47fdf1cb5592578d41baec8bc4d56 --- /dev/null +++ b/l10n/zh_CN/calendar.po @@ -0,0 +1,465 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# <wengxt@gmail.com>, 2011. +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Chinese (China) (http://www.transifex.net/projects/p/owncloud/team/zh_CN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0\n" + +#: ajax/createcalendar.php:18 ajax/settimezone.php:19 +#: ajax/updatecalendar.php:18 +msgid "Authentication error" +msgstr "验è¯é”™è¯¯" + +#: ajax/editeventform.php:25 +msgid "Wrong calendar" +msgstr "" + +#: ajax/settimezone.php:27 +msgid "Timezone changed" +msgstr "时区已修改" + +#: ajax/settimezone.php:29 +msgid "Invalid request" +msgstr "éžæ³•è¯·æ±‚" + +#: appinfo/app.php:19 templates/part.eventform.php:27 +#: templates/part.eventinfo.php:18 +msgid "Calendar" +msgstr "日历" + +#: lib/object.php:292 +msgid "Birthday" +msgstr "" + +#: lib/object.php:293 +msgid "Business" +msgstr "" + +#: lib/object.php:294 +msgid "Call" +msgstr "" + +#: lib/object.php:295 +msgid "Clients" +msgstr "" + +#: lib/object.php:296 +msgid "Deliverer" +msgstr "" + +#: lib/object.php:297 +msgid "Holidays" +msgstr "" + +#: lib/object.php:298 +msgid "Ideas" +msgstr "" + +#: lib/object.php:299 +msgid "Journey" +msgstr "" + +#: lib/object.php:300 +msgid "Jubilee" +msgstr "" + +#: lib/object.php:301 +msgid "Meeting" +msgstr "" + +#: lib/object.php:302 +msgid "Other" +msgstr "" + +#: lib/object.php:303 +msgid "Personal" +msgstr "" + +#: lib/object.php:304 +msgid "Projects" +msgstr "" + +#: lib/object.php:305 +msgid "Questions" +msgstr "" + +#: lib/object.php:306 +msgid "Work" +msgstr "" + +#: lib/object.php:313 +msgid "Does not repeat" +msgstr "ä¸é‡å¤" + +#: lib/object.php:314 +msgid "Daily" +msgstr "æ¯å¤©" + +#: lib/object.php:315 +msgid "Weekly" +msgstr "æ¯å‘¨" + +#: lib/object.php:316 +msgid "Every Weekday" +msgstr "æ¯ä¸ªå·¥ä½œæ—¥" + +#: lib/object.php:317 +msgid "Bi-Weekly" +msgstr "æ¯ä¸¤å‘¨" + +#: lib/object.php:318 +msgid "Monthly" +msgstr "æ¯æœˆ" + +#: lib/object.php:319 +msgid "Yearly" +msgstr "æ¯å¹´" + +#: lib/object.php:337 +msgid "Not an array" +msgstr "" + +#: templates/calendar.php:3 +msgid "All day" +msgstr "全天" + +#: templates/calendar.php:32 +msgid "Sunday" +msgstr "星期日" + +#: templates/calendar.php:32 +msgid "Monday" +msgstr "星期一" + +#: templates/calendar.php:32 +msgid "Tuesday" +msgstr "星期二" + +#: templates/calendar.php:32 +msgid "Wednesday" +msgstr "星期三" + +#: templates/calendar.php:32 +msgid "Thursday" +msgstr "星期四" + +#: templates/calendar.php:32 +msgid "Friday" +msgstr "星期五" + +#: templates/calendar.php:32 +msgid "Saturday" +msgstr "星期å…" + +#: templates/calendar.php:33 +msgid "Sun." +msgstr "æ—¥" + +#: templates/calendar.php:33 +msgid "Mon." +msgstr "一" + +#: templates/calendar.php:33 +msgid "Tue." +msgstr "二" + +#: templates/calendar.php:33 +msgid "Wed." +msgstr "三" + +#: templates/calendar.php:33 +msgid "Thu." +msgstr "å››" + +#: templates/calendar.php:33 +msgid "Fri." +msgstr "五" + +#: templates/calendar.php:33 +msgid "Sat." +msgstr "å…" + +#: templates/calendar.php:34 +msgid "January" +msgstr "1月" + +#: templates/calendar.php:34 +msgid "February" +msgstr "2月" + +#: templates/calendar.php:34 +msgid "March" +msgstr "3月" + +#: templates/calendar.php:34 +msgid "April" +msgstr "4月" + +#: templates/calendar.php:34 +msgid "May" +msgstr "5月" + +#: templates/calendar.php:34 +msgid "June" +msgstr "6月" + +#: templates/calendar.php:34 +msgid "July" +msgstr "7月" + +#: templates/calendar.php:34 +msgid "August" +msgstr "8月" + +#: templates/calendar.php:34 +msgid "September" +msgstr "9月" + +#: templates/calendar.php:34 +msgid "October" +msgstr "10月" + +#: templates/calendar.php:34 +msgid "November" +msgstr "11月" + +#: templates/calendar.php:34 +msgid "December" +msgstr "12月" + +#: templates/calendar.php:35 +msgid "Jan." +msgstr "1月" + +#: templates/calendar.php:35 +msgid "Feb." +msgstr "2月" + +#: templates/calendar.php:35 +msgid "Mar." +msgstr "3月" + +#: templates/calendar.php:35 +msgid "Apr." +msgstr "4月" + +#: templates/calendar.php:35 +msgid "May." +msgstr "" + +#: templates/calendar.php:35 +msgid "Jun." +msgstr "6月" + +#: templates/calendar.php:35 +msgid "Jul." +msgstr "7月" + +#: templates/calendar.php:35 +msgid "Aug." +msgstr "8月" + +#: templates/calendar.php:35 +msgid "Sep." +msgstr "9月" + +#: templates/calendar.php:35 +msgid "Oct." +msgstr "10月" + +#: templates/calendar.php:35 +msgid "Nov." +msgstr "11月" + +#: templates/calendar.php:35 +msgid "Dec." +msgstr "12月" + +#: templates/calendar.php:36 templates/calendar.php:50 +#: templates/calendar.php:116 +msgid "Week" +msgstr "星期" + +#: templates/calendar.php:37 templates/calendar.php:51 +msgid "Weeks" +msgstr "星期" + +#: templates/calendar.php:38 +msgid "More before {startdate}" +msgstr "" + +#: templates/calendar.php:39 +msgid "More after {enddate}" +msgstr "" + +#: templates/calendar.php:49 +msgid "Day" +msgstr "天" + +#: templates/calendar.php:52 +msgid "Month" +msgstr "月" + +#: templates/calendar.php:53 +msgid "List" +msgstr "" + +#: templates/calendar.php:58 +msgid "Today" +msgstr "今天" + +#: templates/calendar.php:59 +msgid "Calendars" +msgstr "日历" + +#: templates/calendar.php:76 templates/calendar.php:94 +msgid "Time" +msgstr "时间" + +#: templates/calendar.php:169 +msgid "There was a fail, while parsing the file." +msgstr "解æžæ–‡ä»¶å¤±è´¥" + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "选择活动日历" + +#: templates/part.choosecalendar.php:15 +msgid "New Calendar" +msgstr "" + +#: templates/part.choosecalendar.php:20 +#: templates/part.choosecalendar.rowfields.php:4 +msgid "CalDav Link" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:4 +msgid "Download" +msgstr "下载" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.eventinfo.php:64 +msgid "Edit" +msgstr "编辑" + +#: templates/part.choosecalendar.rowfields.php:4 +#: templates/part.editevent.php:8 +msgid "Delete" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "编辑日历" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "显示å称" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "激活" + +#: templates/part.editcalendar.php:29 templates/part.eventform.php:88 +#: templates/part.eventinfo.php:58 +msgid "Description" +msgstr "æè¿°" + +#: templates/part.editcalendar.php:35 +msgid "Calendar color" +msgstr "日历颜色" + +#: templates/part.editcalendar.php:41 +msgid "Save" +msgstr "" + +#: templates/part.editcalendar.php:41 templates/part.editevent.php:7 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "æ交" + +#: templates/part.editcalendar.php:42 +msgid "Cancel" +msgstr "" + +#: templates/part.editevent.php:1 templates/part.eventinfo.php:1 +msgid "Edit an event" +msgstr "编辑事件" + +#: templates/part.eventform.php:3 templates/part.eventinfo.php:4 +msgid "Title" +msgstr "æ ‡é¢˜" + +#: templates/part.eventform.php:5 +msgid "Title of the Event" +msgstr "äº‹ä»¶æ ‡é¢˜" + +#: templates/part.eventform.php:9 templates/part.eventinfo.php:9 +msgid "Location" +msgstr "地点" + +#: templates/part.eventform.php:11 +msgid "Location of the Event" +msgstr "事件地点" + +#: templates/part.eventform.php:17 templates/part.eventinfo.php:16 +msgid "Category" +msgstr "分类" + +#: templates/part.eventform.php:19 +msgid "Select category" +msgstr "" + +#: templates/part.eventform.php:45 templates/part.eventinfo.php:28 +msgid "All Day Event" +msgstr "全天事件" + +#: templates/part.eventform.php:49 templates/part.eventinfo.php:31 +msgid "From" +msgstr "自" + +#: templates/part.eventform.php:57 templates/part.eventinfo.php:38 +msgid "To" +msgstr "至" + +#: templates/part.eventform.php:65 templates/part.eventinfo.php:44 +msgid "Repeat" +msgstr "é‡å¤" + +#: templates/part.eventform.php:81 templates/part.eventinfo.php:51 +msgid "Attendees" +msgstr "å‚åŠ è€…" + +#: templates/part.eventform.php:89 +msgid "Description of the Event" +msgstr "事件æè¿°" + +#: templates/part.eventinfo.php:63 +msgid "Close" +msgstr "å…³é—" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "创建新事件" + +#: templates/settings.php:11 +msgid "Timezone" +msgstr "时区" + + diff --git a/l10n/zh_CN/contacts.po b/l10n/zh_CN/contacts.po new file mode 100644 index 0000000000000000000000000000000000000000..1fd7ecb96463186e48696612f04246fa5a0f3e52 --- /dev/null +++ b/l10n/zh_CN/contacts.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-23 20:10+0200\n" +"PO-Revision-Date: 2011-09-23 18:10+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" +"Language-Team: Chinese (China) (http://www.transifex.net/projects/p/owncloud/team/zh_CN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0\n" + +#: ajax/addcard.php:31 ajax/addproperty.php:31 ajax/deletebook.php:32 +#: ajax/deletecard.php:32 ajax/deleteproperty.php:34 ajax/getdetails.php:32 +#: ajax/setproperty.php:32 ajax/showaddcard.php:30 ajax/showaddproperty.php:31 +#: ajax/showsetproperty.php:32 photo.php:32 +msgid "You need to log in." +msgstr "" + +#: ajax/addcard.php:37 +msgid "This is not your addressbook." +msgstr "" + +#: ajax/addproperty.php:37 ajax/deletecard.php:39 ajax/deleteproperty.php:41 +#: ajax/getdetails.php:39 ajax/setproperty.php:38 ajax/showaddproperty.php:37 +#: ajax/showsetproperty.php:38 photo.php:39 +msgid "Contact could not be found." +msgstr "" + +#: ajax/addproperty.php:43 ajax/deletebook.php:38 ajax/deletecard.php:45 +#: ajax/deleteproperty.php:47 ajax/getdetails.php:45 ajax/setproperty.php:44 +#: ajax/showaddproperty.php:43 ajax/showsetproperty.php:44 photo.php:45 +msgid "This is not your contact." +msgstr "" + +#: ajax/addproperty.php:50 ajax/deleteproperty.php:54 ajax/getdetails.php:52 +#: ajax/setproperty.php:51 ajax/showsetproperty.php:51 +msgid "vCard could not be read." +msgstr "" + +#: ajax/deleteproperty.php:65 ajax/setproperty.php:62 +#: ajax/showsetproperty.php:62 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: photo.php:53 +msgid "This card is not RFC compatible." +msgstr "" + +#: photo.php:90 +msgid "This card does not contain a photo." +msgstr "" + +#: templates/index.php:8 +msgid "Add Contact" +msgstr "" + +#: templates/part.addcardform.php:5 +msgid "Group" +msgstr "" + +#: templates/part.addcardform.php:12 templates/part.property.php:3 +msgid "Name" +msgstr "" + +#: templates/part.addcardform.php:14 +msgid "Create Contact" +msgstr "" + +#: templates/part.addpropertyform.php:4 templates/part.property.php:40 +msgid "Address" +msgstr "" + +#: templates/part.addpropertyform.php:5 +msgid "Telephone" +msgstr "" + +#: templates/part.addpropertyform.php:6 templates/part.property.php:22 +msgid "Email" +msgstr "" + +#: templates/part.addpropertyform.php:7 templates/part.property.php:15 +msgid "Organization" +msgstr "" + +#: templates/part.addpropertyform.php:17 templates/part.addpropertyform.php:32 +msgid "Work" +msgstr "" + +#: templates/part.addpropertyform.php:18 templates/part.addpropertyform.php:30 +msgid "Home" +msgstr "" + +#: templates/part.addpropertyform.php:20 templates/part.property.php:48 +#: templates/part.setpropertyform.php:5 +msgid "PO Box" +msgstr "" + +#: templates/part.addpropertyform.php:21 templates/part.property.php:51 +#: templates/part.setpropertyform.php:6 +msgid "Extended" +msgstr "" + +#: templates/part.addpropertyform.php:22 templates/part.property.php:54 +#: templates/part.setpropertyform.php:7 +msgid "Street" +msgstr "" + +#: templates/part.addpropertyform.php:23 templates/part.property.php:57 +#: templates/part.setpropertyform.php:8 +msgid "City" +msgstr "" + +#: templates/part.addpropertyform.php:24 templates/part.property.php:60 +#: templates/part.setpropertyform.php:9 +msgid "Region" +msgstr "" + +#: templates/part.addpropertyform.php:25 templates/part.property.php:63 +#: templates/part.setpropertyform.php:10 +msgid "Zipcode" +msgstr "" + +#: templates/part.addpropertyform.php:26 templates/part.property.php:66 +#: templates/part.setpropertyform.php:11 +msgid "Country" +msgstr "" + +#: templates/part.addpropertyform.php:31 +msgid "Mobile" +msgstr "" + +#: templates/part.addpropertyform.php:33 +msgid "Text" +msgstr "" + +#: templates/part.addpropertyform.php:34 +msgid "Voice" +msgstr "" + +#: templates/part.addpropertyform.php:35 +msgid "Fax" +msgstr "" + +#: templates/part.addpropertyform.php:36 +msgid "Video" +msgstr "" + +#: templates/part.addpropertyform.php:37 +msgid "Pager" +msgstr "" + +#: templates/part.details.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.details.php:34 +msgid "Add Property" +msgstr "" + +#: templates/part.property.php:9 +msgid "Birthday" +msgstr "" + +#: templates/part.property.php:29 +msgid "Phone" +msgstr "" + +#: templates/part.setpropertyform.php:17 +msgid "Edit" +msgstr "" + + diff --git a/l10n/zh_CN/core.po b/l10n/zh_CN/core.po index 3276af7ed102347490704f2f523d31951d150b24..1d6281a1f51cfd673b536d8f3ea50747aba26aa6 100644 --- a/l10n/zh_CN/core.po +++ b/l10n/zh_CN/core.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # <wengxt@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" -"POT-Creation-Date: 2011-09-04 18:14+0200\n" -"PO-Revision-Date: 2011-09-04 16:14+0000\n" -"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-04 17:07+0000\n" +"Last-Translator: csslayer <wengxt@gmail.com>\n" "Language-Team: Chinese (China) (http://www.transifex.net/projects/p/owncloud/team/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -92,7 +93,7 @@ msgstr "安装完æˆ" #: templates/layout.guest.php:35 msgid "gives you freedom and control over your own data" -msgstr "" +msgstr "自由掌控您的数æ®" #: templates/layout.user.php:34 msgid "Log out" @@ -144,7 +145,7 @@ msgstr "下一页" #: templates/resetpassword.php:4 msgid "Your password was reset" -msgstr "" +msgstr "您的密ç å·²é‡ç½®" #: templates/resetpassword.php:6 msgid "New password" diff --git a/l10n/zh_CN/files.po b/l10n/zh_CN/files.po index fad80327c2f6dc084ef8ab4643d0b0b1b15e04ab..4a30d9d0c1fb3a3e01cd46d2bdb610e799db1af3 100644 --- a/l10n/zh_CN/files.po +++ b/l10n/zh_CN/files.po @@ -2,14 +2,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: # <wengxt@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" -"Report-Msgid-Bugs-To: http://bugs.kde.org/buglist.cgi?product=owncloud\n" -"POT-Creation-Date: 2011-09-03 14:50+0200\n" -"PO-Revision-Date: 2011-09-03 12:52+0000\n" -"Last-Translator: csslayer <wengxt@gmail.com>\n" +"Report-Msgid-Bugs-To: http://owncloud.shapado.com/\n" +"POT-Creation-Date: 2011-09-24 23:05+0200\n" +"PO-Revision-Date: 2011-09-24 21:05+0000\n" +"Last-Translator: JanCBorchardt <jan@unhosted.org>\n" "Language-Team: Chinese (China) (http://www.transifex.net/projects/p/owncloud/team/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,6 +18,32 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0\n" +#: ajax/upload.php:24 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:25 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:26 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:27 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:28 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:29 +msgid "Missing a temporary folder" +msgstr "" + #: appinfo/app.php:7 msgid "Files" msgstr "文件" @@ -25,43 +52,43 @@ msgstr "文件" msgid "Maximum upload size" msgstr "æœ€å¤§ä¸Šä¼ å¤§å°" -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" msgstr "ä¸Šä¼ " -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" msgstr "新建文件夹" -#: templates/index.php:24 +#: templates/index.php:31 msgid "Nothing in here. Upload something!" msgstr "è¿™é‡Œè¿˜ä»€ä¹ˆéƒ½æ²¡æœ‰ã€‚ä¸Šä¼ äº›ä¸œè¥¿å§ï¼" -#: templates/index.php:31 +#: templates/index.php:39 msgid "Name" msgstr "å称" -#: templates/index.php:33 +#: templates/index.php:41 msgid "Download" msgstr "下载" -#: templates/index.php:37 +#: templates/index.php:45 msgid "Size" msgstr "大å°" -#: templates/index.php:38 +#: templates/index.php:46 msgid "Modified" msgstr "修改日期" -#: templates/index.php:38 +#: templates/index.php:46 msgid "Delete" msgstr "åˆ é™¤" -#: templates/index.php:46 +#: templates/index.php:54 msgid "Upload too large" msgstr "ä¸Šä¼ æ–‡ä»¶è¿‡å¤§" -#: templates/index.php:48 +#: templates/index.php:56 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." diff --git a/lib/MDB2/Driver/Manager/sqlite3.php b/lib/MDB2/Driver/Manager/sqlite3.php index 4e420b5d0b2c50feb4d167d0151e14cfd307d49f..eabbb72b3c29f287c612f1c59859d08f73c1d854 100644 --- a/lib/MDB2/Driver/Manager/sqlite3.php +++ b/lib/MDB2/Driver/Manager/sqlite3.php @@ -69,8 +69,7 @@ class MDB2_Driver_Manager_sqlite3 extends MDB2_Driver_Manager_Common */ function createDatabase($name, $options = array()) { - global $SERVERROOT; - $datadir=OC_Config::getValue( "datadirectory", "$SERVERROOT/data" ); + $datadir=OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" ); $db =$this->getDBInstance(); if (PEAR::isError($db)) { return $db; @@ -1361,4 +1360,4 @@ class MDB2_Driver_Manager_sqlite3 extends MDB2_Driver_Manager_Common // }}} } -?> \ No newline at end of file +?> diff --git a/lib/MDB2/Driver/sqlite3.php b/lib/MDB2/Driver/sqlite3.php index ccf6bb5368854dd66dedbe61d211fa7998ec2cc9..a41aeed4850801d8a847ffdd3073bff9fed1a65a 100644 --- a/lib/MDB2/Driver/sqlite3.php +++ b/lib/MDB2/Driver/sqlite3.php @@ -351,8 +351,7 @@ class MDB2_Driver_sqlite3 extends MDB2_Driver_Common if($this->connection instanceof SQLite3){ return MDB2_OK; } - global $SERVERROOT; - $datadir=OC_Config::getValue( "datadirectory", "$SERVERROOT/data" ); + $datadir=OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" ); $database_file = $this->_getDatabaseFile($this->database_name); if (is_resource($this->connection)) { //if (count(array_diff($this->connected_dsn, $this->dsn)) == 0 @@ -1358,4 +1357,4 @@ class MDB2_Statement_sqlite3 extends MDB2_Statement_Common } } -?> \ No newline at end of file +?> diff --git a/lib/app.php b/lib/app.php index 61ea081c6ff4d558370974490e62748439596a8e..b9eea483a557cd6b52421e4c6367a2860fe09843 100644 --- a/lib/app.php +++ b/lib/app.php @@ -44,8 +44,6 @@ class OC_App{ * exists. */ public static function loadApps(){ - global $SERVERROOT; - // Did we allready load everything? if( self::$init ){ return true; @@ -60,7 +58,7 @@ class OC_App{ $apps = OC_Appconfig::getApps(); foreach( $apps as $app ){ if( self::isEnabled( $app )){ - if(is_file($SERVERROOT.'/apps/'.$app.'/appinfo/app.php')){ + if(is_file(OC::$SERVERROOT.'/apps/'.$app.'/appinfo/app.php')){ require( 'apps/'.$app.'/appinfo/app.php' ); } } @@ -202,23 +200,36 @@ class OC_App{ */ public static function getSettingsNavigation(){ $l=new OC_L10N('core'); - $admin=array( - array( "id" => "core_users", "order" => 2, "href" => OC_Helper::linkTo( "settings", "users.php" ), "name" => $l->t("Users"), "icon" => OC_Helper::imagePath( "settings", "users.svg" )), - array( "id" => "core_apps", "order" => 3, "href" => OC_Helper::linkTo( "settings", "apps.php?installed" ), "name" => $l->t("Apps"), "icon" => OC_Helper::imagePath( "settings", "apps.svg" )), - ); - $settings=array( - array( "id" => "help", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "help.php" ), "name" => $l->t("Help"), "icon" => OC_Helper::imagePath( "settings", "help.svg" )), - array( "id" => "personal", "order" => 1, "href" => OC_Helper::linkTo( "settings", "personal.php" ), "name" => $l->t("Personal"), "icon" => OC_Helper::imagePath( "settings", "personal.svg" )) - ); - if(count(self::$settingsForms)>0){ - $settings[]=array( "id" => "settings", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "settings.php" ), "name" => $l->t("Settings"), "icon" => OC_Helper::imagePath( "settings", "settings.svg" )); - } - if(count(self::$adminForms)>0){ - $admin[]=array( "id" => "admin", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "admin.php" ), "name" => $l->t("Admin"), "icon" => OC_Helper::imagePath( "settings", "admin.svg" )); - } - if( OC_Group::inGroup( $_SESSION["user_id"], "admin" )){ - $settings=array_merge($admin,$settings); - } + + // by default, settings only contain the help menu + $settings = array( + array( "id" => "help", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "help.php" ), "name" => $l->t("Help"), "icon" => OC_Helper::imagePath( "settings", "help.svg" )) + ); + + // if the user is logged-in + if (OC_User::isLoggedIn()) { + // personal menu + $settings[] = array( "id" => "personal", "order" => 1, "href" => OC_Helper::linkTo( "settings", "personal.php" ), "name" => $l->t("Personal"), "icon" => OC_Helper::imagePath( "settings", "personal.svg" )); + + // if there're some settings forms + if(!empty(self::$settingsForms)) + // settings menu + $settings[]=array( "id" => "settings", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "settings.php" ), "name" => $l->t("Settings"), "icon" => OC_Helper::imagePath( "settings", "settings.svg" )); + + // if the user is an admin + if(OC_Group::inGroup( $_SESSION["user_id"], "admin" )) { + // admin users menu + $settings[] = array( "id" => "core_users", "order" => 2, "href" => OC_Helper::linkTo( "settings", "users.php" ), "name" => $l->t("Users"), "icon" => OC_Helper::imagePath( "settings", "users.svg" )); + // admin apps menu + $settings[] = array( "id" => "core_apps", "order" => 3, "href" => OC_Helper::linkTo( "settings", "apps.php?installed" ), "name" => $l->t("Apps"), "icon" => OC_Helper::imagePath( "settings", "apps.svg" )); + + // if there're some admin forms + if(!empty(self::$adminForms)) + // admins menu + $settings[]=array( "id" => "admin", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "admin.php" ), "name" => $l->t("Admin"), "icon" => OC_Helper::imagePath( "settings", "admin.svg" )); + } + } + $navigation = self::proceedNavigation($settings); return $navigation; } @@ -239,7 +250,7 @@ class OC_App{ return $list; } - + /** * @brief Read app metadata from the info.xml file * @param string $appid id of the app or the path of the info.xml file @@ -263,7 +274,7 @@ class OC_App{ } return $data; } - + /** * @brief Returns the navigation * @returns associative array @@ -279,14 +290,13 @@ class OC_App{ $navigation = self::proceedNavigation( self::$navigation ); return $navigation; } - + /** * get the id of loaded app * @return string */ public static function getCurrentApp(){ - global $WEBROOT; - $script=substr($_SERVER["SCRIPT_NAME"],strlen($WEBROOT)+1); + $script=substr($_SERVER["SCRIPT_NAME"],strlen(OC::$WEBROOT)+1); $topFolder=substr($script,0,strpos($script,'/')); if($topFolder=='apps'){ $length=strlen($topFolder); @@ -295,8 +305,8 @@ class OC_App{ return $topFolder; } } - - + + /** * get the forms for either settings, admin or personal */ @@ -318,28 +328,28 @@ class OC_App{ } return $forms; } - + /** * register a settings form to be shown */ public static function registerSettings($app,$page){ self::$settingsForms[]='apps/'.$app.'/'.$page.'.php'; } - + /** * register an admin form to be shown */ public static function registerAdmin($app,$page){ self::$adminForms[]='apps/'.$app.'/'.$page.'.php'; } - + /** * register a personal form to be shown */ public static function registerPersonal($app,$page){ self::$personalForms[]='apps/'.$app.'/'.$page.'.php'; } - + /** * get a list of all apps in the apps folder */ diff --git a/lib/appconfig.php b/lib/appconfig.php index 392782b2586c99e131697291a56fe45dcee65779..f43ef14173224e5b0c60571ab05bf8278ff5167c 100644 --- a/lib/appconfig.php +++ b/lib/appconfig.php @@ -100,7 +100,18 @@ class OC_Appconfig{ return $default; } } - + + /** + * @brief check if a key is set in the appconfig + * @param string $app + * @param string $key + * @return bool + */ + public static function hasKey($app,$key){ + $exists = self::getKeys( $app ); + return in_array( $key, $exists ); + } + /** * @brief sets a value in the appconfig * @param $app app @@ -112,10 +123,7 @@ class OC_Appconfig{ */ public static function setValue( $app, $key, $value ){ // Does the key exist? yes: update. No: insert - $exists = self::getKeys( $app ); - - // null: does not exist - if( !in_array( $key, $exists )){ + if(! self::hasKey($app,$key)){ $query = OC_DB::prepare( 'INSERT INTO *PREFIX*appconfig ( appid, configkey, configvalue ) VALUES( ?, ?, ? )' ); $query->execute( array( $app, $key, $value )); } diff --git a/lib/base.php b/lib/base.php index dc3ed4129cdde48ec0b0fa4bfca587865de01a08..0156febe2311fd37494337c30b57f5252c8ae605 100644 --- a/lib/base.php +++ b/lib/base.php @@ -65,199 +65,118 @@ class OC{ elseif(strpos($className,'OC_')===0){ require_once strtolower(str_replace('_','/',substr($className,3)) . '.php'); } + elseif(strpos($className,'Sabre_')===0) { + require_once str_replace('_','/',$className) . '.php'; + } } -} - -// this requires all our OC_* classes -spl_autoload_register(array('OC','autoload')); - -// set some stuff -//ob_start(); -error_reporting(E_ALL | E_STRICT); - -date_default_timezone_set('Europe/Berlin'); -ini_set('arg_separator.output','&'); -ini_set('session.cookie_httponly','1;'); -session_start(); - -// calculate the documentroot -$DOCUMENTROOT=realpath($_SERVER['DOCUMENT_ROOT']); -$SERVERROOT=str_replace("\\",'/',substr(__FILE__,0,-13)); -$SUBURI=substr(realpath($_SERVER["SCRIPT_FILENAME"]),strlen($SERVERROOT)); -$scriptName=$_SERVER["SCRIPT_NAME"]; -if(substr($scriptName,-1)=='/'){ - $scriptName.='index.php'; -} -$WEBROOT=substr($scriptName,0,strlen($scriptName)-strlen($SUBURI)); - -OC::$SERVERROOT=$SERVERROOT; -OC::$WEBROOT=$WEBROOT; - -if($WEBROOT!='' and $WEBROOT[0]!=='/'){ - $WEBROOT='/'.$WEBROOT; -} -// We are going to use OC::* instead of globels soon -OC::$WEBROOT = $WEBROOT; -OC::$SERVERROOT = $SERVERROOT; -OC::$DOCUMENTROOT = $DOCUMENTROOT; -OC::$SUBURI = $SUBURI; + public static function init(){ + // register autoloader + spl_autoload_register(array('OC','autoload')); -// set the right include path -set_include_path($SERVERROOT.'/lib'.PATH_SEPARATOR.$SERVERROOT.'/config'.PATH_SEPARATOR.$SERVERROOT.'/3rdparty'.PATH_SEPARATOR.get_include_path().PATH_SEPARATOR.$SERVERROOT); + // set some stuff + //ob_start(); + error_reporting(E_ALL | E_STRICT); -//Some libs we really depend on -require_once('Sabre/autoload.php'); + date_default_timezone_set('Europe/Berlin'); + ini_set('arg_separator.output','&'); -// define runtime variables - unless this already has been done -if( !isset( $RUNTIME_NOSETUPFS )){ - $RUNTIME_NOSETUPFS = false; -} -if( !isset( $RUNTIME_NOAPPS )){ - $RUNTIME_NOAPPS = false; -} + // calculate the documentroot + OC::$DOCUMENTROOT=realpath($_SERVER['DOCUMENT_ROOT']); + OC::$SERVERROOT=str_replace("\\",'/',substr(__FILE__,0,-13)); + OC::$SUBURI=substr(realpath($_SERVER["SCRIPT_FILENAME"]),strlen(OC::$SERVERROOT)); + $scriptName=$_SERVER["SCRIPT_NAME"]; + if(substr($scriptName,-1)=='/'){ + $scriptName.='index.php'; + } + OC::$WEBROOT=substr($scriptName,0,strlen($scriptName)-strlen(OC::$SUBURI)); -// TODO: we should get rid of this one, too -// WARNING: to make everything even more confusing, DATADIRECTORY is a var that -// changes and DATATIRECTORY_ROOT stays the same, but is set by -// "datadirectory". Any questions? -$CONFIG_DATADIRECTORY = OC_Config::getValue( "datadirectory", "$SERVERROOT/data" ); + if(OC::$WEBROOT!='' and OC::$WEBROOT[0]!=='/'){ + OC::$WEBROOT='/'.OC::$WEBROOT; + } -// redirect to https site if configured -if( OC_Config::getValue( "forcessl", false )){ - if(!isset($_SERVER['HTTPS']) or $_SERVER['HTTPS'] != 'on') { - $url = "https://". $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; - header("Location: $url"); - exit(); - } -} + // set the right include path + set_include_path(OC::$SERVERROOT.'/lib'.PATH_SEPARATOR.OC::$SERVERROOT.'/config'.PATH_SEPARATOR.OC::$SERVERROOT.'/3rdparty'.PATH_SEPARATOR.get_include_path().PATH_SEPARATOR.OC::$SERVERROOT); -$errors=OC_Util::checkServer(); -$error=(count($errors)>0); + // redirect to https site if configured + if( OC_Config::getValue( "forcessl", false )){ + ini_set("session.cookie_secure", "on"); + if(!isset($_SERVER['HTTPS']) or $_SERVER['HTTPS'] != 'on') { + $url = "https://". $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; + header("Location: $url"); + exit(); + } + } + ini_set('session.cookie_httponly','1;'); + session_start(); + + // Add the stuff we need always + OC_Util::addScript( "jquery-1.6.4.min" ); + OC_Util::addScript( "jquery-ui-1.8.14.custom.min" ); + OC_Util::addScript( "jquery-showpassword" ); + OC_Util::addScript( "jquery.infieldlabel.min" ); + OC_Util::addScript( "jquery-tipsy" ); + OC_Util::addScript( "js" ); + //OC_Util::addScript( "multiselect" ); + OC_Util::addScript('search','result'); + OC_Util::addStyle( "styles" ); + OC_Util::addStyle( "multiselect" ); + OC_Util::addStyle( "jquery-ui-1.8.14.custom" ); + OC_Util::addStyle( "jquery-tipsy" ); + + $errors=OC_Util::checkServer(); + if(count($errors)>0) { + OC_Template::printGuestPage('', 'error', array('errors' => $errors)); + exit; + } -// User and Groups -if( !OC_Config::getValue( "installed", false )){ - $_SESSION['user_id'] = ''; -} + // TODO: we should get rid of this one, too + // WARNING: to make everything even more confusing, + // DATADIRECTORY is a var that changes and DATADIRECTORY_ROOT + // stays the same, but is set by "datadirectory". + // Any questions? + OC::$CONFIG_DATADIRECTORY = OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" ); + // User and Groups + if( !OC_Config::getValue( "installed", false )){ + $_SESSION['user_id'] = ''; + } -OC_User::useBackend( OC_Config::getValue( "userbackend", "database" )); -OC_Group::setBackend( OC_Config::getValue( "groupbackend", "database" )); + OC_User::useBackend( OC_Config::getValue( "userbackend", "database" )); + OC_Group::setBackend( OC_Config::getValue( "groupbackend", "database" )); -// Add the stuff we need always -OC_Util::addScript( "jquery-1.6.2.min" ); -OC_Util::addScript( "jquery-ui-1.8.14.custom.min" ); -OC_Util::addScript( "jquery-showpassword" ); -OC_Util::addScript( "jquery-tipsy" ); -OC_Util::addScript( "js" ); -OC_Util::addScript( "multiselect" ); -OC_Util::addScript('search','result'); -OC_Util::addStyle( "styles" ); -OC_Util::addStyle( "multiselect" ); -OC_Util::addStyle( "jquery-ui-1.8.14.custom" ); -OC_Util::addStyle( "jquery-tipsy" ); + // Load Apps + // This includes plugins for users and filesystems as well + global $RUNTIME_NOAPPS; + if(!$RUNTIME_NOAPPS ){ + OC_App::loadApps(); + } -// Load Apps -// This includes plugins for users and filesystems as well -if(!$error and !$RUNTIME_NOAPPS ){ - OC_App::loadApps(); -} + // Was in required file ... put it here + OC_Filesystem::registerStorageType('local','OC_Filestorage_Local',array('datadir'=>'string')); -// Was in required file ... put it here -OC_Filesystem::registerStorageType('local','OC_Filestorage_Local',array('datadir'=>'string')); + // Set up file system unless forbidden + global $RUNTIME_NOSETUPFS; + if(!$RUNTIME_NOSETUPFS ){ + OC_Util::setupFS(); + } -// Set up file system unless forbidden -if(!$error and !$RUNTIME_NOSETUPFS ){ - OC_Util::setupFS(); + // Last part: connect some hooks + OC_HOOK::connect('OC_User', 'post_createUser', 'OC_Connector_Sabre_Principal', 'addPrincipal'); + OC_HOOK::connect('OC_User', 'post_deleteUser', 'OC_Connector_Sabre_Principal', 'deletePrincipal'); + } } -// Last part: connect some hooks -OC_HOOK::connect('OC_User', 'post_createUser', 'OC_Connector_Sabre_Principal', 'addPrincipal'); -OC_HOOK::connect('OC_User', 'post_deleteUser', 'OC_Connector_Sabre_Principal', 'deletePrincipal'); - - - -if($error) { - $tmpl = new OC_Template( '', 'error', 'guest' ); - $tmpl->assign('errors',$errors); - $tmpl->printPage(); - exit; +// define runtime variables - unless this already has been done +if( !isset( $RUNTIME_NOSETUPFS )){ + $RUNTIME_NOSETUPFS = false; } - - - - -// FROM Connect.php -function OC_CONNECT_TEST($path,$user,$password){ - echo 'connecting...'; - $remote=OC_Connect::connect($path,$user,$password); - if($remote->connected){ - echo 'done<br/>'; - if($remote->isLoggedIn()){ - echo 'logged in, session working<br/>'; - echo 'trying to get remote files...'; - $files=$remote->getFiles(''); - if($files){ - echo count($files).' files found:<br/>'; - foreach($files as $file){ - echo "{$file['type']} {$file['name']}: {$file['size']} bytes<br/>"; - } - echo 'getting file "'.$file['name'].'"...'; - $size=$file['size']; - $file=$remote->getFile('',$file['name']); - if(file_exists($file)){ - $newSize=filesize($file); - if($size!=$newSize){ - echo "fail<br/>Error: $newSize bytes received, $size expected."; - echo '<br/><br/>Recieved file:<br/>'; - readfile($file); - unlink($file); - return; - } - OC_Filesystem::fromTmpFile($file,'/remoteFile'); - echo 'done<br/>'; - echo 'sending file "burning_avatar.png"...'; - $res=$remote->sendFile('','burning_avatar.png','','burning_avatar.png'); - if($res){ - echo 'done<br/>'; - }else{ - echo 'fail<br/>'; - } - }else{ - echo 'fail<br/>'; - } - }else{ - echo 'fail<br/>'; - } - }else{ - echo 'no longer logged in, session fail<br/>'; - } - }else{ - echo 'fail<br/>'; - } - $remote->disconnect(); - die(); +if( !isset( $RUNTIME_NOAPPS )){ + $RUNTIME_NOAPPS = false; } -// From files.php -function zipAddDir($dir,$zip,$internalDir=''){ - $dirname=basename($dir); - $zip->addEmptyDir($internalDir.$dirname); - $internalDir.=$dirname.='/'; - $files=OC_Files::getdirectorycontent($dir); - foreach($files as $file){ - $filename=$file['name']; - $file=$dir.'/'.$filename; - if(OC_Filesystem::is_file($file)){ - $tmpFile=OC_Filesystem::toTmpFile($file); - OC_Files::$tmpFiles[]=$tmpFile; - $zip->addFile($tmpFile,$internalDir.$filename); - }elseif(OC_Filesystem::is_dir($file)){ - zipAddDir($file,$zip,$internalDir); - } - } -} +OC::init(); if(!function_exists('sys_get_temp_dir')) { function sys_get_temp_dir() { diff --git a/lib/config.php b/lib/config.php index dafb37edd332131cfaf0c1be40ed83de916fdd30..3aa69327f56fcf6c713ff91278e9759a424087a6 100644 --- a/lib/config.php +++ b/lib/config.php @@ -131,14 +131,12 @@ class OC_Config{ return true; } - global $SERVERROOT; - - if( !file_exists( "$SERVERROOT/config/config.php" )){ + if( !file_exists( OC::$SERVERROOT."/config/config.php" )){ return false; } // Include the file, save the data from $CONFIG - include( "$SERVERROOT/config/config.php" ); + include( OC::$SERVERROOT."/config/config.php" ); if( isset( $CONFIG ) && is_array( $CONFIG )){ self::$cache = $CONFIG; } @@ -158,9 +156,6 @@ class OC_Config{ * Known flaws: Strings are not escaped properly */ public static function writeData(){ - // We need the serverroot path - global $SERVERROOT; - // Create a php file ... $content = "<?php\n\$CONFIG = array(\n"; @@ -177,10 +172,10 @@ class OC_Config{ $content .= ");\n?>\n"; // Write the file - $result=@file_put_contents( "$SERVERROOT/config/config.php", $content ); + $result=@file_put_contents( OC::$SERVERROOT."/config/config.php", $content ); if(!$result) { $tmpl = new OC_Template( '', 'error', 'guest' ); - $tmpl->assign('errors',array(1=>array('error'=>"Can't write into config directory 'config'",'hint'=>"You can usually fix this by setting the owner of 'config' to the user that the web server uses (".exec('whoami').")"))); + $tmpl->assign('errors',array(1=>array('error'=>"Can't write into config directory 'config'",'hint'=>"You can usually fix this by setting the owner of 'config' to the user that the web server uses (".OC_Util::checkWebserverUser().")"))); $tmpl->printPage(); exit; } diff --git a/lib/fileproxy/quota.php b/lib/fileproxy/quota.php index af8ddee1473a525efc4a856a6c74a339ca87ce06..f770c9cb32b6596c21f5847dc72585e36b84851c 100644 --- a/lib/fileproxy/quota.php +++ b/lib/fileproxy/quota.php @@ -44,6 +44,9 @@ class OC_FileProxy_Quota extends OC_FileProxy{ } public function preFile_put_contents($path,$data){ + if (is_resource($data)) { + $data = '';//TODO: find a way to get the length of the stream without emptying it + } return (strlen($data)<$this->getFreeSpace() or $this->getFreeSpace()==0); } diff --git a/lib/files.php b/lib/files.php index f1789d9c7ace0f9012a6b9c30ba77fd76b7b6a05..631726bf9b53917d41629b8b2050affc722d15db 100644 --- a/lib/files.php +++ b/lib/files.php @@ -33,9 +33,8 @@ class OC_Files { * @param dir $directory */ public static function getDirectoryContent($directory){ - global $CONFIG_DATADIRECTORY; - if(strpos($directory,$CONFIG_DATADIRECTORY)===0){ - $directory=substr($directory,strlen($CONFIG_DATADIRECTORY)); + if(strpos($directory,OC::$CONFIG_DATADIRECTORY)===0){ + $directory=substr($directory,strlen(OC::$CONFIG_DATADIRECTORY)); } $filesfound=true; $content=array(); @@ -103,7 +102,7 @@ class OC_Files { self::$tmpFiles[]=$tmpFile; $zip->addFile($tmpFile,basename($file)); }elseif(OC_Filesystem::is_dir($file)){ - zipAddDir($file,$zip); + self::zipAddDir($file,$zip); } } $zip->close(); @@ -114,7 +113,7 @@ class OC_Files { exit("cannot open <$filename>\n"); } $file=$dir.'/'.$files; - zipAddDir($file,$zip); + self::zipAddDir($file,$zip); $zip->close(); }else{ $zip=false; @@ -157,6 +156,23 @@ class OC_Files { } } + public static function zipAddDir($dir,$zip,$internalDir=''){ + $dirname=basename($dir); + $zip->addEmptyDir($internalDir.$dirname); + $internalDir.=$dirname.='/'; + $files=OC_Files::getdirectorycontent($dir); + foreach($files as $file){ + $filename=$file['name']; + $file=$dir.'/'.$filename; + if(OC_Filesystem::is_file($file)){ + $tmpFile=OC_Filesystem::toTmpFile($file); + OC_Files::$tmpFiles[]=$tmpFile; + $zip->addFile($tmpFile,$internalDir.$filename); + }elseif(OC_Filesystem::is_dir($file)){ + self::zipAddDir($file,$zip,$internalDir); + } + } + } /** * move a file or folder * @@ -279,16 +295,14 @@ class OC_Files { * @param int size filesisze in bytes */ static function setUploadLimit($size){ - global $SERVERROOT; - global $WEBROOT; $size=OC_Helper::humanFileSize($size); $size=substr($size,0,-1);//strip the B $size=str_replace(' ','',$size); //remove the space between the size and the postfix - $content = "ErrorDocument 404 /$WEBROOT/core/templates/404.php\n";//custom 404 error page + $content = "ErrorDocument 404 /".OC::$WEBROOT."/core/templates/404.php\n";//custom 404 error page $content.= "php_value upload_max_filesize $size\n";//upload limit $content.= "php_value post_max_size $size\n"; $content.= "SetEnv htaccessWorking true\n"; $content.= "Options -Indexes\n"; - @file_put_contents($SERVERROOT.'/.htaccess', $content); //supress errors in case we don't have permissions for it + @file_put_contents(OC::$SERVERROOT.'/.htaccess', $content); //supress errors in case we don't have permissions for it } } diff --git a/lib/filestorage/local.php b/lib/filestorage/local.php index 07759b0e88c9af7353b4e353a3fbf3e1656b50e6..180b056f344edf2fc5c48f2db7f92a38f7a3fb2c 100644 --- a/lib/filestorage/local.php +++ b/lib/filestorage/local.php @@ -195,7 +195,7 @@ class OC_Filestorage_Local extends OC_Filestorage{ } private function delTree($dir) { - error_log('del'.$dir); + if(defined("DEBUG") && DEBUG) {error_log('del'.$dir);} $dirRelative=$dir; $dir=$this->datadir.$dir; if (!file_exists($dir)) return true; diff --git a/lib/filesystem.php b/lib/filesystem.php index 76032fae204483ac0c7032d0b7cdcd309f22ab1a..b97fa8d784a12e34b86607d89caab0d107d66b50 100644 --- a/lib/filesystem.php +++ b/lib/filesystem.php @@ -286,7 +286,6 @@ class OC_Filesystem{ return self::basicOperation('file_get_contents',$path,array('read')); } static public function file_put_contents($path,$data){ - error_log($data); return self::basicOperation('file_put_contents',$path,array('create','write'),$data); } static public function unlink($path){ @@ -393,7 +392,6 @@ class OC_Filesystem{ } } static public function fromUploadedFile($tmpFile,$path){ - error_log('upload'); if(OC_FileProxy::runPreProxies('fromUploadedFile',$tmpFile,$path) and self::canWrite($path) and $storage=self::getStorage($path)){ $run=true; $exists=self::file_exists($path); @@ -403,7 +401,6 @@ class OC_Filesystem{ if($run){ OC_Hook::emit( 'OC_Filesystem', 'write', array( 'path' => $path, 'run' => &$run)); } - error_log('upload2'); if($run){ $result=$storage->fromUploadedFile($tmpFile,self::getInternalPath($path)); if(!$exists){ @@ -454,7 +451,7 @@ class OC_Filesystem{ * @return mixed */ private static function basicOperation($operation,$path,$hooks=array(),$extraParam=null){ - if(OC_FileProxy::runPreProxies($operation,$path) and self::canRead($path) and $storage=self::getStorage($path)){ + if(OC_FileProxy::runPreProxies($operation,$path, $extraParam) and self::canRead($path) and $storage=self::getStorage($path)){ $interalPath=self::getInternalPath($path); $run=true; foreach($hooks as $hook){ diff --git a/lib/helper.php b/lib/helper.php index d9b47280ff7ae9008e9f0d2b22f7a8ea575e3841..5b3e394cafd3821195c5cd3ead775c045978827e 100644 --- a/lib/helper.php +++ b/lib/helper.php @@ -35,25 +35,22 @@ class OC_Helper { * Returns a url to the given app and file. */ public static function linkTo( $app, $file, $redirect_url=NULL, $absolute=false ){ - global $WEBROOT; - global $SERVERROOT; - if( $app != '' ){ $app .= '/'; // Check if the app is in the app folder - if( file_exists( $SERVERROOT . '/apps/'. $app.$file )){ - $urlLinkTo = $WEBROOT . '/apps/' . $app . $file; + if( file_exists( OC::$SERVERROOT . '/apps/'. $app.$file )){ + $urlLinkTo = OC::$WEBROOT . '/apps/' . $app . $file; } else{ - $urlLinkTo = $WEBROOT . '/' . $app . $file; + $urlLinkTo = OC::$WEBROOT . '/' . $app . $file; } } else{ - if( file_exists( $SERVERROOT . '/core/'. $file )){ - $urlLinkTo = $WEBROOT . '/core/'.$file; + if( file_exists( OC::$SERVERROOT . '/core/'. $file )){ + $urlLinkTo = OC::$WEBROOT . '/core/'.$file; } else{ - $urlLinkTo = $WEBROOT . '/'.$file; + $urlLinkTo = OC::$WEBROOT . '/'.$file; } } @@ -64,7 +61,7 @@ class OC_Helper { } if($redirect_url) - return $urlLinkTo.'?redirect_url='.$redirect_url; + return $urlLinkTo.'?redirect_url='.urlencode($_SERVER["REQUEST_URI"]); else return $urlLinkTo; @@ -79,18 +76,15 @@ class OC_Helper { * Returns the path to the image. */ public static function imagePath( $app, $image ){ - global $SERVERROOT; - global $WEBROOT; - // Check if the app is in the app folder - if( file_exists( "$SERVERROOT/apps/$app/img/$image" )){ - return "$WEBROOT/apps/$app/img/$image"; + if( file_exists( OC::$SERVERROOT."/apps/$app/img/$image" )){ + return OC::$WEBROOT."/apps/$app/img/$image"; } elseif( !empty( $app )){ - return "$WEBROOT/$app/img/$image"; + return OC::$WEBROOT."/$app/img/$image"; } else{ - return "$WEBROOT/core/img/$image"; + return OC::$WEBROOT."/core/img/$image"; } } @@ -102,27 +96,31 @@ class OC_Helper { * Returns the path to the image of this file type. */ public static function mimetypeIcon( $mimetype ){ - global $SERVERROOT; - global $WEBROOT; + $alias=array('application/xml'=>'code/xml'); +// echo $mimetype; + if(isset($alias[$mimetype])){ + $mimetype=$alias[$mimetype]; +// echo $mimetype; + } // Replace slash with a minus $mimetype = str_replace( "/", "-", $mimetype ); // Is it a dir? if( $mimetype == "dir" ){ - return "$WEBROOT/core/img/places/folder.svg"; + return OC::$WEBROOT."/core/img/filetypes/folder.png"; } // Icon exists? - if( file_exists( "$SERVERROOT/core/img/filetypes/$mimetype.svg" )){ - return "$WEBROOT/core/img/filetypes/$mimetype.svg"; + if( file_exists( OC::$SERVERROOT."/core/img/filetypes/$mimetype.png" )){ + return OC::$WEBROOT."/core/img/filetypes/$mimetype.png"; } //try only the first part of the filetype $mimetype=substr($mimetype,0,strpos($mimetype,'-')); - if( file_exists( "$SERVERROOT/core/img/filetypes/$mimetype.svg" )){ - return "$WEBROOT/core/img/filetypes/$mimetype.svg"; + if( file_exists( OC::$SERVERROOT."/core/img/filetypes/$mimetype.png" )){ + return OC::$WEBROOT."/core/img/filetypes/$mimetype.png"; } else{ - return "$WEBROOT/core/img/filetypes/file.svg"; + return OC::$WEBROOT."/core/img/filetypes/file.png"; } } @@ -274,8 +272,14 @@ class OC_Helper { return $r; } + /** + * returns "checked"-attribut if request contains selected radio element OR if radio element is the default one -- maybe? + * @param string $s Name of radio-button element name + * @param string $v Value of current radio-button element + * @param string $d Value of default radio-button element + */ public static function init_radio($s, $v, $d) { - if((isset($_REQUEST[$s]) && $_REQUEST[$s]==$v) || $v == $d) + if((isset($_REQUEST[$s]) && $_REQUEST[$s]==$v) || (!isset($_REQUEST[$s]) && $v == $d)) print "checked=\"checked\" "; } diff --git a/lib/installer.php b/lib/installer.php index e6810a267dbd6ec73282dc8242402f5c86391ecd..0febb2cab46ec84543281388edce92a953ae0b0f 100644 --- a/lib/installer.php +++ b/lib/installer.php @@ -55,10 +55,8 @@ class OC_Installer{ * needed to get the app working. */ public static function installApp( $data = array()){ - global $SERVERROOT; - if(!isset($data['source'])){ - error_log("No source specified when installing app"); + if(defined("DEBUG") && DEBUG) {error_log("No source specified when installing app");} return false; } @@ -66,13 +64,13 @@ class OC_Installer{ if($data['source']=='http'){ $path=tempnam(sys_get_temp_dir(),'oc_installer_'); if(!isset($data['href'])){ - error_log("No href specified when installing app from http"); + if(defined("DEBUG") && DEBUG) {error_log("No href specified when installing app from http");} return false; } copy($data['href'],$path); }else{ if(!isset($data['path'])){ - error_log("No path specified when installing app from local file"); + if(defined("DEBUG") && DEBUG) {error_log("No path specified when installing app from local file");} return false; } $path=$data['path']; @@ -87,7 +85,7 @@ class OC_Installer{ $zip->extractTo($extractDir); $zip->close(); } else { - error_log("Failed to open archive when installing app"); + if(defined("DEBUG") && DEBUG) {error_log("Failed to open archive when installing app");} OC_Helper::rmdirr($extractDir); if($data['source']=='http'){ unlink($path); @@ -97,7 +95,7 @@ class OC_Installer{ //load the info.xml file of the app if(!is_file($extractDir.'/appinfo/info.xml')){ - error_log("App does not provide an info.xml file"); + if(defined("DEBUG") && DEBUG) {error_log("App does not provide an info.xml file");} OC_Helper::rmdirr($extractDir); if($data['source']=='http'){ unlink($path); @@ -105,11 +103,11 @@ class OC_Installer{ return false; } $info=OC_App::getAppInfo($extractDir.'/appinfo/info.xml'); - $basedir=$SERVERROOT.'/apps/'.$info['id']; + $basedir=OC::$SERVERROOT.'/apps/'.$info['id']; //check if an app with the same id is already installed if(self::isInstalled( $info['id'] )){ - error_log("App already installed"); + if(defined("DEBUG") && DEBUG) {error_log("App already installed");} OC_Helper::rmdirr($extractDir); if($data['source']=='http'){ unlink($path); @@ -119,7 +117,7 @@ class OC_Installer{ //check if the destination directory already exists if(is_dir($basedir)){ - error_log("App's directory already exists"); + if(defined("DEBUG") && DEBUG) {error_log("App's directory already exists");} OC_Helper::rmdirr($extractDir); if($data['source']=='http'){ unlink($path); @@ -133,7 +131,7 @@ class OC_Installer{ //copy the app to the correct place if(!mkdir($basedir)){ - error_log('Can\'t create app folder ('.$basedir.')'); + if(defined("DEBUG") && DEBUG) {error_log('Can\'t create app folder ('.$basedir.')');} OC_Helper::rmdirr($extractDir); if($data['source']=='http'){ unlink($path); @@ -245,14 +243,14 @@ class OC_Installer{ * If $enabled is true, apps are installed as enabled. * If $enabled is false, apps are installed as disabled. */ - public static function installShippedApps( $enabled ){ - global $SERVERROOT; - $dir = opendir( "$SERVERROOT/apps" ); + public static function installShippedApps(){ + $dir = opendir( OC::$SERVERROOT."/apps" ); while( false !== ( $filename = readdir( $dir ))){ - if( substr( $filename, 0, 1 ) != '.' and is_dir("$SERVERROOT/apps/$filename") ){ - if( file_exists( "$SERVERROOT/apps/$filename/appinfo/app.php" )){ + if( substr( $filename, 0, 1 ) != '.' and is_dir(OC::$SERVERROOT."/apps/$filename") ){ + if( file_exists( OC::$SERVERROOT."/apps/$filename/appinfo/app.php" )){ if(!OC_Installer::isInstalled($filename)){ - OC_Installer::installShippedApp($filename); + $info = OC_Installer::installShippedApp($filename); + $enabled = isset($info['default_enable']); if( $enabled ){ OC_Appconfig::setValue($filename,'enabled','yes'); }else{ @@ -268,7 +266,7 @@ class OC_Installer{ /** * install an app already placed in the app folder * @param string $app id of the app to install - * @return bool + * @returns array see OC_App::getAppInfo */ public static function installShippedApp($app){ //install the database @@ -282,5 +280,6 @@ class OC_Installer{ } $info=OC_App::getAppInfo(OC::$SERVERROOT."/apps/$app/appinfo/info.xml"); OC_Appconfig::setValue($app,'installed_version',$info['version']); + return $info; } } diff --git a/lib/json.php b/lib/json.php new file mode 100644 index 0000000000000000000000000000000000000000..cedf79fd7c3fe5951dd5201ba69bb66c86052886 --- /dev/null +++ b/lib/json.php @@ -0,0 +1,81 @@ +<?php +/** + * Copyright (c) 2011 Bart Visscher <bartv@thisnet.nl> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +class OC_JSON{ + static protected $send_content_type_header = false; + /** + * set Content-Type header to jsonrequest + */ + public static function setContentTypeHeader($type='application/json'){ + if (!self::$send_content_type_header){ + // We send json data + header( 'Content-Type: '.$type ); + self::$send_content_type_header = true; + } + } + + /** + * Check if the app is enabled, send json error msg if not + */ + public static function checkAppEnabled($app){ + if( !OC_App::isEnabled($app)){ + $l = new OC_L10N('core'); + self::error(array( 'data' => array( 'message' => $l->t('Application is not enabled') ))); + exit(); + } + } + + /** + * Check if the user is logged in, send json error msg if not + */ + public static function checkLoggedIn(){ + if( !OC_User::isLoggedIn()){ + $l = new OC_L10N('core'); + self::error(array( 'data' => array( 'message' => $l->t('Authentication error') ))); + exit(); + } + } + + /** + * Check if the user is a admin, send json error msg if not + */ + public static function checkAdminUser(){ + self::checkLoggedIn(); + if( !OC_Group::inGroup( OC_User::getUser(), 'admin' )){ + $l = new OC_L10N('core'); + self::error(array( 'data' => array( 'message' => $l->t('Authentication error') ))); + exit(); + } + } + + /** + * Send json error msg + */ + public static function error($data = array()){ + $data['status'] = 'error'; + self::encodedPrint($data); + } + + /** + * Send json success msg + */ + public static function success($data = array()){ + $data['status'] = 'success'; + self::encodedPrint($data); + } + + /** + * Encode and print $data in json format + */ + public static function encodedPrint($data,$setContentType=true){ + if($setContentType){ + self::setContentTypeHeader(); + } + echo json_encode($data); + } +} diff --git a/lib/l10n.php b/lib/l10n.php index c0c32185996d173bea18d74aa6084ac6ebfc4727..54331d44ae40f31e1c14710b00f5458cf50d9b67 100644 --- a/lib/l10n.php +++ b/lib/l10n.php @@ -57,7 +57,6 @@ class OC_L10N{ * language. */ public function __construct($app, $lang = null){ - global $SERVERROOT; // Find the right language if(is_null($lang)){ $lang = self::findLanguage($app); @@ -81,9 +80,9 @@ class OC_L10N{ } } - if(file_exists($SERVERROOT.'/core/l10n/l10n-'.$lang.'.php')){ + if(file_exists(OC::$SERVERROOT.'/core/l10n/l10n-'.$lang.'.php')){ // Include the file, save the data from $CONFIG - include($SERVERROOT.'/core/l10n/l10n-'.$lang.'.php'); + include(OC::$SERVERROOT.'/core/l10n/l10n-'.$lang.'.php'); if(isset($LOCALIZATIONS) && is_array($LOCALIZATIONS)){ $this->localizations = array_merge($this->localizations, $LOCALIZATIONS); } @@ -224,17 +223,15 @@ class OC_L10N{ * @returns directory */ protected static function findI18nDir($app){ - global $SERVERROOT; - // find the i18n dir - $i18ndir = $SERVERROOT.'/core/l10n/'; + $i18ndir = OC::$SERVERROOT.'/core/l10n/'; if($app != ''){ // Check if the app is in the app folder - if(file_exists($SERVERROOT.'/apps/'.$app.'/l10n/')){ - $i18ndir = $SERVERROOT.'/apps/'.$app.'/l10n/'; + if(file_exists(OC::$SERVERROOT.'/apps/'.$app.'/l10n/')){ + $i18ndir = OC::$SERVERROOT.'/apps/'.$app.'/l10n/'; } else{ - $i18ndir = $SERVERROOT.'/'.$app.'/l10n/'; + $i18ndir = OC::$SERVERROOT.'/'.$app.'/l10n/'; } } return $i18ndir; diff --git a/lib/mimetypes.list.php b/lib/mimetypes.list.php index 2467925719995b5ece271f60de2a0807470dbfd8..e0570e84ea5c8c8e758ecc0339b2d7e4d029635e 100644 --- a/lib/mimetypes.list.php +++ b/lib/mimetypes.list.php @@ -32,6 +32,8 @@ return array( 'gz'=>'application/x-gzip', 'html'=>'text/html', 'htm'=>'text/html', + 'ics'=>'text/calendar', + 'ical'=>'text/calendar', 'jpeg'=>'image/jpeg', 'jpg'=>'image/jpeg', 'js'=>'application/javascript', diff --git a/lib/preferences.php b/lib/preferences.php index 5af007f02238a74466b4ed67403017a0316317af..6d8aa17afd5857466897cfe053afc5aaa89381e7 100644 --- a/lib/preferences.php +++ b/lib/preferences.php @@ -63,7 +63,7 @@ class OC_Preferences{ * @param $user user * @returns array with app ids * - * This function returns a list of all apps of the userthat have at least + * This function returns a list of all apps of the user that have at least * one entry in the preferences table. */ public static function getApps( $user ){ @@ -140,7 +140,7 @@ class OC_Preferences{ // Check if the key does exist $query = OC_DB::prepare( 'SELECT configvalue FROM *PREFIX*preferences WHERE userid = ? AND appid = ? AND configkey = ?' ); $values=$query->execute(array($user,$app,$key))->fetchAll(); - error_log(print_r($values,true)); + if(defined("DEBUG") && DEBUG) {error_log(print_r($values,true));} $exists=(count($values)>0); if( !$exists ){ diff --git a/lib/remote/cloud.php b/lib/remote/cloud.php index 2d3dee47b1ce5c76fb2cb47701a78018f6cf4b23..75d60155d060118372dbd06f339c7739b3a18c16 100644 --- a/lib/remote/cloud.php +++ b/lib/remote/cloud.php @@ -184,7 +184,6 @@ class OC_REMOTE_CLOUD{ } public function sendFile($sourceDir,$sourceFile,$targetDir,$targetFile){ - global $WEBROOT; $source=$sourceDir.'/'.$sourceFile; $tmp=OC_Filesystem::toTmpFile($source); return $this->sendTmpFile($tmp,$targetDir,$targetFile); @@ -192,15 +191,14 @@ class OC_REMOTE_CLOUD{ public function sendTmpFile($tmp,$targetDir,$targetFile){ $token=sha1(uniqid().$tmp); - global $WEBROOT; $file=sys_get_temp_dir().'/'.'remoteCloudFile'.$token; rename($tmp,$file); if( OC_Config::getValue( "forcessl", false ) or isset($_SERVER['HTTPS']) and $_SERVER['HTTPS'] == 'on') { - $url = "https://". $_SERVER['SERVER_NAME'] . $WEBROOT; + $url = "https://". $_SERVER['SERVER_NAME'] . OC::$WEBROOT; }else{ - $url = "http://". $_SERVER['SERVER_NAME'] . $WEBROOT; + $url = "http://". $_SERVER['SERVER_NAME'] . OC::$WEBROOT; } return $this->apiCall('pull',array('dir'=>$targetDir,'file'=>$targetFile,'token'=>$token,'source'=>$url),true); } } - \ No newline at end of file + diff --git a/lib/setup.php b/lib/setup.php index ebdf3ef823e66a3c02b480303a2945ec52a15d7c..355d979dc65c81b7121a57d81b3ac46c37214348 100644 --- a/lib/setup.php +++ b/lib/setup.php @@ -3,7 +3,7 @@ $hasSQLite = (is_callable('sqlite_open') or class_exists('SQLite3')); $hasMySQL = is_callable('mysql_connect'); $hasPostgreSQL = is_callable('pg_connect'); -$datadir = OC_Config::getValue('datadirectory', $SERVERROOT.'/data'); +$datadir = OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data'); $opts = array( 'hasSQLite' => $hasSQLite, 'hasMySQL' => $hasMySQL, @@ -23,7 +23,7 @@ if(isset($_POST['install']) AND $_POST['install']=='true') { OC_Template::printGuestPage("", "installation", $options); } else { - header("Location: ".$WEBROOT.'/'); + header("Location: ".OC::$WEBROOT.'/'); exit(); } } @@ -55,9 +55,6 @@ class OC_Setup { if(empty($options['dbuser'])) { $error[] = "$dbprettyname enter the database username."; } - if(empty($options['dbpass'])) { - $error[] = "$dbprettyname enter the database password."; - } if(empty($options['dbname'])) { $error[] = "$dbprettyname enter the database name."; } @@ -206,7 +203,7 @@ class OC_Setup { OC_User::login($username, $password); //guess what this does - OC_Installer::installShippedApps(true); + OC_Installer::installShippedApps(); //create htaccess files for apache hosts if (strstr($_SERVER['SERVER_SOFTWARE'], 'Apache')) { @@ -235,7 +232,7 @@ class OC_Setup { } private static function createDBUser($name,$password,$connection) { - // we need to create 2 accounts, one for global use and one for local user. if we don't speccify the local one, + // we need to create 2 accounts, one for global use and one for local user. if we don't specify the local one, // the anonymous user would take precedence when there is one. $query = "CREATE USER '$name'@'localhost' IDENTIFIED BY '$password'"; $result = mysql_query($query, $connection); @@ -270,21 +267,19 @@ class OC_Setup { * create .htaccess files for apache hosts */ private static function createHtaccess() { - $SERVERROOT=OC::$SERVERROOT; - $WEBROOT=OC::$WEBROOT; - $content = "ErrorDocument 404 $WEBROOT/core/templates/404.php\n";//custom 404 error page + $content = "ErrorDocument 404 ".OC::$WEBROOT."/core/templates/404.php\n";//custom 404 error page $content.= "<IfModule mod_php5.c>\n"; $content.= "php_value upload_max_filesize 512M\n";//upload limit $content.= "php_value post_max_size 512M\n"; $content.= "SetEnv htaccessWorking true\n"; $content.= "</IfModule>\n"; $content.= "Options -Indexes\n"; - @file_put_contents($SERVERROOT.'/.htaccess', $content); //supress errors in case we don't have permissions for it + @file_put_contents(OC::$SERVERROOT.'/.htaccess', $content); //supress errors in case we don't have permissions for it $content = "deny from all\n"; $content.= "IndexIgnore *"; - file_put_contents(OC_Config::getValue('datadirectory', $SERVERROOT.'/data').'/.htaccess', $content); - file_put_contents(OC_Config::getValue('datadirectory', $SERVERROOT.'/data').'/index.html', ''); + file_put_contents(OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data').'/.htaccess', $content); + file_put_contents(OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data').'/index.html', ''); } } diff --git a/lib/template.php b/lib/template.php index adedd4f901a3025e8a28ed8ef49e6dfb1b6eefed..a293e63b437ad4e6f80d03fed48b9d313507ec78 100644 --- a/lib/template.php +++ b/lib/template.php @@ -124,18 +124,15 @@ class OC_Template{ * "admin". */ public function __construct( $app, $name, $renderas = "" ){ - // Global vars we need - global $SERVERROOT; - // Get the right template folder - $template = "$SERVERROOT/core/templates/"; + $template = OC::$SERVERROOT."/core/templates/"; if( $app != "" ){ // Check if the app is in the app folder - if( file_exists( "$SERVERROOT/apps/$app/templates/" )){ - $template = "$SERVERROOT/apps/$app/templates/"; + if( file_exists( OC::$SERVERROOT."/apps/$app/templates/" )){ + $template = OC::$SERVERROOT."/apps/$app/templates/"; } else{ - $template = "$SERVERROOT/$app/templates/"; + $template = OC::$SERVERROOT."/$app/templates/"; } } @@ -222,9 +219,6 @@ class OC_Template{ * will produce a full page. */ public function fetchPage(){ - // global Data we need - global $WEBROOT; - global $SERVERROOT; $data = $this->_fetch(); if( $this->renderas ){ @@ -247,25 +241,25 @@ class OC_Template{ // Add the css and js files foreach(OC_Util::$scripts as $script){ - if(is_file("$SERVERROOT/apps/$script.js" )){ - $page->append( "jsfiles", "$WEBROOT/apps/$script.js" ); + if(is_file(OC::$SERVERROOT."/apps/$script.js" )){ + $page->append( "jsfiles", OC::$WEBROOT."/apps/$script.js" ); } - elseif(is_file("$SERVERROOT/$script.js" )){ - $page->append( "jsfiles", "$WEBROOT/$script.js" ); + elseif(is_file(OC::$SERVERROOT."/$script.js" )){ + $page->append( "jsfiles", OC::$WEBROOT."/$script.js" ); } else{ - $page->append( "jsfiles", "$WEBROOT/core/$script.js" ); + $page->append( "jsfiles", OC::$WEBROOT."/core/$script.js" ); } } foreach(OC_Util::$styles as $style){ - if(is_file("$SERVERROOT/apps/$style.css" )){ - $page->append( "cssfiles", "$WEBROOT/apps/$style.css" ); + if(is_file(OC::$SERVERROOT."/apps/$style.css" )){ + $page->append( "cssfiles", OC::$WEBROOT."/apps/$style.css" ); } - elseif(is_file("$SERVERROOT/$style.css" )){ - $page->append( "cssfiles", "$WEBROOT/$style.css" ); + elseif(is_file(OC::$SERVERROOT."/$style.css" )){ + $page->append( "cssfiles", OC::$WEBROOT."/$style.css" ); } else{ - $page->append( "cssfiles", "$WEBROOT/core/$style.css" ); + $page->append( "cssfiles", OC::$WEBROOT."/core/$style.css" ); } } diff --git a/lib/user.php b/lib/user.php index 72dfd7970bbc582e10d12870c6e4894f477df33f..241d9aa8b1042c158b1829b307ff92e95a88768a 100644 --- a/lib/user.php +++ b/lib/user.php @@ -194,16 +194,22 @@ class OC_User { if( $run ){ $uid=self::checkPassword( $uid, $password ); if($uid){ - $_SESSION['user_id'] = $uid; OC_Crypt::init($uid,$password); - OC_Hook::emit( "OC_User", "post_login", array( "uid" => $uid )); - return true; - }else{ - return false; + return self::setUserId($uid); } - }else{ - return false; } + return false; + } + + /** + * @brief Sets user id for session and triggers emit + * @returns true + * + */ + public static function setUserId($uid) { + $_SESSION['user_id'] = $uid; + OC_Hook::emit( "OC_User", "post_login", array( "uid" => $uid )); + return true; } /** @@ -215,7 +221,7 @@ class OC_User { public static function logout(){ OC_Hook::emit( "OC_User", "logout", array()); $_SESSION['user_id'] = false; - OC_User::unsetUsernameInCookie(); + OC_User::unsetMagicInCookie(); return true; } @@ -341,21 +347,22 @@ class OC_User { * @brief Set cookie value to use in next page load * @param string $username username to be set */ - public static function setUsernameInCookie($username, $password){ - setcookie("oc_username", $username, time()+60*60*24*15); - setcookie("oc_password", $password, time()+60*60*24*15); - setcookie("oc_remember_login", true, time()+60*60*24*15); + public static function setMagicInCookie($username, $token){ + $secure_cookie = OC_Config::getValue("forcessl", false); + setcookie("oc_username", $username, time()+60*60*24*15, '', '', $secure_cookie); + setcookie("oc_token", $token, time()+60*60*24*15, '', '', $secure_cookie); + setcookie("oc_remember_login", true, time()+60*60*24*15, '', '', $secure_cookie); } /** * @brief Remove cookie for "remember username" */ - public static function unsetUsernameInCookie(){ + public static function unsetMagicInCookie(){ unset($_COOKIE["oc_username"]); - unset($_COOKIE["oc_password"]); + unset($_COOKIE["oc_token"]); unset($_COOKIE["oc_remember_login"]); setcookie("oc_username", NULL, -1); - setcookie("oc_password", NULL, -1); + setcookie("oc_token", NULL, -1); setcookie("oc_remember_login", NULL, -1); } } diff --git a/lib/util.php b/lib/util.php index f4ca879a9bc589f6af9486ab447c4918a3fad650..4920d13914dd07935dc99c17c9bb790c82579fd6 100644 --- a/lib/util.php +++ b/lib/util.php @@ -16,19 +16,15 @@ class OC_Util { return false; } - // Global Variables - global $SERVERROOT; - global $CONFIG_DATADIRECTORY; - - $CONFIG_DATADIRECTORY_ROOT = OC_Config::getValue( "datadirectory", "$SERVERROOT/data" ); - $CONFIG_BACKUPDIRECTORY = OC_Config::getValue( "backupdirectory", "$SERVERROOT/backup" ); + $CONFIG_DATADIRECTORY_ROOT = OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" ); + $CONFIG_BACKUPDIRECTORY = OC_Config::getValue( "backupdirectory", OC::$SERVERROOT."/backup" ); // Create root dir if(!is_dir($CONFIG_DATADIRECTORY_ROOT)){ $success=@mkdir($CONFIG_DATADIRECTORY_ROOT); if(!$success) { $tmpl = new OC_Template( '', 'error', 'guest' ); - $tmpl->assign('errors',array(1=>array('error'=>"Can't create data directory ($CONFIG_DATADIRECTORY_ROOT)",'hint'=>"You can usually fix this by setting the owner of '$SERVERROOT' to the user that the web server uses (".exec('whoami').")"))); + $tmpl->assign('errors',array(1=>array('error'=>"Can't create data directory (".$CONFIG_DATADIRECTORY_ROOT.")",'hint'=>"You can usually fix this by setting the owner of '".OC::$SERVERROOT."' to the user that the web server uses (".OC_Util::checkWebserverUser().")"))); $tmpl->printPage(); exit; } @@ -57,9 +53,9 @@ class OC_Util { $sharedStorage = OC_Filesystem::createStorage('shared',array('datadir'=>'/'.OC_User::getUser().'/files/Shared')); OC_Filesystem::mount($sharedStorage,'/'.OC_User::getUser().'/files/Shared/'); - $CONFIG_DATADIRECTORY = "$CONFIG_DATADIRECTORY_ROOT/$user/$root"; - if( !is_dir( $CONFIG_DATADIRECTORY )){ - mkdir( $CONFIG_DATADIRECTORY, 0755, true ); + OC::$CONFIG_DATADIRECTORY = $CONFIG_DATADIRECTORY_ROOT."/$user/$root"; + if( !is_dir( OC::$CONFIG_DATADIRECTORY )){ + mkdir( OC::$CONFIG_DATADIRECTORY, 0755, true ); } // TODO: find a cool way for doing this @@ -94,7 +90,15 @@ class OC_Util { * @return array */ public static function getVersion(){ - return array(1,90,0); + return array(2,90,0); + } + + /** + * get the current installed version string of ownCloud + * @return string + */ + public static function getVersionString(){ + return '3 alpha 1'; } /** @@ -193,11 +197,8 @@ class OC_Util { * @return array arrays with error messages and hints */ public static function checkServer(){ - global $SERVERROOT; - global $CONFIG_DATADIRECTORY; - - $CONFIG_DATADIRECTORY_ROOT = OC_Config::getValue( "datadirectory", "$SERVERROOT/data" ); - $CONFIG_BACKUPDIRECTORY = OC_Config::getValue( "backupdirectory", "$SERVERROOT/backup" ); + $CONFIG_DATADIRECTORY_ROOT = OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" ); + $CONFIG_BACKUPDIRECTORY = OC_Config::getValue( "backupdirectory", OC::$SERVERROOT."/backup" ); $CONFIG_INSTALLED = OC_Config::getValue( "installed", false ); $errors=array(); @@ -207,28 +208,21 @@ class OC_Util { } $CONFIG_DBTYPE = OC_Config::getValue( "dbtype", "sqlite" ); $CONFIG_DBNAME = OC_Config::getValue( "dbname", "owncloud" ); - - //try to get the username the httpd server runs on, used in hints - $stat=stat($_SERVER['DOCUMENT_ROOT']); - if(is_callable('posix_getpwuid')){ - $serverUser=posix_getpwuid($stat['uid']); - $serverUser='\''.$serverUser['name'].'\''; - }else{ - $serverUser='\'www-data\' for ubuntu/debian';//TODO: try to detect the distro and give a guess based on that - } + $serverUser=OC_Util::checkWebserverUser(); //common hint for all file permissons error messages $permissionsHint="Permissions can usually be fixed by setting the owner of the file or directory to the user the web server runs as ($serverUser)"; //check for correct file permissions if(!stristr(PHP_OS, 'WIN')){ + $permissionsModHint="Please change the permissions to 0770 so that the directory cannot be listed by other users."; $prems=substr(decoct(@fileperms($CONFIG_DATADIRECTORY_ROOT)),-3); if(substr($prems,-1)!='0'){ OC_Helper::chmodr($CONFIG_DATADIRECTORY_ROOT,0770); clearstatcache(); $prems=substr(decoct(@fileperms($CONFIG_DATADIRECTORY_ROOT)),-3); if(substr($prems,2,1)!='0'){ - $errors[]=array('error'=>'Data directory ('.$CONFIG_DATADIRECTORY_ROOT.') is readable from the web<br/>','hint'=>$permissionsHint); + $errors[]=array('error'=>'Data directory ('.$CONFIG_DATADIRECTORY_ROOT.') is readable for other users<br/>','hint'=>$permissionsModHint); } } if( OC_Config::getValue( "enablebackup", false )){ @@ -238,19 +232,100 @@ class OC_Util { clearstatcache(); $prems=substr(decoct(@fileperms($CONFIG_BACKUPDIRECTORY)),-3); if(substr($prems,2,1)!='0'){ - $errors[]=array('error'=>'Data directory ('.$CONFIG_BACKUPDIRECTORY.') is readable from the web<br/>','hint'=>$permissionsHint); + $errors[]=array('error'=>'Data directory ('.$CONFIG_BACKUPDIRECTORY.') is readable for other users<br/>','hint'=>$permissionsModHint); } } } }else{ - //TODO: premisions checks for windows hosts + //TODO: permissions checks for windows hosts } if(is_dir($CONFIG_DATADIRECTORY_ROOT) and !is_writable($CONFIG_DATADIRECTORY_ROOT)){ $errors[]=array('error'=>'Data directory ('.$CONFIG_DATADIRECTORY_ROOT.') not writable by ownCloud<br/>','hint'=>$permissionsHint); } - //TODO: check for php modules + // check if all required php modules are present + if(!class_exists('ZipArchive')){ + $errors[]=array('error'=>'PHP module zip not installed.<br/>','hint'=>'Please ask your server administrator to install the module.'); + } + + if(!function_exists('mb_detect_encoding')){ + $errors[]=array('error'=>'PHP module mb multibyte not installed.<br/>','hint'=>'Please ask your server administrator to install the module.'); + } + if(!function_exists('ctype_digit')){ + $errors[]=array('error'=>'PHP module ctype is not installed.<br/>','hint'=>'Please ask your server administrator to install the module.'); + } return $errors; } + + public static function displayLoginPage($parameters = array()){ + if(isset($_COOKIE["username"])){ + $parameters["username"] = $_COOKIE["username"]; + } else { + $parameters["username"] = ''; + } + OC_Template::printGuestPage("", "login", $parameters); + } + + /** + * Try to get the username the httpd server runs on, used in hints + */ + public static function checkWebserverUser(){ + $stat=stat($_SERVER['DOCUMENT_ROOT']); + if(is_callable('posix_getpwuid')){ + $serverUser=posix_getpwuid($stat['uid']); + $serverUser='\''.$serverUser['name'].'\''; + }elseif(exec('whoami')){ + $serverUser=exec('whoami'); + }else{ + $serverUser='\'www-data\' for ubuntu/debian'; //TODO: try to detect the distro and give a guess based on that + } + return $serverUser; + } + + + /** + * Check if the app is enabled, send json error msg if not + */ + public static function checkAppEnabled($app){ + if( !OC_App::isEnabled($app)){ + header( 'Location: '.OC_Helper::linkTo( '', 'index.php' , true)); + exit(); + } + } + + /** + * Check if the user is logged in, redirects to home if not + */ + public static function checkLoggedIn(){ + // Check if we are a user + if( !OC_User::isLoggedIn()){ + header( 'Location: '.OC_Helper::linkTo( '', 'index.php' , true)); + exit(); + } + } + + /** + * Check if the user is a admin, redirects to home if not + */ + public static function checkAdminUser(){ + // Check if we are a user + self::checkLoggedIn(); + if( !OC_Group::inGroup( OC_User::getUser(), 'admin' )){ + header( 'Location: '.OC_Helper::linkTo( '', 'index.php' , true)); + exit(); + } + } + + /** + * Redirect to the user default page + */ + public static function redirectToDefaultPage(){ + if(isset($_REQUEST['redirect_url'])) { + header( 'Location: '.$_REQUEST['redirect_url']); + } else { + header( 'Location: '.OC::$WEBROOT.'/'.OC_Appconfig::getValue('core', 'defaultpage', 'files/index.php')); + } + exit(); + } } diff --git a/search/ajax/search.php b/search/ajax/search.php index c65fbbc63fa9ba456cb6dc10012f48fc0e3b9f8e..326724d60c4f4787d55a49425c033c50bb9d9ca5 100644 --- a/search/ajax/search.php +++ b/search/ajax/search.php @@ -26,17 +26,14 @@ require_once('../../lib/base.php'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - header( "Location: ".OC_Helper::linkTo( '', 'index.php' )); - exit(); -} +OC_JSON::checkLoggedIn(); $query=(isset($_GET['query']))?$_GET['query']:''; if($query){ $result=OC_Search::search($query); - echo json_encode($result); + OC_JSON::encodedPrint($result); }else{ echo 'false'; } -?> \ No newline at end of file +?> diff --git a/search/index.php b/search/index.php index 7369a6d81ce5aede7e2483e4f9290feb457158b9..518695c56d202d4dab7bc27f6ac1496d9578a63b 100644 --- a/search/index.php +++ b/search/index.php @@ -26,10 +26,7 @@ require_once('../lib/base.php'); // Check if we are a user -if( !OC_User::isLoggedIn()){ - header( "Location: ".OC_Helper::linkTo( '', 'index.php' )); - exit(); -} +OC_Util::checkLoggedIn(); // Load the files we need OC_Util::addStyle( 'search', 'search' ); @@ -38,8 +35,7 @@ $query=(isset($_POST['query']))?$_POST['query']:''; if($query){ $results=OC_Search::search($query); }else{ - header("Location: ".$WEBROOT.'/'.OC_Appconfig::getValue("core", "defaultpage", "files/index.php")); - exit(); + OC_Util::redirectToDefaultPage(); } $resultTypes=array(); diff --git a/settings/admin.php b/settings/admin.php index 15559a150e5ea80077053ec600891b4cbbb4bdfa..81ed6aa9516487ab3b8ed8963a6eaf9a8959720f 100644 --- a/settings/admin.php +++ b/settings/admin.php @@ -6,14 +6,7 @@ */ require_once('../lib/base.php'); -if( !OC_User::isLoggedIn()){ - header( "Location: ".OC_Helper::linkTo( "", "index.php" )); - exit(); -} -if( !OC_User::isLoggedIn() || !OC_Group::inGroup( OC_User::getUser(), 'admin' )){ - header( "Location: ".OC_Helper::linkTo( '', "index.php" )); - exit(); -} +OC_Util::checkAdminUser(); OC_Util::addStyle( "settings", "settings" ); OC_App::setActiveNavigationEntry( "admin" ); @@ -24,4 +17,4 @@ $tmpl->assign('forms',array()); foreach($forms as $form){ $tmpl->append('forms',$form); } -$tmpl->printPage(); \ No newline at end of file +$tmpl->printPage(); diff --git a/settings/ajax/changepassword.php b/settings/ajax/changepassword.php index c5cdbcef05610bb4a32559284d01c6eb116824b2..860ea987871af323373ebff7a73e245e58655db9 100644 --- a/settings/ajax/changepassword.php +++ b/settings/ajax/changepassword.php @@ -3,24 +3,23 @@ // Init owncloud require_once('../../lib/base.php'); -// We send json data -header( "Content-Type: application/jsonrequest" ); - $username = isset($_POST["username"]) ? $_POST["username"] : OC_User::getUser(); $password = $_POST["password"]; +$oldPassword=isset($_POST["oldpassword"])?$_POST["oldpassword"]:''; // Check if we are a user -if( !OC_User::isLoggedIn() || (!OC_Group::inGroup( OC_User::getUser(), 'admin' )&& $username!=OC_User::getUser())) { - echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" ))); +OC_JSON::checkLoggedIn(); +if( (!OC_Group::inGroup( OC_User::getUser(), 'admin' ) && ($username!=OC_User::getUser() || !OC_User::checkPassword($username,$oldPassword)))) { + OC_JSON::error( array( "data" => array( "message" => "Authentication error" ))); exit(); } // Return Success story if( OC_User::setPassword( $username, $password )){ - echo json_encode( array( "status" => "success", "data" => array( "username" => $username ))); + OC_JSON::success(array("data" => array( "username" => $username ))); } else{ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to change password" ))); + OC_JSON::error(array("data" => array( "message" => "Unable to change password" ))); } ?> diff --git a/settings/ajax/creategroup.php b/settings/ajax/creategroup.php index 2631937b14dbec9c86c6876435d6f08eee581bc8..57d82e7bd94599f16002385cf1de2f8bcc5f82b0 100644 --- a/settings/ajax/creategroup.php +++ b/settings/ajax/creategroup.php @@ -3,12 +3,9 @@ // Init owncloud require_once('../../lib/base.php'); -// We send json data -header( "Content-Type: application/jsonrequest" ); - // Check if we are a user if( !OC_User::isLoggedIn() || !OC_Group::inGroup( OC_User::getUser(), 'admin' )){ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" ))); + OC_JSON::error(array("data" => array( "message" => "Authentication error" ))); exit(); } @@ -16,16 +13,16 @@ $groupname = $_POST["groupname"]; // Does the group exist? if( in_array( $groupname, OC_Group::getGroups())){ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Group already exists" ))); + OC_JSON::error(array("data" => array( "message" => "Group already exists" ))); exit(); } // Return Success story if( OC_Group::createGroup( $groupname )){ - echo json_encode( array( "status" => "success", "data" => array( "groupname" => $groupname ))); + OC_JSON::success(array("data" => array( "groupname" => $groupname ))); } else{ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to add group" ))); + OC_JSON::error(array("data" => array( "message" => "Unable to add group" ))); } ?> diff --git a/settings/ajax/createuser.php b/settings/ajax/createuser.php index de52f90d4f3c730d321c322935406a42205d82b8..1ed53efcf062f1c5bc6b3a3b420e81a22d8311b6 100644 --- a/settings/ajax/createuser.php +++ b/settings/ajax/createuser.php @@ -3,12 +3,9 @@ // Init owncloud require_once('../../lib/base.php'); -// We send json data -header( "Content-Type: application/jsonrequest" ); - // Check if we are a user if( !OC_User::isLoggedIn() || !OC_Group::inGroup( OC_User::getUser(), 'admin' )){ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" ))); + OC_JSON::error(array("data" => array( "message" => "Authentication error" ))); exit(); } @@ -21,7 +18,7 @@ $password = $_POST["password"]; // Does the group exist? if( in_array( $username, OC_User::getUsers())){ - echo json_encode( array( "status" => "error", "data" => array( "message" => "User already exists" ))); + OC_JSON::error(array("data" => array( "message" => "User already exists" ))); exit(); } @@ -33,10 +30,10 @@ if( OC_User::createUser( $username, $password )){ } OC_Group::addToGroup( $username, $i ); } - echo json_encode( array( "status" => "success", "data" => array( "username" => $username, "groups" => implode( ", ", OC_Group::getUserGroups( $username ))))); + OC_JSON::success(array("data" => array( "username" => $username, "groups" => implode( ", ", OC_Group::getUserGroups( $username ))))); } else{ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to add user" ))); + OC_JSON::error(array("data" => array( "message" => "Unable to add user" ))); } ?> diff --git a/settings/ajax/disableapp.php b/settings/ajax/disableapp.php index 0cf66a553f8b715a4a59fd727be195a77ae79b13..06dd3c2ac6bfd5dc9fddc8959a10b8fd41c234b1 100644 --- a/settings/ajax/disableapp.php +++ b/settings/ajax/disableapp.php @@ -1,7 +1,8 @@ <?php // Init owncloud require_once('../../lib/base.php'); -header( "Content-Type: application/jsonrequest" ); +OC_JSON::checkAdminUser(); +OC_JSON::setContentTypeHeader(); OC_App::disable($_POST['appid']); diff --git a/settings/ajax/enableapp.php b/settings/ajax/enableapp.php index eb1bfc54a0449c9f40e17ac7f18d32afb91d2a1e..639df2aecc0fad9505acdcdc12d1691d998b863a 100644 --- a/settings/ajax/enableapp.php +++ b/settings/ajax/enableapp.php @@ -2,7 +2,8 @@ // Init owncloud require_once('../../lib/base.php'); -header( "Content-Type: application/jsonrequest" ); +OC_JSON::checkAdminUser(); +OC_JSON::setContentTypeHeader(); OC_App::enable($_POST['appid']); diff --git a/settings/ajax/lostpassword.php b/settings/ajax/lostpassword.php new file mode 100644 index 0000000000000000000000000000000000000000..a2dfc0332065fd924076725e995f52bc0c194c9b --- /dev/null +++ b/settings/ajax/lostpassword.php @@ -0,0 +1,19 @@ +<?php + +// Init owncloud +require_once('../../lib/base.php'); + +OC_JSON::checkLoggedIn(); + +$l=new OC_L10N('core'); + +// Get data +if( isset( $_POST['email'] ) ){ + $email=trim($_POST['email']); + OC_Preferences::setValue(OC_User::getUser(),'settings','email',$email); + OC_JSON::success(array("data" => array( "message" => $l->t("email Changed") ))); +}else{ + OC_JSON::error(array("data" => array( "message" => $l->t("Invalid request") ))); +} + +?> diff --git a/settings/ajax/openid.php b/settings/ajax/openid.php index 021fe35d8ec23e24637cc020a1d1808365af62d8..c4b119b448dd1bdf9d9100d5e815ad97723b4cbc 100644 --- a/settings/ajax/openid.php +++ b/settings/ajax/openid.php @@ -5,22 +5,16 @@ require_once('../../lib/base.php'); $l=new OC_L10N('settings'); -// We send json data -header( "Content-Type: application/jsonrequest" ); - -// Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( "status" => "error", "data" => array( "message" => $l->t("Authentication error") ))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('user_openid'); // Get data if( isset( $_POST['identity'] ) ){ $identity=$_POST['identity']; OC_Preferences::setValue(OC_User::getUser(),'user_openid','identity',$identity); - echo json_encode( array( "status" => "success", "data" => array( "message" => $l->t("OpenID Changed") ))); + OC_JSON::success(array("data" => array( "message" => $l->t("OpenID Changed") ))); }else{ - echo json_encode( array( "status" => "error", "data" => array( "message" => $l->t("Invalid request") ))); + OC_JSON::error(array("data" => array( "message" => $l->t("Invalid request") ))); } ?> diff --git a/settings/ajax/removegroup.php b/settings/ajax/removegroup.php index bf80da741c702d4a3a4f0e69dc91aa564561e356..4d3647818949f28d323aeef433082a8918465b89 100644 --- a/settings/ajax/removegroup.php +++ b/settings/ajax/removegroup.php @@ -3,23 +3,16 @@ // Init owncloud require_once('../../lib/base.php'); -// We send json data -header( "Content-Type: application/jsonrequest" ); - -// Check if we are a user -if( !OC_User::isLoggedIn() || !OC_Group::inGroup( OC_User::getUser(), 'admin' )){ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" ))); - exit(); -} +OC_JSON::checkAdminUser(); $name = $_POST["groupname"]; // Return Success story if( OC_Group::deleteGroup( $name )){ - echo json_encode( array( "status" => "success", "data" => array( "groupname" => $name ))); + OC_JSON::success(array("data" => array( "groupname" => $name ))); } else{ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to delete group" ))); + OC_JSON::error(array("data" => array( "message" => "Unable to delete group" ))); } ?> diff --git a/settings/ajax/removeuser.php b/settings/ajax/removeuser.php index 0a94884cb96f4b192c59c64fd94cea128dd4cf82..2c288997a1f2467e8db132d6d1855fe2da264e3f 100644 --- a/settings/ajax/removeuser.php +++ b/settings/ajax/removeuser.php @@ -3,23 +3,16 @@ // Init owncloud require_once('../../lib/base.php'); -// We send json data -header( "Content-Type: application/jsonrequest" ); - -// Check if we are a user -if( !OC_User::isLoggedIn() || !OC_Group::inGroup( OC_User::getUser(), 'admin' )){ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" ))); - exit(); -} +OC_JSON::checkAdminUser(); $username = $_POST["username"]; // Return Success story if( OC_User::deleteUser( $username )){ - echo json_encode( array( "status" => "success", "data" => array( "username" => $username ))); + OC_JSON::success(array("data" => array( "username" => $username ))); } else{ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to delete user" ))); + OC_JSON::error(array("data" => array( "message" => "Unable to delete user" ))); } ?> diff --git a/settings/ajax/setlanguage.php b/settings/ajax/setlanguage.php index a5ba3d81ba37a9086cfba8f59b8e75002ffd429e..dc1128de2e53ce975b40df15495030bff1c219ef 100644 --- a/settings/ajax/setlanguage.php +++ b/settings/ajax/setlanguage.php @@ -5,22 +5,15 @@ require_once('../../lib/base.php'); $l=new OC_L10N('settings'); -// We send json data -header( "Content-Type: application/jsonrequest" ); - -// Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( "status" => "error", "data" => array( "message" => $l->t("Authentication error") ))); - exit(); -} +OC_JSON::checkLoggedIn(); // Get data if( isset( $_POST['lang'] ) ){ $lang=$_POST['lang']; OC_Preferences::setValue( OC_User::getUser(), 'core', 'lang', $lang ); - echo json_encode( array( "status" => "success", "data" => array( "message" => $l->t("Language changed") ))); + OC_JSON::success(array("data" => array( "message" => $l->t("Language changed") ))); }else{ - echo json_encode( array( "status" => "error", "data" => array( "message" => $l->t("Invalid request") ))); + OC_JSON::error(array("data" => array( "message" => $l->t("Invalid request") ))); } ?> diff --git a/settings/ajax/setquota.php b/settings/ajax/setquota.php index 244a85e3d9c39187720962865b29ce67f00109a3..edbf5b74516d4f4010746f561e7bab2b348dc3ba 100644 --- a/settings/ajax/setquota.php +++ b/settings/ajax/setquota.php @@ -3,20 +3,13 @@ // Init owncloud require_once('../../lib/base.php'); -// We send json data -header( "Content-Type: application/jsonrequest" ); - -// Check if we are a user -if( !OC_User::isLoggedIn() || !OC_Group::inGroup( OC_User::getUser(), 'admin' )){ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" ))); - exit(); -} +OC_JSON::checkAdminUser(); $username = $_POST["username"]; $quota= OC_Helper::computerFileSize($_POST["quota"]); // Return Success story OC_Preferences::setValue($username,'files','quota',$quota); -echo json_encode( array( "status" => "success", "data" => array( "username" => $username ,'quota'=>$quota))); +OC_JSON::success(array("data" => array( "username" => $username ,'quota'=>$quota))); ?> diff --git a/settings/ajax/togglegroups.php b/settings/ajax/togglegroups.php index 3210252af02878839dd0725ccb4660945d1c5f3d..3ee3239dd89ddcc42adb97712d0250dd5f3b2a2a 100644 --- a/settings/ajax/togglegroups.php +++ b/settings/ajax/togglegroups.php @@ -3,14 +3,7 @@ // Init owncloud require_once('../../lib/base.php'); -// We send json data -header( "Content-Type: application/jsonrequest" ); - -// Check if we are a user -if( !OC_User::isLoggedIn() || !OC_Group::inGroup( OC_User::getUser(), 'admin' )){ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" ))); - exit(); -} +OC_JSON::checkAdminUser(); $success = true; $error = "add user to"; @@ -39,10 +32,10 @@ else{ // Return Success story if( $success ){ - echo json_encode( array( "status" => "success", "data" => array( "username" => $username, "action" => $action, "groupname" => $group ))); + OC_JSON::success(array("data" => array( "username" => $username, "action" => $action, "groupname" => $group ))); } else{ - echo json_encode( array( "status" => "error", "data" => array( "message" => "Unable to $error group $group" ))); + OC_JSON::error(array("data" => array( "message" => "Unable to $error group $group" ))); } ?> diff --git a/settings/apps.php b/settings/apps.php index 337a52fd41630932cc30fff8361c6cf72a3292f2..27b4c17f9e69b8d402d75d62612f4704f825e6bd 100644 --- a/settings/apps.php +++ b/settings/apps.php @@ -22,10 +22,7 @@ */ require_once('../lib/base.php'); -if( !OC_User::isLoggedIn() || !OC_Group::inGroup( OC_User::getUser(), 'admin' )){ - header( "Location: ".OC_Helper::linkTo( "", "index.php" )); - exit(); -} +OC_Util::checkAdminUser(); // Load the files we need OC_Util::addStyle( "settings", "settings" ); @@ -46,21 +43,22 @@ foreach($registeredApps as $app){ } } -$catagoryNames=OC_OCSClient::getCategories(); -if(is_array($catagoryNames)){ - $categories=array_keys($catagoryNames); - $externalApps=OC_OCSClient::getApplications($categories); - foreach($externalApps as $app){ - $apps[]=array( - 'name'=>$app['name'], - 'id'=>$app['id'], - 'active'=>false, - 'description'=>$app['description'], - 'author'=>$app['personid'], - 'license'=>$app['license'], - ); - } -} +// dissabled for now +// $catagoryNames=OC_OCSClient::getCategories(); +// if(is_array($catagoryNames)){ +// $categories=array_keys($catagoryNames); +// $externalApps=OC_OCSClient::getApplications($categories); +// foreach($externalApps as $app){ +// $apps[]=array( +// 'name'=>$app['name'], +// 'id'=>$app['id'], +// 'active'=>false, +// 'description'=>$app['description'], +// 'author'=>$app['personid'], +// 'license'=>$app['license'], +// ); +// } +// } diff --git a/settings/css/settings.css b/settings/css/settings.css index 7cb29e487bc2fd8e03ad18004c26430f1631fdcb..8d89cee6ec04777bead223cb5e88545cc5e3423b 100644 --- a/settings/css/settings.css +++ b/settings/css/settings.css @@ -1,3 +1,4 @@ +select#languageinput, select#timezone { width:15em; } input#openid, input#webdav { width:20em; } /* PERSONAL */ @@ -8,21 +9,25 @@ input#identity { width:20em; } .msg.success{ color:#fff; background-color:#0f0; padding:3px; text-shadow:1px 1px #000; } .msg.error{ color:#fff; background-color:#f00; padding:3px; text-shadow:1px 1px #000; } +table.nostyle label { margin-right: 2em; } +table.nostyle td { padding: 0.2em 0; } /* USERS */ form { display:inline; } +table:not(.nostyle) th { height:2em; color:#999; } +table:not(.nostyle) th, table:not(.nostyle) td { border-bottom:1px solid #ddd; padding:0 .5em; padding-left:.8em; text-align:left; font-weight:normal; } td.name, td.password { padding-left:.8em; } -td.password>img, td.remove>img { display:none; cursor:pointer; } -td.password>span { margin-right:1.2em; } -td.password { width:12em; cursor:pointer; } +td.password>img, td.remove>img, td.quota>img { visibility:hidden; } +td.password, td.quota { width:12em; cursor:pointer; } +td.password>span, td.quota>span { margin-right: 1.2em; color: #C7C7C7; } td.remove { width:1em; padding-right:1em; } tr:hover>td.password>span { margin:0; cursor:pointer; } -tr:hover>td.remove>img, tr:hover>td.password>img { display:inline; cursor:pointer; } +tr:hover>td.remove>img, tr:hover>td.password>img, tr:hover>td.quota>img { visibility:visible; cursor:pointer; } tr:hover>td.remove>img { float:right; } li.selected { background-color:#ddd; } -#content>table { margin-top:6.5em; } -table { width:100%; } +#content>table:not(.nostyle) { margin-top:6.5em; } +table:not(.nostyle) { width:100%; } /* APPS */ diff --git a/settings/help.php b/settings/help.php index f8a2f9b8bf959d2eea9183dc1efcc8b420f080cc..48fcec32782bd9a9dcca3aedeea80cf269ee3d40 100644 --- a/settings/help.php +++ b/settings/help.php @@ -6,10 +6,7 @@ */ require_once('../lib/base.php'); -if( !OC_User::isLoggedIn()){ - header( "Location: ".OC_Helper::linkTo( "", "index.php" )); - exit(); -} +OC_Util::checkLoggedIn(); // Load the files we need diff --git a/settings/js/personal.js b/settings/js/personal.js index 9578fb2c890c1f06a4dc81e8fe93ac33cf750d9d..8108da433c80baefdfbe2a7f3fb9a480ac053ab0 100644 --- a/settings/js/personal.js +++ b/settings/js/personal.js @@ -32,6 +32,15 @@ $(document).ready(function(){ }); + $('#lostpassword #email').blur(function(event){ + event.preventDefault(); + OC.msg.startSaving('#lostpassword .msg'); + var post = $( "#lostpassword" ).serialize(); + $.post( 'ajax/lostpassword.php', post, function(data){ + OC.msg.finishedSaving('#lostpassword .msg', data); + }); + }); + $("#languageinput").chosen(); $("#languageinput").change( function(){ diff --git a/settings/js/users.js b/settings/js/users.js index c60fb32c40e7fbf9eb267f49d1e76b9e0f582213..64a132b427ed10b5e88707e6844679c3c28456cf 100644 --- a/settings/js/users.js +++ b/settings/js/users.js @@ -7,7 +7,7 @@ $(document).ready(function(){ function applyMultiplySelect(element){ var checked=[]; - var user=element.data('username') + var user=element.data('username'); if(element.data('userGroups')){ checked=element.data('userGroups').split(', '); } @@ -24,7 +24,7 @@ $(document).ready(function(){ }, function(){} ); - } + }; }else{ checkHandeler=false; } @@ -88,7 +88,6 @@ $(document).ready(function(){ var uid=img.parent().parent().data('uid'); var input=$('<input>'); var quota=img.parent().children('span').text(); - img if(quota=='None'){ quota=''; } @@ -124,6 +123,10 @@ $(document).ready(function(){ $('#newuser').submit(function(event){ event.preventDefault(); var username=$('#newusername').val(); + if(username == '') { + alert('Please provide a username!'); + return false; + } var password=$('#newuserpassword').val(); var groups=$('#newusergroups').prev().children('div').data('settings').checked; $.post( diff --git a/settings/l10n/bg_BG.php b/settings/l10n/bg_BG.php index 004166252bb2bf1de374ec1a5b2732686f7dbcef..31afbf934850ea6992585eea160f5e0f3e4eba76 100644 --- a/settings/l10n/bg_BG.php +++ b/settings/l10n/bg_BG.php @@ -1,8 +1,30 @@ <?php $TRANSLATIONS = array( -"Authentication error" => "Проблем Ñ Ð¸Ð½Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñта", +"Authentication error" => "Проблем Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñта", +"OpenID Changed" => "OpenID е Ñменено", "Invalid request" => "Ðевалидна заÑвка", "Language changed" => "Езика е Ñменен", +"Add your application" => "Добавете Ваша програма", +"Select an App" => "Изберете програма", +"-licensed" => "-лицензирано", +"by" => "от", +"Ask a question" => "Задайте въпроÑ", +"Problems connecting to help database." => "Проблеми при Ñвързване Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰Ð½Ð°Ñ‚Ð° база", +"Go there manually." => "Отидете ръчно.", +"Answer" => "Отговор", +"You use" => "Вие ползвате", +"of the available" => "от наличните", "Your password got changed" => "Вашата парола е Ñменена", +"Unable to change your password" => "Ðевъзможна промÑна на паролата", +"Current password" => "Текуща парола", "New password" => "Ðова парола", -"Language" => "Език" +"show" => "показва", +"Change password" => "ПромÑна на парола", +"Language" => "Език", +"Help translating" => "Помогнете Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð°", +"use this address to connect to your ownCloud in your file manager" => "ползвай този Ð°Ð´Ñ€ÐµÑ Ð·Ð° връзка Ñ Ð’Ð°ÑˆÐ¸Ñ ownCloud във Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð¼ÐµÐ½Ð¸Ð´Ð¶ÑŠÑ€", +"Name" => "Име", +"Password" => "Парола", +"Groups" => "Групи", +"Create" => "Ðово", +"Delete" => "Изтриване" ); diff --git a/settings/l10n/et_EE.php b/settings/l10n/et_EE.php new file mode 100644 index 0000000000000000000000000000000000000000..0e849f9d82f22df7152b5f3b5aec750c4fd82f9b --- /dev/null +++ b/settings/l10n/et_EE.php @@ -0,0 +1,30 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "Autentimise viga", +"OpenID Changed" => "OpenID on muudetud", +"Invalid request" => "Vigane päring", +"Language changed" => "Keel on muudetud", +"Add your application" => "Lisa oma programm", +"Select an App" => "Vali programm", +"-licensed" => "-litsenseeritud", +"by" => "kelle poolt", +"Ask a question" => "Küsi küsimus", +"Problems connecting to help database." => "Probleemid abiinfo andmebaasiga ühendumisel.", +"Go there manually." => "Mine sinna käsitsi.", +"Answer" => "Vasta", +"You use" => "Sa kasutad", +"of the available" => "saadaolevast", +"Your password got changed" => "Sinu parooli on muudetud", +"Unable to change your password" => "Sa ei saa oma parooli muuta", +"Current password" => "Praegune parool", +"New password" => "Uus parool", +"show" => "näita", +"Change password" => "Muuda parooli", +"Language" => "Keel", +"Help translating" => "Abiinfo tõlkimine", +"use this address to connect to your ownCloud in your file manager" => "kasuta seda aadressi oma ownCloudiga ühendamiseks failihalduriga", +"Name" => "Nimi", +"Password" => "Parool", +"Groups" => "Grupid", +"Create" => "Lisa", +"Delete" => "Kustuta" +); diff --git a/settings/l10n/lb.php b/settings/l10n/lb.php index ac3ca5024d2ba7933883c75ec002b34dbe996134..f6188cec6262fe05c1a4fbe1a7c69cf34fe154a6 100644 --- a/settings/l10n/lb.php +++ b/settings/l10n/lb.php @@ -14,6 +14,7 @@ "You use" => "Du benotz", "of the available" => "vun den disponibelen", "Your password got changed" => "Däin Passwuert ass geännert ginn", +"Unable to change your password" => "Konnt däin Passwuert net änneren", "Current password" => "Momentan 't Passwuert", "New password" => "Neit Passwuert", "show" => "weisen", diff --git a/settings/l10n/ms_MY.php b/settings/l10n/ms_MY.php new file mode 100644 index 0000000000000000000000000000000000000000..fbe910ff2192d8342088cc56d7fe4dc5b549f109 --- /dev/null +++ b/settings/l10n/ms_MY.php @@ -0,0 +1,30 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "Ralat pengesahan", +"OpenID Changed" => "OpenID ditukar", +"Invalid request" => "Permintaan tidak sah", +"Language changed" => "Bahasa ditukar", +"Add your application" => "Tambah aplikasi anda", +"Select an App" => "Pilih aplikasi", +"-licensed" => "-dilesen", +"by" => "oleh", +"Ask a question" => "Tanya soalan", +"Problems connecting to help database." => "Masalah menghubung untuk membantu pengkalan data", +"Go there manually." => "Pergi ke sana secara manual", +"Answer" => "Jawapan", +"You use" => "Anda menggunakan", +"of the available" => "yang tersedia", +"Your password got changed" => "Kata laluan anda ditukar", +"Unable to change your password" => "Gagal menukar kata laluan anda ", +"Current password" => "Kata laluan terkini", +"New password" => "Kata laluan baru", +"show" => "Papar", +"Change password" => "Tukar kata laluan", +"Language" => "Bahasa", +"Help translating" => "Bantu perterjemahan", +"use this address to connect to your ownCloud in your file manager" => "guna alamat ini untuk menyambung owncloud anda dalam pengurus fail anda", +"Name" => "Nama", +"Password" => "Kata laluan ", +"Groups" => "Kumpulan", +"Create" => "Buat", +"Delete" => "Padam" +); diff --git a/settings/l10n/pt_BR.php b/settings/l10n/pt_BR.php index d890918452a6c8611a867ddaba9f4276090f7db3..f0988e9a8e66752ad53c9e26fdaee40f04cfd3f0 100644 --- a/settings/l10n/pt_BR.php +++ b/settings/l10n/pt_BR.php @@ -14,6 +14,7 @@ "You use" => "Você usa", "of the available" => "do disponÃvel", "Your password got changed" => "Sua senha foi modificada", +"Unable to change your password" => "Não é possivel alterar a sua senha", "Current password" => "Senha atual", "New password" => "Nova senha", "show" => "mostrar", diff --git a/settings/l10n/sr.php b/settings/l10n/sr.php new file mode 100644 index 0000000000000000000000000000000000000000..33bd039a2fc1bb7a5d0bbcced44535ff193ac369 --- /dev/null +++ b/settings/l10n/sr.php @@ -0,0 +1,30 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "Грешка аутентификације", +"OpenID Changed" => "OpenID је измењен", +"Invalid request" => "ÐеиÑправан захтев", +"Language changed" => "Језик је измењен", +"Add your application" => "Додајте Ñвој програм", +"Select an App" => "Изаберите програм", +"-licensed" => "-лиценциран", +"by" => "од", +"Ask a question" => "ПоÑтавите питање", +"Problems connecting to help database." => "Проблем у повезивању Ñа базом помоћи", +"Go there manually." => "Отиђите тамо ручно.", +"Answer" => "Одговор", +"You use" => "КориÑтите", +"of the available" => "од доÑтупних", +"Your password got changed" => "Ваша лозинка је измењена", +"Unable to change your password" => "Ðе могу да изменим вашу лозинку", +"Current password" => "Тренутна лозинка", +"New password" => "Ðова лозинка", +"show" => "прикажи", +"Change password" => "Измени лозинку", +"Language" => "Језик", +"Help translating" => "Помозите у превођењу", +"use this address to connect to your ownCloud in your file manager" => "кориÑтите ову адреÑу да би Ñе повезали на ownCloud путем менаџњера фајлова", +"Name" => "Име", +"Password" => "Лозинка", +"Groups" => "Групе", +"Create" => "Ðаправи", +"Delete" => "Обриши" +); diff --git a/settings/l10n/sr@latin.php b/settings/l10n/sr@latin.php new file mode 100644 index 0000000000000000000000000000000000000000..4787dd3fa71d9ab1724451f492e31adc83b17e3e --- /dev/null +++ b/settings/l10n/sr@latin.php @@ -0,0 +1,30 @@ +<?php $TRANSLATIONS = array( +"Authentication error" => "GreÅ¡ka autentifikacije", +"OpenID Changed" => "OpenID je izmenjen", +"Invalid request" => "Neispravan zahtev", +"Language changed" => "Jezik je izmenjen", +"Add your application" => "Dodajte svoj program", +"Select an App" => "Izaberite program", +"-licensed" => "-licenciran", +"by" => "od", +"Ask a question" => "Postavite pitanje", +"Problems connecting to help database." => "Problem u povezivanju sa bazom pomoći", +"Go there manually." => "OtiÄ‘ite tamo ruÄno.", +"Answer" => "Odgovor", +"You use" => "Koristite", +"of the available" => "od dostupnih", +"Your password got changed" => "VaÅ¡a lozinka je izmenjena", +"Unable to change your password" => "Ne mogu da izmenim vaÅ¡u lozinku", +"Current password" => "Trenutna lozinka", +"New password" => "Nova lozinka", +"show" => "prikaži", +"Change password" => "Izmeni lozinku", +"Language" => "Jezik", +"Help translating" => "Pomozite u prevoÄ‘enju", +"use this address to connect to your ownCloud in your file manager" => "koristite ovu adresu da bi se povezali na ownCloud putem menadžnjera fajlova", +"Name" => "Ime", +"Password" => "Lozinka", +"Groups" => "Grupe", +"Create" => "Napravi", +"Delete" => "ObriÅ¡i" +); diff --git a/settings/l10n/sv.php b/settings/l10n/sv.php index f721e9a98916fb2e9da793168aef09ba60ed64db..13ccd3826e3966cb365e35f1d7c05980bc5a2d36 100644 --- a/settings/l10n/sv.php +++ b/settings/l10n/sv.php @@ -3,6 +3,7 @@ "OpenID Changed" => "OpenID ändrat", "Invalid request" => "Ogiltig begäran", "Language changed" => "SprÃ¥k ändrades", +"Add your application" => "Lägg till din applikation", "Select an App" => "Välj en App", "-licensed" => "-licensierat", "by" => "av", @@ -13,6 +14,7 @@ "You use" => "Du använder", "of the available" => "av tillgängliga", "Your password got changed" => "Ditt lösenord ändrades", +"Unable to change your password" => "Kunde inte ändra ditt lösenord", "Current password" => "Nuvarande lösenord", "New password" => "Nytt lösenord", "show" => "visa", diff --git a/settings/languageCodes.php b/settings/languageCodes.php index a928ca5b57ecf882a2834c63bc60bf292118aeb8..3e2cea50accf790518b1863a808920c84ddf1f23 100644 --- a/settings/languageCodes.php +++ b/settings/languageCodes.php @@ -6,26 +6,28 @@ return array( 'bg_BG'=>'българÑки език', -'ca'=>'Catala', -'zh_CN'=>'ä¸æ–‡', +'ca'=>'Català ', 'cs_CZ'=>'ÄŒeÅ¡tina', 'da'=>'Dansk', -'nl'=>'Nederlands', +'de'=>'Deutsch', +'el'=>'Ελληνικά', 'en'=>'English', +'es'=>'Español', 'et_EE'=>'Eesti', -'fr'=>'Francais', -'de'=>'Deutsch', -'el'=>'Ellinika', +'fr'=>'Français', 'id'=>'Bahasa Indonesia', 'it'=>'Italiano', 'lb'=>'Lëtzebuergesch', +'ms_MY'=>'Bahasa Melayu', 'nb_NO'=>'Norwegian BokmÃ¥l', -'pl'=>'Polski', -'pt_BR'=>'Portugues', +'nl'=>'Nederlands', +'pl'=>'jÄ™zyk polski', +'pt_BR'=>'Português brasileiro', +'pt_PT'=>'Português', 'ro'=>'română', 'ru'=>'РуÑÑкий Ñзык', 'sr'=>'СрпÑки', 'sr@latin'=>'Srpski', -'es'=>'Espanol', -'sv'=>'Svenska' +'sv'=>'Svenska', +'zh_CN'=>'ä¸æ–‡' ); diff --git a/settings/personal.php b/settings/personal.php index e6d2d44db761b453c1f88de95fcd9e7c18b4feb5..c27ca0aed63131b3e35c5ac93393be87b3ce72ba 100644 --- a/settings/personal.php +++ b/settings/personal.php @@ -6,21 +6,22 @@ */ require_once('../lib/base.php'); -if( !OC_User::isLoggedIn()){ - header( "Location: ".OC_Helper::linkTo( "", "index.php" )); - exit(); -} +OC_Util::checkLoggedIn(); // Highlight navigation entry -OC_Util::addScript( "settings", "personal" ); -OC_Util::addStyle( "settings", "settings" ); -OC_App::setActiveNavigationEntry( "personal" ); +OC_Util::addScript( 'settings', 'personal' ); +OC_Util::addStyle( 'settings', 'settings' ); +OC_Util::addScript( '3rdparty', 'chosen/chosen.jquery.min' ); +OC_Util::addStyle( '3rdparty', 'chosen' ); +OC_App::setActiveNavigationEntry( 'personal' ); // calculate the disc space $used=OC_Filesystem::filesize('/'); $free=OC_Filesystem::free_space(); $total=$free+$used; -$relative=round(($used/$total)*100); +$relative=round(($used/$total)*10000)/100; + +$email=OC_Preferences::getValue(OC_User::getUser(), 'settings','email',''); $lang=OC_Preferences::getValue( OC_User::getUser(), 'core', 'lang', 'en' ); $languageCodes=OC_L10N::findAvailableLanguages(); @@ -34,10 +35,11 @@ foreach($languageCodes as $lang){ } // Return template -$tmpl = new OC_Template( "settings", "personal", "user"); +$tmpl = new OC_Template( 'settings', 'personal', 'user'); $tmpl->assign('usage',OC_Helper::humanFileSize($used)); $tmpl->assign('total_space',OC_Helper::humanFileSize($total)); $tmpl->assign('usage_relative',$relative); +$tmpl->assign('email',$email); $tmpl->assign('languages',$languages); $forms=OC_App::getForms('personal'); diff --git a/settings/settings.php b/settings/settings.php index 724cf63aaf70c4a93106c535c09814b712cf374d..a49de85520bf5ef6302427cf3a87e0cf26001f43 100644 --- a/settings/settings.php +++ b/settings/settings.php @@ -6,13 +6,10 @@ */ require_once('../lib/base.php'); -if( !OC_User::isLoggedIn()){ - header( "Location: ".OC_Helper::linkTo( "", "index.php" )); - exit(); -} +OC_Util::checkLoggedIn(); -OC_Util::addStyle( "settings", "settings" ); -OC_App::setActiveNavigationEntry( "settings" ); +OC_Util::addStyle( 'settings', 'settings' ); +OC_App::setActiveNavigationEntry( 'settings' ); $tmpl = new OC_Template( 'settings', 'settings', 'user'); $forms=OC_App::getForms('settings'); @@ -20,4 +17,4 @@ $tmpl->assign('forms',array()); foreach($forms as $form){ $tmpl->append('forms',$form); } -$tmpl->printPage(); \ No newline at end of file +$tmpl->printPage(); diff --git a/settings/templates/apps.php b/settings/templates/apps.php index d8f3fb5e4f8996fd39e94d469363a0e235a5982b..6f16152bc5bbca07e3dc91302cb782d9c0decfea 100644 --- a/settings/templates/apps.php +++ b/settings/templates/apps.php @@ -12,7 +12,7 @@ <li <?php if($app['active']) echo 'class="active"'?> data-id="<?php echo $app['id'] ?>"> <?php echo $app['name'] ?> <span class="hidden"> - <?php echo json_encode($app) ?> + <?php OC_JSON::encodedPrint($app,false) ?> </span> </li> <?php endforeach;?> diff --git a/settings/templates/personal.php b/settings/templates/personal.php index 65a6f12712b68252640e2fdb7caf0d977e79e35d..19bd878912506f759545e0575c93ae62d6e2f8c3 100644 --- a/settings/templates/personal.php +++ b/settings/templates/personal.php @@ -5,7 +5,7 @@ */?> <div id="quota" class="personalblock"><div style="width:<?php echo $_['usage_relative'];?>%;"> - <p><?php echo $l->t('You use');?> <strong><?php echo $_['usage'];?></strong> <?php echo $l->t('of the available');?> <strong><?php echo $_['total_space'];?></strong></p> + <p id="quotatext"><?php echo $l->t('You use');?> <strong><?php echo $_['usage'];?></strong> <?php echo $l->t('of the available');?> <strong><?php echo $_['total_space'];?></strong></p> </div></div> <form id="passwordform"> @@ -19,6 +19,14 @@ </fieldset> </form> +<form id="lostpassword"> + <fieldset class="personalblock"> + <label for="email"><strong><?php echo $l->t('Email');?></strong></label> + <input type="text" name="email" id="email" value="<?php echo $_['email']; ?>" placeholder="<?php echo $l->t('Your email address');?>" /><span class="msg"></span><br /> + <em><?php echo $l->t('Fill in an email address to enable password recovery');?></em> + </fieldset> +</form> + <form> <fieldset class="personalblock"> <label for="languageinput"><strong><?php echo $l->t('Language');?></strong></label> @@ -40,3 +48,10 @@ <?php foreach($_['forms'] as $form){ echo $form; };?> + +<p class="personalblock"> + <strong>ownCloud</strong> <?php echo(OC_Util::getVersionString()); ?>, <a href="http://gitorious.org/owncloud" target="_blank">source code</a> licensed freely under <a href="http://www.gnu.org/licenses/agpl-3.0.html" target="_blank">AGPL</a> +</p> + + + diff --git a/settings/templates/users.php b/settings/templates/users.php index a97774cea0b87c89adb2596d93a5c8be12cd7385..bcc4d65fe43280f7dca577f31cede21b5c0d9e4d 100644 --- a/settings/templates/users.php +++ b/settings/templates/users.php @@ -10,19 +10,29 @@ foreach($_["groups"] as $group) { } ?> +<div id="controls"> + <form id="newuser"> + <th class="name"><input id="newusername" placeholder="<?php echo $l->t('Name')?>" /></th> + <th class="password"><input type="password" id="newuserpassword" placeholder="<?php echo $l->t('Password')?>" /></th> + <th class="groups"><select id="newusergroups" data-placeholder="groups" title="<?php echo $l->t('Groups')?>" multiple="multiple"> + <?php foreach($_["groups"] as $group): ?> + <option value="<?php echo $group['name'];?>"><?php echo $group['name'];?></option> + <?php endforeach;?> + </select></th> + <th class="quota"></th> + <th><input type="submit" value="<?php echo $l->t('Create')?>" /></th> + </form> +</div> + <table data-groups="<?php echo implode(', ',$allGroups);?>"> - <thead id="controls"> - <tr><form id="newuser"> - <th class="name"><input id="newusername" placeholder="<?php echo $l->t('Name')?>" /></th> - <th class="password"><input type="password" id="newuserpassword" placeholder="<?php echo $l->t('Password')?>" /></th> - <th class="groups"><select id="newusergroups" data-placeholder="groups" title="<?php echo $l->t('Groups')?>" multiple="multiple"> - <?php foreach($_["groups"] as $group): ?> - <option value="<?php echo $group['name'];?>"><?php echo $group['name'];?></option> - <?php endforeach;?> - </select></th> - <th class="quota"></th> - <th><input type="submit" value="<?php echo $l->t('Create')?>" /></th> - </form></tr> + <thead> + <tr> + <th id='headerName'><?php echo $l->t('Name')?></th> + <th id="headerPassword"><?php echo $l->t( 'Password' ); ?></th> + <th id="headerGroups"><?php echo $l->t( 'Groups' ); ?></th> + <th id="headerQuota"><?php echo $l->t( 'Quota' ); ?></th> + <th id="headerRemove"> </th> + </tr> </thead> <tbody> <?php foreach($_["users"] as $user): ?> diff --git a/settings/users.php b/settings/users.php index 5aae4ce43effd9a8301770d6c5eaa7dfaeb517fe..686c4b6a9bf625fe0cfc0d9733f9a658e405cff1 100644 --- a/settings/users.php +++ b/settings/users.php @@ -6,16 +6,12 @@ */ require_once('../lib/base.php'); -if( !OC_User::isLoggedIn() || !OC_Group::inGroup( OC_User::getUser(), 'admin' )){ - header( "Location: ".OC_Helper::linkTo( "", "index.php" )); - exit(); -} +OC_Util::checkAdminUser(); // We have some javascript foo! OC_Util::addScript( 'settings', 'users' ); +OC_Util::addScript( 'core', 'multiselect' ); OC_Util::addStyle( 'settings', 'settings' ); -OC_Util::addScript( '3rdparty', 'chosen/chosen.jquery.min' ); -OC_Util::addStyle( '3rdparty', 'chosen' ); OC_App::setActiveNavigationEntry( 'core_users' ); $users = array(); diff --git a/status.php b/status.php new file mode 100644 index 0000000000000000000000000000000000000000..94c8cfce8423314f9ac437d82f223d3fca9f633e --- /dev/null +++ b/status.php @@ -0,0 +1,34 @@ +<?php + +/** +* ownCloud status page. usefull if you want to check from the outside if an owncloud installation exists +* +* @author Frank Karlitschek +* @copyright 2010 Frank Karlitschek karlitschek@kde.org +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +* License as published by the Free Software Foundation; either +* version 3 of the License, or any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU AFFERO GENERAL PUBLIC LICENSE for more details. +* +* You should have received a copy of the GNU Affero General Public +* License along with this library. If not, see <http://www.gnu.org/licenses/>. +* +*/ + +$RUNTIME_NOAPPS = TRUE; //no apps, yet + +require_once('lib/base.php'); + +if(OC_Config::getValue('installed')==1) $installed='true'; else $installed='false'; +$values=array('installed'=>$installed,'version'=>implode('.',OC_Util::getVersion()),'versionstring'=>OC_Util::getVersionString()); + +echo(json_encode($values)); + + +?> diff --git a/tests/index.php b/tests/index.php index efa730f6f8f88b35883a9e5e9c5473ed48a9a38c..08e53f1a5756591bf56b1da38b158a73372ee95f 100644 --- a/tests/index.php +++ b/tests/index.php @@ -26,6 +26,7 @@ */ $RUNTIME_NOSETUPFS=true; require_once('../lib/base.php'); +OC_Util::checkAdminUser(); $testCases=loadFiles(__DIR__,array('index.php','templates')); ob_end_clean(); @@ -74,4 +75,4 @@ function loadFiles($path,$exclude=false){ } return $results; } -?> \ No newline at end of file +?>