Merge branch 'temp-tinymce' of https://github.com/umbraco/Umbraco-CMS into temp-tinymce

This commit is contained in:
Shannon
2018-10-12 09:47:47 +02:00
12 changed files with 691 additions and 5892 deletions
-4
View File
@@ -119,10 +119,6 @@
&npm install >> $log 2>&1
Write-Output ">> $? $($error.Count)" >> $log 2>&1
Write-Output "### install bower" >> $log 2>&1
&npm install -g bower >> $log 2>&1
$error.Clear() # that one fails 'cos bower is deprecated - ignore
Write-Output "### install gulp" >> $log 2>&1
&npm install -g gulp >> $log 2>&1
$error.Clear() # that one fails 'cos deprecated stuff - ignore
-104
View File
@@ -1,104 +0,0 @@
{
"name": "umbraco",
"version": "7",
"homepage": "https://github.com/umbraco/Umbraco-CMS",
"authors": [
"Shannon <shannon@umbraco.com>"
],
"description": "Umbraco CMS",
"license": "MIT",
"private": true,
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test",
"tests"
],
"dependencies": {
"angular": "~1.7.4",
"angular-cookies": "~1.7.4",
"angular-sanitize": "~1.7.4",
"angular-touch": "~1.7.4",
"angular-route": "~1.7.4",
"angular-animate": "~1.7.4",
"angular-i18n": "~1.7.4",
"signalr": "^2.2.1",
"typeahead.js": "~0.10.5",
"underscore": "~1.9.1",
"rgrove-lazyload": "*",
"bootstrap-social": "~4.8.0",
"jquery": "2.2.4",
"jquery-ui": "~1.12.0",
"jquery-migrate": "1.4.0",
"jquery-validate": "~1.17.0",
"jquery-validation-unobtrusive": "3.2.10",
"angular-dynamic-locale": "~0.1.36",
"ng-file-upload": "~12.2.13",
"tinymce": "~4.8.0",
"codemirror": "~5.3.0",
"angular-local-storage": "~0.7.1",
"moment": "~2.10.3",
"ace-builds": "~1.3.0",
"clipboard": "~2.0.0",
"font-awesome": "~4.2",
"animejs": "^2.2.0",
"angular-ui-sortable": "0.14.4",
"angular-messages": "^1.7.2",
"jsdiff": "^3.4.0"
},
"install": {
"path": "lib-bower",
"ignore": [
"font-awesome",
"bootstrap",
"codemirror",
"ace-builds"
],
"sources": {
"moment": [
"bower_components/moment/min/moment.min.js",
"bower_components/moment/min/moment-with-locales.js",
"bower_components/moment/min/moment-with-locales.min.js",
"bower_components/moment/locale/*.js"
],
"underscore": [
"bower_components/underscore/underscore-min.js",
"bower_components/underscore/underscore-min.map"
],
"jquery": [
"bower_components/jquery/dist/jquery.min.js",
"bower_components/jquery/dist/jquery.min.map"
],
"angular-dynamic-locale": [
"bower_components/angular-dynamic-locale/tmhDynamicLocale.min.js",
"bower_components/angular-dynamic-locale/tmhDynamicLocale.min.js.map"
],
"angular-local-storage": [
"bower_components/angular-local-storage/dist/angular-local-storage.min.js",
"bower_components/angular-local-storage/dist/angular-local-storage.min.js.map"
],
"tinymce": {
"mapping": [
{ "bower_components/tinymce/skins/**": "skins" },
{ "bower_components/tinymce/themes/**": "themes" },
{ "bower_components/tinymce/tinymce.min.js": "tinymce.min.js" }
]
},
"angular-i18n": "bower_components/angular-i18n/angular-locale_*.js",
"typeahead.js": "bower_components/typeahead.js/dist/typeahead.bundle.min.js",
"rgrove-lazyload": "bower_components/rgrove-lazyload/lazyload.js",
"ng-file-upload": "bower_components/ng-file-upload/ng-file-upload.min.js",
"jquery-ui": "bower_components/jquery-ui/jquery-ui.min.js",
"jquery-migrate": "bower_components/jquery-migrate/jquery-migrate.min.js",
"clipboard": "bower_components/clipboard/dist/clipboard.min.js",
"animejs": "bower_components/animejs/anime.min.js",
"jquery-validate": "bower_components/jquery-validate/dist/jquery.validate.min.js",
"jquery-validation-unobtrusive": "bower_components/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js",
"jsdiff": "bower_components/jsdiff/diff.min.js"
}
},
"devDependencies": {
"angular-mocks": "~1.7.2"
}
}
+257 -93
View File
@@ -32,7 +32,7 @@ var karmaServer = require('karma').Server;
Helper functions
***************************************************************/
function processJs(files, out) {
return gulp.src(files)
// check for js errors
.pipe(eslint())
@@ -60,7 +60,7 @@ function processLess(files, out) {
.pipe(postcss(processors))
.pipe(rename(out))
.pipe(gulp.dest(root + targets.css));
console.log(out + " compiled");
}
@@ -69,7 +69,7 @@ Paths and destinations
Each group is iterated automatically in the setup tasks below
***************************************************************/
var sources = {
//less files used by backoffice and preview
//processed in the less task
less: {
@@ -105,8 +105,7 @@ var sources = {
less: "./src/less/**/*.less",
js: "./src/*.js",
lib: "./lib/**/*",
bower: "./lib-bower/**/*",
assets: "./src/assets/**"
assets: "./src/assets/**"
}
};
@@ -140,92 +139,257 @@ gulp.task('docserve', function(cb) {
});
/**************************
* Task processes and copies all dependencies, either installed by bower, npm or stored locally in the project
* Task processes and copies all dependencies, either installed by npm or stored locally in the project
**************************/
gulp.task('dependencies', function () {
//bower component/npm specific copy rules
//this is to patch the sometimes wonky rules these libs are distrbuted under
gulp.task('dependencies', function () {
//as we do multiple things in this task, we merge the multiple streams
var stream = new MergeStream();
//Tinymce plugins/themes
stream.add(
gulp.src(["./bower_components/tinymce/plugins/**",
"./bower_components/tinymce/themes/**"],
{ base: "./bower_components/tinymce/" })
.pipe(gulp.dest(root + targets.lib + "/tinymce"))
);
// Pick the dependencies we need from each package
// so we don't just ship with a lot of files that aren't needed
const nodeModules = [
{
"name": "ace-builds",
"src": [
"./node_modules/ace-builds/src-min-noconflict/ace.js",
"./node_modules/ace-builds/src-min-noconflict/ext-language_tools.js",
"./node_modules/ace-builds/src-min-noconflict/ext-searchbox.js",
"./node_modules/ace-builds/src-min-noconflict/ext-settings_menu.js",
"./node_modules/ace-builds/src-min-noconflict/snippets/text.js",
"./node_modules/ace-builds/src-min-noconflict/snippets/javascript.js",
"./node_modules/ace-builds/src-min-noconflict/theme-chrome.js",
"./node_modules/ace-builds/src-min-noconflict/mode-razor.js",
"./node_modules/ace-builds/src-min-noconflict/mode-javascript.js",
"./node_modules/ace-builds/src-min-noconflict/worker-javascript.js"
],
"base": "./node_modules/ace-builds"
},
{
"name": "angular",
"src": ["./node_modules/angular/angular.js"],
"base": "./node_modules/angular"
},
{
"name": "angular-cookies",
"src": ["./node_modules/angular-cookies/angular-cookies.js"],
"base": "./node_modules/angular-cookies"
},
{
"name": "angular-dynamic-locale",
"src": [
"./node_modules/angular-dynamic-locale/dist/tmhDynamicLocale.min.js",
"./node_modules/angular-dynamic-locale/dist/tmhDynamicLocale.min.js.map"
],
"base": "./node_modules/angular-dynamic-locale/dist"
},
{
"name": "angular-sanitize",
"src": ["./node_modules/angular-sanitize/angular-sanitize.js"],
"base": "./node_modules/angular-sanitize"
},
{
"name": "angular-touch",
"src": ["./node_modules/angular-touch/angular-touch.js"],
"base": "./node_modules/angular-touch"
},
{
"name": "angular-ui-sortable",
"src": ["./node_modules/angular-ui-sortable/dist/sortable.js"],
"base": "./node_modules/angular-ui-sortable/dist"
},
{
"name": "angular-route",
"src": ["./node_modules/angular-route/angular-route.js"],
"base": "./node_modules/angular-route"
},
{
"name": "angular-animate",
"src": ["./node_modules/angular-animate/angular-animate.js"],
"base": "./node_modules/angular-animate"
},
{
"name": "angular-i18n",
"src": [
"./node_modules/angular-i18n/angular-i18n.js",
"./node_modules/angular-i18n/angular-locale_*.js"
],
"base": "./node_modules/angular-i18n"
},
{
"name": "angular-local-storage",
"src": [
"./node_modules/angular-local-storage/dist/angular-local-storage.min.js",
"./node_modules/angular-local-storage/dist/angular-local-storage.min.js.map"
],
"base": "./node_modules/angular-local-storage/dist"
},
{
"name": "angular-messages",
"src": ["./node_modules/angular-messages/angular-messages.js"],
"base": "./node_modules/angular-messages"
},
{
"name": "angular-mocks",
"src": ["./node_modules/angular-mocks/angular-mocks.js"],
"base": "./node_modules/angular-mocks"
},
{
"name": "animejs",
"src": ["./node_modules/animejs/anime.min.js"],
"base": "./node_modules/animejs"
},
{
"name": "bootstrap-social",
"src": ["./node_modules/bootstrap-social/bootstrap-social.css"],
"base": "./node_modules/bootstrap-social"
},
{
"name": "clipboard",
"src": ["./node_modules/clipboard/dist/clipboard.min.js"],
"base": "./node_modules/clipboard/dist"
},
{
"name": "codemirror",
"src": [
"./node_modules/codemirror/lib/codemirror.js",
"./node_modules/codemirror/lib/codemirror.css",
//font-awesome
stream.add(
gulp.src(["./bower_components/font-awesome/fonts/*",
"./bower_components/font-awesome/css/font-awesome.min.css"],
{ base: "./bower_components/font-awesome/" })
.pipe(gulp.dest(root + targets.lib + "/font-awesome"))
);
// ace Editor
stream.add(
gulp.src(["bower_components/ace-builds/src-min-noconflict/ace.js",
"bower_components/ace-builds/src-min-noconflict/ext-language_tools.js",
"bower_components/ace-builds/src-min-noconflict/ext-searchbox.js",
"bower_components/ace-builds/src-min-noconflict/ext-settings_menu.js",
"bower_components/ace-builds/src-min-noconflict/snippets/text.js",
"bower_components/ace-builds/src-min-noconflict/snippets/javascript.js",
"bower_components/ace-builds/src-min-noconflict/theme-chrome.js",
"bower_components/ace-builds/src-min-noconflict/mode-razor.js",
"bower_components/ace-builds/src-min-noconflict/mode-javascript.js",
"bower_components/ace-builds/src-min-noconflict/worker-javascript.js"],
{ base: "./bower_components/ace-builds/" })
.pipe(gulp.dest(root + targets.lib + "/ace-builds"))
);
"./node_modules/codemirror/mode/css/css.js",
"./node_modules/codemirror/mode/javascript/javascript.js",
"./node_modules/codemirror/mode/xml/xml.js",
"./node_modules/codemirror/mode/htmlmixed/htmlmixed.js",
// code mirror
stream.add(
gulp.src([
"bower_components/codemirror/lib/codemirror.js",
"bower_components/codemirror/lib/codemirror.css",
"./node_modules/codemirror/addon/search/*",
"./node_modules/codemirror/addon/edit/*",
"./node_modules/codemirror/addon/selection/*",
"./node_modules/codemirror/addon/dialog/*"
],
"base": "./node_modules/codemirror"
},
{
"name": "jsdiff",
"src": ["./node_modules/diff/dist/diff.min.js"],
"base": "./node_modules/diff/dist"
},
{
"name": "flatpickr",
"src": [
"./node_modules/flatpickr/dist/flatpickr.js",
"./node_modules/flatpickr/dist/flatpickr.css"
],
"base": "./node_modules/flatpickr/dist"
},
{
"name": "font-awesome",
"src": [
"./node_modules/font-awesome/fonts/*",
"./node_modules/font-awesome/css/font-awesome.min.css"
],
"base": "./node_modules/font-awesome"
},
{
"name": "jquery",
"src": [
"./node_modules/jquery/dist/jquery.min.js",
"./node_modules/jquery/dist/jquery.min.map"
],
"base": "./node_modules/jquery/dist"
},
{
"name": "jquery-migrate",
"src": ["./node_modules/jquery-migrate/dist/jquery-migrate.min.js"],
"base": "./node_modules/jquery-migrate/dist"
},
{
"name": "jquery-ui",
"src": ["./node_modules/jquery-ui-dist/jquery-ui.min.js"],
"base": "./node_modules/jquery-ui-dist"
},
{
"name": "jquery-validate",
"src": ["./node_modules/jquery-validation/dist/jquery.validate.min.js"],
"base": "./node_modules/jquery-validation/dist"
},
{
"name": "jquery-validation-unobtrusive",
"src": ["./node_modules/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"],
"base": "./node_modules/jquery-validation-unobtrusive/dist"
},
{
"name": "lazyload-js",
"src": ["./node_modules/lazyload-js/lazyload.min.js"],
"base": "./node_modules/lazyload-js"
},
// TODO: We can optimize here:
// we don't have to ship with the moment-with-locales libraries
// we lazyload the user locale
{
"name": "moment",
"src": [
"./node_modules/moment/min/moment.min.js",
"./node_modules/moment/min/moment-with-locales.js",
"./node_modules/moment/min/moment-with-locales.min.js",
],
"base": "./node_modules/moment/min"
},
{
"name": "moment",
"src": [
"./node_modules/moment/locale/*.js"
],
"base": "./node_modules/moment/locale"
},
{
"name": "ng-file-upload",
"src": ["./node_modules/ng-file-upload/dist/ng-file-upload.min.js"],
"base": "./node_modules/ng-file-upload/dist"
},
{
"name": "signalr",
"src": ["./node_modules/signalr/jquery.signalR.js"],
"base": "./node_modules/signalr"
},
{
"name": "tinymce",
"src": [
"./node_modules/tinymce/tinymce.min.js",
"./node_modules/tinymce/plugins/**",
"./node_modules/tinymce/skins/**",
"./node_modules/tinymce/themes/**"
],
"base": "./node_modules/tinymce"
},
{
"name": "typeahead.js",
"src": ["./node_modules/typeahead.js/dist/typeahead.bundle.min.js"],
"base": "./node_modules/typeahead.js/dist"
},
{
"name": "underscore",
"src": ["node_modules/underscore/underscore-min.js"],
"base": "./node_modules/underscore"
}
];
"bower_components/codemirror/mode/css/*",
"bower_components/codemirror/mode/javascript/*",
"bower_components/codemirror/mode/xml/*",
"bower_components/codemirror/mode/htmlmixed/*",
// add streams for node modules
nodeModules.forEach(module => {
stream.add(
gulp.src(module.src,
{ base: module.base })
.pipe(gulp.dest(root + targets.lib + "/" + module.name))
);
});
"bower_components/codemirror/addon/search/*",
"bower_components/codemirror/addon/edit/*",
"bower_components/codemirror/addon/selection/*",
"bower_components/codemirror/addon/dialog/*"],
{ base: "./bower_components/codemirror/" })
.pipe(gulp.dest(root + targets.lib + "/codemirror"))
);
// npm dependencies
// flatpickr
stream.add(
gulp.src([
"./node_modules/flatpickr/dist/flatpickr.js",
"./node_modules/flatpickr/dist/flatpickr.css"],
{ base: "./node_modules/flatpickr/dist" })
.pipe(gulp.dest(root + targets.lib + "/flatpickr"))
);
//copy over libs which are not on bower (/lib) and
//libraries that have been managed by bower-installer (/lib-bower)
//copy over libs which are not on npm (/lib)
stream.add(
gulp.src(sources.globs.lib)
.pipe(gulp.dest(root + targets.lib))
);
stream.add(
gulp.src(sources.globs.bower)
.pipe(gulp.dest(root + targets.lib))
);
//Copies all static assets into /root / assets folder
//Copies all static assets into /root / assets folder
//css, fonts and image files
stream.add(
stream.add(
gulp.src(sources.globs.assets)
.pipe(imagemin([
imagemin.gifsicle({interlaced: true}),
@@ -243,20 +407,20 @@ gulp.task('dependencies', function () {
// Copies all the less files related to the preview into their folder
//these are not pre-processed as preview has its own less combiler client side
stream.add(
stream.add(
gulp.src("src/canvasdesigner/editors/*.less")
.pipe(gulp.dest(root + targets.assets + "/less"))
);
// Todo: check if we need these fileSize
stream.add(
stream.add(
gulp.src("src/views/propertyeditors/grid/config/*.*")
.pipe(gulp.dest(root + targets.views + "/propertyeditors/grid/config"))
);
stream.add(
);
stream.add(
gulp.src("src/views/dashboard/default/*.jpg")
.pipe(gulp.dest(root + targets.views + "/dashboard/default"))
);
);
return stream;
});
@@ -265,8 +429,8 @@ gulp.task('dependencies', function () {
/**************************
* Copies all angular JS files into their seperate umbraco.*.js file
**************************/
gulp.task('js', function () {
gulp.task('js', function () {
//we run multiple streams, so merge them all together
var stream = new MergeStream();
@@ -283,7 +447,7 @@ gulp.task('js', function () {
});
gulp.task('less', function () {
var stream = new MergeStream();
_.forEach(sources.less, function (group) {
@@ -306,9 +470,9 @@ gulp.task('views', function () {
gulp.src(group.files)
.pipe( gulp.dest(root + targets.views + group.folder) )
);
});
return stream;
});
@@ -323,13 +487,13 @@ gulp.task('watch', function () {
if(group.watch !== false){
stream.add(
stream.add(
watch(group.files, { ignoreInitial: true, interval: watchInterval }, function (file) {
console.info(file.path + " has changed, added to: " + group.out);
processJs(group.files, group.out);
})
);
@@ -338,7 +502,7 @@ gulp.task('watch', function () {
});
stream.add(
stream.add(
//watch all less files and trigger the less task
watch(sources.globs.less, { ignoreInitial: true, interval: watchInterval }, function () {
gulp.run(['less']);
@@ -346,13 +510,13 @@ gulp.task('watch', function () {
);
//watch all views - copy single file changes
stream.add(
stream.add(
watch(sources.globs.views, { interval: watchInterval })
.pipe(gulp.dest(root + targets.views))
);
//watch all app js files that will not be merged - copy single file changes
stream.add(
stream.add(
watch(sources.globs.js, { interval: watchInterval })
.pipe(gulp.dest(root + targets.js))
);
@@ -397,7 +561,7 @@ gulp.task('connect:docs', function (cb) {
});
gulp.task('open:docs', function (cb) {
var options = {
uri: 'http://localhost:8880/index.html'
};
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
+32 -2
View File
@@ -1,12 +1,42 @@
{
"private": true,
"scripts": {
"install": "bower-installer",
"test": "karma start test/config/karma.conf.js --singlerun",
"build": "gulp"
},
"dependencies": {
"ace-builds": "1.3.3",
"angular": "1.7.5",
"angular-animate": "1.7.5",
"angular-cookies": "1.7.5",
"angular-dynamic-locale": "0.1.37",
"angular-i18n": "1.7.5",
"angular-local-storage": "0.7.1",
"angular-messages": "1.7.5",
"angular-mocks": "1.7.5",
"angular-route": "1.7.5",
"angular-sanitize": "1.7.5",
"angular-touch": "1.7.5",
"angular-ui-sortable": "0.15.0",
"animejs": "2.2.0",
"bootstrap-social": "4.8.0",
"clipboard": "2.0.0",
"codemirror": "5.3.0",
"diff": "3.4.0",
"flatpickr": "4.5.2",
"npm": "^6.4.1"
"font-awesome": "4.2.0",
"jquery": "2.2.4",
"jquery-migrate": "1.4.0",
"jquery-ui-dist": "1.12.1",
"jquery-validation": "1.17.0",
"jquery-validation-unobtrusive": "3.2.10",
"lazyload-js": "1.0.0",
"moment": "2.10.6",
"ng-file-upload": "12.2.13",
"signalr": "2.3.0",
"tinymce": "4.8.3",
"typeahead.js": "0.10.5",
"underscore": "1.9.1"
},
"devDependencies": {
"@babel/core": "^7.1.2",
+1 -2
View File
@@ -12,12 +12,11 @@ if /I "%c%" EQU "N" goto :eof
:setupgulp
call npm install
call npm -g install bower
call npm -g install gulp
call npm -g install gulp-cli
ECHO.
ECHO.
ECHO You should now be able to run: gulp build
ECHO You should now be able to run: gulp build or gulp dev
ECHO.
ECHO.
@@ -4,6 +4,12 @@
.umb-rte {
overflow: hidden;
}
.umb-rte .umb-rte-editor{
border:1px solid @gray-8;
min-height:25px;
}
.umb-rte .mce-content-body {
padding:10px;
background-color: #fff;
@@ -3,5 +3,5 @@
<div ng-if="isLoading"><localize key="general_loading">Loading</localize>...</div>
<div ng-style="{ visibility : isLoading ? 'hidden' : 'visible'}"
id="{{textAreaHtmlId}}"></div>
id="{{textAreaHtmlId}}" class="umb-rte-editor"></div>
</div>
@@ -11,19 +11,19 @@ module.exports = function (config) {
files: [
//libraries
'lib-bower/jquery/jquery.min.js',
'lib-bower/angular/angular.js',
'lib-bower/angular-animate/angular-animate.js',
'lib-bower/angular-cookies/angular-cookies.js',
'lib-bower/angular-local-storage/angular-local-storage.min.js',
'lib-bower/angular-route/angular-route.js',
'lib-bower/angular-sanitize/angular-sanitize.js',
'bower_components/angular-mocks/angular-mocks.js',
'lib-bower/angular-ui-sortable/sortable.js',
'lib-bower/underscore/underscore-min.js',
'lib-bower/moment/moment-with-locales.js',
'node_modules/jquery/dist/jquery.min.js',
'node_modules/angular/angular.js',
'node_modules/angular-animate/angular-animate.js',
'node_modules/angular-cookies/angular-cookies.js',
'node_modules/angular-local-storage/dist/angular-local-storage.min.js',
'node_modules/angular-route/angular-route.js',
'node_modules/angular-sanitize/angular-sanitize.js',
'node_modules/angular-mocks/angular-mocks.js',
'node_modules/angular-ui-sortable/dist/sortable.js',
'node_modules/underscore/underscore-min.js',
'node_modules/moment/min/moment-with-locales.js',
'lib/umbraco/Extensions.js',
'lib-bower/rgrove-lazyload/lazyload.js',
'node_modules/lazyload-js/lazyload.min.js',
//app bootstrap and loader
'test/config/app.unit.js',
@@ -124,7 +124,7 @@
}
</script>
<script src="lib/rgrove-lazyload/lazyload.js"></script>
<script src="lib/lazyload-js/lazyload.min.js"></script>
<script src="@Url.GetUrlWithCacheBust("Application", "BackOffice")"></script>
@if (isDebug)