Bladeren bron

Updates to sharing flow

- Show enforced expiry date for new shares.
- Improve quick share dropdown visibility in dark mode.
- Prevent expiry date from showing expire for incoming shares.
by updating the check for `share.passwordExpirationTime` to equally
check for `undefined`.
- Move "Download permission/attribute" from custom setting (as it is just
another advanced setting and not an actual permission).
- Show correct text for upload/editing when "allow public uploads" is enabled
or disabled by admin.

Signed-off-by: fenn-cs <fenn25.fn@gmail.com>
fenn-cs 8 maanden geleden
bovenliggende
commit
a092bae720
98 gewijzigde bestanden met toevoegingen van 47 en 35 verwijderingen
  1. 3 2
      apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue
  2. 27 30
      apps/files_sharing/src/views/SharingDetailsTab.vue
  3. 0 0
      dist/3609-3609.js
  4. 0 0
      dist/3609-3609.js.map
  5. 0 1
      dist/485-485.js
  6. 0 0
      dist/485-485.js.map
  7. 0 0
      dist/50-50.js
  8. 0 0
      dist/50-50.js.map
  9. 1 0
      dist/5329-5329.js
  10. 0 0
      dist/5329-5329.js.LICENSE.txt
  11. 0 0
      dist/5329-5329.js.map
  12. 0 0
      dist/5912-5912.js
  13. 0 0
      dist/5912-5912.js.map
  14. 0 0
      dist/6678-6678.js
  15. 0 0
      dist/6678-6678.js.map
  16. 0 0
      dist/6870-6870.js
  17. 0 0
      dist/6870-6870.js.map
  18. 0 0
      dist/7816-7816.js
  19. 0 0
      dist/7816-7816.js.map
  20. 0 0
      dist/comments-comments-app.js
  21. 0 0
      dist/comments-comments-app.js.map
  22. 0 0
      dist/comments-init.js
  23. 0 0
      dist/comments-init.js.map
  24. 0 0
      dist/core-common.js
  25. 16 2
      dist/core-common.js.LICENSE.txt
  26. 0 0
      dist/core-common.js.map
  27. 0 0
      dist/core-login.js
  28. 0 0
      dist/core-login.js.map
  29. 0 0
      dist/core-main.js
  30. 0 0
      dist/core-main.js.map
  31. 0 0
      dist/core-profile.js
  32. 0 0
      dist/core-profile.js.map
  33. 0 0
      dist/core-unified-search.js
  34. 0 0
      dist/core-unified-search.js.map
  35. 0 0
      dist/core-unsupported-browser-redirect.js
  36. 0 0
      dist/core-unsupported-browser-redirect.js.map
  37. 0 0
      dist/core-unsupported-browser.js
  38. 0 0
      dist/core-unsupported-browser.js.map
  39. 0 0
      dist/dav-settings-personal-availability.js
  40. 0 0
      dist/dav-settings-personal-availability.js.map
  41. 0 0
      dist/federatedfilesharing-vue-settings-admin.js
  42. 0 0
      dist/federatedfilesharing-vue-settings-admin.js.map
  43. 0 0
      dist/federatedfilesharing-vue-settings-personal.js
  44. 0 0
      dist/federatedfilesharing-vue-settings-personal.js.map
  45. 0 0
      dist/files-init.js
  46. 0 0
      dist/files-init.js.map
  47. 0 0
      dist/files-main.js
  48. 0 0
      dist/files-main.js.map
  49. 0 0
      dist/files-personal-settings.js
  50. 0 0
      dist/files-personal-settings.js.map
  51. 0 0
      dist/files-reference-files.js
  52. 0 0
      dist/files-reference-files.js.map
  53. 0 0
      dist/files-sidebar.js
  54. 0 0
      dist/files-sidebar.js.map
  55. 0 0
      dist/files_external-init.js
  56. 0 0
      dist/files_external-init.js.map
  57. 0 0
      dist/files_reminders-main.js
  58. 0 0
      dist/files_reminders-main.js.map
  59. 0 0
      dist/files_sharing-files_sharing_tab.js
  60. 0 0
      dist/files_sharing-files_sharing_tab.js.map
  61. 0 0
      dist/files_sharing-init.js
  62. 0 0
      dist/files_sharing-init.js.map
  63. 0 0
      dist/files_sharing-personal-settings.js
  64. 0 0
      dist/files_sharing-personal-settings.js.map
  65. 0 0
      dist/files_trashbin-main.js
  66. 0 0
      dist/files_trashbin-main.js.map
  67. 0 0
      dist/files_versions-files_versions.js
  68. 0 0
      dist/files_versions-files_versions.js.map
  69. 0 0
      dist/settings-apps-view-7418.js
  70. 0 0
      dist/settings-apps-view-7418.js.map
  71. 0 0
      dist/settings-vue-settings-admin-basic-settings.js
  72. 0 0
      dist/settings-vue-settings-admin-basic-settings.js.map
  73. 0 0
      dist/settings-vue-settings-admin-delegation.js
  74. 0 0
      dist/settings-vue-settings-admin-delegation.js.map
  75. 0 0
      dist/settings-vue-settings-admin-security.js
  76. 0 0
      dist/settings-vue-settings-admin-security.js.map
  77. 0 0
      dist/settings-vue-settings-apps-users-management.js
  78. 0 0
      dist/settings-vue-settings-apps-users-management.js.map
  79. 0 0
      dist/settings-vue-settings-personal-info.js
  80. 0 0
      dist/settings-vue-settings-personal-info.js.map
  81. 0 0
      dist/settings-vue-settings-personal-password.js
  82. 0 0
      dist/settings-vue-settings-personal-password.js.map
  83. 0 0
      dist/settings-vue-settings-personal-security.js
  84. 0 0
      dist/settings-vue-settings-personal-security.js.map
  85. 0 0
      dist/sharebymail-vue-settings-admin-sharebymail.js
  86. 0 0
      dist/sharebymail-vue-settings-admin-sharebymail.js.map
  87. 0 0
      dist/systemtags-init.js
  88. 0 0
      dist/systemtags-init.js.map
  89. 0 0
      dist/theming-personal-theming.js
  90. 0 0
      dist/theming-personal-theming.js.map
  91. 0 0
      dist/updatenotification-updatenotification.js
  92. 0 0
      dist/updatenotification-updatenotification.js.map
  93. 0 0
      dist/user_status-menu.js
  94. 0 0
      dist/user_status-menu.js.map
  95. 0 0
      dist/weather_status-weather-status.js
  96. 0 0
      dist/weather_status-weather-status.js.map
  97. 0 0
      dist/workflowengine-workflowengine.js
  98. 0 0
      dist/workflowengine-workflowengine.js.map

