User:BZPN/Email.js: Difference between revisions

From Test Wiki
Jump to navigation Jump to search
Content deleted Content added
Created page with "(function() { if (mw.config.get('wgCanonicalSpecialPageName') !== 'EmailUser') { return; } $(document).ready(function() { // Znalezienie istniejącego checkboxa "Wyślij mi kopię" var ccCheckbox = $('#mw-input-wpCCMe'); if (!ccCheckbox.length) { return; } // Tworzenie nowego checkboxa var notifyCheckbox = $('<span class="oo-ui-fieldLayout-body"><span class="oo-ui-fieldLayout-field">'..."
 
No edit summary
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
(function() {
mw.loader.using(['mediawiki.api', 'jquery'], function () {
$(function () {
if (mw.config.get('wgCanonicalSpecialPageName') !== 'EmailUser') {
// Sprawdź, czy jesteśmy na stronie EmailUser
return;
if (mw.config.get('wgCanonicalSpecialPageName') !== 'EmailUser ') return;

// Użyj niezawodnego selektora dla pola "Wyślij mi kopię mojej wiadomości"
var $copyField = $('input[name="wpCCMe"]').closest('.mw-htmlform-field-HTMLCheckField');
if (!$copyField.length) {
console.error('Could not find copy field');
return;
}
}


// Stwórz nowe pole checkbox
$(document).ready(function() {
var $notifyCheckbox = $(
// Znalezienie istniejącego checkboxa "Wyślij mi kopię"
'<div class="mw-htmlform-field-HTMLCheckField">' +
var ccCheckbox = $('#mw-input-wpCCMe');
'<div class="oo-ui-fieldLayout oo-ui-fieldLayout-align-inline">' +
if (!ccCheckbox.length) {
return;
'<div class="oo-ui-fieldLayout-body">' +
'<span class="oo-ui-fieldLayout-header">' +
}
'<label class="oo-ui-labelElement-label">Notify user on talk page</label>' +
'</span>' +
'<div class="oo-ui-fieldLayout-field">' +
'<div class="oo-ui-widget oo-ui-widget-enabled oo-ui-checkboxInput">' +
'<input type="checkbox" id="notifyOnTalk" name="notifyOnTalk" class="oo-ui-inputWidget-input">' +
'</div>' +
'</div>' +
'</div>' +
'</div>' +
'</div>'
);

// Dodaj checkbox do formularza
$copyField.after($notifyCheckbox);

// Obsługa zdarzenia submit
$('form.mw-htmlform').on('submit', function (e) {
e.preventDefault(); // Zatrzymaj domyślne działanie formularza

var notify = $('#notifyOnTalk').is(':checked'); // Sprawdź, czy checkbox jest zaznaczony
var targetUser = $('#mw-input-wpTarget').val(); // Pobierz nazwę użytkownika

if (!targetUser ) return this.submit(); // Jeśli nie ma użytkownika, wyślij formularz normalnie


var talkPage = 'User talk:' + targetUser ; // Ustal stronę dyskusji
// Tworzenie nowego checkboxa
var text = '\n\n== You\'ve got mail! ==\n{{You\'ve got mail}}'+'~~'+'~~\n'; // Treść wiadomości
var notifyCheckbox = $('<span class="oo-ui-fieldLayout-body"><span class="oo-ui-fieldLayout-field">'
+ '<input type="checkbox" id="mw-input-wpNotifyTalk" name="wpNotifyTalk">'
+ '<label for="mw-input-wpNotifyTalk" style="margin-left: 5px;"> Notify user on talk page</label>'
+ '</span></span>');
// Dodanie nowego checkboxa pod istniejącym
ccCheckbox.closest('.mw-htmlform-field-HTMLCheckField').after(notifyCheckbox);


// Przechwycenie wysłania formularza
// Wykonaj operację API
$('form.mw-htmlform').on('submit', function() {
new mw.Api().postWithToken('csrf', {
action: 'edit',
if ($('#mw-input-wpNotifyTalk').is(':checked')) {
title: talkPage,
var recipient = $('input[name=wpTarget]').val();
appendtext: text,
var api = new mw.Api();
var talkPage = 'User talk:' + recipient;
summary: 'Notification: You\'ve got mail!',
format: 'json'
var message = '\n\n== You\'ve got mail! ==\n{{You\'ve got mail}}'+'~~'+'~~';
}).done(function() {
console.log('Notification posted successfully');
// Pobranie obecnej zawartości strony dyskusji
api.get({
}).fail(function(err) {
console.error('Error posting notification:', err);
action: 'query',
}).always(function() {
prop: 'revisions',
$(e.target).off('submit').trigger('submit'); // Ponownie wyślij formularz
titles: talkPage,
});
rvprop: 'content',
formatversion: 2
}).done(function(data) {
var page = data.query.pages[0];
var content = page.missing ? '' : page.revisions[0].content;
content += message;
// Aktualizacja strony dyskusji
api.postWithToken('csrf', {
action: 'edit',
title: talkPage,
text: content,
summary: 'Notifying user of received email',
minor: true
});
});
}
});
});
});
})();
});
});

