مستخدم:Gerges/Gadget-Musa3id/copyvios.js

ملاحظة: بعد النشر، أنت قد تحتاج إلى إفراغ الكاش الخاص بمتصفحك لرؤية التغييرات.

  • فايرفوكس / سافاري: أمسك Shift أثناء ضغط Reload، أو اضغط على إما Ctrl-F5 أو Ctrl-R (⌘-R على ماك)
  • جوجل كروم: اضغط Ctrl-Shift-R (⌘-Shift-R على ماك)
  • إنترنت إكسبلورر/إيدج: أمسك Ctrl أثناء ضغط Refresh، أو اضغط Ctrl-F5
  • أوبرا: اضغط Ctrl-F5.
/* 
 * Musa3id: A gadget to assist various user actions on arabic wikipedia. a fork of Adiutor (Author: Vikipolimer).
 * Author: وهراني (Wahrani)
 * licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) and GNU Free Documentation License (GFDL).
 * Module: Copyright checker
/* <nowiki> */
$.when(mw.loader.using(["mediawiki.user", "oojs-ui-core", "oojs-ui-windows", ]), $.ready).then(function() {
  var mwConfig = mw.config.get(["wgAction", "wgPageName", "wgTitle", "wgUserGroups", "wgUserName", "wgCanonicalNamespace", "wgNamespaceNumber"]);
  var messageDialog = new OO.ui.MessageDialog();
  var windowManager = new OO.ui.WindowManager();
  $('body').append(windowManager.$element);
  windowManager.addWindows([messageDialog]);
  var progressBar = new OO.ui.ProgressBarWidget({
    progress: false
  });
  var cancelButton = new OO.ui.ButtonWidget({
    label: 'إلغاء',
    flags: ['destructive'],
    action: 'cancel'
  });
  windowManager.openWindow(messageDialog, {
    title: 'التحقق ...',
    message: progressBar.$element,
    actions: [cancelButton]
  });
  var xhr;
  cancelButton.on('click', function() {
    xhr.abort();
  });
  xhr = $.get("https://copyvios.toolforge.org/api.json?", {
    action: "search",
    lang: "ar",
    project: "wikinews",
    title: mwConfig.wgPageName,
    oldid: "",
    use_engine: "1",
    use_links: "1",
    turnitin: "0",
  }, function(data) {
    messageDialog.close();

    function CopyVioDialog(config) {
      CopyVioDialog.super.call(this, config);
    }
    OO.inheritClass(CopyVioDialog, OO.ui.ProcessDialog);
    var copVioRatio = (data.best.confidence * 100).toFixed(2);
    CopyVioDialog.static.title = 'النتيجة ( %' + copVioRatio + ' )';
    CopyVioDialog.static.name = 'CopyVioDialog';
    var headerTitle;
    if (copVioRatio > 45) {
      headerTitle = new OO.ui.MessageWidget({
        type: 'error',
        inline: true,
        label: 'خروق محتملة: % ' + copVioRatio
      });
      CopyVioDialog.static.actions = [{
        action: 'continue',
        modes: 'edit',
        label: 'طلب حذف سريع',
        flags: ['primary', 'destructive']
            }, {
        modes: 'edit',
        label: 'غلق',
        flags: 'safe'
            }, {
        action: 'back',
        modes: 'help',
        label: 'مساعدة',
        flags: 'safe'
            }];
    } else if (copVioRatio < 10) {
      headerTitle = new OO.ui.MessageWidget({
        type: 'success',
        inline: true,
        label: 'لا خروقات: %' + copVioRatio
      });
      CopyVioDialog.static.actions = [{
        modes: 'edit',
        label: 'غلق',
        flags: 'safe'
            }, {
        action: 'back',
        modes: 'help',
        label: 'مساعدة',
        flags: 'safe'
            }];
    } else {
      headerTitle = new OO.ui.MessageWidget({
        type: 'warning',
        inline: true,
        label: 'خروقات محتملة: %' + copVioRatio + ' | لهذه الصفحة مستوى بدرجة قلق منخفظة لخروقات الحقوق،يمكنك حذف المقاطع ذات الحقوق لمعالجة الأمر.'
      });
      CopyVioDialog.static.actions = [{
        modes: 'edit',
        label: 'غلق',
        flags: 'safe'
            }, {
        action: 'back',
        modes: 'help',
        label: 'مساعدة',
        flags: 'safe'
            }];
    }
    CopyVioDialog.prototype.initialize = function() {
      CopyVioDialog.super.prototype.initialize.apply(this, arguments);
      var cvRelSource = data.sources.filter(function(source) {
        return source.excluded == false;
      });
      var cvSources = document.createElement('ul');
      cvSources.classList.add("cov-url-list");
      for (var i = 0; i < cvRelSource.length; i++) {
        var li = document.createElement('li');
        li.classList.add("cov-url-list-item");
        if ((cvRelSource[i].confidence * 100).toFixed(2) > 40) {
          li.classList.add("cov-url-list-item-vio-high");
        }
        var a = document.createElement("a");
        a.classList.add("cov-url-list-item-link");
        var img = document.createElement("span");
        img.innerText = cvRelSource[i].url;
        img.title = cvRelSource[i].url;
        a.href = cvRelSource[i].url;
        a.appendChild(img);
        li.id = cvRelSource[i].id;
        li.appendChild(a);
        cvSources.appendChild(li);
      }
      this.panel1 = new OO.ui.PanelLayout({
        padded: true,
        expanded: false
      });
      this.panel1.$element.append(headerTitle.$element, '<br><hr><br>', cvSources);
      this.panel2 = new OO.ui.PanelLayout({
        padded: true,
        expanded: false
      });
      this.panel2.$element.append('Empty');
      this.stackLayout = new OO.ui.StackLayout({
        items: [this.panel1, this.panel2]
      });
      this.$body.append(this.stackLayout.$element);
    };
    CopyVioDialog.prototype.getSetupProcess = function(data) {
      return CopyVioDialog.super.prototype.getSetupProcess.call(this, data).next(function() {
        this.actions.setMode('edit');
      }, this);
    };
    CopyVioDialog.prototype.getActionProcess = function(action) {
      if (action === 'help') {
        this.actions.setMode('help');
        this.stackLayout.setItem(this.panel2);
      } else if (action === 'back') {
        this.actions.setMode('edit');
        this.stackLayout.setItem(this.panel1);
      } else if (action === 'continue') {
        var dialog = this;
        return new OO.ui.Process(function() {
          dialog.close();
          mw.loader.load(`${mw.util.wikiScript('index')}?title=${window.Musa3idPath}speed-deletion.js&action=raw&ctype=text/javascript`)
        });
      }
      return CopyVioDialog.super.prototype.getActionProcess.call(this, action);
    };
    CopyVioDialog.prototype.getBodyHeight = function() {
      return this.panel1.$element.outerHeight(true);
    };
    var windowManager = new OO.ui.WindowManager();
    $(document.body).append(windowManager.$element);
    var dialog = new CopyVioDialog({
      size: 'larger'
    });
    windowManager.addWindows([dialog]);
    windowManager.openWindow(dialog);
  });
});
/* </nowiki> */