+ 3 - 2
apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue

@@ -238,6 +238,7 @@ export default {
 		background-color: var(--color-main-background);
 		border-radius: 8px;
 		box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
+		border: 1px solid var(--color-border);
 		padding: 4px 0;
 		z-index: 1;
 
@@ -256,11 +257,11 @@ export default {
 			text-align: left;
 
 			&:hover {
-				background-color: #f2f2f2;
+				background-color: var(--color-background-dark);
 			}
 
 			&.selected {
-				background-color: #f0f0f0;
+				background-color: var(--color-background-dark);
 			}
 		}
 	}

+ 27 - 30
apps/files_sharing/src/views/SharingDetailsTab.vue

@@ -36,7 +36,13 @@
 					type="radio"
 					button-variant-grouped="vertical"
 					@update:checked="toggleCustomPermissions">
-					{{ t('files_sharing', 'Allow upload and editing') }}
+					<template v-if="allowsFileDrop">
+						{{ t('files_sharing', 'Allow upload and editing') }}
+					</template>
+					<template v-else>
+						{{ t('files_sharing', 'Allow editing') }}
+					</template>
+
 					<template #icon>
 						<EditIcon :size="20" />
 					</template>
@@ -132,6 +138,9 @@
 					@update:checked="onPasswordProtectedByTalkChange">
 					{{ t('file_sharing', 'Video verification') }}
 				</NcCheckboxRadioSwitch>
