CcmNG: Basic integration for TinyMCE

git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5684 8810af33-2d31-482b-a856-94f89814c4df
jensp 2018-09-01 17:00:13 +00:00
parent 8da1e4c8c1
commit 216fd13620
24 changed files with 4508 additions and 604 deletions

View File

@ -1663,278 +1663,6 @@
} }
} }
}, },
"ccm-cms-tinymce": {
"version": "7.0.0",
"requires": {
"tinymce": "4.8.2"
},
"dependencies": {
"@types/jquery": {
"version": "3.3.6",
"bundled": true
},
"@types/tinymce": {
"version": "4.5.16",
"bundled": true,
"requires": {
"@types/jquery": "3.3.6"
}
},
"ansi-regex": {
"version": "2.1.1",
"bundled": true
},
"ansi-styles": {
"version": "2.2.1",
"bundled": true
},
"argparse": {
"version": "1.0.10",
"bundled": true,
"requires": {
"sprintf-js": "1.0.3"
}
},
"babel-code-frame": {
"version": "6.26.0",
"bundled": true,
"requires": {
"chalk": "1.1.3",
"esutils": "2.0.2",
"js-tokens": "3.0.2"
},
"dependencies": {
"chalk": {
"version": "1.1.3",
"bundled": true,
"requires": {
"ansi-styles": "2.2.1",
"escape-string-regexp": "1.0.5",
"has-ansi": "2.0.0",
"strip-ansi": "3.0.1",
"supports-color": "2.0.0"
}
}
}
},
"balanced-match": {
"version": "1.0.0",
"bundled": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"requires": {
"balanced-match": "1.0.0",
"concat-map": "0.0.1"
}
},
"builtin-modules": {
"version": "1.1.1",
"bundled": true
},
"chalk": {
"version": "2.4.1",
"bundled": true,
"requires": {
"ansi-styles": "3.2.1",
"escape-string-regexp": "1.0.5",
"supports-color": "5.4.0"
},
"dependencies": {
"ansi-styles": {
"version": "3.2.1",
"bundled": true,
"requires": {
"color-convert": "1.9.2"
}
},
"supports-color": {
"version": "5.4.0",
"bundled": true,
"requires": {
"has-flag": "3.0.0"
}
}
}
},
"color-convert": {
"version": "1.9.2",
"bundled": true,
"requires": {
"color-name": "1.1.1"
}
},
"color-name": {
"version": "1.1.1",
"bundled": true
},
"commander": {
"version": "2.17.1",
"bundled": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true
},
"diff": {
"version": "3.5.0",
"bundled": true
},
"escape-string-regexp": {
"version": "1.0.5",
"bundled": true
},
"esprima": {
"version": "4.0.1",
"bundled": true
},
"esutils": {
"version": "2.0.2",
"bundled": true
},
"fs.realpath": {
"version": "1.0.0",
"bundled": true
},
"glob": {
"version": "7.1.2",
"bundled": true,
"requires": {
"fs.realpath": "1.0.0",
"inflight": "1.0.6",
"inherits": "2.0.3",
"minimatch": "3.0.4",
"once": "1.4.0",
"path-is-absolute": "1.0.1"
}
},
"has-ansi": {
"version": "2.0.0",
"bundled": true,
"requires": {
"ansi-regex": "2.1.1"
}
},
"has-flag": {
"version": "3.0.0",
"bundled": true
},
"inflight": {
"version": "1.0.6",
"bundled": true,
"requires": {
"once": "1.4.0",
"wrappy": "1.0.2"
}
},
"inherits": {
"version": "2.0.3",
"bundled": true
},
"js-tokens": {
"version": "3.0.2",
"bundled": true
},
"js-yaml": {
"version": "3.12.0",
"bundled": true,
"requires": {
"argparse": "1.0.10",
"esprima": "4.0.1"
}
},
"minimatch": {
"version": "3.0.4",
"bundled": true,
"requires": {
"brace-expansion": "1.1.11"
}
},
"once": {
"version": "1.4.0",
"bundled": true,
"requires": {
"wrappy": "1.0.2"
}
},
"path-is-absolute": {
"version": "1.0.1",
"bundled": true
},
"path-parse": {
"version": "1.0.6",
"bundled": true
},
"resolve": {
"version": "1.8.1",
"bundled": true,
"requires": {
"path-parse": "1.0.6"
}
},
"semver": {
"version": "5.5.0",
"bundled": true
},
"sprintf-js": {
"version": "1.0.3",
"bundled": true
},
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
"requires": {
"ansi-regex": "2.1.1"
}
},
"supports-color": {
"version": "2.0.0",
"bundled": true
},
"tinymce": {
"version": "4.8.2",
"bundled": true
},
"tslib": {
"version": "1.9.3",
"bundled": true
},
"tslint": {
"version": "5.11.0",
"bundled": true,
"requires": {
"babel-code-frame": "6.26.0",
"builtin-modules": "1.1.1",
"chalk": "2.4.1",
"commander": "2.17.1",
"diff": "3.5.0",
"glob": "7.1.2",
"js-yaml": "3.12.0",
"minimatch": "3.0.4",
"resolve": "1.8.1",
"semver": "5.5.0",
"tslib": "1.9.3",
"tsutils": "2.29.0"
}
},
"tsutils": {
"version": "2.29.0",
"bundled": true,
"requires": {
"tslib": "1.9.3"
}
},
"typescript": {
"version": "3.0.1",
"bundled": true
},
"wrappy": {
"version": "1.0.2",
"bundled": true
}
}
},
"chalk": { "chalk": {
"version": "2.4.1", "version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",

View File

@ -6,7 +6,6 @@
}, },
"dependencies": { "dependencies": {
"ccm-cms-pagemodelseditor": "7.0.0", "ccm-cms-pagemodelseditor": "7.0.0",
"ccm-cms-tinymce": "7.0.0",
"tinymce": "^4.8.2" "tinymce": "^4.8.2"
}, },
"devDependencies": { "devDependencies": {

View File

@ -38,6 +38,11 @@
<artifactId>requirejs-domready</artifactId> <artifactId>requirejs-domready</artifactId>
<version>2.0.1-2</version> <version>2.0.1-2</version>
</dependency> </dependency>
<dependency>
<groupId>org.webjars.npm</groupId>
<artifactId>tinymce</artifactId>
<version>4.8.2</version>
</dependency>
<!-- <dependency> <!-- <dependency>
<groupId>org.librecms</groupId> <groupId>org.librecms</groupId>
<artifactId>ccm-cms-js</artifactId> <artifactId>ccm-cms-js</artifactId>
@ -199,6 +204,14 @@
<include>templates/</include> <include>templates/</include>
</includes> </includes>
</overlay> </overlay>
<overlay>
<groupId>org.librecms</groupId>
<artifactId>ccm-cms-tinymce</artifactId>
<type>jar</type>
<includes>
<include>scripts/</include>
</includes>
</overlay>
</overlays> </overlays>
</configuration> </configuration>
</plugin> </plugin>

View File

@ -0,0 +1,6 @@
tinymce.init({
menubar: "edit view insert format tools table",
plugins: "ccm-cms-insertmedia code lists nonbreaking noneditable paste searchreplace table template visualblocks wordcount",
selector: ".tinymce",
toolbar: "undo redo formatselect bold italic underline strikethrough alignleft aligncenter alignright alignjustify alignnone insert indent outdent blockquote bullist numlist link unlink openlink insertmedia table",
});

View File

@ -0,0 +1,30 @@
import * as tinymce from "tinymce";
import "tinymce/themes/modern/theme";
import "tinymce/plugins/code";
import "tinymce/plugins/lists";
import "tinymce/plugins/nonbreaking";
import "tinymce/plugins/noneditable";
import "tinymce/plugins/paste";
import "tinymce/plugins/searchreplace";
import "tinymce/plugins/table";
import "tinymce/plugins/template";
import "tinymce/plugins/visualblocks";
import "tinymce/plugins/wordcount";
import plugin from "ccm-cms-tinymce";
require.context(
"file-loader?name=[path][name].[ext]"
+ "&context=node_modules/tinymce!tinymce/skins",
true,
/.*/,
);
tinymce.init({
//menubar: "tools",
plugins: "ccm-cms-tinymce-insertmedia code lists nonbreaking noneditable paste searchreplace table template visualblocks wordcount",
selector: ".tinymce",
//toolbar: "code",
});

View File

@ -2,6 +2,7 @@
"compilerOptions": { "compilerOptions": {
"module": "commonjs", "module": "commonjs",
"moduleResolution": "node", "moduleResolution": "node",
"rootDir": "src/main/typescript",
"sourceMap": true, "sourceMap": true,
"strict": true, "strict": true,
"target": "es6", "target": "es6",

View File

@ -6,7 +6,7 @@ module.exports = {
entry: { entry: {
"ccm-cms-pagemodelseditor": "./src/main/typescript/ccm-cms-pagemodelseditor.ts", "ccm-cms-pagemodelseditor": "./src/main/typescript/ccm-cms-pagemodelseditor.ts",
"ccm-cms-tinymce": "./src/main/typescript/ccm-cms-tinymce.ts", // "ccm-cms-tinymce-loader": "./src/main/typescript/tinymce/ccm-cms-tinymce-loader.ts",
}, },
mode: "development", mode: "development",

View File

@ -5,28 +5,38 @@
"requires": true, "requires": true,
"dependencies": { "dependencies": {
"@types/node": { "@types/node": {
"version": "10.1.3", "version": "10.7.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.1.3.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-10.7.1.tgz",
"integrity": "sha512-GiCx7dRvta0hbxXoJFAUxz+CKX6bZSCKjM5slq2vPp/5zwK01T4ibYZkGr6EN4F2QmxDQR76/ZHg6q+7iFWCWw==", "integrity": "sha512-EGoI4ylB/lPOaqXqtzAyL8HcgOuCtH2hkEaLmkueOYufsTFWBn4VCvlCDC2HW8Q+9iF+QVC3sxjDKQYjHQeZ9w==",
"dev": true "dev": true
}, },
"@types/react": { "@types/prop-types": {
"version": "16.3.14", "version": "15.5.5",
"resolved": "https://registry.npmjs.org/@types/react/-/react-16.3.14.tgz", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.5.5.tgz",
"integrity": "sha512-wNUGm49fPl7eE2fnYdF0v5vSOrUMdKMQD/4NwtQRnb6mnPwtkhabmuFz37eq90+hhyfz0pWd38jkZHOcaZ6LGw==", "integrity": "sha512-mOrlCEdwX3seT3n0AXNt4KNPAZZxcsABUHwBgFXOt+nvFUXkxCAO6UBJHPrDxWEa2KDMil86355fjo8jbZ+K0Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"csstype": "2.5.3" "@types/react": "16.4.11"
}
},
"@types/react": {
"version": "16.4.11",
"resolved": "https://registry.npmjs.org/@types/react/-/react-16.4.11.tgz",
"integrity": "sha512-1DQnmwO8u8N3ucvRX2ZLDEjQ2VctkAvL/rpbm2ev4uaZA0z4ysU+I0tk+K8ZLblC6p7MCgFyF+cQlSNIPUHzeQ==",
"dev": true,
"requires": {
"@types/prop-types": "15.5.5",
"csstype": "2.5.6"
} }
}, },
"@types/react-dom": { "@types/react-dom": {
"version": "16.0.5", "version": "16.0.7",
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.0.5.tgz", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.0.7.tgz",
"integrity": "sha512-ony2hEYlGXCLWNAWWgbsHR7qVvDbeMRFc5b43+7dhj3n+zXzxz81HV9Yjpc3JD8vLCiwYoSLqFCI6bD0+0zG2Q==", "integrity": "sha512-vaq4vMaJOaNgFff1t3LnHYr6vRa09vRspMkmLdXtFZmO1fwDI2snP+dpOkwrtlU8UC8qsqemCu4RmVM2OLq/fA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/node": "10.1.3", "@types/node": "10.7.1",
"@types/react": "16.3.14" "@types/react": "16.4.11"
} }
}, },
"ansi-regex": { "ansi-regex": {
@ -106,30 +116,43 @@
"ccm-pagemodelseditor": { "ccm-pagemodelseditor": {
"version": "7.0.0", "version": "7.0.0",
"requires": { "requires": {
"react": "16.4.0", "react": "16.4.2",
"react-dom": "16.4.0", "react-dom": "16.4.2",
"react-modal": "3.4.5", "react-modal": "3.5.1"
"react-redux": "5.0.7",
"redux": "4.0.0"
}, },
"dependencies": { "dependencies": {
"@types/node": { "@types/node": {
"version": "10.1.3", "version": "10.7.1",
"bundled": true "bundled": true
}, },
"@types/react": { "@types/prop-types": {
"version": "16.3.14", "version": "15.5.5",
"bundled": true, "bundled": true,
"requires": { "requires": {
"csstype": "2.5.3" "@types/react": "16.4.11"
}
},
"@types/react": {
"version": "16.4.11",
"bundled": true,
"requires": {
"@types/prop-types": "15.5.5",
"csstype": "2.5.6"
} }
}, },
"@types/react-dom": { "@types/react-dom": {
"version": "16.0.5", "version": "16.0.7",
"bundled": true, "bundled": true,
"requires": { "requires": {
"@types/node": "10.1.3", "@types/node": "10.7.1",
"@types/react": "16.3.14" "@types/react": "16.4.11"
}
},
"@types/react-modal": {
"version": "3.2.1",
"bundled": true,
"requires": {
"@types/react": "16.4.11"
} }
}, },
"ansi-regex": { "ansi-regex": {
@ -170,6 +193,10 @@
"strip-ansi": "3.0.1", "strip-ansi": "3.0.1",
"supports-color": "2.0.0" "supports-color": "2.0.0"
} }
},
"js-tokens": {
"version": "3.0.2",
"bundled": true
} }
} }
}, },
@ -202,7 +229,7 @@
"version": "3.2.1", "version": "3.2.1",
"bundled": true, "bundled": true,
"requires": { "requires": {
"color-convert": "1.9.1" "color-convert": "1.9.2"
} }
}, },
"supports-color": { "supports-color": {
@ -215,18 +242,18 @@
} }
}, },
"color-convert": { "color-convert": {
"version": "1.9.1", "version": "1.9.2",
"bundled": true, "bundled": true,
"requires": { "requires": {
"color-name": "1.1.3" "color-name": "1.1.1"
} }
}, },
"color-name": { "color-name": {
"version": "1.1.3", "version": "1.1.1",
"bundled": true "bundled": true
}, },
"commander": { "commander": {
"version": "2.15.1", "version": "2.17.1",
"bundled": true "bundled": true
}, },
"concat-map": { "concat-map": {
@ -238,7 +265,7 @@
"bundled": true "bundled": true
}, },
"csstype": { "csstype": {
"version": "2.5.3", "version": "2.5.6",
"bundled": true "bundled": true
}, },
"diff": { "diff": {
@ -257,7 +284,7 @@
"bundled": true "bundled": true
}, },
"esprima": { "esprima": {
"version": "4.0.0", "version": "4.0.1",
"bundled": true "bundled": true
}, },
"esutils": { "esutils": {
@ -269,12 +296,12 @@
"bundled": true "bundled": true
}, },
"fbjs": { "fbjs": {
"version": "0.8.16", "version": "0.8.17",
"bundled": true, "bundled": true,
"requires": { "requires": {
"core-js": "1.2.7", "core-js": "1.2.7",
"isomorphic-fetch": "2.2.1", "isomorphic-fetch": "2.2.1",
"loose-envify": "1.3.1", "loose-envify": "1.4.0",
"object-assign": "4.1.1", "object-assign": "4.1.1",
"promise": "7.3.1", "promise": "7.3.1",
"setimmediate": "1.0.5", "setimmediate": "1.0.5",
@ -308,10 +335,6 @@
"version": "3.0.0", "version": "3.0.0",
"bundled": true "bundled": true
}, },
"hoist-non-react-statics": {
"version": "2.5.0",
"bundled": true
},
"iconv-lite": { "iconv-lite": {
"version": "0.4.23", "version": "0.4.23",
"bundled": true, "bundled": true,
@ -331,13 +354,6 @@
"version": "2.0.3", "version": "2.0.3",
"bundled": true "bundled": true
}, },
"invariant": {
"version": "2.2.4",
"bundled": true,
"requires": {
"loose-envify": "1.3.1"
}
},
"is-stream": { "is-stream": {
"version": "1.1.0", "version": "1.1.0",
"bundled": true "bundled": true
@ -351,30 +367,22 @@
} }
}, },
"js-tokens": { "js-tokens": {
"version": "3.0.2", "version": "4.0.0",
"bundled": true "bundled": true
}, },
"js-yaml": { "js-yaml": {
"version": "3.11.0", "version": "3.12.0",
"bundled": true, "bundled": true,
"requires": { "requires": {
"argparse": "1.0.10", "argparse": "1.0.10",
"esprima": "4.0.0" "esprima": "4.0.1"
} }
}, },
"lodash": {
"version": "4.17.10",
"bundled": true
},
"lodash-es": {
"version": "4.17.10",
"bundled": true
},
"loose-envify": { "loose-envify": {
"version": "1.3.1", "version": "1.4.0",
"bundled": true, "bundled": true,
"requires": { "requires": {
"js-tokens": "3.0.2" "js-tokens": "4.0.0"
} }
}, },
"minimatch": { "minimatch": {
@ -408,7 +416,7 @@
"bundled": true "bundled": true
}, },
"path-parse": { "path-parse": {
"version": "1.0.5", "version": "1.0.6",
"bundled": true "bundled": true
}, },
"promise": { "promise": {
@ -419,32 +427,31 @@
} }
}, },
"prop-types": { "prop-types": {
"version": "15.6.1", "version": "15.6.2",
"bundled": true, "bundled": true,
"requires": { "requires": {
"fbjs": "0.8.16", "loose-envify": "1.4.0",
"loose-envify": "1.3.1",
"object-assign": "4.1.1" "object-assign": "4.1.1"
} }
}, },
"react": { "react": {
"version": "16.4.0", "version": "16.4.2",
"bundled": true, "bundled": true,
"requires": { "requires": {
"fbjs": "0.8.16", "fbjs": "0.8.17",
"loose-envify": "1.3.1", "loose-envify": "1.4.0",
"object-assign": "4.1.1", "object-assign": "4.1.1",
"prop-types": "15.6.1" "prop-types": "15.6.2"
} }
}, },
"react-dom": { "react-dom": {
"version": "16.4.0", "version": "16.4.2",
"bundled": true, "bundled": true,
"requires": { "requires": {
"fbjs": "0.8.16", "fbjs": "0.8.17",
"loose-envify": "1.3.1", "loose-envify": "1.4.0",
"object-assign": "4.1.1", "object-assign": "4.1.1",
"prop-types": "15.6.1" "prop-types": "15.6.2"
} }
}, },
"react-lifecycles-compat": { "react-lifecycles-compat": {
@ -452,40 +459,20 @@
"bundled": true "bundled": true
}, },
"react-modal": { "react-modal": {
"version": "3.4.5", "version": "3.5.1",
"bundled": true, "bundled": true,
"requires": { "requires": {
"exenv": "1.2.2", "exenv": "1.2.2",
"prop-types": "15.6.1", "prop-types": "15.6.2",
"react-lifecycles-compat": "3.0.4", "react-lifecycles-compat": "3.0.4",
"warning": "3.0.0" "warning": "3.0.0"
} }
}, },
"react-redux": {
"version": "5.0.7",
"bundled": true,
"requires": {
"hoist-non-react-statics": "2.5.0",
"invariant": "2.2.4",
"lodash": "4.17.10",
"lodash-es": "4.17.10",
"loose-envify": "1.3.1",
"prop-types": "15.6.1"
}
},
"redux": {
"version": "4.0.0",
"bundled": true,
"requires": {
"loose-envify": "1.3.1",
"symbol-observable": "1.2.0"
}
},
"resolve": { "resolve": {
"version": "1.7.1", "version": "1.8.1",
"bundled": true, "bundled": true,
"requires": { "requires": {
"path-parse": "1.0.5" "path-parse": "1.0.6"
} }
}, },
"safer-buffer": { "safer-buffer": {
@ -515,41 +502,37 @@
"version": "2.0.0", "version": "2.0.0",
"bundled": true "bundled": true
}, },
"symbol-observable": {
"version": "1.2.0",
"bundled": true
},
"tslib": { "tslib": {
"version": "1.9.1", "version": "1.9.3",
"bundled": true "bundled": true
}, },
"tslint": { "tslint": {
"version": "5.10.0", "version": "5.11.0",
"bundled": true, "bundled": true,
"requires": { "requires": {
"babel-code-frame": "6.26.0", "babel-code-frame": "6.26.0",
"builtin-modules": "1.1.1", "builtin-modules": "1.1.1",
"chalk": "2.4.1", "chalk": "2.4.1",
"commander": "2.15.1", "commander": "2.17.1",
"diff": "3.5.0", "diff": "3.5.0",
"glob": "7.1.2", "glob": "7.1.2",
"js-yaml": "3.11.0", "js-yaml": "3.12.0",
"minimatch": "3.0.4", "minimatch": "3.0.4",
"resolve": "1.7.1", "resolve": "1.8.1",
"semver": "5.5.0", "semver": "5.5.0",
"tslib": "1.9.1", "tslib": "1.9.3",
"tsutils": "2.27.1" "tsutils": "2.29.0"
} }
}, },
"tsutils": { "tsutils": {
"version": "2.27.1", "version": "2.29.0",
"bundled": true, "bundled": true,
"requires": { "requires": {
"tslib": "1.9.1" "tslib": "1.9.3"
} }
}, },
"typescript": { "typescript": {
"version": "2.8.3", "version": "3.0.1",
"bundled": true "bundled": true
}, },
"ua-parser-js": { "ua-parser-js": {
@ -560,7 +543,7 @@
"version": "3.0.0", "version": "3.0.0",
"bundled": true, "bundled": true,
"requires": { "requires": {
"loose-envify": "1.3.1" "loose-envify": "1.4.0"
} }
}, },
"whatwg-fetch": { "whatwg-fetch": {
@ -590,7 +573,7 @@
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true, "dev": true,
"requires": { "requires": {
"color-convert": "1.9.1" "color-convert": "1.9.2"
} }
}, },
"supports-color": { "supports-color": {
@ -605,24 +588,24 @@
} }
}, },
"color-convert": { "color-convert": {
"version": "1.9.1", "version": "1.9.2",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz",
"integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==",
"dev": true, "dev": true,
"requires": { "requires": {
"color-name": "1.1.3" "color-name": "1.1.1"
} }
}, },
"color-name": { "color-name": {
"version": "1.1.3", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=",
"dev": true "dev": true
}, },
"commander": { "commander": {
"version": "2.15.1", "version": "2.17.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
"integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
"dev": true "dev": true
}, },
"concat-map": { "concat-map": {
@ -637,9 +620,9 @@
"integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
}, },
"csstype": { "csstype": {
"version": "2.5.3", "version": "2.5.6",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.5.3.tgz", "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.5.6.tgz",
"integrity": "sha512-G5HnoK8nOiAq3DXIEoY2n/8Vb7Lgrms+jGJl8E4EJpQEeVONEnPFJSl8IK505wPBoxxtrtHhrRm4WX2GgdqarA==", "integrity": "sha512-tKPyhy0FmfYD2KQYXD5GzkvAYLYj96cMLXr648CKGd3wBe0QqoPipImjGiLze9c8leJK8J3n7ap90tpk3E6HGQ==",
"dev": true "dev": true
}, },
"diff": { "diff": {
@ -663,9 +646,9 @@
"dev": true "dev": true
}, },
"esprima": { "esprima": {
"version": "4.0.0", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true "dev": true
}, },
"esutils": { "esutils": {
@ -675,13 +658,13 @@
"dev": true "dev": true
}, },
"fbjs": { "fbjs": {
"version": "0.8.16", "version": "0.8.17",
"resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz",
"integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=",
"requires": { "requires": {
"core-js": "1.2.7", "core-js": "1.2.7",
"isomorphic-fetch": "2.2.1", "isomorphic-fetch": "2.2.1",
"loose-envify": "1.3.1", "loose-envify": "1.4.0",
"object-assign": "4.1.1", "object-assign": "4.1.1",
"promise": "7.3.1", "promise": "7.3.1",
"setimmediate": "1.0.5", "setimmediate": "1.0.5",
@ -723,11 +706,6 @@
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true "dev": true
}, },
"hoist-non-react-statics": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz",
"integrity": "sha512-6Bl6XsDT1ntE0lHbIhr4Kp2PGcleGZ66qu5Jqk8lc0Xc/IeG6gVLmwUGs/K0Us+L8VWoKgj0uWdPMataOsm31w=="
},
"iconv-lite": { "iconv-lite": {
"version": "0.4.23", "version": "0.4.23",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
@ -752,14 +730,6 @@
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true "dev": true
}, },
"invariant": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
"integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
"requires": {
"loose-envify": "1.3.1"
}
},
"is-stream": { "is-stream": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
@ -780,29 +750,19 @@
"integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
}, },
"js-yaml": { "js-yaml": {
"version": "3.11.0", "version": "3.12.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
"integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
"dev": true, "dev": true,
"requires": { "requires": {
"argparse": "1.0.10", "argparse": "1.0.10",
"esprima": "4.0.0" "esprima": "4.0.1"
} }
}, },
"lodash": {
"version": "4.17.10",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
"integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="
},
"lodash-es": {
"version": "4.17.10",
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.10.tgz",
"integrity": "sha512-iesFYPmxYYGTcmQK0sL8bX3TGHyM6b2qREaB4kamHfQyfPJP0xgoGxp19nsH16nsfquLdiyKyX3mQkfiSGV8Rg=="
},
"loose-envify": { "loose-envify": {
"version": "1.3.1", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"requires": { "requires": {
"js-tokens": "3.0.2" "js-tokens": "3.0.2"
} }
@ -846,9 +806,9 @@
"dev": true "dev": true
}, },
"path-parse": { "path-parse": {
"version": "1.0.5", "version": "1.0.6",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
"integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
"dev": true "dev": true
}, },
"promise": { "promise": {
@ -860,66 +820,43 @@
} }
}, },
"prop-types": { "prop-types": {
"version": "15.6.1", "version": "15.6.2",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.1.tgz", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
"integrity": "sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ==", "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
"requires": { "requires": {
"fbjs": "0.8.16", "loose-envify": "1.4.0",
"loose-envify": "1.3.1",
"object-assign": "4.1.1" "object-assign": "4.1.1"
} }
}, },
"react": { "react": {
"version": "16.4.0", "version": "16.4.2",
"resolved": "https://registry.npmjs.org/react/-/react-16.4.0.tgz", "resolved": "https://registry.npmjs.org/react/-/react-16.4.2.tgz",
"integrity": "sha512-K0UrkLXSAekf5nJu89obKUM7o2vc6MMN9LYoKnCa+c+8MJRAT120xzPLENcWSRc7GYKIg0LlgJRDorrufdglQQ==", "integrity": "sha512-dMv7YrbxO4y2aqnvA7f/ik9ibeLSHQJTI6TrYAenPSaQ6OXfb+Oti+oJiy8WBxgRzlKatYqtCjphTgDSCEiWFg==",
"requires": { "requires": {
"fbjs": "0.8.16", "fbjs": "0.8.17",
"loose-envify": "1.3.1", "loose-envify": "1.4.0",
"object-assign": "4.1.1", "object-assign": "4.1.1",
"prop-types": "15.6.1" "prop-types": "15.6.2"
} }
}, },
"react-dom": { "react-dom": {
"version": "16.4.0", "version": "16.4.2",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.4.0.tgz", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.4.2.tgz",
"integrity": "sha512-bbLd+HYpBEnYoNyxDe9XpSG2t9wypMohwQPvKw8Hov3nF7SJiJIgK56b46zHpBUpHb06a1iEuw7G3rbrsnNL6w==", "integrity": "sha512-Usl73nQqzvmJN+89r97zmeUpQDKDlh58eX6Hbs/ERdDHzeBzWy+ENk7fsGQ+5KxArV1iOFPT46/VneklK9zoWw==",
"requires": { "requires": {
"fbjs": "0.8.16", "fbjs": "0.8.17",
"loose-envify": "1.3.1", "loose-envify": "1.4.0",
"object-assign": "4.1.1", "object-assign": "4.1.1",
"prop-types": "15.6.1" "prop-types": "15.6.2"
}
},
"react-redux": {
"version": "5.0.7",
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.0.7.tgz",
"integrity": "sha512-5VI8EV5hdgNgyjfmWzBbdrqUkrVRKlyTKk1sGH3jzM2M2Mhj/seQgPXaz6gVAj2lz/nz688AdTqMO18Lr24Zhg==",
"requires": {
"hoist-non-react-statics": "2.5.0",
"invariant": "2.2.4",
"lodash": "4.17.10",
"lodash-es": "4.17.10",
"loose-envify": "1.3.1",
"prop-types": "15.6.1"
}
},
"redux": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/redux/-/redux-4.0.0.tgz",
"integrity": "sha512-NnnHF0h0WVE/hXyrB6OlX67LYRuaf/rJcbWvnHHEPCF/Xa/AZpwhs/20WyqzQae5x4SD2F9nPObgBh2rxAgLiA==",
"requires": {
"loose-envify": "1.3.1",
"symbol-observable": "1.2.0"
} }
}, },
"resolve": { "resolve": {
"version": "1.7.1", "version": "1.8.1",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
"integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
"dev": true, "dev": true,
"requires": { "requires": {
"path-parse": "1.0.5" "path-parse": "1.0.6"
} }
}, },
"safer-buffer": { "safer-buffer": {
@ -959,50 +896,45 @@
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true "dev": true
}, },
"symbol-observable": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
"integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
},
"tslib": { "tslib": {
"version": "1.9.1", "version": "1.9.3",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.1.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
"integrity": "sha512-avfPS28HmGLLc2o4elcc2EIq2FcH++Yo5YxpBZi9Yw93BCTGFthI4HPE4Rpep6vSYQaK8e69PelM44tPj+RaQg==", "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
"dev": true "dev": true
}, },
"tslint": { "tslint": {
"version": "5.10.0", "version": "5.11.0",
"resolved": "https://registry.npmjs.org/tslint/-/tslint-5.10.0.tgz", "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz",
"integrity": "sha1-EeJrzLiK+gLdDZlWyuPUVAtfVMM=", "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=",
"dev": true, "dev": true,
"requires": { "requires": {
"babel-code-frame": "6.26.0", "babel-code-frame": "6.26.0",
"builtin-modules": "1.1.1", "builtin-modules": "1.1.1",
"chalk": "2.4.1", "chalk": "2.4.1",
"commander": "2.15.1", "commander": "2.17.1",
"diff": "3.5.0", "diff": "3.5.0",
"glob": "7.1.2", "glob": "7.1.2",
"js-yaml": "3.11.0", "js-yaml": "3.12.0",
"minimatch": "3.0.4", "minimatch": "3.0.4",
"resolve": "1.7.1", "resolve": "1.8.1",
"semver": "5.5.0", "semver": "5.5.0",
"tslib": "1.9.1", "tslib": "1.9.3",
"tsutils": "2.27.1" "tsutils": "2.29.0"
} }
}, },
"tsutils": { "tsutils": {
"version": "2.27.1", "version": "2.29.0",
"resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.27.1.tgz", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
"integrity": "sha512-AE/7uzp32MmaHvNNFES85hhUDHFdFZp6OAiZcd6y4ZKKIg6orJTm8keYWBhIhrJQH3a4LzNKat7ZPXZt5aTf6w==", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
"dev": true, "dev": true,
"requires": { "requires": {
"tslib": "1.9.1" "tslib": "1.9.3"
} }
}, },
"typescript": { "typescript": {
"version": "2.8.3", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.3.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.1.tgz",
"integrity": "sha512-K7g15Bb6Ra4lKf7Iq2l/I5/En+hLIHmxWZGq3D4DIRNFxMNV6j2SHSvDOqs2tGd4UvD/fJvrwopzQXjLrT7Itw==", "integrity": "sha512-zQIMOmC+372pC/CCVLqnQ0zSBiY7HHodU7mpQdjiZddek4GMj31I3dUJ7gAs9o65X7mnRma6OokOkc6f9jjfBg==",
"dev": true "dev": true
}, },
"ua-parser-js": { "ua-parser-js": {

File diff suppressed because it is too large Load Diff

View File

@ -11,7 +11,7 @@
"main": "target/dist/ccm-cms-tinymce.js", "main": "target/dist/ccm-cms-tinymce.js",
"types": "target/dist/ccm-cms-tinymce.d.ts", "types": "target/dist/ccm-cms-tinymce.d.ts",
"scripts": { "scripts": {
"build": "tsc", "build": "webpack",
"tslint": "tslint --project ." "tslint": "tslint --project ."
}, },
"dependencies": { "dependencies": {
@ -19,7 +19,11 @@
}, },
"devDependencies": { "devDependencies": {
"@types/tinymce": "^4.5.16", "@types/tinymce": "^4.5.16",
"file-loader": "^1.1.11",
"ts-loader": "^4.4.2",
"tslint": "^5.11.0", "tslint": "^5.11.0",
"typescript": "^3.0.1" "typescript": "^3.0.1",
"webpack": "^4.16.4",
"webpack-cli": "^3.1.0"
} }
} }

