diff --git a/doc/api/hooks_client-side.md b/doc/api/hooks_client-side.md index 367e0688..1c9ca5af 100644 --- a/doc/api/hooks_client-side.md +++ b/doc/api/hooks_client-side.md @@ -111,7 +111,7 @@ Called from: src/static/js/ace.js Things in context: None -This hook is provided to allow custom CSS files to be loaded. The return value should be an array of paths relative to the plugins directory. +This hook is provided to allow custom CSS files to be loaded. The return value should be an array of resource urls or paths relative to the plugins directory. ## aceInitInnerdocbodyHead Called from: src/static/js/ace.js diff --git a/src/static/js/ace.js b/src/static/js/ace.js index 455bfaa3..a5e365ce 100644 --- a/src/static/js/ace.js +++ b/src/static/js/ace.js @@ -229,7 +229,12 @@ function Ace2Editor() $$INCLUDE_CSS("../static/css/pad.css"); $$INCLUDE_CSS("../static/custom/pad.css"); - var additionalCSS = _(hooks.callAll("aceEditorCSS")).map(function(path){ return '../static/plugins/' + path }); + var additionalCSS = _(hooks.callAll("aceEditorCSS")).map(function(path){ + if (path.match(/\/\//)) { // Allow urls to external CSS - http(s):// and //some/path.css + return path; + } + return '../static/plugins/' + path; + }); includedCSS = includedCSS.concat(additionalCSS); pushStyleTagsFor(iframeHTML, includedCSS); @@ -308,7 +313,12 @@ window.onload = function () {\n\ $$INCLUDE_CSS("../static/custom/pad.css"); - var additionalCSS = _(hooks.callAll("aceEditorCSS")).map(function(path){ return '../static/plugins/' + path }); + var additionalCSS = _(hooks.callAll("aceEditorCSS")).map(function(path){ + if (path.match(/\/\//)) { // Allow urls to external CSS - http(s):// and //some/path.css + return path; + } + return '../static/plugins/' + path } + ); includedCSS = includedCSS.concat(additionalCSS); pushStyleTagsFor(outerHTML, includedCSS);