Toggle menu
Toggle preferences menu
Toggle personal menu
Nejste přihlášen(a)
Your IP address will be publicly visible if you make any edits.

MediaWiki:Citizen.js: Porovnání verzí

MediaWiki interface page
Bez shrnutí editace
značka: revertováno
Bez shrnutí editace
značka: revertováno
Řádek 1: Řádek 1:
/* Zde uvedený JavaScript bude použit pro všechny uživatele při načtení každé stránky */
/* Zde uvedený JavaScript bude použit pro všechny uživatele při načtení každé stránky */
// ===== Shift+Enter = měkký zlom řádku (VE i 2017 wikitext) =====
// ===== Shift+Enter = měkký zlom řádku (funguje ve VE i ve 2017 wikitext editoru) =====
mw.loader.using( 'ext.visualEditor.desktopArticleTarget.init' ).then( function () {
mw.loader.using( 'ext.visualEditor.desktopArticleTarget.init' ).then( function () {
   // 1) Zkratka Shift+Enter
   // 1) Zkratka Shift+Enter
   if ( !ve.ui.triggerRegistry.lookup( 'mwSoftBreak' ) ) {
   if ( !ve.ui.triggerRegistry.lookup( 'mwSoftBreak' ) ) {
Řádek 8: Řádek 7:
   }
   }


   // Helper – registrace příkazu, pokud není
   // Pomůcka pro registraci příkazu jen pokud chybí
   function ensureCmd( registry, name, args ) {
   function ensureCmd( registry, name, args ) {
     if ( registry && !registry.lookup( name ) ) {
     if ( registry && !registry.lookup( name ) ) {
       registry.register( new ve.ui.Command( name, 'content', 'insert', {
       registry.register( new ve.ui.Command( name, 'content', 'insert', {
         args: args, supportedSelections: [ 'linear' ]
         args: args,
        supportedSelections: [ 'linear' ]
       } ) );
       } ) );
     }
     }
   }
   }


   // 2) VE (vizuální režim) – uzel {type:'break'} = <br>
   // 2) Vizuální režim (VE) – vlož DM uzel break => <br>
   ensureCmd( ve.ui.commandRegistry, 'mwSoftBreak', [ { type: 'break' } ] );
   ensureCmd( ve.ui.commandRegistry, 'mwSoftBreak', [ { type: 'break' } ] );


   // 3) 2017 wikitext – vlož doslova "<br />"
   // 3) 2017 wikitext režim – vlož doslova "<br />"
   ensureCmd( ve.ui.wikitextCommandRegistry, 'mwSoftBreak', [ '<br />', true, true ] );
   ensureCmd( ve.ui.wikitextCommandRegistry, 'mwSoftBreak', [ '<br />', true, true ] );


   // 4) Po aktivaci editoru přidej příkaz a fallback capture handler
   // 4) Po aktivaci editoru příkaz připoj k aktuálnímu povrchu + fallback pro klávesu
   mw.hook( 've.activationComplete' ).add( function () {
   mw.hook( 've.activationComplete' ).add( function () {
     var surface = ve.init.target && ve.init.target.getSurface && ve.init.target.getSurface();
     var surface = ve.init.target && ve.init.target.getSurface && ve.init.target.getSurface();
     if ( surface && surface.addCommands ) {
     if ( surface && surface.addCommands ) surface.addCommands( [ 'mwSoftBreak' ] );
      surface.addCommands( [ 'mwSoftBreak' ] );
    }


    // Fallback: když by registrace selhala, chytneme klávesu dřív než VE
     var node = surface && surface.$element && surface.$element[0];
     var node = surface && surface.$element && surface.$element[0];
     if ( !node || node._mwSoftBreakBound ) return;
     if ( !node || node._mwSoftBreakBound ) return;
     node._mwSoftBreakBound = true;
     node._mwSoftBreakBound = true;


    // Capture posluchač – kdyby registry z nějakého důvodu nestihly naskočit
     node.addEventListener( 'keydown', function (e) {
     node.addEventListener( 'keydown', function (e) {
       if ( e.key === 'Enter' && e.shiftKey ) {
       if ( e.key === 'Enter' && e.shiftKey ) {
         e.preventDefault();
         e.preventDefault();
         e.stopImmediatePropagation();
         e.stopImmediatePropagation();
         try {
         try { surface.execute( 'content', 'insert', [ { type: 'break' } ] ); } catch (err) {}
          // VE vizuální režim
          surface.execute( 'content', 'insert', [ { type: 'break' } ] );
        } catch (err) {
          // 2017 wikitext – nouzově nic neděláme, o to se postará příkaz výše
        }
       }
       }
     }, true ); // capture = true
     }, true );
   } );
   } );
} );
} );

Verze z 9. 10. 2025, 17:32

/* Zde uvedený JavaScript bude použit pro všechny uživatele při načtení každé stránky */
// ===== Shift+Enter = měkký zlom řádku (funguje ve VE i ve 2017 wikitext editoru) =====
mw.loader.using( 'ext.visualEditor.desktopArticleTarget.init' ).then( function () {
  // 1) Zkratka Shift+Enter
  if ( !ve.ui.triggerRegistry.lookup( 'mwSoftBreak' ) ) {
    ve.ui.triggerRegistry.register( 'mwSoftBreak', { pc: 'shift+enter', mac: 'shift+enter' } );
  }

  // Pomůcka pro registraci příkazu jen pokud chybí
  function ensureCmd( registry, name, args ) {
    if ( registry && !registry.lookup( name ) ) {
      registry.register( new ve.ui.Command( name, 'content', 'insert', {
        args: args,
        supportedSelections: [ 'linear' ]
      } ) );
    }
  }

  // 2) Vizuální režim (VE) – vlož DM uzel break => <br>
  ensureCmd( ve.ui.commandRegistry, 'mwSoftBreak', [ { type: 'break' } ] );

  // 3) 2017 wikitext režim – vlož doslova "<br />"
  ensureCmd( ve.ui.wikitextCommandRegistry, 'mwSoftBreak', [ '<br />', true, true ] );

  // 4) Po aktivaci editoru příkaz připoj k aktuálnímu povrchu + fallback pro klávesu
  mw.hook( 've.activationComplete' ).add( function () {
    var surface = ve.init.target && ve.init.target.getSurface && ve.init.target.getSurface();
    if ( surface && surface.addCommands ) surface.addCommands( [ 'mwSoftBreak' ] );

    var node = surface && surface.$element && surface.$element[0];
    if ( !node || node._mwSoftBreakBound ) return;
    node._mwSoftBreakBound = true;

    // Capture posluchač – kdyby registry z nějakého důvodu nestihly naskočit
    node.addEventListener( 'keydown', function (e) {
      if ( e.key === 'Enter' && e.shiftKey ) {
        e.preventDefault();
        e.stopImmediatePropagation();
        try { surface.execute( 'content', 'insert', [ { type: 'break' } ] ); } catch (err) {}
      }
    }, true );
  } );
} );