מדיה ויקי:Gadget-quickLinker.js: הבדלים בין גרסאות בדף
מאין תקציר עריכה |
מ safe search - to protect prefix/suffix |
||
| שורה 5: | שורה 5: | ||
*/ | */ | ||
if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) $(function(){ | if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) $(function(){ | ||
var titleNoBrackets = /(.+?)( \(|$)/.exec(mw.config.get('wgTitle')), allowedSuffix, allowedPrefix; | |||
var titleNoBrackets = /(.+?)( \(|$)/.exec(mw.config.get('wgTitle')); | |||
if (titleNoBrackets) titleNoBrackets = titleNoBrackets[1]; | if (titleNoBrackets) titleNoBrackets = titleNoBrackets[1]; | ||
else return; | else return; | ||
switch (mw.config.get('wgUserLanguage') ) | |||
{ | // allowedSuffix and allowedPrefix to have strict match for valid words (BOOK => BOOKs and not BOOKmark). default is non strict (which works better for long title) | ||
switch ( mw.config.get('wgContentLanguage') ) { | |||
case 'he': | |||
allowedSuffix = '(?=ים|ות|[^א-ת])'; | |||
allowedPrefix = '(?:[כלבמשהו]|[^א-ת])'; | |||
break; | |||
default: | |||
allowedSuffix = 's?[^a-z]'; | |||
allowedPrefix = ''; | |||
} | |||
switch (mw.config.get('wgUserLanguage') ) { | |||
case 'he': | case 'he': | ||
mw.messages.set({ | mw.messages.set({ | ||
| שורה 18: | שורה 28: | ||
'qlinker-save-success': 'שמירת $1 בוצעה בהצלחה!', | 'qlinker-save-success': 'שמירת $1 בוצעה בהצלחה!', | ||
'qlinker-save-continue': 'שמירה', | 'qlinker-save-continue': 'שמירה', | ||
'qlinker-skip': 'דילוג | 'qlinker-skip': 'דילוג דף', | ||
'qlinker-skip-match': 'דילוג | 'qlinker-skip-match': 'דילוג מופע', | ||
'qlinker-safe-search': 'חיפוש בטוח', | |||
'qlinker-invoke': 'הוספת בזק של קישורים', | 'qlinker-invoke': 'הוספת בזק של קישורים', | ||
'qlinker-sidelink': 'הוספת קישורים', | 'qlinker-sidelink': 'הוספת קישורים', | ||
| שורה 34: | שורה 45: | ||
'qlinker-save-continue': 'Save', | 'qlinker-save-continue': 'Save', | ||
'qlinker-skip': 'Skip page', | 'qlinker-skip': 'Skip page', | ||
'qlinker-skip-match': 'Skip | 'qlinker-skip-match': 'Skip match', | ||
'qlinker-safe-search': 'Safe search', | |||
'qlinker-invoke': 'Quickly add links', | 'qlinker-invoke': 'Quickly add links', | ||
'qlinker-sidelink': 'Add links', | 'qlinker-sidelink': 'Add links', | ||
| שורה 66: | שורה 78: | ||
QuickEditorDialog.static.actions = [ | QuickEditorDialog.static.actions = [ | ||
{ action: 'saveContinue', label: mw.msg('qlinker-save-continue'), flags: [ 'other', ' | { action: 'saveContinue', label: mw.msg('qlinker-save-continue'), flags: [ 'other', 'progressive' ], icon: 'link' }, | ||
{ action: 'skipOne', label: mw.msg('qlinker-skip'), flags: [ 'other', 'progressive' ] }, | { action: 'skipOne', label: mw.msg('qlinker-skip'), flags: [ 'other', 'progressive' ], icon: 'next' }, | ||
{ action: 'skipMatch', label: mw.msg('qlinker-skip-match'), flags: [ 'other', 'progressive' ] }, | { action: 'skipMatch', label: mw.msg('qlinker-skip-match'), flags: [ 'other', 'progressive' ], icon: 'arrowNext' }, | ||
{ action: 'safeSearch', label: mw.msg('qlinker-safe-search'), flags: [ 'other' ], icon: 'search' }, | |||
{ label: mw.msg('qlinker-cancel'), flags: 'safe' } | { label: mw.msg('qlinker-cancel'), flags: 'safe' } | ||
]; | ]; | ||
| שורה 114: | שורה 127: | ||
return new OO.ui.Process( function () { | return new OO.ui.Process( function () { | ||
dialog.savePage(); | dialog.savePage(); | ||
}, this ); | |||
case 'safeSearch': | |||
return new OO.ui.Process( function () { | |||
dialog.close() | |||
protectedSearchQuery(true); | |||
}, this ); | }, this ); | ||
} | } | ||
| שורה 234: | שורה 252: | ||
addLinksWizard.click(function(e){ | addLinksWizard.click(function(e){ | ||
protectedSearchQuery(); | protectedSearchQuery(false); | ||
e.preventDefault(); | e.preventDefault(); | ||
}); | }); | ||
return addLinksWizard; | return addLinksWizard; | ||
} | } | ||
function protectedSearchQuery() | function protectedSearchQuery(safeSearch) | ||
{ | { | ||
var api = new mw.Api(); | var api = new mw.Api(); | ||
| שורה 256: | שורה 274: | ||
} | } | ||
if (!isValid) return; | if (!isValid) return; | ||
searchLinksApi().done(function(q){ | searchLinksApi(safeSearch).done(function(q){ | ||
if (q.error) mw.notify(q.error.info); | if (q.error) mw.notify(q.error.info); | ||
if (!q.query || !q.query.pageids || q.query.pageids.length<=1) { | if (!q.query || !q.query.pageids || q.query.pageids.length<=1) { | ||
| שורה 262: | שורה 280: | ||
return; | return; | ||
} | } | ||
mw.loader.using('oojs-ui-windows', function() { createQuickEditorDialog(q, safeMode) } ); | mw.loader.using(['oojs-ui-windows', 'oojs-ui.styles.icons-movement', 'oojs-ui.styles.icons-editing-core'], function() { createQuickEditorDialog(q, safeMode) } ); | ||
}); | }); | ||
}) | }) | ||
} | } | ||
function searchLinksApi() { | function searchLinksApi(protectPrefixSuffix) { | ||
var api = new mw.Api(); | var api = new mw.Api(), | ||
searchRegexPreSufFix = 'insource:/' + allowedPrefix + mw.RegExp.escape(titleNoBrackets) + allowedSuffix +'/', | |||
searchRegexNonSafe = 'insource:/' + mw.RegExp.escape(titleNoBrackets) +'/', | |||
searchRegex = protectPrefixSuffix? searchRegexPreSufFix : searchRegexNonSafe; | |||
return api.get( { | return api.get( { | ||
action: 'query', | action: 'query', | ||
generator: 'search', | generator: 'search', | ||
gsrnamespace: 0, | gsrnamespace: 0, | ||
gsrsearch: | gsrsearch: searchRegex + ' -linksto:'+mw.config.get('wgPageName'), | ||
gsrlimit: 50, | gsrlimit: 50, | ||
prop: 'revisions', | prop: 'revisions', | ||
| שורה 281: | שורה 302: | ||
}); | }); | ||
} | } | ||
if ($('.dmbox').length==0) {// Don't show the tool at Disambiguation pages because it is useless | if ($('.dmbox').length === 0) { // Don't show the tool at Disambiguation pages because it is useless | ||
if ($('.orphanpage, .stub').length>0) { | if ($('.orphanpage, .stub').length>0) { | ||
searchLinksApi().done(function(d){ | searchLinksApi().done(function(d){ | ||