Page MenuHomePhabricator

[wmf.16 - arwiki] Mediawiki:Common.js Type Error
Closed, ResolvedPublic

Description

User talk pages (Structured discussion and wikitext) display the Console error (e.g. نقاش المستخدم:Zilant17 (Structured discussion enabled) and نقاش المستخدم:Zilant32 - wikitext.

the error (with @Catrope debug input):

TypeError: $(...).val(...) is undefined
index.php:5:36
    <anonymous> https://ar.wikipedia.org/w/index.php?title=Mediawiki:Common.js/sign.js&action=raw&ctype=text/javascript:5
$
function jQuery()

$('#wpTextbox1')
Object {  }

$('#wpTextbox1').val
function val()

$('#wpTextbox1').val()
undefined

Related Objects

Event Timeline

DannyS712 subscribed.

Its because of an error in the on-wiki code. Currently, the code is

Current sign.js
/* Any JavaScript here will be loaded for all users on every page load. */
// سكربت تجريبي لإضافة التوقيع تلقائياً عند نسيانه 
//التأكد أن عدد تعديلات المستخدم أقل من 1000 تعديل|، وأنه يحرر في نطاق نقاش المستخدم
if ((mw.config.get( 'wgNamespaceNumber' ) % 2) == 1 && mw.config.get( 'wgUserEditCount' ) < 1000) {
    var content = $('#wpTextbox1').val().trim(); // نص التعديل
    
    if ((content.endsWith("ع م)"))){
	    $('#wpSave').click(function() {
	        if ((!content.endsWith("\~\~\~") && (!content.endsWith("ع م)")))){
	            $('#wpTextbox1').val($('#wpTextbox1').val().trim() + "--\~\~\~\~"); //إضافة التوقيع
	        }
	   });
   }
   else if ($("h1#firstHeading").text().includes ("إنشاء ")){
   		$('#wpSave').click(function() {
	        if ((!content.endsWith("\~\~\~"))){
	            $('#wpTextbox1').val($('#wpTextbox1').val() + ".--\~\~\~\~"); //إضافة التوقيع
	        }
	   });
   }
}

The 5th line,

var content = $('#wpTextbox1').val().trim(); // نص التعديل

assumes that there is at least one element with the id #wpTextbox1, even though that element only exists in edit mode. You could either check that the user is editing the page, or check that the element exists, which is probably easier. Thus, to make this work, you can add the condition $('#wpTextbox1').length > 0:

New sign.js
/* Any JavaScript here will be loaded for all users on every page load. */
// سكربت تجريبي لإضافة التوقيع تلقائياً عند نسيانه 
//التأكد أن عدد تعديلات المستخدم أقل من 1000 تعديل|، وأنه يحرر في نطاق نقاش المستخدم
if ((mw.config.get( 'wgNamespaceNumber' ) % 2) == 1 && mw.config.get( 'wgUserEditCount' ) < 1000 && $('#wpTextbox1').length > 0) {
    var content = $('#wpTextbox1').val().trim(); // نص التعديل
    
    if ((content.endsWith("ع م)"))){
	    $('#wpSave').click(function() {
	        if ((!content.endsWith("\~\~\~") && (!content.endsWith("ع م)")))){
	            $('#wpTextbox1').val($('#wpTextbox1').val().trim() + "--\~\~\~\~"); //إضافة التوقيع
	        }
	   });
   }
   else if ($("h1#firstHeading").text().includes ("إنشاء ")){
   		$('#wpSave').click(function() {
	        if ((!content.endsWith("\~\~\~"))){
	            $('#wpTextbox1').val($('#wpTextbox1').val() + ".--\~\~\~\~"); //إضافة التوقيع
	        }
	   });
   }
}

@DannyS712: As this was filed under Growth-Team I assume that this is on the to-do list of the Growth-Team, hence reopening.

Aklapper reassigned this task from Catrope to ASammour.

Ah, that wasn't clear to me. Thanks then! :)