Benutzer:Obsidian/common.js

Aus Stupidedia, der sinnfreien Enzyklopädie!
Wechseln zu: Navigation, Suche

Wichtig: Nach dem Speichern musst Du deinem Browser sagen, dass er die neue Version laden soll: Mozilla/Firefox: Strg-Shift-R, IE: Strg-F5, Safari: Cmd-Shift-R, Konqueror: F5.

/*View-Editor, Extrawurst für Obsi
Autor: [[Benutzer:Martinnitus]]
<nowiki>
*/
var gBearbeitenVersionFuerObsi = {};

gBearbeitenVersionFuerObsi.init = function(){
       var reqobj = {};
       if( mw.config.get( 'wgPageName' ).match( /.*\.(css|js)$/) !== null || mw.config.get( 'wgNamespaceNumber' ) % 2 !== 0 || !gBearbeitenVersionFuerObsi.usercheck( ['hda','f','sysop'] ) || mw.config.get( 'wgAction' ) !== 'view' || $.inArray( global.protection.edit , mw.config.get( 'wgUserGroups' ) ) === -1 )
          return;
       var actionlink = $( '<li id="fastaction"><span><a>Schnellaktion</a></span></li>' ).attr( 'title', 'Führt eine Schnellaktion durch.' ).click( gBearbeitenVersionFuerObsi.openwindow );
       $( 'body' ).find( 'li#ca-view' ).after( actionlink );
};

gBearbeitenVersionFuerObsi.usercheck = function( usergroups ){
      var ret = false;
      $.each( usergroups, function( i, group ){
         if( $.inArray( group, mw.config.get( 'wgUserGroups' ) ) !== -1 ){
            ret = true;
            return false;
         }
      });
      return ret;
};

gBearbeitenVersionFuerObsi.closewindow = function(){
      $( 'body' ).find( '.faction' ).remove();
};

gBearbeitenVersionFuerObsi.openwindow = function(){
       if( $( 'body' ).find( '.faction' ).length ){
          gBearbeitenVersionFuerObsi.closewindow();
          return;
       }
       var box = $( '<div class="faction" />' );
       box.html( '<div class="faction-header">View-Editor</div><div class="faction-body"><ul></ul></div>' ).appendTo( 'body' );
       $.each( gBearbeitenVersionFuerObsi.templates, function( i, temp ){
          if(
            (  !temp.groups || gBearbeitenVersionFuerObsi.usercheck( temp.groups )  ) &&
            (  ( !temp.ns && $.inArray( mw.config.get( 'wgNamespaceNumber' ), [0,102,104,106] ) !== -1 ) || $.inArray( mw.config.get( 'wgNamespaceNumber' ), temp.ns ) !== -1 || ( temp.ns && !temp.ns.length )  )
          ){
             box.find( '.faction-body ul' ).append( $( '<li />' ).html( $( '<a />' ).html( ( temp.desc ) ? temp.desc : temp.page ).attr({
               'title': 'Setzt die ' + temp.page + '-Vorlage',
               'onclick': 'gBearbeitenVersionFuerObsi.prepare("' + i + '");'
             }) ) );
             if( temp.exaction )
                $('<a />', {
                   'html': '(mit Kommentar)',
                   'title': 'Setzt die ' + temp.page + '-Vorlage mit Kommentar',
                   'onclick': 'gBearbeitenVersionFuerObsi.prepare("' + i + '",true);',
                }).before( ' &bull; ' ).appendTo( '.faction-body ul li:eq(' + ( $( '.faction-body ul li' ).length - 1 ) + ')' );
          }
       });
       box.find( '.faction-header' ).append( $( '<a />' ).html( 'X' ).attr({
         'title': 'Schließen',
         'style': 'float: right; color: black;'
       }).click( gBearbeitenVersionFuerObsi.closewindow ) );
       box.draggable( { cancel: '.faction-body' } ).autoCenter().show();
};

