|
značky: nahrazeno ruční vrácení zpět |
| (Není zobrazeno 5 mezilehlých verzí od stejného uživatele.) |
| Řá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) =====
| |
| 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' } );
| |
| }
| |
|
| |
| // Helper – registrace příkazu, pokud není
| |
| function ensureCmd( registry, name, args ) {
| |
| if ( registry && !registry.lookup( name ) ) {
| |
| registry.register( new ve.ui.Command( name, 'content', 'insert', {
| |
| args: args, supportedSelections: [ 'linear' ]
| |
| } ) );
| |
| }
| |
| }
| |
|
| |
| // 2) VE (vizuální režim) – uzel {type:'break'} = <br>
| |
| ensureCmd( ve.ui.commandRegistry, 'mwSoftBreak', [ { type: 'break' } ] );
| |
|
| |
| // 3) 2017 wikitext – vlož doslova "<br />"
| |
| ensureCmd( ve.ui.wikitextCommandRegistry, 'mwSoftBreak', [ '<br />', true, true ] );
| |
|
| |
| // 4) Po aktivaci editoru přidej příkaz a fallback capture handler
| |
| 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' ] );
| |
| }
| |
|
| |
| // Fallback: když by registrace selhala, chytneme klávesu dřív než VE
| |
| var node = surface && surface.$element && surface.$element[0];
| |
| if ( !node || node._mwSoftBreakBound ) return;
| |
| node._mwSoftBreakBound = true;
| |
|
| |
| node.addEventListener( 'keydown', function (e) {
| |
| if ( e.key === 'Enter' && e.shiftKey ) {
| |
| e.preventDefault();
| |
| e.stopImmediatePropagation();
| |
| try {
| |
| // 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
| |
| } );
| |
|
| |
| } );
| |