/** Author : Joel Watson Description : This module allows you to add fiddles from jsFiddle.net **/ component { // Module Properties this.title = "jsFiddle"; this.author = "Joel Watson"; this.webURL = "http://existdissolve.com"; this.description = "Helps you embedd fiddles from jsFiddle"; this.version = "1.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 = "jsfiddle"; this.alias = "jsFiddle"; function configure(){ // module Settings settings = { // Developer Key "width" = "100%", "height"= "300px", "cachetime" = 30, "users"='', "tabs"='' }; // SES Routes routes = [ // Module Entry Point {pattern="/", handler="home",action="index"}, // Convention Route {pattern="/:handler/:action?"} ]; // Custom Declared Interceptors interceptors = [ { class="#moduleMapping#.interceptors.jsFiddle", name="jsFiddle" } ]; // objects binder.map("jsFiddle@jsFiddle").to("#moduleMapping#.model.jsFiddle"); } /** * Fired when the module is registered and activated. */ function onLoad(){ // Let's add ourselves to the main menu in the Modules section var menuService = controller.getWireBox().getInstance("AdminMenuService@cb"); // Add Menu Contribution menuService.addSubMenu(topMenu=menuService.MODULES,name="jsFiddle",label="jsFiddle",href="#menuService.buildModuleLink('jsFiddle','home.settings')#"); // Override settings? var settingService = controller.getWireBox().getInstance("SettingService@cb"); var args = {name="cbox-jsfiddle"}; var setting = settingService.findWhere(criteria=args); if( !isNull(setting) ){ // override settings from contentbox custom setting controller.getSetting("modules").jsFiddle.settings = deserializeJSON( setting.getvalue() ); // run process for updating user fiddles, if expired var jsFiddleService = controller.getWireBox().getInstance( "jsFiddle@jsFiddle" ); jsFiddleService.updateUserFiddles( listToArray( controller.getSetting("modules").jsFiddle.settings.users ) ); } } /** * Fired when the module is activated */ function onActivate(){ var settingService = controller.getWireBox().getInstance("SettingService@cb"); // store default settings var findArgs = {name="cbox-jsfiddle"}; var setting = settingService.findWhere(criteria=findArgs); if( isNull(setting) ){ var args = {name="cbox-jsfiddle", value=serializeJSON( settings )}; var jsFiddleSettings = settingService.new(properties=args); settingService.save( jsFiddleSettings ); } // Install the ckeditor plugin var ckeditorPluginsPath = controller.getSetting("modules")["contentbox-admin"].path & "/modules/contentbox-ckeditor/includes/ckeditor/plugins/cbjsFiddle"; var pluginPath = moduleMapping & "/includes/cbjsFiddle"; 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 = controller.getWireBox().getInstance("AdminMenuService@cb"); // Remove Menu Contribution menuService.removeSubMenu(topMenu=menuService.MODULES,name="jsFiddle"); } /** * Fired when the module is deactivated by ContentBox Only */ function onDeactivate(){ var settingService = controller.getWireBox().getInstance("SettingService@cb"); var args = {name="cbox-jsfiddle"}; 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/cbjsFiddle"; var pluginPath = controller.getSetting("modules")["jsFiddle"].path & "/includes/cbjsFiddle"; directoryDelete(path=ckeditorPluginsPath, recurse=true); } }