Index: lams_central/web/ckeditor/plugins/wavepanel/dialogs/wave.css =================================================================== diff -u --- lams_central/web/ckeditor/plugins/wavepanel/dialogs/wave.css (revision 0) +++ lams_central/web/ckeditor/plugins/wavepanel/dialogs/wave.css (revision 49c7c4395cf0e03fbda33d8d25d167ba592f81b7) @@ -0,0 +1,78 @@ +.lams-wavepanel .clickable { + cursor: pointer; +} + +.lams-wavepanel .clickable .fa { + background: rgba(0, 0, 0, 0.15); + display: inline-block; + padding: 5px 7px; + border-radius: 4px; + margin-right: -7px; +} + +.lams-wavepanel .panel-heading span { + margin-top: -20px; +} + + +.btn { + padding: 6px 12px; + border: 1px solid transparent; +} +.lams-wavepanel .panel-heading { + padding: 7px 10px; +} +.lams-wavepanel .panel-body { + padding: 15px; +} +.lams-wavepanel.panel-default { + border-color: #ddd; +} +.lams-wavepanel.panel-primary { + border-color: #337ab7; +} +.lams-wavepanel.panel-success { + border-color: #d6e9c6; +} +.lams-wavepanel.panel-info { + border-color: #bce8f1; +} +.lams-wavepanel.panel-warning { + border-color: #faebcc; +} +.lams-wavepanel.panel-danger { + border-color: #ebccd1; +} +.cke_reset_all, .cke_reset_all * { + border: 1px solid transparent; +} + +.btn-block { + width: 100%; + text-align: center; +} +.cke_dialog .ImagePreviewBox { + border: none; + width: 98%; + padding: 10px; + margin-top: 10px; +} +.cke_dialog_ui_labeled_content { + padding-top: 5px; +} +.cke_dialog_contents { + background-color: #f3f3f3; +} +.cke_tpl_list a:hover .cke_tpl_item, +.cke_tpl_list a:focus .cke_tpl_item, +.cke_tpl_list a:active .cke_tpl_item { + background-color: #f3f3f3; +} +.cke_tpl_list { + border: #dcdcdc 1px solid; + background-color: #ffffff; + overflow-y: auto; + overflow-x: hidden; + width: 100%; + height: 560px; +} Index: lams_central/web/ckeditor/plugins/wavepanel/dialogs/wave.js =================================================================== diff -u --- lams_central/web/ckeditor/plugins/wavepanel/dialogs/wave.js (revision 0) +++ lams_central/web/ckeditor/plugins/wavepanel/dialogs/wave.js (revision 49c7c4395cf0e03fbda33d8d25d167ba592f81b7) @@ -0,0 +1,227 @@ +/** + * LAMS Foundation 2005 Onwards + * GNU GPL V2 + */ + +( function() { + var wavepanelDialog = function( editor ) { + // Load image preview. + var PANEL = 1, + PREVIEW = 4, + CLEANUP = 8; + + var updatePreview = function( dialog ) { + //Don't load before onShow. + if ( !dialog.onShowExecutedElement || !dialog.preview ) { + return 1; + } + + // Read attributes and update imagePreview; + dialog.commitContent( PREVIEW, dialog.preview ); + return 0; + }; + + function commitContent() { + var args = arguments; + + this.foreach( function( widget ) { + if ( widget.commit ) { + widget.commit.apply( widget, args ); + } + } ); + } + + // Avoid recursions + var incommit; + + // Synchronous field values to other impacted fields is required, e.g. border + // size change should alter inline-style text as well. + function commitInternally( targetFields ) { + if ( incommit ) { + return; + } + + incommit = 1; + + var dialog = this.getDialog(), + element = dialog.panelElement; + if ( element ) { + // Commit this field and broadcast to target fields. + this.commit( PANEL, element ); + + targetFields = [].concat( targetFields ); + var length = targetFields.length, + field; + for ( var i = 0; i < length; i++ ) { + field = dialog.getContentElement.apply( dialog, targetFields[ i ].split( ':' ) ); + // May cause recursion. + field && field.setup( PANEL, element ); + } + } + + incommit = 0; + } + + var numbering = function( id ) { + return CKEDITOR.tools.getNextId() + '_' + id; + }, + previewPanelId = numbering( 'previewPanel' ); + + // Load skin at first + var plugin = CKEDITOR.plugins.get( 'wavepanel' ); + CKEDITOR.document.appendStyleSheet( CKEDITOR.getUrl( plugin.path + 'dialogs/wave.css' ) ); + + return { + title: editor.lang.wavepanel['title'], + minWidth: 460, + minHeight: 190, + style: '', + id:'aaaaa', + className: 'bbbbbb', + onShow: function() { + this.panelElement = false; + + var editor = this.getParentEditor(), + sel = editor.getSelection(), + element = sel && sel.getSelectedElement(); + + // creating for the sake of updatePreview() method + this.onShowExecutedElement = editor.document.createElement( 'img' ); + this.preview = CKEDITOR.document.getById( previewPanelId ); + + //check if it has parent with class .lams-wavepanel + this.panelElement = editor.elementPath( element ).contains( function( element ) { + if ( element.is( 'div' ) && element.hasClass( 'lams-wavepanel' )) { + return true; + } + }); + if (this.panelElement == null) { + alert("wavepanel plugin failed to parse selected element and thus exited"); + return; + } + + // Use the original element as a buffer from since we don't want + // temporary changes to be committed, e.g. if the dialog is canceled + this.cleanPanelElement = this.panelElement; + this.panelElement = this.cleanPanelElement.clone( true, true ); + + // Fill out all fields + this.setupContent( PANEL, this.panelElement ); + updatePreview( this ); + + //setup body content as well + var divPanelBody = this.panelElement.find( 'div.panel-body' ).getItem(0); + this.preview.find( 'div.panel-body' ).getItem(0).setHtml(divPanelBody.getHtml()); + + }, + onOk: function() { + + // Restore the original element before all commits + this.panelElement = this.cleanPanelElement; + delete this.cleanPanelElement; + + // Set attributes + this.commitContent( PANEL, this.panelElement ); + + //editor.insertElement( this.panelElement ); + }, + onLoad: function() { + var doc = this._.element.getDocument(); + + this.commitContent = commitContent; + }, + onHide: function() { + if ( this.preview ) { + this.commitContent( CLEANUP, this.preview ); + } + + if ( this.onShowExecutedElement ) { + this.onShowExecutedElement.remove(); + this.onShowExecutedElement = false; // Dialog is closed. + } + + delete this.panelElement; + }, + contents: [ { + id: 'info', + label: editor.lang.wavepanel.infoTab, + accessKey: 'I', + elements: [ + { + type: 'hbox', + children: [ { + id: 'basic', + type: 'vbox', + children: [ + { + type: 'hbox', + id: 'bootsrap-class', + style: 'margin: 5px 0;', + children: [ + { + id: 'color-class', + type: 'radio', + items: [ + [editor.lang.wavepanel.colorBlue, 'wave-blue'], + [editor.lang.wavepanel.colorOrange, 'wave-orange'], + [editor.lang.wavepanel.colorGreen, 'wave-green'], + [editor.lang.wavepanel.colorPurple, 'wave-purple'], + [editor.lang.wavepanel.colorPink, 'wave-pink'], + [editor.lang.wavepanel.colorRed, 'wave-red'] + ], + style: 'color: white', + label: editor.lang.wavepanel.waveColor, + onChange: function() { + updatePreview( this.getDialog() ); + }, + setup: function( type, element ) { + if ( type == PANEL ) { + if (element.hasClass( 'wave-blue' )) { + this.setValue( 'wave-blue' ); + } else if (element.hasClass( 'wave-orange' )) { + this.setValue( 'wave-orange' ); + } else if (element.hasClass( 'wave-purple' )) { + this.setValue( 'wave-purple' ); + } else if (element.hasClass( 'wave-pink' )) { + this.setValue( 'wave-pink' ); + } else if (element.hasClass( 'wave-red' )) { + this.setValue( 'wave-red' ); + } + } + }, + commit: function( type, element ) { + + if ( type == PANEL ) { + if ( this.getValue() || this.isChanged() ) { + element.removeClass("wave-blue").removeClass("wave-orange").removeClass("wave-green").removeClass("wave-purple").removeClass("wave-pink").removeClass("wave-red"); + element.addClass( this.getValue() ); + } + } + + } + } + ], + onLoad:function( type, element ) { + $("input[type='radio'][name='color-class_radio']+label").addClass("btn"); + $("input[type='radio'][name='color-class_radio']:eq(0)+label").css("background-color","blue"); + $("input[type='radio'][name='color-class_radio']:eq(1)+label").css("background-color","orange"); + $("input[type='radio'][name='color-class_radio']:eq(2)+label").css("background-color","green"); + $("input[type='radio'][name='color-class_radio']:eq(3)+label").css("background-color","purple"); + $("input[type='radio'][name='color-class_radio']:eq(4)+label").css("background-color","pink"); + $("input[type='radio'][name='color-class_radio']:eq(5)+label").css("background-color","red"); + } + }, + + ] + } ] + }, + ] + + } ] + }; + }; + + CKEDITOR.dialog.add( 'wavepanel', function( editor ) { + return wavepanelDialog( editor ); + } ); +} )(); Index: lams_central/web/ckeditor/plugins/wavepanel/icons/hidpi/image.png =================================================================== diff -u Binary files differ Index: lams_central/web/ckeditor/plugins/wavepanel/icons/image.png =================================================================== diff -u Binary files differ Index: lams_central/web/ckeditor/plugins/wavepanel/images/noimage.png =================================================================== diff -u Binary files differ Index: lams_central/web/ckeditor/plugins/wavepanel/lang/en.js =================================================================== diff -u --- lams_central/web/ckeditor/plugins/wavepanel/lang/en.js (revision 0) +++ lams_central/web/ckeditor/plugins/wavepanel/lang/en.js (revision 49c7c4395cf0e03fbda33d8d25d167ba592f81b7) @@ -0,0 +1,14 @@ +/* +Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wavepanel', 'en', { + title: 'Editing Header Color', + waveColor: 'Color', + colorBlue: 'Blue', + colorOrange: 'Orange', + colorGreen: 'Green', + colorPurple: 'Purple', + colorRed: 'Red', + colorPink: 'Pink' +} ); Index: lams_central/web/ckeditor/plugins/wavepanel/plugin.js =================================================================== diff -u --- lams_central/web/ckeditor/plugins/wavepanel/plugin.js (revision 0) +++ lams_central/web/ckeditor/plugins/wavepanel/plugin.js (revision 49c7c4395cf0e03fbda33d8d25d167ba592f81b7) @@ -0,0 +1,37 @@ +/** + * @fileOverview The Wave Header plugin. + */ + +( function() { + + CKEDITOR.plugins.add( 'wavepanel', { + requires: 'dialog', + lang: 'en', + hidpi: true, + init: function( editor ) { + var PLUGIN_NAME = 'wavepanel'; + + // Register the dialog + CKEDITOR.dialog.add( PLUGIN_NAME, this.path + 'dialogs/wave.js' ); + + // Register the command + editor.addCommand( PLUGIN_NAME, new CKEDITOR.dialogCommand(PLUGIN_NAME) ); + + editor.on( 'doubleclick', function( evt ) { + var element = evt.data.element; + + //check if it has parent with class .lams-wavepanel + if ( element && editor.elementPath( element ).contains( function( element ) { + if ( element.is( 'div' ) && element.hasClass( 'lams-wavepanel' )) { + return true; + } + } )) { + evt.data.dialog = 'wavepanel'; + } + } ); + + + } + } ); + +} )(); Index: lams_central/web/css/_learner_base.scss =================================================================== diff -u -reda89b58885d3360b28c25096188f47952aff317 -r49c7c4395cf0e03fbda33d8d25d167ba592f81b7 --- lams_central/web/css/_learner_base.scss (.../_learner_base.scss) (revision eda89b58885d3360b28c25096188f47952aff317) +++ lams_central/web/css/_learner_base.scss (.../_learner_base.scss) (revision 49c7c4395cf0e03fbda33d8d25d167ba592f81b7) @@ -1256,4 +1256,11 @@ word-wrap: break-word; /* IE 5.5+ and CSS3 */ overflow: hidden; vertical-align: middle; -} \ No newline at end of file +} +/* Wave headers see LDEV-5167 */ +.wave-orange {background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGwtcnVsZT0iZXZlbm9kZCIgZmlsbD0iI2Q1NmExMSIgd2lkdGg9IjEyNDAiIGhlaWdodD0iMzA0IiAgeG1sbnM6dj0iaHR0cHM6Ly92ZWN0YS5pby9uYW5vIj48cGF0aCBvcGFjaXR5PSIuMTUiIGQ9Ik0wIDBoMTIzOC4wOTV2Mjk2LjQ3N2MtMzQzLjQ0OCAyNi4xNjEtMzA1LjgxNi0yNC44NjEtNjE5LjA0OC0xNy45MDdTMjkxLjk5IDMxNS43ODggMCAyNzguNTdWMHoiLz48cGF0aCBkPSJNMTI0MCAwSC45NTN2MjY0LjgwNGM3Ni41NjYtNy4zNjUgMTQ2Ljg0NC0xOC4xMiAzMjcuMzUxLTcuMzY1czI0NC4yNDUgNTMuNzcxIDUwNi42MjggMTIuOTkxYzE3NC45MjItMjcuMTg3IDMwOS45NDUtMjUuMTg2IDQwNS4wNjggNi4wMDF6IiBmaWxsPSIjZjkzIi8+PC9zdmc+");text-align:center;color: white;background-size: cover;background-repeat: no-repeat;background-position: top;padding: 5% 0 12% 0;margin: -16px; } +.wave-blue {background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjQwIiBoZWlnaHQ9IjMwNCIgIGZpbGw9IiMwOTRiYWMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgeG1sbnM6dj0iaHR0cHM6Ly92ZWN0YS5pby9uYW5vIj48cGF0aCBvcGFjaXR5PSIuMTUiIGQ9Ik0wIDBoMTIzOC4wOTV2Mjk2LjQ3N2MtMzQzLjQ0OCAyNi4xNjEtMzA1LjgxNi0yNC44NjEtNjE5LjA0OC0xNy45MDdTMjkxLjk5IDMxNS43ODggMCAyNzguNTdWMHoiLz48cGF0aCBkPSJNMTI0MCAwSC45NTN2MjY0LjgwNGM3Ni41NjYtNy4zNjUgMTQ2Ljg0NC0xOC4xMiAzMjcuMzUxLTcuMzY1czI0NC4yNDUgNTMuNzcxIDUwNi42MjggMTIuOTkxYzE3NC45MjItMjcuMTg3IDMwOS45NDUtMjUuMTg2IDQwNS4wNjggNi4wMDF6Ii8+PC9zdmc+");text-align:center;color: white;background-size: cover;background-repeat: no-repeat;background-position: top;padding: 5% 0 12% 0;margin: -16px; } +.wave-purple {background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjQwIiBoZWlnaHQ9IjMwNCIgIGZpbGw9IiM1ZDM3YTIiIGZpbGwtcnVsZT0iZXZlbm9kZCIgeG1sbnM6dj0iaHR0cHM6Ly92ZWN0YS5pby9uYW5vIj48cGF0aCBvcGFjaXR5PSIuMTUiIGQ9Ik0wIDBoMTIzOC4wOTV2Mjk2LjQ3N2MtMzQzLjQ0OCAyNi4xNjEtMzA1LjgxNi0yNC44NjEtNjE5LjA0OC0xNy45MDdTMjkxLjk5IDMxNS43ODggMCAyNzguNTdWMHoiLz48cGF0aCBkPSJNMTI0MCAwSC45NTN2MjY0LjgwNGM3Ni41NjYtNy4zNjUgMTQ2Ljg0NC0xOC4xMiAzMjcuMzUxLTcuMzY1czI0NC4yNDUgNTMuNzcxIDUwNi42MjggMTIuOTkxYzE3NC45MjItMjcuMTg3IDMwOS45NDUtMjUuMTg2IDQwNS4wNjggNi4wMDF6Ii8+PC9zdmc+");text-align:center;color: white;background-size: cover;background-repeat: no-repeat;background-position: top;padding: 5% 0 12% 0;margin: -16px; } +.wave-green {background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjQwIiBoZWlnaHQ9IjMwNCIgIGZpbGw9IiMyMjhjM2EiIGZpbGwtcnVsZT0iZXZlbm9kZCIgeG1sbnM6dj0iaHR0cHM6Ly92ZWN0YS5pby9uYW5vIj48cGF0aCBvcGFjaXR5PSIuMTUiIGQ9Ik0wIDBoMTIzOC4wOTV2Mjk2LjQ3N2MtMzQzLjQ0OCAyNi4xNjEtMzA1LjgxNi0yNC44NjEtNjE5LjA0OC0xNy45MDdTMjkxLjk5IDMxNS43ODggMCAyNzguNTdWMHoiLz48cGF0aCBkPSJNMTI0MCAwSC45NTN2MjY0LjgwNGM3Ni41NjYtNy4zNjUgMTQ2Ljg0NC0xOC4xMiAzMjcuMzUxLTcuMzY1czI0NC4yNDUgNTMuNzcxIDUwNi42MjggMTIuOTkxYzE3NC45MjItMjcuMTg3IDMwOS45NDUtMjUuMTg2IDQwNS4wNjggNi4wMDF6Ii8+PC9zdmc+");text-align:center;color: white;background-size: cover;background-repeat: no-repeat;background-position: top;padding: 5% 0 12% 0;margin: -16px; } +.wave-pink {background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGwtcnVsZT0iZXZlbm9kZCIgZmlsbD0iI2ZmOTdmZiIgaGVpZ2h0PSIzMDQiIHdpZHRoPSIxMjQwIiAgeG1sbnM6dj0iaHR0cHM6Ly92ZWN0YS5pby9uYW5vIj48cGF0aCBkPSJNMCAwaDEyMzguMDk1djI5Ni40NzdjLTM0My40NDggMjYuMTYxLTMwNS44MTYtMjQuODYxLTYxOS4wNDgtMTcuOTA3UzI5MS45OSAzMTUuNzg4IDAgMjc4LjU3VjB6IiBvcGFjaXR5PSIuMTUiLz48cGF0aCBkPSJNMTI0MCAwSC45NTN2MjY0LjgwNGM3Ni41NjYtNy4zNjUgMTQ2Ljg0NC0xOC4xMiAzMjcuMzUxLTcuMzY1czI0NC4yNDUgNTMuNzcxIDUwNi42MjggMTIuOTkxYzE3NC45MjItMjcuMTg3IDMwOS45NDUtMjUuMTg2IDQwNS4wNjggNi4wMDF6Ii8+PC9zdmc+");text-align:center;color: white;background-size: cover;background-repeat: no-repeat;background-position: top;padding: 5% 0 12% 0;margin: -16px; } +.wave-red {background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGwtcnVsZT0iZXZlbm9kZCIgZmlsbD0iI2MwMCIgaGVpZ2h0PSIzMDQiIHdpZHRoPSIxMjQwIiAgeG1sbnM6dj0iaHR0cHM6Ly92ZWN0YS5pby9uYW5vIj48cGF0aCBkPSJNMCAwaDEyMzguMDk1djI5Ni40NzdjLTM0My40NDggMjYuMTYxLTMwNS44MTYtMjQuODYxLTYxOS4wNDgtMTcuOTA3UzI5MS45OSAzMTUuNzg4IDAgMjc4LjU3VjB6IiBvcGFjaXR5PSIuMTUiLz48cGF0aCBkPSJNMTI0MCAwSC45NTN2MjY0LjgwNGM3Ni41NjYtNy4zNjUgMTQ2Ljg0NC0xOC4xMiAzMjcuMzUxLTcuMzY1czI0NC4yNDUgNTMuNzcxIDUwNi42MjggMTIuOTkxYzE3NC45MjItMjcuMTg3IDMwOS45NDUtMjUuMTg2IDQwNS4wNjggNi4wMDF6Ii8+PC9zdmc+");text-align:center;color: white;background-size: cover;background-repeat: no-repeat;background-position: top;padding: 5% 0 12% 0;margin: -16px; } \ No newline at end of file Index: lams_central/web/includes/javascript/ckconfig_custom.js =================================================================== diff -u -r8d0f4c7a77330dce787d91386809259e47936b35 -r49c7c4395cf0e03fbda33d8d25d167ba592f81b7 --- lams_central/web/includes/javascript/ckconfig_custom.js (.../ckconfig_custom.js) (revision 8d0f4c7a77330dce787d91386809259e47936b35) +++ lams_central/web/includes/javascript/ckconfig_custom.js (.../ckconfig_custom.js) (revision 49c7c4395cf0e03fbda33d8d25d167ba592f81b7) @@ -131,7 +131,7 @@ CKEDITOR.config.format_tags = 'div;h1;h2;h3;h4;h5;h6;pre;address;p' ; CKEDITOR.config.enterMode = 'div'; CKEDITOR.plugins.addExternal('wikilink', CKEDITOR.basePath + '../tool/lawiki10/wikilink/', 'plugin.js'); -CKEDITOR.config.extraPlugins = 'wikilink,jlatexmath,image2,html5audio,confighelper,bootstrapTabs,bootpanel,bootsnippets'; +CKEDITOR.config.extraPlugins = 'wikilink,jlatexmath,image2,html5audio,confighelper,bootstrapTabs,bootpanel,bootsnippets,wavepanel'; CKEDITOR.config.enterMode = CKEDITOR.ENTER_DIV; CKEDITOR.config.removePlugins = 'elementspath,about,specialchar'; CKEDITOR.config.allowedContent = true; Index: lams_www/web/public/ckeditor-templates/bootsnippets.js =================================================================== diff -u -r5abf11e85692d06dbd027976cea036afec4e0894 -r49c7c4395cf0e03fbda33d8d25d167ba592f81b7 --- lams_www/web/public/ckeditor-templates/bootsnippets.js (.../bootsnippets.js) (revision 5abf11e85692d06dbd027976cea036afec4e0894) +++ lams_www/web/public/ckeditor-templates/bootsnippets.js (.../bootsnippets.js) (revision 49c7c4395cf0e03fbda33d8d25d167ba592f81b7) @@ -204,65 +204,23 @@ ' ' }, { - title: 'textWaveHeaderOrange', - image: 'background-orange3.svg', - html: - '' + - '
' + - '
' + - '

Lorem Ipsum

' + - '

Lorem ipsum dolor sit amet, consectetur adipiscing elit  

' + - '
 
' + - '
Sed ut perspiciatis! 
' + - '
 
' + - '
At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi.
' + - '
 
' - }, - { - title: 'textWaveHeaderBlue', + title: 'textWaveHeaders', + description: 'textWaveHeadersDesc', image: 'background-blue3.svg', html: + '' + '' + - '
' + + '
' + '
' + '

Lorem Ipsum

' + - '

Lorem ipsum dolor sit amet, consectetur adipiscing elit  

' + + '

Lorem ipsum dolor sit amet, consectetur adipiscing elit

' + '
 
' + '
Sed ut perspiciatis! 
' + '
 
' + '
At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi.
' + '
 
' }, - { - title: 'textWaveHeaderPurple', - image: 'background-purple3.svg', - html: - '' + - '
' + - '
' + - '

Lorem Ipsum

' + - '

Lorem ipsum dolor sit amet, consectetur adipiscing elit  

' + - '
 
' + - '
Sed ut perspiciatis! 
' + - '
 
' + - '
At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi.
' + - '
 
' - }, - { - title: 'textWaveHeaderGreen', - image: 'background-green3.svg', - html: - '' + - '
' + - '
' + - '

Lorem Ipsum

' + - '

Lorem ipsum dolor sit amet, consectetur adipiscing elit  

' + - '
 
' + - '
Sed ut perspiciatis! 
' + - '
 
' + - '
At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi.
' + - '
 
' - } + ] } ); Fisheye: Tag 49c7c4395cf0e03fbda33d8d25d167ba592f81b7 refers to a dead (removed) revision in file `lams_www/web/public/ckeditor-templates/images/background-green3.svg'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 49c7c4395cf0e03fbda33d8d25d167ba592f81b7 refers to a dead (removed) revision in file `lams_www/web/public/ckeditor-templates/images/background-orange3.svg'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 49c7c4395cf0e03fbda33d8d25d167ba592f81b7 refers to a dead (removed) revision in file `lams_www/web/public/ckeditor-templates/images/background-purple3.svg'. Fisheye: No comparison available. Pass `N' to diff?