gBearbeitenVersionFuerObsi.templates = {
      sl: {
         desc: 'Schnelllösch-Antrag',
         page: 'SL',
         text: '{{SL|1=' + mw.config.get( 'wgUserName' ) + '}}',
         extext: '{{SL|1=' + mw.config.get( 'wgUserName' ) + '|2=[1]}}',
         sum: '[[Vorlage:SL|Schnelllöschantrag gestellt]]',
         ns: [],
         action: 'ext',
         exaction: function( c, tobj ){
            $( '.faction .faction-body' ).html(
            'In das nachfolgende Textfeld kannst du den Kommentarparameter der ' + tobj.page + '-Vorlage eintippen:\n' +
            '<textarea rows="5"></textarea>\n' +
            '<input type="button" value="Vorlage setzen" />'
            );
            $( '.faction .faction-body input[type="button"]' ).click(function(){
               var temptext = ( tobj.ext ) ? tobj.extext : tobj.text;
               reqobj.prependtext = temptext.replace( /\[1\]/, $( '.faction .faction-body textarea' ).val() ) + '\n';
               api.request( reqobj, gBearbeitenVersionFuerObsi.edit );
            });
         }
      },
      sld: {
         page: 'SL-Direkt',
         text: '{{SL-Direkt|1=' + mw.config.get( 'wgUserName' ) + '}}',
         extext: '{{SL-Direkt|1=' + mw.config.get( 'wgUserName' ) + '|2=[1]}}',
         sum: ['[[Sub:SL-Direkt|SL-Direkt: Sie schreiben, wir vertreiben!]]',
             '[[Sub:SL-Direkt|SL-Direkt: Sie tippen, wir kippen!]]',
             '[[Sub:SL-Direkt|SL-Direkt: Schreibst du noch oder löschen wir schon?]]',
             '[[Sub:SL-Direkt|SL-Direkt: 20 % auf alles, außer Sondermüll.]]',
             '[[Sub:SL-Direkt|SL-Direkt: Wir löschen schneller als die Feuerwehr.]]',
             '[[Sub:SL-Direkt|SL-Direkt is watching you!]]',
             '[[Sub:SL-Direkt|It’s time for some heroes. It’s time for SL-Direkt.]]',
             '[[Sub:SL-Direkt|SL-Direkt hat zugeschlagen!]]',
             '[[Sub:SL-Direkt|SL-Direkt: Ich kam, sah und löschte]]'],
         ns: [],
         action: 'ext',
         exaction: function( c, tobj ){
            gBearbeitenVersionFuerObsi.templates.sl.exaction( c, tobj );
         }
      },
      bau: {
         page: 'Baustelle',
         text: '{{Baustelle}}',
         extext: '{{Baustelle|1=[1]}}',
         sum: ['[[Vorlage:Baustelle|Wir brauchen Bagger, Schaufeln, einen Kran und viel Bier, bitte!]]','[[Vorlage:Baustelle|Wir brauchen Bagger, Schaufeln, Zement, einen Betonmischer und viel Bier!]]'],
         action: 'ext',
         exaction: function( c, tobj ){
            gBearbeitenVersionFuerObsi.templates.sl.exaction( c, tobj );
         }
      },
      il: {
         desc: 'Interne Links',
         page: 'IL',
         text: '{{IL}}',
         sum: '[[Vorlage:IL|Die internen Links müssen überprüft werden!]]'
      },
      kk: {
         desc: 'Kategorien',
         page: 'KK',
         text: '{{KK}}',
         sum: '[[Vorlage:KK|Die Kategorien müssen überprüft werden!]]'
      },
      f: {
         desc: 'Formatierung',
         page: 'F',
         text: '{{F}}',
         sum: '[[Vorlage:F|Formatieren, Übersichtlichkeit herstellen!]]'
      },
      r: {
         desc: 'Rechtschreibung',
         page: 'R',
         text: '{{R}}',
         sum: '[[Vorlage:R|Die Sprache dieses Wikis ist Deutsch!]]'
      },
      pic: {
         desc: 'Bilder überprüfen',
         page: 'Pic',
         text: '{{Pic}}',
         sum: '[[Vorlage:Pic|Irgendwas stimmt da mit den Bildern nicht …]]'
      },
      m: {
         desc: 'Mitteilung',
         page: 'M',
         text: '{{M|1=' + mw.config.get( 'wgUserName' ) + '|2=[1]}}',
         sum: '[[Vorlage:M|Mitteilung]]',
         ns: [],
         action: function( c, tobj ){
            gBearbeitenVersionFuerObsi.templates.sl.exaction( c, tobj );
         },
         interrupt: true
      },
      stub: {
         page: 'Stub',
         text: '{{Stub|1=2018/04/01|2=[1]}}',
         sum: '[[Vorlage:Stub|Stub!]]',
         groups: ['f','sysop'],
         action: function( c, tobj ){
            gBearbeitenVersionFuerObsi.templates.sl.exaction( c, tobj );
         },
         interrupt: true
      },
      v: {
         desc: 'Verbesserung',
         page: 'V',
         text: '{{V\n| IL       = [1]\n| KK       = [2]\n| R        = [3]\n| F        = [4]\n| Pic      = [5]\n| M        = [6]\n| Datum    = 2018/04/01\n}}',
         sum: '[[Vorlage:V|Verbesserungsprogramm]]',
         action: function( c, tobj ){
            $( '.faction .faction-body' ).html(
            'In die nachfolgenden Textfelder kannst du die Parameter der ' + tobj.page + '-Vorlage eintippen.\n' +
            '<table style="width: 100%;"><tr><td>Interne Links:</td><td><input type="text" /></td></tr>\n' +
            '<tr><td>Kategorien:</td><td><input type="text" /></td></tr>\n' +
            '<tr><td>Rechtschreibung:</td><td><input type="text" /></td></tr>\n' +
            '<tr><td>Formatierung:</td><td><input type="text" /></td></tr>\n' +
            '<tr><td>Bilder:</td><td><input type="text" /></td></tr>\n' +
            '<tr><td>Kommentar:</td><td><input type="text" /></td></tr></table>\n' +
            '<input type="button" value="Vorlage setzen" />'
            );
            $( '.faction .faction-body input[type="button"]' ).click(function(){
               reqobj.prependtext = tobj.text.replace( /\[6\]/, $( '.faction .faction-body input:eq(5)' ).val() )
                                             .replace( /\[5\]/, $( '.faction .faction-body input:eq(4)' ).val() )
                                             .replace( /\[4\]/, $( '.faction .faction-body input:eq(3)' ).val() )
                                             .replace( /\[3\]/, $( '.faction .faction-body input:eq(2)' ).val() )
                                             .replace( /\[2\]/, $( '.faction .faction-body input:eq(1)' ).val() )
                                             .replace( /\[1\]/, $( '.faction .faction-body input:eq(0)' ).val() ) + '\n';
               api.request( reqobj, gBearbeitenVersionFuerObsi.edit );
            });
         },
         interrupt: true
      },
      stop: {
         page: 'Stop',
         text: '{{Stop}}',
         sum: '[[Vorlage:Stop|Notbremse!]]',
         groups: ['f','sysop'],
         action: 'replace'
      },
      bash: {
         page: 'Bashing',
         text: '{{Bashing}}',
         sum: '[[Vorlage:Bashing|Erzähl mehr von dir!]]',
         groups: ['f','sysop'],
         action: 'replace'
      },
      ab: {
         page: 'AB',
         text: '{{AB}}',
         sum: '[[Vorlage:AB|Früher war alles besser …]]',
         ns: [6],
         action: function( c, tobj ){
            reqobj.text = reqobj.prependtext + c.replace( /\{\{([Vv]orlage:)?([Cc]C(-veraltet)?|[Gg]NU([ _]FDL|[ _]GPL)|[Pp]D|[Cc]opyright(\/Erweitert)?|[Aa]LS)[^\}]*\}\}/g , '' );
         }
      },
      lizenz: {
         page: 'Lizenz!',
         text: '{{Lizenz!}}',
         sum: '[[Vorlage:Lizenz!|Lizenzangaben ungenügend!]]',
         ns: [6],
         action: function( c, tobj ){
            gBearbeitenVersionFuerObsi.templates.ab.action( c, tobj );
         }
      }
};

