diff --git a/cms/version.py b/cms/version.py index 0981fedc..a263a9f2 100644 --- a/cms/version.py +++ b/cms/version.py @@ -1 +1 @@ -VERSION = "7.3.0" +VERSION = "7.991.0" diff --git a/files/views/media.py b/files/views/media.py index b36e02fd..5f1531b9 100644 --- a/files/views/media.py +++ b/files/views/media.py @@ -168,7 +168,7 @@ class MediaList(APIView): if not self.request.user.is_authenticated: media = Media.objects.none() else: - media = Media.objects.filter(permissions__owner_user=self.request.user).prefetch_related("user", "tags") + media = Media.objects.filter(permissions__owner_user=self.request.user).prefetch_related("user", "tags").distinct() elif show_param == "shared_with_me": if not self.request.user.is_authenticated: media = Media.objects.none() diff --git a/frontend/src/static/js/pages/ProfileMediaPage.js b/frontend/src/static/js/pages/ProfileMediaPage.js index a3110d6c..798c83fc 100755 --- a/frontend/src/static/js/pages/ProfileMediaPage.js +++ b/frontend/src/static/js/pages/ProfileMediaPage.js @@ -23,24 +23,6 @@ import { Page } from './_Page'; import '../components/profile-page/ProfilePage.scss'; -function EmptyChannelMedia(props) { - return ( - - {(links) => ( -
-
{translateString('Welcome')} {props.name}
-
- {translateString('Start uploading media and sharing your work. Media that you upload will show up here.')} -
- - {translateString('UPLOAD MEDIA')} - -
- )} -
- ); -} - export class ProfileMediaPage extends Page { constructor(props, pageSlug) { super(props, 'string' === typeof pageSlug ? pageSlug : 'author-home'); @@ -940,9 +922,6 @@ export class ProfileMediaPage extends Page { onItemsUpdate={this.handleItemsUpdate} onResponseDataLoaded={this.onResponseDataLoaded} /> - {isMediaAuthor && 0 === this.state.channelMediaCount && !this.state.query ? ( - - ) : null} ) : null, diff --git a/frontend/src/static/js/pages/ProfileSharedByMePage.js b/frontend/src/static/js/pages/ProfileSharedByMePage.js index 4b086508..6791694f 100644 --- a/frontend/src/static/js/pages/ProfileSharedByMePage.js +++ b/frontend/src/static/js/pages/ProfileSharedByMePage.js @@ -10,7 +10,9 @@ import { LazyLoadItemListAsync } from '../components/item-list/LazyLoadItemListA import { ProfileMediaFilters } from '../components/search-filters/ProfileMediaFilters'; import { ProfileMediaTags } from '../components/search-filters/ProfileMediaTags'; import { ProfileMediaSorting } from '../components/search-filters/ProfileMediaSorting'; +import { BulkActionsModals } from '../components/BulkActionsModals'; import { translateString } from '../utils/helpers'; +import { withBulkActions } from '../utils/hoc/withBulkActions'; import { Page } from './_Page'; @@ -31,7 +33,7 @@ function EmptySharedByMe(props) { ); } -export class ProfileSharedByMePage extends Page { +class ProfileSharedByMePage extends Page { constructor(props, pageSlug) { super(props, 'string' === typeof pageSlug ? pageSlug : 'author-shared-by-me'); @@ -320,14 +322,20 @@ export class ProfileSharedByMePage extends Page { this.state.author ? ( ) : null, + this.state.author && isMediaAuthor ? ( + + ) : null, ]; } } ProfileSharedByMePage.propTypes = { title: PropTypes.string.isRequired, + bulkActions: PropTypes.object.isRequired, }; ProfileSharedByMePage.defaultProps = { title: 'Shared by me', }; + +// Wrap with HOC and export as named export for compatibility +const WrappedProfileSharedByMePage = withBulkActions(ProfileSharedByMePage); + +// Export both the wrapped component as named export (for build system) and default export +export { WrappedProfileSharedByMePage as ProfileSharedByMePage }; +export default WrappedProfileSharedByMePage; diff --git a/frontend/src/static/js/pages/ProfileSharedWithMePage.js b/frontend/src/static/js/pages/ProfileSharedWithMePage.js index b304150f..9830172a 100644 --- a/frontend/src/static/js/pages/ProfileSharedWithMePage.js +++ b/frontend/src/static/js/pages/ProfileSharedWithMePage.js @@ -320,7 +320,7 @@ export class ProfileSharedWithMePage extends Page { this.state.author ? (