diff options
author | Frank Karlitschek <frank@owncloud.org> | 2012-08-26 17:30:07 +0200 |
---|---|---|
committer | Frank Karlitschek <frank@owncloud.org> | 2012-08-26 17:30:07 +0200 |
commit | 72e9a2ce57ee88503db83614cec5ccda71f0b58e (patch) | |
tree | 8bc301ca22d9ca08ea54426bcb61f62bd1c1cb75 /apps/contacts | |
parent | 32bad688bdb4fea55eba9d4255fc55f1c60a0aca (diff) | |
download | nextcloud-server-72e9a2ce57ee88503db83614cec5ccda71f0b58e.tar.gz nextcloud-server-72e9a2ce57ee88503db83614cec5ccda71f0b58e.zip |
moved to apps repository
Diffstat (limited to 'apps/contacts')
133 files changed, 0 insertions, 17943 deletions
diff --git a/apps/contacts/ajax/addressbook/activate.php b/apps/contacts/ajax/addressbook/activate.php deleted file mode 100644 index a8dec21dac7..00000000000 --- a/apps/contacts/ajax/addressbook/activate.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php -/** - * Copyright (c) 2011 Thomas Tanghus <thomas@tanghus.net> - * 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. - */ - - -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -OCP\JSON::callCheck(); - -$id = $_POST['id']; -$book = OC_Contacts_App::getAddressbook($id);// is owner access check - -if(!OC_Contacts_Addressbook::setActive($id, $_POST['active'])) { - OCP\Util::writeLog('contacts', - 'ajax/activation.php: Error activating addressbook: '. $id, - OCP\Util::ERROR); - OCP\JSON::error(array( - 'data' => array( - 'message' => OC_Contacts_App::$l10n->t('Error (de)activating addressbook.')))); - exit(); -} - -OCP\JSON::success(array( - 'active' => OC_Contacts_Addressbook::isActive($id), - 'id' => $id, - 'addressbook' => $book, -)); diff --git a/apps/contacts/ajax/addressbook/add.php b/apps/contacts/ajax/addressbook/add.php deleted file mode 100644 index 65077743ed5..00000000000 --- a/apps/contacts/ajax/addressbook/add.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php -/** - * Copyright (c) 2011-2012 Thomas Tanghus <thomas@tanghus.net> - * 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. - */ - - -// Check if we are a user -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -OCP\JSON::callCheck(); -require_once __DIR__.'/../loghandler.php'; - -debug('name: '.$_POST['name']); - -$userid = OCP\USER::getUser(); -$name = isset($_POST['name'])?trim(strip_tags($_POST['name'])):null; -$description = isset($_POST['description']) - ? trim(strip_tags($_POST['description'])) - : null; - -if(is_null($name)) { - bailOut('Cannot add addressbook with an empty name.'); -} -$bookid = OC_Contacts_Addressbook::add($userid, $name, $description); -if(!$bookid) { - bailOut('Error adding addressbook: '.$name); -} - -if(!OC_Contacts_Addressbook::setActive($bookid, 1)) { - bailOut('Error activating addressbook.'); -} -$addressbook = OC_Contacts_App::getAddressbook($bookid); -OCP\JSON::success(array('data' => array('addressbook' => $addressbook))); diff --git a/apps/contacts/ajax/addressbook/delete.php b/apps/contacts/ajax/addressbook/delete.php deleted file mode 100644 index f59c605f4e4..00000000000 --- a/apps/contacts/ajax/addressbook/delete.php +++ /dev/null @@ -1,36 +0,0 @@ -<?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/>. - * - */ - -// Check if we are a user -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -OCP\JSON::callCheck(); -require_once __DIR__.'/../loghandler.php'; - -$id = $_POST['id']; -if(!$id) { - bailOut(OC_Contacts_App::$l10n->t('id is not set.')); -} -OC_Contacts_App::getAddressbook( $id ); // is owner access check - -OC_Contacts_Addressbook::delete($id); -OCP\JSON::success(array('data' => array( 'id' => $id ))); diff --git a/apps/contacts/ajax/addressbook/update.php b/apps/contacts/ajax/addressbook/update.php deleted file mode 100644 index 0fc66c3a3bf..00000000000 --- a/apps/contacts/ajax/addressbook/update.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php -/** - * Copyright (c) 2011-2012 Thomas Tanghus <thomas@tanghus.net> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - - - -// Check if we are a user -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -require_once __DIR__.'/../loghandler.php'; - -$id = $_POST['id']; -$name = trim(strip_tags($_POST['name'])); -$description = trim(strip_tags($_POST['description'])); -if(!$id) { - bailOut(OC_Contacts_App::$l10n->t('id is not set.')); -} - -if(!$name) { - bailOut(OC_Contacts_App::$l10n->t('Cannot update addressbook with an empty name.')); -} - -if(!OC_Contacts_Addressbook::edit($id, $name, $description)) { - bailOut(OC_Contacts_App::$l10n->t('Error updating addressbook.')); -} - -if(!OC_Contacts_Addressbook::setActive($id, $_POST['active'])) { - bailOut(OC_Contacts_App::$l10n->t('Error (de)activating addressbook.')); -} - -OC_Contacts_App::getAddressbook($id); // is owner access check -$addressbook = OC_Contacts_App::getAddressbook($id); -OCP\JSON::success(array( - 'addressbook' => $addressbook, -)); diff --git a/apps/contacts/ajax/categories/categoriesfor.php b/apps/contacts/ajax/categories/categoriesfor.php deleted file mode 100644 index 8391b14b545..00000000000 --- a/apps/contacts/ajax/categories/categoriesfor.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php -/** - * Copyright (c) 2012 Thomas Tanghus <thomas@tanghus.net> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - - -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); - -$id = isset($_GET['id'])?$_GET['id']:null; -if(is_null($id)) { - OCP\JSON::error(array( - 'data' => array( - 'message' => OC_Contacts_App::$l10n->t('No ID provided')))); - exit(); -} -$vcard = OC_Contacts_App::getContactVCard( $id ); -foreach($vcard->children as $property){ - if($property->name == 'CATEGORIES') { - $checksum = md5($property->serialize()); - OCP\JSON::success(array( - 'data' => array( - 'value' => $property->value, - 'checksum' => $checksum, - ))); - exit(); - } -} -OCP\JSON::error(array( - 'data' => array( - 'message' => OC_Contacts_App::$l10n->t('Error setting checksum.')))); diff --git a/apps/contacts/ajax/categories/delete.php b/apps/contacts/ajax/categories/delete.php deleted file mode 100644 index bc9f3e14e87..00000000000 --- a/apps/contacts/ajax/categories/delete.php +++ /dev/null @@ -1,48 +0,0 @@ -<?php -/** - * Copyright (c) 2012 Thomas Tanghus <thomas@tanghus.net> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - - -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -OCP\JSON::callCheck(); - -require_once __DIR__.'/../loghandler.php'; - -$categories = isset($_POST['categories'])?$_POST['categories']:null; - -if(is_null($categories)) { - bailOut(OC_Contacts_App::$l10n->t('No categories selected for deletion.')); -} - -debug(print_r($categories, true)); - -$addressbooks = OC_Contacts_Addressbook::all(OCP\USER::getUser()); -if(count($addressbooks) == 0) { - bailOut(OC_Contacts_App::$l10n->t('No address books found.')); -} -$addressbookids = array(); -foreach($addressbooks as $addressbook) { - $addressbookids[] = $addressbook['id']; -} -$contacts = OC_Contacts_VCard::all($addressbookids); -if(count($contacts) == 0) { - bailOut(OC_Contacts_App::$l10n->t('No contacts found.')); -} - -$cards = array(); -foreach($contacts as $contact) { - $cards[] = array($contact['id'], $contact['carddata']); -} - -debug('Before delete: '.print_r($categories, true)); - -$catman = new OC_VCategories('contacts'); -$catman->delete($categories, $cards); -debug('After delete: '.print_r($catman->categories(), true)); -OC_Contacts_VCard::updateDataByID($cards); -OCP\JSON::success(array('data' => array('categories'=>$catman->categories()))); diff --git a/apps/contacts/ajax/categories/list.php b/apps/contacts/ajax/categories/list.php deleted file mode 100644 index f234116ba8c..00000000000 --- a/apps/contacts/ajax/categories/list.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php -/** - * Copyright (c) 2012 Thomas Tanghus <thomas@tanghus.net> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - - -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); - -$categories = OC_Contacts_App::getCategories(); - -OCP\JSON::success(array('data' => array('categories'=>$categories))); diff --git a/apps/contacts/ajax/categories/rescan.php b/apps/contacts/ajax/categories/rescan.php deleted file mode 100644 index a06e7803955..00000000000 --- a/apps/contacts/ajax/categories/rescan.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php -/** - * Copyright (c) 2012 Thomas Tanghus <thomas@tanghus.net> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - - -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -OCP\JSON::callCheck(); - -OC_Contacts_App::scanCategories(); -$categories = OC_Contacts_App::getCategories(); - -OCP\JSON::success(array('data' => array('categories'=>$categories))); diff --git a/apps/contacts/ajax/contact/add.php b/apps/contacts/ajax/contact/add.php deleted file mode 100644 index c7cec7d9461..00000000000 --- a/apps/contacts/ajax/contact/add.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php -/** - * ownCloud - Addressbook - * - * @author Thomas Tanghus - * @copyright 2012 Thomas Tanghus <thomas@tanghus.net> - * - * 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/>. - * - */ - -// Check if we are a user -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -OCP\JSON::callCheck(); - -$aid = isset($_POST['aid'])?$_POST['aid']:null; -if(!$aid) { - $aid = min(OC_Contacts_Addressbook::activeIds()); // first active addressbook. -} -OC_Contacts_App::getAddressbook( $aid ); // is owner access check - -$isnew = isset($_POST['isnew'])?$_POST['isnew']:false; -$fn = trim($_POST['fn']); -$n = trim($_POST['n']); - -$vcard = new OC_VObject('VCARD'); -$vcard->setUID(); -$vcard->setString('FN', $fn); -$vcard->setString('N', $n); - -$id = OC_Contacts_VCard::add($aid, $vcard, null, $isnew); -if(!$id) { - OCP\JSON::error(array( - 'data' => array( - 'message' => OC_Contacts_App::$l10n->t('There was an error adding the contact.')))); - OCP\Util::writeLog('contacts', 'ajax/addcontact.php: Recieved non-positive ID on adding card: '.$id, OCP\Util::ERROR); - exit(); -} - -$lastmodified = OC_Contacts_App::lastModified($vcard); -if(!$lastmodified) { - $lastmodified = new DateTime(); -} -OCP\JSON::success(array( - 'data' => array( - 'id' => $id, - 'aid' => $aid, - 'lastmodified' => $lastmodified->format('U') - ) -)); diff --git a/apps/contacts/ajax/contact/addproperty.php b/apps/contacts/ajax/contact/addproperty.php deleted file mode 100644 index 2b80ebd58bf..00000000000 --- a/apps/contacts/ajax/contact/addproperty.php +++ /dev/null @@ -1,168 +0,0 @@ -<?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/>. - * - */ - -// Check if we are a user -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -OCP\JSON::callCheck(); - -require_once __DIR__.'/../loghandler.php'; - -$id = isset($_POST['id'])?$_POST['id']:null; -$name = isset($_POST['name'])?$_POST['name']:null; -$value = isset($_POST['value'])?$_POST['value']:null; -$parameters = isset($_POST['parameters'])?$_POST['parameters']:array(); - -$vcard = OC_Contacts_App::getContactVCard($id); -$l10n = OC_Contacts_App::$l10n; - -if(!$name) { - bailOut($l10n->t('element name is not set.')); -} -if(!$id) { - bailOut($l10n->t('id is not set.')); -} - -if(!$vcard) { - bailOut($l10n->t('Could not parse contact: ').$id); -} - -if(!is_array($value)) { - $value = trim($value); - if(!$value - && in_array( - $name, - array('TEL', 'EMAIL', 'ORG', 'BDAY', 'URL', 'NICKNAME', 'NOTE')) - ) { - bailOut($l10n->t('Cannot add empty property.')); - } -} elseif($name === 'ADR') { // only add if non-empty elements. - $empty = true; - foreach($value as $part) { - if(trim($part) != '') { - $empty = false; - break; - } - } - if($empty) { - bailOut($l10n->t('At least one of the address fields has to be filled out.')); - } -} - -// Prevent setting a duplicate entry -$current = $vcard->select($name); -foreach($current as $item) { - $tmpvalue = (is_array($value)?implode(';', $value):$value); - if($tmpvalue == $item->value) { - bailOut($l10n->t('Trying to add duplicate property: '.$name.': '.$tmpvalue)); - } -} - -if(is_array($value)) { - // NOTE: Important, otherwise the compound value will - // be set in the order the fields appear in the form! - ksort($value); - $value = array_map('strip_tags', $value); -} else { - $value = strip_tags($value); -} - -/* preprocessing value */ -switch($name) { - case 'BDAY': - $date = New DateTime($value); - $value = $date->format(DateTime::ATOM); - case 'FN': - if(!$value) { - // create a method thats returns an alternative for FN. - //$value = getOtherValue(); - } - case 'N': - case 'ORG': - case 'NOTE': - $value = str_replace('\n', ' \\n', $value); - break; - case 'NICKNAME': - // TODO: Escape commas and semicolons. - break; - case 'EMAIL': - $value = strtolower($value); - break; - case 'TEL': - case 'ADR': - break; - case 'IMPP': - if(is_null($parameters) || !isset($parameters['X-SERVICE-TYPE'])) { - bailOut(OC_Contacts_App::$l10n->t('Missing IM parameter.')); - } - $impp = OC_Contacts_App::getIMOptions($parameters['X-SERVICE-TYPE']); - if(is_null($impp)) { - bailOut(OC_Contacts_App::$l10n->t('Unknown IM: '.$parameters['X-SERVICE-TYPE'])); - } - $value = $impp['protocol'] . ':' . $value; - break; -} - -switch($name) { - case 'NOTE': - $vcard->setString('NOTE', $value); - break; - default: - $property = $vcard->addProperty($name, $value); //, $parameters); - break; -} - -$line = count($vcard->children) - 1; - -// Apparently Sabre_VObject_Parameter doesn't do well with -// multiple values or I don't know how to do it. Tanghus. -foreach ($parameters as $key=>$element) { - if(is_array($element) /*&& strtoupper($key) == 'TYPE'*/) { - // NOTE: Maybe this doesn't only apply for TYPE? - // And it probably shouldn't be done here anyways :-/ - foreach($element as $e) { - if($e != '' && !is_null($e)) { - if(trim($e)) { - $vcard->children[$line]->parameters[] = new Sabre_VObject_Parameter($key, $e); - } - } - } - } else { - if(trim($element)) { - $vcard->children[$line]->parameters[] = new Sabre_VObject_Parameter($key, $element); - } - } -} -$checksum = md5($vcard->children[$line]->serialize()); - -try { - OC_Contacts_VCard::edit($id, $vcard); -} catch(Exception $e) { - bailOut($e->getMessage()); -} - -OCP\JSON::success(array( - 'data' => array( - 'checksum' => $checksum, - 'lastmodified' => OC_Contacts_App::lastModified($vcard)->format('U')) - ) -); diff --git a/apps/contacts/ajax/contact/delete.php b/apps/contacts/ajax/contact/delete.php deleted file mode 100644 index e73f34f898d..00000000000 --- a/apps/contacts/ajax/contact/delete.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php -/** - * ownCloud - Addressbook - * - * @author Jakob Sack - * @copyright 2011 Jakob Sack mail@jakobsack.de - * @copyright 2012 Thomas Tanghus (thomas@tanghus.net) - * - * 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/>. - * - */ -// Check if we are a user -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -OCP\JSON::callCheck(); - -require_once __DIR__.'/../loghandler.php'; - -$id = isset($_POST['id'])?$_POST['id']:null; -if(!$id) { - bailOut(OC_Contacts_App::$l10n->t('id is not set.')); -} - -try { - OC_Contacts_VCard::delete($id); -} catch(Exception $e) { - $msg = $e->getMessage(); - OCP\Util::writeLog('contacts', __METHOD__.', exception: '.$msg, - OCP\Util::DEBUG); - OCP\Util::writeLog('contacts', __METHOD__.', id'.$id, OCP\Util::DEBUG); - bailOut($msg); -} -OCP\JSON::success(array('data' => array( 'id' => $id ))); diff --git a/apps/contacts/ajax/contact/deleteproperty.php b/apps/contacts/ajax/contact/deleteproperty.php deleted file mode 100644 index b76b6e55ede..00000000000 --- a/apps/contacts/ajax/contact/deleteproperty.php +++ /dev/null @@ -1,54 +0,0 @@ -<?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/>. - * - */ - -// Check if we are a user -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -OCP\JSON::callCheck(); - -require_once __DIR__.'/../loghandler.php'; - -$id = $_POST['id']; -$checksum = $_POST['checksum']; -$l10n = OC_Contacts_App::$l10n; - -$vcard = OC_Contacts_App::getContactVCard( $id ); -$line = OC_Contacts_App::getPropertyLineByChecksum($vcard, $checksum); -if(is_null($line)) { - bailOut($l10n->t('Information about vCard is incorrect. Please reload the page.')); - exit(); -} - -unset($vcard->children[$line]); - -try { - OC_Contacts_VCard::edit($id, $vcard); -} catch(Exception $e) { - bailOut($e->getMessage()); -} - -OCP\JSON::success(array( - 'data' => array( - 'id' => $id, - 'lastmodified' => OC_Contacts_App::lastModified($vcard)->format('U'), - ) -)); diff --git a/apps/contacts/ajax/contact/details.php b/apps/contacts/ajax/contact/details.php deleted file mode 100644 index 5bf337e645e..00000000000 --- a/apps/contacts/ajax/contact/details.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php -/** - * ownCloud - Addressbook - * - * @author Thomas Tanghus - * @copyright 2012 Thomas Tanghus <thomas@tanghus.net> - * - * 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/>. - * - */ - -require_once __DIR__.'/../loghandler.php'; - -// Check if we are a user -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); - -$id = isset($_GET['id'])?$_GET['id']:null; -if(is_null($id)) { - bailOut(OC_Contacts_App::$l10n->t('Missing ID')); -} -$card = OC_Contacts_VCard::find($id); -$vcard = OC_VObject::parse($card['carddata']); -if(is_null($vcard)) { - bailOut(OC_Contacts_App::$l10n->t('Error parsing VCard for ID: "'.$id.'"')); -} -$details = OC_Contacts_VCard::structureContact($vcard); - -// Make up for not supporting the 'N' field in earlier version. -if(!isset($details['N'])) { - $details['N'] = array(); - $details['N'][0] = array($details['FN'][0]['value'],'','','',''); -} - -// Don't wanna transfer the photo in a json string. -if(isset($details['PHOTO'])) { - $details['PHOTO'] = true; - //unset($details['PHOTO']); -} else { - $details['PHOTO'] = false; -} -$lastmodified = OC_Contacts_App::lastModified($vcard); -if(!$lastmodified) { - $lastmodified = new DateTime(); -} -$details['id'] = $id; -$details['displayname'] = $card['fullname']; -$details['addressbookid'] = $card['addressbookid']; -$details['lastmodified'] = $lastmodified->format('U'); -OC_Contacts_App::setLastModifiedHeader($vcard); -OCP\JSON::success(array('data' => $details)); diff --git a/apps/contacts/ajax/contact/list.php b/apps/contacts/ajax/contact/list.php deleted file mode 100644 index 4e2509d8d5a..00000000000 --- a/apps/contacts/ajax/contact/list.php +++ /dev/null @@ -1,97 +0,0 @@ -<?php -/** - * Copyright (c) 2011 Thomas Tanghus <thomas@tanghus.net> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - -function cmp($a, $b) -{ - if ($a['displayname'] == $b['displayname']) { - return 0; - } - return ($a['displayname'] < $b['displayname']) ? -1 : 1; -} - -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); - -$start = isset($_GET['startat'])?$_GET['startat']:0; -$aid = isset($_GET['aid'])?$_GET['aid']:null; - -if(is_null($aid)) { - // Called initially to get the active addressbooks. - $active_addressbooks = OC_Contacts_Addressbook::active(OCP\USER::getUser()); -} else { - // called each time more contacts has to be shown. - $active_addressbooks = array(OC_Contacts_Addressbook::find($aid)); -} - - -session_write_close(); - -// create the addressbook associate array -$contacts_addressbook = array(); -$ids = array(); -foreach($active_addressbooks as $addressbook) { - $ids[] = $addressbook['id']; - if(!isset($contacts_addressbook[$addressbook['id']])) { - $contacts_addressbook[$addressbook['id']] - = array('contacts' => array('type' => 'book',)); - $contacts_addressbook[$addressbook['id']]['displayname'] - = $addressbook['displayname']; - $contacts_addressbook[$addressbook['id']]['permissions'] - = isset($addressbook['permissions']) - ? $addressbook['permissions'] - : '0'; - } -} - -$contacts_alphabet = array(); - -// get next 50 for each addressbook. -foreach($ids as $id) { - if($id) { - $contacts_alphabet = array_merge( - $contacts_alphabet, - OC_Contacts_VCard::all($id, $start, 50) - ); - } -} -// Our new array for the contacts sorted by addressbook -if($contacts_alphabet) { - foreach($contacts_alphabet as $contact) { - // This should never execute. - if(!isset($contacts_addressbook[$contact['addressbookid']])) { - $contacts_addressbook[$contact['addressbookid']] = array( - 'contacts' => array('type' => 'book',) - ); - } - $display = trim($contact['fullname']); - if(!$display) { - $vcard = OC_Contacts_App::getContactVCard($contact['id']); - if(!is_null($vcard)) { - $struct = OC_Contacts_VCard::structureContact($vcard); - $display = isset($struct['EMAIL'][0]) - ? $struct['EMAIL'][0]['value'] - : '[UNKNOWN]'; - } - } - $contacts_addressbook[$contact['addressbookid']]['contacts'][] = array( - 'type' => 'contact', - 'id' => $contact['id'], - 'addressbookid' => $contact['addressbookid'], - 'displayname' => htmlspecialchars($display), - 'permissions' => - isset($contacts_addressbook[$contact['addressbookid']]['permissions']) - ? $contacts_addressbook[$contact['addressbookid']]['permissions'] - : '0', - ); - } -} -unset($contacts_alphabet); -uasort($contacts_addressbook, 'cmp'); - -OCP\JSON::success(array('data' => array('entries' => $contacts_addressbook))); - diff --git a/apps/contacts/ajax/contact/move.php b/apps/contacts/ajax/contact/move.php deleted file mode 100644 index 053343c47ed..00000000000 --- a/apps/contacts/ajax/contact/move.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php -/** -* @author Victor Dubiniuk -* Copyright (c) 2012 Victor Dubiniuk <victor.dubiniuk@gmail.com> -* Copyright (c) 2012 Thomas Tanghus <thomas@tanghus.net> -* This file is licensed under the Affero General Public License version 3 or -* later. -* See the COPYING-README file. -*/ - -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -OCP\JSON::callCheck(); - -$id = intval($_POST['id']); -$aid = intval($_POST['aid']); -$isaddressbook = isset($_POST['isaddressbook']) ? true: false; - -// Ownership checking -OC_Contacts_App::getAddressbook($aid); -try { - OC_Contacts_VCard::moveToAddressBook($aid, $id, $isaddressbook); -} catch (Exception $e) { - $msg = $e->getMessage(); - OCP\Util::writeLog('contacts', 'Error moving contacts "'.implode(',', $id).'" to addressbook "'.$aid.'"'.$msg, OCP\Util::ERROR); - OC_JSON::error(array('data' => array('message' => $msg,))); -} - -OC_JSON::success(array('data' => array('ids' => $id,)));
\ No newline at end of file diff --git a/apps/contacts/ajax/contact/saveproperty.php b/apps/contacts/ajax/contact/saveproperty.php deleted file mode 100644 index 7ae183538b6..00000000000 --- a/apps/contacts/ajax/contact/saveproperty.php +++ /dev/null @@ -1,176 +0,0 @@ -<?php -/** - * ownCloud - Addressbook - * - * @author Thomas Tanghus - * @copyright 2012 Thomas Tanghus <thomas@tanghus.net> - * - * 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/>. - * - */ - -require_once __DIR__.'/../loghandler.php'; - -// Check if we are a user -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -OCP\JSON::callCheck(); -$id = isset($_POST['id'])?$_POST['id']:null; -$name = isset($_POST['name'])?$_POST['name']:null; -$value = isset($_POST['value'])?$_POST['value']:null; -$parameters = isset($_POST['parameters'])?$_POST['parameters']:null; -$checksum = isset($_POST['checksum'])?$_POST['checksum']:null; - -if(!$name) { - bailOut(OC_Contacts_App::$l10n->t('element name is not set.')); -} -if(!$id) { - bailOut(OC_Contacts_App::$l10n->t('id is not set.')); -} -if(!$checksum) { - bailOut(OC_Contacts_App::$l10n->t('checksum is not set.')); -} -if(is_array($value)) { - $value = array_map('strip_tags', $value); - // NOTE: Important, otherwise the compound value will be - // set in the order the fields appear in the form! - ksort($value); - //if($name == 'CATEGORIES') { - // $value = OC_Contacts_VCard::escapeDelimiters($value, ','); - //} else { - $value = OC_Contacts_VCard::escapeDelimiters($value, ';'); - //} -} else { - $value = trim(strip_tags($value)); -} - -$vcard = OC_Contacts_App::getContactVCard( $id ); -$line = OC_Contacts_App::getPropertyLineByChecksum($vcard, $checksum); -if(is_null($line)) { - bailOut(OC_Contacts_App::$l10n->t( - 'Information about vCard is incorrect. Please reload the page: ').$checksum - ); -} -$element = $vcard->children[$line]->name; - -if($element != $name) { - bailOut(OC_Contacts_App::$l10n->t( - 'Something went FUBAR. ').$name.' != '.$element - ); -} - -/* preprocessing value */ -switch($element) { - case 'BDAY': - $date = New DateTime($value); - $value = $date->format('Y-m-d'); - break; - case 'FN': - if(!$value) { - // create a method thats returns an alternative for FN. - //$value = getOtherValue(); - } - break; - case 'NOTE': - $value = str_replace('\n', '\\n', $value); - break; - case 'EMAIL': - $value = strtolower($value); - break; - case 'IMPP': - if(is_null($parameters) || !isset($parameters['X-SERVICE-TYPE'])) { - bailOut(OC_Contacts_App::$l10n->t('Missing IM parameter.')); - } - $impp = OC_Contacts_App::getIMOptions($parameters['X-SERVICE-TYPE']); - if(is_null($impp)) { - bailOut(OC_Contacts_App::$l10n->t('Unknown IM: '.$parameters['X-SERVICE-TYPE'])); - } - $value = $impp['protocol'] . ':' . $value; - break; -} - -if(!$value) { - unset($vcard->children[$line]); - $checksum = ''; -} else { - /* setting value */ - switch($element) { - case 'BDAY': - // I don't use setDateTime() because that formats it as YYYYMMDD instead - // of YYYY-MM-DD which is what the RFC recommends. - $vcard->children[$line]->setValue($value); - $vcard->children[$line]->parameters = array(); - $vcard->children[$line]->add( - new Sabre_VObject_Parameter('VALUE', 'DATE') - ); - debug('Setting value:'.$name.' '.$vcard->children[$line]); - break; - case 'CATEGORIES': - debug('Setting string:'.$name.' '.$value); - $vcard->children[$line]->setValue($value); - break; - case 'EMAIL': - case 'TEL': - case 'ADR': - case 'IMPP': - debug('Setting element: (EMAIL/TEL/ADR)'.$element); - $vcard->children[$line]->setValue($value); - $vcard->children[$line]->parameters = array(); - if(!is_null($parameters)) { - debug('Setting parameters: '.$parameters); - foreach($parameters as $key => $parameter) { - debug('Adding parameter: '.$key); - if(is_array($parameter)) { - foreach($parameter as $val) { - if(trim($val)) { - debug('Adding parameter: '.$key.'=>'.$val); - $vcard->children[$line]->add(new Sabre_VObject_Parameter( - $key, - strtoupper(strip_tags($val))) - ); - } - } - } else { - if(trim($parameter)) { - $vcard->children[$line]->add(new Sabre_VObject_Parameter( - $key, - strtoupper(strip_tags($parameter))) - ); - } - } - } - } - break; - default: - debug('Setting string:'.$name.' '.$value); - $vcard->setString($name, $value); - break; - } - // Do checksum and be happy - $checksum = md5($vcard->children[$line]->serialize()); -} -//debug('New checksum: '.$checksum); - -try { - OC_Contacts_VCard::edit($id, $vcard); -} catch(Exception $e) { - bailOut($e->getMessage()); -} - -OCP\JSON::success(array('data' => array( - 'line' => $line, - 'checksum' => $checksum, - 'oldchecksum' => $_POST['checksum'], - 'lastmodified' => OC_Contacts_App::lastModified($vcard)->format('U'), -))); diff --git a/apps/contacts/ajax/cropphoto.php b/apps/contacts/ajax/cropphoto.php deleted file mode 100644 index eb9f1fcdb5d..00000000000 --- a/apps/contacts/ajax/cropphoto.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php -/** - * ownCloud - Addressbook - * - * @author Thomas Tanghus - * @copyright 2012 Thomas Tanghus <thomas@tanghus.net> - * - * 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/>. - * - */ - -// Check if we are a user -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); - -$tmpkey = $_GET['tmpkey']; -$requesttoken = $_GET['requesttoken']; -$id = $_GET['id']; -$tmpl = new OCP\Template("contacts", "part.cropphoto"); -$tmpl->assign('tmpkey', $tmpkey); -$tmpl->assign('id', $id); -$tmpl->assign('requesttoken', $requesttoken); -$page = $tmpl->fetchPage(); - -OCP\JSON::success(array('data' => array( 'page' => $page ))); diff --git a/apps/contacts/ajax/currentphoto.php b/apps/contacts/ajax/currentphoto.php deleted file mode 100644 index 96080e661ef..00000000000 --- a/apps/contacts/ajax/currentphoto.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php -/** - * ownCloud - Addressbook - * - * @author Thomas Tanghus - * @copyright 2012 Thomas Tanghus <thomas@tanghus.net> - * - * 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/>. - * - */ - -// Firefox and Konqueror tries to download application/json for me. --Arthur -OCP\JSON::setContentTypeHeader('text/plain'); -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -require_once 'loghandler.php'; - -if (!isset($_GET['id'])) { - bailOut(OC_Contacts_App::$l10n->t('No contact ID was submitted.')); -} - -$contact = OC_Contacts_App::getContactVCard($_GET['id']); -// invalid vcard -if( is_null($contact)) { - bailOut(OC_Contacts_App::$l10n->t('Error reading contact photo.')); -} else { - $image = new OC_Image(); - if(!$image->loadFromBase64($contact->getAsString('PHOTO'))) { - $image->loadFromBase64($contact->getAsString('LOGO')); - } - if($image->valid()) { - $tmpkey = 'contact-photo-'.$contact->getAsString('UID'); - if(OC_Cache::set($tmpkey, $image->data(), 600)) { - OCP\JSON::success(array('data' => array('id'=>$_GET['id'], 'tmp'=>$tmpkey))); - exit(); - } else { - bailOut(OC_Contacts_App::$l10n->t('Error saving temporary file.')); - } - } else { - bailOut(OC_Contacts_App::$l10n->t('The loading photo is not valid.')); - } -} diff --git a/apps/contacts/ajax/editaddress.php b/apps/contacts/ajax/editaddress.php deleted file mode 100644 index b5e4b72ed57..00000000000 --- a/apps/contacts/ajax/editaddress.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php -/** - * Copyright (c) 2011 Thomas Tanghus <thomas@tanghus.net> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - - -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); - -$id = $_GET['id']; -$checksum = isset($_GET['checksum'])?$_GET['checksum']:''; -$vcard = OC_Contacts_App::getContactVCard($id); -$adr_types = OC_Contacts_App::getTypesOfProperty('ADR'); - -$tmpl = new OCP\Template("contacts", "part.edit_address_dialog"); -if($checksum) { - $line = OC_Contacts_App::getPropertyLineByChecksum($vcard, $checksum); - $element = $vcard->children[$line]; - $adr = OC_Contacts_VCard::structureProperty($element); - $types = array(); - if(isset($adr['parameters']['TYPE'])) { - if(is_array($adr['parameters']['TYPE'])) { - $types = array_map('htmlspecialchars', $adr['parameters']['TYPE']); - $types = array_map('strtoupper', $types); - } else { - $types = array(strtoupper(htmlspecialchars($adr['parameters']['TYPE']))); - } - } - $tmpl->assign('types', $types, false); - $adr = array_map('htmlspecialchars', $adr['value']); - $tmpl->assign('adr', $adr, false); -} - -$tmpl->assign('id', $id); -$tmpl->assign('adr_types', $adr_types); - -$page = $tmpl->fetchPage(); -OCP\JSON::success(array('data' => array('page'=>$page, 'checksum'=>$checksum))); diff --git a/apps/contacts/ajax/editname.php b/apps/contacts/ajax/editname.php deleted file mode 100644 index eb55634011d..00000000000 --- a/apps/contacts/ajax/editname.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php -/** - * Copyright (c) 2011 Thomas Tanghus <thomas@tanghus.net> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - - -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -require_once 'loghandler.php'; - -$tmpl = new OCP\Template("contacts", "part.edit_name_dialog"); - -$id = isset($_GET['id'])?$_GET['id']:''; - -if($id) { - $vcard = OC_Contacts_App::getContactVCard($id); - $name = array('', '', '', '', ''); - if($vcard->__isset('N')) { - $property = $vcard->__get('N'); - if($property) { - $name = OC_Contacts_VCard::structureProperty($property); - } - } - $name = array_map('htmlspecialchars', $name['value']); - $tmpl->assign('name', $name, false); - $tmpl->assign('id', $id, false); -} else { - bailOut(OC_Contacts_App::$l10n->t('Contact ID is missing.')); -} -$page = $tmpl->fetchPage(); -OCP\JSON::success(array('data' => array('page'=>$page))); diff --git a/apps/contacts/ajax/importdialog.php b/apps/contacts/ajax/importdialog.php deleted file mode 100644 index 691522538fb..00000000000 --- a/apps/contacts/ajax/importdialog.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php -/** - * Copyright (c) 2012 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. - */ - - -OCP\JSON::checkLoggedIn(); -OCP\App::checkAppEnabled('contacts'); -$tmpl = new OCP\Template('contacts', 'part.import'); -$tmpl->assign('path', $_POST['path']); -$tmpl->assign('filename', $_POST['filename']); -$tmpl->printpage(); diff --git a/apps/contacts/ajax/loadcard.php b/apps/contacts/ajax/loadcard.php deleted file mode 100644 index 82501ffd2ff..00000000000 --- a/apps/contacts/ajax/loadcard.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php -/** - * ownCloud - Addressbook - * - * @author Thomas Tanghus - * @copyright 2012 Thomas Tanghus <thomas@tanghus.net> - * - * 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/>. - * - */ - -// Check if we are a user -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); - -$upload_max_filesize = OCP\Util::computerFileSize(ini_get('upload_max_filesize')); -$post_max_size = OCP\Util::computerFileSize(ini_get('post_max_size')); -$maxUploadFilesize = min($upload_max_filesize, $post_max_size); -$requesttoken = $_GET['requesttoken']; - -$freeSpace=OC_Filesystem::free_space('/'); -$freeSpace=max($freeSpace, 0); -$maxUploadFilesize = min($maxUploadFilesize, $freeSpace); -$adr_types = OC_Contacts_App::getTypesOfProperty('ADR'); -$phone_types = OC_Contacts_App::getTypesOfProperty('TEL'); -$email_types = OC_Contacts_App::getTypesOfProperty('EMAIL'); -$impp_types = OC_Contacts_App::getTypesOfProperty('IMPP'); -$ims = OC_Contacts_App::getIMOptions(); -$im_protocols = array(); -foreach($ims as $name => $values) { - $im_protocols[$name] = $values['displayname']; -} - -$tmpl = new OCP\Template('contacts', 'part.contact'); -$tmpl->assign('uploadMaxFilesize', $maxUploadFilesize); -$tmpl->assign('requesttoken', $_SERVER['HTTP_REQUESTTOKEN']); -$tmpl->assign('uploadMaxHumanFilesize', OCP\Util::humanFileSize($maxUploadFilesize)); -$tmpl->assign('adr_types', $adr_types); -$tmpl->assign('phone_types', $phone_types); -$tmpl->assign('email_types', $email_types); -$tmpl->assign('impp_types', $impp_types, false); -$tmpl->assign('im_protocols', $im_protocols, false); -$tmpl->assign('requesttoken', $requesttoken); -$tmpl->assign('id', ''); -$page = $tmpl->fetchPage(); - -OCP\JSON::success(array('data' => array( 'page' => $page ))); diff --git a/apps/contacts/ajax/loadintro.php b/apps/contacts/ajax/loadintro.php deleted file mode 100644 index 1da08950ca0..00000000000 --- a/apps/contacts/ajax/loadintro.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php -/** - * ownCloud - Addressbook - * - * @author Thomas Tanghus - * @copyright 2012 Thomas Tanghus <thomas@tanghus.net> - * - * 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/>. - * - */ - -// Check if we are a user -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); - - -$tmpl = new OCP\Template('contacts', 'part.no_contacts'); -$page = $tmpl->fetchPage(); - -OCP\JSON::success(array('data' => array( 'page' => $page ))); diff --git a/apps/contacts/ajax/loghandler.php b/apps/contacts/ajax/loghandler.php deleted file mode 100644 index be4b98c1112..00000000000 --- a/apps/contacts/ajax/loghandler.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php -/** - * ownCloud - Addressbook - * - * @author Thomas Tanghus - * @copyright 2012 Thomas Tanghus <thomas@tanghus.net> - * - * 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/>. - * - */ - -function bailOut($msg, $tracelevel=1, $debuglevel=OCP\Util::ERROR) -{ - OCP\JSON::error(array('data' => array('message' => $msg))); - debug($msg, $tracelevel, $debuglevel); - exit(); -} - -function debug($msg, $tracelevel=0, $debuglevel=OCP\Util::DEBUG) -{ - if(PHP_VERSION >= "5.4") { - $call = debug_backtrace(false, $tracelevel+1); - } else { - $call = debug_backtrace(false); - } - error_log('trace: '.print_r($call, true)); - $call = $call[$tracelevel]; - if($debuglevel !== false) { - OCP\Util::writeLog('contacts', - $call['file'].'. Line: '.$call['line'].': '.$msg, - $debuglevel); - } -} diff --git a/apps/contacts/ajax/oc_photo.php b/apps/contacts/ajax/oc_photo.php deleted file mode 100644 index fe37b530f82..00000000000 --- a/apps/contacts/ajax/oc_photo.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php -/** - * ownCloud - Addressbook - * - * @author Thomas Tanghus - * @copyright 2012 Thomas Tanghus <thomas@tanghus.net> - * - * 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/>. - * - */ -// Check if we are a user -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -require_once 'loghandler.php'; - -if(!isset($_GET['id'])) { - bailOut(OC_Contacts_App::$l10n->t('No contact ID was submitted.')); -} - -if(!isset($_GET['path'])) { - bailOut(OC_Contacts_App::$l10n->t('No photo path was submitted.')); -} - -$localpath = OC_Filesystem::getLocalFile($_GET['path']); -$tmpkey = 'contact-photo-'.$_GET['id']; - -if(!file_exists($localpath)) { - bailOut(OC_Contacts_App::$l10n->t('File doesn\'t exist:').$localpath); -} - -$image = new OC_Image(); -if(!$image) { - bailOut(OC_Contacts_App::$l10n->t('Error loading image.')); -} -if(!$image->loadFromFile($localpath)) { - bailOut(OC_Contacts_App::$l10n->t('Error loading image.')); -} -if($image->width() > 400 || $image->height() > 400) { - $image->resize(400); // Prettier resizing than with browser and saves bandwidth. -} -if(!$image->fixOrientation()) { // No fatal error so we don't bail out. - OCP\Util::writeLog('contacts', - 'ajax/oc_photo.php: Couldn\'t save correct image orientation: '.$localpath, - OCP\Util::DEBUG); -} -if(OC_Cache::set($tmpkey, $image->data(), 600)) { - OCP\JSON::success(array('data' => array('id'=>$_GET['id'], 'tmp'=>$tmpkey))); - exit(); -} else { - bailOut('Couldn\'t save temporary image: '.$tmpkey); -} diff --git a/apps/contacts/ajax/savecrop.php b/apps/contacts/ajax/savecrop.php deleted file mode 100644 index 2483d0f7128..00000000000 --- a/apps/contacts/ajax/savecrop.php +++ /dev/null @@ -1,121 +0,0 @@ -<?php -/** - * ownCloud - Addressbook - * - * @author Thomas Tanghus - * @copyright 2012 Thomas Tanghus <thomas@tanghus.net> - * - * 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/>. - * - */ -// Check if we are a user -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -OCP\JSON::callCheck(); - -// Firefox and Konqueror tries to download application/json for me. --Arthur -OCP\JSON::setContentTypeHeader('text/plain; charset=utf-8'); - -require_once 'loghandler.php'; - -$image = null; - -$x1 = (isset($_POST['x1']) && $_POST['x1']) ? $_POST['x1'] : 0; -//$x2 = isset($_POST['x2']) ? $_POST['x2'] : -1; -$y1 = (isset($_POST['y1']) && $_POST['y1']) ? $_POST['y1'] : 0; -//$y2 = isset($_POST['y2']) ? $_POST['y2'] : -1; -$w = (isset($_POST['w']) && $_POST['w']) ? $_POST['w'] : -1; -$h = (isset($_POST['h']) && $_POST['h']) ? $_POST['h'] : -1; -$tmpkey = isset($_POST['tmpkey']) ? $_POST['tmpkey'] : ''; -$id = isset($_POST['id']) ? $_POST['id'] : ''; - -if($tmpkey == '') { - bailOut('Missing key to temporary file.'); -} - -if($id == '') { - bailOut('Missing contact id.'); -} - -OCP\Util::writeLog('contacts', 'savecrop.php: key: '.$tmpkey, OCP\Util::DEBUG); - -$data = OC_Cache::get($tmpkey); -if($data) { - $image = new OC_Image(); - if($image->loadFromdata($data)) { - $w = ($w != -1 ? $w : $image->width()); - $h = ($h != -1 ? $h : $image->height()); - OCP\Util::writeLog('contacts', - 'savecrop.php, x: '.$x1.' y: '.$y1.' w: '.$w.' h: '.$h, - OCP\Util::DEBUG); - if($image->crop($x1, $y1, $w, $h)) { - if(($image->width() <= 200 && $image->height() <= 200) - || $image->resize(200)) { - $vcard = OC_Contacts_App::getContactVCard($id); - if(!$vcard) { - OC_Cache::remove($tmpkey); - bailOut(OC_Contacts_App::$l10n - ->t('Error getting contact object.')); - } - if($vcard->__isset('PHOTO')) { - OCP\Util::writeLog('contacts', - 'savecrop.php: PHOTO property exists.', - OCP\Util::DEBUG); - $property = $vcard->__get('PHOTO'); - if(!$property) { - OC_Cache::remove($tmpkey); - bailOut(OC_Contacts_App::$l10n - ->t('Error getting PHOTO property.')); - } - $property->setValue($image->__toString()); - $property->parameters[] - = new Sabre_VObject_Parameter('ENCODING', 'b'); - $property->parameters[] - = new Sabre_VObject_Parameter('TYPE', $image->mimeType()); - $vcard->__set('PHOTO', $property); - } else { - OCP\Util::writeLog('contacts', - 'savecrop.php: files: Adding PHOTO property.', - OCP\Util::DEBUG); - $vcard->addProperty('PHOTO', - $image->__toString(), array('ENCODING' => 'b', - 'TYPE' => $image->mimeType())); - } - $now = new DateTime; - $vcard->setString('REV', $now->format(DateTime::W3C)); - if(!OC_Contacts_VCard::edit($id, $vcard)) { - bailOut(OC_Contacts_App::$l10n->t('Error saving contact.')); - } - OCP\JSON::success(array( - 'data' => array( - 'id' => $id, - 'width' => $image->width(), - 'height' => $image->height(), - 'lastmodified' => OC_Contacts_App::lastModified($vcard)->format('U') - ) - )); - } else { - bailOut(OC_Contacts_App::$l10n->t('Error resizing image')); - } - } else { - bailOut(OC_Contacts_App::$l10n->t('Error cropping image')); - } - } else { - bailOut(OC_Contacts_App::$l10n->t('Error creating temporary image')); - } -} else { - bailOut(OC_Contacts_App::$l10n->t('Error finding image: ').$tmpkey); -} - -OC_Cache::remove($tmpkey); diff --git a/apps/contacts/ajax/selectaddressbook.php b/apps/contacts/ajax/selectaddressbook.php deleted file mode 100644 index e5527c8e5f1..00000000000 --- a/apps/contacts/ajax/selectaddressbook.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php -/** - * Copyright (c) 2011 Thomas Tanghus <thomas@tanghus.net> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); - -$books = OC_Contacts_Addressbook::all(OCP\USER::getUser()); -if(count($books) > 1) { - $addressbooks = array(); - foreach($books as $book) { - $addressbooks[] = array('id' => $book['id'], 'name' => $book['displayname']); - } - $tmpl = new OCP\Template("contacts", "part.selectaddressbook"); - $tmpl->assign('addressbooks', $addressbooks); - $page = $tmpl->fetchPage(); - OCP\JSON::success(array('data' => array( 'type' => 'dialog', 'page' => $page ))); -} else { - OCP\JSON::success(array('data' => array( 'type' => 'result', 'id' => $books[0]['id'] ))); -}
\ No newline at end of file diff --git a/apps/contacts/ajax/uploadimport.php b/apps/contacts/ajax/uploadimport.php deleted file mode 100644 index 87032b731a5..00000000000 --- a/apps/contacts/ajax/uploadimport.php +++ /dev/null @@ -1,80 +0,0 @@ -<?php -/** - * ownCloud - Addressbook - * - * @author Thomas Tanghus - * @copyright 2012 Thomas Tanghus <thomas@tanghus.net> - * - * 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/>. - * - */ - -// Check if we are a user -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -OCP\JSON::callCheck(); -require_once 'loghandler.php'; - -$l10n = OC_Contacts_App::$l10n; - -$view = OCP\Files::getStorage('contacts'); -if(!$view->file_exists('imports')) { - $view->mkdir('imports'); -} -$tmpfile = md5(rand()); - -// If it is a Drag'n'Drop transfer it's handled here. -$fn = (isset($_SERVER['HTTP_X_FILE_NAME']) ? $_SERVER['HTTP_X_FILE_NAME'] : false); -if($fn) { - if($view->file_put_contents('/imports/'.$fn, file_get_contents('php://input'))) { - OCP\JSON::success(array('data' => array('file'=>$tmpfile, 'name'=>$fn))); - exit(); - } else { - bailOut($l10n->t('Error uploading contacts to storage.')); - } -} - -// File input transfers are handled here -if (!isset($_FILES['importfile'])) { - OCP\Util::writeLog('contacts', - 'ajax/uploadphoto.php: No file was uploaded. Unknown error.', - OCP\Util::DEBUG); - OCP\JSON::error(array(' - data' => array( - 'message' => 'No file was uploaded. Unknown error' ))); - exit(); -} -$error = $_FILES['importfile']['error']; -if($error !== UPLOAD_ERR_OK) { - $errors = array( - 0=>$l10n->t("There is no error, the file uploaded with success"), - 1=>$l10n->t("The uploaded file exceeds the upload_max_filesize directive in php.ini").ini_get('upload_max_filesize'), - 2=>$l10n->t("The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form"), - 3=>$l10n->t("The uploaded file was only partially uploaded"), - 4=>$l10n->t("No file was uploaded"), - 6=>$l10n->t("Missing a temporary folder") - ); - bailOut($errors[$error]); -} -$file=$_FILES['importfile']; - -if(file_exists($file['tmp_name'])) { - if($view->file_put_contents('/imports/'.$file['name'], file_get_contents($file['tmp_name']))) { - OCP\JSON::success(array('data' => array('file'=>$file['name'], 'name'=>$file['name']))); - } else { - bailOut($l10n->t('Error uploading contacts to storage.')); - } -} else { - bailOut('Temporary file: \''.$file['tmp_name'].'\' has gone AWOL?'); -} diff --git a/apps/contacts/ajax/uploadphoto.php b/apps/contacts/ajax/uploadphoto.php deleted file mode 100644 index 34830b291d2..00000000000 --- a/apps/contacts/ajax/uploadphoto.php +++ /dev/null @@ -1,116 +0,0 @@ -<?php -/** - * ownCloud - Addressbook - * - * @author Thomas Tanghus - * @copyright 2012 Thomas Tanghus <thomas@tanghus.net> - * - * 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/>. - * - */ - -// Check if we are a user -OCP\JSON::checkLoggedIn(); -OCP\JSON::checkAppEnabled('contacts'); -OCP\JSON::callCheck(); - -// Firefox and Konqueror tries to download application/json for me. --Arthur -OCP\JSON::setContentTypeHeader('text/plain; charset=utf-8'); -require_once 'loghandler.php'; -$l10n = OC_Contacts_App::$l10n; -// If it is a Drag'n'Drop transfer it's handled here. -$fn = (isset($_SERVER['HTTP_X_FILE_NAME']) ? $_SERVER['HTTP_X_FILE_NAME'] : false); -if ($fn) { - if (!isset($_GET['id'])) { - bailOut($l10n->t('No contact ID was submitted.')); - } - $id = $_GET['id']; - $tmpkey = 'contact-photo-'.md5($fn); - $data = file_get_contents('php://input'); - $image = new OC_Image(); - sleep(1); // Apparently it needs time to load the data. - if($image->loadFromData($data)) { - if($image->width() > 400 || $image->height() > 400) { - $image->resize(400); // Prettier resizing than with browser and saves bandwidth. - } - if(!$image->fixOrientation()) { // No fatal error so we don't bail out. - debug('Couldn\'t save correct image orientation: '.$tmpkey); - } - if(OC_Cache::set($tmpkey, $image->data(), 600)) { - OCP\JSON::success(array( - 'data' => array( - 'mime'=>$_SERVER['CONTENT_TYPE'], - 'name'=>$fn, - 'id'=>$id, - 'tmp'=>$tmpkey))); - exit(); - } else { - bailOut($l10n->t('Couldn\'t save temporary image: ').$tmpkey); - } - } else { - bailOut($l10n->t('Couldn\'t load temporary image: ').$tmpkey); - } -} - -// Uploads from file dialog are handled here. -if (!isset($_POST['id'])) { - bailOut($l10n->t('No contact ID was submitted.')); -} -if (!isset($_FILES['imagefile'])) { - bailOut($l10n->t('No file was uploaded. Unknown error')); -} - -$error = $_FILES['imagefile']['error']; -if($error !== UPLOAD_ERR_OK) { - $errors = array( - 0=>$l10n->t("There is no error, the file uploaded with success"), - 1=>$l10n->t("The uploaded file exceeds the upload_max_filesize directive in php.ini").ini_get('upload_max_filesize'), - 2=>$l10n->t("The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form"), - 3=>$l10n->t("The uploaded file was only partially uploaded"), - 4=>$l10n->t("No file was uploaded"), - 6=>$l10n->t("Missing a temporary folder") - ); - bailOut($errors[$error]); -} -$file=$_FILES['imagefile']; - -if(file_exists($file['tmp_name'])) { - $tmpkey = 'contact-photo-'.md5(basename($file['tmp_name'])); - $image = new OC_Image(); - if($image->loadFromFile($file['tmp_name'])) { - if($image->width() > 400 || $image->height() > 400) { - $image->resize(400); // Prettier resizing than with browser and saves bandwidth. - } - if(!$image->fixOrientation()) { // No fatal error so we don't bail out. - debug('Couldn\'t save correct image orientation: '.$tmpkey); - } - if(OC_Cache::set($tmpkey, $image->data(), 600)) { - OCP\JSON::success(array( - 'data' => array( - 'mime'=>$file['type'], - 'size'=>$file['size'], - 'name'=>$file['name'], - 'id'=>$_POST['id'], - 'tmp'=>$tmpkey, - ))); - exit(); - } else { - bailOut($l10n->t('Couldn\'t save temporary image: ').$tmpkey); - } - } else { - bailOut($l10n->t('Couldn\'t load temporary image: ').$file['tmp_name']); - } -} else { - bailOut('Temporary file: \''.$file['tmp_name'].'\' has gone AWOL?'); -} diff --git a/apps/contacts/appinfo/app.php b/apps/contacts/appinfo/app.php deleted file mode 100644 index 102c04705a4..00000000000 --- a/apps/contacts/appinfo/app.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php -OC::$CLASSPATH['OC_Contacts_App'] = 'apps/contacts/lib/app.php'; -OC::$CLASSPATH['OC_Contacts_Addressbook'] = 'apps/contacts/lib/addressbook.php'; -OC::$CLASSPATH['OC_Contacts_VCard'] = 'apps/contacts/lib/vcard.php'; -OC::$CLASSPATH['OC_Contacts_Hooks'] = 'apps/contacts/lib/hooks.php'; -OC::$CLASSPATH['OC_Share_Backend_Contact'] = 'apps/contacts/lib/share/contact.php'; -OC::$CLASSPATH['OC_Share_Backend_Addressbook'] = 'apps/contacts/lib/share/addressbook.php'; -OC::$CLASSPATH['OC_Connector_Sabre_CardDAV'] = 'apps/contacts/lib/sabre/backend.php'; -OC::$CLASSPATH['OC_Connector_Sabre_CardDAV_AddressBookRoot'] = 'apps/contacts/lib/sabre/addressbookroot.php'; -OC::$CLASSPATH['OC_Connector_Sabre_CardDAV_UserAddressBooks'] = 'apps/contacts/lib/sabre/useraddressbooks.php'; -OC::$CLASSPATH['OC_Connector_Sabre_CardDAV_AddressBook'] = 'apps/contacts/lib/sabre/addressbook.php'; -OC::$CLASSPATH['OC_Connector_Sabre_CardDAV_Card'] = 'apps/contacts/lib/sabre/card.php'; -OC::$CLASSPATH['OC_Connector_Sabre_CardDAV_VCFExportPlugin'] = 'apps/contacts/lib/sabre/vcfexportplugin.php'; -OC::$CLASSPATH['OC_Search_Provider_Contacts'] = 'apps/contacts/lib/search.php'; -OCP\Util::connectHook('OC_User', 'post_createUser', 'OC_Contacts_Hooks', 'createUser'); -OCP\Util::connectHook('OC_User', 'post_deleteUser', 'OC_Contacts_Hooks', 'deleteUser'); -OCP\Util::connectHook('OC_Calendar', 'getEvents', 'OC_Contacts_Hooks', 'getBirthdayEvents'); -OCP\Util::connectHook('OC_Calendar', 'getSources', 'OC_Contacts_Hooks', 'getCalenderSources'); - -OCP\App::addNavigationEntry( array( - 'id' => 'contacts_index', - 'order' => 10, - 'href' => OCP\Util::linkTo( 'contacts', 'index.php' ), - 'icon' => OCP\Util::imagePath( 'settings', 'users.svg' ), - 'name' => OC_L10N::get('contacts')->t('Contacts') )); - -OCP\Util::addscript('contacts', 'loader'); -OC_Search::registerProvider('OC_Search_Provider_Contacts'); -OCP\Share::registerBackend('contact', 'OC_Share_Backend_Contact'); -OCP\Share::registerBackend('addressbook', 'OC_Share_Backend_Addressbook', 'contact'); - diff --git a/apps/contacts/appinfo/database.xml b/apps/contacts/appinfo/database.xml deleted file mode 100644 index 1e2e097e49b..00000000000 --- a/apps/contacts/appinfo/database.xml +++ /dev/null @@ -1,137 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1" ?> -<database> - - <name>*dbname*</name> - <create>true</create> - <overwrite>false</overwrite> - - <charset>utf8</charset> - - <table> - - <name>*dbprefix*contacts_addressbooks</name> - - <declaration> - - <field> - <name>id</name> - <type>integer</type> - <default>0</default> - <notnull>true</notnull> - <autoincrement>1</autoincrement> - <unsigned>true</unsigned> - <length>4</length> - </field> - - <field> - <name>userid</name> - <type>text</type> - <default></default> - <notnull>true</notnull> - <length>255</length> - </field> - - <field> - <name>displayname</name> - <type>text</type> - <default></default> - <notnull>false</notnull> - <length>255</length> - </field> - - <field> - <name>uri</name> - <type>text</type> - <default></default> - <notnull>false</notnull> - <length>200</length> - </field> - - <field> - <name>description</name> - <type>text</type> - <notnull>false</notnull> - </field> - - <field> - <name>ctag</name> - <type>integer</type> - <default>1</default> - <notnull>true</notnull> - <unsigned>true</unsigned> - <length>4</length> - </field> - - <field> - <name>active</name> - <type>integer</type> - <default>1</default> - <notnull>true</notnull> - <length>4</length> - </field> - - </declaration> - - </table> - - <table> - - <name>*dbprefix*contacts_cards</name> - - <declaration> - - <field> - <name>id</name> - <type>integer</type> - <default>0</default> - <notnull>true</notnull> - <autoincrement>1</autoincrement> - <unsigned>true</unsigned> - <length>4</length> - </field> - - <field> - <name>addressbookid</name> - <type>integer</type> - <default></default> - <notnull>true</notnull> - <unsigned>true</unsigned> - <length>4</length> - </field> - - <field> - <name>fullname</name> - <type>text</type> - <default></default> - <notnull>false</notnull> - <length>255</length> - </field> - - <field> - <name>carddata</name> - <type>text</type> - <notnull>false</notnull> - </field> - - <field> - <name>uri</name> - <type>text</type> - <default></default> - <notnull>false</notnull> - <length>200</length> - </field> - - <field> - <name>lastmodified</name> - <type>integer</type> - <default></default> - <notnull>false</notnull> - <unsigned>true</unsigned> - <length>4</length> - </field> - - </declaration> - - </table> - -</database> diff --git a/apps/contacts/appinfo/info.xml b/apps/contacts/appinfo/info.xml deleted file mode 100644 index 74fd6b012dd..00000000000 --- a/apps/contacts/appinfo/info.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0"?> -<info> - <id>contacts</id> - <name>Contacts</name> - <licence>AGPL</licence> - <author>Jakob Sack</author> - <require>4</require> - <shipped>true</shipped> - <description>Address book with CardDAV support.</description> - <standalone/> - <default_enable/> - <remote> - <contacts>appinfo/remote.php</contacts> - <carddav>appinfo/remote.php</carddav> - </remote> -</info> diff --git a/apps/contacts/appinfo/migrate.php b/apps/contacts/appinfo/migrate.php deleted file mode 100644 index 19c960c75a4..00000000000 --- a/apps/contacts/appinfo/migrate.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php -class OC_Migration_Provider_Contacts extends OC_Migration_Provider{ - - // Create the xml for the user supplied - function export( ) { - $options = array( - 'table'=>'contacts_addressbooks', - 'matchcol'=>'userid', - 'matchval'=>$this->uid, - 'idcol'=>'id' - ); - $ids = $this->content->copyRows( $options ); - - $options = array( - 'table'=>'contacts_cards', - 'matchcol'=>'addressbookid', - 'matchval'=>$ids - ); - - // Export tags - $ids2 = $this->content->copyRows( $options ); - - // If both returned some ids then they worked - if(is_array($ids) && is_array($ids2)) { - return true; - } else { - return false; - } - - } - - // Import function for contacts - function import( ) { - switch( $this->appinfo->version ) { - default: - // All versions of the app have had the same db structure, so all can use the same import function - $query = $this->content->prepare( 'SELECT * FROM `contacts_addressbooks` WHERE `userid` LIKE ?' ); - $results = $query->execute( array( $this->olduid ) ); - $idmap = array(); - while( $row = $results->fetchRow() ) { - // Import each addressbook - $addressbookquery = OCP\DB::prepare( 'INSERT INTO `*PREFIX*contacts_addressbooks` (`userid`, `displayname`, `uri`, `description`, `ctag`) VALUES (?, ?, ?, ?, ?)' ); - $addressbookquery->execute( array( $this->uid, $row['displayname'], $row['uri'], $row['description'], $row['ctag'] ) ); - // Map the id - $idmap[$row['id']] = OCP\DB::insertid('*PREFIX*contacts_addressbooks'); - // Make the addressbook active - OC_Contacts_Addressbook::setActive($idmap[$row['id']], true); - } - // Now tags - foreach($idmap as $oldid => $newid) { - - $query = $this->content->prepare( 'SELECT * FROM `contacts_cards` WHERE `addressbookid` LIKE ?' ); - $results = $query->execute( array( $oldid ) ); - while( $row = $results->fetchRow() ){ - // Import the contacts - $contactquery = OCP\DB::prepare( 'INSERT INTO `*PREFIX*contacts_cards` (`addressbookid`, `fullname`, `carddata`, `uri`, `lastmodified`) VALUES (?, ?, ?, ?, ?)' ); - $contactquery->execute( array( $newid, $row['fullname'], $row['carddata'], $row['uri'], $row['lastmodified'] ) ); - } - } - // All done! - break; - } - - return true; - } - -} - -// Load the provider -new OC_Migration_Provider_Contacts( 'contacts' );
\ No newline at end of file diff --git a/apps/contacts/appinfo/remote.php b/apps/contacts/appinfo/remote.php deleted file mode 100644 index d8677d7f731..00000000000 --- a/apps/contacts/appinfo/remote.php +++ /dev/null @@ -1,61 +0,0 @@ -<?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/>. - * - */ - -OCP\App::checkAppEnabled('contacts'); - -if(substr($_SERVER["REQUEST_URI"], 0, strlen(OC_App::getAppWebPath('contacts').'/carddav.php')) == OC_App::getAppWebPath('contacts').'/carddav.php') { - $baseuri = OC_App::getAppWebPath('contacts').'/carddav.php'; -} - -// only need authentication apps -$RUNTIME_APPTYPES=array('authentication'); -OC_App::loadApps($RUNTIME_APPTYPES); - -// Backends -$authBackend = new OC_Connector_Sabre_Auth(); -$principalBackend = new OC_Connector_Sabre_Principal(); -$carddavBackend = new OC_Connector_Sabre_CardDAV(); - -// Root nodes -$principalCollection = new Sabre_CalDAV_Principal_Collection($principalBackend); -$principalCollection->disableListing = true; // Disable listening - -$addressBookRoot = new OC_Connector_Sabre_CardDAV_AddressBookRoot($principalBackend, $carddavBackend); -$addressBookRoot->disableListing = true; // Disable listening - -$nodes = array( - $principalCollection, - $addressBookRoot, - ); - -// Fire up server -$server = new Sabre_DAV_Server($nodes); -$server->setBaseUri($baseuri); -// 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 -$server->addPlugin(new OC_Connector_Sabre_CardDAV_VCFExportPlugin()); - -// And off we go! -$server->exec(); diff --git a/apps/contacts/appinfo/update.php b/apps/contacts/appinfo/update.php deleted file mode 100644 index cc00b325e14..00000000000 --- a/apps/contacts/appinfo/update.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php - -$installedVersion=OCP\Config::getAppValue('contacts', 'installed_version'); -if (version_compare($installedVersion, '0.2.3', '<')) { - // First set all address books in-active. - $stmt = OCP\DB::prepare( 'UPDATE `*PREFIX*contacts_addressbooks` SET `active`=0' ); - $result = $stmt->execute(array()); - - // Then get all the active address books. - $stmt = OCP\DB::prepare( 'SELECT `userid`,`configvalue` FROM `*PREFIX*preferences` WHERE `appid`=\'contacts\' AND `configkey`=\'openaddressbooks\'' ); - $result = $stmt->execute(array()); - - // Prepare statement for updating the new 'active' field. - $stmt = OCP\DB::prepare( 'UPDATE `*PREFIX*contacts_addressbooks` SET `active`=? WHERE `id`=? AND `userid`=?' ); - while( $row = $result->fetchRow()) { - $ids = explode(';', $row['configvalue']); - foreach($ids as $id) { - $r = $stmt->execute(array(1, $id, $row['userid'])); - } - } - - // Remove the old preferences. - $stmt = OCP\DB::prepare( 'DELETE FROM `*PREFIX*preferences` WHERE `appid`=\'contacts\' AND `configkey`=\'openaddressbooks\'' ); - $result = $stmt->execute(array()); -} diff --git a/apps/contacts/appinfo/version b/apps/contacts/appinfo/version deleted file mode 100644 index 72f9fa82020..00000000000 --- a/apps/contacts/appinfo/version +++ /dev/null @@ -1 +0,0 @@ -0.2.4
\ No newline at end of file diff --git a/apps/contacts/carddav.php b/apps/contacts/carddav.php deleted file mode 100644 index 264eb30836b..00000000000 --- a/apps/contacts/carddav.php +++ /dev/null @@ -1,6 +0,0 @@ -<?php -if(!file_exists('../../lib/base.php')) { - die('Please update the path to /lib/base.php in carddav.php or make use of /remote.php/carddav/'); -} -require_once '../../lib/base.php'; -require_once 'appinfo/remote.php';
\ No newline at end of file diff --git a/apps/contacts/css/contacts.css b/apps/contacts/css/contacts.css deleted file mode 100644 index bc1a57756ae..00000000000 --- a/apps/contacts/css/contacts.css +++ /dev/null @@ -1,155 +0,0 @@ -/*dl > dt { - font-weight: bold; -}*/ -#leftcontent { top: 3.5em !important; padding: 0; margin: 0; } -#leftcontent a { padding: 0 0 0 25px; } -#rightcontent { top: 3.5em !important; padding-top: 5px; } -#leftcontent h3 { cursor: pointer; -moz-transition: background 300ms ease 0s; background: none no-repeat scroll 1em center #eee; border-bottom: 1px solid #ddd; border-top: 1px solid #fff; display: block; max-width: 100%; padding: 0.5em 0.8em; color: #666; text-shadow: 0 1px 0 #f8f8f8; font-size: 1.2em; } -#leftcontent h3:hover,#leftcontent h3:active,#leftcontent h3.active { background-color: #DBDBDB; border-bottom: 1px solid #CCCCCC; border-top: 1px solid #D4D4D4; color: #333333; font-weight: bold; } -#contacts { position: fixed; background: #fff; max-width: 100%; width: 20em; left: 12.5em; top: 3.7em; bottom: 3em; overflow: auto; padding: 0; margin: 0; } -.contacts a { height: 23px; display: block; left: 12.5em; margin: 0 0 0 0; padding: 0 0 0 25px; } -.contacts li.ui-draggable { height: 23px; } -.ui-draggable-dragging { width: 17em; cursor: move; } -.ui-state-hover { border: 1px solid dashed; } -#bottomcontrols { padding: 0; bottom:0px; height:2.8em; width: 20em; margin:0; background:#eee; border-top:1px solid #ccc; position:fixed; -moz-box-shadow: 0 -3px 3px -3px #000; -webkit-box-shadow: 0 -3px 3px -3px #000; box-shadow: 0 -3px 3px -3px #000;} -#bottomcontrols img { margin-top: 0.35em; } -#uploadprogressbar { display: none; padding: 0; bottom: 3em; height:2em; width: 20em; margin:0; background:#eee; border:1px solid #ccc; position:fixed; } -#contacts_newcontact, #bottomcontrols .settings { float: left; margin: 0.2em 0 0 1em; border: 0 none; border-radius: 0; -moz-box-shadow: none; box-shadow: none; outline: 0 none; } -#bottomcontrols .settings { float: right; margin: 0.2em 1em 0 0; } -#actionbar { clear: both; height: 30px;} -#contacts_deletecard {position:relative; float:left; background:url('%webroot%/core/img/actions/delete.svg') no-repeat center; } -#contacts_downloadcard {position:relative; float:left; background:url('%webroot%/core/img/actions/download.svg') no-repeat center; } -#contacts_propertymenu { clear: left; float:left; max-width: 15em; margin: 2em; } -#contacts_propertymenu_button { position:relative;top:0;left:0; margin: 0; } -#contacts_propertymenu_dropdown { background-color: #fff; position:relative; right:0; overflow:hidden; text-overflow:ellipsis; border: thin solid #1d2d44; box-shadow: 0 3px 5px #bbb; /* -moz-box-shadow:0 0 10px #000; -webkit-box-shadow:0 0 10px #000; box-shadow:0 0 10px #000; -moz-border-radius:0.5em; -webkit-border-radius:0.5em; border-radius:0.5em; -moz-border-radius:0.5em; -webkit-border-radius:0.5em;*/ border-radius: 3px; } -#contacts_propertymenu li { display: block; font-weight: bold; height: 20px; } -#contacts_propertymenu li a { padding: 3px; display: block } -#contacts_propertymenu li:hover { background-color: #1d2d44; } -#contacts_propertymenu li a:hover { color: #fff } -#card { width: auto; font-size: 10px; /*max-width: 70em; border: thin solid lightgray; display: block;*/ } -#firstrun { width: 100%; position: absolute; top: 5em; left: 0; text-align: center; font-weight:bold; font-size:1.5em; color:#777; } -#firstrun #selections { font-size:0.8em; margin: 2em auto auto auto; clear: both; } - -#card input[type="text"].contacts_property,input[type="email"].contacts_property,input[type="url"].contacts_property { width: 14em; float: left; font-weight: bold; } -.categories { float: left; width: 16em; } -#card input[type="checkbox"].contacts_property, #card input[type="text"], #card input[type="email"], #card input[type="url"], #card input[type="tel"], #card input[type="date"], #card select, #card textarea { background-color: #fefefe; border: 0 !important; -moz-appearance:none !important; -webkit-box-sizing:none !important; -moz-box-sizing:none !important; box-sizing:none !important; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; float: left; } -#card input[type="text"]:hover, #card input[type="text"]:focus, #card input[type="text"]:active, input[type="email"]:hover, #card input[type="url"]:hover, #card input[type="tel"]:hover, #card input[type="date"]:hover, #card input[type="date"], #card input[type="date"]:hover, #card input[type="date"]:active, #card input[type="date"]:active, #card input[type="date"]:active, #card input[type="email"]:active, #card input[type="url"]:active, #card input[type="tel"]:active, #card textarea:focus, #card textarea:hover { border: 0 !important; -webkit-appearance:textfield; -moz-appearance:textfield; -webkit-box-sizing:content-box; -moz-box-sizing:content-box; box-sizing:content-box; background:#fff; color:#333; border:1px solid #ddd; -moz-box-shadow:0 1px 1px #ddd, 0 2px 0 #bbb inset; -webkit-box-shadow:0 1px 1px #ddd, 0 1px 0 #bbb inset; box-shadow:0 1px 1px #ddd, 0 1px 0 #bbb inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; outline:none; float: left; } -#card textarea { width: 80%; min-height: 5em; min-width: 30em; margin: 0 !important; padding: 0 !important; outline: 0 !important;} -dl.form { width: 100%; float: left; clear: right; margin: 0; padding: 0; cursor: normal; } -.form dt { display: table-cell; clear: left; float: left; width: 7em; margin: 0; padding: 0.8em 0.5em 0 0; text-align:right; text-overflow:ellipsis; o-text-overflow: ellipsis; vertical-align: text-bottom; color: #bbb;/* white-space: pre-wrap; white-space: -moz-pre-wrap !important; white-space: -pre-wrap; white-space: -o-pre-wrap;*/ } -.form dd { display: table-cell; clear: right; float: left; margin: 0; padding: 0px; white-space: nowrap; vertical-align: text-bottom; } -label:hover, dt:hover { color: #333; } -/*::-webkit-input-placeholder { color: #bbb; } -:-moz-placeholder { color: #bbb; } -:-ms-input-placeholder { color: #bbb; }*/ -.droptarget { margin: 0.5em; padding: 0.5em; border: thin solid #ccc; -moz-border-radius:.3em; -webkit-border-radius:.3em; border-radius:.3em; } -.droppable { margin: 0.5em; padding: 0.5em; border: thin dashed #333; -moz-border-radius:.3em; -webkit-border-radius:.3em; border-radius:.3em; } -.loading { background: url('%webroot%/core/img/loading.gif') no-repeat center !important; /*cursor: progress; */ cursor: wait; } -.ui-autocomplete-loading { background: url('%webroot%/core/img/loading.gif') right center no-repeat; } -.ui-autocomplete-input { margin-top: 0.5em; } /* Ugly hack */ -.float { float: left; } -.svg { border: inherit; background: inherit; } -.listactions { height: 1em; width:60px; float: left; clear: right; } -.add,.edit,.delete,.mail, .globe, .upload, .download, .cloud, .share { cursor: pointer; width: 20px; height: 20px; margin: 0; float: left; position:relative; opacity: 0.1; } -.add:hover,.edit:hover,.delete:hover,.mail:hover, .globe:hover, .upload:hover, .download:hover .cloud:hover { opacity: 1.0 } -.add { background:url('%webroot%/core/img/actions/add.svg') no-repeat center; clear: both; } -.delete { background:url('%webroot%/core/img/actions/delete.svg') no-repeat center; } -.edit { background:url('%webroot%/core/img/actions/rename.svg') no-repeat center; } -.share { background:url('%webroot%/core/img/actions/share.svg') no-repeat center; } -.mail { background:url('%webroot%/core/img/actions/mail.svg') no-repeat center; } -.upload { background:url('%webroot%/core/img/actions/upload.svg') no-repeat center; } -.download { background:url('%webroot%/core/img/actions/download.svg') no-repeat center; } -.cloud { background:url('%webroot%/core/img/places/picture.svg') no-repeat center; } -/*.globe { background:url('../img/globe.svg') no-repeat center; }*/ -.globe { background:url('%webroot%/core/img/actions/public.svg') no-repeat center; } -.transparent{ opacity: 0.6; } -#edit_name_dialog { padding:0; } -#edit_name_dialog > input { width: 15em; } -#edit_address_dialog { /*width: 30em;*/ } -#edit_address_dialog > input { width: 15em; } -#edit_photo_dialog_img { display: block; min-width: 150; min-height: 200; } -#fn { float: left !important; width: 18em !important; } -#name { /*position: absolute; top: 0px; left: 0px;*/ min-width: 25em; height: 2em; clear: right; display: block; } -#identityprops { /*position: absolute; top: 2.5em; left: 0px;*/ } -#contact_photo { float: left; margin: 1em; } -#contact_identity { min-width: 30em; padding: 0.5em;} -.contactsection { position: relative; float: left; width: 35em; padding: 0.5em; height: auto; } - -#cropbox { margin: auto; } -#contacts_details_photo_wrapper { width: 150px; } -#contacts_details_photo_wrapper.wait { opacity: 0.6; filter:alpha(opacity=0.6); z-index:1000; background: url('%webroot%/core/img/loading.gif') no-repeat center center; cursor: wait; } -.contacts_details_photo { border-radius: 0.5em; border: thin solid #bbb; margin: 0.3em; background: url('%webroot%/core/img/loading.gif') no-repeat center center; -moz-box-shadow: 0 1px 3px #777; -webkit-box-shadow: 0 1px 3px #777; box-shadow: 0 1px 3px #777; opacity: 1; } -.contacts_details_photo:hover { background: #fff; cursor: default; } -#phototools { position:absolute; margin: 5px 0 0 10px; width:auto; height:22px; padding:0px; background-color:#fff; list-style-type:none; border-radius: 0.5em; -moz-box-shadow: 0 1px 3px #777; -webkit-box-shadow: 0 1px 3px #777; box-shadow: 0 1px 3px #777; } -#phototools li { display: inline; } -#phototools li a { float:left; cursor:pointer; width:22px; height:22px; opacity: 0.6; } -#phototools li a:hover { opacity: 0.8; } - -/* Address editor */ -#addressdisplay { padding: 0.5em; } -dl.addresscard { background-color: #fff; float: left; width: auto; margin: 0 0.3em 0.3em 0.3em; padding: 0; border: 0; } -dl.addresscard dd {} -dl.addresscard dt { padding: 0.3em; font-weight: bold; clear: both; color: #aaa; } -dl.addresscard dt:hover { color:#777; } -dl.addresscard dd > ul { margin: 0.3em; padding: 0.3em; } -dl.addresscard .action { float: right; } -#address dt { width: 30%; white-space:nowrap; } -#address dd { width: 66%; } -#address input { width: 12em; padding: 0.6em 0.5em 0.4em; } -#address input:-moz-placeholder { color: #aaa; } -#address input::-webkit-input-placeholder { color: #aaa; } -#address input:-ms-input-placeholder { color: #aaa; } -#address input:placeholder { color: #aaa; } -#adr_type {} /* Select */ -#adr_pobox {} -#adr_extended {} -#adr_street {} -#adr_city {} -#adr_region {} -#adr_zipcode {} -#adr_country {} - -#file_upload_form { width: 0; height: 0; } -#file_upload_target, #import_upload_target, #crop_target { display:none; } -#file_upload_start, #import_upload_start { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter:alpha(opacity=0); opacity:0; z-index:1001; width:0; height:0;} -#import_upload_start { width: 20px; height: 20px; margin: 0 0 -24px 0; padding: 0;} -input[type="checkbox"] { width: 20px; height: 20px; vertical-align: bottom; } -.big { font-weight:bold; font-size:1.2em; } -.huge { font-weight:bold; font-size:1.5em; } -.propertycontainer dd { float: left; width: 25em; } -/*.propertylist { clear: none; max-width: 33em; }*/ -.propertylist li.propertycontainer { white-space: nowrap; min-width: 35em; display: block; clear: both; } -.propertycontainer[data-element="EMAIL"] > input[type="email"],.propertycontainer[data-element="TEL"] > input[type="text"] { min-width: 12em !important; float: left; } -.propertylist li > input[type="checkbox"],input[type="radio"] { float: left; clear: left; width: 16px; height: 16px; vertical-align: middle; padding: 0; } -.propertylist li > select { float: left; max-width: 8em; } -.propertylist li > .select_wrapper { float: left; overflow: hidden; color: #bbb; font-size: 0.8em; } -.propertylist li > .select_wrapper select { float: left; overflow: hidden; color: #bbb; } -.propertylist li > .select_wrapper select option { color: #777; } -.propertylist li > .select_wrapper select:hover,.propertylist li > select:focus,.propertylist li > select:active { color: #777; } -.propertylist li > .select_wrapper select.impp { margin-left: -23px; direction: rtl; } -.propertylist li > .select_wrapper select.types { margin-right: -23px; } -.propertylist li > input[type="checkbox"].impp { clear: none; } -.propertylist li > label.xab { display: block; color: #bbb; float:left; clear: both; padding: 0.5em 0 0 2.5em; } -.propertylist li > label.xab:hover { color: #777; } -.typelist[type="button"] { float: left; max-width: 8em; border: 0; background-color: #fff; color: #bbb; box-shadow: none; } /* for multiselect */ -.typelist[type="button"]:hover { color: #777; } /* for multiselect */ -.addresslist { clear: both; font-weight: bold; } -#ninjahelp { position: absolute; bottom: 0; left: 0; right: 0; padding: 1em; margin: 1em; opacity: 0.9; } -#ninjahelp .close { position: absolute; top: 5px; right: 5px; height: 20px; width: 20px; } -#ninjahelp h2, .help-section h3 { width: 100%; font-weight: bold; text-align: center; } -#ninjahelp h2 { font-size: 1.4em; } -.help-section { width: 45%; min-width: 35em; float: left; } -.help-section h3 { font-size: 1.2em; } -.help-section dl { width: 100%; float: left; clear: right; margin: 0; padding: 0; cursor: normal; } -.help-section dt { display: table-cell; clear: left; float: left; width: 35%; margin: 0; padding: 0.2em; text-align: right; text-overflow: ellipsis; vertical-align: text-bottom; font-weight: bold: } -.help-section dd { display: table-cell; clear: right; float: left; margin: 0; padding: 0.2em; white-space: nowrap; vertical-align: text-bottom; } -.contacts-settings dl { width: 100%; } -.addressbooks-settings table { width: 100%; } -.addressbooks-settings .actions { width: 100%; white-space: nowrap; } -.addressbooks-settings .actions * { float: left; } -.addressbooks-settings .actions input.name { width: 5em; } -.addressbooks-settings .actions input.name { width: 7em; } -.addressbooks-settings a.action { opacity: 0.2; } -.addressbooks-settings a.action:hover { opacity: 1; } -.addressbooks-settings td.active, .addressbooks-settings td.action { width: 20px; } - diff --git a/apps/contacts/css/jquery.Jcrop.css b/apps/contacts/css/jquery.Jcrop.css deleted file mode 100644 index a9ba4746e07..00000000000 --- a/apps/contacts/css/jquery.Jcrop.css +++ /dev/null @@ -1,84 +0,0 @@ -/* jquery.Jcrop.css - The code contained in this file is free software under MIT License - Copyright (c)2008-2011 Tapmodo Interactive LLC -*/ - -/* - The outer-most container in a typical Jcrop instance - If you are having difficulty with formatting related to styles - on a parent element, place any fixes here or in a like selector -*/ -.jcrop-holder { - direction: ltr; - text-align: left; -} - -.jcrop-vline, .jcrop-hline { - background: white url('%appswebroot%/contacts/img/Jcrop.gif') top left repeat; - font-size: 0px; - position: absolute; -} - -.jcrop-vline { - height: 100%; - width: 1px !important; -} - -.jcrop-hline { - width: 100%; - height: 1px !important; -} - -.jcrop-vline.right { - right: 0px; -} - -.jcrop-hline.bottom { - bottom: 0px; -} - -.jcrop-handle { - background-color: #333; - border: 1px #eee solid; - font-size: 1px; -} - -.jcrop-tracker { - height: 100%; - -webkit-tap-highlight-color: transparent; /* "turn off" link highlight */ - -webkit-touch-callout: none; /* disable callout, image save panel */ - -webkit-user-select: none; /* disable cut copy paste */ - width: 100%; -} - -/* -*/ - -.jcrop-light .jcrop-vline, .jcrop-light .jcrop-hline { - background: white; - filter: Alpha(opacity=70) !important; - opacity: .70 !important; -} - -.jcrop-light .jcrop-handle { - background-color: black; - border-color: white; - border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; -} - -.jcrop-dark .jcrop-vline, .jcrop-dark .jcrop-hline { - background: black; - filter: Alpha(opacity=70) !important; - opacity: 0.70 !important; -} - -.jcrop-dark .jcrop-handle { - background-color: white; - border-color: black; - border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; -} - diff --git a/apps/contacts/css/jquery.combobox.css b/apps/contacts/css/jquery.combobox.css deleted file mode 100644 index 59294235d29..00000000000 --- a/apps/contacts/css/jquery.combobox.css +++ /dev/null @@ -1,3 +0,0 @@ -.combo-button { background:url('../../../core/img/actions/triangle-s.svg') no-repeat center; margin-left: -1px; float: left; border: none; } -.ui-button-icon-only .ui-button-text { padding: 0.35em; } -.ui-autocomplete-input { margin: 0; padding: 0.48em 0 0.47em 0.45em; } diff --git a/apps/contacts/export.php b/apps/contacts/export.php deleted file mode 100644 index 161ca8047ac..00000000000 --- a/apps/contacts/export.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php -/** - * Copyright (c) 2011-2012 Thomas Tanghus <thomas@tanghus.net> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - - -OCP\User::checkLoggedIn(); -OCP\App::checkAppEnabled('contacts'); -$bookid = isset($_GET['bookid']) ? $_GET['bookid'] : null; -$contactid = isset($_GET['contactid']) ? $_GET['contactid'] : null; -$nl = "\n"; -if(isset($bookid)) { - $addressbook = OC_Contacts_App::getAddressbook($bookid); - //$cardobjects = OC_Contacts_VCard::all($bookid); - header('Content-Type: text/directory'); - header('Content-Disposition: inline; filename=' - . str_replace(' ', '_', $addressbook['displayname']) . '.vcf'); - - $start = 0; - $batchsize = OCP\Config::getUserValue(OCP\User::getUser(), - 'contacts', - 'export_batch_size', 20); - while($cardobjects = OC_Contacts_VCard::all($bookid, $start, $batchsize)){ - foreach($cardobjects as $card) { - echo $card['carddata'] . $nl; - } - $start += $batchsize; - } -}elseif(isset($contactid)) { - $data = OC_Contacts_App::getContactObject($contactid); - header('Content-Type: text/vcard'); - header('Content-Disposition: inline; filename=' - . str_replace(' ', '_', $data['fullname']) . '.vcf'); - echo $data['carddata']; -} diff --git a/apps/contacts/img/Jcrop.gif b/apps/contacts/img/Jcrop.gif Binary files differdeleted file mode 100644 index 72ea7ccb532..00000000000 --- a/apps/contacts/img/Jcrop.gif +++ /dev/null diff --git a/apps/contacts/img/contact-new.png b/apps/contacts/img/contact-new.png Binary files differdeleted file mode 100644 index a91f2e620fa..00000000000 --- a/apps/contacts/img/contact-new.png +++ /dev/null diff --git a/apps/contacts/img/contact-new.svg b/apps/contacts/img/contact-new.svg deleted file mode 100644 index 8322414dac3..00000000000 --- a/apps/contacts/img/contact-new.svg +++ /dev/null @@ -1,129 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="20" - height="20" - id="svg3796" - inkscape:version="0.48.2 r9819" - sodipodi:docname="contact-new.svg"> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="640" - inkscape:window-height="480" - id="namedview18" - showgrid="false" - inkscape:zoom="11.8" - inkscape:cx="10" - inkscape:cy="10" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="0" - inkscape:current-layer="svg3796" /> - <defs - id="defs3798"> - <linearGradient - id="linearGradient4338"> - <stop - id="stop4340" - style="stop-color:#000000;stop-opacity:1" - offset="0" /> - </linearGradient> - </defs> - <metadata - id="metadata3801"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="layer1" - transform="matrix(1.2460746,0,0,1.2420314,-0.12303732,-0.51608095)"> - <g - transform="matrix(1.0633871,0,0,1.0633871,-0.03169354,-0.53733376)" - id="g4344"> - <rect - width="13.408871" - height="9.1084709" - x="0.5" - y="2.5104902" - id="rect3804" - style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - <rect - width="3.168951" - height="4.3600798" - x="1.2451615" - y="3.2825413" - id="rect4314" - style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - <rect - width="6.1161237" - height="0.70080578" - x="5.001205" - y="3.3217869" - id="rect4316" - style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - <rect - width="2.5802398" - height="0.70080578" - x="5.001205" - y="5.1219902" - id="rect4318" - style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - <rect - width="8.1389055" - height="0.70080578" - x="1.2264099" - y="8.4221916" - id="rect4322" - style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - <rect - width="4.3481827" - height="0.70080578" - x="1.2264099" - y="9.9221954" - id="rect4326" - style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - <rect - width="2.5802398" - height="0.70080578" - x="8.6010017" - y="5.1219902" - id="rect4328" - style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - <rect - width="4.9374957" - height="0.70080578" - x="5.001205" - y="6.8221936" - id="rect4330" - style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - <path - d="m 10.823783,8.4435567 1.999999,0 0,1.9999993 2,0 0,2 -2,0 0,2 -1.999999,0 0,-2 -2.0000004,0 0,-2 2.0000004,0 z" - id="path4336" - style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - inkscape:connector-curvature="0" /> - </g> - </g> -</svg> diff --git a/apps/contacts/img/globe.svg b/apps/contacts/img/globe.svg deleted file mode 100644 index 4e43cfba10a..00000000000 --- a/apps/contacts/img/globe.svg +++ /dev/null @@ -1,102 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - version="1.0" - width="16" - height="16" - id="svg2485"> - <defs - id="defs2487"> - <linearGradient - id="linearGradient3707-319-631"> - <stop - id="stop4637" - style="stop-color:#254b6d;stop-opacity:1" - offset="0" /> - <stop - id="stop4639" - style="stop-color:#415b73;stop-opacity:1" - offset="0.5" /> - <stop - id="stop4641" - style="stop-color:#6195b5;stop-opacity:1" - offset="1" /> - </linearGradient> - <linearGradient - x1="20" - y1="43" - x2="20" - y2="2.6887112" - id="linearGradient2483" - xlink:href="#linearGradient3707-319-631" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.3769285,0,0,0.3769199,-1.196178,-0.8960149)" /> - <linearGradient - id="linearGradient2867-449-88-871-390-598-476-591-434-148"> - <stop - id="stop4627" - style="stop-color:#51cfee;stop-opacity:1" - offset="0" /> - <stop - id="stop4629" - style="stop-color:#49a3d2;stop-opacity:1" - offset="0.26238" /> - <stop - id="stop4631" - style="stop-color:#3470b4;stop-opacity:1" - offset="0.704952" /> - <stop - id="stop4633" - style="stop-color:#273567;stop-opacity:1" - offset="1" /> - </linearGradient> - <radialGradient - cx="61.240059" - cy="-8.7256308" - r="9.7552834" - fx="61.240059" - fy="-8.7256308" - id="radialGradient2481" - xlink:href="#linearGradient2867-449-88-871-390-598-476-591-434-148" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0,1.3551574,-1.3551567,0,-3.824604,-80.384092)" /> - <linearGradient - id="linearGradient4873"> - <stop - id="stop4875" - style="stop-color:#ffffff;stop-opacity:1" - offset="0" /> - <stop - id="stop4877" - style="stop-color:#ffffff;stop-opacity:0" - offset="1" /> - </linearGradient> - <linearGradient - x1="63.397362" - y1="-12.489107" - x2="63.397362" - y2="5.4675598" - id="linearGradient2464" - xlink:href="#linearGradient4873" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.7432394,0,0,0.7432224,-38.229789,10.609333)" /> - </defs> - <g - id="layer1"> - <path - d="M 15.5,7.999735 C 15.5,12.142003 12.141888,15.5 8.000094,15.5 C 3.857922,15.5 0.5,12.141965 0.5,7.999735 C 0.5,3.8576552 3.857922,0.4999997 8.000094,0.4999997 C 12.141888,0.4999997 15.5,3.8576552 15.5,7.999735 L 15.5,7.999735 z" - id="path6495" - style="fill:url(#radialGradient2481);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2483);stroke-width:0.99999994;stroke-miterlimit:4;stroke-dasharray:none" /> - <path - d="M 8.1022062,0.95621712 L 7.236144,1.0568701 L 6.2834735,1.3210847 C 6.3646244,1.2921995 6.446834,1.2606694 6.5309208,1.2330132 L 6.4195696,1.0317069 L 6.048401,1.0946151 L 5.8628152,1.2707582 L 5.5782512,1.3085031 L 5.318433,1.4343196 L 5.1947098,1.4972277 L 5.157592,1.5475543 L 4.9720082,1.5852992 L 4.8606579,1.8243504 L 4.712189,1.522391 L 4.6626994,1.6482076 L 4.6874462,1.9879118 L 4.4523728,2.1892181 L 4.3162766,2.5540857 L 4.6008407,2.5540857 L 4.712191,2.3150345 L 4.7493088,2.2269631 C 4.8744282,2.136984 4.9930427,2.0367771 5.1204782,1.9501669 L 5.4174142,2.05082 C 5.6107409,2.1843878 5.8054259,2.3200676 5.9989133,2.4534326 L 6.2834735,2.1892181 L 5.9617936,2.05082 L 5.8133266,1.7488605 L 5.2689442,1.6859524 L 5.2565714,1.6230443 L 5.4916438,1.6733709 L 5.6277409,1.5349726 L 5.9246759,1.4720643 C 5.9949454,1.4373108 6.06407,1.4122795 6.1350055,1.3839929 L 5.9494207,1.560136 L 6.6175262,2.0256568 L 6.6175262,2.302453 L 6.357707,2.5666673 L 6.7041325,3.2712399 L 6.9392071,3.1328408 L 7.2361431,2.6673207 C 7.6536127,2.5360677 8.0298636,2.383337 8.423888,2.2017997 L 8.3991411,2.3779426 L 8.5970969,2.5163408 L 8.9435226,2.2772895 L 8.7703107,2.0759833 L 8.5352353,2.2143814 L 8.4610018,2.1892185 C 8.4780536,2.1812953 8.4933662,2.1721092 8.5104914,2.1640557 L 8.8569181,1.2581766 L 8.1022062,0.95621712 z M 4.712189,2.3150345 L 4.9967521,2.5163408 L 5.2318265,2.5163408 L 5.2318265,2.2772895 L 4.9472634,2.1514733 L 4.712189,2.3150345 L 4.712189,2.3150345 z M 11.281895,2.1514733 L 10.774628,2.2772895 L 10.452951,2.4911776 L 10.452951,2.6799019 L 9.9456829,3.0070243 L 10.044661,3.4977095 L 10.341597,3.2838208 L 10.527183,3.4977095 L 10.737514,3.6235259 L 10.873608,3.2586575 L 10.799375,3.0447699 L 10.873608,2.8937896 L 11.170544,2.6169941 L 11.30664,2.6169941 L 11.170544,2.9189543 L 11.170544,3.1957496 C 11.292932,3.1618717 11.416467,3.1486778 11.541713,3.1328408 L 11.195288,3.3844746 L 11.170543,3.5354537 L 10.774628,3.8751588 L 10.366341,3.7745049 L 10.366341,3.5354537 L 10.180756,3.6612703 L 10.267364,3.8751588 L 9.9704267,3.8751588 L 9.8095868,4.1519548 L 9.61163,4.3784244 L 9.2528324,4.4539139 L 9.463162,4.6678019 L 9.5126507,4.88169 L 9.2528324,4.88169 L 8.9064068,5.0704143 L 8.9064068,5.6240059 L 9.0672458,5.6240059 L 9.2157146,5.7875676 L 9.5497684,5.6240059 L 9.6734907,5.2843013 L 9.920937,5.1333218 L 9.9704267,5.0075057 L 10.366341,4.9068526 L 10.589042,5.1584854 L 10.824117,5.2843013 L 10.688021,5.5610979 L 10.898351,5.49819 L 11.009701,5.2213934 L 10.737512,4.9068526 L 10.848862,4.9068526 L 11.121054,5.1333218 L 11.170543,5.4352821 L 11.405615,5.7120781 L 11.467479,5.3094657 L 11.591202,5.2465566 C 11.722897,5.3855865 11.826706,5.5556097 11.937626,5.7120781 L 12.345913,5.7372433 L 12.580987,5.8882234 L 12.469637,6.0517841 L 12.234564,6.2656727 L 11.888135,6.2656727 L 11.430361,6.1146942 L 11.195287,6.1398593 L 11.022074,6.3411657 L 10.527181,5.8378996 L 10.180756,5.7372462 L 9.6734907,5.8001547 L 9.2280866,5.9259711 C 8.974001,6.2188978 8.7138634,6.5150518 8.4733747,6.8192683 L 8.1888107,7.5238405 L 8.3249076,7.6748196 L 8.0774604,8.0396877 L 8.3496515,8.6813514 C 8.5761437,8.9418962 8.8039678,9.2006825 9.030129,9.461412 L 9.3641827,9.1720348 L 9.5002778,9.3481795 L 9.8590764,9.1091277 L 9.9827973,9.2475248 L 10.341595,9.2475248 L 10.551927,9.4865757 L 10.428203,9.914352 L 10.675649,10.203731 L 10.663275,10.706995 L 10.848861,11.071864 L 10.712766,11.386405 C 10.699498,11.611997 10.68802,11.827605 10.68802,12.053231 C 10.79718,12.358902 10.906621,12.663823 11.0097,12.971693 L 11.083934,13.462375 L 11.083934,13.714009 L 11.281891,13.714009 L 11.566453,13.525283 L 11.91288,13.525283 L 12.432517,12.933947 L 12.370656,12.732639 L 12.717083,12.418101 L 12.457262,12.128722 L 12.76657,11.877089 L 13.063506,11.688364 L 13.199602,11.537384 L 13.112995,11.19768 C 13.112995,10.911684 13.112996,10.628161 13.112995,10.342127 L 13.348069,9.8136993 L 13.645006,9.4865757 L 13.966685,8.6813514 L 13.966685,8.467463 C 13.806607,8.4879689 13.653171,8.506459 13.496537,8.5177905 L 13.818218,8.1906678 L 14.263621,7.8887078 L 14.498696,7.6119125 L 14.498696,7.3099534 C 14.445379,7.2077028 14.391536,7.0976601 14.337854,6.9954116 L 14.127525,7.2470431 L 13.966685,7.0583197 L 13.731609,6.8695964 L 13.731609,6.4795648 L 14.003802,6.7941047 L 14.313111,6.75636 C 14.452648,6.8851798 14.586636,6.9997236 14.709024,7.1463926 L 14.906986,6.9199159 C 14.906986,6.6761022 14.63695,5.4724677 14.053296,4.4539139 C 13.46964,3.4356954 12.444894,2.5037591 12.444895,2.5037591 L 12.370661,2.6421572 L 12.098469,2.9441167 L 11.752043,2.579249 L 12.098469,2.579249 L 12.259308,2.4031061 L 11.615949,2.2772895 L 11.281895,2.1514733 z M 3.8461259,2.3150345 L 3.7224027,2.6421572 C 3.7224027,2.6421572 3.5057941,2.6785236 3.4502116,2.6924839 C 2.7403769,3.3576613 1.3089548,4.8004591 0.97574709,7.5112538 C 0.98894063,7.5741032 1.2108206,7.9390292 1.2108206,7.9390292 L 1.7552039,8.2661509 L 2.2995852,8.417131 L 2.5346596,8.7065091 L 2.8934573,8.9833054 L 3.1037868,8.9455608 L 3.2522558,9.0210508 L 3.2522558,9.0713763 L 3.0542972,9.6375498 L 2.8934573,9.8766016 L 2.942946,9.9898366 L 2.8192238,10.442776 L 3.2769996,11.298327 L 3.7471476,11.713522 L 3.957476,12.015482 L 3.9327303,12.644563 L 4.0811982,12.99685 L 3.9327303,13.67626 C 3.9327303,13.67626 3.9129189,13.670673 3.9327303,13.739167 C 3.9527179,13.807695 4.759781,14.268689 4.8111654,14.22985 C 4.8623746,14.190288 4.9101447,14.154361 4.9101447,14.154361 L 4.860656,14.00338 L 5.0709847,13.802075 L 5.1452191,13.588188 L 5.4792709,13.474953 L 5.7390901,12.820706 L 5.6648567,12.644563 L 5.8380694,12.367767 L 6.2339838,12.279695 L 6.4319415,11.801593 L 6.3824509,11.210255 L 6.6917597,10.769898 L 6.7412484,10.316959 C 6.3168632,10.102948 5.9004921,9.8830534 5.4792709,9.6627135 L 5.2689423,9.2475198 L 4.8853999,9.1594491 L 4.6750703,8.5932746 L 4.1678047,8.6561827 L 3.7224017,8.32906 L 3.2522529,8.7442535 L 3.2522529,8.8071626 C 3.1114329,8.7658292 2.9446126,8.7597462 2.8192238,8.6813464 L 2.7202454,8.3793874 L 2.7202454,8.0522637 L 2.3985655,8.0900083 C 2.4244522,7.8816386 2.4591052,7.6692598 2.485171,7.4609265 L 2.2995852,7.4609265 L 2.1140005,7.6999783 L 1.9407887,7.7880501 L 1.6809694,7.6370692 L 1.6562245,7.3099456 L 1.7057143,6.9576606 L 2.0892557,6.6557005 L 2.3985645,6.6557005 L 2.4604271,6.4795582 L 2.8439686,6.5676288 L 3.1285316,6.932497 L 3.1780203,6.3285781 L 3.672914,5.9133853 L 3.8461259,5.4730269 L 4.2172963,5.3220476 L 4.415253,5.0200879 L 4.8854018,4.9320161 L 5.1204763,4.57973 C 4.8878,4.57973 4.6479303,4.57973 4.415253,4.57973 L 4.8606579,4.3658421 L 5.1699649,4.3658421 L 5.5658793,4.2274443 L 5.6401139,4.6174752 L 5.8133266,4.3406788 L 5.615369,4.2022808 L 5.6648596,4.0387201 L 5.5040187,3.8877395 L 5.3308048,3.8374132 L 5.3802955,3.6486888 L 5.2441994,3.3844746 L 4.9348905,3.5102908 L 4.9843801,3.2712399 L 4.6255827,3.0573516 L 4.3410204,3.5606172 L 4.3657663,3.7367603 L 4.0812032,3.8625768 L 3.9079904,4.2526078 L 3.821384,3.8877395 L 3.3388631,3.6864335 L 3.2522568,3.4096375 L 3.9079904,3.0321885 L 4.1925535,2.755392 L 4.2173002,2.4282694 L 4.0564593,2.3401977 L 3.8461298,2.315035 L 3.8461259,2.3150345 z M 9.1538541,2.9189543 L 9.1538541,3.1202592 L 9.2652062,3.246076 L 9.2652062,3.5480356 L 9.2033438,3.9506479 L 9.5250246,3.8877395 L 9.760098,3.6486888 L 9.5497694,3.4473819 C 9.4815603,3.2626763 9.4124355,3.0961113 9.3270669,2.9189543 L 9.1538541,2.9189543 z M 8.881662,3.3215656 L 8.6837063,3.3844746 L 8.7331959,3.7493421 L 8.9930152,3.6109428 L 8.881662,3.3215656 L 8.881662,3.3215656 z M 12.506754,6.6305386 L 12.803691,6.9828228 L 13.162489,7.7628866 L 13.385189,8.0145183 L 13.273839,8.2787347 L 13.471797,8.5177846 C 13.380952,8.5238987 13.292977,8.5303684 13.199605,8.5303684 C 13.029984,8.1679096 12.895741,7.802374 12.766575,7.4231829 L 12.543871,7.1715503 L 12.420149,6.7186111 L 12.506754,6.6305399 L 12.506754,6.6305386 z" - id="path6534" - style="opacity:0.4;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" /> - <path - d="M 14.500001,7.9997709 C 14.500001,11.589737 11.589636,14.5 8.0000818,14.5 C 4.4101984,14.5 1.5000001,11.589705 1.5000001,7.9997709 C 1.5000001,4.4099703 4.4101984,1.5000014 8.0000818,1.5000014 C 11.589636,1.5000014 14.500001,4.4099703 14.500001,7.9997709 L 14.500001,7.9997709 z" - id="path2451" - style="opacity:0.4;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2464);stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - </g> -</svg> diff --git a/apps/contacts/img/person.png b/apps/contacts/img/person.png Binary files differdeleted file mode 100644 index e88bb5653af..00000000000 --- a/apps/contacts/img/person.png +++ /dev/null diff --git a/apps/contacts/img/person.svg b/apps/contacts/img/person.svg deleted file mode 100644 index c4842c5916b..00000000000 --- a/apps/contacts/img/person.svg +++ /dev/null @@ -1,175 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - version="1.0" - width="22" - height="22" - id="svg11300"> - <defs - id="defs3"> - <linearGradient - id="linearGradient3785"> - <stop - id="stop3787" - style="stop-color:#b8b8b8;stop-opacity:1" - offset="0" /> - <stop - id="stop3789" - style="stop-color:#878787;stop-opacity:1" - offset="1" /> - </linearGradient> - <linearGradient - id="linearGradient6954"> - <stop - id="stop6960" - style="stop-color:#f5f5f5;stop-opacity:1" - offset="0" /> - <stop - id="stop6962" - style="stop-color:#d2d2d2;stop-opacity:1" - offset="1" /> - </linearGradient> - <linearGradient - id="linearGradient3341"> - <stop - id="stop3343" - style="stop-color:#ffffff;stop-opacity:1" - offset="0" /> - <stop - id="stop3345" - style="stop-color:#ffffff;stop-opacity:0" - offset="1" /> - </linearGradient> - <linearGradient - id="linearGradient5060"> - <stop - id="stop5062" - style="stop-color:#000000;stop-opacity:1" - offset="0" /> - <stop - id="stop5064" - style="stop-color:#000000;stop-opacity:0" - offset="1" /> - </linearGradient> - <radialGradient - cx="24.999998" - cy="28.659998" - r="16" - fx="24.999998" - fy="28.659998" - id="radialGradient2871" - xlink:href="#linearGradient6954" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.67742373,0,0,0.19285627,-5.0162555,9.9977318)" /> - <linearGradient - x1="30" - y1="25.084745" - x2="30" - y2="45" - id="linearGradient2873" - xlink:href="#linearGradient3785" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.51613236,0,0,0.51667107,-0.98397254,-0.49180897)" /> - <linearGradient - x1="29.996229" - y1="21.440447" - x2="29.996229" - y2="43.531425" - id="linearGradient2875" - xlink:href="#linearGradient3341" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.51613236,0,0,0.51667107,-0.98397254,-0.49180897)" /> - <radialGradient - cx="26.375898" - cy="12.31301" - r="8" - fx="26.375898" - fy="12.31301" - id="radialGradient2877" - xlink:href="#linearGradient6954" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.86552039,-0.07102871,0.06760608,0.84907396,-11.038912,-4.204803)" /> - <linearGradient - x1="30" - y1="5" - x2="30" - y2="44.678879" - id="linearGradient2879" - xlink:href="#linearGradient3785" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.52770326,0,0,0.53573244,-1.3310981,-1.4043014)" /> - <linearGradient - x1="22" - y1="39" - x2="17" - y2="37.4375" - id="linearGradient2881" - xlink:href="#linearGradient5060" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.74999995,0,0,0.43478262,-5.1276295,2.9173914)" /> - <radialGradient - cx="30" - cy="33.1875" - r="4.6875" - fx="30" - fy="33.1875" - id="radialGradient2883" - xlink:href="#linearGradient5060" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.81491924,-3.8844793e-7,1.136461e-7,0.25340272,-9.9475804,6.5902095)" /> - <linearGradient - x1="22" - y1="39" - x2="17" - y2="37.4375" - id="linearGradient2885" - xlink:href="#linearGradient5060" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(-0.74999995,0,0,0.43478262,34.15,2.9173914)" /> - <linearGradient - x1="30.00001" - y1="6.333993" - x2="30.00001" - y2="24.913183" - id="linearGradient2887" - xlink:href="#linearGradient3341" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.52770326,0,0,0.53573244,-1.3310981,-1.4043014)" /> - </defs> - <g - transform="translate(-3,-1.0000003)" - id="g3758"> - <path - d="m 12.177403,10.099947 c 0.23753,1.124653 0.370116,1.975373 0.177421,3.100026 -1.502303,1.247697 -5.3445034,1.80835 -5.3387447,3.100025 l -0.5161321,3.875036 c 0,1.284073 3.5817448,2.325019 8.0000528,2.325019 4.418307,0 8.000053,-1.040946 8.000053,-2.325019 l -0.516134,-3.875036 c -0.0061,-1.105498 -3.870993,-1.808346 -5.354873,-3.100025 -0.126751,-1.043848 -0.02586,-2.056174 0.193549,-3.100026 l -4.645192,0 z" - id="path3766" - style="fill:url(#radialGradient2871);fill-opacity:1;stroke:url(#linearGradient2873);stroke-width:0.99989432;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> - <path - d="m 13.21875,11.09375 c 0.08722,0.856711 0.3354,1.801007 -0.04818,2.615857 -0.642554,0.728465 -1.594602,1.093826 -2.46738,1.472715 C 9.3226847,15.510467 7.7137266,16 7.9252179,16.998373 7.7834779,18.061416 7.641739,19.124458 7.5,20.1875 c 0.3063993,0.160613 1.0809439,0.584904 1.625,0.6875 2.520767,0.666947 5.16785,0.725367 7.754874,0.519516 1.511711,-0.166212 3.088649,-0.352665 4.432626,-1.113266 0.335436,-0.07362 0.107122,-0.316411 0.114936,-0.654915 -0.132062,-1.021278 -0.264124,-2.042557 -0.396186,-3.063835 -0.587648,-0.5027 -1.391296,-0.753519 -2.106391,-1.064577 -1.082782,-0.447299 -2.251468,-0.853003 -3.086912,-1.707994 -0.391617,-0.689558 -0.161473,-1.538743 -0.107324,-2.28649 0.259681,-0.52835 -0.223399,-0.401903 -0.552932,-0.409689 -0.652981,0 -1.305961,0 -1.958941,0 z" - id="path3742" - style="fill:none;stroke:url(#linearGradient2875);stroke-width:0.99989432;stroke-miterlimit:4;stroke-opacity:1" /> - <path - d="m 14.5,1.5422262 c -2.185818,0 -3.957774,1.67899 -3.957774,3.7501272 0.01713,0.7664876 0.08155,1.6770462 0.527701,3.750127 0.263852,0.8035986 2.617283,2.9465296 2.638517,3.2143946 0.511701,0.267865 1.319258,0.267865 1.846964,0 0,-0.267865 2.110813,-2.410796 2.374664,-3.2143946 0.502046,-2.1545496 0.500773,-2.9465283 0.527702,-3.750127 0,-2.0711372 -1.771956,-3.7501272 -3.957774,-3.7501272 z" - id="path3764" - style="fill:url(#radialGradient2877);fill-opacity:1;stroke:url(#linearGradient2879);stroke-width:1.08445191;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> - <path - d="M 10.62237,21.7 C 8.8506083,20.838176 9.6954668,18.924844 9.8723695,17.7 9.1223696,18.569566 9.5000001,21 8,21 c 1,0.355621 1.6845389,0.59817 2.62237,0.7 z" - id="path3848" - style="opacity:0.5;fill:url(#linearGradient2881);fill-opacity:1;stroke:none" /> - <path - d="M 12,13.35048 C 12.366027,14.309818 13.343418,15 14.5,15 c 1.156582,0 2.133972,-0.690182 2.5,-1.64952 l -5,0 z" - id="path3833" - style="opacity:0.3;fill:url(#radialGradient2883);fill-opacity:1;stroke:none" /> - <path - d="m 18.4,21.7 c 1.771762,-0.861824 0.926903,-2.775156 0.750001,-4 C 19.9,18.569566 19.52237,21 21.02237,21 c -1,0.355621 -1.684539,0.59817 -2.62237,0.7 z" - id="path3720" - style="opacity:0.5;fill:url(#linearGradient2885);fill-opacity:1;stroke:none" /> - <path - d="m 14.5,2.53125 c -1.666616,0 -2.9513,1.2303173 -2.96875,2.71875 1.39e-4,0.00624 -1.45e-4,0.024997 0,0.03125 0.01647,0.7081029 0.08609,1.5272795 0.5,3.46875 -0.0051,-0.03667 0.09671,0.2041393 0.3125,0.46875 0.232433,0.2850235 0.566603,0.6083312 0.875,0.9375 0.308397,0.329169 0.598847,0.668975 0.84375,0.9375 0.09435,0.103448 0.171956,0.186905 0.25,0.28125 0.166811,0.03524 0.415249,0.03212 0.625,0 0.06182,-0.08397 0.114751,-0.159431 0.1875,-0.25 0.218248,-0.271707 0.473896,-0.575993 0.75,-0.90625 0.276104,-0.3302573 0.569207,-0.6813941 0.78125,-0.96875 0.197562,-0.2677316 0.307312,-0.503144 0.3125,-0.5 0.460701,-1.9997828 0.473735,-2.6695721 0.5,-3.46875 0,-0.010182 1.19e-4,-0.021091 0,-0.03125 C 17.4513,3.7615673 16.166616,2.53125 14.5,2.53125 z" - id="path3730" - style="fill:none;stroke:url(#linearGradient2887);stroke-width:1.08445191;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> - </g> -</svg> diff --git a/apps/contacts/img/person_large.png b/apps/contacts/img/person_large.png Binary files differdeleted file mode 100644 index 8293df61829..00000000000 --- a/apps/contacts/img/person_large.png +++ /dev/null diff --git a/apps/contacts/import.php b/apps/contacts/import.php deleted file mode 100644 index 1986d79f6d6..00000000000 --- a/apps/contacts/import.php +++ /dev/null @@ -1,150 +0,0 @@ -<?php -/** - * Copyright (c) 2012 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. - */ -//check for addressbooks rights or create new one -ob_start(); - -OCP\JSON::checkLoggedIn(); -OCP\App::checkAppEnabled('contacts'); -session_write_close(); - -$nl = "\n"; - -global $progresskey; -$progresskey = 'contacts.import-' . (isset($_GET['progresskey'])?$_GET['progresskey']:''); - -if (isset($_GET['progress']) && $_GET['progress']) { - echo OC_Cache::get($progresskey); - die; -} - -function writeProgress($pct) { - global $progresskey; - OC_Cache::set($progresskey, $pct, 300); -} -writeProgress('10'); -$view = $file = null; -if(isset($_POST['fstype']) && $_POST['fstype'] == 'OC_FilesystemView') { - $view = OCP\Files::getStorage('contacts'); - $file = $view->file_get_contents('/imports/' . $_POST['file']); -} else { - $file = OC_Filesystem::file_get_contents($_POST['path'] . '/' . $_POST['file']); -} -if(!$file) { - OCP\JSON::error(array('data' => array('message' => 'Import file was empty.'))); - exit(); -} -if(isset($_POST['method']) && $_POST['method'] == 'new') { - $id = OC_Contacts_Addressbook::add(OCP\USER::getUser(), - $_POST['addressbookname']); - if(!$id) { - OCP\JSON::error( - array( - 'data' => array('message' => 'Error creating address book.') - ) - ); - exit(); - } - OC_Contacts_Addressbook::setActive($id, 1); -}else{ - $id = $_POST['id']; - if(!$id) { - OCP\JSON::error( - array( - 'data' => array( - 'message' => 'Error getting the ID of the address book.', - 'file'=>$_POST['file'] - ) - ) - ); - exit(); - } - OC_Contacts_App::getAddressbook($id); // is owner access check -} -//analyse the contacts file -writeProgress('40'); -$file = str_replace(array("\r","\n\n"), array("\n","\n"), $file); -$lines = explode($nl, $file); - -$inelement = false; -$parts = array(); -$card = array(); -foreach($lines as $line){ - if(strtoupper(trim($line)) == 'BEGIN:VCARD') { - $inelement = true; - } elseif (strtoupper(trim($line)) == 'END:VCARD') { - $card[] = $line; - $parts[] = implode($nl, $card); - $card = array(); - $inelement = false; - } - if ($inelement === true && trim($line) != '') { - $card[] = $line; - } -} -//import the contacts -writeProgress('70'); -$imported = 0; -$failed = 0; -if(!count($parts) > 0) { - OCP\JSON::error( - array( - 'data' => array( - 'message' => 'No contacts to import in ' - . $_POST['file'].'. Please check if the file is corrupted.', - 'file'=>$_POST['file'] - ) - ) - ); - if(isset($_POST['fstype']) && $_POST['fstype'] == 'OC_FilesystemView') { - if(!$view->unlink('/imports/' . $_POST['file'])) { - OCP\Util::writeLog('contacts', - 'Import: Error unlinking OC_FilesystemView ' . '/' . $_POST['file'], - OCP\Util::ERROR); - } - } - exit(); -} -foreach($parts as $part){ - $card = OC_VObject::parse($part); - if (!$card) { - $failed += 1; - OCP\Util::writeLog('contacts', - 'Import: skipping card. Error parsing VCard: ' . $part, - OCP\Util::ERROR); - continue; // Ditch cards that can't be parsed by Sabre. - } - try { - OC_Contacts_VCard::add($id, $card); - $imported += 1; - } catch (Exception $e) { - OCP\Util::writeLog('contacts', - 'Error importing vcard: ' . $e->getMessage() . $nl . $card, - OCP\Util::ERROR); - $failed += 1; - } -} -//done the import -writeProgress('100'); -sleep(3); -OC_Cache::remove($progresskey); -if(isset($_POST['fstype']) && $_POST['fstype'] == 'OC_FilesystemView') { - if(!$view->unlink('/imports/' . $_POST['file'])) { - OCP\Util::writeLog('contacts', - 'Import: Error unlinking OC_FilesystemView ' . '/' . $_POST['file'], - OCP\Util::ERROR); - } -} -OCP\JSON::success( - array( - 'data' => array( - 'imported'=>$imported, - 'failed'=>$failed, - 'file'=>$_POST['file'], - ) - ) -); diff --git a/apps/contacts/index.php b/apps/contacts/index.php deleted file mode 100644 index f16d6f5641f..00000000000 --- a/apps/contacts/index.php +++ /dev/null @@ -1,74 +0,0 @@ -<?php -/** - * Copyright (c) 2012 Thomas Tanghus <thomas@tanghus.net> - * 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. - */ - - -// Check if we are a user -OCP\User::checkLoggedIn(); -OCP\App::checkAppEnabled('contacts'); - -// Get active address books. This creates a default one if none exists. -$ids = OC_Contacts_Addressbook::activeIds(OCP\USER::getUser()); -$has_contacts = (count(OC_Contacts_VCard::all($ids, 0, 1)) > 0 - ? true - : false); // just to check if there are any contacts. -if($has_contacts === false) { - OCP\Util::writeLog('contacts', - 'index.html: No contacts found.', - OCP\Util::DEBUG); -} - -// Load the files we need -OCP\App::setActiveNavigationEntry('contacts_index'); - -// Load a specific user? -$id = isset( $_GET['id'] ) ? $_GET['id'] : null; -$impp_types = OC_Contacts_App::getTypesOfProperty('IMPP'); -$phone_types = OC_Contacts_App::getTypesOfProperty('TEL'); -$email_types = OC_Contacts_App::getTypesOfProperty('EMAIL'); -$ims = OC_Contacts_App::getIMOptions(); -$im_protocols = array(); -foreach($ims as $name => $values) { - $im_protocols[$name] = $values['displayname']; -} -$categories = OC_Contacts_App::getCategories(); - -$upload_max_filesize = OCP\Util::computerFileSize(ini_get('upload_max_filesize')); -$post_max_size = OCP\Util::computerFileSize(ini_get('post_max_size')); -$maxUploadFilesize = min($upload_max_filesize, $post_max_size); - -$freeSpace=OC_Filesystem::free_space('/'); -$freeSpace=max($freeSpace, 0); -$maxUploadFilesize = min($maxUploadFilesize, $freeSpace); - -OCP\Util::addscript('', 'jquery.multiselect'); -OCP\Util::addscript('', 'oc-vcategories'); -OCP\Util::addscript('contacts', 'contacts'); -OCP\Util::addscript('contacts', 'expanding'); -OCP\Util::addscript('contacts', 'jquery.combobox'); -OCP\Util::addscript('files', 'jquery.fileupload'); -OCP\Util::addscript('contacts', 'jquery.inview'); -OCP\Util::addscript('contacts', 'jquery.Jcrop'); -OCP\Util::addscript('contacts', 'jquery.multi-autocomplete'); -OCP\Util::addStyle('', 'jquery.multiselect'); -OCP\Util::addStyle('contacts', 'jquery.combobox'); -OCP\Util::addStyle('contacts', 'jquery.Jcrop'); -OCP\Util::addStyle('contacts', 'contacts'); - -$tmpl = new OCP\Template( "contacts", "index", "user" ); -$tmpl->assign('uploadMaxFilesize', $maxUploadFilesize, false); -$tmpl->assign('uploadMaxHumanFilesize', - OCP\Util::humanFileSize($maxUploadFilesize), false); -$tmpl->assign('phone_types', $phone_types, false); -$tmpl->assign('email_types', $email_types, false); -$tmpl->assign('impp_types', $impp_types, false); -$tmpl->assign('categories', $categories, false); -$tmpl->assign('im_protocols', $im_protocols, false); -$tmpl->assign('has_contacts', $has_contacts, false); -$tmpl->assign('id', $id, false); -$tmpl->printPage(); diff --git a/apps/contacts/js/LICENSE.jquery.inview b/apps/contacts/js/LICENSE.jquery.inview deleted file mode 100644 index 1ed340edbe5..00000000000 --- a/apps/contacts/js/LICENSE.jquery.inview +++ /dev/null @@ -1,41 +0,0 @@ -Attribution-Non-Commercial-Share Alike 2.0 UK: England & Wales - -http://creativecommons.org/licenses/by-nc-sa/2.0/uk/ - -You are free: - - * to copy, distribute, display, and perform the work - * to make derivative works - - -Under the following conditions: - - * Attribution — You must give the original author credit. - Attribute this work: - Information - What does "Attribute this work" mean? - The page you came from contained embedded licensing metadata, - including how the creator wishes to be attributed for re-use. - You can use the HTML here to cite the work. Doing so will - also include metadata on your page so that others can find the - original work as well. - - * Non-Commercial — You may not use this work for commercial - purposes. - * Share Alike — If you alter, transform, or build upon this - work, you may distribute the resulting work only under a - licence identical to this one. - -With the understanding that: - - * Waiver — Any of the above conditions can be waived if you get - permission from the copyright holder. - * Other Rights — In no way are any of the following rights - affected by the license: - o Your fair dealing or fair use rights; - o The author's moral rights; - o Rights other persons may have either in the work itself - or in how the work is used, such as publicity or privacy rights. - * Notice — For any reuse or distribution, you must make clear to - others the licence terms of this work. - diff --git a/apps/contacts/js/contacts.js b/apps/contacts/js/contacts.js deleted file mode 100644 index 09cf26bf7fe..00000000000 --- a/apps/contacts/js/contacts.js +++ /dev/null @@ -1,2277 +0,0 @@ -function ucwords (str) { - return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) { - return $1.toUpperCase(); - }); -} - -String.prototype.strip_tags = function(){ - tags = this; - stripped = tags.replace(/<(.|\n)*?>/g, ''); - return stripped; -}; - -OC.Contacts={ - /** - * Arguments: - * message: The text message to show. - * timeout: The timeout in seconds before the notification disappears. Default 10. - * timeouthandler: A function to run on timeout. - * clickhandler: A function to run on click. If a timeouthandler is given it will be cancelled. - * data: An object that will be passed as argument to the timeouthandler and clickhandler functions. - * cancel: If set cancel all ongoing timer events and hide the notification. - */ - notify:function(params) { - var self = this; - if(!self.notifier) { - self.notifier = $('#notification'); - } - if(params.cancel) { - self.notifier.off('click'); - for(var id in self.notifier.data()) { - if($.isNumeric(id)) { - clearTimeout(parseInt(id)); - } - } - self.notifier.text('').fadeOut().removeData(); - return; - } - self.notifier.text(params.message); - self.notifier.fadeIn(); - self.notifier.on('click', function() { $(this).fadeOut();}); - var timer = setTimeout(function() { - if(!self || !self.notifier) { - var self = OC.Contacts; - self.notifier = $('#notification'); - } - self.notifier.fadeOut(); - if(params.timeouthandler && $.isFunction(params.timeouthandler)) { - params.timeouthandler(self.notifier.data(dataid)); - self.notifier.off('click'); - self.notifier.removeData(dataid); - } - }, params.timeout && $.isNumeric(params.timeout) ? parseInt(params.timeout)*1000 : 10000); - var dataid = timer.toString(); - if(params.data) { - self.notifier.data(dataid, params.data); - } - if(params.clickhandler && $.isFunction(params.clickhandler)) { - self.notifier.on('click', function() { - if(!self || !self.notifier) { - var self = OC.Contacts; - self.notifier = $(this); - } - clearTimeout(timer); - self.notifier.off('click'); - params.clickhandler(self.notifier.data(dataid)); - self.notifier.removeData(dataid); - }); - } - }, - notImplemented:function() { - OC.dialogs.alert(t('contacts', 'Sorry, this functionality has not been implemented yet'), t('contacts', 'Not implemented')); - }, - searchOSM:function(obj) { - var adr = OC.Contacts.propertyContainerFor(obj).find('.adr').val(); - if(adr == undefined) { - OC.dialogs.alert(t('contacts', 'Couldn\'t get a valid address.'), t('contacts', 'Error')); - return; - } - // FIXME: I suck at regexp. /Tanghus - var adrarr = adr.split(';'); - var adrstr = ''; - if(adrarr[2].trim() != '') { - adrstr = adrstr + adrarr[2].trim() + ','; - } - if(adrarr[3].trim() != '') { - adrstr = adrstr + adrarr[3].trim() + ','; - } - if(adrarr[4].trim() != '') { - adrstr = adrstr + adrarr[4].trim() + ','; - } - if(adrarr[5].trim() != '') { - adrstr = adrstr + adrarr[5].trim() + ','; - } - if(adrarr[6].trim() != '') { - adrstr = adrstr + adrarr[6].trim(); - } - adrstr = encodeURIComponent(adrstr); - var uri = 'http://open.mapquestapi.com/nominatim/v1/search.php?q=' + adrstr + '&limit=10&addressdetails=1&polygon=1&zoom='; - var newWindow = window.open(uri,'_blank'); - newWindow.focus(); - }, - mailTo:function(obj) { - var adr = OC.Contacts.propertyContainerFor($(obj)).find('input[type="email"]').val().trim(); - if(adr == '') { - OC.dialogs.alert(t('contacts', 'Please enter an email address.'), t('contacts', 'Error')); - return; - } - window.location.href='mailto:' + adr; - }, - propertyContainerFor:function(obj) { - return $(obj).parents('.propertycontainer').first(); - }, - checksumFor:function(obj) { - return $(obj).parents('.propertycontainer').first().data('checksum'); - }, - propertyTypeFor:function(obj) { - return $(obj).parents('.propertycontainer').first().data('element'); - }, - loading:function(obj, state) { - if(state) { - $(obj).addClass('loading'); - } else { - $(obj).removeClass('loading'); - } - }, - showCardDAVUrl:function(username, bookname){ - $('#carddav_url').val(totalurl + '/' + username + '/' + decodeURIComponent(bookname)); - $('#carddav_url').show(); - $('#carddav_url_close').show(); - }, - loadListHandlers:function() { - $('.propertylist li a.delete').unbind('click'); - $('.propertylist li a.delete').unbind('keydown'); - var deleteItem = function(obj) { - obj.tipsy('hide'); - OC.Contacts.Card.deleteProperty(obj, 'list'); - } - $('.propertylist li a.delete, .addresscard .delete').click(function() { deleteItem($(this)) }); - $('.propertylist li a.delete, .addresscard .delete').keydown(function() { deleteItem($(this)) }); - $('.propertylist li a.mail').click(function() { OC.Contacts.mailTo(this) }); - $('.propertylist li a.mail').keydown(function() { OC.Contacts.mailTo(this) }); - $('.addresscard .globe').click(function() { $(this).tipsy('hide');OC.Contacts.searchOSM(this); }); - $('.addresscard .globe').keydown(function() { $(this).tipsy('hide');OC.Contacts.searchOSM(this); }); - $('.addresscard .edit').click(function() { $(this).tipsy('hide');OC.Contacts.Card.editAddress(this, false); }); - $('.addresscard .edit').keydown(function() { $(this).tipsy('hide');OC.Contacts.Card.editAddress(this, false); }); - $('.addresscard,.propertylist li,.propertycontainer').hover( - function () { - $(this).find('.globe,.mail,.delete,.edit').animate({ opacity: 1.0 }, 200, function() {}); - }, - function () { - $(this).find('.globe,.mail,.delete,.edit').animate({ opacity: 0.1 }, 200, function() {}); - } - ); - }, - loadHandlers:function() { - var deleteItem = function(obj) { - obj.tipsy('hide'); - OC.Contacts.Card.deleteProperty(obj, 'single'); - } - var goToUrl = function(obj) { - var url = OC.Contacts.propertyContainerFor(obj).find('#url').val(); - if(url != '') { - var newWindow = window.open(url,'_blank'); - newWindow.focus(); - } - } - - $('#identityprops a.delete').click( function() { deleteItem($(this)) }); - $('#identityprops a.delete').keydown( function() { deleteItem($(this)) }); - $('#categories_value a.edit').click( function() { $(this).tipsy('hide');OCCategories.edit(); } ); - $('#categories_value a.edit').keydown( function() { $(this).tipsy('hide');OCCategories.edit(); } ); - $('#url_value a.globe').click( function() { $(this).tipsy('hide');goToUrl($(this)); } ); - $('#url_value a.globe').keydown( function() { $(this).tipsy('hide');goToUrl($(this)); } ); - $('#fn_select').combobox({ - 'id': 'fn', - 'name': 'value', - 'classes': ['contacts_property', 'nonempty', 'huge', 'tip', 'float'], - 'attributes': {'placeholder': t('contacts', 'Enter name')}, - 'title': t('contacts', 'Format custom, Short name, Full name, Reverse or Reverse with comma')}); - $('#bday').datepicker({ - dateFormat : 'dd-mm-yy' - }); - // Style phone types - $('#phonelist').find('select.contacts_property').multiselect({ - noneSelectedText: t('contacts', 'Select type'), - header: false, - selectedList: 4, - classes: 'typelist' - }); - $('#edit_name').click(function(){OC.Contacts.Card.editName()}); - $('#edit_name').keydown(function(){OC.Contacts.Card.editName()}); - - $('#phototools li a').click(function() { - $(this).tipsy('hide'); - }); - $('#contacts_details_photo_wrapper').hover( - function () { - $('#phototools').slideDown(200); - }, - function () { - $('#phototools').slideUp(200); - } - ); - $('#phototools').hover( - function () { - $(this).removeClass('transparent'); - }, - function () { - $(this).addClass('transparent'); - } - ); - $('#phototools .upload').click(function() { - $('#file_upload_start').trigger('click'); - }); - $('#phototools .cloud').click(function() { - OC.dialogs.filepicker(t('contacts', 'Select photo'), OC.Contacts.Card.cloudPhotoSelected, false, 'image', true); - }); - /* Initialize the photo edit dialog */ - $('#edit_photo_dialog').dialog({ - autoOpen: false, modal: true, height: 'auto', width: 'auto' - }); - $('#edit_photo_dialog' ).dialog( 'option', 'buttons', [ - { - text: "Ok", - click: function() { - OC.Contacts.Card.savePhoto(this); - $(this).dialog('close'); - } - }, - { - text: "Cancel", - click: function() { $(this).dialog('close'); } - } - ] ); - - // Name has changed. Update it and reorder. - $('#fn').change(function(){ - var name = $('#fn').val().strip_tags(); - var item = $('.contacts li[data-id="'+OC.Contacts.Card.id+'"]').detach(); - $(item).find('a').html(name); - OC.Contacts.Card.fn = name; - OC.Contacts.Contacts.insertContact({contact:item}); - OC.Contacts.Contacts.scrollTo(OC.Contacts.Card.id); - }); - - $('#contacts_deletecard').click( function() { OC.Contacts.Card.delayedDelete();return false;} ); - $('#contacts_deletecard').keydown( function(event) { - if(event.which == 13 || event.which == 32) { - OC.Contacts.Card.delayedDelete(); - } - return false; - }); - - $('#contacts_downloadcard').click( function() { OC.Contacts.Card.doExport();return false;} ); - $('#contacts_downloadcard').keydown( function(event) { - if(event.which == 13 || event.which == 32) { - OC.Contacts.Card.doExport(); - } - return false; - }); - - // Profile picture upload handling - // New profile picture selected - $('#file_upload_start').change(function(){ - OC.Contacts.Card.uploadPhoto(this.files); - }); - $('#contacts_details_photo_wrapper').bind('dragover',function(event){ - $(event.target).addClass('droppable'); - event.stopPropagation(); - event.preventDefault(); - }); - $('#contacts_details_photo_wrapper').bind('dragleave',function(event){ - $(event.target).removeClass('droppable'); - }); - $('#contacts_details_photo_wrapper').bind('drop',function(event){ - event.stopPropagation(); - event.preventDefault(); - $(event.target).removeClass('droppable'); - $.fileUpload(event.originalEvent.dataTransfer.files); - }); - - $('#categories').multiple_autocomplete({source: categories}); - $('#contacts_deletecard').tipsy({gravity: 'ne'}); - $('#contacts_downloadcard').tipsy({gravity: 'ne'}); - $('#contacts_propertymenu_button').tipsy(); - $('#contacts_newcontact, #contacts_import, #bottomcontrols .settings').tipsy({gravity: 'sw'}); - - $('body').click(function(e){ - if(!$(e.target).is('#contacts_propertymenu_button')) { - $('#contacts_propertymenu_dropdown').hide(); - } - }); - function propertyMenu(){ - var menu = $('#contacts_propertymenu_dropdown'); - if(menu.is(':hidden')) { - menu.show(); - menu.find('li').first().focus(); - } else { - menu.hide(); - } - } - $('#contacts_propertymenu_button').click(propertyMenu); - $('#contacts_propertymenu_button').keydown(propertyMenu); - function propertyMenuItem(){ - var type = $(this).data('type'); - OC.Contacts.Card.addProperty(type); - $('#contacts_propertymenu_dropdown').hide(); - } - $('#contacts_propertymenu_dropdown a').click(propertyMenuItem); - $('#contacts_propertymenu_dropdown a').keydown(propertyMenuItem); - }, - Card:{ - update:function(params) { // params {cid:int, aid:int} - if(!params) { params = {}; } - $('#contacts li,#contacts h3').removeClass('active'); - console.log('Card, cid: ' + params.cid + ' aid: ' + params.aid); - var newid, bookid, firstitem; - if(!parseInt(params.cid) && !parseInt(params.aid)) { - firstitem = $('#contacts ul').find('li:first-child'); - if(firstitem.length > 0) { - if(firstitem.length > 1) { - firstitem = firstitem.first(); - } - newid = parseInt(firstitem.data('id')); - bookid = parseInt(firstitem.data('bookid')); - } - } else if(!parseInt(params.cid) && parseInt(params.aid)) { - bookid = parseInt(params.aid); - newid = parseInt($('#contacts').find('li[data-bookid="'+bookid+'"]').first().data('id')); - } else if(parseInt(params.cid) && !parseInt(params.aid)) { - newid = parseInt(params.cid); - var listitem = OC.Contacts.Contacts.getContact(newid); //$('#contacts li[data-id="'+newid+'"]'); - console.log('Is contact in list? ' + listitem.length); - if(listitem.length) { - //bookid = parseInt($('#contacts li[data-id="'+newid+'"]').data('bookid')); - bookid = parseInt(OC.Contacts.Contacts.getContact(newid).data('bookid')); - } else { // contact isn't in list yet. - bookid = 'unknown'; - } - } else { - newid = parseInt(params.cid); - bookid = parseInt(params.aid); - } - if(!bookid || !newid) { - bookid = parseInt($('#contacts h3').first().data('id')); - newid = parseInt($('#contacts').find('li[data-bookid="'+bookid+'"]').first().data('id')); - } - console.log('newid: ' + newid + ' bookid: ' +bookid); - var localLoadContact = function(newid, bookid) { - if($('.contacts li').length > 0) { - $.getJSON(OC.filePath('contacts', 'ajax', 'contact/details.php'),{'id':newid},function(jsondata){ - if(jsondata.status == 'success'){ - if(bookid == 'unknown') { - bookid = jsondata.data.addressbookid; - var contact = OC.Contacts.Contacts.insertContact({ - contactlist:$('#contacts ul[data-id="'+bookid+'"]'), - data:jsondata.data - }); - } - $('#contacts li[data-id="'+newid+'"],#contacts h3[data-id="'+bookid+'"]').addClass('active'); - $('#contacts ul[data-id="'+bookid+'"]').slideDown(300); - OC.Contacts.Card.loadContact(jsondata.data, bookid); - OC.Contacts.Contacts.scrollTo(newid); - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } - } - - // Make sure proper DOM is loaded. - if(!$('#card').length && newid) { - console.log('Loading card DOM'); - $.getJSON(OC.filePath('contacts', 'ajax', 'loadcard.php'),{requesttoken:requesttoken},function(jsondata){ - if(jsondata.status == 'success'){ - $('#rightcontent').html(jsondata.data.page).ready(function() { - OC.Contacts.loadHandlers(); - localLoadContact(newid, bookid); - }); - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } else if(!newid) { - console.log('Loading intro'); - // load intro page - $.getJSON(OC.filePath('contacts', 'ajax', 'loadintro.php'),{},function(jsondata){ - if(jsondata.status == 'success'){ - id = ''; - $('#rightcontent').data('id',''); - $('#rightcontent').html(jsondata.data.page); - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } - else { - localLoadContact(newid, bookid); - } - }, - setEnabled:function(enabled) { - console.log('setEnabled', enabled); - $('.contacts_property,.action').each(function () { - $(this).prop('disabled', !enabled); - OC.Contacts.Card.enabled = enabled; - }); - }, - doExport:function() { - document.location.href = OC.linkTo('contacts', 'export.php') + '?contactid=' + this.id; - }, - editNew:function(){ // add a new contact - var book = $('#contacts h3.active'); - var permissions = parseInt(book.data('permissions')); - if(permissions == 0 - || permissions & OC.Share.PERMISSION_UPDATE - || permissions & OC.Share.PERMISSION_DELETE) { - with(this) { - delete id; delete fn; delete fullname; delete givname; delete famname; - delete addname; delete honpre; delete honsuf; - } - this.bookid = book.data('id'); - OC.Contacts.Card.add(';;;;;', '', '', true); - } else { - OC.dialogs.alert(t('contacts', 'You do not have permission to add contacts to ') - + book.text() + '. ' + t('contacts', 'Please select one of your own address books.'), t('contacts', 'Permission error')); - } - return false; - }, - add:function(n, fn, aid, isnew){ // add a new contact - console.log('Adding ' + fn); - aid = aid?aid:$('#contacts h3.active').first().data('id'); - var localAddcontact = function(n, fn, aid, isnew) { - $.post(OC.filePath('contacts', 'ajax', 'contact/add.php'), { n: n, fn: fn, aid: aid, isnew: isnew }, - function(jsondata) { - if (jsondata.status == 'success'){ - $('#rightcontent').data('id',jsondata.data.id); - var id = jsondata.data.id; - var aid = jsondata.data.aid; - $.getJSON(OC.filePath('contacts', 'ajax', 'contact/details.php'),{'id':id},function(jsondata){ - if(jsondata.status == 'success'){ - OC.Contacts.Card.loadContact(jsondata.data, aid); - var item = OC.Contacts.Contacts.insertContact({data:jsondata.data}); - if(isnew) { // add some default properties - OC.Contacts.Card.addProperty('EMAIL'); - OC.Contacts.Card.addProperty('TEL'); - $('#fn').focus(); - } - } - else{ - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - $('#contact_identity').show(); - $('#actionbar').show(); - } - else{ - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } - - if(!$('#card').length) { - console.log('Loading card DOM'); - $.getJSON(OC.filePath('contacts', 'ajax', 'loadcard.php'),{'requesttoken': requesttoken},function(jsondata){ - if(jsondata.status == 'success'){ - $('#rightcontent').html(jsondata.data.page).ready(function() { - OC.Contacts.loadHandlers(); - localAddcontact(n, fn, aid, isnew); - }); - } else{ - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } else { - localAddcontact(n, fn, aid, isnew); - } - }, - delayedDelete:function() { - $('#contacts_deletecard').tipsy('hide'); - var newid = '', bookid; - var curlistitem = OC.Contacts.Contacts.getContact(this.id); - curlistitem.removeClass('active'); - var newlistitem = curlistitem.prev('li'); - if(!newlistitem) { - newlistitem = curlistitem.next('li'); - } - curlistitem.detach(); - if($(newlistitem).is('li')) { - newid = newlistitem.data('id'); - bookid = newlistitem.data('bookid'); - } - $('#rightcontent').data('id', newid); - - OC.Contacts.Contacts.deletionQueue.push(parseInt(this.id)); - if(!window.onbeforeunload) { - window.onbeforeunload = OC.Contacts.Contacts.warnNotDeleted; - } - - with(this) { - delete id; delete fn; delete fullname; delete shortname; delete famname; - delete givname; delete addname; delete honpre; delete honsuf; delete data; - } - - if($('.contacts li').length > 0) { - OC.Contacts.Card.update({cid:newid, aid:bookid}); - } else { - // load intro page - $.getJSON(OC.filePath('contacts', 'ajax', 'loadintro.php'),{},function(jsondata){ - if(jsondata.status == 'success'){ - id = ''; - $('#rightcontent').html(jsondata.data.page).removeData('id'); - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } - OC.Contacts.notify({ - data:curlistitem, - message:t('contacts','Click to undo deletion of "') + curlistitem.find('a').text() + '"', - //timeout:5, - timeouthandler:function(contact) { - console.log('timeout'); - OC.Contacts.Card.doDelete(contact.data('id'), true, function(res) { - if(!res) { - OC.Contacts.Contacts.insertContact({contact:contact}); - } else { - delete contact; - } - }); - }, - clickhandler:function(contact) { - OC.Contacts.Contacts.insertContact({contact:contact}); - OC.Contacts.notify({message:t('contacts', 'Cancelled deletion of: "') + curlistitem.find('a').text() + '"'}); - window.onbeforeunload = null; - } - }); - }, - doDelete:function(id, removeFromQueue, cb) { - var updateQueue = function(id, remove) { - if(removeFromQueue) { - OC.Contacts.Contacts.deletionQueue.splice(OC.Contacts.Contacts.deletionQueue.indexOf(parseInt(id)), 1); - } - if(OC.Contacts.Contacts.deletionQueue.length == 0) { - window.onbeforeunload = null; - } - } - - if(OC.Contacts.Contacts.deletionQueue.indexOf(parseInt(id)) == -1 && removeFromQueue) { - console.log('returning'); - updateQueue(id, removeFromQueue); - if(typeof cb == 'function') { - cb(true); - } - return; - } - $.post(OC.filePath('contacts', 'ajax', 'contact/delete.php'), {'id':id},function(jsondata) { - if(jsondata.status == 'error'){ - OC.Contacts.notify({message:jsondata.data.message}); - if(typeof cb == 'function') { - cb(false); - } - } - updateQueue(id, removeFromQueue); - }); - if(typeof cb == 'function') { - cb(true); - } - }, - loadContact:function(jsondata, bookid){ - this.data = jsondata; - this.id = this.data.id; - this.bookid = bookid; - $('#rightcontent').data('id',this.id); - this.populateNameFields(); - this.loadPhoto(); - this.loadMails(); - this.loadPhones(); - this.loadIMs(); - this.loadAddresses(); - this.loadSingleProperties(); - OC.Contacts.loadListHandlers(); - var note = $('#note'); - if(this.data.NOTE) { - note.data('checksum', this.data.NOTE[0]['checksum']); - var textarea = note.find('textarea'); - var txt = this.data.NOTE[0]['value']; - var nheight = txt.split('\n').length > 4 ? txt.split('\n').length+2 : 5; - textarea.css('min-height', nheight+'em'); - textarea.attr('rows', nheight); - textarea.val(txt); - $('#contact_note').show(); - textarea.expandingTextarea(); - $('#contacts_propertymenu_dropdown a[data-type="NOTE"]').parent().hide(); - } else { - note.removeData('checksum'); - note.find('textarea').val(''); - $('#contact_note').hide(); - $('#contacts_propertymenu_dropdown a[data-type="NOTE"]').parent().show(); - } - var permissions = OC.Contacts.Card.permissions = parseInt($('#contacts ul[data-id="' + bookid + '"]').data('permissions')); - console.log('permissions', permissions); - this.setEnabled(permissions == 0 - || permissions & OC.Share.PERMISSION_UPDATE - || permissions & OC.Share.PERMISSION_DELETE); - }, - loadSingleProperties:function() { - var props = ['BDAY', 'NICKNAME', 'ORG', 'URL', 'CATEGORIES']; - // Clear all elements - $('#ident .propertycontainer').each(function(){ - if(props.indexOf($(this).data('element')) > -1) { - $(this).data('checksum', ''); - $(this).find('input').val(''); - $(this).hide(); - $(this).prev().hide(); - } - }); - for(var prop in props) { - var propname = props[prop]; - if(this.data[propname] != undefined) { - $('#contacts_propertymenu_dropdown a[data-type="'+propname+'"]').parent().hide(); - var property = this.data[propname][0]; - var value = property['value'], checksum = property['checksum']; - - if(propname == 'BDAY') { - var val = $.datepicker.parseDate('yy-mm-dd', value.substring(0, 10)); - value = $.datepicker.formatDate('dd-mm-yy', val); - } - var identcontainer = $('#contact_identity'); - identcontainer.find('#'+propname.toLowerCase()).val(value); - identcontainer.find('#'+propname.toLowerCase()+'_value').data('checksum', checksum); - identcontainer.find('#'+propname.toLowerCase()+'_label').show(); - identcontainer.find('#'+propname.toLowerCase()+'_value').show(); - } else { - $('#contacts_propertymenu_dropdown a[data-type="'+propname+'"]').parent().show(); - } - } - }, - populateNameFields:function() { - var props = ['FN', 'N']; - // Clear all elements - $('#ident .propertycontainer').each(function(){ - if(props.indexOf($(this).data('element')) > -1) { - $(this).data('checksum', ''); - $(this).find('input').val(''); - } - }); - - with(this) { - delete fn; delete fullname; delete givname; delete famname; - delete addname; delete honpre; delete honsuf; - } - - if(this.data.FN) { - this.fn = this.data.FN[0]['value']; - } - else { - this.fn = ''; - } - if(this.data.N == undefined) { - narray = [this.fn,'','','','']; // Checking for non-existing 'N' property :-P - } else { - narray = this.data.N[0]['value']; - } - this.famname = narray[0] || ''; - this.givname = narray[1] || ''; - this.addname = narray[2] || ''; - this.honpre = narray[3] || ''; - this.honsuf = narray[4] || ''; - if(this.honpre.length > 0) { - this.fullname += this.honpre + ' '; - } - if(this.givname.length > 0) { - this.fullname += ' ' + this.givname; - } - if(this.addname.length > 0) { - this.fullname += ' ' + this.addname; - } - if(this.famname.length > 0) { - this.fullname += ' ' + this.famname; - } - if(this.honsuf.length > 0) { - this.fullname += ', ' + this.honsuf; - } - $('#n').val(narray.join(';')); - $('#fn_select option').remove(); - var names = [this.fn, this.fullname, this.givname + ' ' + this.famname, this.famname + ' ' + this.givname, this.famname + ', ' + this.givname]; - if(this.data.ORG) { - names[names.length]=this.data.ORG[0].value; - } - $.each(names, function(key, value) { - $('#fn_select') - .append($('<option></option>') - .text(value)); - }); - $('#fn_select').combobox('value', this.fn); - $('#contact_identity').find('*[data-element="N"]').data('checksum', this.data.N[0]['checksum']); - if(this.data.FN) { - $('#contact_identity').find('*[data-element="FN"]').data('checksum', this.data.FN[0]['checksum']); - } - $('#contact_identity').show(); - }, - hasCategory:function(category) { - if(this.data.CATEGORIES) { - var categories = this.data.CATEGORIES[0]['value'].split(/,\s*/); - for(var c in categories) { - var cat = this.data.CATEGORIES[0]['value'][c]; - if(typeof cat === 'string' && (cat.toUpperCase() === category.toUpperCase())) { - return true; - } - } - } - return false; - }, - categoriesChanged:function(newcategories) { // Categories added/deleted. - categories = $.map(newcategories, function(v) {return v;}); - $('#categories').multiple_autocomplete('option', 'source', categories); - var categorylist = $('#categories_value').find('input'); - $.getJSON(OC.filePath('contacts', 'ajax', 'categories/categoriesfor.php'),{'id':OC.Contacts.Card.id},function(jsondata){ - if(jsondata.status == 'success'){ - $('#categories_value').data('checksum', jsondata.data.checksum); - categorylist.val(jsondata.data.value); - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - }, - savePropertyInternal:function(name, fields, oldchecksum, checksum) { - // TODO: Add functionality for new fields. - //console.log('savePropertyInternal: ' + name + ', fields: ' + fields + 'checksum: ' + checksum); - //console.log('savePropertyInternal: ' + this.data[name]); - var multivalue = ['CATEGORIES']; - var params = {}; - var value = multivalue.indexOf(name) != -1 ? new Array() : undefined; - jQuery.each(fields, function(i, field){ - //.substring(11,'parameters[TYPE][]'.indexOf(']')) - if(field.name.substring(0, 5) === 'value') { - if(multivalue.indexOf(name) != -1) { - value.push(field.value); - } else { - value = field.value; - } - } else if(field.name.substring(0, 10) === 'parameters') { - var p = field.name.substring(11,'parameters[TYPE][]'.indexOf(']')); - if(!(p in params)) { - params[p] = []; - } - params[p].push(field.value); - } - }); - for(var i in this.data[name]) { - if(this.data[name][i]['checksum'] == oldchecksum) { - this.data[name][i]['checksum'] = checksum; - this.data[name][i]['value'] = value; - this.data[name][i]['parameters'] = params; - } - } - }, - saveProperty:function(obj) { - if(!$(obj).hasClass('contacts_property')) { - return false; - } - if($(obj).hasClass('nonempty') && $(obj).val().trim() == '') { - OC.dialogs.alert(t('contacts', 'This property has to be non-empty.'), t('contacts', 'Error')); - return false; - } - container = $(obj).parents('.propertycontainer').first(); // get the parent holding the metadata. - OC.Contacts.loading(obj, true); - var checksum = container.data('checksum'); - var name = container.data('element'); - var fields = container.find('input.contacts_property,select.contacts_property').serializeArray(); - switch(name) { - case 'FN': - var nempty = true; - for(var i in OC.Contacts.Card.data.N[0]['value']) { - if(OC.Contacts.Card.data.N[0]['value'][i] != '') { - nempty = false; - break; - } - } - if(nempty) { - $('#n').val(fields[0].value + ';;;;'); - OC.Contacts.Card.data.N[0]['value'] = Array(fields[0].value, '', '', '', ''); - setTimeout(function() {OC.Contacts.Card.saveProperty($('#n'))}, 500); - } - break; - } - var q = container.find('input.contacts_property,select.contacts_property,textarea.contacts_property').serialize(); - if(q == '' || q == undefined) { - OC.dialogs.alert(t('contacts', 'Couldn\'t serialize elements.'), t('contacts', 'Error')); - OC.Contacts.loading(obj, false); - return false; - } - q = q + '&id=' + this.id + '&name=' + name; - if(checksum != undefined && checksum != '') { // save - q = q + '&checksum=' + checksum; - console.log('Saving: ' + q); - $(obj).attr('disabled', 'disabled'); - $.post(OC.filePath('contacts', 'ajax', 'contact/saveproperty.php'),q,function(jsondata){ - if(!jsondata) { - OC.dialogs.alert(t('contacts', 'Unknown error. Please check logs.'), t('contacts', 'Error')); - OC.Contacts.loading(obj, false); - $(obj).removeAttr('disabled'); - OC.Contacts.Card.update({cid:OC.Contacts.Card.id}); - return false; - } - if(jsondata.status == 'success'){ - container.data('checksum', jsondata.data.checksum); - OC.Contacts.Card.savePropertyInternal(name, fields, checksum, jsondata.data.checksum); - OC.Contacts.loading(obj, false); - $(obj).removeAttr('disabled'); - return true; - } - else{ - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - OC.Contacts.loading(obj, false); - $(obj).removeAttr('disabled'); - OC.Contacts.Card.update({cid:OC.Contacts.Card.id}); - return false; - } - },'json'); - } else { // add - console.log('Adding: ' + q); - $(obj).attr('disabled', 'disabled'); - $.post(OC.filePath('contacts', 'ajax', 'contact/addproperty.php'),q,function(jsondata){ - if(jsondata.status == 'success'){ - container.data('checksum', jsondata.data.checksum); - // TODO: savePropertyInternal doesn't know about new fields - //OC.Contacts.Card.savePropertyInternal(name, fields, checksum, jsondata.data.checksum); - OC.Contacts.loading(obj, false); - $(obj).removeAttr('disabled'); - return true; - } - else{ - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - OC.Contacts.loading(obj, false); - $(obj).removeAttr('disabled'); - OC.Contacts.Card.update({cid:OC.Contacts.Card.id}); - return false; - } - },'json'); - } - }, - addProperty:function(type) { - if(!this.enabled) { - return; - } - switch (type) { - case 'NOTE': - $('#contacts_propertymenu_dropdown a[data-type="'+type+'"]').parent().hide(); - $('#note').find('textarea').expandingTextarea().show().focus(); - $('#contact_note').show(); - break; - case 'EMAIL': - if($('#emaillist>li').length == 1) { - $('#emails').show(); - } - OC.Contacts.Card.addMail(); - break; - case 'TEL': - if($('#phonelist>li').length == 1) { - $('#phones').show(); - } - OC.Contacts.Card.addPhone(); - break; - case 'IMPP': - if($('#imlist>li').length == 1) { - $('#ims').show(); - } - OC.Contacts.Card.addIM(); - break; - case 'ADR': - if($('addresses>dl').length == 1) { - $('#addresses').show(); - } - OC.Contacts.Card.editAddress('new', true); - break; - case 'NICKNAME': - case 'URL': - case 'ORG': - case 'BDAY': - case 'CATEGORIES': - $('dl dt[data-element="'+type+'"],dd[data-element="'+type+'"]').show(); - $('dd[data-element="'+type+'"]').find('input').focus(); - $('#contacts_propertymenu_dropdown a[data-type="'+type+'"]').parent().hide(); - break; - } - }, - deleteProperty:function(obj, type) { - console.log('deleteProperty'); - if(!this.enabled) { - return; - } - OC.Contacts.loading(obj, true); - var checksum = OC.Contacts.checksumFor(obj); - if(checksum) { - $.post(OC.filePath('contacts', 'ajax', 'contact/deleteproperty.php'),{'id': this.id, 'checksum': checksum },function(jsondata){ - if(jsondata.status == 'success'){ - if(type == 'list') { - OC.Contacts.propertyContainerFor(obj).remove(); - } else if(type == 'single') { - var proptype = OC.Contacts.propertyTypeFor(obj); - OC.Contacts.Card.data[proptype] = null; - var othertypes = ['NOTE', 'PHOTO']; - if(othertypes.indexOf(proptype) != -1) { - OC.Contacts.propertyContainerFor(obj).data('checksum', ''); - if(proptype == 'PHOTO') { - OC.Contacts.Contacts.refreshThumbnail(OC.Contacts.Card.id); - OC.Contacts.Card.loadPhoto(); - } else if(proptype == 'NOTE') { - $('#note').find('textarea').val(''); - $('#contact_note').hide(); - OC.Contacts.propertyContainerFor(obj).hide(); - } - } else { - $('dl dt[data-element="'+proptype+'"],dd[data-element="'+proptype+'"]').hide(); - $('dl dd[data-element="'+proptype+'"]').data('checksum', '').find('input').val(''); - } - $('#contacts_propertymenu_dropdown a[data-type="'+proptype+'"]').parent().show(); - OC.Contacts.loading(obj, false); - } else { - OC.dialogs.alert(t('contacts', '\'deleteProperty\' called without type argument. Please report at bugs.owncloud.org'), t('contacts', 'Error')); - OC.Contacts.loading(obj, false); - } - } - else{ - OC.Contacts.loading(obj, false); - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } else { // Property hasn't been saved so there's nothing to delete. - if(type == 'list') { - OC.Contacts.propertyContainerFor(obj).remove(); - } else if(type == 'single') { - var proptype = OC.Contacts.propertyTypeFor(obj); - $('dl dt[data-element="'+proptype+'"],dd[data-element="'+proptype+'"]').hide(); - $('#contacts_propertymenu_dropdown a[data-type="'+proptype+'"]').parent().show(); - OC.Contacts.loading(obj, false); - } else { - OC.dialogs.alert(t('contacts', '\'deleteProperty\' called without type argument. Please report at bugs.owncloud.org'), t('contacts', 'Error')); - } - } - }, - editName:function() { - if(!this.enabled) { - return; - } - var params = {id: this.id}; - /* Initialize the name edit dialog */ - if($('#edit_name_dialog').dialog('isOpen') == true) { - $('#edit_name_dialog').dialog('moveToTop'); - } else { - $.getJSON(OC.filePath('contacts', 'ajax', 'editname.php'),{id: this.id},function(jsondata) { - if(jsondata.status == 'success') { - $('body').append('<div id="name_dialog"></div>'); - $('#name_dialog').html(jsondata.data.page).find('#edit_name_dialog' ).dialog({ - modal: true, - closeOnEscape: true, - title: t('contacts', 'Edit name'), - height: 'auto', width: 'auto', - buttons: { - 'Ok':function() { - OC.Contacts.Card.saveName(this); - $(this).dialog('close'); - }, - 'Cancel':function() { $(this).dialog('close'); } - }, - close: function(event, ui) { - $(this).dialog('destroy').remove(); - $('#name_dialog').remove(); - }, - open: function(event, ui) { - // load 'N' property - maybe :-P - } - }); - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } - }, - saveName:function(dlg) { - if(!this.enabled) { - return; - } - //console.log('saveName, id: ' + this.id); - var n = new Array($(dlg).find('#fam').val().strip_tags(),$(dlg).find('#giv').val().strip_tags(),$(dlg).find('#add').val().strip_tags(),$(dlg).find('#pre').val().strip_tags(),$(dlg).find('#suf').val().strip_tags()); - this.famname = n[0]; - this.givname = n[1]; - this.addname = n[2]; - this.honpre = n[3]; - this.honsuf = n[4]; - this.fullname = ''; - - $('#n').val(n.join(';')); - if(n[3].length > 0) { - this.fullname = n[3] + ' '; - } - this.fullname += n[1] + ' ' + n[2] + ' ' + n[0]; - if(n[4].length > 0) { - this.fullname += ', ' + n[4]; - } - - $('#fn_select option').remove(); - //$('#fn_select').combobox('value', this.fn); - var tmp = [this.fullname, this.givname + ' ' + this.famname, this.famname + ' ' + this.givname, this.famname + ', ' + this.givname]; - var names = new Array(); - for(var name in tmp) { - if(names.indexOf(tmp[name]) == -1) { - names.push(tmp[name]); - } - } - $.each(names, function(key, value) { - $('#fn_select') - .append($('<option></option>') - .text(value)); - }); - - if(this.id == '') { - var aid = $(dlg).find('#aid').val(); - OC.Contacts.Card.add(n.join(';'), $('#short').text(), aid); - } else { - OC.Contacts.Card.saveProperty($('#n')); - } - }, - loadAddresses:function() { - $('#addresses').hide(); - $('#addresses dl.propertycontainer').remove(); - var addresscontainer = $('#addresses'); - for(var adr in this.data.ADR) { - addresscontainer.find('dl').first().clone().insertAfter($('#addresses dl').last()).show(); - addresscontainer.find('dl').last().removeClass('template').addClass('propertycontainer'); - addresscontainer.find('dl').last().data('checksum', this.data.ADR[adr]['checksum']); - var adrarray = this.data.ADR[adr]['value']; - var adrtxt = ''; - if(adrarray[0] && adrarray[0].length > 0) { - adrtxt = adrtxt + '<li>' + adrarray[0].strip_tags() + '</li>'; - } - if(adrarray[1] && adrarray[1].length > 0) { - adrtxt = adrtxt + '<li>' + adrarray[1].strip_tags() + '</li>'; - } - if(adrarray[2] && adrarray[2].length > 0) { - adrtxt = adrtxt + '<li>' + adrarray[2].strip_tags() + '</li>'; - } - if((3 in adrarray && 5 in adrarray) && adrarray[3].length > 0 || adrarray[5].length > 0) { - adrtxt = adrtxt + '<li>' + adrarray[5].strip_tags() + ' ' + adrarray[3].strip_tags() + '</li>'; - } - if(adrarray[4] && adrarray[4].length > 0) { - adrtxt = adrtxt + '<li>' + adrarray[4].strip_tags() + '</li>'; - } - if(adrarray[6] && adrarray[6].length > 0) { - adrtxt = adrtxt + '<li>' + adrarray[6].strip_tags() + '</li>'; - } - addresscontainer.find('dl').last().find('.addresslist').html(adrtxt); - var types = new Array(); - var ttypes = new Array(); - for(var param in this.data.ADR[adr]['parameters']) { - if(param.toUpperCase() == 'TYPE') { - types.push(t('contacts', ucwords(this.data.ADR[adr]['parameters'][param].toLowerCase()))); - ttypes.push(this.data.ADR[adr]['parameters'][param]); - } - } - addresscontainer.find('dl').last().find('.adr_type_label').text(types.join('/')); - addresscontainer.find('dl').last().find('.adr_type').val(ttypes.join(',')); - addresscontainer.find('dl').last().find('.adr').val(adrarray.join(';')); - addresscontainer.find('dl').last().data('checksum', this.data.ADR[adr]['checksum']); - } - if(addresscontainer.find('dl').length > 1) { - $('#addresses').show(); - } - return false; - }, - editAddress:function(obj, isnew){ - if(!this.enabled) { - return; - } - var container = undefined; - var params = {id: this.id}; - if(obj === 'new') { - isnew = true; - $('#addresses dl').first().clone(true).insertAfter($('#addresses dl').last()).show(); - container = $('#addresses dl').last(); - container.removeClass('template').addClass('propertycontainer'); - } else { - params['checksum'] = OC.Contacts.checksumFor(obj); - } - /* Initialize the address edit dialog */ - if($('#edit_address_dialog').dialog('isOpen') == true){ - $('#edit_address_dialog').dialog('moveToTop'); - }else{ - $.getJSON(OC.filePath('contacts', 'ajax', 'editaddress.php'),params,function(jsondata){ - if(jsondata.status == 'success'){ - $('body').append('<div id="address_dialog"></div>'); - $('#address_dialog').html(jsondata.data.page).find('#edit_address_dialog' ).dialog({ - height: 'auto', width: 'auto', - buttons: { - 'Ok':function() { - if(isnew) { - OC.Contacts.Card.saveAddress(this, $('#addresses dl:last-child').find('input').first(), isnew); - } else { - OC.Contacts.Card.saveAddress(this, obj, isnew); - } - $(this).dialog('close'); - }, - 'Cancel':function() { - $(this).dialog('close'); - if(isnew) { - container.remove(); - } - } - }, - close : function(event, ui) { - $(this).dialog('destroy').remove(); - $('#address_dialog').remove(); - }, - open : function(event, ui) { - $( "#adr_city" ).autocomplete({ - source: function( request, response ) { - $.ajax({ - url: "http://ws.geonames.org/searchJSON", - dataType: "jsonp", - data: { - featureClass: "P", - style: "full", - maxRows: 12, - lang: lang, - name_startsWith: request.term - }, - success: function( data ) { - response( $.map( data.geonames, function( item ) { - return { - label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName, - value: item.name, - country: item.countryName - } - })); - } - }); - }, - minLength: 2, - select: function( event, ui ) { - if(ui.item && $('#adr_country').val().trim().length == 0) { - $('#adr_country').val(ui.item.country); - } - }, - open: function() { - $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" ); - }, - close: function() { - $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" ); - } - }); - $('#adr_country').autocomplete({ - source: function( request, response ) { - $.ajax({ - url: "http://ws.geonames.org/searchJSON", - dataType: "jsonp", - data: { - /*featureClass: "A",*/ - featureCode: "PCLI", - /*countryBias: "true",*/ - /*style: "full",*/ - lang: lang, - maxRows: 12, - name_startsWith: request.term - }, - success: function( data ) { - response( $.map( data.geonames, function( item ) { - return { - label: item.name, - value: item.name - } - })); - } - }); - }, - minLength: 2, - select: function( event, ui ) { - /*if(ui.item) { - $('#adr_country').val(ui.item.country); - } - log( ui.item ? - "Selected: " + ui.item.label : - "Nothing selected, input was " + this.value);*/ - }, - open: function() { - $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" ); - }, - close: function() { - $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" ); - } - }); - } - }); - } else { - alert(jsondata.data.message); - } - }); - } - }, - saveAddress:function(dlg, obj, isnew){ - if(!this.enabled) { - return; - } - if(isnew) { - container = $('#addresses dl').last(); - obj = container.find('input').first(); - } else { - checksum = OC.Contacts.checksumFor(obj); - container = OC.Contacts.propertyContainerFor(obj); - } - var adr = new Array( - $(dlg).find('#adr_pobox').val().strip_tags(), - $(dlg).find('#adr_extended').val().strip_tags(), - $(dlg).find('#adr_street').val().strip_tags(), - $(dlg).find('#adr_city').val().strip_tags(), - $(dlg).find('#adr_region').val().strip_tags(), - $(dlg).find('#adr_zipcode').val().strip_tags(), - $(dlg).find('#adr_country').val().strip_tags() - ); - container.find('.adr').val(adr.join(';')); - container.find('.adr_type').val($(dlg).find('#adr_type').val()); - container.find('.adr_type_label').html(t('contacts',ucwords($(dlg).find('#adr_type').val().toLowerCase()))); - OC.Contacts.Card.saveProperty($(container).find('input').first()); - var adrtxt = ''; - if(adr[0].length > 0) { - adrtxt = adrtxt + '<li>' + adr[0] + '</li>'; - } - if(adr[1].length > 0) { - adrtxt = adrtxt + '<li>' + adr[1] + '</li>'; - } - if(adr[2].length > 0) { - adrtxt = adrtxt + '<li>' + adr[2] + '</li>'; - } - if(adr[3].length > 0 || adr[5].length > 0) { - adrtxt = adrtxt + '<li>' + adr[5] + ' ' + adr[3] + '</li>'; - } - if(adr[4].length > 0) { - adrtxt = adrtxt + '<li>' + adr[4] + '</li>'; - } - if(adr[6].length > 0) { - adrtxt = adrtxt + '<li>' + adr[6] + '</li>'; - } - container.find('.addresslist').html(adrtxt); - }, - uploadPhoto:function(filelist) { - if(!this.enabled) { - return; - } - if(!filelist) { - OC.dialogs.alert(t('contacts','No files selected for upload.'), t('contacts', 'Error')); - return; - } - var file = filelist[0]; - var target = $('#file_upload_target'); - var form = $('#file_upload_form'); - var totalSize=0; - if(file.size > $('#max_upload').val()){ - OC.dialogs.alert(t('contacts','The file you are trying to upload exceed the maximum size for file uploads on this server.'), t('contacts', 'Error')); - return; - } else { - target.load(function(){ - var response=jQuery.parseJSON(target.contents().text()); - if(response != undefined && response.status == 'success'){ - OC.Contacts.Card.editPhoto(response.data.id, response.data.tmp); - //alert('File: ' + file.tmp + ' ' + file.name + ' ' + file.mime); - }else{ - OC.dialogs.alert(response.data.message, t('contacts', 'Error')); - } - }); - form.submit(); - } - }, - loadPhotoHandlers:function() { - var phototools = $('#phototools'); - phototools.find('li a').tipsy('hide'); - phototools.find('li a').tipsy(); - if(this.data.PHOTO) { - phototools.find('.delete').click(function() { - $(this).tipsy('hide'); - OC.Contacts.Card.deleteProperty($('#contacts_details_photo'), 'single'); - $(this).hide(); - }); - phototools.find('.edit').click(function() { - $(this).tipsy('hide'); - OC.Contacts.Card.editCurrentPhoto(); - }); - phototools.find('.delete').show(); - phototools.find('.edit').show(); - } else { - phototools.find('.delete').hide(); - phototools.find('.edit').hide(); - } - }, - cloudPhotoSelected:function(path){ - $.getJSON(OC.filePath('contacts', 'ajax', 'oc_photo.php'),{'path':path,'id':OC.Contacts.Card.id},function(jsondata){ - if(jsondata.status == 'success'){ - //alert(jsondata.data.page); - OC.Contacts.Card.editPhoto(jsondata.data.id, jsondata.data.tmp) - $('#edit_photo_dialog_img').html(jsondata.data.page); - } - else{ - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - }, - loadPhoto:function(){ - var self = this; - var refreshstr = '&refresh='+Math.random(); - $('#phototools li a').tipsy('hide'); - var wrapper = $('#contacts_details_photo_wrapper'); - wrapper.addClass('loading').addClass('wait'); - delete this.photo; - this.photo = new Image(); - $(this.photo).load(function () { - $('img.contacts_details_photo').remove() - $(this).addClass('contacts_details_photo'); - wrapper.css('width', $(this).get(0).width + 10); - wrapper.removeClass('loading').removeClass('wait'); - $(this).insertAfter($('#phototools')).fadeIn(); - }).error(function () { - // notify the user that the image could not be loaded - OC.Contacts.notify({message:t('contacts','Error loading profile picture.')}); - }).attr('src', OC.linkTo('contacts', 'photo.php')+'?id='+self.id+refreshstr); - this.loadPhotoHandlers() - }, - editCurrentPhoto:function(){ - if(!this.enabled) { - return; - } - $.getJSON(OC.filePath('contacts', 'ajax', 'currentphoto.php'),{'id':this.id},function(jsondata){ - if(jsondata.status == 'success'){ - //alert(jsondata.data.page); - OC.Contacts.Card.editPhoto(jsondata.data.id, jsondata.data.tmp) - $('#edit_photo_dialog_img').html(jsondata.data.page); - } - else{ - wrapper.removeClass('wait'); - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - }, - editPhoto:function(id, tmpkey){ - if(!this.enabled) { - return; - } - //alert('editPhoto: ' + tmpkey); - $.getJSON(OC.filePath('contacts', 'ajax', 'cropphoto.php'),{'tmpkey':tmpkey,'id':this.id, 'requesttoken':requesttoken},function(jsondata){ - if(jsondata.status == 'success'){ - //alert(jsondata.data.page); - $('#edit_photo_dialog_img').html(jsondata.data.page); - } - else{ - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - if($('#edit_photo_dialog').dialog('isOpen') == true){ - $('#edit_photo_dialog').dialog('moveToTop'); - } else { - $('#edit_photo_dialog').dialog('open'); - } - }, - savePhoto:function() { - if(!this.enabled) { - return; - } - var target = $('#crop_target'); - var form = $('#cropform'); - var wrapper = $('#contacts_details_photo_wrapper'); - var self = this; - wrapper.addClass('wait'); - form.submit(); - target.load(function(){ - var response=jQuery.parseJSON(target.contents().text()); - if(response != undefined && response.status == 'success'){ - // load cropped photo. - self.loadPhoto(); - OC.Contacts.Card.data.PHOTO = true; - }else{ - OC.dialogs.alert(response.data.message, t('contacts', 'Error')); - wrapper.removeClass('wait'); - } - }); - OC.Contacts.Contacts.refreshThumbnail(this.id); - }, - addIM:function() { - //alert('addMail'); - var imlist = $('#imlist'); - imlist.find('li.template:first-child').clone(true).appendTo(imlist).show().find('a .tip').tipsy(); - imlist.find('li.template:last-child').find('select').addClass('contacts_property'); - imlist.find('li.template:last-child').removeClass('template').addClass('propertycontainer'); - imlist.find('li:last-child').find('input[type="text"]').focus(); - return false; - }, - loadIMs:function() { - //console.log('loadIMs'); - $('#ims').hide(); - $('#imlist li.propertycontainer').remove(); - var imlist = $('#imlist'); - for(var im in this.data.IMPP) { - this.addIM(); - var curim = imlist.find('li.propertycontainer:last-child'); - if(typeof this.data.IMPP[im].label != 'undefined') { - curim.prepend('<label class="xab">'+this.data.IMPP[im].label+'</label>'); - } - curim.data('checksum', this.data.IMPP[im]['checksum']) - curim.find('input[type="text"]').val(this.data.IMPP[im]['value'].split(':').pop()); - for(var param in this.data.IMPP[im]['parameters']) { - if(param.toUpperCase() == 'PREF') { - curim.find('input[type="checkbox"]').attr('checked', 'checked') - } - else if(param.toUpperCase() == 'TYPE') { - if(typeof this.data.IMPP[im]['parameters'][param] == 'string') { - var found = false; - var imt = this.data.IMPP[im]['parameters'][param]; - curim.find('select.types option').each(function(){ - if($(this).val().toUpperCase() == imt.toUpperCase()) { - $(this).attr('selected', 'selected'); - found = true; - } - }); - if(!found) { - curim.find('select.type option:last-child').after('<option value="'+imt+'" selected="selected">'+imt+'</option>'); - } - } else if(typeof this.data.IMPP[im]['parameters'][param] == 'object') { - for(imtype in this.data.IMPP[im]['parameters'][param]) { - var found = false; - var imt = this.data.IMPP[im]['parameters'][param][imtype]; - curim.find('select.types option').each(function(){ - if($(this).val().toUpperCase() == imt.toUpperCase().split(',')) { - $(this).attr('selected', 'selected'); - found = true; - } - }); - if(!found) { - curim.find('select.type option:last-child').after('<option value="'+imt+'" selected="selected">'+imt+'</option>'); - } - } - } - } - else if(param.toUpperCase() == 'X-SERVICE-TYPE') { - curim.find('select.impp').val(this.data.IMPP[im]['parameters'][param].toLowerCase()); - } - } - } - if($('#imlist li').length > 1) { - $('#ims').show(); - } - return false; - }, - addMail:function() { - var emaillist = $('#emaillist'); - emaillist.find('li.template:first-child').clone(true).appendTo(emaillist).show().find('a .tip').tipsy(); - emaillist.find('li.template:last-child').find('select').addClass('contacts_property'); - emaillist.find('li.template:last-child').removeClass('template').addClass('propertycontainer'); - emaillist.find('li:last-child').find('input[type="email"]').focus(); - emaillist.find('li:last-child').find('select').multiselect({ - noneSelectedText: t('contacts', 'Select type'), - header: false, - selectedList: 4, - classes: 'typelist' - }); - return false; - }, - loadMails:function() { - $('#emails').hide(); - $('#emaillist li.propertycontainer').remove(); - var emaillist = $('#emaillist'); - for(var mail in this.data.EMAIL) { - this.addMail(); - emaillist.find('li:last-child').find('select').multiselect('destroy'); - var curemail = emaillist.find('li.propertycontainer:last-child'); - if(typeof this.data.EMAIL[mail].label != 'undefined') { - curemail.prepend('<label class="xab">'+this.data.EMAIL[mail].label+'</label>'); - } - curemail.data('checksum', this.data.EMAIL[mail]['checksum']) - curemail.find('input[type="email"]').val(this.data.EMAIL[mail]['value']); - for(var param in this.data.EMAIL[mail]['parameters']) { - if(param.toUpperCase() == 'PREF') { - curemail.find('input[type="checkbox"]').attr('checked', 'checked') - } - else if(param.toUpperCase() == 'TYPE') { - for(etype in this.data.EMAIL[mail]['parameters'][param]) { - var found = false; - var et = this.data.EMAIL[mail]['parameters'][param][etype]; - curemail.find('select option').each(function(){ - if($.inArray($(this).val().toUpperCase(), et.toUpperCase().split(',')) > -1) { - $(this).attr('selected', 'selected'); - found = true; - } - }); - if(!found) { - curemail.find('select option:last-child').after('<option value="'+et+'" selected="selected">'+et+'</option>'); - } - } - } - } - curemail.find('select').multiselect({ - noneSelectedText: t('contacts', 'Select type'), - header: false, - selectedList: 4, - classes: 'typelist' - }); - } - if($('#emaillist li').length > 1) { - $('#emails').show(); - } - $('#emaillist li:last-child').find('input[type="text"]').focus(); - return false; - }, - addPhone:function() { - var phonelist = $('#phonelist'); - phonelist.find('li.template:first-child').clone(true).appendTo(phonelist); //.show(); - phonelist.find('li.template:last-child').find('select').addClass('contacts_property'); - phonelist.find('li.template:last-child').removeClass('template').addClass('propertycontainer'); - phonelist.find('li:last-child').find('input[type="text"]').focus(); - phonelist.find('li:last-child').find('select').multiselect({ - noneSelectedText: t('contacts', 'Select type'), - header: false, - selectedList: 4, - classes: 'typelist' - }); - phonelist.find('li:last-child').show(); - return false; - }, - loadPhones:function() { - $('#phones').hide(); - $('#phonelist li.propertycontainer').remove(); - var phonelist = $('#phonelist'); - for(var phone in this.data.TEL) { - this.addPhone(); - var curphone = phonelist.find('li.propertycontainer:last-child'); - if(typeof this.data.TEL[phone].label != 'undefined') { - curphone.prepend('<label class="xab">'+this.data.TEL[phone].label+'</label>'); - } - curphone.find('select').multiselect('destroy'); - curphone.data('checksum', this.data.TEL[phone]['checksum']) - curphone.find('input[type="text"]').val(this.data.TEL[phone]['value']); - for(var param in this.data.TEL[phone]['parameters']) { - if(param.toUpperCase() == 'PREF') { - curphone.find('input[type="checkbox"]').attr('checked', 'checked'); - } - else if(param.toUpperCase() == 'TYPE') { - for(ptype in this.data.TEL[phone]['parameters'][param]) { - var found = false; - var pt = this.data.TEL[phone]['parameters'][param][ptype]; - curphone.find('select option').each(function() { - //if ($(this).val().toUpperCase() == pt.toUpperCase()) { - if ($.inArray($(this).val().toUpperCase(), pt.toUpperCase().split(',')) > -1) { - $(this).attr('selected', 'selected'); - found = true; - } - }); - if(!found) { - curphone.find('select option:last-child').after('<option class="custom" value="'+pt+'" selected="selected">'+pt+'</option>'); - } - } - } - } - curphone.find('select').multiselect({ - noneSelectedText: t('contacts', 'Select type'), - header: false, - selectedList: 4, - classes: 'typelist' - }); - } - if(phonelist.find('li').length > 1) { - $('#phones').show(); - } - return false; - }, - }, - Contacts:{ - contacts:{}, - deletionQueue:[], - batchnum:50, - warnNotDeleted:function(e) { - e = e || window.event; - var warn = t('contacts', 'Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted.'); - if (e) { - e.returnValue = String(warn); - } - if(OC.Contacts.Contacts.deletionQueue.length > 0) { - setTimeout(OC.Contacts.Contacts.deleteFilesInQueue, 1); - } - return warn; - }, - deleteFilesInQueue:function() { - var queue = OC.Contacts.Contacts.deletionQueue; - if(queue.length > 0) { - OC.Contacts.notify({cancel:true}); - while(queue.length > 0) { - var id = queue.pop(); - if(id) { - OC.Contacts.Card.doDelete(id, false); - } - } - } - }, - getContact:function(id) { - if(!this.contacts[id]) { - this.contacts[id] = $('#contacts li[data-id="'+id+'"]'); - if(!this.contacts[id]) { - self = this; - $.getJSON(OC.filePath('contacts', 'ajax', 'contactdetails.php'),{'id':id},function(jsondata){ - if(jsondata.status == 'success'){ - self.contacts[id] = self.insertContact({data:jsondata.data}); - } - else{ - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } - } - return this.contacts[id]; - }, - drop:function(event, ui) { - var dragitem = ui.draggable, droptarget = $(this); - if(dragitem.is('li')) { - OC.Contacts.Contacts.dropContact(event, dragitem, droptarget); - } else { - OC.Contacts.Contacts.dropAddressbook(event, dragitem, droptarget); - } - }, - dropContact:function(event, dragitem, droptarget) { - if(dragitem.data('bookid') == droptarget.data('id')) { - return false; - } - var droplist = (droptarget.is('ul')) ? droptarget : droptarget.next(); - $.post(OC.filePath('contacts', 'ajax', 'contact/move.php'), - { - id: dragitem.data('id'), - aid: droptarget.data('id') - }, - function(jsondata){ - if(jsondata.status == 'success'){ - dragitem.attr('data-bookid', droptarget.data('id')) - dragitem.data('bookid', droptarget.data('id')); - OC.Contacts.Contacts.insertContact({ - contactlist:droplist, - contact:dragitem.detach() - }); - OC.Contacts.Contacts.scrollTo(dragitem.data('id')); - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - }, - dropAddressbook:function(event, dragitem, droptarget) { - if(confirm(t('contacts', 'Do you want to merge these address books?'))) { - if(dragitem.data('bookid') == droptarget.data('id')) { - return false; - } - var droplist = (droptarget.is('ul')) ? droptarget : droptarget.next(); - $.post(OC.filePath('contacts', 'ajax', 'contact/move.php'), - { - id: dragitem.data('id'), - aid: droptarget.data('id'), - isaddressbook: 1 - }, - function(jsondata){ - if(jsondata.status == 'success'){ - OC.Contacts.Contacts.update(); // Easier to refresh the whole bunch. - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } else { - return false; - } - }, - /** - * @params params An object with the properties 'contactlist':a jquery object of the ul to insert into, - * 'contacts':a jquery object of all items in the list and either 'data': an object with the properties - * id, addressbookid and displayname or 'contact': a listitem to be inserted directly. - * If 'contactlist' or 'contacts' aren't defined they will be search for based in the properties in 'data'. - */ - insertContact:function(params) { - var id, bookid; - if(!params.contactlist) { - // FIXME: Check if contact really exists. - bookid = params.data ? params.data.addressbookid : params.contact.data('bookid'); - id = params.data ? params.data.id : params.contact.data('id'); - params.contactlist = $('#contacts ul[data-id="'+bookid+'"]'); - } - if(!params.contacts) { - bookid = params.data ? params.data.addressbookid : params.contact.data('bookid'); - id = params.data ? params.data.id : params.contact.data('id'); - params.contacts = $('#contacts ul[data-id="'+bookid+'"] li'); - } - var contact = params.data - ? $('<li data-id="'+params.data.id+'" data-bookid="'+params.data.addressbookid - + '" role="button"><a href="'+OC.linkTo('contacts', 'index.php')+'&id=' - + params.data.id+'" style="background: url('+OC.filePath('contacts', '', 'thumbnail.php') - + '?id='+params.data.id+') no-repeat scroll 0% 0% transparent;">' - + params.data.displayname+'</a></li>') - : params.contact; - var added = false; - var name = params.data ? params.data.displayname.toLowerCase() : contact.find('a').text().toLowerCase(); - if(params.contacts) { - params.contacts.each(function() { - if ($(this).text().toLowerCase() > name) { - $(this).before(contact); - added = true; - return false; - } - }); - } - if(!added || !params.contacts) { - params.contactlist.append(contact); - } - //this.contacts[id] = contact; - return contact; - }, - addAddressbook:function(name, description, cb) { - $.post(OC.filePath('contacts', 'ajax/addressbook', 'add.php'), { name: name, description: description, active: true }, - function(jsondata) { - if(jsondata.status == 'success'){ - if(cb && typeof cb == 'function') { - cb(jsondata.data.addressbook); - } - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - return false; - } - }); - }, - doImport:function(file, aid){ - $.post(OC.filePath('contacts', '', 'import.php'), { id: aid, file: file, fstype: 'OC_FilesystemView' }, - function(jsondata){ - if(jsondata.status != 'success'){ - OC.Contacts.notify({message:jsondata.data.message}); - } - }); - return false; - }, - next:function(reverse) { - var curlistitem = this.getContact(OC.Contacts.Card.id); - var newlistitem = reverse ? curlistitem.prev('li') : curlistitem.next('li'); - if(newlistitem) { - curlistitem.removeClass('active'); - OC.Contacts.Card.update({ - cid:newlistitem.data('id'), - aid:newlistitem.data('bookid') - }); - } - }, - previous:function() { - this.next(true); - }, - nextAddressbook:function(reverse) { - console.log('nextAddressbook', reverse); - var curlistitem = this.getContact(OC.Contacts.Card.id); - var parent = curlistitem.parent('ul'); - var newparent = reverse - ? parent.prevAll('ul').first() - : parent.nextAll('ul').first(); - if(newparent) { - newlistitem = newparent.find('li:first-child'); - if(newlistitem) { - parent.slideUp().prev('h3').removeClass('active'); - newparent.slideDown().prev('h3').addClass('active'); - curlistitem.removeClass('active'); - OC.Contacts.Card.update({ - cid:newlistitem.data('id'), - aid:newlistitem.data('bookid') - }); - } - } - }, - previousAddressbook:function() { - console.log('previousAddressbook'); - this.nextAddressbook(true); - }, - // Reload the contacts list. - update:function(params){ - if(!params) { params = {}; } - if(!params.start) { - if(params.aid) { - $('#contacts h3[data-id="'+params.aid+'"],#contacts ul[data-id="'+params.aid+'"]').remove(); - } else { - $('#contacts').empty(); - } - } - self = this; - console.log('update: ' + params.cid + ' ' + params.aid + ' ' + params.start); - var firstrun = false; - var opts = {}; - opts['startat'] = (params.start?params.start:0); - if(params.aid) { - opts['aid'] = params.aid; - } - $.getJSON(OC.filePath('contacts', 'ajax', 'contact/list.php'),opts,function(jsondata){ - if(jsondata.status == 'success'){ - var books = jsondata.data.entries; - $.each(books, function(b, book) { - if($('#contacts h3[data-id="'+b+'"]').length == 0) { - firstrun = true; - if($('#contacts h3').length == 0) { - $('#contacts').html('<h3 class="addressbook" contextmenu="addressbookmenu" data-id="' - + b + '" data-permissions="' + book.permissions + '">' + book.displayname - + '</h3><ul class="contacts hidden" data-id="'+b+'" data-permissions="' - + book.permissions + '"></ul>'); - } else { - if(!$('#contacts h3[data-id="' + b + '"]').length) { - var item = $('<h3 class="addressbook" contextmenu="addressbookmenu" data-id="' - + b + '" data-permissions="' + book.permissions + '">' - + book.displayname+'</h3><ul class="contacts hidden" data-id="' + b - + '" data-permissions="' + book.permissions + '"></ul>'); - var added = false; - $('#contacts h3').each(function(){ - if ($(this).text().toLowerCase() > book.displayname.toLowerCase()) { - $(this).before(item).fadeIn('fast'); - added = true; - return false; - } - }); - if(!added) { - $('#contacts').append(item); - } - } - } - $('#contacts h3[data-id="'+b+'"]').on('click', function(event) { - $('#contacts h3').removeClass('active'); - $(this).addClass('active'); - $('#contacts ul[data-id="'+b+'"]').slideToggle(300); - return false; - }); - var accept = 'li:not([data-bookid="'+b+'"]),h3:not([data-id="'+b+'"])'; - $('#contacts h3[data-id="'+b+'"],#contacts ul[data-id="'+b+'"]').droppable({ - drop: OC.Contacts.Contacts.drop, - activeClass: 'ui-state-hover', - accept: accept - }); - } - var contactlist = $('#contacts ul[data-id="'+b+'"]'); - var contacts = $('#contacts ul[data-id="'+b+'"] li'); - for(var c in book.contacts) { - if(book.contacts[c].id == undefined) { continue; } - if(!$('#contacts li[data-id="'+book.contacts[c]['id']+'"]').length) { - var contact = OC.Contacts.Contacts.insertContact({contactlist:contactlist, contacts:contacts, data:book.contacts[c]}); - if(c == self.batchnum-10) { - contact.bind('inview', function(event, isInView, visiblePartX, visiblePartY) { - $(this).unbind(event); - var bookid = $(this).data('bookid'); - var numsiblings = $('.contacts li[data-bookid="'+bookid+'"]').length; - if (isInView && numsiblings >= self.batchnum) { - console.log('This would be a good time to load more contacts.'); - OC.Contacts.Contacts.update({cid:params.cid, aid:bookid, start:$('#contacts li[data-bookid="'+bookid+'"]').length}); - } - }); - } - } - } - }); - if($('#contacts h3').length > 1) { - $('#contacts li,#contacts h3').draggable({ - distance: 10, - revert: 'invalid', - axis: 'y', containment: '#contacts', - scroll: true, scrollSensitivity: 40, - opacity: 0.7, helper: 'clone' - }); - } else { - $('#contacts h3').first().addClass('active'); - } - if(opts['startat'] == 0) { // only update card on first load. - OC.Contacts.Card.update(params); - } - } else { - OC.Contacts.notify({message:t('contacts', 'Error')+': '+jsondata.data.message}); - } - }); - }, - refreshThumbnail:function(id){ - var item = $('.contacts li[data-id="'+id+'"]').find('a'); - item.html(OC.Contacts.Card.fn); - item.css('background','url('+OC.filePath('contacts', '', 'thumbnail.php')+'?id='+id+'&refresh=1'+Math.random()+') no-repeat'); - }, - scrollTo:function(id){ - var item = $('#contacts li[data-id="'+id+'"]'); - if(item && $.isNumeric(item.offset().top)) { - console.log('scrollTo ' + parseInt(item.offset().top)); - $('#contacts').animate({ - scrollTop: parseInt(item.offset()).top-40}, 'slow','swing'); - } - } - } -} -$(document).ready(function(){ - - OCCategories.changed = OC.Contacts.Card.categoriesChanged; - OCCategories.app = 'contacts'; - - var ninjahelp = $('#ninjahelp'); - - $('#bottomcontrols .settings').on('click keydown', function() { - try { - ninjahelp.hide(); - OC.appSettings({appid:'contacts', loadJS:true, cache:false}); - } catch(e) { - console.log('error:', e.message); - } - }); - $('#bottomcontrols .import').click(function() { - $('#import_upload_start').trigger('click'); - }); - $('#contacts_newcontact').on('click keydown', OC.Contacts.Card.editNew); - - ninjahelp.find('.close').on('click keydown',function() { - ninjahelp.hide(); - }); - - $(document).on('keyup', function(event) { - if(event.target.nodeName.toUpperCase() != 'BODY' - || $('#contacts li').length == 0 - || !OC.Contacts.Card.id) { - return; - } - //console.log(event.which + ' ' + event.target.nodeName); - /** - * To add: - * Shift-a: add addressbook - * u (85): hide/show leftcontent - * f (70): add field - */ - switch(event.which) { - case 27: // Esc - ninjahelp.hide(); - break; - case 46: // Delete - if(event.shiftKey) { - OC.Contacts.Card.delayedDelete(); - } - break; - case 40: // down - case 74: // j - OC.Contacts.Contacts.next(); - break; - case 65: // a - if(event.shiftKey) { - // add addressbook - OC.Contacts.notImplemented(); - break; - } - OC.Contacts.Card.editNew(); - break; - case 38: // up - case 75: // k - OC.Contacts.Contacts.previous(); - break; - case 34: // PageDown - case 78: // n - // next addressbook - OC.Contacts.Contacts.nextAddressbook(); - break; - case 79: // o - var aid = $('#contacts h3.active').first().data('id'); - if(aid) { - $('#contacts ul[data-id="'+aid+'"]').slideToggle(300); - } - break; - case 33: // PageUp - case 80: // p - // prev addressbook - OC.Contacts.Contacts.previousAddressbook(); - break; - case 82: // r - OC.Contacts.Contacts.update({cid:OC.Contacts.Card.id}); - break; - case 191: // ? - ninjahelp.toggle('fast'); - break; - } - - }); - - //$(window).on('beforeunload', OC.Contacts.Contacts.deleteFilesInQueue); - - // Load a contact. - $('.contacts').keydown(function(event) { - if(event.which == 13 || event.which == 32) { - $('.contacts').click(); - } - }); - $(document).on('click', '#contacts', function(event){ - var $tgt = $(event.target); - if ($tgt.is('li') || $tgt.is('a')) { - var item = $tgt.is('li')?$($tgt):($tgt).parent(); - var id = item.data('id'); - var bookid = item.data('bookid'); - item.addClass('active'); - var oldid = $('#rightcontent').data('id'); - if(oldid != 0){ - var olditem = $('.contacts li[data-id="'+oldid+'"]'); - var oldbookid = olditem.data('bookid'); - olditem.removeClass('active'); - if(oldbookid != bookid) { - $('#contacts h3[data-id="'+oldbookid+'"]').removeClass('active'); - $('#contacts h3[data-id="'+bookid+'"]').addClass('active'); - } - } - $.getJSON(OC.filePath('contacts', 'ajax', 'contact/details.php'),{'id':id},function(jsondata){ - if(jsondata.status == 'success'){ - OC.Contacts.Card.loadContact(jsondata.data, bookid); - } - else{ - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } - return false; - }); - - $('.contacts_property').live('change', function(){ - OC.Contacts.Card.saveProperty(this); - }); - - $(function() { - // Upload function for dropped contact photos files. Should go in the Contacts class/object. - $.fileUpload = function(files){ - var file = files[0]; - if(file.size > $('#max_upload').val()){ - OC.dialogs.alert(t('contacts','The file you are trying to upload exceed the maximum size for file uploads on this server.'), t('contacts','Upload too large')); - return; - } - if (file.type.indexOf("image") != 0) { - OC.dialogs.alert(t('contacts','Only image files can be used as profile picture.'), t('contacts','Wrong file type')); - return; - } - var xhr = new XMLHttpRequest(); - - if (!xhr.upload) { - OC.dialogs.alert(t('contacts', 'Your browser doesn\'t support AJAX upload. Please click on the profile picture to select a photo to upload.'), t('contacts', 'Error')) - } - fileUpload = xhr.upload, - xhr.onreadystatechange = function() { - if (xhr.readyState == 4){ - response = $.parseJSON(xhr.responseText); - if(response.status == 'success') { - if(xhr.status == 200) { - OC.Contacts.Card.editPhoto(response.data.id, response.data.tmp); - } else { - OC.dialogs.alert(xhr.status + ': ' + xhr.responseText, t('contacts', 'Error')); - } - } else { - OC.dialogs.alert(response.data.message, t('contacts', 'Error')); - } - } - }; - - fileUpload.onprogress = function(e){ - if (e.lengthComputable){ - var _progress = Math.round((e.loaded * 100) / e.total); - //if (_progress != 100){ - //} - } - }; - xhr.open('POST', OC.filePath('contacts', 'ajax', 'uploadphoto.php')+'?id='+OC.Contacts.Card.id+'&requesttoken='+requesttoken+'&imagefile='+encodeURIComponent(file.name), true); - xhr.setRequestHeader('Cache-Control', 'no-cache'); - xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); - xhr.setRequestHeader('X_FILE_NAME', encodeURIComponent(file.name)); - xhr.setRequestHeader('X-File-Size', file.size); - xhr.setRequestHeader('Content-Type', file.type); - xhr.send(file); - } - }); - - $(document).bind('drop dragover', function (e) { - e.preventDefault(); // prevent browser from doing anything, if file isn't dropped in dropZone - }); - - //add multiply file upload attribute to all browsers except konqueror (which crashes when it's used) - if(navigator.userAgent.search(/konqueror/i)==-1){ - $('#import_upload_start').attr('multiple','multiple') - } - // Import using jquery.fileupload - $(function() { - var uploadingFiles = {}, numfiles = 0, uploadedfiles = 0, retries = 0; - var aid; - - $('#import_upload_start').fileupload({ - dropZone: $('#contacts'), // restrict dropZone to contacts list. - acceptFileTypes: /^text\/(directory|vcard|x-vcard)$/i, - add: function(e, data) { - var files = data.files; - var totalSize=0; - if(files) { - numfiles += files.length; uploadedfiles = 0; - for(var i=0;i<files.length;i++) { - if(files[i].size ==0 && files[i].type== '') { - OC.dialogs.alert(t('files', 'Unable to upload your file as it is a directory or has 0 bytes'), t('files', 'Upload Error')); - return; - } - totalSize+=files[i].size; - } - } - if(totalSize>$('#max_upload').val()){ - OC.dialogs.alert(t('contacts','The file you are trying to upload exceed the maximum size for file uploads on this server.'), t('contacts','Upload too large')); - numfiles = uploadedfiles = retries = aid = 0; - uploadingFiles = {}; - return; - }else{ - if($.support.xhrFileUpload) { - for(var i=0;i<files.length;i++){ - var fileName = files[i].name; - var dropTarget; - if($(e.originalEvent.target).is('h3')) { - dropTarget = $(e.originalEvent.target).next('ul'); - } else { - dropTarget = $(e.originalEvent.target).closest('ul'); - } - if(dropTarget && dropTarget.hasClass('contacts')) { // TODO: More thorough check for where we are. - aid = dropTarget.attr('data-id'); - } else { - aid = undefined; - } - var jqXHR = $('#import_upload_start').fileupload('send', {files: files[i], - formData: function(form) { - var formArray = form.serializeArray(); - formArray['aid'] = aid; - return formArray; - }}) - .success(function(result, textStatus, jqXHR) { - if(result.status == 'success') { - // import the file - uploadedfiles += 1; - } else { - OC.Contacts.notify({message:jsondata.data.message}); - } - return false; - }) - .error(function(jqXHR, textStatus, errorThrown) { - console.log(textStatus); - OC.Contacts.notify({message:errorThrown + ': ' + textStatus,}); - }); - uploadingFiles[fileName] = jqXHR; - } - } else { - data.submit().success(function(data, status) { - response = jQuery.parseJSON(data[0].body.innerText); - if(response[0] != undefined && response[0].status == 'success') { - var file=response[0]; - delete uploadingFiles[file.name]; - $('tr').filterAttr('data-file',file.name).data('mime',file.mime); - var size = $('tr').filterAttr('data-file',file.name).find('td.filesize').text(); - if(size==t('files','Pending')){ - $('tr').filterAttr('data-file',file.name).find('td.filesize').text(file.size); - } - FileList.loadingDone(file.name); - } else { - OC.Contacts.notify({message:response.data.message}); - } - }); - } - } - }, - fail: function(e, data) { - console.log('fail'); - OC.Contacts.notify({message:data.errorThrown + ': ' + data.textStatus}); - // TODO: Remove file from upload queue. - }, - progressall: function(e, data) { - var progress = (data.loaded/data.total)*50; - $('#uploadprogressbar').progressbar('value',progress); - }, - start: function(e, data) { - $('#uploadprogressbar').progressbar({value:0}); - $('#uploadprogressbar').fadeIn(); - if(data.dataType != 'iframe ') { - $('#upload input.stop').show(); - } - }, - stop: function(e, data) { - // stop only gets fired once so we collect uploaded items here. - var importFiles = function(aid, fileList) { - // Create a closure that can be called from different places. - if(numfiles != uploadedfiles) { - OC.Contacts.notify({message:t('contacts', 'Not all files uploaded. Retrying...')}); - retries += 1; - if(retries > 3) { - numfiles = uploadedfiles = retries = aid = 0; - uploadingFiles = {}; - $('#uploadprogressbar').fadeOut(); - OC.dialogs.alert(t('contacts', 'Something went wrong with the upload, please retry.'), t('contacts', 'Error')); - return; - } - setTimeout(function() { // Just to let any uploads finish - importFiles(aid, uploadingFiles); - }, 1000); - } - $('#uploadprogressbar').progressbar('value',50); - var todo = uploadedfiles; - $.each(fileList, function(fileName, data) { - OC.Contacts.Contacts.doImport(fileName, aid); - delete fileList[fileName]; - numfiles -= 1; uploadedfiles -= 1; - $('#uploadprogressbar').progressbar('value',50+(50/(todo-uploadedfiles))); - }) - $('#uploadprogressbar').progressbar('value',100); - $('#uploadprogressbar').fadeOut(); - setTimeout(function() { - OC.Contacts.Contacts.update({aid:aid}); - numfiles = uploadedfiles = retries = aid = 0; - }, 1000); - } - if(!aid) { - // Either selected with filepicker or dropped outside of an address book. - $.getJSON(OC.filePath('contacts', 'ajax', 'selectaddressbook.php'),{},function(jsondata) { - if(jsondata.status == 'success') { - if($('#selectaddressbook_dialog').dialog('isOpen') == true) { - $('#selectaddressbook_dialog').dialog('moveToTop'); - } else { - $('#dialog_holder').html(jsondata.data.page).ready(function($) { - var select_dlg = $('#selectaddressbook_dialog'); - select_dlg.dialog({ - modal: true, height: 'auto', width: 'auto', - buttons: { - 'Ok':function() { - aid = select_dlg.find('input:checked').val(); - if(aid == 'new') { - var displayname = select_dlg.find('input.name').val(); - var description = select_dlg.find('input.desc').val(); - if(!displayname.trim()) { - OC.dialogs.alert(t('contacts', 'The address book name cannot be empty.'), t('contacts', 'Error')); - return false; - } - $(this).dialog('close'); - OC.Contacts.Contacts.addAddressbook(displayname, description, function(addressbook) { - aid = addressbook.id; - setTimeout(function() { - importFiles(aid, uploadingFiles); - }, 500); - console.log('aid ' + aid); - }); - } else { - setTimeout(function() { - importFiles(aid, uploadingFiles); - }, 500); - console.log('aid ' + aid); - $(this).dialog('close'); - } - }, - 'Cancel':function() { - $(this).dialog('close'); - numfiles = uploadedfiles = retries = aid = 0; - uploadingFiles = {}; - $('#uploadprogressbar').fadeOut(); - } - }, - close: function(event, ui) { - // TODO: If numfiles != 0 delete tmp files after a timeout. - $(this).dialog('destroy').remove(); - } - }); - }); - } - } else { - $('#uploadprogressbar').fadeOut(); - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } else { - // Dropped on an address book or it's list. - setTimeout(function() { // Just to let any uploads finish - importFiles(aid, uploadingFiles); - }, 1000); - } - if(data.dataType != 'iframe ') { - $('#upload input.stop').hide(); - } - } - }) - }); - - OC.Contacts.loadHandlers(); - OC.Contacts.Contacts.update({cid:id}); -}); diff --git a/apps/contacts/js/expanding.js b/apps/contacts/js/expanding.js deleted file mode 100644 index 17139f27fff..00000000000 --- a/apps/contacts/js/expanding.js +++ /dev/null @@ -1,118 +0,0 @@ -// Expanding Textareas -// https://github.com/bgrins/ExpandingTextareas - -(function(factory) { - // Add jQuery via AMD registration or browser globals - if (typeof define === 'function' && define.amd) { - define([ 'jquery' ], factory); - } - else { - factory(jQuery); - } -}(function ($) { - $.expandingTextarea = $.extend({ - autoInitialize: true, - initialSelector: "textarea.expanding", - opts: { - resize: function() { } - } - }, $.expandingTextarea || {}); - - var cloneCSSProperties = [ - 'lineHeight', 'textDecoration', 'letterSpacing', - 'fontSize', 'fontFamily', 'fontStyle', - 'fontWeight', 'textTransform', 'textAlign', - 'direction', 'wordSpacing', 'fontSizeAdjust', - 'wordWrap', - 'borderLeftWidth', 'borderRightWidth', - 'borderTopWidth','borderBottomWidth', - 'paddingLeft', 'paddingRight', - 'paddingTop','paddingBottom', - 'marginLeft', 'marginRight', - 'marginTop','marginBottom', - 'boxSizing', 'webkitBoxSizing', 'mozBoxSizing', 'msBoxSizing' - ]; - - var textareaCSS = { - position: "absolute", - height: "100%", - resize: "none" - }; - - var preCSS = { - visibility: "hidden", - border: "0 solid", - whiteSpace: "pre-wrap" - }; - - var containerCSS = { - position: "relative" - }; - - function resize() { - $(this).closest('.expandingText').find("div").text(this.value + ' '); - $(this).trigger("resize.expanding"); - } - - $.fn.expandingTextarea = function(o) { - - var opts = $.extend({ }, $.expandingTextarea.opts, o); - - if (o === "resize") { - return this.trigger("input.expanding"); - } - - if (o === "destroy") { - this.filter(".expanding-init").each(function() { - var textarea = $(this).removeClass('expanding-init'); - var container = textarea.closest('.expandingText'); - - container.before(textarea).remove(); - textarea - .attr('style', textarea.data('expanding-styles') || '') - .removeData('expanding-styles'); - }); - - return this; - } - - this.filter("textarea").not(".expanding-init").addClass("expanding-init").each(function() { - var textarea = $(this); - - textarea.wrap("<div class='expandingText'></div>"); - textarea.after("<pre class='textareaClone'><div></div></pre>"); - - var container = textarea.parent().css(containerCSS); - var pre = container.find("pre").css(preCSS); - - // Store the original styles in case of destroying. - textarea.data('expanding-styles', textarea.attr('style')); - textarea.css(textareaCSS); - - $.each(cloneCSSProperties, function(i, p) { - var val = textarea.css(p); - - // Only set if different to prevent overriding percentage css values. - if (pre.css(p) !== val) { - pre.css(p, val); - } - }); - - textarea.bind("input.expanding propertychange.expanding", resize); - resize.apply(this); - - if (opts.resize) { - textarea.bind("resize.expanding", opts.resize); - } - }); - - return this; - }; - - $(function () { - if ($.expandingTextarea.autoInitialize) { - $($.expandingTextarea.initialSelector).expandingTextarea(); - } - }); - -})); diff --git a/apps/contacts/js/jquery.Jcrop.js b/apps/contacts/js/jquery.Jcrop.js deleted file mode 100644 index 36f9a0f08f8..00000000000 --- a/apps/contacts/js/jquery.Jcrop.js +++ /dev/null @@ -1,1765 +0,0 @@ -/** - * jquery.Jcrop.js v0.9.9 {{{ - * - * jQuery Image Cropping Plugin - released under MIT License - * Author: Kelly Hallman <khallman@gmail.com> - * http://github.com/tapmodo/Jcrop - * - * }}} - * Copyright (c) 2008-2012 Tapmodo Interactive LLC {{{ - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - * - * }}} - */ - -(function ($) { - - $.Jcrop = function (obj, opt) { - var options = $.extend({}, $.Jcrop.defaults), - docOffset, lastcurs, ie6mode = false; - - // Internal Methods {{{ - function px(n) { - return parseInt(n, 10) + 'px'; - } - function cssClass(cl) { - return options.baseClass + '-' + cl; - } - function supportsColorFade() { - return $.fx.step.hasOwnProperty('backgroundColor'); - } - function getPos(obj) //{{{ - { - var pos = $(obj).offset(); - return [pos.left, pos.top]; - } - //}}} - function mouseAbs(e) //{{{ - { - return [(e.pageX - docOffset[0]), (e.pageY - docOffset[1])]; - } - //}}} - function setOptions(opt) //{{{ - { - if (typeof(opt) !== 'object') opt = {}; - options = $.extend(options, opt); - - $.each(['onChange','onSelect','onRelease','onDblClick'],function(i,e) { - if (typeof(options[e]) !== 'function') options[e] = function () {}; - }); - } - //}}} - function startDragMode(mode, pos) //{{{ - { - docOffset = getPos($img); - Tracker.setCursor(mode === 'move' ? mode : mode + '-resize'); - - if (mode === 'move') { - return Tracker.activateHandlers(createMover(pos), doneSelect); - } - - var fc = Coords.getFixed(); - var opp = oppLockCorner(mode); - var opc = Coords.getCorner(oppLockCorner(opp)); - - Coords.setPressed(Coords.getCorner(opp)); - Coords.setCurrent(opc); - - Tracker.activateHandlers(dragmodeHandler(mode, fc), doneSelect); - } - //}}} - function dragmodeHandler(mode, f) //{{{ - { - return function (pos) { - if (!options.aspectRatio) { - switch (mode) { - case 'e': - pos[1] = f.y2; - break; - case 'w': - pos[1] = f.y2; - break; - case 'n': - pos[0] = f.x2; - break; - case 's': - pos[0] = f.x2; - break; - } - } else { - switch (mode) { - case 'e': - pos[1] = f.y + 1; - break; - case 'w': - pos[1] = f.y + 1; - break; - case 'n': - pos[0] = f.x + 1; - break; - case 's': - pos[0] = f.x + 1; - break; - } - } - Coords.setCurrent(pos); - Selection.update(); - }; - } - //}}} - function createMover(pos) //{{{ - { - var lloc = pos; - KeyManager.watchKeys(); - - return function (pos) { - Coords.moveOffset([pos[0] - lloc[0], pos[1] - lloc[1]]); - lloc = pos; - - Selection.update(); - }; - } - //}}} - function oppLockCorner(ord) //{{{ - { - switch (ord) { - case 'n': - return 'sw'; - case 's': - return 'nw'; - case 'e': - return 'nw'; - case 'w': - return 'ne'; - case 'ne': - return 'sw'; - case 'nw': - return 'se'; - case 'se': - return 'nw'; - case 'sw': - return 'ne'; - } - } - //}}} - function createDragger(ord) //{{{ - { - return function (e) { - if (options.disabled) { - return false; - } - if ((ord === 'move') && !options.allowMove) { - return false; - } - - // Fix position of crop area when dragged the very first time. - // Necessary when crop image is in a hidden element when page is loaded. - docOffset = getPos($img); - - btndown = true; - startDragMode(ord, mouseAbs(e)); - e.stopPropagation(); - e.preventDefault(); - return false; - }; - } - //}}} - function presize($obj, w, h) //{{{ - { - var nw = $obj.width(), - nh = $obj.height(); - if ((nw > w) && w > 0) { - nw = w; - nh = (w / $obj.width()) * $obj.height(); - } - if ((nh > h) && h > 0) { - nh = h; - nw = (h / $obj.height()) * $obj.width(); - } - xscale = $obj.width() / nw; - yscale = $obj.height() / nh; - $obj.width(nw).height(nh); - } - //}}} - function unscale(c) //{{{ - { - return { - x: parseInt(c.x * xscale, 10), - y: parseInt(c.y * yscale, 10), - x2: parseInt(c.x2 * xscale, 10), - y2: parseInt(c.y2 * yscale, 10), - w: parseInt(c.w * xscale, 10), - h: parseInt(c.h * yscale, 10) - }; - } - //}}} - function doneSelect(pos) //{{{ - { - var c = Coords.getFixed(); - if ((c.w > options.minSelect[0]) && (c.h > options.minSelect[1])) { - Selection.enableHandles(); - Selection.done(); - } else { - Selection.release(); - } - Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default'); - } - //}}} - function newSelection(e) //{{{ - { - if (options.disabled) { - return false; - } - if (!options.allowSelect) { - return false; - } - btndown = true; - docOffset = getPos($img); - Selection.disableHandles(); - Tracker.setCursor('crosshair'); - var pos = mouseAbs(e); - Coords.setPressed(pos); - Selection.update(); - Tracker.activateHandlers(selectDrag, doneSelect); - KeyManager.watchKeys(); - - e.stopPropagation(); - e.preventDefault(); - return false; - } - //}}} - function selectDrag(pos) //{{{ - { - Coords.setCurrent(pos); - Selection.update(); - } - //}}} - function newTracker() //{{{ - { - var trk = $('<div></div>').addClass(cssClass('tracker')); - if ($.browser.msie) { - trk.css({ - opacity: 0, - backgroundColor: 'white' - }); - } - return trk; - } - //}}} - - // }}} - // Initialization {{{ - // Sanitize some options {{{ - if ($.browser.msie && ($.browser.version.split('.')[0] === '6')) { - ie6mode = true; - } - if (typeof(obj) !== 'object') { - obj = $(obj)[0]; - } - if (typeof(opt) !== 'object') { - opt = {}; - } - // }}} - setOptions(opt); - // Initialize some jQuery objects {{{ - // The values are SET on the image(s) for the interface - // If the original image has any of these set, they will be reset - // However, if you destroy() the Jcrop instance the original image's - // character in the DOM will be as you left it. - var img_css = { - border: 'none', - visibility: 'visible', - margin: 0, - padding: 0, - position: 'absolute', - top: 0, - left: 0 - }; - - var $origimg = $(obj), - img_mode = true; - - if (obj.tagName == 'IMG') { - // Fix size of crop image. - // Necessary when crop image is within a hidden element when page is loaded. - if ($origimg[0].width != 0 && $origimg[0].height != 0) { - // Obtain dimensions from contained img element. - $origimg.width($origimg[0].width); - $origimg.height($origimg[0].height); - } else { - // Obtain dimensions from temporary image in case the original is not loaded yet (e.g. IE 7.0). - var tempImage = new Image(); - tempImage.src = $origimg[0].src; - $origimg.width(tempImage.width); - $origimg.height(tempImage.height); - } - - var $img = $origimg.clone().removeAttr('id').css(img_css).show(); - - $img.width($origimg.width()); - $img.height($origimg.height()); - $origimg.after($img).hide(); - - } else { - $img = $origimg.css(img_css).show(); - img_mode = false; - if (options.shade === null) { options.shade = true; } - } - - presize($img, options.boxWidth, options.boxHeight); - - var boundx = $img.width(), - boundy = $img.height(), - - - $div = $('<div />').width(boundx).height(boundy).addClass(cssClass('holder')).css({ - position: 'relative', - backgroundColor: options.bgColor - }).insertAfter($origimg).append($img); - - if (options.addClass) { - $div.addClass(options.addClass); - } - - var $img2 = $('<div />'), - - $img_holder = $('<div />') - .width('100%').height('100%').css({ - zIndex: 310, - position: 'absolute', - overflow: 'hidden' - }), - - $hdl_holder = $('<div />') - .width('100%').height('100%').css('zIndex', 320), - - $sel = $('<div />') - .css({ - position: 'absolute', - zIndex: 600 - }).dblclick(function(){ - var c = Coords.getFixed(); - options.onDblClick.call(api,c); - }).insertBefore($img).append($img_holder, $hdl_holder); - - if (img_mode) { - - $img2 = $('<img />') - .attr('src', $img.attr('src')).css(img_css).width(boundx).height(boundy), - - $img_holder.append($img2); - - } - - if (ie6mode) { - $sel.css({ - overflowY: 'hidden' - }); - } - - var bound = options.boundary; - var $trk = newTracker().width(boundx + (bound * 2)).height(boundy + (bound * 2)).css({ - position: 'absolute', - top: px(-bound), - left: px(-bound), - zIndex: 290 - }).mousedown(newSelection); - - /* }}} */ - // Set more variables {{{ - var bgcolor = options.bgColor, - bgopacity = options.bgOpacity, - xlimit, ylimit, xmin, ymin, xscale, yscale, enabled = true, - btndown, animating, shift_down; - - docOffset = getPos($img); - // }}} - // }}} - // Internal Modules {{{ - // Touch Module {{{ - var Touch = (function () { - // Touch support detection function adapted (under MIT License) - // from code by Jeffrey Sambells - http://github.com/iamamused/ - function hasTouchSupport() { - var support = {}, - events = ['touchstart', 'touchmove', 'touchend'], - el = document.createElement('div'), i; - - try { - for(i=0; i<events.length; i++) { - var eventName = events[i]; - eventName = 'on' + eventName; - var isSupported = (eventName in el); - if (!isSupported) { - el.setAttribute(eventName, 'return;'); - isSupported = typeof el[eventName] == 'function'; - } - support[events[i]] = isSupported; - } - return support.touchstart && support.touchend && support.touchmove; - } - catch(err) { - return false; - } - } - - function detectSupport() { - if ((options.touchSupport === true) || (options.touchSupport === false)) return options.touchSupport; - else return hasTouchSupport(); - } - return { - createDragger: function (ord) { - return function (e) { - e.pageX = e.originalEvent.changedTouches[0].pageX; - e.pageY = e.originalEvent.changedTouches[0].pageY; - if (options.disabled) { - return false; - } - if ((ord === 'move') && !options.allowMove) { - return false; - } - btndown = true; - startDragMode(ord, mouseAbs(e)); - e.stopPropagation(); - e.preventDefault(); - return false; - }; - }, - newSelection: function (e) { - e.pageX = e.originalEvent.changedTouches[0].pageX; - e.pageY = e.originalEvent.changedTouches[0].pageY; - return newSelection(e); - }, - isSupported: hasTouchSupport, - support: detectSupport() - }; - }()); - // }}} - // Coords Module {{{ - var Coords = (function () { - var x1 = 0, - y1 = 0, - x2 = 0, - y2 = 0, - ox, oy; - - function setPressed(pos) //{{{ - { - pos = rebound(pos); - x2 = x1 = pos[0]; - y2 = y1 = pos[1]; - } - //}}} - function setCurrent(pos) //{{{ - { - pos = rebound(pos); - ox = pos[0] - x2; - oy = pos[1] - y2; - x2 = pos[0]; - y2 = pos[1]; - } - //}}} - function getOffset() //{{{ - { - return [ox, oy]; - } - //}}} - function moveOffset(offset) //{{{ - { - var ox = offset[0], - oy = offset[1]; - - if (0 > x1 + ox) { - ox -= ox + x1; - } - if (0 > y1 + oy) { - oy -= oy + y1; - } - - if (boundy < y2 + oy) { - oy += boundy - (y2 + oy); - } - if (boundx < x2 + ox) { - ox += boundx - (x2 + ox); - } - - x1 += ox; - x2 += ox; - y1 += oy; - y2 += oy; - } - //}}} - function getCorner(ord) //{{{ - { - var c = getFixed(); - switch (ord) { - case 'ne': - return [c.x2, c.y]; - case 'nw': - return [c.x, c.y]; - case 'se': - return [c.x2, c.y2]; - case 'sw': - return [c.x, c.y2]; - } - } - //}}} - function getFixed() //{{{ - { - if (!options.aspectRatio) { - return getRect(); - } - // This function could use some optimization I think... - var aspect = options.aspectRatio, - min_x = options.minSize[0] / xscale, - - - //min_y = options.minSize[1]/yscale, - max_x = options.maxSize[0] / xscale, - max_y = options.maxSize[1] / yscale, - rw = x2 - x1, - rh = y2 - y1, - rwa = Math.abs(rw), - rha = Math.abs(rh), - real_ratio = rwa / rha, - xx, yy, w, h; - - if (max_x === 0) { - max_x = boundx * 10; - } - if (max_y === 0) { - max_y = boundy * 10; - } - if (real_ratio < aspect) { - yy = y2; - w = rha * aspect; - xx = rw < 0 ? x1 - w : w + x1; - - if (xx < 0) { - xx = 0; - h = Math.abs((xx - x1) / aspect); - yy = rh < 0 ? y1 - h : h + y1; - } else if (xx > boundx) { - xx = boundx; - h = Math.abs((xx - x1) / aspect); - yy = rh < 0 ? y1 - h : h + y1; - } - } else { - xx = x2; - h = rwa / aspect; - yy = rh < 0 ? y1 - h : y1 + h; - if (yy < 0) { - yy = 0; - w = Math.abs((yy - y1) * aspect); - xx = rw < 0 ? x1 - w : w + x1; - } else if (yy > boundy) { - yy = boundy; - w = Math.abs(yy - y1) * aspect; - xx = rw < 0 ? x1 - w : w + x1; - } - } - - // Magic %-) - if (xx > x1) { // right side - if (xx - x1 < min_x) { - xx = x1 + min_x; - } else if (xx - x1 > max_x) { - xx = x1 + max_x; - } - if (yy > y1) { - yy = y1 + (xx - x1) / aspect; - } else { - yy = y1 - (xx - x1) / aspect; - } - } else if (xx < x1) { // left side - if (x1 - xx < min_x) { - xx = x1 - min_x; - } else if (x1 - xx > max_x) { - xx = x1 - max_x; - } - if (yy > y1) { - yy = y1 + (x1 - xx) / aspect; - } else { - yy = y1 - (x1 - xx) / aspect; - } - } - - if (xx < 0) { - x1 -= xx; - xx = 0; - } else if (xx > boundx) { - x1 -= xx - boundx; - xx = boundx; - } - - if (yy < 0) { - y1 -= yy; - yy = 0; - } else if (yy > boundy) { - y1 -= yy - boundy; - yy = boundy; - } - - return makeObj(flipCoords(x1, y1, xx, yy)); - } - //}}} - function rebound(p) //{{{ - { - if (p[0] < 0) { - p[0] = 0; - } - if (p[1] < 0) { - p[1] = 0; - } - - if (p[0] > boundx) { - p[0] = boundx; - } - if (p[1] > boundy) { - p[1] = boundy; - } - - return [p[0], p[1]]; - } - //}}} - function flipCoords(x1, y1, x2, y2) //{{{ - { - var xa = x1, - xb = x2, - ya = y1, - yb = y2; - if (x2 < x1) { - xa = x2; - xb = x1; - } - if (y2 < y1) { - ya = y2; - yb = y1; - } - return [Math.round(xa), Math.round(ya), Math.round(xb), Math.round(yb)]; - } - //}}} - function getRect() //{{{ - { - var xsize = x2 - x1, - ysize = y2 - y1, - delta; - - if (xlimit && (Math.abs(xsize) > xlimit)) { - x2 = (xsize > 0) ? (x1 + xlimit) : (x1 - xlimit); - } - if (ylimit && (Math.abs(ysize) > ylimit)) { - y2 = (ysize > 0) ? (y1 + ylimit) : (y1 - ylimit); - } - - if (ymin / yscale && (Math.abs(ysize) < ymin / yscale)) { - y2 = (ysize > 0) ? (y1 + ymin / yscale) : (y1 - ymin / yscale); - } - if (xmin / xscale && (Math.abs(xsize) < xmin / xscale)) { - x2 = (xsize > 0) ? (x1 + xmin / xscale) : (x1 - xmin / xscale); - } - - if (x1 < 0) { - x2 -= x1; - x1 -= x1; - } - if (y1 < 0) { - y2 -= y1; - y1 -= y1; - } - if (x2 < 0) { - x1 -= x2; - x2 -= x2; - } - if (y2 < 0) { - y1 -= y2; - y2 -= y2; - } - if (x2 > boundx) { - delta = x2 - boundx; - x1 -= delta; - x2 -= delta; - } - if (y2 > boundy) { - delta = y2 - boundy; - y1 -= delta; - y2 -= delta; - } - if (x1 > boundx) { - delta = x1 - boundy; - y2 -= delta; - y1 -= delta; - } - if (y1 > boundy) { - delta = y1 - boundy; - y2 -= delta; - y1 -= delta; - } - - return makeObj(flipCoords(x1, y1, x2, y2)); - } - //}}} - function makeObj(a) //{{{ - { - return { - x: a[0], - y: a[1], - x2: a[2], - y2: a[3], - w: a[2] - a[0], - h: a[3] - a[1] - }; - } - //}}} - - return { - flipCoords: flipCoords, - setPressed: setPressed, - setCurrent: setCurrent, - getOffset: getOffset, - moveOffset: moveOffset, - getCorner: getCorner, - getFixed: getFixed - }; - }()); - - //}}} - // Shade Module {{{ - var Shade = (function() { - var enabled = false, - holder = $('<div />').css({ - position: 'absolute', - zIndex: 240, - opacity: 0 - }), - shades = { - top: createShade(), - left: createShade().height(boundy), - right: createShade().height(boundy), - bottom: createShade() - }; - - function resizeShades(w,h) { - shades.left.css({ height: px(h) }); - shades.right.css({ height: px(h) }); - } - function updateAuto() - { - return updateShade(Coords.getFixed()); - } - function updateShade(c) - { - shades.top.css({ - left: px(c.x), - width: px(c.w), - height: px(c.y) - }); - shades.bottom.css({ - top: px(c.y2), - left: px(c.x), - width: px(c.w), - height: px(boundy-c.y2) - }); - shades.right.css({ - left: px(c.x2), - width: px(boundx-c.x2) - }); - shades.left.css({ - width: px(c.x) - }); - } - function createShade() { - return $('<div />').css({ - position: 'absolute', - backgroundColor: options.shadeColor||options.bgColor - }).appendTo(holder); - } - function enableShade() { - if (!enabled) { - enabled = true; - holder.insertBefore($img); - updateAuto(); - Selection.setBgOpacity(1,0,1); - $img2.hide(); - - setBgColor(options.shadeColor||options.bgColor,1); - if (Selection.isAwake()) - { - setOpacity(options.bgOpacity,1); - } - else setOpacity(1,1); - } - } - function setBgColor(color,now) { - colorChangeMacro(getShades(),color,now); - } - function disableShade() { - if (enabled) { - holder.remove(); - $img2.show(); - enabled = false; - if (Selection.isAwake()) { - Selection.setBgOpacity(options.bgOpacity,1,1); - } else { - Selection.setBgOpacity(1,1,1); - Selection.disableHandles(); - } - colorChangeMacro($div,0,1); - } - } - function setOpacity(opacity,now) { - if (enabled) { - if (options.bgFade && !now) { - holder.animate({ - opacity: 1-opacity - },{ - queue: false, - duration: options.fadeTime - }); - } - else holder.css({opacity:1-opacity}); - } - } - function refreshAll() { - options.shade ? enableShade() : disableShade(); - if (Selection.isAwake()) setOpacity(options.bgOpacity); - } - function getShades() { - return holder.children(); - } - - return { - update: updateAuto, - updateRaw: updateShade, - getShades: getShades, - setBgColor: setBgColor, - enable: enableShade, - disable: disableShade, - resize: resizeShades, - refresh: refreshAll, - opacity: setOpacity - }; - }()); - // }}} - // Selection Module {{{ - var Selection = (function () { - var awake, hdep = 370; - var borders = {}; - var handle = {}; - var seehandles = false; - var hhs = options.handleOffset; - - // Private Methods - function insertBorder(type) //{{{ - { - var jq = $('<div />').css({ - position: 'absolute', - opacity: options.borderOpacity - }).addClass(cssClass(type)); - $img_holder.append(jq); - return jq; - } - //}}} - function dragDiv(ord, zi) //{{{ - { - var jq = $('<div />').mousedown(createDragger(ord)).css({ - cursor: ord + '-resize', - position: 'absolute', - zIndex: zi - }).addClass('ord-'+ord); - - if (Touch.support) { - jq.bind('touchstart.jcrop', Touch.createDragger(ord)); - } - - $hdl_holder.append(jq); - return jq; - } - //}}} - function insertHandle(ord) //{{{ - { - var hs = options.handleSize; - return dragDiv(ord, hdep++).css({ - top: px(-hhs + 1), - left: px(-hhs + 1), - opacity: options.handleOpacity - }).width(hs).height(hs).addClass(cssClass('handle')); - } - //}}} - function insertDragbar(ord) //{{{ - { - var s = options.handleSize, - h = s, - w = s, - t = hhs, - l = hhs; - - switch (ord) { - case 'n': - case 's': - w = '100%'; - break; - case 'e': - case 'w': - h = '100%'; - break; - } - - return dragDiv(ord, hdep++).width(w).height(h).css({ - top: px(-t + 1), - left: px(-l + 1) - }); - } - //}}} - function createHandles(li) //{{{ - { - var i; - for (i = 0; i < li.length; i++) { - handle[li[i]] = insertHandle(li[i]); - } - } - //}}} - function moveHandles(c) //{{{ - { - var midvert = Math.round((c.h / 2) - hhs), - midhoriz = Math.round((c.w / 2) - hhs), - north = -hhs + 1, - west = -hhs + 1, - east = c.w - hhs, - south = c.h - hhs, - x, y; - - if (handle.e) { - handle.e.css({ - top: px(midvert), - left: px(east) - }); - handle.w.css({ - top: px(midvert) - }); - handle.s.css({ - top: px(south), - left: px(midhoriz) - }); - handle.n.css({ - left: px(midhoriz) - }); - } - if (handle.ne) { - handle.ne.css({ - left: px(east) - }); - handle.se.css({ - top: px(south), - left: px(east) - }); - handle.sw.css({ - top: px(south) - }); - } - if (handle.b) { - handle.b.css({ - top: px(south) - }); - handle.r.css({ - left: px(east) - }); - } - } - //}}} - function moveto(x, y) //{{{ - { - if (!options.shade) { - $img2.css({ - top: px(-y), - left: px(-x) - }); - } - $sel.css({ - top: px(y), - left: px(x) - }); - } - //}}} - function resize(w, h) //{{{ - { - $sel.width(w).height(h); - } - //}}} - function refresh() //{{{ - { - var c = Coords.getFixed(); - - Coords.setPressed([c.x, c.y]); - Coords.setCurrent([c.x2, c.y2]); - - updateVisible(); - } - //}}} - - // Internal Methods - function updateVisible(select) //{{{ - { - if (awake) { - return update(select); - } - } - //}}} - function update(select) //{{{ - { - var c = Coords.getFixed(); - - resize(c.w, c.h); - moveto(c.x, c.y); - if (options.shade) Shade.updateRaw(c); - - if (seehandles) { - moveHandles(c); - } - if (!awake) { - show(); - } - - if (select) { - options.onSelect.call(api, unscale(c)); - } else { - options.onChange.call(api, unscale(c)); - } - } - //}}} - function setBgOpacity(opacity,force,now) - { - if (!awake && !force) return; - if (options.bgFade && !now) { - $img.animate({ - opacity: opacity - },{ - queue: false, - duration: options.fadeTime - }); - } else { - $img.css('opacity', opacity); - } - } - function show() //{{{ - { - $sel.show(); - - if (options.shade) Shade.opacity(bgopacity); - else setBgOpacity(bgopacity,true); - - awake = true; - } - //}}} - function release() //{{{ - { - disableHandles(); - $sel.hide(); - - if (options.shade) Shade.opacity(1); - else setBgOpacity(1); - - awake = false; - options.onRelease.call(api); - } - //}}} - function showHandles() //{{{ - { - if (seehandles) { - moveHandles(Coords.getFixed()); - $hdl_holder.show(); - } - } - //}}} - function enableHandles() //{{{ - { - seehandles = true; - if (options.allowResize) { - moveHandles(Coords.getFixed()); - $hdl_holder.show(); - return true; - } - } - //}}} - function disableHandles() //{{{ - { - seehandles = false; - $hdl_holder.hide(); - } - //}}} - function animMode(v) //{{{ - { - if (animating === v) { - disableHandles(); - } else { - enableHandles(); - } - } - //}}} - function done() //{{{ - { - animMode(false); - refresh(); - } - //}}} - /* Insert draggable elements {{{*/ - - // Insert border divs for outline - if (options.drawBorders) { - borders = { - top: insertBorder('hline'), - bottom: insertBorder('hline bottom'), - left: insertBorder('vline'), - right: insertBorder('vline right') - }; - } - - // Insert handles on edges - if (options.dragEdges) { - handle.t = insertDragbar('n'); - handle.b = insertDragbar('s'); - handle.r = insertDragbar('e'); - handle.l = insertDragbar('w'); - } - - // Insert side and corner handles - if (options.sideHandles) { - createHandles(['n', 's', 'e', 'w']); - } - if (options.cornerHandles) { - createHandles(['sw', 'nw', 'ne', 'se']); - } - //}}} - - // This is a hack for iOS5 to support drag/move touch functionality - $(document).bind('touchstart.jcrop-ios',function(e) { - if ($(e.currentTarget).hasClass('jcrop-tracker')) e.stopPropagation(); - }); - - var $track = newTracker().mousedown(createDragger('move')).css({ - cursor: 'move', - position: 'absolute', - zIndex: 360 - }); - - if (Touch.support) { - $track.bind('touchstart.jcrop', Touch.createDragger('move')); - } - - $img_holder.append($track); - disableHandles(); - - return { - updateVisible: updateVisible, - update: update, - release: release, - refresh: refresh, - isAwake: function () { - return awake; - }, - setCursor: function (cursor) { - $track.css('cursor', cursor); - }, - enableHandles: enableHandles, - enableOnly: function () { - seehandles = true; - }, - showHandles: showHandles, - disableHandles: disableHandles, - animMode: animMode, - setBgOpacity: setBgOpacity, - done: done - }; - }()); - - //}}} - // Tracker Module {{{ - var Tracker = (function () { - var onMove = function () {}, - onDone = function () {}, - trackDoc = options.trackDocument; - - function toFront() //{{{ - { - $trk.css({ - zIndex: 450 - }); - if (Touch.support) { - $(document) - .bind('touchmove.jcrop', trackTouchMove) - .bind('touchend.jcrop', trackTouchEnd); - } - if (trackDoc) { - $(document) - .bind('mousemove.jcrop',trackMove) - .bind('mouseup.jcrop',trackUp); - } - } - //}}} - function toBack() //{{{ - { - $trk.css({ - zIndex: 290 - }); - $(document).unbind('.jcrop'); - } - //}}} - function trackMove(e) //{{{ - { - onMove(mouseAbs(e)); - return false; - } - //}}} - function trackUp(e) //{{{ - { - e.preventDefault(); - e.stopPropagation(); - - if (btndown) { - btndown = false; - - onDone(mouseAbs(e)); - - if (Selection.isAwake()) { - options.onSelect.call(api, unscale(Coords.getFixed())); - } - - toBack(); - onMove = function () {}; - onDone = function () {}; - } - - return false; - } - //}}} - function activateHandlers(move, done) //{{{ - { - btndown = true; - onMove = move; - onDone = done; - toFront(); - return false; - } - //}}} - function trackTouchMove(e) //{{{ - { - e.pageX = e.originalEvent.changedTouches[0].pageX; - e.pageY = e.originalEvent.changedTouches[0].pageY; - return trackMove(e); - } - //}}} - function trackTouchEnd(e) //{{{ - { - e.pageX = e.originalEvent.changedTouches[0].pageX; - e.pageY = e.originalEvent.changedTouches[0].pageY; - return trackUp(e); - } - //}}} - function setCursor(t) //{{{ - { - $trk.css('cursor', t); - } - //}}} - - if (!trackDoc) { - $trk.mousemove(trackMove).mouseup(trackUp).mouseout(trackUp); - } - - $img.before($trk); - return { - activateHandlers: activateHandlers, - setCursor: setCursor - }; - }()); - //}}} - // KeyManager Module {{{ - var KeyManager = (function () { - var $keymgr = $('<input type="radio" />').css({ - position: 'fixed', - left: '-120px', - width: '12px' - }), - $keywrap = $('<div />').css({ - position: 'absolute', - overflow: 'hidden' - }).append($keymgr); - - function watchKeys() //{{{ - { - if (options.keySupport) { - $keymgr.show(); - $keymgr.focus(); - } - } - //}}} - function onBlur(e) //{{{ - { - $keymgr.hide(); - } - //}}} - function doNudge(e, x, y) //{{{ - { - if (options.allowMove) { - Coords.moveOffset([x, y]); - Selection.updateVisible(true); - } - e.preventDefault(); - e.stopPropagation(); - } - //}}} - function parseKey(e) //{{{ - { - if (e.ctrlKey || e.metaKey) { - return true; - } - shift_down = e.shiftKey ? true : false; - var nudge = shift_down ? 10 : 1; - - switch (e.keyCode) { - case 37: - doNudge(e, -nudge, 0); - break; - case 39: - doNudge(e, nudge, 0); - break; - case 38: - doNudge(e, 0, -nudge); - break; - case 40: - doNudge(e, 0, nudge); - break; - case 27: - if (options.allowSelect) Selection.release(); - break; - case 9: - return true; - } - - return false; - } - //}}} - - if (options.keySupport) { - $keymgr.keydown(parseKey).blur(onBlur); - if (ie6mode || !options.fixedSupport) { - $keymgr.css({ - position: 'absolute', - left: '-20px' - }); - $keywrap.append($keymgr).insertBefore($img); - } else { - $keymgr.insertBefore($img); - } - } - - - return { - watchKeys: watchKeys - }; - }()); - //}}} - // }}} - // API methods {{{ - function setClass(cname) //{{{ - { - $div.removeClass().addClass(cssClass('holder')).addClass(cname); - } - //}}} - function animateTo(a, callback) //{{{ - { - var x1 = parseInt(a[0], 10) / xscale, - y1 = parseInt(a[1], 10) / yscale, - x2 = parseInt(a[2], 10) / xscale, - y2 = parseInt(a[3], 10) / yscale; - - if (animating) { - return; - } - - var animto = Coords.flipCoords(x1, y1, x2, y2), - c = Coords.getFixed(), - initcr = [c.x, c.y, c.x2, c.y2], - animat = initcr, - interv = options.animationDelay, - ix1 = animto[0] - initcr[0], - iy1 = animto[1] - initcr[1], - ix2 = animto[2] - initcr[2], - iy2 = animto[3] - initcr[3], - pcent = 0, - velocity = options.swingSpeed; - - x = animat[0]; - y = animat[1]; - x2 = animat[2]; - y2 = animat[3]; - - Selection.animMode(true); - var anim_timer; - - function queueAnimator() { - window.setTimeout(animator, interv); - } - var animator = (function () { - return function () { - pcent += (100 - pcent) / velocity; - - animat[0] = x + ((pcent / 100) * ix1); - animat[1] = y + ((pcent / 100) * iy1); - animat[2] = x2 + ((pcent / 100) * ix2); - animat[3] = y2 + ((pcent / 100) * iy2); - - if (pcent >= 99.8) { - pcent = 100; - } - if (pcent < 100) { - setSelectRaw(animat); - queueAnimator(); - } else { - Selection.done(); - if (typeof(callback) === 'function') { - callback.call(api); - } - } - }; - }()); - queueAnimator(); - } - //}}} - function setSelect(rect) //{{{ - { - setSelectRaw([parseInt(rect[0], 10) / xscale, parseInt(rect[1], 10) / yscale, parseInt(rect[2], 10) / xscale, parseInt(rect[3], 10) / yscale]); - options.onSelect.call(api, unscale(Coords.getFixed())); - Selection.enableHandles(); - } - //}}} - function setSelectRaw(l) //{{{ - { - Coords.setPressed([l[0], l[1]]); - Coords.setCurrent([l[2], l[3]]); - Selection.update(); - } - //}}} - function tellSelect() //{{{ - { - return unscale(Coords.getFixed()); - } - //}}} - function tellScaled() //{{{ - { - return Coords.getFixed(); - } - //}}} - function setOptionsNew(opt) //{{{ - { - setOptions(opt); - interfaceUpdate(); - } - //}}} - function disableCrop() //{{{ - { - options.disabled = true; - Selection.disableHandles(); - Selection.setCursor('default'); - Tracker.setCursor('default'); - } - //}}} - function enableCrop() //{{{ - { - options.disabled = false; - interfaceUpdate(); - } - //}}} - function cancelCrop() //{{{ - { - Selection.done(); - Tracker.activateHandlers(null, null); - } - //}}} - function destroy() //{{{ - { - $div.remove(); - $origimg.show(); - $(obj).removeData('Jcrop'); - } - //}}} - function setImage(src, callback) //{{{ - { - Selection.release(); - disableCrop(); - var img = new Image(); - img.onload = function () { - var iw = img.width; - var ih = img.height; - var bw = options.boxWidth; - var bh = options.boxHeight; - $img.width(iw).height(ih); - $img.attr('src', src); - $img2.attr('src', src); - presize($img, bw, bh); - boundx = $img.width(); - boundy = $img.height(); - $img2.width(boundx).height(boundy); - $trk.width(boundx + (bound * 2)).height(boundy + (bound * 2)); - $div.width(boundx).height(boundy); - Shade.resize(boundx,boundy); - enableCrop(); - - if (typeof(callback) === 'function') { - callback.call(api); - } - }; - img.src = src; - } - //}}} - function colorChangeMacro($obj,color,now) { - var mycolor = color || options.bgColor; - if (options.bgFade && supportsColorFade() && options.fadeTime && !now) { - $obj.animate({ - backgroundColor: mycolor - }, { - queue: false, - duration: options.fadeTime - }); - } else { - $obj.css('backgroundColor', mycolor); - } - } - function interfaceUpdate(alt) //{{{ - // This method tweaks the interface based on options object. - // Called when options are changed and at end of initialization. - { - if (options.allowResize) { - if (alt) { - Selection.enableOnly(); - } else { - Selection.enableHandles(); - } - } else { - Selection.disableHandles(); - } - - Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default'); - Selection.setCursor(options.allowMove ? 'move' : 'default'); - - if (options.hasOwnProperty('trueSize')) { - xscale = options.trueSize[0] / boundx; - yscale = options.trueSize[1] / boundy; - } - - if (options.hasOwnProperty('setSelect')) { - setSelect(options.setSelect); - Selection.done(); - delete(options.setSelect); - } - - Shade.refresh(); - - if (options.bgColor != bgcolor) { - colorChangeMacro( - options.shade? Shade.getShades(): $div, - options.shade? - (options.shadeColor || options.bgColor): - options.bgColor - ); - bgcolor = options.bgColor; - } - - if (bgopacity != options.bgOpacity) { - bgopacity = options.bgOpacity; - if (options.shade) Shade.refresh(); - else Selection.setBgOpacity(bgopacity); - } - - xlimit = options.maxSize[0] || 0; - ylimit = options.maxSize[1] || 0; - xmin = options.minSize[0] || 0; - ymin = options.minSize[1] || 0; - - if (options.hasOwnProperty('outerImage')) { - $img.attr('src', options.outerImage); - delete(options.outerImage); - } - - Selection.refresh(); - } - //}}} - //}}} - - if (Touch.support) $trk.bind('touchstart.jcrop', Touch.newSelection); - - $hdl_holder.hide(); - interfaceUpdate(true); - - var api = { - setImage: setImage, - animateTo: animateTo, - setSelect: setSelect, - setOptions: setOptionsNew, - tellSelect: tellSelect, - tellScaled: tellScaled, - setClass: setClass, - - disable: disableCrop, - enable: enableCrop, - cancel: cancelCrop, - release: Selection.release, - destroy: destroy, - - focus: KeyManager.watchKeys, - - getBounds: function () { - return [boundx * xscale, boundy * yscale]; - }, - getWidgetSize: function () { - return [boundx, boundy]; - }, - getScaleFactor: function () { - return [xscale, yscale]; - }, - - ui: { - holder: $div, - selection: $sel - } - }; - - if ($.browser.msie) { - $div.bind('selectstart', function () { - return false; - }); - } - - $origimg.data('Jcrop', api); - return api; - }; - $.fn.Jcrop = function (options, callback) //{{{ - { - var api; - // Iterate over each object, attach Jcrop - this.each(function () { - // If we've already attached to this object - if ($(this).data('Jcrop')) { - // The API can be requested this way (undocumented) - if (options === 'api') return $(this).data('Jcrop'); - // Otherwise, we just reset the options... - else $(this).data('Jcrop').setOptions(options); - } - // If we haven't been attached, preload and attach - else { - if (this.tagName == 'IMG') - $.Jcrop.Loader(this,function(){ - $(this).css({display:'block',visibility:'hidden'}); - api = $.Jcrop(this, options); - if ($.isFunction(callback)) callback.call(api); - }); - else { - $(this).css({display:'block',visibility:'hidden'}); - api = $.Jcrop(this, options); - if ($.isFunction(callback)) callback.call(api); - } - } - }); - - // Return "this" so the object is chainable (jQuery-style) - return this; - }; - //}}} - // $.Jcrop.Loader - basic image loader {{{ - - $.Jcrop.Loader = function(imgobj,success,error){ - var $img = $(imgobj), img = $img[0]; - - function completeCheck(){ - if (img.complete) { - $img.unbind('.jcloader'); - if ($.isFunction(success)) success.call(img); - } - else window.setTimeout(completeCheck,50); - } - - $img - .bind('load.jcloader',completeCheck) - .bind('error.jcloader',function(e){ - $img.unbind('.jcloader'); - if ($.isFunction(error)) error.call(img); - }); - - if (img.complete && $.isFunction(success)){ - $img.unbind('.jcloader'); - success.call(img); - } - }; - - //}}} - // Global Defaults {{{ - $.Jcrop.defaults = { - - // Basic Settings - allowSelect: true, - allowMove: true, - allowResize: true, - - trackDocument: true, - - // Styling Options - baseClass: 'jcrop', - addClass: null, - bgColor: 'black', - bgOpacity: 0.6, - bgFade: false, - borderOpacity: 0.4, - handleOpacity: 0.5, - handleSize: 7, - handleOffset: 5, - - aspectRatio: 0, - keySupport: true, - cornerHandles: true, - sideHandles: true, - drawBorders: true, - dragEdges: true, - fixedSupport: true, - touchSupport: null, - - shade: null, - - boxWidth: 0, - boxHeight: 0, - boundary: 2, - fadeTime: 400, - animationDelay: 20, - swingSpeed: 3, - - minSelect: [0, 0], - maxSize: [0, 0], - minSize: [0, 0], - - // Callbacks / Event Handlers - onChange: function () {}, - onSelect: function () {}, - onDblClick: function () {}, - onRelease: function () {} - }; - - // }}} -}(jQuery)); diff --git a/apps/contacts/js/jquery.Jcrop.min.js b/apps/contacts/js/jquery.Jcrop.min.js deleted file mode 100644 index 0c05d67c22d..00000000000 --- a/apps/contacts/js/jquery.Jcrop.min.js +++ /dev/null @@ -1,255 +0,0 @@ -/** - * jquery.Jcrop.min.js v0.9.9 {{{ (build:20120102) - * jQuery Image Cropping Plugin - released under MIT License - * Copyright (c) 2008-2012 Tapmodo Interactive LLC - * https://github.com/tapmodo/Jcrop - */ - -(function($){$.Jcrop=function(obj,opt){var options=$.extend({},$.Jcrop.defaults),docOffset,lastcurs,ie6mode=false;function px(n){return parseInt(n,10)+'px';} -function cssClass(cl){return options.baseClass+'-'+cl;} -function supportsColorFade(){return $.fx.step.hasOwnProperty('backgroundColor');} -function getPos(obj) -{var pos=$(obj).offset();return[pos.left,pos.top];} -function mouseAbs(e) -{return[(e.pageX-docOffset[0]),(e.pageY-docOffset[1])];} -function setOptions(opt) -{if(typeof(opt)!=='object')opt={};options=$.extend(options,opt);$.each(['onChange','onSelect','onRelease','onDblClick'],function(i,e){if(typeof(options[e])!=='function')options[e]=function(){};});} -function startDragMode(mode,pos) -{docOffset=getPos($img);Tracker.setCursor(mode==='move'?mode:mode+'-resize');if(mode==='move'){return Tracker.activateHandlers(createMover(pos),doneSelect);} -var fc=Coords.getFixed();var opp=oppLockCorner(mode);var opc=Coords.getCorner(oppLockCorner(opp));Coords.setPressed(Coords.getCorner(opp));Coords.setCurrent(opc);Tracker.activateHandlers(dragmodeHandler(mode,fc),doneSelect);} -function dragmodeHandler(mode,f) -{return function(pos){if(!options.aspectRatio){switch(mode){case'e':pos[1]=f.y2;break;case'w':pos[1]=f.y2;break;case'n':pos[0]=f.x2;break;case's':pos[0]=f.x2;break;}}else{switch(mode){case'e':pos[1]=f.y+1;break;case'w':pos[1]=f.y+1;break;case'n':pos[0]=f.x+1;break;case's':pos[0]=f.x+1;break;}} -Coords.setCurrent(pos);Selection.update();};} -function createMover(pos) -{var lloc=pos;KeyManager.watchKeys();return function(pos){Coords.moveOffset([pos[0]-lloc[0],pos[1]-lloc[1]]);lloc=pos;Selection.update();};} -function oppLockCorner(ord) -{switch(ord){case'n':return'sw';case's':return'nw';case'e':return'nw';case'w':return'ne';case'ne':return'sw';case'nw':return'se';case'se':return'nw';case'sw':return'ne';}} -function createDragger(ord) -{return function(e){if(options.disabled){return false;} -if((ord==='move')&&!options.allowMove){return false;} -docOffset=getPos($img);btndown=true;startDragMode(ord,mouseAbs(e));e.stopPropagation();e.preventDefault();return false;};} -function presize($obj,w,h) -{var nw=$obj.width(),nh=$obj.height();if((nw>w)&&w>0){nw=w;nh=(w/$obj.width())*$obj.height();} -if((nh>h)&&h>0){nh=h;nw=(h/$obj.height())*$obj.width();} -xscale=$obj.width()/nw;yscale=$obj.height()/nh;$obj.width(nw).height(nh);} -function unscale(c) -{return{x:parseInt(c.x*xscale,10),y:parseInt(c.y*yscale,10),x2:parseInt(c.x2*xscale,10),y2:parseInt(c.y2*yscale,10),w:parseInt(c.w*xscale,10),h:parseInt(c.h*yscale,10)};} -function doneSelect(pos) -{var c=Coords.getFixed();if((c.w>options.minSelect[0])&&(c.h>options.minSelect[1])){Selection.enableHandles();Selection.done();}else{Selection.release();} -Tracker.setCursor(options.allowSelect?'crosshair':'default');} -function newSelection(e) -{if(options.disabled){return false;} -if(!options.allowSelect){return false;} -btndown=true;docOffset=getPos($img);Selection.disableHandles();Tracker.setCursor('crosshair');var pos=mouseAbs(e);Coords.setPressed(pos);Selection.update();Tracker.activateHandlers(selectDrag,doneSelect);KeyManager.watchKeys();e.stopPropagation();e.preventDefault();return false;} -function selectDrag(pos) -{Coords.setCurrent(pos);Selection.update();} -function newTracker() -{var trk=$('<div></div>').addClass(cssClass('tracker'));if($.browser.msie){trk.css({opacity:0,backgroundColor:'white'});} -return trk;} -if($.browser.msie&&($.browser.version.split('.')[0]==='6')){ie6mode=true;} -if(typeof(obj)!=='object'){obj=$(obj)[0];} -if(typeof(opt)!=='object'){opt={};} -setOptions(opt);var img_css={border:'none',visibility:'visible',margin:0,padding:0,position:'absolute',top:0,left:0};var $origimg=$(obj),img_mode=true;if(obj.tagName=='IMG'){if($origimg[0].width!=0&&$origimg[0].height!=0){$origimg.width($origimg[0].width);$origimg.height($origimg[0].height);}else{var tempImage=new Image();tempImage.src=$origimg[0].src;$origimg.width(tempImage.width);$origimg.height(tempImage.height);} -var $img=$origimg.clone().removeAttr('id').css(img_css).show();$img.width($origimg.width());$img.height($origimg.height());$origimg.after($img).hide();}else{$img=$origimg.css(img_css).show();img_mode=false;if(options.shade===null){options.shade=true;}} -presize($img,options.boxWidth,options.boxHeight);var boundx=$img.width(),boundy=$img.height(),$div=$('<div />').width(boundx).height(boundy).addClass(cssClass('holder')).css({position:'relative',backgroundColor:options.bgColor}).insertAfter($origimg).append($img);if(options.addClass){$div.addClass(options.addClass);} -var $img2=$('<div />'),$img_holder=$('<div />').width('100%').height('100%').css({zIndex:310,position:'absolute',overflow:'hidden'}),$hdl_holder=$('<div />').width('100%').height('100%').css('zIndex',320),$sel=$('<div />').css({position:'absolute',zIndex:600}).dblclick(function(){var c=Coords.getFixed();options.onDblClick.call(api,c);}).insertBefore($img).append($img_holder,$hdl_holder);if(img_mode){$img2=$('<img />').attr('src',$img.attr('src')).css(img_css).width(boundx).height(boundy),$img_holder.append($img2);} -if(ie6mode){$sel.css({overflowY:'hidden'});} -var bound=options.boundary;var $trk=newTracker().width(boundx+(bound*2)).height(boundy+(bound*2)).css({position:'absolute',top:px(-bound),left:px(-bound),zIndex:290}).mousedown(newSelection);var bgcolor=options.bgColor,bgopacity=options.bgOpacity,xlimit,ylimit,xmin,ymin,xscale,yscale,enabled=true,btndown,animating,shift_down;docOffset=getPos($img);var Touch=(function(){function hasTouchSupport(){var support={},events=['touchstart','touchmove','touchend'],el=document.createElement('div'),i;try{for(i=0;i<events.length;i++){var eventName=events[i];eventName='on'+eventName;var isSupported=(eventName in el);if(!isSupported){el.setAttribute(eventName,'return;');isSupported=typeof el[eventName]=='function';} -support[events[i]]=isSupported;} -return support.touchstart&&support.touchend&&support.touchmove;} -catch(err){return false;}} -function detectSupport(){if((options.touchSupport===true)||(options.touchSupport===false))return options.touchSupport;else return hasTouchSupport();} -return{createDragger:function(ord){return function(e){e.pageX=e.originalEvent.changedTouches[0].pageX;e.pageY=e.originalEvent.changedTouches[0].pageY;if(options.disabled){return false;} -if((ord==='move')&&!options.allowMove){return false;} -btndown=true;startDragMode(ord,mouseAbs(e));e.stopPropagation();e.preventDefault();return false;};},newSelection:function(e){e.pageX=e.originalEvent.changedTouches[0].pageX;e.pageY=e.originalEvent.changedTouches[0].pageY;return newSelection(e);},isSupported:hasTouchSupport,support:detectSupport()};}());var Coords=(function(){var x1=0,y1=0,x2=0,y2=0,ox,oy;function setPressed(pos) -{pos=rebound(pos);x2=x1=pos[0];y2=y1=pos[1];} -function setCurrent(pos) -{pos=rebound(pos);ox=pos[0]-x2;oy=pos[1]-y2;x2=pos[0];y2=pos[1];} -function getOffset() -{return[ox,oy];} -function moveOffset(offset) -{var ox=offset[0],oy=offset[1];if(0>x1+ox){ox-=ox+x1;} -if(0>y1+oy){oy-=oy+y1;} -if(boundy<y2+oy){oy+=boundy-(y2+oy);} -if(boundx<x2+ox){ox+=boundx-(x2+ox);} -x1+=ox;x2+=ox;y1+=oy;y2+=oy;} -function getCorner(ord) -{var c=getFixed();switch(ord){case'ne':return[c.x2,c.y];case'nw':return[c.x,c.y];case'se':return[c.x2,c.y2];case'sw':return[c.x,c.y2];}} -function getFixed() -{if(!options.aspectRatio){return getRect();} -var aspect=options.aspectRatio,min_x=options.minSize[0]/xscale,max_x=options.maxSize[0]/xscale,max_y=options.maxSize[1]/yscale,rw=x2-x1,rh=y2-y1,rwa=Math.abs(rw),rha=Math.abs(rh),real_ratio=rwa/rha,xx,yy,w,h;if(max_x===0){max_x=boundx*10;} -if(max_y===0){max_y=boundy*10;} -if(real_ratio<aspect){yy=y2;w=rha*aspect;xx=rw<0?x1-w:w+x1;if(xx<0){xx=0;h=Math.abs((xx-x1)/aspect);yy=rh<0?y1-h:h+y1;}else if(xx>boundx){xx=boundx;h=Math.abs((xx-x1)/aspect);yy=rh<0?y1-h:h+y1;}}else{xx=x2;h=rwa/aspect;yy=rh<0?y1-h:y1+h;if(yy<0){yy=0;w=Math.abs((yy-y1)*aspect);xx=rw<0?x1-w:w+x1;}else if(yy>boundy){yy=boundy;w=Math.abs(yy-y1)*aspect;xx=rw<0?x1-w:w+x1;}} -if(xx>x1){if(xx-x1<min_x){xx=x1+min_x;}else if(xx-x1>max_x){xx=x1+max_x;} -if(yy>y1){yy=y1+(xx-x1)/aspect;}else{yy=y1-(xx-x1)/aspect;}}else if(xx<x1){if(x1-xx<min_x){xx=x1-min_x;}else if(x1-xx>max_x){xx=x1-max_x;} -if(yy>y1){yy=y1+(x1-xx)/aspect;}else{yy=y1-(x1-xx)/aspect;}} -if(xx<0){x1-=xx;xx=0;}else if(xx>boundx){x1-=xx-boundx;xx=boundx;} -if(yy<0){y1-=yy;yy=0;}else if(yy>boundy){y1-=yy-boundy;yy=boundy;} -return makeObj(flipCoords(x1,y1,xx,yy));} -function rebound(p) -{if(p[0]<0){p[0]=0;} -if(p[1]<0){p[1]=0;} -if(p[0]>boundx){p[0]=boundx;} -if(p[1]>boundy){p[1]=boundy;} -return[p[0],p[1]];} -function flipCoords(x1,y1,x2,y2) -{var xa=x1,xb=x2,ya=y1,yb=y2;if(x2<x1){xa=x2;xb=x1;} -if(y2<y1){ya=y2;yb=y1;} -return[Math.round(xa),Math.round(ya),Math.round(xb),Math.round(yb)];} -function getRect() -{var xsize=x2-x1,ysize=y2-y1,delta;if(xlimit&&(Math.abs(xsize)>xlimit)){x2=(xsize>0)?(x1+xlimit):(x1-xlimit);} -if(ylimit&&(Math.abs(ysize)>ylimit)){y2=(ysize>0)?(y1+ylimit):(y1-ylimit);} -if(ymin/yscale&&(Math.abs(ysize)<ymin/yscale)){y2=(ysize>0)?(y1+ymin/yscale):(y1-ymin/yscale);} -if(xmin/xscale&&(Math.abs(xsize)<xmin/xscale)){x2=(xsize>0)?(x1+xmin/xscale):(x1-xmin/xscale);} -if(x1<0){x2-=x1;x1-=x1;} -if(y1<0){y2-=y1;y1-=y1;} -if(x2<0){x1-=x2;x2-=x2;} -if(y2<0){y1-=y2;y2-=y2;} -if(x2>boundx){delta=x2-boundx;x1-=delta;x2-=delta;} -if(y2>boundy){delta=y2-boundy;y1-=delta;y2-=delta;} -if(x1>boundx){delta=x1-boundy;y2-=delta;y1-=delta;} -if(y1>boundy){delta=y1-boundy;y2-=delta;y1-=delta;} -return makeObj(flipCoords(x1,y1,x2,y2));} -function makeObj(a) -{return{x:a[0],y:a[1],x2:a[2],y2:a[3],w:a[2]-a[0],h:a[3]-a[1]};} -return{flipCoords:flipCoords,setPressed:setPressed,setCurrent:setCurrent,getOffset:getOffset,moveOffset:moveOffset,getCorner:getCorner,getFixed:getFixed};}());var Shade=(function(){var enabled=false,holder=$('<div />').css({position:'absolute',zIndex:240,opacity:0}),shades={top:createShade(),left:createShade().height(boundy),right:createShade().height(boundy),bottom:createShade()};function resizeShades(w,h){shades.left.css({height:px(h)});shades.right.css({height:px(h)});} -function updateAuto() -{return updateShade(Coords.getFixed());} -function updateShade(c) -{shades.top.css({left:px(c.x),width:px(c.w),height:px(c.y)});shades.bottom.css({top:px(c.y2),left:px(c.x),width:px(c.w),height:px(boundy-c.y2)});shades.right.css({left:px(c.x2),width:px(boundx-c.x2)});shades.left.css({width:px(c.x)});} -function createShade(){return $('<div />').css({position:'absolute',backgroundColor:options.shadeColor||options.bgColor}).appendTo(holder);} -function enableShade(){if(!enabled){enabled=true;holder.insertBefore($img);updateAuto();Selection.setBgOpacity(1,0,1);$img2.hide();setBgColor(options.shadeColor||options.bgColor,1);if(Selection.isAwake()) -{setOpacity(options.bgOpacity,1);} -else setOpacity(1,1);}} -function setBgColor(color,now){colorChangeMacro(getShades(),color,now);} -function disableShade(){if(enabled){holder.remove();$img2.show();enabled=false;if(Selection.isAwake()){Selection.setBgOpacity(options.bgOpacity,1,1);}else{Selection.setBgOpacity(1,1,1);Selection.disableHandles();} -colorChangeMacro($div,0,1);}} -function setOpacity(opacity,now){if(enabled){if(options.bgFade&&!now){holder.animate({opacity:1-opacity},{queue:false,duration:options.fadeTime});} -else holder.css({opacity:1-opacity});}} -function refreshAll(){options.shade?enableShade():disableShade();if(Selection.isAwake())setOpacity(options.bgOpacity);} -function getShades(){return holder.children();} -return{update:updateAuto,updateRaw:updateShade,getShades:getShades,setBgColor:setBgColor,enable:enableShade,disable:disableShade,resize:resizeShades,refresh:refreshAll,opacity:setOpacity};}());var Selection=(function(){var awake,hdep=370;var borders={};var handle={};var seehandles=false;var hhs=options.handleOffset;function insertBorder(type) -{var jq=$('<div />').css({position:'absolute',opacity:options.borderOpacity}).addClass(cssClass(type));$img_holder.append(jq);return jq;} -function dragDiv(ord,zi) -{var jq=$('<div />').mousedown(createDragger(ord)).css({cursor:ord+'-resize',position:'absolute',zIndex:zi}).addClass('ord-'+ord);if(Touch.support){jq.bind('touchstart.jcrop',Touch.createDragger(ord));} -$hdl_holder.append(jq);return jq;} -function insertHandle(ord) -{var hs=options.handleSize;return dragDiv(ord,hdep++).css({top:px(-hhs+1),left:px(-hhs+1),opacity:options.handleOpacity}).width(hs).height(hs).addClass(cssClass('handle'));} -function insertDragbar(ord) -{var s=options.handleSize,h=s,w=s,t=hhs,l=hhs;switch(ord){case'n':case's':w='100%';break;case'e':case'w':h='100%';break;} -return dragDiv(ord,hdep++).width(w).height(h).css({top:px(-t+1),left:px(-l+1)});} -function createHandles(li) -{var i;for(i=0;i<li.length;i++){handle[li[i]]=insertHandle(li[i]);}} -function moveHandles(c) -{var midvert=Math.round((c.h/2)-hhs),midhoriz=Math.round((c.w/2)-hhs),north=-hhs+1,west=-hhs+1,east=c.w-hhs,south=c.h-hhs,x,y;if(handle.e){handle.e.css({top:px(midvert),left:px(east)});handle.w.css({top:px(midvert)});handle.s.css({top:px(south),left:px(midhoriz)});handle.n.css({left:px(midhoriz)});} -if(handle.ne){handle.ne.css({left:px(east)});handle.se.css({top:px(south),left:px(east)});handle.sw.css({top:px(south)});} -if(handle.b){handle.b.css({top:px(south)});handle.r.css({left:px(east)});}} -function moveto(x,y) -{if(!options.shade){$img2.css({top:px(-y),left:px(-x)});} -$sel.css({top:px(y),left:px(x)});} -function resize(w,h) -{$sel.width(w).height(h);} -function refresh() -{var c=Coords.getFixed();Coords.setPressed([c.x,c.y]);Coords.setCurrent([c.x2,c.y2]);updateVisible();} -function updateVisible(select) -{if(awake){return update(select);}} -function update(select) -{var c=Coords.getFixed();resize(c.w,c.h);moveto(c.x,c.y);if(options.shade)Shade.updateRaw(c);if(seehandles){moveHandles(c);} -if(!awake){show();} -if(select){options.onSelect.call(api,unscale(c));}else{options.onChange.call(api,unscale(c));}} -function setBgOpacity(opacity,force,now) -{if(!awake&&!force)return;if(options.bgFade&&!now){$img.animate({opacity:opacity},{queue:false,duration:options.fadeTime});}else{$img.css('opacity',opacity);}} -function show() -{$sel.show();if(options.shade)Shade.opacity(bgopacity);else setBgOpacity(bgopacity,true);awake=true;} -function release() -{disableHandles();$sel.hide();if(options.shade)Shade.opacity(1);else setBgOpacity(1);awake=false;options.onRelease.call(api);} -function showHandles() -{if(seehandles){moveHandles(Coords.getFixed());$hdl_holder.show();}} -function enableHandles() -{seehandles=true;if(options.allowResize){moveHandles(Coords.getFixed());$hdl_holder.show();return true;}} -function disableHandles() -{seehandles=false;$hdl_holder.hide();} -function animMode(v) -{if(animating===v){disableHandles();}else{enableHandles();}} -function done() -{animMode(false);refresh();} -if(options.drawBorders){borders={top:insertBorder('hline'),bottom:insertBorder('hline bottom'),left:insertBorder('vline'),right:insertBorder('vline right')};} -if(options.dragEdges){handle.t=insertDragbar('n');handle.b=insertDragbar('s');handle.r=insertDragbar('e');handle.l=insertDragbar('w');} -if(options.sideHandles){createHandles(['n','s','e','w']);} -if(options.cornerHandles){createHandles(['sw','nw','ne','se']);} -$(document).bind('touchstart.jcrop-ios',function(e){if($(e.currentTarget).hasClass('jcrop-tracker'))e.stopPropagation();});var $track=newTracker().mousedown(createDragger('move')).css({cursor:'move',position:'absolute',zIndex:360});if(Touch.support){$track.bind('touchstart.jcrop',Touch.createDragger('move'));} -$img_holder.append($track);disableHandles();return{updateVisible:updateVisible,update:update,release:release,refresh:refresh,isAwake:function(){return awake;},setCursor:function(cursor){$track.css('cursor',cursor);},enableHandles:enableHandles,enableOnly:function(){seehandles=true;},showHandles:showHandles,disableHandles:disableHandles,animMode:animMode,setBgOpacity:setBgOpacity,done:done};}());var Tracker=(function(){var onMove=function(){},onDone=function(){},trackDoc=options.trackDocument;function toFront() -{$trk.css({zIndex:450});if(Touch.support){$(document).bind('touchmove.jcrop',trackTouchMove).bind('touchend.jcrop',trackTouchEnd);} -if(trackDoc){$(document).bind('mousemove.jcrop',trackMove).bind('mouseup.jcrop',trackUp);}} -function toBack() -{$trk.css({zIndex:290});$(document).unbind('.jcrop');} -function trackMove(e) -{onMove(mouseAbs(e));return false;} -function trackUp(e) -{e.preventDefault();e.stopPropagation();if(btndown){btndown=false;onDone(mouseAbs(e));if(Selection.isAwake()){options.onSelect.call(api,unscale(Coords.getFixed()));} -toBack();onMove=function(){};onDone=function(){};} -return false;} -function activateHandlers(move,done) -{btndown=true;onMove=move;onDone=done;toFront();return false;} -function trackTouchMove(e) -{e.pageX=e.originalEvent.changedTouches[0].pageX;e.pageY=e.originalEvent.changedTouches[0].pageY;return trackMove(e);} -function trackTouchEnd(e) -{e.pageX=e.originalEvent.changedTouches[0].pageX;e.pageY=e.originalEvent.changedTouches[0].pageY;return trackUp(e);} -function setCursor(t) -{$trk.css('cursor',t);} -if(!trackDoc){$trk.mousemove(trackMove).mouseup(trackUp).mouseout(trackUp);} -$img.before($trk);return{activateHandlers:activateHandlers,setCursor:setCursor};}());var KeyManager=(function(){var $keymgr=$('<input type="radio" />').css({position:'fixed',left:'-120px',width:'12px'}),$keywrap=$('<div />').css({position:'absolute',overflow:'hidden'}).append($keymgr);function watchKeys() -{if(options.keySupport){$keymgr.show();$keymgr.focus();}} -function onBlur(e) -{$keymgr.hide();} -function doNudge(e,x,y) -{if(options.allowMove){Coords.moveOffset([x,y]);Selection.updateVisible(true);} -e.preventDefault();e.stopPropagation();} -function parseKey(e) -{if(e.ctrlKey||e.metaKey){return true;} -shift_down=e.shiftKey?true:false;var nudge=shift_down?10:1;switch(e.keyCode){case 37:doNudge(e,-nudge,0);break;case 39:doNudge(e,nudge,0);break;case 38:doNudge(e,0,-nudge);break;case 40:doNudge(e,0,nudge);break;case 27:if(options.allowSelect)Selection.release();break;case 9:return true;} -return false;} -if(options.keySupport){$keymgr.keydown(parseKey).blur(onBlur);if(ie6mode||!options.fixedSupport){$keymgr.css({position:'absolute',left:'-20px'});$keywrap.append($keymgr).insertBefore($img);}else{$keymgr.insertBefore($img);}} -return{watchKeys:watchKeys};}());function setClass(cname) -{$div.removeClass().addClass(cssClass('holder')).addClass(cname);} -function animateTo(a,callback) -{var x1=parseInt(a[0],10)/xscale,y1=parseInt(a[1],10)/yscale,x2=parseInt(a[2],10)/xscale,y2=parseInt(a[3],10)/yscale;if(animating){return;} -var animto=Coords.flipCoords(x1,y1,x2,y2),c=Coords.getFixed(),initcr=[c.x,c.y,c.x2,c.y2],animat=initcr,interv=options.animationDelay,ix1=animto[0]-initcr[0],iy1=animto[1]-initcr[1],ix2=animto[2]-initcr[2],iy2=animto[3]-initcr[3],pcent=0,velocity=options.swingSpeed;x=animat[0];y=animat[1];x2=animat[2];y2=animat[3];Selection.animMode(true);var anim_timer;function queueAnimator(){window.setTimeout(animator,interv);} -var animator=(function(){return function(){pcent+=(100-pcent)/velocity;animat[0]=x+((pcent/100)*ix1);animat[1]=y+((pcent/100)*iy1);animat[2]=x2+((pcent/100)*ix2);animat[3]=y2+((pcent/100)*iy2);if(pcent>=99.8){pcent=100;} -if(pcent<100){setSelectRaw(animat);queueAnimator();}else{Selection.done();if(typeof(callback)==='function'){callback.call(api);}}};}());queueAnimator();} -function setSelect(rect) -{setSelectRaw([parseInt(rect[0],10)/xscale,parseInt(rect[1],10)/yscale,parseInt(rect[2],10)/xscale,parseInt(rect[3],10)/yscale]);options.onSelect.call(api,unscale(Coords.getFixed()));Selection.enableHandles();} -function setSelectRaw(l) -{Coords.setPressed([l[0],l[1]]);Coords.setCurrent([l[2],l[3]]);Selection.update();} -function tellSelect() -{return unscale(Coords.getFixed());} -function tellScaled() -{return Coords.getFixed();} -function setOptionsNew(opt) -{setOptions(opt);interfaceUpdate();} -function disableCrop() -{options.disabled=true;Selection.disableHandles();Selection.setCursor('default');Tracker.setCursor('default');} -function enableCrop() -{options.disabled=false;interfaceUpdate();} -function cancelCrop() -{Selection.done();Tracker.activateHandlers(null,null);} -function destroy() -{$div.remove();$origimg.show();$(obj).removeData('Jcrop');} -function setImage(src,callback) -{Selection.release();disableCrop();var img=new Image();img.onload=function(){var iw=img.width;var ih=img.height;var bw=options.boxWidth;var bh=options.boxHeight;$img.width(iw).height(ih);$img.attr('src',src);$img2.attr('src',src);presize($img,bw,bh);boundx=$img.width();boundy=$img.height();$img2.width(boundx).height(boundy);$trk.width(boundx+(bound*2)).height(boundy+(bound*2));$div.width(boundx).height(boundy);Shade.resize(boundx,boundy);enableCrop();if(typeof(callback)==='function'){callback.call(api);}};img.src=src;} -function colorChangeMacro($obj,color,now){var mycolor=color||options.bgColor;if(options.bgFade&&supportsColorFade()&&options.fadeTime&&!now){$obj.animate({backgroundColor:mycolor},{queue:false,duration:options.fadeTime});}else{$obj.css('backgroundColor',mycolor);}} -function interfaceUpdate(alt) -{if(options.allowResize){if(alt){Selection.enableOnly();}else{Selection.enableHandles();}}else{Selection.disableHandles();} -Tracker.setCursor(options.allowSelect?'crosshair':'default');Selection.setCursor(options.allowMove?'move':'default');if(options.hasOwnProperty('trueSize')){xscale=options.trueSize[0]/boundx;yscale=options.trueSize[1]/boundy;} -if(options.hasOwnProperty('setSelect')){setSelect(options.setSelect);Selection.done();delete(options.setSelect);} -Shade.refresh();if(options.bgColor!=bgcolor){colorChangeMacro(options.shade?Shade.getShades():$div,options.shade?(options.shadeColor||options.bgColor):options.bgColor);bgcolor=options.bgColor;} -if(bgopacity!=options.bgOpacity){bgopacity=options.bgOpacity;if(options.shade)Shade.refresh();else Selection.setBgOpacity(bgopacity);} -xlimit=options.maxSize[0]||0;ylimit=options.maxSize[1]||0;xmin=options.minSize[0]||0;ymin=options.minSize[1]||0;if(options.hasOwnProperty('outerImage')){$img.attr('src',options.outerImage);delete(options.outerImage);} -Selection.refresh();} -if(Touch.support)$trk.bind('touchstart.jcrop',Touch.newSelection);$hdl_holder.hide();interfaceUpdate(true);var api={setImage:setImage,animateTo:animateTo,setSelect:setSelect,setOptions:setOptionsNew,tellSelect:tellSelect,tellScaled:tellScaled,setClass:setClass,disable:disableCrop,enable:enableCrop,cancel:cancelCrop,release:Selection.release,destroy:destroy,focus:KeyManager.watchKeys,getBounds:function(){return[boundx*xscale,boundy*yscale];},getWidgetSize:function(){return[boundx,boundy];},getScaleFactor:function(){return[xscale,yscale];},ui:{holder:$div,selection:$sel}};if($.browser.msie){$div.bind('selectstart',function(){return false;});} -$origimg.data('Jcrop',api);return api;};$.fn.Jcrop=function(options,callback) -{var api;this.each(function(){if($(this).data('Jcrop')){if(options==='api')return $(this).data('Jcrop');else $(this).data('Jcrop').setOptions(options);} -else{if(this.tagName=='IMG') -$.Jcrop.Loader(this,function(){$(this).css({display:'block',visibility:'hidden'});api=$.Jcrop(this,options);if($.isFunction(callback))callback.call(api);});else{$(this).css({display:'block',visibility:'hidden'});api=$.Jcrop(this,options);if($.isFunction(callback))callback.call(api);}}});return this;};$.Jcrop.Loader=function(imgobj,success,error){var $img=$(imgobj),img=$img[0];function completeCheck(){if(img.complete){$img.unbind('.jcloader');if($.isFunction(success))success.call(img);} -else window.setTimeout(completeCheck,50);} -$img.bind('load.jcloader',completeCheck).bind('error.jcloader',function(e){$img.unbind('.jcloader');if($.isFunction(error))error.call(img);});if(img.complete&&$.isFunction(success)){$img.unbind('.jcloader');success.call(img);}};$.Jcrop.defaults={allowSelect:true,allowMove:true,allowResize:true,trackDocument:true,baseClass:'jcrop',addClass:null,bgColor:'black',bgOpacity:0.6,bgFade:false,borderOpacity:0.4,handleOpacity:0.5,handleSize:7,handleOffset:5,aspectRatio:0,keySupport:true,cornerHandles:true,sideHandles:true,drawBorders:true,dragEdges:true,fixedSupport:true,touchSupport:null,shade:null,boxWidth:0,boxHeight:0,boundary:2,fadeTime:400,animationDelay:20,swingSpeed:3,minSelect:[0,0],maxSize:[0,0],minSize:[0,0],onChange:function(){},onSelect:function(){},onDblClick:function(){},onRelease:function(){}};}(jQuery));
\ No newline at end of file diff --git a/apps/contacts/js/jquery.combobox.js b/apps/contacts/js/jquery.combobox.js deleted file mode 100644 index d9959eb6cde..00000000000 --- a/apps/contacts/js/jquery.combobox.js +++ /dev/null @@ -1,158 +0,0 @@ -/** - * Inspired by http://jqueryui.com/demos/autocomplete/#combobox - */ - -(function( $ ) { - $.widget('ui.combobox', { - options: { - id: null, - name: null, - showButton: false, - editable: true - }, - _create: function() { - var self = this, - select = this.element.hide(), - selected = select.children(':selected'), - value = selected.val() ? selected.text() : ''; - var input = this.input = $('<input type="text">') - .insertAfter( select ) - .val( value ) - .autocomplete({ - delay: 0, - minLength: 0, - source: function( request, response ) { - var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" ); - response( select.children('option').map(function() { - var text = $( this ).text(); - if ( this.value && ( !request.term || matcher.test(text) ) ) - return { - label: text.replace( - new RegExp( - '(?![^&;]+;)(?!<[^<>]*)(' + - $.ui.autocomplete.escapeRegex(request.term) + - ')(?![^<>]*>)(?![^&;]+;)', 'gi' - ), '<strong>$1</strong>'), - value: text, - option: this - }; - }) ); - }, - select: function( event, ui ) { - self.input.val($(ui.item.option).text()); - self.input.trigger('change'); - ui.item.option.selected = true; - self._trigger('selected', event, { - item: ui.item.option - }); - }, - change: function( event, ui ) { - if ( !ui.item ) { - var matcher = new RegExp( '^' + $.ui.autocomplete.escapeRegex( $(this).val() ) + '$', 'i' ), - valid = false; - self.input.val($(this).val()); - //self.input.trigger('change'); - select.children('option').each(function() { - if ( $( this ).text().match( matcher ) ) { - this.selected = valid = true; - return false; - } - }); - if ( !self.options['editable'] && !valid ) { - // remove invalid value, as it didn't match anything - $( this ).val( "" ); - select.val( "" ); - input.data('autocomplete').term = ''; - return false; - } - } - } - }) - .addClass('ui-widget ui-widget-content ui-corner-left'); - - input.data('autocomplete')._renderItem = function( ul, item ) { - return $('<li></li>') - .data('item.autocomplete', item ) - .append('<a>' + item.label + '</a>') - .appendTo( ul ); - }; - $.each(this.options, function(key, value) { - self._setOption(key, value); - }); - - input.dblclick(function() { - // pass empty string as value to search for, displaying all results - input.autocomplete('search', ''); - }); - - if(this.options['showButton']) { - this.button = $('<button type="button"> </button>') - .attr('tabIndex', -1 ) - .attr('title', 'Show All Items') - .insertAfter( input ) - .addClass('svg') - .addClass('action') - .addClass('combo-button') - .click(function() { - // close if already visible - if ( input.autocomplete('widget').is(':visible') ) { - input.autocomplete('close'); - return; - } - - // work around a bug (likely same cause as #5265) - $( this ).blur(); - - // pass empty string as value to search for, displaying all results - input.autocomplete('search', ''); - input.focus(); - }); - } - }, - destroy: function() { - this.input.remove(); - //this.button.remove(); - this.element.show(); - $.Widget.prototype.destroy.call( this ); - }, - value: function(val) { - if(val != undefined) { - this.input.val(val); - } else { - return this.input.val(); - } - }, - _setOption: function( key, value ) { - switch( key ) { - case 'id': - this.options['id'] = value; - this.input.attr('id', value); - break; - case 'name': - this.options['name'] = value; - this.input.attr('name', value); - break; - case 'attributes': - var input = this.input; - $.each(this.options['attributes'], function(key, value) { - input.attr(key, value); - }); - break; - case 'classes': - var input = this.input; - $.each(this.options['classes'], function(key, value) { - input.addClass(value); - }); - break; - case 'editable': - case 'showButton': - this.options[key] = value; - break; - } - // In jQuery UI 1.8, you have to manually invoke the _setOption method from the base widget - $.Widget.prototype._setOption.apply( this, arguments ); - // In jQuery UI 1.9 and above, you use the _super method instead - //this._super( "_setOption", key, value ); - } - }); -})( jQuery ); diff --git a/apps/contacts/js/jquery.inview.js b/apps/contacts/js/jquery.inview.js deleted file mode 100644 index 9687cd83368..00000000000 --- a/apps/contacts/js/jquery.inview.js +++ /dev/null @@ -1,134 +0,0 @@ -/** - * author Christopher Blum - * - based on the idea of Remy Sharp, http://remysharp.com/2009/01/26/element-in-view-event-plugin/ - * - forked from http://github.com/zuk/jquery.inview/ - */ -(function ($) { - var inviewObjects = {}, viewportSize, viewportOffset, - d = document, w = window, documentElement = d.documentElement, expando = $.expando, isFiring = false, $elements = {}; - - $.event.special.inview = { - add: function(data) { - var inviewObject = { data: data, $element: $(this) } - inviewObjects[data.guid + "-" + this[expando]] = inviewObject; - var selector = inviewObject.data.selector, - $element = inviewObject.$element; - var hash = parseInt(getHash( data.guid + this[expando])); - $elements[hash] = selector ? $element.find(selector) : $element; - }, - - remove: function(data) { - try { delete inviewObjects[data.guid + "-" + this[expando]]; } catch(e) {} - try { - var hash = parseInt(getHash(data.guid + this[expando])); - delete($elements[hash]); - } catch (e){} - } - }; - - - function getHash(str){ - str = str+''; - var hash = 0; - if (str.length == 0) return hash; - for (i = 0; i < str.length; i++) { - char = str.charCodeAt(i); - hash = ((hash<<5)-hash)+char; - hash = hash & hash; // Convert to 32bit integer - } - return Math.abs(hash); - } - - function getViewportSize() { - var mode, domObject, size = { height: w.innerHeight, width: w.innerWidth }; - - // if this is correct then return it. iPad has compat Mode, so will - // go into check clientHeight/clientWidth (which has the wrong value). - if (!size.height) { - mode = d.compatMode; - if (mode || !$.support.boxModel) { // IE, Gecko - domObject = mode === 'CSS1Compat' ? - documentElement : // Standards - d.body; // Quirks - size = { - height: domObject.clientHeight, - width: domObject.clientWidth - }; - } - } - - return size; - } - - function getViewportOffset() { - return { - top: w.pageYOffset || documentElement.scrollTop || (d.body?d.body.scrollTop:0), - left: w.pageXOffset || documentElement.scrollLeft || (d.body?d.body.scrollLeft:0) - }; - } - - function checkInView() { - if (isFiring){ - return; - } - isFiring = true; - viewportSize = viewportSize || getViewportSize(); - viewportOffset = viewportOffset || getViewportOffset(); - - for (var i in $elements) { - if (isNaN(parseInt(i))) { - continue; - } - - var $element = $($elements[i]), - elementSize = { height: $element.height(), width: $element.width() }, - elementOffset = $element.offset(), - inView = $element.data('inview'), - visiblePartX, - visiblePartY, - visiblePartsMerged; - - // Don't ask me why because I haven't figured out yet: - // viewportOffset and viewportSize are sometimes suddenly null in Firefox 5. - // Even though it sounds weird: - // It seems that the execution of this function is interferred by the onresize/onscroll event - // where viewportOffset and viewportSize are unset - if (!viewportOffset || !viewportSize) { - isFiring = false; - return; - } - - if (elementOffset.top + elementSize.height > viewportOffset.top && - elementOffset.top < viewportOffset.top + viewportSize.height && - elementOffset.left + elementSize.width > viewportOffset.left && - elementOffset.left < viewportOffset.left + viewportSize.width) { - visiblePartX = (viewportOffset.left > elementOffset.left ? - 'right' : (viewportOffset.left + viewportSize.width) < (elementOffset.left + elementSize.width) ? - 'left' : 'both'); - visiblePartY = (viewportOffset.top > elementOffset.top ? - 'bottom' : (viewportOffset.top + viewportSize.height) < (elementOffset.top + elementSize.height) ? - 'top' : 'both'); - visiblePartsMerged = visiblePartX + "-" + visiblePartY; - if (!inView || inView !== visiblePartsMerged) { - $element.data('inview', visiblePartsMerged).trigger('inview', [true, visiblePartX, visiblePartY]); - } - } else if (inView) { - $element.data('inview', false).trigger('inview', [false]); - } - } - isFiring = false; - } - - $(w).bind("scroll resize", function() { - viewportSize = viewportOffset = null; - }); - - // Use setInterval in order to also make sure this captures elements within - // "overflow:scroll" elements or elements that appeared in the dom tree due to - // dom manipulation and reflow - // old: $(window).scroll(checkInView); - // - // By the way, iOS (iPad, iPhone, ...) seems to not execute, or at least delays - // intervals while the user scrolls. Therefore the inview event might fire a bit late there - setInterval(checkInView, 250); -})(jQuery);
\ No newline at end of file diff --git a/apps/contacts/js/jquery.inview.txt b/apps/contacts/js/jquery.inview.txt deleted file mode 100644 index c53dbd1d97c..00000000000 --- a/apps/contacts/js/jquery.inview.txt +++ /dev/null @@ -1,15 +0,0 @@ -jQuery.inview is licensed Attribution-Non-Commercial-Share Alike 2.0 but the -conditions has been waived by the author in the following tweet: - -https://twitter.com/#!/ChristopherBlum/status/148382899887013888 - -Saying: - -Thomas Tanghus @tanghus 18 Dec. 2011 - -@ChristopherBlum Hi. Is it OK if I use https://github.com/protonet/jquery.inview in ownCloud? Preferably under an AGPL license ;-) owncloud.org - - -Christopher Blum Christopher Blum @ChristopherBlum 18 Dec. 2011 - -@tanghus Feel free to! :) diff --git a/apps/contacts/js/jquery.multi-autocomplete.js b/apps/contacts/js/jquery.multi-autocomplete.js deleted file mode 100644 index 5516a74b039..00000000000 --- a/apps/contacts/js/jquery.multi-autocomplete.js +++ /dev/null @@ -1,94 +0,0 @@ -/** - * Inspired by http://jqueryui.com/demos/autocomplete/#multiple - */ - -(function( $ ) { - $.widget('ui.multiple_autocomplete', { - _create: function() { - var self = this; - function split( val ) { - return val.split( /,\s*/ ); - } - function extractLast( term ) { - return split( term ).pop(); - } - function showOptions() { - if(!self.element.autocomplete('widget').is(':visible') && self.element.val().trim() == '') { - self.element.autocomplete('search', ''); - } - } - //console.log('_create: ' + this.options['id']); - this.element.bind('click', function( event ) { - showOptions(); - }); - this.element.bind('input', function( event ) { - showOptions(); - }); - this.element.bind('blur', function( event ) { - var tmp = self.element.val().trim(); - if(tmp[tmp.length-1] == ',') { - self.element.val(tmp.substring(0, tmp.length-1)); - } else { - self.element.val(tmp); - } - if(self.element.val().trim() != '') { - self.element.trigger('change'); // Changes wasn't saved when only using the dropdown. - } - }); - this.element.bind( "keydown", function( event ) { - if ( event.keyCode === $.ui.keyCode.TAB && - $( this ).data( "autocomplete" ).menu.active ) { - event.preventDefault(); - } - }) - .autocomplete({ - minLength: 0, - source: function( request, response ) { - // delegate back to autocomplete, but extract the last term - response( $.ui.autocomplete.filter( - self.options.source, extractLast( request.term ) ) ); - }, - focus: function() { - // prevent value inserted on focus - return false; - }, - select: function( event, ui ) { - var terms = split( this.value ); - // remove the current input - terms.pop(); - // add the selected item - terms.push( ui.item.value ); - // add placeholder to get the comma-and-space at the end - terms.push( "" ); - this.value = terms.join( ", " ); - return false; - } - }); - /*this.button = $( "<button type='button'> </button>" ) - .attr( "tabIndex", -1 ) - .attr( "title", "Show All Items" ) - .insertAfter( this.element ) - .addClass('svg') - .addClass('action') - .addClass('combo-button') - .click(function() { - // close if already visible - if ( self.element.autocomplete( "widget" ).is( ":visible" ) ) { - self.element.autocomplete( "close" ); - return; - } - - // work around a bug (likely same cause as #5265) - $( this ).blur(); - - var tmp = self.element.val().trim(); - if(tmp[tmp.length-1] != ',') { - self.element.val(tmp+', '); - } - // pass empty string as value to search for, displaying all results - self.element.autocomplete( "search", "" ); - self.element.focus(); - });*/ - }, - }); -})( jQuery ); diff --git a/apps/contacts/js/loader.js b/apps/contacts/js/loader.js deleted file mode 100644 index 3b1f4070485..00000000000 --- a/apps/contacts/js/loader.js +++ /dev/null @@ -1,86 +0,0 @@ -/**
- * Copyright (c) 2012 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.
- */
-Contacts_Import={
- importdialog: function(filename){
- var path = $('#dir').val();
- $('body').append('<div id="contacts_import"></div>');
- $('#contacts_import').load(OC.filePath('contacts', 'ajax', 'importdialog.php'), {filename:filename, path:path}, function(){Contacts_Import.initdialog(filename);});
- },
- initdialog: function(filename){
- $('#contacts_import_dialog').dialog({
- width : 500,
- close : function() {
- $(this).dialog('destroy').remove();
- $('#contacts_import').remove();
- }
- });
- $('#import_done_button').click(function(){
- $('#contacts_import_dialog').dialog('destroy').remove();
- $('#contacts_import').remove();
- });
- $('#progressbar').progressbar({value: 0});
- $('#startimport').click(function(){
- var filename = $('#filename').val();
- var path = $('#path').val();
- var method = 'old';
- var addressbookid = $('#contacts option:selected').val();
- if($('#contacts option:selected').val() == 'newaddressbook'){
- var method = 'new';
- var addressbookname = $('#newaddressbook').val();
- var addressbookname = $.trim(addressbookname);
- if(addressbookname == ''){
- $('#newaddressbook').css('background-color', '#FF2626');
- $('#newaddressbook').focus(function(){
- $('#newaddressbook').css('background-color', '#F8F8F8');
- });
- return false;
- }
- }
- $('#newaddressbook').attr('readonly', 'readonly');
- $('#contacts').attr('disabled', 'disabled');
- var progresskey = $('#progresskey').val();
- $.post(OC.filePath('contacts', '', 'import.php') + '?progresskey='+progresskey, {method: String (method), addressbookname: String (addressbookname), path: String (path), file: String (filename), id: String (addressbookid)}, function(jsondata){
- if(jsondata.status == 'success'){
- $('#progressbar').progressbar('option', 'value', 100);
- $('#import_done').find('p').html(t('contacts', 'Result: ') + jsondata.data.imported + t('contacts', ' imported, ') + jsondata.data.failed + t('contacts', ' failed.'));
- } else {
- $('#import_done').find('p').html(jsondata.message);
- }
- $('#import_done').show().find('p').addClass('bold');
- $('#progressbar').fadeOut('slow');
- });
- $('#form_container').css('display', 'none');
- $('#progressbar_container').css('display', 'block');
- window.setTimeout('Contacts_Import.getimportstatus(\'' + progresskey + '\')', 500);
- });
- $('#contacts').change(function(){
- if($('#contacts option:selected').val() == 'newaddressbook'){
- $('#newaddressbookform').slideDown('slow');
- }else{
- $('#newaddressbookform').slideUp('slow');
- }
- });
- },
- getimportstatus: function(progresskey){
- $.get(OC.filePath('contacts', '', 'import.php') + '?progress=1&progresskey=' + progresskey, function(percent){
- $('#progressbar').progressbar('option', 'value', parseInt(percent));
- if(percent < 100){
- window.setTimeout('Contacts_Import.getimportstatus(\'' + progresskey + '\')', 500);
- }else{
- $('#import_done').css('display', 'block');
- }
- });
- }
-}
-$(document).ready(function(){
- if(typeof FileActions !== 'undefined'){
- FileActions.register('text/vcard','importaddressbook', FileActions.PERMISSION_READ, '', Contacts_Import.importdialog);
- FileActions.setDefault('text/vcard','importaddressbook');
- FileActions.register('text/x-vcard','importaddressbook', FileActions.PERMISSION_READ, '', Contacts_Import.importdialog);
- FileActions.setDefault('text/x-vcard','importaddressbook');
- };
-});
\ No newline at end of file diff --git a/apps/contacts/js/settings.js b/apps/contacts/js/settings.js deleted file mode 100644 index 69cf473e06a..00000000000 --- a/apps/contacts/js/settings.js +++ /dev/null @@ -1,196 +0,0 @@ -OC.Contacts = OC.Contacts || {}; -OC.Contacts.Settings = OC.Contacts.Settings || { - init:function() { - this.Addressbook.adrsettings = $('.addressbooks-settings').first(); - this.Addressbook.adractions = $('#contacts-settings').find('div.actions'); - console.log('actions: ' + this.Addressbook.adractions.length); - OC.Share.loadIcons('addressbook'); - }, - Addressbook:{ - showActions:function(act) { - this.adractions.children().hide(); - this.adractions.children('.'+act.join(',.')).show(); - }, - doActivate:function(id, tgt) { - var active = tgt.is(':checked'); - console.log('doActivate: ', id, active); - $.post(OC.filePath('contacts', 'ajax', 'addressbook/activate.php'), {id: id, active: Number(active)}, function(jsondata) { - if (jsondata.status == 'success'){ - if(!active) { - $('#contacts h3[data-id="'+id+'"],#contacts ul[data-id="'+id+'"]').remove(); - } else { - OC.Contacts.Contacts.update(); - } - } else { - console.log('Error:', jsondata.data.message); - OC.Contacts.notify(t('contacts', 'Error') + ': ' + jsondata.data.message); - tgt.checked = !active; - } - }); - }, - doDelete:function(id) { - console.log('doDelete: ', id); - var check = confirm('Do you really want to delete this address book?'); - if(check == false){ - return false; - } else { - $.post(OC.filePath('contacts', 'ajax', 'addressbook/delete.php'), { id: id}, function(jsondata) { - if (jsondata.status == 'success'){ - $('#contacts h3[data-id="'+id+'"],#contacts ul[data-id="'+id+'"]').remove(); - $('.addressbooks-settings tr[data-id="'+id+'"]').remove() - OC.Contacts.Contacts.update(); - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - } - }, - doEdit:function(id) { - console.log('doEdit: ', id); - this.showActions(['active', 'name', 'description', 'save', 'cancel']); - var name = this.adrsettings.find('[data-id="'+id+'"]').find('.name').text(); - var description = this.adrsettings.find('[data-id="'+id+'"]').find('.description').text(); - var active = this.adrsettings.find('[data-id="'+id+'"]').find(':checkbox').is(':checked'); - console.log('name, desc', name, description); - this.adractions.find('.active').prop('checked', active); - this.adractions.find('.name').val(name); - this.adractions.find('.description').val(description); - this.adractions.data('id', id); - }, - doSave:function() { - var name = this.adractions.find('.name').val(); - var description = this.adractions.find('.description').val(); - var active = this.adractions.find('.active').is(':checked'); - var id = this.adractions.data('id'); - console.log('doSave:', id, name, description, active); - - if(name.length == 0) { - OC.dialogs.alert(t('contacts', 'Displayname cannot be empty.'), t('contacts', 'Error')); - return false; - } - var url; - if (id == 'new'){ - url = OC.filePath('contacts', 'ajax', 'addressbook/add.php'); - }else{ - url = OC.filePath('contacts', 'ajax', 'addressbook/update.php'); - } - self = this; - $.post(url, { id: id, name: name, active: Number(active), description: description }, - function(jsondata){ - if(jsondata.status == 'success'){ - self.showActions(['new',]); - self.adractions.removeData('id'); - active = Boolean(Number(jsondata.data.addressbook.active)); - if(id == 'new') { - self.adrsettings.find('table') - .append('<tr class="addressbook" data-id="'+jsondata.data.addressbook.id+'" data-uri="'+jsondata.data.addressbook.uri+'">' - + '<td class="active"><input type="checkbox" '+(active ? 'checked="checked"' : '')+' /></td>' - + '<td class="name">'+jsondata.data.addressbook.displayname+'</td>' - + '<td class="description">'+jsondata.data.addressbook.description+'</td>' - + '<td class="action"><a class="svg action globe" title="'+t('contacts', 'Show CardDav link')+'"></a></td>' - + '<td class="action"><a class="svg action cloud" title="'+t('contacts', 'Show read-only VCF link')+'"></a></td>' - + '<td class="action"><a class="svg action download" title="'+t('contacts', 'Download')+'" ' - + 'href="'+OC.linkTo('contacts', 'export.php')+'?bookid='+jsondata.data.addressbook.id+'"></a></td>' - + '<td class="action"><a class="svg action edit" title="'+t('contacts', 'Edit')+'"></a></td>' - + '<td class="action"><a class="svg action delete" title="'+t('contacts', 'Delete')+'"></a></td>' - + '</tr>'); - } else { - var row = self.adrsettings.find('tr[data-id="'+id+'"]'); - row.find('td.active').find('input:checkbox').prop('checked', active); - row.find('td.name').text(jsondata.data.addressbook.displayname); - row.find('td.description').text(jsondata.data.addressbook.description); - } - OC.Contacts.Contacts.update(); - } else { - OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error')); - } - }); - }, - showLink:function(id, row, link) { - console.log('row:', row.length); - row.next('tr.link').remove(); - var linkrow = $('<tr class="link"><td colspan="5"><input style="width: 95%;" type="text" value="'+link+'" /></td>' - + '<td colspan="3"><button>'+t('contacts', 'Cancel')+'</button></td></tr>').insertAfter(row); - linkrow.find('input').focus().select(); - linkrow.find('button').click(function() { - $(this).parents('tr').first().remove(); - }); - }, - showCardDAV:function(id) { - console.log('showCardDAV: ', id); - var row = this.adrsettings.find('tr[data-id="'+id+'"]'); - this.showLink(id, row, totalurl+'/'+encodeURIComponent(oc_current_user)); - }, - showVCF:function(id) { - console.log('showVCF: ', id); - var row = this.adrsettings.find('tr[data-id="'+id+'"]'); - var link = totalurl+'/'+encodeURIComponent(oc_current_user)+'/'+encodeURIComponent(row.data('uri'))+'?export'; - console.log(link); - this.showLink(id, row, link); - } - } -}; - - -$(document).ready(function() { - OC.Contacts.Settings.init(); - - var moreless = $('#contacts-settings').find('.moreless').first(); - moreless.keydown(function(event) { - if(event.which == 13 || event.which == 32) { - moreless.click(); - } - }); - moreless.on('click', function(event) { - event.preventDefault(); - if(OC.Contacts.Settings.Addressbook.adrsettings.is(':visible')) { - OC.Contacts.Settings.Addressbook.adrsettings.slideUp(); - OC.Contacts.Settings.Addressbook.adrsettings.prev('dt').hide(); - moreless.text(t('contacts', 'More...')); - } else { - OC.Contacts.Settings.Addressbook.adrsettings.slideDown(); - OC.Contacts.Settings.Addressbook.adrsettings.prev('dt').show(); - moreless.text(t('contacts', 'Less...')); - } - }); - - OC.Contacts.Settings.Addressbook.adrsettings.keydown(function(event) { - if(event.which == 13 || event.which == 32) { - OC.Contacts.Settings.Addressbook.adrsettings.click(); - } - }); - - - OC.Contacts.Settings.Addressbook.adrsettings.on('click', function(event){ - $('.tipsy').remove(); - var tgt = $(event.target); - if(tgt.is('a') || tgt.is(':checkbox')) { - var id = tgt.parents('tr').first().data('id'); - if(!id) { - return; - } - if(tgt.is(':checkbox')) { - OC.Contacts.Settings.Addressbook.doActivate(id, tgt); - } else if(tgt.is('a')) { - if(tgt.hasClass('edit')) { - OC.Contacts.Settings.Addressbook.doEdit(id); - } else if(tgt.hasClass('delete')) { - OC.Contacts.Settings.Addressbook.doDelete(id); - } else if(tgt.hasClass('globe')) { - OC.Contacts.Settings.Addressbook.showCardDAV(id); - } else if(tgt.hasClass('cloud')) { - OC.Contacts.Settings.Addressbook.showVCF(id); - } - } - } else if(tgt.is('button')) { - event.preventDefault(); - if(tgt.hasClass('save')) { - OC.Contacts.Settings.Addressbook.doSave(); - } else if(tgt.hasClass('cancel')) { - OC.Contacts.Settings.Addressbook.showActions(['new']); - } else if(tgt.hasClass('new')) { - OC.Contacts.Settings.Addressbook.doEdit('new'); - } - } - }); -}); diff --git a/apps/contacts/l10n/.gitkeep b/apps/contacts/l10n/.gitkeep deleted file mode 100644 index e69de29bb2d..00000000000 --- a/apps/contacts/l10n/.gitkeep +++ /dev/null diff --git a/apps/contacts/l10n/ar.php b/apps/contacts/l10n/ar.php deleted file mode 100644 index 2b28d6ca6d3..00000000000 --- a/apps/contacts/l10n/ar.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "خطء خلال توقيف كتاب العناوين.", -"Error updating addressbook." => "خطء خلال تعديل كتاب العناوين", -"There was an error adding the contact." => "خطء خلال اضافة معرفه جديده.", -"Cannot add empty property." => "لا يمكنك اضافه صفه خاليه.", -"At least one of the address fields has to be filled out." => "يجب ملء على الاقل خانه واحده من العنوان.", -"Information about vCard is incorrect. Please reload the page." => "المعلومات الموجودة في ال vCard غير صحيحة. الرجاء إعادة تحديث الصفحة.", -"Contacts" => "المعارف", -"This is not your addressbook." => "هذا ليس دفتر عناوينك.", -"Contact could not be found." => "لم يتم العثور على الشخص.", -"Work" => "الوظيفة", -"Home" => "البيت", -"Mobile" => "الهاتف المحمول", -"Text" => "معلومات إضافية", -"Voice" => "صوت", -"Fax" => "الفاكس", -"Video" => "الفيديو", -"Pager" => "الرنان", -"Birthday" => "تاريخ الميلاد", -"Contact" => "معرفه", -"Add Contact" => "أضف شخص ", -"Addressbooks" => "كتب العناوين", -"Organization" => "المؤسسة", -"Delete" => "حذف", -"Preferred" => "مفضل", -"Phone" => "الهاتف", -"Email" => "البريد الالكتروني", -"Address" => "عنوان", -"Download contact" => "انزال المعرفه", -"Delete contact" => "امحي المعرفه", -"Type" => "نوع", -"PO Box" => "العنوان البريدي", -"Extended" => "إضافة", -"City" => "المدينة", -"Region" => "المنطقة", -"Zipcode" => "رقم المنطقة", -"Country" => "البلد", -"Addressbook" => "كتاب العناوين", -"Download" => "انزال", -"Edit" => "تعديل", -"New Address Book" => "كتاب عناوين جديد", -"Save" => "حفظ", -"Cancel" => "الغاء" -); diff --git a/apps/contacts/l10n/ca.php b/apps/contacts/l10n/ca.php deleted file mode 100644 index 5a8b0e018c6..00000000000 --- a/apps/contacts/l10n/ca.php +++ /dev/null @@ -1,229 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Error en (des)activar la llibreta d'adreces.", -"id is not set." => "no s'ha establert la id.", -"Cannot update addressbook with an empty name." => "No es pot actualitzar la llibreta d'adreces amb un nom buit", -"Error updating addressbook." => "Error en actualitzar la llibreta d'adreces.", -"No ID provided" => "No heu facilitat cap ID", -"Error setting checksum." => "Error en establir la suma de verificació.", -"No categories selected for deletion." => "No heu seleccionat les categories a eliminar.", -"No address books found." => "No s'han trobat llibretes d'adreces.", -"No contacts found." => "No s'han trobat contactes.", -"There was an error adding the contact." => "S'ha produït un error en afegir el contacte.", -"element name is not set." => "no s'ha establert el nom de l'element.", -"Could not parse contact: " => "No s'ha pogut processar el contacte:", -"Cannot add empty property." => "No es pot afegir una propietat buida.", -"At least one of the address fields has to be filled out." => "Almenys heu d'omplir un dels camps d'adreça.", -"Trying to add duplicate property: " => "Esteu intentant afegir una propietat duplicada:", -"Missing IM parameter." => "Falta el paràmetre IM.", -"Unknown IM: " => "IM desconegut:", -"Information about vCard is incorrect. Please reload the page." => "La informació de la vCard és incorrecta. Carregueu la pàgina de nou.", -"Missing ID" => "Falta la ID", -"Error parsing VCard for ID: \"" => "Error en analitzar la ID de la VCard: \"", -"checksum is not set." => "no s'ha establert la suma de verificació.", -"Information about vCard is incorrect. Please reload the page: " => "La informació de la vCard és incorrecta. Carregueu de nou la pàgina:", -"Something went FUBAR. " => "Alguna cosa ha anat FUBAR.", -"No contact ID was submitted." => "No s'ha tramès cap ID de contacte.", -"Error reading contact photo." => "Error en llegir la foto del contacte.", -"Error saving temporary file." => "Error en desar el fitxer temporal.", -"The loading photo is not valid." => "La foto carregada no és vàlida.", -"Contact ID is missing." => "falta la ID del contacte.", -"No photo path was submitted." => "No heu tramès el camí de la foto.", -"File doesn't exist:" => "El fitxer no existeix:", -"Error loading image." => "Error en carregar la imatge.", -"Error getting contact object." => "Error en obtenir l'objecte contacte.", -"Error getting PHOTO property." => "Error en obtenir la propietat PHOTO.", -"Error saving contact." => "Error en desar el contacte.", -"Error resizing image" => "Error en modificar la mida de la imatge", -"Error cropping image" => "Error en retallar la imatge", -"Error creating temporary image" => "Error en crear la imatge temporal", -"Error finding image: " => "Error en trobar la imatge:", -"Error uploading contacts to storage." => "Error en carregar contactes a l'emmagatzemament.", -"There is no error, the file uploaded with success" => "No hi ha errors, el fitxer s'ha carregat correctament", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "El fitxer carregat supera la directiva upload_max_filesize de php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "El fitxer carregat supera la directiva MAX_FILE_SIZE especificada al formulari HTML", -"The uploaded file was only partially uploaded" => "El fitxer només s'ha carregat parcialment", -"No file was uploaded" => "No s'ha carregat cap fitxer", -"Missing a temporary folder" => "Falta un fitxer temporal", -"Couldn't save temporary image: " => "No s'ha pogut desar la imatge temporal: ", -"Couldn't load temporary image: " => "No s'ha pogut carregar la imatge temporal: ", -"No file was uploaded. Unknown error" => "No s'ha carregat cap fitxer. Error desconegut", -"Contacts" => "Contactes", -"Sorry, this functionality has not been implemented yet" => "Aquesta funcionalitat encara no està implementada", -"Not implemented" => "No implementada", -"Couldn't get a valid address." => "No s'ha pogut obtenir una adreça vàlida.", -"Error" => "Error", -"You do not have permission to add contacts to " => "No teniu permisos per afegir contactes a ", -"Please select one of your own address books." => "Seleccioneu una de les vostres llibretes d'adreces", -"Permission error" => "Error de permisos", -"This property has to be non-empty." => "Aquesta propietat no pot ser buida.", -"Couldn't serialize elements." => "No s'han pogut serialitzar els elements.", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' s'ha cridat sense argument de tipus. Informeu-ne a bugs.owncloud.org", -"Edit name" => "Edita el nom", -"No files selected for upload." => "No s'han seleccionat fitxers per a la pujada.", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "El fitxer que intenteu pujar excedeix la mida màxima de pujada en aquest servidor.", -"Error loading profile picture." => "Error en carregar la imatge de perfil.", -"Select type" => "Seleccioneu un tipus", -"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "Heu marcat eliminar alguns contactes, però encara no s'han eliminat. Espereu mentre s'esborren.", -"Do you want to merge these address books?" => "Voleu fusionar aquestes llibretes d'adreces?", -"Result: " => "Resultat: ", -" imported, " => " importat, ", -" failed." => " fallada.", -"Displayname cannot be empty." => "El nom a mostrar no pot ser buit", -"Addressbook not found: " => "No s'ha trobat la llibreta d'adreces: ", -"This is not your addressbook." => "Aquesta no és la vostra llibreta d'adreces", -"Contact could not be found." => "No s'ha trobat el contacte.", -"Jabber" => "Jabber", -"AIM" => "AIM", -"MSN" => "MSN", -"Twitter" => "Twitter", -"GoogleTalk" => "GoogleTalk", -"Facebook" => "Facebook", -"XMPP" => "XMPP", -"ICQ" => "ICQ", -"Yahoo" => "Yahoo", -"Skype" => "Skype", -"QQ" => "QQ", -"GaduGadu" => "GaduGadu", -"Work" => "Feina", -"Home" => "Casa", -"Other" => "Altres", -"Mobile" => "Mòbil", -"Text" => "Text", -"Voice" => "Veu", -"Message" => "Missatge", -"Fax" => "Fax", -"Video" => "Vídeo", -"Pager" => "Paginador", -"Internet" => "Internet", -"Birthday" => "Aniversari", -"Business" => "Negocis", -"Call" => "Trucada", -"Clients" => "Clients", -"Deliverer" => "Emissari", -"Holidays" => "Vacances", -"Ideas" => "Idees", -"Journey" => "Viatge", -"Jubilee" => "Aniversari", -"Meeting" => "Reunió", -"Personal" => "Personal", -"Projects" => "Projectes", -"Questions" => "Preguntes", -"{name}'s Birthday" => "Aniversari de {name}", -"Contact" => "Contacte", -"You do not have the permissions to edit this contact." => "No teniu permisos per editar aquest contacte", -"You do not have the permissions to delete this contact." => "No teniu permisos per esborrar aquest contacte", -"Add Contact" => "Afegeix un contacte", -"Import" => "Importa", -"Settings" => "Configuració", -"Addressbooks" => "Llibretes d'adreces", -"Close" => "Tanca", -"Keyboard shortcuts" => "Dreceres de teclat", -"Navigation" => "Navegació", -"Next contact in list" => "Següent contacte de la llista", -"Previous contact in list" => "Contacte anterior de la llista", -"Expand/collapse current addressbook" => "Expandeix/col·lapsa la llibreta d'adreces", -"Next addressbook" => "Llibreta d'adreces següent", -"Previous addressbook" => "Llibreta d'adreces anterior", -"Actions" => "Accions", -"Refresh contacts list" => "Carrega de nou la llista de contactes", -"Add new contact" => "Afegeix un contacte nou", -"Add new addressbook" => "Afegeix una llibreta d'adreces nova", -"Delete current contact" => "Esborra el contacte", -"Drop photo to upload" => "Elimina la foto a carregar", -"Delete current photo" => "Elimina la foto actual", -"Edit current photo" => "Edita la foto actual", -"Upload new photo" => "Carrega una foto nova", -"Select photo from ownCloud" => "Selecciona una foto de ownCloud", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Format personalitzat, Nom curt, Nom sencer, Invertit o Invertit amb coma", -"Edit name details" => "Edita detalls del nom", -"Organization" => "Organització", -"Delete" => "Suprimeix", -"Nickname" => "Sobrenom", -"Enter nickname" => "Escriviu el sobrenom", -"Web site" => "Adreça web", -"http://www.somesite.com" => "http://www.somesite.com", -"Go to web site" => "Vés a la web", -"dd-mm-yyyy" => "dd-mm-yyyy", -"Groups" => "Grups", -"Separate groups with commas" => "Separeu els grups amb comes", -"Edit groups" => "Edita els grups", -"Preferred" => "Preferit", -"Please specify a valid email address." => "Especifiqueu una adreça de correu electrònic correcta", -"Enter email address" => "Escriviu una adreça de correu electrònic", -"Mail to address" => "Envia per correu electrònic a l'adreça", -"Delete email address" => "Elimina l'adreça de correu electrònic", -"Enter phone number" => "Escriviu el número de telèfon", -"Delete phone number" => "Elimina el número de telèfon", -"Instant Messenger" => "Instant Messenger", -"Delete IM" => "Elimina IM", -"View on map" => "Visualitza al mapa", -"Edit address details" => "Edita els detalls de l'adreça", -"Add notes here." => "Afegiu notes aquí.", -"Add field" => "Afegeix un camp", -"Phone" => "Telèfon", -"Email" => "Correu electrònic", -"Instant Messaging" => "Missatgeria instantània", -"Address" => "Adreça", -"Note" => "Nota", -"Download contact" => "Baixa el contacte", -"Delete contact" => "Suprimeix el contacte", -"The temporary image has been removed from cache." => "La imatge temporal ha estat eliminada de la memòria de cau.", -"Edit address" => "Edita l'adreça", -"Type" => "Tipus", -"PO Box" => "Adreça postal", -"Street address" => "Adreça", -"Street and number" => "Carrer i número", -"Extended" => "Addicional", -"Apartment number etc." => "Número d'apartament, etc.", -"City" => "Ciutat", -"Region" => "Comarca", -"E.g. state or province" => "p. ex. Estat o província ", -"Zipcode" => "Codi postal", -"Postal code" => "Codi postal", -"Country" => "País", -"Addressbook" => "Llibreta d'adreces", -"Hon. prefixes" => "Prefix honorífic:", -"Miss" => "Srta", -"Ms" => "Sra", -"Mr" => "Sr", -"Sir" => "Senyor", -"Mrs" => "Sra", -"Dr" => "Dr", -"Given name" => "Nom específic", -"Additional names" => "Noms addicionals", -"Family name" => "Nom de familia", -"Hon. suffixes" => "Sufix honorífic:", -"J.D." => "J.D.", -"M.D." => "M.D.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Ph.D.", -"Esq." => "Esq.", -"Jr." => "Jr.", -"Sn." => "Sn.", -"Import a contacts file" => "Importa un fitxer de contactes", -"Please choose the addressbook" => "Escolliu la llibreta d'adreces", -"create a new addressbook" => "crea una llibreta d'adreces nova", -"Name of new addressbook" => "Nom de la nova llibreta d'adreces", -"Importing contacts" => "S'estan important contactes", -"You have no contacts in your addressbook." => "No teniu contactes a la llibreta d'adreces.", -"Add contact" => "Afegeix un contacte", -"Select Address Books" => "Selecccioneu llibretes d'adreces", -"Enter name" => "Escriviu un nom", -"Enter description" => "Escriviu una descripció", -"CardDAV syncing addresses" => "Adreces de sincronització CardDAV", -"more info" => "més informació", -"Primary address (Kontact et al)" => "Adreça primària (Kontact i al)", -"iOS/OS X" => "iOS/OS X", -"Show CardDav link" => "Mostra l'enllaç CardDav", -"Show read-only VCF link" => "Mostra l'enllaç VCF només de lectura", -"Share" => "Comparteix", -"Download" => "Baixa", -"Edit" => "Edita", -"New Address Book" => "Nova llibreta d'adreces", -"Name" => "Nom", -"Description" => "Descripció", -"Save" => "Desa", -"Cancel" => "Cancel·la", -"More..." => "Més..." -); diff --git a/apps/contacts/l10n/cs_CZ.php b/apps/contacts/l10n/cs_CZ.php deleted file mode 100644 index cae9ae0c40c..00000000000 --- a/apps/contacts/l10n/cs_CZ.php +++ /dev/null @@ -1,229 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Chyba při (de)aktivaci adresáře.", -"id is not set." => "id neni nastaveno.", -"Cannot update addressbook with an empty name." => "Nelze aktualizovat adresář s prázdným jménem.", -"Error updating addressbook." => "Chyba při aktualizaci adresáře.", -"No ID provided" => "ID nezadáno", -"Error setting checksum." => "Chyba při nastavování kontrolního součtu.", -"No categories selected for deletion." => "Žádné kategorie nebyly vybrány k smazání.", -"No address books found." => "Žádný adresář nenalezen.", -"No contacts found." => "Žádné kontakty nenalezeny.", -"There was an error adding the contact." => "Během přidávání kontaktu nastala chyba.", -"element name is not set." => "jméno elementu není nastaveno.", -"Could not parse contact: " => "Nelze analyzovat kontakty", -"Cannot add empty property." => "Nelze přidat prazdný údaj.", -"At least one of the address fields has to be filled out." => "Musí být uveden nejméně jeden z adresních údajů", -"Trying to add duplicate property: " => "Pokoušíte se přidat duplicitní atribut: ", -"Missing IM parameter." => "Chybějící parametr IM", -"Unknown IM: " => "Neznámý IM:", -"Information about vCard is incorrect. Please reload the page." => "Informace o vCard je nesprávná. Obnovte stránku, prosím.", -"Missing ID" => "Chybí ID", -"Error parsing VCard for ID: \"" => "Chyba při parsování VCard pro ID: \"", -"checksum is not set." => "kontrolní součet není nastaven.", -"Information about vCard is incorrect. Please reload the page: " => "Informace o vCard je nesprávná. Obnovte stránku, prosím.", -"Something went FUBAR. " => "Něco se pokazilo. ", -"No contact ID was submitted." => "Nebylo nastaveno ID kontaktu.", -"Error reading contact photo." => "Chyba při načítání fotky kontaktu.", -"Error saving temporary file." => "Chyba při ukládání dočasného souboru.", -"The loading photo is not valid." => "Načítaná fotka je vadná.", -"Contact ID is missing." => "Chybí ID kontaktu.", -"No photo path was submitted." => "Žádná fotka nebyla nahrána.", -"File doesn't exist:" => "Soubor neexistuje:", -"Error loading image." => "Chyba při načítání obrázku.", -"Error getting contact object." => "Chyba při převzetí objektu kontakt.", -"Error getting PHOTO property." => "Chyba při získávání fotky.", -"Error saving contact." => "Chyba při ukládání kontaktu.", -"Error resizing image" => "Chyba při změně velikosti obrázku.", -"Error cropping image" => "Chyba při osekávání obrázku.", -"Error creating temporary image" => "Chyba při vytváření dočasného obrázku.", -"Error finding image: " => "Chyba při hledání obrázku:", -"Error uploading contacts to storage." => "Chyba při nahrávání kontaktů do úložiště.", -"There is no error, the file uploaded with success" => "Nevyskytla se žádná chyba, soubor byl úspěšně nahrán", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Nahrávaný soubor překračuje nastavení upload_max_filesize directive v php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Nahrávaný soubor překračuje nastavení MAX_FILE_SIZE z voleb HTML formuláře", -"The uploaded file was only partially uploaded" => "Nahrávaný soubor se nahrál pouze z části", -"No file was uploaded" => "Žádný soubor nebyl nahrán", -"Missing a temporary folder" => "Chybí dočasný adresář", -"Couldn't save temporary image: " => "Nemohu uložit dočasný obrázek: ", -"Couldn't load temporary image: " => "Nemohu načíst dočasný obrázek: ", -"No file was uploaded. Unknown error" => "Soubor nebyl odeslán. Neznámá chyba", -"Contacts" => "Kontakty", -"Sorry, this functionality has not been implemented yet" => "Bohužel, tato funkce nebyla ještě implementována.", -"Not implemented" => "Neimplementováno", -"Couldn't get a valid address." => "Nelze získat platnou adresu.", -"Error" => "Chyba", -"You do not have permission to add contacts to " => "Nemáte práva přidat kontakt do", -"Please select one of your own address books." => "Prosím vyberte jeden z vašich adresářů", -"Permission error" => "Chyba přístupových práv", -"This property has to be non-empty." => "Tento parametr nemuže zůstat nevyplněn.", -"Couldn't serialize elements." => "Prvky nelze převést..", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' voláno bez argumentu. Prosím oznamte chybu na bugs.owncloud.org", -"Edit name" => "Upravit jméno", -"No files selected for upload." => "Žádné soubory nebyly vybrány k nahrání.", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Soubor, který se pokoušíte odeslat, přesahuje maximální povolenou velikost.", -"Error loading profile picture." => "Chyba při otevírání obrázku profilu", -"Select type" => "Vybrat typ", -"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "Některé kontakty jsou označeny ke smazání. Počkete prosím na dokončení operace.", -"Do you want to merge these address books?" => "Chcete spojit tyto adresáře?", -"Result: " => "Výsledek: ", -" imported, " => "importováno v pořádku,", -" failed." => "neimportováno.", -"Displayname cannot be empty." => "Zobrazované jméno nemůže zůstat prázdné.", -"Addressbook not found: " => "Adresář nenalezen:", -"This is not your addressbook." => "Toto není Váš adresář.", -"Contact could not be found." => "Kontakt nebyl nalezen.", -"Jabber" => "Jabber", -"AIM" => "AIM", -"MSN" => "MSN", -"Twitter" => "Twitter", -"GoogleTalk" => "GoogleTalk", -"Facebook" => "Facebook", -"XMPP" => "XMPP", -"ICQ" => "ICQ", -"Yahoo" => "Yahoo", -"Skype" => "Skype", -"QQ" => "QQ", -"GaduGadu" => "GaduGadu", -"Work" => "Pracovní", -"Home" => "Domácí", -"Other" => "Ostatní", -"Mobile" => "Mobil", -"Text" => "Text", -"Voice" => "Hlas", -"Message" => "Zpráva", -"Fax" => "Fax", -"Video" => "Video", -"Pager" => "Pager", -"Internet" => "Internet", -"Birthday" => "Narozeniny", -"Business" => "Pracovní", -"Call" => "Volat", -"Clients" => "Klienti", -"Deliverer" => "Dodavatel", -"Holidays" => "Prázdniny", -"Ideas" => "Nápady", -"Journey" => "Cestování", -"Jubilee" => "Jubileum", -"Meeting" => "Schůzka", -"Personal" => "Osobní", -"Projects" => "Projekty", -"Questions" => "Dotazy", -"{name}'s Birthday" => "Narozeniny {name}", -"Contact" => "Kontakt", -"You do not have the permissions to edit this contact." => "Nemáte práva editovat tento kontakt", -"You do not have the permissions to delete this contact." => "Nemáte práva smazat tento kontakt", -"Add Contact" => "Přidat kontakt", -"Import" => "Import", -"Settings" => "Nastavení", -"Addressbooks" => "Adresáře", -"Close" => "Zavřít", -"Keyboard shortcuts" => "Klávesoví zkratky", -"Navigation" => "Navigace", -"Next contact in list" => "Následující kontakt v seznamu", -"Previous contact in list" => "Předchozí kontakt v seznamu", -"Expand/collapse current addressbook" => "Rozbalit/sbalit aktuální Adresář", -"Next addressbook" => "Následující Adresář", -"Previous addressbook" => "Předchozí Adresář", -"Actions" => "Akce", -"Refresh contacts list" => "Občerstvit seznam kontaktů", -"Add new contact" => "Přidat kontakt", -"Add new addressbook" => "Předat nový Adresář", -"Delete current contact" => "Odstranit aktuální kontakt", -"Drop photo to upload" => "Přetáhněte sem fotku pro její nahrání", -"Delete current photo" => "Smazat současnou fotku", -"Edit current photo" => "Upravit současnou fotku", -"Upload new photo" => "Nahrát novou fotku", -"Select photo from ownCloud" => "Vybrat fotku z ownCloudu", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formát vlastní, křestní, celé jméno, obráceně nebo obráceně oddelené čárkami", -"Edit name details" => "Upravit podrobnosti jména", -"Organization" => "Organizace", -"Delete" => "Odstranit", -"Nickname" => "Přezdívka", -"Enter nickname" => "Zadejte přezdívku", -"Web site" => "Web", -"http://www.somesite.com" => "http://www.somesite.com", -"Go to web site" => "Přejít na web", -"dd-mm-yyyy" => "dd. mm. yyyy", -"Groups" => "Skupiny", -"Separate groups with commas" => "Oddělte skupiny čárkami", -"Edit groups" => "Upravit skupiny", -"Preferred" => "Preferovaný", -"Please specify a valid email address." => "Prosím zadejte platnou e-mailovou adresu", -"Enter email address" => "Zadat e-mailovou adresu", -"Mail to address" => "Odeslat na adresu", -"Delete email address" => "Smazat e-mail", -"Enter phone number" => "Zadat telefoní číslo", -"Delete phone number" => "Smazat telefoní číslo", -"Instant Messenger" => "Instant Messenger", -"Delete IM" => "Smazat IM", -"View on map" => "Zobrazit na mapě", -"Edit address details" => "Upravit podrobnosti adresy", -"Add notes here." => "Zde můžete připsat poznámky.", -"Add field" => "Přidat políčko", -"Phone" => "Telefon", -"Email" => "Email", -"Instant Messaging" => "Instant Messaging", -"Address" => "Adresa", -"Note" => "Poznámka", -"Download contact" => "Stáhnout kontakt", -"Delete contact" => "Odstranit kontakt", -"The temporary image has been removed from cache." => "Obrázek byl odstraněn z dočasné paměti.", -"Edit address" => "Upravit adresu", -"Type" => "Typ", -"PO Box" => "PO box", -"Street address" => "Ulice", -"Street and number" => "Ulice a číslo", -"Extended" => "Rozšířené", -"Apartment number etc." => "Byt číslo atd.", -"City" => "Město", -"Region" => "Kraj", -"E.g. state or province" => "Např. stát nebo okres", -"Zipcode" => "PSČ", -"Postal code" => "PSČ", -"Country" => "Země", -"Addressbook" => "Adresář", -"Hon. prefixes" => "Tituly před", -"Miss" => "Slečna", -"Ms" => "Ms", -"Mr" => "Pan", -"Sir" => "Sir", -"Mrs" => "Paní", -"Dr" => "Dr", -"Given name" => "Křestní jméno", -"Additional names" => "Další jména", -"Family name" => "Příjmení", -"Hon. suffixes" => "Tituly za", -"J.D." => "JUDr.", -"M.D." => "MUDr.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Ph.D.", -"Esq." => "Esq.", -"Jr." => "ml.", -"Sn." => "st.", -"Import a contacts file" => "Importovat soubor kontaktů", -"Please choose the addressbook" => "Prosím zvolte adresář", -"create a new addressbook" => "vytvořit nový adresář", -"Name of new addressbook" => "Jméno nového adresáře", -"Importing contacts" => "Importování kontaktů", -"You have no contacts in your addressbook." => "Nemáte žádné kontakty v adresáři.", -"Add contact" => "Přidat kontakt", -"Select Address Books" => "Vybrat Adresář", -"Enter name" => "Vložte jméno", -"Enter description" => "Vložte popis", -"CardDAV syncing addresses" => "Adresa pro synchronizaci pomocí CardDAV:", -"more info" => "víc informací", -"Primary address (Kontact et al)" => "Hlavní adresa (Kontakt etc)", -"iOS/OS X" => "iOS/OS X", -"Show CardDav link" => "Zobrazit odklaz CardDAV:", -"Show read-only VCF link" => "Zobrazit odkaz VCF pouze pro čtení", -"Share" => "Sdílet", -"Download" => "Stažení", -"Edit" => "Editovat", -"New Address Book" => "Nový adresář", -"Name" => "Název", -"Description" => "Popis", -"Save" => "Uložit", -"Cancel" => "Storno", -"More..." => "Více..." -); diff --git a/apps/contacts/l10n/da.php b/apps/contacts/l10n/da.php deleted file mode 100644 index 97c5f1307cd..00000000000 --- a/apps/contacts/l10n/da.php +++ /dev/null @@ -1,158 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Fejl ved (de)aktivering af adressebogen", -"id is not set." => "Intet ID medsendt.", -"Cannot update addressbook with an empty name." => "Kan ikke opdatére adressebogen med et tomt navn.", -"Error updating addressbook." => "Fejl ved opdatering af adressebog", -"No ID provided" => "Intet ID medsendt", -"Error setting checksum." => "Kunne ikke sætte checksum.", -"No categories selected for deletion." => "Der ikke valgt nogle grupper at slette.", -"No address books found." => "Der blev ikke fundet nogen adressebøger.", -"No contacts found." => "Der blev ikke fundet nogen kontaktpersoner.", -"There was an error adding the contact." => "Der opstod en fejl ved tilføjelse af kontaktpersonen.", -"element name is not set." => "Elementnavnet er ikke medsendt.", -"Cannot add empty property." => "Kan ikke tilføje en egenskab uden indhold.", -"At least one of the address fields has to be filled out." => "Der skal udfyldes mindst et adressefelt.", -"Trying to add duplicate property: " => "Kan ikke tilføje overlappende element.", -"Information about vCard is incorrect. Please reload the page." => "Informationen om vCard er forkert. Genindlæs siden.", -"Missing ID" => "Manglende ID", -"Error parsing VCard for ID: \"" => "Kunne ikke indlæse VCard med ID'et: \"", -"checksum is not set." => "Checksum er ikke medsendt.", -"Information about vCard is incorrect. Please reload the page: " => "Informationen om dette VCard stemmer ikke. Genindlæs venligst siden: ", -"Something went FUBAR. " => "Noget gik grueligt galt. ", -"No contact ID was submitted." => "Ingen ID for kontakperson medsendt.", -"Error reading contact photo." => "Kunne ikke indlæse foto for kontakperson.", -"Error saving temporary file." => "Kunne ikke gemme midlertidig fil.", -"The loading photo is not valid." => "Billedet under indlæsning er ikke gyldigt.", -"Contact ID is missing." => "Kontaktperson ID mangler.", -"No photo path was submitted." => "Der blev ikke medsendt en sti til fotoet.", -"File doesn't exist:" => "Filen eksisterer ikke:", -"Error loading image." => "Kunne ikke indlæse billede.", -"Error getting contact object." => "Fejl ved indlæsning af kontaktpersonobjektet.", -"Error getting PHOTO property." => "Fejl ved indlæsning af PHOTO feltet.", -"Error saving contact." => "Kunne ikke gemme kontaktpersonen.", -"Error resizing image" => "Kunne ikke ændre billedets størrelse", -"Error cropping image" => "Kunne ikke beskære billedet", -"Error creating temporary image" => "Kunne ikke oprette midlertidigt billede", -"Error finding image: " => "Kunne ikke finde billedet: ", -"Error uploading contacts to storage." => "Kunne ikke uploade kontaktepersoner til midlertidig opbevaring.", -"There is no error, the file uploaded with success" => "Der skete ingen fejl, filen blev succesfuldt uploadet", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Den uploadede fil er større end upload_max_filesize indstillingen i php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Den uploadede fil overstiger MAX_FILE_SIZE indstilingen, som specificeret i HTML formularen", -"The uploaded file was only partially uploaded" => "Filen blev kun delvist uploadet.", -"No file was uploaded" => "Ingen fil uploadet", -"Missing a temporary folder" => "Manglende midlertidig mappe.", -"Couldn't save temporary image: " => "Kunne ikke gemme midlertidigt billede: ", -"Couldn't load temporary image: " => "Kunne ikke indlæse midlertidigt billede", -"No file was uploaded. Unknown error" => "Ingen fil blev uploadet. Ukendt fejl.", -"Contacts" => "Kontaktpersoner", -"Sorry, this functionality has not been implemented yet" => "Denne funktion er desværre ikke implementeret endnu", -"Not implemented" => "Ikke implementeret", -"Couldn't get a valid address." => "Kunne ikke finde en gyldig adresse.", -"Error" => "Fejl", -"This property has to be non-empty." => "Dette felt må ikke være tomt.", -"Couldn't serialize elements." => "Kunne ikke serialisere elementerne.", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' kaldet uden typeargument. Indrapporter fejl på bugs.owncloud.org", -"Edit name" => "Rediger navn", -"No files selected for upload." => "Der er ikke valgt nogen filer at uploade.", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Dr.", -"Select type" => "Vælg type", -"Result: " => "Resultat:", -" imported, " => " importeret ", -" failed." => " fejl.", -"This is not your addressbook." => "Dette er ikke din adressebog.", -"Contact could not be found." => "Kontaktperson kunne ikke findes.", -"Work" => "Arbejde", -"Home" => "Hjemme", -"Mobile" => "Mobil", -"Text" => "SMS", -"Voice" => "Telefonsvarer", -"Message" => "Besked", -"Fax" => "Fax", -"Video" => "Video", -"Pager" => "Personsøger", -"Internet" => "Internet", -"Birthday" => "Fødselsdag", -"{name}'s Birthday" => "{name}s fødselsdag", -"Contact" => "Kontaktperson", -"Add Contact" => "Tilføj kontaktperson", -"Import" => "Importer", -"Addressbooks" => "Adressebøger", -"Close" => "Luk", -"Drop photo to upload" => "Drop foto for at uploade", -"Delete current photo" => "Slet nuværende foto", -"Edit current photo" => "Rediger nuværende foto", -"Upload new photo" => "Upload nyt foto", -"Select photo from ownCloud" => "Vælg foto fra ownCloud", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formatter som valgfrit, fuldt navn, efternavn først eller efternavn først med komma", -"Edit name details" => "Rediger navnedetaljer.", -"Organization" => "Organisation", -"Delete" => "Slet", -"Nickname" => "Kaldenavn", -"Enter nickname" => "Indtast kaldenavn", -"dd-mm-yyyy" => "dd-mm-åååå", -"Groups" => "Grupper", -"Separate groups with commas" => "Opdel gruppenavne med kommaer", -"Edit groups" => "Rediger grupper", -"Preferred" => "Foretrukken", -"Please specify a valid email address." => "Indtast venligst en gyldig email-adresse.", -"Enter email address" => "Indtast email-adresse", -"Mail to address" => "Send mail til adresse", -"Delete email address" => "Slet email-adresse", -"Enter phone number" => "Indtast telefonnummer", -"Delete phone number" => "Slet telefonnummer", -"View on map" => "Vis på kort", -"Edit address details" => "Rediger adresse detaljer", -"Add notes here." => "Tilføj noter her.", -"Add field" => "Tilføj element", -"Phone" => "Telefon", -"Email" => "Email", -"Address" => "Adresse", -"Note" => "Note", -"Download contact" => "Download kontaktperson", -"Delete contact" => "Slet kontaktperson", -"The temporary image has been removed from cache." => "Det midlertidige billede er ikke længere tilgængeligt.", -"Edit address" => "Rediger adresse", -"Type" => "Type", -"PO Box" => "Postboks", -"Extended" => "Udvidet", -"City" => "By", -"Region" => "Region", -"Zipcode" => "Postnummer", -"Country" => "Land", -"Addressbook" => "Adressebog", -"Hon. prefixes" => "Foranstillede titler", -"Miss" => "Frøken", -"Ms" => "Fru", -"Mr" => "Hr.", -"Sir" => "Sir", -"Mrs" => "Fru", -"Dr" => "Dr.", -"Given name" => "Fornavn", -"Additional names" => "Mellemnavne", -"Family name" => "Efternavn", -"Hon. suffixes" => "Efterstillede titler", -"J.D." => "Cand. Jur.", -"M.D." => "M.D.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Ph.D.", -"Esq." => "Esq.", -"Jr." => "Jr.", -"Sn." => "Sn.", -"Import a contacts file" => "Importer fil med kontaktpersoner", -"Please choose the addressbook" => "Vælg venligst adressebog", -"create a new addressbook" => "Opret ny adressebog", -"Name of new addressbook" => "Navn på ny adressebog", -"Importing contacts" => "Importerer kontaktpersoner", -"You have no contacts in your addressbook." => "Du har ingen kontaktpersoner i din adressebog.", -"Add contact" => "Tilføj kontaktpeson.", -"CardDAV syncing addresses" => "CardDAV synkroniserings adresse", -"more info" => "mere info", -"Primary address (Kontact et al)" => "Primær adresse (Kontak m. fl.)", -"iOS/OS X" => "iOS/OS X", -"Download" => "Download", -"Edit" => "Rediger", -"New Address Book" => "Ny adressebog", -"Save" => "Gem", -"Cancel" => "Fortryd" -); diff --git a/apps/contacts/l10n/de.php b/apps/contacts/l10n/de.php deleted file mode 100644 index c2e8884fc25..00000000000 --- a/apps/contacts/l10n/de.php +++ /dev/null @@ -1,229 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "(De-)Aktivierung des Adressbuches fehlgeschlagen", -"id is not set." => "ID ist nicht angegeben.", -"Cannot update addressbook with an empty name." => "Adressbuch kann nicht mir leeren Namen aktualisiert werden.", -"Error updating addressbook." => "Adressbuch aktualisieren fehlgeschlagen.", -"No ID provided" => "Keine ID angegeben", -"Error setting checksum." => "Fehler beim Setzen der Prüfsumme.", -"No categories selected for deletion." => "Keine Kategorien zum Löschen ausgewählt.", -"No address books found." => "Keine Adressbücher gefunden.", -"No contacts found." => "Keine Kontakte gefunden.", -"There was an error adding the contact." => "Erstellen des Kontakts fehlgeschlagen.", -"element name is not set." => "Kein Name für das Element angegeben.", -"Could not parse contact: " => "Konnte folgenden Kontakt nicht verarbeiten:", -"Cannot add empty property." => "Feld darf nicht leer sein.", -"At least one of the address fields has to be filled out." => "Mindestens eines der Adressfelder muss ausgefüllt werden.", -"Trying to add duplicate property: " => "Versuche doppelte Eigenschaft hinzuzufügen: ", -"Missing IM parameter." => "IM-Parameter fehlt.", -"Unknown IM: " => "IM unbekannt:", -"Information about vCard is incorrect. Please reload the page." => "Die Information der vCard ist fehlerhaft. Bitte aktualisieren Sie die Seite.", -"Missing ID" => "Fehlende ID", -"Error parsing VCard for ID: \"" => "Fehler beim Einlesen der VCard für die ID: \"", -"checksum is not set." => "Keine Prüfsumme angegeben.", -"Information about vCard is incorrect. Please reload the page: " => "Die Informationen zur vCard sind fehlerhaft. Bitte Seite neu laden: ", -"Something went FUBAR. " => "Irgendwas ist hier so richtig schief gelaufen. ", -"No contact ID was submitted." => "Es wurde keine Kontakt-ID übermittelt.", -"Error reading contact photo." => "Fehler beim Auslesen des Kontaktfotos.", -"Error saving temporary file." => "Fehler beim Speichern der temporären Datei.", -"The loading photo is not valid." => "Das Kontaktfoto ist fehlerhaft.", -"Contact ID is missing." => "Keine Kontakt-ID angegeben.", -"No photo path was submitted." => "Kein Foto-Pfad übermittelt.", -"File doesn't exist:" => "Datei existiert nicht: ", -"Error loading image." => "Fehler beim Laden des Bildes.", -"Error getting contact object." => "Fehler beim Abruf des Kontakt-Objektes.", -"Error getting PHOTO property." => "Fehler beim Abrufen der PHOTO-Eigenschaft.", -"Error saving contact." => "Fehler beim Speichern des Kontaktes.", -"Error resizing image" => "Fehler bei der Größenänderung des Bildes", -"Error cropping image" => "Fehler beim Zuschneiden des Bildes", -"Error creating temporary image" => "Fehler beim Erstellen des temporären Bildes", -"Error finding image: " => "Fehler beim Suchen des Bildes: ", -"Error uploading contacts to storage." => "Übertragen der Kontakte fehlgeschlagen.", -"There is no error, the file uploaded with success" => "Alles bestens, Datei erfolgreich übertragen.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Datei größer, als durch die upload_max_filesize Direktive in php.ini erlaubt", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Datei größer, als die MAX_FILE_SIZE Direktive erlaubt, die im HTML Formular spezifiziert ist", -"The uploaded file was only partially uploaded" => "Datei konnte nur teilweise übertragen werden", -"No file was uploaded" => "Keine Datei konnte übertragen werden.", -"Missing a temporary folder" => "Kein temporärer Ordner vorhanden", -"Couldn't save temporary image: " => "Konnte das temporäre Bild nicht speichern:", -"Couldn't load temporary image: " => "Konnte das temporäre Bild nicht laden:", -"No file was uploaded. Unknown error" => "Keine Datei hochgeladen. Unbekannter Fehler", -"Contacts" => "Kontakte", -"Sorry, this functionality has not been implemented yet" => "Diese Funktion steht leider noch nicht zur Verfügung", -"Not implemented" => "Nicht verfügbar", -"Couldn't get a valid address." => "Konnte keine gültige Adresse abrufen.", -"Error" => "Fehler", -"You do not have permission to add contacts to " => "Sie besitzen nicht die erforderlichen Rechte, um Kontakte hinzuzufügen", -"Please select one of your own address books." => "Bitte wählen Sie eines Ihrer Adressbücher aus.", -"Permission error" => "Berechtigungsfehler", -"This property has to be non-empty." => "Dieses Feld darf nicht leer sein.", -"Couldn't serialize elements." => "Konnte Elemente nicht serialisieren", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' wurde ohne Argumente aufgerufen. Bitte melden Sie dies auf bugs.owncloud.org", -"Edit name" => "Name ändern", -"No files selected for upload." => "Keine Datei(en) zum Hochladen ausgewählt.", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Die Datei, die Sie hochladen möchten, überschreitet die maximale Größe für Datei-Uploads auf diesem Server.", -"Error loading profile picture." => "Fehler beim Laden des Profilbildes.", -"Select type" => "Wähle Typ", -"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "Einige zum Löschen markiert Kontakte wurden noch nicht gelöscht. Bitte warten.", -"Do you want to merge these address books?" => "Möchten Sie diese Adressbücher zusammenführen?", -"Result: " => "Ergebnis: ", -" imported, " => " importiert, ", -" failed." => " fehlgeschlagen.", -"Displayname cannot be empty." => "Der Anzeigename darf nicht leer sein.", -"Addressbook not found: " => "Adressbuch nicht gefunden:", -"This is not your addressbook." => "Dies ist nicht Ihr Adressbuch.", -"Contact could not be found." => "Kontakt konnte nicht gefunden werden.", -"Jabber" => "Jabber", -"AIM" => "AIM", -"MSN" => "MSN", -"Twitter" => "Twitter", -"GoogleTalk" => "GoogleTalk", -"Facebook" => "Facebook", -"XMPP" => "XMPP", -"ICQ" => "ICQ", -"Yahoo" => "Yahoo", -"Skype" => "Skype", -"QQ" => "QQ", -"GaduGadu" => "GaduGadu", -"Work" => "Arbeit", -"Home" => "Zuhause", -"Other" => "Andere", -"Mobile" => "Mobil", -"Text" => "Text", -"Voice" => "Anruf", -"Message" => "Mitteilung", -"Fax" => "Fax", -"Video" => "Video", -"Pager" => "Pager", -"Internet" => "Internet", -"Birthday" => "Geburtstag", -"Business" => "Geschäftlich", -"Call" => "Anruf", -"Clients" => "Kunden", -"Deliverer" => "Lieferant", -"Holidays" => "Feiertage", -"Ideas" => "Ideen", -"Journey" => "Reise", -"Jubilee" => "Jubiläum", -"Meeting" => "Besprechung", -"Personal" => "Persönlich", -"Projects" => "Projekte", -"Questions" => "Fragen", -"{name}'s Birthday" => "Geburtstag von {name}", -"Contact" => "Kontakt", -"You do not have the permissions to edit this contact." => "Sie besitzen nicht die erforderlichen Rechte, um diesen Kontakt zu bearbeiten.", -"You do not have the permissions to delete this contact." => "Sie besitzen nicht die erforderlichen Rechte, um diesen Kontakte zu löschen.", -"Add Contact" => "Kontakt hinzufügen", -"Import" => "Importieren", -"Settings" => "Einstellungen", -"Addressbooks" => "Adressbücher", -"Close" => "Schließen", -"Keyboard shortcuts" => "Tastaturbefehle", -"Navigation" => "Navigation", -"Next contact in list" => "Nächster Kontakt aus der Liste", -"Previous contact in list" => "Vorheriger Kontakt aus der Liste", -"Expand/collapse current addressbook" => "Ausklappen/Einklappen des Adressbuches", -"Next addressbook" => "Nächstes Adressbuch", -"Previous addressbook" => "Vorheriges Adressbuch", -"Actions" => "Aktionen", -"Refresh contacts list" => "Kontaktliste neu laden", -"Add new contact" => "Neuen Kontakt hinzufügen", -"Add new addressbook" => "Neues Adressbuch hinzufügen", -"Delete current contact" => "Aktuellen Kontakt löschen", -"Drop photo to upload" => "Ziehen Sie ein Foto zum Hochladen hierher", -"Delete current photo" => "Derzeitiges Foto löschen", -"Edit current photo" => "Foto ändern", -"Upload new photo" => "Neues Foto hochladen", -"Select photo from ownCloud" => "Foto aus der ownCloud auswählen", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Format benutzerdefiniert, Kurzname, Vollname, Rückwärts oder Rückwärts mit Komma", -"Edit name details" => "Name ändern", -"Organization" => "Organisation", -"Delete" => "Löschen", -"Nickname" => "Spitzname", -"Enter nickname" => "Spitzname angeben", -"Web site" => "Webseite", -"http://www.somesite.com" => "http://www.somesite.com", -"Go to web site" => "Webseite aufrufen", -"dd-mm-yyyy" => "dd.mm.yyyy", -"Groups" => "Gruppen", -"Separate groups with commas" => "Gruppen mit Komma getrennt", -"Edit groups" => "Gruppen editieren", -"Preferred" => "Bevorzugt", -"Please specify a valid email address." => "Bitte eine gültige E-Mail-Adresse angeben.", -"Enter email address" => "E-Mail-Adresse angeben", -"Mail to address" => "E-Mail an diese Adresse schreiben", -"Delete email address" => "E-Mail-Adresse löschen", -"Enter phone number" => "Telefonnummer angeben", -"Delete phone number" => "Telefonnummer löschen", -"Instant Messenger" => "Instant Messenger", -"Delete IM" => "IM löschen", -"View on map" => "Auf Karte anzeigen", -"Edit address details" => "Adressinformationen ändern", -"Add notes here." => "Füge hier Notizen ein.", -"Add field" => "Feld hinzufügen", -"Phone" => "Telefon", -"Email" => "E-Mail", -"Instant Messaging" => "Instant Messaging", -"Address" => "Adresse", -"Note" => "Notiz", -"Download contact" => "Kontakt herunterladen", -"Delete contact" => "Kontakt löschen", -"The temporary image has been removed from cache." => "Das temporäre Bild wurde aus dem Cache gelöscht.", -"Edit address" => "Adresse ändern", -"Type" => "Typ", -"PO Box" => "Postfach", -"Street address" => "Straßenanschrift", -"Street and number" => "Straße und Nummer", -"Extended" => "Erweitert", -"Apartment number etc." => "Wohnungsnummer usw.", -"City" => "Stadt", -"Region" => "Region", -"E.g. state or province" => "Z.B. Staat oder Bezirk", -"Zipcode" => "Postleitzahl", -"Postal code" => "PLZ", -"Country" => "Land", -"Addressbook" => "Adressbuch", -"Hon. prefixes" => "Höflichkeitspräfixe", -"Miss" => "Frau", -"Ms" => "Frau", -"Mr" => "Herr", -"Sir" => "Herr", -"Mrs" => "Frau", -"Dr" => "Dr.", -"Given name" => "Vorname", -"Additional names" => "Zusätzliche Namen", -"Family name" => "Familienname", -"Hon. suffixes" => "Höflichkeitssuffixe", -"J.D." => "Dr. Jur.", -"M.D." => "Dr. med.", -"D.O." => "DGOM", -"D.C." => "MChiro", -"Ph.D." => "Dr.", -"Esq." => "Hochwohlgeborenen", -"Jr." => "Jr.", -"Sn." => "Senior", -"Import a contacts file" => "Kontaktdatei importieren", -"Please choose the addressbook" => "Bitte Adressbuch auswählen", -"create a new addressbook" => "Neues Adressbuch erstellen", -"Name of new addressbook" => "Name des neuen Adressbuchs", -"Importing contacts" => "Kontakte werden importiert", -"You have no contacts in your addressbook." => "Sie haben keine Kontakte im Adressbuch.", -"Add contact" => "Kontakt hinzufügen", -"Select Address Books" => "Wähle Adressbuch", -"Enter name" => "Name eingeben", -"Enter description" => "Beschreibung eingeben", -"CardDAV syncing addresses" => "CardDAV Sync-Adressen", -"more info" => "mehr Informationen", -"Primary address (Kontact et al)" => "Primäre Adresse (für Kontakt o.ä.)", -"iOS/OS X" => "iOS/OS X", -"Show CardDav link" => "CardDav-Link anzeigen", -"Show read-only VCF link" => "Schreibgeschützten VCF-Link anzeigen", -"Share" => "Teilen", -"Download" => "Herunterladen", -"Edit" => "Bearbeiten", -"New Address Book" => "Neues Adressbuch", -"Name" => "Name", -"Description" => "Beschreibung", -"Save" => "Speichern", -"Cancel" => "Abbrechen", -"More..." => "Mehr..." -); diff --git a/apps/contacts/l10n/el.php b/apps/contacts/l10n/el.php deleted file mode 100644 index a50dd81e5d3..00000000000 --- a/apps/contacts/l10n/el.php +++ /dev/null @@ -1,229 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Σφάλμα (απ)ενεργοποίησης βιβλίου διευθύνσεων", -"id is not set." => "δεν ορίστηκε id", -"Cannot update addressbook with an empty name." => "Δε μπορεί να γίνει αλλαγή βιβλίου διευθύνσεων χωρίς όνομα", -"Error updating addressbook." => "Σφάλμα ενημέρωσης βιβλίου διευθύνσεων.", -"No ID provided" => "Δε δόθηκε ID", -"Error setting checksum." => "Λάθος κατά τον ορισμό checksum ", -"No categories selected for deletion." => "Δε επελέγησαν κατηγορίες για διαγραφή", -"No address books found." => "Δε βρέθηκε βιβλίο διευθύνσεων", -"No contacts found." => "Δεν βρέθηκαν επαφές", -"There was an error adding the contact." => "Σφάλμα κατά την προσθήκη επαφής.", -"element name is not set." => "δεν ορίστηκε όνομα στοιχείου", -"Could not parse contact: " => "Δε αναγνώστηκε η επαφή", -"Cannot add empty property." => "Αδύνατη προσθήκη κενής ιδιότητας.", -"At least one of the address fields has to be filled out." => "Πρέπει να συμπληρωθεί τουλάχιστον ένα από τα παιδία διεύθυνσης.", -"Trying to add duplicate property: " => "Προσπάθεια προσθήκης διπλότυπης ιδιότητας:", -"Missing IM parameter." => "Λείπει IM παράμετρος.", -"Unknown IM: " => "Άγνωστο IM:", -"Information about vCard is incorrect. Please reload the page." => "Οι πληροφορίες σχετικά με vCard είναι εσφαλμένες. Παρακαλώ επαναφορτώστε τη σελίδα.", -"Missing ID" => "Λείπει ID", -"Error parsing VCard for ID: \"" => "Σφάλμα κατά την ανάγνωση του VCard για το ID:\"", -"checksum is not set." => "δε ορίστηκε checksum ", -"Information about vCard is incorrect. Please reload the page: " => "Οι πληροφορίες για τη vCard είναι λανθασμένες.Παρακαλώ ξαναφορτώστε τη σελίδα: ", -"Something went FUBAR. " => "Κάτι χάθηκε στο άγνωστο. ", -"No contact ID was submitted." => "Δε υπεβλήθει ID επαφής", -"Error reading contact photo." => "Σφάλμα ανάγνωσης εικόνας επαφής", -"Error saving temporary file." => "Σφάλμα αποθήκευσης προσωρινού αρχείου", -"The loading photo is not valid." => "Η φορτωμένη φωτογραφία δεν είναι έγκυρη", -"Contact ID is missing." => "Λείπει ID επαφής", -"No photo path was submitted." => "Δε δόθηκε διαδρομή εικόνας", -"File doesn't exist:" => "Το αρχείο δεν υπάρχει:", -"Error loading image." => "Σφάλμα φόρτωσης εικόνας", -"Error getting contact object." => "Σφάλμα κατά τη λήψη αντικειμένου επαφής", -"Error getting PHOTO property." => "Σφάλμα κατά τη λήψη ιδιοτήτων ΦΩΤΟΓΡΑΦΙΑΣ.", -"Error saving contact." => "Σφάλμα κατά την αποθήκευση επαφής.", -"Error resizing image" => "Σφάλμα κατά την αλλαγή μεγέθους εικόνας", -"Error cropping image" => "Σφάλμα κατά την περικοπή εικόνας", -"Error creating temporary image" => "Σφάλμα κατά την δημιουργία προσωρινής εικόνας", -"Error finding image: " => "Σφάλμα κατά την εύρεση της εικόνας: ", -"Error uploading contacts to storage." => "Σφάλμα κατά την αποθήκευση επαφών", -"There is no error, the file uploaded with success" => "Δεν υπάρχει σφάλμα, το αρχείο ανέβηκε με επιτυχία ", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Το μέγεθος του αρχείου ξεπερνάει το upload_max_filesize του php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Το ανεβασμένο αρχείο υπερβαίνει το MAX_FILE_SIZE που ορίζεται στην HTML φόρμα", -"The uploaded file was only partially uploaded" => "Το αρχείο ανέβηκε μερικώς", -"No file was uploaded" => "Δεν ανέβηκε κάποιο αρχείο", -"Missing a temporary folder" => "Λείπει ο προσωρινός φάκελος", -"Couldn't save temporary image: " => "Δεν ήταν δυνατή η αποθήκευση της προσωρινής εικόνας: ", -"Couldn't load temporary image: " => "Δεν ήταν δυνατή η φόρτωση της προσωρινής εικόνας: ", -"No file was uploaded. Unknown error" => "Δεν ανέβηκε κάποιο αρχείο. Άγνωστο σφάλμα", -"Contacts" => "Επαφές", -"Sorry, this functionality has not been implemented yet" => "Λυπούμαστε, αυτή η λειτουργία δεν έχει υλοποιηθεί ακόμα", -"Not implemented" => "Δεν έχει υλοποιηθεί", -"Couldn't get a valid address." => "Αδυναμία λήψης έγκυρης διεύθυνσης", -"Error" => "Σφάλμα", -"You do not have permission to add contacts to " => "Δεν έχετε επαρκή δικαιώματα για προσθέσετε επαφές στο ", -"Please select one of your own address books." => "Παρακαλούμε επιλέξτε ένα από τα δικάς σας βιβλία διευθύνσεων.", -"Permission error" => "Σφάλμα δικαιωμάτων", -"This property has to be non-empty." => "Το πεδίο δεν πρέπει να είναι άδειο.", -"Couldn't serialize elements." => "Αδύνατο να μπουν σε σειρά τα στοιχεία", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "το 'deleteProperty' καλέστηκε χωρίς without type argument. Παρακαλώ αναφέρατε στο bugs.owncloud.org", -"Edit name" => "Αλλαγή ονόματος", -"No files selected for upload." => "Δεν επιλέχτηκαν αρχεία για μεταφόρτωση", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Το αρχείο που προσπαθείτε να ανεβάσετε υπερβαίνει το μέγιστο μέγεθος για τις προσθήκες αρχείων σε αυτόν τον server.", -"Error loading profile picture." => "Σφάλμα στην φόρτωση εικόνας προφίλ.", -"Select type" => "Επιλογή τύπου", -"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "Κάποιες επαφές σημειώθηκαν προς διαγραφή,δεν έχουν διαγραφεί ακόμα. Παρακαλώ περιμένετε μέχρι να διαγραφούν.", -"Do you want to merge these address books?" => "Επιθυμείτε να συγχωνεύσετε αυτά τα δύο βιβλία διευθύνσεων?", -"Result: " => "Αποτέλεσμα: ", -" imported, " => " εισάγεται,", -" failed." => " απέτυχε.", -"Displayname cannot be empty." => "Το όνομα προβολής δεν μπορεί να είναι κενό. ", -"Addressbook not found: " => "Το βιβλίο διευθύνσεων δεν βρέθηκε:", -"This is not your addressbook." => "Αυτό δεν είναι το βιβλίο διευθύνσεων σας.", -"Contact could not be found." => "Η επαφή δεν μπόρεσε να βρεθεί.", -"Jabber" => "Jabber", -"AIM" => "AIM", -"MSN" => "MSN", -"Twitter" => "Twitter", -"GoogleTalk" => "GoogleTalk", -"Facebook" => "Facebook", -"XMPP" => "XMPP", -"ICQ" => "ICQ", -"Yahoo" => "Yahoo", -"Skype" => "Skype", -"QQ" => "QQ", -"GaduGadu" => "GaduGadu", -"Work" => "Εργασία", -"Home" => "Σπίτι", -"Other" => "Άλλο", -"Mobile" => "Κινητό", -"Text" => "Κείμενο", -"Voice" => "Ομιλία", -"Message" => "Μήνυμα", -"Fax" => "Φαξ", -"Video" => "Βίντεο", -"Pager" => "Βομβητής", -"Internet" => "Διαδίκτυο", -"Birthday" => "Γενέθλια", -"Business" => "Επιχείρηση", -"Call" => "Κάλεσε", -"Clients" => "Πελάτες", -"Deliverer" => "Προμηθευτής", -"Holidays" => "Διακοπές", -"Ideas" => "Ιδέες", -"Journey" => "Ταξίδι", -"Jubilee" => "Ιωβηλαίο", -"Meeting" => "Συνάντηση", -"Personal" => "Προσωπικό", -"Projects" => "Έργα", -"Questions" => "Ερωτήσεις", -"{name}'s Birthday" => "{name} έχει Γενέθλια", -"Contact" => "Επαφή", -"You do not have the permissions to edit this contact." => "Δεν διαθέτε επαρκή δικαιώματα για την επεξεργασία αυτής της επαφής.", -"You do not have the permissions to delete this contact." => "Δεν διαθέτε επαρκή δικαιώματα για την διαγραφή αυτής της επαφής.", -"Add Contact" => "Προσθήκη επαφής", -"Import" => "Εισαγωγή", -"Settings" => "Ρυθμίσεις", -"Addressbooks" => "Βιβλία διευθύνσεων", -"Close" => "Κλείσιμο ", -"Keyboard shortcuts" => "Συντομεύσεις πλητρολογίου", -"Navigation" => "Πλοήγηση", -"Next contact in list" => "Επόμενη επαφή στη λίστα", -"Previous contact in list" => "Προηγούμενη επαφή στη λίστα", -"Expand/collapse current addressbook" => "Ανάπτυξη/σύμπτυξη τρέχοντος βιβλίου διευθύνσεων", -"Next addressbook" => "Επόμενο βιβλίο διευθύνσεων", -"Previous addressbook" => "Προηγούμενο βιβλίο διευθύνσεων", -"Actions" => "Ενέργειες", -"Refresh contacts list" => "Ανανέωσε τη λίστα επαφών", -"Add new contact" => "Προσθήκη νέας επαφής", -"Add new addressbook" => "Προσθήκη νέου βιβλίου επαφών", -"Delete current contact" => "Διαγραφή τρέχουσας επαφής", -"Drop photo to upload" => "Ρίξε μια φωτογραφία για ανέβασμα", -"Delete current photo" => "Διαγραφή τρέχουσας φωτογραφίας", -"Edit current photo" => "Επεξεργασία τρέχουσας φωτογραφίας", -"Upload new photo" => "Ανέβασε νέα φωτογραφία", -"Select photo from ownCloud" => "Επέλεξε φωτογραφία από το ownCloud", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Format custom, Όνομα, Επώνυμο, Αντίστροφο ή Αντίστροφο με κόμμα", -"Edit name details" => "Αλλάξτε τις λεπτομέρειες ονόματος", -"Organization" => "Οργανισμός", -"Delete" => "Διαγραφή", -"Nickname" => "Παρατσούκλι", -"Enter nickname" => "Εισάγετε παρατσούκλι", -"Web site" => "Ιστότοπος", -"http://www.somesite.com" => "http://www.somesite.com", -"Go to web site" => "Πήγαινε στον ιστότοπο", -"dd-mm-yyyy" => "ΗΗ-ΜΜ-ΕΕΕΕ", -"Groups" => "Ομάδες", -"Separate groups with commas" => "Διαχώρισε τις ομάδες με κόμμα ", -"Edit groups" => "Επεξεργασία ομάδων", -"Preferred" => "Προτιμώμενο", -"Please specify a valid email address." => "Παρακαλώ εισήγαγε μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου", -"Enter email address" => "Εισήγαγε διεύθυνση ηλεκτρονικού ταχυδρομείου", -"Mail to address" => "Αποστολή σε διεύθυνση", -"Delete email address" => "Διαγραφή διεύθυνση email", -"Enter phone number" => "Εισήγαγε αριθμό τηλεφώνου", -"Delete phone number" => "Διέγραψε αριθμό τηλεφώνου", -"Instant Messenger" => "Instant Messenger", -"Delete IM" => "Διαγραφή IM", -"View on map" => "Προβολή στο χάρτη", -"Edit address details" => "Επεξεργασία λεπτομερειών διεύθυνσης", -"Add notes here." => "Πρόσθεσε τις σημειώσεις εδώ", -"Add field" => "Προσθήκη πεδίου", -"Phone" => "Τηλέφωνο", -"Email" => "Email", -"Instant Messaging" => "Άμεσα μυνήματα", -"Address" => "Διεύθυνση", -"Note" => "Σημείωση", -"Download contact" => "Λήψη επαφής", -"Delete contact" => "Διαγραφή επαφής", -"The temporary image has been removed from cache." => "Η προσωρινή εικόνα αφαιρέθηκε από την κρυφή μνήμη.", -"Edit address" => "Επεξεργασία διεύθυνσης", -"Type" => "Τύπος", -"PO Box" => "Ταχ. Θυρίδα", -"Street address" => "Διεύθυνση οδού", -"Street and number" => "Οδός και αριθμός", -"Extended" => "Εκτεταμένη", -"Apartment number etc." => "Αριθμός διαμερίσματος", -"City" => "Πόλη", -"Region" => "Περιοχή", -"E.g. state or province" => "Π.χ. Πολιτεία ή επαρχεία", -"Zipcode" => "Τ.Κ.", -"Postal code" => "Ταχυδρομικός Κωδικός", -"Country" => "Χώρα", -"Addressbook" => "Βιβλίο διευθύνσεων", -"Hon. prefixes" => "προθέματα", -"Miss" => "Δις", -"Ms" => "Κα", -"Mr" => "Κα", -"Sir" => "Σερ", -"Mrs" => "Κα", -"Dr" => "Δρ.", -"Given name" => "Όνομα", -"Additional names" => "Επιπλέον ονόματα", -"Family name" => "Επώνυμο", -"Hon. suffixes" => "καταλήξεις", -"J.D." => "J.D.", -"M.D." => "M.D.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Ph.D.", -"Esq." => "Esq.", -"Jr." => "Jr.", -"Sn." => "Sn.", -"Import a contacts file" => "Εισαγωγή αρχείου επαφών", -"Please choose the addressbook" => "Παρακαλώ επέλεξε βιβλίο διευθύνσεων", -"create a new addressbook" => "Δημιουργία νέου βιβλίου διευθύνσεων", -"Name of new addressbook" => "Όνομα νέου βιβλίου διευθύνσεων", -"Importing contacts" => "Εισαγωγή επαφών", -"You have no contacts in your addressbook." => "Δεν έχεις επαφές στο βιβλίο διευθύνσεων", -"Add contact" => "Προσθήκη επαφής", -"Select Address Books" => "Επέλεξε βιβλίο διευθύνσεων", -"Enter name" => "Εισαγωγή ονόματος", -"Enter description" => "Εισαγωγή περιγραφής", -"CardDAV syncing addresses" => "συγχρονισμός διευθύνσεων μέσω CardDAV ", -"more info" => "περισσότερες πληροφορίες", -"Primary address (Kontact et al)" => "Κύρια διεύθυνση", -"iOS/OS X" => "iOS/OS X", -"Show CardDav link" => "Εμφάνιση συνδέσμου CardDav", -"Show read-only VCF link" => "Εμφάνιση συνδέσμου VCF μόνο για ανάγνωση", -"Share" => "Μοιράσου", -"Download" => "Λήψη", -"Edit" => "Επεξεργασία", -"New Address Book" => "Νέο βιβλίο διευθύνσεων", -"Name" => "Όνομα", -"Description" => "Περιγραφή", -"Save" => "Αποθήκευση", -"Cancel" => "Ακύρωση", -"More..." => "Περισσότερα..." -); diff --git a/apps/contacts/l10n/eo.php b/apps/contacts/l10n/eo.php deleted file mode 100644 index e4eb06db2aa..00000000000 --- a/apps/contacts/l10n/eo.php +++ /dev/null @@ -1,190 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Eraro dum (mal)aktivigo de adresaro.", -"id is not set." => "identigilo ne agordiĝis.", -"Cannot update addressbook with an empty name." => "Ne eblas ĝisdatigi adresaron kun malplena nomo.", -"Error updating addressbook." => "Eraro dum ĝisdatigo de adresaro.", -"No ID provided" => "Neniu identigilo proviziĝis.", -"Error setting checksum." => "Eraro dum agordado de kontrolsumo.", -"No categories selected for deletion." => "Neniu kategorio elektiĝis por forigi.", -"No address books found." => "Neniu adresaro troviĝis.", -"No contacts found." => "Neniu kontakto troviĝis.", -"There was an error adding the contact." => "Eraro okazis dum aldono de kontakto.", -"element name is not set." => "eronomo ne agordiĝis.", -"Could not parse contact: " => "Ne eblis analizi kontakton:", -"Cannot add empty property." => "Ne eblas aldoni malplenan propraĵon.", -"At least one of the address fields has to be filled out." => "Almenaŭ unu el la adreskampoj necesas pleniĝi.", -"Trying to add duplicate property: " => "Provante aldoni duobligitan propraĵon:", -"Information about vCard is incorrect. Please reload the page." => "Informo pri vCard estas malĝusta. Bonvolu reŝargi la paĝon.", -"Missing ID" => "Mankas identigilo", -"Error parsing VCard for ID: \"" => "Eraro dum analizo de VCard por identigilo:", -"checksum is not set." => "kontrolsumo ne agordiĝis.", -"Information about vCard is incorrect. Please reload the page: " => "Informo pri vCard malĝustas. Bonvolu reŝargi la paĝon:", -"Something went FUBAR. " => "Io FUBAR-is.", -"No contact ID was submitted." => "Neniu kontaktidentigilo sendiĝis.", -"Error reading contact photo." => "Eraro dum lego de kontakta foto.", -"Error saving temporary file." => "Eraro dum konservado de provizora dosiero.", -"The loading photo is not valid." => "La alŝutata foto ne validas.", -"Contact ID is missing." => "Kontaktidentigilo mankas.", -"No photo path was submitted." => "Neniu vojo al foto sendiĝis.", -"File doesn't exist:" => "Dosiero ne ekzistas:", -"Error loading image." => "Eraro dum ŝargado de bildo.", -"Error getting contact object." => "Eraro dum ekhaviĝis kontakta objekto.", -"Error getting PHOTO property." => "Eraro dum ekhaviĝis la propraĵon PHOTO.", -"Error saving contact." => "Eraro dum konserviĝis kontakto.", -"Error resizing image" => "Eraro dum aligrandiĝis bildo", -"Error cropping image" => "Eraro dum stuciĝis bildo.", -"Error creating temporary image" => "Eraro dum kreiĝis provizora bildo.", -"Error finding image: " => "Eraro dum serĉo de bildo: ", -"Error uploading contacts to storage." => "Eraro dum alŝutiĝis kontaktoj al konservejo.", -"There is no error, the file uploaded with success" => "Ne estas eraro, la dosiero alŝutiĝis sukcese.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "La alŝutita dosiero transpasas la preskribon upload_max_filesize en php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "La alŝutita dosiero transpasas la preskribon MAX_FILE_SIZE kiu specifiĝis en la HTML-formularo", -"The uploaded file was only partially uploaded" => "la alŝutita dosiero nur parte alŝutiĝis", -"No file was uploaded" => "Neniu dosiero alŝutiĝis.", -"Missing a temporary folder" => "Mankas provizora dosierujo.", -"Couldn't save temporary image: " => "Ne eblis konservi provizoran bildon: ", -"Couldn't load temporary image: " => "Ne eblis ŝargi provizoran bildon: ", -"No file was uploaded. Unknown error" => "Neniu dosiero alŝutiĝis. Nekonata eraro.", -"Contacts" => "Kontaktoj", -"Sorry, this functionality has not been implemented yet" => "Pardonu, ĉi tiu funkcio ankoraŭ ne estas realigita.", -"Not implemented" => "Ne disponebla", -"Couldn't get a valid address." => "Ne eblis ekhavi validan adreson.", -"Error" => "Eraro", -"This property has to be non-empty." => "Ĉi tiu propraĵo devas ne esti malplena.", -"Couldn't serialize elements." => "Ne eblis seriigi erojn.", -"Edit name" => "Redakti nomon", -"No files selected for upload." => "Neniu dosiero elektita por alŝuto.", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "La dosiero, kiun vi provas alŝuti, transpasas la maksimuman grandon por dosieraj alŝutoj en ĉi tiu servilo.", -"Select type" => "Elektu tipon", -"Result: " => "Rezulto: ", -" imported, " => " enportoj, ", -" failed." => "malsukcesoj.", -"Addressbook not found: " => "Adresaro ne troviĝis:", -"This is not your addressbook." => "Ĉi tiu ne estas via adresaro.", -"Contact could not be found." => "Ne eblis trovi la kontakton.", -"Work" => "Laboro", -"Home" => "Hejmo", -"Other" => "Alia", -"Mobile" => "Poŝtelefono", -"Text" => "Teksto", -"Voice" => "Voĉo", -"Message" => "Mesaĝo", -"Fax" => "Fakso", -"Video" => "Videaĵo", -"Pager" => "Televokilo", -"Internet" => "Interreto", -"Birthday" => "Naskiĝotago", -"Business" => "Negoco", -"Call" => "Voko", -"Clients" => "Klientoj", -"Deliverer" => "Liveranto", -"Holidays" => "Ferioj", -"Ideas" => "Ideoj", -"Journey" => "Vojaĝo", -"Jubilee" => "Jubileo", -"Meeting" => "Kunveno", -"Personal" => "Persona", -"Projects" => "Projektoj", -"Questions" => "Demandoj", -"{name}'s Birthday" => "Naskiĝtago de {name}", -"Contact" => "Kontakto", -"Add Contact" => "Aldoni kontakton", -"Import" => "Enporti", -"Settings" => "Agordo", -"Addressbooks" => "Adresaroj", -"Close" => "Fermi", -"Keyboard shortcuts" => "Fulmoklavoj", -"Navigation" => "Navigado", -"Next contact in list" => "Jena kontakto en la listo", -"Previous contact in list" => "Maljena kontakto en la listo", -"Next addressbook" => "Jena adresaro", -"Previous addressbook" => "Maljena adresaro", -"Actions" => "Agoj", -"Refresh contacts list" => "Refreŝigi la kontaktoliston", -"Add new contact" => "Aldoni novan kontakton", -"Add new addressbook" => "Aldoni novan adresaron", -"Delete current contact" => "Forigi la nunan kontakton", -"Drop photo to upload" => "Demeti foton por alŝuti", -"Delete current photo" => "Forigi nunan foton", -"Edit current photo" => "Redakti nunan foton", -"Upload new photo" => "Alŝuti novan foton", -"Select photo from ownCloud" => "Elekti foton el ownCloud", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Propra formo, Mallonga nomo, Longa nomo, Inversa aŭ Inversa kun komo", -"Edit name details" => "Redakti detalojn de nomo", -"Organization" => "Organizaĵo", -"Delete" => "Forigi", -"Nickname" => "Kromnomo", -"Enter nickname" => "Enigu kromnomon", -"Web site" => "TTT-ejo", -"http://www.somesite.com" => "http://www.iuejo.com", -"Go to web site" => "Iri al TTT-ejon", -"dd-mm-yyyy" => "yyyy-mm-dd", -"Groups" => "Grupoj", -"Separate groups with commas" => "Disigi grupojn per komoj", -"Edit groups" => "Redakti grupojn", -"Preferred" => "Preferata", -"Please specify a valid email address." => "Bonvolu specifi validan retpoŝtadreson.", -"Enter email address" => "Enigi retpoŝtadreson", -"Mail to address" => "Retpoŝtmesaĝo al adreso", -"Delete email address" => "Forigi retpoŝþadreson", -"Enter phone number" => "Enigi telefonnumeron", -"Delete phone number" => "Forigi telefonnumeron", -"View on map" => "Vidi en mapo", -"Edit address details" => "Redakti detalojn de adreso", -"Add notes here." => "Aldoni notojn ĉi tie.", -"Add field" => "Aldoni kampon", -"Phone" => "Telefono", -"Email" => "Retpoŝtadreso", -"Address" => "Adreso", -"Note" => "Noto", -"Download contact" => "Elŝuti kontakton", -"Delete contact" => "Forigi kontakton", -"The temporary image has been removed from cache." => "La provizora bildo estas forigita de la kaŝmemoro.", -"Edit address" => "Redakti adreson", -"Type" => "Tipo", -"PO Box" => "Abonkesto", -"Street address" => "Stratadreso", -"Street and number" => "Strato kaj numero", -"Extended" => "Etendita", -"City" => "Urbo", -"Region" => "Regiono", -"Zipcode" => "Poŝtokodo", -"Postal code" => "Poŝtkodo", -"Country" => "Lando", -"Addressbook" => "Adresaro", -"Hon. prefixes" => "Honoraj antaŭmetaĵoj", -"Miss" => "f-ino", -"Ms" => "s-ino", -"Mr" => "s-ro", -"Sir" => "s-ro", -"Mrs" => "s-ino", -"Dr" => "d-ro", -"Given name" => "Persona nomo", -"Additional names" => "Pliaj nomoj", -"Family name" => "Familia nomo", -"Hon. suffixes" => "Honoraj postmetaĵoj", -"Import a contacts file" => "Enporti kontaktodosieron", -"Please choose the addressbook" => "Bonvolu elekti adresaron", -"create a new addressbook" => "krei novan adresaron", -"Name of new addressbook" => "Nomo de nova adresaro", -"Importing contacts" => "Enportante kontaktojn", -"You have no contacts in your addressbook." => "Vi ne havas kontaktojn en via adresaro", -"Add contact" => "Aldoni kontakton", -"Select Address Books" => "Elektu adresarojn", -"Enter name" => "Enigu nomon", -"Enter description" => "Enigu priskribon", -"CardDAV syncing addresses" => "adresoj por CardDAV-sinkronigo", -"more info" => "pli da informo", -"Primary address (Kontact et al)" => "Ĉefa adreso (por Kontakt kaj aliaj)", -"iOS/OS X" => "iOS/OS X", -"Show CardDav link" => "Montri CardDav-ligilon", -"Show read-only VCF link" => "Montri nur legeblan VCF-ligilon", -"Download" => "Elŝuti", -"Edit" => "Redakti", -"New Address Book" => "Nova adresaro", -"Name" => "Nomo", -"Description" => "Priskribo", -"Save" => "Konservi", -"Cancel" => "Nuligi", -"More..." => "Pli..." -); diff --git a/apps/contacts/l10n/es.php b/apps/contacts/l10n/es.php deleted file mode 100644 index 543bda3036b..00000000000 --- a/apps/contacts/l10n/es.php +++ /dev/null @@ -1,208 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Error al (des)activar libreta de direcciones.", -"id is not set." => "no se ha puesto ninguna ID.", -"Cannot update addressbook with an empty name." => "No se puede actualizar una libreta de direcciones sin nombre.", -"Error updating addressbook." => "Error al actualizar la libreta de direcciones.", -"No ID provided" => "No se ha proporcionado una ID", -"Error setting checksum." => "Error al establecer la suma de verificación.", -"No categories selected for deletion." => "No se seleccionaron categorías para borrar.", -"No address books found." => "No se encontraron libretas de direcciones.", -"No contacts found." => "No se encontraron contactos.", -"There was an error adding the contact." => "Se ha producido un error al añadir el contacto.", -"element name is not set." => "no se ha puesto ningún nombre de elemento.", -"Cannot add empty property." => "No se puede añadir una propiedad vacía.", -"At least one of the address fields has to be filled out." => "Al menos uno de los campos de direcciones se tiene que rellenar.", -"Trying to add duplicate property: " => "Intentando añadir una propiedad duplicada: ", -"Missing IM parameter." => "Falta un parámetro del MI.", -"Unknown IM: " => "MI desconocido:", -"Information about vCard is incorrect. Please reload the page." => "La información sobre el vCard es incorrecta. Por favor vuelve a cargar la página.", -"Missing ID" => "Falta la ID", -"Error parsing VCard for ID: \"" => "Error al analizar el VCard para la ID: \"", -"checksum is not set." => "no se ha puesto ninguna suma de comprobación.", -"Information about vCard is incorrect. Please reload the page: " => "La información sobre la vCard es incorrecta. Por favor, recarga la página:", -"Something went FUBAR. " => "Plof. Algo ha fallado.", -"No contact ID was submitted." => "No se ha mandado ninguna ID de contacto.", -"Error reading contact photo." => "Error leyendo fotografía del contacto.", -"Error saving temporary file." => "Error al guardar archivo temporal.", -"The loading photo is not valid." => "La foto que se estaba cargando no es válida.", -"Contact ID is missing." => "Falta la ID del contacto.", -"No photo path was submitted." => "No se ha introducido la ruta de la foto.", -"File doesn't exist:" => "Archivo inexistente:", -"Error loading image." => "Error cargando imagen.", -"Error getting contact object." => "Fallo al coger el contacto.", -"Error getting PHOTO property." => "Fallo al coger las propiedades de la foto .", -"Error saving contact." => "Fallo al salvar un contacto", -"Error resizing image" => "Fallo al cambiar de tamaño una foto", -"Error cropping image" => "Fallo al cortar el tamaño de la foto", -"Error creating temporary image" => "Fallo al crear la foto temporal", -"Error finding image: " => "Fallo al encontrar la imagen", -"Error uploading contacts to storage." => "Error al subir contactos al almacenamiento.", -"There is no error, the file uploaded with success" => "No hay ningún error, el archivo se ha subido con éxito", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "El archivo subido sobrepasa la directiva upload_max_filesize de php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "El archivo subido sobrepasa la directiva MAX_FILE_SIZE especificada en el formulario HTML", -"The uploaded file was only partially uploaded" => "El archivo se ha subido parcialmente", -"No file was uploaded" => "No se ha subido ningún archivo", -"Missing a temporary folder" => "Falta la carpeta temporal", -"Couldn't save temporary image: " => "Fallo no pudo salvar a una imagen temporal", -"Couldn't load temporary image: " => "Fallo no pudo cargara de una imagen temporal", -"No file was uploaded. Unknown error" => "Fallo no se subió el fichero", -"Contacts" => "Contactos", -"Sorry, this functionality has not been implemented yet" => "Perdón esta función no esta aún implementada", -"Not implemented" => "No esta implementada", -"Couldn't get a valid address." => "Fallo : no hay dirección valida", -"Error" => "Fallo", -"This property has to be non-empty." => "Este campo no puede estar vacío.", -"Couldn't serialize elements." => "Fallo no podido ordenar los elementos", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "La propiedad de \"borrar\" se llamado sin argumentos envia fallos a\nbugs.owncloud.org", -"Edit name" => "Edita el Nombre", -"No files selected for upload." => "No hay ficheros seleccionados para subir", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "El fichero que quieres subir excede el tamaño máximo permitido en este servidor.", -"Select type" => "Selecciona el tipo", -"Result: " => "Resultado :", -" imported, " => "Importado.", -" failed." => "Fallo.", -"This is not your addressbook." => "Esta no es tu agenda de contactos.", -"Contact could not be found." => "No se ha podido encontrar el contacto.", -"Jabber" => "Jabber", -"AIM" => "AIM", -"MSN" => "MSN", -"Twitter" => "Twitter", -"GoogleTalk" => "Google Talk", -"Facebook" => "Facebook", -"XMPP" => "XMPP", -"ICQ" => "ICQ", -"Yahoo" => "Yahoo", -"Skype" => "Skype", -"QQ" => "QQ", -"GaduGadu" => "GaduGadu", -"Work" => "Trabajo", -"Home" => "Particular", -"Other" => "Otro", -"Mobile" => "Móvil", -"Text" => "Texto", -"Voice" => "Voz", -"Message" => "Mensaje", -"Fax" => "Fax", -"Video" => "Vídeo", -"Pager" => "Localizador", -"Internet" => "Internet", -"Birthday" => "Cumpleaños", -"Business" => "Negocio", -"Call" => "Llamada", -"Clients" => "Clientes", -"Holidays" => "Vacaciones", -"Ideas" => "Ideas", -"Journey" => "Jornada", -"Meeting" => "Reunión", -"Personal" => "Personal", -"Projects" => "Proyectos", -"Questions" => "Preguntas", -"{name}'s Birthday" => "Cumpleaños de {name}", -"Contact" => "Contacto", -"Add Contact" => "Añadir contacto", -"Import" => "Importar", -"Settings" => "Configuración", -"Addressbooks" => "Libretas de direcciones", -"Close" => "Cierra.", -"Keyboard shortcuts" => "Atajos de teclado", -"Navigation" => "Navegación", -"Next contact in list" => "Siguiente contacto en la lista", -"Previous contact in list" => "Anterior contacto en la lista", -"Actions" => "Acciones", -"Refresh contacts list" => "Refrescar la lista de contactos", -"Add new contact" => "Añadir un nuevo contacto", -"Add new addressbook" => "Añadir nueva libreta de direcciones", -"Delete current contact" => "Eliminar contacto actual", -"Drop photo to upload" => "Suelta una foto para subirla", -"Delete current photo" => "Eliminar fotografía actual", -"Edit current photo" => "Editar fotografía actual", -"Upload new photo" => "Subir nueva fotografía", -"Select photo from ownCloud" => "Seleccionar fotografía desde ownCloud", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formato personalizado, nombre abreviado, nombre completo, al revés o al revés con coma", -"Edit name details" => "Editar los detalles del nombre", -"Organization" => "Organización", -"Delete" => "Borrar", -"Nickname" => "Alias", -"Enter nickname" => "Introduce un alias", -"Web site" => "Sitio Web", -"http://www.somesite.com" => "http://www.unsitio.com", -"Go to web site" => "Ir al sitio Web", -"dd-mm-yyyy" => "dd-mm-yyyy", -"Groups" => "Grupos", -"Separate groups with commas" => "Separa los grupos con comas", -"Edit groups" => "Editar grupos", -"Preferred" => "Preferido", -"Please specify a valid email address." => "Por favor especifica una dirección de correo electrónico válida.", -"Enter email address" => "Introduce una dirección de correo electrónico", -"Mail to address" => "Enviar por correo a la dirección", -"Delete email address" => "Eliminar dirección de correo electrónico", -"Enter phone number" => "Introduce un número de teléfono", -"Delete phone number" => "Eliminar número de teléfono", -"Instant Messenger" => "Mensajero instantáneo", -"View on map" => "Ver en el mapa", -"Edit address details" => "Editar detalles de la dirección", -"Add notes here." => "Añade notas aquí.", -"Add field" => "Añadir campo", -"Phone" => "Teléfono", -"Email" => "Correo electrónico", -"Instant Messaging" => "Mensajería instantánea", -"Address" => "Dirección", -"Note" => "Nota", -"Download contact" => "Descargar contacto", -"Delete contact" => "Eliminar contacto", -"The temporary image has been removed from cache." => "La foto temporal se ha borrado del cache.", -"Edit address" => "Editar dirección", -"Type" => "Tipo", -"PO Box" => "Código postal", -"Street and number" => "Calle y número", -"Extended" => "Extendido", -"Apartment number etc." => "Número del apartamento, etc.", -"City" => "Ciudad", -"Region" => "Región", -"E.g. state or province" => "Ej: región o provincia", -"Zipcode" => "Código postal", -"Postal code" => "Código postal", -"Country" => "País", -"Addressbook" => "Libreta de direcciones", -"Hon. prefixes" => "Prefijos honoríficos", -"Miss" => "Srta", -"Ms" => "Sra.", -"Mr" => "Sr.", -"Sir" => "Señor", -"Mrs" => "Sra", -"Dr" => "Dr", -"Given name" => "Nombre", -"Additional names" => "Nombres adicionales", -"Family name" => "Apellido", -"Hon. suffixes" => "Sufijos honoríficos", -"J.D." => "J.D.", -"M.D." => "M.D.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Dr", -"Esq." => "Don", -"Jr." => "Jr.", -"Sn." => "Sn.", -"Import a contacts file" => "Importar archivo de contactos", -"Please choose the addressbook" => "Por favor escoge la agenda", -"create a new addressbook" => "crear una nueva agenda", -"Name of new addressbook" => "Nombre de la nueva agenda", -"Importing contacts" => "Importando contactos", -"You have no contacts in your addressbook." => "No hay contactos en tu agenda.", -"Add contact" => "Añadir contacto", -"Enter name" => "Introducir nombre", -"Enter description" => "Introducir descripción", -"CardDAV syncing addresses" => "Sincronizando direcciones", -"more info" => "más información", -"Primary address (Kontact et al)" => "Dirección primaria (Kontact et al)", -"iOS/OS X" => "iOS/OS X", -"Share" => "Compartir", -"Download" => "Descargar", -"Edit" => "Editar", -"New Address Book" => "Nueva libreta de direcciones", -"Name" => "Nombre", -"Description" => "Descripción", -"Save" => "Guardar", -"Cancel" => "Cancelar", -"More..." => "Más..." -); diff --git a/apps/contacts/l10n/et_EE.php b/apps/contacts/l10n/et_EE.php deleted file mode 100644 index ea0f80ec515..00000000000 --- a/apps/contacts/l10n/et_EE.php +++ /dev/null @@ -1,155 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Viga aadressiraamatu (de)aktiveerimisel.", -"id is not set." => "ID on määramata.", -"Cannot update addressbook with an empty name." => "Tühja nimega aadressiraamatut ei saa uuendada.", -"Error updating addressbook." => "Viga aadressiraamatu uuendamisel.", -"No ID provided" => "ID-d pole sisestatud", -"Error setting checksum." => "Viga kontrollsumma määramisel.", -"No categories selected for deletion." => "Kustutamiseks pole valitud ühtegi kategooriat.", -"No address books found." => "Ei leitud ühtegi aadressiraamatut.", -"No contacts found." => "Ühtegi kontakti ei leitud.", -"There was an error adding the contact." => "Konktakti lisamisel tekkis viga.", -"element name is not set." => "elemendi nime pole määratud.", -"Cannot add empty property." => "Tühja omadust ei saa lisada.", -"At least one of the address fields has to be filled out." => "Vähemalt üks aadressiväljadest peab olema täidetud.", -"Trying to add duplicate property: " => "Proovitakse lisada topeltomadust: ", -"Information about vCard is incorrect. Please reload the page." => "Visiitkaardi info pole korrektne. Palun lae leht uuesti.", -"Missing ID" => "Puudub ID", -"Error parsing VCard for ID: \"" => "Viga VCard-ist ID parsimisel: \"", -"checksum is not set." => "kontrollsummat pole määratud.", -"Information about vCard is incorrect. Please reload the page: " => "vCard info pole korrektne. Palun lae lehekülg uuesti: ", -"Something went FUBAR. " => "Midagi läks tõsiselt metsa.", -"No contact ID was submitted." => "Kontakti ID-d pole sisestatud.", -"Error reading contact photo." => "Viga kontakti foto lugemisel.", -"Error saving temporary file." => "Viga ajutise faili salvestamisel.", -"The loading photo is not valid." => "Laetav pilt pole korrektne pildifail.", -"Contact ID is missing." => "Kontakti ID puudub.", -"No photo path was submitted." => "Foto asukohta pole määratud.", -"File doesn't exist:" => "Faili pole olemas:", -"Error loading image." => "Viga pildi laadimisel.", -"Error getting contact object." => "Viga kontakti objekti hankimisel.", -"Error getting PHOTO property." => "Viga PHOTO omaduse hankimisel.", -"Error saving contact." => "Viga kontakti salvestamisel.", -"Error resizing image" => "Viga pildi suuruse muutmisel", -"Error cropping image" => "Viga pildi lõikamisel", -"Error creating temporary image" => "Viga ajutise pildi loomisel", -"Error finding image: " => "Viga pildi leidmisel: ", -"Error uploading contacts to storage." => "Viga kontaktide üleslaadimisel kettale.", -"There is no error, the file uploaded with success" => "Ühtegi tõrget polnud, fail on üles laetud", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Üleslaetud fail ületab php.ini failis määratud upload_max_filesize suuruse", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Üleslaetud fail ületab MAX_FILE_SIZE suuruse, mis on HTML vormi jaoks määratud", -"The uploaded file was only partially uploaded" => "Fail laeti üles ainult osaliselt", -"No file was uploaded" => "Ühtegi faili ei laetud üles", -"Missing a temporary folder" => "Ajutiste failide kaust puudub", -"Couldn't save temporary image: " => "Ajutise pildi salvestamine ebaõnnestus: ", -"Couldn't load temporary image: " => "Ajutise pildi laadimine ebaõnnestus: ", -"No file was uploaded. Unknown error" => "Ühtegi faili ei laetud üles. Tundmatu viga", -"Contacts" => "Kontaktid", -"Sorry, this functionality has not been implemented yet" => "Vabandust, aga see funktsioon pole veel valmis", -"Not implemented" => "Pole implementeeritud", -"Couldn't get a valid address." => "Kehtiva aadressi hankimine ebaõnnestus", -"Error" => "Viga", -"This property has to be non-empty." => "See omadus ei tohi olla tühi.", -"Edit name" => "Muuda nime", -"No files selected for upload." => "Üleslaadimiseks pole faile valitud.", -"Select type" => "Vali tüüp", -"Result: " => "Tulemus: ", -" imported, " => " imporditud, ", -" failed." => " ebaõnnestus.", -"This is not your addressbook." => "See pole sinu aadressiraamat.", -"Contact could not be found." => "Kontakti ei leitud.", -"Work" => "Töö", -"Home" => "Kodu", -"Mobile" => "Mobiil", -"Text" => "Tekst", -"Voice" => "Hääl", -"Message" => "Sõnum", -"Fax" => "Faks", -"Video" => "Video", -"Pager" => "Piipar", -"Internet" => "Internet", -"Birthday" => "Sünnipäev", -"{name}'s Birthday" => "{name} sünnipäev", -"Contact" => "Kontakt", -"Add Contact" => "Lisa kontakt", -"Import" => "Impordi", -"Addressbooks" => "Aadressiraamatud", -"Close" => "Sule", -"Drop photo to upload" => "Lohista üleslaetav foto siia", -"Delete current photo" => "Kustuta praegune foto", -"Edit current photo" => "Muuda praegust pilti", -"Upload new photo" => "Lae üles uus foto", -"Select photo from ownCloud" => "Vali foto ownCloudist", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Kohandatud vorming, Lühike nimi, Täielik nimi, vastupidine või vastupidine komadega", -"Edit name details" => "Muuda nime üksikasju", -"Organization" => "Organisatsioon", -"Delete" => "Kustuta", -"Nickname" => "Hüüdnimi", -"Enter nickname" => "Sisesta hüüdnimi", -"dd-mm-yyyy" => "dd.mm.yyyy", -"Groups" => "Grupid", -"Separate groups with commas" => "Eralda grupid komadega", -"Edit groups" => "Muuda gruppe", -"Preferred" => "Eelistatud", -"Please specify a valid email address." => "Palun sisesta korrektne e-posti aadress.", -"Enter email address" => "Sisesta e-posti aadress", -"Mail to address" => "Kiri aadressile", -"Delete email address" => "Kustuta e-posti aadress", -"Enter phone number" => "Sisesta telefoninumber", -"Delete phone number" => "Kustuta telefoninumber", -"View on map" => "Vaata kaardil", -"Edit address details" => "Muuda aaressi infot", -"Add notes here." => "Lisa märkmed siia.", -"Add field" => "Lisa väli", -"Phone" => "Telefon", -"Email" => "E-post", -"Address" => "Aadress", -"Note" => "Märkus", -"Download contact" => "Lae kontakt alla", -"Delete contact" => "Kustuta kontakt", -"The temporary image has been removed from cache." => "Ajutine pilt on puhvrist eemaldatud.", -"Edit address" => "Muuda aadressi", -"Type" => "Tüüp", -"PO Box" => "Postkontori postkast", -"Extended" => "Laiendatud", -"City" => "Linn", -"Region" => "Piirkond", -"Zipcode" => "Postiindeks", -"Country" => "Riik", -"Addressbook" => "Aadressiraamat", -"Hon. prefixes" => "Eesliited", -"Miss" => "Preili", -"Ms" => "Pr", -"Mr" => "Hr", -"Sir" => "Härra", -"Mrs" => "Proua", -"Dr" => "Dr", -"Given name" => "Eesnimi", -"Additional names" => "Lisanimed", -"Family name" => "Perekonnanimi", -"Hon. suffixes" => "Järelliited", -"J.D." => "J.D.", -"M.D." => "M.D.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Ph.D.", -"Esq." => "Esq.", -"Jr." => "Jr.", -"Sn." => "Senior.", -"Import a contacts file" => "Impordi kontaktifail", -"Please choose the addressbook" => "Palun vali aadressiraamat", -"create a new addressbook" => "loo uus aadressiraamat", -"Name of new addressbook" => "Uue aadressiraamatu nimi", -"Importing contacts" => "Kontaktide importimine", -"You have no contacts in your addressbook." => "Sinu aadressiraamatus pole ühtegi kontakti.", -"Add contact" => "Lisa kontakt", -"CardDAV syncing addresses" => "CardDAV sünkroniseerimise aadressid", -"more info" => "lisainfo", -"Primary address (Kontact et al)" => "Peamine aadress", -"iOS/OS X" => "iOS/OS X", -"Download" => "Lae alla", -"Edit" => "Muuda", -"New Address Book" => "Uus aadressiraamat", -"Save" => "Salvesta", -"Cancel" => "Loobu" -); diff --git a/apps/contacts/l10n/eu.php b/apps/contacts/l10n/eu.php deleted file mode 100644 index 56a48126702..00000000000 --- a/apps/contacts/l10n/eu.php +++ /dev/null @@ -1,169 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Errore bat egon da helbide-liburua (des)gaitzen", -"id is not set." => "IDa ez da ezarri.", -"Cannot update addressbook with an empty name." => "Ezin da helbide liburua eguneratu izen huts batekin.", -"Error updating addressbook." => "Errore bat egon da helbide liburua eguneratzen.", -"No ID provided" => "Ez da IDrik eman", -"Error setting checksum." => "Errorea kontrol-batura ezartzean.", -"No categories selected for deletion." => "Ez dira ezabatzeko kategoriak hautatu.", -"No address books found." => "Ez da helbide libururik aurkitu.", -"No contacts found." => "Ez da kontakturik aurkitu.", -"There was an error adding the contact." => "Errore bat egon da kontaktua gehitzerakoan", -"element name is not set." => "elementuaren izena ez da ezarri.", -"Could not parse contact: " => "Ezin izan da kontaktua analizatu:", -"Cannot add empty property." => "Ezin da propieta hutsa gehitu.", -"At least one of the address fields has to be filled out." => "Behintzat helbide eremuetako bat bete behar da.", -"Trying to add duplicate property: " => "Propietate bikoiztuta gehitzen saiatzen ari zara:", -"Information about vCard is incorrect. Please reload the page." => "vCard-aren inguruko informazioa okerra da. Mesedez birkargatu orrialdea.", -"Missing ID" => "ID falta da", -"Error parsing VCard for ID: \"" => "Errorea VCard analizatzean hurrengo IDrako: \"", -"checksum is not set." => "Kontrol-batura ezarri gabe dago.", -"Information about vCard is incorrect. Please reload the page: " => "vCard honen informazioa ez da zuzena.Mezedez birkargatu orria:", -"No contact ID was submitted." => "Ez da kontaktuaren IDrik eman.", -"Error reading contact photo." => "Errore bat izan da kontaktuaren argazkia igotzerakoan.", -"Error saving temporary file." => "Errore bat izan da aldi bateko fitxategia gordetzerakoan.", -"The loading photo is not valid." => "Kargatzen ari den argazkia ez da egokia.", -"Contact ID is missing." => "Kontaktuaren IDa falta da.", -"No photo path was submitted." => "Ez da argazkiaren bide-izenik eman.", -"File doesn't exist:" => "Fitxategia ez da existitzen:", -"Error loading image." => "Errore bat izan da irudia kargatzearkoan.", -"Error getting contact object." => "Errore bat izan da kontaktu objetua lortzean.", -"Error getting PHOTO property." => "Errore bat izan da PHOTO propietatea lortzean.", -"Error saving contact." => "Errore bat izan da kontaktua gordetzean.", -"Error resizing image" => "Errore bat izan da irudiaren tamaina aldatzean", -"Error cropping image" => "Errore bat izan da irudia mozten", -"Error creating temporary image" => "Errore bat izan da aldi bateko irudia sortzen", -"Error finding image: " => "Ezin izan da irudia aurkitu:", -"Error uploading contacts to storage." => "Errore bat egon da kontaktuak biltegira igotzerakoan.", -"There is no error, the file uploaded with success" => "Ez da errorerik egon, fitxategia ongi igo da", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Igotako fitxategia php.ini fitxategiko upload_max_filesize direktiba baino handiagoa da", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Igotako fitxategia HTML formularioan zehaztutako MAX_FILE_SIZE direktiba baino handidagoa da.", -"The uploaded file was only partially uploaded" => "Igotako fitxategiaren zati bat bakarrik igo da", -"No file was uploaded" => "Ez da fitxategirik igo", -"Missing a temporary folder" => "Aldi bateko karpeta falta da", -"Couldn't save temporary image: " => "Ezin izan da aldi bateko irudia gorde:", -"Couldn't load temporary image: " => "Ezin izan da aldi bateko irudia kargatu:", -"No file was uploaded. Unknown error" => "Ez da fitxategirik igo. Errore ezezaguna", -"Contacts" => "Kontaktuak", -"Sorry, this functionality has not been implemented yet" => "Barkatu, aukera hau ez da oriandik inplementatu", -"Not implemented" => "Inplementatu gabe", -"Couldn't get a valid address." => "Ezin izan da eposta baliagarri bat hartu.", -"Error" => "Errorea", -"This property has to be non-empty." => "Propietate hau ezin da hutsik egon.", -"Couldn't serialize elements." => "Ezin izan dira elementuak serializatu.", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' argumenturik gabe deitu da. Mezedez abisatu bugs.owncloud.org-en", -"Edit name" => "Editatu izena", -"No files selected for upload." => "Ez duzu igotzeko fitxategirik hautatu.", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Igo nahi duzun fitxategia zerbitzariak onartzen duen tamaina baino handiagoa da.", -"Select type" => "Hautatu mota", -"Result: " => "Emaitza:", -" imported, " => " inportatua, ", -" failed." => "huts egin du.", -"This is not your addressbook." => "Hau ez da zure helbide liburua.", -"Contact could not be found." => "Ezin izan da kontaktua aurkitu.", -"Work" => "Lana", -"Home" => "Etxea", -"Other" => "Bestelakoa", -"Mobile" => "Mugikorra", -"Text" => "Testua", -"Voice" => "Ahotsa", -"Message" => "Mezua", -"Fax" => "Fax-a", -"Video" => "Bideoa", -"Pager" => "Bilagailua", -"Internet" => "Internet", -"Birthday" => "Jaioteguna", -"Call" => "Deia", -"Clients" => "Bezeroak", -"Holidays" => "Oporrak", -"Ideas" => "Ideiak", -"Journey" => "Bidaia", -"Meeting" => "Bilera", -"Personal" => "Pertsonala", -"Projects" => "Proiektuak", -"Questions" => "Galderak", -"{name}'s Birthday" => "{name}ren jaioteguna", -"Contact" => "Kontaktua", -"Add Contact" => "Gehitu kontaktua", -"Import" => "Inportatu", -"Settings" => "Ezarpenak", -"Addressbooks" => "Helbide Liburuak", -"Close" => "Itxi", -"Keyboard shortcuts" => "Teklatuaren lasterbideak", -"Navigation" => "Nabigazioa", -"Next contact in list" => "Hurrengoa kontaktua zerrendan", -"Previous contact in list" => "Aurreko kontaktua zerrendan", -"Expand/collapse current addressbook" => "Zabaldu/tolestu uneko helbide-liburua", -"Actions" => "Ekintzak", -"Refresh contacts list" => "Gaurkotu kontaktuen zerrenda", -"Add new contact" => "Gehitu kontaktu berria", -"Add new addressbook" => "Gehitu helbide-liburu berria", -"Delete current contact" => "Ezabatu uneko kontaktuak", -"Drop photo to upload" => "Askatu argazkia igotzeko", -"Delete current photo" => "Ezabatu oraingo argazkia", -"Edit current photo" => "Editatu oraingo argazkia", -"Upload new photo" => "Igo argazki berria", -"Select photo from ownCloud" => "Hautatu argazki bat ownCloudetik", -"Edit name details" => "Editatu izenaren zehaztasunak", -"Organization" => "Erakundea", -"Delete" => "Ezabatu", -"Nickname" => "Ezizena", -"Enter nickname" => "Sartu ezizena", -"Web site" => "Web orria", -"http://www.somesite.com" => "http://www.webgunea.com", -"Go to web site" => "Web orrira joan", -"dd-mm-yyyy" => "yyyy-mm-dd", -"Groups" => "Taldeak", -"Separate groups with commas" => "Banatu taldeak komekin", -"Edit groups" => "Editatu taldeak", -"Preferred" => "Hobetsia", -"Please specify a valid email address." => "Mesedez sartu eposta helbide egoki bat", -"Enter email address" => "Sartu eposta helbidea", -"Mail to address" => "Bidali helbidera", -"Delete email address" => "Ezabatu eposta helbidea", -"Enter phone number" => "Sartu telefono zenbakia", -"Delete phone number" => "Ezabatu telefono zenbakia", -"View on map" => "Ikusi mapan", -"Edit address details" => "Editatu helbidearen zehaztasunak", -"Add notes here." => "Gehitu oharrak hemen.", -"Add field" => "Gehitu eremua", -"Phone" => "Telefonoa", -"Email" => "Eposta", -"Address" => "Helbidea", -"Note" => "Oharra", -"Download contact" => "Deskargatu kontaktua", -"Delete contact" => "Ezabatu kontaktua", -"The temporary image has been removed from cache." => "Aldi bateko irudia cachetik ezabatu da.", -"Edit address" => "Editatu helbidea", -"Type" => "Mota", -"PO Box" => "Posta kutxa", -"Street address" => "Kalearen helbidea", -"Street and number" => "Kalea eta zenbakia", -"Extended" => "Hedatua", -"Apartment number etc." => "Etxe zenbakia eab.", -"City" => "Hiria", -"Region" => "Eskualdea", -"Zipcode" => "Posta kodea", -"Postal code" => "Posta kodea", -"Country" => "Herrialdea", -"Addressbook" => "Helbide-liburua", -"Import a contacts file" => "Inporatu kontaktuen fitxategia", -"Please choose the addressbook" => "Mesedez, aukeratu helbide liburua", -"create a new addressbook" => "sortu helbide liburu berria", -"Name of new addressbook" => "Helbide liburuaren izena", -"Importing contacts" => "Kontaktuak inportatzen", -"You have no contacts in your addressbook." => "Ez duzu kontakturik zure helbide liburuan.", -"Add contact" => "Gehitu kontaktua", -"Select Address Books" => "Hautatu helbide-liburuak", -"Enter name" => "Sartu izena", -"Enter description" => "Sartu deskribapena", -"CardDAV syncing addresses" => "CardDAV sinkronizazio helbideak", -"more info" => "informazio gehiago", -"Primary address (Kontact et al)" => "Helbide nagusia", -"iOS/OS X" => "iOS/OS X", -"Download" => "Deskargatu", -"Edit" => "Editatu", -"New Address Book" => "Helbide-liburu berria", -"Save" => "Gorde", -"Cancel" => "Ezeztatu" -); diff --git a/apps/contacts/l10n/fa.php b/apps/contacts/l10n/fa.php deleted file mode 100644 index 8029cd201ed..00000000000 --- a/apps/contacts/l10n/fa.php +++ /dev/null @@ -1,158 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "خطا در (غیر) فعال سازی کتابچه نشانه ها", -"id is not set." => "شناسه تعیین نشده", -"Cannot update addressbook with an empty name." => "نمی توانید کتابچه نشانی ها را با یک نام خالی بروزرسانی کنید", -"Error updating addressbook." => "خطا در هنگام بروزرسانی کتابچه نشانی ها", -"No ID provided" => "هیچ شناسه ای ارائه نشده", -"Error setting checksum." => "خطا در تنظیم checksum", -"No categories selected for deletion." => "هیچ گروهی برای حذف شدن در نظر گرفته نشده", -"No address books found." => "هیچ کتابچه نشانی پیدا نشد", -"No contacts found." => "هیچ شخصی پیدا نشد", -"There was an error adding the contact." => "یک خطا در افزودن اطلاعات شخص مورد نظر", -"element name is not set." => "نام اصلی تنظیم نشده است", -"Cannot add empty property." => "نمیتوان یک خاصیت خالی ایجاد کرد", -"At least one of the address fields has to be filled out." => "At least one of the address fields has to be filled out. ", -"Trying to add duplicate property: " => "امتحان کردن برای وارد کردن مشخصات تکراری", -"Information about vCard is incorrect. Please reload the page." => "اطلاعات درمورد vCard شما اشتباه است لطفا صفحه را دوباره بار گذاری کنید", -"Missing ID" => "نشانی گم شده", -"Error parsing VCard for ID: \"" => "خطا در تجزیه کارت ویزا برای شناسه:", -"checksum is not set." => "checksum تنظیم شده نیست", -"Information about vCard is incorrect. Please reload the page: " => "اطلاعات کارت ویزا شما غلط است لطفا صفحه را دوباره بارگزاری کنید", -"Something went FUBAR. " => "چند چیز به FUBAR رفتند", -"No contact ID was submitted." => "هیچ اطلاعاتی راجع به شناسه ارسال نشده", -"Error reading contact photo." => "خطا در خواندن اطلاعات تصویر", -"Error saving temporary file." => "خطا در ذخیره پرونده موقت", -"The loading photo is not valid." => "بارگزاری تصویر امکان پذیر نیست", -"Contact ID is missing." => "اطلاعات شناسه گم شده", -"No photo path was submitted." => "هیچ نشانی از تصویرارسال نشده", -"File doesn't exist:" => "پرونده وجود ندارد", -"Error loading image." => "خطا در بارگزاری تصویر", -"Error getting contact object." => "خطا در گرفتن اطلاعات شخص", -"Error getting PHOTO property." => "خطا در دربافت تصویر ویژگی شخصی", -"Error saving contact." => "خطا در ذخیره سازی اطلاعات", -"Error resizing image" => "خطا در تغییر دادن اندازه تصویر", -"Error cropping image" => "خطا در برداشت تصویر", -"Error creating temporary image" => "خطا در ساخت تصویر temporary", -"Error finding image: " => "خطا در پیدا کردن تصویر:", -"Error uploading contacts to storage." => "خطا در هنگام بارگذاری و ذخیره سازی", -"There is no error, the file uploaded with success" => "هیچ خطایی نیست بارگذاری پرونده موفقیت آمیز بود", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "حجم آپلود از طریق Php.ini تعیین می شود", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "حداکثر حجم قابل بار گذاری از طریق HTML MAX_FILE_SIZE است", -"The uploaded file was only partially uploaded" => "پرونده بارگذاری شده فقط تاحدودی بارگذاری شده", -"No file was uploaded" => "هیچ پروندهای بارگذاری نشده", -"Missing a temporary folder" => "یک پوشه موقت گم شده", -"Couldn't save temporary image: " => "قابلیت ذخیره تصویر موقت وجود ندارد:", -"Couldn't load temporary image: " => "قابلیت بارگذاری تصویر موقت وجود ندارد:", -"No file was uploaded. Unknown error" => "هیچ فایلی آپلود نشد.خطای ناشناس", -"Contacts" => "اشخاص", -"Sorry, this functionality has not been implemented yet" => "با عرض پوزش،این قابلیت هنوز اجرا نشده است", -"Not implemented" => "انجام نشد", -"Couldn't get a valid address." => "Couldn't get a valid address.", -"Error" => "خطا", -"This property has to be non-empty." => "این ویژگی باید به صورت غیر تهی عمل کند", -"Couldn't serialize elements." => "قابلیت مرتب سازی عناصر وجود ندارد", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "پاک کردن ویژگی بدون استدلال انجام شده.لطفا این مورد را گزارش دهید:bugs.owncloud.org", -"Edit name" => "نام تغییر", -"No files selected for upload." => "هیچ فایلی برای آپلود انتخاب نشده است", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "حجم فایل بسیار بیشتر از حجم تنظیم شده در تنظیمات سرور است", -"Select type" => "نوع را انتخاب کنید", -"Result: " => "نتیجه:", -" imported, " => "وارد شد،", -" failed." => "ناموفق", -"This is not your addressbook." => "این کتابچه ی نشانه های شما نیست", -"Contact could not be found." => "اتصال ویا تماسی یافت نشد", -"Work" => "کار", -"Home" => "خانه", -"Mobile" => "موبایل", -"Text" => "متن", -"Voice" => "صدا", -"Message" => "پیغام", -"Fax" => "دورنگار:", -"Video" => "رسانه تصویری", -"Pager" => "صفحه", -"Internet" => "اینترنت", -"Birthday" => "روزتولد", -"{name}'s Birthday" => "روز تولد {name} است", -"Contact" => "اشخاص", -"Add Contact" => "افزودن اطلاعات شخص مورد نظر", -"Import" => "وارد کردن", -"Addressbooks" => "کتابچه ی نشانی ها", -"Close" => "بستن", -"Drop photo to upload" => "تصویر را به اینجا بکشید تا بار گذازی شود", -"Delete current photo" => "پاک کردن تصویر کنونی", -"Edit current photo" => "ویرایش تصویر کنونی", -"Upload new photo" => "بار گذاری یک تصویر جدید", -"Select photo from ownCloud" => "انتخاب یک تصویر از ابر های شما", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Format custom, Short name, Full name, Reverse or Reverse with comma", -"Edit name details" => "ویرایش نام جزئیات", -"Organization" => "نهاد(ارگان)", -"Delete" => "پاک کردن", -"Nickname" => "نام مستعار", -"Enter nickname" => "یک نام مستعار وارد کنید", -"dd-mm-yyyy" => "dd-mm-yyyy", -"Groups" => "گروه ها", -"Separate groups with commas" => "جدا کردن گروه ها به وسیله درنگ نما", -"Edit groups" => "ویرایش گروه ها", -"Preferred" => "مقدم", -"Please specify a valid email address." => "لطفا یک پست الکترونیکی معتبر وارد کنید", -"Enter email address" => "یک پست الکترونیکی وارد کنید", -"Mail to address" => "به نشانی ارسال شد", -"Delete email address" => "پاک کردن نشانی پست الکترونیکی", -"Enter phone number" => "شماره تلفن راوارد کنید", -"Delete phone number" => "پاک کردن شماره تلفن", -"View on map" => "دیدن روی نقشه", -"Edit address details" => "ویرایش جزئیات نشانی ها", -"Add notes here." => "اینجا یادداشت ها را بیافزایید", -"Add field" => "اضافه کردن فیلد", -"Phone" => "شماره تلفن", -"Email" => "نشانی پست الکترنیک", -"Address" => "نشانی", -"Note" => "یادداشت", -"Download contact" => "دانلود مشخصات اشخاص", -"Delete contact" => "پاک کردن اطلاعات شخص مورد نظر", -"The temporary image has been removed from cache." => "تصویر موقت از کش پاک شد.", -"Edit address" => "ویرایش نشانی", -"Type" => "نوع", -"PO Box" => "صندوق پستی", -"Extended" => "تمدید شده", -"City" => "شهر", -"Region" => "ناحیه", -"Zipcode" => "کد پستی", -"Country" => "کشور", -"Addressbook" => "کتابچه ی نشانی ها", -"Hon. prefixes" => "پیشوند های محترمانه", -"Miss" => "خانم", -"Ms" => "خانم", -"Mr" => "آقا", -"Sir" => "آقا", -"Mrs" => "خانم", -"Dr" => "دکتر", -"Given name" => "نام معلوم", -"Additional names" => "نام های دیگر", -"Family name" => "نام خانوادگی", -"Hon. suffixes" => "پسوند های محترم", -"J.D." => "J.D.", -"M.D." => "M.D.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "دکتری", -"Esq." => "Esq.", -"Jr." => "Jr.", -"Sn." => "Sn.", -"Import a contacts file" => "وارد کردن پرونده حاوی اطلاعات", -"Please choose the addressbook" => "لطفا یک کتابچه نشانی انتخاب کنید", -"create a new addressbook" => "یک کتابچه نشانی بسازید", -"Name of new addressbook" => "نام کتابچه نشانی جدید", -"Importing contacts" => "وارد کردن اشخاص", -"You have no contacts in your addressbook." => "شماهیچ شخصی در کتابچه نشانی خود ندارید", -"Add contact" => "افزودن اطلاعات شخص مورد نظر", -"CardDAV syncing addresses" => "CardDAV syncing addresses ", -"more info" => "اطلاعات بیشتر", -"Primary address (Kontact et al)" => "نشانی اولیه", -"iOS/OS X" => "iOS/OS X ", -"Download" => "بارگیری", -"Edit" => "ویرایش", -"New Address Book" => "کتابچه نشانه های جدید", -"Save" => "ذخیره سازی", -"Cancel" => "انصراف" -); diff --git a/apps/contacts/l10n/fi_FI.php b/apps/contacts/l10n/fi_FI.php deleted file mode 100644 index 23cafe44dcf..00000000000 --- a/apps/contacts/l10n/fi_FI.php +++ /dev/null @@ -1,159 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error updating addressbook." => "Virhe päivitettäessä osoitekirjaa.", -"Error setting checksum." => "Virhe asettaessa tarkistussummaa.", -"No categories selected for deletion." => "Luokkia ei ole valittu poistettavaksi.", -"No address books found." => "Osoitekirjoja ei löytynyt.", -"No contacts found." => "Yhteystietoja ei löytynyt.", -"There was an error adding the contact." => "Virhe yhteystietoa lisättäessä.", -"Cannot add empty property." => "Tyhjää ominaisuutta ei voi lisätä.", -"At least one of the address fields has to be filled out." => "Vähintään yksi osoitekenttä tulee täyttää.", -"Information about vCard is incorrect. Please reload the page." => "vCardin tiedot eivät kelpaa. Lataa sivu uudelleen.", -"Error parsing VCard for ID: \"" => "Virhe jäsennettäessä vCardia tunnisteelle: \"", -"Error saving temporary file." => "Virhe tallennettaessa tilapäistiedostoa.", -"No photo path was submitted." => "Kuvan polkua ei annettu.", -"File doesn't exist:" => "Tiedostoa ei ole olemassa:", -"Error loading image." => "Virhe kuvaa ladatessa.", -"Error saving contact." => "Virhe yhteystietoa tallennettaessa.", -"Error resizing image" => "Virhe asettaessa kuvaa uuteen kokoon", -"Error cropping image" => "Virhe rajatessa kuvaa", -"Error creating temporary image" => "Virhe luotaessa väliaikaista kuvaa", -"There is no error, the file uploaded with success" => "Ei virhettä, tiedosto lähetettiin onnistuneesti", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Lähetetyn tiedoston koko ylittää upload_max_filesize-asetuksen arvon php.ini-tiedostossa", -"The uploaded file was only partially uploaded" => "Lähetetty tiedosto lähetettiin vain osittain", -"No file was uploaded" => "Tiedostoa ei lähetetty", -"Missing a temporary folder" => "Tilapäiskansio puuttuu", -"Couldn't save temporary image: " => "Väliaikaiskuvan tallennus epäonnistui:", -"Couldn't load temporary image: " => "Väliaikaiskuvan lataus epäonnistui:", -"No file was uploaded. Unknown error" => "Tiedostoa ei lähetetty. Tuntematon virhe", -"Contacts" => "Yhteystiedot", -"Error" => "Virhe", -"Edit name" => "Muokkaa nimeä", -"No files selected for upload." => "Tiedostoja ei ole valittu lähetettäväksi.", -"Error loading profile picture." => "Virhe profiilikuvaa ladatessa.", -"Select type" => "Valitse tyyppi", -"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "Jotkin yhteystiedot on merkitty poistettaviksi, mutta niitä ei ole vielä poistettu. Odota hetki, että kyseiset yhteystiedot poistetaan.", -"Do you want to merge these address books?" => "Haluatko yhdistää nämä osoitekirjat?", -"Result: " => "Tulos: ", -" imported, " => " tuotu, ", -" failed." => " epäonnistui.", -"Displayname cannot be empty." => "Näyttönimi ei voi olla tyhjä.", -"Addressbook not found: " => "Osoitekirjaa ei löytynyt:", -"This is not your addressbook." => "Tämä ei ole osoitekirjasi.", -"Contact could not be found." => "Yhteystietoa ei löytynyt.", -"Jabber" => "Jabber", -"AIM" => "AIM", -"MSN" => "MSN", -"Twitter" => "Twitter", -"GoogleTalk" => "Google Talk", -"Facebook" => "Facebook", -"XMPP" => "XMPP", -"ICQ" => "ICQ", -"Yahoo" => "Yahoo", -"Skype" => "Skype", -"QQ" => "QQ", -"GaduGadu" => "GaduGadu", -"Work" => "Työ", -"Home" => "Koti", -"Other" => "Muu", -"Mobile" => "Mobiili", -"Text" => "Teksti", -"Voice" => "Ääni", -"Message" => "Viesti", -"Fax" => "Faksi", -"Video" => "Video", -"Pager" => "Hakulaite", -"Internet" => "Internet", -"Birthday" => "Syntymäpäivä", -"Business" => "Työ", -"Questions" => "Kysymykset", -"{name}'s Birthday" => "Henkilön {name} syntymäpäivä", -"Contact" => "Yhteystieto", -"Add Contact" => "Lisää yhteystieto", -"Import" => "Tuo", -"Settings" => "Asetukset", -"Addressbooks" => "Osoitekirjat", -"Close" => "Sulje", -"Keyboard shortcuts" => "Pikanäppäimet", -"Next contact in list" => "Seuraava yhteystieto luettelossa", -"Previous contact in list" => "Edellinen yhteystieto luettelossa", -"Next addressbook" => "Seuraava osoitekirja", -"Previous addressbook" => "Edellinen osoitekirja", -"Actions" => "Toiminnot", -"Refresh contacts list" => "Päivitä yhteystietoluettelo", -"Add new contact" => "Lisää uusi yhteystieto", -"Add new addressbook" => "Lisää uusi osoitekirja", -"Delete current contact" => "Poista nykyinen yhteystieto", -"Delete current photo" => "Poista nykyinen valokuva", -"Edit current photo" => "Muokkaa nykyistä valokuvaa", -"Upload new photo" => "Lähetä uusi valokuva", -"Select photo from ownCloud" => "Valitse valokuva ownCloudista", -"Edit name details" => "Muokkaa nimitietoja", -"Organization" => "Organisaatio", -"Delete" => "Poista", -"Nickname" => "Kutsumanimi", -"Enter nickname" => "Anna kutsumanimi", -"Web site" => "Verkkosivu", -"http://www.somesite.com" => "http://www.somesite.com", -"Go to web site" => "Siirry verkkosivulle", -"Groups" => "Ryhmät", -"Separate groups with commas" => "Erota ryhmät pilkuilla", -"Edit groups" => "Muokkaa ryhmiä", -"Preferred" => "Ensisijainen", -"Please specify a valid email address." => "Anna kelvollinen sähköpostiosoite.", -"Enter email address" => "Anna sähköpostiosoite", -"Mail to address" => "Lähetä sähköpostia", -"Delete email address" => "Poista sähköpostiosoite", -"Enter phone number" => "Anna puhelinnumero", -"Delete phone number" => "Poista puhelinnumero", -"Instant Messenger" => "Pikaviestin", -"View on map" => "Näytä kartalla", -"Edit address details" => "Muokkaa osoitetietoja", -"Add notes here." => "Lisää huomiot tähän.", -"Add field" => "Lisää kenttä", -"Phone" => "Puhelin", -"Email" => "Sähköposti", -"Address" => "Osoite", -"Note" => "Huomio", -"Download contact" => "Lataa yhteystieto", -"Delete contact" => "Poista yhteystieto", -"The temporary image has been removed from cache." => "Väliaikainen kuva on poistettu välimuistista.", -"Edit address" => "Muokkaa osoitetta", -"Type" => "Tyyppi", -"PO Box" => "Postilokero", -"Street address" => "Katuosoite", -"Street and number" => "Katu ja numero", -"Extended" => "Laajennettu", -"Apartment number etc." => "Asunnon numero jne.", -"City" => "Paikkakunta", -"Region" => "Alue", -"Zipcode" => "Postinumero", -"Postal code" => "Postinumero", -"Country" => "Maa", -"Addressbook" => "Osoitekirja", -"Given name" => "Etunimi", -"Additional names" => "Lisänimet", -"Family name" => "Sukunimi", -"Import a contacts file" => "Tuo yhteystiedon sisältävä tiedosto", -"Please choose the addressbook" => "Valitse osoitekirja", -"create a new addressbook" => "luo uusi osoitekirja", -"Name of new addressbook" => "Uuden osoitekirjan nimi", -"Importing contacts" => "Tuodaan yhteystietoja", -"You have no contacts in your addressbook." => "Osoitekirjassasi ei ole yhteystietoja.", -"Add contact" => "Lisää yhteystieto", -"Select Address Books" => "Valitse osoitekirjat", -"Enter name" => "Anna nimi", -"Enter description" => "Anna kuvaus", -"CardDAV syncing addresses" => "CardDAV-synkronointiosoitteet", -"iOS/OS X" => "iOS/OS X", -"Show CardDav link" => "Näytä CardDav-linkki", -"Show read-only VCF link" => "Näytä vain luku -muodossa oleva VCF-linkki", -"Share" => "Jaa", -"Download" => "Lataa", -"Edit" => "Muokkaa", -"New Address Book" => "Uusi osoitekirja", -"Name" => "Nimi", -"Description" => "Kuvaus", -"Save" => "Tallenna", -"Cancel" => "Peru", -"More..." => "Lisää..." -); diff --git a/apps/contacts/l10n/fr.php b/apps/contacts/l10n/fr.php deleted file mode 100644 index 787843f0f2d..00000000000 --- a/apps/contacts/l10n/fr.php +++ /dev/null @@ -1,229 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Des erreurs se sont produites lors de l'activation/désactivation du carnet d'adresses.", -"id is not set." => "L'ID n'est pas défini.", -"Cannot update addressbook with an empty name." => "Impossible de mettre à jour le carnet d'adresses avec un nom vide.", -"Error updating addressbook." => "Erreur lors de la mise à jour du carnet d'adresses.", -"No ID provided" => "Aucun ID fourni", -"Error setting checksum." => "Erreur lors du paramétrage du hachage.", -"No categories selected for deletion." => "Pas de catégories sélectionnées pour la suppression.", -"No address books found." => "Pas de carnet d'adresses trouvé.", -"No contacts found." => "Aucun contact trouvé.", -"There was an error adding the contact." => "Une erreur s'est produite lors de l'ajout du contact.", -"element name is not set." => "Le champ Nom n'est pas défini.", -"Could not parse contact: " => "Impossible de lire le contact :", -"Cannot add empty property." => "Impossible d'ajouter un champ vide.", -"At least one of the address fields has to be filled out." => "Au moins un des champs d'adresses doit être complété.", -"Trying to add duplicate property: " => "Ajout d'une propriété en double:", -"Missing IM parameter." => "Paramètre de Messagerie Instantanée manquants.", -"Unknown IM: " => "Messagerie Instantanée inconnue", -"Information about vCard is incorrect. Please reload the page." => "Les informations relatives à cette vCard sont incorrectes. Veuillez recharger la page.", -"Missing ID" => "ID manquant", -"Error parsing VCard for ID: \"" => "Erreur lors de l'analyse du VCard pour l'ID: \"", -"checksum is not set." => "L'hachage n'est pas défini.", -"Information about vCard is incorrect. Please reload the page: " => "L'informatiion à propos de la vCard est incorrect. Merci de rafraichir la page:", -"Something went FUBAR. " => "Quelque chose est FUBAR.", -"No contact ID was submitted." => "Aucun ID de contact envoyé", -"Error reading contact photo." => "Erreur de lecture de la photo du contact.", -"Error saving temporary file." => "Erreur de sauvegarde du fichier temporaire.", -"The loading photo is not valid." => "La photo chargée est invalide.", -"Contact ID is missing." => "L'ID du contact est manquant.", -"No photo path was submitted." => "Le chemin de la photo n'a pas été envoyé.", -"File doesn't exist:" => "Fichier inexistant:", -"Error loading image." => "Erreur lors du chargement de l'image.", -"Error getting contact object." => "Erreur lors de l'obtention de l'objet contact", -"Error getting PHOTO property." => "Erreur lors de l'obtention des propriétés de la photo", -"Error saving contact." => "Erreur de sauvegarde du contact", -"Error resizing image" => "Erreur de redimensionnement de l'image", -"Error cropping image" => "Erreur lors du rognage de l'image", -"Error creating temporary image" => "Erreur de création de l'image temporaire", -"Error finding image: " => "Erreur pour trouver l'image :", -"Error uploading contacts to storage." => "Erreur lors de l'envoi des contacts vers le stockage.", -"There is no error, the file uploaded with success" => "Il n'y a pas d'erreur, le fichier a été envoyé avec succes.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Le fichier envoyé dépasse la directive upload_max_filesize dans php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Le fichier envoyé dépasse la directive MAX_FILE_SIZE qui est spécifiée dans le formulaire HTML.", -"The uploaded file was only partially uploaded" => "Le fichier envoyé n'a été que partiellement envoyé.", -"No file was uploaded" => "Pas de fichier envoyé.", -"Missing a temporary folder" => "Absence de dossier temporaire.", -"Couldn't save temporary image: " => "Impossible de sauvegarder l'image temporaire :", -"Couldn't load temporary image: " => "Impossible de charger l'image temporaire :", -"No file was uploaded. Unknown error" => "Aucun fichier n'a été chargé. Erreur inconnue", -"Contacts" => "Contacts", -"Sorry, this functionality has not been implemented yet" => "Désolé cette fonctionnalité n'a pas encore été implémentée", -"Not implemented" => "Pas encore implémenté", -"Couldn't get a valid address." => "Impossible de trouver une adresse valide.", -"Error" => "Erreur", -"You do not have permission to add contacts to " => "Vous n'avez pas l'autorisation d'ajouter des contacts à", -"Please select one of your own address books." => "Veuillez sélectionner l'un de vos carnets d'adresses.", -"Permission error" => "Erreur de permission", -"This property has to be non-empty." => "Cette valeur ne doit pas être vide", -"Couldn't serialize elements." => "Impossible de sérialiser les éléments.", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' a été appelé sans type d'arguments. Merci de rapporter un bug à bugs.owncloud.org", -"Edit name" => "Éditer le nom", -"No files selected for upload." => "Aucun fichiers choisis pour être chargés", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Le fichier que vous tentez de charger dépasse la taille maximum de fichier autorisée sur ce serveur.", -"Error loading profile picture." => "Erreur pendant le chargement de la photo de profil.", -"Select type" => "Sélectionner un type", -"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "Certains contacts sont marqués pour être supprimés, mais ne le sont pas encore. Veuillez attendre que l'opération se termine.", -"Do you want to merge these address books?" => "Voulez-vous fusionner ces carnets d'adresses ?", -"Result: " => "Résultat :", -" imported, " => "importé,", -" failed." => "échoué.", -"Displayname cannot be empty." => "Le nom d'affichage ne peut pas être vide.", -"Addressbook not found: " => "Carnet d'adresse introuvable : ", -"This is not your addressbook." => "Ce n'est pas votre carnet d'adresses.", -"Contact could not be found." => "Ce contact n'a pu être trouvé.", -"Jabber" => "Jabber", -"AIM" => "Messagerie Instantanée", -"MSN" => "MSN", -"Twitter" => "Twitter", -"GoogleTalk" => "GoogleTalk", -"Facebook" => "Facebook", -"XMPP" => "XMPP", -"ICQ" => "ICQ", -"Yahoo" => "Yahoo", -"Skype" => "Skype", -"QQ" => "QQ", -"GaduGadu" => "GaduGadu", -"Work" => "Travail", -"Home" => "Domicile", -"Other" => "Autre", -"Mobile" => "Mobile", -"Text" => "Texte", -"Voice" => "Voix", -"Message" => "Message", -"Fax" => "Fax", -"Video" => "Vidéo", -"Pager" => "Bipeur", -"Internet" => "Internet", -"Birthday" => "Anniversaire", -"Business" => "Business", -"Call" => "Appel", -"Clients" => "Clients", -"Deliverer" => "Livreur", -"Holidays" => "Vacances", -"Ideas" => "Idées", -"Journey" => "Trajet", -"Jubilee" => "Jubilé", -"Meeting" => "Rendez-vous", -"Personal" => "Personnel", -"Projects" => "Projets", -"Questions" => "Questions", -"{name}'s Birthday" => "Anniversaire de {name}", -"Contact" => "Contact", -"You do not have the permissions to edit this contact." => "Vous n'avez pas l'autorisation de modifier ce contact.", -"You do not have the permissions to delete this contact." => "Vous n'avez pas l'autorisation de supprimer ce contact.", -"Add Contact" => "Ajouter un Contact", -"Import" => "Importer", -"Settings" => "Paramètres", -"Addressbooks" => "Carnets d'adresses", -"Close" => "Fermer", -"Keyboard shortcuts" => "Raccourcis clavier", -"Navigation" => "Navigation", -"Next contact in list" => "Contact suivant dans la liste", -"Previous contact in list" => "Contact précédent dans la liste", -"Expand/collapse current addressbook" => "Dé/Replier le carnet d'adresses courant", -"Next addressbook" => "Carnet d'adresses suivant", -"Previous addressbook" => "Carnet d'adresses précédent", -"Actions" => "Actions", -"Refresh contacts list" => "Actualiser la liste des contacts", -"Add new contact" => "Ajouter un nouveau contact", -"Add new addressbook" => "Ajouter un nouveau carnet d'adresses", -"Delete current contact" => "Effacer le contact sélectionné", -"Drop photo to upload" => "Glisser une photo pour l'envoi", -"Delete current photo" => "Supprimer la photo actuelle", -"Edit current photo" => "Editer la photo actuelle", -"Upload new photo" => "Envoyer une nouvelle photo", -"Select photo from ownCloud" => "Sélectionner une photo depuis ownCloud", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formatage personnalisé, Nom court, Nom complet, Inversé, Inversé avec virgule", -"Edit name details" => "Editer les noms", -"Organization" => "Société", -"Delete" => "Supprimer", -"Nickname" => "Surnom", -"Enter nickname" => "Entrer un surnom", -"Web site" => "Page web", -"http://www.somesite.com" => "http://www.somesite.com", -"Go to web site" => "Allez à la page web", -"dd-mm-yyyy" => "jj-mm-aaaa", -"Groups" => "Groupes", -"Separate groups with commas" => "Séparer les groupes avec des virgules", -"Edit groups" => "Editer les groupes", -"Preferred" => "Préféré", -"Please specify a valid email address." => "Merci d'entrer une adresse e-mail valide.", -"Enter email address" => "Entrer une adresse e-mail", -"Mail to address" => "Envoyer à l'adresse", -"Delete email address" => "Supprimer l'adresse e-mail", -"Enter phone number" => "Entrer un numéro de téléphone", -"Delete phone number" => "Supprimer le numéro de téléphone", -"Instant Messenger" => "Instant Messenger", -"Delete IM" => "Supprimer la Messagerie Instantanée", -"View on map" => "Voir sur une carte", -"Edit address details" => "Editer les adresses", -"Add notes here." => "Ajouter des notes ici.", -"Add field" => "Ajouter un champ.", -"Phone" => "Téléphone", -"Email" => "E-mail", -"Instant Messaging" => "Messagerie instantanée", -"Address" => "Adresse", -"Note" => "Note", -"Download contact" => "Télécharger le contact", -"Delete contact" => "Supprimer le contact", -"The temporary image has been removed from cache." => "L'image temporaire a été supprimée du cache.", -"Edit address" => "Editer l'adresse", -"Type" => "Type", -"PO Box" => "Boîte postale", -"Street address" => "Adresse postale", -"Street and number" => "Rue et numéro", -"Extended" => "Étendu", -"Apartment number etc." => "Numéro d'appartement, etc.", -"City" => "Ville", -"Region" => "Région", -"E.g. state or province" => "Ex: état ou province", -"Zipcode" => "Code postal", -"Postal code" => "Code postal", -"Country" => "Pays", -"Addressbook" => "Carnet d'adresses", -"Hon. prefixes" => "Préfixe hon.", -"Miss" => "Mlle", -"Ms" => "Mme", -"Mr" => "M.", -"Sir" => "Sir", -"Mrs" => "Mme", -"Dr" => "Dr", -"Given name" => "Prénom", -"Additional names" => "Nom supplémentaires", -"Family name" => "Nom de famille", -"Hon. suffixes" => "Suffixes hon.", -"J.D." => "J.D.", -"M.D." => "Dr.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Dr", -"Esq." => "Esq.", -"Jr." => "Jr.", -"Sn." => "Sn.", -"Import a contacts file" => "Importer un fichier de contacts", -"Please choose the addressbook" => "Choisissez le carnet d'adresses SVP", -"create a new addressbook" => "Créer un nouveau carnet d'adresses", -"Name of new addressbook" => "Nom du nouveau carnet d'adresses", -"Importing contacts" => "Importation des contacts", -"You have no contacts in your addressbook." => "Il n'y a pas de contact dans votre carnet d'adresses.", -"Add contact" => "Ajouter un contact", -"Select Address Books" => "Choix du carnet d'adresses", -"Enter name" => "Saisissez le nom", -"Enter description" => "Saisissez une description", -"CardDAV syncing addresses" => "Synchronisation des contacts CardDAV", -"more info" => "Plus d'infos", -"Primary address (Kontact et al)" => "Adresse principale", -"iOS/OS X" => "iOS/OS X", -"Show CardDav link" => "Afficher le lien CardDav", -"Show read-only VCF link" => "Afficher les liens VCF en lecture seule", -"Share" => "Partager", -"Download" => "Télécharger", -"Edit" => "Modifier", -"New Address Book" => "Nouveau Carnet d'adresses", -"Name" => "Nom", -"Description" => "Description", -"Save" => "Sauvegarder", -"Cancel" => "Annuler", -"More..." => "Plus…" -); diff --git a/apps/contacts/l10n/gl.php b/apps/contacts/l10n/gl.php deleted file mode 100644 index f25219b22ce..00000000000 --- a/apps/contacts/l10n/gl.php +++ /dev/null @@ -1,157 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Produciuse un erro (des)activando a axenda.", -"id is not set." => "non se estableceu o id.", -"Cannot update addressbook with an empty name." => "Non se pode actualizar a libreta de enderezos sen completar o nome.", -"Error updating addressbook." => "Produciuse un erro actualizando a axenda.", -"No ID provided" => "Non se proveeu ID", -"Error setting checksum." => "Erro establecendo a suma de verificación", -"No categories selected for deletion." => "Non se seleccionaron categorías para borrado.", -"No address books found." => "Non se atoparon libretas de enderezos.", -"No contacts found." => "Non se atoparon contactos.", -"There was an error adding the contact." => "Produciuse un erro engadindo o contacto.", -"element name is not set." => "non se nomeou o elemento.", -"Cannot add empty property." => "Non se pode engadir unha propiedade baleira.", -"At least one of the address fields has to be filled out." => "Polo menos un dos campos do enderezo ten que ser cuberto.", -"Trying to add duplicate property: " => "Tentando engadir propiedade duplicada: ", -"Information about vCard is incorrect. Please reload the page." => "A información sobre a vCard é incorrecta. Por favor volva cargar a páxina.", -"Missing ID" => "ID perdido", -"Error parsing VCard for ID: \"" => "Erro procesando a VCard para o ID: \"", -"checksum is not set." => "non se estableceu a suma de verificación.", -"Information about vCard is incorrect. Please reload the page: " => "A información sobre a vCard é incorrecta. Por favor, recargue a páxina: ", -"No contact ID was submitted." => "Non se enviou ningún ID de contacto.", -"Error reading contact photo." => "Erro lendo a fotografía do contacto.", -"Error saving temporary file." => "Erro gardando o ficheiro temporal.", -"The loading photo is not valid." => "A fotografía cargada non é válida.", -"Contact ID is missing." => "Falta o ID do contacto.", -"No photo path was submitted." => "Non se enviou a ruta a unha foto.", -"File doesn't exist:" => "O ficheiro non existe:", -"Error loading image." => "Erro cargando imaxe.", -"Error getting contact object." => "Erro obtendo o obxeto contacto.", -"Error getting PHOTO property." => "Erro obtendo a propiedade PHOTO.", -"Error saving contact." => "Erro gardando o contacto.", -"Error resizing image" => "Erro cambiando o tamaño da imaxe", -"Error cropping image" => "Erro recortando a imaxe", -"Error creating temporary image" => "Erro creando a imaxe temporal", -"Error finding image: " => "Erro buscando a imaxe: ", -"Error uploading contacts to storage." => "Erro subindo os contactos ao almacén.", -"There is no error, the file uploaded with success" => "Non houbo erros, o ficheiro subeuse con éxito", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "O ficheiro subido supera a directiva upload_max_filesize no php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O ficheiro subido supera a directiva MAX_FILE_SIZE especificada no formulario HTML", -"The uploaded file was only partially uploaded" => "O ficheiro so foi parcialmente subido", -"No file was uploaded" => "Non se subeu ningún ficheiro", -"Missing a temporary folder" => "Falta o cartafol temporal", -"Couldn't save temporary image: " => "Non se puido gardar a imaxe temporal: ", -"Couldn't load temporary image: " => "Non se puido cargar a imaxe temporal: ", -"No file was uploaded. Unknown error" => "Non se subeu ningún ficheiro. Erro descoñecido.", -"Contacts" => "Contactos", -"Sorry, this functionality has not been implemented yet" => "Sentímolo, esta función aínda non foi implementada.", -"Not implemented" => "Non implementada.", -"Couldn't get a valid address." => "Non se puido obter un enderezo de correo válido.", -"Error" => "Erro", -"This property has to be non-empty." => "Esta propiedade non pode quedar baldeira.", -"Couldn't serialize elements." => "Non se puido serializar os elementos.", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' chamado sen argumento. Por favor, informe en bugs.owncloud.org", -"Edit name" => "Editar nome", -"No files selected for upload." => "Sen ficheiros escollidos para subir.", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "O ficheiro que tenta subir supera o tamaño máximo permitido neste servidor.", -"Select type" => "Seleccione tipo", -"Result: " => "Resultado: ", -" imported, " => " importado, ", -" failed." => " fallou.", -"This is not your addressbook." => "Esta non é a súa axenda.", -"Contact could not be found." => "Non se atopou o contacto.", -"Work" => "Traballo", -"Home" => "Casa", -"Mobile" => "Móbil", -"Text" => "Texto", -"Voice" => "Voz", -"Message" => "Mensaxe", -"Fax" => "Fax", -"Video" => "Vídeo", -"Pager" => "Paxinador", -"Internet" => "Internet", -"Birthday" => "Aniversario", -"{name}'s Birthday" => "Cumpleanos de {name}", -"Contact" => "Contacto", -"Add Contact" => "Engadir contacto", -"Import" => "Importar", -"Addressbooks" => "Axendas", -"Close" => "Pechar", -"Drop photo to upload" => "Solte a foto a subir", -"Delete current photo" => "Borrar foto actual", -"Edit current photo" => "Editar a foto actual", -"Upload new photo" => "Subir unha nova foto", -"Select photo from ownCloud" => "Escoller foto desde ownCloud", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formato personalizado, Nome corto, Nome completo, Inverso ou Inverso con coma", -"Edit name details" => "Editar detalles do nome", -"Organization" => "Organización", -"Delete" => "Eliminar", -"Nickname" => "Apodo", -"Enter nickname" => "Introuza apodo", -"dd-mm-yyyy" => "dd-mm-yyyy", -"Groups" => "Grupos", -"Separate groups with commas" => "Separe grupos con comas", -"Edit groups" => "Editar grupos", -"Preferred" => "Preferido", -"Please specify a valid email address." => "Por favor indique un enderezo de correo electrónico válido.", -"Enter email address" => "Introduza enderezo de correo electrónico", -"Mail to address" => "Correo ao enderezo", -"Delete email address" => "Borrar enderezo de correo electrónico", -"Enter phone number" => "Introducir número de teléfono", -"Delete phone number" => "Borrar número de teléfono", -"View on map" => "Ver no mapa", -"Edit address details" => "Editar detalles do enderezo", -"Add notes here." => "Engadir aquí as notas.", -"Add field" => "Engadir campo", -"Phone" => "Teléfono", -"Email" => "Correo electrónico", -"Address" => "Enderezo", -"Note" => "Nota", -"Download contact" => "Descargar contacto", -"Delete contact" => "Borrar contacto", -"The temporary image has been removed from cache." => "A imaxe temporal foi eliminada da caché.", -"Edit address" => "Editar enderezo", -"Type" => "Escribir", -"PO Box" => "Apartado de correos", -"Extended" => "Ampliado", -"City" => "Cidade", -"Region" => "Autonomía", -"Zipcode" => "Código postal", -"Country" => "País", -"Addressbook" => "Axenda", -"Hon. prefixes" => "Prefixos honoríficos", -"Miss" => "Srta", -"Ms" => "Sra/Srta", -"Mr" => "Sr", -"Sir" => "Sir", -"Mrs" => "Sra", -"Dr" => "Dr", -"Given name" => "Apodo", -"Additional names" => "Nomes adicionais", -"Family name" => "Nome familiar", -"Hon. suffixes" => "Sufixos honorarios", -"J.D." => "J.D.", -"M.D." => "M.D.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Ph.D.", -"Esq." => "Esq.", -"Jr." => "Jr.", -"Sn." => "Sn.", -"Import a contacts file" => "Importar un ficheiro de contactos", -"Please choose the addressbook" => "Por favor escolla unha libreta de enderezos", -"create a new addressbook" => "crear unha nova libreta de enderezos", -"Name of new addressbook" => "Nome da nova libreta de enderezos", -"Importing contacts" => "Importando contactos", -"You have no contacts in your addressbook." => "Non ten contactos na súa libreta de enderezos.", -"Add contact" => "Engadir contacto", -"CardDAV syncing addresses" => "Enderezos CardDAV a sincronizar", -"more info" => "máis información", -"Primary address (Kontact et al)" => "Enderezo primario (Kontact et al)", -"iOS/OS X" => "iOS/OS X", -"Download" => "Descargar", -"Edit" => "Editar", -"New Address Book" => "Nova axenda", -"Save" => "Gardar", -"Cancel" => "Cancelar" -); diff --git a/apps/contacts/l10n/he.php b/apps/contacts/l10n/he.php deleted file mode 100644 index b224403ad22..00000000000 --- a/apps/contacts/l10n/he.php +++ /dev/null @@ -1,135 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "שגיאה בהפעלה או בנטרול פנקס הכתובות.", -"id is not set." => "מספר מזהה לא נקבע.", -"Cannot update addressbook with an empty name." => "אי אפשר לעדכן ספר כתובות ללא שם", -"Error updating addressbook." => "שגיאה בעדכון פנקס הכתובות.", -"No ID provided" => "לא צוין מזהה", -"Error setting checksum." => "שגיאה בהגדרת נתוני הביקורת.", -"No categories selected for deletion." => "לא נבחור קטגוריות למחיקה.", -"No address books found." => "לא נמצאו פנקסי כתובות.", -"No contacts found." => "לא נמצאו אנשי קשר.", -"There was an error adding the contact." => "אירעה שגיאה בעת הוספת איש הקשר.", -"element name is not set." => "שם האלמנט לא נקבע.", -"Cannot add empty property." => "לא ניתן להוסיף מאפיין ריק.", -"At least one of the address fields has to be filled out." => "יש למלא לפחות אחד משדות הכתובת.", -"Trying to add duplicate property: " => "ניסיון להוספת מאפיין כפול: ", -"Information about vCard is incorrect. Please reload the page." => "המידע אודות vCard אינו נכון. נא לטעון מחדש את הדף.", -"Missing ID" => "מזהה חסר", -"Error parsing VCard for ID: \"" => "שגיאה בפענוח ה VCard עבור מספר המזהה: \"", -"checksum is not set." => "סיכום ביקורת לא נקבע.", -"Information about vCard is incorrect. Please reload the page: " => "המידע עבור ה vCard אינו נכון. אנא טען את העמוד: ", -"Something went FUBAR. " => "משהו לא התנהל כצפוי.", -"No contact ID was submitted." => "מספר מזהה של אישר הקשר לא נשלח.", -"Error reading contact photo." => "שגיאה בקריאת תמונת איש הקשר.", -"Error saving temporary file." => "שגיאה בשמירת קובץ זמני.", -"The loading photo is not valid." => "התמונה הנטענת אינה תקנית.", -"Contact ID is missing." => "מספר מזהה של אישר הקשר חסר.", -"No photo path was submitted." => "כתובת התמונה לא נשלחה", -"File doesn't exist:" => "קובץ לא קיים:", -"Error loading image." => "שגיאה בטעינת התמונה.", -"Error getting contact object." => "שגיאה בקבלת אוביאקט איש הקשר", -"Error getting PHOTO property." => "שגיאה בקבלת מידע של תמונה", -"Error saving contact." => "שגיאה בשמירת איש הקשר", -"Error resizing image" => "שגיאה בשינוי גודל התמונה", -"Error uploading contacts to storage." => "התרשה שגיאה בהעלאת אנשי הקשר לאכסון.", -"There is no error, the file uploaded with success" => "לא התרחשה שגיאה, הקובץ הועלה בהצלחה", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "גודל הקובץ שהועלה גדול מהערך upload_max_filesize שמוגדר בקובץ php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "הקובץ שהועלה גדוך מהערך MAX_FILE_SIZE שהוגדר בתופס HTML", -"The uploaded file was only partially uploaded" => "הקובץ הועלה באופן חלקי בלבד", -"No file was uploaded" => "שום קובץ לא הועלה", -"Missing a temporary folder" => "תקיה זמנית חסרה", -"Contacts" => "אנשי קשר", -"This is not your addressbook." => "זהו אינו ספר הכתובות שלך", -"Contact could not be found." => "לא ניתן לאתר איש קשר", -"Work" => "עבודה", -"Home" => "בית", -"Mobile" => "נייד", -"Text" => "טקסט", -"Voice" => "קולי", -"Message" => "הודעה", -"Fax" => "פקס", -"Video" => "וידאו", -"Pager" => "זימונית", -"Internet" => "אינטרנט", -"Birthday" => "יום הולדת", -"{name}'s Birthday" => "יום ההולדת של {name}", -"Contact" => "איש קשר", -"Add Contact" => "הוספת איש קשר", -"Import" => "יבא", -"Addressbooks" => "פנקסי כתובות", -"Drop photo to upload" => "גרור ושחרר תמונה בשביל להעלות", -"Delete current photo" => "מחק תמונה נוכחית", -"Edit current photo" => "ערוך תמונה נוכחית", -"Upload new photo" => "העלה תמונה חדשה", -"Select photo from ownCloud" => "בחר תמונה מ ownCloud", -"Edit name details" => "ערוך פרטי שם", -"Organization" => "ארגון", -"Delete" => "מחיקה", -"Nickname" => "כינוי", -"Enter nickname" => "הכנס כינוי", -"dd-mm-yyyy" => "dd-mm-yyyy", -"Groups" => "קבוצות", -"Separate groups with commas" => "הפרד קבוצות עם פסיקים", -"Edit groups" => "ערוך קבוצות", -"Preferred" => "מועדף", -"Please specify a valid email address." => "אנא הזן כתובת דוא\"ל חוקית", -"Enter email address" => "הזן כתובת דוא\"ל", -"Mail to address" => "כתובת", -"Delete email address" => "מחק כתובת דוא\"ל", -"Enter phone number" => "הכנס מספר טלפון", -"Delete phone number" => "מחק מספר טלפון", -"View on map" => "ראה במפה", -"Edit address details" => "ערוך פרטי כתובת", -"Add notes here." => "הוסף הערות כאן.", -"Add field" => "הוסף שדה", -"Phone" => "טלפון", -"Email" => "דואר אלקטרוני", -"Address" => "כתובת", -"Note" => "הערה", -"Download contact" => "הורדת איש קשר", -"Delete contact" => "מחיקת איש קשר", -"Edit address" => "ערוך כתובת", -"Type" => "סוג", -"PO Box" => "תא דואר", -"Extended" => "מורחב", -"City" => "עיר", -"Region" => "אזור", -"Zipcode" => "מיקוד", -"Country" => "מדינה", -"Addressbook" => "פנקס כתובות", -"Hon. prefixes" => "קידומות שם", -"Miss" => "גב'", -"Ms" => "גב'", -"Mr" => "מר'", -"Sir" => "אדון", -"Mrs" => "גב'", -"Dr" => "ד\"ר", -"Given name" => "שם", -"Additional names" => "שמות נוספים", -"Family name" => "שם משפחה", -"Hon. suffixes" => "סיומות שם", -"J.D." => "J.D.", -"M.D." => "M.D.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Ph.D.", -"Esq." => "Esq.", -"Jr." => "Jr.", -"Sn." => "Sn.", -"Import a contacts file" => "יבא קובץ אנשי קשר", -"Please choose the addressbook" => "אנא בחר ספר כתובות", -"create a new addressbook" => "צור ספר כתובות חדש", -"Name of new addressbook" => "שם ספר כתובות החדש", -"Importing contacts" => "מיבא אנשי קשר", -"You have no contacts in your addressbook." => "איך לך אנשי קשר בספר הכתובות", -"Add contact" => "הוסף איש קשר", -"CardDAV syncing addresses" => "CardDAV מסנכרן כתובות", -"more info" => "מידע נוסף", -"Primary address (Kontact et al)" => "כתובת ראשית", -"iOS/OS X" => "iOS/OS X", -"Download" => "הורדה", -"Edit" => "עריכה", -"New Address Book" => "פנקס כתובות חדש", -"Save" => "שמירה", -"Cancel" => "ביטול" -); diff --git a/apps/contacts/l10n/hr.php b/apps/contacts/l10n/hr.php deleted file mode 100644 index 769a6ced0fd..00000000000 --- a/apps/contacts/l10n/hr.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Pogreška pri (de)aktivaciji adresara.", -"id is not set." => "id nije postavljen.", -"Cannot update addressbook with an empty name." => "Ne mogu ažurirati adresar sa praznim nazivom.", -"Error updating addressbook." => "Pogreška pri ažuriranju adresara.", -"No ID provided" => "Nema dodijeljenog ID identifikatora", -"Error setting checksum." => "Pogreška pri postavljanju checksuma.", -"No categories selected for deletion." => "Niti jedna kategorija nije odabrana za brisanje.", -"No address books found." => "Nema adresara.", -"No contacts found." => "Nema kontakata.", -"There was an error adding the contact." => "Dogodila se pogreška prilikom dodavanja kontakta.", -"element name is not set." => "naziv elementa nije postavljen.", -"Cannot add empty property." => "Prazno svojstvo se ne može dodati.", -"At least one of the address fields has to be filled out." => "Morate ispuniti barem jedno od adresnih polja.", -"Trying to add duplicate property: " => "Pokušali ste dodati duplo svojstvo:", -"Information about vCard is incorrect. Please reload the page." => "Informacija o vCard je neispravna. Osvježite stranicu.", -"Missing ID" => "Nedostupan ID identifikator", -"Error parsing VCard for ID: \"" => "Pogreška pri raščlanjivanju VCard za ID:", -"checksum is not set." => "checksum nije postavljen.", -"Information about vCard is incorrect. Please reload the page: " => "Informacije o VCard su pogrešne. Molimo, učitajte ponovno stranicu:", -"Something went FUBAR. " => "Nešto je otišlo... krivo...", -"No contact ID was submitted." => "ID kontakta nije podnešen.", -"Error reading contact photo." => "Pogreška pri čitanju kontakt fotografije.", -"Error saving temporary file." => "Pogreška pri spremanju privremene datoteke.", -"The loading photo is not valid." => "Fotografija nije valjana.", -"Contact ID is missing." => "ID kontakta nije dostupan.", -"No photo path was submitted." => "Putanja do fotografije nije podnešena.", -"File doesn't exist:" => "Datoteka ne postoji:", -"Error loading image." => "Pogreška pri učitavanju slike.", -"Error uploading contacts to storage." => "Pogreška pri slanju kontakata.", -"There is no error, the file uploaded with success" => "Nema pogreške, datoteka je poslana uspješno.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Veličina poslane datoteke prelazi veličinu prikazanu u upload_max_filesize direktivi u konfiguracijskoj datoteci php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Poslana datoteka prelazi veličinu prikazanu u MAX_FILE_SIZE direktivi u HTML formi", -"The uploaded file was only partially uploaded" => "Poslana datoteka je parcijalno poslana", -"No file was uploaded" => "Datoteka nije poslana", -"Missing a temporary folder" => "Nedostaje privremeni direktorij", -"Contacts" => "Kontakti", -"This is not your addressbook." => "Ovo nije vaš adresar.", -"Contact could not be found." => "Kontakt ne postoji.", -"Work" => "Posao", -"Home" => "Kuća", -"Mobile" => "Mobitel", -"Text" => "Tekst", -"Voice" => "Glasovno", -"Message" => "Poruka", -"Fax" => "Fax", -"Video" => "Video", -"Pager" => "Pager", -"Internet" => "Internet", -"Birthday" => "Rođendan", -"{name}'s Birthday" => "{name} Rođendan", -"Contact" => "Kontakt", -"Add Contact" => "Dodaj kontakt", -"Import" => "Uvezi", -"Addressbooks" => "Adresari", -"Drop photo to upload" => "Dovucite fotografiju za slanje", -"Edit current photo" => "Uredi trenutnu sliku", -"Edit name details" => "Uredi detalje imena", -"Organization" => "Organizacija", -"Delete" => "Obriši", -"Nickname" => "Nadimak", -"Enter nickname" => "Unesi nadimank", -"dd-mm-yyyy" => "dd-mm-yyyy", -"Groups" => "Grupe", -"Edit groups" => "Uredi grupe", -"Preferred" => "Preferirano", -"Enter email address" => "Unesi email adresu", -"Enter phone number" => "Unesi broj telefona", -"View on map" => "Prikaži na karti", -"Edit address details" => "Uredi detalje adrese", -"Add notes here." => "Dodaj bilješke ovdje.", -"Add field" => "Dodaj polje", -"Phone" => "Telefon", -"Email" => "E-mail", -"Address" => "Adresa", -"Note" => "Bilješka", -"Download contact" => "Preuzmi kontakt", -"Delete contact" => "Izbriši kontakt", -"Edit address" => "Uredi adresu", -"Type" => "Tip", -"PO Box" => "Poštanski Pretinac", -"Extended" => "Prošireno", -"City" => "Grad", -"Region" => "Regija", -"Zipcode" => "Poštanski broj", -"Country" => "Država", -"Addressbook" => "Adresar", -"Download" => "Preuzimanje", -"Edit" => "Uredi", -"New Address Book" => "Novi adresar", -"Save" => "Spremi", -"Cancel" => "Prekini" -); diff --git a/apps/contacts/l10n/hu_HU.php b/apps/contacts/l10n/hu_HU.php deleted file mode 100644 index 4febe9c29f2..00000000000 --- a/apps/contacts/l10n/hu_HU.php +++ /dev/null @@ -1,158 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Címlista (de)aktiválása sikertelen", -"id is not set." => "ID nincs beállítva", -"Cannot update addressbook with an empty name." => "Üres névvel nem frissíthető a címlista", -"Error updating addressbook." => "Hiba a címlista frissítésekor", -"No ID provided" => "Nincs ID megadva", -"Error setting checksum." => "Hiba az ellenőrzőösszeg beállításakor", -"No categories selected for deletion." => "Nincs kiválasztva törlendő kategória", -"No address books found." => "Nem található címlista", -"No contacts found." => "Nem található kontakt", -"There was an error adding the contact." => "Hiba a kapcsolat hozzáadásakor", -"element name is not set." => "az elem neve nincs beállítva", -"Cannot add empty property." => "Nem adható hozzá üres tulajdonság", -"At least one of the address fields has to be filled out." => "Legalább egy címmező kitöltendő", -"Trying to add duplicate property: " => "Kísérlet dupla tulajdonság hozzáadására: ", -"Information about vCard is incorrect. Please reload the page." => "A vCardról szóló információ helytelen. Töltsd újra az oldalt.", -"Missing ID" => "Hiányzó ID", -"Error parsing VCard for ID: \"" => "VCard elemzése sikertelen a következő ID-hoz: \"", -"checksum is not set." => "az ellenőrzőösszeg nincs beállítva", -"Information about vCard is incorrect. Please reload the page: " => "Helytelen információ a vCardról. Töltse újra az oldalt: ", -"Something went FUBAR. " => "Valami balul sült el.", -"No contact ID was submitted." => "Nincs ID megadva a kontakthoz", -"Error reading contact photo." => "A kontakt képének beolvasása sikertelen", -"Error saving temporary file." => "Ideiglenes fájl mentése sikertelen", -"The loading photo is not valid." => "A kép érvénytelen", -"Contact ID is missing." => "Hiányzik a kapcsolat ID", -"No photo path was submitted." => "Nincs fénykép-útvonal megadva", -"File doesn't exist:" => "A fájl nem létezik:", -"Error loading image." => "Kép betöltése sikertelen", -"Error getting contact object." => "A kontakt-objektum feldolgozása sikertelen", -"Error getting PHOTO property." => "A PHOTO-tulajdonság feldolgozása sikertelen", -"Error saving contact." => "A kontakt mentése sikertelen", -"Error resizing image" => "Képméretezés sikertelen", -"Error cropping image" => "Képvágás sikertelen", -"Error creating temporary image" => "Ideiglenes kép létrehozása sikertelen", -"Error finding image: " => "A kép nem található", -"Error uploading contacts to storage." => "Hiba a kapcsolatok feltöltésekor", -"There is no error, the file uploaded with success" => "Nincs hiba, a fájl sikeresen feltöltődött", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "A feltöltött fájl mérete meghaladja az upload_max_filesize értéket a php.ini-ben", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "A feltöltött fájl mérete meghaladja a HTML form-ban megadott MAX_FILE_SIZE értéket", -"The uploaded file was only partially uploaded" => "A fájl csak részlegesen lett feltöltve", -"No file was uploaded" => "Nincs feltöltött fájl", -"Missing a temporary folder" => "Hiányzik az ideiglenes könyvtár", -"Couldn't save temporary image: " => "Ideiglenes kép létrehozása sikertelen", -"Couldn't load temporary image: " => "Ideiglenes kép betöltése sikertelen", -"No file was uploaded. Unknown error" => "Nem történt feltöltés. Ismeretlen hiba", -"Contacts" => "Kapcsolatok", -"Sorry, this functionality has not been implemented yet" => "Sajnáljuk, ez a funkció még nem támogatott", -"Not implemented" => "Nem támogatott", -"Couldn't get a valid address." => "Érvényes cím lekérése sikertelen", -"Error" => "Hiba", -"This property has to be non-empty." => "Ezt a tulajdonságot muszáj kitölteni", -"Couldn't serialize elements." => "Sorbarakás sikertelen", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "A 'deleteProperty' argumentum nélkül lett meghívva. Kérjük, jelezze a hibát.", -"Edit name" => "Név szerkesztése", -"No files selected for upload." => "Nincs kiválasztva feltöltendő fájl", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "A feltöltendő fájl mérete meghaladja a megengedett mértéket", -"Select type" => "Típus kiválasztása", -"Result: " => "Eredmény: ", -" imported, " => " beimportálva, ", -" failed." => " sikertelen", -"This is not your addressbook." => "Ez nem a te címjegyzéked.", -"Contact could not be found." => "Kapcsolat nem található.", -"Work" => "Munkahelyi", -"Home" => "Otthoni", -"Mobile" => "Mobiltelefonszám", -"Text" => "Szöveg", -"Voice" => "Hang", -"Message" => "Üzenet", -"Fax" => "Fax", -"Video" => "Video", -"Pager" => "Személyhívó", -"Internet" => "Internet", -"Birthday" => "Születésnap", -"{name}'s Birthday" => "{name} születésnapja", -"Contact" => "Kapcsolat", -"Add Contact" => "Kapcsolat hozzáadása", -"Import" => "Import", -"Addressbooks" => "Címlisták", -"Close" => "Bezár", -"Drop photo to upload" => "Húzza ide a feltöltendő képet", -"Delete current photo" => "Aktuális kép törlése", -"Edit current photo" => "Aktuális kép szerkesztése", -"Upload new photo" => "Új kép feltöltése", -"Select photo from ownCloud" => "Kép kiválasztása ownCloud-ból", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formátum egyedi, Rövid név, Teljes név, Visszafelé vagy Visszafelé vesszővel", -"Edit name details" => "Név részleteinek szerkesztése", -"Organization" => "Szervezet", -"Delete" => "Törlés", -"Nickname" => "Becenév", -"Enter nickname" => "Becenév megadása", -"dd-mm-yyyy" => "yyyy-mm-dd", -"Groups" => "Csoportok", -"Separate groups with commas" => "Vesszővel válassza el a csoportokat", -"Edit groups" => "Csoportok szerkesztése", -"Preferred" => "Előnyben részesített", -"Please specify a valid email address." => "Adjon meg érvényes email címet", -"Enter email address" => "Adja meg az email címet", -"Mail to address" => "Postai cím", -"Delete email address" => "Email cím törlése", -"Enter phone number" => "Adja meg a telefonszámot", -"Delete phone number" => "Telefonszám törlése", -"View on map" => "Megtekintés a térképen", -"Edit address details" => "Cím részleteinek szerkesztése", -"Add notes here." => "Megjegyzések", -"Add field" => "Mező hozzáadása", -"Phone" => "Telefonszám", -"Email" => "E-mail", -"Address" => "Cím", -"Note" => "Jegyzet", -"Download contact" => "Kapcsolat letöltése", -"Delete contact" => "Kapcsolat törlése", -"The temporary image has been removed from cache." => "Az ideiglenes kép el lett távolítva a gyorsítótárból", -"Edit address" => "Cím szerkesztése", -"Type" => "Típus", -"PO Box" => "Postafiók", -"Extended" => "Kiterjesztett", -"City" => "Város", -"Region" => "Megye", -"Zipcode" => "Irányítószám", -"Country" => "Ország", -"Addressbook" => "Címlista", -"Hon. prefixes" => "Előtag", -"Miss" => "Miss", -"Ms" => "Ms", -"Mr" => "Mr", -"Sir" => "Sir", -"Mrs" => "Mrs", -"Dr" => "Dr.", -"Given name" => "Teljes név", -"Additional names" => "További nevek", -"Family name" => "Családnév", -"Hon. suffixes" => "Utótag", -"J.D." => "J.D.", -"M.D." => "M.D.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Ph.D.", -"Esq." => "Esq.", -"Jr." => "Ifj.", -"Sn." => "Id.", -"Import a contacts file" => "Kapcsolat-fájl importálása", -"Please choose the addressbook" => "Válassza ki a címlistát", -"create a new addressbook" => "Címlista létrehozása", -"Name of new addressbook" => "Új címlista neve", -"Importing contacts" => "Kapcsolatok importálása", -"You have no contacts in your addressbook." => "Nincsenek kapcsolatok a címlistában", -"Add contact" => "Kapcsolat hozzáadása", -"CardDAV syncing addresses" => "CardDAV szinkronizációs címek", -"more info" => "további információ", -"Primary address (Kontact et al)" => "Elsődleges cím", -"iOS/OS X" => "iOS/OS X", -"Download" => "Letöltés", -"Edit" => "Szerkesztés", -"New Address Book" => "Új címlista", -"Save" => "Mentés", -"Cancel" => "Mégsem" -); diff --git a/apps/contacts/l10n/ia.php b/apps/contacts/l10n/ia.php deleted file mode 100644 index 338ceb7154f..00000000000 --- a/apps/contacts/l10n/ia.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php $TRANSLATIONS = array( -"No address books found." => "Nulle adressario trovate", -"No contacts found." => "Nulle contactos trovate.", -"Cannot add empty property." => "Non pote adder proprietate vacue.", -"Error saving temporary file." => "Error durante le scriptura in le file temporari", -"Error loading image." => "Il habeva un error durante le cargamento del imagine.", -"No file was uploaded" => "Nulle file esseva incargate.", -"Missing a temporary folder" => "Manca un dossier temporari", -"Contacts" => "Contactos", -"This is not your addressbook." => "Iste non es tu libro de adresses", -"Contact could not be found." => "Contacto non poterea esser legite", -"Work" => "Travalio", -"Home" => "Domo", -"Mobile" => "Mobile", -"Text" => "Texto", -"Voice" => "Voce", -"Message" => "Message", -"Fax" => "Fax", -"Video" => "Video", -"Pager" => "Pager", -"Internet" => "Internet", -"Birthday" => "Anniversario", -"Contact" => "Contacto", -"Add Contact" => "Adder contacto", -"Import" => "Importar", -"Addressbooks" => "Adressarios", -"Delete current photo" => "Deler photo currente", -"Edit current photo" => "Modificar photo currente", -"Upload new photo" => "Incargar nove photo", -"Select photo from ownCloud" => "Seliger photo ex ownCloud", -"Organization" => "Organisation", -"Delete" => "Deler", -"Nickname" => "Pseudonymo", -"Enter nickname" => "Inserer pseudonymo", -"Groups" => "Gruppos", -"Edit groups" => "Modificar gruppos", -"Preferred" => "Preferite", -"Enter email address" => "Entrar un adresse de e-posta", -"Delete email address" => "Deler adresse de E-posta", -"Enter phone number" => "Entrar un numero de telephono", -"Delete phone number" => "Deler numero de telephono", -"View on map" => "Vider in un carta", -"Add notes here." => "Adder notas hic", -"Add field" => "Adder campo", -"Phone" => "Phono", -"Email" => "E-posta", -"Address" => "Adresse", -"Note" => "Nota", -"Download contact" => "Discargar contacto", -"Delete contact" => "Deler contacto", -"Edit address" => "Modificar adresses", -"Type" => "Typo", -"PO Box" => "Cassa postal", -"Extended" => "Extendite", -"City" => "Citate", -"Region" => "Region", -"Zipcode" => "Codice postal", -"Country" => "Pais", -"Addressbook" => "Adressario", -"Hon. prefixes" => "Prefixos honorific", -"Miss" => "Senioretta", -"Mr" => "Sr.", -"Mrs" => "Sra.", -"Dr" => "Dr.", -"Given name" => "Nomine date", -"Additional names" => "Nomines additional", -"Family name" => "Nomine de familia", -"Hon. suffixes" => "Suffixos honorific", -"Import a contacts file" => "Importar un file de contactos", -"Please choose the addressbook" => "Per favor selige le adressario", -"create a new addressbook" => "Crear un nove adressario", -"Name of new addressbook" => "Nomine del nove gruppo:", -"Add contact" => "Adder adressario", -"more info" => "plus info", -"iOS/OS X" => "iOS/OS X", -"Download" => "Discargar", -"Edit" => "Modificar", -"New Address Book" => "Nove adressario", -"Save" => "Salveguardar", -"Cancel" => "Cancellar" -); diff --git a/apps/contacts/l10n/it.php b/apps/contacts/l10n/it.php deleted file mode 100644 index 1f0e2e39554..00000000000 --- a/apps/contacts/l10n/it.php +++ /dev/null @@ -1,229 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Errore nel (dis)attivare la rubrica.", -"id is not set." => "ID non impostato.", -"Cannot update addressbook with an empty name." => "Impossibile aggiornare una rubrica senza nome.", -"Error updating addressbook." => "Errore durante l'aggiornamento della rubrica.", -"No ID provided" => "Nessun ID fornito", -"Error setting checksum." => "Errore di impostazione del codice di controllo.", -"No categories selected for deletion." => "Nessuna categoria selezionata per l'eliminazione.", -"No address books found." => "Nessuna rubrica trovata.", -"No contacts found." => "Nessun contatto trovato.", -"There was an error adding the contact." => "Si è verificato un errore nell'aggiunta del contatto.", -"element name is not set." => "il nome dell'elemento non è impostato.", -"Could not parse contact: " => "Impossibile elaborare il contatto: ", -"Cannot add empty property." => "Impossibile aggiungere una proprietà vuota.", -"At least one of the address fields has to be filled out." => "Deve essere inserito almeno un indirizzo.", -"Trying to add duplicate property: " => "P", -"Missing IM parameter." => "Parametro IM mancante.", -"Unknown IM: " => "IM sconosciuto:", -"Information about vCard is incorrect. Please reload the page." => "Informazioni sulla vCard non corrette. Ricarica la pagina.", -"Missing ID" => "ID mancante", -"Error parsing VCard for ID: \"" => "Errore in fase di elaborazione del file VCard per l'ID: \"", -"checksum is not set." => "il codice di controllo non è impostato.", -"Information about vCard is incorrect. Please reload the page: " => "Le informazioni della vCard non sono corrette. Ricarica la pagina: ", -"Something went FUBAR. " => "Qualcosa è andato storto. ", -"No contact ID was submitted." => "Nessun ID di contatto inviato.", -"Error reading contact photo." => "Errore di lettura della foto del contatto.", -"Error saving temporary file." => "Errore di salvataggio del file temporaneo.", -"The loading photo is not valid." => "La foto caricata non è valida.", -"Contact ID is missing." => "Manca l'ID del contatto.", -"No photo path was submitted." => "Non è stato inviato alcun percorso a una foto.", -"File doesn't exist:" => "Il file non esiste:", -"Error loading image." => "Errore di caricamento immagine.", -"Error getting contact object." => "Errore di recupero dell'oggetto contatto.", -"Error getting PHOTO property." => "Errore di recupero della proprietà FOTO.", -"Error saving contact." => "Errore di salvataggio del contatto.", -"Error resizing image" => "Errore di ridimensionamento dell'immagine", -"Error cropping image" => "Errore di ritaglio dell'immagine", -"Error creating temporary image" => "Errore durante la creazione dell'immagine temporanea", -"Error finding image: " => "Errore durante la ricerca dell'immagine: ", -"Error uploading contacts to storage." => "Errore di invio dei contatti in archivio.", -"There is no error, the file uploaded with success" => "Non ci sono errori, il file è stato inviato correttamente", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Il file inviato supera la direttiva upload_max_filesize nel php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Il file inviato supera la direttiva MAX_FILE_SIZE specificata nel modulo HTML", -"The uploaded file was only partially uploaded" => "Il file è stato inviato solo parzialmente", -"No file was uploaded" => "Nessun file è stato inviato", -"Missing a temporary folder" => "Manca una cartella temporanea", -"Couldn't save temporary image: " => "Impossibile salvare l'immagine temporanea: ", -"Couldn't load temporary image: " => "Impossibile caricare l'immagine temporanea: ", -"No file was uploaded. Unknown error" => "Nessun file è stato inviato. Errore sconosciuto", -"Contacts" => "Contatti", -"Sorry, this functionality has not been implemented yet" => "Siamo spiacenti, questa funzionalità non è stata ancora implementata", -"Not implemented" => "Non implementata", -"Couldn't get a valid address." => "Impossibile ottenere un indirizzo valido.", -"Error" => "Errore", -"You do not have permission to add contacts to " => "Non hai i permessi per aggiungere contatti a", -"Please select one of your own address books." => "Seleziona una delle tue rubriche.", -"Permission error" => "Errore relativo ai permessi", -"This property has to be non-empty." => "Questa proprietà non può essere vuota.", -"Couldn't serialize elements." => "Impossibile serializzare gli elementi.", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' invocata senza l'argomento di tipo. Segnalalo a bugs.owncloud.org", -"Edit name" => "Modifica il nome", -"No files selected for upload." => "Nessun file selezionato per l'invio", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Il file che stai cercando di inviare supera la dimensione massima per l'invio dei file su questo server.", -"Error loading profile picture." => "Errore durante il caricamento dell'immagine di profilo.", -"Select type" => "Seleziona il tipo", -"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "Alcuni contatti sono marcati per l'eliminazione, ma non sono stati ancora rimossi. Attendi fino al completamento dell'operazione.", -"Do you want to merge these address books?" => "Vuoi unire queste rubriche?", -"Result: " => "Risultato: ", -" imported, " => " importato, ", -" failed." => " non riuscito.", -"Displayname cannot be empty." => "Il nome visualizzato non può essere vuoto.", -"Addressbook not found: " => "Rubrica non trovata:", -"This is not your addressbook." => "Questa non è la tua rubrica.", -"Contact could not be found." => "Il contatto non può essere trovato.", -"Jabber" => "Jabber", -"AIM" => "AIM", -"MSN" => "MSN", -"Twitter" => "Twitter", -"GoogleTalk" => "GoogleTalk", -"Facebook" => "Facebook", -"XMPP" => "XMPP", -"ICQ" => "ICQ", -"Yahoo" => "Yahoo", -"Skype" => "Skype", -"QQ" => "QQ", -"GaduGadu" => "GaduGadu", -"Work" => "Lavoro", -"Home" => "Casa", -"Other" => "Altro", -"Mobile" => "Cellulare", -"Text" => "Testo", -"Voice" => "Voce", -"Message" => "Messaggio", -"Fax" => "Fax", -"Video" => "Video", -"Pager" => "Cercapersone", -"Internet" => "Internet", -"Birthday" => "Compleanno", -"Business" => "Lavoro", -"Call" => "Chiama", -"Clients" => "Client", -"Deliverer" => "Corriere", -"Holidays" => "Festività", -"Ideas" => "Idee", -"Journey" => "Viaggio", -"Jubilee" => "Anniversario", -"Meeting" => "Riunione", -"Personal" => "Personale", -"Projects" => "Progetti", -"Questions" => "Domande", -"{name}'s Birthday" => "Data di nascita di {name}", -"Contact" => "Contatto", -"You do not have the permissions to edit this contact." => "Non hai i permessi per modificare questo contatto.", -"You do not have the permissions to delete this contact." => "Non hai i permessi per eliminare questo contatto.", -"Add Contact" => "Aggiungi contatto", -"Import" => "Importa", -"Settings" => "Impostazioni", -"Addressbooks" => "Rubriche", -"Close" => "Chiudi", -"Keyboard shortcuts" => "Scorciatoie da tastiera", -"Navigation" => "Navigazione", -"Next contact in list" => "Contatto successivo in elenco", -"Previous contact in list" => "Contatto precedente in elenco", -"Expand/collapse current addressbook" => "Espandi/Contrai la rubrica corrente", -"Next addressbook" => "Rubrica successiva", -"Previous addressbook" => "Rubrica precedente", -"Actions" => "Azioni", -"Refresh contacts list" => "Aggiorna l'elenco dei contatti", -"Add new contact" => "Aggiungi un nuovo contatto", -"Add new addressbook" => "Aggiungi una nuova rubrica", -"Delete current contact" => "Elimina il contatto corrente", -"Drop photo to upload" => "Rilascia una foto da inviare", -"Delete current photo" => "Elimina la foto corrente", -"Edit current photo" => "Modifica la foto corrente", -"Upload new photo" => "Invia una nuova foto", -"Select photo from ownCloud" => "Seleziona la foto da ownCloud", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formato personalizzato, nome breve, nome completo, invertito o invertito con virgola", -"Edit name details" => "Modifica dettagli del nome", -"Organization" => "Organizzazione", -"Delete" => "Elimina", -"Nickname" => "Pseudonimo", -"Enter nickname" => "Inserisci pseudonimo", -"Web site" => "Sito web", -"http://www.somesite.com" => "http://www.somesite.com", -"Go to web site" => "Vai al sito web", -"dd-mm-yyyy" => "gg-mm-aaaa", -"Groups" => "Gruppi", -"Separate groups with commas" => "Separa i gruppi con virgole", -"Edit groups" => "Modifica gruppi", -"Preferred" => "Preferito", -"Please specify a valid email address." => "Specifica un indirizzo email valido", -"Enter email address" => "Inserisci indirizzo email", -"Mail to address" => "Invia per email", -"Delete email address" => "Elimina l'indirizzo email", -"Enter phone number" => "Inserisci il numero di telefono", -"Delete phone number" => "Elimina il numero di telefono", -"Instant Messenger" => "Client di messaggistica istantanea", -"Delete IM" => "Elimina IM", -"View on map" => "Visualizza sulla mappa", -"Edit address details" => "Modifica dettagli dell'indirizzo", -"Add notes here." => "Aggiungi qui le note.", -"Add field" => "Aggiungi campo", -"Phone" => "Telefono", -"Email" => "Email", -"Instant Messaging" => "Messaggistica istantanea", -"Address" => "Indirizzo", -"Note" => "Nota", -"Download contact" => "Scarica contatto", -"Delete contact" => "Elimina contatto", -"The temporary image has been removed from cache." => "L'immagine temporanea è stata rimossa dalla cache.", -"Edit address" => "Modifica indirizzo", -"Type" => "Tipo", -"PO Box" => "Casella postale", -"Street address" => "Indirizzo", -"Street and number" => "Via e numero", -"Extended" => "Esteso", -"Apartment number etc." => "Numero appartamento ecc.", -"City" => "Città", -"Region" => "Regione", -"E.g. state or province" => "Ad es. stato o provincia", -"Zipcode" => "CAP", -"Postal code" => "CAP", -"Country" => "Stato", -"Addressbook" => "Rubrica", -"Hon. prefixes" => "Prefissi onorifici", -"Miss" => "Sig.na", -"Ms" => "Sig.ra", -"Mr" => "Sig.", -"Sir" => "Sig.", -"Mrs" => "Sig.ra", -"Dr" => "Dott.", -"Given name" => "Nome", -"Additional names" => "Nomi aggiuntivi", -"Family name" => "Cognome", -"Hon. suffixes" => "Suffissi onorifici", -"J.D." => "J.D.", -"M.D." => "M.D.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Ph.D.", -"Esq." => "Esq.", -"Jr." => "Jr.", -"Sn." => "Sn.", -"Import a contacts file" => "Importa un file di contatti", -"Please choose the addressbook" => "Scegli la rubrica", -"create a new addressbook" => "crea una nuova rubrica", -"Name of new addressbook" => "Nome della nuova rubrica", -"Importing contacts" => "Importazione contatti", -"You have no contacts in your addressbook." => "Non hai contatti nella rubrica.", -"Add contact" => "Aggiungi contatto", -"Select Address Books" => "Seleziona rubriche", -"Enter name" => "Inserisci il nome", -"Enter description" => "Inserisci una descrizione", -"CardDAV syncing addresses" => "Indirizzi di sincronizzazione CardDAV", -"more info" => "altre informazioni", -"Primary address (Kontact et al)" => "Indirizzo principale (Kontact e altri)", -"iOS/OS X" => "iOS/OS X", -"Show CardDav link" => "Mostra collegamento CardDav", -"Show read-only VCF link" => "Mostra collegamento VCF in sola lettura", -"Share" => "Condividi", -"Download" => "Scarica", -"Edit" => "Modifica", -"New Address Book" => "Nuova rubrica", -"Name" => "Nome", -"Description" => "Descrizione", -"Save" => "Salva", -"Cancel" => "Annulla", -"More..." => "Altro..." -); diff --git a/apps/contacts/l10n/ja_JP.php b/apps/contacts/l10n/ja_JP.php deleted file mode 100644 index 9b5874d4597..00000000000 --- a/apps/contacts/l10n/ja_JP.php +++ /dev/null @@ -1,229 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "アドレス帳の有効/無効化に失敗しました。", -"id is not set." => "idが設定されていません。", -"Cannot update addressbook with an empty name." => "空白の名前でアドレス帳を更新することはできません。", -"Error updating addressbook." => "アドレス帳の更新に失敗しました。", -"No ID provided" => "IDが提供されていません", -"Error setting checksum." => "チェックサムの設定エラー。", -"No categories selected for deletion." => "削除するカテゴリが選択されていません。", -"No address books found." => "アドレス帳が見つかりません。", -"No contacts found." => "連絡先が見つかりません。", -"There was an error adding the contact." => "連絡先の追加でエラーが発生しました。", -"element name is not set." => "要素名が設定されていません。", -"Could not parse contact: " => "連絡先を解析できませんでした:", -"Cannot add empty property." => "項目の新規追加に失敗しました。", -"At least one of the address fields has to be filled out." => "住所の項目のうち1つは入力して下さい。", -"Trying to add duplicate property: " => "重複する属性を追加: ", -"Missing IM parameter." => "IMのパラメータが不足しています。", -"Unknown IM: " => "不明なIM:", -"Information about vCard is incorrect. Please reload the page." => "vCardの情報に誤りがあります。ページをリロードして下さい。", -"Missing ID" => "IDが見つかりません", -"Error parsing VCard for ID: \"" => "VCardからIDの抽出エラー: \"", -"checksum is not set." => "チェックサムが設定されていません。", -"Information about vCard is incorrect. Please reload the page: " => "vCardの情報が正しくありません。ページを再読み込みしてください: ", -"Something went FUBAR. " => "何かがFUBARへ移動しました。", -"No contact ID was submitted." => "連絡先IDは登録されませんでした。", -"Error reading contact photo." => "連絡先写真の読み込みエラー。", -"Error saving temporary file." => "一時ファイルの保存エラー。", -"The loading photo is not valid." => "写真の読み込みは無効です。", -"Contact ID is missing." => "連絡先 IDが見つかりません。", -"No photo path was submitted." => "写真のパスが登録されていません。", -"File doesn't exist:" => "ファイルが存在しません:", -"Error loading image." => "画像の読み込みエラー。", -"Error getting contact object." => "連絡先オブジェクトの取得エラー。", -"Error getting PHOTO property." => "写真属性の取得エラー。", -"Error saving contact." => "連絡先の保存エラー。", -"Error resizing image" => "画像のリサイズエラー", -"Error cropping image" => "画像の切り抜きエラー", -"Error creating temporary image" => "一時画像の生成エラー", -"Error finding image: " => "画像検索エラー: ", -"Error uploading contacts to storage." => "ストレージへの連絡先のアップロードエラー。", -"There is no error, the file uploaded with success" => "エラーはありません。ファイルのアップロードは成功しました", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "アップロードファイルは php.ini 内の upload_max_filesize の制限を超えています", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "アップロードファイルはHTMLフォームで指定された MAX_FILE_SIZE の制限を超えています", -"The uploaded file was only partially uploaded" => "アップロードファイルは一部分だけアップロードされました", -"No file was uploaded" => "ファイルはアップロードされませんでした", -"Missing a temporary folder" => "一時保存フォルダが見つかりません", -"Couldn't save temporary image: " => "一時的な画像の保存ができませんでした: ", -"Couldn't load temporary image: " => "一時的な画像の読み込みができませんでした: ", -"No file was uploaded. Unknown error" => "ファイルは何もアップロードされていません。不明なエラー", -"Contacts" => "連絡先", -"Sorry, this functionality has not been implemented yet" => "申し訳ありません。この機能はまだ実装されていません", -"Not implemented" => "未実装", -"Couldn't get a valid address." => "有効なアドレスを取得できませんでした。", -"Error" => "エラー", -"You do not have permission to add contacts to " => "連絡先を追加する権限がありません", -"Please select one of your own address books." => "アドレス帳を一つ選択してください", -"Permission error" => "権限エラー", -"This property has to be non-empty." => "この属性は空にできません。", -"Couldn't serialize elements." => "要素をシリアライズできませんでした。", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' は型の引数無しで呼び出されました。bugs.owncloud.org へ報告してください。", -"Edit name" => "名前を編集", -"No files selected for upload." => "アップロードするファイルが選択されていません。", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "アップロードしようとしているファイルは、このサーバの最大ファイルアップロードサイズを超えています。", -"Error loading profile picture." => "プロファイルの画像の読み込みエラー", -"Select type" => "タイプを選択", -"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "いくつかの連絡先が削除とマークされていますが、まだ削除されていません。削除するまでお待ちください。", -"Do you want to merge these address books?" => "これらのアドレス帳をマージしてもよろしいですか?", -"Result: " => "結果: ", -" imported, " => " をインポート、 ", -" failed." => " は失敗しました。", -"Displayname cannot be empty." => "表示名は空にできません。", -"Addressbook not found: " => "アドレス帳が見つかりません:", -"This is not your addressbook." => "これはあなたの電話帳ではありません。", -"Contact could not be found." => "連絡先を見つける事ができません。", -"Jabber" => "Jabber", -"AIM" => "AIM", -"MSN" => "MSN", -"Twitter" => "Twitter", -"GoogleTalk" => "Googleトーク", -"Facebook" => "Facebook", -"XMPP" => "XMPP", -"ICQ" => "ICQ", -"Yahoo" => "Yahoo", -"Skype" => "Skype", -"QQ" => "QQ", -"GaduGadu" => "GaduGadu", -"Work" => "勤務先", -"Home" => "住居", -"Other" => "その他", -"Mobile" => "携帯電話", -"Text" => "TTY TDD", -"Voice" => "音声番号", -"Message" => "メッセージ", -"Fax" => "FAX", -"Video" => "テレビ電話", -"Pager" => "ポケベル", -"Internet" => "インターネット", -"Birthday" => "誕生日", -"Business" => "ビジネス", -"Call" => "電話", -"Clients" => "顧客", -"Deliverer" => "運送会社", -"Holidays" => "休日", -"Ideas" => "アイデア", -"Journey" => "旅行", -"Jubilee" => "記念祭", -"Meeting" => "打ち合わせ", -"Personal" => "個人", -"Projects" => "プロジェクト", -"Questions" => "質問", -"{name}'s Birthday" => "{name}の誕生日", -"Contact" => "連絡先", -"You do not have the permissions to edit this contact." => "この連絡先を編集する権限がありません", -"You do not have the permissions to delete this contact." => "この連絡先を削除する権限がありません", -"Add Contact" => "連絡先の追加", -"Import" => "インポート", -"Settings" => "設定", -"Addressbooks" => "アドレス帳", -"Close" => "閉じる", -"Keyboard shortcuts" => "キーボードショートカット", -"Navigation" => "ナビゲーション", -"Next contact in list" => "リスト内の次の連絡先", -"Previous contact in list" => "リスト内の前の連絡先", -"Expand/collapse current addressbook" => "現在のアドレス帳を展開する/折りたたむ", -"Next addressbook" => "次のアドレス帳", -"Previous addressbook" => "前のアドレス帳", -"Actions" => "アクション", -"Refresh contacts list" => "連絡先リストを再読込する", -"Add new contact" => "新しい連絡先を追加", -"Add new addressbook" => "新しいアドレス帳を追加", -"Delete current contact" => "現在の連絡先を削除", -"Drop photo to upload" => "写真をドロップしてアップロード", -"Delete current photo" => "現在の写真を削除", -"Edit current photo" => "現在の写真を編集", -"Upload new photo" => "新しい写真をアップロード", -"Select photo from ownCloud" => "ownCloudから写真を選択", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "編集フォーマット、ショートネーム、フルネーム、逆順、カンマ区切りの逆順", -"Edit name details" => "名前の詳細を編集", -"Organization" => "所属", -"Delete" => "削除", -"Nickname" => "ニックネーム", -"Enter nickname" => "ニックネームを入力", -"Web site" => "ウェブサイト", -"http://www.somesite.com" => "http://www.somesite.com", -"Go to web site" => "Webサイトへ移動", -"dd-mm-yyyy" => "yyyy-mm-dd", -"Groups" => "グループ", -"Separate groups with commas" => "コンマでグループを分割", -"Edit groups" => "グループを編集", -"Preferred" => "推奨", -"Please specify a valid email address." => "有効なメールアドレスを指定してください。", -"Enter email address" => "メールアドレスを入力", -"Mail to address" => "アドレスへメールを送る", -"Delete email address" => "メールアドレスを削除", -"Enter phone number" => "電話番号を入力", -"Delete phone number" => "電話番号を削除", -"Instant Messenger" => "インスタントメッセンジャー", -"Delete IM" => "IMを削除", -"View on map" => "地図で表示", -"Edit address details" => "住所の詳細を編集", -"Add notes here." => "ここにメモを追加。", -"Add field" => "項目を追加", -"Phone" => "電話番号", -"Email" => "メールアドレス", -"Instant Messaging" => "インスタントメッセージ", -"Address" => "住所", -"Note" => "メモ", -"Download contact" => "連絡先のダウンロード", -"Delete contact" => "連絡先の削除", -"The temporary image has been removed from cache." => "一時画像はキャッシュから削除されました。", -"Edit address" => "住所を編集", -"Type" => "種類", -"PO Box" => "私書箱", -"Street address" => "住所1", -"Street and number" => "番地", -"Extended" => "住所2", -"Apartment number etc." => "アパート名等", -"City" => "都市", -"Region" => "都道府県", -"E.g. state or province" => "例:東京都、大阪府", -"Zipcode" => "郵便番号", -"Postal code" => "郵便番号", -"Country" => "国名", -"Addressbook" => "アドレス帳", -"Hon. prefixes" => "敬称", -"Miss" => "Miss", -"Ms" => "Ms", -"Mr" => "Mr", -"Sir" => "Sir", -"Mrs" => "Mrs", -"Dr" => "Dr", -"Given name" => "名", -"Additional names" => "ミドルネーム", -"Family name" => "姓", -"Hon. suffixes" => "称号", -"J.D." => "J.D.", -"M.D." => "M.D.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Ph.D.", -"Esq." => "Esq.", -"Jr." => "Jr.", -"Sn." => "Sn.", -"Import a contacts file" => "連絡先ファイルをインポート", -"Please choose the addressbook" => "アドレス帳を選択してください", -"create a new addressbook" => "新しいアドレス帳を作成", -"Name of new addressbook" => "新しいアドレスブックの名前", -"Importing contacts" => "連絡先をインポート", -"You have no contacts in your addressbook." => "アドレス帳に連絡先が登録されていません。", -"Add contact" => "連絡先を追加", -"Select Address Books" => "アドレス帳を選択してください", -"Enter name" => "名前を入力", -"Enter description" => "説明を入力してください", -"CardDAV syncing addresses" => "CardDAV同期アドレス", -"more info" => "詳細情報", -"Primary address (Kontact et al)" => "プライマリアドレス(Kontact 他)", -"iOS/OS X" => "iOS/OS X", -"Show CardDav link" => "CarDavリンクを表示", -"Show read-only VCF link" => "読み取り専用のVCFリンクを表示", -"Share" => "共有", -"Download" => "ダウンロード", -"Edit" => "編集", -"New Address Book" => "新規のアドレス帳", -"Name" => "名前", -"Description" => "説明", -"Save" => "保存", -"Cancel" => "取り消し", -"More..." => "もっと..." -); diff --git a/apps/contacts/l10n/ko.php b/apps/contacts/l10n/ko.php deleted file mode 100644 index 4349224f53c..00000000000 --- a/apps/contacts/l10n/ko.php +++ /dev/null @@ -1,155 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "주소록을 (비)활성화하는 데 실패했습니다.", -"id is not set." => "아이디가 설정되어 있지 않습니다. ", -"Cannot update addressbook with an empty name." => "주소록에 이름란이 비어있으면 업데이트를 할 수 없습니다. ", -"Error updating addressbook." => "주소록을 업데이트할 수 없습니다.", -"No ID provided" => "제공되는 아이디 없음", -"Error setting checksum." => "오류 검사합계 설정", -"No categories selected for deletion." => "삭제 카테고리를 선택하지 않았습니다. ", -"No address books found." => "주소록을 찾을 수 없습니다.", -"No contacts found." => "연락처를 찾을 수 없습니다.", -"There was an error adding the contact." => "연락처를 추가하는 중 오류가 발생하였습니다.", -"element name is not set." => "element 이름이 설정되지 않았습니다.", -"Cannot add empty property." => "빈 속성을 추가할 수 없습니다.", -"At least one of the address fields has to be filled out." => "최소한 하나의 주소록 항목을 입력해야 합니다.", -"Trying to add duplicate property: " => "중복 속성 추가 시도: ", -"Information about vCard is incorrect. Please reload the page." => "vCard 정보가 올바르지 않습니다. 페이지를 새로 고치십시오.", -"Missing ID" => "아이디 분실", -"Error parsing VCard for ID: \"" => "아이디에 대한 VCard 분석 오류", -"checksum is not set." => "체크섬이 설정되지 않았습니다.", -"Information about vCard is incorrect. Please reload the page: " => " vCard에 대한 정보가 잘못되었습니다. 페이지를 다시 로드하세요:", -"No contact ID was submitted." => "접속 아이디가 기입되지 않았습니다.", -"Error reading contact photo." => "사진 읽기 오류", -"Error saving temporary file." => "임시 파일을 저장하는 동안 오류가 발생했습니다. ", -"The loading photo is not valid." => "로딩 사진이 유효하지 않습니다. ", -"Contact ID is missing." => "접속 아이디가 없습니다. ", -"No photo path was submitted." => "사진 경로가 제출되지 않았습니다. ", -"File doesn't exist:" => "파일이 존재하지 않습니다. ", -"Error loading image." => "로딩 이미지 오류입니다.", -"Error getting contact object." => "연락처 개체를 가져오는 중 오류가 발생했습니다. ", -"Error getting PHOTO property." => "사진 속성을 가져오는 중 오류가 발생했습니다. ", -"Error saving contact." => "연락처 저장 중 오류가 발생했습니다.", -"Error resizing image" => "이미지 크기 조정 중 오류가 발생했습니다.", -"Error cropping image" => "이미지를 자르던 중 오류가 발생했습니다.", -"Error creating temporary image" => "임시 이미지를 생성 중 오류가 발생했습니다.", -"Error finding image: " => "이미지를 찾던 중 오류가 발생했습니다:", -"Error uploading contacts to storage." => "스토리지 에러 업로드 연락처.", -"There is no error, the file uploaded with success" => "오류없이 파일업로드 성공.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "php.ini 형식으로 업로드 된 이 파일은 MAX_FILE_SIZE를 초과하였다.", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "HTML형식으로 업로드 된 이 파일은 MAX_FILE_SIZE를 초과하였다.", -"The uploaded file was only partially uploaded" => "이 업로드된 파일은 부분적으로만 업로드 되었습니다.", -"No file was uploaded" => "파일이 업로드 되어있지 않습니다", -"Missing a temporary folder" => "임시 폴더 분실", -"Couldn't save temporary image: " => "임시 이미지를 저장할 수 없습니다:", -"Couldn't load temporary image: " => "임시 이미지를 불러올 수 없습니다. ", -"No file was uploaded. Unknown error" => "파일이 업로드 되지 않았습니다. 알 수 없는 오류.", -"Contacts" => "연락처", -"Sorry, this functionality has not been implemented yet" => "죄송합니다. 이 기능은 아직 구현되지 않았습니다. ", -"Not implemented" => "구현되지 않음", -"Couldn't get a valid address." => "유효한 주소를 얻을 수 없습니다.", -"Error" => "오류", -"Couldn't serialize elements." => "요소를 직렬화 할 수 없습니다.", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty'가 문서형식이 없이 불려왔습니다. bugs.owncloud.org에 보고해주세요. ", -"Edit name" => "이름 편집", -"No files selected for upload." => "업로드를 위한 파일이 선택되지 않았습니다. ", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "이 파일은 이 서버 파일 업로드 최대 용량을 초과 합니다. ", -"Select type" => "유형 선택", -"Result: " => "결과:", -" imported, " => "불러오기,", -" failed." => "실패.", -"This is not your addressbook." => "내 주소록이 아닙니다.", -"Contact could not be found." => "연락처를 찾을 수 없습니다.", -"Work" => "직장", -"Home" => "자택", -"Mobile" => "휴대폰", -"Text" => "문자 번호", -"Voice" => "음성 번호", -"Message" => "메세지", -"Fax" => "팩스 번호", -"Video" => "영상 번호", -"Pager" => "호출기", -"Internet" => "인터넷", -"Birthday" => "생일", -"{name}'s Birthday" => "{이름}의 생일", -"Contact" => "연락처", -"Add Contact" => "연락처 추가", -"Import" => "입력", -"Addressbooks" => "주소록", -"Close" => "닫기", -"Drop photo to upload" => "Drop photo to upload", -"Delete current photo" => "현재 사진 삭제", -"Edit current photo" => "현재 사진 편집", -"Upload new photo" => "새로운 사진 업로드", -"Select photo from ownCloud" => "ownCloud에서 사진 선택", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Format custom, Short name, Full name, Reverse or Reverse with comma", -"Edit name details" => "이름 세부사항을 편집합니다. ", -"Organization" => "조직", -"Delete" => "삭제", -"Nickname" => "별명", -"Enter nickname" => "별명 입력", -"dd-mm-yyyy" => "일-월-년", -"Groups" => "그룹", -"Separate groups with commas" => "쉼표로 그룹 구분", -"Edit groups" => "그룹 편집", -"Preferred" => "선호함", -"Please specify a valid email address." => "올바른 이메일 주소를 입력하세요.", -"Enter email address" => "이메일 주소 입력", -"Delete email address" => "이메일 주소 삭제", -"Enter phone number" => "전화번호 입력", -"Delete phone number" => "전화번호 삭제", -"View on map" => "지도에서 보기", -"Edit address details" => "상세 주소 수정", -"Add notes here." => "여기에 노트 추가.", -"Add field" => "파일 추가", -"Phone" => "전화 번호", -"Email" => "전자 우편", -"Address" => "주소", -"Note" => "노트", -"Download contact" => "연락처 다운로드", -"Delete contact" => "연락처 삭제", -"The temporary image has been removed from cache." => "임시 이미지가 캐시에서 제거 되었습니다. ", -"Edit address" => "주소 수정", -"Type" => "종류", -"PO Box" => "사서함", -"Extended" => "확장", -"City" => "도시", -"Region" => "지역", -"Zipcode" => "우편 번호", -"Country" => "국가", -"Addressbook" => "주소록", -"Hon. prefixes" => "Hon. prefixes", -"Miss" => "Miss", -"Ms" => "Ms", -"Mr" => "Mr", -"Sir" => "Sir", -"Mrs" => "Mrs", -"Dr" => "Dr", -"Given name" => "Given name", -"Additional names" => "추가 이름", -"Family name" => "성", -"Hon. suffixes" => "Hon. suffixes", -"J.D." => "J.D.", -"M.D." => "M.D.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Ph.D.", -"Esq." => "Esq.", -"Jr." => "Jr.", -"Sn." => "Sn.", -"Import a contacts file" => "연락처 파일 입력", -"Please choose the addressbook" => "주소록을 선택해 주세요.", -"create a new addressbook" => "새 주소록 만들기", -"Name of new addressbook" => "새 주소록 이름", -"Importing contacts" => "연락처 입력", -"You have no contacts in your addressbook." => "당신의 주소록에는 연락처가 없습니다. ", -"Add contact" => "연락처 추가", -"CardDAV syncing addresses" => "CardDAV 주소 동기화", -"more info" => "더 많은 정보", -"Primary address (Kontact et al)" => "기본 주소 (Kontact et al)", -"iOS/OS X" => "iOS/OS X", -"Download" => "다운로드", -"Edit" => "편집", -"New Address Book" => "새 주소록", -"Save" => "저장", -"Cancel" => "취소" -); diff --git a/apps/contacts/l10n/lb.php b/apps/contacts/l10n/lb.php deleted file mode 100644 index 22ca20e751b..00000000000 --- a/apps/contacts/l10n/lb.php +++ /dev/null @@ -1,86 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Fehler beim (de)aktivéieren vum Adressbuch.", -"id is not set." => "ID ass net gesat.", -"Error updating addressbook." => "Fehler beim updaten vum Adressbuch.", -"No ID provided" => "Keng ID uginn", -"Error setting checksum." => "Fehler beim setzen vun der Checksum.", -"No categories selected for deletion." => "Keng Kategorien fir ze läschen ausgewielt.", -"No address books found." => "Keen Adressbuch fonnt.", -"No contacts found." => "Keng Kontakter fonnt.", -"There was an error adding the contact." => "Fehler beim bäisetzen vun engem Kontakt.", -"Cannot add empty property." => "Ka keng eidel Proprietéit bäisetzen.", -"Trying to add duplicate property: " => "Probéieren duebel Proprietéit bäi ze setzen:", -"Information about vCard is incorrect. Please reload the page." => "Informatioun iwwert vCard ass net richteg. Lued d'Säit wegl nei.", -"Missing ID" => "ID fehlt", -"No contact ID was submitted." => "Kontakt ID ass net mat geschéckt ginn.", -"Error reading contact photo." => "Fehler beim liesen vun der Kontakt Photo.", -"Error saving temporary file." => "Fehler beim späicheren vum temporäre Fichier.", -"The loading photo is not valid." => "Déi geluede Photo ass net gülteg.", -"Contact ID is missing." => "Kontakt ID fehlt.", -"File doesn't exist:" => "Fichier existéiert net:", -"Error loading image." => "Fehler beim lueden vum Bild.", -"No file was uploaded" => "Et ass kee Fichier ropgeluede ginn", -"Contacts" => "Kontakter", -"Error" => "Fehler", -"Result: " => "Resultat: ", -" imported, " => " importéiert, ", -"This is not your addressbook." => "Dat do ass net däin Adressbuch.", -"Contact could not be found." => "Konnt den Kontakt net fannen.", -"Work" => "Aarbecht", -"Home" => "Doheem", -"Mobile" => "GSM", -"Text" => "SMS", -"Voice" => "Voice", -"Message" => "Message", -"Fax" => "Fax", -"Video" => "Video", -"Pager" => "Pager", -"Internet" => "Internet", -"Birthday" => "Gebuertsdag", -"{name}'s Birthday" => "{name} säi Gebuertsdag", -"Contact" => "Kontakt", -"Add Contact" => "Kontakt bäisetzen", -"Addressbooks" => "Adressbicher ", -"Close" => "Zoumaachen", -"Organization" => "Firma", -"Delete" => "Läschen", -"Nickname" => "Spëtznumm", -"Enter nickname" => "Gëff e Spëtznumm an", -"dd-mm-yyyy" => "dd-mm-yyyy", -"Groups" => "Gruppen", -"Edit groups" => "Gruppen editéieren", -"Enter phone number" => "Telefonsnummer aginn", -"Delete phone number" => "Telefonsnummer läschen", -"View on map" => "Op da Kaart uweisen", -"Edit address details" => "Adress Detailer editéieren", -"Phone" => "Telefon", -"Email" => "Email", -"Address" => "Adress", -"Note" => "Note", -"Download contact" => "Kontakt eroflueden", -"Delete contact" => "Kontakt läschen", -"Type" => "Typ", -"PO Box" => "Postleetzuel", -"Extended" => "Erweidert", -"City" => "Staat", -"Region" => "Regioun", -"Zipcode" => "Postleetzuel", -"Country" => "Land", -"Addressbook" => "Adressbuch", -"Mr" => "M", -"Sir" => "Sir", -"Mrs" => "Mme", -"Dr" => "Dr", -"Given name" => "Virnumm", -"Additional names" => "Weider Nimm", -"Family name" => "Famillje Numm", -"Ph.D." => "Ph.D.", -"Jr." => "Jr.", -"Sn." => "Sn.", -"iOS/OS X" => "iOS/OS X", -"Download" => "Download", -"Edit" => "Editéieren", -"New Address Book" => "Neit Adressbuch", -"Save" => "Späicheren", -"Cancel" => "Ofbriechen" -); diff --git a/apps/contacts/l10n/lt_LT.php b/apps/contacts/l10n/lt_LT.php deleted file mode 100644 index 3b31aa7931e..00000000000 --- a/apps/contacts/l10n/lt_LT.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Klaida (de)aktyvuojant adresų knygą.", -"No contacts found." => "Kontaktų nerasta.", -"There was an error adding the contact." => "Pridedant kontaktą įvyko klaida.", -"Information about vCard is incorrect. Please reload the page." => "Informacija apie vCard yra neteisinga. ", -"Error reading contact photo." => "Klaida skaitant kontakto nuotrauką.", -"The loading photo is not valid." => "Netinkama įkeliama nuotrauka.", -"File doesn't exist:" => "Failas neegzistuoja:", -"Error loading image." => "Klaida įkeliant nuotrauką.", -"There is no error, the file uploaded with success" => "Failas įkeltas sėkmingai, be klaidų", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Įkeliamo failo dydis viršija upload_max_filesize nustatymą php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Įkeliamo failo dydis viršija MAX_FILE_SIZE nustatymą, kuris naudojamas HTML formoje.", -"The uploaded file was only partially uploaded" => "Failas buvo įkeltas tik dalinai", -"No file was uploaded" => "Nebuvo įkeltas joks failas", -"Contacts" => "Kontaktai", -"This is not your addressbook." => "Tai ne jūsų adresų knygelė.", -"Contact could not be found." => "Kontaktas nerastas", -"Work" => "Darbo", -"Home" => "Namų", -"Mobile" => "Mobilusis", -"Text" => "Žinučių", -"Voice" => "Balso", -"Message" => "Žinutė", -"Fax" => "Faksas", -"Video" => "Vaizdo", -"Pager" => "Pranešimų gaviklis", -"Internet" => "Internetas", -"Birthday" => "Gimtadienis", -"Contact" => "Kontaktas", -"Add Contact" => "Pridėti kontaktą", -"Addressbooks" => "Adresų knygos", -"Organization" => "Organizacija", -"Delete" => "Trinti", -"Nickname" => "Slapyvardis", -"Enter nickname" => "Įveskite slapyvardį", -"Phone" => "Telefonas", -"Email" => "El. paštas", -"Address" => "Adresas", -"Download contact" => "Atsisųsti kontaktą", -"Delete contact" => "Ištrinti kontaktą", -"Type" => "Tipas", -"PO Box" => "Pašto dėžutė", -"City" => "Miestas", -"Region" => "Regionas", -"Zipcode" => "Pašto indeksas", -"Country" => "Šalis", -"Addressbook" => "Adresų knyga", -"Download" => "Atsisiųsti", -"Edit" => "Keisti", -"New Address Book" => "Nauja adresų knyga", -"Save" => "Išsaugoti", -"Cancel" => "Atšaukti" -); diff --git a/apps/contacts/l10n/mk.php b/apps/contacts/l10n/mk.php deleted file mode 100644 index 093b105777c..00000000000 --- a/apps/contacts/l10n/mk.php +++ /dev/null @@ -1,158 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Грешка (де)активирање на адресарот.", -"id is not set." => "ид не е поставено.", -"Cannot update addressbook with an empty name." => "Неможе да се ажурира адресар со празно име.", -"Error updating addressbook." => "Грешка при ажурирање на адресарот.", -"No ID provided" => "Нема доставено ИД", -"Error setting checksum." => "Грешка во поставување сума за проверка.", -"No categories selected for deletion." => "Нема избрано категории за бришење.", -"No address books found." => "Не се најдени адресари.", -"No contacts found." => "Не се најдени контакти.", -"There was an error adding the contact." => "Имаше грешка при додавање на контактот.", -"element name is not set." => "име за елементот не е поставена.", -"Cannot add empty property." => "Неможе да се додаде празна вредност.", -"At least one of the address fields has to be filled out." => "Барем една од полињата за адреса треба да биде пополнето.", -"Trying to add duplicate property: " => "Се обидовте да внесете дупликат вредност:", -"Information about vCard is incorrect. Please reload the page." => "Информацијата за vCard не е точна. Ве молам превчитајте ја страницава.", -"Missing ID" => "Недостасува ИД", -"Error parsing VCard for ID: \"" => "Грешка при парсирање VCard за ИД: \"", -"checksum is not set." => "сумата за проверка не е поставена.", -"Information about vCard is incorrect. Please reload the page: " => "Информацијата за vCard не е точна. Ве молам превчитајте ја страницава:", -"Something went FUBAR. " => "Нешто се расипа.", -"No contact ID was submitted." => "Не беше доставено ИД за контакт.", -"Error reading contact photo." => "Грешка во читање на контакт фотографија.", -"Error saving temporary file." => "Грешка во снимање на привремена датотека.", -"The loading photo is not valid." => "Фотографијата која се вчитува е невалидна.", -"Contact ID is missing." => "ИД за контакт недостасува.", -"No photo path was submitted." => "Не беше поднесена патека за фотографија.", -"File doesn't exist:" => "Не постои датотеката:", -"Error loading image." => "Грешка во вчитување на слика.", -"Error getting contact object." => "Грешка при преземањето на контакт објектот,", -"Error getting PHOTO property." => "Грешка при утврдувањето на карактеристиките на фотографијата.", -"Error saving contact." => "Грешка при снимање на контактите.", -"Error resizing image" => "Грешка при скалирање на фотографијата", -"Error cropping image" => "Грешка при сечење на фотографијата", -"Error creating temporary image" => "Грешка при креирањето на привремената фотографија", -"Error finding image: " => "Грешка при наоѓањето на фотографијата:", -"Error uploading contacts to storage." => "Грешка во снимање на контактите на диск.", -"There is no error, the file uploaded with success" => "Датотеката беше успешно подигната.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Големината на датотеката ја надминува upload_max_filesize директивата во php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Големината на датотеката ја надминува MAX_FILE_SIZE директивата која беше специфицирана во HTML формата", -"The uploaded file was only partially uploaded" => "Датотеката беше само делумно подигната.", -"No file was uploaded" => "Не беше подигната датотека.", -"Missing a temporary folder" => "Недостасува привремена папка", -"Couldn't save temporary image: " => "Не можеше да се сними привремената фотографија:", -"Couldn't load temporary image: " => "Не можеше да се вчита привремената фотографија:", -"No file was uploaded. Unknown error" => "Ниту еден фајл не се вчита. Непозната грешка", -"Contacts" => "Контакти", -"Sorry, this functionality has not been implemented yet" => "Жалам, оваа функционалност уште не е имплементирана", -"Not implemented" => "Не е имплементирано", -"Couldn't get a valid address." => "Не можев да добијам исправна адреса.", -"Error" => "Грешка", -"This property has to be non-empty." => "Својството не смее да биде празно.", -"Couldn't serialize elements." => "Не може да се серијализираат елементите.", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' повикан без тип на аргументот. Пријавете грешка/проблем на bugs.owncloud.org", -"Edit name" => "Уреди го името", -"No files selected for upload." => "Ниту еден фајл не е избран за вчитување.", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Датотеката која се обидувате да ја префрлите ја надминува максималната големина дефинирана за пренос на овој сервер.", -"Select type" => "Одбери тип", -"Result: " => "Резултат: ", -" imported, " => "увезено,", -" failed." => "неуспешно.", -"This is not your addressbook." => "Ова не е во Вашиот адресар.", -"Contact could not be found." => "Контактот неможе да биде најден.", -"Work" => "Работа", -"Home" => "Дома", -"Mobile" => "Мобилен", -"Text" => "Текст", -"Voice" => "Глас", -"Message" => "Порака", -"Fax" => "Факс", -"Video" => "Видео", -"Pager" => "Пејџер", -"Internet" => "Интернет", -"Birthday" => "Роденден", -"{name}'s Birthday" => "Роденден на {name}", -"Contact" => "Контакт", -"Add Contact" => "Додади контакт", -"Import" => "Внеси", -"Addressbooks" => "Адресари", -"Close" => "Затвои", -"Drop photo to upload" => "Довлечкај фотографија за да се подигне", -"Delete current photo" => "Избриши моментална фотографија", -"Edit current photo" => "Уреди моментална фотографија", -"Upload new photo" => "Подигни нова фотографија", -"Select photo from ownCloud" => "Изберете фотографија од ownCloud", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Прилагоден формат, кратко име, цело име, обратно или обратно со запирка", -"Edit name details" => "Уреди детали за име", -"Organization" => "Организација", -"Delete" => "Избриши", -"Nickname" => "Прекар", -"Enter nickname" => "Внеси прекар", -"dd-mm-yyyy" => "dd-mm-yyyy", -"Groups" => "Групи", -"Separate groups with commas" => "Одвоете ги групите со запирка", -"Edit groups" => "Уреди групи", -"Preferred" => "Претпочитано", -"Please specify a valid email address." => "Ве молам внесете правилна адреса за е-пошта.", -"Enter email address" => "Внесете е-пошта", -"Mail to address" => "Прати порака до адреса", -"Delete email address" => "Избриши адреса за е-пошта", -"Enter phone number" => "Внесете телефонски број", -"Delete phone number" => "Избриши телефонски број", -"View on map" => "Погледајте на мапа", -"Edit address details" => "Уреди детали за адреса", -"Add notes here." => "Внесете забелешки тука.", -"Add field" => "Додади поле", -"Phone" => "Телефон", -"Email" => "Е-пошта", -"Address" => "Адреса", -"Note" => "Забелешка", -"Download contact" => "Преземи го контактот", -"Delete contact" => "Избриши го контактот", -"The temporary image has been removed from cache." => "Привремената слика е отстранета од кешот.", -"Edit address" => "Уреди адреса", -"Type" => "Тип", -"PO Box" => "Поштенски фах", -"Extended" => "Дополнително", -"City" => "Град", -"Region" => "Регион", -"Zipcode" => "Поштенски код", -"Country" => "Држава", -"Addressbook" => "Адресар", -"Hon. prefixes" => "Префикси за титула", -"Miss" => "Г-ца", -"Ms" => "Г-ѓа", -"Mr" => "Г-дин", -"Sir" => "Сер", -"Mrs" => "Г-ѓа", -"Dr" => "Др", -"Given name" => "Лично име", -"Additional names" => "Дополнителни имиња", -"Family name" => "Презиме", -"Hon. suffixes" => "Суфикси за титула", -"J.D." => "J.D.", -"M.D." => "Д.М.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Д-р", -"Esq." => "Esq.", -"Jr." => "Помлад.", -"Sn." => "Постар.", -"Import a contacts file" => "Внеси датотека со контакти", -"Please choose the addressbook" => "Ве молам изберете адресар", -"create a new addressbook" => "креирај нов адресар", -"Name of new addressbook" => "Име на новиот адресар", -"Importing contacts" => "Внесување контакти", -"You have no contacts in your addressbook." => "Немате контакти во Вашиот адресар.", -"Add contact" => "Додади контакт", -"CardDAV syncing addresses" => "Адреса за синхронизација со CardDAV", -"more info" => "повеќе информации", -"Primary address (Kontact et al)" => "Примарна адреса", -"iOS/OS X" => "iOS/OS X", -"Download" => "Преземи", -"Edit" => "Уреди", -"New Address Book" => "Нов адресар", -"Save" => "Сними", -"Cancel" => "Откажи" -); diff --git a/apps/contacts/l10n/ms_MY.php b/apps/contacts/l10n/ms_MY.php deleted file mode 100644 index 3fce9eae5a3..00000000000 --- a/apps/contacts/l10n/ms_MY.php +++ /dev/null @@ -1,178 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Ralat nyahaktif buku alamat.", -"id is not set." => "ID tidak ditetapkan.", -"Cannot update addressbook with an empty name." => "Tidak boleh kemaskini buku alamat dengan nama yang kosong.", -"Error updating addressbook." => "Masalah mengemaskini buku alamat.", -"No ID provided" => "tiada ID diberi", -"Error setting checksum." => "Ralat menetapkan checksum.", -"No categories selected for deletion." => "Tiada kategori dipilih untuk dibuang.", -"No address books found." => "Tiada buku alamat dijumpai.", -"No contacts found." => "Tiada kenalan dijumpai.", -"There was an error adding the contact." => "Terdapat masalah menambah maklumat.", -"element name is not set." => "nama elemen tidak ditetapkan.", -"Cannot add empty property." => "Tidak boleh menambah ruang kosong.", -"At least one of the address fields has to be filled out." => "Sekurangnya satu ruangan alamat perlu diisikan.", -"Trying to add duplicate property: " => "Cuba untuk letak nilai duplikasi:", -"Information about vCard is incorrect. Please reload the page." => "Maklumat vCard tidak tepat. Sila reload semula halaman ini.", -"Missing ID" => "ID Hilang", -"Error parsing VCard for ID: \"" => "Ralat VCard untuk ID: \"", -"checksum is not set." => "checksum tidak ditetapkan.", -"Information about vCard is incorrect. Please reload the page: " => "Maklumat tentang vCard tidak betul.", -"Something went FUBAR. " => "Sesuatu tidak betul.", -"No contact ID was submitted." => "Tiada ID kenalan yang diberi.", -"Error reading contact photo." => "Ralat pada foto kenalan.", -"Error saving temporary file." => "Ralat menyimpan fail sementara", -"The loading photo is not valid." => "Foto muatan tidak sah.", -"Contact ID is missing." => "ID Kenalan telah hilang.", -"No photo path was submitted." => "Tiada direktori gambar yang diberi.", -"File doesn't exist:" => "Fail tidak wujud:", -"Error loading image." => "Ralat pada muatan imej.", -"Error getting contact object." => "Ralat mendapatkan objek pada kenalan.", -"Error getting PHOTO property." => "Ralat mendapatkan maklumat gambar.", -"Error saving contact." => "Ralat menyimpan kenalan.", -"Error resizing image" => "Ralat mengubah saiz imej", -"Error cropping image" => "Ralat memotong imej", -"Error creating temporary image" => "Ralat mencipta imej sementara", -"Error finding image: " => "Ralat mencari imej: ", -"Error uploading contacts to storage." => "Ralat memuatnaik senarai kenalan.", -"There is no error, the file uploaded with success" => "Tiada ralat berlaku, fail berjaya dimuatnaik", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Saiz fail yang dimuatnaik melebihi upload_max_filesize yang ditetapkan dalam php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Saiz fail yang dimuatnaik melebihi MAX_FILE_SIZE yang ditetapkan dalam borang HTML", -"The uploaded file was only partially uploaded" => "Fail yang dimuatnaik tidak lengkap", -"No file was uploaded" => "Tiada fail dimuatnaik", -"Missing a temporary folder" => "Direktori sementara hilang", -"Couldn't save temporary image: " => "Tidak boleh menyimpan imej sementara: ", -"Couldn't load temporary image: " => "Tidak boleh membuka imej sementara: ", -"No file was uploaded. Unknown error" => "Tiada fail dimuatnaik. Ralat tidak diketahui.", -"Contacts" => "Hubungan-hubungan", -"Sorry, this functionality has not been implemented yet" => "Maaf, fungsi ini masih belum boleh diguna lagi", -"Not implemented" => "Tidak digunakan", -"Couldn't get a valid address." => "Tidak boleh mendapat alamat yang sah.", -"Error" => "Ralat", -"This property has to be non-empty." => "Nilai ini tidak boleh kosong.", -"Couldn't serialize elements." => "Tidak boleh menggabungkan elemen.", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' dipanggil tanpa argumen taip. Sila maklumkan di bugs.owncloud.org", -"Edit name" => "Ubah nama", -"No files selected for upload." => "Tiada fail dipilih untuk muatnaik.", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Fail yang ingin dimuatnaik melebihi saiz yang dibenarkan.", -"Select type" => "PIlih jenis", -"Result: " => "Hasil: ", -" imported, " => " import, ", -" failed." => " gagal.", -"Addressbook not found: " => "Buku alamat tidak ditemui:", -"This is not your addressbook." => "Ini bukan buku alamat anda.", -"Contact could not be found." => "Hubungan tidak dapat ditemui", -"Work" => "Kerja", -"Home" => "Rumah", -"Other" => "Lain", -"Mobile" => "Mudah alih", -"Text" => "Teks", -"Voice" => "Suara", -"Message" => "Mesej", -"Fax" => "Fax", -"Video" => "Video", -"Pager" => "Alat Kelui", -"Internet" => "Internet", -"Birthday" => "Hari lahir", -"Business" => "Perniagaan", -"Clients" => "klien", -"Holidays" => "Hari kelepasan", -"Ideas" => "Idea", -"Journey" => "Perjalanan", -"Jubilee" => "Jubli", -"Meeting" => "Mesyuarat", -"Personal" => "Peribadi", -"Projects" => "Projek", -"{name}'s Birthday" => "Hari Lahir {name}", -"Contact" => "Hubungan", -"Add Contact" => "Tambah kenalan", -"Import" => "Import", -"Settings" => "Tetapan", -"Addressbooks" => "Senarai Buku Alamat", -"Close" => "Tutup", -"Next addressbook" => "Buku alamat seterusnya", -"Previous addressbook" => "Buku alamat sebelumnya", -"Drop photo to upload" => "Letak foto disini untuk muatnaik", -"Delete current photo" => "Padam foto semasa", -"Edit current photo" => "Ubah foto semasa", -"Upload new photo" => "Muatnaik foto baru", -"Select photo from ownCloud" => "Pilih foto dari ownCloud", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Format bebas, Nama pendek, Nama penuh, Unduran dengan koma", -"Edit name details" => "Ubah butiran nama", -"Organization" => "Organisasi", -"Delete" => "Padam", -"Nickname" => "Nama Samaran", -"Enter nickname" => "Masukkan nama samaran", -"dd-mm-yyyy" => "dd-mm-yyyy", -"Groups" => "Kumpulan", -"Separate groups with commas" => "Asingkan kumpulan dengan koma", -"Edit groups" => "Ubah kumpulan", -"Preferred" => "Pilihan", -"Please specify a valid email address." => "Berikan alamat emel yang sah.", -"Enter email address" => "Masukkan alamat emel", -"Mail to address" => "Hantar ke alamat", -"Delete email address" => "Padam alamat emel", -"Enter phone number" => "Masukkan nombor telefon", -"Delete phone number" => "Padam nombor telefon", -"View on map" => "Lihat pada peta", -"Edit address details" => "Ubah butiran alamat", -"Add notes here." => "Letak nota disini.", -"Add field" => "Letak ruangan", -"Phone" => "Telefon", -"Email" => "Emel", -"Address" => "Alamat", -"Note" => "Nota", -"Download contact" => "Muat turun hubungan", -"Delete contact" => "Padam hubungan", -"The temporary image has been removed from cache." => "Imej sementara telah dibuang dari cache.", -"Edit address" => "Ubah alamat", -"Type" => "Jenis", -"PO Box" => "Peti surat", -"Extended" => "Sambungan", -"City" => "bandar", -"Region" => "Wilayah", -"Zipcode" => "Poskod", -"Country" => "Negara", -"Addressbook" => "Buku alamat", -"Hon. prefixes" => "Awalan nama", -"Miss" => "Cik", -"Ms" => "Cik", -"Mr" => "Encik", -"Sir" => "Tuan", -"Mrs" => "Puan", -"Dr" => "Dr", -"Given name" => "Nama diberi", -"Additional names" => "Nama tambahan", -"Family name" => "Nama keluarga", -"Hon. suffixes" => "Awalan nama", -"J.D." => "J.D.", -"M.D." => "M.D.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Ph.D.", -"Esq." => "Esq.", -"Jr." => "Jr.", -"Sn." => "Sn.", -"Import a contacts file" => "Import fail kenalan", -"Please choose the addressbook" => "Sila pilih buku alamat", -"create a new addressbook" => "Cipta buku alamat baru", -"Name of new addressbook" => "Nama buku alamat", -"Importing contacts" => "Import senarai kenalan", -"You have no contacts in your addressbook." => "Anda tidak mempunyai sebarang kenalan didalam buku alamat.", -"Add contact" => "Letak kenalan", -"Select Address Books" => "Pilih Buku Alamat", -"Enter name" => "Masukkan nama", -"Enter description" => "Masukkan keterangan", -"CardDAV syncing addresses" => "alamat selarian CardDAV", -"more info" => "maklumat lanjut", -"Primary address (Kontact et al)" => "Alamat utama", -"iOS/OS X" => "iOS/OS X", -"Download" => "Muat naik", -"Edit" => "Sunting", -"New Address Book" => "Buku Alamat Baru", -"Name" => "Nama", -"Description" => "Keterangan", -"Save" => "Simpan", -"Cancel" => "Batal", -"More..." => "Lagi..." -); diff --git a/apps/contacts/l10n/nb_NO.php b/apps/contacts/l10n/nb_NO.php deleted file mode 100644 index 905f6fc6a0d..00000000000 --- a/apps/contacts/l10n/nb_NO.php +++ /dev/null @@ -1,134 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Et problem oppsto med å (de)aktivere adresseboken.", -"id is not set." => "id er ikke satt.", -"Cannot update addressbook with an empty name." => "Kan ikke oppdatere adressebøker uten navn.", -"Error updating addressbook." => "Et problem oppsto med å oppdatere adresseboken.", -"No ID provided" => "Ingen ID angitt", -"No categories selected for deletion." => "Ingen kategorier valgt for sletting.", -"No address books found." => "Ingen adressebok funnet.", -"No contacts found." => "Ingen kontakter funnet.", -"There was an error adding the contact." => "Et problem oppsto med å legge til kontakten.", -"Cannot add empty property." => "Kan ikke legge til tomt felt.", -"At least one of the address fields has to be filled out." => "Minst en av adressefeltene må oppgis.", -"Information about vCard is incorrect. Please reload the page." => "Informasjonen om vCard-filen er ikke riktig. Last inn siden på nytt.", -"Missing ID" => "Manglende ID", -"Something went FUBAR. " => "Noe gikk fryktelig galt.", -"Error reading contact photo." => "Klarte ikke å lese kontaktbilde.", -"Error saving temporary file." => "Klarte ikke å lagre midlertidig fil.", -"The loading photo is not valid." => "Bildet som lastes inn er ikke gyldig.", -"Contact ID is missing." => "Kontakt-ID mangler.", -"No photo path was submitted." => "Ingen filsti ble lagt inn.", -"File doesn't exist:" => "Filen eksisterer ikke:", -"Error loading image." => "Klarte ikke å laste bilde.", -"Error saving contact." => "Klarte ikke å lagre kontakt.", -"Error resizing image" => "Klarte ikke å endre størrelse på bildet", -"Error cropping image" => "Klarte ikke å beskjære bildet", -"Error creating temporary image" => "Klarte ikke å lage et midlertidig bilde", -"Error finding image: " => "Kunne ikke finne bilde:", -"Error uploading contacts to storage." => "Klarte ikke å laste opp kontakter til lagringsplassen", -"There is no error, the file uploaded with success" => "Pust ut, ingen feil. Filen ble lastet opp problemfritt", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Filen du prøvde å laste opp var større enn grensen upload_max_filesize i php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Filen du prøvde å laste opp var større enn grensen satt i MAX_FILE_SIZE i HTML-skjemaet.", -"The uploaded file was only partially uploaded" => "Filen du prøvde å laste opp ble kun delvis lastet opp", -"No file was uploaded" => "Ingen filer ble lastet opp", -"Missing a temporary folder" => "Mangler midlertidig mappe", -"Couldn't save temporary image: " => "Kunne ikke lagre midlertidig bilde:", -"Couldn't load temporary image: " => "Kunne ikke laste midlertidig bilde:", -"No file was uploaded. Unknown error" => "Ingen filer ble lastet opp. Ukjent feil.", -"Contacts" => "Kontakter", -"Error" => "Feil", -"Edit name" => "Endre navn", -"No files selected for upload." => "Ingen filer valgt for opplasting.", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Filen du prøver å laste opp er for stor.", -"Select type" => "Velg type", -"Result: " => "Resultat:", -" imported, " => "importert,", -" failed." => "feilet.", -"This is not your addressbook." => "Dette er ikke dine adressebok.", -"Contact could not be found." => "Kontakten ble ikke funnet.", -"Work" => "Arbeid", -"Home" => "Hjem", -"Mobile" => "Mobil", -"Text" => "Tekst", -"Voice" => "Svarer", -"Message" => "Melding", -"Fax" => "Faks", -"Video" => "Video", -"Pager" => "Pager", -"Internet" => "Internett", -"Birthday" => "Bursdag", -"{name}'s Birthday" => "{name}s bursdag", -"Contact" => "Kontakt", -"Add Contact" => "Ny kontakt", -"Import" => "Importer", -"Addressbooks" => "Adressebøker", -"Close" => "Lukk", -"Drop photo to upload" => "Dra bilder hit for å laste opp", -"Delete current photo" => "Fjern nåværende bilde", -"Edit current photo" => "Rediger nåværende bilde", -"Upload new photo" => "Last opp nytt bilde", -"Select photo from ownCloud" => "Velg bilde fra ownCloud", -"Edit name details" => "Endre detaljer rundt navn", -"Organization" => "Organisasjon", -"Delete" => "Slett", -"Nickname" => "Kallenavn", -"Enter nickname" => "Skriv inn kallenavn", -"dd-mm-yyyy" => "dd-mm-åååå", -"Groups" => "Grupper", -"Separate groups with commas" => "Skill gruppene med komma", -"Edit groups" => "Endre grupper", -"Preferred" => "Foretrukket", -"Please specify a valid email address." => "Vennligst angi en gyldig e-postadresse.", -"Enter email address" => "Skriv inn e-postadresse", -"Mail to address" => "Send e-post til adresse", -"Delete email address" => "Fjern e-postadresse", -"Enter phone number" => "Skriv inn telefonnummer", -"Delete phone number" => "Fjern telefonnummer", -"View on map" => "Se på kart", -"Edit address details" => "Endre detaljer rundt adresse", -"Add notes here." => "Legg inn notater her.", -"Add field" => "Legg til felt", -"Phone" => "Telefon", -"Email" => "E-post", -"Address" => "Adresse", -"Note" => "Notat", -"Download contact" => "Hend ned kontakten", -"Delete contact" => "Slett kontakt", -"The temporary image has been removed from cache." => "Det midlertidige bildet er fjernet fra cache.", -"Edit address" => "Endre adresse", -"Type" => "Type", -"PO Box" => "Postboks", -"Extended" => "Utvidet", -"City" => "By", -"Region" => "Området", -"Zipcode" => "Postnummer", -"Country" => "Land", -"Addressbook" => "Adressebok", -"Hon. prefixes" => "Ærestitler", -"Miss" => "Frøken", -"Mr" => "Herr", -"Mrs" => "Fru", -"Dr" => "Dr", -"Given name" => "Fornavn", -"Additional names" => "Ev. mellomnavn", -"Family name" => "Etternavn", -"Hon. suffixes" => "Titler", -"Ph.D." => "Stipendiat", -"Jr." => "Jr.", -"Sn." => "Sr.", -"Import a contacts file" => "Importer en fil med kontakter.", -"Please choose the addressbook" => "Vennligst velg adressebok", -"create a new addressbook" => "Lag ny adressebok", -"Name of new addressbook" => "Navn på ny adressebok", -"Importing contacts" => "Importerer kontakter", -"You have no contacts in your addressbook." => "Du har ingen kontakter i din adressebok", -"Add contact" => "Ny kontakt", -"CardDAV syncing addresses" => "Synkroniseringsadresse for CardDAV", -"more info" => "mer info", -"iOS/OS X" => "iOS/OS X", -"Download" => "Hent ned", -"Edit" => "Rediger", -"New Address Book" => "Ny adressebok", -"Save" => "Lagre", -"Cancel" => "Avbryt" -); diff --git a/apps/contacts/l10n/nl.php b/apps/contacts/l10n/nl.php deleted file mode 100644 index 7c85dd7ce93..00000000000 --- a/apps/contacts/l10n/nl.php +++ /dev/null @@ -1,220 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Fout bij het (de)activeren van het adresboek.", -"id is not set." => "id is niet ingesteld.", -"Cannot update addressbook with an empty name." => "Kan adresboek zonder naam niet wijzigen", -"Error updating addressbook." => "Fout bij het updaten van het adresboek.", -"No ID provided" => "Geen ID opgegeven", -"Error setting checksum." => "Instellen controlegetal mislukt", -"No categories selected for deletion." => "Geen categorieën geselecteerd om te verwijderen.", -"No address books found." => "Geen adresboek gevonden", -"No contacts found." => "Geen contracten gevonden", -"There was an error adding the contact." => "Er was een fout bij het toevoegen van het contact.", -"element name is not set." => "onderdeel naam is niet opgegeven.", -"Could not parse contact: " => "Kon het contact niet verwerken", -"Cannot add empty property." => "Kan geen lege eigenschap toevoegen.", -"At least one of the address fields has to be filled out." => "Minstens één van de adresvelden moet ingevuld worden.", -"Trying to add duplicate property: " => "Eigenschap bestaat al: ", -"Missing IM parameter." => "IM parameter ontbreekt", -"Unknown IM: " => "Onbekende IM:", -"Information about vCard is incorrect. Please reload the page." => "Informatie over de vCard is onjuist. Herlaad de pagina.", -"Missing ID" => "Ontbrekend ID", -"Error parsing VCard for ID: \"" => "Fout bij inlezen VCard voor ID: \"", -"checksum is not set." => "controlegetal is niet opgegeven.", -"Information about vCard is incorrect. Please reload the page: " => "Informatie over vCard is fout. Herlaad de pagina: ", -"Something went FUBAR. " => "Er ging iets totaal verkeerd. ", -"No contact ID was submitted." => "Geen contact ID opgestuurd.", -"Error reading contact photo." => "Lezen van contact foto mislukt.", -"Error saving temporary file." => "Tijdelijk bestand opslaan mislukt.", -"The loading photo is not valid." => "De geladen foto is niet goed.", -"Contact ID is missing." => "Contact ID ontbreekt.", -"No photo path was submitted." => "Geen fotopad opgestuurd.", -"File doesn't exist:" => "Bestand bestaat niet:", -"Error loading image." => "Fout bij laden plaatje.", -"Error getting contact object." => "Fout om contact object te verkrijgen", -"Error getting PHOTO property." => "Fout om PHOTO eigenschap te verkrijgen", -"Error saving contact." => "Fout om contact op te slaan", -"Error resizing image" => "Fout tijdens aanpassen plaatje", -"Error cropping image" => "Fout tijdens aanpassen plaatje", -"Error creating temporary image" => "Fout om een tijdelijk plaatje te maken", -"Error finding image: " => "Fout kan plaatje niet vinden:", -"Error uploading contacts to storage." => "Fout bij opslaan van contacten.", -"There is no error, the file uploaded with success" => "De upload van het bestand is goedgegaan.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Het bestand overschrijdt de upload_max_filesize instelling in php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Het bestand overschrijdt de MAX_FILE_SIZE instelling dat is opgegeven in het HTML formulier", -"The uploaded file was only partially uploaded" => "Het bestand is gedeeltelijk geüpload", -"No file was uploaded" => "Er is geen bestand geüpload", -"Missing a temporary folder" => "Er ontbreekt een tijdelijke map", -"Couldn't save temporary image: " => "Kan tijdelijk plaatje niet op slaan:", -"Couldn't load temporary image: " => "Kan tijdelijk plaatje niet op laden:", -"No file was uploaded. Unknown error" => "Er was geen bestand geladen. Onbekende fout", -"Contacts" => "Contacten", -"Sorry, this functionality has not been implemented yet" => "Sorry, deze functionaliteit is nog niet geïmplementeerd", -"Not implemented" => "Niet geïmplementeerd", -"Couldn't get a valid address." => "Kan geen geldig adres krijgen", -"Error" => "Fout", -"You do not have permission to add contacts to " => "U hebt geen permissie om contacten toe te voegen aan", -"Please select one of your own address books." => "Selecteer één van uw eigen adresboeken", -"Permission error" => "Permissie fout", -"This property has to be non-empty." => "Dit veld mag niet leeg blijven", -"Couldn't serialize elements." => "Kan de elementen niet serializen", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' aangeroepen zonder type argument. Rapporteer dit a.u.b. via http://bugs.owncloud.org", -"Edit name" => "Pas naam aan", -"No files selected for upload." => "Geen bestanden geselecteerd voor upload.", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Het bestand dat u probeert te uploaden overschrijdt de maximale bestand grootte voor bestand uploads voor deze server.", -"Error loading profile picture." => "Fout profiel plaatje kan niet worden geladen.", -"Select type" => "Selecteer type", -"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "Enkele contacten zijn gemarkeerd om verwijderd te worden, maar zijn nog niet verwijderd. Wacht totdat ze zijn verwijderd.", -"Do you want to merge these address books?" => "Wilt u deze adresboeken samenvoegen?", -"Result: " => "Resultaat:", -" imported, " => "geïmporteerd,", -" failed." => "gefaald.", -"Displayname cannot be empty." => "Displaynaam mag niet leeg zijn.", -"Addressbook not found: " => "Adresboek niet gevonden:", -"This is not your addressbook." => "Dit is niet uw adresboek.", -"Contact could not be found." => "Contact kon niet worden gevonden.", -"Jabber" => "Jabber", -"AIM" => "AIM", -"MSN" => "MSN", -"Twitter" => "Twitter", -"GoogleTalk" => "GoogleTalk", -"Facebook" => "Facebook", -"XMPP" => "XMPP", -"ICQ" => "ICQ", -"Yahoo" => "Yahoo", -"Skype" => "Skype", -"QQ" => "QQ", -"GaduGadu" => "GaduGadu", -"Work" => "Werk", -"Home" => "Thuis", -"Other" => "Anders", -"Mobile" => "Mobiel", -"Text" => "Tekst", -"Voice" => "Stem", -"Message" => "Bericht", -"Fax" => "Fax", -"Video" => "Video", -"Pager" => "Pieper", -"Internet" => "Internet", -"Birthday" => "Verjaardag", -"Business" => "Business", -"Call" => "Bel", -"Clients" => "Klanten", -"Deliverer" => "Leverancier", -"Holidays" => "Vakanties", -"Ideas" => "Ideeën", -"Journey" => "Reis", -"Jubilee" => "Jubileum", -"Meeting" => "Vergadering", -"Personal" => "Persoonlijk", -"Projects" => "Projecten", -"Questions" => "Vragen", -"{name}'s Birthday" => "{name}'s verjaardag", -"Contact" => "Contact", -"You do not have the permissions to edit this contact." => "U heeft geen permissie om dit contact te bewerken.", -"You do not have the permissions to delete this contact." => "U heeft geen permissie om dit contact te verwijderen.", -"Add Contact" => "Contact toevoegen", -"Import" => "Importeer", -"Settings" => "Instellingen", -"Addressbooks" => "Adresboeken", -"Close" => "Sluiten", -"Keyboard shortcuts" => "Sneltoetsen", -"Navigation" => "Navigatie", -"Next contact in list" => "Volgende contact in de lijst", -"Previous contact in list" => "Vorige contact in de lijst", -"Expand/collapse current addressbook" => "Uitklappen / inklappen huidig adresboek", -"Next addressbook" => "Volgende adresboek", -"Previous addressbook" => "Vorige adresboek", -"Actions" => "Acties", -"Refresh contacts list" => "Vernieuw contact lijst", -"Add new contact" => "Voeg nieuw contact toe", -"Add new addressbook" => "Voeg nieuw adresboek toe", -"Delete current contact" => "Verwijder huidig contact", -"Drop photo to upload" => "Verwijder foto uit upload", -"Delete current photo" => "Verwijdere huidige foto", -"Edit current photo" => "Wijzig huidige foto", -"Upload new photo" => "Upload nieuwe foto", -"Select photo from ownCloud" => "Selecteer foto uit ownCloud", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formateer aangepast, Korte naam, Volledige naam, Achteruit of Achteruit met komma", -"Edit name details" => "Wijzig naam gegevens", -"Organization" => "Organisatie", -"Delete" => "Verwijderen", -"Nickname" => "Roepnaam", -"Enter nickname" => "Voer roepnaam in", -"Web site" => "Website", -"http://www.somesite.com" => "http://www.willekeurigesite.com", -"Go to web site" => "Ga naar website", -"dd-mm-yyyy" => "dd-mm-yyyy", -"Groups" => "Groepen", -"Separate groups with commas" => "Gebruik komma bij meerder groepen", -"Edit groups" => "Wijzig groepen", -"Preferred" => "Voorkeur", -"Please specify a valid email address." => "Geef een geldig email adres op.", -"Enter email address" => "Voer email adres in", -"Mail to address" => "Mail naar adres", -"Delete email address" => "Verwijder email adres", -"Enter phone number" => "Voer telefoonnummer in", -"Delete phone number" => "Verwijdere telefoonnummer", -"Instant Messenger" => "Instant Messenger", -"Delete IM" => "Verwijder IM", -"View on map" => "Bekijk op een kaart", -"Edit address details" => "Wijzig adres gegevens", -"Add notes here." => "Voeg notitie toe", -"Add field" => "Voeg veld toe", -"Phone" => "Telefoon", -"Email" => "E-mail", -"Instant Messaging" => "Instant Messaging", -"Address" => "Adres", -"Note" => "Notitie", -"Download contact" => "Download contact", -"Delete contact" => "Verwijder contact", -"The temporary image has been removed from cache." => "Het tijdelijke plaatje is uit de cache verwijderd.", -"Edit address" => "Wijzig adres", -"Type" => "Type", -"PO Box" => "Postbus", -"Street address" => "Adres", -"Street and number" => "Straat en nummer", -"Extended" => "Uitgebreide", -"Apartment number etc." => "Apartement nummer", -"City" => "Stad", -"Region" => "Regio", -"E.g. state or province" => "Provincie", -"Zipcode" => "Postcode", -"Postal code" => "Postcode", -"Country" => "Land", -"Addressbook" => "Adresboek", -"Hon. prefixes" => "Hon. prefixes", -"Miss" => "Mw", -"Ms" => "Mw", -"Mr" => "M", -"Sir" => "M", -"Mrs" => "Mw", -"Dr" => "M", -"Given name" => "Voornaam", -"Additional names" => "Extra namen", -"Family name" => "Achternaam", -"Import a contacts file" => "Importeer een contacten bestand", -"Please choose the addressbook" => "Kies een adresboek", -"create a new addressbook" => "Maak een nieuw adresboek", -"Name of new addressbook" => "Naam van nieuw adresboek", -"Importing contacts" => "Importeren van contacten", -"You have no contacts in your addressbook." => "Je hebt geen contacten in je adresboek", -"Add contact" => "Contactpersoon toevoegen", -"Select Address Books" => "Selecteer adresboeken", -"Enter name" => "Naam", -"Enter description" => "Beschrijving", -"CardDAV syncing addresses" => "CardDAV synchroniseert de adressen", -"more info" => "meer informatie", -"Primary address (Kontact et al)" => "Standaardadres", -"iOS/OS X" => "IOS/OS X", -"Show CardDav link" => "Laat CardDav link zien", -"Show read-only VCF link" => "Laat alleen lezen VCF link zien", -"Share" => "Deel", -"Download" => "Download", -"Edit" => "Bewerken", -"New Address Book" => "Nieuw Adresboek", -"Name" => "Naam", -"Description" => "Beschrijving", -"Save" => "Opslaan", -"Cancel" => "Anuleren", -"More..." => "Meer..." -); diff --git a/apps/contacts/l10n/nn_NO.php b/apps/contacts/l10n/nn_NO.php deleted file mode 100644 index 2e3ab16da3e..00000000000 --- a/apps/contacts/l10n/nn_NO.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Ein feil oppstod ved (de)aktivering av adressebok.", -"Error updating addressbook." => "Eit problem oppstod ved å oppdatere adresseboka.", -"There was an error adding the contact." => "Det kom ei feilmelding då kontakta vart lagt til.", -"Cannot add empty property." => "Kan ikkje leggja til tomt felt.", -"At least one of the address fields has to be filled out." => "Minst eit av adressefelta må fyllast ut.", -"Information about vCard is incorrect. Please reload the page." => "Informasjonen om vCard-et er feil, ver venleg og last sida på nytt.", -"Contacts" => "Kotaktar", -"This is not your addressbook." => "Dette er ikkje di adressebok.", -"Contact could not be found." => "Fann ikkje kontakten.", -"Work" => "Arbeid", -"Home" => "Heime", -"Mobile" => "Mobil", -"Text" => "Tekst", -"Voice" => "Tale", -"Fax" => "Faks", -"Video" => "Video", -"Pager" => "Personsøkjar", -"Birthday" => "Bursdag", -"Contact" => "Kontakt", -"Add Contact" => "Legg til kontakt", -"Addressbooks" => "Adressebøker", -"Organization" => "Organisasjon", -"Delete" => "Slett", -"Preferred" => "Føretrekt", -"Phone" => "Telefonnummer", -"Email" => "Epost", -"Address" => "Adresse", -"Download contact" => "Last ned kontakt", -"Delete contact" => "Slett kontakt", -"Type" => "Skriv", -"PO Box" => "Postboks", -"Extended" => "Utvida", -"City" => "Stad", -"Region" => "Region/fylke", -"Zipcode" => "Postnummer", -"Country" => "Land", -"Addressbook" => "Adressebok", -"Download" => "Last ned", -"Edit" => "Endra", -"New Address Book" => "Ny adressebok", -"Save" => "Lagre", -"Cancel" => "Kanseller" -); diff --git a/apps/contacts/l10n/pl.php b/apps/contacts/l10n/pl.php deleted file mode 100644 index 924622ebb0f..00000000000 --- a/apps/contacts/l10n/pl.php +++ /dev/null @@ -1,219 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Błąd (de)aktywowania książki adresowej.", -"id is not set." => "id nie ustawione.", -"Cannot update addressbook with an empty name." => "Nie można zaktualizować książki adresowej z pustą nazwą.", -"Error updating addressbook." => "Błąd uaktualniania książki adresowej.", -"No ID provided" => "Brak opatrzonego ID ", -"Error setting checksum." => "Błąd ustawień sumy kontrolnej", -"No categories selected for deletion." => "Nie zaznaczono kategorii do usunięcia", -"No address books found." => "Nie znaleziono książek adresowych", -"No contacts found." => "Nie znaleziono kontaktów.", -"There was an error adding the contact." => "Wystąpił błąd podczas dodawania kontaktu.", -"element name is not set." => "nazwa elementu nie jest ustawiona.", -"Could not parse contact: " => "Nie można parsować kontaktu:", -"Cannot add empty property." => "Nie można dodać pustego elementu.", -"At least one of the address fields has to be filled out." => "Należy wypełnić przynajmniej jedno pole adresu.", -"Trying to add duplicate property: " => "Próba dodania z duplikowanej właściwości:", -"Information about vCard is incorrect. Please reload the page." => "Informacje o vCard są nieprawidłowe. Proszę odświeżyć stronę.", -"Missing ID" => "Brak ID", -"Error parsing VCard for ID: \"" => "Wystąpił błąd podczas przetwarzania VCard ID: \"", -"checksum is not set." => "checksum-a nie ustawiona", -"Information about vCard is incorrect. Please reload the page: " => "Informacje na temat vCard są niepoprawne. Proszę przeładuj stronę:", -"Something went FUBAR. " => "Gdyby coś poszło FUBAR.", -"No contact ID was submitted." => "ID kontaktu nie został utworzony.", -"Error reading contact photo." => "Błąd odczytu zdjęcia kontaktu.", -"Error saving temporary file." => "Wystąpił błąd podczas zapisywania pliku tymczasowego.", -"The loading photo is not valid." => "Wczytywane zdjęcie nie jest poprawne.", -"Contact ID is missing." => "Brak kontaktu id.", -"No photo path was submitted." => "Ścieżka do zdjęcia nie została podana.", -"File doesn't exist:" => "Plik nie istnieje:", -"Error loading image." => "Błąd ładowania obrazu.", -"Error getting contact object." => "Błąd pobrania kontaktu.", -"Error getting PHOTO property." => "Błąd uzyskiwania właściwości ZDJĘCIA.", -"Error saving contact." => "Błąd zapisu kontaktu.", -"Error resizing image" => "Błąd zmiany rozmiaru obrazu", -"Error cropping image" => "Błąd przycinania obrazu", -"Error creating temporary image" => "Błąd utworzenia obrazu tymczasowego", -"Error finding image: " => "Błąd znajdowanie obrazu: ", -"Error uploading contacts to storage." => "Wystąpił błąd podczas wysyłania kontaktów do magazynu.", -"There is no error, the file uploaded with success" => "Nie było błędów, plik wyczytano poprawnie.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Załadowany plik przekracza wielkość upload_max_filesize w php.ini ", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Wczytywany plik przekracza wielkość MAX_FILE_SIZE, która została określona w formularzu HTML", -"The uploaded file was only partially uploaded" => "Załadowany plik tylko częściowo został wysłany.", -"No file was uploaded" => "Plik nie został załadowany", -"Missing a temporary folder" => "Brak folderu tymczasowego", -"Couldn't save temporary image: " => "Nie można zapisać obrazu tymczasowego: ", -"Couldn't load temporary image: " => "Nie można wczytać obrazu tymczasowego: ", -"No file was uploaded. Unknown error" => "Plik nie został załadowany. Nieznany błąd", -"Contacts" => "Kontakty", -"Sorry, this functionality has not been implemented yet" => "Niestety, ta funkcja nie została jeszcze zaimplementowana", -"Not implemented" => "Nie wdrożono", -"Couldn't get a valid address." => "Nie można pobrać prawidłowego adresu.", -"Error" => "Błąd", -"This property has to be non-empty." => "Ta właściwość nie może być pusta.", -"Couldn't serialize elements." => "Nie można serializować elementów.", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "\"deleteProperty' wywołana bez argumentu typu. Proszę raportuj na bugs.owncloud.org", -"Edit name" => "Zmień nazwę", -"No files selected for upload." => "Żadne pliki nie zostały zaznaczone do wysłania.", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Plik, który próbujesz wysłać przekracza maksymalny rozmiar pliku przekazywania na tym serwerze.", -"Error loading profile picture." => "Błąd wczytywania zdjęcia profilu.", -"Select type" => "Wybierz typ", -"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "Niektóre kontakty są zaznaczone do usunięcia, ale nie są usunięte jeszcze. Proszę czekać na ich usunięcie.", -"Do you want to merge these address books?" => "Czy chcesz scalić te książki adresowe?", -"Result: " => "Wynik: ", -" imported, " => " importowane, ", -" failed." => " nie powiodło się.", -"Displayname cannot be empty." => "Nazwa nie może być pusta.", -"Addressbook not found: " => "Nie znaleziono książki adresowej:", -"This is not your addressbook." => "To nie jest Twoja książka adresowa.", -"Contact could not be found." => "Nie można odnaleźć kontaktu.", -"Jabber" => "Jabber", -"AIM" => "AIM", -"MSN" => "MSN", -"Twitter" => "Twitter", -"GoogleTalk" => "GoogleTalk", -"Facebook" => "Facebook", -"XMPP" => "XMPP", -"ICQ" => "ICQ", -"Yahoo" => "Yahoo", -"Skype" => "Skype", -"QQ" => "QQ", -"GaduGadu" => "GG", -"Work" => "Praca", -"Home" => "Dom", -"Other" => "Inne", -"Mobile" => "Komórka", -"Text" => "Połączenie tekstowe", -"Voice" => "Połączenie głosowe", -"Message" => "Wiadomość", -"Fax" => "Faks", -"Video" => "Połączenie wideo", -"Pager" => "Pager", -"Internet" => "Internet", -"Birthday" => "Urodziny", -"Business" => "Biznesowe", -"Call" => "Wywołanie", -"Clients" => "Klienci", -"Deliverer" => "Doręczanie", -"Holidays" => "Święta", -"Ideas" => "Pomysły", -"Journey" => "Podróż", -"Jubilee" => "Jubileusz", -"Meeting" => "Spotkanie", -"Personal" => "Osobiste", -"Projects" => "Projekty", -"Questions" => "Pytania", -"{name}'s Birthday" => "{name} Urodzony", -"Contact" => "Kontakt", -"Add Contact" => "Dodaj kontakt", -"Import" => "Import", -"Settings" => "Ustawienia", -"Addressbooks" => "Książki adresowe", -"Close" => "Zamknij", -"Keyboard shortcuts" => "Skróty klawiatury", -"Navigation" => "Nawigacja", -"Next contact in list" => "Następny kontakt na liście", -"Previous contact in list" => "Poprzedni kontakt na liście", -"Expand/collapse current addressbook" => "Rozwiń/Zwiń bieżącą książkę adresową", -"Next addressbook" => "Następna książka adresowa", -"Previous addressbook" => "Poprzednia książka adresowa", -"Actions" => "Akcje", -"Refresh contacts list" => "Odśwież listę kontaktów", -"Add new contact" => "Dodaj nowy kontakt", -"Add new addressbook" => "Dodaj nowa książkę adresową", -"Delete current contact" => "Usuń obecny kontakt", -"Drop photo to upload" => "Upuść fotografię aby załadować", -"Delete current photo" => "Usuń aktualne zdjęcie", -"Edit current photo" => "Edytuj aktualne zdjęcie", -"Upload new photo" => "Wczytaj nowe zdjęcie", -"Select photo from ownCloud" => "Wybierz zdjęcie z ownCloud", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Format niestandardowy, krótkie nazwy, imię i nazwisko, Odwracać lub Odwrócić z przecinkiem", -"Edit name details" => "Edytuj szczegóły nazwy", -"Organization" => "Organizacja", -"Delete" => "Usuwa książkę adresową", -"Nickname" => "Nazwa", -"Enter nickname" => "Wpisz nazwę", -"Web site" => "Strona www", -"http://www.somesite.com" => "http://www.jakasstrona.pl", -"Go to web site" => "Idż do strony www", -"dd-mm-yyyy" => "dd-mm-rrrr", -"Groups" => "Grupy", -"Separate groups with commas" => "Oddziel grupy przecinkami", -"Edit groups" => "Edytuj grupy", -"Preferred" => "Preferowane", -"Please specify a valid email address." => "Określ prawidłowy adres e-mail.", -"Enter email address" => "Wpisz adres email", -"Mail to address" => "Mail na adres", -"Delete email address" => "Usuń adres mailowy", -"Enter phone number" => "Wpisz numer telefonu", -"Delete phone number" => "Usuń numer telefonu", -"View on map" => "Zobacz na mapie", -"Edit address details" => "Edytuj szczegóły adresu", -"Add notes here." => "Dodaj notatkę tutaj.", -"Add field" => "Dodaj pole", -"Phone" => "Telefon", -"Email" => "E-mail", -"Address" => "Adres", -"Note" => "Uwaga", -"Download contact" => "Pobiera kontakt", -"Delete contact" => "Usuwa kontakt", -"The temporary image has been removed from cache." => "Tymczasowy obraz został usunięty z pamięci podręcznej.", -"Edit address" => "Edytuj adres", -"Type" => "Typ", -"PO Box" => "Skrzynka pocztowa", -"Street address" => "Ulica", -"Street and number" => "Ulica i numer", -"Extended" => "Rozszerzony", -"Apartment number etc." => "Numer lokalu", -"City" => "Miasto", -"Region" => "Region", -"E.g. state or province" => "Np. stanu lub prowincji", -"Zipcode" => "Kod pocztowy", -"Postal code" => "Kod pocztowy", -"Country" => "Kraj", -"Addressbook" => "Książka adresowa", -"Hon. prefixes" => "Prefiksy Hon.", -"Miss" => "Panna", -"Ms" => "Ms", -"Mr" => "Pan", -"Sir" => "Sir", -"Mrs" => "Pani", -"Dr" => "Dr", -"Given name" => "Podaj imię", -"Additional names" => "Dodatkowe nazwy", -"Family name" => "Nazwa rodziny", -"Hon. suffixes" => "Sufiksy Hon.", -"J.D." => "J.D.", -"M.D." => "M.D.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Ph.D.", -"Esq." => "Esq.", -"Jr." => "Jr.", -"Sn." => "Sn.", -"Import a contacts file" => "Importuj plik z kontaktami", -"Please choose the addressbook" => "Proszę wybrać książkę adresową", -"create a new addressbook" => "utwórz nową książkę adresową", -"Name of new addressbook" => "Nazwa nowej książki adresowej", -"Importing contacts" => "importuj kontakty", -"You have no contacts in your addressbook." => "Nie masz żadnych kontaktów w swojej książce adresowej.", -"Add contact" => "Dodaj kontakt", -"Select Address Books" => "Wybierz książki adresowe", -"Enter name" => "Wpisz nazwę", -"Enter description" => "Wprowadź opis", -"CardDAV syncing addresses" => "adres do synchronizacji CardDAV", -"more info" => "więcej informacji", -"Primary address (Kontact et al)" => "Pierwszy adres", -"iOS/OS X" => "iOS/OS X", -"Show CardDav link" => "Pokaż link CardDAV", -"Show read-only VCF link" => "Pokaż tylko do odczytu łącze VCF", -"Share" => "Udostępnij", -"Download" => "Pobiera książkę adresową", -"Edit" => "Edytuje książkę adresową", -"New Address Book" => "Nowa książka adresowa", -"Name" => "Nazwa", -"Description" => "Opis", -"Save" => "Zapisz", -"Cancel" => "Anuluj", -"More..." => "Więcej..." -); diff --git a/apps/contacts/l10n/pt_BR.php b/apps/contacts/l10n/pt_BR.php deleted file mode 100644 index de43e6cbb0f..00000000000 --- a/apps/contacts/l10n/pt_BR.php +++ /dev/null @@ -1,158 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Erro ao (des)ativar agenda.", -"id is not set." => "ID não definido.", -"Cannot update addressbook with an empty name." => "Não é possível atualizar sua agenda com um nome em branco.", -"Error updating addressbook." => "Erro ao atualizar agenda.", -"No ID provided" => "Nenhum ID fornecido", -"Error setting checksum." => "Erro ajustando checksum.", -"No categories selected for deletion." => "Nenhum categoria selecionada para remoção.", -"No address books found." => "Nenhuma agenda de endereços encontrada.", -"No contacts found." => "Nenhum contato encontrado.", -"There was an error adding the contact." => "Ocorreu um erro ao adicionar o contato.", -"element name is not set." => "nome do elemento não definido.", -"Cannot add empty property." => "Não é possível adicionar propriedade vazia.", -"At least one of the address fields has to be filled out." => "Pelo menos um dos campos de endereço tem que ser preenchido.", -"Trying to add duplicate property: " => "Tentando adiciona propriedade duplicada:", -"Information about vCard is incorrect. Please reload the page." => "Informações sobre vCard é incorreta. Por favor, recarregue a página.", -"Missing ID" => "Faltando ID", -"Error parsing VCard for ID: \"" => "Erro de identificação VCard para ID:", -"checksum is not set." => "checksum não definido.", -"Information about vCard is incorrect. Please reload the page: " => "Informação sobre vCard incorreto. Por favor, recarregue a página:", -"Something went FUBAR. " => "Something went FUBAR. ", -"No contact ID was submitted." => "Nenhum ID do contato foi submetido.", -"Error reading contact photo." => "Erro de leitura na foto do contato.", -"Error saving temporary file." => "Erro ao salvar arquivo temporário.", -"The loading photo is not valid." => "Foto carregada não é válida.", -"Contact ID is missing." => "ID do contato está faltando.", -"No photo path was submitted." => "Nenhum caminho para foto foi submetido.", -"File doesn't exist:" => "Arquivo não existe:", -"Error loading image." => "Erro ao carregar imagem.", -"Error getting contact object." => "Erro ao obter propriedade de contato.", -"Error getting PHOTO property." => "Erro ao obter propriedade da FOTO.", -"Error saving contact." => "Erro ao salvar contato.", -"Error resizing image" => "Erro ao modificar tamanho da imagem", -"Error cropping image" => "Erro ao recortar imagem", -"Error creating temporary image" => "Erro ao criar imagem temporária", -"Error finding image: " => "Erro ao localizar imagem:", -"Error uploading contacts to storage." => "Erro enviando contatos para armazenamento.", -"There is no error, the file uploaded with success" => "Arquivo enviado com sucesso", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "O arquivo enviado excede a diretiva upload_max_filesize em php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O arquivo carregado excede o argumento MAX_FILE_SIZE especificado no formulário HTML", -"The uploaded file was only partially uploaded" => "O arquivo foi parcialmente carregado", -"No file was uploaded" => "Nenhum arquivo carregado", -"Missing a temporary folder" => "Diretório temporário não encontrado", -"Couldn't save temporary image: " => "Não foi possível salvar a imagem temporária:", -"Couldn't load temporary image: " => "Não foi possível carregar a imagem temporária:", -"No file was uploaded. Unknown error" => "Nenhum arquivo foi transferido. Erro desconhecido", -"Contacts" => "Contatos", -"Sorry, this functionality has not been implemented yet" => "Desculpe, esta funcionalidade não foi implementada ainda", -"Not implemented" => "não implementado", -"Couldn't get a valid address." => "Não foi possível obter um endereço válido.", -"Error" => "Erro", -"This property has to be non-empty." => "Esta propriedade não pode estar vazia.", -"Couldn't serialize elements." => "Não foi possível serializar elementos.", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "\"deleteProperty\" chamado sem argumento de tipo. Por favor, informe a bugs.owncloud.org", -"Edit name" => "Editar nome", -"No files selected for upload." => "Nenhum arquivo selecionado para carregar.", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "O arquivo que você está tentando carregar excede o tamanho máximo para este servidor.", -"Select type" => "Selecione o tipo", -"Result: " => "Resultado:", -" imported, " => "importado,", -" failed." => "falhou.", -"This is not your addressbook." => "Esta não é a sua agenda de endereços.", -"Contact could not be found." => "Contato não pôde ser encontrado.", -"Work" => "Trabalho", -"Home" => "Home", -"Mobile" => "Móvel", -"Text" => "Texto", -"Voice" => "Voz", -"Message" => "Mensagem", -"Fax" => "Fax", -"Video" => "Vídeo", -"Pager" => "Pager", -"Internet" => "Internet", -"Birthday" => "Aniversário", -"{name}'s Birthday" => "Aniversário de {name}", -"Contact" => "Contato", -"Add Contact" => "Adicionar Contato", -"Import" => "Importar", -"Addressbooks" => "Agendas de Endereço", -"Close" => "Fechar.", -"Drop photo to upload" => "Arraste a foto para ser carregada", -"Delete current photo" => "Deletar imagem atual", -"Edit current photo" => "Editar imagem atual", -"Upload new photo" => "Carregar nova foto", -"Select photo from ownCloud" => "Selecionar foto do OwnCloud", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formato personalizado, Nome curto, Nome completo, Inverter ou Inverter com vírgula", -"Edit name details" => "Editar detalhes do nome", -"Organization" => "Organização", -"Delete" => "Excluir", -"Nickname" => "Apelido", -"Enter nickname" => "Digite o apelido", -"dd-mm-yyyy" => "dd-mm-aaaa", -"Groups" => "Grupos", -"Separate groups with commas" => "Separe grupos por virgula", -"Edit groups" => "Editar grupos", -"Preferred" => "Preferido", -"Please specify a valid email address." => "Por favor, especifique um email válido.", -"Enter email address" => "Digite um endereço de email", -"Mail to address" => "Correio para endereço", -"Delete email address" => "Remover endereço de email", -"Enter phone number" => "Digite um número de telefone", -"Delete phone number" => "Remover número de telefone", -"View on map" => "Visualizar no mapa", -"Edit address details" => "Editar detalhes de endereço", -"Add notes here." => "Adicionar notas", -"Add field" => "Adicionar campo", -"Phone" => "Telefone", -"Email" => "E-mail", -"Address" => "Endereço", -"Note" => "Nota", -"Download contact" => "Baixar contato", -"Delete contact" => "Apagar contato", -"The temporary image has been removed from cache." => "A imagem temporária foi removida cache.", -"Edit address" => "Editar endereço", -"Type" => "Digite", -"PO Box" => "Caixa Postal", -"Extended" => "Estendido", -"City" => "Cidade", -"Region" => "Região", -"Zipcode" => "CEP", -"Country" => "País", -"Addressbook" => "Agenda de Endereço", -"Hon. prefixes" => "Exmo. Prefixos ", -"Miss" => "Senhorita", -"Ms" => "Srta.", -"Mr" => "Sr.", -"Sir" => "Senhor", -"Mrs" => "Sra.", -"Dr" => "Dr", -"Given name" => "Primeiro Nome", -"Additional names" => "Segundo Nome", -"Family name" => "Sobrenome", -"Hon. suffixes" => "Exmo. Sufixos", -"J.D." => "J.D.", -"M.D." => "M.D.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Ph.D.", -"Esq." => "Esq.", -"Jr." => "Jr.", -"Sn." => "Sn.", -"Import a contacts file" => "Importar arquivos de contato.", -"Please choose the addressbook" => "Por favor, selecione uma agenda de endereços", -"create a new addressbook" => "Criar nova agenda de endereços", -"Name of new addressbook" => "Nome da nova agenda de endereços", -"Importing contacts" => "Importar contatos", -"You have no contacts in your addressbook." => "Voce não tem contatos em sua agenda de endereços.", -"Add contact" => "Adicionar contatos", -"CardDAV syncing addresses" => "Sincronizando endereços CardDAV", -"more info" => "leia mais", -"Primary address (Kontact et al)" => "Endereço primário(Kontact et al)", -"iOS/OS X" => "iOS/OS X", -"Download" => "Baixar", -"Edit" => "Editar", -"New Address Book" => "Nova agenda", -"Save" => "Salvar", -"Cancel" => "Cancelar" -); diff --git a/apps/contacts/l10n/pt_PT.php b/apps/contacts/l10n/pt_PT.php deleted file mode 100644 index 38708c86206..00000000000 --- a/apps/contacts/l10n/pt_PT.php +++ /dev/null @@ -1,224 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Erro a (des)ativar o livro de endereços", -"id is not set." => "id não está definido", -"Cannot update addressbook with an empty name." => "Não é possivel actualizar o livro de endereços com o nome vazio.", -"Error updating addressbook." => "Erro a atualizar o livro de endereços", -"No ID provided" => "Nenhum ID inserido", -"Error setting checksum." => "Erro a definir checksum.", -"No categories selected for deletion." => "Nenhuma categoria selecionada para eliminar.", -"No address books found." => "Nenhum livro de endereços encontrado.", -"No contacts found." => "Nenhum contacto encontrado.", -"There was an error adding the contact." => "Erro ao adicionar contato", -"element name is not set." => "o nome do elemento não está definido.", -"Could not parse contact: " => "Incapaz de processar contacto", -"Cannot add empty property." => "Não é possivel adicionar uma propriedade vazia", -"At least one of the address fields has to be filled out." => "Pelo menos um dos campos de endereço precisa de estar preenchido", -"Trying to add duplicate property: " => "A tentar adicionar propriedade duplicada: ", -"Missing IM parameter." => "Falta o parâmetro de mensagens instantâneas (IM)", -"Unknown IM: " => "Mensagens instantâneas desconhecida (IM)", -"Information about vCard is incorrect. Please reload the page." => "A informação sobre o vCard está incorreta. Por favor refresque a página", -"Missing ID" => "Falta ID", -"Error parsing VCard for ID: \"" => "Erro a analisar VCard para o ID: \"", -"checksum is not set." => "Checksum não está definido.", -"Information about vCard is incorrect. Please reload the page: " => "A informação sobre o VCard está incorrecta. Por favor refresque a página: ", -"Something went FUBAR. " => "Algo provocou um FUBAR. ", -"No contact ID was submitted." => "Nenhum ID de contacto definido.", -"Error reading contact photo." => "Erro a ler a foto do contacto.", -"Error saving temporary file." => "Erro a guardar ficheiro temporário.", -"The loading photo is not valid." => "A foto carregada não é valida.", -"Contact ID is missing." => "Falta o ID do contacto.", -"No photo path was submitted." => "Nenhum caminho da foto definido.", -"File doesn't exist:" => "O ficheiro não existe:", -"Error loading image." => "Erro a carregar a imagem.", -"Error getting contact object." => "Erro a obter o objecto dos contactos", -"Error getting PHOTO property." => "Erro a obter a propriedade Foto", -"Error saving contact." => "Erro a guardar o contacto.", -"Error resizing image" => "Erro a redimensionar a imagem", -"Error cropping image" => "Erro a recorar a imagem", -"Error creating temporary image" => "Erro a criar a imagem temporária", -"Error finding image: " => "Erro enquanto pesquisava pela imagem: ", -"Error uploading contacts to storage." => "Erro a carregar os contactos para o armazenamento.", -"There is no error, the file uploaded with success" => "Não ocorreu erros, o ficheiro foi submetido com sucesso", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "O tamanho do ficheiro carregado excede o parametro upload_max_filesize em php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O tamanho do ficheiro carregado ultrapassa o valor MAX_FILE_SIZE definido no formulário HTML", -"The uploaded file was only partially uploaded" => "O ficheiro seleccionado foi apenas carregado parcialmente", -"No file was uploaded" => "Nenhum ficheiro foi submetido", -"Missing a temporary folder" => "Está a faltar a pasta temporária", -"Couldn't save temporary image: " => "Não foi possível guardar a imagem temporária: ", -"Couldn't load temporary image: " => "Não é possível carregar a imagem temporária: ", -"No file was uploaded. Unknown error" => "Nenhum ficheiro foi carregado. Erro desconhecido", -"Contacts" => "Contactos", -"Sorry, this functionality has not been implemented yet" => "Desculpe, esta funcionalidade ainda não está implementada", -"Not implemented" => "Não implementado", -"Couldn't get a valid address." => "Não foi possível obter um endereço válido.", -"Error" => "Erro", -"This property has to be non-empty." => "Esta propriedade não pode estar vazia.", -"Couldn't serialize elements." => "Não foi possivel serializar os elementos", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' chamada sem argumento definido. Por favor report o problema em bugs.owncloud.org", -"Edit name" => "Editar nome", -"No files selected for upload." => "Nenhum ficheiro seleccionado para enviar.", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "O tamanho do ficheiro que está a tentar carregar ultrapassa o limite máximo definido para ficheiros no servidor.", -"Error loading profile picture." => "Erro ao carregar imagem de perfil.", -"Select type" => "Seleccionar tipo", -"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "Alguns contactos forma marcados para apagar, mas ainda não foram apagados. Por favor espere que ele sejam apagados.", -"Do you want to merge these address books?" => "Quer fundir estes Livros de endereços?", -"Result: " => "Resultado: ", -" imported, " => " importado, ", -" failed." => " falhou.", -"Displayname cannot be empty." => "Displayname não pode ser vazio", -"Addressbook not found: " => "Livro de endereços não encontrado.", -"This is not your addressbook." => "Esta não é a sua lista de contactos", -"Contact could not be found." => "O contacto não foi encontrado", -"Jabber" => "Jabber", -"AIM" => "AIM", -"MSN" => "MSN", -"Twitter" => "Twitter", -"GoogleTalk" => "GoogleTalk", -"Facebook" => "Facebook", -"XMPP" => "XMPP", -"ICQ" => "ICQ", -"Yahoo" => "Yahoo", -"Skype" => "Skype", -"QQ" => "QQ", -"GaduGadu" => "GaduGadu", -"Work" => "Emprego", -"Home" => "Casa", -"Other" => "Outro", -"Mobile" => "Telemovel", -"Text" => "Texto", -"Voice" => "Voz", -"Message" => "Mensagem", -"Fax" => "Fax", -"Video" => "Vídeo", -"Pager" => "Pager", -"Internet" => "Internet", -"Birthday" => "Aniversário", -"Business" => "Empresa", -"Call" => "Telefonar", -"Clients" => "Clientes", -"Deliverer" => "Fornecedor", -"Holidays" => "Férias", -"Ideas" => "Ideias", -"Journey" => "Viagem", -"Jubilee" => "Jubileu", -"Meeting" => "Encontro", -"Personal" => "Pessoal", -"Projects" => "Projectos", -"Questions" => "Questões", -"{name}'s Birthday" => "Aniversário de {name}", -"Contact" => "Contacto", -"Add Contact" => "Adicionar Contacto", -"Import" => "Importar", -"Settings" => "Configurações", -"Addressbooks" => "Livros de endereços", -"Close" => "Fechar", -"Keyboard shortcuts" => "Atalhos de teclado", -"Navigation" => "Navegação", -"Next contact in list" => "Próximo contacto na lista", -"Previous contact in list" => "Contacto anterior na lista", -"Expand/collapse current addressbook" => "Expandir/encolher o livro de endereços atual", -"Next addressbook" => "Próximo livro de endereços", -"Previous addressbook" => "Livro de endereços anterior", -"Actions" => "Ações", -"Refresh contacts list" => "Recarregar lista de contactos", -"Add new contact" => "Adicionar novo contacto", -"Add new addressbook" => "Adicionar novo Livro de endereços", -"Delete current contact" => "Apagar o contacto atual", -"Drop photo to upload" => "Arraste e solte fotos para carregar", -"Delete current photo" => "Eliminar a foto actual", -"Edit current photo" => "Editar a foto actual", -"Upload new photo" => "Carregar nova foto", -"Select photo from ownCloud" => "Selecionar uma foto da ownCloud", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formate personalizado, Nome curto, Nome completo, Reverso ou Reverso com virgula", -"Edit name details" => "Editar detalhes do nome", -"Organization" => "Organização", -"Delete" => "Apagar", -"Nickname" => "Alcunha", -"Enter nickname" => "Introduza alcunha", -"Web site" => "Página web", -"http://www.somesite.com" => "http://www.somesite.com", -"Go to web site" => "Ir para página web", -"dd-mm-yyyy" => "dd-mm-aaaa", -"Groups" => "Grupos", -"Separate groups with commas" => "Separe os grupos usando virgulas", -"Edit groups" => "Editar grupos", -"Preferred" => "Preferido", -"Please specify a valid email address." => "Por favor indique um endereço de correio válido", -"Enter email address" => "Introduza endereço de email", -"Mail to address" => "Enviar correio para o endereço", -"Delete email address" => "Eliminar o endereço de correio", -"Enter phone number" => "Insira o número de telefone", -"Delete phone number" => "Eliminar o número de telefone", -"Instant Messenger" => "Mensageiro instantâneo", -"Delete IM" => "Apagar mensageiro instantâneo (IM)", -"View on map" => "Ver no mapa", -"Edit address details" => "Editar os detalhes do endereço", -"Add notes here." => "Insira notas aqui.", -"Add field" => "Adicionar campo", -"Phone" => "Telefone", -"Email" => "Email", -"Instant Messaging" => "Mensagens Instantâneas", -"Address" => "Morada", -"Note" => "Nota", -"Download contact" => "Transferir contacto", -"Delete contact" => "Apagar contato", -"The temporary image has been removed from cache." => "A imagem temporária foi retirada do cache.", -"Edit address" => "Editar endereço", -"Type" => "Tipo", -"PO Box" => "Apartado", -"Street address" => "Endereço da Rua", -"Street and number" => "Rua e número", -"Extended" => "Extendido", -"Apartment number etc." => "Número de Apartamento, etc.", -"City" => "Cidade", -"Region" => "Região", -"E.g. state or province" => "Por Ex. Estado ou província", -"Zipcode" => "Código Postal", -"Postal code" => "Código Postal", -"Country" => "País", -"Addressbook" => "Livro de endereços", -"Hon. prefixes" => "Prefixos honoráveis", -"Miss" => "Menina", -"Ms" => "Sra", -"Mr" => "Sr", -"Sir" => "Sr", -"Mrs" => "Senhora", -"Dr" => "Dr", -"Given name" => "Nome introduzido", -"Additional names" => "Nomes adicionais", -"Family name" => "Nome de familia", -"Hon. suffixes" => "Sufixos Honoráveis", -"J.D." => "D.J.", -"M.D." => "D.M.", -"D.O." => "Dr.", -"D.C." => "Dr.", -"Ph.D." => "Dr.", -"Esq." => "Esq.", -"Jr." => "Jr.", -"Sn." => "r.", -"Import a contacts file" => "Importar um ficheiro de contactos", -"Please choose the addressbook" => "Por favor seleccione o livro de endereços", -"create a new addressbook" => "Criar um novo livro de endereços", -"Name of new addressbook" => "Nome do novo livro de endereços", -"Importing contacts" => "A importar os contactos", -"You have no contacts in your addressbook." => "Não tem contactos no seu livro de endereços.", -"Add contact" => "Adicionar contacto", -"Select Address Books" => "Selecionar Livros de contactos", -"Enter name" => "Introduzir nome", -"Enter description" => "Introduzir descrição", -"CardDAV syncing addresses" => "CardDAV a sincronizar endereços", -"more info" => "mais informação", -"Primary address (Kontact et al)" => "Endereço primario (Kontact et al)", -"iOS/OS X" => "iOS/OS X", -"Show CardDav link" => "Mostrar ligação CardDAV", -"Show read-only VCF link" => "Mostrar ligações VCF só de leitura", -"Share" => "Partilhar", -"Download" => "Transferir", -"Edit" => "Editar", -"New Address Book" => "Novo livro de endereços", -"Name" => "Nome", -"Description" => "Descrição", -"Save" => "Guardar", -"Cancel" => "Cancelar", -"More..." => "Mais..." -); diff --git a/apps/contacts/l10n/ro.php b/apps/contacts/l10n/ro.php deleted file mode 100644 index 291e8d54f7b..00000000000 --- a/apps/contacts/l10n/ro.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "(Dez)activarea agendei a întâmpinat o eroare.", -"id is not set." => "ID-ul nu este stabilit", -"Error updating addressbook." => "Eroare la actualizarea agendei.", -"No ID provided" => "Nici un ID nu a fost furnizat", -"Error setting checksum." => "Eroare la stabilirea sumei de control", -"No categories selected for deletion." => "Nici o categorie selectată pentru ștergere", -"No address books found." => "Nici o carte de adrese găsită", -"No contacts found." => "Nici un contact găsit", -"There was an error adding the contact." => "O eroare a împiedicat adăugarea contactului.", -"element name is not set." => "numele elementului nu este stabilit.", -"Cannot add empty property." => "Nu se poate adăuga un câmp gol.", -"At least one of the address fields has to be filled out." => "Cel puțin unul din câmpurile adresei trebuie completat.", -"Information about vCard is incorrect. Please reload the page." => "Informațiile cărții de vizită sunt incorecte. Te rog reîncarcă pagina.", -"Missing ID" => "ID lipsă", -"Error parsing VCard for ID: \"" => "Eroare la prelucrarea VCard-ului pentru ID:\"", -"checksum is not set." => "suma de control nu este stabilită.", -"No contact ID was submitted." => "Nici un ID de contact nu a fost transmis", -"Error reading contact photo." => "Eroare la citerea fotografiei de contact", -"Error saving temporary file." => "Eroare la salvarea fișierului temporar.", -"The loading photo is not valid." => "Fotografia care se încarcă nu este validă.", -"Contact ID is missing." => "ID-ul de contact lipsește.", -"No photo path was submitted." => "Nici o adresă către fotografie nu a fost transmisă", -"File doesn't exist:" => "Fișierul nu există:", -"Error loading image." => "Eroare la încărcarea imaginii.", -"Contacts" => "Contacte", -"This is not your addressbook." => "Nu se găsește în agendă.", -"Contact could not be found." => "Contactul nu a putut fi găsit.", -"Work" => "Servicu", -"Home" => "Acasă", -"Mobile" => "Mobil", -"Text" => "Text", -"Voice" => "Voce", -"Message" => "Mesaj", -"Fax" => "Fax", -"Video" => "Video", -"Pager" => "Pager", -"Internet" => "Internet", -"Birthday" => "Zi de naștere", -"{name}'s Birthday" => "Ziua de naștere a {name}", -"Contact" => "Contact", -"Add Contact" => "Adaugă contact", -"Addressbooks" => "Agende", -"Edit name details" => "Introdu detalii despre nume", -"Organization" => "Organizație", -"Delete" => "Șterge", -"Nickname" => "Pseudonim", -"Enter nickname" => "Introdu pseudonim", -"dd-mm-yyyy" => "zz-ll-aaaa", -"Groups" => "Grupuri", -"Separate groups with commas" => "Separă grupurile cu virgule", -"Edit groups" => "Editează grupuri", -"Preferred" => "Preferat", -"Please specify a valid email address." => "Te rog să specifici un e-mail corect", -"Enter email address" => "Introdu adresa de e-mail", -"Mail to address" => "Trimite mesaj la e-mail", -"Delete email address" => "Șterge e-mail", -"Phone" => "Telefon", -"Email" => "Email", -"Address" => "Adresă", -"Download contact" => "Descarcă acest contact", -"Delete contact" => "Șterge contact", -"Type" => "Tip", -"PO Box" => "CP", -"Extended" => "Extins", -"City" => "Oraș", -"Region" => "Regiune", -"Zipcode" => "Cod poștal", -"Country" => "Țară", -"Addressbook" => "Agendă", -"Download" => "Descarcă", -"Edit" => "Editează", -"New Address Book" => "Agendă nouă", -"Save" => "Salvează", -"Cancel" => "Anulează" -); diff --git a/apps/contacts/l10n/ru.php b/apps/contacts/l10n/ru.php deleted file mode 100644 index eaeb385d3b0..00000000000 --- a/apps/contacts/l10n/ru.php +++ /dev/null @@ -1,229 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Ошибка (де)активации адресной книги.", -"id is not set." => "id не установлен.", -"Cannot update addressbook with an empty name." => "Нельзя обновить адресную книгу с пустым именем.", -"Error updating addressbook." => "Ошибка обновления адресной книги.", -"No ID provided" => "ID не предоставлен", -"Error setting checksum." => "Ошибка установки контрольной суммы.", -"No categories selected for deletion." => "Категории для удаления не установлены.", -"No address books found." => "Адресные книги не найдены.", -"No contacts found." => "Контакты не найдены.", -"There was an error adding the contact." => "Произошла ошибка при добавлении контакта.", -"element name is not set." => "имя элемента не установлено.", -"Could not parse contact: " => "Невозможно распознать контакт:", -"Cannot add empty property." => "Невозможно добавить пустой параметр.", -"At least one of the address fields has to be filled out." => "Как минимум одно поле адреса должно быть заполнено.", -"Trying to add duplicate property: " => "При попытке добавить дубликат:", -"Missing IM parameter." => "Отсутствует параметр IM.", -"Unknown IM: " => "Неизвестный IM:", -"Information about vCard is incorrect. Please reload the page." => "Информация о vCard некорректна. Пожалуйста, обновите страницу.", -"Missing ID" => "Отсутствует ID", -"Error parsing VCard for ID: \"" => "Ошибка обработки VCard для ID: \"", -"checksum is not set." => "контрольная сумма не установлена.", -"Information about vCard is incorrect. Please reload the page: " => "Информация о vCard не корректна. Перезагрузите страницу: ", -"Something went FUBAR. " => "Что-то пошло FUBAR.", -"No contact ID was submitted." => "Нет контакта ID", -"Error reading contact photo." => "Ошибка чтения фотографии контакта.", -"Error saving temporary file." => "Ошибка сохранения временного файла.", -"The loading photo is not valid." => "Загружаемая фотография испорчена.", -"Contact ID is missing." => "ID контакта отсутствует.", -"No photo path was submitted." => "Нет фото по адресу.", -"File doesn't exist:" => "Файл не существует:", -"Error loading image." => "Ошибка загрузки картинки.", -"Error getting contact object." => "Ошибка при получении контактов", -"Error getting PHOTO property." => "Ошибка при получении ФОТО.", -"Error saving contact." => "Ошибка при сохранении контактов.", -"Error resizing image" => "Ошибка изменения размера изображений", -"Error cropping image" => "Ошибка обрезки изображений", -"Error creating temporary image" => "Ошибка создания временных изображений", -"Error finding image: " => "Ошибка поиска изображений:", -"Error uploading contacts to storage." => "Ошибка загрузки контактов в хранилище.", -"There is no error, the file uploaded with success" => "Файл загружен успешно.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Загружаемый файл первосходит значение переменной upload_max_filesize, установленно в php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Загружаемый файл превосходит значение переменной MAX_FILE_SIZE, указанной в форме HTML", -"The uploaded file was only partially uploaded" => "Файл загружен частично", -"No file was uploaded" => "Файл не был загружен", -"Missing a temporary folder" => "Отсутствует временная папка", -"Couldn't save temporary image: " => "Не удалось сохранить временное изображение:", -"Couldn't load temporary image: " => "Не удалось загрузить временное изображение:", -"No file was uploaded. Unknown error" => "Файл не был загружен. Неизвестная ошибка", -"Contacts" => "Контакты", -"Sorry, this functionality has not been implemented yet" => "К сожалению, эта функция не была реализована", -"Not implemented" => "Не реализовано", -"Couldn't get a valid address." => "Не удалось получить адрес.", -"Error" => "Ошибка", -"You do not have permission to add contacts to " => "У вас нет разрешений добавлять контакты в", -"Please select one of your own address books." => "Выберите одну из ваших собственных адресных книг.", -"Permission error" => "Ошибка доступа", -"This property has to be non-empty." => "Это свойство должно быть не пустым.", -"Couldn't serialize elements." => "Не удалось сериализовать элементы.", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' called without type argument. Please report at bugs.owncloud.org", -"Edit name" => "Изменить имя", -"No files selected for upload." => "Нет выбранных файлов для загрузки.", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Файл, который вы пытаетесь загрузить превышать максимальный размер загружаемых файлов на этом сервере.", -"Error loading profile picture." => "Ошибка загрузки изображения профиля.", -"Select type" => "Выберите тип", -"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "Некоторые контакты помечены на удаление, но ещё не удалены. Подождите, пока они удаляются.", -"Do you want to merge these address books?" => "Вы хотите соединить эти адресные книги?", -"Result: " => "Результат:", -" imported, " => "импортировано, ", -" failed." => "не удалось.", -"Displayname cannot be empty." => "Отображаемое имя не может быть пустым.", -"Addressbook not found: " => "Адресная книга не найдена:", -"This is not your addressbook." => "Это не ваша адресная книга.", -"Contact could not be found." => "Контакт не найден.", -"Jabber" => "Jabber", -"AIM" => "AIM", -"MSN" => "MSN", -"Twitter" => "Twitter", -"GoogleTalk" => "GoogleTalk", -"Facebook" => "Facebook", -"XMPP" => "XMPP", -"ICQ" => "ICQ", -"Yahoo" => "Yahoo", -"Skype" => "Skype", -"QQ" => "QQ", -"GaduGadu" => "GaduGadu", -"Work" => "Рабочий", -"Home" => "Домашний", -"Other" => "Другое", -"Mobile" => "Мобильный", -"Text" => "Текст", -"Voice" => "Голос", -"Message" => "Сообщение", -"Fax" => "Факс", -"Video" => "Видео", -"Pager" => "Пейджер", -"Internet" => "Интернет", -"Birthday" => "День рождения", -"Business" => "Бизнес", -"Call" => "Вызов", -"Clients" => "Клиенты", -"Deliverer" => "Посыльный", -"Holidays" => "Праздники", -"Ideas" => "Идеи", -"Journey" => "Поездка", -"Jubilee" => "Юбилей", -"Meeting" => "Встреча", -"Personal" => "Личный", -"Projects" => "Проекты", -"Questions" => "Вопросы", -"{name}'s Birthday" => "День рождения {name}", -"Contact" => "Контакт", -"You do not have the permissions to edit this contact." => "У вас нет разрешений редактировать этот контакт.", -"You do not have the permissions to delete this contact." => "У вас нет разрешений удалять этот контакт.", -"Add Contact" => "Добавить Контакт", -"Import" => "Импорт", -"Settings" => "Настройки", -"Addressbooks" => "Адресные книги", -"Close" => "Закрыть", -"Keyboard shortcuts" => "Горячие клавиши", -"Navigation" => "Навигация", -"Next contact in list" => "Следующий контакт в списке", -"Previous contact in list" => "Предыдущий контакт в списке", -"Expand/collapse current addressbook" => "Развернуть/свернуть текущую адресную книгу", -"Next addressbook" => "Следующая адресная книга", -"Previous addressbook" => "Предыдущая адресная книга", -"Actions" => "Действия", -"Refresh contacts list" => "Обновить список контактов", -"Add new contact" => "Добавить новый контакт", -"Add new addressbook" => "Добавить новую адресную книгу", -"Delete current contact" => "Удалить текущий контакт", -"Drop photo to upload" => "Перетяните фотографии для загрузки", -"Delete current photo" => "Удалить текущую фотографию", -"Edit current photo" => "Редактировать текущую фотографию", -"Upload new photo" => "Загрузить новую фотографию", -"Select photo from ownCloud" => "Выбрать фотографию из ownCloud", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Формат Краткое имя, Полное имя", -"Edit name details" => "Изменить детали имени", -"Organization" => "Организация", -"Delete" => "Удалить", -"Nickname" => "Псевдоним", -"Enter nickname" => "Введите псевдоним", -"Web site" => "Веб-сайт", -"http://www.somesite.com" => "http://www.somesite.com", -"Go to web site" => "Перейти на веб-сайт", -"dd-mm-yyyy" => "dd-mm-yyyy", -"Groups" => "Группы", -"Separate groups with commas" => "Разделить группы запятыми", -"Edit groups" => "Редактировать группы", -"Preferred" => "Предпочитаемый", -"Please specify a valid email address." => "Укажите действительный адрес электронной почты.", -"Enter email address" => "Укажите адрес электронной почты", -"Mail to address" => "Написать по адресу", -"Delete email address" => "Удалить адрес электронной почты", -"Enter phone number" => "Ввести номер телефона", -"Delete phone number" => "Удалить номер телефона", -"Instant Messenger" => "Instant Messenger", -"Delete IM" => "Удалить IM", -"View on map" => "Показать на карте", -"Edit address details" => "Ввести детали адреса", -"Add notes here." => "Добавьте заметки здесь.", -"Add field" => "Добавить поле", -"Phone" => "Телефон", -"Email" => "Ящик эл. почты", -"Instant Messaging" => "Быстрые сообщения", -"Address" => "Адрес", -"Note" => "Заметка", -"Download contact" => "Скачать контакт", -"Delete contact" => "Удалить контакт", -"The temporary image has been removed from cache." => "Временный образ был удален из кэша.", -"Edit address" => "Редактировать адрес", -"Type" => "Тип", -"PO Box" => "АО", -"Street address" => "Улица", -"Street and number" => "Улица и дом", -"Extended" => "Расширенный", -"Apartment number etc." => "Номер квартиры и т.д.", -"City" => "Город", -"Region" => "Область", -"E.g. state or province" => "Например, область или район", -"Zipcode" => "Почтовый индекс", -"Postal code" => "Почтовый индекс", -"Country" => "Страна", -"Addressbook" => "Адресная книга", -"Hon. prefixes" => "Уважительные префиксы", -"Miss" => "Мисс", -"Ms" => "Г-жа", -"Mr" => "Г-н", -"Sir" => "Сэр", -"Mrs" => "Г-жа", -"Dr" => "Доктор", -"Given name" => "Имя", -"Additional names" => "Дополнительные имена (отчество)", -"Family name" => "Фамилия", -"Hon. suffixes" => "Hon. suffixes", -"J.D." => "Уважительные суффиксы", -"M.D." => "M.D.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Ph.D.", -"Esq." => "Esq.", -"Jr." => "Jr.", -"Sn." => "Sn.", -"Import a contacts file" => "Загрузить файл контактов", -"Please choose the addressbook" => "Выберите адресную книгу", -"create a new addressbook" => "создать новую адресную книгу", -"Name of new addressbook" => "Имя новой адресной книги", -"Importing contacts" => "Импорт контактов", -"You have no contacts in your addressbook." => "В адресной книге нет контактов.", -"Add contact" => "Добавить контакт", -"Select Address Books" => "Выбрать адресную книгу", -"Enter name" => "Введите имя", -"Enter description" => "Ввдите описание", -"CardDAV syncing addresses" => "CardDAV синхронизации адресов", -"more info" => "дополнительная информация", -"Primary address (Kontact et al)" => "Первичный адрес (Kontact и др.)", -"iOS/OS X" => "iOS/OS X", -"Show CardDav link" => "Показать ссылку CardDav", -"Show read-only VCF link" => "Показать нередактируемую ссылку VCF", -"Share" => "Опубликовать", -"Download" => "Скачать", -"Edit" => "Редактировать", -"New Address Book" => "Новая адресная книга", -"Name" => "Имя", -"Description" => "Описание", -"Save" => "Сохранить", -"Cancel" => "Отменить", -"More..." => "Ещё..." -); diff --git a/apps/contacts/l10n/sk_SK.php b/apps/contacts/l10n/sk_SK.php deleted file mode 100644 index 8295b32a6f1..00000000000 --- a/apps/contacts/l10n/sk_SK.php +++ /dev/null @@ -1,178 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Chyba (de)aktivácie adresára.", -"id is not set." => "ID nie je nastavené.", -"Cannot update addressbook with an empty name." => "Nedá sa upraviť adresár s prázdnym menom.", -"Error updating addressbook." => "Chyba aktualizácie adresára.", -"No ID provided" => "ID nezadané", -"Error setting checksum." => "Chyba pri nastavovaní kontrolného súčtu.", -"No categories selected for deletion." => "Žiadne kategórie neboli vybraté na odstránenie.", -"No address books found." => "Žiadny adresár nenájdený.", -"No contacts found." => "Žiadne kontakty nenájdené.", -"There was an error adding the contact." => "Vyskytla sa chyba pri pridávaní kontaktu.", -"element name is not set." => "meno elementu nie je nastavené.", -"Cannot add empty property." => "Nemôžem pridať prázdny údaj.", -"At least one of the address fields has to be filled out." => "Musí byť uvedený aspoň jeden adresný údaj.", -"Trying to add duplicate property: " => "Pokúšate sa pridať rovnaký atribút:", -"Information about vCard is incorrect. Please reload the page." => "Informácie o vCard sú neplatné. Prosím obnovte stránku.", -"Missing ID" => "Chýba ID", -"Error parsing VCard for ID: \"" => "Chyba pri vyňatí ID z VCard:", -"checksum is not set." => "kontrolný súčet nie je nastavený.", -"Information about vCard is incorrect. Please reload the page: " => "Informácia o vCard je nesprávna. Obnovte stránku, prosím.", -"Something went FUBAR. " => "Niečo sa pokazilo.", -"No contact ID was submitted." => "Nebolo nastavené ID kontaktu.", -"Error reading contact photo." => "Chyba pri čítaní fotky kontaktu.", -"Error saving temporary file." => "Chyba pri ukladaní dočasného súboru.", -"The loading photo is not valid." => "Načítaná fotka je vadná.", -"Contact ID is missing." => "Chýba ID kontaktu.", -"No photo path was submitted." => "Žiadna fotka nebola poslaná.", -"File doesn't exist:" => "Súbor neexistuje:", -"Error loading image." => "Chyba pri nahrávaní obrázka.", -"Error getting contact object." => "Chyba počas prevzatia objektu kontakt.", -"Error getting PHOTO property." => "Chyba počas získavania fotky.", -"Error saving contact." => "Chyba počas ukladania kontaktu.", -"Error resizing image" => "Chyba počas zmeny obrázku.", -"Error cropping image" => "Chyba počas orezania obrázku.", -"Error creating temporary image" => "Chyba počas vytvárania dočasného obrázku.", -"Error finding image: " => "Chyba vyhľadania obrázku: ", -"Error uploading contacts to storage." => "Chyba pri ukladaní kontaktov na úložisko.", -"There is no error, the file uploaded with success" => "Nevyskytla sa žiadna chyba, súbor úspešne uložené.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Ukladaný súbor prekračuje nastavenie upload_max_filesize v php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Ukladaný súbor prekračuje nastavenie MAX_FILE_SIZE z volieb HTML formulára.", -"The uploaded file was only partially uploaded" => "Ukladaný súbor sa nahral len čiastočne", -"No file was uploaded" => "Žiadny súbor nebol uložený", -"Missing a temporary folder" => "Chýba dočasný priečinok", -"Couldn't save temporary image: " => "Nemôžem uložiť dočasný obrázok: ", -"Couldn't load temporary image: " => "Nemôžem načítať dočasný obrázok: ", -"No file was uploaded. Unknown error" => "Žiaden súbor nebol odoslaný. Neznáma chyba", -"Contacts" => "Kontakty", -"Sorry, this functionality has not been implemented yet" => "Bohužiaľ, táto funkcia ešte nebola implementovaná", -"Not implemented" => "Neimplementované", -"Couldn't get a valid address." => "Nemôžem získať platnú adresu.", -"Error" => "Chyba", -"This property has to be non-empty." => "Tento parameter nemôže byť prázdny.", -"Couldn't serialize elements." => "Nemôžem previesť prvky.", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' zavolané bez argument. Prosím oznámte chybu na bugs.owncloud.org", -"Edit name" => "Upraviť meno", -"No files selected for upload." => "Žiadne súbory neboli vybrané k nahratiu", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Súbor, ktorý sa pokúšate nahrať, presahuje maximálnu povolenú veľkosť.", -"Select type" => "Vybrať typ", -"Result: " => "Výsledok: ", -" imported, " => " importovaných, ", -" failed." => " zlyhaných.", -"This is not your addressbook." => "Toto nie je váš adresár.", -"Contact could not be found." => "Kontakt nebol nájdený.", -"Work" => "Práca", -"Home" => "Domov", -"Other" => "Iné", -"Mobile" => "Mobil", -"Text" => "SMS", -"Voice" => "Odkazová schránka", -"Message" => "Správa", -"Fax" => "Fax", -"Video" => "Video", -"Pager" => "Pager", -"Internet" => "Internet", -"Birthday" => "Narodeniny", -"Business" => "Biznis", -"Clients" => "Klienti", -"Holidays" => "Prázdniny", -"Meeting" => "Stretnutie", -"Projects" => "Projekty", -"Questions" => "Otázky", -"{name}'s Birthday" => "Narodeniny {name}", -"Contact" => "Kontakt", -"Add Contact" => "Pridať Kontakt.", -"Import" => "Importovať", -"Addressbooks" => "Adresáre", -"Close" => "Zatvoriť", -"Keyboard shortcuts" => "Klávesové skratky", -"Navigation" => "Navigácia", -"Next contact in list" => "Ďalší kontakt v zozname", -"Previous contact in list" => "Predchádzajúci kontakt v zozname", -"Actions" => "Akcie", -"Refresh contacts list" => "Obnov zoznam kontaktov", -"Add new contact" => "Pridaj nový kontakt", -"Add new addressbook" => "Pridaj nový adresár", -"Delete current contact" => "Vymaž súčasný kontakt", -"Drop photo to upload" => "Pretiahnite sem fotku pre nahratie", -"Delete current photo" => "Odstrániť súčasnú fotku", -"Edit current photo" => "Upraviť súčasnú fotku", -"Upload new photo" => "Nahrať novú fotku", -"Select photo from ownCloud" => "Vybrať fotku z ownCloud", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Formát vlastný, krátke meno, celé meno, obrátené alebo obrátené s čiarkami", -"Edit name details" => "Upraviť podrobnosti mena", -"Organization" => "Organizácia", -"Delete" => "Odstrániť", -"Nickname" => "Prezývka", -"Enter nickname" => "Zadajte prezývku", -"dd-mm-yyyy" => "dd. mm. yyyy", -"Groups" => "Skupiny", -"Separate groups with commas" => "Oddelte skupiny čiarkami", -"Edit groups" => "Úprava skupín", -"Preferred" => "Uprednostňované", -"Please specify a valid email address." => "Prosím zadajte platnú e-mailovú adresu.", -"Enter email address" => "Zadajte e-mailové adresy", -"Mail to address" => "Odoslať na adresu", -"Delete email address" => "Odstrániť e-mailové adresy", -"Enter phone number" => "Zadajte telefónne číslo", -"Delete phone number" => "Odstrániť telefónne číslo", -"View on map" => "Zobraziť na mape", -"Edit address details" => "Upraviť podrobnosti adresy", -"Add notes here." => "Tu môžete pridať poznámky.", -"Add field" => "Pridať pole", -"Phone" => "Telefón", -"Email" => "E-mail", -"Address" => "Adresa", -"Note" => "Poznámka", -"Download contact" => "Stiahnuť kontakt", -"Delete contact" => "Odstrániť kontakt", -"The temporary image has been removed from cache." => "Dočasný obrázok bol odstránený z cache.", -"Edit address" => "Upraviť adresu", -"Type" => "Typ", -"PO Box" => "PO Box", -"Street address" => "Ulica", -"Street and number" => "Ulica a číslo", -"Extended" => "Rozšírené", -"City" => "Mesto", -"Region" => "Región", -"Zipcode" => "PSČ", -"Postal code" => "PSČ", -"Country" => "Krajina", -"Addressbook" => "Adresár", -"Hon. prefixes" => "Tituly pred", -"Miss" => "Slečna", -"Ms" => "Pani", -"Mr" => "Pán", -"Sir" => "Sir", -"Mrs" => "Pani", -"Dr" => "Dr.", -"Given name" => "Krstné meno", -"Additional names" => "Ďalšie mená", -"Family name" => "Priezvisko", -"Hon. suffixes" => "Tituly za", -"J.D." => "JUDr.", -"M.D." => "MUDr.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Ph.D.", -"Esq." => "Esq.", -"Jr." => "ml.", -"Sn." => "st.", -"Import a contacts file" => "Importovať súbor kontaktu", -"Please choose the addressbook" => "Prosím zvolte adresár", -"create a new addressbook" => "vytvoriť nový adresár", -"Name of new addressbook" => "Meno nového adresára", -"Importing contacts" => "Importovanie kontaktov", -"You have no contacts in your addressbook." => "Nemáte žiadne kontakty v adresári.", -"Add contact" => "Pridať kontakt", -"Enter name" => "Zadaj meno", -"CardDAV syncing addresses" => "Adresy pre synchronizáciu s CardDAV", -"more info" => "viac informácií", -"Primary address (Kontact et al)" => "Predvolená adresa (Kontakt etc)", -"iOS/OS X" => "iOS/OS X", -"Download" => "Stiahnuť", -"Edit" => "Upraviť", -"New Address Book" => "Nový adresár", -"Save" => "Uložiť", -"Cancel" => "Zrušiť" -); diff --git a/apps/contacts/l10n/sl.php b/apps/contacts/l10n/sl.php deleted file mode 100644 index fe0e8ef16c9..00000000000 --- a/apps/contacts/l10n/sl.php +++ /dev/null @@ -1,229 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Napaka med (de)aktivacijo imenika.", -"id is not set." => "id ni nastavljen.", -"Cannot update addressbook with an empty name." => "Ne morem posodobiti imenika s praznim imenom.", -"Error updating addressbook." => "Napaka pri posodabljanju imenika.", -"No ID provided" => "ID ni bil podan", -"Error setting checksum." => "Napaka pri nastavljanju nadzorne vsote.", -"No categories selected for deletion." => "Nobena kategorija ni bila izbrana za izbris.", -"No address books found." => "Ni bilo najdenih imenikov.", -"No contacts found." => "Ni bilo najdenih stikov.", -"There was an error adding the contact." => "Med dodajanjem stika je prišlo do napake", -"element name is not set." => "ime elementa ni nastavljeno.", -"Could not parse contact: " => "Ne morem razčleniti stika:", -"Cannot add empty property." => "Ne morem dodati prazne lastnosti.", -"At least one of the address fields has to be filled out." => "Vsaj eno izmed polj je še potrebno izpolniti.", -"Trying to add duplicate property: " => "Poskušam dodati podvojeno lastnost:", -"Missing IM parameter." => "Manjkajoč IM parameter.", -"Unknown IM: " => "Neznan IM:", -"Information about vCard is incorrect. Please reload the page." => "Informacije o vCard niso pravilne. Prosimo, če ponovno naložite stran.", -"Missing ID" => "Manjkajoč ID", -"Error parsing VCard for ID: \"" => "Napaka pri razčlenjevanju VCard za ID: \"", -"checksum is not set." => "nadzorna vsota ni nastavljena.", -"Information about vCard is incorrect. Please reload the page: " => "Informacija o vCard je napačna. Prosimo, če ponovno naložite stran: ", -"Something went FUBAR. " => "Nekaj je šlo v franže. ", -"No contact ID was submitted." => "ID stika ni bil poslan.", -"Error reading contact photo." => "Napaka pri branju slike stika.", -"Error saving temporary file." => "Napaka pri shranjevanju začasne datoteke.", -"The loading photo is not valid." => "Slika, ki se nalaga ni veljavna.", -"Contact ID is missing." => "Manjka ID stika.", -"No photo path was submitted." => "Pot slike ni bila poslana.", -"File doesn't exist:" => "Datoteka ne obstaja:", -"Error loading image." => "Napaka pri nalaganju slike.", -"Error getting contact object." => "Napaka pri pridobivanju kontakta predmeta.", -"Error getting PHOTO property." => "Napaka pri pridobivanju lastnosti fotografije.", -"Error saving contact." => "Napaka pri shranjevanju stika.", -"Error resizing image" => "Napaka pri spreminjanju velikosti slike", -"Error cropping image" => "Napaka pri obrezovanju slike", -"Error creating temporary image" => "Napaka pri ustvarjanju začasne slike", -"Error finding image: " => "Napaka pri iskanju datoteke: ", -"Error uploading contacts to storage." => "Napaka pri nalaganju stikov v hrambo.", -"There is no error, the file uploaded with success" => "Datoteka je bila uspešno naložena.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Naložena datoteka presega velikost, ki jo določa parameter upload_max_filesize v datoteki php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Naložena datoteka presega velikost, ki jo določa parameter MAX_FILE_SIZE v HTML obrazcu", -"The uploaded file was only partially uploaded" => "Datoteka je bila le delno naložena", -"No file was uploaded" => "Nobena datoteka ni bila naložena", -"Missing a temporary folder" => "Manjka začasna mapa", -"Couldn't save temporary image: " => "Začasne slike ni bilo mogoče shraniti: ", -"Couldn't load temporary image: " => "Začasne slike ni bilo mogoče naložiti: ", -"No file was uploaded. Unknown error" => "Nobena datoteka ni bila naložena. Neznana napaka", -"Contacts" => "Stiki", -"Sorry, this functionality has not been implemented yet" => "Žal ta funkcionalnost še ni podprta", -"Not implemented" => "Ni podprto", -"Couldn't get a valid address." => "Ne morem dobiti veljavnega naslova.", -"Error" => "Napaka", -"You do not have permission to add contacts to " => "Nimate dovoljenja za dodajanje stikov v", -"Please select one of your own address books." => "Prosimo, če izberete enega izmed vaših adresarjev.", -"Permission error" => "Napaka dovoljenj", -"This property has to be non-empty." => "Ta lastnost ne sme biti prazna", -"Couldn't serialize elements." => "Predmetov ni bilo mogoče dati v zaporedje.", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "\"deleteProperty\" je bila klicana brez vrste argumenta. Prosimo, če oddate poročilo o napaki na bugs.owncloud.org", -"Edit name" => "Uredi ime", -"No files selected for upload." => "Nobena datoteka ni bila izbrana za nalaganje.", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Datoteka, ki jo poskušate naložiti, presega največjo dovoljeno velikost za nalaganje na tem strežniku.", -"Error loading profile picture." => "Napaka pri nalaganju slike profila.", -"Select type" => "Izberite vrsto", -"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "Nekateri stiki so označeni za izbris, vendar še niso izbrisani. Prosimo, če počakate na njihov izbris.", -"Do you want to merge these address books?" => "Ali želite združiti adresarje?", -"Result: " => "Rezultati: ", -" imported, " => " uvoženih, ", -" failed." => " je spodletelo.", -"Displayname cannot be empty." => "Ime za prikaz ne more biti prazno.", -"Addressbook not found: " => "Adresar ni bil najden:", -"This is not your addressbook." => "To ni vaš imenik.", -"Contact could not be found." => "Stika ni bilo mogoče najti.", -"Jabber" => "Jabber", -"AIM" => "AIM", -"MSN" => "MSN", -"Twitter" => "Twitter", -"GoogleTalk" => "GoogleTalk", -"Facebook" => "Facebook", -"XMPP" => "XMPP", -"ICQ" => "ICQ", -"Yahoo" => "Yahoo", -"Skype" => "Skype", -"QQ" => "QQ", -"GaduGadu" => "GaduGadu", -"Work" => "Delo", -"Home" => "Doma", -"Other" => "Drugo", -"Mobile" => "Mobilni telefon", -"Text" => "Besedilo", -"Voice" => "Glas", -"Message" => "Sporočilo", -"Fax" => "Faks", -"Video" => "Video", -"Pager" => "Pozivnik", -"Internet" => "Internet", -"Birthday" => "Rojstni dan", -"Business" => "Poslovno", -"Call" => "Klic", -"Clients" => "Stranka", -"Deliverer" => "Dostavljalec", -"Holidays" => "Prazniki", -"Ideas" => "Ideje", -"Journey" => "Potovanje", -"Jubilee" => "Jubilej", -"Meeting" => "Sestanek", -"Personal" => "Osebno", -"Projects" => "Projekti", -"Questions" => "Vprašanja", -"{name}'s Birthday" => "{name} - rojstni dan", -"Contact" => "Stik", -"You do not have the permissions to edit this contact." => "Nimate dovoljenj za urejanje tega stika.", -"You do not have the permissions to delete this contact." => "Nimate dovoljenj za izbris tega stika.", -"Add Contact" => "Dodaj stik", -"Import" => "Uvozi", -"Settings" => "Nastavitve", -"Addressbooks" => "Imeniki", -"Close" => "Zapri", -"Keyboard shortcuts" => "Bližnjice na tipkovnici", -"Navigation" => "Krmarjenje", -"Next contact in list" => "Naslednji stik na seznamu", -"Previous contact in list" => "Predhodni stik na seznamu", -"Expand/collapse current addressbook" => "Razširi/skrči trenutni adresar", -"Next addressbook" => "Naslednji adresar", -"Previous addressbook" => "Predhodni adresar", -"Actions" => "Dejanja", -"Refresh contacts list" => "Osveži seznam stikov", -"Add new contact" => "Dodaj nov stik", -"Add new addressbook" => "Dodaj nov adresar", -"Delete current contact" => "Izbriši trenutni stik", -"Drop photo to upload" => "Spustite sliko tukaj, da bi jo naložili", -"Delete current photo" => "Izbriši trenutno sliko", -"Edit current photo" => "Uredi trenutno sliko", -"Upload new photo" => "Naloži novo sliko", -"Select photo from ownCloud" => "Izberi sliko iz ownCloud", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Format po meri, Kratko ime, Polno ime, Obratno ali Obratno z vejico", -"Edit name details" => "Uredite podrobnosti imena", -"Organization" => "Organizacija", -"Delete" => "Izbriši", -"Nickname" => "Vzdevek", -"Enter nickname" => "Vnesite vzdevek", -"Web site" => "Spletna stran", -"http://www.somesite.com" => "http://www.nekastran.si", -"Go to web site" => "Pojdi na spletno stran", -"dd-mm-yyyy" => "dd. mm. yyyy", -"Groups" => "Skupine", -"Separate groups with commas" => "Skupine ločite z vejicami", -"Edit groups" => "Uredi skupine", -"Preferred" => "Prednosten", -"Please specify a valid email address." => "Prosimo, če navedete veljaven e-poštni naslov.", -"Enter email address" => "Vnesite e-poštni naslov", -"Mail to address" => "E-pošta naslovnika", -"Delete email address" => "Izbriši e-poštni naslov", -"Enter phone number" => "Vpiši telefonsko številko", -"Delete phone number" => "Izbriši telefonsko številko", -"Instant Messenger" => "Takojšni sporočilnik", -"Delete IM" => "Izbriši IM", -"View on map" => "Prikaz na zemljevidu", -"Edit address details" => "Uredi podrobnosti", -"Add notes here." => "Opombe dodajte tukaj.", -"Add field" => "Dodaj polje", -"Phone" => "Telefon", -"Email" => "E-pošta", -"Instant Messaging" => "Neposredno sporočanje", -"Address" => "Naslov", -"Note" => "Opomba", -"Download contact" => "Prenesi stik", -"Delete contact" => "Izbriši stik", -"The temporary image has been removed from cache." => "Začasna slika je bila odstranjena iz predpomnilnika.", -"Edit address" => "Uredi naslov", -"Type" => "Vrsta", -"PO Box" => "Poštni predal", -"Street address" => "Ulični naslov", -"Street and number" => "Ulica in štelika", -"Extended" => "Razširjeno", -"Apartment number etc." => "Številka stanovanja itd.", -"City" => "Mesto", -"Region" => "Regija", -"E.g. state or province" => "Npr. dežela ali pokrajina", -"Zipcode" => "Poštna št.", -"Postal code" => "Poštna številka", -"Country" => "Dežela", -"Addressbook" => "Imenik", -"Hon. prefixes" => "Predpone", -"Miss" => "gdč.", -"Ms" => "ga.", -"Mr" => "g.", -"Sir" => "g.", -"Mrs" => "ga.", -"Dr" => "dr.", -"Given name" => "Ime", -"Additional names" => "Dodatna imena", -"Family name" => "Priimek", -"Hon. suffixes" => "Pripone", -"J.D." => "univ. dipl. prav.", -"M.D." => "dr. med.", -"D.O." => "dr. med., spec. spl. med.", -"D.C." => "dr. med., spec. kiropraktike", -"Ph.D." => "dr.", -"Esq." => "Esq.", -"Jr." => "mlajši", -"Sn." => "starejši", -"Import a contacts file" => "Uvozi datoteko s stiki", -"Please choose the addressbook" => "Prosimo, če izberete imenik", -"create a new addressbook" => "Ustvari nov imenik", -"Name of new addressbook" => "Ime novega imenika", -"Importing contacts" => "Uvažam stike", -"You have no contacts in your addressbook." => "V vašem imeniku ni stikov.", -"Add contact" => "Dodaj stik", -"Select Address Books" => "Izberite adresarje", -"Enter name" => "Vnesite ime", -"Enter description" => "Vnesite opis", -"CardDAV syncing addresses" => "CardDAV naslovi za sinhronizacijo", -"more info" => "več informacij", -"Primary address (Kontact et al)" => "Primarni naslov (za kontakt et al)", -"iOS/OS X" => "iOS/OS X", -"Show CardDav link" => "Pokaži CardDav povezavo", -"Show read-only VCF link" => "Pokaži VCF povezavo samo za branje", -"Share" => "Souporaba", -"Download" => "Prenesi", -"Edit" => "Uredi", -"New Address Book" => "Nov imenik", -"Name" => "Ime", -"Description" => "Opis", -"Save" => "Shrani", -"Cancel" => "Prekliči", -"More..." => "Več..." -); diff --git a/apps/contacts/l10n/sr.php b/apps/contacts/l10n/sr.php deleted file mode 100644 index f54741c182f..00000000000 --- a/apps/contacts/l10n/sr.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php $TRANSLATIONS = array( -"Information about vCard is incorrect. Please reload the page." => "Подаци о вКарти су неисправни. Поново учитајте страницу.", -"Contacts" => "Контакти", -"This is not your addressbook." => "Ово није ваш адресар.", -"Contact could not be found." => "Контакт се не може наћи.", -"Work" => "Посао", -"Home" => "Кућа", -"Mobile" => "Мобилни", -"Text" => "Текст", -"Voice" => "Глас", -"Fax" => "Факс", -"Video" => "Видео", -"Pager" => "Пејџер", -"Birthday" => "Рођендан", -"Contact" => "Контакт", -"Add Contact" => "Додај контакт", -"Addressbooks" => "Адресар", -"Organization" => "Организација", -"Delete" => "Обриши", -"Preferred" => "Пожељан", -"Phone" => "Телефон", -"Email" => "Е-маил", -"Address" => "Адреса", -"Download contact" => "Преузми контакт", -"Delete contact" => "Обриши контакт", -"Type" => "Тип", -"PO Box" => "Поштански број", -"Extended" => "Прошири", -"City" => "Град", -"Region" => "Регија", -"Zipcode" => "Зип код", -"Country" => "Земља", -"Addressbook" => "Адресар", -"Download" => "Преузимање", -"Edit" => "Уреди", -"New Address Book" => "Нови адресар", -"Save" => "Сними", -"Cancel" => "Откажи" -); diff --git a/apps/contacts/l10n/sr@latin.php b/apps/contacts/l10n/sr@latin.php deleted file mode 100644 index f06539ab43e..00000000000 --- a/apps/contacts/l10n/sr@latin.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php $TRANSLATIONS = array( -"Information about vCard is incorrect. Please reload the page." => "Podaci o vKarti su neispravni. Ponovo učitajte stranicu.", -"This is not your addressbook." => "Ovo nije vaš adresar.", -"Contact could not be found." => "Kontakt se ne može naći.", -"Work" => "Posao", -"Home" => "Kuća", -"Mobile" => "Mobilni", -"Text" => "Tekst", -"Voice" => "Glas", -"Fax" => "Faks", -"Video" => "Video", -"Pager" => "Pejdžer", -"Birthday" => "Rođendan", -"Add Contact" => "Dodaj kontakt", -"Organization" => "Organizacija", -"Delete" => "Obriši", -"Phone" => "Telefon", -"Email" => "E-mail", -"Address" => "Adresa", -"PO Box" => "Poštanski broj", -"Extended" => "Proširi", -"City" => "Grad", -"Region" => "Regija", -"Zipcode" => "Zip kod", -"Country" => "Zemlja", -"Edit" => "Uredi" -); diff --git a/apps/contacts/l10n/sv.php b/apps/contacts/l10n/sv.php deleted file mode 100644 index 88aac866f6d..00000000000 --- a/apps/contacts/l10n/sv.php +++ /dev/null @@ -1,229 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Fel (av)aktivera adressbok.", -"id is not set." => "ID är inte satt.", -"Cannot update addressbook with an empty name." => "Kan inte uppdatera adressboken med ett tomt namn.", -"Error updating addressbook." => "Fel uppstod när adressbok skulle uppdateras.", -"No ID provided" => "Inget ID angett", -"Error setting checksum." => "Fel uppstod när kontrollsumma skulle sättas.", -"No categories selected for deletion." => "Inga kategorier valda för borttaging", -"No address books found." => "Ingen adressbok funnen.", -"No contacts found." => "Inga kontakter funna.", -"There was an error adding the contact." => "Det uppstod ett fel när kontakten skulle läggas till.", -"element name is not set." => "elementnamn ej angett.", -"Could not parse contact: " => "Kunde inte läsa kontakt:", -"Cannot add empty property." => "Kan inte lägga till en tom egenskap.", -"At least one of the address fields has to be filled out." => "Minst ett fält måste fyllas i.", -"Trying to add duplicate property: " => "Försöker lägga till dubblett:", -"Missing IM parameter." => "IM parameter saknas.", -"Unknown IM: " => "Okänt IM:", -"Information about vCard is incorrect. Please reload the page." => "Information om vCard är felaktigt. Vänligen ladda om sidan.", -"Missing ID" => "ID saknas", -"Error parsing VCard for ID: \"" => "Fel vid läsning av VCard för ID: \"", -"checksum is not set." => "kontrollsumma är inte satt.", -"Information about vCard is incorrect. Please reload the page: " => "Informationen om vCard är fel. Ladda om sidan:", -"Something went FUBAR. " => "Något gick fel.", -"No contact ID was submitted." => "Inget kontakt-ID angavs.", -"Error reading contact photo." => "Fel uppstod vid läsning av kontaktfoto.", -"Error saving temporary file." => "Fel uppstod när temporär fil skulle sparas.", -"The loading photo is not valid." => "Det laddade fotot är inte giltigt.", -"Contact ID is missing." => "Kontakt-ID saknas.", -"No photo path was submitted." => "Ingen sökväg till foto angavs.", -"File doesn't exist:" => "Filen existerar inte.", -"Error loading image." => "Fel uppstod när bild laddades.", -"Error getting contact object." => "Fel vid hämtning av kontakt.", -"Error getting PHOTO property." => "Fel vid hämtning av egenskaper för FOTO.", -"Error saving contact." => "Fel vid sparande av kontakt.", -"Error resizing image" => "Fel vid storleksförändring av bilden", -"Error cropping image" => "Fel vid beskärning av bilden", -"Error creating temporary image" => "Fel vid skapande av tillfällig bild", -"Error finding image: " => "Kunde inte hitta bild:", -"Error uploading contacts to storage." => "Fel uppstod när kontakt skulle lagras.", -"There is no error, the file uploaded with success" => "Inga fel uppstod. Filen laddades upp utan problem.", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Den uppladdade filen överskrider upload_max_filesize direktivet i php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Den uppladdade filen överskrider MAX_FILE_SIZE direktivet som har angetts i HTML formuläret", -"The uploaded file was only partially uploaded" => "Den uppladdade filen var bara delvist uppladdad", -"No file was uploaded" => "Ingen fil laddades upp", -"Missing a temporary folder" => "En temporär mapp saknas", -"Couldn't save temporary image: " => "Kunde inte spara tillfällig bild:", -"Couldn't load temporary image: " => "Kunde inte ladda tillfällig bild:", -"No file was uploaded. Unknown error" => "Ingen fil uppladdad. Okänt fel", -"Contacts" => "Kontakter", -"Sorry, this functionality has not been implemented yet" => "Tyvärr är denna funktion inte införd än", -"Not implemented" => "Inte införd", -"Couldn't get a valid address." => "Kunde inte hitta en giltig adress.", -"Error" => "Fel", -"You do not have permission to add contacts to " => "Du saknar behörighet att skapa kontakter i", -"Please select one of your own address books." => "Välj en av dina egna adressböcker.", -"Permission error" => "Behörighetsfel", -"This property has to be non-empty." => "Denna egenskap får inte vara tom.", -"Couldn't serialize elements." => "Kunde inte serialisera element.", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "\"deleteProperty\" anropades utan typargument. Vänligen rapportera till bugs.owncloud.org", -"Edit name" => "Ändra namn", -"No files selected for upload." => "Inga filer valda för uppladdning", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Filen du försöker ladda upp är större än den maximala storleken för filuppladdning på denna server.", -"Error loading profile picture." => "Fel vid hämtning av profilbild.", -"Select type" => "Välj typ", -"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "Vissa kontakter är markerade för radering, men är inte raderade än. Vänta tills dom är raderade.", -"Do you want to merge these address books?" => "Vill du slå samman dessa adressböcker?", -"Result: " => "Resultat:", -" imported, " => "importerad,", -" failed." => "misslyckades.", -"Displayname cannot be empty." => "Visningsnamn får inte vara tomt.", -"Addressbook not found: " => "Adressboken hittades inte:", -"This is not your addressbook." => "Det här är inte din adressbok.", -"Contact could not be found." => "Kontakt kunde inte hittas.", -"Jabber" => "Jabber", -"AIM" => "AIM", -"MSN" => "MSN", -"Twitter" => "Twitter", -"GoogleTalk" => "GoogleTalk", -"Facebook" => "Facebook", -"XMPP" => "XMPP", -"ICQ" => "ICQ", -"Yahoo" => "Yahoo", -"Skype" => "Skype", -"QQ" => "QQ", -"GaduGadu" => "GaduGadu", -"Work" => "Arbete", -"Home" => "Hem", -"Other" => "Annat", -"Mobile" => "Mobil", -"Text" => "Text", -"Voice" => "Röst", -"Message" => "Meddelande", -"Fax" => "Fax", -"Video" => "Video", -"Pager" => "Personsökare", -"Internet" => "Internet", -"Birthday" => "Födelsedag", -"Business" => "Företag", -"Call" => "Ring", -"Clients" => "Kunder", -"Deliverer" => "Leverera", -"Holidays" => "Helgdagar", -"Ideas" => "Idéer", -"Journey" => "Resa", -"Jubilee" => "Jubileum", -"Meeting" => "Möte", -"Personal" => "Privat", -"Projects" => "Projekt", -"Questions" => "Frågor", -"{name}'s Birthday" => "{name}'s födelsedag", -"Contact" => "Kontakt", -"You do not have the permissions to edit this contact." => "Du saknar behörighet för att ändra denna kontakt.", -"You do not have the permissions to delete this contact." => "Du saknar behörighet för att radera denna kontakt.", -"Add Contact" => "Lägg till kontakt", -"Import" => "Importera", -"Settings" => "Inställningar", -"Addressbooks" => "Adressböcker", -"Close" => "Stäng", -"Keyboard shortcuts" => "Kortkommandon", -"Navigation" => "Navigering", -"Next contact in list" => "Nästa kontakt i listan", -"Previous contact in list" => "Föregående kontakt i listan", -"Expand/collapse current addressbook" => "Visa/dölj aktuell adressbok", -"Next addressbook" => "Nästa adressbok", -"Previous addressbook" => "Föregående adressbok", -"Actions" => "Åtgärder", -"Refresh contacts list" => "Uppdatera kontaktlistan", -"Add new contact" => "Lägg till ny kontakt", -"Add new addressbook" => "Lägg till ny adressbok", -"Delete current contact" => "Radera denna kontakt", -"Drop photo to upload" => "Släpp foto för att ladda upp", -"Delete current photo" => "Ta bort aktuellt foto", -"Edit current photo" => "Redigera aktuellt foto", -"Upload new photo" => "Ladda upp ett nytt foto", -"Select photo from ownCloud" => "Välj foto från ownCloud", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => " anpassad, korta namn, hela namn, bakåt eller bakåt med komma", -"Edit name details" => "Redigera detaljer för namn", -"Organization" => "Organisation", -"Delete" => "Radera", -"Nickname" => "Smeknamn", -"Enter nickname" => "Ange smeknamn", -"Web site" => "Webbplats", -"http://www.somesite.com" => "http://www.somesite.com", -"Go to web site" => "Gå till webbplats", -"dd-mm-yyyy" => "dd-mm-åååå", -"Groups" => "Grupper", -"Separate groups with commas" => "Separera grupperna med kommatecken", -"Edit groups" => "Editera grupper", -"Preferred" => "Föredragen", -"Please specify a valid email address." => "Vänligen ange en giltig e-postadress.", -"Enter email address" => "Ange e-postadress", -"Mail to address" => "Posta till adress.", -"Delete email address" => "Ta bort e-postadress", -"Enter phone number" => "Ange telefonnummer", -"Delete phone number" => "Ta bort telefonnummer", -"Instant Messenger" => "Instant Messenger", -"Delete IM" => "Radera IM", -"View on map" => "Visa på karta", -"Edit address details" => "Redigera detaljer för adress", -"Add notes here." => "Lägg till noteringar här.", -"Add field" => "Lägg till fält", -"Phone" => "Telefon", -"Email" => "E-post", -"Instant Messaging" => "Instant Messaging", -"Address" => "Adress", -"Note" => "Notering", -"Download contact" => "Ladda ner kontakt", -"Delete contact" => "Radera kontakt", -"The temporary image has been removed from cache." => "Den tillfälliga bilden har raderats från cache.", -"Edit address" => "Editera adress", -"Type" => "Typ", -"PO Box" => "Postbox", -"Street address" => "Gatuadress", -"Street and number" => "Gata och nummer", -"Extended" => "Utökad", -"Apartment number etc." => "Lägenhetsnummer", -"City" => "Stad", -"Region" => "Län", -"E.g. state or province" => "T.ex. stat eller provins", -"Zipcode" => "Postnummer", -"Postal code" => "Postnummer", -"Country" => "Land", -"Addressbook" => "Adressbok", -"Hon. prefixes" => "Ledande titlar", -"Miss" => "Fröken", -"Ms" => "Fru", -"Mr" => "Herr", -"Sir" => "Herr", -"Mrs" => "Fru", -"Dr" => "Dr.", -"Given name" => "Förnamn", -"Additional names" => "Mellannamn", -"Family name" => "Efternamn", -"Hon. suffixes" => "Efterställda titlar", -"J.D." => "Kand. Jur.", -"M.D." => "M.D.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Fil.dr.", -"Esq." => "Esq.", -"Jr." => "Jr.", -"Sn." => "Sn.", -"Import a contacts file" => "Importera en kontaktfil", -"Please choose the addressbook" => "Vänligen välj adressboken", -"create a new addressbook" => "skapa en ny adressbok", -"Name of new addressbook" => "Namn för ny adressbok", -"Importing contacts" => "Importerar kontakter", -"You have no contacts in your addressbook." => "Du har inga kontakter i din adressbok.", -"Add contact" => "Lägg till en kontakt", -"Select Address Books" => "Välj adressböcker", -"Enter name" => "Ange namn", -"Enter description" => "Ange beskrivning", -"CardDAV syncing addresses" => "CardDAV synkningsadresser", -"more info" => "mer information", -"Primary address (Kontact et al)" => "Primär adress (Kontakt o.a.)", -"iOS/OS X" => "iOS/OS X", -"Show CardDav link" => "Visa CardDav-länk", -"Show read-only VCF link" => "Visa skrivskyddad VCF-länk", -"Share" => "Dela", -"Download" => "Nedladdning", -"Edit" => "Redigera", -"New Address Book" => "Ny adressbok", -"Name" => "Namn", -"Description" => "Beskrivning", -"Save" => "Spara", -"Cancel" => "Avbryt", -"More..." => "Mer..." -); diff --git a/apps/contacts/l10n/th_TH.php b/apps/contacts/l10n/th_TH.php deleted file mode 100644 index facdd62b7b5..00000000000 --- a/apps/contacts/l10n/th_TH.php +++ /dev/null @@ -1,207 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "เกิดข้อผิดพลาดใน (ยกเลิก)การเปิดใช้งานสมุดบันทึกที่อยู่", -"id is not set." => "ยังไม่ได้กำหนดรหัส", -"Cannot update addressbook with an empty name." => "ไม่สามารถอัพเดทสมุดบันทึกที่อยู่โดยไม่มีชื่อได้", -"Error updating addressbook." => "เกิดข้อผิดพลาดในการอัพเดทสมุดบันทึกที่อยู่", -"No ID provided" => "ยังไม่ได้ใส่รหัส", -"Error setting checksum." => "เกิดข้อผิดพลาดในการตั้งค่า checksum", -"No categories selected for deletion." => "ยังไม่ได้เลือกหมวดหมู่ที่ต้องการลบ", -"No address books found." => "ไม่พบสมุดบันทึกที่อยู่ที่ต้องการ", -"No contacts found." => "ไม่พบข้อมูลการติดต่อที่ต้องการ", -"There was an error adding the contact." => "เกิดข้อผิดพลาดในการเพิ่มรายชื่อผู้ติดต่อใหม่", -"element name is not set." => "ยังไม่ได้กำหนดชื่อ", -"Could not parse contact: " => "ไม่สามารถแจกแจงรายชื่อผู้ติดต่อได้", -"Cannot add empty property." => "ไม่สามารถเพิ่มรายละเอียดที่ไม่มีข้อมูลได้", -"At least one of the address fields has to be filled out." => "อย่างน้อยที่สุดช่องข้อมูลที่อยู่จะต้องถูกกรอกลงไป", -"Trying to add duplicate property: " => "พยายามที่จะเพิ่มทรัพยากรที่ซ้ำซ้อนกัน: ", -"Information about vCard is incorrect. Please reload the page." => "ข้อมูลเกี่ยวกับ vCard ไม่ถูกต้อง กรุณาโหลดหน้าเวปใหม่อีกครั้ง", -"Missing ID" => "รหัสสูญหาย", -"Error parsing VCard for ID: \"" => "พบข้อผิดพลาดในการแยกรหัส VCard:\"", -"checksum is not set." => "ยังไม่ได้กำหนดค่า checksum", -"Information about vCard is incorrect. Please reload the page: " => "ข้อมูล vCard ไม่ถูกต้อง กรุณาโหลดหน้าเว็บใหม่อีกครั้ง: ", -"Something went FUBAR. " => "มีบางอย่างเกิดการ FUBAR. ", -"No contact ID was submitted." => "ไม่มีรหัสข้อมูลการติดต่อถูกส่งมา", -"Error reading contact photo." => "เกิดข้อผิดพลาดในการอ่านรูปภาพของข้อมูลการติดต่อ", -"Error saving temporary file." => "เกิดข้อผิดพลาดในการบันทึกไฟล์ชั่วคราว", -"The loading photo is not valid." => "โหลดรูปภาพไม่ถูกต้อง", -"Contact ID is missing." => "รหัสข้อมูลการติดต่อเกิดการสูญหาย", -"No photo path was submitted." => "ไม่พบตำแหน่งพาธของรูปภาพ", -"File doesn't exist:" => "ไม่มีไฟล์ดังกล่าว", -"Error loading image." => "เกิดข้อผิดพลาดในการโหลดรูปภาพ", -"Error getting contact object." => "เกิดข้อผิดพลาดในการดึงข้อมูลติดต่อ", -"Error getting PHOTO property." => "เกิดข้อผิดพลาดในการดึงคุณสมบัติของรูปภาพ", -"Error saving contact." => "เกิดข้อผิดพลาดในการบันทึกข้อมูลผู้ติดต่อ", -"Error resizing image" => "เกิดข้อผิดพลาดในการปรับขนาดรูปภาพ", -"Error cropping image" => "เกิดข้อผิดพลาดในการครอบตัดภาพ", -"Error creating temporary image" => "เกิดข้อผิดพลาดในการสร้างรูปภาพชั่วคราว", -"Error finding image: " => "เกิดข้อผิดพลาดในการค้นหารูปภาพ: ", -"Error uploading contacts to storage." => "เกิดข้อผิดพลาดในการอัพโหลดข้อมูลการติดต่อไปยังพื้นที่จัดเก็บข้อมูล", -"There is no error, the file uploaded with success" => "ไม่พบข้อผิดพลาดใดๆ, ไฟล์ถูกอัพโหลดเรียบร้อยแล้ว", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "ไฟล์ที่อัพโหลดมีขนาดไฟล์ใหญ่เกินจำนวนที่กำหนดไว้ในคำสั่ง upload_max_filesize ที่อยู่ในไฟล์ php.ini", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "ไฟล์ที่อัพโหลดมีขนาดไฟล์ใหญ่เกินจำนวนที่กำหนดไว้ในคำสั่ง MAX_FILE_SIZE ที่ถูกระบุไว้ในรูปแบบของ HTML", -"The uploaded file was only partially uploaded" => "ไฟล์ถูกอัพโหลดได้เพียงบางส่วนเท่านั้น", -"No file was uploaded" => "ไม่มีไฟล์ที่ถูกอัพโหลด", -"Missing a temporary folder" => "โฟลเดอร์ชั่วคราวเกิดการสูญหาย", -"Couldn't save temporary image: " => "ไม่สามารถบันทึกรูปภาพชั่วคราวได้: ", -"Couldn't load temporary image: " => "ไม่สามารถโหลดรูปภาพชั่วคราวได้: ", -"No file was uploaded. Unknown error" => "ยังไม่มีไฟล์ใดที่ถูกอัพโหลด เกิดข้อผิดพลาดที่ไม่ทราบสาเหตุ", -"Contacts" => "ข้อมูลการติดต่อ", -"Sorry, this functionality has not been implemented yet" => "ขออภัย, ฟังก์ชั่นการทำงานนี้ยังไม่ได้ถูกดำเนินการ", -"Not implemented" => "ยังไม่ได้ถูกดำเนินการ", -"Couldn't get a valid address." => "ไม่สามารถดึงที่อยู่ที่ถูกต้องได้", -"Error" => "พบข้อผิดพลาด", -"This property has to be non-empty." => "คุณสมบัตินี้ต้องไม่มีข้อมูลว่างอยู่", -"Couldn't serialize elements." => "ไม่สามารถทำสัญลักษณ์องค์ประกอบต่างๆให้เป็นตัวเลขตามลำดับได้", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' ถูกเรียกใช้โดยไม่มีอาร์กิวเมนต์ กรุณาแจ้งได้ที่ bugs.owncloud.org", -"Edit name" => "แก้ไขชื่อ", -"No files selected for upload." => "ยังไม่ได้เลือกไฟล์ำสำหรับอัพโหลด", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "ไฟล์ที่คุณกำลังพยายามที่จะอัพโหลดมีขนาดเกินจำนวนสูงสุดที่สามารถอัพโหลดได้สำหรับเซิร์ฟเวอร์นี้", -"Error loading profile picture." => "เกิดข้อผิดพลาดในการโหลดรูปภาพประจำตัว", -"Select type" => "เลือกชนิด", -"Some contacts are marked for deletion, but not deleted yet. Please wait for them to be deleted." => "ข้อมูลผู้ติดต่อบางรายการได้ถูกทำเครื่องหมายสำหรับลบทิ้งเอาไว้, แต่ยังไม่ได้ถูกลบทิ้ง, กรุณารอให้รายการดังกล่าวถูกลบทิ้งเสียก่อน", -"Do you want to merge these address books?" => "คุณต้องการผสานข้อมูลสมุดบันทึกที่อยู่เหล่านี้หรือไม่?", -"Result: " => "ผลลัพธ์: ", -" imported, " => " นำเข้าข้อมูลแล้ว, ", -" failed." => " ล้มเหลว.", -"Displayname cannot be empty." => "ชื่อที่ใช้แสดงไม่สามารถเว้นว่างได้", -"Addressbook not found: " => "ไม่พบสมุดบันทึกที่อยู่ที่ต้องการ", -"This is not your addressbook." => "นี่ไม่ใช่สมุดบันทึกที่อยู่ของคุณ", -"Contact could not be found." => "ไม่พบข้อมูลการติดต่อ", -"Work" => "ที่ทำงาน", -"Home" => "บ้าน", -"Other" => "อื่นๆ", -"Mobile" => "มือถือ", -"Text" => "ข้อความ", -"Voice" => "เสียงพูด", -"Message" => "ข้อความ", -"Fax" => "โทรสาร", -"Video" => "วีดีโอ", -"Pager" => "เพจเจอร์", -"Internet" => "อินเทอร์เน็ต", -"Birthday" => "วันเกิด", -"Business" => "ธุรกิจ", -"Call" => "โทร", -"Clients" => "ลูกค้า", -"Deliverer" => "ผู้จัดส่ง", -"Holidays" => "วันหยุด", -"Ideas" => "ไอเดีย", -"Journey" => "การเดินทาง", -"Jubilee" => "งานเฉลิมฉลอง", -"Meeting" => "ประชุม", -"Personal" => "ส่วนตัว", -"Projects" => "โปรเจค", -"Questions" => "คำถาม", -"{name}'s Birthday" => "วันเกิดของ {name}", -"Contact" => "ข้อมูลการติดต่อ", -"Add Contact" => "เพิ่มรายชื่อผู้ติดต่อใหม่", -"Import" => "นำเข้า", -"Settings" => "ตั้งค่า", -"Addressbooks" => "สมุดบันทึกที่อยู่", -"Close" => "ปิด", -"Keyboard shortcuts" => "ปุ่มลัด", -"Navigation" => "ระบบเมนู", -"Next contact in list" => "ข้อมูลผู้ติดต่อถัดไปในรายการ", -"Previous contact in list" => "ข้อมูลผู้ติดต่อก่อนหน้าในรายการ", -"Expand/collapse current addressbook" => "ขยาย/ย่อ สมุดบันทึกที่อยู่ปัจจุบัน", -"Next addressbook" => "สมุดบันทึกที่อยู่ถัดไป", -"Previous addressbook" => "สมุดบันทึกที่อยู่ก่อนหน้า", -"Actions" => "การกระทำ", -"Refresh contacts list" => "รีเฟรชรายชื่อผู้ติดต่อใหม่", -"Add new contact" => "เพิ่มข้อมูลผู้ติดต่อใหม่", -"Add new addressbook" => "เพิ่มสมุดบันทึกที่อยู่ใหม่", -"Delete current contact" => "ลบข้อมูลผู้ติดต่อปัจจุบัน", -"Drop photo to upload" => "วางรูปภาพที่ต้องการอัพโหลด", -"Delete current photo" => "ลบรูปภาพปัจจุบัน", -"Edit current photo" => "แก้ไขรูปภาพปัจจุบัน", -"Upload new photo" => "อัพโหลดรูปภาพใหม่", -"Select photo from ownCloud" => "เลือกรูปภาพจาก ownCloud", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "กำหนดรูปแบบของชื่อย่อ, ชื่อจริง, ย้อนค่ากลัีบด้วยคอมม่าเอง", -"Edit name details" => "แก้ไขรายละเอียดของชื่อ", -"Organization" => "หน่วยงาน", -"Delete" => "ลบ", -"Nickname" => "ชื่อเล่น", -"Enter nickname" => "กรอกชื่อเล่น", -"Web site" => "เว็บไซต์", -"http://www.somesite.com" => "http://www.somesite.com", -"Go to web site" => "ไปที่เว็บไซต์", -"dd-mm-yyyy" => "dd-mm-yyyy", -"Groups" => "กลุ่ม", -"Separate groups with commas" => "คั่นระหว่างรายชื่อกลุ่มด้วยเครื่องหมายจุลภาีคหรือคอมม่า", -"Edit groups" => "แก้ไขกลุ่ม", -"Preferred" => "พิเศษ", -"Please specify a valid email address." => "กรุณาระบุที่อยู่อีเมลที่ถูกต้อง", -"Enter email address" => "กรอกที่อยู่อีเมล", -"Mail to address" => "ส่งอีเมลไปที่", -"Delete email address" => "ลบที่อยู่อีเมล", -"Enter phone number" => "กรอกหมายเลขโทรศัพท์", -"Delete phone number" => "ลบหมายเลขโทรศัพท์", -"View on map" => "ดูบนแผนที่", -"Edit address details" => "แก้ไขรายละเอียดที่อยู่", -"Add notes here." => "เพิ่มหมายเหตุกำกับไว้ที่นี่", -"Add field" => "เพิ่มช่องรับข้อมูล", -"Phone" => "โทรศัพท์", -"Email" => "อีเมล์", -"Address" => "ที่อยู่", -"Note" => "หมายเหตุ", -"Download contact" => "ดาวน์โหลดข้อมูลการติดต่อ", -"Delete contact" => "ลบข้อมูลการติดต่อ", -"The temporary image has been removed from cache." => "รูปภาพชั่วคราวดังกล่าวได้ถูกลบออกจากหน่วยความจำแคชแล้ว", -"Edit address" => "แก้ไขที่อยู่", -"Type" => "ประเภท", -"PO Box" => "ตู้ ปณ.", -"Street address" => "ที่อยู่", -"Street and number" => "ถนนและหมายเลข", -"Extended" => "เพิ่ม", -"Apartment number etc." => "หมายเลขอพาร์ทเมนต์ ฯลฯ", -"City" => "เมือง", -"Region" => "ภูมิภาค", -"E.g. state or province" => "เช่น รัฐ หรือ จังหวัด", -"Zipcode" => "รหัสไปรษณีย์", -"Postal code" => "รหัสไปรษณีย์", -"Country" => "ประเทศ", -"Addressbook" => "สมุดบันทึกที่อยู่", -"Hon. prefixes" => "คำนำหน้าชื่อคนรัก", -"Miss" => "นางสาว", -"Ms" => "น.ส.", -"Mr" => "นาย", -"Sir" => "คุณ", -"Mrs" => "นาง", -"Dr" => "ดร.", -"Given name" => "ชื่อที่ใช้", -"Additional names" => "ชื่ออื่นๆ", -"Family name" => "ชื่อครอบครัว", -"Hon. suffixes" => "คำแนบท้ายชื่อคนรัก", -"J.D." => "J.D.", -"M.D." => "M.D.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "ปริญญาเอก", -"Esq." => "Esq.", -"Jr." => "จูเนียร์", -"Sn." => "ซีเนียร์", -"Import a contacts file" => "นำเข้าไฟล์ข้อมูลการติดต่อ", -"Please choose the addressbook" => "กรุณาเลือกสมุดบันทึกที่อยู่", -"create a new addressbook" => "สร้างสมุดบันทึกที่อยู่ใหม่", -"Name of new addressbook" => "กำหนดชื่อของสมุดที่อยู่ที่สร้างใหม่", -"Importing contacts" => "นำเข้าข้อมูลการติดต่อ", -"You have no contacts in your addressbook." => "คุณยังไม่มีข้อมูลการติดต่อใดๆในสมุดบันทึกที่อยู่ของคุณ", -"Add contact" => "เพิ่มชื่อผู้ติดต่อ", -"Select Address Books" => "เลือกสมุดบันทึกที่อยู่", -"Enter name" => "กรอกชื่อ", -"Enter description" => "กรอกคำอธิบาย", -"CardDAV syncing addresses" => "ที่อยู่ที่ใช้เชื่อมข้อมูลกับ CardDAV", -"more info" => "ข้อมูลเพิ่มเติม", -"Primary address (Kontact et al)" => "ที่อยู่หลัก (สำหรับติดต่อ)", -"iOS/OS X" => "iOS/OS X", -"Show CardDav link" => "แสดงลิงก์ CardDav", -"Show read-only VCF link" => "แสดงลิงก์ VCF สำหรับอ่านเท่านั้น", -"Share" => "แชร์", -"Download" => "ดาวน์โหลด", -"Edit" => "แก้ไข", -"New Address Book" => "สร้างสมุดบันทึกข้อมูลการติดต่อใหม่", -"Name" => "ชื่อ", -"Description" => "คำอธิบาย", -"Save" => "บันทึก", -"Cancel" => "ยกเลิก", -"More..." => "เพิ่มเติม..." -); diff --git a/apps/contacts/l10n/tr.php b/apps/contacts/l10n/tr.php deleted file mode 100644 index 3abe96998ed..00000000000 --- a/apps/contacts/l10n/tr.php +++ /dev/null @@ -1,193 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "Adres defteri etkisizleştirilirken hata oluştu.", -"id is not set." => "id atanmamış.", -"Cannot update addressbook with an empty name." => "Adres defterini boş bir isimle güncelleyemezsiniz.", -"Error updating addressbook." => "Adres defteri güncellenirken hata oluştu.", -"No ID provided" => "ID verilmedi", -"Error setting checksum." => "İmza oluşturulurken hata.", -"No categories selected for deletion." => "Silmek için bir kategori seçilmedi.", -"No address books found." => "Adres defteri bulunamadı.", -"No contacts found." => "Bağlantı bulunamadı.", -"There was an error adding the contact." => "Kişi eklenirken hata oluştu.", -"element name is not set." => "eleman ismi atanmamış.", -"Could not parse contact: " => "Kişi bilgisi ayrıştırılamadı.", -"Cannot add empty property." => "Boş özellik eklenemiyor.", -"At least one of the address fields has to be filled out." => "En az bir adres alanı doldurulmalı.", -"Trying to add duplicate property: " => "Yinelenen özellik eklenmeye çalışılıyor: ", -"Information about vCard is incorrect. Please reload the page." => "vCard bilgileri doğru değil. Lütfen sayfayı yenileyin.", -"Missing ID" => "Eksik ID", -"Error parsing VCard for ID: \"" => "ID için VCard ayrıştırılamadı:\"", -"checksum is not set." => "checksum atanmamış.", -"Information about vCard is incorrect. Please reload the page: " => "vCard hakkındaki bilgi hatalı. Lütfen sayfayı yeniden yükleyin: ", -"Something went FUBAR. " => "Bir şey FUBAR gitti.", -"No contact ID was submitted." => "Bağlantı ID'si girilmedi.", -"Error reading contact photo." => "Bağlantı fotoğrafı okunamadı.", -"Error saving temporary file." => "Geçici dosya kaydetme hatası.", -"The loading photo is not valid." => "Yüklenecek fotograf geçerli değil.", -"Contact ID is missing." => "Bağlantı ID'si eksik.", -"No photo path was submitted." => "Fotoğraf girilmedi.", -"File doesn't exist:" => "Dosya mevcut değil:", -"Error loading image." => "İmaj yükleme hatası.", -"Error getting contact object." => "Bağlantı nesnesini kaydederken hata.", -"Error getting PHOTO property." => "Resim özelleğini alırken hata oluştu.", -"Error saving contact." => "Bağlantıyı kaydederken hata", -"Error resizing image" => "Görüntü yeniden boyutlandırılamadı.", -"Error cropping image" => "Görüntü kırpılamadı.", -"Error creating temporary image" => "Geçici resim oluştururken hata oluştu", -"Error finding image: " => "Resim ararken hata oluştu:", -"Error uploading contacts to storage." => "Bağlantıları depoya yükleme hatası", -"There is no error, the file uploaded with success" => "Dosya başarıyla yüklendi, hata oluşmadı", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Dosyanın boyutu php.ini dosyasındaki upload_max_filesize limitini aşıyor", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Yüklenecek dosyanın boyutu HTML formunda belirtilen MAX_FILE_SIZE limitini aşıyor", -"The uploaded file was only partially uploaded" => "Dosya kısmen karşıya yüklenebildi", -"No file was uploaded" => "Hiç dosya gönderilmedi", -"Missing a temporary folder" => "Geçici dizin eksik", -"Couldn't save temporary image: " => "Geçici resmi saklayamadı : ", -"Couldn't load temporary image: " => "Geçici resmi yükleyemedi :", -"No file was uploaded. Unknown error" => "Dosya yüklenmedi. Bilinmeyen hata", -"Contacts" => "Kişiler", -"Sorry, this functionality has not been implemented yet" => "Üzgünüz, bu özellik henüz tamamlanmadı.", -"Not implemented" => "Tamamlanmadı.", -"Couldn't get a valid address." => "Geçerli bir adres alınamadı.", -"Error" => "Hata", -"This property has to be non-empty." => "Bu özellik boş bırakılmamalı.", -"Couldn't serialize elements." => "Öğeler seri hale getiremedi", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' tip argümanı olmadan çağrıldı. Lütfen bugs.owncloud.org a rapor ediniz.", -"Edit name" => "İsmi düzenle", -"No files selected for upload." => "Yükleme için dosya seçilmedi.", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "Yüklemeye çalıştığınız dosya sunucudaki dosya yükleme maksimum boyutunu aşmaktadır. ", -"Select type" => "Tür seç", -"Result: " => "Sonuç: ", -" imported, " => " içe aktarıldı, ", -" failed." => " hatalı.", -"This is not your addressbook." => "Bu sizin adres defteriniz değil.", -"Contact could not be found." => "Kişi bulunamadı.", -"Work" => "İş", -"Home" => "Ev", -"Other" => "Diğer", -"Mobile" => "Mobil", -"Text" => "Metin", -"Voice" => "Ses", -"Message" => "mesaj", -"Fax" => "Faks", -"Video" => "Video", -"Pager" => "Sayfalayıcı", -"Internet" => "İnternet", -"Birthday" => "Doğum günü", -"Business" => "İş", -"Call" => "Çağrı", -"Clients" => "Müşteriler", -"Deliverer" => "Dağıtıcı", -"Holidays" => "Tatiller", -"Ideas" => "Fikirler", -"Journey" => "Seyahat", -"Jubilee" => "Yıl Dönümü", -"Meeting" => "Toplantı", -"Personal" => "Kişisel", -"Projects" => "Projeler", -"Questions" => "Sorular", -"{name}'s Birthday" => "{name}'nin Doğumgünü", -"Contact" => "Kişi", -"Add Contact" => "Kişi Ekle", -"Import" => "İçe aktar", -"Addressbooks" => "Adres defterleri", -"Close" => "Kapat", -"Keyboard shortcuts" => "Klavye kısayolları", -"Navigation" => "Dolaşım", -"Next contact in list" => "Listedeki sonraki kişi", -"Previous contact in list" => "Listedeki önceki kişi", -"Expand/collapse current addressbook" => "Şuanki adres defterini genişlet/daralt", -"Actions" => "Eylemler", -"Refresh contacts list" => "Kişi listesini tazele", -"Add new contact" => "Yeni kişi ekle", -"Add new addressbook" => "Yeni adres defteri ekle", -"Delete current contact" => "Şuanki kişiyi sil", -"Drop photo to upload" => "Fotoğrafı yüklenmesi için bırakın", -"Delete current photo" => "Mevcut fotoğrafı sil", -"Edit current photo" => "Mevcut fotoğrafı düzenle", -"Upload new photo" => "Yeni fotoğraf yükle", -"Select photo from ownCloud" => "ownCloud'dan bir fotoğraf seç", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "Biçin özel, Kısa isim, Tam isim, Ters veya noktalı ters", -"Edit name details" => "İsim detaylarını düzenle", -"Organization" => "Organizasyon", -"Delete" => "Sil", -"Nickname" => "Takma ad", -"Enter nickname" => "Takma adı girin", -"Web site" => "Web sitesi", -"http://www.somesite.com" => "http://www.somesite.com", -"Go to web site" => "Web sitesine git", -"dd-mm-yyyy" => "gg-aa-yyyy", -"Groups" => "Gruplar", -"Separate groups with commas" => "Grupları birbirinden virgülle ayırın", -"Edit groups" => "Grupları düzenle", -"Preferred" => "Tercih edilen", -"Please specify a valid email address." => "Lütfen geçerli bir eposta adresi belirtin.", -"Enter email address" => "Eposta adresini girin", -"Mail to address" => "Eposta adresi", -"Delete email address" => "Eposta adresini sil", -"Enter phone number" => "Telefon numarasını gir", -"Delete phone number" => "Telefon numarasını sil", -"View on map" => "Haritada gör", -"Edit address details" => "Adres detaylarını düzenle", -"Add notes here." => "Notları buraya ekleyin.", -"Add field" => "Alan ekle", -"Phone" => "Telefon", -"Email" => "Eposta", -"Address" => "Adres", -"Note" => "Not", -"Download contact" => "Kişiyi indir", -"Delete contact" => "Kişiyi sil", -"The temporary image has been removed from cache." => "Geçici resim ön bellekten silinmiştir.", -"Edit address" => "Adresi düzenle", -"Type" => "Tür", -"PO Box" => "Posta Kutusu", -"Street address" => "Sokak adresi", -"Street and number" => "Sokak ve Numara", -"Extended" => "Uzatılmış", -"Apartment number etc." => "Apartman numarası vb.", -"City" => "Şehir", -"Region" => "Bölge", -"E.g. state or province" => "Örn. eyalet veya il", -"Zipcode" => "Posta kodu", -"Postal code" => "Posta kodu", -"Country" => "Ülke", -"Addressbook" => "Adres defteri", -"Hon. prefixes" => "Kısaltmalar", -"Miss" => "Bayan", -"Ms" => "Bayan", -"Mr" => "Bay", -"Sir" => "Bay", -"Mrs" => "Bayan", -"Dr" => "Dr", -"Given name" => "Verilen isim", -"Additional names" => "İlave isimler", -"Family name" => "Soyad", -"Hon. suffixes" => "Kısaltmalar", -"J.D." => "J.D.", -"M.D." => "Dr.", -"D.O." => "D.O.", -"D.C." => "D.C.", -"Ph.D." => "Dr.", -"Esq." => "Esq.", -"Jr." => "Jr.", -"Sn." => "Sn.", -"Import a contacts file" => "Bağlantı dosyasını içeri aktar", -"Please choose the addressbook" => "Yeni adres defterini seç", -"create a new addressbook" => "Yeni adres defteri oluştur", -"Name of new addressbook" => "Yeni adres defteri için isim", -"Importing contacts" => "Bağlantıları içe aktar", -"You have no contacts in your addressbook." => "Adres defterinizde hiç bağlantı yok.", -"Add contact" => "Bağlatı ekle", -"Select Address Books" => "Adres deftelerini seçiniz", -"Enter name" => "İsim giriniz", -"Enter description" => "Tanım giriniz", -"CardDAV syncing addresses" => "CardDAV adresleri eşzamanlıyor", -"more info" => "daha fazla bilgi", -"Primary address (Kontact et al)" => "Birincil adres (Bağlantı ve arkadaşları)", -"iOS/OS X" => "iOS/OS X", -"Download" => "İndir", -"Edit" => "Düzenle", -"New Address Book" => "Yeni Adres Defteri", -"Save" => "Kaydet", -"Cancel" => "İptal" -); diff --git a/apps/contacts/l10n/uk.php b/apps/contacts/l10n/uk.php deleted file mode 100644 index dcd9efff344..00000000000 --- a/apps/contacts/l10n/uk.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php $TRANSLATIONS = array( -"At least one of the address fields has to be filled out." => "Має бути заповнено щонайменше одне поле.", -"This is not your addressbook." => "Це не ваша адресна книга.", -"Mobile" => "Мобільний", -"Text" => "Текст", -"Voice" => "Голос", -"Fax" => "Факс", -"Video" => "Відео", -"Pager" => "Пейджер", -"Birthday" => "День народження", -"Add Contact" => "Додати контакт", -"Organization" => "Організація", -"Delete" => "Видалити", -"Phone" => "Телефон", -"Email" => "Ел.пошта", -"Address" => "Адреса", -"Delete contact" => "Видалити контакт", -"Extended" => "Розширено", -"City" => "Місто", -"Zipcode" => "Поштовий індекс", -"Country" => "Країна", -"Download" => "Завантажити", -"New Address Book" => "Нова адресна книга" -); diff --git a/apps/contacts/l10n/vi.php b/apps/contacts/l10n/vi.php deleted file mode 100644 index d484fb405ca..00000000000 --- a/apps/contacts/l10n/vi.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php $TRANSLATIONS = array( -"id is not set." => "id không được thiết lập.", -"No ID provided" => "Không có ID được cung cấp", -"No address books found." => "Không tìm thấy sổ địa chỉ.", -"No contacts found." => "Không tìm thấy danh sách", -"element name is not set." => "tên phần tử không được thiết lập.", -"Missing ID" => "Missing ID", -"Error reading contact photo." => "Lỗi đọc liên lạc hình ảnh.", -"The loading photo is not valid." => "Các hình ảnh tải không hợp lệ.", -"File doesn't exist:" => "Tập tin không tồn tại", -"Error loading image." => "Lỗi khi tải hình ảnh.", -"Error uploading contacts to storage." => "Lỗi tải lên danh sách địa chỉ để lưu trữ.", -"There is no error, the file uploaded with success" => "Không có lỗi, các tập tin tải lên thành công", -"Contacts" => "Liên lạc", -"Work" => "Công việc", -"Home" => "Nhà", -"Mobile" => "Di động", -"Fax" => "Fax", -"Video" => "Video", -"Pager" => "số trang", -"Birthday" => "Ngày sinh nhật", -"Contact" => "Danh sách", -"Add Contact" => "Thêm liên lạc", -"Addressbooks" => "Sổ địa chỉ", -"Organization" => "Tổ chức", -"Delete" => "Xóa", -"Phone" => "Điện thoại", -"Email" => "Email", -"Address" => "Địa chỉ", -"Delete contact" => "Xóa liên lạc", -"PO Box" => "Hòm thư bưu điện", -"City" => "Thành phố", -"Region" => "Vùng/miền", -"Zipcode" => "Mã bưu điện", -"Country" => "Quốc gia", -"Addressbook" => "Sổ địa chỉ", -"Download" => "Tải về", -"Edit" => "Sửa", -"Save" => "Lưu", -"Cancel" => "Hủy" -); diff --git a/apps/contacts/l10n/xgettextfiles b/apps/contacts/l10n/xgettextfiles deleted file mode 100644 index e291074fba9..00000000000 --- a/apps/contacts/l10n/xgettextfiles +++ /dev/null @@ -1,18 +0,0 @@ -../appinfo/app.php -../ajax/activation.php -../ajax/addbook.php -../ajax/addproperty.php -../ajax/createaddressbook.php -../ajax/deletebook.php -../ajax/deleteproperty.php -../ajax/contactdetails.php -../ajax/saveproperty.php -../ajax/updateaddressbook.php -../lib/app.php -../templates/index.php -../templates/part.chooseaddressbook.php -../templates/part.chooseaddressbook.rowfields.php -../templates/part.editaddressbook.php -../templates/part.property.php -../templates/part.setpropertyform.php -../templates/settings.php diff --git a/apps/contacts/l10n/zh_CN.php b/apps/contacts/l10n/zh_CN.php deleted file mode 100644 index b3bac7aedfb..00000000000 --- a/apps/contacts/l10n/zh_CN.php +++ /dev/null @@ -1,158 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "(取消)激活地址簿错误。", -"id is not set." => "没有设置 id。", -"Cannot update addressbook with an empty name." => "无法使用一个空名称更新地址簿", -"Error updating addressbook." => "更新地址簿错误", -"No ID provided" => "未提供 ID", -"Error setting checksum." => "设置校验值错误。", -"No categories selected for deletion." => "未选中要删除的分类。", -"No address books found." => "找不到地址簿。", -"No contacts found." => "找不到联系人。", -"There was an error adding the contact." => "添加联系人时出错。", -"element name is not set." => "元素名称未设置", -"Cannot add empty property." => "无法添加空属性。", -"At least one of the address fields has to be filled out." => "至少需要填写一项地址。", -"Trying to add duplicate property: " => "试图添加重复属性: ", -"Information about vCard is incorrect. Please reload the page." => "vCard 的信息不正确。请重新加载页面。", -"Missing ID" => "缺少 ID", -"Error parsing VCard for ID: \"" => "无法解析如下ID的 VCard:“", -"checksum is not set." => "未设置校验值。", -"Information about vCard is incorrect. Please reload the page: " => "vCard 信息不正确。请刷新页面: ", -"Something went FUBAR. " => "有一些信息无法被处理。", -"No contact ID was submitted." => "未提交联系人 ID。", -"Error reading contact photo." => "读取联系人照片错误。", -"Error saving temporary file." => "保存临时文件错误。", -"The loading photo is not valid." => "装入的照片不正确。", -"Contact ID is missing." => "缺少联系人 ID。", -"No photo path was submitted." => "未提供照片路径。", -"File doesn't exist:" => "文件不存在:", -"Error loading image." => "加载图片错误。", -"Error getting contact object." => "获取联系人目标时出错。", -"Error getting PHOTO property." => "获取照片属性时出错。", -"Error saving contact." => "保存联系人时出错。", -"Error resizing image" => "缩放图像时出错", -"Error cropping image" => "裁切图像时出错", -"Error creating temporary image" => "创建临时图像时出错", -"Error finding image: " => "查找图像时出错: ", -"Error uploading contacts to storage." => "上传联系人到存储空间时出错", -"There is no error, the file uploaded with success" => "文件上传成功,没有错误发生", -"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "上传的文件长度超出了 php.ini 中 upload_max_filesize 的限制", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "上传的文件长度超出了 HTML 表单中 MAX_FILE_SIZE 的限制", -"The uploaded file was only partially uploaded" => "已上传文件只上传了部分", -"No file was uploaded" => "没有文件被上传", -"Missing a temporary folder" => "缺少临时目录", -"Couldn't save temporary image: " => "无法保存临时图像: ", -"Couldn't load temporary image: " => "无法加载临时图像: ", -"No file was uploaded. Unknown error" => "没有文件被上传。未知错误", -"Contacts" => "联系人", -"Sorry, this functionality has not been implemented yet" => "抱歉,这个功能暂时还没有被实现", -"Not implemented" => "未实现", -"Couldn't get a valid address." => "无法获取一个合法的地址。", -"Error" => "错误", -"This property has to be non-empty." => "这个属性必须是非空的", -"Couldn't serialize elements." => "无法序列化元素", -"'deleteProperty' called without type argument. Please report at bugs.owncloud.org" => "'deleteProperty' 调用时没有类型声明。请到 bugs.owncloud.org 汇报错误", -"Edit name" => "编辑名称", -"No files selected for upload." => "没有选择文件以上传", -"The file you are trying to upload exceed the maximum size for file uploads on this server." => "您试图上传的文件超出了该服务器的最大文件限制", -"Select type" => "选择类型", -"Result: " => "结果: ", -" imported, " => " 已导入, ", -" failed." => " 失败。", -"This is not your addressbook." => "这不是您的地址簿。", -"Contact could not be found." => "无法找到联系人。", -"Work" => "工作", -"Home" => "家庭", -"Mobile" => "移动电话", -"Text" => "文本", -"Voice" => "语音", -"Message" => "消息", -"Fax" => "传真", -"Video" => "视频", -"Pager" => "传呼机", -"Internet" => "互联网", -"Birthday" => "生日", -"{name}'s Birthday" => "{name} 的生日", -"Contact" => "联系人", -"Add Contact" => "添加联系人", -"Import" => "导入", -"Addressbooks" => "地址簿", -"Close" => "关闭", -"Drop photo to upload" => "拖拽图片进行上传", -"Delete current photo" => "删除当前照片", -"Edit current photo" => "编辑当前照片", -"Upload new photo" => "上传新照片", -"Select photo from ownCloud" => "从 ownCloud 选择照片", -"Format custom, Short name, Full name, Reverse or Reverse with comma" => "自定义格式,简称,全名,姓在前,姓在前并用逗号分割", -"Edit name details" => "编辑名称详情", -"Organization" => "组织", -"Delete" => "删除", -"Nickname" => "昵称", -"Enter nickname" => "输入昵称", -"dd-mm-yyyy" => "yyyy-mm-dd", -"Groups" => "分组", -"Separate groups with commas" => "用逗号隔开分组", -"Edit groups" => "编辑分组", -"Preferred" => "偏好", -"Please specify a valid email address." => "请指定合法的电子邮件地址", -"Enter email address" => "输入电子邮件地址", -"Mail to address" => "发送邮件到地址", -"Delete email address" => "删除电子邮件地址", -"Enter phone number" => "输入电话号码", -"Delete phone number" => "删除电话号码", -"View on map" => "在地图上显示", -"Edit address details" => "编辑地址细节。", -"Add notes here." => "添加注释。", -"Add field" => "添加字段", -"Phone" => "电话", -"Email" => "电子邮件", -"Address" => "地址", -"Note" => "注释", -"Download contact" => "下载联系人", -"Delete contact" => "删除联系人", -"The temporary image has been removed from cache." => "临时图像文件已从缓存中删除", -"Edit address" => "编辑地址", -"Type" => "类型", -"PO Box" => "邮箱", -"Extended" => "扩展", -"City" => "城市", -"Region" => "地区", -"Zipcode" => "邮编", -"Country" => "国家", -"Addressbook" => "地址簿", -"Hon. prefixes" => "名誉字首", -"Miss" => "小姐", -"Ms" => "女士", -"Mr" => "先生", -"Sir" => "先生", -"Mrs" => "夫人", -"Dr" => "博士", -"Given name" => "名", -"Additional names" => "其他名称", -"Family name" => "姓", -"Hon. suffixes" => "名誉后缀", -"J.D." => "法律博士", -"M.D." => "医学博士", -"D.O." => "骨科医学博士", -"D.C." => "教育学博士", -"Ph.D." => "哲学博士", -"Esq." => "先生", -"Jr." => "小", -"Sn." => "老", -"Import a contacts file" => "导入联系人文件", -"Please choose the addressbook" => "请选择地址簿", -"create a new addressbook" => "创建新地址簿", -"Name of new addressbook" => "新地址簿名称", -"Importing contacts" => "导入联系人", -"You have no contacts in your addressbook." => "您的地址簿中没有联系人。", -"Add contact" => "添加联系人", -"CardDAV syncing addresses" => "CardDAV 同步地址", -"more info" => "更多信息", -"Primary address (Kontact et al)" => "首选地址 (Kontact 等)", -"iOS/OS X" => "iOS/OS X", -"Download" => "下载", -"Edit" => "编辑", -"New Address Book" => "新建地址簿", -"Save" => "保存", -"Cancel" => "取消" -); diff --git a/apps/contacts/l10n/zh_TW.php b/apps/contacts/l10n/zh_TW.php deleted file mode 100644 index c8edacec9e9..00000000000 --- a/apps/contacts/l10n/zh_TW.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php $TRANSLATIONS = array( -"Error (de)activating addressbook." => "在啟用或關閉電話簿時發生錯誤", -"Error updating addressbook." => "電話簿更新中發生錯誤", -"No ID provided" => "未提供 ID", -"No contacts found." => "沒有找到聯絡人", -"There was an error adding the contact." => "添加通訊錄發生錯誤", -"Cannot add empty property." => "不可添加空白內容", -"At least one of the address fields has to be filled out." => "至少必須填寫一欄地址", -"Information about vCard is incorrect. Please reload the page." => "有關 vCard 的資訊不正確,請重新載入此頁。", -"Missing ID" => "遺失ID", -"No file was uploaded" => "沒有已上傳的檔案", -"Contacts" => "通訊錄", -"This is not your addressbook." => "這不是你的電話簿", -"Contact could not be found." => "通訊錄未發現", -"Work" => "公司", -"Home" => "住宅", -"Mobile" => "行動電話", -"Text" => "文字", -"Voice" => "語音", -"Message" => "訊息", -"Fax" => "傳真", -"Video" => "影片", -"Pager" => "呼叫器", -"Internet" => "網際網路", -"Birthday" => "生日", -"{name}'s Birthday" => "{name}的生日", -"Contact" => "通訊錄", -"Add Contact" => "添加通訊錄", -"Addressbooks" => "電話簿", -"Edit name details" => "編輯姓名詳細資訊", -"Organization" => "組織", -"Delete" => "刪除", -"Nickname" => "綽號", -"Enter nickname" => "輸入綽號", -"dd-mm-yyyy" => "dd-mm-yyyy", -"Groups" => "群組", -"Separate groups with commas" => "用逗號分隔群組", -"Edit groups" => "編輯群組", -"Preferred" => "首選", -"Please specify a valid email address." => "註填入合法的電子郵件住址", -"Enter email address" => "輸入電子郵件地址", -"Mail to address" => "寄送住址", -"Delete email address" => "刪除電子郵件住址", -"Enter phone number" => "輸入電話號碼", -"Delete phone number" => "刪除電話號碼", -"Edit address details" => "電子郵件住址詳細資訊", -"Add notes here." => "在這裡新增註解", -"Add field" => "新增欄位", -"Phone" => "電話", -"Email" => "電子郵件", -"Address" => "地址", -"Note" => "註解", -"Download contact" => "下載通訊錄", -"Delete contact" => "刪除通訊錄", -"Type" => "類型", -"PO Box" => "通訊地址", -"Extended" => "分機", -"City" => "城市", -"Region" => "地區", -"Zipcode" => "郵遞區號", -"Country" => "國家", -"Addressbook" => "電話簿", -"Mr" => "先生", -"Sir" => "先生", -"Mrs" => "小姐", -"Dr" => "博士(醫生)", -"Given name" => "給定名(名)", -"Additional names" => "額外名", -"Family name" => "家族名(姓)", -"Download" => "下載", -"Edit" => "編輯", -"New Address Book" => "新電話簿", -"Save" => "儲存", -"Cancel" => "取消" -); diff --git a/apps/contacts/lib/addressbook.php b/apps/contacts/lib/addressbook.php deleted file mode 100644 index b487260d327..00000000000 --- a/apps/contacts/lib/addressbook.php +++ /dev/null @@ -1,341 +0,0 @@ -<?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/>. - * - */ -/* - * - * The following SQL statement is just a help for developers and will not be - * executed! - * - * CREATE TABLE contacts_addressbooks ( - * id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - * userid VARCHAR(255) NOT NULL, - * displayname VARCHAR(255), - * uri VARCHAR(100), - * description TEXT, - * ctag INT(11) UNSIGNED NOT NULL DEFAULT '1' - * ); - * - */ -/** - * This class manages our addressbooks. - */ -class OC_Contacts_Addressbook { - /** - * @brief Returns the list of addressbooks for a specific user. - * @param string $uid - * @param boolean $active Only return addressbooks with this $active state, default(=false) is don't care - * @return array or false. - */ - public static function all($uid, $active=false) { - $values = array($uid); - $active_where = ''; - if ($active) { - $active_where = ' AND `active` = ?'; - $values[] = 1; - } - try { - $stmt = OCP\DB::prepare( 'SELECT * FROM `*PREFIX*contacts_addressbooks` WHERE `userid` = ? ' . $active_where . ' ORDER BY `displayname`' ); - $result = $stmt->execute($values); - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.' exception: '.$e->getMessage(), OCP\Util::ERROR); - OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.' uid: '.$uid, OCP\Util::DEBUG); - return false; - } - - $addressbooks = array(); - while( $row = $result->fetchRow()) { - $addressbooks[] = $row; - } - $addressbooks = array_merge($addressbooks, OCP\Share::getItemsSharedWith('addressbook', OC_Share_Backend_Addressbook::FORMAT_ADDRESSBOOKS)); - if(!$active && !count($addressbooks)) { - $id = self::addDefault($uid); - return array(self::find($id),); - } - return $addressbooks; - } - - /** - * @brief Get active addressbook IDs for a user. - * @param integer $uid User id. If null current user will be used. - * @return array - */ - public static function activeIds($uid = null) { - if(is_null($uid)) { - $uid = OCP\USER::getUser(); - } - $activeaddressbooks = self::all($uid, true); - $ids = array(); - foreach($activeaddressbooks as $addressbook) { - $ids[] = $addressbook['id']; - } - return $ids; - } - - /** - * @brief Returns the list of active addressbooks for a specific user. - * @param string $uid - * @return array - */ - public static function active($uid) { - return self::all($uid, true); - } - - /** - * @brief Returns the list of addressbooks for a principal (DAV term of user) - * @param string $principaluri - * @return array - */ - public static function allWherePrincipalURIIs($principaluri){ - $uid = self::extractUserID($principaluri); - return self::all($uid); - } - - /** - * @brief Gets the data of one address book - * @param integer $id - * @return associative array or false. - */ - public static function find($id) { - try { - $stmt = OCP\DB::prepare( 'SELECT * FROM `*PREFIX*contacts_addressbooks` WHERE `id` = ?' ); - $result = $stmt->execute(array($id)); - return $result->fetchRow(); - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.', exception: '.$e->getMessage(), OCP\Util::ERROR); - OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.', id: '.$id, OCP\Util::DEBUG); - return false; - } - - return $result->fetchRow(); - } - - /** - * @brief Adds default address book - * @return $id ID of the newly created addressbook or false on error. - */ - public static function addDefault($uid = null) { - if(is_null($uid)) { - $uid = OCP\USER::getUser(); - } - $id = self::add($uid, 'Contacts', 'Default Address Book'); - if($id !== false) { - self::setActive($id, true); - } - return $id; - } - - /** - * @brief Creates a new address book - * @param string $userid - * @param string $name - * @param string $description - * @return insertid - */ - public static function add($uid,$name,$description='') { - try { - $stmt = OCP\DB::prepare( 'SELECT `uri` FROM `*PREFIX*contacts_addressbooks` WHERE `userid` = ? ' ); - $result = $stmt->execute(array($uid)); - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.' exception: '.$e->getMessage(), OCP\Util::ERROR); - OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.' uid: '.$uid, OCP\Util::DEBUG); - return false; - } - $uris = array(); - while($row = $result->fetchRow()){ - $uris[] = $row['uri']; - } - - $uri = self::createURI($name, $uris ); - try { - $stmt = OCP\DB::prepare( 'INSERT INTO `*PREFIX*contacts_addressbooks` (`userid`,`displayname`,`uri`,`description`,`ctag`) VALUES(?,?,?,?,?)' ); - $result = $stmt->execute(array($uid,$name,$uri,$description,1)); - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.', exception: '.$e->getMessage(), OCP\Util::ERROR); - OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.', uid: '.$uid, OCP\Util::DEBUG); - return false; - } - - return OCP\DB::insertid('*PREFIX*contacts_addressbooks'); - } - - /** - * @brief Creates a new address book from the data sabredav provides - * @param string $principaluri - * @param string $uri - * @param string $name - * @param string $description - * @return insertid or false - */ - public static function addFromDAVData($principaluri,$uri,$name,$description) { - $uid = self::extractUserID($principaluri); - - try { - $stmt = OCP\DB::prepare('INSERT INTO `*PREFIX*contacts_addressbooks` (`userid`,`displayname`,`uri`,`description`,`ctag`) VALUES(?,?,?,?,?)'); - $result = $stmt->execute(array($uid,$name,$uri,$description,1)); - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.', exception: '.$e->getMessage(), OCP\Util::ERROR); - OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.', uid: '.$uid, OCP\Util::DEBUG); - OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.', uri: '.$uri, OCP\Util::DEBUG); - return false; - } - - return OCP\DB::insertid('*PREFIX*contacts_addressbooks'); - } - - /** - * @brief Edits an addressbook - * @param integer $id - * @param string $name - * @param string $description - * @return boolean - */ - public static function edit($id,$name,$description) { - // Need these ones for checking uri - $addressbook = self::find($id); - if ($addressbook['userid'] != OCP\User::getUser()) { - $sharedAddressbook = OCP\Share::getItemSharedWithBySource('addressbook', $id); - if (!$sharedAddressbook || !($sharedAddressbook['permissions'] & OCP\Share::PERMISSION_UPDATE)) { - return false; - } - } - if(is_null($name)) { - $name = $addressbook['name']; - } - if(is_null($description)) { - $description = $addressbook['description']; - } - - try { - $stmt = OCP\DB::prepare('UPDATE `*PREFIX*contacts_addressbooks` SET `displayname`=?,`description`=?, `ctag`=`ctag`+1 WHERE `id`=?'); - $result = $stmt->execute(array($name,$description,$id)); - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.', exception: '.$e->getMessage(), OCP\Util::ERROR); - OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.', id: '.$id, OCP\Util::DEBUG); - return false; - } - - return true; - } - - /** - * @brief Activates an addressbook - * @param integer $id - * @param boolean $active - * @return boolean - */ - public static function setActive($id,$active) { - $sql = 'UPDATE `*PREFIX*contacts_addressbooks` SET `active` = ? WHERE `id` = ?'; - OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.', id: '.$id.', active: '.intval($active), OCP\Util::ERROR); - try { - $stmt = OCP\DB::prepare($sql); - $stmt->execute(array(intval($active), $id)); - return true; - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.', exception for '.$id.': '.$e->getMessage(), OCP\Util::ERROR); - return false; - } - } - - /** - * @brief Checks if an addressbook is active. - * @param integer $id ID of the address book. - * @return boolean - */ - public static function isActive($id) { - $sql = 'SELECT `active` FROM `*PREFIX*contacts_addressbooks` WHERE `id` = ?'; - try { - $stmt = OCP\DB::prepare( $sql ); - $result = $stmt->execute(array($id)); - $row = $result->fetchRow(); - return (bool)$row['active']; - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.', exception: '.$e->getMessage(), OCP\Util::ERROR); - } - } - - /** - * @brief removes an address book - * @param integer $id - * @return boolean - */ - public static function delete($id) { - $addressbook = self::find($id); - if ($addressbook['userid'] != OCP\User::getUser()) { - $sharedAddressbook = OCP\Share::getItemSharedWithBySource('addressbook', $id); - if (!$sharedAddressbook || !($sharedAddressbook['permissions'] & OCP\Share::PERMISSION_DELETE)) { - return false; - } - } - self::setActive($id, false); - try { - $stmt = OCP\DB::prepare( 'DELETE FROM `*PREFIX*contacts_addressbooks` WHERE `id` = ?' ); - $stmt->execute(array($id)); - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __CLASS__.'::'.__METHOD__.', exception for '.$id.': '.$e->getMessage(), OCP\Util::ERROR); - return false; - } - - $cards = OC_Contacts_VCard::all($id); - foreach($cards as $card){ - OC_Contacts_VCard::delete($card['id']); - } - - return true; - } - - /** - * @brief Updates ctag for addressbook - * @param integer $id - * @return boolean - */ - public static function touch($id) { - $stmt = OCP\DB::prepare( 'UPDATE `*PREFIX*contacts_addressbooks` SET `ctag` = `ctag` + 1 WHERE `id` = ?' ); - $stmt->execute(array($id)); - - return true; - } - - /** - * @brief Creates a URI for Addressbook - * @param string $name name of the addressbook - * @param array $existing existing addressbook URIs - * @return string new name - */ - public static function createURI($name,$existing) { - $name = str_replace(' ', '_', strtolower($name)); - $newname = $name; - $i = 1; - while(in_array($newname, $existing)) { - $newname = $name.$i; - $i = $i + 1; - } - return $newname; - } - - /** - * @brief gets the userid from a principal path - * @return string - */ - public static function extractUserID($principaluri) { - list($prefix, $userid) = Sabre_DAV_URLUtil::splitPath($principaluri); - return $userid; - } -} diff --git a/apps/contacts/lib/app.php b/apps/contacts/lib/app.php deleted file mode 100644 index e8e1937404f..00000000000 --- a/apps/contacts/lib/app.php +++ /dev/null @@ -1,331 +0,0 @@ -<?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. - */ - -/** - * This class manages our app actions - */ -OC_Contacts_App::$l10n = OC_L10N::get('contacts'); -class OC_Contacts_App { - /* - * @brief language object for calendar app - */ - - public static $l10n; - /* - * @brief categories of the user - */ - public static $categories = null; - - public static function getAddressbook($id) { - // TODO: Throw an exception instead of returning json. - $addressbook = OC_Contacts_Addressbook::find( $id ); - if($addressbook === false || $addressbook['userid'] != OCP\USER::getUser()) { - if ($addressbook === false) { - OCP\Util::writeLog('contacts', - 'Addressbook not found: '. $id, - OCP\Util::ERROR); - //throw new Exception('Addressbook not found: '. $id); - OCP\JSON::error( - array( - 'data' => array( - 'message' => self::$l10n->t('Addressbook not found: ' . $id) - ) - ) - ); - } else { - $sharedAddressbook = OCP\Share::getItemSharedWithBySource('addressbook', $id, OC_Share_Backend_Addressbook::FORMAT_ADDRESSBOOKS); - if ($sharedAddressbook) { - return $sharedAddressbook; - } else { - OCP\Util::writeLog('contacts', - 'Addressbook('.$id.') is not from '.OCP\USER::getUser(), - OCP\Util::ERROR); - //throw new Exception('This is not your addressbook.'); - OCP\JSON::error( - array( - 'data' => array( - 'message' => self::$l10n->t('This is not your addressbook.') - ) - ) - ); - } - } - } - return $addressbook; - } - - public static function getContactObject($id) { - $card = OC_Contacts_VCard::find( $id ); - if( $card === false ) { - OCP\Util::writeLog('contacts', - 'Contact could not be found: '.$id, - OCP\Util::ERROR); - OCP\JSON::error( - array( - 'data' => array( - 'message' => self::$l10n->t('Contact could not be found.') - .' '.print_r($id, true) - ) - ) - ); - exit(); - } - - self::getAddressbook( $card['addressbookid'] );//access check - return $card; - } - - /** - * @brief Gets the VCard as an OC_VObject - * @returns The card or null if the card could not be parsed. - */ - public static function getContactVCard($id) { - $card = self::getContactObject( $id ); - - $vcard = OC_VObject::parse($card['carddata']); - if (!is_null($vcard) && !isset($vcard->REV)) { - $rev = new DateTime('@'.$card['lastmodified']); - $vcard->setString('REV', $rev->format(DateTime::W3C)); - } - return $vcard; - } - - public static function getPropertyLineByChecksum($vcard, $checksum) { - $line = null; - for($i=0;$i<count($vcard->children);$i++) { - if(md5($vcard->children[$i]->serialize()) == $checksum ) { - $line = $i; - break; - } - } - return $line; - } - - /** - * @return array of vcard prop => label - */ - public static function getIMOptions($im = null) { - $l10n = self::$l10n; - $ims = array( - 'jabber' => array( - 'displayname' => (string)$l10n->t('Jabber'), - 'xname' => 'X-JABBER', - 'protocol' => 'xmpp', - ), - 'aim' => array( - 'displayname' => (string)$l10n->t('AIM'), - 'xname' => 'X-AIM', - 'protocol' => 'aim', - ), - 'msn' => array( - 'displayname' => (string)$l10n->t('MSN'), - 'xname' => 'X-MSN', - 'protocol' => 'msn', - ), - 'twitter' => array( - 'displayname' => (string)$l10n->t('Twitter'), - 'xname' => 'X-TWITTER', - 'protocol' => null, - ), - 'googletalk' => array( - 'displayname' => (string)$l10n->t('GoogleTalk'), - 'xname' => null, - 'protocol' => 'xmpp', - ), - 'facebook' => array( - 'displayname' => (string)$l10n->t('Facebook'), - 'xname' => null, - 'protocol' => 'xmpp', - ), - 'xmpp' => array( - 'displayname' => (string)$l10n->t('XMPP'), - 'xname' => null, - 'protocol' => 'xmpp', - ), - 'icq' => array( - 'displayname' => (string)$l10n->t('ICQ'), - 'xname' => 'X-ICQ', - 'protocol' => 'icq', - ), - 'yahoo' => array( - 'displayname' => (string)$l10n->t('Yahoo'), - 'xname' => 'X-YAHOO', - 'protocol' => 'ymsgr', - ), - 'skype' => array( - 'displayname' => (string)$l10n->t('Skype'), - 'xname' => 'X-SKYPE', - 'protocol' => 'skype', - ), - 'qq' => array( - 'displayname' => (string)$l10n->t('QQ'), - 'xname' => 'X-SKYPE', - 'protocol' => 'x-apple', - ), - 'gadugadu' => array( - 'displayname' => (string)$l10n->t('GaduGadu'), - 'xname' => 'X-SKYPE', - 'protocol' => 'x-apple', - ), - ); - if(is_null($im)) { - return $ims; - } else { - $ims['ymsgr'] = $ims['yahoo']; - $ims['gtalk'] = $ims['googletalk']; - return isset($ims[$im]) ? $ims[$im] : null; - } - } - - /** - * @return types for property $prop - */ - public static function getTypesOfProperty($prop) { - $l = self::$l10n; - switch($prop) { - case 'ADR': - case 'IMPP': - return array( - 'WORK' => $l->t('Work'), - 'HOME' => $l->t('Home'), - 'OTHER' => $l->t('Other'), - ); - case 'TEL': - return array( - 'HOME' => $l->t('Home'), - 'CELL' => $l->t('Mobile'), - 'WORK' => $l->t('Work'), - 'TEXT' => $l->t('Text'), - 'VOICE' => $l->t('Voice'), - 'MSG' => $l->t('Message'), - 'FAX' => $l->t('Fax'), - 'VIDEO' => $l->t('Video'), - 'PAGER' => $l->t('Pager'), - 'OTHER' => $l->t('Other'), - ); - case 'EMAIL': - return array( - 'WORK' => $l->t('Work'), - 'HOME' => $l->t('Home'), - 'INTERNET' => $l->t('Internet'), - ); - } - } - - /** - * @brief returns the vcategories object of the user - * @return (object) $vcategories - */ - protected static function getVCategories() { - if (is_null(self::$categories)) { - self::$categories = new OC_VCategories('contacts', - null, - self::getDefaultCategories()); - } - return self::$categories; - } - - /** - * @brief returns the categories for the user - * @return (Array) $categories - */ - public static function getCategories() { - $categories = self::getVCategories()->categories(); - if(count($categories) == 0) { - self::scanCategories(); - $categories = self::$categories->categories(); - } - return ($categories ? $categories : self::getDefaultCategories()); - } - - /** - * @brief returns the default categories of ownCloud - * @return (array) $categories - */ - public static function getDefaultCategories(){ - return array( - (string)self::$l10n->t('Birthday'), - (string)self::$l10n->t('Business'), - (string)self::$l10n->t('Call'), - (string)self::$l10n->t('Clients'), - (string)self::$l10n->t('Deliverer'), - (string)self::$l10n->t('Holidays'), - (string)self::$l10n->t('Ideas'), - (string)self::$l10n->t('Journey'), - (string)self::$l10n->t('Jubilee'), - (string)self::$l10n->t('Meeting'), - (string)self::$l10n->t('Other'), - (string)self::$l10n->t('Personal'), - (string)self::$l10n->t('Projects'), - (string)self::$l10n->t('Questions'), - (string)self::$l10n->t('Work'), - ); - } - - /** - * scan vcards for categories. - * @param $vccontacts VCards to scan. null to check all vcards for the current user. - */ - public static function scanCategories($vccontacts = null) { - if (is_null($vccontacts)) { - $vcaddressbooks = OC_Contacts_Addressbook::all(OCP\USER::getUser()); - if(count($vcaddressbooks) > 0) { - $vcaddressbookids = array(); - foreach($vcaddressbooks as $vcaddressbook) { - $vcaddressbookids[] = $vcaddressbook['id']; - } - $start = 0; - $batchsize = 10; - while($vccontacts = - OC_Contacts_VCard::all($vcaddressbookids, $start, $batchsize)) { - $cards = array(); - foreach($vccontacts as $vccontact) { - $cards[] = $vccontact['carddata']; - } - OCP\Util::writeLog('contacts', - __CLASS__.'::'.__METHOD__ - .', scanning: '.$batchsize.' starting from '.$start, - OCP\Util::DEBUG); - // only reset on first batch. - self::getVCategories()->rescan($cards, - true, - ($start == 0 ? true : false)); - $start += $batchsize; - } - } - } - } - - /** - * check VCard for new categories. - * @see OC_VCategories::loadFromVObject - */ - public static function loadCategoriesFromVCard(OC_VObject $contact) { - self::getVCategories()->loadFromVObject($contact, true); - } - - /** - * @brief Get the last modification time. - * @param $vcard OC_VObject - * $return DateTime | null - */ - public static function lastModified($vcard) { - $rev = $vcard->getAsString('REV'); - if ($rev) { - return DateTime::createFromFormat(DateTime::W3C, $rev); - } - } - - public static function setLastModifiedHeader($contact) { - $rev = $contact->getAsString('REV'); - if ($rev) { - $rev = DateTime::createFromFormat(DateTime::W3C, $rev); - OCP\Response::setLastModifiedHeader($rev); - } - } -} diff --git a/apps/contacts/lib/hooks.php b/apps/contacts/lib/hooks.php deleted file mode 100644 index 8b7adc60f27..00000000000 --- a/apps/contacts/lib/hooks.php +++ /dev/null @@ -1,116 +0,0 @@ -<?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/>. - * - */ - -/** - * The following signals are being emitted: - * - * OC_Contacts_VCard::post_moveToAddressbook(array('aid' => $aid, 'id' => $id)) - * OC_Contacts_VCard::pre_deleteVCard(array('aid' => $aid, 'id' => $id, 'uri' = $uri)); (NOTE: the values can be null depending on which method emits them) - * OC_Contacts_VCard::post_updateVCard($id) - * OC_Contacts_VCard::post_createVCard($newid) - */ - -/** - * This class contains all hooks. - */ -class OC_Contacts_Hooks{ - /** - * @brief Add default Addressbook for a certain user - * @param paramters parameters from postCreateUser-Hook - * @return array - */ - static public function createUser($parameters) { - OC_Contacts_Addressbook::addDefault($parameters['uid']); - return true; - } - - /** - * @brief Deletes all Addressbooks of a certain user - * @param paramters parameters from postDeleteUser-Hook - * @return array - */ - static public function deleteUser($parameters) { - $addressbooks = OC_Contacts_Addressbook::all($parameters['uid']); - - foreach($addressbooks as $addressbook) { - OC_Contacts_Addressbook::delete($addressbook['id']); - } - - return true; - } - - static public function getCalenderSources($parameters) { - $base_url = OCP\Util::linkTo('calendar', 'ajax/events.php').'?calendar_id='; - foreach(OC_Contacts_Addressbook::all(OCP\USER::getUser()) as $addressbook) { - $parameters['sources'][] - = array( - 'url' => $base_url.'birthday_'. $addressbook['id'], - 'backgroundColor' => '#cccccc', - 'borderColor' => '#888', - 'textColor' => 'black', - 'cache' => true, - 'editable' => false, - ); - } - } - - static public function getBirthdayEvents($parameters) { - $name = $parameters['calendar_id']; - if (strpos($name, 'birthday_') != 0) { - return; - } - $info = explode('_', $name); - $aid = $info[1]; - OC_Contacts_App::getAddressbook($aid); - foreach(OC_Contacts_VCard::all($aid) as $card){ - $vcard = OC_VObject::parse($card['carddata']); - if (!$vcard) { - continue; - } - $birthday = $vcard->BDAY; - if ($birthday) { - $date = new DateTime($birthday); - $vevent = new OC_VObject('VEVENT'); - //$vevent->setDateTime('LAST-MODIFIED', new DateTime($vcard->REV)); - $vevent->setDateTime('DTSTART', $date, - Sabre_VObject_Element_DateTime::DATE); - $vevent->setString('DURATION', 'P1D'); - $vevent->setString('UID', substr(md5(rand().time()), 0, 10)); - // DESCRIPTION? - $vevent->setString('RRULE', 'FREQ=YEARLY'); - $title = str_replace('{name}', - $vcard->getAsString('FN'), - OC_Contacts_App::$l10n->t('{name}\'s Birthday')); - $parameters['events'][] = array( - 'id' => 0,//$card['id'], - 'vevent' => $vevent, - 'repeating' => true, - 'summary' => $title, - 'calendardata' => "BEGIN:VCALENDAR\nVERSION:2.0\n" - . "PRODID:ownCloud Contacts " - . OCP\App::getAppVersion('contacts') . "\n" - . $vevent->serialize() . "END:VCALENDAR" - ); - } - } - } -} diff --git a/apps/contacts/lib/sabre/addressbook.php b/apps/contacts/lib/sabre/addressbook.php deleted file mode 100644 index e9eb77472b6..00000000000 --- a/apps/contacts/lib/sabre/addressbook.php +++ /dev/null @@ -1,128 +0,0 @@ -<?php -/** - * ownCloud - Addressbook - * - * @author Thomas Tanghus - * @copyright 2012 Thomas Tanghus (thomas@tanghus.net) - * - * 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/>. - * - */ - -/** - * This class overrides __construct to get access to $addressBookInfo and - * $carddavBackend, Sabre_CardDAV_AddressBook::getACL() to return read/write - * permissions based on user and shared state and it overrides - * Sabre_CardDAV_AddressBook::getChild() and Sabre_CardDAV_AddressBook::getChildren() - * to instantiate OC_Connector_Sabre_CardDAV_Cards. -*/ -class OC_Connector_Sabre_CardDAV_AddressBook extends Sabre_CardDAV_AddressBook { - - /** - * CardDAV backend - * - * @var Sabre_CardDAV_Backend_Abstract - */ - private $carddavBackend; - - /** - * Constructor - * - * @param Sabre_CardDAV_Backend_Abstract $carddavBackend - * @param array $addressBookInfo - */ - public function __construct( - Sabre_CardDAV_Backend_Abstract $carddavBackend, - array $addressBookInfo) { - - $this->carddavBackend = $carddavBackend; - $this->addressBookInfo = $addressBookInfo; - parent::__construct($carddavBackend, $addressBookInfo); - - } - - /** - * Returns a list of ACE's for this node. - * - * Each ACE has the following properties: - * * 'privilege', a string such as {DAV:}read or {DAV:}write. These are - * currently the only supported privileges - * * 'principal', a url to the principal who owns the node - * * 'protected' (optional), indicating that this ACE is not allowed to - * be updated. - * - * @return array - */ - public function getACL() { - - $readprincipal = $this->getOwner(); - $writeprincipal = $this->getOwner(); - $uid = OC_Contacts_Addressbook::extractUserID($this->getOwner()); - - if($uid != OCP\USER::getUser()) { - $sharedAddressbook = OCP\Share::getItemSharedWithBySource('addressbook', $this->addressBookInfo['id']); - if ($sharedAddressbook && ($sharedAddressbook['permissions'] & OCP\Share::PERMISSION_READ)) { - $readprincipal = 'principals/' . OCP\USER::getUser(); - } - if ($sharedAddressbook && ($sharedAddressbook['permissions'] & OCP\Share::PERMISSION_UPDATE)) { - $writeprincipal = 'principals/' . OCP\USER::getUser(); - } - } - - return array( - array( - 'privilege' => '{DAV:}read', - 'principal' => $readprincipal, - 'protected' => true, - ), - array( - 'privilege' => '{DAV:}write', - 'principal' => $writeprincipal, - 'protected' => true, - ), - - ); - - } - - /** - * Returns a card - * - * @param string $name - * @return OC_Connector_Sabre_DAV_Card - */ - public function getChild($name) { - - $obj = $this->carddavBackend->getCard($this->addressBookInfo['id'],$name); - if (!$obj) throw new Sabre_DAV_Exception_NotFound('Card not found'); - return new OC_Connector_Sabre_CardDAV_Card($this->carddavBackend,$this->addressBookInfo,$obj); - - } - - /** - * Returns the full list of cards - * - * @return array - */ - public function getChildren() { - - $objs = $this->carddavBackend->getCards($this->addressBookInfo['id']); - $children = array(); - foreach($objs as $obj) { - $children[] = new OC_Connector_Sabre_CardDAV_Card($this->carddavBackend,$this->addressBookInfo,$obj); - } - return $children; - - } -}
\ No newline at end of file diff --git a/apps/contacts/lib/sabre/addressbookroot.php b/apps/contacts/lib/sabre/addressbookroot.php deleted file mode 100644 index 69cd6021284..00000000000 --- a/apps/contacts/lib/sabre/addressbookroot.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php -/** - * ownCloud - Addressbook - * - * @author Thomas Tanghus - * @copyright 2012 Thomas Tanghus (thomas@tanghus.net) - * - * 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/>. - * - */ - -/** - * This class overrides Sabre_CardDAV_AddressBookRoot::getChildForPrincipal() - * to instantiate OC_Connector_CardDAV_UserAddressBooks. -*/ -class OC_Connector_Sabre_CardDAV_AddressBookRoot extends Sabre_CardDAV_AddressBookRoot { - - /** - * This method returns a node for a principal. - * - * The passed array contains principal information, and is guaranteed to - * at least contain a uri item. Other properties may or may not be - * supplied by the authentication backend. - * - * @param array $principal - * @return Sabre_DAV_INode - */ - public function getChildForPrincipal(array $principal) { - - return new OC_Connector_Sabre_CardDAV_UserAddressBooks($this->carddavBackend, $principal['uri']); - - } - -}
\ No newline at end of file diff --git a/apps/contacts/lib/sabre/backend.php b/apps/contacts/lib/sabre/backend.php deleted file mode 100644 index 04737eb3ab4..00000000000 --- a/apps/contacts/lib/sabre/backend.php +++ /dev/null @@ -1,210 +0,0 @@ -<?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/>. - * - */ - -/** - * This CardDAV backend uses PDO to store addressbooks - */ -class OC_Connector_Sabre_CardDAV extends Sabre_CardDAV_Backend_Abstract { - /** - * Returns the list of addressbooks for a specific user. - * - * @param string $principaluri - * @return array - */ - public function getAddressBooksForUser($principaluri) { - $data = OC_Contacts_Addressbook::allWherePrincipalURIIs($principaluri); - $addressbooks = array(); - - foreach($data as $i) { - $addressbooks[] = array( - 'id' => $i['id'], - 'uri' => $i['uri'], - 'principaluri' => 'principals/'.$i['userid'], - '{DAV:}displayname' => $i['displayname'], - '{' . Sabre_CardDAV_Plugin::NS_CARDDAV . '}addressbook-description' - => $i['description'], - '{http://calendarserver.org/ns/}getctag' => $i['ctag'], - ); - } - - return $addressbooks; - } - - - /** - * Updates an addressbook's properties - * - * See Sabre_DAV_IProperties for a description of the mutations array, as - * well as the return value. - * - * @param mixed $addressbookid - * @param array $mutations - * @see Sabre_DAV_IProperties::updateProperties - * @return bool|array - */ - public function updateAddressBook($addressbookid, array $mutations) { - $name = null; - $description = null; - - foreach($mutations as $property=>$newvalue) { - switch($property) { - case '{DAV:}displayname' : - $name = $newvalue; - break; - case '{' . Sabre_CardDAV_Plugin::NS_CARDDAV - . '}addressbook-description' : - $description = $newvalue; - break; - default : - // If any unsupported values were being updated, we must - // let the entire request fail. - return false; - } - } - - OC_Contacts_Addressbook::edit($addressbookid, $name, $description); - - return true; - - } - - /** - * Creates a new address book - * - * @param string $principaluri - * @param string $url Just the 'basename' of the url. - * @param array $properties - * @return void - */ - public function createAddressBook($principaluri, $url, array $properties) { - - $displayname = null; - $description = null; - - foreach($properties as $property=>$newvalue) { - - switch($property) { - case '{DAV:}displayname' : - $displayname = $newvalue; - break; - case '{' . Sabre_CardDAV_Plugin::NS_CARDDAV - . '}addressbook-description' : - $description = $newvalue; - break; - default : - throw new Sabre_DAV_Exception_BadRequest('Unknown property: ' - . $property); - } - - } - - OC_Contacts_Addressbook::addFromDAVData( - $principaluri, - $url, - $name, - $description - ); - } - - /** - * Deletes an entire addressbook and all its contents - * - * @param int $addressbookid - * @return void - */ - public function deleteAddressBook($addressbookid) { - OC_Contacts_Addressbook::delete($addressbookid); - } - - /** - * Returns all cards for a specific addressbook id. - * - * @param mixed $addressbookid - * @return array - */ - public function getCards($addressbookid) { - $data = OC_Contacts_VCard::all($addressbookid); - $cards = array(); - foreach($data as $i){ - //OCP\Util::writeLog('contacts', __METHOD__.', uri: ' . $i['uri'], OCP\Util::DEBUG); - $cards[] = array( - 'id' => $i['id'], - //'carddata' => $i['carddata'], - 'size' => strlen($i['carddata']), - 'etag' => md5($i['carddata']), - 'uri' => $i['uri'], - 'lastmodified' => $i['lastmodified'] ); - } - - return $cards; - } - - /** - * Returns a specfic card - * - * @param mixed $addressbookid - * @param string $carduri - * @return array - */ - public function getCard($addressbookid, $carduri) { - return OC_Contacts_VCard::findWhereDAVDataIs($addressbookid, $carduri); - - } - - /** - * Creates a new card - * - * @param mixed $addressbookid - * @param string $carduri - * @param string $carddata - * @return bool - */ - public function createCard($addressbookid, $carduri, $carddata) { - OC_Contacts_VCard::addFromDAVData($addressbookid, $carduri, $carddata); - return true; - } - - /** - * Updates a card - * - * @param mixed $addressbookid - * @param string $carduri - * @param string $carddata - * @return bool - */ - public function updateCard($addressbookid, $carduri, $carddata) { - return OC_Contacts_VCard::editFromDAVData( - $addressbookid, $carduri, $carddata - ); - } - - /** - * Deletes a card - * - * @param mixed $addressbookid - * @param string $carduri - * @return bool - */ - public function deleteCard($addressbookid, $carduri) { - return OC_Contacts_VCard::deleteFromDAVData($addressbookid, $carduri); - } -} diff --git a/apps/contacts/lib/sabre/card.php b/apps/contacts/lib/sabre/card.php deleted file mode 100644 index f4414a25f7c..00000000000 --- a/apps/contacts/lib/sabre/card.php +++ /dev/null @@ -1,94 +0,0 @@ -<?php -/** - * ownCloud - Addressbook - * - * @author Thomas Tanghus - * @copyright 2012 Thomas Tanghus (thomas@tanghus.net) - * - * 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/>. - * - */ - -/** - * This class overrides Sabre_CardDAV_Card::getACL() - * to return read/write permissions based on user and shared state. -*/ -class OC_Connector_Sabre_CardDAV_Card extends Sabre_CardDAV_Card { - - /** - * Array with information about the containing addressbook - * - * @var array - */ - private $addressBookInfo; - - /** - * Constructor - * - * @param Sabre_CardDAV_Backend_Abstract $carddavBackend - * @param array $addressBookInfo - * @param array $cardData - */ - public function __construct(Sabre_CardDAV_Backend_Abstract $carddavBackend, array $addressBookInfo, array $cardData) { - - $this->addressBookInfo = $addressBookInfo; - parent::__construct($carddavBackend, $addressBookInfo, $cardData); - - } - - /** - * Returns a list of ACE's for this node. - * - * Each ACE has the following properties: - * * 'privilege', a string such as {DAV:}read or {DAV:}write. These are - * currently the only supported privileges - * * 'principal', a url to the principal who owns the node - * * 'protected' (optional), indicating that this ACE is not allowed to - * be updated. - * - * @return array - */ - public function getACL() { - - $readprincipal = $this->getOwner(); - $writeprincipal = $this->getOwner(); - $uid = OC_Contacts_Addressbook::extractUserID($this->getOwner()); - - if($uid != OCP\USER::getUser()) { - $sharedAddressbook = OCP\Share::getItemSharedWithBySource('addressbook', $this->addressBookInfo['id']); - if ($sharedAddressbook && ($sharedAddressbook['permissions'] & OCP\Share::PERMISSION_READ)) { - $readprincipal = 'principals/' . OCP\USER::getUser(); - } - if ($sharedAddressbook && ($sharedAddressbook['permissions'] & OCP\Share::PERMISSION_UPDATE)) { - $writeprincipal = 'principals/' . OCP\USER::getUser(); - } - } - - return array( - array( - 'privilege' => '{DAV:}read', - 'principal' => $readprincipal, - 'protected' => true, - ), - array( - 'privilege' => '{DAV:}write', - 'principal' => $writeprincipal, - 'protected' => true, - ), - - ); - - } - -}
\ No newline at end of file diff --git a/apps/contacts/lib/sabre/useraddressbooks.php b/apps/contacts/lib/sabre/useraddressbooks.php deleted file mode 100644 index 328b433bd6e..00000000000 --- a/apps/contacts/lib/sabre/useraddressbooks.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php -/** - * ownCloud - Addressbook - * - * @author Thomas Tanghus - * @copyright 2012 Thomas Tanghus (thomas@tanghus.net) - * - * 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/>. - * - */ - -/** - * This class overrides Sabre_CardDAV_UserAddressBooks::getChildren() - * to instantiate OC_Connector_Sabre_CardDAV_AddressBooks. -*/ -class OC_Connector_Sabre_CardDAV_UserAddressBooks extends Sabre_CardDAV_UserAddressBooks { - - /** - * Returns a list of addressbooks - * - * @return array - */ - public function getChildren() { - - $addressbooks = $this->carddavBackend->getAddressbooksForUser($this->principalUri); - $objs = array(); - foreach($addressbooks as $addressbook) { - $objs[] = new OC_Connector_Sabre_CardDAV_AddressBook($this->carddavBackend, $addressbook); - } - return $objs; - - } - -}
\ No newline at end of file diff --git a/apps/contacts/lib/sabre/vcfexportplugin.php b/apps/contacts/lib/sabre/vcfexportplugin.php deleted file mode 100644 index f0ba60b303f..00000000000 --- a/apps/contacts/lib/sabre/vcfexportplugin.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php - -/** - * VCF Exporter - * - * This plugin adds the ability to export entire address books as .vcf files. - * This is useful for clients that don't support CardDAV yet. They often do - * support vcf files. - * - * @package Sabre - * @subpackage CardDAV - * @copyright Copyright (C) 2007-2012 Rooftop Solutions. All rights reserved. - * @author Evert Pot (http://www.rooftopsolutions.nl/) - * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License - */ -class OC_Connector_Sabre_CardDAV_VCFExportPlugin extends Sabre_DAV_ServerPlugin { - - /** - * Reference to Server class - * - * @var Sabre_DAV_Server - */ - private $server; - - /** - * Initializes the plugin and registers event handlers - * - * @param Sabre_DAV_Server $server - * @return void - */ - public function initialize(Sabre_DAV_Server $server) { - - $this->server = $server; - $this->server->subscribeEvent('beforeMethod', array($this,'beforeMethod'), 90); - - } - - /** - * 'beforeMethod' event handles. This event handles intercepts GET requests ending - * with ?export - * - * @param string $method - * @param string $uri - * @return bool - */ - public function beforeMethod($method, $uri) { - - if ($method!='GET') return; - if ($this->server->httpRequest->getQueryString()!='export') return; - - // splitting uri - list($uri) = explode('?', $uri, 2); - - $node = $this->server->tree->getNodeForPath($uri); - - if (!($node instanceof Sabre_CardDAV_IAddressBook)) return; - - // Checking ACL, if available. - if ($aclPlugin = $this->server->getPlugin('acl')) { - $aclPlugin->checkPrivileges($uri, '{DAV:}read'); - } - - $this->server->httpResponse->setHeader('Content-Type', 'text/directory'); - $this->server->httpResponse->sendStatus(200); - - $nodes = $this->server->getPropertiesForPath($uri, array( - '{' . Sabre_CardDAV_Plugin::NS_CARDDAV . '}address-data', - ), 1); - - $this->server->httpResponse->sendBody($this->generateVCF($nodes)); - - // Returning false to break the event chain - return false; - - } - - /** - * Merges all vcard objects, and builds one big vcf export - * - * @param array $nodes - * @return string - */ - public function generateVCF(array $nodes) { - $objects = array(); - - foreach($nodes as $node) { - - if (!isset($node[200]['{' . Sabre_CardDAV_Plugin::NS_CARDDAV . '}address-data'])) { - continue; - } - $nodeData = $node[200]['{' . Sabre_CardDAV_Plugin::NS_CARDDAV . '}address-data']; - $objects[] = $nodeData; - - } - - return implode("\r\n", $objects); - - } - -} diff --git a/apps/contacts/lib/search.php b/apps/contacts/lib/search.php deleted file mode 100644 index 53aa2b48496..00000000000 --- a/apps/contacts/lib/search.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php -class OC_Search_Provider_Contacts extends OC_Search_Provider{ - function search($query){ - $addressbooks = OC_Contacts_Addressbook::all(OCP\USER::getUser(), 1); - if(count($addressbooks)==0 || !OCP\App::isEnabled('contacts')) { - return array(); - } - $results=array(); - $l = new OC_l10n('contacts'); - foreach($addressbooks as $addressbook){ - $vcards = OC_Contacts_VCard::all($addressbook['id']); - foreach($vcards as $vcard){ - if(substr_count(strtolower($vcard['fullname']), strtolower($query)) > 0) { - $link = OCP\Util::linkTo('contacts', 'index.php').'&id='.urlencode($vcard['id']); - $results[]=new OC_Search_Result($vcard['fullname'], '', $link, (string)$l->t('Contact'));//$name,$text,$link,$type - } - } - } - return $results; - } -} diff --git a/apps/contacts/lib/share/addressbook.php b/apps/contacts/lib/share/addressbook.php deleted file mode 100644 index acabeab2adc..00000000000 --- a/apps/contacts/lib/share/addressbook.php +++ /dev/null @@ -1,94 +0,0 @@ -<?php -/** - * Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - -class OC_Share_Backend_Addressbook implements OCP\Share_Backend_Collection { - const FORMAT_ADDRESSBOOKS = 1; - - /** - * @brief Get the source of the item to be stored in the database - * @param string Item - * @param string Owner of the item - * @return mixed|array|false Source - * - * Return an array if the item is file dependent, the array needs two keys: 'item' and 'file' - * Return false if the item does not exist for the user - * - * The formatItems() function will translate the source returned back into the item - */ - public function isValidSource($itemSource, $uidOwner) { - $addressbook = OC_Contacts_Addressbook::find( $itemSource ); - if( $addressbook === false || $addressbook['userid'] != $uidOwner) { - return false; - } - return true; - } - - /** - * @brief Get a unique name of the item for the specified user - * @param string Item - * @param string|false User the item is being shared with - * @param array|null List of similar item names already existing as shared items - * @return string Target name - * - * This function needs to verify that the user does not already have an item with this name. - * If it does generate a new name e.g. name_# - */ - public function generateTarget($itemSource, $shareWith, $exclude = null) { - $addressbook = OC_Contacts_Addressbook::find( $itemSource ); - $user_addressbooks = array(); - foreach(OC_Contacts_Addressbook::all($shareWith) as $user_addressbook) { - $user_addressbooks[] = $user_addressbook['displayname']; - } - $name = $addressbook['userid']."'s ".$addressbook['displayname']; - $suffix = ''; - while (in_array($name.$suffix, $user_addressbooks)) { - $suffix++; - } - - return $name.$suffix; - } - - /** - * @brief Converts the shared item sources back into the item in the specified format - * @param array Shared items - * @param int Format - * @return ? - * - * The items array is a 3-dimensional array with the item_source as the first key and the share id as the second key to an array with the share info. - * The key/value pairs included in the share info depend on the function originally called: - * If called by getItem(s)Shared: id, item_type, item, item_source, share_type, share_with, permissions, stime, file_source - * If called by getItem(s)SharedWith: id, item_type, item, item_source, item_target, share_type, share_with, permissions, stime, file_source, file_target - * This function allows the backend to control the output of shared items with custom formats. - * It is only called through calls to the public getItem(s)Shared(With) functions. - */ - public function formatItems($items, $format, $parameters = null) { - $addressbooks = array(); - if ($format == self::FORMAT_ADDRESSBOOKS) { - foreach ($items as $item) { - $addressbook = OC_Contacts_Addressbook::find($item['item_source']); - if ($addressbook) { - $addressbook['displayname'] = $item['item_target']; - $addressbook['permissions'] = $item['permissions']; - $addressbooks[] = $addressbook; - } - } - } - return $addressbooks; - } - - public function getChildren($itemSource) { - $query = OCP\DB::prepare('SELECT `id` FROM `*PREFIX*contacts_cards` WHERE `addressbookid` = ?'); - $result = $query->execute(array($itemSource)); - $sources = array(); - while ($contact = $result->fetchRow()) { - $sources[] = $contact['id']; - } - return $sources; - } - -} diff --git a/apps/contacts/lib/share/contact.php b/apps/contacts/lib/share/contact.php deleted file mode 100644 index 718c8f9025f..00000000000 --- a/apps/contacts/lib/share/contact.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php -/** -* ownCloud -* -* @author Michael Gapczynski -* @copyright 2012 Michael Gapczynski mtgap@owncloud.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/>. -*/ - -class OC_Share_Backend_Contact implements OCP\Share_Backend { - - const FORMAT_CONTACT = 0; - - private static $contact; - - public function isValidSource($itemSource, $uidOwner) { - self::$contact = OC_Contacts_VCard::find($itemSource); - if (self::$contact) { - return true; - } - return false; - } - - public function generateTarget($itemSource, $shareWith, $exclude = null) { - // TODO Get default addressbook and check for conflicts - return self::$contact['fullname']; - } - - public function formatItems($items, $format, $parameters = null) { - $contacts = array(); - if ($format == self::FORMAT_CONTACT) { - foreach ($items as $item) { - $contact = OC_Contacts_VCard::find($item['item_source']); - $contact['fullname'] = $item['item_target']; - $contacts[] = $contact; - } - } - return $contacts; - } - -}
\ No newline at end of file diff --git a/apps/contacts/lib/vcard.php b/apps/contacts/lib/vcard.php deleted file mode 100644 index 91a5b806b10..00000000000 --- a/apps/contacts/lib/vcard.php +++ /dev/null @@ -1,733 +0,0 @@ -<?php -/** - * ownCloud - Addressbook - * - * @author Jakob Sack - * @copyright 2011 Jakob Sack mail@jakobsack.de - * @copyright 2012 Thomas Tanghus <thomas@tanghus.net> - * - * 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/>. - * - */ -/* - * - * The following SQL statement is just a help for developers and will not be - * executed! - * - * CREATE TABLE contacts_cards ( - * id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - * addressbookid INT(11) UNSIGNED NOT NULL, - * fullname VARCHAR(255), - * carddata TEXT, - * uri VARCHAR(100), - * lastmodified INT(11) UNSIGNED - * ); - */ - -/** - * This class manages our vCards - */ -class OC_Contacts_VCard { - /** - * @brief Returns all cards of an address book - * @param integer $id - * @return array|false - * - * The cards are associative arrays. You'll find the original vCard in - * ['carddata'] - */ - public static function all($id, $start=null, $num=null){ - $result = null; - if(is_array($id) && count($id)) { - $id_sql = join(',', array_fill(0, count($id), '?')); - $sql = 'SELECT * FROM `*PREFIX*contacts_cards` WHERE `addressbookid` IN ('.$id_sql.') ORDER BY `fullname`'; - try { - $stmt = OCP\DB::prepare( $sql, $num, $start ); - $result = $stmt->execute($id); - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __METHOD__.', exception: '.$e->getMessage(), OCP\Util::ERROR); - OCP\Util::writeLog('contacts', __METHOD__.', ids: '.join(',', $id), OCP\Util::DEBUG); - OCP\Util::writeLog('contacts', __METHOD__.'SQL:'.$sql, OCP\Util::DEBUG); - return false; - } - } elseif(is_int($id) || is_string($id)) { - try { - $sql = 'SELECT * FROM `*PREFIX*contacts_cards` WHERE `addressbookid` = ? ORDER BY `fullname`'; - $stmt = OCP\DB::prepare( $sql, $num, $start ); - $result = $stmt->execute(array($id)); - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __METHOD__.', exception: '.$e->getMessage(), OCP\Util::ERROR); - OCP\Util::writeLog('contacts', __METHOD__.', ids: '. $id, OCP\Util::DEBUG); - return false; - } - } else { - OCP\Util::writeLog('contacts', __METHOD__.'. Addressbook id(s) argument is empty: '. print_r($id, true), OCP\Util::DEBUG); - return false; - } - $cards = array(); - if(!is_null($result)) { - while( $row = $result->fetchRow()){ - $cards[] = $row; - } - } - - return $cards; - } - - /** - * @brief Returns a card - * @param integer $id - * @return associative array or false. - */ - public static function find($id){ - try { - $stmt = OCP\DB::prepare( 'SELECT * FROM `*PREFIX*contacts_cards` WHERE `id` = ?' ); - $result = $stmt->execute(array($id)); - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __METHOD__.', exception: '.$e->getMessage(), OCP\Util::ERROR); - OCP\Util::writeLog('contacts', __METHOD__.', id: '. $id, OCP\Util::DEBUG); - return false; - } - - return $result->fetchRow(); - } - - /** - * @brief finds a card by its DAV Data - * @param integer $aid Addressbook id - * @param string $uri the uri ('filename') - * @return associative array or false. - */ - public static function findWhereDAVDataIs($aid,$uri){ - try { - $stmt = OCP\DB::prepare( 'SELECT * FROM `*PREFIX*contacts_cards` WHERE `addressbookid` = ? AND `uri` = ?' ); - $result = $stmt->execute(array($aid,$uri)); - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __METHOD__.', exception: '.$e->getMessage(), OCP\Util::ERROR); - OCP\Util::writeLog('contacts', __METHOD__.', aid: '.$aid.' uri'.$uri, OCP\Util::DEBUG); - return false; - } - - return $result->fetchRow(); - } - - /** - * @brief Format property TYPE parameters for upgrading from v. 2.1 - * @param $property Reference to a Sabre_VObject_Property. - * In version 2.1 e.g. a phone can be formatted like: TEL;HOME;CELL:123456789 - * This has to be changed to either TEL;TYPE=HOME,CELL:123456789 or TEL;TYPE=HOME;TYPE=CELL:123456789 - both are valid. - */ - public static function formatPropertyTypes(&$property) { - foreach($property->parameters as $key=>&$parameter){ - $types = OC_Contacts_App::getTypesOfProperty($property->name); - if(is_array($types) && in_array(strtoupper($parameter->name), array_keys($types)) || strtoupper($parameter->name) == 'PREF') { - $property->parameters[] = new Sabre_VObject_Parameter('TYPE', $parameter->name); - } - unset($property->parameters[$key]); - } - } - - /** - * @brief Decode properties for upgrading from v. 2.1 - * @param $property Reference to a Sabre_VObject_Property. - * The only encoding allowed in version 3.0 is 'b' for binary. All encoded strings - * must therefor be decoded and the parameters removed. - */ - public static function decodeProperty(&$property) { - // Check out for encoded string and decode them :-[ - foreach($property->parameters as $key=>&$parameter){ - if(strtoupper($parameter->name) == 'ENCODING') { - if(strtoupper($parameter->value) == 'QUOTED-PRINTABLE') { // what kind of other encodings could be used? - $property->value = quoted_printable_decode($property->value); - unset($property->parameters[$key]); - } - } elseif(strtoupper($parameter->name) == 'CHARSET') { - unset($property->parameters[$key]); - } - } - } - - /** - * @brief Checks if a contact with the same UID already exist in the address book. - * @param $aid Address book ID. - * @param $uid UID (passed by reference). - * @returns true if the UID has been changed. - */ - protected static function trueUID($aid, &$uid) { - $stmt = OCP\DB::prepare( 'SELECT * FROM `*PREFIX*contacts_cards` WHERE `addressbookid` = ? AND `uri` = ?' ); - $uri = $uid.'.vcf'; - try { - $result = $stmt->execute(array($aid,$uri)); - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __METHOD__.', exception: '.$e->getMessage(), OCP\Util::ERROR); - OCP\Util::writeLog('contacts', __METHOD__.', aid: '.$aid.' uid'.$uid, OCP\Util::DEBUG); - return false; - } - if($result->numRows() > 0) { - while(true) { - $tmpuid = substr(md5(rand().time()), 0, 10); - $uri = $tmpuid.'.vcf'; - $result = $stmt->execute(array($aid, $uri)); - if($result->numRows() > 0) { - continue; - } else { - $uid = $tmpuid; - return true; - } - } - } else { - return false; - } - } - - /** - * @brief Tries to update imported VCards to adhere to rfc2426 (VERSION: 3.0) and add mandatory fields if missing. - * @param aid Address book id. - * @param vcard An OC_VObject of type VCARD (passed by reference). - */ - protected static function updateValuesFromAdd($aid, &$vcard) { // any suggestions for a better method name? ;-) - $stringprops = array('N', 'FN', 'ORG', 'NICK', 'ADR', 'NOTE'); - $typeprops = array('ADR', 'TEL', 'EMAIL'); - $upgrade = false; - $fn = $n = $uid = $email = $org = null; - $version = $vcard->getAsString('VERSION'); - // Add version if needed - if($version && $version < '3.0') { - $upgrade = true; - OCP\Util::writeLog('contacts', 'OC_Contacts_VCard::updateValuesFromAdd. Updating from version: '.$version, OCP\Util::DEBUG); - } - foreach($vcard->children as &$property){ - // Decode string properties and remove obsolete properties. - if($upgrade && in_array($property->name, $stringprops)) { - self::decodeProperty($property); - } - $property->value = str_replace("\r\n", "\n", iconv(mb_detect_encoding($property->value, 'UTF-8, ISO-8859-1'), 'utf-8', $property->value)); - if(in_array($property->name, $stringprops)) { - $property->value = strip_tags($property->value); - } - // Fix format of type parameters. - if($upgrade && in_array($property->name, $typeprops)) { - OCP\Util::writeLog('contacts', 'OC_Contacts_VCard::updateValuesFromAdd. before: '.$property->serialize(), OCP\Util::DEBUG); - self::formatPropertyTypes($property); - OCP\Util::writeLog('contacts', 'OC_Contacts_VCard::updateValuesFromAdd. after: '.$property->serialize(), OCP\Util::DEBUG); - } - if($property->name == 'FN') { - $fn = $property->value; - } - if($property->name == 'N') { - $n = $property->value; - } - if($property->name == 'UID') { - $uid = $property->value; - } - if($property->name == 'ORG') { - $org = $property->value; - } - if($property->name == 'EMAIL' && is_null($email)) { // only use the first email as substitute for missing N or FN. - $email = $property->value; - } - } - // Check for missing 'N', 'FN' and 'UID' properties - if(!$fn) { - if($n && $n != ';;;;') { - $fn = join(' ', array_reverse(array_slice(explode(';', $n), 0, 2))); - } elseif($email) { - $fn = $email; - } elseif($org) { - $fn = $org; - } else { - $fn = 'Unknown Name'; - } - $vcard->setString('FN', $fn); - OCP\Util::writeLog('contacts', 'OC_Contacts_VCard::updateValuesFromAdd. Added missing \'FN\' field: '.$fn, OCP\Util::DEBUG); - } - if(!$n || $n == ';;;;') { // Fix missing 'N' field. Ugly hack ahead ;-) - $slice = array_reverse(array_slice(explode(' ', $fn), 0, 2)); // Take 2 first name parts of 'FN' and reverse. - if(count($slice) < 2) { // If not enought, add one more... - $slice[] = ""; - } - $n = implode(';', $slice).';;;'; - $vcard->setString('N', $n); - OCP\Util::writeLog('contacts', 'OC_Contacts_VCard::updateValuesFromAdd. Added missing \'N\' field: '.$n, OCP\Util::DEBUG); - } - if(!$uid) { - $vcard->setUID(); - $uid = $vcard->getAsString('UID'); - OCP\Util::writeLog('contacts', 'OC_Contacts_VCard::updateValuesFromAdd. Added missing \'UID\' field: '.$uid, OCP\Util::DEBUG); - } - if(self::trueUID($aid, $uid)) { - $vcard->setString('UID', $uid); - } - $now = new DateTime; - $vcard->setString('REV', $now->format(DateTime::W3C)); - } - - /** - * @brief Adds a card - * @param $aid integer Addressbook id - * @param $card OC_VObject vCard file - * @param $uri string the uri of the card, default based on the UID - * @param $isChecked boolean If the vCard should be checked for validity and version. - * @return insertid on success or false. - */ - public static function add($aid, OC_VObject $card, $uri=null, $isChecked=false){ - if(is_null($card)) { - OCP\Util::writeLog('contacts', 'OC_Contacts_VCard::add. No vCard supplied', OCP\Util::ERROR); - return null; - }; - $addressbook = OC_Contacts_Addressbook::find($aid); - if ($addressbook['userid'] != OCP\User::getUser()) { - $sharedAddressbook = OCP\Share::getItemSharedWithBySource('addressbook', $aid); - if (!$sharedAddressbook || !($sharedAddressbook['permissions'] & OCP\Share::PERMISSION_CREATE)) { - return false; - } - } - if(!$isChecked) { - OC_Contacts_App::loadCategoriesFromVCard($card); - self::updateValuesFromAdd($aid, $card); - } - $card->setString('VERSION', '3.0'); - // Add product ID is missing. - $prodid = trim($card->getAsString('PRODID')); - if(!$prodid) { - $appinfo = OCP\App::getAppInfo('contacts'); - $appversion = OCP\App::getAppVersion('contacts'); - $prodid = '-//ownCloud//NONSGML '.$appinfo['name'].' '.$appversion.'//EN'; - $card->setString('PRODID', $prodid); - } - - $fn = $card->getAsString('FN'); - if (empty($fn)) { - $fn = ''; - } - - if (!$uri) { - $uid = $card->getAsString('UID'); - $uri = $uid.'.vcf'; - } - - $data = $card->serialize(); - $stmt = OCP\DB::prepare( 'INSERT INTO `*PREFIX*contacts_cards` (`addressbookid`,`fullname`,`carddata`,`uri`,`lastmodified`) VALUES(?,?,?,?,?)' ); - try { - $result = $stmt->execute(array($aid,$fn,$data,$uri,time())); - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __METHOD__.', exception: '.$e->getMessage(), OCP\Util::ERROR); - OCP\Util::writeLog('contacts', __METHOD__.', aid: '.$aid.' uri'.$uri, OCP\Util::DEBUG); - return false; - } - $newid = OCP\DB::insertid('*PREFIX*contacts_cards'); - - OC_Contacts_Addressbook::touch($aid); - OC_Hook::emit('OC_Contacts_VCard', 'post_createVCard', $newid); - return $newid; - } - - /** - * @brief Adds a card with the data provided by sabredav - * @param integer $id Addressbook id - * @param string $uri the uri the card will have - * @param string $data vCard file - * @return insertid - */ - public static function addFromDAVData($id,$uri,$data){ - $card = OC_VObject::parse($data); - return self::add($id, $card, $uri); - } - - /** - * @brief Mass updates an array of cards - * @param array $objects An array of [id, carddata]. - */ - public static function updateDataByID($objects){ - $stmt = OCP\DB::prepare( 'UPDATE `*PREFIX*contacts_cards` SET `carddata` = ?, `lastmodified` = ? WHERE `id` = ?' ); - $now = new DateTime; - foreach($objects as $object) { - $vcard = OC_VObject::parse($object[1]); - if(!is_null($vcard)) { - $oldcard = self::find($object[0]); - if (!$oldcard) { - return false; - } - $addressbook = OC_Contacts_Addressbook::find($oldcard['addressbookid']); - if ($addressbook['userid'] != OCP\User::getUser()) { - $sharedContact = OCP\Share::getItemSharedWithBySource('contact', $object[0], OCP\Share::FORMAT_NONE, null, true); - if (!$sharedContact || !($sharedContact['permissions'] & OCP\Share::PERMISSION_UPDATE)) { - return false; - } - } - $vcard->setString('REV', $now->format(DateTime::W3C)); - $data = $vcard->serialize(); - try { - $result = $stmt->execute(array($data,time(),$object[0])); - //OCP\Util::writeLog('contacts','OC_Contacts_VCard::updateDataByID, id: '.$object[0].': '.$object[1],OCP\Util::DEBUG); - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __METHOD__.', exception: '.$e->getMessage(), OCP\Util::ERROR); - OCP\Util::writeLog('contacts', __METHOD__.', id: '.$object[0], OCP\Util::DEBUG); - } - } - } - } - - /** - * @brief edits a card - * @param integer $id id of card - * @param OC_VObject $card vCard file - * @return boolean - */ - public static function edit($id, OC_VObject $card){ - $oldcard = self::find($id); - if (!$oldcard) { - return false; - } - if(is_null($card)) { - return false; - } - // NOTE: Owner checks are being made in the ajax files, which should be done inside the lib files to prevent any redundancies with sharing checks - $addressbook = OC_Contacts_Addressbook::find($oldcard['addressbookid']); - if ($addressbook['userid'] != OCP\User::getUser()) { - $sharedContact = OCP\Share::getItemSharedWithBySource('contact', $id, OCP\Share::FORMAT_NONE, null, true); - if (!$sharedContact || !($sharedContact['permissions'] & OCP\Share::PERMISSION_UPDATE)) { - throw new Exception(OC_Contacts_App::$l10n->t('You do not have the permissions to edit this contact.')); - } - } - OC_Contacts_App::loadCategoriesFromVCard($card); - - $fn = $card->getAsString('FN'); - if (empty($fn)) { - $fn = null; - } - - $now = new DateTime; - $card->setString('REV', $now->format(DateTime::W3C)); - - $data = $card->serialize(); - $stmt = OCP\DB::prepare( 'UPDATE `*PREFIX*contacts_cards` SET `fullname` = ?,`carddata` = ?, `lastmodified` = ? WHERE `id` = ?' ); - try { - $result = $stmt->execute(array($fn,$data,time(),$id)); - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __METHOD__.', exception: ' - . $e->getMessage(), OCP\Util::ERROR); - OCP\Util::writeLog('contacts', __METHOD__.', id'.$id, OCP\Util::DEBUG); - return false; - } - - OC_Contacts_Addressbook::touch($oldcard['addressbookid']); - OC_Hook::emit('OC_Contacts_VCard', 'post_updateVCard', $id); - return true; - } - - /** - * @brief edits a card with the data provided by sabredav - * @param integer $id Addressbook id - * @param string $uri the uri of the card - * @param string $data vCard file - * @return boolean - */ - public static function editFromDAVData($aid, $uri, $data){ - $oldcard = self::findWhereDAVDataIs($aid, $uri); - $card = OC_VObject::parse($data); - if(!$card) { - OCP\Util::writeLog('contacts', __METHOD__. - ', Unable to parse VCARD, uri: '.$uri, OCP\Util::ERROR); - return false; - } - try { - self::edit($oldcard['id'], $card); - return true; - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __METHOD__.', exception: ' - . $e->getMessage() . ', ' - . OCP\USER::getUser(), OCP\Util::ERROR); - OCP\Util::writeLog('contacts', __METHOD__.', uri' - . $uri, OCP\Util::DEBUG); - return false; - } - } - - /** - * @brief deletes a card - * @param integer $id id of card - * @return boolean - */ - public static function delete($id){ - $card = self::find($id); - if (!$card) { - return false; - } - $addressbook = OC_Contacts_Addressbook::find($card['addressbookid']); - if ($addressbook['userid'] != OCP\User::getUser()) { - $sharedContact = OCP\Share::getItemSharedWithBySource('contact', - $id, OCP\Share::FORMAT_NONE, null, true); - if (!$sharedContact - || !($sharedContact['permissions'] & OCP\Share::PERMISSION_DELETE)) { - throw new Exception( - OC_Contacts_App::$l10n->t( - 'You do not have the permissions to delete this contact.' - ) - ); - } - } - OC_Hook::emit('OC_Contacts_VCard', 'pre_deleteVCard', - array('aid' => null, 'id' => $id, 'uri' => null) - ); - $stmt = OCP\DB::prepare('DELETE FROM `*PREFIX*contacts_cards` WHERE `id` = ?'); - try { - $stmt->execute(array($id)); - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __METHOD__. - ', exception: ' . $e->getMessage(), OCP\Util::ERROR); - OCP\Util::writeLog('contacts', __METHOD__.', id: ' - . $id, OCP\Util::DEBUG); - return false; - } - - return true; - } - - /** - * @brief deletes a card with the data provided by sabredav - * @param integer $aid Addressbook id - * @param string $uri the uri of the card - * @return boolean - */ - public static function deleteFromDAVData($aid,$uri){ - $addressbook = OC_Contacts_Addressbook::find($aid); - if ($addressbook['userid'] != OCP\User::getUser()) { - $query = OCP\DB::prepare( 'SELECT `id` FROM `*PREFIX*contacts_cards` WHERE `addressbookid` = ? AND `uri` = ?' ); - $id = $query->execute(array($aid, $uri))->fetchOne(); - if (!$id) { - return false; - } - $sharedContact = OCP\Share::getItemSharedWithBySource('contact', $id, OCP\Share::FORMAT_NONE, null, true); - if (!$sharedContact || !($sharedContact['permissions'] & OCP\Share::PERMISSION_DELETE)) { - return false; - } - } - OC_Hook::emit('OC_Contacts_VCard', 'pre_deleteVCard', array('aid' => $aid, 'id' => null, 'uri' => $uri)); - $stmt = OCP\DB::prepare( 'DELETE FROM `*PREFIX*contacts_cards` WHERE `addressbookid` = ? AND `uri`=?' ); - try { - $stmt->execute(array($aid,$uri)); - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __METHOD__.', exception: '.$e->getMessage(), OCP\Util::ERROR); - OCP\Util::writeLog('contacts', __METHOD__.', aid: '.$aid.' uri: '.$uri, OCP\Util::DEBUG); - return false; - } - OC_Contacts_Addressbook::touch($aid); - - return true; - } - - /** - * @brief Escapes delimiters from an array and returns a string. - * @param array $value - * @param char $delimiter - * @return string - */ - public static function escapeDelimiters($value, $delimiter=';') { - foreach($value as &$i ) { - $i = implode("\\$delimiter", explode($delimiter, $i)); - } - return implode($delimiter, $value); - } - - - /** - * @brief Creates an array out of a multivalue property - * @param string $value - * @param char $delimiter - * @return array - */ - public static function unescapeDelimiters($value, $delimiter=';') { - $array = explode($delimiter, $value); - for($i=0;$i<count($array);$i++) { - if(substr($array[$i], -1, 1)=="\\") { - if(isset($array[$i+1])) { - $array[$i] = substr($array[$i], 0, count($array[$i])-2).$delimiter.$array[$i+1]; - unset($array[$i+1]); - } else { - $array[$i] = substr($array[$i], 0, count($array[$i])-2).$delimiter; - } - $i = $i - 1; - } - } - $array = array_map('trim', $array); - return $array; - } - - /** - * @brief Data structure of vCard - * @param object $property - * @return associative array - * - * look at code ... - */ - public static function structureContact($object) { - $details = array(); - - foreach($object->children as $property) { - $pname = $property->name; - $temp = self::structureProperty($property); - if(!is_null($temp)) { - // Get Apple X-ABLabels - if(isset($object->{$property->group . '.X-ABLABEL'})) { - $temp['label'] = $object->{$property->group . '.X-ABLABEL'}->value; - if($temp['label'] == '_$!<Other>!$_') { - $temp['label'] = OC_Contacts_App::$l10n->t('Other'); - } - } - if(array_key_exists($pname, $details)) { - $details[$pname][] = $temp; - } - else{ - $details[$pname] = array($temp); - } - } - } - return $details; - } - - /** - * @brief Data structure of properties - * @param object $property - * @return associative array - * - * returns an associative array with - * ['name'] name of property - * ['value'] htmlspecialchars escaped value of property - * ['parameters'] associative array name=>value - * ['checksum'] checksum of whole property - * NOTE: $value is not escaped anymore. It shouldn't make any difference - * but we should look out for any problems. - */ - public static function structureProperty($property) { - $value = $property->value; - //$value = htmlspecialchars($value); - if($property->name == 'ADR' || $property->name == 'N') { - $value = self::unescapeDelimiters($value); - } elseif($property->name == 'BDAY') { - if(strpos($value, '-') === false) { - if(strlen($value) >= 8) { - $value = substr($value, 0, 4).'-'.substr($value, 4, 2).'-'.substr($value, 6, 2); - } else { - return null; // Badly malformed :-( - } - } - } - if(is_string($value)) { - $value = strtr($value, array('\,' => ',', '\;' => ';')); - } - $temp = array( - 'name' => $property->name, - 'value' => $value, - 'parameters' => array(), - 'checksum' => md5($property->serialize())); - foreach($property->parameters as $parameter){ - // Faulty entries by kaddressbook - // Actually TYPE=PREF is correct according to RFC 2426 - // but this way is more handy in the UI. Tanghus. - if($parameter->name == 'TYPE' && strtoupper($parameter->value) == 'PREF') { - $parameter->name = 'PREF'; - $parameter->value = '1'; - } - // NOTE: Apparently Sabre_VObject_Reader can't always deal with value list parameters - // like TYPE=HOME,CELL,VOICE. Tanghus. - if (in_array($property->name, array('TEL', 'EMAIL')) && $parameter->name == 'TYPE') { - if (isset($temp['parameters'][$parameter->name])) { - $temp['parameters'][$parameter->name][] = $parameter->value; - } - else { - $temp['parameters'][$parameter->name] = array($parameter->value); - } - } - else{ - $temp['parameters'][$parameter->name] = $parameter->value; - } - } - return $temp; - } - - /** - * @brief Move card(s) to an address book - * @param integer $aid Address book id - * @param $id Array or integer of cards to be moved. - * @return boolean - * - */ - public static function moveToAddressBook($aid, $id, $isAddressbook = false) { - OC_Contacts_App::getAddressbook($aid); // check for user ownership. - $addressbook = OC_Contacts_Addressbook::find($aid); - if ($addressbook['userid'] != OCP\User::getUser()) { - $sharedAddressbook = OCP\Share::getItemSharedWithBySource('addressbook', $aid); - if (!$sharedAddressbook || !($sharedAddressbook['permissions'] & OCP\Share::PERMISSION_CREATE)) { - return false; - } - } - if(is_array($id)) { - foreach ($id as $index => $cardId) { - $card = self::find($cardId); - if (!$card) { - unset($id[$index]); - } - $oldAddressbook = OC_Contacts_Addressbook::find($card['addressbookid']); - if ($oldAddressbook['userid'] != OCP\User::getUser()) { - $sharedContact = OCP\Share::getItemSharedWithBySource('contact', $cardId, OCP\Share::FORMAT_NONE, null, true); - if (!$sharedContact || !($sharedContact['permissions'] & OCP\Share::PERMISSION_DELETE)) { - unset($id[$index]); - } - } - } - $id_sql = join(',', array_fill(0, count($id), '?')); - $prep = 'UPDATE `*PREFIX*contacts_cards` SET `addressbookid` = ? WHERE `id` IN ('.$id_sql.')'; - try { - $stmt = OCP\DB::prepare( $prep ); - //$aid = array($aid); - $vals = array_merge((array)$aid, $id); - $result = $stmt->execute($vals); - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __METHOD__.', exception: '.$e->getMessage(), OCP\Util::ERROR); - OCP\Util::writeLog('contacts', __METHOD__.', ids: '.join(',', $vals), OCP\Util::DEBUG); - OCP\Util::writeLog('contacts', __METHOD__.', SQL:'.$prep, OCP\Util::DEBUG); - return false; - } - } else { - $stmt = null; - if($isAddressbook) { - $stmt = OCP\DB::prepare( 'UPDATE `*PREFIX*contacts_cards` SET `addressbookid` = ? WHERE `addressbookid` = ?' ); - } else { - $card = self::find($id); - if (!$card) { - return false; - } - $oldAddressbook = OC_Contacts_Addressbook::find($card['addressbookid']); - if ($oldAddressbook['userid'] != OCP\User::getUser()) { - $sharedContact = OCP\Share::getItemSharedWithBySource('contact', $id, OCP\Share::FORMAT_NONE, null, true); - if (!$sharedContact || !($sharedContact['permissions'] & OCP\Share::PERMISSION_DELETE)) { - return false; - } - } - $stmt = OCP\DB::prepare( 'UPDATE `*PREFIX*contacts_cards` SET `addressbookid` = ? WHERE `id` = ?' ); - } - try { - $result = $stmt->execute(array($aid, $id)); - } catch(Exception $e) { - OCP\Util::writeLog('contacts', __METHOD__.', exception: '.$e->getMessage(), OCP\Util::DEBUG); - OCP\Util::writeLog('contacts', __METHOD__.' id: '.$id, OCP\Util::DEBUG); - return false; - } - } - OC_Hook::emit('OC_Contacts_VCard', 'post_moveToAddressbook', array('aid' => $aid, 'id' => $id)); - OC_Contacts_Addressbook::touch($aid); - return true; - } -} diff --git a/apps/contacts/photo.php b/apps/contacts/photo.php deleted file mode 100644 index f5c8e6fe4bd..00000000000 --- a/apps/contacts/photo.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php -/** - * Copyright (c) 2012 Thomas Tanghus <thomas@tanghus.net> - * Copyright (c) 2011, 2012 Bart Visscher <bartv@thisnet.nl> - * 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. - */ - -// Init owncloud - -OCP\User::checkLoggedIn(); -OCP\App::checkAppEnabled('contacts'); - -function getStandardImage() { - //OCP\Response::setExpiresHeader('P10D'); - OCP\Response::enableCaching(); - OCP\Response::redirect(OCP\Util::imagePath('contacts', 'person_large.png')); -} - -$id = isset($_GET['id']) ? $_GET['id'] : null; -$etag = null; -$caching = null; - -if(is_null($id)) { - getStandardImage(); -} - -if(!extension_loaded('gd') || !function_exists('gd_info')) { - OCP\Util::writeLog('contacts', - 'photo.php. GD module not installed', OCP\Util::DEBUG); - getStandardImage(); -} - -$contact = OC_Contacts_App::getContactVCard($id); -$image = new OC_Image(); -if (!$image) { - getStandardImage(); -} -// invalid vcard -if (is_null($contact)) { - OCP\Util::writeLog('contacts', - 'photo.php. The VCard for ID ' . $id . ' is not RFC compatible', - OCP\Util::ERROR); -} else { - // Photo :-) - if ($image->loadFromBase64($contact->getAsString('PHOTO'))) { - // OK - $etag = md5($contact->getAsString('PHOTO')); - } - else - // Logo :-/ - if ($image->loadFromBase64($contact->getAsString('LOGO'))) { - // OK - $etag = md5($contact->getAsString('LOGO')); - } - if ($image->valid()) { - $modified = OC_Contacts_App::lastModified($contact); - // Force refresh if modified within the last minute. - if(!is_null($modified)) { - $caching = (time() - $modified->format('U') > 60) ? null : 0; - } - OCP\Response::enableCaching($caching); - if(!is_null($modified)) { - OCP\Response::setLastModifiedHeader($modified); - } - if($etag) { - OCP\Response::setETagHeader($etag); - } - $max_size = 200; - if ($image->width() > $max_size || $image->height() > $max_size) { - $image->resize($max_size); - } - } -} -if (!$image->valid()) { - // Not found :-( - getStandardImage(); -} -header('Content-Type: '.$image->mimeType()); -$image->show(); - diff --git a/apps/contacts/settings.php b/apps/contacts/settings.php deleted file mode 100644 index 5f639399c95..00000000000 --- a/apps/contacts/settings.php +++ /dev/null @@ -1,6 +0,0 @@ -<?php - -$tmpl = new OCP\Template( 'contacts', 'settings'); -$tmpl->assign('addressbooks', OC_Contacts_Addressbook::all(OCP\USER::getUser()), false); - -$tmpl->printPage(); diff --git a/apps/contacts/templates/index.php b/apps/contacts/templates/index.php deleted file mode 100644 index 744381026ab..00000000000 --- a/apps/contacts/templates/index.php +++ /dev/null @@ -1,74 +0,0 @@ -<div id='notification'></div> -<script type='text/javascript'> - var totalurl = '<?php echo OCP\Util::linkToRemote('carddav'); ?>addressbooks'; - var categories = <?php echo json_encode($_['categories']); ?>; - var id = '<?php echo $_['id']; ?>'; - var lang = '<?php echo OCP\Config::getUserValue(OCP\USER::getUser(), 'core', 'lang', 'en'); ?>'; -</script> -<div id="leftcontent"> - <div class="hidden" id="statusbar"></div> - <div id="contacts"> - </div> - <div id="uploadprogressbar"></div> - <div id="bottomcontrols"> - <button class="svg" id="contacts_newcontact" title="<?php echo $l->t('Add Contact'); ?>"><img class="svg" src="<?php echo OCP\Util::imagePath('contacts', 'contact-new.svg'); ?>" alt="<?php echo $l->t('Add Contact'); ?>" /></button> - <button class="svg import tip" title="<?php echo $l->t('Import'); ?>"> - <img class="svg" src="<?php echo OCP\Util::imagePath('core', 'actions/upload.svg') ?>" alt="<?php echo $l->t('Import'); ?>" /> - </button> - <button class="svg settings tip" title="<?php echo $l->t('Settings'); ?>"><img class="svg" src="<?php echo OCP\Util::imagePath('core', 'actions/settings.svg') ?>" alt="<?php echo $l->t('Addressbooks'); ?>" /></button> - <form id="import_upload_form" action="<?php echo OCP\Util::linkTo('contacts', 'ajax/uploadimport.php'); ?>" method="post" enctype="multipart/form-data" target="import_upload_target"> - <input class="float" id="import_upload_start" type="file" accept="text/directory,text/vcard,text/x-vcard" name="importfile" /> - <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $_['uploadMaxFilesize'] ?>" id="max_upload"> - </form> - <iframe name="import_upload_target" id='import_upload_target' src=""></iframe> - </div> -</div> -<div id="rightcontent" class="rightcontent" data-id="<?php echo $_['id']; ?>"> - <?php - if($_['has_contacts']) { - echo $this->inc('part.contact'); - } - else{ - echo $this->inc('part.no_contacts'); - } - ?> - <div class="hidden popup" id="ninjahelp"> - <a class="close" tabindex="0" role="button" title="<?php echo $l->t('Close'); ?>"></a> - <h2><?php echo $l->t('Keyboard shortcuts'); ?></h2> - <div class="help-section"> - <h3><?php echo $l->t('Navigation'); ?></h3> - <dl> - <dt>j/Down</dt> - <dd><?php echo $l->t('Next contact in list'); ?></dd> - <dt>k/Up</dt> - <dd><?php echo $l->t('Previous contact in list'); ?></dd> - <dt>o</dt> - <dd><?php echo $l->t('Expand/collapse current addressbook'); ?></dd> - <dt>n/PageDown</dt> - <dd><?php echo $l->t('Next addressbook'); ?></dd> - <dt>p/PageUp</dt> - <dd><?php echo $l->t('Previous addressbook'); ?></dd> - </dl> - </div> - <div class="help-section"> - <h3><?php echo $l->t('Actions'); ?></h3> - <dl> - <dt>r</dt> - <dd><?php echo $l->t('Refresh contacts list'); ?></dd> - <dt>a</dt> - <dd><?php echo $l->t('Add new contact'); ?></dd> - <!-- dt>Shift-a</dt> - <dd><?php echo $l->t('Add new addressbook'); ?></dd --> - <dt>Shift-Delete</dt> - <dd><?php echo $l->t('Delete current contact'); ?></dd> - </dl> - </div> - </div> -</div> -<!-- Dialogs --> -<div id="dialog_holder"></div> -<!-- End of Dialogs --> -<menu type="context" id="addressbookmenu"> - <menuitem label="Delete" icon="<?php echo OCP\Util::imagePath('core', 'actions/delete.svg') ?>" onclick="alert('Really? ' + $(this).attr('data-id'))"></menuitem> - <menuitem label="Rename" icon="<?php echo OCP\Util::imagePath('core', 'actions/rename.svg') ?>" onclick="alert('Can\'t do that')"></menuitem> -</menu> diff --git a/apps/contacts/templates/part.contact.php b/apps/contacts/templates/part.contact.php deleted file mode 100644 index 87ed07c0ec8..00000000000 --- a/apps/contacts/templates/part.contact.php +++ /dev/null @@ -1,145 +0,0 @@ -<div id="appsettings" class="popup bottomleft hidden"></div> -<?php -$id = isset($_['id']) ? $_['id'] : ''; -?> -<div id="card"> - <form class="float" id="file_upload_form" action="<?php echo OCP\Util::linkTo('contacts', 'ajax/uploadphoto.php'); ?>" method="post" enctype="multipart/form-data" target="file_upload_target"> - <input type="hidden" name="requesttoken" value="<?php echo $_['requesttoken'] ?>"> - <input type="hidden" name="id" value="<?php echo $_['id'] ?>"> - <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $_['uploadMaxFilesize'] ?>" id="max_upload"> - <input type="hidden" class="max_human_file_size" value="(max <?php echo $_['uploadMaxHumanFilesize']; ?>)"> - <input id="file_upload_start" type="file" accept="image/*" name="imagefile" /> - </form> - - <div id="contact_photo"> - - <iframe name="file_upload_target" id='file_upload_target' src=""></iframe> - <div class="tip propertycontainer" id="contacts_details_photo_wrapper" title="<?php echo $l->t('Drop photo to upload'); ?> (max <?php echo $_['uploadMaxHumanFilesize']; ?>)" data-element="PHOTO"> - <ul id="phototools" class="transparent hidden"> - <li><a class="svg delete" title="<?php echo $l->t('Delete current photo'); ?>"></a></li> - <li><a class="svg edit" title="<?php echo $l->t('Edit current photo'); ?>"></a></li> - <li><a class="svg upload" title="<?php echo $l->t('Upload new photo'); ?>"></a></li> - <li><a class="svg cloud" title="<?php echo $l->t('Select photo from ownCloud'); ?>"></a></li> - </ul> - </div> - </div> <!-- contact_photo --> - - <form method="post"> - - <div id="contact_identity"> - <input type="hidden" name="id" value="<?php echo $_['id'] ?>"> - <input type="hidden" name="requesttoken" value="<?php echo $_['requesttoken'] ?>"> - <fieldset id="ident" class="contactpart"> - <span class="propertycontainer" data-element="N"><input type="hidden" id="n" class="contacts_property" name="value" value="" /></span> - <span id="name" class="propertycontainer" data-element="FN"> - <select class="float" id="fn_select" title="<?php echo $l->t('Format custom, Short name, Full name, Reverse or Reverse with comma'); ?>"> - </select><a role="button" id="edit_name" class="action edit" title="<?php echo $l->t('Edit name details'); ?>"></a> - </span> - <dl id="identityprops" class="form"> - <dt class="hidden" id="org_label" data-element="ORG"><label for="org"><?php echo $l->t('Organization'); ?></label></dt> - <dd class="propertycontainer hidden" id="org_value" data-element="ORG"><input id="org" required="required" type="text" class="contacts_property big" name="value" value="" placeholder="<?php echo $l->t('Organization'); ?>" /><a role="button" class="action delete" title="<?php echo $l->t('Delete'); ?>"></a></dd> - <dt class="hidden" id="nickname_label" data-element="NICKNAME"><label for="nickname"><?php echo $l->t('Nickname'); ?></label></dt> - <dd class="propertycontainer hidden" id="nickname_value" data-element="NICKNAME"><input id="nickname" required="required" type="text" class="contacts_property big" name="value" value="" placeholder="<?php echo $l->t('Enter nickname'); ?>" /><a role="button" class="action delete" title="<?php echo $l->t('Delete'); ?>"></a></dd> - <dt class="hidden" id="url_label" data-element="URL"><label for="url"><?php echo $l->t('Web site'); ?></label></dt> - <dd class="propertycontainer hidden" id="url_value" data-element="URL"><input id="url" required="required" type="url" class="contacts_property big" name="value" value="" placeholder="<?php echo $l->t('http://www.somesite.com'); ?>" /><a role="button" class="action globe" title="<?php echo $l->t('Go to web site'); ?>"><a role="button" class="action delete" title="<?php echo $l->t('Delete'); ?>"></a></dd> - <dt class="hidden" id="bday_label" data-element="BDAY"><label for="bday"><?php echo $l->t('Birthday'); ?></label></dt> - <dd class="propertycontainer hidden" id="bday_value" data-element="BDAY"><input id="bday" required="required" name="value" type="text" class="contacts_property big" value="" placeholder="<?php echo $l->t('dd-mm-yyyy'); ?>" /><a role="button" class="action delete" title="<?php echo $l->t('Delete'); ?>"></a></dd> - <dt class="hidden" id="categories_label" data-element="CATEGORIES"><label for="categories"><?php echo $l->t('Groups'); ?></label></dt> - <dd class="propertycontainer hidden" id="categories_value" data-element="CATEGORIES"><input id="categories" required="required" type="text" class="contacts_property bold" name="value" value="" placeholder=" -<?php echo $l->t('Separate groups with commas'); ?>" /> - <a role="button" class="action delete" title="<?php echo $l->t('Delete'); ?>"></a><a role="button" class="action edit" title="<?php echo $l->t('Edit groups'); ?>"></a></dd> - </dl> - </fieldset> - </div> <!-- contact_identity --> - - <!-- email addresses --> - <div id="emails" class="hidden contactsection"> - <ul id="emaillist" class="propertylist"> - <li class="template hidden" data-element="EMAIL"> - <input type="checkbox" class="contacts_property tip" name="parameters[TYPE][]" value="PREF" title="<?php echo $l->t('Preferred'); ?>" /> - <input type="email" required="required" class="nonempty contacts_property" name="value" value="" x-moz-errormessage="<?php echo $l->t('Please specify a valid email address.'); ?>" placeholder="<?php echo $l->t('Enter email address'); ?>" /> - <select multiple="multiple" name="parameters[TYPE][]"> - <?php echo OCP\html_select_options($_['email_types'], array()) ?> - </select> - <span class="listactions"><a class="action mail" title="<?php echo $l->t('Mail to address'); ?>"></a> - <a role="button" class="action delete" title="<?php echo $l->t('Delete email address'); ?>"></a></span></li> - </ul> - </div> <!-- email addresses--> - - <!-- Phone numbers --> - <div id="phones" class="hidden contactsection"> - <ul id="phonelist" class="propertylist"> - <li class="template hidden" data-element="TEL"> - <input type="checkbox" class="contacts_property tip" name="parameters[TYPE][]" value="PREF" title="<?php echo $l->t('Preferred'); ?>" /> - <input type="text" required="required" class="nonempty contacts_property" name="value" value="" - placeholder="<?php echo $l->t('Enter phone number'); ?>" /> - <select multiple="multiple" name="parameters[TYPE][]"> - <?php echo OCP\html_select_options($_['phone_types'], array()) ?> - </select> - <a role="button" class="action delete" title="<?php echo $l->t('Delete phone number'); ?>"></a></li> - </ul> - </div> <!-- Phone numbers --> - - <!-- IMPP --> - <div id="ims" class="hidden contactsection"> - <ul id="imlist" class="propertylist"> - <li class="template hidden" data-element="IMPP"> - <div class="select_wrapper"> - <select class="impp" name="parameters[X-SERVICE-TYPE]"> - <?php echo OCP\html_select_options($_['im_protocols'], array()) ?> - </select> - </div> - <div class="select_wrapper"> - <select class="types" name="parameters[TYPE][]"> - <option></option> - <?php echo OCP\html_select_options($_['impp_types'], array()) ?> - </select> - </div> - <input type="checkbox" class="contacts_property impp tip" name="parameters[TYPE][]" value="PREF" title="<?php echo $l->t('Preferred'); ?>" /> - <input type="text" required="required" class="nonempty contacts_property" name="value" value="" - placeholder="<?php echo $l->t('Instant Messenger'); ?>" /> - <a role="button" class="action delete" title="<?php echo $l->t('Delete IM'); ?>"></a></li> - </ul> - </div> <!-- IMPP --> - - <!-- Addresses --> - <div id="addresses" class="hidden contactsection"> - <dl class="addresscard template hidden" data-element="ADR"><dt> - <input class="adr contacts_property" name="value" type="hidden" value="" /> - <input type="hidden" class="adr_type contacts_property" name="parameters[TYPE][]" value="" /> - <span class="adr_type_label"></span><a class="action globe" title="<?php echo $l->t('View on map'); ?>"></a><a class="action edit" title="<?php echo $l->t('Edit address details'); ?>"></a><a role="button" class="action delete" title="Delete address"></a> - </dt><dd><ul class="addresslist"></ul></dd></dl> - </div> <!-- Addresses --> - - <div id="contact_note" class="hidden contactsection"> - <div id="note" class="propertycontainer" data-element="NOTE"> - <textarea class="contacts_property" name="value" required="required" placeholder="<?php echo $l->t('Add notes here.'); ?>" cols="60" wrap="hard"></textarea> - </div> - </div> <!-- contact_note --> - - </form> - - <div id="actionbar"> - <div id="contacts_propertymenu"> - <button class="button" id="contacts_propertymenu_button"><?php echo $l->t('Add field'); ?></button> - <ul id="contacts_propertymenu_dropdown" role="menu" class="hidden"> - <li><a role="menuitem" data-type="ORG"><?php echo $l->t('Organization'); ?></a></li> - <li><a role="menuitem" data-type="NICKNAME"><?php echo $l->t('Nickname'); ?></a></li> - <li><a role="menuitem" data-type="BDAY"><?php echo $l->t('Birthday'); ?></a></li> - <li><a role="menuitem" data-type="TEL"><?php echo $l->t('Phone'); ?></a></li> - <li><a role="menuitem" data-type="EMAIL"><?php echo $l->t('Email'); ?></a></li> - <li><a role="menuitem" data-type="IMPP"><?php echo $l->t('Instant Messaging'); ?></a></li> - <li><a role="menuitem" data-type="ADR"><?php echo $l->t('Address'); ?></a></li> - <li><a role="menuitem" data-type="NOTE"><?php echo $l->t('Note'); ?></a></li> - <li><a role="menuitem" data-type="URL"><?php echo $l->t('Web site'); ?></a></li> - <li><a role="menuitem" data-type="CATEGORIES"><?php echo $l->t('Groups'); ?></a></li> - </ul> - </div> - <button class="svg action" id="contacts_downloadcard" title="<?php echo $l->t('Download contact');?>"></button> - <button class="svg action" id="contacts_deletecard" title="<?php echo $l->t('Delete contact');?>"></button> - </div> - -</div> <!-- card --> -<div id="edit_photo_dialog" title="Edit photo"> - <div id="edit_photo_dialog_img"></div> -</div> diff --git a/apps/contacts/templates/part.cropphoto.php b/apps/contacts/templates/part.cropphoto.php deleted file mode 100644 index 3f5817622b2..00000000000 --- a/apps/contacts/templates/part.cropphoto.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php -$id = $_['id']; -$tmpkey = $_['tmpkey']; -$requesttoken = $_['requesttoken']; -?> -<script type="text/javascript"> - jQuery(function($) { - $('#cropbox').Jcrop({ - onChange: showCoords, - onSelect: showCoords, - onRelease: clearCoords, - maxSize: [399, 399], - bgColor: 'black', - bgOpacity: .4, - boxWidth: 400, - boxHeight: 400, - setSelect: [ 100, 130, 50, 50 ]//, - //aspectRatio: 0.8 - }); - }); - // Simple event handler, called from onChange and onSelect - // event handlers, as per the Jcrop invocation above - function showCoords(c) { - $('#x1').val(c.x); - $('#y1').val(c.y); - $('#x2').val(c.x2); - $('#y2').val(c.y2); - $('#w').val(c.w); - $('#h').val(c.h); - }; - - function clearCoords() { - $('#coords input').val(''); - }; - /* - $('#coords').submit(function() { - alert('Handler for .submit() called.'); - return true; - });*/ -</script> -<?php if(OC_Cache::hasKey($tmpkey)) { ?> -<img id="cropbox" src="<?php echo OCP\Util::linkToAbsolute('contacts', 'tmpphoto.php'); ?>?tmpkey=<?php echo $tmpkey; ?>" /> -<form id="cropform" - class="coords" - method="post" - enctype="multipart/form-data" - target="crop_target" - action="<?php echo OCP\Util::linkToAbsolute('contacts', 'ajax/savecrop.php'); ?>"> - - <input type="hidden" id="id" name="id" value="<?php echo $id; ?>" /> - <input type="hidden" name="requesttoken" value="<?php echo $requesttoken; ?>"> - <input type="hidden" id="tmpkey" name="tmpkey" value="<?php echo $tmpkey; ?>" /> - <fieldset id="coords"> - <input type="hidden" id="x1" name="x1" value="" /> - <input type="hidden" id="y1" name="y1" value="" /> - <input type="hidden" id="x2" name="x2" value="" /> - <input type="hidden" id="y2" name="y2" value="" /> - <input type="hidden" id="w" name="w" value="" /> - <input type="hidden" id="h" name="h" value="" /> - </fieldset> - <iframe name="crop_target" id='crop_target' src=""></iframe> -</form> -<?php -} else { - echo $l->t('The temporary image has been removed from cache.'); -} -?> diff --git a/apps/contacts/templates/part.edit_address_dialog.php b/apps/contacts/templates/part.edit_address_dialog.php deleted file mode 100644 index 81e24ba4d0e..00000000000 --- a/apps/contacts/templates/part.edit_address_dialog.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php -$adr = isset($_['adr'])?$_['adr']:array(); -$id = isset($_['id'])?$_['id']:array(); -$types = isset($_['types'])?$_['types']:array(); -?> -<div id="edit_address_dialog" title="<?php echo $l->t('Edit address'); ?>"> - <fieldset id="address"> - <dl class="form"> - <dt> - <label class="label" for="adr_type"><?php echo $l->t('Type'); ?></label> - </dt> - <dd> - <select id="adr_type" name="parameters[ADR][TYPE]" size="1"> - <?php echo OCP\html_select_options($_['adr_types'], $types) ?> - </select> - </dd> - <dt> - <label class="label" for="adr_pobox"><?php echo $l->t('PO Box'); ?></label> - </dt> - <dd> - <input type="text" id="adr_pobox" name="value[ADR][0]" placeholder="<?php echo $l->t('PO Box'); ?>" value="<?php echo isset($adr[0])?$adr[0]:''; ?>"> - </dd> - <dt> - <label class="label" for="adr_street"><?php echo $l->t('Street address'); ?></label> - </dt> - <dd> - <input type="text" id="adr_street" name="value[ADR][2]" placeholder="<?php echo $l->t('Street and number'); ?>" value="<?php echo isset($adr[2])?$adr[2]:''; ?>"> - </dd> - <dt> - <label class="label" for="adr_extended"><?php echo $l->t('Extended'); ?></label> - </dt> - <dd> - <input type="text" id="adr_extended" name="value[ADR][1]" placeholder="<?php echo $l->t('Apartment number etc.'); ?>" value="<?php echo isset($adr[1])?$adr[1]:''; ?>"> - </dd> - <dt> - <label class="label" for="adr_city"><?php echo $l->t('City'); ?></label> - </dt> - <dd> - <input type="text" id="adr_city" name="value[ADR][3]" placeholder="<?php echo $l->t('City'); ?>" value="<?php echo isset($adr[3])?$adr[3]:''; ?>"> - </dd> - <dt> - <label class="label" for="adr_region"><?php echo $l->t('Region'); ?></label> - </dt> - <dd> - <input type="text" id="adr_region" name="value[ADR][4]" placeholder="<?php echo $l->t('E.g. state or province'); ?>" value="<?php echo isset($adr[4])?$adr[4]:''; ?>"> - </dd> - <dt> - <label class="label" for="adr_zipcode"><?php echo $l->t('Zipcode'); ?></label> - </dt> - <dd> - <input type="text" id="adr_zipcode" name="value[ADR][5]" placeholder="<?php echo $l->t('Postal code'); ?>" value="<?php echo isset($adr[5])?$adr[5]:''; ?>"> - </dd> - <dt> - <label class="label" for="adr_country"><?php echo $l->t('Country'); ?></label> - </dt> - <dd> - <input type="text" id="adr_country" name="value[ADR][6]" placeholder="<?php echo $l->t('Country'); ?>" value="<?php echo isset($adr[6])?$adr[6]:''; ?>"> - </dd> - </dl> - <div style="width: 100%; text-align:center;">Powered by <a href="http://geonames.org/" target="_blank">geonames.org</a></div> - </fieldset> - </form> -</div> diff --git a/apps/contacts/templates/part.edit_name_dialog.php b/apps/contacts/templates/part.edit_name_dialog.php deleted file mode 100644 index f984c232a30..00000000000 --- a/apps/contacts/templates/part.edit_name_dialog.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php -$name = isset($_['name'])?$_['name']:''; -//print_r($name); -$id = isset($_['id'])?$_['id']:''; -$addressbooks = isset($_['addressbooks'])?$_['addressbooks']:null; -?> -<div id="edit_name_dialog" title="Edit name"> - <form> - <fieldset> - <dl class="form"> - <?php if(!is_null($addressbooks)) { - if(count($_['addressbooks'])==1) { - ?> - <input type="hidden" id="aid" name="aid" value="<?php echo $_['addressbooks'][0]['id']; ?>"> - <?php } else { ?> - <dt><label for="addressbook"><?php echo $l->t('Addressbook'); ?></label></dt> - <dd> - <select id="aid" name="aid" size="1"> - <?php echo OCP\html_select_options($_['addressbooks'], null, array('value'=>'id', 'label'=>'displayname')); ?> - </select> - </dd> - <?php }} ?> - <dt><label for="pre"><?php echo $l->t('Hon. prefixes'); ?></label></dt> - <dd> - <input name="pre" id="pre" value="<?php echo isset($name[3]) ? $name[3] : ''; ?>" type="text" list="prefixes" /> - <datalist id="prefixes"> - <option value="<?php echo $l->t('Miss'); ?>"> - <option value="<?php echo $l->t('Ms'); ?>"> - <option value="<?php echo $l->t('Mr'); ?>"> - <option value="<?php echo $l->t('Sir'); ?>"> - <option value="<?php echo $l->t('Mrs'); ?>"> - <option value="<?php echo $l->t('Dr'); ?>"> - </datalist> - </dd> - <dt><label for="giv"><?php echo $l->t('Given name'); ?></label></dt> - <dd><input name="giv" id="giv" value="<?php echo isset($name[1]) ? $name[1] : ''; ?>" type="text" /></dd> - <dt><label for="add"><?php echo $l->t('Additional names'); ?></label></dt> - <dd><input name="add" id="add" value="<?php echo isset($name[2]) ? $name[2] : ''; ?>" type="text" /></dd> - <dt><label for="fam"><?php echo $l->t('Family name'); ?></label></dt> - <dd><input name="fam" id="fam" value="<?php echo isset($name[0]) ? $name[0] : ''; ?>" type="text" /></dd> - <dt><label for="suf"><?php echo $l->t('Hon. suffixes'); ?></label></dt> - <dd> - <input name="suf" id="suf" value="<?php echo isset($name[4]) ? $name[4] : ''; ?>" type="text" list="suffixes" /> - <datalist id="suffixes"> - <option value="<?php echo $l->t('J.D.'); ?>"> - <option value="<?php echo $l->t('M.D.'); ?>"> - <option value="<?php echo $l->t('D.O.'); ?>"> - <option value="<?php echo $l->t('D.C.'); ?>"> - <option value="<?php echo $l->t('Ph.D.'); ?>"> - <option value="<?php echo $l->t('Esq.'); ?>"> - <option value="<?php echo $l->t('Jr.'); ?>"> - <option value="<?php echo $l->t('Sn.'); ?>"> - </datalist> - </dd> - </dl> - </fieldset> - </form> -</div> diff --git a/apps/contacts/templates/part.import.php b/apps/contacts/templates/part.import.php deleted file mode 100644 index 32c8dc50dd6..00000000000 --- a/apps/contacts/templates/part.import.php +++ /dev/null @@ -1,27 +0,0 @@ -<div id="contacts_import_dialog" title="<?php echo $l->t("Import a contacts file"); ?>"> - <div id="form_container"> - <input type="hidden" id="filename" value="<?php echo $_['filename'];?>"> - <input type="hidden" id="path" value="<?php echo $_['path'];?>"> - <input type="hidden" id="progresskey" value="<?php echo rand() ?>"> - <p class="bold" style="text-align:center;"><?php echo $l->t('Please choose the addressbook'); ?></p> - <select style="width:100%;" id="contacts" name="contacts"> - <?php - $contacts_options = OC_Contacts_Addressbook::all(OCP\USER::getUser()); - $contacts_options[] = array('id'=>'newaddressbook', 'displayname'=>$l->t('create a new addressbook')); - echo OCP\html_select_options($contacts_options, $contacts_options[0]['id'], array('value'=>'id', 'label'=>'displayname')); - ?> - </select> - <div id="newaddressbookform" style="display: none;"> - <input type="text" style="width: 97%;" placeholder="<?php echo $l->t('Name of new addressbook'); ?>" id="newaddressbook" name="newaddressbook"> - </div> - <input type="button" value="<?php echo $l->t("Import");?>!" id="startimport"> - </div> -<div id="progressbar_container" style="display: none"> - <p style="text-align:center;"><?php echo $l->t('Importing contacts'); ?></p> - <div id="progressbar"></div> - <div id="import_done" style="display: none;"> - <p style="text-align:center;"></p> - <input type="button" value="<?php echo $l->t('Close'); ?>" id="import_done_button"> - </div> - </div> -</div>
\ No newline at end of file diff --git a/apps/contacts/templates/part.no_contacts.php b/apps/contacts/templates/part.no_contacts.php deleted file mode 100644 index 1802939483b..00000000000 --- a/apps/contacts/templates/part.no_contacts.php +++ /dev/null @@ -1,7 +0,0 @@ -<div id="appsettings" class="popup bottomleft hidden"></div> -<div id="firstrun"> - <?php echo $l->t('You have no contacts in your addressbook.') ?> - <div id="selections"> - <input type="button" value="<?php echo $l->t('Add contact') ?>" onclick="OC.Contacts.Card.editNew()" /> - </div> -</div> diff --git a/apps/contacts/templates/part.selectaddressbook.php b/apps/contacts/templates/part.selectaddressbook.php deleted file mode 100644 index 812a3b891ff..00000000000 --- a/apps/contacts/templates/part.selectaddressbook.php +++ /dev/null @@ -1,34 +0,0 @@ -<div id="selectaddressbook_dialog" title="<?php echo $l->t("Select Address Books"); ?>"> -<script type="text/javascript"> -$(document).ready(function() { - $('input.name,input.desc').on('focus', function(e) { - $('#book_new').prop('checked', true); - }); -}); -</script> -<form> -<table style="width: 100%"> - <?php foreach($_['addressbooks'] as $idx => $addressbook) { ?> - <tr> - <td> - <input id="book_<?php echo $addressbook['id']; ?>" name="book" type="radio" value="<?php echo $addressbook['id']; ?>" <?php echo ($idx==0?'checked="checked"':'')?>> - </td> - <td> - <label for="book_<?php echo $addressbook['id']; ?>"><?php echo $addressbook['displayname']; ?></label> - </td> - <td><?php echo $addressbook['description']; ?></td> - </tr> - <?php } ?> - <tr> - <td> - <input id="book_new" name="book" type="radio" value="new"> - </td> - <th> - <input type="text" class="name" name="displayname" placeholder="<?php echo $l->t("Enter name"); ?>" /> - </th> - <td><input type="text" class="desc" name="description" placeholder="<?php echo $l->t("Enter description"); ?>" /></td> - </tr> -</table> -</form> -</div> - diff --git a/apps/contacts/templates/settings.php b/apps/contacts/templates/settings.php deleted file mode 100644 index e3536c7b461..00000000000 --- a/apps/contacts/templates/settings.php +++ /dev/null @@ -1,55 +0,0 @@ -<form id="contacts-settings"> - <fieldset class="personalblock"> - <?php echo $l->t('CardDAV syncing addresses'); ?> (<a href="http://owncloud.org/synchronisation/" target="_blank"><?php echo $l->t('more info'); ?></a>) - <dl> - <dt><?php echo $l->t('Primary address (Kontact et al)'); ?></dt> - <dd><code><?php echo OCP\Util::linkToRemote('carddav'); ?></code></dd> - <dt><?php echo $l->t('iOS/OS X'); ?></dt> - <dd><code><?php echo OCP\Util::linkToRemote('carddav'); ?>principals/<?php echo OCP\USER::getUser(); ?></code>/</dd> - <dt class="hidden"><?php echo $l->t('Addressbooks'); ?></dt> - <dd class="addressbooks-settings hidden"> - <table> - <?php foreach($_['addressbooks'] as $addressbook) { ?> - <tr class="addressbook" data-id="<?php echo $addressbook['id'] ?>" data-uri="<?php echo $addressbook['uri'] ?>"> - <td class="active"> - <input type="checkbox" <?php echo (($addressbook['active']) == '1' ? ' checked="checked"' : ''); ?> /> - </td> - <td class="name"><?php echo $addressbook['displayname'] ?></td> - <td class="description"><?php echo $addressbook['description'] ?></td> - <td class="action"> - <a class="svg action globe" title="<?php echo $l->t('Show CardDav link'); ?>"></a> - </td> - <td class="action"> - <a class="svg action cloud" title="<?php echo $l->t('Show read-only VCF link'); ?>"></a> - </td> - <td class="action"> - <a class="svg action share" data-item-type="addressbook" data-item="<?php echo $addressbook['id'] ?>" title="<?php echo $l->t("Share"); ?>"></a> - </td> - <td class="action"> - <a class="svg action download" title="<?php echo $l->t('Download'); ?>" - href="<?php echo OCP\Util::linkToAbsolute('contacts', 'export.php'); ?>?bookid=<?php echo $addressbook['id'] ?>"></a> - </td> - <td class="action"> - <a class="svg action edit" title="<?php echo $l->t("Edit"); ?>"></a> - </td> - <td class="action"> - <a class="svg action delete" title="<?php echo $l->t("Delete"); ?>"></a> - </td> - </tr> - <?php } ?> - </table> - <div class="actions" style="width: 100%;"> - <input class="active hidden" type="checkbox" /> - <button class="new"><?php echo $l->t('New Address Book') ?></button> - <input class="name hidden" type="text" autofocus="autofocus" placeholder="<?php echo $l->t('Name'); ?>" /> - <input class="description hidden" type="text" placeholder="<?php echo $l->t('Description'); ?>" /> - <button class="save hidden"><?php echo $l->t('Save') ?></button> - <button class="cancel hidden"><?php echo $l->t('Cancel') ?></button> - </div> - </dd> - </dl> - <div style="width: 100%; clear: both;"> - <button class="moreless"><?php echo $l->t('More...') ?></button> - </div> - </fieldset> -</form> diff --git a/apps/contacts/thumbnail.php b/apps/contacts/thumbnail.php deleted file mode 100644 index 1e3714ae6c6..00000000000 --- a/apps/contacts/thumbnail.php +++ /dev/null @@ -1,98 +0,0 @@ -<?php -/** - * ownCloud - Addressbook - * - * @author Thomas Tanghus - * @copyright 2011-2012 Thomas Tanghus <thomas@tanghus.net> - * - * 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/>. - * - */ - -OCP\JSON::checkLoggedIn(); -//OCP\User::checkLoggedIn(); -OCP\App::checkAppEnabled('contacts'); -session_write_close(); - -function getStandardImage() { - OCP\Response::enableCaching(); - OCP\Response::redirect(OCP\Util::imagePath('contacts', 'person.png')); -} - -if(!extension_loaded('gd') || !function_exists('gd_info')) { - OCP\Util::writeLog('contacts', - 'thumbnail.php. GD module not installed', OCP\Util::DEBUG); - getStandardImage(); - exit(); -} - -$id = $_GET['id']; -$caching = null; - -$contact = OC_Contacts_App::getContactVCard($id); - -// invalid vcard -if(is_null($contact)) { - OCP\Util::writeLog('contacts', - 'thumbnail.php. The VCard for ID ' . $id . ' is not RFC compatible', - OCP\Util::ERROR); - getStandardImage(); - exit(); -} -OCP\Response::enableCaching($caching); -OC_Contacts_App::setLastModifiedHeader($contact); - -$thumbnail_size = 23; - -// Find the photo from VCard. -$image = new OC_Image(); -$photo = $contact->getAsString('PHOTO'); -if($photo) { - if($image->loadFromBase64($photo)) { - if($image->centerCrop()) { - if($image->resize($thumbnail_size)) { - $modified = OC_Contacts_App::lastModified($contact); - // Force refresh if modified within the last minute. - if(!is_null($modified)) { - $caching = (time() - $modified->format('U') > 60) ? null : 0; - } - OCP\Response::enableCaching($caching); - if(!is_null($modified)) { - OCP\Response::setLastModifiedHeader($modified); - } - OCP\Response::setETagHeader(md5($photo)); - if($image->show()) { - exit(); - } else { - OCP\Util::writeLog('contacts', - 'thumbnail.php. Couldn\'t display thumbnail for ID ' . $id, - OCP\Util::ERROR); - } - } else { - OCP\Util::writeLog('contacts', - 'thumbnail.php. Couldn\'t resize thumbnail for ID ' . $id, - OCP\Util::ERROR); - } - }else{ - OCP\Util::writeLog('contacts', - 'thumbnail.php. Couldn\'t crop thumbnail for ID ' . $id, - OCP\Util::ERROR); - } - } else { - OCP\Util::writeLog('contacts', - 'thumbnail.php. Couldn\'t load image string for ID ' . $id, - OCP\Util::ERROR); - } -} -getStandardImage(); diff --git a/apps/contacts/tmpphoto.php b/apps/contacts/tmpphoto.php deleted file mode 100644 index 156d5c80308..00000000000 --- a/apps/contacts/tmpphoto.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php -/** - * ownCloud - Image generator for contacts. - * - * @author Thomas Tanghus - * @copyright 2012 Thomas Tanghus <thomas@tanghus.net> - * - * 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/>. - * - */ - -$tmpkey = $_GET['tmpkey']; -$maxsize = isset($_GET['maxsize']) ? $_GET['maxsize'] : -1; -header("Cache-Control: no-cache, no-store, must-revalidate"); - -OCP\Util::writeLog('contacts', 'tmpphoto.php: tmpkey: '.$tmpkey, OCP\Util::DEBUG); - -$image = new OC_Image(); -$image->loadFromData(OC_Cache::get($tmpkey)); -if($maxsize != -1) { - $image->resize($maxsize); -} -$image(); |