Skip to content

Commit

Permalink
Merge branch 'master' into Valdnet-patch-1
Browse files Browse the repository at this point in the history
  • Loading branch information
Valdnet authored Sep 27, 2021
2 parents 8d04794 + 8af4d90 commit 673f1dd
Show file tree
Hide file tree
Showing 11 changed files with 139 additions and 124 deletions.
8 changes: 4 additions & 4 deletions .tx/nextcloud.client-desktop/de_translation
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Icon=@APPLICATION_EXECUTABLE@


# Translations
Icon[de_DE]=@APPLICATION_ICON_NAME@
Name[de_DE]=@APPLICATION_NAME@ Client zur Desktop-Synchronisierung
Comment[de_DE]=@APPLICATION_NAME@ Client zur Desktop-Synchronisierung
GenericName[de_DE]=Ordnersynchronisierung
Icon[de]=@APPLICATION_ICON_NAME@
Name[de]=@APPLICATION_NAME@ Desktop
Comment[de]=@APPLICATION_NAME@ Client zur Desktop-Synchronisierung
GenericName[de]=Ordner-Synchronisation
2 changes: 1 addition & 1 deletion src/cmd/cmd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@ int main(int argc, char **argv)
return EXIT_FAILURE;
}

QUrl hostUrl = QUrl::fromUserInput(options.target_url);
QUrl hostUrl = QUrl::fromUserInput((options.target_url.endsWith(QLatin1Char('/')) || options.target_url.endsWith(QLatin1Char('\\'))) ? options.target_url.chopped(1) : options.target_url);

// Order of retrieval attempt (later attempts override earlier ones):
// 1. From URL
Expand Down
4 changes: 2 additions & 2 deletions src/gui/invalidfilenamedialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ InvalidFilenameDialog::InvalidFilenameDialog(AccountPtr account, Folder *folder,
_ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
_ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Rename file"));

_ui->descriptionLabel->setText(tr("The file %1 could not be synced because it contains characters which are not allowed on this system.").arg(_originalFileName));
_ui->descriptionLabel->setText(tr("The file %1 could not be synced because the name contains characters which are not allowed on this system.").arg(_originalFileName));
_ui->explanationLabel->setText(tr("The following characters are not allowed on the system: * \" | & ? , ; : \\ / ~ < >"));
_ui->filenameLineEdit->setText(filePathFileInfo.fileName());

Expand Down Expand Up @@ -152,7 +152,7 @@ void InvalidFilenameDialog::onRemoteFileAlreadyExists(const QVariantMap &values)
{
Q_UNUSED(values);

_ui->errorLabel->setText(tr("Can not rename file because file with the same name does already exist on the server. Please pick another name."));
_ui->errorLabel->setText(tr("Cannot rename file because a file with the same name does already exist on the server. Please pick another name."));
_ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
}

Expand Down
14 changes: 1 addition & 13 deletions src/gui/owncloudgui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -631,19 +631,7 @@ void ownCloudGui::slotShowShareDialog(const QString &sharePath, const QString &l
}
}

// As a first approximation, set the set of permissions that can be granted
// either to everything (resharing allowed) or nothing (no resharing).
//
// The correct value will be found with a propfind from ShareDialog.
// (we want to show the dialog directly, not wait for the propfind first)
SharePermissions maxSharingPermissions =
SharePermissionRead
| SharePermissionUpdate | SharePermissionCreate | SharePermissionDelete
| SharePermissionShare;
if (!resharingAllowed) {
maxSharingPermissions = {};
}

auto maxSharingPermissions = resharingAllowed? SharePermissions(accountState->account()->capabilities().shareDefaultPermissions()) : SharePermissions({});

