summaryrefslogtreecommitdiffstats
path: root/apps/contacts
diff options
context:
space:
mode:
authorFrank Karlitschek <frank@owncloud.org>2012-08-26 17:30:07 +0200
committerFrank Karlitschek <frank@owncloud.org>2012-08-26 17:30:07 +0200
commit72e9a2ce57ee88503db83614cec5ccda71f0b58e (patch)
tree8bc301ca22d9ca08ea54426bcb61f62bd1c1cb75 /apps/contacts
parent32bad688bdb4fea55eba9d4255fc55f1c60a0aca (diff)
downloadnextcloud-server-72e9a2ce57ee88503db83614cec5ccda71f0b58e.tar.gz
nextcloud-server-72e9a2ce57ee88503db83614cec5ccda71f0b58e.zip
moved to apps repository
Diffstat (limited to 'apps/contacts')
-rw-r--r--apps/contacts/ajax/addressbook/activate.php32
-rw-r--r--apps/contacts/ajax/addressbook/add.php37
-rw-r--r--apps/contacts/ajax/addressbook/delete.php36
-rw-r--r--apps/contacts/ajax/addressbook/update.php39
-rw-r--r--apps/contacts/ajax/categories/categoriesfor.php34
-rw-r--r--apps/contacts/ajax/categories/delete.php48
-rw-r--r--apps/contacts/ajax/categories/list.php15
-rw-r--r--apps/contacts/ajax/categories/rescan.php17
-rw-r--r--apps/contacts/ajax/contact/add.php62
-rw-r--r--apps/contacts/ajax/contact/addproperty.php168
-rw-r--r--apps/contacts/ajax/contact/delete.php44
-rw-r--r--apps/contacts/ajax/contact/deleteproperty.php54
-rw-r--r--apps/contacts/ajax/contact/details.php62
-rw-r--r--apps/contacts/ajax/contact/list.php97
-rw-r--r--apps/contacts/ajax/contact/move.php29
-rw-r--r--apps/contacts/ajax/contact/saveproperty.php176
-rw-r--r--apps/contacts/ajax/cropphoto.php36
-rw-r--r--apps/contacts/ajax/currentphoto.php53
-rw-r--r--apps/contacts/ajax/editaddress.php41
-rw-r--r--apps/contacts/ajax/editname.php34
-rw-r--r--apps/contacts/ajax/importdialog.php15
-rw-r--r--apps/contacts/ajax/loadcard.php58
-rw-r--r--apps/contacts/ajax/loadintro.php31
-rw-r--r--apps/contacts/ajax/loghandler.php44
-rw-r--r--apps/contacts/ajax/oc_photo.php62
-rw-r--r--apps/contacts/ajax/savecrop.php121
-rw-r--r--apps/contacts/ajax/selectaddressbook.php24
-rw-r--r--apps/contacts/ajax/uploadimport.php80
-rw-r--r--apps/contacts/ajax/uploadphoto.php116
-rw-r--r--apps/contacts/appinfo/app.php31
-rw-r--r--apps/contacts/appinfo/database.xml137
-rw-r--r--apps/contacts/appinfo/info.xml16
-rw-r--r--apps/contacts/appinfo/migrate.php70
-rw-r--r--apps/contacts/appinfo/remote.php61
-rw-r--r--apps/contacts/appinfo/update.php25
-rw-r--r--apps/contacts/appinfo/version1
-rw-r--r--apps/contacts/carddav.php6
-rw-r--r--apps/contacts/css/contacts.css155
-rw-r--r--apps/contacts/css/jquery.Jcrop.css84
-rw-r--r--apps/contacts/css/jquery.combobox.css3
-rw-r--r--apps/contacts/export.php38
-rw-r--r--apps/contacts/img/Jcrop.gifbin329 -> 0 bytes
-rw-r--r--apps/contacts/img/contact-new.pngbin525 -> 0 bytes
-rw-r--r--apps/contacts/img/contact-new.svg129
-rw-r--r--apps/contacts/img/globe.svg102
-rw-r--r--apps/contacts/img/person.pngbin852 -> 0 bytes
-rw-r--r--apps/contacts/img/person.svg175
-rw-r--r--apps/contacts/img/person_large.pngbin6993 -> 0 bytes
-rw-r--r--apps/contacts/import.php150
-rw-r--r--apps/contacts/index.php74
-rw-r--r--apps/contacts/js/LICENSE.jquery.inview41
-rw-r--r--apps/contacts/js/contacts.js2277
-rw-r--r--apps/contacts/js/expanding.js118
-rw-r--r--apps/contacts/js/jquery.Jcrop.js1765
-rw-r--r--apps/contacts/js/jquery.Jcrop.min.js255
-rw-r--r--apps/contacts/js/jquery.combobox.js158
-rw-r--r--apps/contacts/js/jquery.inview.js134
-rw-r--r--apps/contacts/js/jquery.inview.txt15
-rw-r--r--apps/contacts/js/jquery.multi-autocomplete.js94
-rw-r--r--apps/contacts/js/loader.js86
-rw-r--r--apps/contacts/js/settings.js196
-rw-r--r--apps/contacts/l10n/.gitkeep0
-rw-r--r--apps/contacts/l10n/ar.php44
-rw-r--r--apps/contacts/l10n/ca.php229
-rw-r--r--apps/contacts/l10n/cs_CZ.php229
-rw-r--r--apps/contacts/l10n/da.php158
-rw-r--r--apps/contacts/l10n/de.php229
-rw-r--r--apps/contacts/l10n/el.php229
-rw-r--r--apps/contacts/l10n/eo.php190
-rw-r--r--apps/contacts/l10n/es.php208
-rw-r--r--apps/contacts/l10n/et_EE.php155
-rw-r--r--apps/contacts/l10n/eu.php169
-rw-r--r--apps/contacts/l10n/fa.php158
-rw-r--r--apps/contacts/l10n/fi_FI.php159
-rw-r--r--apps/contacts/l10n/fr.php229
-rw-r--r--apps/contacts/l10n/gl.php157
-rw-r--r--apps/contacts/l10n/he.php135
-rw-r--r--apps/contacts/l10n/hr.php93
-rw-r--r--apps/contacts/l10n/hu_HU.php158
-rw-r--r--apps/contacts/l10n/ia.php81
-rw-r--r--apps/contacts/l10n/it.php229
-rw-r--r--apps/contacts/l10n/ja_JP.php229
-rw-r--r--apps/contacts/l10n/ko.php155
-rw-r--r--apps/contacts/l10n/lb.php86
-rw-r--r--apps/contacts/l10n/lt_LT.php53
-rw-r--r--apps/contacts/l10n/mk.php158
-rw-r--r--apps/contacts/l10n/ms_MY.php178
-rw-r--r--apps/contacts/l10n/nb_NO.php134
-rw-r--r--apps/contacts/l10n/nl.php220
-rw-r--r--apps/contacts/l10n/nn_NO.php44
-rw-r--r--apps/contacts/l10n/pl.php219
-rw-r--r--apps/contacts/l10n/pt_BR.php158
-rw-r--r--apps/contacts/l10n/pt_PT.php224
-rw-r--r--apps/contacts/l10n/ro.php76
-rw-r--r--apps/contacts/l10n/ru.php229
-rw-r--r--apps/contacts/l10n/sk_SK.php178
-rw-r--r--apps/contacts/l10n/sl.php229
-rw-r--r--apps/contacts/l10n/sr.php39
-rw-r--r--apps/contacts/l10n/sr@latin.php27
-rw-r--r--apps/contacts/l10n/sv.php229
-rw-r--r--apps/contacts/l10n/th_TH.php207
-rw-r--r--apps/contacts/l10n/tr.php193
-rw-r--r--apps/contacts/l10n/uk.php24
-rw-r--r--apps/contacts/l10n/vi.php41
-rw-r--r--apps/contacts/l10n/xgettextfiles18
-rw-r--r--apps/contacts/l10n/zh_CN.php158
-rw-r--r--apps/contacts/l10n/zh_TW.php75
-rw-r--r--apps/contacts/lib/addressbook.php341
-rw-r--r--apps/contacts/lib/app.php331
-rw-r--r--apps/contacts/lib/hooks.php116
-rw-r--r--apps/contacts/lib/sabre/addressbook.php128
-rw-r--r--apps/contacts/lib/sabre/addressbookroot.php45
-rw-r--r--apps/contacts/lib/sabre/backend.php210
-rw-r--r--apps/contacts/lib/sabre/card.php94
-rw-r--r--apps/contacts/lib/sabre/useraddressbooks.php45
-rw-r--r--apps/contacts/lib/sabre/vcfexportplugin.php100
-rw-r--r--apps/contacts/lib/search.php21
-rw-r--r--apps/contacts/lib/share/addressbook.php94
-rw-r--r--apps/contacts/lib/share/contact.php53
-rw-r--r--apps/contacts/lib/vcard.php733
-rw-r--r--apps/contacts/photo.php83
-rw-r--r--apps/contacts/settings.php6
-rw-r--r--apps/contacts/templates/index.php74
-rw-r--r--apps/contacts/templates/part.contact.php145
-rw-r--r--apps/contacts/templates/part.cropphoto.php67
-rw-r--r--apps/contacts/templates/part.edit_address_dialog.php63
-rw-r--r--apps/contacts/templates/part.edit_name_dialog.php58
-rw-r--r--apps/contacts/templates/part.import.php27
-rw-r--r--apps/contacts/templates/part.no_contacts.php7
-rw-r--r--apps/contacts/templates/part.selectaddressbook.php34
-rw-r--r--apps/contacts/templates/settings.php55
-rw-r--r--apps/contacts/thumbnail.php98
-rw-r--r--apps/contacts/tmpphoto.php34
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
deleted file mode 100644
index 72ea7ccb532..00000000000
--- a/apps/contacts/img/Jcrop.gif
+++ /dev/null
Binary files differ
diff --git a/apps/contacts/img/contact-new.png b/apps/contacts/img/contact-new.png
deleted file mode 100644
index a91f2e620fa..00000000000
--- a/apps/contacts/img/contact-new.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index e88bb5653af..00000000000
--- a/apps/contacts/img/person.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 8293df61829..00000000000
--- a/apps/contacts/img/person_large.png
+++ /dev/null
Binary files differ
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">&nbsp;</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'>&nbsp;</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();