} preselectedPostIds
*/
const openEditGroupModal = (groupId = null, preselectedPostIds = []) => {
appendGroupModalLayout();
const modal = document.getElementById('ds9wa6kqc8');
const titleLbl = document.getElementById('group-modal-title-text');
const idInp = document.getElementById('onad6k1t7j');
const nameInp = document.getElementById('yywkx0ogsz');
const descInp = document.getElementById('tbzcy8uwaa');
const statusSelect = document.getElementById('bnhi6cbqml');
const tagsInp = document.getElementById('r6i2ogrga9');
const searchInput = document.getElementById('dabqzyo58x');
if (searchInput) searchInput.value = '';
if (groupId) {
const group = (state.postGroupsData || []).find(g => g.id === groupId);
if (group) {
idInp.value = group.id;
nameInp.value = group.name || '';
descInp.value = group.description || '';
statusSelect.value = group.status || 'active';
tagsInp.value = group.tags ? group.tags.join(', ') : '';
activeGroupSelectedPosts = new Set(group.postIds || []);
if (titleLbl) titleLbl.innerHTML = ` تعديل حزمة المنشورات: "${group.name}"`;
}
} else {
idInp.value = '';
nameInp.value = '';
descInp.value = '';
statusSelect.value = 'active';
tagsInp.value = '';
activeGroupSelectedPosts = new Set(preselectedPostIds || []);
if (titleLbl) titleLbl.innerHTML = ` إنشاء حزمة منشورات مخصصة جديدة`;
}
renderGroupPostPickerList(activeGroupSelectedPosts);
if (modal) modal.style.display = 'flex';
};
/**
* حفظ بيانات حزمة المنشورات في الذاكرة والتخزين المشفر
*/
const savePostGroupData = async () => {
const idVal = (document.getElementById('onad6k1t7j')?.value || '').trim();
const nameVal = (document.getElementById('yywkx0ogsz')?.value || '').trim();
const descVal = (document.getElementById('tbzcy8uwaa')?.value || '').trim();
const statusVal = document.getElementById('bnhi6cbqml')?.value || 'active';
const tagsVal = document.getElementById('r6i2ogrga9')?.value || '';
if (!nameVal) {
alert('يرجى كتابة اسم واضح ومميز للحزمة!');
return;
}
const selectedPostIds = Array.from(activeGroupSelectedPosts);
if (selectedPostIds.length === 0) {
alert('حدد منشوراً واحداً على الأقل من القائمة لإضافته للحزمة!');
return;
}
const tagsArray = tagsVal.split(',').map(s => s.trim().toLowerCase()).filter(s => s);
if (!Array.isArray(state.postGroupsData)) {
state.postGroupsData = [];
}
if (idVal) {
const group = state.postGroupsData.find(g => g.id === idVal);
if (group) {
group.name = nameVal;
group.description = descVal;
group.status = statusVal;
group.tags = tagsArray;
group.postIds = selectedPostIds;
group.updatedAt = new Date().toISOString();
}
} else {
const newGroupId = 'grp_' + Date.now() + '_' + Math.random().toString(36).substr(2, 4);
const newGroup = {
id: newGroupId,
name: nameVal,
description: descVal,
status: statusVal,
tags: tagsArray,
postIds: selectedPostIds,
createdAt: new Date().toISOString()
};
state.postGroupsData.unshift(newGroup);
}
if (global.FritreeStorage) {
await global.FritreeStorage.set('local_post_groups', state.postGroupsData);
}
if (global.FritreeRotationStore && typeof global.FritreeRotationStore.save === 'function') {
await global.FritreeRotationStore.save();
}
renderPostGroupsGrid();
const modal = document.getElementById('ds9wa6kqc8');
if (modal) modal.style.display = 'none';
if (typeof window.addLog === 'function') {
window.addLog(`تم بنجاح حفظ وتأمين حزمة المنشورات المخصصة "${nameVal}" وبداخلها [${selectedPostIds.length}] منشورات.`, 'success');
}
alert(`تم حفظ وتحديث حزمة المنشورات "${nameVal}" بنجاح!`);
};
/**
* رسم شبكة حزم المنشورات المخصصة
*/
const renderPostGroupsGrid = () => {
const container = document.getElementById('ol8f7kxcxu');
if (!container) return;
container.innerHTML = '';
const searchQuery = (document.getElementById('z1pixj1rxo')?.value || '').toLowerCase().trim();
const statusFilter = document.getElementById('ll0i3bsngj')?.value || 'all';
const filteredGroups = (state.postGroupsData || []).filter(g => {
const matchesSearch = !searchQuery ||
(g.name && g.name.toLowerCase().includes(searchQuery)) ||
(g.description && g.description.toLowerCase().includes(searchQuery)) ||
(g.tags && g.tags.some(t => t.toLowerCase().includes(searchQuery)));
let matchesStatus = true;
if (statusFilter === 'active') matchesStatus = g.status === 'active';
else if (statusFilter === 'inactive') matchesStatus = g.status === 'inactive';
return matchesSearch && matchesStatus;
});
if (filteredGroups.length === 0) {
container.innerHTML = `
لا توجد حزم منشورات مخصصة مطابقة حالياً
اضغط على زر "حزمة مخصصة جديدة" لتجميع المنشورات المحددة للتدوير.
`;
return;
}
// 1. عرض البطاقات (Cards View)
if (state.groupViewMode === 'cards') {
const grid = document.createElement('div');
grid.style.cssText = 'display: grid; grid-template-columns: repeat(auto-fill, minmax(clamp(260px, 25vw, 320px), 1fr)); gap: 12px; box-sizing: border-box;';
filteredGroups.forEach(group => {
const associatedPosts = (state.previousPostsData || []).filter(p => (group.postIds || []).includes(p.id));
const activePostsCount = associatedPosts.filter(p => p.status === 'active').length;
const card = document.createElement('div');
card.style.cssText = `
background: var(--bg-card);
border: 1px solid ${group.status === 'active' ? 'var(--purple-border)' : 'var(--border)'};
border-radius: var(--radius-lg);
padding: 14px;
display: flex;
flex-direction: column;
justify-content: space-between;
gap: 10px;
direction: rtl;
text-align: right;
position: relative;
box-shadow: var(--shadow-xs);
box-sizing: border-box;
`;
card.innerHTML = `
${group.name}
كود: ${group.id}
${group.description || 'لا يوجد وصف مخصص'}
${group.status === 'active' ? 'نشطة' : 'معطلة'}
المنشورات بالحزمة:
${(group.postIds || []).length.toLocaleString('en-US')} (${activePostsCount} نشط)
${associatedPosts.slice(0, 3).map(p => `
${p.title || 'منشور'}
`).join('')}
${associatedPosts.length > 3 ? `+${associatedPosts.length - 3} المزيد` : ''}
${new Date(group.createdAt || Date.now()).toLocaleDateString('en-US')}
`;
card.querySelector('.xq67gme26p').onclick = async () => {
group.status = group.status === 'active' ? 'inactive' : 'active';
if (global.FritreeStorage) {
await global.FritreeStorage.set('local_post_groups', state.postGroupsData);
}
renderPostGroupsGrid();
};
card.querySelector('.xb7cu30cd5').onclick = () => {
openEditGroupModal(group.id);
};
card.querySelector('.cvrh2lhgbj').onclick = async () => {
if (confirm(`هل أنت متأكد من حذف حزمة المنشورات "${group.name}"؟ (المنشورات نفسها لن تُحذف من الأرشيف).`)) {
state.postGroupsData = state.postGroupsData.filter(g => g.id !== group.id);
if (global.FritreeStorage) {
await global.FritreeStorage.set('local_post_groups', state.postGroupsData);
}
renderPostGroupsGrid();
}
};
grid.appendChild(card);
});
container.appendChild(grid);
} else {
// 2. عرض الجدول (Table View)
const tableBox = document.createElement('div');
tableBox.className = 'diktqr0h64';
tableBox.style.cssText = 'max-height: 520px;';
tableBox.innerHTML = `
| اسم الحزمة |
الوصف |
المنشورات |
الحالة |
الإجراءات |
`;
const tbody = tableBox.querySelector('#lboswjm57m');
filteredGroups.forEach(group => {
const tr = document.createElement('tr');
tr.innerHTML = `
${group.name}
كود: ${group.id}
|
${group.description || 'لا يوجد وصف مخصص'}
|
${(group.postIds || []).length.toLocaleString('en-US')} منشور
|
${group.status === 'active' ? 'نشطة' : 'معطلة'}
|
|
`;
tr.querySelector('.zdffbc2hoa').onclick = async () => {
group.status = group.status === 'active' ? 'inactive' : 'active';
if (global.FritreeStorage) {
await global.FritreeStorage.set('local_post_groups', state.postGroupsData);
}
renderPostGroupsGrid();
};
tr.querySelector('.k4j50z448o').onclick = () => {
openEditGroupModal(group.id);
};
tr.querySelector('.h2o7c0chyq').onclick = async () => {
if (confirm(`هل أنت متأكد من حذف حزمة المنشورات "${group.name}"؟`)) {
state.postGroupsData = state.postGroupsData.filter(g => g.id !== group.id);
if (global.FritreeStorage) {
await global.FritreeStorage.set('local_post_groups', state.postGroupsData);
}
renderPostGroupsGrid();
}
};
tbody.appendChild(tr);
});
container.appendChild(tableBox);
}
};
/**
* ربط أحداث الفلاتر والتبديل
*/
const bindGroupFiltersAndEvents = () => {
const searchInput = document.getElementById('z1pixj1rxo');
const statusSelect = document.getElementById('ll0i3bsngj');
const btnCards = document.getElementById('cdrij5tie2');
const btnTable = document.getElementById('sy0af55ns2');
if (searchInput) searchInput.oninput = renderPostGroupsGrid;
if (statusSelect) statusSelect.onchange = renderPostGroupsGrid;
if (btnCards && btnTable) {
btnCards.onclick = () => {
state.groupViewMode = 'cards';
btnCards.classList.add('vn5qn7dmpk');
btnTable.classList.remove('vn5qn7dmpk');
renderPostGroupsGrid();
};
btnTable.onclick = () => {
state.groupViewMode = 'table';
btnTable.classList.add('vn5qn7dmpk');
btnCards.classList.remove('vn5qn7dmpk');
renderPostGroupsGrid();
};
}
};
/**
* تهيئة وحدة حزم المنشورات المخصصة
*/
const initGroupsModule = () => {
appendGroupModalLayout();
bindGroupFiltersAndEvents();
renderPostGroupsGrid();
return true;
};
/**
* تصدير وحدة واجهة حزم المنشورات
*/
global.FritreeRotationGroups = {
init: initGroupsModule,
openModal: openEditGroupModal,
saveGroup: savePostGroupData,
renderGrid: renderPostGroupsGrid
};
if (typeof document !== 'undefined') {
if (document.readyState === 'complete' || document.readyState === 'interactive') {
initGroupsModule();
} else {
document.addEventListener('DOMContentLoaded', initGroupsModule);
}
}
})(typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : this);