diff --git a/.gitignore b/.gitignore index 33f8e0c524..ea8e5bd42f 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,8 @@ RCS/* # eclipse .project .settings + +# netbeans +nbproject + +.DS_Store \ No newline at end of file diff --git a/.htaccess b/.htaccess index 1812482675..8763a8bcde 100644 --- a/.htaccess +++ b/.htaccess @@ -1,7 +1,8 @@ -ErrorDocument 404 //owncloud/core/templates/404.php +ErrorDocument 404 /owncloud/core/templates/404.php - 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 Options -Indexes diff --git a/.tx/config b/.tx/config index 233dae8eb3..b51860f8b2 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//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/.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 3cc8b777b7..0000000000 --- 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 - ". - -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 . - -PHP includes the Zend Engine, freely available at -. diff --git a/3rdparty/COPYING-README b/3rdparty/COPYING-README deleted file mode 100644 index 2450ef1581..0000000000 --- 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 fbc7107914..aa7ec6ba09 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 6401966964..650910174e 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 63db241b86..5d2ad27d01 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 7ac282f44a..b694eef49e 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 d1785bb8f8..7b1b33b912 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 a50aef12b4..0d2b387577 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 b5c4e49b83..0c99f18deb 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 0000000000..8193dff3a8 --- /dev/null +++ b/3rdparty/Sabre/CalDAV/ICalendar.php @@ -0,0 +1,18 @@ +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 5ecc0cebb3..df8fe1f6bd 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 04e4c227b8..3333480ea8 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 63a74745aa..5556d0a764 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 52d8b79d7d..5298d31e24 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 a96f9aaebb..17766b7827 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 0000000000..d57d3a6e7b --- /dev/null +++ b/3rdparty/Sabre/CardDAV/Property/SupportedAddressData.php @@ -0,0 +1,69 @@ + '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 8961027fc8..c76ee36035 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 8e0ca24cff..cd5617babb 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.= "
"; - if ($this->enablePost) { + if ($this->enablePost && $parent instanceof Sabre_DAV_ICollection) { $html.= '

Create new folder

diff --git a/3rdparty/Sabre/DAV/Server.php b/3rdparty/Sabre/DAV/Server.php index c6c63143d1..b99866dad5 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 0000000000..304dff1c5e --- /dev/null +++ b/3rdparty/Sabre/DAV/SimpleFile.php @@ -0,0 +1,120 @@ +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 b0b708f8e0..440cf6866c 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 1502e4dd2c..8f38749264 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=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 c93d793ab6..e7f7f83e6f 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 158b271058..790603c900 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() { - 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 = 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'])) { + $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 a705507486..124463e311 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 c8c77251a1..dce6feac55 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 f8d1bb7542..67be232fc2 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 63af858dd6..30e5c6ca86 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 07f7e82c34..5e677f5e5b 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 201e6356ad..624dd4b8a5 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 9c20e33cea..c38afbfb63 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 8c3fe67b1f..950c1c5110 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 2cdb44f4ae..096b22a0ab 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 247d07bf02..96bae0fe95 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 5f00323b71..b0caca2ad2 100644 --- a/COPYING-README +++ b/COPYING-README @@ -2,7 +2,12 @@ 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. +Components of ownCloud: +* jQuery is dual licensed under MIT and GPL +* HTTP is three clause BSD license +* MDB2 uses a custom license in the BSD style +* User is AGPL +* XML/RPC is both MIT and PHP license All unmodified files from these and other sources retain their original copyright and license notices: see the relevant individual files. diff --git a/README b/README index 4ad4f82f30..60b18defd5 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 0000000000..beebb4864e --- /dev/null +++ b/apps/admin_export/appinfo/app.php @@ -0,0 +1,33 @@ +. +* +*/ + + +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 0000000000..c4a2a9b398 --- /dev/null +++ b/apps/admin_export/appinfo/info.xml @@ -0,0 +1,10 @@ + + + admin_export + Import/Export + Import/Export your owncloud data + 0.1 + AGPL + Thomas Schmidt + 2 + diff --git a/apps/admin_export/settings.php b/apps/admin_export/settings.php new file mode 100644 index 0000000000..8308a2b89b --- /dev/null +++ b/apps/admin_export/settings.php @@ -0,0 +1,96 @@ +. + * + */ +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 0000000000..47689facbb --- /dev/null +++ b/apps/admin_export/templates/settings.php @@ -0,0 +1,13 @@ + +
+ t('Export this ownCloud instance');?> +

t('This will create a compressed file that contains the data of this owncloud instance. + Please choose which components should be included:');?> +

+


+
+ +

