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' );
} );
} );
} );