משתמש:ערן/wikidataTemplateData.js
הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
if (mw.config.get( 'wgNamespaceNumber' ) === 10 && mw.config.get('wgAction') ==='edit')
$(function(){
//copied from TemplateData ext
function findModelInString( templateDataString ) {
var parts;
parts = templateDataString.match(
/<templatedata>([\s\S]*?)<\/templatedata>/i
);
if ( parts && parts[ 1 ] && parts[ 1 ].trim().length > 0 ) {
return parts[ 1 ].trim();
} else {
return null;
}
};
function replaceTemplateData( newTemplateData ) {
var matches, templateDataOutput,
templateDataJSON = JSON.stringify( newTemplateData, null, '\t' ),
templatedataPattern = /(<templatedata>\s*)([\s\S]*?)\s*<\/templatedata>/i,
$textarea = $('#wpTextbox1'), isPageSubLevel=false,
originalWikitext = $textarea.val();
if ( ( matches = originalWikitext.match( templatedataPattern ) ) ) {
// Move cursor to select withing existing <templatedata> and whitespace
$textarea.textSelection( 'setSelection', {
start: matches.index + matches[ 1 ].length,
end: matches.index + matches[ 1 ].length + matches[ 2 ].length
} );
templateDataOutput = templateDataJSON;
} else {
$textarea.textSelection( 'setSelection', { start: originalWikitext.length } );
templateDataOutput = '<templatedata>\n' + templateDataJSON + '\n</templatedata>';
if ( !isPageSubLevel ) {
if ( ( matches = originalWikitext.match( /<\/noinclude>\s*$/ ) ) ) {
// Move cursor inside </noinclude>
$textarea.textSelection( 'setSelection', { start: matches.index } );
} else {
// Wrap in new <noinclude>s
templateDataOutput = '<noinclude>\n' + templateDataOutput + '\n</noinclude>\n';
}
}
if ( originalWikitext.substr( -1 ) !== '\n' ) {
templateDataOutput = '\n' + templateDataOutput;
}
}
$textarea.textSelection( 'replaceSelection', templateDataOutput );
};
function addWikidataMap(){
var paramExtractor = /\| *(.+)-ויקינתונים(?!-פרטים).*= *(P[0-9]+)/g,
wikidataMap = {}, txt = $('#wpTextbox1').val(), m;
while ( m = paramExtractor.exec(txt) ) wikidataMap[m[2]] = m[1];
if ( $.isEmptyObject( wikidataMap ) ) {
mw.notify('לא נמצאו פרמטרי ויקינתונים.')
return;
}
var td = findModelInString(txt), tdObject;
if ( td !== null ) {
try {
tdObject = JSON.parse( td );
} catch ( err ) {
// The json object is invalid. There's no need to continue.
return ;
}
}
if (!tdObject.maps) tdObject['maps'] = {}
if (!tdObject.maps.wikidata) tdObject.maps.wikidata = wikidataMap; // add
else for (var k in wikidataMap) tdObject.maps.wikidata[k] = wikidataMap[k]; //extend
replaceTemplateData(tdObject);
mw.notify('מפת ויקינתונים עודכנה.')
}
$( '#mw-content-text' ).prepend( new OO.ui.ButtonWidget( {
label: 'מפת ויקינתונים'
} ).on('click', addWikidataMap).$element);
});