+ +
+ diff --git a/apps/bookmarks/addBm.php b/apps/bookmarks/addBm.php index 2dab33afb2..a2a39134ea 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'); @@ -45,4 +43,4 @@ $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 7cf5baa4a6..0dc83d9014 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' ){ @@ -76,6 +71,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 bf1611fe5c..4aef86e771 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 1bd2fc08bc..b427a175e5 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' ){ diff --git a/apps/bookmarks/ajax/getMeta.php b/apps/bookmarks/ajax/getMeta.php index e9fe0d684d..ca797315ef 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 116daea8bb..e6fdfe043e 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 67acb2190c..8e9bda0bc2 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' ); @@ -70,7 +65,8 @@ $query = OC_DB::prepare(' 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/bookmarksHelper.php b/apps/bookmarks/bookmarksHelper.php index aee941a27b..d674e595a8 100644 --- a/apps/bookmarks/bookmarksHelper.php +++ b/apps/bookmarks/bookmarksHelper.php @@ -9,7 +9,12 @@ 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($ch); + curl_close($ch); + @preg_match( "/(.*)<\/title>/si", $page, $match ); $metadata['title'] = htmlspecialchars_decode(@$match[1]); diff --git a/apps/bookmarks/index.php b/apps/bookmarks/index.php index ba9f7cc0c6..50fea3fddb 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/templates/addBm.php b/apps/bookmarks/templates/addBm.php index cbc4910e1a..36f04e135b 100644 --- a/apps/bookmarks/templates/addBm.php +++ b/apps/bookmarks/templates/addBm.php @@ -1,8 +1,8 @@ <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('Description'); ?></label><input type="text" id="bookmark_add_description" class="bookmarks_input" value="<?php echo $_['DESCRIPTION']; ?>" /></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 2aa5093c82..d73657b36a 100644 --- a/apps/bookmarks/templates/list.php +++ b/apps/bookmarks/templates/list.php @@ -1,30 +1,27 @@ <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> +<h2 class="bookmarks_headline"><?php echo isset($_GET["tag"]) ? $l->t('Bookmarks with tag: ') . urldecode($_GET["tag"]) : $l->t('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> + <input type="button" class="bookmarks_addBtn" value="<?php echo $l->t('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="<?php echo $l->t('Drag this to your browser bookmarks and click it, when you want to bookmark a webpage.'); ?>"><?php echo $l->t('Add page to ownCloud'); ?></a> </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" /> + <p><label class="bookmarks_label"><?php echo $l->t('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> + <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="bookmarks_sorting pager"> <ul> - <li class="bookmarks_sorting_recent">Recent Bookmarks</li> - <li class="bookmarks_sorting_clicks">Most clicks</li> + <li class="bookmarks_sorting_recent"><?php echo $l->t('Recent Bookmarks'); ?></li> + <li class="bookmarks_sorting_clicks"><?php echo $l->t('Most clicks'); ?></li> </ul> </div> <div class="clear"></div> <div class="bookmarks_list"> - <noscript> - JavaScript is needed to display your Bookmarks - </noscript> - You have no bookmarks + <?php echo $l->t('You have no bookmarks'); ?> </div> diff --git a/apps/calendar/ajax/activation.php b/apps/calendar/ajax/activation.php index 778c88c272..89239f2175 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 d3a00bf172..b396ff4945 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 03765dabe9..0935a4c42a 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 df960e8a59..82176d4368 100644 --- a/apps/calendar/ajax/createcalendar.php +++ b/apps/calendar/ajax/createcalendar.php @@ -1,29 +1,18 @@ <?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']); @@ -31,4 +20,4 @@ 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 0000000000..606d13b1e1 --- /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 0000000000..e8ffe0d059 --- /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 0000000000..9e3c7dd87d --- /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 0000000000..cdc41388ab --- /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 99d3e0fb55..5f61cf5013 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 e4e6c4548c..3abf4de98b 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 3b8a30f70f..34d6c657ce 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 0000000000..eff82cece1 --- /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 b20f22957c..3d43677075 100644 --- a/apps/calendar/ajax/getcal.php +++ b/apps/calendar/ajax/getcal.php @@ -1,26 +1,701 @@ <?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) && $event["repeating"] == false) + continue; + if($select_year == substr($event['startdate'], 0, 4) && $event["repeating"] == false){ + $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); + } + } + if($event["repeating"] == 1){ + $object = Sabre_VObject_Reader::read($event['calendardata']); + $vevent = $object->VEVENT; + //echo substr_count($event["calendardata"], "EXDATE"); + $numofelements = substr_count($vevent->RRULE, ";"); + $properties = array("FREQ"=>"false", "UNTIL"=>"false", "COUNT"=>"false", "INTERVAL"=>"false", "BYDAY"=>"false", "BYMONTHDAY"=>"false", "BYWEEKNO"=>"false", "BYMONTH"=>"false", "BYYEARDAY"=>"false", "BYSETPOS"=>"false"); + $exruleproperties = array("FREQ"=>"false", "UNTIL"=>"false", "COUNT"=>"false", "INTERVAL"=>"false", "BYDAY"=>"false", "BYMONTHDAY"=>"false", "BYWEEKNO"=>"false", "BYMONTH"=>"false", "BYYEARDAY"=>"false", "BYSETPOS"=>"false"); + $byday = array("MO"=>"false", "TU"=>"false", "WE"=>"false", "TH"=>"false", "FR"=>"false", "SA"=>"false", "SU"=>"false"); + if($numofelements != 0){ + $rrule = explode(";", $vevent->RRULE); + for($i = 0;$i <= $numofelements;$i++){ + $rule = explode("=", $rrule[$i]); + $property = $rule[0]; + $value = $rule[1]; + $properties[$property] = $value; + } + if($properties["BYDAY"] != "false"){ + $numofdays = substr_count($properties["BYDAY"], ","); + if($numofdays == 0){ + if(strlen($properties["BYDAY"]) != 2){ + $lenght = strlen($properties["BYDAY"]); + switch($lenght){ + case "3": + $properties["BYSETPOS"] = substr($properties["BYDAY"],0,1); + $properties["BYDAY"] = substr($properties["BYDAY"],1,2); + break; + case "4": + $properties["BYSETPOS"] = substr($properties["BYDAY"],0,2); + $properties["BYDAY"] = substr($properties["BYDAY"],2,2); + break; + case "5": + $properties["BYSETPOS"] = substr($properties["BYDAY"],0,3); + $properties["BYDAY"] = substr($properties["BYDAY"],3,2); + break; + case "6": + $properties["BYSETPOS"] = substr($properties["BYDAY"],0,4); + $properties["BYDAY"] = substr($properties["BYDAY"],4,2); + break; + } + } + $byday[$properties["BYDAY"]] = true; + + }else{ + $days = explode(",", $properties["BYDAY"]); + for($i = 0;$i <= $numofdays;$i++){ + $day = $days[$i]; + $byday[$day] = true; + } + } + } + }else{ + $rule = explode("=", $vevent->RRULE); + $properties[$rule[0]] = $rule[1]; + } + if($properties["INTERVAL"] == "false"){ + $properties["INTERVAL"] = 1; + } + $count = 0; //counts all loops + $countedoutputs = 0; //counts only the outputs + $countchecker = true; + $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)); + $firststart_year = $start_dt->format('Y'); + $firststart_month = $start_dt->format('n'); + $firststart_day = $start_dt->format('j'); + $hour = $start_dt->format('G'); + $interval = 0; + if($properties["UNTIL"] != "false"){ + $until = $properties["UNTIL"]; + $until_year = substr($until, 0, 4); + $until_month = substr($until, 4, 2); + $until_day = substr($until, 6, 2); + } + //print_r($properties); + //print_r($byday); + if($properties["FREQ"] == "DAILY"){ + if($properties["BYDAY"] == "false"){ + $byday = array("MO"=>"1", "TU"=>"1", "WE"=>"1", "TH"=>"1", "FR"=>"1", "SA"=>"1", "SU"=>"1"); + } + while(date("Y", mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year) + ($count * 1 * 86400 * $interval)) <= $select_year && $countchecker == true){ + if($byday[strtoupper(substr(date("D", mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year) + ($count * 1 * 86400 * $interval)), 0, 2))] == "1"){ + $newunixtime = mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year) + ($count * 1 * 86400 * $interval); + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = date("j", $newunixtime); + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + 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']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + 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); + } + } + $count++; + } + } + if($properties["FREQ"] == "WEEKLY"){ + if($properties["BYDAY"] == "false"){ + $byday[strtoupper(substr(date("D", mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year)), 0, 2))] = "1"; + } + while(date("Y", mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year) + ($count * 1 * 86400 * $interval)) <= $select_year && $countchecker == true){ + if($byday[strtoupper(substr(date("D", mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year) + ($count * 1 * 86400 * $interval)), 0, 2))] == "1"){ + $newunixtime = mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year) + ($count * 1 * 86400 * $interval); + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = date("j", $newunixtime); + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + 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']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + 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); + } + } + $count++; + } + } + if($properties["FREQ"] == "MONTHLY"){ + if(substr_count($properties["BYMONTHDAY"], ",") != 0){ + $numofBYMONTHDAY = substr_count($properties["BYMONTHDAY"], ","); + if($numofBYMONTHDAY == 0){ + $BYMONTHDAY = array(); + $BYMONTHDAY[0] = $properties["BYMONTHDAY"]; + }else{ + $BYMONTHDAY = explode(",", $properties["BYMONTHDAY"]); + } + while(date("Y", mktime(0,0,0, $firststart_month + ($count * $interval), $properties["BYMONTHDAY"], $firststart_year)) <= $select_year && $countchecker == true){ + for($i = 0;$i <= $numofBYMONTHDAY;$i++){ + $newunixtime = mktime(0,0,0, $firststart_month + ($count * $interval), $BYMONTHDAY[$i], $firststart_year); + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = date("j", $newunixtime); + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + 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']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + 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); + } + } + $count++; + } + } + //if($properties["BYMONTHDAY"] != "false"){ + if($properties["BYSETPOS"] == "false"){ + while(date("Y", mktime(0,0,0, $firststart_month + ($count * $interval), $properties["BYMONTHDAY"], $firststart_year)) <= $select_year && $countchecker == true){ + $newunixtime = mktime(0,0,0, $firststart_month + ($count * $interval), $properties["BYMONTHDAY"], $firststart_year); + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = date("j", $newunixtime); + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + 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']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + 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); + } + $count++; + } + }else{ + if(!is_nan($properties["BYSETPOS"]) && $properties["BYSETPOS"] >= 1){ + while(date("Y", mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year)) <= $select_year && $countchecker == true){ + $lastdayofmonth = date("t", mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year)); + $matches = 0; + $matchedday = ""; + for($i = 1;$i <= $lastdayofmonth;$i++){ + $thisday = date("j", mktime(0,0,0, $firststart_month + ($count * $interval), $i, $firststart_year)); + $thisdayname = strtoupper(substr(date("D", mktime(0,0,0, $firststart_month + ($count * $interval), $i, $firststart_year)),0,2)); + //echo $thisdayname . " " . $thisday . "\n"; + if($byday[$thisdayname] == 1){ + $matches++; + } + if($matches == $properties["BYSETPOS"]){ + $matchedday = $thisday; + $i = 32; + } + } + $newunixtime = mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year); + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = $matchedday; + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + 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']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + 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); + } + $count++; + } + }elseif(!is_nan($properties["BYSETPOS"]) && $properties["BYSETPOS"] <= -1){ + while(date("Y", mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year)) <= $select_year && $countchecker == true){ + $lastdayofmonth = date("t", mktime(0,0,0, $firststart_month + ($count * $interval), 1, $firststart_year)); + $matches = 0; + $matchedday = ""; + for($i = $lastdayofmonth;$i >= 1;$i--){ + $thisday = date("j", mktime(0,0,0, $firststart_month + ($count * $interval), $i, $firststart_year)); + $thisdayname = strtoupper(substr(date("D", mktime(0,0,0, $firststart_month + ($count * $interval), $i, $firststart_year)),0,2)); + //echo $thisdayname . " " . $thisday . "\n"; + if($byday[$thisdayname] == 1){ + $matches++; + } + if($matches == $properties["BYSETPOS"]){ + $matchedday = $thisday; + $i = 0; + } + } + $newunixtime = mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year); + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = $matchedday; + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + 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']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + 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); + } + $count++; + } + //} + } + } + if(strlen($properties["BYDAY"]) == 2){ + while(date("Y", mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year)) <= $select_year && $countchecker == true){ + if($byday[strtoupper(substr(date("D", mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year)), 0, 2))] == "1"){ + $newunixtime = mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year); + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = date("j", $newunixtime); + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + 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']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + 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); + } + } + $count++; + } + }else{ + while(date("Y", mktime(0,0,0, 0, 0, $firststart_year + ($count * $interval))) <= $select_year && $countchecker == true){ + $newunixtime = mktime(0,0,0, $properties["BYMONTH"], $properties["BYMONTHDAY"], $firststart_year + ($count * $interval)); + $year = date("Y", $newunixtime); + $month = $month - 1; // return is 0 based + $day = $dateofweekone; + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + 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']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + 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); + } + $count++; + } + } + } + if($properties["FREQ"] == "YEARLY"){ + if($properties["BYMONTH"] != "false"){ + if($properties["BYMONTHDAY"] == false){ + $properties["BYMONTHDAY"] = date("j", mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year)); + } + if($properties["BYDAY"] == "false"){ + while(date("Y", mktime(0,0,0, $properties["BYMONTH"], $properties["BYMONTHDAY"], $firststart_year + ($count * $interval))) <= $select_year && $countchecker == true){ + $newunixtime = mktime(0,0,0, $properties["BYMONTH"], $properties["BYMONTHDAY"], $firststart_year + ($count * $interval)); + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = date("j", $newunixtime); + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + 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']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + 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); + } + $count++; + } + } + if(strlen($properties["BYDAY"]) == 2){ + while(date("Y", mktime(0,0,0, $properties["BYMONTH"], $properties["BYMONTHDAY"], $firststart_year + ($count * $interval))) <= $select_year && $countchecker == true){ + $newunixtime = mktime(0,0,0, $properties["BYMONTH"], $properties["BYMONTHDAY"], $firststart_year + ($count * $interval)); + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = date("j", $newunixtime); + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + 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']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + 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); + } + $count++; + } + }else{ + $number = substr($properties["BYDAY"],0,1); + $weekday = substr($properties["BYDAY"],1,2); + $month = $properties["BYMONTH"]; + $dateofweekone = ""; + for($i = 0; $i <= 7;$i++){ + if(strtoupper(substr(date("D", mktime(0,0,0, $properties["BYMONTH"], $i, $select_year)), 0, 2)) == $weekday){ + $dateofweekone = date("j", mktime(0,0,0, $properties["BYMONTH"], $i, $select_year)); + $i = 8; + } + } + if($number != 1){ + $dateofweekone = $dateofweekone + (7 * ($number - 1)); + } + while(date("Y", mktime(0,0,0, 0, 0, $firststart_year + ($count * $interval))) <= $select_year && $countchecker == true){ + $newunixtime = mktime(0,0,0, $properties["BYMONTH"], $properties["BYMONTHDAY"], $firststart_year + ($count * $interval)); + $year = date("Y", $newunixtime); + $month = $month - 1; // return is 0 based + $day = $dateofweekone; + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + 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']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + 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); + } + $count++; + } + } + }elseif($properties["BYYEARDAY"] != false){ + $numofyeardays = substr_count($properties["BYYEARDAY"], ","); + if($numofyeardays == 0){ + $yeardays = array(); + $yeardays[0] = $properties["BYYEARDAY"]; + }else{ + $yeardays = explode(",", $properties["BYYEARDAY"]); + } + while(date("Y", mktime(0,0,0, 0, 0, $firststart_year + ($count * $interval)) + ($yeardays[$numofyeardays]-1) * 86400) <= $select_year && $countchecker == true){ + for($i = 0;$i <= $numofyeardays;$i++){ + $newunixtime = mktime(0,0,0, 1, 1, $firststart_year + ($count * $interval)) + ($yeardays[$i] -1) * 86400; + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = date("j", $newunixtime); + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + 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']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + 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); + } + } + $count++; + } + } + } + } +} +OC_JSON::encodedPrint($return); diff --git a/apps/calendar/ajax/geteventinfo.php b/apps/calendar/ajax/geteventinfo.php deleted file mode 100644 index 6182a60e61..0000000000 --- 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 0000000000..232b4ba580 --- /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 0000000000..e2b777969d --- /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 59d0a8574d..e01ae01ee8 100644 --- a/apps/calendar/ajax/newcalendar.php +++ b/apps/calendar/ajax/newcalendar.php @@ -1,27 +1,22 @@ <?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' => '', + 'description' => '', + '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 fb3745d052..1a696cf778 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 1d8a61dffd..9d4dcfa2e1 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 0000000000..b5ef5f8573 --- /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 0000000000..a75c8faea4 --- /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 0000000000..571b95af0e --- /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 0000000000..7805120ba5 --- /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 32926f1385..c726a11471 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 0000000000..3533adcf8e --- /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 f286ce23c1..5cf48d50ea 100644 --- a/apps/calendar/ajax/updatecalendar.php +++ b/apps/calendar/ajax/updatecalendar.php @@ -1,29 +1,18 @@ <?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']); @@ -31,4 +20,4 @@ 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 837c6d6b12..2dc01eab0f 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/info.xml b/apps/calendar/appinfo/info.xml index c846fc1eeb..6b1ecd2337 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 49fc963336..b581274398 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 06892e896b..5e19b88f55 100644 --- a/apps/calendar/css/style.css +++ b/apps/calendar/css/style.css @@ -1,22 +1,9 @@ -/************************************************* - * 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;} #datecontrol {text-align: center;} @@ -49,15 +36,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 +56,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;} +.calendar-colorpicker-color.active{background-image:url("../../../core/img/jquery-ui/ui-icons_222222_256x240.png");background-position:-62px -143px;} diff --git a/apps/calendar/export.php b/apps/calendar/export.php index f03a5d23e6..b3e5ecd683 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 0000000000..4682234944 --- /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'], $_POST['description']); + 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 c9fc9889d4..1e4d724b30 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 77a75c14b2..131325007a 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,18 +181,19 @@ 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(); @@ -251,7 +222,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 +248,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 +269,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 +300,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 +311,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 +366,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 +440,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 +470,54 @@ 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>'); + var size = 20; + + //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 + '; width: ' + size + 'px; height: ' + size + 'px;"></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 +539,7 @@ Calendar={ cancel:function(button, calendarid){ $(button).closest('tr').prev().show().next().remove(); }, - }, + },/* OneDay:{ forward:function(){ Calendar.Date.forward_day(); @@ -495,7 +548,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 +569,7 @@ Calendar={ return $(document.createElement('p')) .html(time + event['description']) }, - }, + },*/ OneWeek:{ forward:function(){ Calendar.Date.forward_week(); @@ -526,7 +579,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 +588,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 +635,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 +656,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 +743,7 @@ Calendar={ } return dates; }, - }, + },*/ OneMonth:{ forward:function(){ Calendar.Date.forward_month(); @@ -680,7 +753,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 +781,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 +852,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 +866,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 0000000000..6eafec8b10 --- /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 9087638985..6c00be06b3 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 fb3cd2aa28..0000000000 --- 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 0000000000..0c0b8604fb --- /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 0000000000..13affe320f --- /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 0000000000..46af5cb43a --- /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 80cb18cdd9..44bab2a5c3 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 0000000000..e2c26502ce --- /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 f20230fe17..2d2d1d377e 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 0000000000..c66638f2b4 --- /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 0000000000..c12d773a67 --- /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 0000000000..5cb95d0b35 --- /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 0000000000..dcb6799b04 --- /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 0000000000..82cdac133f --- /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 0000000000..625422a858 --- /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 0000000000..95e555bc85 --- /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 0000000000..3f7ebfe274 --- /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 0000000000..2201cc397a --- /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 0000000000..91db521043 --- /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 0000000000..75e8a715ea --- /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 0000000000..170344dca8 --- /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 0000000000..6702720495 --- /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 0000000000..55df4e21ba --- /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 0000000000..2b7dc5677a --- /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 571e3d695e..4549af8b3c 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. */ /* * diff --git a/apps/calendar/lib/hooks.php b/apps/calendar/lib/hooks.php index 5c446102b2..14f96bb5fe 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 52fa391f1f..0c3e497d4f 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 0206432781..b592280271 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 7635f33333..317bb17ddb 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 0081fb0806..65eb39cbfd 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 6993ad13c3..db0c71252b 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 a1a36505ee..c2c22913be 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,8 +18,8 @@ <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> @@ -41,7 +34,14 @@ <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 859828216b..ae969f2dc3 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 c63d709e26..8588b9168f 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 edccaaa222..0000000000 --- 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 aaa43c4950..0000000000 --- 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 0000000000..3749367437 --- /dev/null +++ b/apps/calendar/templates/part.import.php @@ -0,0 +1,75 @@ +<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> +<th><?php echo $l->t('Description') ?></th> +<td> +<textarea id="description"></textarea> +</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(); + var description = $("#description").val(); + $.post(OC.filePath('calendar', '', 'import.php'), {'import':'new', 'calname':calname, 'description':description, '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 122f8a9bf9..c6664d512d 100644 --- a/apps/calendar/templates/settings.php +++ b/apps/calendar/templates/settings.php @@ -1,36 +1,46 @@ <?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. + */ +OC_UTIL::addScript('', 'jquery.multiselect'); +OC_UTIL::addStyle('', 'jquery.multiselect'); ?> <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>'; + $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 e9f82f1b3e..ee95513732 100644 --- a/apps/contacts/ajax/addcard.php +++ b/apps/contacts/ajax/addcard.php @@ -27,14 +27,12 @@ $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(); } @@ -51,4 +49,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/addproperty.php b/apps/contacts/ajax/addproperty.php index 7df67e3d33..68c4f65fa5 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); +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 9e623120df..c13217ef2e 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 b31c643f59..a0a6b8c3ea 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 df2ae2e1c0..0a3a3c293a 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 19addd9122..0e76de61af 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 9a4e8eea26..18e0087247 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 dea8073a78..2f534f0fe2 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 75dbe01cfb..f87cd05359 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 51187d505b..6188f4773c 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 98416ead2f..fc7b3769c5 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 77c9dc91bf..d18a19c3ae 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 77b3c105de..df7c858b1a 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/index.php b/apps/contacts/index.php index 8013f19d31..7e8eb8e695 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 66ee677219..47e9bb10b1 100644 --- a/apps/contacts/js/interface.js +++ b/apps/contacts/js/interface.js @@ -34,7 +34,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); @@ -104,6 +104,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); diff --git a/apps/contacts/l10n/da.php b/apps/contacts/l10n/da.php new file mode 100644 index 0000000000..2ab382f714 --- /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 0000000000..04a7402442 --- /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 0000000000..7a57d6fc5d --- /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 1c9a8049f7..bff2897384 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,26 @@ 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); + } + /** * @brief Data structure of vCard * @param object $property diff --git a/apps/contacts/photo.php b/apps/contacts/photo.php index 1b955a8a84..5178fe7a07 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 0000000000..b88128823a --- /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/part.addcardform.php b/apps/contacts/templates/part.addcardform.php index e87c64507d..c7d668fae5 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 32affde952..885330e577 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 c6bedcdd91..254d54a4e8 100644 --- a/apps/contacts/templates/part.details.php +++ b/apps/contacts/templates/part.details.php @@ -27,9 +27,8 @@ <?php endif; ?> <?php endforeach; ?> </table> + <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> <?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 d0d2b773ef..3469f53b0d 100644 --- a/apps/contacts/templates/part.property.php +++ b/apps/contacts/templates/part.property.php @@ -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 52483ebf4b..69c789795e 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 0000000000..f5c37c5a04 --- /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 f3b5a67960..00b55c254d 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 33d8f04a60..0000000000 --- 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 e2e4ff944a..0000000000 --- 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 551bcc8780..0000000000 --- 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 685feb2fb8..0000000000 --- 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 5866e2d1c5..0000000000 --- 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 4fe6be47d8..0000000000 --- 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 1d41ea9666..0000000000 --- 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 2e1ba4bf36..0000000000 --- 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 91ee58beda..0000000000 --- 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 ece0a540d3..0000000000 --- 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 b5c04b838b..0000000000 --- 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 249af6cfa3..8d51c14652 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 8e0bac0b06..7ee8f0e57b 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 e672cf0240..6a2b45b3a7 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 b9230d257b..a19a85cfda 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 6da7afb659..21516c3d09 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 2fbb3300f6..abf847b448 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 a1b6c316cd..083f48e112 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 @@ -56,9 +57,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 diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js index 1bd1ac1075..aaffc3824e 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 0a11f438eb..721620dc92 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 7faf2cf4ba..d46ff818ac 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 209b414034..becfd5e35c 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 0000000000..44d7302851 --- /dev/null +++ b/apps/gallery/ajax/cover.php @@ -0,0 +1,62 @@ +<?php +require_once('../../../lib/base.php'); + +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; +} + +// Check if we are a user +if( !OC_User::isLoggedIn()){ + echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => 'You need to log in.'))); + exit(); +} +$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 0000000000..3a490bdc3b --- /dev/null +++ b/apps/gallery/ajax/createAlbum.php @@ -0,0 +1,14 @@ +<?php +require_once('../../../lib/base.php'); + +if( !OC_User::isLoggedIn()){ + echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => 'You need to log in.'))); + exit(); +} + +$stmt = OC_DB::prepare('INSERT INTO *PREFIX*gallery_albums ("uid_owner", "album_name") VALUES ("'.OC_User::getUser().'", "'.$_GET['album_name'].'")'); +$stmt->execute(array()); + +echo json_encode(array( 'status' => 'success', 'name' => $_GET['album_name'])); + +?> diff --git a/apps/gallery/ajax/getAlbums.php b/apps/gallery/ajax/getAlbums.php new file mode 100644 index 0000000000..2829dae81f --- /dev/null +++ b/apps/gallery/ajax/getAlbums.php @@ -0,0 +1,22 @@ +<?php +require_once('../../../lib/base.php'); + +if (!OC_User::IsLoggedIn()) { + echo json_encode(array('status' => 'error', 'message' => 'You need to log in')); + exit(); +} + +$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)); +} + +echo json_encode(array('status'=>'success', 'albums'=>$a)); + +?> diff --git a/apps/gallery/ajax/getCovers.php b/apps/gallery/ajax/getCovers.php new file mode 100644 index 0000000000..57737f2fdd --- /dev/null +++ b/apps/gallery/ajax/getCovers.php @@ -0,0 +1,66 @@ +<?php +require_once('../../../lib/base.php'); + +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); +} + +// Check if we are a user +if( !OC_User::isLoggedIn()){ + echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => 'You need to log in.'))); + exit(); +} +$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'); + +imagepng($targetImg); +imagedestroy($targetImg); +?> diff --git a/apps/gallery/ajax/scanForAlbums.php b/apps/gallery/ajax/scanForAlbums.php new file mode 100644 index 0000000000..a04ad62b1b --- /dev/null +++ b/apps/gallery/ajax/scanForAlbums.php @@ -0,0 +1,14 @@ +<?php + +require_once('../../../lib/base.php'); +require_once('../lib_scanner.php'); + +if (!OC_User::IsLoggedIn()) { + echo json_encode(array('status' => 'error', 'message' => 'You need to log in')); + exit(); +} + +echo json_encode(array( 'status' => 'success', 'albums' => OC_GALLERY_SCANNER::scan(''))); +//echo json_encode(array('status' => 'success', '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 0000000000..db428eeff3 --- /dev/null +++ b/apps/gallery/ajax/thumbnail.php @@ -0,0 +1,58 @@ +<?php +require_once('../../../lib/base.php'); + +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; +} + +// Check if we are a user +if( !OC_User::isLoggedIn()){ + echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => 'You need to log in.'))); + exit(); +} +$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 0000000000..5760bb149d --- /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::linkTo('', 'core/img/filetypes/image.png'), + '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 0000000000..fd55b3a6fb --- /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 0000000000..054ddb6f13 --- /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 0000000000..03b179138e --- /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 0000000000..c8d5892e55 --- /dev/null +++ b/apps/gallery/index.php @@ -0,0 +1,33 @@ +<?php +require_once('../../lib/base.php'); + +OC_Util::checkLoggedIn(); +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 0000000000..776feae32c --- /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 0000000000..7ab243eded --- /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 0000000000..5490c4a55a --- /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 0000000000..0e89e44876 --- /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 0000000000..ea2969e011 --- /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 3b4932728d..29f61a2207 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 ded1fd02bc..ff0923ca03 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 0d36217bd4..dd1a830a94 100644 --- a/apps/media/appinfo/app.php +++ b/apps/media/appinfo/app.php @@ -25,6 +25,7 @@ $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' )); diff --git a/apps/media/appinfo/info.xml b/apps/media/appinfo/info.xml index 044abade53..795c9a4dd7 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 59d10f74db..8575e6334a 100644 --- a/apps/media/css/music.css +++ b/apps/media/css/music.css @@ -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:13em; 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 8b13789179..c4a098543d 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 d38ec19807..0000000000 --- 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 <ahartemis*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 ddd56e5152..0000000000 --- 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 5d027b63b2..0000000000 --- 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)'; -echo ''; -echo ''; - -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 ''.$deletefilemessage.'
'; - } else { - echo ''; - } -} - - -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 'Cannot browse remote filesystems
'; - } else { - echo 'Browse: '.getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-8', $listdirectory).'
'; - } - - echo table_var_dump($ThisFileInfo); - $endtime = getmicrotime(); - echo 'File parsed in '.number_format($endtime - $starttime, 3).' seconds.
'; - -} 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
'; - echo 'Directory scanned in '.number_format($endtime - $starttime, 2).' seconds.
'; - flush(); - - $columnsintable = 14; - echo ''; - - echo ''; - $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 ''; - if ($filename == '..') { - echo ''; - } else { - echo ''; - } - echo ''; - } - } - - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - if (isset($_REQUEST['ShowMD5'])) { - echo ''; - echo ''; - echo ''; - } else { - echo ''; - } - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - - if (isset($DirectoryContents[$dirname]['known']) && is_array($DirectoryContents[$dirname]['known'])) { - uksort($DirectoryContents[$dirname]['known'], 'MoreNaturalSort'); - foreach ($DirectoryContents[$dirname]['known'] as $filename => $fileinfo) { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - if (isset($_REQUEST['ShowMD5'])) { - echo ''; - echo ''; - echo ''; - } else { - echo ''; - } - echo ''; - - echo ''; - - echo ''; - echo ''; - echo ''; - } - } - - if (isset($DirectoryContents[$dirname]['other']) && is_array($DirectoryContents[$dirname]['other'])) { - uksort($DirectoryContents[$dirname]['other'], 'MoreNaturalSort'); - foreach ($DirectoryContents[$dirname]['other'] as $filename => $fileinfo) { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; // Artist - echo ''; // Title - echo ''; // MD5_data - echo ''; // Tags - - //echo ''; // Warning/Error - echo ''; - - echo ''; // Edit - echo ''; - echo ''; - } - } - - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
Files in '.getid3_lib::iconv_fallback('ISO-8859-1', 'UTF-8', $currentfulldir).'
'; - echo '
'; - echo 'Parent directory: '; - echo ' '; - echo '
'.FixTextFields($filename).'
FilenameFile SizeFormatPlaytimeBitrateArtistTitleMD5 File (File) (disable)MD5 Data (File) (disable)MD5 Data (Source) (disable)MD5 Data (enable)TagsErrors & WarningsEditDelete
'.FixTextFields(getid3_lib::SafeStripSlashes($filename)).' '.number_format($fileinfo['filesize']).' '.NiceDisplayFiletypeFormat($fileinfo).' '.(isset($fileinfo['playtime_string']) ? $fileinfo['playtime_string'] : '-').' '.(isset($fileinfo['bitrate']) ? BitrateText($fileinfo['bitrate'] / 1000, 0, ((@$fileinfo['audio']['bitrate_mode'] == 'vbr') ? true : false)) : '-').' '.(isset($fileinfo['comments_html']['artist']) ? implode('
', $fileinfo['comments_html']['artist']) : '').'
 '.(isset($fileinfo['comments_html']['title']) ? implode('
