This commit is contained in:
Markos Gogoulos
2026-05-02 16:45:41 +03:00
parent f44b58580c
commit 41d3e8c92b
6 changed files with 18 additions and 17 deletions
-1
View File
@@ -238,7 +238,6 @@ class MediaPublishForm(forms.ModelForm):
) )
elif not shared: elif not shared:
self.instance.permissions.all().delete() self.instance.permissions.all().delete()
self.instance.embed_courses.all().delete()
rbac_cats = self.instance.category.filter(is_rbac_category=True) rbac_cats = self.instance.category.filter(is_rbac_category=True)
self.instance.category.remove(*rbac_cats) self.instance.category.remove(*rbac_cats)
+2 -10
View File
@@ -514,7 +514,6 @@ class MediaBulkUserActions(APIView):
if remove_sharing: if remove_sharing:
MediaPermission.objects.filter(media__in=media).delete() MediaPermission.objects.filter(media__in=media).delete()
EmbedMediaCourse.objects.filter(media__in=media).delete()
for m in media: for m in media:
rbac_cats = m.category.filter(is_rbac_category=True) rbac_cats = m.category.filter(is_rbac_category=True)
if rbac_cats.exists(): if rbac_cats.exists():
@@ -695,18 +694,14 @@ class MediaBulkUserActions(APIView):
return Response({"detail": "No matching categories found"}, status=status.HTTP_400_BAD_REQUEST) return Response({"detail": "No matching categories found"}, status=status.HTTP_400_BAD_REQUEST)
removed_count = 0 removed_count = 0
tag = None
for category in categories: for category in categories:
if category.is_lms_course:
tag = Tag.objects.filter(title=category.title[:100]).first()
for m in media: for m in media:
if m.category.filter(uid=category.uid).exists(): if m.category.filter(uid=category.uid).exists():
m.category.remove(category) m.category.remove(category)
removed_count += 1 removed_count += 1
if tag:
m.tags.remove(tag)
EmbedMediaCourse.objects.filter(media=m, category=category).delete() EmbedMediaCourse.objects.filter(media=m, category=category).delete()
if not m.category.filter(is_rbac_category=True).exists() and not m.permissions.exclude(user=m.user).exists():
m.permissions.filter(user=m.user).delete()
return Response({"detail": f"Removed {removed_count} media items from {categories.count()} categories"}) return Response({"detail": f"Removed {removed_count} media items from {categories.count()} categories"})
@@ -785,7 +780,6 @@ class MediaBulkUserActions(APIView):
if remove_permissions: if remove_permissions:
MediaPermission.objects.filter(media__in=selected_media, user__in=group_users).exclude(user=F('media__user')).delete() MediaPermission.objects.filter(media__in=selected_media, user__in=group_users).exclude(user=F('media__user')).delete()
MediaPermission.objects.filter(media_id__in=selected_embedded_media_ids).exclude(user=F('media__user')).delete() MediaPermission.objects.filter(media_id__in=selected_embedded_media_ids).exclude(user=F('media__user')).delete()
selected_embedded.delete()
if remove_comments: if remove_comments:
Comment.objects.filter(media__in=selected_media).delete() Comment.objects.filter(media__in=selected_media).delete()
@@ -796,7 +790,6 @@ class MediaBulkUserActions(APIView):
if remove_permissions: if remove_permissions:
MediaPermission.objects.filter(media__in=other_course_media, user__in=group_users).exclude(user=F('media__user')).delete() MediaPermission.objects.filter(media__in=other_course_media, user__in=group_users).exclude(user=F('media__user')).delete()
MediaPermission.objects.filter(media_id__in=other_embedded_media_ids).exclude(user=F('media__user')).delete() MediaPermission.objects.filter(media_id__in=other_embedded_media_ids).exclude(user=F('media__user')).delete()
other_embedded.delete()
if remove_comments: if remove_comments:
Comment.objects.filter(media__in=other_course_media).delete() Comment.objects.filter(media__in=other_course_media).delete()
for m in other_course_media: for m in other_course_media:
@@ -808,7 +801,6 @@ class MediaBulkUserActions(APIView):
if remove_permissions: if remove_permissions:
MediaPermission.objects.filter(media__in=all_course_media, user__in=group_users).exclude(user=F('media__user')).delete() MediaPermission.objects.filter(media__in=all_course_media, user__in=group_users).exclude(user=F('media__user')).delete()
MediaPermission.objects.filter(media_id__in=embedded_media_ids).exclude(user=F('media__user')).delete() MediaPermission.objects.filter(media_id__in=embedded_media_ids).exclude(user=F('media__user')).delete()
embed_qs.delete()
if remove_comments: if remove_comments:
Comment.objects.filter(media__in=all_course_media).delete() Comment.objects.filter(media__in=all_course_media).delete()
if embedded_media_ids: if embedded_media_ids:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -76,8 +76,18 @@ const setupIframeOverlays = (editor, handleIframeAction) => {
const iframes = editorBody.querySelectorAll('iframe'); const iframes = editorBody.querySelectorAll('iframe');
iframes.forEach((iframe) => { iframes.forEach((iframe) => {
// Skip if already wrapped // If already wrapped, ensure contenteditable and EDIT button are present
if (iframe.parentElement?.classList.contains('tiny-mediacms-iframe-wrapper')) { if (iframe.parentElement?.classList.contains('tiny-mediacms-iframe-wrapper')) {
const existingWrapper = iframe.parentElement;
existingWrapper.setAttribute('contenteditable', 'false');
if (!existingWrapper.querySelector('.tiny-mediacms-edit-btn')) {
const editBtn = editor.getDoc().createElement('button');
editBtn.className = 'tiny-mediacms-edit-btn';
editBtn.setAttribute('type', 'button');
editBtn.setAttribute('title', 'Edit media embed options');
editBtn.textContent = 'EDIT';
existingWrapper.appendChild(editBtn);
}
return; return;
} }
@@ -130,14 +140,14 @@ const setupIframeOverlays = (editor, handleIframeAction) => {
position: relative; position: relative;
line-height: 0; line-height: 0;
vertical-align: top; vertical-align: top;
margin-top: 50px; margin-top: 24px;
} }
.tiny-mediacms-iframe-wrapper iframe { .tiny-mediacms-iframe-wrapper iframe {
display: block; display: block;
} }
.tiny-mediacms-edit-btn { .tiny-mediacms-edit-btn {
position: absolute; position: absolute;
top: -44px; top: -20px;
left: 50%; left: 50%;
transform: translateX(-50%); transform: translateX(-50%);
background: rgba(0, 0, 0, 0.7); background: rgba(0, 0, 0, 0.7);
@@ -28,4 +28,4 @@
"aspectRatioClass": "ratio-16-9" "aspectRatioClass": "ratio-16-9"
} }
}} }}
<div class="tiny-mediacms-iframe-wrapper" style="max-width:{{maxWidth}}px;width:100%;margin:0 auto;padding:0;"><iframe src="{{src}}" width="{{maxWidth}}" height="{{height}}" style="width:100%;max-width:{{maxWidth}}px;height:auto;aspect-ratio:{{aspectRatioCSS}};display:block;margin:0 auto;border:0;" frameborder="0" allowfullscreen></iframe></div> <div class="tiny-mediacms-iframe-wrapper" contenteditable="false" style="max-width:{{maxWidth}}px;width:100%;margin:0 auto;padding:0;"><iframe src="{{src}}" width="{{maxWidth}}" height="{{height}}" style="width:100%;max-width:{{maxWidth}}px;height:auto;aspect-ratio:{{aspectRatioCSS}};display:block;margin:0 auto;border:0;" frameborder="0" allowfullscreen></iframe></div>