Browse Source

General updates

pull/2/head
Artur Arseniev 10 years ago
parent
commit
63b267ca28
  1. 4
      .gitignore
  2. 40
      Gruntfile.js
  3. 40
      bower.json
  4. 5
      index.html
  5. 43
      package.json
  6. 3
      src/asset_manager/view/AssetImageView.js
  7. 1
      src/asset_manager/view/FileUploader.js
  8. 11
      src/code_manager/model/CodeMirrorEditor.js
  9. 4
      src/commands/view/ExportTemplate.js
  10. 41
      src/config/require-config.js
  11. 2
      src/dom_components/view/ComponentTextView.js
  12. 2
      src/modal_dialog/view/ModalView.js
  13. 4
      src/navigator/view/ItemView.js
  14. 25
      src/rich_text_editor/main.js
  15. 209
      src/rich_text_editor/view/TextEditorView.js
  16. 4
      src/storage_manager/model/LocalStorage.js
  17. 4
      src/storage_manager/model/RemoteStorage.js
  18. 2
      src/style_manager/view/LayerView.js
  19. 1
      src/style_manager/view/PropertyFileView.js
  20. 1
      src/style_manager/view/PropertyIntegerView.js
  21. 2
      src/style_manager/view/PropertyStackView.js
  22. 1
      src/style_manager/view/SectorView.js
  23. 2
      styles/css/main.css
  24. 2
      styles/css/main.css.map
  25. 2
      styles/scss/main.scss

4
.gitignore

@ -2,7 +2,11 @@
.settings/
.sass-cache/
.project
grapes.sublime-project
grapes.sublime-workspace
private/
libs/
vendor/
node_modules/
bower_components/

40
Gruntfile.js