View File

@ -39,24 +39,18 @@
<resource> <resource>
<directory>src/main/resources</directory> <directory>src/main/resources</directory>
</resource> </resource>
<resource> <!-- <resource>
<directory>src/main/typescript</directory> <directory>src/main/typescript</directory>
</resource> </resource>
<resource> <resource>
<directory>${project.build.directory}/generated-resources</directory> <directory>${project.build.directory}/generated-resources</directory>
</resource> </resource> -->
<!--<resource>
<directory>${project.build.directory}/maven-shared-archive-resources/ccm-pagemodelseditor</directory>
</resource>-->
</resources> </resources>
<plugins> <plugins>
<!-- <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-remote-resources-plugin</artifactId> <version>1.5</version> <configuration> <resourceBundles> <!--<plugin>
<resourceBundle>org.libreccm:ccm-pagemodelseditor:${project.version}</resourceBundle> </resourceBundles> </configuration> <executions> <execution> <goals> <goal>process</goal> </goals> </execution> </executions> </plugin> -->
<plugin>
<groupId>com.github.eirslett</groupId> <groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId> <artifactId>frontend-maven-plugin</artifactId>
@ -74,15 +68,6 @@
<nodeVersion>v8.11.4</nodeVersion> <nodeVersion>v8.11.4</nodeVersion>
</configuration> </configuration>
</execution> </execution>
<!--<execution>
<id>npm link ccm-pagemodelseditor</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>link ccm-pagemodelseditor</arguments>
</configuration>
</execution>-->
<execution> <execution>
<id>npm install</id> <id>npm install</id>
<goals> <goals>
@ -108,7 +93,7 @@
</configuration> </configuration>
</execution> </execution>
</executions> </executions>
</plugin> </plugin>-->
</plugins> </plugins>
</build> </build>