', $fileinfo['comments_html']['title']) : '').'
'.(isset($fileinfo['md5_file']) ? $fileinfo['md5_file'] : ' ').''.(isset($fileinfo['md5_data']) ? $fileinfo['md5_data'] : ' ').''.(isset($fileinfo['md5_data_source']) ? $fileinfo['md5_data_source'] : ' ').'- '.@implode(', ', array_keys($fileinfo['tags'])).' '; - if (!empty($fileinfo['warning'])) { - $FilesWithWarnings++; - echo 'warning
'; - } - if (!empty($fileinfo['error'])) { - $FilesWithErrors++; - echo 'error
'; - } - echo '
 '; - switch (@$fileinfo['fileformat']) { - case 'mp3': - case 'mp2': - case 'mp1': - case 'flac': - case 'mpc': - case 'real': - echo 'edit tags'; - break; - case 'ogg': - switch (@$fileinfo['audio']['dataformat']) { - case 'vorbis': - echo 'edit tags'; - break; - } - break; - default: - break; - } - echo ' delete
'.$filename.' '.(isset($fileinfo['filesize']) ? number_format($fileinfo['filesize']) : '-').' '.NiceDisplayFiletypeFormat($fileinfo).' '.(isset($fileinfo['playtime_string']) ? $fileinfo['playtime_string'] : '-').' '.(isset($fileinfo['bitrate']) ? BitrateText($fileinfo['bitrate'] / 1000) : '-').'      '; - if (!empty($fileinfo['warning'])) { - $FilesWithWarnings++; - echo 'warning
'; - } - if (!empty($fileinfo['error'])) { - if ($fileinfo['error'][0] != 'unable to determine file format') { - $FilesWithErrors++; - echo 'error
'; - } - } - echo '
  delete
Average:'.number_format($TotalScannedFilesize / max($TotalScannedKnownFiles, 1)).' '.getid3_lib::PlaytimeString($TotalScannedPlaytime / max($TotalScannedPlaytimeFiles, 1)).''.BitrateText(round(($TotalScannedBitrate / 1000) / max($TotalScannedBitrateFiles, 1))).'
Identified Files:'.number_format($TotalScannedKnownFiles).'   Errors:'.number_format($FilesWithErrors).'
Unknown Files:'.number_format($TotalScannedUnknownFiles).'   Warnings:'.number_format($FilesWithWarnings).'
'; - echo '
Total:'.number_format($TotalScannedFilesize).' '.getid3_lib::PlaytimeString($TotalScannedPlaytime).' 
'; - } else { - echo 'ERROR: Could not open directory: '.$currentfulldir.'
'; - } -} -echo PoweredBygetID3(); -echo 'Running on PHP v'.phpversion(); -echo ''; -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 ''.number_format($bitrate, $decimals).' kbps'; -} - -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 ? '' : ''); - $returnstring .= ''; - foreach ($variable as $key => $value) { - $returnstring .= ''; - $returnstring .= ''; - } else { - $returnstring .= ''.table_var_dump($value, true).''; - } - } - $returnstring .= '
'.str_replace("\x00", ' ', $key).''.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 .= '
'; - $returnstring .= ($wrap_in_td ? '' : ''); - break; - - case 'boolean': - $returnstring .= ($wrap_in_td ? '' : '').($variable ? 'TRUE' : 'FALSE').($wrap_in_td ? '' : ''); - break; - - case 'integer': - $returnstring .= ($wrap_in_td ? '' : '').$variable.($wrap_in_td ? '' : ''); - break; - - case 'double': - case 'float': - $returnstring .= ($wrap_in_td ? '' : '').$variable.($wrap_in_td ? '' : ''); - break; - - case 'object': - case 'null': - $returnstring .= ($wrap_in_td ? '' : '').string_var_dump($variable).($wrap_in_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 ? '' : '').nl2br($returnstring).($wrap_in_td ? '' : ''); - break; - - default: - $imageinfo = array(); - $imagechunkcheck = getid3_lib::GetDataImageSize($variable, $imageinfo); - if (($imagechunkcheck[2] >= 1) && ($imagechunkcheck[2] <= 3)) { - $returnstring .= ($wrap_in_td ? '' : ''); - $returnstring .= ''; - $returnstring .= ''; - $returnstring .= ''; - $returnstring .= ''; - $returnstring .= '
type'.getid3_lib::ImageTypesLookup($imagechunkcheck[2]).'
width'.number_format($imagechunkcheck[0]).' px
height'.number_format($imagechunkcheck[1]).' px
size'.number_format(strlen($variable)).' bytes
'; - $returnstring .= ($wrap_in_td ? '' : ''); - } else { - $returnstring .= ($wrap_in_td ? '' : '').nl2br(htmlspecialchars(str_replace("\x00", ' ', $variable))).($wrap_in_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='