+				<NcCheckboxRadioSwitch v-if="!isPublicShare" :disabled="!canSetDownload" :checked.sync="canDownload">
+					{{ t('file_sharing', 'Allow download') }}
+				</NcCheckboxRadioSwitch>
 				<NcCheckboxRadioSwitch :checked.sync="writeNoteToRecipientIsChecked">
 					{{ t('file_sharing', 'Note to recipient') }}
 				</NcCheckboxRadioSwitch>
@@ -145,7 +154,8 @@
 					{{ t('file_sharing', 'Custom permissions') }}
 				</NcCheckboxRadioSwitch>
 				<section v-if="setCustomPermissions" class="custom-permissions-group">
-					<NcCheckboxRadioSwitch :disabled="!allowsFileDrop && share.type === SHARE_TYPES.SHARE_TYPE_LINK" :checked.sync="hasRead">
+					<NcCheckboxRadioSwitch :disabled="!allowsFileDrop && share.type === SHARE_TYPES.SHARE_TYPE_LINK"
+						:checked.sync="hasRead">
 						{{ t('file_sharing', 'Read') }}
 					</NcCheckboxRadioSwitch>
 					<NcCheckboxRadioSwitch v-if="isFolder" :disabled="!canSetCreate" :checked.sync="canCreate">
@@ -154,12 +164,11 @@
 					<NcCheckboxRadioSwitch :disabled="!canSetEdit" :checked.sync="canEdit">
 						{{ t('file_sharing', 'Update') }}
 					</NcCheckboxRadioSwitch>
-					<NcCheckboxRadioSwitch v-if="config.isResharingAllowed && share.type !== SHARE_TYPES.SHARE_TYPE_LINK" :disabled="!canSetReshare" :checked.sync="canReshare">
+					<NcCheckboxRadioSwitch v-if="config.isResharingAllowed && share.type !== SHARE_TYPES.SHARE_TYPE_LINK"
+						:disabled="!canSetReshare"
+						:checked.sync="canReshare">
 						{{ t('file_sharing', 'Share') }}
 					</NcCheckboxRadioSwitch>
-					<NcCheckboxRadioSwitch v-if="!isPublicShare" :disabled="!canSetDownload" :checked.sync="canDownload">
-						{{ t('file_sharing', 'Download') }}
-					</NcCheckboxRadioSwitch>
 					<NcCheckboxRadioSwitch :disabled="!canSetDelete" :checked.sync="canDelete">
 						{{ t('file_sharing', 'Delete') }}
 					</NcCheckboxRadioSwitch>