@ -1,8 +1,8 @@
module.exports = function(grunt) {
var appPath = 'src',
buildPath = 'dist',
configPath = 'config/require-config.js';
var appPath = 'src',
buildPath = 'dist',
configPath = 'config/require-config.js';
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-sass');
@ -10,6 +10,7 @@ module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-requirejs');
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.loadNpmTasks('grunt-bowercopy');
grunt.loadNpmTasks('grunt-mocha');
grunt.initConfig({
@ -73,7 +74,7 @@ module.exports = function(grunt) {
connect: {
/*
app: {
dist: {
options: {
port: 8001,
open: {
@ -92,6 +93,33 @@ module.exports = function(grunt) {
}
},
bowercopy: {
options: {
srcPrefix: 'bower_components'
},
scripts: {
options: {
destPrefix: 'vendor'
},
files: {
'jquery/jquery.js' : 'jquery/dist/jquery.min.js',
'jquery-ui/jquery-ui-core.js' : 'jquery.ui/ui/core.js',
'jquery-ui/jquery-ui-mouse.js' : 'jquery.ui/ui/mouse.js',
'jquery-ui/jquery-ui-widget.js' : 'jquery.ui/ui/widget.js',
'jquery-ui/jquery-ui.js' : 'jquery.ui/ui/resizable.js',
'underscore/underscore.js' : 'underscore/underscore-min.js',
'backbone/backbone.js' : 'backbone/backbone-min.js',
'backbone-undo/backbone-undo.js' : 'Backbone.Undo/Backbone.Undo.js',
'keymaster/keymaster.js' : 'keymaster/keymaster.js',
'require/require.js' : 'requirejs/require.js',
'require-text/text.js' : 'requirejs-text/text.js',
'spectrum/spectrum.js' : 'spectrum/spectrum.js',
'codemirror' : 'codemirror',
'codemirror-formatting' : 'codemirror-formatting/formatting.js',
},
}
},
watch: {
script: {
files: [ '<%= appDir %>/**/*.js' ],
@ -102,7 +130,7 @@ module.exports = function(grunt) {
tasks: ['sass']
},
test: {
files: [ 'test/specs/**/*.js' ],
files: ['test/specs/**/*.js'],
tasks: ['mocha'],
options: { livereload: true }, //default port 35729
}
@ -126,6 +154,8 @@ module.exports = function(grunt) {
//grunt.file.copy(buildPath + '/main.js', buildPath + '/main.min.js');
});
grunt.registerTask('bower', ['bowercopy']);
grunt.registerTask('dev', ['connect', 'watch']);
grunt.registerTask('test', ['mocha']);

40
bower.json

@ -0,0 +1,40 @@
{
"name": "grapes",
"description": "Open source web template editor",
"version": "0.0.5",
"author": "Artur Arseniev",
"main": [
"dist/grapes.min.js"
],
"keywords": [
"grapes",
"wte",
"web template editor",
"site builder",
"newsletter builder",
"wysiwyg",
"template",
"editor"
],
"license": "BSD-3-Clause",
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test",
"tests"
],
"dependencies": {
"backbone": "~1.2.3",
"Backbone.Undo": "~0.2.5",
"jquery": "~2.2.0",
"jquery.ui": "~1.11.4",
"keymaster": "~1.6.3",
"requirejs": "~2.1.22",
"requirejs-text": "~2.0.14",
"spectrum": "~1.8.0",
"underscore": "~1.8.3",
"codemirror": "~5.10.0",
"codemirror-formatting": "*"
}
}

5
index.html

@ -6,10 +6,11 @@
<link rel="stylesheet" href="styles/spectrum.css">
<link rel="stylesheet" href="styles/css/font-awesome.min.css">
<link rel="stylesheet" href="styles/css/main.css">
<link rel="stylesheet" href="libs/codemirror/lib/codemirror.css">
<link rel="stylesheet" href="vendor/codemirror/lib/codemirror.css">
<link rel="stylesheet" href="vendor/codemirror/theme/hopscotch.css">
</head>
<body>
<div id="wte-app"></div>
<script data-main="src/demo" src="libs/require-min.js"></script>
<script data-main="src/demo" src="vendor/require/require.js"></script>
</body>
</html>

43
package.json

@ -1,30 +1,45 @@
{
"name": "grapes.js",
"name": "grapes",
"description": "Open source web template editor",
"version": "0.0.5",
"author": "Artur Arseniev",
"private": true,
"dependencies": {
"backbone": "1.2.0",
"backbone-undo": "0.2",
"backbone": "^1.2.3",
"backbone-undo": "^0.2.5",
"bootstrap-wysiwyg": "^1.0.4",
"codemirror": "^5.10.0",
"jquery": "^2.2.0",
"jquery-ui": "^1.10.5",
"keymaster": "^1.6.2",
"requirejs": "latest",
"spectrum-colorpicker": "1.7.1"
"requirejs": "^2.1.22",
"spectrum-colorpicker": "^1.8.0",
"text": "git://github.com/requirejs/text",
"underscore": "^1.8.3"
},
"devDependencies": {
"chai": "latest",
"grunt": "latest",
"chai": "^3.4.1",
"grunt": "^0.4.5",
"grunt-bowercopy": "^1.2.4",
"grunt-contrib-connect": "^0.11.2",
"grunt-contrib-jshint": "latest",
"grunt-contrib-requirejs": "latest",
"grunt-contrib-jshint": "^0.12.0",
"grunt-contrib-requirejs": "^0.4.4",
"grunt-contrib-sass": "^0.9.2",
"grunt-contrib-testem": "^0.5.16",
"grunt-contrib-uglify": "^0.11.0",
"grunt-contrib-watch": "latest",
"grunt-mocha": "^0.4.15",
"grunt-testem": "^0.5.5",
"mocha": "latest"
"grunt-contrib-watch": "^0.6.1",
"grunt-mocha": "^0.4.15"
},
"license": "BSD-3-Clause",
"keywords": [
"grapes",
"wte",
"web template editor",
"site builder",
"newsletter builder",
"wysiwyg",
"template",
"editor"
],
"scripts": {
"grunt": "node_modules/.bin/grunt"
}

3
src/asset_manager/view/AssetImageView.js

@ -6,7 +6,7 @@ define(['./AssetView','text!./../template/assetImage.html'],
return AssetView.extend({
events:{
'click' : 'selected',
'click' : 'selected',
'dblclick' : 'chosen',
},
@ -16,6 +16,7 @@ define(['./AssetView','text!./../template/assetImage.html'],
AssetView.prototype.initialize.apply(this, arguments);
this.className += ' ' + this.pfx + 'asset-image';
this.events['click #' + this.pfx + 'close'] = 'removeItem';
this.delegateEvents();
},
/**

1
src/asset_manager/view/FileUploader.js

@ -18,6 +18,7 @@ define(['backbone', 'text!./../template/fileUploader.html'],
this.uploadId = this.pfx + 'uploadFile';
this.disabled = this.config.disableUpload;
this.events['change #' + this.uploadId] = 'uploadFile';
this.delegateEvents();
},
/**

11
src/code_manager/model/CodeMirrorEditor.js

@ -1,11 +1,10 @@
define(['backbone',
'text!../../../libs/codemirror/lib/codemirror.css',
'../../../libs/codemirror/lib/codemirror',
'../../../libs/codemirror/mode/htmlmixed/htmlmixed',
'../../../libs/codemirror/mode/css/css',
'../../../libs/codemirror/lib/util/formatting'
'codemirror/lib/codemirror',
'codemirror/mode/htmlmixed/htmlmixed',
'codemirror/mode/css/css',
'formatting'
],
function(Backbone, CodeMirrorStyle, CodeMirror, htmlMode, cssMode, formatting ) {
function(Backbone, CodeMirror, htmlMode, cssMode, formatting) {
/**
* @class CodeViewer
* */

4
src/commands/view/ExportTemplate.js

@ -47,8 +47,8 @@ define(function() {
enable: function()
{
if(!this.$editors){
var oHtmlEd = this.buildEditor('htmlmixed', 'codepen codepen-html', 'HTML2'),
oCsslEd = this.buildEditor('css', 'codepen codepen-css', 'CSS2');
var oHtmlEd = this.buildEditor('htmlmixed', 'hopscotch', 'HTML'),
oCsslEd = this.buildEditor('css', 'hopscotch', 'CSS');
this.htmlEditor = oHtmlEd.el;
this.cssEditor = oCsslEd.el;
this.$editors = $('<div>');

41
src/config/require-config.js

@ -21,29 +21,32 @@ require.config({
},
paths: {
jquery: '../libs/jquery',
jqueryUi: '../libs/jquery-ui.min',
underscore: '../libs/underscore',
backbone: '../libs/backbone',
backboneUndo: '../libs/backbone-undo-min',
keymaster: '../node_modules/keymaster/keymaster',
text: '../libs/require-text',
Spectrum: '../libs/spectrum',
rte: '../libs/wysiwyg',
config: 'config/config',
jquery: '../vendor/jquery/jquery',
core: '../vendor/jquery-ui/jquery-ui-core',
mouse: '../vendor/jquery-ui/jquery-ui-mouse',
widget: '../vendor/jquery-ui/jquery-ui-widget',
jqueryUi: '../vendor/jquery-ui/jquery-ui',
underscore: '../vendor/underscore/underscore',
backbone: '../vendor/backbone/backbone',
backboneUndo: '../vendor/backbone-undo/backbone-undo',
keymaster: '../vendor/keymaster/keymaster',
text: '../vendor/require-text/text',
Spectrum: '../vendor/spectrum/spectrum',
codemirror: '../vendor/codemirror',
formatting: '../vendor/codemirror-formatting/formatting',
},
packages : [
{ name: 'AssetManager', location: 'asset_manager', },
{ name: 'StyleManager', location: 'style_manager', },
{ name: 'AssetManager', location: 'asset_manager', },
{ name: 'StyleManager', location: 'style_manager', },
{ name: 'StorageManager', location: 'storage_manager', },
{ name: 'Navigator', location: 'navigator', },
{ name: 'Navigator', location: 'navigator', },
{ name: 'DomComponents', location: 'dom_components', },
{ name: 'RichTextEditor', location: 'rich_text_editor', },
{ name: 'ModalDialog', location: 'modal_dialog', },
{ name: 'CodeManager', location: 'code_manager', },
{ name: 'Commands', location: 'commands', },
{ name: 'Canvas', location: 'canvas', },
{ name: 'Panels', location: 'panels', }
{ name: 'RichTextEditor', location: 'rich_text_editor', },
{ name: 'ModalDialog', location: 'modal_dialog', },
{ name: 'CodeManager', location: 'code_manager', },
{ name: 'Commands', location: 'commands', },
{ name: 'Canvas', location: 'canvas', },
{ name: 'Panels', location: 'panels', }
]
});

2
src/dom_components/view/ComponentTextView.js

@ -31,7 +31,7 @@ define(['backbone', './ComponentView'],
this.$wrapper = $e.find('#'+this.config.wrapperId);
this.rte.bind(this, this.$wrapper);
}
$(document).on('mousedown', this.disableEditing); //Close edit mode
$(document).on('mousedown', this.disableEditing); //Close edit mode
this.$el.on('mousedown', this.disablePropagation); //Avoid closing edit mode on component click
},

2
src/modal_dialog/view/ModalView.js

@ -19,6 +19,8 @@ define(['backbone', 'text!./../template/modal.html'],
if(this.config.backdrop)
this.events['click .'+this.pfx+'backlayer'] = 'hide';
this.delegateEvents();
},
/**

4
src/navigator/view/ItemView.js

@ -17,15 +17,17 @@ define(['backbone', 'text!./../template/item.html','require'],
this.model.set('open',false);
this.listenTo(this.model.components, 'remove add change reset', this.checkChildren);
this.listenTo(this.model, 'destroy remove', this.remove);
//this.listenTo(this.model, 'change:status', this.updateStatus);
this.listenTo(this.model, 'change:open', this.updateOpening);
this.className = this.pfx + 'item no-select';
this.events = {};
this.events['click > #'+this.pfx+'btn-eye'] = 'toggleVisibility';
this.events['click .'+this.pfx+'title'] = 'toggleOpening';
this.$el.data("model", this.model);
if(o.config.sortable)
this.events['mousedown > #'+this.pfx+'move'] = 'startSort';
this.delegateEvents();
},
/**

25
src/rich_text_editor/main.js

@ -7,10 +7,10 @@ define(function(require) {
* */
function RichTextEditor(config)
{
var c = config || {},
rte = require('rte'),
defaults = require('./config/config'),
CommandButtons = require('./model/CommandButtons'),
var c = config || {},
defaults = require('./config/config'),
rte = require('./view/TextEditorView'),
CommandButtons = require('./model/CommandButtons'),
CommandButtonsView = require('./view/CommandButtonsView');
for (var name in defaults) {
@ -33,10 +33,9 @@ define(function(require) {
/**
* Bind rich text editor to element
* @param {Object} view
* @param {Object} container
* @param {Object} view
* @param {Object} container
*
* @return void
* */
bind : function(view, container){
if(!this.$contaniner){
@ -52,9 +51,8 @@ define(function(require) {
/**
* Unbind rich text editor from element
* @param {Object} view
* @param {Object} view
*
* @return void
* */
unbind : function(view){
view.$el.wysiwyg('destroy');
@ -64,7 +62,7 @@ define(function(require) {
/**
* Bind toolbar to element
* @param {Object} view
* @param {Object} view
*
* @return this
* */
@ -81,9 +79,8 @@ define(function(require) {
/**
* Update toolbar position
* @param {Object} $el Element
* @param {Object} $el Element
*
* @return void
*/
updatePosition: function($el){
var cOffset = this.$container.offset(),
@ -103,7 +100,6 @@ define(function(require) {
/**
* Show toolbar
*
* @return void
* */
show : function(){
this.$toolbar.show();
@ -112,7 +108,6 @@ define(function(require) {
/**
* Hide toolbar
*
* @return void
* */
hide : function(){
this.$toolbar.hide();
@ -120,7 +115,7 @@ define(function(require) {
/**
* Isolate disable propagation method
* @param Event
*
* */
disableProp: function(e){
e.stopPropagation();

209
src/rich_text_editor/view/TextEditorView.js

@ -0,0 +1,209 @@
/*jslint browser:true*/
define(['jquery'],
function ($) {
var readFileIntoDataUrl = function (fileInfo) {
var loader = $.Deferred(),
fReader = new FileReader();
fReader.onload = function (e) {
loader.resolve(e.target.result);
};
fReader.onerror = loader.reject;
fReader.onprogress = loader.notify;
fReader.readAsDataURL(fileInfo);
return loader.promise();
};
$.fn.cleanHtml = function () {
var html = $(this).html();
return html && html.replace(/(<br>|\s|<div><br><\/div>|&nbsp;)*$/, '');
};
$.fn.wysiwyg = function (userOptions) {
var editor = this,
selectedRange,
options,
toolbarBtnSelector,
updateToolbar = function () {
if (options.activeToolbarClass) {
$(options.toolbarSelector).find(toolbarBtnSelector).each(function () {
var command = $(this).data(options.commandRole);
if (document.queryCommandState(command)) {
$(this).addClass(options.activeToolbarClass);
} else {
$(this).removeClass(options.activeToolbarClass);
}
});
}
},
execCommand = function (commandWithArgs, valueArg) {
var commandArr = commandWithArgs.split(' '),
command = commandArr.shift(),
args = commandArr.join(' ') + (valueArg || '');
document.execCommand(command, 0, args);
updateToolbar();
},
bindHotkeys = function (hotKeys) {
$.each(hotKeys, function (hotkey, command) {
editor.keydown(hotkey, function (e) {
if (editor.attr('contenteditable') && editor.is(':visible')) {
e.preventDefault();
e.stopPropagation();
execCommand(command);
}
}).keyup(hotkey, function (e) {
if (editor.attr('contenteditable') && editor.is(':visible')) {
e.preventDefault();
e.stopPropagation();
}
});
});
},
getCurrentRange = function () {
var sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
return sel.getRangeAt(0);
}
},
saveSelection = function () {
selectedRange = getCurrentRange();
},
restoreSelection = function () {
var selection = window.getSelection();
if (selectedRange) {
try {
selection.removeAllRanges();
} catch (ex) {
document.body.createTextRange().select();
document.selection.empty();
}
selection.addRange(selectedRange);
}
},
insertFiles = function (files) {
editor.focus();
$.each(files, function (idx, fileInfo) {
if (/^image\//.test(fileInfo.type)) {
$.when(readFileIntoDataUrl(fileInfo)).done(function (dataUrl) {
execCommand('insertimage', dataUrl);
}).fail(function (e) {
options.fileUploadError("file-reader", e);
});
} else {
options.fileUploadError("unsupported-file-type", fileInfo.type);
}
});
},
markSelection = function (input, color) {
restoreSelection();
if (document.queryCommandSupported('hiliteColor')) {
document.execCommand('hiliteColor', 0, color || 'transparent');
}
saveSelection();
input.data(options.selectionMarker, color);
},
bindToolbar = function (toolbar, options) {
toolbar.find(toolbarBtnSelector).click(function () {
restoreSelection();
editor.focus();
execCommand($(this).data(options.commandRole));
saveSelection();
});
toolbar.find('[data-toggle=dropdown]').click(restoreSelection);
toolbar.find('input[type=text][data-' + options.commandRole + ']').on('webkitspeechchange change', function () {
var newValue = this.value; /* ugly but prevents fake double-calls due to selection restoration */
this.value = '';
restoreSelection();
if (newValue) {
editor.focus();
execCommand($(this).data(options.commandRole), newValue);
}
saveSelection();
}).on('focus', function () {
var input = $(this);
if (!input.data(options.selectionMarker)) {
markSelection(input, options.selectionColor);
input.focus();
}
}).on('blur', function () {
var input = $(this);
if (input.data(options.selectionMarker)) {
markSelection(input, false);
}
});
toolbar.find('input[type=file][data-' + options.commandRole + ']').change(function () {
restoreSelection();
if (this.type === 'file' && this.files && this.files.length > 0) {
insertFiles(this.files);
}
saveSelection();
this.value = '';
});
},
initFileDrops = function () {
editor.on('dragenter dragover', false)
.on('drop', function (e) {
var dataTransfer = e.originalEvent.dataTransfer;
e.stopPropagation();
e.preventDefault();
if (dataTransfer && dataTransfer.files && dataTransfer.files.length > 0) {
insertFiles(dataTransfer.files);
}
});
};
/** Disable the editor
* @date 2015-03-19 */
if(typeof userOptions=='string' && userOptions=='destroy'){
editor.attr('contenteditable', false).unbind('mouseup keyup mouseout dragenter dragover');
$(window).unbind('touchend');
return this;
}
options = $.extend({}, $.fn.wysiwyg.defaults, userOptions);
toolbarBtnSelector = 'a[data-' + options.commandRole + '],button[data-' + options.commandRole + '],input[type=button][data-' + options.commandRole + ']';
bindHotkeys(options.hotKeys);
if (options.dragAndDropImages) {
initFileDrops();
}
bindToolbar($(options.toolbarSelector), options);
editor.attr('contenteditable', true)
.on('mouseup keyup mouseout', function () {
saveSelection();
updateToolbar();
});
$(window).bind('touchend', function (e) {
var isInside = (editor.is(e.target) || editor.has(e.target).length > 0),
currentRange = getCurrentRange(),
clear = currentRange && (currentRange.startContainer === currentRange.endContainer && currentRange.startOffset === currentRange.endOffset);
if (!clear || isInside) {
saveSelection();
updateToolbar();
}
});
return this;
};
$.fn.wysiwyg.defaults = {
hotKeys: {
'ctrl+b meta+b': 'bold',
'ctrl+i meta+i': 'italic',
'ctrl+u meta+u': 'underline',
'ctrl+z meta+z': 'undo',
'ctrl+y meta+y meta+shift+z': 'redo',
'ctrl+l meta+l': 'justifyleft',
'ctrl+r meta+r': 'justifyright',
'ctrl+e meta+e': 'justifycenter',
'ctrl+j meta+j': 'justifyfull',
'shift+tab': 'outdent',
'tab': 'indent'
},
toolbarSelector: '[data-role=editor-toolbar]',
commandRole: 'edit',
activeToolbarClass: 'btn-info',
selectionMarker: 'edit-focus-marker',
selectionColor: 'darkgrey',
dragAndDropImages: true,
fileUploadError: function (reason, detail) { console.log("File upload error", reason, detail); }
};
return $;
});

4
src/storage_manager/model/LocalStorage.js

@ -5,8 +5,6 @@ define(['backbone'],
* */
return Backbone.Model.extend({
id: 'local',
defaults: {
checkSupport : true,
errorNoSupport : 'Error encountered while parsing JSON response',
@ -14,7 +12,7 @@ define(['backbone'],
/** @inheritdoc */
getId : function() {
return this.id;
return 'local';
},
/** @inheritdoc */

4
src/storage_manager/model/RemoteStorage.js

@ -5,8 +5,6 @@ define(['backbone'],
* */
return Backbone.Model.extend({
id: 'remote',
defaults: {
urlLoad : 'http://localhost/load',
urlStore : 'http://localhost/store',
@ -19,7 +17,7 @@ define(['backbone'],
/** @inheritdoc */
getId : function() {
return this.id;
return 'remote';
},
/** @inheritdoc */

2
src/style_manager/view/LayerView.js

@ -32,6 +32,8 @@ define(['backbone', 'text!./../templates/layer.html'],
var nV = this.formatPreviewValue(pPattern);
this.model.set({valuePreview: nV}, {silent: true});
}
this.delegateEvents();
},
/**

1
src/style_manager/view/PropertyFileView.js

@ -15,6 +15,7 @@ define(['backbone','./PropertyView', 'text!./../templates/propertyFile.html'],
this.className = this.className + ' '+ this.pfx +'file';
this.events['click #'+this.pfx+'close'] = 'removeFile';
this.events['click #'+this.pfx+'images'] = 'openAssetManager';
this.delegateEvents();
},
/** @inheritdoc */

1
src/style_manager/view/PropertyIntegerView.js

@ -13,6 +13,7 @@ define(['backbone','./PropertyView', 'text!./../templates/propertyInteger.html']
this.events['click .'+this.pfx+'u-arrow'] = 'upArrowClick';
this.events['click .'+this.pfx+'d-arrow'] = 'downArrowClick';
this.events['mousedown .'+this.pfx+'int-arrows'] = 'downIncrement';
this.delegateEvents();
},
/**

2
src/style_manager/view/PropertyStackView.js

@ -25,6 +25,8 @@ define(['backbone','./PropertyCompositeView', 'text!./../templates/propertyStack
config : o.config
});
}
this.delegateEvents();
},
/**

1
src/style_manager/view/SectorView.js

@ -13,6 +13,7 @@ define(['backbone','./PropertiesView'],
this.target = o.target || {};
this.open = this.model.get('open');
this.events['click .' + this.pfx + 'title'] = 'toggle';
this.delegateEvents();
},
/**

2
styles/css/main.css

@ -769,7 +769,7 @@ div.wte-com-hover-move {
.wte-cm-editor#wte-cm-css #wte-cm-title {
color: #ddca7e; }
.wte-cm-editor #wte-cm-title {
background-color: #353535;
background-color: #3a3a3a;
font-size: 12px;
padding: 5px 10px 3px;
text-align: right; }

2
styles/css/main.css.map

File diff suppressed because one or more lines are too long

2
styles/scss/main.scss

@ -864,7 +864,7 @@ $uploadPadding: 150px 10px;
##{$cm-prefix}title { color: #ddca7e;}
}
##{$cm-prefix}title {
background-color: #353535;
background-color: $mainDkColor;
font-size: 12px;
padding: 5px 10px 3px;
text-align: right;

Loading…
Cancel
Save