Benutzer:Der Buckesfelder/SkriptInstaller.js
aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 3. Oktober 2013 um 10:29 Uhr durch Equazcion (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
if(($('span.scriptInstallerLink').length>0)&&(wgAction!='submit')&&(wgAction!='edit')){ // Set URL prefix varpre=location.protocol+'//'+wgPageContentLanguage+'.'+wgNoticeProject+'.org'+'/w/index.php?title='; // Set interface text varinstallerTitle='You currently have the following scripts installed <div class="titleBadge"><a href="'+pre+'User:Equazcion/ScriptInstaller'+'">Script Installer</a></div>'; varinstallerMessage='Only scripts installed using <span style="font-weight:bold">Script Installer</span> are shown here. To uninstall a script, click its "Uninstall" link.'; varinstallerLink='Install'; varunInstallerLink='Uninstall'; varnoauto='Must be installed manually'; // Get the stylesheet importStylesheet('User:Equazcion/ScriptInstaller.css'); // Set up the regex pattern for later varregex1='(importScript)'; varregex2='(\\(.*\\))'; varregex3='; \\/\\/Linkback: \\[.*?\\]\\] Added by Script installer'; varregexObject=newRegExp(regex1+regex2+regex3,["i"]); // Create array for installed script paths varinstalledScripts=[]; // Append the box of installed scripts. Hide unless we're on a designated installation page $('div#contentSub').after('<div hidden="hidden" class="scriptInstaller"></div>'); if((wgPageName=='Wikipedia:WikiProject_User_scripts/Scripts')||(wgPageName=='Wikipedia:WikiProject_User_scripts')||(wgPageName=='User:Equazcion/sandbox1')){ setTimeout(function(){$('.scriptInstaller').fadeIn(800);},500); } // Set parameters for common.js ajax request varrequest4={ action:"query", titles:"User:"+mw.config.get("wgUserName")+"/common.js", prop:"revisions|info", intoken:"edit", rvprop:"content", indexpageids:1, dataType:"xml", format:"xml" }; // Do common.js ajax request $.get(mw.config.get("wgScriptPath")+"/api.php",request4,function(response4){ // Grab common.js content and split by lines varcontent=$(response4).find('rev').text(); varlines=content.split('\n'); // Use the regex to iterate through the lines, looking for the ones that ScriptInstaller added $.each(lines,function(index,value){ varmatch=regexObject.exec(value); // Put the paths of the matches into the array of installed scripts if(match!=null){ installedScripts.push(match[2].replace(/\'/g,'').replace(/\(/g,'').replace(/\)/g,'')); } }); // If none were found, remove the installed script list box if(installedScripts.length<1)$('div.scriptInstaller').remove(); // Start building the code for display of the installed list. Iterate through each installed script in the array varinstalledList='<ul style="list-style-type:none;">'; $.each(installedScripts,function(index,value){ // For each script already installed, change the install links (into "installed" messages) that are on the current page (if any) //$('span.scriptInstallerLink[id="' + value.replace(/\//g,'.2F').replace(/ /g,'_').replace(/%/g,'.') + '"]') $('span.scriptInstallerLink[id="'+encodeURIComponent(value).replace('%3A',':').replace(/\//g,'.2F').replace(/ /g,'_').replace(/%/g,'.')+'"]') .attr('id','installed'+index) .addClass('installed') .html('Installed') .css('font-weight','bold'); // Add an HTML list element for each installed script, containing .js and uninstall links installedList=installedList+'<li>'+ '<a href="#installerLink" class="unInstallerLink">'+unInstallerLink+'</a>: '+ '<a href="'+pre+value+'">'+decodeURIComponent(value)+'</a>'+ '</li>'; }); // Cap off the list of installed scripts installedList=installedList+'</ul>'; // Build and append the rest if the list box code, and insert our constructed list of installed scripts $('.scriptInstaller').html('<div class="installerTitle">'+installerTitle+'</div>'+ '<div class="container1">'+ '<div class="installerMessage">'+installerMessage+'</div>'+ '<div class="uninstallList">'+installedList+'</div>'+ '</div>'); // Iterate through each line in the installed list and set the click function for their uninstall links $('.scriptInstaller li').each(function(){ varpath=$(this).find('a:last').html(); $(this).find('a:first').click(function(){ // Set parameters for the first uninstall ajax request that occurs when the uninstall link is clicked varrequest5={ action:"query", titles:"User:"+mw.config.get("wgUserName")+"/common.js", prop:"revisions|info", intoken:"edit", rvprop:"content", indexpageids:1, dataType:"xml", format:"xml" }; // Send the request $.get(mw.config.get("wgScriptPath")+"/api.php",request5,function(response5){ //Grab common.js content and find/replace our line with nothing, thereby removing the script varcontent=$(response5).find('rev').text(); varnewText=content.replace("\n"+"importScript('"+path+"'); //Linkback: [["+path+"]] Added by Script installer",""); // Set paraemeters for the ajax post that replaces common.js with our edited version varrequest6={ action:"edit", title:"User:"+mw.config.get("wgUserName")+"/common.js", text:newText, summary:"[[User:Equazcion/ScriptInstaller|Script installer]]: Uninstalled [["+path+"]]", token:mw.user.tokens.get("editToken") }; // Send the ajax post to save the new common.js, then reload the current page $.post(mw.config.get("wgScriptPath")+"/api.php",request6,function(response6){ location.reload(); }); }); }); }); }); // Iterate through each templated (via {{userscript}}) script on the page $('span.scriptInstallerLink').each(function(){ // Get the script path, which the template places in the span's ID varpath=$(this).attr('id'); path=path.replace(/.2F/g,'/').replace(/\_/g,' '); // If there's more than one dot left in the path, assume percent encoding was converted to dots. Leave the last dot for ".js" if((path.split(".").length-1)>1){ varparts=path.split('.'); path=parts.slice(0,-1).join('%')+'.'+parts.slice(-1); } // If this path leads to a valid en-wiki .js script in userspace or wikipedia space, add an install link if(((path.toLowerCase().substring(0,5)=="user:")||(path.toLowerCase().substring(0,10)=='wikipedia:'))&&(path.lastIndexOf('.js')==path.length-3)){ $(this).html(' | <a href="#installerLink" class="installerLink">'+installerLink+'</a>'); // Set the click function for the install link $(this).find('a.installerLink').click(function(){ // Set ajax parameters for the ajax post that occurs when the install link is clicked varrequest1={ action:"edit", title:"User:"+mw.config.get("wgUserName")+"/common.js", appendtext:"\nimportScript('"+decodeURIComponent(path)+"'); //Linkback: [["+decodeURIComponent(path)+"]] Added by Script installer", summary:"[[User:Equazcion/ScriptInstaller|Script installer]]: Installed [["+path+"]]", token:mw.user.tokens.get("editToken") }; // Send the ajax post, which appends our new importScript line to common.js, then reload the current page $.post(mw.config.get("wgScriptPath")+"/api.php",request1,function(response1){ location.reload(); }); }); }else{ // If this is not a valid path to an en-wiki .js script in user or wikipedia space, add a "must install manually" message $(this).html(' | <span class="noauto">'+noauto+'</span>'); } }); }