2017-04-15 01:34:36 +03:00

196 lines
7.5 KiB
JavaScript
Executable File

//Google map plugin by zmmaj from zmajsoft-team
//blah... version 2.
//problems? write to zmajsoft@zmajsoft.com
// Register a new CKEditor plugin.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.resourceManager.html#add
CKEDITOR.plugins.add( 'gg',
{
// The plugin initialization logic goes inside this method.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.pluginDefinition.html#init
init: function( editor )
{
// Create an editor command that stores the dialog initialization command.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.command.html
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dialogCommand.html
editor.addCommand( 'simpleLinkDialog', new CKEDITOR.dialogCommand( 'simpleLinkDialog' ) );
// Create a toolbar button that executes the plugin command defined above.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.ui.html#addButton
editor.ui.addButton( 'gg',
{
// Toolbar button tooltip.
label: 'Insert a ZS Google map',
// Reference to the plugin command name.
command: 'simpleLinkDialog',
// Button's icon file path.
icon: this.path + 'images/gg.png'
} );
// Add a new dialog window definition containing all UI elements and listeners.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dialog.html#.add
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dialog.dialogDefinition.html
CKEDITOR.dialog.add( 'simpleLinkDialog', function( editor )
{
return {
// Basic properties of the dialog window: title, minimum size.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dialog.dialogDefinition.html
title : 'ZmajSoft Google Map',
minWidth : 400,
minHeight : 200,
// Dialog window contents.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dialog.definition.content.html
contents :
[
{
// Definition of the Settings dialog window tab (page) with its id, label and contents.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dialog.contentDefinition.html
id : 'general',
label : 'Settings',
elements :
[
// Dialog window UI element: HTML code field.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.ui.dialog.html.html
{
type : 'html',
// HTML code to be shown inside the field.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.ui.dialog.html.html#constructor
html : 'This dialog window lets you create and embed into text simple Google Map picture. </br> click <a href="http://www.mapcoordinates.net/en" target="_blank"> -->HERE<--</a> to find Latitude/Longitude.'
},
// Dialog window UI element: a text input field for the Latitude.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.ui.dialog.textInput.html
{
type : 'text',
id : 'lat',
label : 'Latitude',
validate : CKEDITOR.dialog.validate.notEmpty( 'The link must have LATITUDE.' ),
required : true,
commit : function( data )
{
data.lat = this.getValue();
}
},
// Again same thing, this time for Longitude
{
type : 'text',
id : 'lon',
label : 'Longitude ',
validate : CKEDITOR.dialog.validate.notEmpty( 'The link must have a LONGITUDE.' ),
required : true,
commit : function( data )
{
data.lon = this.getValue();
}
},
{
type : 'text',
id : 'hor',
label : 'Map Horizontal size in px (default=512 max=640)',
validate : CKEDITOR.dialog.validate.notEmpty( 'The link must have a horizontal size.' ),
required : true,
commit : function( data )
{
data.hor = this.getValue();
}
},
{
type : 'text',
id : 'ver',
label : 'Map vertical size in px (default=512 max=640)',
validate : CKEDITOR.dialog.validate.notEmpty( 'The link must have a vertical size.' ),
required : true,
commit : function( data )
{
data.ver= this.getValue();
}
},
// Dialog window UI element: a selection field with link styles.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.ui.dialog.select.html
{
type : 'select',
id : 'style',
label : 'map type (default=roadmap)',
// Items that will appear inside the selection field, in pairs of displayed text and value.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.ui.dialog.select.html#constructor
items :
[
[ 'roadmap', 'r' ],
[ 'satellite', 's' ],
[ 'hybrid', 'h' ],
[ 'terrain', 't' ]
],
commit : function( data )
{
data.style = this.getValue();
}
},
{
type : 'select',
id : 'zoom',
label : 'Zoom Map (default=10)',
// Items that will appear inside the selection field, in pairs of displayed text and value.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.ui.dialog.select.html#constructor
items :
[
[ '<none>', '10' ],[ '0', '0' ],[ '1', '1' ], ['2', '2' ], [ '3', '3' ], [ '4', '4' ], [ '5', '5' ], [ '6', '6' ],
[ '7', '7' ], [ '8', '8' ], [ '9', '9' ], [ '10', '10' ], [ '11', '11' ], [ '12', '12' ], [ '13', '13' ], [ '14', '14' ],
[ '15', '15' ], [ '16', '16' ], [ '17', '17' ], [ '18', '18' ], [ '19', '19' ], [ '20', '20' ], [ '21', '21' ]
],
commit : function( data )
{
data.zoom = this.getValue();
}
},
// Dialog window UI element: HTML code field.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.ui.dialog.html.html
{
type : 'html',
// HTML code to be shown inside the field.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.ui.dialog.html.html#constructor
html : 'If you have problems Email to zmajsoft@zmajsoft.com </br> <a href="www.zmajsoft.com" target="_blank">zmmaj</a> from zmajSoft-team'
}
]
}
],
onOk : function()
{
// Create a link element and an object that will store the data entered in the dialog window.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dom.document.html#createElement
var dialog = this,
data = {},
link = editor.document.createElement( 'a' );
// Populate the data object with data entered in the dialog window.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dialog.html#commitContent
this.commitContent( data );
// Set the URL (href attribute) of the link element.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dom.element.html#setAttribute
// link.setAttribute( 'href', data.url );
var tip="roadmap";
switch( data.style )
{
case 'r' :
tip='roadmap';
break;
case 's' :
tip='satellite';
break;
case 'h' :
tip='hybrid';
break;
case 't' :
tip='terrain';
break;
}
// Insert the link element into the current cursor position in the editor.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#insertElement
editor.insertHtml('<img src="http://maps.googleapis.com/maps/api/staticmap?zoom='+data.zoom+'&size='+data.hor+'x'+data.ver+'&maptype='+tip+'&markers=color:red%7Ccolor:red%7Clabel:C%7C'+data.lat+','+data.lon+'&sensor=false"/>');
}
};
} );
}
} );