1 /*
  2 Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
  3 For licensing, see LICENSE.html or http://ckeditor.com/license
  4 */
  5 
  6 (function()
  7 {
  8 	CKEDITOR.plugins.add( 'templates',
  9 		{
 10 			requires : [ 'dialog' ],
 11 
 12 			init : function( editor )
 13 			{
 14 				CKEDITOR.dialog.add( 'templates', CKEDITOR.getUrl( this.path + 'dialogs/templates.js' ) );
 15 
 16 				editor.addCommand( 'templates', new CKEDITOR.dialogCommand( 'templates' ) );
 17 
 18 				editor.ui.addButton( 'Templates',
 19 					{
 20 						label : editor.lang.templates.button,
 21 						command : 'templates'
 22 					});
 23 			}
 24 		});
 25 
 26 	var templates = {},
 27 		loadedTemplatesFiles = {};
 28 
 29 	CKEDITOR.addTemplates = function( name, definition )
 30 	{
 31 		templates[ name ] = definition;
 32 	};
 33 
 34 	CKEDITOR.getTemplates = function( name )
 35 	{
 36 		return templates[ name ];
 37 	};
 38 
 39 	CKEDITOR.loadTemplates = function( templateFiles, callback )
 40 	{
 41 		// Holds the templates files to be loaded.
 42 		var toLoad = [];
 43 
 44 		// Look for pending template files to get loaded.
 45 		for ( var i = 0, count = templateFiles.length ; i < count ; i++ )
 46 		{
 47 			if ( !loadedTemplatesFiles[ templateFiles[ i ] ] )
 48 			{
 49 				toLoad.push( templateFiles[ i ] );
 50 				loadedTemplatesFiles[ templateFiles[ i ] ] = 1;
 51 			}
 52 		}
 53 
 54 		if ( toLoad.length )
 55 			CKEDITOR.scriptLoader.load( toLoad, callback );
 56 		else
 57 			setTimeout( callback, 0 );
 58 	};
 59 })();
 60 
 61 
 62 
 63 /**
 64  * The templates definition set to use. It accepts a list of names separated by
 65  * comma. It must match definitions loaded with the templates_files setting.
 66  * @type String
 67  * @default 'default'
 68  * @name CKEDITOR.config.templates
 69  * @example
 70  * config.templates = 'my_templates';
 71  */
 72 
 73 /**
 74  * The list of templates definition files to load.
 75  * @type (String) Array
 76  * @default [ 'plugins/templates/templates/default.js' ]
 77  * @example
 78  * config.templates_files =
 79  *     [
 80  *         '/editor_templates/site_default.js',
 81  *         'http://www.example.com/user_templates.js
 82  *     ];
 83  *
 84  */
 85 CKEDITOR.config.templates_files =
 86 	[
 87 		CKEDITOR.getUrl(
 88 			'_source/' + // @Packager.RemoveLine
 89 			'plugins/templates/templates/default.js' )
 90 	];
 91 
 92 /**
 93  * Whether the "Replace actual contents" checkbox is checked by default in the
 94  * Templates dialog.
 95  * @type Boolean
 96  * @default true
 97  * @example
 98  * config.templates_replaceContent = false;
 99  */
100 CKEDITOR.config.templates_replaceContent = true;
101