From c6f5ced23cf4dc6504d45852fcb806bf331b2b64 Mon Sep 17 00:00:00 2001 From: Sebastian Castro Date: Thu, 9 Apr 2020 08:41:00 +0200 Subject: [PATCH] css: adds UI skin variants builder (only for colibris skin) --- settings.json.docker | 2 ++ settings.json.template | 2 ++ src/static/js/skin_variants.js | 55 ++++++++++++++++++++++++++++++++++ src/templates/pad.html | 36 ++++++++++++++++++++++ 4 files changed, 95 insertions(+) create mode 100644 src/static/js/skin_variants.js diff --git a/settings.json.docker b/settings.json.docker index 8802c11a5..0d0891778 100644 --- a/settings.json.docker +++ b/settings.json.docker @@ -98,6 +98,8 @@ /* * Skin Variants * + * Use the UI skin variants builder at /p/test#skinvariantsbuilder + * * For the colibris skin only, you can choose how to render the three main * containers: * - toolbar (top menu with icons) diff --git a/settings.json.template b/settings.json.template index c2762fbe0..929282898 100644 --- a/settings.json.template +++ b/settings.json.template @@ -89,6 +89,8 @@ /* * Skin Variants * + * Use the UI skin variants builder at /p/test#skinvariantsbuilder + * * For the colibris skin only, you can choose how to render the three main * containers: * - toolbar (top menu with icons) diff --git a/src/static/js/skin_variants.js b/src/static/js/skin_variants.js new file mode 100644 index 000000000..f495e682c --- /dev/null +++ b/src/static/js/skin_variants.js @@ -0,0 +1,55 @@ +// Specific hash to display the skin variants builder popup +if (window.location.hash.toLowerCase() == "#skinvariantsbuilder") { + $('#skin-variants').addClass('popup-show'); + + $('.skin-variant').change(function() { + updateSkinVariantsClasses(); + }); + + var containers = ['editor', 'background', 'toolbar']; + var colors = ['super-light', 'light', 'dark', 'super-dark']; + + updateCheckboxFromSkinClasses(); + updateSkinVariantsClasses(); + + // add corresponding classes when config change + function updateSkinVariantsClasses() { + var domsToUpdate = [ + $('html'), + $('iframe[name=ace_outer]').contents().find('html'), + $('iframe[name=ace_outer]').contents().find('iframe[name=ace_inner]').contents().find('html') + ]; + colors.forEach(function(color) { + containers.forEach(function(container) { + domsToUpdate.forEach(function(el) { el.removeClass(color + '-' + container); }); + }) + }) + + domsToUpdate.forEach(function(el) { el.removeClass('full-width-editor'); }); + + var new_classes = []; + $('.skin-variant-color').each(function() { + new_classes.push($(this).val() + "-" + $(this).data('container')); + }) + if ($('#skin-variant-full-width').is(':checked')) new_classes.push("full-width-editor"); + + domsToUpdate.forEach(function(el) { el.addClass(new_classes.join(" ")); }); + + $('#skin-variants-result').val('"skinVariants": "' + new_classes.join(" ") + '"'); + } + + // run on init + function updateCheckboxFromSkinClasses() { + $('html').attr('class').split(' ').forEach(function(classItem) { + var container = classItem.split('-').slice(-1); + + var container = classItem.substring(classItem.lastIndexOf("-") + 1, classItem.length); + if (containers.indexOf(container) > -1) { + var color = classItem.substring(0, classItem.lastIndexOf("-")); + $('.skin-variant-color[data-container="' + container + '"').val(color); + } + }) + + $('#skin-variant-full-width').prop('checked', $('html').hasClass('full-width-editor')); + } +} \ No newline at end of file diff --git a/src/templates/pad.html b/src/templates/pad.html index 1ebbee5f5..c7a5aed8d 100644 --- a/src/templates/pad.html +++ b/src/templates/pad.html @@ -387,6 +387,40 @@ + + + + <% if (settings.skinName == 'colibris') { %> + + <% } %> + <% e.end_block(); %> @@ -472,6 +506,8 @@ chat = require('ep_etherpad-lite/static/js/chat').chat; padeditbar = require('ep_etherpad-lite/static/js/pad_editbar').padeditbar; padimpexp = require('ep_etherpad-lite/static/js/pad_impexp').padimpexp; + require('ep_etherpad-lite/static/js/skin_variants'); + }()); // @license-end