Latest revision as of 23:15, 24 February 2025

mw.loader.using(['mediawiki.api', 'jquery'], function () {
  $(function () {
    // Sprawdź, czy jesteśmy na stronie EmailUser   
    if (mw.config.get('wgCanonicalSpecialPageName') !== 'EmailUser ') return;

    // Użyj niezawodnego selektora dla pola "Wyślij mi kopię mojej wiadomości"
    var $copyField = $('input[name="wpCCMe"]').closest('.mw-htmlform-field-HTMLCheckField');
    if (!$copyField.length) {
      console.error('Could not find copy field');
      return;
    }

    // Stwórz nowe pole checkbox
    var $notifyCheckbox = $(
      '<div class="mw-htmlform-field-HTMLCheckField">' +
        '<div class="oo-ui-fieldLayout oo-ui-fieldLayout-align-inline">' +
          '<div class="oo-ui-fieldLayout-body">' +
            '<span class="oo-ui-fieldLayout-header">' +
              '<label class="oo-ui-labelElement-label">Notify user on talk page</label>' +
            '</span>' +
            '<div class="oo-ui-fieldLayout-field">' +
              '<div class="oo-ui-widget oo-ui-widget-enabled oo-ui-checkboxInput">' +
                '<input type="checkbox" id="notifyOnTalk" name="notifyOnTalk" class="oo-ui-inputWidget-input">' +
              '</div>' +
            '</div>' +
          '</div>' +
        '</div>' +
      '</div>'
    );

    // Dodaj checkbox do formularza
    $copyField.after($notifyCheckbox);

    // Obsługa zdarzenia submit
    $('form.mw-htmlform').on('submit', function (e) {
      e.preventDefault(); // Zatrzymaj domyślne działanie formularza

      var notify = $('#notifyOnTalk').is(':checked'); // Sprawdź, czy checkbox jest zaznaczony
      var targetUser  = $('#mw-input-wpTarget').val(); // Pobierz nazwę użytkownika

      if (!targetUser ) return this.submit(); // Jeśli nie ma użytkownika, wyślij formularz normalnie

      var talkPage = 'User  talk:' + targetUser ; // Ustal stronę dyskusji
      var text = '\n\n== You\'ve got mail! ==\n{{You\'ve got mail}}'+'~~'+'~~\n'; // Treść wiadomości

      // Wykonaj operację API
      new mw.Api().postWithToken('csrf', {
        action: 'edit',
        title: talkPage,
        appendtext: text,
        summary: 'Notification: You\'ve got mail!',
        format: 'json'
      }).done(function() {
        console.log('Notification posted successfully');
      }).fail(function(err) {
        console.error('Error posting notification:', err);
      }).always(function() {
        $(e.target).off('submit').trigger('submit'); // Ponownie wyślij formularz
      });
    });
  });
});