View File

@ -0,0 +1,47 @@
tinymce.PluginManager.add("ccm-cms-insertmedia", function(editor, url) {
console.log("Adding plugin ccm-cms-insertmedia...");
editor.addButton(
"insertmedia",
{
icon: "image",
onclick: function() {
openDialog(editor);
},
tooltip: "Insert media",
},
);
editor.addMenuItem(
"insert-media",
{
text: "Insert media",
context: "tools",
onclock: function() {
openDialog(editor);
},
},
);
});
function openDialog(editor) {
console.log("Opening dialog");
editor.windowManager.open(
{
body: [
{
label: "Search term",
name: "searchterm",
type: "textbox"
},
],
onsubmit: function(event) {
},
title: "Insert media",
});
}

View File

@ -0,0 +1,7 @@
import * as tinymce from "tinymce";
import plugin from "./plugin";
tinymce.PluginManager.add("ccm-cms-insertmedia", plugin);
export default function() {};

View File

@ -0,0 +1,69 @@
import * as tinymce from "tinymce";
const plugin = (editor: tinymce.Editor, url: string): void => {
editor.addButton(
"insert-media",
{
text: "Insert media",
icon: false,
onclick: function() {
openDialog(editor);
}
}
);
editor.addMenuItem(
"insert-media",
{
text: "Insert media",
context: "tools",
onclock: function() {
openDialog(editor);
}
}
);
};
// tinymce.PluginManager.add("ccm-cms-insertmedia",
// function(editor: tinymce.Editor,
// url: string): void {
//
// editor.addButton(
// "insert-media",
// {
// text: "Insert media",
// icon: false,
// onclick: function() {
// openDialog(editor);
// }
// }
// );
//
// editor.addMenuItem(
// "insert-media",
// {
// text: "Insert media",
// context: "tools",
// onclock: function() {
// openDialog(editor);
// }
// }
// );
// });
function openDialog(editor: tinymce.Editor): void {
editor.windowManager.open(
{},
{
title: "Insert media",
body: [
{ label: "Search term", name: "searchterm", type: "textbox" }
],
onsubmit: function(event: Event) {
},
});
}
export default plugin;

