]> source.dussan.org Git - nextcloud-server.git/commitdiff
always show correct place holder, mention share by mail only if the share provider...
authorBjoern Schiessle <bjoern@schiessle.org>
Mon, 31 Oct 2016 10:52:00 +0000 (11:52 +0100)
committerBjoern Schiessle <bjoern@schiessle.org>
Tue, 1 Nov 2016 18:54:41 +0000 (19:54 +0100)
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
apps/sharebymail/appinfo/app.php [new file with mode: 0644]
apps/sharebymail/lib/Settings.php [new file with mode: 0644]
apps/sharebymail/tests/SettingsTest.php [new file with mode: 0644]
core/js/shareconfigmodel.js
core/js/sharedialogview.js

diff --git a/apps/sharebymail/appinfo/app.php b/apps/sharebymail/appinfo/app.php
new file mode 100644 (file)
index 0000000..5ef7b6f
--- /dev/null
@@ -0,0 +1,24 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+$settings = new \OCA\ShareByMail\Settings();
+
+\OCP\Util::connectHook('\OCP\Config', 'js', $settings, 'announceShareProvider');
diff --git a/apps/sharebymail/lib/Settings.php b/apps/sharebymail/lib/Settings.php
new file mode 100644 (file)
index 0000000..4ab1622
--- /dev/null
@@ -0,0 +1,38 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+
+namespace OCA\ShareByMail;
+
+
+class Settings {
+
+       /**
+        * announce that the share-by-mail share provider is enabled
+        *
+        * @param array $settings
+        */
+       public function announceShareProvider(array $settings) {
+               $array = json_decode($settings['array']['oc_appconfig'], true);
+               $array['shareByMailEnabled'] = true;
+               $settings['array']['oc_appconfig'] = json_encode($array);
+       }
+}
diff --git a/apps/sharebymail/tests/SettingsTest.php b/apps/sharebymail/tests/SettingsTest.php
new file mode 100644 (file)
index 0000000..f415421
--- /dev/null
@@ -0,0 +1,64 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+
+namespace OCA\ShareByMail\Tests;
+
+
+use OCA\ShareByMail\Settings;
+use Test\TestCase;
+
+class SettingsTest extends TestCase  {
+
+       /** @var  Settings */
+       private $instance;
+
+       public function setUp() {
+               parent::setUp();
+
+               $this->instance = new Settings();
+       }
+
+       public function testAnnounceShareProvider() {
+               $before = [
+                       'oc_appconfig' =>
+                               json_encode([
+                                       'key1' => 'value1',
+                                       'key2' => 'value2'
+                               ]),
+                       'oc_foo' => 'oc_bar'
+               ];
+
+               $after = [
+                               'oc_appconfig' =>
+                                       json_encode([
+                                               'key1' => 'value1',
+                                               'key2' => 'value2',
+                                               'shareByMailEnabled' => true
+                                       ]),
+                               'oc_foo' => 'oc_bar'
+               ];
+
+               $this->instance->announceShareProvider(['array' => &$before]);
+               $this->assertSame($after, $before);
+       }
+
+}
index b04c2acae16b69f665816cd85307b2f0ce52113f..24922d6263682e40bce06ccd73c2bdd03570633e 100644 (file)
@@ -25,6 +25,7 @@
                        isDefaultExpireDateEnforced: oc_appconfig.core.defaultExpireDateEnforced === true,
                        isDefaultExpireDateEnabled: oc_appconfig.core.defaultExpireDateEnabled === true,
                        isRemoteShareAllowed: oc_appconfig.core.remoteShareAllowed,
+                       isMailShareAllowed: oc_appconfig.shareByMailEnabled !== undefined,
                        defaultExpireDate: oc_appconfig.core.defaultExpireDate,
                        isResharingAllowed: oc_appconfig.core.resharingAllowed,
                        allowGroupSharing: oc_appconfig.core.allowGroupSharing
index 129206b0931cc61e066c443d08b6d1b9321eef13..3b2a7480c4736b18acf7ab561031caacbefda755 100644 (file)
                },
 
                _renderSharePlaceholderPart: function () {
-                       var sharePlaceholder = t('core', 'Share with users, or by mail...');
+                       var allowGroupSharing = this.configModel.get('allowGroupSharing');
+                       var allowRemoteSharing = this.configModel.get('isRemoteShareAllowed');
+                       var allowMailSharing = this.configModel.get('isMailShareAllowed');
 
-                       if (this.configModel.get('allowGroupSharing')) {
-                               if (this.configModel.get('isRemoteShareAllowed')) {
-                                       sharePlaceholder = t('core', 'Share with users, groups, remote users, or by mail…');
-                               } else {
-                                       sharePlaceholder = t('core', 'Share with users, groups or by mail...');
-                               }
-                       } else if (this.configModel.get('isRemoteShareAllowed')) {
-                                       sharePlaceholder = t('core', 'Share with users, remote users or by mail...');
+                       if (!allowGroupSharing && !allowRemoteSharing && allowMailSharing) {
+                               return t('core', 'Share with users or by mail...');
+                       }
+                       if (!allowGroupSharing && allowRemoteSharing && !allowMailSharing) {
+                               return t('core', 'Share with users or remote users...');
+                       }
+                       if (!allowGroupSharing && allowRemoteSharing && allowMailSharing) {
+                               return t('core', 'Share with users, remote users or by mail...');
+                       }
+                       if (allowGroupSharing && !allowRemoteSharing && !allowMailSharing) {
+                               return t('core', 'Share with users or groups...');
+                       }
+                       if (allowGroupSharing && !allowRemoteSharing && allowMailSharing) {
+                               return t('core', 'Share with users, groups or by mail...');
+                       }
+                       if (allowGroupSharing && allowRemoteSharing && !allowMailSharing) {
+                               return t('core', 'Share with users, groups or remote users...');
+                       }
+                       if (allowGroupSharing && allowRemoteSharing && allowMailSharing) {
+                               return t('core', 'Share with users, groups, remote users or by mail...');
                        }
 
-                       return sharePlaceholder;
+                       return  t('core', 'Share with users...');
                },
 
                /**