jQuery( document ).ready( function() { if( JSINFO['iseditor'] ) { jQuery( 'img, object' ).filter( '.media, .medialeft, .mediacenter, .mediaright' ).add( 'iframe.svgpureinsert' ).each( function() { var current = jQuery( this ); var src = this.nodeName == 'OBJECT' ? current.attr( 'data' ) : current.attr( 'src' ); var extension = src.split( '.' ).pop().toLowerCase(); if( extension == 'svg' ) { var editlink = '
'; if( current.parent()[0].nodeName == 'A' ) { current.parent().after( editlink ); } else { current.after( editlink ); } } } ); } jQuery( 'button.drawio-btn' ).on( 'click', function() { var drawio_url = 'https://www.draw.io/?embed=1&proto=json&spin=1'; if( !jQuery( '#drawio-frame' )[0] ) { var fullId = jQuery( this ).data( 'id' ); var id = fullId; var ns = ''; var ext = id.split( '.' ).pop().toLowerCase(); var idParts = id.split( ':' ); if( idParts.length > 1 ) { ns = idParts[0]; id = idParts.slice( 1 ).join( ':' ); } jQuery( 'body' ).append( '' ); var onmessage = function( e ) { var msg = JSON.parse( e.originalEvent.data ); var drawio = jQuery( '#drawio-frame' )[0].contentWindow; if( msg.event == 'init' ) { jQuery.get( DOKU_BASE + 'lib/exe/fetch.php?media=' + fullId, function( data ) { drawio.postMessage( JSON.stringify( {action: 'load', xml: data} ), '*' ); }, 'text' ); } else if( msg.event == 'save' ) { drawio.postMessage( JSON.stringify( {action: 'export', format: 'xmlsvg', spin: 'Speichern' } ), '*' ); } else if( msg.event == 'export' ) { if( msg.format != 'svg' ) { alert( 'Nicht unterstützt!' ); } else { var datastr = '\n' + decodeURIComponent( atob( msg.data.split( ',' )[1] ).split( '' ).map( function( c ) { return '%' + ( '00' + c.charCodeAt( 0 ).toString( 16 ) ).slice( -2 ); } ).join( '' ) ); jQuery.post( DOKU_BASE + 'lib/exe/ajax.php?call=mediaupload&ow=checked&ns=' + ns + '&qqfile=' + id + '§ok=' + JSINFO['sectok'], datastr ) .done( function() { jQuery( window ).off( 'message', onmessage ); jQuery( '#drawio-frame' ).remove(); setTimeout( function() { location.reload(); }, 200 ); } ).fail( function() { alert( 'Fehler beim Speichern' ); } ); } } else if( msg.event == 'exit' ) { jQuery( window ).off( 'message', onmessage ); jQuery( '#drawio-frame' ).remove(); } }; jQuery( window ).on( 'message', onmessage ); jQuery( '#drawio-frame' ).attr( 'src', drawio_url ); } } ); jQuery( 'a#drawio-newfile-create' ).on( 'click', function( e ) { e.preventDefault(); var ns = NS; var id = prompt( 'Name des neuen Diagramms' ); if( !/^[\w][\w\.\-]*$/.test( id ) ) { alert( 'Dateiname enthält ungültige Zeichen' ); return; } id += '.svg'; var datastr = '' + ''; jQuery.post( DOKU_BASE + 'lib/exe/ajax.php?call=mediaupload&ns=' + ns + '&qqfile=' + id + '§ok=' + JSINFO['sectok'], datastr ) .done( function( response ) { if( response.error ) { alert( 'Fehler beim Speichern: ' + response.error ); } else { alert( 'Diagramm ' + response.id + ' angelegt' ); } } ).fail( function() { alert( 'Fehler beim Speichern' ); } ); } ); } );