@@ -542,7 +551,7 @@ export default {
 			return this.share.newPassword !== undefined
 		},
 		passwordExpirationTime() {
-			if (this.share.passwordExpirationTime === null) {
+			if (!this.isValidShareAttribute(this.share.passwordExpirationTime)) {
 				return null
 			}
 
@@ -629,9 +638,6 @@ export default {
 			if (hasPermissions(this.share.permissions, ATOMIC_PERMISSIONS.SHARE)) {
 				perms.push('share')
 			}
-			if (this.share.hasDownloadPermission) {
-				perms.push('download')
-			}
 			const capitalizeFirstAndJoin = array => array.map((item, index) => index === 0 ? item[0].toUpperCase() + item.substring(1) : item).join(', ')
 
 			return capitalizeFirstAndJoin(perms)
@@ -676,7 +682,7 @@ export default {
 			}
 		},
 		expandCustomPermissions() {
-			if (!this.advancedSectionAccordionExpanded)	{
+			if (!this.advancedSectionAccordionExpanded) {
 				this.advancedSectionAccordionExpanded = true
 			}
 			this.toggleCustomPermissions()
@@ -687,34 +693,24 @@ export default {
 			this.setCustomPermissions = isCustomPermissions
 		},
 		async initializeAttributes() {
-			let hasAdvancedAttributes = false
 
 			if (this.isNewShare) {
 				if (this.isPasswordEnforced && this.isPublicShare) {
 					this.share.newPassword = await GeneratePassword()
 					this.advancedSectionAccordionExpanded = true
 				}
+				if (this.hasExpirationDate) {
+					this.share.expireDate = this.defaultExpiryDate
+					this.advancedSectionAccordionExpanded = true
+				}
 				return
 			}
 
-			if (this.isValidShareAttribute(this.share.note)) {
-				this.writeNoteToRecipientIsChecked = true
-				hasAdvancedAttributes = true
-			}
-
-			if (this.isValidShareAttribute(this.share.password)) {
-				hasAdvancedAttributes = true
-			}
-
-			if (this.isValidShareAttribute(this.share.expireDate)) {
-				hasAdvancedAttributes = true
-			}
-
-			if (this.isValidShareAttribute(this.share.label)) {
-				hasAdvancedAttributes = true
-			}
-
-			if (hasAdvancedAttributes) {
+			if (
+				this.isValidShareAttribute(this.share.password)
+				|| this.isValidShareAttribute(this.share.expireDate)
+				|| this.isValidShareAttribute(this.share.label)
+			) {
 				this.advancedSectionAccordionExpanded = true
 			}
 
@@ -1031,6 +1027,7 @@ export default {
 		flex-direction: column;
 		justify-content: space-between;
 		align-items: flex-start;
+		background: linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--color-main-background));
 
 		.button-group {
 			display: flex;

File diff suppressed because it is too large
+ 0 - 0
dist/3609-3609.js


File diff suppressed because it is too large
+ 0 - 0
dist/3609-3609.js.map


File diff suppressed because it is too large
+ 0 - 1
dist/485-485.js


File diff suppressed because it is too large
+ 0 - 0
dist/485-485.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/50-50.js


File diff suppressed because it is too large
+ 0 - 0
dist/50-50.js.map


File diff suppressed because it is too large
+ 1 - 0
dist/5329-5329.js


+ 0 - 0
dist/485-485.js.LICENSE.txt → dist/5329-5329.js.LICENSE.txt


File diff suppressed because it is too large
+ 0 - 0
dist/5329-5329.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/5912-5912.js


File diff suppressed because it is too large
+ 0 - 0
dist/5912-5912.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/6678-6678.js


File diff suppressed because it is too large
+ 0 - 0
dist/6678-6678.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/6870-6870.js


File diff suppressed because it is too large
+ 0 - 0
dist/6870-6870.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/7816-7816.js


File diff suppressed because it is too large
+ 0 - 0
dist/7816-7816.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/comments-comments-app.js


File diff suppressed because it is too large
+ 0 - 0
dist/comments-comments-app.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/comments-init.js


File diff suppressed because it is too large
+ 0 - 0
dist/comments-init.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/core-common.js


+ 16 - 2
dist/core-common.js.LICENSE.txt

@@ -5,6 +5,17 @@
  * @license  MIT
  */
 
+/*!
+ * Sizzle CSS Selector Engine v2.3.10
+ * https://sizzlejs.com/
+ *
+ * Copyright JS Foundation and other contributors
+ * Released under the MIT license
+ * https://js.foundation/
+ *
+ * Date: 2023-02-14
+ */
+
 /*!
  * The buffer module from node.js, for the browser.
  *
@@ -42,14 +53,17 @@
  */
 
 /*!
- * jQuery JavaScript Library v3.7.1
+ * jQuery JavaScript Library v3.6.4
  * https://jquery.com/
  *
+ * Includes Sizzle.js
+ * https://sizzlejs.com/
+ *
  * Copyright OpenJS Foundation and other contributors
  * Released under the MIT license
  * https://jquery.org/license
  *
- * Date: 2023-08-28T13:37Z
+ * Date: 2023-03-08T15:28Z
  */
 
 /*!

File diff suppressed because it is too large
+ 0 - 0
dist/core-common.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/core-login.js


File diff suppressed because it is too large
+ 0 - 0
dist/core-login.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/core-main.js


File diff suppressed because it is too large
+ 0 - 0
dist/core-main.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/core-profile.js


File diff suppressed because it is too large
+ 0 - 0
dist/core-profile.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/core-unified-search.js


File diff suppressed because it is too large
+ 0 - 0
dist/core-unified-search.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/core-unsupported-browser-redirect.js


File diff suppressed because it is too large
+ 0 - 0
dist/core-unsupported-browser-redirect.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/core-unsupported-browser.js


File diff suppressed because it is too large
+ 0 - 0
dist/core-unsupported-browser.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/dav-settings-personal-availability.js


File diff suppressed because it is too large
+ 0 - 0
dist/dav-settings-personal-availability.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/federatedfilesharing-vue-settings-admin.js


File diff suppressed because it is too large
+ 0 - 0
dist/federatedfilesharing-vue-settings-admin.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/federatedfilesharing-vue-settings-personal.js


File diff suppressed because it is too large
+ 0 - 0
dist/federatedfilesharing-vue-settings-personal.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/files-init.js


File diff suppressed because it is too large
+ 0 - 0
dist/files-init.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/files-main.js


File diff suppressed because it is too large
+ 0 - 0
dist/files-main.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/files-personal-settings.js


File diff suppressed because it is too large
+ 0 - 0
dist/files-personal-settings.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/files-reference-files.js


File diff suppressed because it is too large
+ 0 - 0
dist/files-reference-files.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/files-sidebar.js


File diff suppressed because it is too large
+ 0 - 0
dist/files-sidebar.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/files_external-init.js


File diff suppressed because it is too large
+ 0 - 0
dist/files_external-init.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/files_reminders-main.js


File diff suppressed because it is too large
+ 0 - 0
dist/files_reminders-main.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/files_sharing-files_sharing_tab.js


File diff suppressed because it is too large
+ 0 - 0
dist/files_sharing-files_sharing_tab.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/files_sharing-init.js


File diff suppressed because it is too large
+ 0 - 0
dist/files_sharing-init.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/files_sharing-personal-settings.js


File diff suppressed because it is too large
+ 0 - 0
dist/files_sharing-personal-settings.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/files_trashbin-main.js


File diff suppressed because it is too large
+ 0 - 0
dist/files_trashbin-main.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/files_versions-files_versions.js


File diff suppressed because it is too large
+ 0 - 0
dist/files_versions-files_versions.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/settings-apps-view-7418.js


File diff suppressed because it is too large
+ 0 - 0
dist/settings-apps-view-7418.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/settings-vue-settings-admin-basic-settings.js


File diff suppressed because it is too large
+ 0 - 0
dist/settings-vue-settings-admin-basic-settings.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/settings-vue-settings-admin-delegation.js


File diff suppressed because it is too large
+ 0 - 0
dist/settings-vue-settings-admin-delegation.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/settings-vue-settings-admin-security.js


File diff suppressed because it is too large
+ 0 - 0
dist/settings-vue-settings-admin-security.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/settings-vue-settings-apps-users-management.js


File diff suppressed because it is too large
+ 0 - 0
dist/settings-vue-settings-apps-users-management.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/settings-vue-settings-personal-info.js


File diff suppressed because it is too large
+ 0 - 0
dist/settings-vue-settings-personal-info.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/settings-vue-settings-personal-password.js


File diff suppressed because it is too large
+ 0 - 0
dist/settings-vue-settings-personal-password.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/settings-vue-settings-personal-security.js


File diff suppressed because it is too large
+ 0 - 0
dist/settings-vue-settings-personal-security.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/sharebymail-vue-settings-admin-sharebymail.js


File diff suppressed because it is too large
+ 0 - 0
dist/sharebymail-vue-settings-admin-sharebymail.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/systemtags-init.js


File diff suppressed because it is too large
+ 0 - 0
dist/systemtags-init.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/theming-personal-theming.js


File diff suppressed because it is too large
+ 0 - 0
dist/theming-personal-theming.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/updatenotification-updatenotification.js


File diff suppressed because it is too large
+ 0 - 0
dist/updatenotification-updatenotification.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/user_status-menu.js


File diff suppressed because it is too large
+ 0 - 0
dist/user_status-menu.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/weather_status-weather-status.js


File diff suppressed because it is too large
+ 0 - 0
dist/weather_status-weather-status.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/workflowengine-workflowengine.js


File diff suppressed because it is too large
+ 0 - 0
dist/workflowengine-workflowengine.js.map


Some files were not shown because too many files changed in this diff