Compare commits

..

17 Commits

Author SHA1 Message Date
Markos Gogoulos
930b80079e fix 2025-10-18 19:15:59 +03:00
Markos Gogoulos
48fe482897 fix 2025-10-18 19:15:09 +03:00
Markos Gogoulos
28c1d4ee44 fix 2025-10-18 19:00:51 +03:00
Markos Gogoulos
61925bbd6e fix 2025-10-18 18:43:20 +03:00
Markos Gogoulos
2ea45bfd78 fix 2025-10-18 18:37:04 +03:00
Markos Gogoulos
004584de03 fix 2025-10-18 18:29:10 +03:00
Markos Gogoulos
9372398ab5 fix 2025-10-18 18:19:52 +03:00
Markos Gogoulos
b3d9776985 fix 2025-10-18 17:31:39 +03:00
Markos Gogoulos
0f6d965f54 fix 2025-10-18 17:02:46 +03:00
Markos Gogoulos
17b8c60450 fix 2025-10-18 16:53:09 +03:00
Markos Gogoulos
cd173fc38e fix 2025-10-18 16:50:55 +03:00
Markos Gogoulos
c39e8e26dd fix 2025-10-18 16:36:18 +03:00
Markos Gogoulos
a40232e43b amdin 2025-10-18 16:36:17 +03:00
Markos Gogoulos
870274e676 fix 2025-10-18 16:29:42 +03:00
Markos Gogoulos
d876084e5c fixes 2025-10-18 15:41:18 +03:00
Markos Gogoulos
f48166b427 fixes 2025-10-18 15:07:41 +03:00
Markos Gogoulos
1f4ed59127 execute bulk actions on user media
wtv
2025-10-16 15:45:06 +03:00
6 changed files with 46 additions and 36 deletions

View File

@ -1 +1 @@
VERSION = "6.8.210"
VERSION = "6.9.103"

View File

@ -658,10 +658,10 @@ def change_media_owner(media_id, new_user):
return None
# Change the owner
# previous_user = media.user
previous_user = media.user
# keep original user as owner by adding a models.MediaPermission entry with permission=owner
# if not models.MediaPermission.objects.filter(media=media, user=previous_user, permission="owner").exists():
# models.MediaPermission.objects.create(media=media, user=previous_user, owner_user=new_user, permission="owner")
if not models.MediaPermission.objects.filter(media=media, user=previous_user, permission="owner").exists():
models.MediaPermission.objects.create(media=media, user=previous_user, owner_user=new_user, permission="owner")
media.user = new_user
media.save(update_fields=["user"])

View File

@ -341,19 +341,4 @@ body.dark_theme {
--user-action-form-inner-input-border-color: #303030;
--user-action-form-inner-input-text-color: rgba(255, 255, 255, 0.88);
--user-action-form-inner-input-bg-color: #121212;
/* ################################################## */
.media-edit-nav {
background-color: #1a1a1a !important;
a {
color: #cccccc !important;
&[style*="font-weight: bold"] {
color: #ffffff !important;
border-bottom-color: #ffffff !important;
}
}
}
}

View File

@ -24,10 +24,35 @@ export function MediaItem(props) {
const finalClassname = containerClassname +
(props.showSelection ? ' with-selection' : '') +
(props.isSelected ? ' selected' : '');
(props.isSelected ? ' selected' : '') +
(props.hasAnySelection ? ' has-any-selection' : '');
const handleItemClick = (e) => {
// Only handle clicks when selection mode is active AND at least one item is selected
if (props.showSelection && props.hasAnySelection) {
// Check if click was on the checkbox (already handled)
if (e.target.type === 'checkbox' || e.target.closest('.item-selection-checkbox')) {
return;
}
// Check if click was on the edit icon or publish icon
if (e.target.closest('.item-edit-icon') || e.target.closest('.item-view-icon')) {
return;
}
// Prevent default link behavior
e.preventDefault();
e.stopPropagation();
// Toggle the checkbox
if (props.onCheckboxChange) {
props.onCheckboxChange({ target: { checked: !props.isSelected } });
}
}
};
return (
<div className={finalClassname}>
<div className={finalClassname} onClick={handleItemClick}>
<div className="item-content">
{props.showSelection && (
<div className="item-selection-checkbox">

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long