[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/contentbox-modules/CKCodeMirror/master/ModuleConfig.cfc [Back]  [Original]

/**
* ContentBox - A Modular Content Platform
* Copyright since 2012 by Ortus Solutions, Corp
* www.ortussolutions.com/products/contentbox
* ---
* This module enhances ckeditor to allow them to use code mirror for its source editing
**/
component {

	// Module Properties
	this.title 				= "CKCodeMirror";
	this.author 			= "Ortus Solutions, Corp";
	this.webURL 			= "http://www.ortussolutions.com";
	this.description 		= "Adds CodeMirror support to CKEditor";
	this.version			= "2.0.0";
	// If true, looks for views in the parent first, if not found, then in the module. Else vice-versa
	this.viewParentLookup 	= true;
	// If true, looks for layouts in the parent first, if not found, then in module. Else vice-versa
	this.layoutParentLookup = true;
	// Module Entry Point
	this.entryPoint			= "ckcodemirror";
	this.aliases 			= [ "ckcodemirror" ];

	function configure(){

		// Compressor Settings
		settings = {
			 "theme" = "xq-dark",
			 "mode" = "htmlmixed",
 			 "autoCloseBrackets": true,
             "autoCloseTags": true,
             "autoFormatOnStart": false,
             "autoFormatOnUncomment": true,
             "continueComments": true,
             "enableCodeFolding": true,
             "enableCodeFormatting": true,
             "enableSearchTools": true,
             "highlightMatches": true,
             "indentWithTabs": false,
             "lineNumbers": true,
             "lineWrapping": true,
             "matchBrackets": true,
             "matchTags": true,
             "showAutoCompleteButton": true,
             "showCommentButton": true,
             "showFormatButton": true,
             "showSearchButton": true,
             "showTrailingSpace": true,
             "showUncommentButton": true,
             "styleActiveLine": true,
             "useBeautifyOnStart": false,
             "autoLoadCodeMirror": true,
             "maxHighlightLineLength": 1000
		};

		// SES Routes
		routes = [
			// Module Entry Point
			{pattern="/", handler="home",action="index"},
			// Convention Route
			{pattern="/:handler/:action?"}
		];

		// Interceptors
		interceptors = [
		];

	}

	/**
	* CKEditor Plugin Integrations
	*/
	function cbadmin_ckeditorExtraPlugins( event, interceptData ){
		arrayAppend( arguments.interceptData.extraPlugins, "codemirror" );
	}

	/**
	* CKEditor Config Integration
	*/
	function cbadmin_ckeditorExtraConfig( event, interceptData ){
		var settingService 	= wirebox.getInstance("SettingService@cb");
		var args 			= { name="cbox-ckcodemirror" };
		var allSettings 	= deserializeJSON( settingService.findWhere( criteria=args ).getValue() );

		arguments.interceptData.extraConfig &= "codemirror : {
			theme : '#allSettings.theme#',
			mode : '#allSettings.mode#',
			autoCloseBrackets : #allSettings.autoCloseBrackets#,
			autoCloseTags : #allSettings.autoCloseTags#,
			lineNumbers : #allSettings.lineNumbers#,
			autoFormatOnStart : #allSettings.autoFormatOnStart#,
			autoFormatOnUncomment : #allSettings.autoFormatOnUncomment#,
			continueComments : #allSettings.continueComments#,
			enableCodeFolding : #allSettings.enableCodeFolding#,
			enableSearchTools : #allSettings.enableSearchTools#,
			highlightMatches : #allSettings.highlightMatches#,
			indentWithTabs : #allSettings.indentWithTabs#,
			lineWrapping : #allSettings.lineWrapping#,
			matchBrackets : #allSettings.matchBrackets#,
			matchTags : #allSettings.matchTags#,
			showAutoCompleteButton : #allSettings.showAutoCompleteButton#,
			showCommentButton : #allSettings.showCommentButton#,
			showFormatButton : #allSettings.showFormatButton#,
			showSearchButton : #allSettings.showSearchButton#,
			showTrailingSpace : #allSettings.showTrailingSpace#,
			showUncommentButton : #allSettings.showUncommentButton#,
			styleActiveLine : #allSettings.styleActiveLine#,
			useBeautifyOnStart : #allSettings.useBeautifyOnStart#,
			autoLoadCodeMirror : #allSettings.autoLoadCodeMirror#,
			maxHighlightLineLength : #allSettings.maxHighlightLineLength#
		}";
	}

	/**
	* Fired when the module is registered and activated.
	*/
	function onLoad(){
		// Let's add ourselves to the main menu in the Modules section
		var menuService = wirebox.getInstance( "AdminMenuService@cb" );
		// Add Menu Contribution
		menuService.addSubMenu(
			topMenu 	= menuService.MODULES,
			name 		= "CKCodeMirror",
			label 		= "CK Code Mirror",
			href 		= "#menuService.buildModuleLink( 'CKCodeMirror', 'home.settings' )#"
		);
		// Override settings?
		var settingService 	= wirebox.getInstance( "SettingService@cb" );
		var args 			= { name="cbox-ckcodemirror" };
		var setting 		= settingService.findWhere( criteria=args );
		if( !isNull( setting ) ){
			// override settings from contentbox custom setting
			var allSettings = deserializeJSON( setting.getvalue() );

			for (var key in allSettings){
				if( structKeyExists( controller.getSetting( "modules" ).CKCodeMirror.settings, key ) ){
					controller.getSetting( "modules" ).CKCodeMirror.settings[ key ] = allSettings[ key ];
				}
			}
		}
	}


	/**
	* Fired when the module is activated
	*/
	function onActivate(){
		var settingService = wirebox.getInstance( "SettingService@cb" );
		// store default settings
		var findArgs = { name="cbox-ckcodemirror" };
		var setting = settingService.findWhere( criteria=findArgs );
		if( isNull( setting ) ){
			var args = { name="cbox-ckcodemirror", value=serializeJSON( settings ) };
			var codeMirrorSettings = settingService.new( properties=args );
			settingService.save( codeMirrorSettings );
		}

		// Install the ckeditor plugin
		var ckeditorPluginsPath = controller.getSetting( "modules" )[ "contentbox-admin" ].path & "/modules/contentbox-ckeditor/includes/ckeditor/plugins/codemirror";
		var pluginPath  		= moduleMapping & "/includes/codemirror";

		directoryCopy( source=pluginPath, destination=ckeditorPluginsPath, recurse=true );
	}

	/**
	* Fired when the module is unregistered and unloaded
	*/
	function onUnload(){
		// Let's remove ourselves to the main menu in the Modules section
		var menuService = wirebox.getInstance( "AdminMenuService@cb" );
		// Remove Menu Contribution
		menuService.removeSubMenu( topMenu=menuService.MODULES, name="CKCodeMirror" );
	}

	/**
	* Fired when the module is deactivated by ContentBox Only
	*/
	function onDeactivate(){
		var settingService 	= wirebox.getInstance( "SettingService@cb" );
		var args  			= { name="cbox-ckcodemirror" };
		var setting  		= settingService.findWhere( criteria=args );
		if( !isNull( setting ) ){
			settingService.delete( setting );
		}
		// Uninstall the ckeditor plugin
		var ckeditorPluginsPath = controller.getSetting( "modules" )[ "contentbox-admin" ].path & "/modules/contentbox-ckeditor/includes/ckeditor/plugins/codemirror";
		directoryDelete( path=ckeditorPluginsPath, recurse=true );
	}
}

Web Proxy Viewer  |  New URL  |  Original Page