מדיה ויקי: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 to next match',
'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', 'constructive' ] },
  { 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: 'insource:/' + mw.RegExp.escape(titleNoBrackets) +'/ -linksto:'+mw.config.get('wgPageName'),
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){