aboutsummaryrefslogtreecommitdiffstats
path: root/view/theme/redbasic/php/config.php
diff options
context:
space:
mode:
Diffstat (limited to 'view/theme/redbasic/php/config.php')
-rw-r--r--view/theme/redbasic/php/config.php73
1 files changed, 60 insertions, 13 deletions
diff --git a/view/theme/redbasic/php/config.php b/view/theme/redbasic/php/config.php
index 344f3ff68..213e441eb 100644
--- a/view/theme/redbasic/php/config.php
+++ b/view/theme/redbasic/php/config.php
@@ -2,6 +2,9 @@
namespace Zotlabs\Theme;
+use ScssPhp\ScssPhp\Compiler;
+use ScssPhp\ScssPhp\OutputStyle;
+
class RedbasicConfig {
function get_schemas() {
@@ -37,15 +40,12 @@ class RedbasicConfig {
}
$arr = array();
+ $arr['primary_color'] = get_pconfig(local_channel(),'redbasic', 'primary_color');
$arr['dark_mode'] = get_pconfig(local_channel(),'redbasic', 'dark_mode');
$arr['navbar_dark_mode'] = get_pconfig(local_channel(),'redbasic', 'navbar_dark_mode');
$arr['narrow_navbar'] = get_pconfig(local_channel(),'redbasic', 'narrow_navbar' );
$arr['nav_bg'] = get_pconfig(local_channel(),'redbasic', 'nav_bg' );
$arr['nav_bg_dark'] = get_pconfig(local_channel(),'redbasic', 'nav_bg_dark' );
- $arr['link_color'] = get_pconfig(local_channel(),'redbasic', 'link_color' );
- $arr['link_color_dark'] = get_pconfig(local_channel(),'redbasic', 'link_color_dark' );
- $arr['link_hover_color'] = get_pconfig(local_channel(),'redbasic', 'link_hover_color' );
- $arr['link_hover_color_dark'] = get_pconfig(local_channel(),'redbasic', 'link_hover_color_dark' );
$arr['bgcolor'] = get_pconfig(local_channel(),'redbasic', 'background_color' );
$arr['bgcolor_dark'] = get_pconfig(local_channel(),'redbasic', 'background_color_dark' );
$arr['background_image'] = get_pconfig(local_channel(),'redbasic', 'background_image' );
@@ -65,15 +65,62 @@ class RedbasicConfig {
}
if (isset($_POST['redbasic-settings-submit'])) {
+ if (isset($_POST['redbasic_primary_color']) || isset($_POST['redbasic_radius'])) {
+
+ $primary_color = '';
+ $radius = floatval($_POST['redbasic_radius']);
+
+ if (preg_match('/^#([A-Fa-f0-9]{3}){1,2}$/', $_POST['redbasic_primary_color'])) {
+ $primary_color = $_POST['redbasic_primary_color'];
+ }
+
+ if ($primary_color || $radius) {
+
+ try {
+ $cache_dir = 'store/[data]/[scss]';
+ if(!is_dir($cache_dir)) {
+ os_mkdir($cache_dir, STORAGE_DEFAULT_PERMISSIONS, true);
+ }
+
+ $options = [
+ 'cacheDir' => $cache_dir,
+ 'forceRefresh' => false
+ ];
+
+ $compiler = new Compiler($options);
+ $compiler->setImportPaths('vendor/twbs/bootstrap/scss');
+ $compiler->setOutputStyle(OutputStyle::COMPRESSED);
+
+ // Set Variables
+ if ($primary_color) {
+ $variables['$primary'] = $primary_color;
+ }
+
+ if ($radius) {
+ $variables['$border-radius'] = $radius . 'rem';
+ }
+
+ // Replace Bootstrap Variables with Customizer Variables
+ $compiler->replaceVariables($variables);
+
+ $bs = $compiler->compileString('@import "bootstrap.scss";');
+
+ set_pconfig(local_channel(), 'redbasic', 'bootstrap', $bs->getCss());
+ } catch (\Exception $e) {
+ logger('scssphp: Unable to compile content');
+ }
+ }
+ else {
+ set_pconfig(local_channel(), 'redbasic', 'bootstrap', '');
+ }
+ }
+
+ set_pconfig(local_channel(), 'redbasic', 'primary_color', $_POST['redbasic_primary_color']);
set_pconfig(local_channel(), 'redbasic', 'narrow_navbar', $_POST['redbasic_narrow_navbar']);
set_pconfig(local_channel(), 'redbasic', 'navbar_dark_mode', $_POST['redbasic_navbar_dark_mode']);
set_pconfig(local_channel(), 'redbasic', 'dark_mode', $_POST['redbasic_dark_mode']);
set_pconfig(local_channel(), 'redbasic', 'nav_bg', $_POST['redbasic_nav_bg']);
set_pconfig(local_channel(), 'redbasic', 'nav_bg_dark', $_POST['redbasic_nav_bg_dark']);
- set_pconfig(local_channel(), 'redbasic', 'link_color', $_POST['redbasic_link_color']);
- set_pconfig(local_channel(), 'redbasic', 'link_color_dark', $_POST['redbasic_link_color_dark']);
- set_pconfig(local_channel(), 'redbasic', 'link_hover_color', $_POST['redbasic_link_hover_color']);
- set_pconfig(local_channel(), 'redbasic', 'link_hover_color_dark', $_POST['redbasic_link_hover_color_dark']);
set_pconfig(local_channel(), 'redbasic', 'background_color', $_POST['redbasic_background_color']);
set_pconfig(local_channel(), 'redbasic', 'background_color_dark', $_POST['redbasic_background_color_dark']);
set_pconfig(local_channel(), 'redbasic', 'background_image', $_POST['redbasic_background_image']);
@@ -84,6 +131,9 @@ class RedbasicConfig {
set_pconfig(local_channel(), 'redbasic', 'top_photo', $_POST['redbasic_top_photo']);
set_pconfig(local_channel(), 'redbasic', 'reply_photo', $_POST['redbasic_reply_photo']);
set_pconfig(local_channel(), 'redbasic', 'advanced_theming', $_POST['redbasic_advanced_theming']);
+
+ // This is used to refresh the cache
+ set_pconfig(local_channel(), 'system', 'style_update', time());
}
}
@@ -103,21 +153,18 @@ class RedbasicConfig {
'$dark' => t('Dark style'),
'$light' => t('Light style'),
'$common' => t('Common settings'),
+ '$primary_color' => array('redbasic_primary_color', t('Primary theme color'), $arr['primary_color']),
'$dark_mode' => array('redbasic_dark_mode',t('Default to dark mode'),$arr['dark_mode'], '', array(t('No'),t('Yes'))),
'$navbar_dark_mode' => array('redbasic_navbar_dark_mode',t('Always use light icons for navbar'),$arr['navbar_dark_mode'], t('Enable this option if you use a dark navbar color in light mode'), array(t('No'),t('Yes'))),
'$narrow_navbar' => array('redbasic_narrow_navbar',t('Narrow navbar'),$arr['narrow_navbar'], '', array(t('No'),t('Yes'))),
'$nav_bg' => array('redbasic_nav_bg', t('Navigation bar background color'), $arr['nav_bg']),
'$nav_bg_dark' => array('redbasic_nav_bg_dark', t('Dark navigation bar background color'), $arr['nav_bg_dark']),
- '$link_color' => array('redbasic_link_color', t('Link color'), $arr['link_color']),
- '$link_color_dark' => array('redbasic_link_color_dark', t('Dark link color'), $arr['link_color_dark']),
- '$link_hover_color' => array('redbasic_link_hover_color', t('Link hover color'), $arr['link_hover_color']),
- '$link_hover_color_dark' => array('redbasic_link_hover_color_dark', t('Dark link hover color'), $arr['link_hover_color_dark']),
'$bgcolor' => array('redbasic_background_color', t('Set the background color'), $arr['bgcolor']),
'$bgcolor_dark' => array('redbasic_background_color_dark', t('Set the dark background color'), $arr['bgcolor_dark']),
'$background_image' => array('redbasic_background_image', t('Set the background image'), $arr['background_image']),
'$background_image_dark' => array('redbasic_background_image_dark', t('Set the dark background image'), $arr['background_image_dark']),
'$font_size' => array('redbasic_font_size', t('Set font-size for the entire application'), $arr['font_size'], t('Examples: 1rem, 100%, 16px')),
- '$radius' => array('redbasic_radius', t('Set radius of corners'), $arr['radius'], t('Example: 4px')),
+ '$radius' => array('redbasic_radius', t('Set radius of corners in rem'), $arr['radius']),
'$converse_width' => array('redbasic_converse_width',t('Set maximum width of content region in rem'),$arr['converse_width'], t('Leave empty for default width')),
'$top_photo' => array('redbasic_top_photo', t('Set size of conversation author photo'), $arr['top_photo']),
'$reply_photo' => array('redbasic_reply_photo', t('Set size of followup author photos'), $arr['reply_photo']),