View File

@ -3,13 +3,13 @@
"jsx": "React", "jsx": "React",
"module": "commonjs", "module": "commonjs",
"moduleResolution": "node", "moduleResolution": "node",
"outDir": "target/dist", "rootDir": "src/main/typescript",
"sourceMap": true, "sourceMap": true,
"declaration": true, "declaration": true,
"strict": true, "strict": true,
"target": "es6" "target": "es6"
}, },
"include": [ "include": [
"src/main/typescript/**/*" "src/main/typescript/tinymce/plugins/ccm-cms-tinymce-insertmedia/**/*"
] ]
} }

View File

@ -0,0 +1,25 @@
const path = require("path");
module.exports = {
devtool: "source-map",
entry: {
"ccm-cms-tinymce-insertmedia/plugin": "./src/main/typescript/tinymce/plugins/ccm-cms-tinymce-insertmedia/index.ts",
},
output: {
path: path.resolve(__dirname, "target/generated-resources/tinymce/plugins"),
filename: "[name].js"
},
resolve: {
extensions: [".webpack.js", "web.js", ".ts", ".tsx", ".js"]
},
module: {
rules: [
{ test: /\.tsx?$/, loader: "ts-loader"}
]
}
};

View File

@ -83,15 +83,18 @@ public class CMSConfig {
*/ */
@Setting @Setting
private List<String> dhtmlEditorConfig = Arrays.asList(new String[]{ private List<String> dhtmlEditorConfig = Arrays.asList(new String[]{
"TinyMCE.Config", "/scripts/dist/ccm-cms-tinymce.js"}); "TinyMCE.Config", "scripts/ccm-cms/tinymce-loader.js"
// "TinyMCE.Config", "/tinymce/tinymce_cms_config.js"}); });
// "TinyMCE.Config", "scripts/dist/tinymce/tinymce_cms_config.js"});
/** /**
* Defines which plugins to use, e.g.TableOperations,CSS Format: * Defines which plugins to use, e.g.TableOperations,CSS Format:
* [string,string,string] * [string,string,string]
*/ */
@Setting @Setting
private List<String> dhtmlEditorPlugins = Collections.emptyList(); private List<String> dhtmlEditorPlugins = Arrays.asList(new String[]{
"scripts/ccm-cms/tinymce/plugins/insertmedia.js"
});
/** /**
* Prevent undesirable functions from being made available, eg images should * Prevent undesirable functions from being made available, eg images should

View File

@ -79,7 +79,7 @@ public final class BebopConfig {
@Setting @Setting
// private String dhtmlEditorSrcFile = "/ccm-editor/ccm-editor-loader.js"; // private String dhtmlEditorSrcFile = "/ccm-editor/ccm-editor-loader.js";
private String dhtmlEditorSrcFile = "/tinymce/js/tinymce/tinymce.min.js"; private String dhtmlEditorSrcFile = "/webjars/tinymce/4.8.2/tinymce.js";
@Setting @Setting
private Boolean showClassName = false; private Boolean showClassName = false;

View File

@ -112,7 +112,7 @@ public class DHTMLEditor extends TextArea {
"/ccm-editor/ccm-editor-loader.js"); "/ccm-editor/ccm-editor-loader.js");
public static final Config STANDARD = new Config("tinymce.config", public static final Config STANDARD = new Config("tinymce.config",
"/tinymce(tinymce-config.js"); "/tinymce/tinymce-config.js");
private String m_name; private String m_name;
private String m_path; private String m_path;

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE stylesheet [<!ENTITY nbsp '&#160;'>]> <!DOCTYPE stylesheet [<!ENTITY nbsp '&#160;'>]>
<!-- <!--
Copyright: 2006, 2007, 2008 Sören Bernstein Copyright: 2006, 2007, 2008 Sören Bernstein
This file is part of Mandalay. This file is part of Mandalay.
Mandalay is free software: you can redistribute it and/or modify Mandalay is free software: you can redistribute it and/or modify
@ -29,38 +29,38 @@
<!-- Autor: Sören Bernstein --> <!-- Autor: Sören Bernstein -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:bebop="http://www.arsdigita.com/bebop/1.0" xmlns:bebop="http://www.arsdigita.com/bebop/1.0"
xmlns:cms="http://www.arsdigita.com/cms/1.0" xmlns:cms="http://www.arsdigita.com/cms/1.0"
xmlns:foundry="http://foundry.libreccm.org" xmlns:foundry="http://foundry.libreccm.org"
xmlns:nav="http://ccm.redhat.com/navigation" xmlns:nav="http://ccm.redhat.com/navigation"
exclude-result-prefixes="xsl bebop cms foundry nav" exclude-result-prefixes="xsl bebop cms foundry nav"
version="2.0"> version="2.0">
<!-- DE Benutze DHTML-Editor (HTMLArea) --> <!-- DE Benutze DHTML-Editor (HTMLArea) -->
<!-- EN Use DHTML-Editor (HTMLArea) --> <!-- EN Use DHTML-Editor (HTMLArea) -->
<xsl:template match="bebop:dhtmleditor"> <xsl:template match="bebop:dhtmleditor">
<xsl:variable name="first-match"> <xsl:variable name="first-match">
<xsl:value-of select="//bebop:dhtmleditor/@name"/> <xsl:value-of select="//bebop:dhtmleditor/@name"/>
</xsl:variable> </xsl:variable>
<xsl:if test="@name=$first-match"> <xsl:if test="@name=$first-match">
<script type="text/javascript"> <script type="text/javascript">
_editor_url = "/assets/htmlarea/"; _editor_url = "/assets/htmlarea/";
_editor_lang = "en"; _editor_lang = "en";
var numEd = 0; var numEd = 0;
</script> </script>
<script type="text/javascript" src="/assets/htmlarea/htmlarea.js"/> <script type="text/javascript" src="/assets/htmlarea/htmlarea.js"/>
<script type="text/javascript"> <script type="text/javascript">
<xsl:for-each select="bebop:plugin"> <xsl:for-each select="bebop:plugin">
HTMLArea.loadPlugin("<xsl:value-of select="@name"/>"); HTMLArea.loadPlugin("<xsl:value-of select="@name"/>");
</xsl:for-each> </xsl:for-each>
// Using Styled.js didn't seem to work anymore with htmlarea 3.0rc3, // Using Styled.js didn't seem to work anymore with htmlarea 3.0rc3,
// so instead we configure the editor here // so instead we configure the editor here
var css_plugin_args = { var css_plugin_args = {
combos : [ combos : [
{ label: "Style", { label: "Style",
@ -73,17 +73,17 @@
} }
] ]
}; };
<xsl:for-each select="//bebop:dhtmleditor"> <xsl:for-each select="//bebop:dhtmleditor">
var config_<xsl:value-of select="@name"/> = null; var config_<xsl:value-of select="@name"/> = null;
var editor_<xsl:value-of select="@name"/> = null; var editor_<xsl:value-of select="@name"/> = null;
</xsl:for-each> </xsl:for-each>
function initDocument() { function initDocument() {
<xsl:for-each select="//bebop:dhtmleditor"> <xsl:for-each select="//bebop:dhtmleditor">
config_<xsl:value-of select="@name"/> = new HTMLArea.Config(); config_<xsl:value-of select="@name"/> = new HTMLArea.Config();
editor_<xsl:value-of select="@name"/> = new HTMLArea("ta_<xsl:value-of select="@name"/>", config_<xsl:value-of select="@name"/>); editor_<xsl:value-of select="@name"/> = new HTMLArea("ta_<xsl:value-of select="@name"/>", config_<xsl:value-of select="@name"/>);
config_<xsl:value-of select="@name"/>.registerButton("insertlink", "Insert link", _editor_url + "images/ed_link.gif", false, function(editor) { config_<xsl:value-of select="@name"/>.registerButton("insertlink", "Insert link", _editor_url + "images/ed_link.gif", false, function(editor) {
<!-- Modified to add the open in new window button NJ-20062403--> <!-- Modified to add the open in new window button NJ-20062403-->
<!-- editor._popupDialog("insert_link.html", function(param) { <!-- editor._popupDialog("insert_link.html", function(param) {
@ -129,7 +129,7 @@
} }
}, null); }, null);
}); });
config_<xsl:value-of select="@name"/>.sizeIncludesToolbar = false; config_<xsl:value-of select="@name"/>.sizeIncludesToolbar = false;
config_<xsl:value-of select="@name"/>.statusBar = false; config_<xsl:value-of select="@name"/>.statusBar = false;
config_<xsl:value-of select="@name"/>.toolbar = [[ "formatblock", "space", "bold", "italic", "underline", "strikethrough", "separator", "subscript", "superscript", "separator", "copy", "cut", "paste", "space", "undo", "redo", "space", "removeformat", "killword" ], [ "justifyleft", "justifycenter", "justifyright", "justifyfull", "separator", "lefttoright", "righttoleft", "separator", "orderedlist", "unorderedlist", "outdent", "indent", "separator", "textindicator", "separator", "inserthorizontalrule", "insertlink", "insertimage", "inserttable", "htmlmode", "separator", "popupeditor", "separator" ]]; config_<xsl:value-of select="@name"/>.toolbar = [[ "formatblock", "space", "bold", "italic", "underline", "strikethrough", "separator", "subscript", "superscript", "separator", "copy", "cut", "paste", "space", "undo", "redo", "space", "removeformat", "killword" ], [ "justifyleft", "justifycenter", "justifyright", "justifyfull", "separator", "lefttoright", "righttoleft", "separator", "orderedlist", "unorderedlist", "outdent", "indent", "separator", "textindicator", "separator", "inserthorizontalrule", "insertlink", "insertimage", "inserttable", "htmlmode", "separator", "popupeditor", "separator" ]];
@ -137,7 +137,7 @@
config_<xsl:value-of select="@name"/>.hideSomeButtons("<xsl:value-of select="bebop:config/@hidden-buttons"/>"); config_<xsl:value-of select="@name"/>.hideSomeButtons("<xsl:value-of select="bebop:config/@hidden-buttons"/>");
</xsl:if> </xsl:if>
editor_<xsl:value-of select="@name"/>.config.pageStyle = "@import url(/assets/htmlarea/htmlarea.css);"; editor_<xsl:value-of select="@name"/>.config.pageStyle = "@import url(/assets/htmlarea/htmlarea.css);";
<xsl:for-each select="bebop:plugin"> <xsl:for-each select="bebop:plugin">
<xsl:choose> <xsl:choose>
<xsl:when test="@name = 'CSS'"> <xsl:when test="@name = 'CSS'">
@ -148,15 +148,15 @@
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
</xsl:for-each> </xsl:for-each>
setTimeout(function() {editor_<xsl:value-of select="@name"/>.generate();}, 500*numEd); setTimeout(function() {editor_<xsl:value-of select="@name"/>.generate();}, 500*numEd);
numEd++; numEd++;
</xsl:for-each> </xsl:for-each>
} }
HTMLArea.init(); HTMLArea.init();
HTMLArea.onload = initDocument; HTMLArea.onload = initDocument;
function wordClean_<xsl:value-of select="@name"/>() { function wordClean_<xsl:value-of select="@name"/>() {
editor_<xsl:value-of select="@name"/>._wordClean(); editor_<xsl:value-of select="@name"/>._wordClean();
} }
@ -165,71 +165,71 @@
<style type="text/css"> <style type="text/css">
textarea { background-color: #fff; border: 1px solid 00f; } textarea { background-color: #fff; border: 1px solid 00f; }
</style> </style>
--> -->
</xsl:if> </xsl:if>
<xsl:call-template name="process-label"> <xsl:call-template name="process-label">
<xsl:with-param name="widget" select="."/> <xsl:with-param name="widget" select="."/>
</xsl:call-template> </xsl:call-template>
<div style="width:560px; border:1px outset #666;"> <div style="width:560px; border:1px outset #666;">
<textarea id="ta_{@name}" <textarea id="ta_{@name}"
name="{@name}" name="{@name}"
rows="{@rows}" rows="{@rows}"
cols="{@cols}" cols="{@cols}"
wrap="{@wrap}" wrap="{@wrap}"
style="width:100%"> style="width:100%">
<xsl:value-of disable-output-escaping="no" select="text()"/> <xsl:value-of disable-output-escaping="no" select="text()"/>
</textarea> </textarea>
</div> </div>
</xsl:template> </xsl:template>
<!-- DE Benutze FCKEditor --> <!-- DE Benutze FCKEditor -->
<!-- EN Use FCKEditor --> <!-- EN Use FCKEditor -->
<xsl:template match="bebop:fckeditor"> <xsl:template match="bebop:fckeditor">
<xsl:variable name="first-match"> <xsl:variable name="first-match">
<xsl:value-of select="//bebop:fckeditor/@name"/> <xsl:value-of select="//bebop:fckeditor/@name"/>
</xsl:variable> </xsl:variable>
<!-- EN Start of the FCKeditor component code --> <!-- EN Start of the FCKeditor component code -->
<xsl:if test="@name=$first-match"> <xsl:if test="@name=$first-match">
<script type="text/javascript"> <script type="text/javascript">
_editor_url = "/assets/fckeditor/"; _editor_url = "/assets/fckeditor/";
_editor_lang = "en"; _editor_lang = "en";
var numEd = 0; var numEd = 0;
</script> </script>
<script type="text/javascript" src="/assets/fckeditor/fckeditor.js"/> <script type="text/javascript" src="/assets/fckeditor/fckeditor.js"/>
<script type="text/javascript"> <script type="text/javascript">
<xsl:for-each select="//bebop:fckeditor"> <xsl:for-each select="//bebop:fckeditor">
var editor_<xsl:value-of select="@name"/> = null; var editor_<xsl:value-of select="@name"/> = null;
</xsl:for-each> </xsl:for-each>
window.onload = function() { window.onload = function() {
<xsl:for-each select="//bebop:fckeditor"> <xsl:for-each select="//bebop:fckeditor">
editor_<xsl:value-of select="@name"/> = new FCKeditor("ta_<xsl:value-of select="@name"/>") ; editor_<xsl:value-of select="@name"/> = new FCKeditor("ta_<xsl:value-of select="@name"/>") ;
editor_<xsl:value-of select="@name"/>.Width = editor_<xsl:value-of select="@name"/>.Width =
<xsl:choose> <xsl:choose>
<xsl:when test="@metadata.width"> <xsl:when test="@metadata.width">
'<xsl:value-of select="@metadata.width"/>'; '<xsl:value-of select="@metadata.width"/>';
</xsl:when> </xsl:when>
<xsl:otherwise> <xsl:otherwise>
'100%'; '100%';
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
editor_<xsl:value-of select="@name"/>.Height = editor_<xsl:value-of select="@name"/>.Height =
<xsl:choose> <xsl:choose>
<xsl:when test="@metadata.height"> <xsl:when test="@metadata.height">
'<xsl:value-of select="@metadata.height"/>'; '<xsl:value-of select="@metadata.height"/>';
</xsl:when> </xsl:when>
<xsl:otherwise> <xsl:otherwise>
'400'; '400';
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
editor_<xsl:value-of select="@name"/>.BasePath = "/assets/fckeditor/" ; editor_<xsl:value-of select="@name"/>.BasePath = "/assets/fckeditor/" ;
editor_<xsl:value-of select="@name"/>.PluginsPath = editor_<xsl:value-of select="@name"/>.BasePath + "editor/plugins/" ; editor_<xsl:value-of select="@name"/>.PluginsPath = editor_<xsl:value-of select="@name"/>.BasePath + "editor/plugins/" ;
<xsl:if test="bebop:config/@path"> <xsl:if test="bebop:config/@path">
@ -238,70 +238,77 @@
editor_<xsl:value-of select="@name"/>.ToolbarSet = "Basic"; editor_<xsl:value-of select="@name"/>.ToolbarSet = "Basic";
editor_<xsl:value-of select="@name"/>.ReplaceTextarea(); editor_<xsl:value-of select="@name"/>.ReplaceTextarea();
} }
</xsl:for-each> </xsl:for-each>
</script> </script>
<!-- <!--
<style type="text/css"> <style type="text/css">
textarea { background-color: #fff; border: 1px solid 00f; } textarea { background-color: #fff; border: 1px solid 00f; }
</style> </style>
--> -->
</xsl:if> </xsl:if>
<!-- EN End of FCKeditor setup --> <!-- EN End of FCKeditor setup -->
<xsl:call-template name="process-label"> <xsl:call-template name="process-label">
<xsl:with-param name="widget" select="."/> <xsl:with-param name="widget" select="."/>
</xsl:call-template> </xsl:call-template>
<textarea id="ta_{@name}" name="{@name}" style="width:100%" rows="{@rows}" cols="{@cols}" wrap="{@wrap}"> <textarea id="ta_{@name}" name="{@name}" style="width:100%" rows="{@rows}" cols="{@cols}" wrap="{@wrap}">
<xsl:value-of disable-output-escaping="no" select="text()"/> <xsl:value-of disable-output-escaping="no" select="text()"/>
</textarea> </textarea>
</xsl:template> </xsl:template>
<xsl:template match="bebop:tinymce"> <xsl:template match="bebop:tinymce">
<xsl:variable name="first-match"> <xsl:variable name="first-match">
<xsl:value-of select="//bebop:tinymce/@name" /> <xsl:value-of select="//bebop:tinymce/@name" />
</xsl:variable> </xsl:variable>
<xsl:if test="@name=$first-match"> <xsl:if test="@name=$first-match">
<!--<script src="{./@editor_src}"></script>--> <script src="{./@editor_src}"></script>
<script src="{./bebop:config[@name='TinyMCE.Config']/@path}"> <script src="{./bebop:config[@name='TinyMCE.Config']/@path}">
</script> </script>
<xsl:if test="bebop:plugin">
<xsl:for-each select="bebop:plugin">
<script src="{$context-prefix}/{./@name}"></script>
</xsl:for-each>
</xsl:if>
</xsl:if> </xsl:if>
<xsl:call-template name="process-label"> <xsl:call-template name="process-label">
<xsl:with-param name="widget" select="."/> <xsl:with-param name="widget" select="."/>
</xsl:call-template> </xsl:call-template>
<textarea id="ta_{@name}" <textarea id="ta_{@name}"
class="tinymce" class="tinymce"
name="{@name}" name="{@name}"
rows="{@rows}" rows="{@rows}"
cols="{@cols}" cols="{@cols}"
wrap="{@wrap}"> wrap="{@wrap}">
<xsl:value-of disable-output-escaping="no" select="text()"/> <xsl:value-of disable-output-escaping="no" select="text()"/>
</textarea> </textarea>
</xsl:template> </xsl:template>
<!-- DE Benutze Xinha --> <!-- DE Benutze Xinha -->
<!-- EN Use Xinha --> <!-- EN Use Xinha -->
<xsl:template match="bebop:xinha"> <xsl:template match="bebop:xinha">
<xsl:variable name="first-match"> <xsl:variable name="first-match">
<xsl:value-of select="//bebop:xinha/@name"/> <xsl:value-of select="//bebop:xinha/@name"/>
</xsl:variable> </xsl:variable>
<xsl:if test="@name=$first-match"> <xsl:if test="@name=$first-match">
<script type="text/javascript"> <script type="text/javascript">
_editor_url = "<xsl:value-of select="@editor_url"/>"; _editor_url = "<xsl:value-of select="@editor_url"/>";
_editor_lang ="<xsl:value-of select="$lang"/>"; _editor_lang ="<xsl:value-of select="$lang"/>";
<!-- _editor_skin = "silva";--> <!-- _editor_skin = "silva";-->
<!-- DE Definiere, welche Textareas zu Xinha-Editoren werden sollen --> <!-- DE Definiere, welche Textareas zu Xinha-Editoren werden sollen -->
<!-- EN Define all textares which should become xinha editors --> <!-- EN Define all textares which should become xinha editors -->
xinha_editors = [ xinha_editors = [
@ -309,7 +316,7 @@
'ta_<xsl:value-of select="@name"/>'<xsl:if test="position() != last()">, </xsl:if> 'ta_<xsl:value-of select="@name"/>'<xsl:if test="position() != last()">, </xsl:if>
</xsl:for-each> </xsl:for-each>
]; ];
<!-- DE Lade die angegebenen Plugins falls angegeben --> <!-- DE Lade die angegebenen Plugins falls angegeben -->
<!-- EN Load the mentioned plugins if any--> <!-- EN Load the mentioned plugins if any-->
xinha_plugins = null; xinha_plugins = null;
@ -320,11 +327,11 @@
</xsl:for-each> </xsl:for-each>
]; ];
</xsl:if> </xsl:if>
</script> </script>
<!-- DE Lade die externe JavaScript-Datei für Xinha --> <!-- DE Lade die externe JavaScript-Datei für Xinha -->
<script type="text/javascript" src="{@editor_src}"/> <script type="text/javascript" src="{@editor_src}"/>
<!-- DE Lade die angegebene Konfiguration --> <!-- DE Lade die angegebene Konfiguration -->
<script type="text/javascript"> <script type="text/javascript">
<xsl:attribute name="src"> <xsl:attribute name="src">
@ -338,9 +345,9 @@
</xsl:choose> </xsl:choose>
</xsl:attribute> </xsl:attribute>
</script> </script>
</xsl:if> </xsl:if>
<xsl:call-template name="process-label"> <xsl:call-template name="process-label">
<xsl:with-param name="widget" select="."/> <xsl:with-param name="widget" select="."/>
</xsl:call-template> </xsl:call-template>
@ -348,9 +355,9 @@
<xsl:value-of disable-output-escaping="no" select="text()"/> <xsl:value-of disable-output-escaping="no" select="text()"/>
</textarea> </textarea>
</xsl:template> </xsl:template>
<xsl:template match="bebop:ccmeditor"> <xsl:template match="bebop:ccmeditor">
<script data-main="{@editor_src}" <script data-main="{@editor_src}"
src="{$context-prefix}/webjars/requirejs/2.3.5/require.min.js" /> src="{$context-prefix}/webjars/requirejs/2.3.5/require.min.js" />
<textarea id="ta_{@name}" <textarea id="ta_{@name}"
@ -366,7 +373,7 @@
<xsl:value-of disable-output-escaping="no" <xsl:value-of disable-output-escaping="no"
select="text()" /> select="text()" />
</textarea> </textarea>
</xsl:template> </xsl:template>
</xsl:stylesheet> </xsl:stylesheet>