diff options
author | Bjoern Schiessle <bjoern@schiessle.org> | 2016-07-29 15:37:08 +0200 |
---|---|---|
committer | Bjoern Schiessle <bjoern@schiessle.org> | 2016-11-01 19:51:11 +0100 |
commit | 0a6f02801f333c17ca6455906bc816020883477d (patch) | |
tree | 790140cc6dd30d7ef9db50b281fca4769097119b | |
parent | ef467c3195731cb1e4fff504b39c06b017deb5ec (diff) | |
download | nextcloud-server-0a6f02801f333c17ca6455906bc816020883477d.tar.gz nextcloud-server-0a6f02801f333c17ca6455906bc816020883477d.zip |
introduce share by mail, ui part
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
-rw-r--r-- | apps/files_sharing/lib/Controller/ShareesAPIController.php | 90 | ||||
-rw-r--r-- | core/js/sharedialogview.js | 26 | ||||
-rw-r--r-- | lib/private/Share/Constants.php | 4 |
3 files changed, 45 insertions, 75 deletions
diff --git a/apps/files_sharing/lib/Controller/ShareesAPIController.php b/apps/files_sharing/lib/Controller/ShareesAPIController.php index 99c6b55240d..d5d877f4673 100644 --- a/apps/files_sharing/lib/Controller/ShareesAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareesAPIController.php @@ -405,68 +405,6 @@ class ShareesAPIController extends OCSController { } /** - * @param string $search - */ - protected function getEmails($search) { - $this->result['emails'] = []; - $this->result['exact']['emails'] = []; - - $foundEmail = false; - - // Search in contacts - //@todo Pagination missing - $addressBookContacts = $this->contactsManager->search($search, ['FN', 'EMAIL']); - foreach ($addressBookContacts as $contact) { - if (!isset($contact['EMAIL'])) { - continue; - } - - $emails = $contact['EMAIL']; - if (!is_array($emails)) { - $emails = [$emails]; - } - - foreach ($emails as $email) { - if (strtolower($search) === strtolower($contact['FN']) || - strtolower($search) === strtolower($email) - ) { - if (strtolower($search) === strtolower($email)) { - $foundEmail = true; - } - - $this->result['exact']['emails'][] = [ - 'label' => $contact['FN'], - 'value' => [ - 'shareType' => Share::SHARE_TYPE_EMAIL, - 'shareWith' => $email, - ], - ]; - } else if ($this->shareeEnumeration) { - $this->result['emails'][] = [ - 'label' => $contact['FN'], - 'value' => [ - 'shareType' => Share::SHARE_TYPE_EMAIL, - 'shareWith' => $email, - ], - ]; - } - } - } - - if (!$foundEmail && substr_count($search, '@') >= 1 && $this->offset === 0) { - $this->result['exact']['emails'][] = [ - 'label' => $search, - 'value' => [ - 'shareType' => Share::SHARE_TYPE_EMAIL, - 'shareWith' => $search, - ], - ]; - } - - $this->reachedEndFor[] = 'emails'; - } - - /** * @NoAdminRequired * * @param string $search @@ -487,17 +425,16 @@ class ShareesAPIController extends OCSController { $shareTypes = [ Share::SHARE_TYPE_USER, + Share::SHARE_TYPE_EMAIL, + Share::SHARE_TYPE_REMOTE ]; if ($this->shareManager->allowGroupSharing()) { $shareTypes[] = Share::SHARE_TYPE_GROUP; } - $shareTypes[] = Share::SHARE_TYPE_EMAIL; - $shareTypes[] = Share::SHARE_TYPE_REMOTE; - - if (is_array($shareType)) { - $shareTypes = array_intersect($shareTypes, $shareType); + if (isset($_GET['shareType']) && is_array($_GET['shareType'])) { + $shareTypes = array_intersect($shareTypes, $_GET['shareType']); sort($shareTypes); } else if (is_numeric($shareType)) { $shareTypes = array_intersect($shareTypes, [(int) $shareType]); @@ -584,6 +521,25 @@ class ShareesAPIController extends OCSController { } /** + * add option to send share by mail + * + * @param string $search + */ + protected function getEmail($search) { + $this->result['emails'] = []; + + if (substr_count($search, '@') >= 1 && substr_count($search, ' ') === 0 && $this->offset === 0) { + $this->result['exact']['emails'][] = [ + 'label' => $search, + 'value' => [ + 'shareType' => Share::SHARE_TYPE_EMAIL, + 'shareWith' => $search, + ], + ]; + } + } + + /** * Generates a bunch of pagination links for the current page * * @param int $page Current page diff --git a/core/js/sharedialogview.js b/core/js/sharedialogview.js index 7efb361f512..78622faea29 100644 --- a/core/js/sharedialogview.js +++ b/core/js/sharedialogview.js @@ -154,10 +154,12 @@ var users = result.ocs.data.exact.users.concat(result.ocs.data.users); var groups = result.ocs.data.exact.groups.concat(result.ocs.data.groups); var remotes = result.ocs.data.exact.remotes.concat(result.ocs.data.remotes); + var emails = result.ocs.data.exact.emails.concat(result.ocs.data.emails); var usersLength; var groupsLength; var remotesLength; + var emailsLength; var i, j; @@ -212,10 +214,18 @@ break; } } + } else if (share.share_type === OC.Share.SHARE_TYPE_EMAIL) { + emailsLength = emails.length; + for (j = 0; j < emailsLength; j++) { + if (emails[j].value.shareWith === share.share_with) { + emails.splice(j, 1); + break; + } } } + } - var suggestions = users.concat(groups).concat(remotes); + var suggestions = users.concat(groups).concat(remotes).concat(emails); if (suggestions.length > 0) { $('.shareWithField').removeClass('error') @@ -268,6 +278,10 @@ sharee: text }); } + } else if (item.value.shareType === OC.Share.SHARE_TYPE_EMAIL) { + text = t('core', '{sharee} (email)', { + sharee: text + }); } var insert = $("<div class='share-autocomplete-item'/>"); var avatar = $("<div class='avatardiv'></div>").appendTo(insert); @@ -397,7 +411,7 @@ var infoTemplate = this._getRemoteShareInfoTemplate(); remoteShareInfo = infoTemplate({ docLink: this.configModel.getFederatedShareDocLink(), - tooltip: t('core', 'Share with people on other Nextclouds using the syntax username@example.com/nextcloud') + tooltip: t('core', 'Share with people on other servers using the syntax username@example.com/nextcloud') }); } @@ -405,16 +419,16 @@ }, _renderSharePlaceholderPart: function () { - var sharePlaceholder = t('core', 'Share with users…'); + var sharePlaceholder = t('core', 'Share with users, or by mail...'); if (this.configModel.get('allowGroupSharing')) { if (this.configModel.get('isRemoteShareAllowed')) { - sharePlaceholder = t('core', 'Share with users, groups or remote users…'); + sharePlaceholder = t('core', 'Share with users, groups, remote users, or by mail…'); } else { - sharePlaceholder = t('core', 'Share with users or groups…'); + sharePlaceholder = t('core', 'Share with users, groups or by mail...'); } } else if (this.configModel.get('isRemoteShareAllowed')) { - sharePlaceholder = t('core', 'Share with users or remote users…'); + sharePlaceholder = t('core', 'Share with users, remote users or by mail...'); } return sharePlaceholder; diff --git a/lib/private/Share/Constants.php b/lib/private/Share/Constants.php index 13a5a044e8a..f13f83f8ba9 100644 --- a/lib/private/Share/Constants.php +++ b/lib/private/Share/Constants.php @@ -29,9 +29,9 @@ class Constants { const SHARE_TYPE_USER = 0; const SHARE_TYPE_GROUP = 1; const SHARE_TYPE_LINK = 3; - const SHARE_TYPE_EMAIL = 4; // ToDo Check if it is still in use otherwise remove it + const SHARE_TYPE_EMAIL = 4; const SHARE_TYPE_CONTACT = 5; // ToDo Check if it is still in use otherwise remove it - const SHARE_TYPE_REMOTE = 6; // ToDo Check if it is still in use otherwise remove it + const SHARE_TYPE_REMOTE = 6; const FORMAT_NONE = -1; const FORMAT_STATUSES = -2; |