ShareDialog *w = nullptr;
if (_shareDialogs.contains(localPath) && _shareDialogs[localPath]) {
Expand Down
57 changes: 22 additions & 35 deletions src/gui/shareusergroupwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -371,43 +371,30 @@ void ShareUserGroupWidget::slotCompleterActivated(const QModelIndex &index)
*/

_lastCreatedShareId = QString();

if (sharee->type() == Sharee::Federated
&& _account->serverVersionInt() < Account::makeServerVersion(9, 1, 0)) {
int permissions = SharePermissionRead | SharePermissionUpdate;
if (!_isFile) {
permissions |= SharePermissionCreate | SharePermissionDelete;
}
_manager->createShare(_sharePath, Share::ShareType(sharee->type()),
sharee->shareWith(), SharePermission(permissions));
} else {
QString password;
if (sharee->type() == Sharee::Email && _account->capabilities().shareEmailPasswordEnforced()) {
_ui->shareeLineEdit->clear();
// always show a dialog for password-enforced email shares
bool ok = false;

do {
password = QInputDialog::getText(
this,
tr("Password for share required"),
tr("Please enter a password for your email share:"),
QLineEdit::Password,
QString(),
&ok);
} while (password.isEmpty() && ok);

if (!ok) {
return;
}

QString password;
if (sharee->type() == Sharee::Email && _account->capabilities().shareEmailPasswordEnforced()) {
_ui->shareeLineEdit->clear();
// always show a dialog for password-enforced email shares
bool ok = false;

do {
password = QInputDialog::getText(
this,
tr("Password for share required"),
tr("Please enter a password for your email share:"),
QLineEdit::Password,
QString(),
&ok);
} while (password.isEmpty() && ok);

if (!ok) {
return;
}

// Default permissions on creation
int permissions = SharePermissionCreate | SharePermissionUpdate
| SharePermissionDelete | SharePermissionShare;
_manager->createShare(_sharePath, Share::ShareType(sharee->type()),
sharee->shareWith(), SharePermission(permissions), password);
}

_manager->createShare(_sharePath, Share::ShareType(sharee->type()),
sharee->shareWith(), _maxSharingPermissions, password);

_ui->shareeLineEdit->setEnabled(false);
_ui->shareeLineEdit->clear();
Expand Down
9 changes: 9 additions & 0 deletions src/libsync/capabilities.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,15 @@ bool Capabilities::shareResharing() const
return _capabilities["files_sharing"].toMap()["resharing"].toBool();
}

int Capabilities::shareDefaultPermissions() const
{
if(_capabilities["files_sharing"].toMap().contains("default_permissions")) {
return _capabilities["files_sharing"].toMap()["default_permissions"].toInt();
}

return {};
}

bool Capabilities::clientSideEncryptionAvailable() const
{
auto it = _capabilities.constFind(QStringLiteral("end-to-end-encryption"));
Expand Down
1 change: 1 addition & 0 deletions src/libsync/capabilities.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ class OWNCLOUDSYNC_EXPORT Capabilities
int sharePublicLinkExpireDateDays() const;
bool sharePublicLinkMultiple() const;
bool shareResharing() const;
int shareDefaultPermissions() const;
bool chunkingNg() const;
bool userStatusNotification() const;
bool userStatus() const;
Expand Down
29 changes: 29 additions & 0 deletions test/testcapabilities.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,35 @@ private slots:

QVERIFY(!capabilities.userStatusSupportsEmoji());
}

void testShareDefaultPermissions_defaultSharePermissionsNotInCapabilities_returnZero()
{
QVariantMap filesSharingMap;
filesSharingMap["api_enabled"] = false;

QVariantMap capabilitiesMap;
capabilitiesMap["files_sharing"] = filesSharingMap;

const OCC::Capabilities capabilities(capabilitiesMap);
const auto defaultSharePermissionsNotInCapabilities = capabilities.shareDefaultPermissions();

QCOMPARE(defaultSharePermissionsNotInCapabilities, {});
}

void testShareDefaultPermissions_defaultSharePermissionsAvailable_returnPermissions()
{
QVariantMap filesSharingMap;
filesSharingMap["api_enabled"] = true;
filesSharingMap["default_permissions"] = 31;

QVariantMap capabilitiesMap;
capabilitiesMap["files_sharing"] = filesSharingMap;

const OCC::Capabilities capabilities(capabilitiesMap);
const auto defaultSharePermissionsAvailable = capabilities.shareDefaultPermissions();

QCOMPARE(defaultSharePermissionsAvailable, 31);
}
};

QTEST_GUILESS_MAIN(TestCapabilities)
Expand Down
Loading

0 comments on commit 673f1dd

Please sign in to comment.