Umbraco 7 编辑器tinymce配置

发布于:
分类: Microsoft.Net Tagged

Umbraco 发布了新的版本,Umbraco 7,全新的后台。看上去非常不错。

但的他有编辑器默认配置还是有点满足不了需要,查了一下文档,有些配置可以在 <InstallPath>ConfigtinyMceConfig.config 中修改

<commands> 中增加一个按钮(文字颜色选择器),如下

<command>
            <umbracoAlias>forecolor</umbracoAlias>
            <icon>images/editor/forecolor.gif</icon>
            <tinyMceCommand value="" userInterface="false" frontendCommand="forecolor">forecolor</tinyMceCommand>
            <priority>1001</priority>
 </command>

 

当然增加了这个不会有任何效果的,好像他依赖 textcolor 插件,所以在 <plugins> 中启用这个插件

<plugin loadOnFrontend="true">textcolor</plugin>

 

依次类推,就这么简单。

但是,我遇到一个难题,想在 Formats 中分组显示各种样式,默认可以在后台配置 启用编辑器CSS样式解析,但是不分组显示,不是很方便啊。不想动他源码,不然升级麻烦。

后来发现在 <InstallPath>UmbracoJsumbraco.controllers.js 文件中用ajax 的方法加载配置(style_formats: styleFormats),所以。。嘿嘿,修改这个脚本。。

//config value on the data type
var toolbar = editorConfig.toolbar.join(" | ");
var stylesheets = [];
//----- 修改部分 : 开始 -----
	//注释掉 styleFormats,在下面增加部分重新声明并初始化
	//var styleFormats = [];
	//增加 styleFormatsCustom ,替代 styleFormats 用于Custom 项
	var styleFormatsCustom = [];
//----- 修改部分 : 结束 -----
var await = [];

//queue file loading
await.push(assetsService.loadJs("lib/tinymce/tinymce.min.js", $scope));

//queue rules loading
angular.forEach(editorConfig.stylesheets, function(val, key){
	stylesheets.push("/css/" + val + ".css?" + new Date().getTime());
	
	await.push(stylesheetResource.getRulesByName(val).then(function(rules) {
		angular.forEach(rules, function(rule) {
			var r = {};
			r.title = rule.name;
			if (rule.selector[0] == ".") {
				r.inline = "span";
				r.classes = rule.selector.substring(1);
			}
			else if (rule.selector[0] == "#") {
				r.inline = "span";
				r.attributes = { id: rule.selector.substring(1) };
			}
			else {
				r.block = rule.selector;
			}
			//styleFormats.push(r);
			styleFormatsCustom.push(r);
		});
	}));
});
//----- 新增部分 : 开始 -----
var styleFormats = [{title: 'Headers', items: [
	{title: 'h1', block: 'h1'},
	{title: 'h2', block: 'h2'},
	{title: 'h3', block: 'h3'},
	{title: 'h4', block: 'h4'},
	{title: 'h5', block: 'h5'},
	{title: 'h6', block: 'h6'}
]},

{title: 'Blocks', items: [
	{title: 'p', block: 'p'},
	{title: 'div', block: 'div'},
	{title: 'pre', block: 'pre'}
]},

{title: 'Containers', items: [
	{title: 'section', block: 'section', wrapper: true, merge_siblings: false},
	{title: 'article', block: 'article', wrapper: true, merge_siblings: false},
	{title: 'blockquote', block: 'blockquote', wrapper: true},
	{title: 'hgroup', block: 'hgroup', wrapper: true},
	{title: 'aside', block: 'aside', wrapper: true},
	{title: 'figure', block: 'figure', wrapper: true}
]}];
//----- 新增部分 : 结束 -----
var baseLineConfigObj = {
                    mode: "exact",
                    skin: "umbraco",
                    plugins: plugins,
                    valid_elements: validElements,
                    invalid_elements: invalidElements,
                    extended_valid_elements: extendedValidElements,
                    //levee 因为我在customConfig中启用了menubar,所以注释掉下面这行
                    //menubar: false,
                    statusbar: false,
                    height: editorConfig.dimensions.height,
                    width: editorConfig.dimensions.width,
                    maxImageSize: editorConfig.maxImageSize,
                    toolbar: toolbar,
                    content_css: stylesheets,
                    relative_urls: false,
                    style_formats: styleFormats,
     
                };

 

我把它修改成了这样 。。。

//we need to add a timeout here, to force a redraw so TinyMCE can find
//the elements needed
$timeout(function () {
        //----- 新增部分 : 开始 -----
	if(styleFormatsCustom.length > 0)
	{
		styleFormats.push({title: 'Custom', items:styleFormatsCustom});
	}
	//----- 新增部分 : 结束 -----
	tinymce.DOM.events.domLoaded = true;
                        tinymce.init({
                                     ...............

这样,后台在CSS定义的样式都会在Custom项下面咯。当然最近还要 删除 App_DataTEMPClientDependency 文件夹下生成的依赖文件,让系统按这个文件重新生成,才会成生效。

还有 <customConfig> 标签也可能修改编辑器的配置。

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注