حذف عدد كبير من المساهمات واحدة تلو الأخرى مهمة مرهقة لأي مدير أو مشرف، خاصة عند تنظيف المواضيع من الردود المكررة أو المخالفة. هذا الكود يضيف زر "حذف متعدد" إلى المواضيع والردود، ويعمل بنفس فكرة زر "اقتباس متعدد" المعروف، حيث تحدد المساهمات المطلوبة ثم تحذفها دفعة واحدة. ويتبع الزر نفس صلاحيات زر الحذف العادي، لذلك يستطيع الأعضاء أيضًا استخدامه لحذف عدة مشاركات من مساهماتهم إذا كانت لديهم صلاحية حذف مشاركاتهم الخاصة. والكود يعمل على نسخ phpBB2 وphpBB3 وPunBB وInvision وModernBB وAwesomeBB.
يمكنك تغيير التصميم كما تشاء ليناسب منتداك.
كود JavaScript
العنوان: كما تريد
الصلاحيات: المدير - المشرفون - الأعضاء
المكان: في المواضيع
ثم اضغط على زر قدم.
أداة تختصر دقائق طويلة من العمل الإداري إلى ثوانٍ معدودة، وتجعل تنظيم المواضيع أسهل على الإدارة والأعضاء معًا. كل التقدير لصاحب الكود على هذه الإضافة التي طوّرها بالاستعانة بالذكاء الاصطناعي.
صاحب الكود: كونان2000
مثال على الكود
شرح تركيب الكود
كود CSSCSS:
.btn-select-delete:hover {color: #666666; }
.batch-delete-highlight { background-color: #ffe6e6 !important; }
#batch-delete-container { position: fixed; bottom: -100px; left: 50%; transform: translateX(-50%); z-index: 999; margin-bottom: 11px; padding: 12px 25px; background: #cd5c5c; border: 1px solid #000000; border-radius: 20px; }
#batch-delete-container.show-bar { bottom: 0; }
#run-batch-delete { cursor: pointer; font-weight: bold; box-shadow: none; padding: 0; margin: 0; font-size: 20px; }
#run-batch-delete:disabled { opacity: 0.6; cursor: not-allowed; }
#custom-confirm-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); z-index: 999; display: flex; align-items: center; justify-content: center; }
#custom-confirm-box { background: #fff;padding: 25px 35px;border-radius: 10px; box-shadow: 0 4px 20px rgba(0,0,0,0.25);text-align: center;max-width: 420px;width: 90%;font-family: inherit;}
#custom-confirm-box p {margin-bottom: 20px;font-size: 16px; color: #333;line-height: 1.5;}
#custom-confirm-box .confirm-btns button {padding: 8px 22px;margin: 0 5px;border: none;border-radius: 5px; cursor: pointer;font-weight: bold;font-size: 14px;}
#confirm-yes {background: #dc3545;}
#confirm-no {background: #2196F3;}
#confirm-ok {background: #28a745;}
#confirm-ok,#confirm-no,#confirm-yes {color: #fff;padding: 5px 10px;margin: 5px;font-size: 20px;font-weight: bold;border-radius: 10px; }
.center-loading-spinner {display: block;width: 40px;height: 40px;border: 4px solid rgba(220, 53, 69, 0.2);border-radius: 50%;border-top-color: #dc3545;animation: spin 0.8s ease-in-out infinite;margin: 15px auto;}
@keyframes spin {to { transform: rotate(360deg); }}
.btn-select-delete.marked-for-delete {
color: #ff4a4a !important;
background: #000000;
}
li.btn-select-delete {
font-size: 20px;
color: #ffffff;
border-radius: 33px;
cursor: pointer;
padding: 2px;
margin: 2px;
list-style: none;
display: inline-block;
}
.btn-select-delete {
width: fit-content;
background: #F44336;
}يمكنك تغيير التصميم كما تشاء ليناسب منتداك.
كود JavaScript
العنوان: كما تريد
الصلاحيات: المدير - المشرفون - الأعضاء
المكان: في المواضيع
JavaScript:
$(document).ready(function () {
$('head').append('<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">');
// البحث عن أزرار الحذف وإضافتها فقط إذا كانت مرئية للمستخدم الحالي
$('.btn-delete, .i_icon_delete').each(function () {
var $targetElement = $(this);
// إذا كان زر الحذف الأصلي مخفياً عن المستخدم (مثل مساهمات الأعضاء الآخرين)، تخطاه
if (!$targetElement.is(':visible')) {
return;
}
if ($targetElement.prev('.btn-select-delete').length || $targetElement.next('.btn-select-delete').length) {
return;
}
var $selectButton = $(
'<li class="btn-select-delete" title="حذف متعدد"><i class="material-symbols-outlined">delete</i></li>'
);
$targetElement.before($selectButton);
});
if ($('#batch-delete-container').length === 0) {
var $batchAction = $(
'<div id="batch-delete-container">' +
'<button id="run-batch-delete" class="btn btn-default btn-red">' +
'حذف المشاركات المحددة (<span id="selected-count">0</span>)' +
'</button>' +
'</div>'
);
$('body').append($batchAction);
}
$(document).on('click', '.btn-select-delete', function (e) {
e.preventDefault();
e.stopPropagation();
var $selectButton = $(this);
$selectButton.toggleClass('marked-for-delete');
var $item = $selectButton.closest('.post, tr, .block-content');
if (!$item.length) {
$item = $selectButton.parent();
}
if ($selectButton.hasClass('marked-for-delete')) {
$item.addClass('batch-delete-highlight');
} else {
$item.removeClass('batch-delete-highlight');
}
updateCount();
});
function updateCount() {
var count = $('.btn-select-delete.marked-for-delete').length;
$('#selected-count').text(count);
$('#run-batch-delete').prop('disabled', count === 0);
var $container = $('#batch-delete-container');
if (count > 0) {
$container.addClass('show-bar');
} else {
$container.removeClass('show-bar');
}
}
$(document).on('click', '#run-batch-delete', function () {
var $markedItems = $('.btn-select-delete.marked-for-delete');
if ($markedItems.length === 0) {
alert('الرجاء تحديد مشاركة واحدة على الأقل للحذف.');
return;
}
var count = $markedItems.length;
$('#custom-confirm-overlay').remove();
var confirmModal = $(
'<div id="custom-confirm-overlay">' +
'<div id="custom-confirm-box">' +
'<p>هل أنت متأكد من رغبتك في حذف <b>' + count + '</b> من المشاركات المحددة؟</p>' +
'<div class="confirm-btns">' +
'<button id="confirm-yes">نعم</button>' +
'<button id="confirm-no">إلغاء</button>' +
'</div>' +
'</div>' +
'</div>'
);
$('body').append(confirmModal);
});
$(document).on('click', '#confirm-no', function () {
$('#custom-confirm-overlay').remove();
});
$(document).on('click', '#confirm-yes', function () {
var $markedItems = $('.btn-select-delete.marked-for-delete');
var deleteButtons = [];
$markedItems.each(function () {
var $selectButton = $(this);
var $deleteButton = $selectButton.next('.btn-delete, .i_icon_delete');
if (!$deleteButton.length) {
$deleteButton = $selectButton.parent().find('.btn-delete, .i_icon_delete');
}
if ($deleteButton.length) {
deleteButtons.push($deleteButton);
}
});
if (deleteButtons.length === 0) {
$('#custom-confirm-overlay').remove();
alert('لم يتم العثور على أزرار الحذف.');
return;
}
$('#custom-confirm-box').html(
'<p id="progress-text">جاري حذف المشاركة... 1 من ' + deleteButtons.length + '...</p>' +
'<span class="center-loading-spinner"></span>'
);
$('#run-batch-delete').prop('disabled', true);
processFormDeletions(deleteButtons, 0);
});
function processFormDeletions(buttons, index) {
if (index >= buttons.length) {
$('#custom-confirm-box').html(
'<p style="color: #28a745; font-weight: bold; font-size: 17px;">تم حذف المشاركات المحددة بنجاح!</p>' +
'<div class="confirm-btns" style="margin-top: 20px;">' +
'<button id="confirm-ok">موافق</button>' +
'</div>'
);
return;
}
$('#progress-text').text('جاري حذف المشاركة... ' + (index + 1) + ' من ' + buttons.length + '...');
var $currentDeleteBtn = buttons[index];
var targetUrl = '';
if ($currentDeleteBtn.is('a')) {
targetUrl = $currentDeleteBtn.attr('href');
} else {
targetUrl = $currentDeleteBtn.find('a').attr('href') || $currentDeleteBtn.closest('a').attr('href');
}
if (!targetUrl) {
processFormDeletions(buttons, index + 1);
return;
}
$.get(targetUrl)
.done(function(htmlResponse) {
var $html = $(htmlResponse);
var $form = $html.find('form input[name="mode"][value="delete"]').closest('form');
if ($form.length === 0) {
$form = $html.find('form');
}
if ($form.length === 0) {
$form = $('form');
}
if ($form.length > 0) {
var formData = $form.serialize() + '&confirm=%D9%86%D8%B9%D9%85';
var formAction = $form.attr('action') || targetUrl;
$.post(formAction, formData)
.done(function() {
processFormDeletions(buttons, index + 1);
})
.fail(function() {
processFormDeletions(buttons, index + 1);
});
} else {
processFormDeletions(buttons, index + 1);
}
})
.fail(function() {
processFormDeletions(buttons, index + 1);
});
}
$(document).on('click', '#confirm-ok', function () {
location.reload();
});
updateCount();
});ثم اضغط على زر قدم.
أداة تختصر دقائق طويلة من العمل الإداري إلى ثوانٍ معدودة، وتجعل تنظيم المواضيع أسهل على الإدارة والأعضاء معًا. كل التقدير لصاحب الكود على هذه الإضافة التي طوّرها بالاستعانة بالذكاء الاصطناعي.
صاحب الكود: كونان2000