gBearbeitenVersionFuerObsi.prepare = function( tem, e ){
      delete gBearbeitenVersionFuerObsi.templates[ tem ].ext;
      var temobj = gBearbeitenVersionFuerObsi.templates[ tem ];
      var userbuttons =  $.parseJSON( mw.user.options.get( 'userjs-editbuttons' ) ) || {};
      if( typeof e === 'boolean' )
         temobj.ext = true;
      if( userbuttons.buttons )
         temobj.sum = ( userbuttons.buttons[ 'template' + temobj.page.replace( /!/g , '' ) ] ) ? userbuttons.buttons[ 'template' + temobj.page.replace( /!/g , '' ) ].summary : temobj.sum;
      api.getPageContent( mw.config.get( 'wgPageName' ), gBearbeitenVersionFuerObsi.pagecontent, temobj );
};

gBearbeitenVersionFuerObsi.pagecontent = function( content, temobj ){
      reqobj = {
         action: 'edit',
         nocreate: true,
         title: mw.config.get( 'wgPageName' ),
         summary: $.isArray( temobj.sum ) ? temobj.sum[ Math.floor( Math.random() * temobj.sum.length ) ] : temobj.sum,
         prependtext: temobj.text + '\n',
         token: global.editToken
      };
      if( content.match( new RegExp( '\\{\\{([Vv]orlage:)?' + '[' + temobj.page.charAt(0).toUpperCase() + temobj.page.charAt(0).toLowerCase() + ']' + temobj.page.slice(1) + '[^\\}]*\\}\\}' ) ) !== null ){
         alert( 'Die Vorlage ist bereits eingebunden.' );
      }else{
         switch( temobj.action ){
         case undefined:
         break;
         case 'ext':
            if( temobj.ext )
               temobj.exaction( content, temobj );
         break;
         case 'replace':
            reqobj.text = reqobj.prependtext.replace( /\n/ , '' );
            delete reqobj.prependtext;
         break;
         default:
            temobj.action( content, temobj );
            delete reqobj.prependtext;
         }
         if( !temobj.interrupt && !temobj.ext )
            api.request( reqobj, gBearbeitenVersionFuerObsi.edit );
      }
};

gBearbeitenVersionFuerObsi.edit = function( data ){
      if( data.error ){
         alert( 'Fehler. Code: ' + data.error.code + ', Info: ' + data.error.info );
      }else if( data.edit.result === 'Failure' ){
         alert( 'Unbekannter Fehler.' );
      }else{
         window.location.href = mw.util.getUrl( mw.config.get( 'wgPageName' ) );
      }
};

execute( 'gBearbeitenVersionFuerObsi.init' );

Linktipps: Faditiva und 3DPresso