انتقل إلى المحتوى

ميدياويكي:Common.js

من Dbspedia
مراجعة ١٣:٤٢، ١٥ أكتوبر ٢٠٢٦ بواسطة Admin (نقاش | مساهمات)

ملاحظة: بعد الحفظ، قد يلزمك محو الاختزان الخاص بمتصفحك لرؤية التغييرات.

  • فايرفوكس / سافاري: أمسك Shift أثناء ضغط Reload، أو اضغط على إما Ctrl-F5 أو Ctrl-R (⌘-R على ماك)
  • جوجل كروم: اضغط Ctrl-Shift-R (⌘-Shift-R على ماك)
  • إنترنت إكسبلورر/إيدج: أمسك Ctrl أثناء ضغط Refresh، أو اضغط Ctrl-F5
  • أوبرا: اضغط Ctrl-F5.
/* 🛠️ كود فحص واختبار آلية استخراج الأسماء ديناميكياً من النصوص الخام لصفحات الويكي */
$(document).ready(function() {
    if (mw.config.get('wgPageName') === 'المعرفات') {
        var $table = $('#table-ids-mw');
        if ($table.length > 0) {
            // تحديث العناوين لتبين مخرجات فحص التفكيك النصي
            $table.find('th').eq(0).text('اسم الصفحة (title)');
            $table.find('th').eq(1).text('النتيجة المستخرجة ديناميكياً من داخل حقل |اسم_الشخص=');
        }

        // استعلام دلالي خفيف لجلب أول 10 معرفات فقط لغرض الفحص والتجربة
        var askQuery = "[[معرف_الشخص::+]]|limit=10";
        var apiUrl = '/api.php?action=ask&format=json&query=' + encodeURIComponent(askQuery);
        
        $.getJSON(apiUrl, function(data) {
            var results = (data && data.query) ? data.query.results : null;
            if (results && Object.keys(results).length > 0) {
                var rowsHtml = '';
                var queue = [];
                var counter = 0;
                
                $.each(results, function(title, pageData) {
                    var cellId = "debug-cell-" + counter;
                    rowsHtml += '<tr>' +
                                '<td style="padding: 8px 12px; font-weight: bold; color: #2a4b7c;">' + title + '</td>' +
                                '<td id="' + cellId + '" style="padding: 8px 12px; font-family: monospace; font-weight: bold; color: #e67e22; background: #fafafa;">جاري محاولة القراءة النصية...</td>' +
                                '</tr>';
                    
                    queue.push({ title: title, cellId: cellId });
                    counter++;
                });
                
                $table.find('tbody').html(rowsHtml);
                
                // دالة المعالجة المتسلسلة الآمنة لاستجواب محتوى الصفحات الخام واحدة تلو الأخرى
                function debugNextPage(index) {
                    if (index >= queue.length) return; // انتهاء الفحص
                    
                    var item = queue[index];
                    var contentUrl = '/api.php?action=query&titles=' + encodeURIComponent(item.title) + '&prop=revisions&rvprop=content&format=json';
                    
                    $.getJSON(contentUrl, function(contentData) {
                        var textFound = "❌ لم يتم العثور على قالب الشخص أو الحقل بالداخل!";
                        
                        if (contentData && contentData.query && contentData.query.pages) {
                            var pagesObj = contentData.query.pages;
                            var pKey = Object.keys(pagesObj);
                            
                            if (pagesObj[pKey].revisions && pagesObj[pKey].revisions[0]) {
                                var rawText = pagesObj[pKey].revisions[0]['*'];
                                
                                // التعبير النمطي الذكي للبحث عن حقل اسم_الشخص واستخراجه
                                var match = rawText.match(/\|\s*اسم_الشخص\s*=\s*([^\|\}]+)/);
                                if (match && match[1]) {
                                    textFound = "✅ تم النجاح! الاسم المستخرج هو: " + match[1].trim();
                                } else {
                                    textFound = "⚠️ القالب موجود ولكن حقل |اسم_الشخص= فارغ أو غير مكتوب بالشكل الصحيح!";
                                }
                            }
                        }
                        
                        // حقن النتيجة وتلوينها للتأكد البصري
                        var $cell = $('#' + item.cellId);
                        if (textFound.indexOf('✅') !== -1) {
                            $cell.css('color', '#27ae60').text(textFound);
                        } else {
                            $cell.css('color', '#c0392b').text(textFound);
                        }
                        
                        // الانتقال الفوري الآمن للصفحة التالية بعد استجابة السيرفر
                        debugNextPage(index + 1);
                    }).fail(function() {
                        $('#' + item.cellId).css('color', '#c0392b').text("❌ فشل الاتصال بالـ API لقراءة هذه الصفحة!");
                        debugNextPage(index + 1);
                    });
                }
                
                // انطلاق المحرك التجريبي للفحص النصي
                debugNextPage(0);
            }
        });
    }
});