|
|
| (79 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) |
| Zeile 1: |
Zeile 1: |
| /* <nowiki> */ | | // For [[Module:CSS]]; [[T:CSS]] dependency |
| | | mw.hook("wikipage.content").add(function () { |
| /* ######################################################################## */
| | $("span.import-css").each(function () { |
| /* ### JavaScript here is loaded for all users and all skins. ### */
| | mw.util.addCSS($(this).attr("data-css")); |
| /* ######################################################################## */
| | }); |
| | |
| /* ######################################################################## */
| |
| /* ### AJAX RC ### */
| |
| /* ### ---------------------------------------------------------------- ### */
| |
| /* ### Beschreibung: Automatische Aktualisierung der ### */
| |
| /* ### "Letzten Änderungen" via AJAX. ### */
| |
| /* ### Credit: User:pcj (original) ### */
| |
| /* ### User:Grunny (Fehlerbehebungen) ### */
| |
| /* ######################################################################## */
| |
|
| |
| var ajaxIndicator = 'http://images.wikia.com/dev/images/8/82/Facebook_throbber.gif',
| |
| ajaxTimer,
| |
| ajaxRefresh = 60000,
| |
| refreshText = 'Automatische Aktualisierung',
| |
| refreshHover = 'Automatisch aktualisierende Seitenneuladungen aktivieren',
| |
| doRefresh = true;
| |
|
| |
| if ( !window.ajaxPages ) {
| |
| var ajaxPages = new Array ("Spezial:Letzte_Änderungen", "Spezial:WikiActivity", "Spezial:Neue_Dateien");
| |
| }
| |
| if ( !window.ajaxCallAgain ) {
| |
| var ajaxCallAgain = [];
| |
| }
| |
| if( typeof AjaxRCRefreshText == "string" ) {
| |
| refreshText = AjaxRCRefreshText;
| |
| }
| |
| if( typeof AjaxRCRefreshHoverText == "string" ) {
| |
| refreshHover = AjaxRCRefreshHoverText;
| |
| }
| |
|
| |
| /**
| |
| * Sets the cookie
| |
| * @param c_name string Name of the cookie
| |
| * @param value string 'on' or 'off'
| |
| * @param expiredays integer Expiry time of the cookie in days
| |
| */
| |
| function setCookie( c_name, value, expiredays ) {
| |
| var exdate = new Date();
| |
| exdate.setDate( exdate.getDate() + expiredays);
| |
| document.cookie = c_name + "=" + escape(value) + ( ( expiredays === null ) ? "" : ";expires=" + exdate.toGMTString() );
| |
| }
| |
|
| |
| /**
| |
| * Gets the cookie
| |
| * @param c_name string Cookie name
| |
| * @return The cookie name or empty string
| |
| */
| |
| function getCookie( c_name ) {
| |
| if ( document.cookie.length > 0 ) {
| |
| var c_start = document.cookie.indexOf( c_name + "=" )
| |
| if ( c_start !== -1 ) {
| |
| c_start = c_start + c_name.length + 1;
| |
| var c_end = document.cookie.indexOf( ";", c_start );
| |
| if ( c_end === -1 ) {
| |
| c_end = document.cookie.length;
| |
| }
| |
| return unescape( document.cookie.substring( c_start, c_end ) );
| |
| }
| |
| }
| |
| return "";
| |
| }
| |
|
| |
| /**
| |
| * Main function to start the Auto-refresh process
| |
| */
| |
| function preloadAJAXRL() {
| |
| var ajaxRLCookie = (getCookie("ajaxload-" + wgPageName) == "on") ? true : false;
| |
| var appTo = ($('#WikiaPageHeader').length ) ? $('#WikiaPageHeader > h1') : $('.firstHeading');
| |
|
| |
| appTo.append(' <span style="font-size: xx-small; line-height: 100%;" id="ajaxRefresh"><span style="border-bottom: 1px dotted; cursor: help;" id="ajaxToggleText" title="' + refreshHover + '">' + refreshText + ':</span><input type="checkbox" style="margin-bottom: 0;" id="ajaxToggle"><span style="display: none;" id="ajaxLoadProgress"><img src="' + ajaxIndicator + '" style="vertical-align: baseline;" border="0" alt="Refreshing page" /></span></span>');
| |
|
| |
| $('#ajaxLoadProgress').ajaxSend(function(event, xhr, settings) {
| |
| if (location.href == settings.url) {
| |
| $(this).show();
| |
| }
| |
| } ).ajaxComplete(function(event, xhr, settings) {
| |
| if (location.href == settings.url) {
| |
| $(this).hide();
| |
| for(i in ajaxCallAgain) {
| |
| ajaxCallAgain[i]();
| |
| }
| |
| }
| |
| } );
| |
|
| |
| $('#ajaxToggle').click(toggleAjaxReload).attr('checked', ajaxRLCookie);
| |
|
| |
| if (getCookie("ajaxload-" + wgPageName) == "on") {
| |
| loadPageData();
| |
| }
| |
| }
| |
|
| |
| /**
| |
| * Turn refresh on and off by toggling the checkbox
| |
| */
| |
| function toggleAjaxReload() {
| |
| if ( $( '#ajaxToggle' ).prop( 'checked' ) == true ) {
| |
| setCookie( "ajaxload-" + wgPageName, "on", 30 );
| |
| doRefresh = true;
| |
| loadPageData();
| |
| } else {
| |
| setCookie( "ajaxload-" + wgPageName, "off", 30 );
| |
| doRefresh = false;
| |
| clearTimeout( ajaxTimer );
| |
| }
| |
| }
| |
|
| |
| /**
| |
| * Does the actual refresh
| |
| */
| |
| function loadPageData() {
| |
| var cC = ( $( '#WikiaArticle' ).length ) ? '#WikiaArticle' : '#bodyContent';
| |
| $( cC ).load( location.href + " " + cC, function ( data ) {
| |
| if ( doRefresh ) {
| |
| ajaxTimer = setTimeout( "loadPageData();", ajaxRefresh );
| |
| }
| |
| } );
| |
| }
| |
|
| |
| /**
| |
| * Load the script on specific pages
| |
| */
| |
| $( function () {
| |
| for ( x in ajaxPages ) {
| |
| if ( wgPageName == ajaxPages[x] && $( '#ajaxToggle' ).length === 0 ) {
| |
| preloadAJAXRL();
| |
| }
| |
| }
| |
| } );
| |
|
| |
| /* ######################################################################## */
| |
| /* ######################################################################## */
| |
|
| |
| function infoboxToggle() {
| |
| var page = window.pageName.replace(/\W/g, '_');
| |
| var nowShown;
| |
|
| |
| if(document.getElementById('infoboxtoggle').innerHTML == '[Hide]') {
| |
| document.getElementById('infoboxinternal').style.display = 'none';
| |
| document.getElementById('infoboxtoggle').innerHTML = '[Show]';
| |
| nowShown = false;
| |
| } else {
| |
| document.getElementById('infoboxinternal').style.display = 'block';
| |
| document.getElementById('infoboxtoggle').innerHTML = '[Hide]';
| |
| nowShown = true;
| |
| }
| |
|
| |
| if(window.storagePresent) {
| |
| var storage = globalStorage[window.location.hostname];
| |
| storage.setItem('infoboxshow-' + page, nowShown);
| |
| }
| |
| }
| |
|
| |
| /**
| |
| * jQuery version of fillEditSummaries
| |
| * @author Grunny
| |
| */
| |
| function fillEditSummaries() {
| |
|
| |
| if( !$( '#wpSummaryLabel' ).length ) {
| |
| return;
| |
| }
| |
| var summaryOptionsHtml = '',
| |
| $summaryOptionsList;
| |
|
| |
| $.get( wgScript, { title: 'Template:Stdsummaries', action: 'raw', ctype: 'text/plain' }, function( data ) {
| |
| var lines = data.split( '\n' );
| |
| for( var i = 0; i < lines.length; i++ ) {
| |
| var value = ( lines[i].indexOf( '-- ' ) === 0 ) ? lines[i].substring(3) : "";
| |
| summaryOptionsHtml += '<option value="' + value + '">' + lines[i] + '</option>';
| |
| }
| |
| $summaryOptionsList = $( '<select />' ).attr( 'id', 'stdEditSummaries' ).html( summaryOptionsHtml ).change( function() {
| |
| var value = $( this ).val();
| |
| if ( value !== '' ) {
| |
| if( skin === 'oasis' ) {
| |
| $( '#wpSummary' ).text( value );
| |
| } else {
| |
| $( '#wpSummary' ).val( value );
| |
| }
| |
| }
| |
| } );
| |
|
| |
| $( '#wpSummaryLabel' ).prepend( 'Standard summaries: ', $summaryOptionsList, '<br />' );
| |
| } );
| |
|
| |
| }
| |
|
| |
| /**
| |
| * jQuery version of fillPreloads
| |
| * @author Grunny
| |
| */
| |
| function fillPreloads() {
| |
|
| |
| if( !$( '#lf-preload' ).length ) {
| |
| return;
| |
| }
| |
| var preloadOptionsHtml = '',
| |
| $preloadOptionsList;
| |
|
| |
| $( '#lf-preload' ).attr( 'style', 'display: block' );
| |
|
| |
| $.get( wgScript, { title: 'Template:Stdpreloads', action: 'raw', ctype: 'text/plain' }, function( data ) {
| |
| var lines = data.split( '\n' );
| |
| for( var i = 0; i < lines.length; i++ ) {
| |
| var value = ( lines[i].indexOf( '-- ' ) === 0 ) ? lines[i].substring(3) : "";
| |
| preloadOptionsHtml += '<option value="' + value + '">' + lines[i] + '</option>';
| |
| }
| |
| $preloadOptionsList = $( '<select />' ).attr( 'id', 'stdSummaries' ).html( preloadOptionsHtml ).change( function() {
| |
| var value = $( this ).val();
| |
| if ( value !== '' ) {
| |
| value = 'Template:' + value + '/preload';
| |
| value = value.replace( ' ', '_' );
| |
| $.get( wgScript, { title: value, action: 'raw', ctype: 'text/plain' }, function( data ) {
| |
| insertAtCursor( document.getElementById( 'wpTextbox1' ), data );
| |
| } );
| |
| }
| |
| } );
| |
|
| |
| $( '#lf-preload-cbox' ).html( $preloadOptionsList );
| |
| } );
| |
|
| |
| $( '#lf-preload-pagename' ).html( '<input type="text" class="textbox" />' );
| |
| $( '#lf-preload-button' ).html( '<input type="button" class="button" value="Insert" onclick="doCustomPreload()" />' );
| |
|
| |
| }
| |
|
| |
| function doCustomPreload() {
| |
| var value = $( '#lf-preload-pagename > input' ).val();
| |
| value = value.replace( ' ', '_' );
| |
| $.get( wgScript, { title: value, action: 'raw', ctype: 'text/plain' }, function( data ) {
| |
| insertAtCursor( document.getElementById( 'wpTextbox1' ), data );
| |
| } );
| |
| }
| |
| // ============================================================
| |
| // END AjaxRC
| |
| // ============================================================
| |
| | |
| /* ######################################################################## */
| |
| /* ### SKRIPTLADER ### */
| |
| /* ### ---------------------------------------------------------------- ### */
| |
| /* ### Beschreibung: Lädt alle anderen Skripte. ### */
| |
| /* ### Credit: Benutzer:Porter21 ### */
| |
| /* ######################################################################## */
| |
|
| |
| // Globale Variablen einrichten
| |
| var fwConfig = {
| |
| chevronDown: '<span class="fw-chevron-down"></span>',
| |
| chevronLeft: '<span class="fw-chevron-left"></span>',
| |
| chevronRight: '<span class="fw-chevron-right"></span>',
| |
| chevronUp: '<span class="fw-chevron-up"></span>',
| |
| loadIndicator: '<img src="' + mw.config.get('stylepath') + '/common/images/ajax-loader.gif' + '" style="vertical-align: middle;" width="16" height="16" border="0" title="Im Gang..." alt="Im Gang..." />'
| |
| };
| |
|
| |
| // Lade Skripte
| |
| function fwScriptLoader () {
| |
| // Always loaded
| |
| addTitleIcons();
| |
| fancyTooltips();
| |
|
| |
| // Only loaded for specific namespaces
| |
| if (mw.config.get('wgNamespaceNumber') > 0 && mw.config.get('wgNamespaceNumber') % 2 != 0) {
| |
| // Diskussionsseiten
| |
| disableArchiveEdit();
| |
| }
| |
|
| |
| if (mw.config.get('wgNamespaceNumber') == 112 || mw.config.get('wgIsMainPage')) {
| |
| // Portale
| |
| addCountdowns();
| |
| }
| |
|
| |
| if (mw.config.get('wgNamespaceNumber') == 115) {
| |
| wikilogCommentImprovements();
| |
| }
| |
|
| |
| // Only loaded for specific pages
| |
| if (mw.config.get('wgTitle') == 'Duplicate files' && mw.config.get('wgNamespaceNumber') == 4) {
| |
| findDupFiles();
| |
| }
| |
| }
| |
|
| |
| jQuery(function($) {
| |
| fwScriptLoader();
| |
| }); | | }); |
|
| |
| /* ######################################################################## */
| |
| /* ### TITLE ICONS (Vorlage:Spiele) ### */
| |
| /* ### ---------------------------------------------------------------- ### */
| |
| /* ### Beschreibung: Fügt Icons zum Artikeltitel hinzu ### */
| |
| /* ### Credit: User:Porter21 ### */
| |
| /* ######################################################################## */
| |
|
| |
| function addTitleIcons () {
| |
| var iconBar = $('#fw-titleicons');
| |
| var previewBar = $('#fw-titleicons-preview');
| |
|
| |
| if (skin != 'monobook' && skin != 'oasis' && skin != 'wikia') {
| |
| return;
| |
| }
| |
|
| |
| if (iconBar.length > 0 && $('a', previewBar).length > 0) {
| |
| if (skin == 'oasis' || skin == 'wikia') {
| |
| var articleDiv = $('#WikiaArticle');
| |
|
| |
| if (articleDiv.length > 0) {
| |
| iconBar.css('display', 'block').prependTo(articleDiv);
| |
| }
| |
| } else if (skin == 'monobook') {
| |
| var firstHeading = $('#firstHeading').css('position', 'relative');
| |
|
| |
| if (firstHeading.length > 0) {
| |
| iconBar.css('display', 'block').appendTo(firstHeading.css('padding-right', previewBar.width() + 25));
| |
| }
| |
| }
| |
|
| |
| $('#fw-titleicons-more').append('<img width="0" height="0" class="fw-titleicons-chevron" src="http://images.wikia.com/common/skins/common/blank.gif">');
| |
|
| |
| iconBar.hover(
| |
| function () {
| |
| $(this).addClass('fw-titleicons-hover');
| |
| }, function () {
| |
| $(this).removeClass('fw-titleicons-hover');
| |
| });
| |
| }
| |
| }
| |
| /* ######################################################################## */
| |
| /* ### FANCY TOOLTIPS (Vorlage:Icon, Template:Infobox, ### */
| |
| /* ### Vorlage:Tooltip) ### */
| |
| /* ### ---------------------------------------------------------------- ### */
| |
| /* ### Beschreibung: Nicer-looking tooltips using jQuery.tipsy ### */
| |
| /* ### Credit: User:Porter21 ### */
| |
| /* ######################################################################## */
| |
|
| |
| fanction fancyTooltips () {
| |
| var ftTooltipsE = $('.fw-infobox-tooltip-cell');
| |
| var ftTooltipsS = $('.fw-icon, .fw-tooltip');
| |
|
| |
| if (ftTooltipsE.length || ftTooltipsS.length) {
| |
| mw.loader.using('jquery.tipsy', function () {
| |
| if (ftTooltipsE.length) {
| |
| // Tooltip appears to the left of the element
| |
| ftTooltipsE.tipsy({gravity: 'e'});
| |
| }
| |
| if (ftTooltipsS.length) {
| |
| // Tooltip appears above the element
| |
| ftTooltipsS.tipsy({gravity: 's'});
| |
| }
| |
| });
| |
| }
| |
| }
| |
|
| |
| /* ######################################################################## */
| |
| /* ### SHOW/HIDE ### */
| |
| /* ### ---------------------------------------------------------------- ### */
| |
| /* ### Description: Collapsible tables using jQuery. Allows tables to ### */
| |
| /* ### be collapsed, showing only the header. ### */
| |
| /* ### Credit: User:Dantman ### */
| |
| /* ### Disclaimer: See http://dev.wikia.com/wiki/ShowHide/code.js ### */
| |
| /* ######################################################################## */
| |
|
| |
| var ShowHideConfig = { autoCollapse: 1, userLang: false };
| |
| importScriptPage( 'ShowHide/code.js', 'dev' );
| |
|
| |
|
| |
| /* ######################################################################## */
| |
| /* ### DISABLE ARCHIVE EDIT ### */
| |
| /* ### ---------------------------------------------------------------- ### */
| |
| /* ### Description: Remove section edit links and gray out main edit ### */
| |
| /* ### button on archived talk pages ### */
| |
| /* ### Credit: User:Porter21 ### */
| |
| /* ######################################################################## */
| |
|
| |
| function disableArchiveEdit () {
| |
| // Configuration
| |
| var userconfig = (window.DisableArchiveEditConfig) ? window.DisableArchiveEditConfig : {};
| |
| var config = $.extend(true, {
| |
| archiveSubpage: 'Archive',
| |
| disableCompletely: false,
| |
| textColor: '#D9D9D9',
| |
| userLang: false,
| |
| // English
| |
| en: {
| |
| archived: "Archived",
| |
| archivedTooltip: "This page is an archive and should not be edited."
| |
| }
| |
| }, userconfig);
| |
|
| |
| // Function for multi-language support (by Daniel Friesen aka User:Dantman)
| |
| function msg(name) {
| |
| if ( config.userLang && wgUserLanguage in config && name in config[wgUserLanguage] )
| |
| return config[wgUserLanguage][name];
| |
| if ( wgContentLanguage in config && name in config[wgContentLanguage] )
| |
| return config[wgContentLanguage][name];
| |
| return config.en[name];
| |
| }
| |
|
| |
| // Check whether page is an archive
| |
| if ((new RegExp('\\/\[' + config.archiveSubpage.substr(0,1).toUpperCase()
| |
| + config.archiveSubpage.substr(0,1).toLowerCase() + '\]' + config.archiveSubpage.substr(1)
| |
| + '\\s\*\\d\*')).test(wgTitle)) {
| |
| // Remove "add new section" links and prepare altering "edit" page control
| |
| switch (skin) {
| |
| case 'monaco':
| |
| $('#control_addsection').remove();
| |
| $('#fe_newsection').remove();
| |
|
| |
| editlink = $('#ca-edit');
| |
| break;
| |
| case 'monobook':
| |
| $('#ca-addsection').remove();
| |
|
| |
| editlink = $('#ca-edit > a');
| |
| break;
| |
| case 'oasis':
| |
| case 'wikia':
| |
| var oasisButton = $(((wgNamespaceNumber == 3) ? '#WikiaUserPagesHeader' : '#WikiaPageHeader') + ' > ul.wikia-menu-button > li');
| |
|
| |
| oasisButton.children("a:first").prependTo($('ul:first', oasisButton)).wrap('<li />').children('img').remove();
| |
| oasisButton.prepend('<a />');
| |
| $('a[data-id="addtopic"]', oasisButton).parent().remove();
| |
|
| |
| editlink = $('a:first', oasisButton);
| |
| break;
| |
| }
| |
|
| |
| // Remove "edit section" links
| |
| $('span.editsection').remove();
| |
|
| |
| // Alter "edit" page control
| |
| if (config.disableCompletely) {
| |
| editlink.remove();
| |
| } else {
| |
| editlink.attr('title', msg('archivedTooltip')).css('color', config.textColor).text(msg('archived'));
| |
| }
| |
| }
| |
| }
| |
|
| |
| /* ######################################################################## */
| |
| /* ### DUPLICATE FILE LIST ### */
| |
| /* ### ---------------------------------------------------------------- ### */
| |
| /* ### Description: Finds duplicate files on the wiki. ### */
| |
| /* ### Credit: User:pcj (http://www.wowpedia.org) ### */
| |
| /* ######################################################################## */
| |
|
| |
| function findDupFiles(gf) {
| |
| var fileDiv = $('#mw-dupfiles');
| |
|
| |
| if (fileDiv.length) {
| |
| dil = new Array();
| |
| ajaxIndicator = stylepath + '/common/progress-wheel.gif';
| |
| output = '';
| |
| url = '/api.php?action=query&generator=allimages&prop=duplicatefiles&gailimit=500&format=json';
| |
|
| |
| if (!($('#dupFilesProgress').length)) {
| |
| fileDiv.prepend('<span style="float: right;" id="dupFilesProgress" title="In progress..."><img src="' + ajaxIndicator + '" style="vertical-align: baseline;" border="0" alt="In progress..." /></span>');
| |
| }
| |
|
| |
| if (gf) {
| |
| url += "&gaifrom=" + gf;
| |
| }
| |
|
| |
| $.getJSON( url, function (data) {
| |
| if ( data.query ) {
| |
| pages = data.query.pages;
| |
|
| |
| for (pageID in pages) {
| |
| dils = "," + dil.join();
| |
|
| |
| if ( dils.indexOf("," + pages[pageID].title) == -1
| |
| && pages[pageID].title.indexOf("File::") == -1 && pages[pageID].duplicatefiles ) {
| |
| output += "<h3><a href='/wiki/" + encodeURIComponent(pages[pageID].title).replace(/'/g, "%27") + "'>" + pages[pageID].title + "</a></h3>\n<ul>\n";
| |
|
| |
| for ( x = 0; x < pages[pageID].duplicatefiles.length; x++ ) {
| |
| output += "<li><a href='/wiki/File:" + encodeURIComponent(pages[pageID].duplicatefiles[x].name).replace(/'/g, "%27") + "'>File:" + pages[pageID].duplicatefiles[x].name + "</a></li>\n";
| |
| dil.push("File:" + pages[pageID].duplicatefiles[x].name.replace(/_/g, " "));
| |
| }
| |
| output += "</ul>\n\n"
| |
| }
| |
| }
| |
|
| |
| fileDiv.append(output);
| |
|
| |
| if (data["query-continue"]) {
| |
| setTimeout("findDupFiles('" + encodeURIComponent(data["query-continue"].allimages.gaifrom).replace(/'/g, "%27") + "');", 5000);
| |
| } else {
| |
| $('#dupFilesProgress').hide();
| |
| }
| |
| }
| |
| } );
| |
| }
| |
| }
| |
|
| |
| /* ######################################################################## */
| |
| /* ### CHAT IMPROVEMENTS ### */
| |
| /* ### ---------------------------------------------------------------- ### */
| |
| /* ### Description: Improvements for Special:Chat ### */
| |
| /* ### Credit: User:Porter21 ### */
| |
| /* ######################################################################## */
| |
|
| |
| function openChatWindow() {
| |
| vaultChatWindow = window.open('/wiki/Special:Chat', 'wikiachat', 'width=600, height=600, location=no, menubar=no, resizable=yes, scrollbars=no, status=no, toolbar=no');
| |
| return vaultChatWindow;
| |
| }
| |
|
| |
| function rewriteChatLink() {
| |
| $('#WikiHeader > nav > ul > li > ul.subnav > li > a[href="/wiki/Special:Chat"]').click(function(e){
| |
| openChatWindow();
| |
| return false;
| |
| });
| |
| }
| |
|
| |
| /* ######################################################################## */
| |
| /* ### JQUERY AJAX PATROL LINKS ### */
| |
| /* ### ---------------------------------------------------------------- ### */
| |
| /* ### Description: Mark pages as patrolled via AJAX ### */
| |
| /* ### Credit: User:Grunny (http://dev.wikia.com) ### */
| |
| /* ######################################################################## */
| |
|
| |
| function ajaxPatrolLinks() {
| |
| var ajaxIndicator = stylepath + '/common/progress-wheel.gif';
| |
| var patrolLinks = $('.patrollink');
| |
|
| |
| if(!patrolLinks.length) {
| |
| return;
| |
| }
| |
|
| |
| patrolLinks.click(function (e) {
| |
| var curLink = $(this);
| |
| var curURL = curLink.children('a').attr('href');
| |
|
| |
| e.preventDefault();
| |
| curLink.html('<img src="' + ajaxIndicator + '" style="vertical-align: baseline;" border="0" alt="Marking as patrolled..." />');
| |
| $.get(curURL, function (data) {
| |
| curLink.css('color', 'grey').text('[Marked as patrolled]');
| |
| });
| |
| });
| |
| }
| |
|
| |
| /* ######################################################################## */
| |
| /* ### WikEd Texteditor ### */
| |
| /* ### ---------------------------------------------------------------- ### */
| |
| /* ### Beschreibung: Installiert einen in-browser Texteditor. ### */
| |
| /* ### Credit: User:Grunny (http://dev.wikia.com) ### */
| |
| /* ######################################################################## */
| |
|
| |
|
| |
| // install [[Wikipedia:User:Cacycle/wikEd]] in-browser text editor
| |
|
| |
| document.write('<script type="text/javascript" src="' + 'http://en.wikipedia.org/w/index.php?title=User:Cacycle/wikEd.js'
| |
|
| |
| + '&action=raw&ctype=text/javascript"></' + 'script>');
| |
|
| |
| /* </nowiki> */
| |