34 lines
1.7 KiB
JavaScript
34 lines
1.7 KiB
JavaScript
define(["codemirror", 'js/utils/handle_iframe_binding', "utility"],
|
|
function(CodeMirror, IframeBinding) {
|
|
var editWithCodeMirror = function(model, contentName, baseAssetUrl, textArea) {
|
|
var content = rewriteStaticLinks(model.get(contentName), baseAssetUrl, '/static/');
|
|
model.set(contentName, content);
|
|
var $codeMirror = CodeMirror.fromTextArea(textArea, {
|
|
mode: "text/html",
|
|
lineNumbers: true,
|
|
lineWrapping: true,
|
|
autoCloseTags: true
|
|
});
|
|
$codeMirror.on('change', function () {
|
|
$('.save-button').removeClass('is-disabled').attr('aria-disabled', false);
|
|
});
|
|
$codeMirror.setValue(content);
|
|
$codeMirror.clearHistory();
|
|
return $codeMirror;
|
|
};
|
|
|
|
var changeContentToPreview = function (model, contentName, baseAssetUrl) {
|
|
var content = rewriteStaticLinks(model.get(contentName), '/static/', baseAssetUrl);
|
|
// Modify iframe (add wmode=transparent in url querystring) and embed (add wmode=transparent as attribute)
|
|
// tags in html string (content) so both tags will attach to dom and don't create z-index problem for other popups
|
|
// Note: content is modified before assigning to model because embed tags should be modified before rendering
|
|
// as they are static objects as compared to iframes
|
|
content = IframeBinding.iframeBindingHtml(content);
|
|
model.set(contentName, content);
|
|
return content;
|
|
};
|
|
|
|
return {'editWithCodeMirror': editWithCodeMirror, 'changeContentToPreview': changeContentToPreview};
|
|
}
|
|
);
|