') { - return str_replace('', 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 acaaa0f3f2..0000000000 --- a/apps/media/getID3/demos/demo.cache.dbm.php +++ /dev/null @@ -1,29 +0,0 @@ - // -// 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 '
';
-var_dump($r);
-echo '
'; - -// 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 537b2f0ceb..0000000000 --- a/apps/media/getID3/demos/demo.cache.mysql.php +++ /dev/null @@ -1,29 +0,0 @@ - // -// 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 '
';
-var_dump($r);
-echo '
'; - -// 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 976884f92e..0000000000 --- a/apps/media/getID3/demos/demo.joinmp3.php +++ /dev/null @@ -1,96 +0,0 @@ - // -// 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.'"
'; - return false; - } - } - if (!is_writeable($FilenameOut)) { - echo 'Cannot write "'.$FilenameOut.'"
'; - 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 dd6dec6fe3..0000000000 --- a/apps/media/getID3/demos/demo.mimeonly.php +++ /dev/null @@ -1,53 +0,0 @@ - // -// 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 ''; - -if (!empty($_REQUEST['filename'])) { - - echo 'The file "'.$_REQUEST['filename'].'" has a MIME type of "'.GetMIMEtype($_REQUEST['filename']).'"'; - -} else { - - echo 'Usage: '.$_SERVER['PHP_SELF'].'?filename=filename.ext'; - -} - - -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; -} - -?> - - \ 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 2c9c1f2232..0000000000 --- a/apps/media/getID3/demos/demo.mp3header.php +++ /dev/null @@ -1,2890 +0,0 @@ -'; - foreach ($variable as $key => $value) { - $returnstring .= ''.str_replace(chr(0), ' ', $key).''; - $returnstring .= ''.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 .= ''; - } else { - $returnstring .= ''.table_var_dump($value).''; - } - } - $returnstring .= ''; - 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 .= ''; - $returnstring .= ''; - $returnstring .= ''; - $returnstring .= ''; - $returnstring .= '
type'.ImageTypesLookup($imagechunkcheck[2]).'
width'.number_format($imagechunkcheck[0]).' px
height'.number_format($imagechunkcheck[1]).' px
size'.number_format(strlen($variable)).' bytes
'; - } 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 ''.round($bitrate).' kbps'; - } -} - -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 - // 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 - // 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 '
'; -echo 'Enter 4 hex bytes of MPEG-audio header (ie FF FA 92 44)
'; -echo ''; -echo '
'; -echo '
'; - -echo '
'; -echo 'Generate a MPEG-audio 4-byte header from these values:
'; -echo ''; - -$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 ''; -} - -if (isset($_POST['bitrate'])) { - echo ''; -} -echo '
'.$name.':
Frame Length:'.(int) MPEGaudioFrameLength($_POST['bitrate'], $_POST['version'], $_POST['layer'], (($_POST['padding'] == 'Y') ? '1' : '0'), $_POST['frequency']).'
'; -echo '
'; -echo '
'; - - -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 Bitrate'); - } - - $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 Frequency'); - } - - $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 Mode Extension'); - } - - $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 Emphasis'); - } - - 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)).'
'; - -} - -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 // -// 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 c6b7c6b5ef..0000000000 --- a/apps/media/getID3/demos/demo.mysql.php +++ /dev/null @@ -1,2182 +0,0 @@ - // -// 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:
'.mysql_error().'
'); -} -if (!@mysql_select_db(GETID3_DB_DB)) { - die('Could not select database:
'.mysql_error().'
'); -} - -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 markstewardhotmail*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 ''.number_format($bitrate, $decimals).' kbps'; -} - -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 = 'Source and Destination filenames identical
FAILED to rename'; - } elseif (!file_exists($from)) { - $results = 'Source file does not exist
FAILED to rename'; - } elseif (file_exists($to) && (strtolower($from) !== strtolower($to))) { - $results = 'Destination file already exists
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 = 'Successfully renamed'; - } else { - $results = '
FAILED to rename'; - $success = false; - } - $results .= ' from:
'.$from.'
to:
'.$to.'

'; - 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 ''; - echo 'getID3() demo - /demo/mysql.php'; - -} - - -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(''.mysql_error().'
'.$SQLquery.''); - } - 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 'adding field `encoder_options`
'; - 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 'changing field `track` to VARCHAR(7)
'; - 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 '

WARNING! You should erase your database and rescan everything because the comment storing has been changed since the last version


'; - echo 'adding field `track_volume`
'; - 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 'adding field `encoder_options`, `alternate_name`, `parody`
'; - 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 'abort
'; - - echo 'Re-scanning all media files already in database that had errors and/or warnings in last scan
'; - - $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 'File missing: '.$row['filename'].'
'; - $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 'abort
'; - - echo 'Scanning all media files in '.str_replace('\\', '/', realpath(!empty($_REQUEST['scan']) ? $_REQUEST['scan'] : $_REQUEST['newscan'])).' (and subdirectories)
'; - - $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 '.number_format($DupesDeleted).' duplicate filenames
'; - } - - 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 ''.str_replace('\\', '/', $startingdir).'
'; - 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 'Failed to open directory "'.$startingdir.'"

'; - } - $DirectoriesScanned[] = $startingdir; - unset($DirectoriesToScan[$DirectoryKey]); - } - } - echo 'List of files to scan complete (added '.number_format(count($FilesInDir)).' files to scan)
'; - flush(); - } - - $FilesInDir = array_unique($FilesInDir); - sort($FilesInDir); - - $starttime = time(); - $rowcounter = 0; - $totaltoprocess = count($FilesInDir); - - foreach ($FilesInDir as $filename) { - set_time_limit(300); - - echo '
'.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 ' (unknown file type)'; - - } else { - - if (!empty($ThisFileInfo['error'])) { - echo ' (errors)'; - } elseif (!empty($ThisFileInfo['warning'])) { - echo ' (warnings)'; - } else { - echo ' (OK)'; - } - - $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 '
Done scanning!
'; - -} 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 0 / '.number_format(mysql_num_rows($result)).' files for track volume information:
'; - while ($row = mysql_fetch_array($result)) { - set_time_limit(30); - echo '. '; - 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 '
Scanned '.number_format($MissingTrackVolumeFilesScanned).' files with no track volume information.
'; - 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)
'; - -} 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 '
'.FixTextFields($row['filename']).' (duplicate)'; - $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 '.number_format($DupesDeleted).' duplicate filenames
'; - } - - $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 '
'.FixTextFields($row['filename']).' ('.$reason.')'; - 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 '
'.number_format($totalremoved).' of '.number_format($totalchecked).' files in database no longer exist, or have been altered since last scan. Removed from database.
'; - -} 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 'show all
'; - echo ''; - - $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 ''; - echo ''; - } - } - echo '
m3u'.FixTextFields($row['filename']).'
'; - - } 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 '.m3u version
'; - echo ''; - foreach ($EncodedBy as $key => $value) { - echo ''; - echo ''; - echo ''; - } - echo '
m3uEncoder OptionsEncoded By (ID3v2)
m3u'.$key.''; - arsort($value); - foreach ($value as $string => $count) { - echo ''; - echo ''; - } - echo '
'.number_format($count).' '.$string.'
'; - - } - -} 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 ''; - echo ''; - foreach ($BitrateDistribution as $Bitrate => $Count) { - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
BitrateCount
'.round($Bitrate / 1000).' kbps'.number_format($Count).'
'; - - -} 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 '.m3u version
'; - $EmptyGenreCounter = 0; - echo ''; - echo ''; - while ($row = mysql_fetch_array($result)) { - if (!in_array($row['fileformat'], $IgnoreNoTagFormats)) { - $EmptyGenreCounter++; - echo ''; - echo ''; - echo ''; - echo ''; - } - } - echo '
m3ufilename
m3u'.FixTextFields($row['filename']).'
'; - echo ''.number_format($EmptyGenreCounter).' 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 '.m3u version
'; - echo ''; - echo ''; - while ($row = mysql_fetch_array($result)) { - $NonEmptyCommentsCounter++; - echo ''; - echo ''; - echo ''; - if (strlen(trim($row['comment'])) > 0) { - echo ''; - } else { - echo ''; - } - echo ''; - } - echo '
m3ufilenamecomments
m3u'.FixTextFields($row['filename']).''.FixTextFields($row['comment']).'space
'; - echo ''.number_format($NonEmptyCommentsCounter).' 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 '.m3u version
'; - $TrackZeroCounter = 0; - echo ''; - echo ''; - while ($row = mysql_fetch_array($result)) { - if ((strlen($row['track']) > 0) && ($row['track'] < 1) || ($row['track'] > 99)) { - $TrackZeroCounter++; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - } - echo '
m3ufilenametrack
m3u'.FixTextFields($row['filename']).''.FixTextFields($row['track']).'
'; - echo ''.number_format($TrackZeroCounter).' 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 ''.number_format(mysql_num_rows($result)).' files with "feat." in the title (instead of the artist)

'; - echo '.m3u version
'; - echo ''; - echo ''; - while ($row = mysql_fetch_array($result)) { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
m3ufilenametitle
m3u'.FixTextFields($row['filename']).''.eregi_replace('(feat\. .*)', '\\1', FixTextFields($row['title'])).'
'; - - } - - -} 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 ''.number_format(mysql_num_rows($result)).' files with a track number, but no album

'; - echo '.m3u version
'; - echo ''; - echo ''; - while ($row = mysql_fetch_array($result)) { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
m3ufilenametrackalbum
m3u'.FixTextFields($row['filename']).''.FixTextFields($row['track']).''.FixTextFields($row['album']).'
'; - - } - - -} elseif (!empty($_REQUEST['synchronizetagsfrom']) && !empty($_REQUEST['filename'])) { - - echo 'Applying new tags from '.$_REQUEST['synchronizetagsfrom'].' in '.FixTextFields($_REQUEST['filename']).'
    '; - $errors = array(); - if (SynchronizeAllTags($_REQUEST['filename'], $_REQUEST['synchronizetagsfrom'], 'A12', $errors)) { - echo '
  • Sucessfully wrote tags
  • '; - } else { - echo '
  • Tag writing had errors:
    • '.implode('
    • ', $errors).'
  • '; - } - echo '
'; - - -} 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 'Auto-fix empty tags

'; - echo '
'; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - if ($TagsToCompare['id3v2']) { - echo ''; - } - if ($TagsToCompare['ape']) { - echo ''; - } - if ($TagsToCompare['lyrics3']) { - echo ''; - } - if ($TagsToCompare['id3v1']) { - echo ''; - } - echo ''; - - $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 ''; - 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 = ''; - $ThisLine .= ''; - $ThisLine .= ''; - $tagvalues = ''; - foreach ($FieldsToCompare as $fieldname) { - $tagvalues .= $fieldname.' = '.@implode(" \n", @$Comments['all'][$fieldname])." \n"; - } - $ThisLine .= ''; - 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__.'
'; -//echo '
';
-//var_dump($tagtype);
-//var_dump($fieldname);
-//echo '
';
-//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__.'
'; -//echo '
';
-//var_dump($tagtype);
-//var_dump($fieldname);
-//echo '
';
-//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__.'
'; -//echo '
';
-//var_dump($tagtype);
-//var_dump($fieldname);
-//echo '
';
-//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__.'
'; -//echo '
';
-//var_dump($tagtype);
-//var_dump($fieldname);
-//var_dump($Comments[$tagtype][$fieldname][0]);
-//var_dump($Comments['all'][$fieldname][0]);
-//echo '
';
-//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 .= '
'; - } - } - $ThisLine .= ''; - - if (!$FileOK) { - $NotOKfiles++; - - echo ''; - 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 ''; - } else { - echo ''; - } - echo ''; - echo ''; - } - - } else { - - echo $ThisLine; - - } - } - } - - echo '
ViewFilenameCombinedID3v2APELyrics3ID3v1
view'.FixTextFields($row['filename']).'all'; - } elseif ($SemiMatched[$tagtype]) { - $ThisLine .= ''; - } elseif ($Mismatched[$tagtype]) { - $ThisLine .= ''; - } else { - $ThisLine .= ''; - } - $ThisLine .= ''.$tagtype.''; - $ThisLine .= '
 '; - echo ''.FixTextFields($row['filename']).''; - echo ''; - echo '
'.$TagsToSynch.'

'; - echo ''; - echo 'Found '.number_format($NotOKfiles).' 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: (auto-fix)
'; - echo ''; - echo ''; - $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, ''.$ActualFilenameNoExt.'', $PatternFilenameNoExt); - } else { - $ShortestNameLength = min(strlen($ActualFilenameNoExt), strlen($PatternFilenameNoExt)); - for ($DifferenceOffset = 0; $DifferenceOffset < $ShortestNameLength; $DifferenceOffset++) { - if ($ActualFilenameNoExt{$DifferenceOffset} !== $PatternFilenameNoExt{$DifferenceOffset}) { - break; - } - } - $DifferenceBoldedName = ''.substr($PatternFilenameNoExt, 0, $DifferenceOffset).''.substr($PatternFilenameNoExt, $DifferenceOffset); - } - $DifferenceBoldedName .= (($actualExt == $patternExt) ? ''.$patternExt.'' : $patternExt); - - - echo ''; - echo ''; - echo ''; - echo ''; - - if (@$_REQUEST['autofix']) { - - $results = ''; - if (RenameFileFromTo($row['filename'], dirname($row['filename']).'/'.$PatternFilename, $results)) { - echo ''; - - - } else { - - echo ''; - - } - echo ''; - - $nonmatchingfilenames++; - } - } - echo '
viewWhyActual filename
(click to play/edit file)
Correct filename (based on tags)'.(!@$_REQUEST['autofix'] ? '
(click to rename file to this)' : '').'
view '.$NotMatchedReasons.''.FixTextFields($ActualFilename).''; - } else { - echo ''; - } - echo ''.$DifferenceBoldedName.''; - echo ''.$DifferenceBoldedName.'

'; - echo 'Found '.number_format($nonmatchingfilenames).' files that do not match naming pattern
'; - - -} 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 'Show all Encoder Options
'; - echo 'Files with Encoder Options '.$_REQUEST['showtagfiles'].':
'; - echo ''; - while ($row = mysql_fetch_array($result)) { - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
'.FixTextFields($row['filename']).''.$row['encoder_options'].'
'; - - } - - } 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:
'; - echo ''; - echo ''; - while ($row = mysql_fetch_array($result)) { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
Encoder OptionsCountM3U
'.$row['encoder_options'].''.number_format($row['num']).'m3u

'; - - } - -} 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:
'; - echo ''; - echo ''; - while ($row = mysql_fetch_array($result)) { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
TagsCountM3U
'.$row['tags'].''.number_format($row['num']).'m3u

'; - } - - 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 ''; - while ($row = mysql_fetch_array($result)) { - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
'.FixTextFields($row['filename']).''.$row['tags'].'
'; - - } - } - - -} 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 = ''; - $thisline .= ''.implode('
', $md5_data).''; - $thisline .= ''.implode('
', $tags).''; - $thisline .= ''.implode('
', $filenames).''; - $thisline .= ''; - - if (in_array($thisfileformat, $IgnoreNoTagFormats)) { - $OtherFormats .= $thisline; - } else { - $AVFormats .= $thisline; - } - } - echo 'Duplicated MD5_DATA (Audio/Video files):'; - echo $AVFormats.'

'; - echo 'Duplicated MD5_DATA (Other files):'; - echo $OtherFormats.'

'; - - -} 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: (Identical Mix/Version only)
'; - echo '(.m3u version)
'; - echo ''; - echo ''; - - 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[] = ''.BitrateText($row2['audio_bitrate'] / 1000).''; - } else { - $bitrates[] = BitrateText($row2['audio_bitrate'] / 1000); - } - $playtimes[] = getid3_lib::PlaytimeString($row2['playtime_seconds']); - } - - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - - echo ''; - - echo ''; - } - - } - echo '
 ArtistTitleVersion  Filename
'; - foreach ($filenames as $file) { - echo 'delete
'; - } - echo '
'; - foreach ($filenames as $file) { - echo 'play
'; - } - echo '
play all'.implode('
', $artists).'
'.implode('
', $titles).'
'.implode('
', $remixes).'
'.implode('
', $bitrates).'
'.implode('
', $playtimes).'
'; - foreach ($filenames as $file) { - echo ''; - } - echo '
'.dirname($file).'/'.basename($file).'
'; - echo number_format($uniquefiles).' files with '.number_format($uniquetitles).' unique aritst + title
'; - echo '
'; - -} 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 '.$fileformat.'.'.$audioformat.':'; - echo ''; - while ($row = mysql_fetch_array($result)) { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
fileaudiofilename
'.$row['fileformat'].''.$row['audio_dataformat'].''.FixTextFields($row['filename']).'

'; - -} 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 '
'.FixTextFields($row['filename']).'
'; - echo ''.$Album.' (track #'.$Track.')
'; - echo 'ID3v2: '.(RemoveID3v2($row['filename'], false) ? 'removed' : 'REMOVAL FAILED!').', '; - echo 'ID3v1: '.(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').'
'; - } else { - echo ' . '; - } - - } else { - - echo '
FAILED
'.FixTextFields($row['filename']).'
'; - - } - flush(); - } - - } else { - - echo ''.number_format(mysql_num_rows($result)).' files with [??]-format track numbers in album field:
'; - if (mysql_num_rows($result) > 0) { - echo '(.m3u version)
'; - echo 'Try to auto-fix
'; - echo ''; - while ($row = mysql_fetch_array($result)) { - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
'.$row['album'].''.FixTextFields($row['filename']).'
'; - } - echo '
'; - - } - -} 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 = ''; - $invalidextensionline .= ''; - 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 .= ''; - $invalidextensionline .= ''; - $invalidextensionline .= ''; - $invalidextensionline .= ''; - $invalidextensionline .= ''; - $invalidextensionline .= ''; - $invalidextensionline .= ''; - $invalidextensionline .= ''; - $invalidextensionline .= ''; - } - } - $invalidextensionline .= '
fileaudiovideotagsactualcorrectfilename
'.$row['fileformat'].''.$row['audio_dataformat'].''.$row['video_dataformat'].''.$row['tags'].''.$actualextension.''.implode('; ', $acceptableextensions).''.FixTextFields($row['filename']).'

'; - echo number_format($invalidextensionfiles).' files with incorrect filename extension:
'; - 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 ''; - echo ''; - while ($row = mysql_fetch_array($result)) { - $GenreID = getid3_id3v1::LookupGenreID($row['genre']); - if (is_numeric($GenreID)) { - echo ''; - } else { - echo ''; - } - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
CountGenrem3u
'.number_format($row['num']).''.str_replace("\t", '
', $row['genre']).'
.m3u

'; - - } 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 'All Genres
'; - echo ''; - echo ''; - while ($row = mysql_fetch_array($result)) { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
Genrem3uFilename
'.str_replace("\t", '
', $row['genre']).'
m3u'.FixTextFields($row['filename']).'

'; - - } - - - } - -} 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:'; - echo ''; - while ($row = mysql_fetch_array($result)) { - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
NumberFormat
'.number_format($row['num']).''.($row['fileformat'] ? $row['fileformat'] : 'unknown').(($row['audio_dataformat'] && ($row['audio_dataformat'] != $row['fileformat'])) ? '.'.$row['audio_dataformat'] : '').'

'; - -} 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:
'; - echo '(.m3u version)
'; - echo ''; - echo ''; - while ($row = mysql_fetch_array($result)) { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - } - echo '
FilenameErrorWarning
'.FixTextFields($row['filename']).''.(!empty($row['error']) ? '
  • '.str_replace("\t", '
  • ', FixTextFields($row['error'])).'
  • ' : ' ').'
    '.(!empty($row['warning']) ? '
  • '.str_replace("\t", '
  • ', FixTextFields($row['warning'])).'
  • ' : ' ').'

    '; - -} 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() ? 'fixed - ' : 'error - '); - } else { - echo 'No error? - '; - } - echo '['.++$rowcounter.' / '.$totaltofix.'] '; - echo FixTextFields($row['filename']).'
    '; - 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:'; - echo ''; - while ($row = mysql_fetch_array($result)) { - echo ''; - echo ''; - if ($row['vbr_method']) { - echo ''; - } else { - echo ''; - } - echo ''; - } - echo '
    CountVBR Method
    '.FixTextFields(number_format($row['num'])).''.FixTextFields($row['vbr_method']).'CBR
    '; - - } 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'].'":'; - while ($row = mysql_fetch_array($result)) { - echo ''; - echo ''; - } - echo '
    m3u'.FixTextFields($row['filename']).'
    '; - - } - echo '
    '; - -} 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)
    '; - echo '
    ';
    -	$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 '
    '; - echo '
    '; - -} - -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 '
    '; -echo 'Warning: Scanning a new directory will erase all previous entries in the database!
    '; -echo 'Directory: '; -echo ''; -echo '
    '; -echo '
    '; -echo 'Re-scanning a new directory will only add new, previously unscanned files into the list (and not erase the database).
    '; -echo 'Directory: '; -echo ''; -echo '

    '; -echo ''; - -$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 '
    Currently in the database:'; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '
    Total Files'.number_format($row['TotalFiles']).'
    Total Filesize'.number_format($row['TotalFilesize'] / 1048576).' MB
    Total Playtime'.number_format($row['TotalPlaytime'] / 3600, 1).' hours
    Average Filesize'.number_format($row['AvgFilesize'] / 1048576, 1).' MB
    Average Playtime'.getid3_lib::PlaytimeString($row['AvgPlaytime']).'
    Average Bitrate'.BitrateText($row['AvgBitrate'] / 1000, 1).'
    '; -} - -?> - - \ 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 db937f1e2d..0000000000 --- a/apps/media/getID3/demos/demo.simple.php +++ /dev/null @@ -1,53 +0,0 @@ - // -// 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 ''; -echo 'getID3() - /demo/demo.simple.php (sample script)'; -echo ''; -echo ''; - - -// 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 ''; -echo ''; -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 ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } -} - -?> - - \ 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 468984e39e..0000000000 --- a/apps/media/getID3/demos/demo.simple.write.php +++ /dev/null @@ -1,54 +0,0 @@ - // -// 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
    '; - if (!empty($tagwriter->warnings)) { - echo 'There were some warnings:
    '.implode('

    ', $tagwriter->warnings); - } -} else { - echo 'Failed to write tags!
    '.implode('

    ', $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 6f03b47838..0000000000 --- a/apps/media/getID3/demos/demo.write.php +++ /dev/null @@ -1,271 +0,0 @@ - // -// 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 'getID3() - Sample tag writer'; - -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)
    '; - - $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 'invalid image format (only GIF, JPEG, PNG)
    '; - } - } else { - echo 'cannot open '.$_FILES['userfile']['tmp_name'].'
    '; - } - } else { - echo '!is_uploaded_file('.$_FILES['userfile']['tmp_name'].')
    '; - } - } else { - echo 'WARNING: Can only embed images for ID3v2
    '; - } - } - - $tagwriter->tag_data = $TagData; - if ($tagwriter->WriteTags()) { - echo 'Successfully wrote tags
    '; - if (!empty($tagwriter->warnings)) { - echo 'There were some warnings:
    '.implode('

    ', $tagwriter->warnings).'
    '; - } - } else { - echo 'Failed to write tags!
    '.implode('

    ', $tagwriter->errors).'
    '; - } - - } else { - - echo 'WARNING: no tag formats selected for writing - nothing written'; - - } - echo '
    '; - -} - - -echo '

    Sample tag editor/writer

    '; -echo 'Browse current directory
    '; -if (!empty($Filename)) { - echo 'Start Over

    '; - echo '
    FilenameArtistTitleBitratePlaytime
    '.$ThisFileInfo['filenamepath'].''.(!empty($ThisFileInfo['comments_html']['artist']) ? implode('
    ', $ThisFileInfo['comments_html']['artist']) : ' ').'
    '.(!empty($ThisFileInfo['comments_html']['title']) ? implode('
    ', $ThisFileInfo['comments_html']['title']) : ' ').'
    '.(!empty($ThisFileInfo['audio']['bitrate']) ? round($ThisFileInfo['audio']['bitrate'] / 1000).' kbps' : ' ').''.(!empty($ThisFileInfo['playtime_string']) ? $ThisFileInfo['playtime_string'] : ' ').'
    '; - echo ''; - 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 ''; - echo ''; - echo ''; - echo ''; - - $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 ''; - - $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 ''; - - echo ''; - - echo ''; - - echo ''; - echo ''; - - } else { - - echo ''; - - } - echo '
    Filename: '.$Filename.'
    Title
    Artist
    Album
    Year
    Track of
    Genre
    Write Tags'; - foreach ($ValidTagTypes as $ValidTagType) { - echo ''.$ValidTagType.'
    '; - } - if (count($ValidTagTypes) > 1) { - echo '
    Remove non-selected tag formats when writing new tag
    '; - } - echo '
    Comment
    Picture
    (ID3v2 only)

    '; - echo '
    '; - echo '
    Error'.FixTextFields($Filename).' does not exist
    '; - -} - -?> - - \ 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 0694eff2ad..0000000000 --- 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 13783f0daf..0000000000 --- a/apps/media/getID3/demos/index.php +++ /dev/null @@ -1 +0,0 @@ -In this directory are a number of examples of how to use getID3() - if you don't know what to run, take a look at demo.browse.php \ 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 4ed5e361f5..9322cae4dd 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 29c9382df7..0000000000 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 16cf289299..0000000000 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 0dfd45b885..0000000000 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 fe724b45dd..419d4ae0bd 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 13eb0aff7d..29ba45919c 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;i0){ 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=$('>'); - 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=$('>'); + 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=$('v '); - 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=$('v '); + 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(''); - } - if(buttons.find('.play').length<=0) { - buttons.append(''); - } + buttons = parent.find('.buttons'); + if(buttons.find('.add').length<=0) { + buttons.prepend(''); + } 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')) - $('#playerPlaceholder').append($('
    ')).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 c04c579d1c..bf08220782 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=$(''); + var button=$(''); 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 f696b87bbd..3c022e9f8c 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 && index0){ @@ -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 cb7f24522a..57180b3be7 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.append(item.name); + li.attr('class', 'jp-playlist-' + i); var img=$(''); 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 0000000000..411ab0a895 --- /dev/null +++ b/apps/media/l10n/bg_BG.php @@ -0,0 +1,14 @@ + "Музика", +"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 0000000000..c516ca64f2 --- /dev/null +++ b/apps/media/l10n/et_EE.php @@ -0,0 +1,14 @@ + "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 0000000000..43cc47c81d --- /dev/null +++ b/apps/media/l10n/ms_MY.php @@ -0,0 +1,14 @@ + "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 0000000000..7440bf4301 --- /dev/null +++ b/apps/media/l10n/sr.php @@ -0,0 +1,14 @@ + "Музика", +"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 0000000000..fecdb0a5a7 --- /dev/null +++ b/apps/media/l10n/sr@latin.php @@ -0,0 +1,14 @@ + "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 b3a7f18f7b..f20fb2c6a5 100644 --- a/apps/media/l10n/sv.php +++ b/apps/media/l10n/sv.php @@ -1,6 +1,11 @@ "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 b3bd7b1618..87291958af 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(''); 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 273ea2494f..82c4afedd0 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 3086f84a93..7a666be8c2 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 c774c3c9fd..9bf9397b19 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 516ab74007..44a16793bf 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 0000000000..133440a9af --- /dev/null +++ b/apps/media/settings.php @@ -0,0 +1,6 @@ +fetchPage(); +?> diff --git a/apps/media/templates/music.php b/apps/media/templates/music.php index 9b40faa961..7764a315a8 100644 --- a/apps/media/templates/music.php +++ b/apps/media/templates/music.php @@ -1,4 +1,4 @@ -
    +
      -
      - - - -
      - -
      diff --git a/apps/media/templates/player.php b/apps/media/templates/player.php new file mode 100644 index 0000000000..295f33ab9e --- /dev/null +++ b/apps/media/templates/player.php @@ -0,0 +1,17 @@ +printPage(); + exit; +} +?> +Music +
      +
      + +
      \ 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 0000000000..da9346166e --- /dev/null +++ b/apps/media/templates/settings.php @@ -0,0 +1,7 @@ + +
      + Media
      + Ampache address: +
      +
      + diff --git a/apps/media/tomahawk.php b/apps/media/tomahawk.php index bf0c2c2a75..68401db67a 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 0000000000..ac1ecde508 --- /dev/null +++ b/apps/remoteStorage/appinfo/app.php @@ -0,0 +1,5 @@ + 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 db25657085..b4e1ac7d8a 100644 --- a/apps/unhosted/appinfo/database.xml +++ b/apps/remoteStorage/appinfo/database.xml @@ -43,7 +43,7 @@ 64 - a_app_unhostedweb_user + a_app_remotestorage_user true user diff --git a/apps/remoteStorage/appinfo/info.xml b/apps/remoteStorage/appinfo/info.xml new file mode 100644 index 0000000000..a20c6ff4cd --- /dev/null +++ b/apps/remoteStorage/appinfo/info.xml @@ -0,0 +1,10 @@ + + + remoteStorage + remoteStorage compatibility + Enables your users to use ownCloud as their remote storage for unhosted applications. + 0.1 + AGPL + Michiel de Jong + 2 + diff --git a/apps/unhosted/compat.php b/apps/remoteStorage/compat.php similarity index 81% rename from apps/unhosted/compat.php rename to apps/remoteStorage/compat.php index 5034d04de3..d383e87951 100644 --- a/apps/unhosted/compat.php +++ b/apps/remoteStorage/compat.php @@ -30,15 +30,16 @@ $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'); @@ -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 ' .'execute(array($user,$userAddress,$dataScope)); + $result=$query->execute(array($ownCloudUser,$userAddress,$dataScope)); if( PEAR::isError($result)) { $entry = 'DB Error: "'.$result->getMessage().'"
      '; $entry .= 'Offending command was: '.$result->getDebugInfo().'
      '; - 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().'"
      '; $entry .= 'Offending command was: '.$result->getDebugInfo().'
      '; - 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().'"
      '; $entry .= 'Offending command was: '.$result->getDebugInfo().'
      '; - 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().'"
      '; $entry .= 'Offending command was: '.$result->getDebugInfo().'
      '; - 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 84e0730453..0000000000 --- a/apps/unhosted/appinfo/app.php +++ /dev/null @@ -1,5 +0,0 @@ - 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 359620f457..0000000000 --- a/apps/unhosted/appinfo/info.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - unhosted - Unhosted Web - On websites that allow unhosted accounts, use your owncloud as the storage for your user data - 0.1 - AGPL - Michiel de Jong - 2 - diff --git a/apps/user_openid/appinfo/app.php b/apps/user_openid/appinfo/app.php index e8e9fd2296..546f9f4565 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 32525009d6..332d2199dd 100644 --- a/apps/user_openid/appinfo/info.xml +++ b/apps/user_openid/appinfo/info.xml @@ -7,4 +7,5 @@ AGPL Robin Appelman 2 - \ No newline at end of file + + diff --git a/apps/user_openid/phpmyid.php b/apps/user_openid/phpmyid.php index 24fab44ca7..5009fa410a 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 ) { '; - 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 52fa104734..3cbc38491c 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 d9af94dcaf..df050e908d 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 index 547c8e54d3..50257232ae 100644 --- a/apps/user_webfinger/activate.php +++ b/apps/user_webfinger/activate.php @@ -1,11 +1,4 @@ user_webfinger Webfinger - 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. + 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. 0.1 AGPL Michiel de Jong diff --git a/apps/user_webfinger/webfinger.php b/apps/user_webfinger/webfinger.php index 269bb4758e..afb5368968 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"?> - + diff --git a/config/config.sample.php b/config/config.sample.php index 5575340bc1..a40ce073bf 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -1,5 +1,7 @@ false, "dbtype" => "sqlite", diff --git a/core/ajax/grouplist.php b/core/ajax/grouplist.php index d0d10f7a84..cc15102bbc 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 adaf7dcb75..2e436f8d84 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 0485f51455..c8168eaf46 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 032948fc33..258bd50fca 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 fdc0f42125..0000000000 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 6348115e6b..0000000000 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 7680b5437c..0000000000 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 705a32ea35..0000000000 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 baabca6baa..0000000000 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 d9387e9507..0000000000 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 28b566c2c2..0000000000 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 d588297804..0000000000 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 2289d3c7d7..0000000000 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 54aff0cb97..0000000000 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 9d192c2f65..0000000000 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 09d1cdc856..0000000000 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 f13b206645..0000000000 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 0d20b73083..0000000000 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 42f8f992c7..0000000000 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 fe31070575..887e4b5e57 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 0000000000..156799f086 --- /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 22e5098d3b..ee42635176 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 e545d52141..84a024f95b 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+ */ @@ -39,20 +39,21 @@ input[type="text"]:hover, input[type="text"]:focus, input[type="password"]:hover 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 .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 +61,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,20 +98,23 @@ 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; } diff --git a/core/img/jquery-tipsy.gif b/core/img/jquery-tipsy.gif deleted file mode 100644 index eb7718dfc1..0000000000 Binary files a/core/img/jquery-tipsy.gif and /dev/null differ 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 48590ecb96..0000000000 --- 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"?"":"")+""),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;g0){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=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;ic)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(;j0)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(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?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
      a",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="
      ",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
      t
      ",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-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=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=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-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;i0?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;g0){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+~,(\[\\]+)+|[>+~])(\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;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=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 bc[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=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",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.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="

      ";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="
      ";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;g0)for(h=g;h0: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-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-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:]+)/,_=/",""],legend:[1,"
      ","
      "],thead:[1,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],col:[2,"","
      "],area:[1,"",""],_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
      ","
      "]),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>");try{for(var c=0,d=this.length;c1&&l0?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>");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]===""&&!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=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>/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("
      ").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=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
      ";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 0000000000..628ed9b316 --- /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"?"":"")+""),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;g0){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=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;ic)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(;j0)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(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?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
      a",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="
      ",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
      t
      ",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-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=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=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-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;i0?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;g0){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+~,(\[\\]+)+|[>+~])(\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;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=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 bc[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=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",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.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="

      ";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="
      ";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;g0)for(h=g;h0: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-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-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:]+)/,$=/",""],legend:[1,"
      ","
      "],thead:[1,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],col:[2,"","
      "],area:[1,"",""],_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
      ","
      "]),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>");try{for(var c=0,d=this.length;c1&&l0?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>");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]===""&&!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=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>/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("
      ").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=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
      ";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 0000000000..8f0ab9f7c5 --- /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 0000000000..46aab7ebf0 --- /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 = $('')) + .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 = $('')) + .html( o.noneSelectedText ) + .appendTo( button ), + + menu = (this.menu = $('
      ')) + .addClass('ui-multiselect-menu ui-widget ui-widget-content ui-corner-all') + .addClass( o.classes ) + .insertAfter( button ), + + header = (this.header = $('
      ')) + .addClass('ui-widget-header ui-corner-all ui-multiselect-header ui-helper-clearfix') + .appendTo( menu ), + + headerLinkContainer = (this.headerLinkContainer = $('
        ')) + .addClass('ui-helper-reset') + .html(function(){ + if( o.header === true ){ + return '
      • ' + o.checkAllText + '
      • ' + o.uncheckAllText + '
      • '; + } else if(typeof o.header === "string"){ + return '
      • ' + o.header + '
      • '; + } else { + return ''; + } + }) + .append('
      • ') + .appendTo( header ), + + checkboxContainer = (this.checkboxContainer = $('
          ')) + .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('
        • ' + optLabel + '
        • '); + 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('
        • '); + + // create the label + html.push('
        • '); + }); + + // 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 9d2b20d10f..9e814ca072 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=$(''); $('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 559cdf9b16..2638082404 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=$('
            ').hide().appendTo($(this).parent()); function createItem(item,checked){ var id='ms'+multiSelectId+'-option-'+item; var input=$(''); var 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 7c44362f05..b765d41ba3 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.attr('action', $(this).attr('action')); + form.attr('method', 'POST'); + + for(var i=0; i'); + 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 163510bdaf..6bf25e5598 100644 --- a/core/l10n/bg_BG.php +++ b/core/l10n/bg_BG.php @@ -1,11 +1,36 @@ "обклакът не намерен", +"Personal" => "Лични", +"Users" => "Потребители", +"Apps" => "Програми", +"Admin" => "Админ", +"Help" => "Помощ", +"Cloud not found" => "облакът не намерен", +"Create an admin account" => "Създаване на админ профил", +"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 d5020abbd5..3ecd041ad0 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 5deaa15cdf..5c1ca0dc21 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 0cdb99e0a6..0b5a0e13ce 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 91daff8a86..c75227f8aa 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 e58f0fa821..e997a17002 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 0000000000..84d05d17ba --- /dev/null +++ b/core/l10n/et_EE.php @@ -0,0 +1,36 @@ + "isiklik", +"Users" => "Kasutajad", +"Apps" => "Programmid", +"Admin" => "Admin", +"Help" => "Abiinfo", +"Cloud not found" => "Pilve ei leitud", +"Create an admin account" => "Loo admini konto", +"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 3f668f786d..15e7846efb 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 221e0cb13e..56221fafb9 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 4391b53fc5..1d743fa87e 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 705e44b5c5..40bd86d6a3 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 0000000000..e7551a30bb --- /dev/null +++ b/core/l10n/ms_MY.php @@ -0,0 +1,36 @@ + "Peribadi", +"Users" => "Pengguna", +"Apps" => "Aplikasi", +"Admin" => "Admin", +"Help" => "Bantuan", +"Cloud not found" => "Awan tidak dijumpai", +"Create an admin account" => "buat akaun admin", +"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 74a5182be4..98ad267ff5 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 49bf7ab727..b4d9fbe924 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 6fa33e65b8..229d60f65c 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 1ead055905..8440c44d1d 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 admin account" => "Crează un cont de administrator", @@ -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 110a7495af..45f0f4aef9 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 0000000000..0fd43c7b0a --- /dev/null +++ b/core/l10n/sr.php @@ -0,0 +1,36 @@ + "Лична", +"Users" => "Корисници", +"Apps" => "Програми", +"Admin" => "Аднинистрација", +"Help" => "Помоћ", +"Cloud not found" => "Облак није нађен", +"Create an admin account" => "Направи административни налог", +"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 0000000000..f8565f6ee4 --- /dev/null +++ b/core/l10n/sr@latin.php @@ -0,0 +1,36 @@ + "Lična", +"Users" => "Korisnici", +"Apps" => "Programi", +"Admin" => "Adninistracija", +"Help" => "Pomoć", +"Cloud not found" => "Oblak nije nađen", +"Create an admin account" => "Napravi administrativni nalog", +"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 3475d81f94..d7e1c24037 100644 --- a/core/l10n/sv.php +++ b/core/l10n/sv.php @@ -1,6 +1,8 @@ "Personlig", "Users" => "Användare", "Apps" => "Program", +"Admin" => "Admin", "Help" => "Hjälp", "Cloud not found" => "Hittade inget moln", "Create an admin account" => "Skapa ett administratörskonto", @@ -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 8f1b8d4f8a..4c9f197346 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 0000000000..de0d393ec7 --- /dev/null +++ b/core/lostpassword/index.php @@ -0,0 +1,32 @@ +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 0000000000..1c78d72094 --- /dev/null +++ b/core/lostpassword/resetpassword.php @@ -0,0 +1,27 @@ + 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 0000000000..d146d8e4c3 --- /dev/null +++ b/core/lostpassword/templates/email.php @@ -0,0 +1 @@ +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 67e34164d0..4b871963b8 100644 --- a/core/templates/lostpassword.php +++ b/core/lostpassword/templates/lostpassword.php @@ -1,4 +1,4 @@ - +
            t('You will receive a link to reset your password via Email.'); ?> @@ -7,8 +7,11 @@ t('Login failed!'); ?> - +

            + + +

            - \ No newline at end of file + diff --git a/core/lostpassword/templates/resetpassword.php b/core/lostpassword/templates/resetpassword.php new file mode 100644 index 0000000000..56257de7f1 --- /dev/null +++ b/core/lostpassword/templates/resetpassword.php @@ -0,0 +1,14 @@ +
            +
            + +

            t('Your password was reset'); ?>

            +

            t('To login page'); ?>

            + +

            + + +

            + + +
            +
            diff --git a/core/templates/installation.php b/core/templates/installation.php index 09f9ad8c35..70a545d66c 100644 --- a/core/templates/installation.php +++ b/core/templates/installation.php @@ -18,21 +18,35 @@
            t( 'Create an admin account' ); ?> - - +

            + + +

            +

            + + +

            - + +
            + t( 'Advanced' ); ?> ▾ +
            +
            + +
            +
            +
            t( 'Configure the database' ); ?>
            - +

            SQLite t( 'will be used' ); ?>.

            - /> + /> @@ -43,7 +57,7 @@

            MySQL t( 'will be used' ); ?>.

            - /> + /> @@ -54,27 +68,32 @@ - /> + />
            - - - +

            + + +

            +

            + + +

            +

            + + +

            - -
            - - t( 'Advanced' ); ?> ▾ - -
            - - +

            + + +

            - +
            diff --git a/core/templates/layout.guest.php b/core/templates/layout.guest.php index 6f40619f5f..96f3d2662f 100644 --- a/core/templates/layout.guest.php +++ b/core/templates/layout.guest.php @@ -8,7 +8,7 @@ @@ -32,6 +32,6 @@
      -

      ownCloud t( 'gives you freedom and control over your own data' ); ?>

      +

      ownCloud: t( 'web services under your control' ); ?>

      diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index 90b1925929..f793275f2c 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -8,7 +8,7 @@ diff --git a/core/templates/login.php b/core/templates/login.php index 717f6bcabd..6c0a7a1222 100644 --- a/core/templates/login.php +++ b/core/templates/login.php @@ -1,17 +1,18 @@
      + '; } ?> - t('Lost your password?'); ?> + t('Lost your password?'); ?> - - - - - - - - - - +

      + + autocomplete="off" required /> +

      +

      + + /> +

      + +
      diff --git a/core/templates/resetpassword.php b/core/templates/resetpassword.php deleted file mode 100644 index 2f43a93cfb..0000000000 --- a/core/templates/resetpassword.php +++ /dev/null @@ -1,10 +0,0 @@ -
      -
      - - t('Your password was reset'); ?> - - - - -
      -
      diff --git a/files/admin.php b/files/admin.php index db47bc7c03..861b6037f3 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 183ee86c78..8d7a5b482b 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 782db215df..48df5862db 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 4c756f9b19..198069f3fa 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 547bc91fb0..8a414827e1 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/move.php b/files/ajax/move.php index 4224cbce6d..8a56a01548 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 610418583b..43d87461fc 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 516077f6fd..87ffbc3ada 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 93d06611a0..8e1d2aa1ec 100644 --- a/files/ajax/timezone.php +++ b/files/ajax/timezone.php @@ -1,4 +1,6 @@ \ No newline at end of file +?> diff --git a/files/ajax/upload.php b/files/ajax/upload.php index c642b0ded1..041ec0c92e 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 27ead667dc..1766d03d96 100644 --- a/files/css/files.css +++ b/files/css/files.css @@ -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 ccd3eb43d8..c8a2692d01 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 3d62c3385f..aa081d4880 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 4ff8562fef..0089c235eb 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 ae9e7977c9..6609222079 100644 --- a/files/js/filelist.js +++ b/files/js/filelist.js @@ -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+=''+simpleSize+''; - html+=''+relative_modified_date(lastModified.getTime() / 1000)+''; + html+=''+relative_modified_date(lastModified.getTime() / 1000)+''; html+=''; 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+=''+simpleSize+''; - html+=''+relative_modified_date(lastModified.getTime() / 1000)+''; + html+=''+relative_modified_date(lastModified.getTime() / 1000)+''; html+=''; FileList.insertElement(name,'dir',$(html)); diff --git a/files/js/files.js b/files/js/files.js index 7b37837d9c..9342642b4f 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$('#max_upload').val()){ $( "#uploadsize-message" ).dialog({ @@ -192,13 +194,20 @@ $(document).ready(function() { }); form.submit(); var date=new Date(); - for(var i=0;i0){ - var size=files[i].size; - }else{ - var size=t('files','Pending'); + if(files){ + for(var i=0;i0){ + 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 "Файлове", +"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 14ab8b70a8..8515ab35f2 100644 --- a/files/l10n/ca.php +++ b/files/l10n/ca.php @@ -1,9 +1,9 @@ "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 7bbcc6f8c2..bc909a9233 100644 --- a/files/l10n/da.php +++ b/files/l10n/da.php @@ -1,9 +1,9 @@ "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 ade5a04950..0259dd02e8 100644 --- a/files/l10n/de.php +++ b/files/l10n/de.php @@ -1,9 +1,9 @@ "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 3537419e24..14b95e69ca 100644 --- a/files/l10n/el.php +++ b/files/l10n/el.php @@ -1,9 +1,9 @@ "Αρχεία", "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 acb9d8c708..28dc17af76 100644 --- a/files/l10n/es.php +++ b/files/l10n/es.php @@ -1,9 +1,9 @@ "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 0000000000..29c44dac10 --- /dev/null +++ b/files/l10n/et_EE.php @@ -0,0 +1,14 @@ + "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 ccaf9a3867..fa58f073d6 100644 --- a/files/l10n/fr.php +++ b/files/l10n/fr.php @@ -1,9 +1,9 @@ "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 28b298f289..feb5c6d863 100644 --- a/files/l10n/id.php +++ b/files/l10n/id.php @@ -1,9 +1,9 @@ "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 c83e223eb9..4c958924ce 100644 --- a/files/l10n/it.php +++ b/files/l10n/it.php @@ -1,9 +1,9 @@ "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 0000000000..3b654cccda --- /dev/null +++ b/files/l10n/ms_MY.php @@ -0,0 +1,14 @@ + "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 5ad0548771..c474d9a4ca 100644 --- a/files/l10n/nl.php +++ b/files/l10n/nl.php @@ -1,14 +1,14 @@ "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 0000000000..6cd60267fc --- /dev/null +++ b/files/l10n/pl.php @@ -0,0 +1,14 @@ + "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 dbafd69564..efaefe5165 100644 --- a/files/l10n/pt_BR.php +++ b/files/l10n/pt_BR.php @@ -1,9 +1,9 @@ "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 0000000000..445387ffa2 --- /dev/null +++ b/files/l10n/sr.php @@ -0,0 +1,14 @@ + "Фајлови", +"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 0000000000..3cc0ee0f15 --- /dev/null +++ b/files/l10n/sr@latin.php @@ -0,0 +1,14 @@ + "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 122905c950..dd1ac47936 100644 --- a/files/l10n/sv.php +++ b/files/l10n/sv.php @@ -1,9 +1,9 @@ "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 2bbcb2acd3..c47eb13009 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 4e105811f0..e2e9dc0300 100644 --- a/files/templates/index.php +++ b/files/templates/index.php @@ -1,5 +1,6 @@
      +
      @@ -19,23 +20,30 @@
      +
      -
      >t('Nothing in here. Upload something!')?>
      + +
      t('Nothing in here. Upload something!')?>
      + - + diff --git a/files/templates/part.list.php b/files/templates/part.list.php index 5995976f73..6bf5efe2fb 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; ?> '> + + + + + + +
      - + t( 'Name' ); ?> - Download - + Download" /> + t( 'Size' ); ?>t( 'Modified' ); ?><?php echo $l->t('Delete')?>t( 'Modified' ); ?><?php echo $l->t('Delete')?>" />
      - - + + diff --git a/files/webdav.php b/files/webdav.php index b1d242b2cc..6fae33a8f7 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 52a00465f2..2e55827a62 100644 --- a/index.php +++ b/index.php @@ -25,23 +25,17 @@ $RUNTIME_NOAPPS = TRUE; //no apps, yet require_once('lib/base.php'); -OC_Util::addScript('setup'); - +// Setup required : $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) { +if($not_installed) { + 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,77 +44,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(); - } -} - -// 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"])){ - OC_User::setUsernameInCookie($_POST["user"]); - } - 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)); - } - } -} - -// 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)); - } else { - OC_Template::printGuestPage("", "lostpassword", array("error" => true, "requested" => false)); - } - } 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_Util::redirectToDefaultPage(); } } // 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)); - } -} + $error = false; -?> \ No newline at end of file + // 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"); + } + // 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(); + } + else { + OC_User::unsetMagicInCookie(); + } + } + + // 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 { + $error = true; + } + } + + OC_Template::printGuestPage('', 'login', array('error' => $error, 'redirect' => isset($_REQUEST['redirect_url'])?$_REQUEST['redirect_url']:'' )); +} diff --git a/l10n/bg_BG/calendar.po b/l10n/bg_BG/calendar.po new file mode 100644 index 0000000000..7369aa6835 --- /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 , 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 \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 0000000000..4b6ca8fc51 --- /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 \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 8a9375d4b6..f23044c987 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 , 2011. +# Translators: +# , 2011. # Jan-Christoph Borchardt , 2011. +# Stefan Ilivanov , 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 \n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-06 19:20+0000\n" +"Last-Translator: adin \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 admin account" -msgstr "" +msgstr "Създаване на админ профил" #: 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 dbdf61722b..475f6dc3fa 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 , 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 \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 \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" +#: 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 "" +msgstr "Файлове" #: templates/admin.php:5 msgid "Maximum upload size" -msgstr "" +msgstr "Макс. размер за качване" -#: templates/part.list.php:1 -msgid "Nothing in here. Upload something!" -msgstr "" - -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" -msgstr "" +msgstr "Качване" -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" -msgstr "" - -#: templates/index.php:29 -msgid "Name" -msgstr "" +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 "" - -#: templates/index.php:36 -msgid "Modified" -msgstr "" - -#: templates/index.php:36 -msgid "Delete" -msgstr "" - -#: templates/index.php:44 -msgid "Upload too large" -msgstr "" +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/bg_BG/media.po b/l10n/bg_BG/media.po index 3f35e23fb8..e8fa24bbe5 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 , 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 \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 \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 7a36a21518..9f23a84787 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: +# , 2011. # Stefan Ilivanov , 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 \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 \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 0000000000..f535d8d117 --- /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: +# , 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 \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 0000000000..a9a23483bc --- /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 \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 d4fd3c4e41..cfbd4678f9 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: # , 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 \n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-05 13:54+0000\n" +"Last-Translator: rogerc \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 9551131e02..faf3ca5063 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: # , 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 \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 \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 0000000000..071b0bde71 --- /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 \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 0000000000..76af9f7e5c --- /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 \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 1969c666ba..6dc49c6a5d 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 , 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 \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 \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 0000000000..f78c8d1a81 --- /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: +# , 2011. +# Pascal d'Hermilly , 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 \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 0000000000..c65bf62822 --- /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 , 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 \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 18abc6b98f..90f79622ab 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: +# , 2011. # Pascal d'Hermilly , 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 \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 \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 e011eb0eb2..ac9da46eef 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 , 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 \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 \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 0000000000..a75ca864a1 --- /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 , 2011. +# Jan-Christoph Borchardt , 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 \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 0000000000..75f737b013 --- /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 , 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 \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 797a237043..893b8acc4a 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: +# , 2011. # , 2011. # Jan-Christoph Borchardt , 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 \n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-07 22:59+0000\n" +"Last-Translator: infinity8 \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 870b38d767..b0d31fb286 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 , 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 \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 \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 0000000000..15e4e959f3 --- /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 , 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 \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 0000000000..bdd775c8ba --- /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 \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 9d4804387a..f7d9f56555 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: # , 2011. # Petros Kyladitis , 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 \n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-07 09:13+0000\n" +"Last-Translator: multipetros \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 86f5a4e206..da78a25356 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 , 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 \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 \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 0000000000..6b98beb81a --- /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: +# , 2011. +# , 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 \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 0000000000..08f4ae2910 --- /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 \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 97bbbb520e..2fe3fcaa78 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. # -# , 2011. +# Translators: # , 2011. +# , 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 \n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-04 17:01+0000\n" +"Last-Translator: xsergiolpx \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 763fd3ae75..2c2bed5cdc 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: # , 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 \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 \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 0000000000..8f1f95b962 --- /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 , 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 \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 0000000000..119d01b09f --- /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 \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 0000000000..02b3782f22 --- /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 , 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 \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 admin account" +msgstr "Loo admini konto" + +#: 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 0000000000..92f9fa8d85 --- /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 , 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 \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 0000000000..7d40f8a4ff --- /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 , 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 \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 0000000000..3fad92d947 --- /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 , 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 \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 0000000000..3c961b669c --- /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: +# , 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 \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 0000000000..1a7dea24d8 --- /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 \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 a24c0688fc..b1e286ce6e 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: # , 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 \n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-05 15:01+0000\n" +"Last-Translator: bibzor \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 c75745d8bd..b898f18703 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: # , 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 \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 \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 0000000000..56e64399dd --- /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 , 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 \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 0000000000..3a6360c599 --- /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 \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 b0aec1919e..d19793d98a 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 , 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 \n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-05 01:19+0000\n" +"Last-Translator: radifar \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 c3fcfc3536..8b116d0525 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 , 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 \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 \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 0000000000..fab6060c48 --- /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: +# , 2011. +# Francesco Apruzzese , 2011. +# , 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 \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 0000000000..3f8e3bd169 --- /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 , 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 \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 5551ee636b..cd84040580 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. # -# , 2011. +# Translators: # , 2011. +# Francesco Apruzzese , 2011. +# , 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 \n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-23 08:17+0000\n" +"Last-Translator: OpenCode \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 2210317cc3..ee66302f62 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: # , 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 \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 \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 0000000000..9aea18b69a --- /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: +# , 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 \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 0000000000..63d22e6f7c --- /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 \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 476e57f8bb..9e0db1c821 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: # , 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 \n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-17 14:32+0000\n" +"Last-Translator: sim0n \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 e0b8b1c4bc..795847eb7a 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: # , 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 \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 \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 c0c6183555..3f8ef7ff30 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: # , 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 \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 \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 0000000000..24fa26eeda --- /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: +# , 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 \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 0000000000..59b737d366 --- /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 \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 0000000000..fdd7e66e3a --- /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: +# , 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 \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 admin account" +msgstr "buat akaun admin" + +#: 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 0000000000..2e340c0169 --- /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: +# , 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 \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 0000000000..f6c41264bc --- /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: +# , 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 \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 0000000000..dda63fafd8 --- /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: +# , 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 \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 0000000000..b80bf9cbb7 --- /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: +# , 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 \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 0000000000..430819ce1c --- /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 \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 9ef6153604..c3bfd2ffbf 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: # , 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 \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 \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 0000000000..8688a7d55f --- /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: +# , 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 \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 0000000000..48de047d7a --- /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 \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 37d7bd57e4..0a296a3685 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. # -# , 2011. +# Translators: +# , 2011. # , 2011. +# , 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 \n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-15 09:12+0000\n" +"Last-Translator: isama \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 8591e5d784..67178beb96 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: # , 2011. +# , 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 \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 \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" +msgstr "Maximale bestandsgrootte voor uploads" -#: templates/part.list.php:1 -msgid "Nothing in here. Upload something!" -msgstr "Er bevind zich hier niks, upload een bestand." - -#: 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 0000000000..d1010cebe4 --- /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 , 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 \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 0000000000..a8793db483 --- /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 \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 63dfc9651e..4883af328b 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 , 2011. -# , 2011. # Marcin Małecki , 2011. # Marcin Małecki , 2011. +# , 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 \n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-05 09:18+0000\n" +"Last-Translator: mosslar \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 3856765cf6..f7bf94df14 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: +# , 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 \n" -"Language-Team: LANGUAGE \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 \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/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 "" +msgstr "Pliki" #: templates/admin.php:5 msgid "Maximum upload size" -msgstr "" +msgstr "Maksymalna wielkość przesyłanego pliku" -#: templates/part.list.php:1 -msgid "Nothing in here. Upload something!" -msgstr "" - -#: templates/index.php:9 +#: templates/index.php:10 msgid "Upload" -msgstr "" +msgstr "Prześlij" -#: templates/index.php:16 +#: templates/index.php:17 msgid "New Folder" -msgstr "" - -#: templates/index.php:29 -msgid "Name" -msgstr "" +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 "" - -#: templates/index.php:36 -msgid "Modified" -msgstr "" - -#: templates/index.php:36 -msgid "Delete" -msgstr "" - -#: templates/index.php:44 -msgid "Upload too large" -msgstr "" +msgstr "Wielkość" #: templates/index.php:46 +msgid "Modified" +msgstr "Zmodyfikowano" + +#: templates/index.php:46 +msgid "Delete" +msgstr "Skasuj" + +#: templates/index.php:54 +msgid "Upload too large" +msgstr "Przesyłany plik jest za duży" + +#: 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 0000000000..12e2e31f03 --- /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 , 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 \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 0000000000..4b44d17178 --- /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 \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 c5a0595d5a..4fbf39e1ff 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 , 2011. +# Translators: # , 2011. +# Van Der Fran , 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 \n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-06 12:04+0000\n" +"Last-Translator: vanderland \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 865b3eaeb9..e4fba97298 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 , 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 \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 \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 624078ef16..987459779e 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 , 2011. +# Translators: # , 2011. +# Van Der Fran , 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 \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 \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 0000000000..b3ee449d89 --- /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 \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 0000000000..fcc5bb2f7e --- /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 \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 0000000000..8c79bfcd9c --- /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 \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 admin account" +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 0000000000..b41320ef45 --- /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 \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 0000000000..ae7c1aba23 --- /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 \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 0000000000..ba8649456a --- /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 \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 0000000000..e87d6c47a9 --- /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 , 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 \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 0000000000..95b3d705a3 --- /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 \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 d573959535..df95994f46 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 , 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 \n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-05 11:11+0000\n" +"Last-Translator: rawbeef64 \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 132e4963af..00676c5fca 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 , 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 \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 \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 0000000000..f2879ad150 --- /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: +# , 2011. +# , 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 \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 0000000000..d571caba89 --- /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 \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 14e1e60280..49a8891db3 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: +# , 2011. # , 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 \n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-04 17:42+0000\n" +"Last-Translator: jekader \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 0489118428..2345bd74ea 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: # , 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 \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 \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 0000000000..31a841e957 --- /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ć , 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 \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 0000000000..780af00702 --- /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 \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 0000000000..77abd79898 --- /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ć , 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 \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 admin account" +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/sr/files.po b/l10n/sr/files.po new file mode 100644 index 0000000000..778a30135e --- /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ć , 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 \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 0000000000..aaab3c163d --- /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ć , 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 \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 0000000000..a81b25b947 --- /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ć , 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 \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 0000000000..30f68f4e4d --- /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ć , 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 \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 0000000000..3066a8fc09 --- /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 \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 0000000000..33bd96a4c3 --- /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ć , 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 \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 admin account" +msgstr "Napravi administrativni nalog" + +#: 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 0000000000..f9af37cbad --- /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ć , 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 \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 0000000000..a647feac32 --- /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ć , 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 \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 0000000000..cb8b76399c --- /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ć , 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 \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 0000000000..db5536fcbc --- /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 \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 0000000000..f492fa61d7 --- /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 \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 85c6092cf3..0870f7efb7 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: # , 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 \n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-12 07:50+0000\n" +"Last-Translator: HakanS \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 d9ca9ae2ca..64566d0b29 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 \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 \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 7eea58d1b7..9c01948ed2 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 \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 \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 4507424b33..4ffc833e86 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: # , 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 \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 \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 83af928bf4..66cc90a4bf 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 \n" "Language-Team: LANGUAGE \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 0000000000..b0426f2bb5 --- /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 , 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 \n" +"Language-Team: LANGUAGE \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 4dd47a6ad7..98b310f2d1 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 \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files.pot b/l10n/templates/files.pot index 506824425f..5b57ccec9a 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 \n" "Language-Team: LANGUAGE \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 a3f3bde6fb..0a2757a306 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 \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/settings.pot b/l10n/templates/settings.pot index 21a744f1d8..b144431915 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 \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/zh_CN/calendar.po b/l10n/zh_CN/calendar.po new file mode 100644 index 0000000000..7e2d49b529 --- /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: +# , 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 \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 0000000000..1fd7ecb964 --- /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 \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 3276af7ed1..1d6281a1f5 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: # , 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 \n" +"POT-Creation-Date: 2011-09-23 18:17+0200\n" +"PO-Revision-Date: 2011-09-04 17:07+0000\n" +"Last-Translator: csslayer \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 fad80327c2..4a30d9d0c1 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: # , 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 \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 \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 4e420b5d0b..eabbb72b3c 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 ccf6bb5368..a41aeed485 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 61ea081c6f..cd4a7293e4 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' ); } } @@ -285,8 +283,7 @@ class OC_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); diff --git a/lib/appconfig.php b/lib/appconfig.php index 392782b258..f43ef14173 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 dc3ed4129c..0156febe23 100644 --- a/lib/base.php +++ b/lib/base.php @@ -65,50 +65,109 @@ 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'; + } + } + + public static function init(){ + // register autoloader + 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','&'); + + // 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)); + + if(OC::$WEBROOT!='' and OC::$WEBROOT[0]!=='/'){ + OC::$WEBROOT='/'.OC::$WEBROOT; + } + + // 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); + + // 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; + } + + // 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" )); + + // Load Apps + // This includes plugins for users and filesystems as well + global $RUNTIME_NOAPPS; + if(!$RUNTIME_NOAPPS ){ + OC_App::loadApps(); + } + + // 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(); + } + + // 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'); } } -// 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; - -// 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); - -//Some libs we really depend on -require_once('Sabre/autoload.php'); - // define runtime variables - unless this already has been done if( !isset( $RUNTIME_NOSETUPFS )){ $RUNTIME_NOSETUPFS = false; @@ -117,147 +176,7 @@ if( !isset( $RUNTIME_NOAPPS )){ $RUNTIME_NOAPPS = false; } -// 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" ); - -// 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(); - } -} - -$errors=OC_Util::checkServer(); -$error=(count($errors)>0); - - -// 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" )); - -// 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 -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')); - -// 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'); - - - -if($error) { - $tmpl = new OC_Template( '', 'error', 'guest' ); - $tmpl->assign('errors',$errors); - $tmpl->printPage(); - exit; -} - - - - -// FROM Connect.php -function OC_CONNECT_TEST($path,$user,$password){ - echo 'connecting...'; - $remote=OC_Connect::connect($path,$user,$password); - if($remote->connected){ - echo 'done
      '; - if($remote->isLoggedIn()){ - echo 'logged in, session working
      '; - echo 'trying to get remote files...'; - $files=$remote->getFiles(''); - if($files){ - echo count($files).' files found:
      '; - foreach($files as $file){ - echo "{$file['type']} {$file['name']}: {$file['size']} bytes
      "; - } - 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
      Error: $newSize bytes received, $size expected."; - echo '

      Recieved file:
      '; - readfile($file); - unlink($file); - return; - } - OC_Filesystem::fromTmpFile($file,'/remoteFile'); - echo 'done
      '; - echo 'sending file "burning_avatar.png"...'; - $res=$remote->sendFile('','burning_avatar.png','','burning_avatar.png'); - if($res){ - echo 'done
      '; - }else{ - echo 'fail
      '; - } - }else{ - echo 'fail
      '; - } - }else{ - echo 'fail
      '; - } - }else{ - echo 'no longer logged in, session fail
      '; - } - }else{ - echo 'fail
      '; - } - $remote->disconnect(); - die(); -} - -// 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 dafb37edd3..3aa69327f5 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 = "\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/db.php b/lib/db.php index 414525ae20..ede8ba897e 100644 --- a/lib/db.php +++ b/lib/db.php @@ -43,8 +43,7 @@ class OC_DB { $CONFIG_DBUSER = OC_Config::getValue( "dbuser", "" );; $CONFIG_DBPASSWORD = OC_Config::getValue( "dbpassword", "" );; $CONFIG_DBTYPE = OC_Config::getValue( "dbtype", "sqlite" );; - global $SERVERROOT; - $datadir=OC_Config::getValue( "datadirectory", "$SERVERROOT/data" ); + $datadir=OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" ); // do nothing if the connection already has been established if(!self::$DBConnection){ @@ -93,8 +92,8 @@ class OC_DB { if( PEAR::isError( self::$DBConnection )){ echo( 'can not connect to database, using '.$CONFIG_DBTYPE.'. ('.self::$DBConnection->getUserInfo().')'); $error = self::$DBConnection->getMessage(); - error_log( $error); - error_log( self::$DBConnection->getUserInfo()); + if(defined("DEBUG") && DEBUG) {error_log( $error);} + if(defined("DEBUG") && DEBUG) {error_log( self::$DBConnection->getUserInfo());} die( $error ); } @@ -130,7 +129,7 @@ class OC_DB { if( PEAR::isError($result)) { $entry = 'DB Error: "'.$result->getMessage().'"
      '; $entry .= 'Offending command was: '.$query.'
      '; - error_log( $entry ); + if(defined("DEBUG") && DEBUG) {error_log( $entry );} die( $entry ); } @@ -156,7 +155,7 @@ class OC_DB { if( PEAR::isError($result)) { $entry = 'DB Error: "'.$result->getMessage().'"
      '; $entry .= 'Offending command was: '.$query.'
      '; - error_log( $entry ); + if(defined("DEBUG") && DEBUG) {error_log( $entry );} die( $entry ); } diff --git a/lib/fileproxy/quota.php b/lib/fileproxy/quota.php index af8ddee147..f770c9cb32 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 f1789d9c7a..631726bf9b 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 07759b0e88..180b056f34 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 76032fae20..b97fa8d784 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/group/database.php b/lib/group/database.php index 7bf9c8bb5c..f35f61434f 100644 --- a/lib/group/database.php +++ b/lib/group/database.php @@ -56,7 +56,7 @@ class OC_Group_Database extends OC_Group_Backend { $query = OC_DB::prepare( "SELECT gid FROM `*PREFIX*groups` WHERE gid = ?" ); $result = $query->execute( array( $gid )); - if( !$result->fetchRow() ){ + if( $result->fetchRow() ){ // Can not add an existing group return false; } @@ -101,7 +101,7 @@ class OC_Group_Database extends OC_Group_Backend { $query = OC_DB::prepare( "SELECT uid FROM `*PREFIX*group_user` WHERE gid = ? AND uid = ?" ); $result = $query->execute( array( $gid, $uid )); - return $result->numRows() > 0 ? true : false; + return $result->fetchRow() ? true : false; } /** diff --git a/lib/helper.php b/lib/helper.php index d9b47280ff..9c2b5fc33c 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,25 @@ class OC_Helper { * Returns the path to the image of this file type. */ public static function mimetypeIcon( $mimetype ){ - global $SERVERROOT; - global $WEBROOT; // 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/places/folder.svg"; } // 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.svg" )){ + return OC::$WEBROOT."/core/img/filetypes/$mimetype.svg"; } //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.svg" )){ + return OC::$WEBROOT."/core/img/filetypes/$mimetype.svg"; } else{ - return "$WEBROOT/core/img/filetypes/file.svg"; + return OC::$WEBROOT."/core/img/filetypes/file.svg"; } } @@ -274,8 +266,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 e6810a267d..0febb2cab4 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 0000000000..cedf79fd7c --- /dev/null +++ b/lib/json.php @@ -0,0 +1,81 @@ + + * 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 c0c3218599..54331d44ae 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 2467925719..e0570e84ea 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 5af007f022..6d8aa17afd 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 2d3dee47b1..75d60155d0 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 ebdf3ef823..355d979dc6 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.= "\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.= "\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 adedd4f901..a293e63b43 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 0630ebb938..241d9aa8b1 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,6 +221,7 @@ class OC_User { public static function logout(){ OC_Hook::emit( "OC_User", "logout", array()); $_SESSION['user_id'] = false; + OC_User::unsetMagicInCookie(); return true; } @@ -340,15 +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){ - setcookie("username", $username, mktime().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(){ - unset($_COOKIE["username"]); - setcookie("username", NULL, -1); + public static function unsetMagicInCookie(){ + unset($_COOKIE["oc_username"]); + unset($_COOKIE["oc_token"]); + unset($_COOKIE["oc_remember_login"]); + setcookie("oc_username", NULL, -1); + setcookie("oc_token", NULL, -1); + setcookie("oc_remember_login", NULL, -1); } } diff --git a/lib/util.php b/lib/util.php index f4ca879a9b..f8748e868c 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(1,92,0); + } + + /** + * get the current installed version string of ownCloud + * @return string + */ + public static function getVersionString(){ + return '2 beta 3'; } /** @@ -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
      ','hint'=>$permissionsHint); + $errors[]=array('error'=>'Data directory ('.$CONFIG_DATADIRECTORY_ROOT.') is readable for other users
      ','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
      ','hint'=>$permissionsHint); + $errors[]=array('error'=>'Data directory ('.$CONFIG_BACKUPDIRECTORY.') is readable for other users
      ','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
      ','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.
      ','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.
      ','hint'=>'Please ask your server administrator to install the module.'); + } + if(!function_exists('ctype_digit')){ + $errors[]=array('error'=>'PHP module ctype is not installed.
      ','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 c65fbbc63f..326724d60c 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 7369a6d81c..518695c56d 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 15559a150e..81ed6aa951 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 c5cdbcef05..860ea98787 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 2631937b14..57d82e7bd9 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 de52f90d4f..1ed53efcf0 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 0cf66a553f..06dd3c2ac6 100644 --- a/settings/ajax/disableapp.php +++ b/settings/ajax/disableapp.php @@ -1,7 +1,8 @@ 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 021fe35d8e..c4b119b448 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 bf80da741c..4d36478189 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 0a94884cb9..2c288997a1 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 a5ba3d81ba..dc1128de2e 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 244a85e3d9..edbf5b7451 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 3210252af0..3ee3239dd8 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 337a52fd41..27b4c17f9e 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 7cb29e487b..8d89cee6ec 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 f8a2f9b8bf..48fcec3278 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 9578fb2c89..8108da433c 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 c60fb32c40..4944f3a62f 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=$(''); var quota=img.parent().children('span').text(); - img if(quota=='None'){ quota=''; } diff --git a/settings/l10n/bg_BG.php b/settings/l10n/bg_BG.php index 004166252b..31afbf9348 100644 --- a/settings/l10n/bg_BG.php +++ b/settings/l10n/bg_BG.php @@ -1,8 +1,30 @@ "Проблем с индентификацията", +"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 0000000000..0e849f9d82 --- /dev/null +++ b/settings/l10n/et_EE.php @@ -0,0 +1,30 @@ + "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 ac3ca5024d..f6188cec62 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 0000000000..fbe910ff21 --- /dev/null +++ b/settings/l10n/ms_MY.php @@ -0,0 +1,30 @@ + "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 d890918452..f0988e9a8e 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 0000000000..33bd039a2f --- /dev/null +++ b/settings/l10n/sr.php @@ -0,0 +1,30 @@ + "Грешка аутентификације", +"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 0000000000..4787dd3fa7 --- /dev/null +++ b/settings/l10n/sr@latin.php @@ -0,0 +1,30 @@ + "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 f721e9a989..13ccd3826e 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 a928ca5b57..3e2cea50ac 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', -'en'=>'English', -'et_EE'=>'Eesti', -'fr'=>'Francais', 'de'=>'Deutsch', -'el'=>'Ellinika', +'el'=>'Ελληνικά', +'en'=>'English', +'es'=>'Español', +'et_EE'=>'Eesti', +'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 e6d2d44db7..c27ca0aed6 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 724cf63aaf..a49de85520 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 d8f3fb5e4f..6f16152bc5 100644 --- a/settings/templates/apps.php +++ b/settings/templates/apps.php @@ -12,7 +12,7 @@
    • data-id="">
    • diff --git a/settings/templates/personal.php b/settings/templates/personal.php index 65a6f12712..3c4ad08516 100644 --- a/settings/templates/personal.php +++ b/settings/templates/personal.php @@ -5,7 +5,7 @@ */?>
      -

      t('You use');?> t('of the available');?>

      +

      t('You use');?> t('of the available');?>

      @@ -19,6 +19,14 @@ +
      +
      + +
      + t('Fill in an email address to enable password recovery');?> +
      +
      +
      @@ -40,3 +48,11 @@ + +

      + ownCloud + +

      + + + diff --git a/settings/templates/users.php b/settings/templates/users.php index a97774cea0..bcc4d65fe4 100644 --- a/settings/templates/users.php +++ b/settings/templates/users.php @@ -10,19 +10,29 @@ foreach($_["groups"] as $group) { } ?> +
      + +
      - - - - - - - - + + + + + + + + diff --git a/settings/users.php b/settings/users.php index 5aae4ce43e..686c4b6a9b 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 0000000000..94c8cfce84 --- /dev/null +++ b/status.php @@ -0,0 +1,34 @@ +. +* +*/ + +$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 efa730f6f8..08e53f1a57 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 +?>
      t('Name')?>t( 'Password' ); ?>t( 'Groups' ); ?>t( 'Quota' ); ?>