مدیاویکی:Common.js: تفاوت میان نسخه‌ها

از بنیاد اویستاک
پرش به ناوبری پرش به جستجو
بدون خلاصۀ ویرایش
بدون خلاصۀ ویرایش
 
(۳ نسخهٔ میانیِ ایجادشده توسط همین کاربر نشان داده نشد)
خط ۲: خط ۲:
   var pageTitle = mw.config.get("wgPageName");
   var pageTitle = mw.config.get("wgPageName");
   var baseTitle = pageTitle.split('/')[0];
   var baseTitle = pageTitle.split('/')[0];
  var currentSubpage = pageTitle.includes('/') ? pageTitle.split('/')[1] : null;


   var links = [
   // فراخوانی API برای دریافت زیرصفحه‌ها
     { subpage: 'آوانویسی', label: '← آوانویسی' },
  function getSubpages(title) {
    { subpage: 'ترجمه', label: '← ترجمه فارسی' },
     return $.get(mw.util.wikiScript('api'), {
    { subpage: 'واژه‌نامه', label: '← واژه‌نامه' },
      action: 'query',
     { subpage: 'منابع', label: '← منابع' }
      format: 'json',
   ];
      list: 'allpages',
      apprefix: title + '/',
      aplimit: 20
    }).then(function (data) {
      return data.query.allpages;
     });
   }


   var foundAny = false;
   getSubpages(baseTitle).then(function(subpages) {
  var list;
     if (subpages.length > 0) {
 
       // ساخت منوی سایدبار به صورت داینامیک
  function ensureBox() {
       var box = $('<div>', {id: 'p-avistak-links', class: 'portlet', role: 'navigation'}).append(
     if (!foundAny) {
       foundAny = true;
       var box = $('<div>', {
        id: 'p-avistak-links',
        class: 'portlet',
        role: 'navigation'
      }).append(
         $('<h3>').text('بخش‌های مرتبط'),
         $('<h3>').text('بخش‌های مرتبط'),
         $('<div>', { class: 'pBody' }).append($('<ul>'))
         $('<div>', {class: 'pBody'}).append($('<ul>'))
       );
       );
       $('#mw-panel').append(box);
        
       list = $('#p-avistak-links ul');
       var list = box.find('ul');
    }
  }


  function checkAndAdd(subpage, label) {
      // لینک به صفحه اصلی (فقط اگه خودمون داخلش نیستیم)
    if (currentSubpage === subpage) return;
      if (pageTitle !== baseTitle) {
        list.append($('<li>').append(
          $('<a>').attr('href', mw.util.getUrl(baseTitle)).text('← ' + baseTitle)
        ));
      }


    var fullTitle = baseTitle + '/' + subpage;
      // افزودن زیرصفحه‌ها (به‌جز صفحه‌ای که داخلش هستیم)
    $.get(mw.util.wikiScript('api'), {
      subpages.forEach(function(page) {
      action: 'query',
        if (page.title !== pageTitle) {
      format: 'json',
          var label = page.title.split('/')[1]; // اسم زیرصفحه
      titles: fullTitle
          list.append($('<li>').append(
    }, function (data) {
            $('<a>').attr('href', mw.util.getUrl(page.title)).text('← ' + label)
      var pages = data.query.pages;
          ));
       var pageId = Object.keys(pages)[0];
        }
       });


       if (pageId !== "-1") {
       // اضافه کردن منوی ساخته‌شده به سایدبار
        ensureBox();
      $('#mw-panel').append(box);
        list.append(
     }
          $('<li>').append(
            $('<a>')
              .attr('href', mw.util.getUrl(fullTitle))
              .text(label)
          )
        );
      }
     });
  }
 
  // بررسی همه زیرصفحه‌ها
  links.forEach(function (link) {
    checkAndAdd(link.subpage, link.label);
   });
   });
  // بررسی جداگانه برای اضافه کردن "← متن اوستایی" فقط وقتی زیرصفحه هستیم و لینک دیگری هم خواهد بود
  if (currentSubpage !== null) {
    // بررسی وجود متن اصلی
    $.get(mw.util.wikiScript('api'), {
      action: 'query',
      format: 'json',
      titles: baseTitle
    }, function (data) {
      var pages = data.query.pages;
      var pageId = Object.keys(pages)[0];
      if (pageId !== "-1") {
        // فقط اگر لینک دیگری هم اضافه شده بود یا قراره بشه، جعبه را بساز
        ensureBox();
        list.prepend(
          $('<li>').append(
            $('<a>')
              .attr('href', mw.util.getUrl(baseTitle))
              .text('← متن اوستایی')
          )
        );
      }
    });
  }
});
});

نسخهٔ کنونی تا ‏۱۶ آوریل ۲۰۲۵، ساعت ۰۵:۳۱

$(function () {
  var pageTitle = mw.config.get("wgPageName");
  var baseTitle = pageTitle.split('/')[0];

  // فراخوانی API برای دریافت زیرصفحه‌ها
  function getSubpages(title) {
    return $.get(mw.util.wikiScript('api'), {
      action: 'query',
      format: 'json',
      list: 'allpages',
      apprefix: title + '/',
      aplimit: 20
    }).then(function (data) {
      return data.query.allpages;
    });
  }

  getSubpages(baseTitle).then(function(subpages) {
    if (subpages.length > 0) {
      // ساخت منوی سایدبار به صورت داینامیک
      var box = $('<div>', {id: 'p-avistak-links', class: 'portlet', role: 'navigation'}).append(
        $('<h3>').text('بخش‌های مرتبط'),
        $('<div>', {class: 'pBody'}).append($('<ul>'))
      );
      
      var list = box.find('ul');

      // لینک به صفحه اصلی (فقط اگه خودمون داخلش نیستیم)
      if (pageTitle !== baseTitle) {
        list.append($('<li>').append(
          $('<a>').attr('href', mw.util.getUrl(baseTitle)).text('← ' + baseTitle)
        ));
      }

      // افزودن زیرصفحه‌ها (به‌جز صفحه‌ای که داخلش هستیم)
      subpages.forEach(function(page) {
        if (page.title !== pageTitle) {
          var label = page.title.split('/')[1]; // اسم زیرصفحه
          list.append($('<li>').append(
            $('<a>').attr('href', mw.util.getUrl(page.title)).text('← ' + label)
          ));
        }
      });

      // اضافه کردن منوی ساخته‌شده به سایدبار
      $('#mw-panel').append(box);
    }
  });
});