This commit is contained in:
Markos Gogoulos
2026-03-15 17:52:47 +02:00
parent 875f5f90d1
commit a09c5904e1
14 changed files with 59 additions and 51 deletions

View File

@@ -1 +1 @@
VERSION = "8.92" VERSION = "8.93"

View File

@@ -649,11 +649,17 @@ class MediaBulkUserActions(APIView):
return Response({"detail": "No matching categories found or access denied"}, status=status.HTTP_400_BAD_REQUEST) return Response({"detail": "No matching categories found or access denied"}, status=status.HTTP_400_BAD_REQUEST)
added_count = 0 added_count = 0
tag = None
for category in categories: for category in categories:
if category.is_lms_course:
tag, _ = Tag.objects.get_or_create(title=category.title[:100])
for m in media: for m in media:
if not m.category.filter(uid=category.uid).exists(): if not m.category.filter(uid=category.uid).exists():
m.category.add(category) m.category.add(category)
added_count += 1 added_count += 1
if tag:
m.tags.add(tag)
return Response({"detail": f"Added {added_count} media items to {categories.count()} categories"}) return Response({"detail": f"Added {added_count} media items to {categories.count()} categories"})

View File

@@ -1,6 +1,7 @@
import React from 'react'; import React from 'react';
import './BulkActionsDropdown.scss'; import './BulkActionsDropdown.scss';
import { translateString } from '../utils/helpers/'; import { translateString } from '../utils/helpers/';
import { inEmbeddedApp } from '../utils/helpers/embeddedApp';
interface BulkActionsDropdownProps { interface BulkActionsDropdownProps {
selectedCount: number; selectedCount: number;
@@ -18,14 +19,17 @@ interface BulkActionGroup {
actions: BulkAction[]; actions: BulkAction[];
} }
const BULK_ACTION_GROUPS: BulkActionGroup[] = [ export const BulkActionsDropdown: React.FC<BulkActionsDropdownProps> = ({ selectedCount, onActionSelect }) => {
const isLmsMode = inEmbeddedApp();
const BULK_ACTION_GROUPS: BulkActionGroup[] = [
{ {
label: translateString('Sharing'), label: translateString('Sharing'),
actions: [ actions: [
{ value: 'add-remove-coviewers', label: translateString('Share with Co-Viewers'), enabled: true }, { value: 'add-remove-coviewers', label: translateString('Share with Co-Viewers'), enabled: true },
{ value: 'add-remove-coeditors', label: translateString('Share with Co-Editors'), enabled: true }, { value: 'add-remove-coeditors', label: translateString('Share with Co-Editors'), enabled: true },
{ value: 'add-remove-coowners', label: translateString('Share with Co-Owners'), enabled: true }, { value: 'add-remove-coowners', label: translateString('Share with Co-Owners'), enabled: true },
{ value: 'add-remove-category', label: translateString('Share with Course Members'), enabled: true }, { value: 'add-remove-category', label: isLmsMode ? translateString('Share with Course Members') : translateString('Add / Remove from Categories'), enabled: true },
], ],
}, },
{ {
@@ -54,9 +58,7 @@ const BULK_ACTION_GROUPS: BulkActionGroup[] = [
{ value: 'delete-media', label: translateString('Delete Media'), enabled: true }, { value: 'delete-media', label: translateString('Delete Media'), enabled: true },
], ],
}, },
]; ];
export const BulkActionsDropdown: React.FC<BulkActionsDropdownProps> = ({ selectedCount, onActionSelect }) => {
const noSelection = selectedCount === 0; const noSelection = selectedCount === 0;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long