:1 (29)::1 (29):مبروككككككك لكم هذا العمل المفيد والطيب ووفقكم الله لعمل الخير:1 (1):
:bigsmile::crazy:مبروككككككك لكم هذا العمل المفيد والطيب ووفقكم الله لعمل الخير:2 (212):
:1 (35)::1 (35):مبروككككككك لكم هذا العمل المفيد والطيب ووفقكم الله لعمل الخير:1 (35)::2 (211):
:7 (136):مبروككككككك لكم هذا العمل المفيد والطيب ووفقكم الله لعمل الخير:7 (61)::eh_s(21):
أخي الكريم ..
رد وآحد على الموضوع كافي ..
مسى الخيرات
جزاكم اللهم الخير على هذه المشاركات المفيدة
مشكوووووووووووووووووووووور
الفائدة للجميع ان شاء الله
بارك الله فيكم ونشكركم على هذا المجهود الواضح وباذن الله من نجاح الى نجاح
حياكم الله دائما في صقر الجنوب
السلام عليكم
سبحان الله الحمد لله الله لا اله الا هو
الفائدة للجميع ان شاء الله
مشكووووووووووووووووووووووووررررررررررررر
const config = {
siteUrl: 'https://www.jnob-jo.com',
whitelist: [
'youtube.com',
'youtu.be',
'facebook.com',
'twitter.com',
'iinkor.com',
'forum.iinkor.com',
'instagram.com',
'up.jnob-jo.com',
'drive.google.com',
'docs.google.com',
'apps.moe.gov.jo',
'nccd.gov.jo''instagram.com'
]
};
function isWhitelisted(url) {
return config.whitelist.some(domain => url.includes(domain));
}
function isExternalLink(url) {
try {
const urlObj = new URL(url);
const siteUrlObj = new URL(config.siteUrl);
return urlObj.hostname !== siteUrlObj.hostname;
} catch (e) {
return false;
}
}
function convertExternalLink(url, replaceWithStars = false) {
if (!url) return url;
// تجاهل الروابط الداخلية والمستثناة
if (!isExternalLink(url) || isWhitelisted(url)) {
return url;
}
if (replaceWithStars) {
return '****';
}
return config.siteUrl;
}
function processBBCodeLinks() {
const textNodes = document.evaluate(
"//text()[contains(., '[URL')]",
document,
null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null
);
for (let i = 0; i < textNodes.snapshotLength; i++) {
const node = textNodes.snapshotItem(i);
let text = node.textContent;
text = text.replace(
/\[URL[^\]]*\](https?:\/\/[^\[]+)\[\/URL\]/g,
(match, url) => {
const isUrlAlone = text.trim() === match;
const newUrl = convertExternalLink(url.trim(), isUrlAlone);
return `[URL]${newUrl}[/URL]`;
}
);
if (text !== node.textContent) {
node.textContent = text;
}
}
}
function processPlainTextLinks() {
const textNodes = document.evaluate(
"//text()[contains(., 'http://') or contains(., 'https://')]",
document,
null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null
);
for (let i = 0; i < textNodes.snapshotLength; i++) {
const node = textNodes.snapshotItem(i);
let text = node.textContent;
text = text.replace(
/(https?:\/\/[^\s\[\]<>"']+)/g,
(match) => {
// تحقق مما إذا كان الرابط وحده في النص
const isUrlAlone = text.trim() === match;
return convertExternalLink(match, isUrlAlone);
}
);
if (text !== node.textContent) {
node.textContent = text;
}
}
}
function processPageLinks() {
const links = document.querySelectorAll('.message-body a, .p-body-pageContent a');
links.forEach(link => {
const href = link.getAttribute('href');
if (href) {
const isUrlAlone = link.textContent.trim() === href;
const newHref = convertExternalLink(href, isUrlAlone);
if (newHref !== href) {
link.setAttribute('href', newHref);
if (isUrlAlone) {
link.textContent = '****';
}
link.classList.add('external-redirect');
}
}
});
processBBCodeLinks();
processPlainTextLinks();
}
document.addEventListener('DOMContentLoaded', processPageLinks);
document.addEventListener('XFContentLoaded', processPageLinks);
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
if (mutation.addedNodes && mutation.addedNodes.length > 0) {
processPageLinks();
}
});
});
observer.observe(document.body, {
childList: true,
subtree: true
});