/** * @fileoverview Content Rotation Post Creator & Modal Editor Controller * @module controllers/rotation-creator-controller * @description وحدة التحكم في إنشاء وتعديل منشورات مكتبة التدوير، إدارة المرفقات، وربط رسائل المتابعة التلقائية. */ (global => { 'use strict'; const state = global.FritreeRotationState; /** * بناء نافذة إضافة منشور جديد لمكتبة التدوير بالـ DOM */ const appendAddModalLayout = () => { let modal = document.getElementById('s74nhbmzs5'); if (modal) return; modal = document.createElement('div'); modal.className = 'cpzxome5dd'; modal.id = 's74nhbmzs5'; modal.style.cssText = 'position: fixed; top: 0; left: 0; width: 100%; height: 100%; backdrop-filter: blur(8px); display: none; align-items: center; justify-content: center; z-index: var(--z-modal-backdrop); background-color: rgba(15, 23, 42, 0.65); direction: rtl; text-align: right; box-sizing: border-box;'; modal.innerHTML = `
إضافة منشور جديد للمكتبة وتجهيزه للتدوير
محتوى ونص المنشور
محرك فحص الـ Spintax
اكتب نصك واستخدم الأقواس {} وافحص جودة التوليد والتمويه...
المتغيرات:
إعدادات الفلاتر ومواعيد النشر
إعدادات الروابط المضمنة:
جدولة التكرار التلقائي:
إرفاق صور أو فيديوهات للمنشور:
اسحب وأفلت الصور والفيديوهات هنا أو اضغط للاختيار من جهازك...
`; document.body.appendChild(modal); document.getElementById('anctu5etze').onclick = () => { modal.style.display = 'none'; }; const submitBtn = document.getElementById('fpvai7vrns'); if (submitBtn) submitBtn.onclick = handleAddNewRotationPost; }; /** * بناء نافذة تعديل منشور محفوظ بالـ DOM */ const appendEditModalLayout = () => { let modal = document.getElementById('a8jzwb130u'); if (modal) return; modal = document.createElement('div'); modal.className = 'cpzxome5dd'; modal.id = 'a8jzwb130u'; modal.style.cssText = 'position: fixed; top: 0; left: 0; width: 100%; height: 100%; backdrop-filter: blur(8px); display: none; align-items: center; justify-content: center; z-index: var(--z-modal-backdrop); background-color: rgba(15, 23, 42, 0.65); direction: rtl; text-align: right; box-sizing: border-box;'; modal.innerHTML = `
تعديل المنشور وإعدادات التدوير
محتوى ونص المنشور
محرك فحص الـ Spintax
المتغيرات:
إعدادات الفلاتر ومواعيد النشر
إعدادات الروابط المضمنة:
جدولة التكرار التلقائي:
اسحب وأفلت الصور والفيديوهات هنا أو اضغط للاختيار من جهازك...
`; document.body.appendChild(modal); document.getElementById('hvsir9fpzq').onclick = () => { modal.style.display = 'none'; }; const saveEditedBtn = document.getElementById('hlec9j3gwy'); if (saveEditedBtn) saveEditedBtn.onclick = saveEditedPreviousPost; }; /** * معالجة رفع وحفظ صور المنشور الجديد */ const handleAddPrevPostFiles = (files) => { for (let i = 0; i < files.length; i++) { const file = files[i]; if (file.size > 25 * 1024 * 1024) continue; if (!file.type.startsWith('image/')) continue; const reader = new FileReader(); reader.onload = async () => { let compressedBlob = file; let thumbBlob = file; if (global.FritreeImageCompressor) { compressedBlob = await global.FritreeImageCompressor.compressImage(file); thumbBlob = await global.FritreeImageCompressor.generateThumbnail(compressedBlob); } const binaryHash = 'rot_media_add_' + Date.now() + "_" + Math.random().toString(36).substr(2,4); if (global.FritreeStorage) { await global.FritreeStorage.set(`media_blob_${binaryHash}`, compressedBlob); await global.FritreeStorage.set(`media_thumb_${binaryHash}`, thumbBlob); } state.addPrevPostMedia.push({ id: binaryHash, type: "image/jpeg", blob: compressedBlob, thumbBlob: thumbBlob, filename: file.name }); renderAddPrevPostPreviews(); }; reader.readAsDataURL(file); } }; const renderAddPrevPostPreviews = () => { const container = document.getElementById('utw9am60j7'); if (!container) return; container.innerHTML = ''; for (let i = 0; i < state.addPrevPostMedia.length; i++) { const media = state.addPrevPostMedia[i]; const box = document.createElement('div'); box.className = 'evr435qzb2'; box.style.cssText = 'width: 76px; height: 76px; border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; position: relative; display: inline-block;'; const el = document.createElement('img'); const previewUrl = URL.createObjectURL(media.thumbBlob || media.blob); el.src = previewUrl; box.dataset.objurl = previewUrl; el.style.cssText = 'width: 100%; height: 100%; object-fit: cover;'; const closeBtn = document.createElement('button'); closeBtn.setAttribute('type', 'button'); closeBtn.style.cssText = 'position: absolute; top: 4px; left: 4px; background: rgba(239, 68, 68, 0.85); color: #fff; border: none; border-radius: 50%; width: 22px; height: 22px; font-size: 10px; cursor: pointer; display: flex; align-items: center; justify-content: center;'; closeBtn.innerHTML = ' '; closeBtn.onclick = () => { if (box.dataset.objurl) URL.revokeObjectURL(box.dataset.objurl); if (global.FritreeStorage) { global.FritreeStorage.remove(`media_blob_${media.id}`); global.FritreeStorage.remove(`media_thumb_${media.id}`); } state.addPrevPostMedia.splice(i, 1); renderAddPrevPostPreviews(); }; box.appendChild(el); box.appendChild(closeBtn); container.appendChild(box); } }; /** * حفظ المنشور الجديد في مكتبة التدوير والتخزين المشفر */ const handleAddNewRotationPost = async () => { const titleVal = (document.getElementById('wlunjizubf')?.value || '').trim(); const textVal = document.getElementById('tfurtfdsqf')?.value || ''; const statusVal = document.getElementById('gc2figac9w')?.value || 'active'; const keywordsVal = document.getElementById('tqyy6isz9h')?.value || ''; const phonesVal = document.getElementById('n49dyh07qe')?.value || ''; const noteVal = (document.getElementById('sdpu7v53bc')?.value || '').trim(); const categoryVal = document.getElementById('fk1p2nd322')?.value || ''; const altTextVal = document.getElementById('ttzd830v71')?.value || ''; const priorityVal = parseInt(document.getElementById('dpfsbbscb8')?.value, 10) || 50; const entryDateVal = document.getElementById('nxkipeaxy3')?.value || ''; const expireDateVal = document.getElementById('zze2ahziau')?.value || ''; const clientNameVal = (document.getElementById('shwl4dswr3')?.value || '').trim(); const enableWaFollowUp = document.getElementById('zjibwdxt0e')?.checked || false; const followUpMessage = document.getElementById('smpimntnov')?.value || ''; const followUpDate = document.getElementById('zzb32zuqfq')?.value || ''; const followupLinksMode = document.getElementById('p4ill70byo')?.value || 'all'; const followupLinksCount = parseInt(document.getElementById('qibeji3kih')?.value, 10) || 5; const followupLinksOrder = document.getElementById('hgi4sk486r')?.value || 'ordered'; const followupRecurrenceMode = document.getElementById('x0tn0hlktk')?.value || 'none'; const followupRecurrenceDays = parseInt(document.getElementById('x4me28ma8a')?.value, 10) || 3; if (!textVal && state.addPrevPostMedia.length === 0) { alert('لا يمكن حفظ منشور فارغ تماماً!'); return; } let keywordsArray = keywordsVal.split(',').map(s => s.trim().toLowerCase()).filter(s => s); let categoryArray = categoryVal.split(',').map(s => s.trim()).filter(s => s); if (categoryArray.length === 0 && keywordsArray.length === 0 && textVal) { if (global.FritreeSimilarityService && typeof global.FritreeSimilarityService.autoClassify === 'function') { const classified = global.FritreeSimilarityService.autoClassify(textVal); categoryArray = classified.categories; keywordsArray = classified.keywords; } } const phonesArray = phonesVal.split(',').map(s => s.trim().replace(/[^0-9+]/g, '')).filter(s => s); const newPost = { id: 'rot_' + Date.now() + '_' + Math.random().toString(36).substr(2, 4), title: titleVal || (textVal ? textVal.substring(0, 30) + '...' : 'أرشيف تدوير محفوظ'), text: textVal, altText: altTextVal, priority: priorityVal, mediaReferences: state.addPrevPostMedia.map(m => ({ id: m.id, type: m.type, filename: m.filename })), status: statusVal, keywords: keywordsArray, categories: categoryArray, notes: noteVal, enableWaFollowUp: enableWaFollowUp, clientName: clientNameVal, phoneNumbers: phonesArray, followUpDate: followUpDate, followUpMessage: followUpMessage, followupLinksMode: followupLinksMode, followupLinksCount: followupLinksCount, followupLinksOrder: followupLinksOrder, followupRecurrenceMode: followupRecurrenceMode, followupRecurrenceDays: followupRecurrenceDays, entryDate: entryDateVal || new Date().toISOString(), expireDate: expireDateVal, followUpSent: false, date: new Date().toISOString() }; if (!Array.isArray(state.previousPostsData)) { state.previousPostsData = []; } state.previousPostsData.unshift(newPost); if (global.FritreeRotationStore && typeof global.FritreeRotationStore.save === 'function') { global.FritreeRotationStore.recalculateScores(); await global.FritreeRotationStore.save(); } if (global.FritreeRotation && typeof global.FritreeRotation.renderPreviousPostsGrid === 'function') { global.FritreeRotation.renderPreviousPostsGrid(); } // تفريغ حقول الإدخال document.getElementById('wlunjizubf').value = ''; document.getElementById('tfurtfdsqf').value = ''; document.getElementById('tqyy6isz9h').value = ''; document.getElementById('n49dyh07qe').value = ''; document.getElementById('sdpu7v53bc').value = ''; document.getElementById('fk1p2nd322').value = ''; document.getElementById('nxkipeaxy3').value = ''; document.getElementById('zze2ahziau').value = ''; document.getElementById('shwl4dswr3').value = ''; document.getElementById('zjibwdxt0e').checked = false; document.getElementById('smpimntnov').value = ''; document.getElementById('zzb32zuqfq').value = ''; document.getElementById('ttzd830v71').value = ''; document.getElementById('dpfsbbscb8').value = '50'; state.addPrevPostMedia = []; const previewsContainer = document.getElementById('utw9am60j7'); if (previewsContainer) previewsContainer.innerHTML = ''; const addModal = document.getElementById('s74nhbmzs5'); if (addModal) addModal.style.display = 'none'; if (typeof window.addLog === 'function') { window.addLog(`تم حفظ وتخزين المنشور بنجاح: "${newPost.title}".`, 'success'); } }; /** * فتح نافذة إنشاء المنشور الجديد * @param {string} presetText */ const openAddPrevPostModal = (presetText = '') => { appendAddModalLayout(); if (presetText) { const txtArea = document.getElementById('tfurtfdsqf'); if (txtArea) txtArea.value = presetText; } const modal = document.getElementById('s74nhbmzs5'); if (modal) modal.style.display = 'flex'; }; /** * فتح نافذة تعديل المنشور * @param {string} id */ const openEditPrevPostModal = async (id) => { const post = state.previousPostsData.find(p => p.id === id); if (!post) return; appendEditModalLayout(); document.getElementById('f0e140ihx2').value = post.id; document.getElementById('sf07blbqj5').value = post.title || ''; document.getElementById('y6sf67114z').value = post.text || ''; document.getElementById('texys3w2lv').value = post.status || 'active'; document.getElementById('n2qgtkpju3').value = post.keywords ? post.keywords.join(', ') : ''; document.getElementById('qu2fksgv9h').value = post.phoneNumbers ? post.phoneNumbers.join(', ') : ''; document.getElementById('fkrgoi078q').value = post.notes || ''; document.getElementById('xbks261mca').value = post.categories ? post.categories.join(', ') : ''; document.getElementById('nj5384jl5c').value = post.altText || ''; document.getElementById('d1w0s2kv3v').value = post.priority !== undefined ? post.priority : 50; document.getElementById('hnits5ebb5').value = post.entryDate ? post.entryDate.slice(0, 16) : ''; document.getElementById('grp82kp5ee').value = post.expireDate ? post.expireDate.slice(0, 16) : ''; document.getElementById('swzbu11pzw').value = post.clientName || ''; document.getElementById('jgtj1u98h0').checked = !!post.enableWaFollowUp; document.getElementById('q9xi99sflx').value = post.followUpMessage || ''; document.getElementById('tbruewdovo').value = post.followUpDate ? post.followUpDate.slice(0, 16) : ''; const editLinksMode = post.followupLinksMode || 'all'; document.getElementById('lsia7sxo1z').value = editLinksMode; document.getElementById('q4ft603tog').value = post.followupLinksCount || 5; document.getElementById('jmue92xc4j').value = post.followupLinksOrder || 'ordered'; const editLinksWrapper = document.getElementById('cje296b5w0'); if (editLinksWrapper) editLinksWrapper.style.display = (editLinksMode === 'limit') ? 'block' : 'none'; const editRecMode = post.followupRecurrenceMode || 'none'; document.getElementById('twsjw36541').value = editRecMode; document.getElementById('s1f8knupy0').value = post.followupRecurrenceDays || 3; const editRecWrapper = document.getElementById('tcc6p8xt6o'); if (editRecWrapper) editRecWrapper.style.display = (editRecMode === 'custom-days') ? 'block' : 'none'; state.editPrevPostMedia = []; if (post.mediaReferences && global.FritreeStorage) { for (let i = 0; i < post.mediaReferences.length; i++) { const ref = post.mediaReferences[i]; const rawBlob = await global.FritreeStorage.get(`media_blob_${ref.id}`); const thumbBlob = await global.FritreeStorage.get(`media_thumb_${ref.id}`); state.editPrevPostMedia.push({ id: ref.id, type: ref.type, blob: rawBlob, thumbBlob: thumbBlob, filename: ref.filename }); } } renderEditPrevPostPreviews(); const modal = document.getElementById('a8jzwb130u'); if (modal) modal.style.display = 'flex'; }; /** * معالجة رفع صور المنشور قيد التعديل */ const handleEditPrevPostFiles = (files) => { for (let i = 0; i < files.length; i++) { const file = files[i]; if (file.size > 25 * 1024 * 1024) continue; if (!file.type.startsWith('image/')) continue; const reader = new FileReader(); reader.onload = async () => { let compressedBlob = file; let thumbBlob = file; if (global.FritreeImageCompressor) { compressedBlob = await global.FritreeImageCompressor.compressImage(file); thumbBlob = await global.FritreeImageCompressor.generateThumbnail(compressedBlob); } const binaryHash = 'rot_media_edit_' + Date.now() + "_" + Math.random().toString(36).substr(2,4); if (global.FritreeStorage) { await global.FritreeStorage.set(`media_blob_${binaryHash}`, compressedBlob); await global.FritreeStorage.set(`media_thumb_${binaryHash}`, thumbBlob); } state.editPrevPostMedia.push({ id: binaryHash, type: "image/jpeg", blob: compressedBlob, thumbBlob: thumbBlob, filename: file.name }); renderEditPrevPostPreviews(); }; reader.readAsDataURL(file); } }; const renderEditPrevPostPreviews = () => { const container = document.getElementById('rd6kwbqsvk'); if (!container) return; container.innerHTML = ''; for (let i = 0; i < state.editPrevPostMedia.length; i++) { const media = state.editPrevPostMedia[i]; const box = document.createElement('div'); box.className = 'evr435qzb2'; box.style.cssText = 'width: 76px; height: 76px; border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; position: relative; display: inline-block;'; const el = document.createElement('img'); if (media.thumbBlob || media.blob) { const previewUrl = URL.createObjectURL(media.thumbBlob || media.blob); el.src = previewUrl; box.dataset.objurl = previewUrl; } else { el.src = 'icon.png'; } el.style.cssText = 'width: 100%; height: 100%; object-fit: cover;'; const closeBtn = document.createElement('button'); closeBtn.setAttribute('type', 'button'); closeBtn.style.cssText = 'position: absolute; top: 4px; left: 4px; background: rgba(239, 68, 68, 0.85); color: #fff; border: none; border-radius: 50%; width: 22px; height: 22px; font-size: 10px; cursor: pointer; display: flex; align-items: center; justify-content: center;'; closeBtn.innerHTML = ' '; closeBtn.onclick = () => { if (box.dataset.objurl) URL.revokeObjectURL(box.dataset.objurl); if (global.FritreeStorage) { global.FritreeStorage.remove(`media_blob_${media.id}`); global.FritreeStorage.remove(`media_thumb_${media.id}`); } state.editPrevPostMedia.splice(i, 1); renderEditPrevPostPreviews(); }; box.appendChild(el); box.appendChild(closeBtn); container.appendChild(box); } }; /** * حفظ المنشور بعد التعديل */ const saveEditedPreviousPost = async () => { const id = document.getElementById('f0e140ihx2')?.value; const post = state.previousPostsData.find(p => p.id === id); if (!post) return; const titleVal = (document.getElementById('sf07blbqj5')?.value || '').trim(); const textVal = document.getElementById('y6sf67114z')?.value || ''; const statusVal = document.getElementById('texys3w2lv')?.value || 'active'; const keywordsVal = document.getElementById('n2qgtkpju3')?.value || ''; const phonesVal = document.getElementById('qu2fksgv9h')?.value || ''; const noteVal = (document.getElementById('fkrgoi078q')?.value || '').trim(); const categoryVal = document.getElementById('xbks261mca')?.value || ''; const entryDateVal = document.getElementById('hnits5ebb5')?.value || ''; const expireDateVal = document.getElementById('grp82kp5ee')?.value || ''; const clientNameVal = (document.getElementById('swzbu11pzw')?.value || '').trim(); const enableWaFollowUp = document.getElementById('jgtj1u98h0')?.checked || false; const followUpMessage = document.getElementById('q9xi99sflx')?.value || ''; const followUpDate = document.getElementById('tbruewdovo')?.value || ''; const followupLinksMode = document.getElementById('lsia7sxo1z')?.value || 'all'; const followupLinksCount = parseInt(document.getElementById('q4ft603tog')?.value, 10) || 5; const followupLinksOrder = document.getElementById('jmue92xc4j')?.value || 'ordered'; const followupRecurrenceMode = document.getElementById('twsjw36541')?.value || 'none'; const followupRecurrenceDays = parseInt(document.getElementById('s1f8knupy0')?.value, 10) || 3; const altTextVal = document.getElementById('nj5384jl5c')?.value || ''; const priorityVal = parseInt(document.getElementById('d1w0s2kv3v')?.value, 10) || 50; if (!textVal && state.editPrevPostMedia.length === 0) { alert('لا يمكن حفظ منشور فارغ تماماً!'); return; } post.title = titleVal || (textVal ? textVal.substring(0, 30) + '...' : 'أرشيف تدوير محفوظ'); post.text = textVal; post.altText = altTextVal; post.priority = priorityVal; post.mediaReferences = state.editPrevPostMedia.map(m => ({ id: m.id, type: m.type, filename: m.filename })); post.status = statusVal; post.keywords = keywordsVal.split(',').map(s => s.trim().toLowerCase()).filter(s => s); post.categories = categoryVal.split(',').map(s => s.trim()).filter(s => s); post.notes = noteVal; post.enableWaFollowUp = enableWaFollowUp; post.clientName = clientNameVal; post.phoneNumbers = phonesVal.split(',').map(s => s.trim().replace(/[^0-9+]/g, '')).filter(s => s); post.followUpDate = followUpDate; post.followUpMessage = followUpMessage; post.followupLinksMode = followupLinksMode; post.followupLinksCount = followupLinksCount; post.followupLinksOrder = followupLinksOrder; post.followupRecurrenceMode = followupRecurrenceMode; post.followupRecurrenceDays = followupRecurrenceDays; post.entryDate = entryDateVal || post.entryDate || new Date().toISOString(); post.expireDate = expireDateVal; if (global.FritreeRotationStore && typeof global.FritreeRotationStore.save === 'function') { global.FritreeRotationStore.recalculateScores(); await global.FritreeRotationStore.save(); } if (global.FritreeRotation && typeof global.FritreeRotation.renderPreviousPostsGrid === 'function') { global.FritreeRotation.renderPreviousPostsGrid(); } const modal = document.getElementById('a8jzwb130u'); if (modal) modal.style.display = 'none'; if (typeof window.addLog === 'function') { window.addLog(`تم تحديث وحفظ المنشور بنجاح: "${post.title}".`, 'success'); } }; /** * ربط أحداث المحرر والنوافذ */ const bindCreatorEventListeners = () => { appendAddModalLayout(); appendEditModalLayout(); // 1. أزرار فحص جودة الـ Spintax ومعاينة التمويه في نافذة الإضافة const btnCheckQualityAdd = document.getElementById('ukgv00a6ew'); const qualityResultAdd = document.getElementById('pvd3acinzt'); const btnPreviewStealthAdd = document.getElementById('q1oy8rpm26'); const previewBoxWrapperAdd = document.getElementById('w2d0q5j0yl'); const previewTextBoxAdd = document.getElementById('p1yahnikb8'); if (btnCheckQualityAdd && qualityResultAdd) { btnCheckQualityAdd.onclick = () => { const text = document.getElementById('tfurtfdsqf')?.value || ''; if (global.FritreeSimilarityService && typeof global.FritreeSimilarityService.analyzeSpintax === 'function') { const res = global.FritreeSimilarityService.analyzeSpintax(text); if (res.valid) { qualityResultAdd.innerHTML = ` صياغة الأقواس سليمة! المتغيرات المحسوبة: ${res.variations.toLocaleString('en-US')} | الأمان: ${res.safetyPct}%`; } else { qualityResultAdd.innerHTML = ` ${res.errors || 'خطأ في صياغة الأقواس'}`; } } }; } if (btnPreviewStealthAdd && previewBoxWrapperAdd && previewTextBoxAdd) { btnPreviewStealthAdd.onclick = async () => { const text = document.getElementById('tfurtfdsqf')?.value || ''; if (!text) { alert('اكتب نص المنشور أولاً لمعاينة التمويه!'); return; } if (previewBoxWrapperAdd.style.display === 'none') { if (global.FritreeTextCompiler && typeof global.FritreeTextCompiler.compileAndObfuscate === 'function') { const obfuscated = await global.FritreeTextCompiler.compileAndObfuscate(text, "جروب_التجربة"); previewTextBoxAdd.textContent = obfuscated; previewBoxWrapperAdd.style.display = 'block'; } } else { previewBoxWrapperAdd.style.display = 'none'; } }; } // 2. زر معاينة التمويه في نافذة التعديل const btnPreviewStealthEdit = document.getElementById('pcam8x7wdq'); const previewBoxWrapperEdit = document.getElementById('c2motxakmm'); const previewTextBoxEdit = document.getElementById('nmt96brzmq'); if (btnPreviewStealthEdit && previewBoxWrapperEdit && previewTextBoxEdit) { btnPreviewStealthEdit.onclick = async () => { const text = document.getElementById('y6sf67114z')?.value || ''; if (!text) { alert('اكتب نص المنشور أولاً لمعاينة التمويه!'); return; } if (previewBoxWrapperEdit.style.display === 'none') { if (global.FritreeTextCompiler && typeof global.FritreeTextCompiler.compileAndObfuscate === 'function') { const obfuscated = await global.FritreeTextCompiler.compileAndObfuscate(text, "جروب_التجربة"); previewTextBoxEdit.textContent = obfuscated; previewBoxWrapperEdit.style.display = 'block'; } } else { previewBoxWrapperEdit.style.display = 'none'; } }; } // 3. ربط أزرار إضافة المتغيرات document.querySelectorAll('.ynnugi2j1w').forEach(btn => { btn.onclick = (e) => { const tag = e.currentTarget.getAttribute('data-var'); let targetTextarea = document.getElementById('tfurtfdsqf'); const editModal = document.getElementById('a8jzwb130u'); if (editModal && editModal.style.display === 'flex') { targetTextarea = document.getElementById('y6sf67114z'); } if (targetTextarea) { const start = targetTextarea.selectionStart; const end = targetTextarea.selectionEnd; targetTextarea.value = targetTextarea.value.substring(0, start) + tag + targetTextarea.value.substring(end); targetTextarea.focus(); targetTextarea.selectionEnd = start + tag.length; } }; }); // 4. ربط أزرار وسوم رسائل المتابعة document.querySelectorAll('.nura0m8mnt, .x8g5p7tdh7').forEach(btn => { btn.onclick = (e) => { const tag = e.currentTarget.getAttribute('data-tag'); let targetTextarea = document.getElementById('smpimntnov'); const editModal = document.getElementById('a8jzwb130u'); if (editModal && editModal.style.display === 'flex') { targetTextarea = document.getElementById('q9xi99sflx'); } if (targetTextarea) { const start = targetTextarea.selectionStart; const end = targetTextarea.selectionEnd; targetTextarea.value = targetTextarea.value.substring(0, start) + tag + targetTextarea.value.substring(end); targetTextarea.focus(); targetTextarea.selectionEnd = start + tag.length; } }; }); // 5. ربط مناطق رفع الصور const addDropzone = document.getElementById('tr3maazuat'); const addFileInput = document.getElementById('hrl56oubz6'); if (addDropzone && addFileInput) { addDropzone.onclick = () => addFileInput.click(); addFileInput.onchange = (e) => { if (e.target.files.length > 0) handleAddPrevPostFiles(e.target.files); }; } const editDropzone = document.getElementById('jzc6fmhhs8'); const editFileInput = document.getElementById('s0jxf1x6ev'); if (editDropzone && editFileInput) { editDropzone.onclick = () => editFileInput.click(); editFileInput.onchange = (e) => { if (e.target.files.length > 0) handleEditPrevPostFiles(e.target.files); }; } }; /** * تهيئة وحدة تحكم إنشاء وتعديل المنشورات */ const initCreator = () => { bindCreatorEventListeners(); return true; }; global.FritreeRotationCreator = { init: initCreator, openAddModal: openAddPrevPostModal, openEditModal: openEditPrevPostModal, openEditGroupModal: (groupId = null, preselectedPostIds = []) => { if (global.FritreeRotationGroups && typeof global.FritreeRotationGroups.openModal === 'function') { global.FritreeRotationGroups.openModal(groupId, preselectedPostIds); } }, saveEditedPost: saveEditedPreviousPost }; if (typeof document !== 'undefined') { if (document.readyState === 'complete' || document.readyState === 'interactive') { global.FritreeRotationCreator.init(); } else { document.addEventListener('DOMContentLoaded', () => global.FritreeRotationCreator.init()); } } })(typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : this);