Files
2026-02-22 21:59:33 +01:00

184 lines
5.5 KiB
JavaScript

CKEDITOR.dialog.add( 'googlemapsMarker', function( editor ) {
'use strict';
var numbering = function( id ) { return id + CKEDITOR.tools.getNextNumber(); },
markerIcon = numbering( 'markerIcon' ),
GMapTexts = numbering( 'GMapTexts' ),
googleMaps_Icons = editor.config.googleMaps_Icons,
markerImage,
point,
theDialog;
function getIcon( color ) {
var data = googleMaps_Icons && googleMaps_Icons[ color ];
if (!data)
return 'https://maps.gstatic.com/mapfiles/ms/micons/' + color + '-dot.png';
// fixme...
return data.marker.image;
}
return {
title : editor.lang.googlemaps.markerProperties,
minWidth : 310,
minHeight : 240,
buttons : [ {
type : 'button',
id : 'deleteMarker',
label : editor.lang.googlemaps.deleteMarker,
onClick : function( evt ) {
var dialog = evt.sender.getDialog();
dialog.onRemoveMarker();
dialog.hide();
}
}, CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton ],
onLoad: function() {
theDialog = this;
this.setValues = function( data ) { this.definition.setValues.call(this, data); };
this.getValues = function() { return this.definition.getValues.call(this); };
// We have to destroy the internal CKEditor instance when this dialog is destroyed:
this.destroy = CKEDITOR.tools.override( this.destroy, function( original ) {
return function() {
CKEDITOR.instances[ GMapTexts ].destroy();
original.call( this );
};
} );
},
setValues : function(data) {
point = data;
var control = this.getContentElement( 'Info', 'txtTooltip');
control.setValue( data.title );
control.setInitValue();
control = this.getContentElement( 'Info', 'txtWidth');
control.setValue( data.maxWidth );
control.setInitValue();
var instance = CKEDITOR.instances[ GMapTexts ];
if (instance)
instance.setData( data.text );
else
document.getElementById( GMapTexts ).value = data.text;
markerImage = data.color;
document.getElementById( markerIcon ).src = getIcon( markerImage );
},
getValues : function() {
return {
title: this.getValueOf( 'Info', 'txtTooltip'),
maxWidth: this.getValueOf( 'Info', 'txtWidth'),
text: CKEDITOR.instances[ GMapTexts ].getData(),
color: markerImage
};
},
contents : [
{
id : 'Info',
elements :
[
{
type : 'hbox',
widths : [ '150px', '80px; padding-right:2px', '10px', '60px' ],
children :
[
{
id : 'txtTooltip',
type : 'text',
widths: [ '70px', '90px' ],
width : '160px',
labelLayout : 'horizontal',
label : editor.lang.googlemaps.tooltip
},
{
id : 'txtWidth',
type : 'text',
widths: [ '40px', '36px' ],
width : '50px',
labelLayout : 'horizontal',
label : editor.lang.googlemaps.width
},
{
type : 'html',
html : '<div>px</div>'
},
{
type : 'html',
onClick : function(evt) {
var target = evt.data.getTarget(),
targetName = target.getName();
if (targetName == 'img') {
editor.openNestedDialog( 'googlemapsIcons', function(dialog) {
dialog.initialName = markerImage;
dialog.onSelect = function( name ) { markerImage = name; document.getElementById( markerIcon ).src = getIcon( markerImage );};
}, null);
}
},
html : '<div style="width:60px"><label style="float:left">' + editor.lang.googlemaps.markerIcon + '</label><img id="' + markerIcon + '" class="cke_hand"></div>'
}
]
},
{
type : 'html',
onLoad : function() {
var removePlugins = 'elementspath,resize,googlemaps';
// we have to remove any plugin that was removed in the main instance.
var removed = editor.config.removePlugins;
if (removed)
removePlugins += ',' + removed;
// http://dev.ckeditor.com/ticket/10731
if (editor.config.wsc_stack)
delete editor.config.wsc_stack;
if (CKEDITOR.config.wsc_stack)
CKEDITOR.config.wsc_stack = [];
// Copy all the configuration options
var config = CKEDITOR.tools.clone( editor.config );
config.customConfig = '';
config.width = '450px';
config.height = 140;
config.toolbar = editor.config.googleMaps_toolbar || [ [ 'Bold', 'Italic', 'Link', 'Image' ], [ 'Undo', 'Redo' ], [ 'GMapsInsertDirections' ] ];
config.removePlugins = removePlugins;
config.toolbarCanCollapse = false;
config.on = {
// Add extra buttons
'pluginsLoaded' : function(ev ) {
ev.editor.addCommand( 'gmapsinsertdirections', {
exec : function( thisEditor ) {
var link = 'http://maps.google.com/maps?daddr=' + encodeURIComponent( theDialog.getValueOf('Info', 'txtTooltip')) + ' @' + point.getPosition().toUrlValue();
thisEditor.insertHtml( '<a href="' + link + '" target="_blank">' + editor.lang.googlemaps.directionsTitle + '</a>' );
}
} );
// Add a custom toolbar button
ev.editor.ui.addButton( 'GMapsInsertDirections',
{
label : editor.lang.googlemaps.directions,
/* icon from FamFamFam http://www.famfamfam.com/lab/icons/silk/ */
icon : editor.plugins.googlemaps.path + '/icons/gmapsinsertdirections.png', // %REMOVE_LINE_CORE%
command : 'gmapsinsertdirections'
} );
}
};
CKEDITOR.replace( GMapTexts, config);
},
html : '<textarea id="' + GMapTexts + '"></textarea>'
}
]
}
]
};
} );