restricted-editing.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /**
  2. * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  4. */
  5. /* globals ClassicEditor, window, document */
  6. const restrictedModeButton = document.getElementById( 'mode-restricted' );
  7. const standardModeButton = document.getElementById( 'mode-standard' );
  8. restrictedModeButton.addEventListener( 'change', handleModeChange );
  9. standardModeButton.addEventListener( 'change', handleModeChange );
  10. startMode( document.querySelector( 'input[name="editor-restriction-mode"]:checked' ).value );
  11. async function handleModeChange( evt ) {
  12. await startMode( evt.target.value );
  13. }
  14. async function startMode( selectedMode ) {
  15. if ( selectedMode === 'standard' ) {
  16. await startStandardEditingMode();
  17. } else {
  18. await startRestrictedEditingMode();
  19. }
  20. }
  21. async function startStandardEditingMode() {
  22. await reloadEditor( {
  23. removePlugins: [ 'RestrictedEditingMode' ],
  24. toolbar: [
  25. 'heading', '|', 'bold', 'italic', 'link', '|',
  26. 'bulletedList', 'numberedList', 'blockQuote', 'insertTable', '|',
  27. 'restrictedEditingException', '|', 'undo', 'redo'
  28. ],
  29. image: {
  30. toolbar: [ 'imageStyle:full', 'imageStyle:side', '|', 'imageTextAlternative' ]
  31. },
  32. table: {
  33. contentToolbar: [
  34. 'tableColumn',
  35. 'tableRow',
  36. 'mergeTableCells'
  37. ]
  38. }
  39. } );
  40. }
  41. async function startRestrictedEditingMode() {
  42. await reloadEditor( {
  43. removePlugins: [ 'StandardEditingMode' ],
  44. toolbar: [ 'bold', 'italic', 'link', '|', 'restrictedEditing', '|', 'undo', 'redo' ]
  45. } );
  46. }
  47. async function reloadEditor( config ) {
  48. if ( window.editor ) {
  49. await window.editor.destroy();
  50. }
  51. window.editor = await ClassicEditor.create( document.querySelector( '#restricted-editing-editor' ), config );
  52. }