[frio] Remove legacy schemes

- [frio] Replace default scheme file by default scheme value
- [frio] Simplify frio theme settings
- [frio] Remove query string scheme setting
This commit is contained in:
Hypolite Petovan 2024-02-29 09:17:09 -05:00
parent 39d25b9699
commit 2c259c5c6f
6 changed files with 74 additions and 76 deletions

View File

@ -24,6 +24,7 @@ use Friendica\Core\Renderer;
use Friendica\DI; use Friendica\DI;
require_once 'view/theme/frio/php/Image.php'; require_once 'view/theme/frio/php/Image.php';
require_once 'view/theme/frio/php/scheme.php';
function theme_post(App $a) function theme_post(App $a)
{ {
@ -93,14 +94,7 @@ function theme_content(): string
} }
$arr = [ $arr = [
'scheme' => DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'frio', 'scheme', 'scheme' => frio_scheme_get_current_for_user(DI::userSession()->getLocalUserId()),
DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'frio', 'schema',
DI::config()->get('frio', 'scheme',
DI::config()->get('frio', 'schema')
)
)
),
'share_string' => '', 'share_string' => '',
'scheme_accent' => DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'frio', 'scheme_accent' , DI::config()->get('frio', 'scheme_accent')), 'scheme_accent' => DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'frio', 'scheme_accent' , DI::config()->get('frio', 'scheme_accent')),
'nav_bg' => DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'frio', 'nav_bg' , DI::config()->get('frio', 'nav_bg')), 'nav_bg' => DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'frio', 'nav_bg' , DI::config()->get('frio', 'nav_bg')),
@ -123,8 +117,8 @@ function theme_admin(): string
} }
$arr = [ $arr = [
'scheme' => DI::config()->get('frio', 'scheme', DI::config()->get('frio', 'schema')), 'scheme' => frio_scheme_get_current(),
'scheme_accent' => DI::config()->get('frio', 'scheme_accent'), 'scheme_accent' => DI::config()->get('frio', 'scheme_accent') ?: FRIO_SCHEME_ACCENT_BLUE,
'share_string' => '', 'share_string' => '',
'nav_bg' => DI::config()->get('frio', 'nav_bg'), 'nav_bg' => DI::config()->get('frio', 'nav_bg'),
'nav_icon_color' => DI::config()->get('frio', 'nav_icon_color'), 'nav_icon_color' => DI::config()->get('frio', 'nav_icon_color'),
@ -149,33 +143,15 @@ function frio_form($arr)
$scheme_info = get_scheme_info($arr['scheme']); $scheme_info = get_scheme_info($arr['scheme']);
$disable = $scheme_info['overwrites']; $disable = $scheme_info['overwrites'];
$schemes = [
'light' => DI::l10n()->t('Light (Accented)'),
'dark' => DI::l10n()->t('Dark (Accented)'),
'black' => DI::l10n()->t('Black (Accented)'),
];
$legacy_schemes = [];
foreach (glob('view/theme/frio/scheme/*.php') ?: [] as $file) {
$scheme = basename($file, '.php');
if (!in_array($scheme, ['default', 'light', 'dark', 'black'])) {
$scheme_name = ucfirst($scheme);
$legacy_schemes[$scheme] = $scheme_name;
}
}
$background_image_help = '<strong>' . DI::l10n()->t('Note') . ': </strong>' . DI::l10n()->t('Check image permissions if all users are allowed to see the image'); $background_image_help = '<strong>' . DI::l10n()->t('Note') . ': </strong>' . DI::l10n()->t('Check image permissions if all users are allowed to see the image');
$t = Renderer::getMarkupTemplate('theme_settings.tpl'); $t = Renderer::getMarkupTemplate('theme_settings.tpl');
$ctx = [ $ctx = [
'$submit' => DI::l10n()->t('Submit'), '$submit' => DI::l10n()->t('Submit'),
'$title' => DI::l10n()->t('Theme settings'), '$title' => DI::l10n()->t('Theme settings'),
'$custom' => DI::l10n()->t('Custom'), '$scheme' => ['frio_scheme', DI::l10n()->t('Appearance'), $arr['scheme'], frio_scheme_get_list()],
'$legacy' => DI::l10n()->t('Legacy'), '$scheme_accent' => !$scheme_info['accented'] ? '' : ['frio_scheme_accent', DI::l10n()->t('Accent color'), $arr['scheme_accent'], ['blue' => DI::l10n()->t('Blue'), 'red' => DI::l10n()->t('Red'), 'purple' => DI::l10n()->t('Purple'), 'green' => DI::l10n()->t('Green'), 'pink' => DI::l10n()->t('Pink')]],
'$accented' => DI::l10n()->t('Accented'), '$share_string' => $arr['scheme'] != FRIO_CUSTOM_SCHEME ? '' : ['frio_share_string', DI::l10n()->t('Copy or paste schemestring'), $arr['share_string'], DI::l10n()->t('You can copy this string to share your theme with others. Pasting here applies the schemestring'), false, false],
'$scheme' => ['frio_scheme', DI::l10n()->t('Select color scheme'), $arr['scheme'], $schemes, $legacy_schemes],
'$scheme_accent' => !$scheme_info['accented'] ? '' : ['frio_scheme_accent', DI::l10n()->t('Select scheme accent'), $arr['scheme_accent'], ['blue' => DI::l10n()->t('Blue'), 'red' => DI::l10n()->t('Red'), 'purple' => DI::l10n()->t('Purple'), 'green' => DI::l10n()->t('Green'), 'pink' => DI::l10n()->t('Pink')]],
'$share_string' => $arr['scheme'] != '---' ? '' : ['frio_share_string', DI::l10n()->t('Copy or paste schemestring'), $arr['share_string'], DI::l10n()->t('You can copy this string to share your theme with others. Pasting here applies the schemestring'), false, false],
'$nav_bg' => array_key_exists('nav_bg', $disable) ? '' : ['frio_nav_bg', DI::l10n()->t('Navigation bar background color'), $arr['nav_bg'], '', false], '$nav_bg' => array_key_exists('nav_bg', $disable) ? '' : ['frio_nav_bg', DI::l10n()->t('Navigation bar background color'), $arr['nav_bg'], '', false],
'$nav_icon_color' => array_key_exists('nav_icon_color', $disable) ? '' : ['frio_nav_icon_color', DI::l10n()->t('Navigation bar icon color '), $arr['nav_icon_color'], '', false], '$nav_icon_color' => array_key_exists('nav_icon_color', $disable) ? '' : ['frio_nav_icon_color', DI::l10n()->t('Navigation bar icon color '), $arr['nav_icon_color'], '', false],
'$link_color' => array_key_exists('link_color', $disable) ? '' : ['frio_link_color', DI::l10n()->t('Link color'), $arr['link_color'], '', false], '$link_color' => array_key_exists('link_color', $disable) ? '' : ['frio_link_color', DI::l10n()->t('Link color'), $arr['link_color'], '', false],

View File

@ -29,6 +29,7 @@ use Friendica\Model\Profile;
require_once 'view/theme/frio/theme.php'; require_once 'view/theme/frio/theme.php';
require_once 'view/theme/frio/php/frio_boot.php'; require_once 'view/theme/frio/php/frio_boot.php';
require_once 'view/theme/frio/php/scheme.php';
// $minimal = is_modal(); // $minimal = is_modal();
if (!isset($minimal)) { if (!isset($minimal)) {
@ -59,8 +60,8 @@ $is_singleuser_class = $is_singleuser ? "is-singleuser" : "is-not-singleuser";
// Add the theme color meta // Add the theme color meta
// It makes mobile Chrome UI match Frio's top bar color. // It makes mobile Chrome UI match Frio's top bar color.
$uid = Profile::getThemeUid($a); $uid = Profile::getThemeUid($a);
$scheme = DI::pConfig()->get($uid, 'frio', 'scheme', DI::pConfig()->get($uid, 'frio', 'schema')); $scheme = frio_scheme_get_current_for_user($uid);
if ($scheme && is_string($scheme) && $scheme != '---') { if ($scheme != FRIO_CUSTOM_SCHEME) {
if (file_exists('view/theme/frio/scheme/' . $scheme . '.php')) { if (file_exists('view/theme/frio/scheme/' . $scheme . '.php')) {
$schemefile = 'view/theme/frio/scheme/' . $scheme . '.php'; $schemefile = 'view/theme/frio/scheme/' . $scheme . '.php';
$scheme_accent = $scheme_accent =

View File

@ -37,15 +37,13 @@
use Friendica\DI; use Friendica\DI;
use Friendica\Util\Strings; use Friendica\Util\Strings;
require_once 'view/theme/frio/theme.php';
function get_scheme_info($scheme) function get_scheme_info($scheme)
{ {
$theme = DI::app()->getCurrentTheme(); $theme = DI::app()->getCurrentTheme();
$themepath = 'view/theme/' . $theme . '/'; $themepath = 'view/theme/' . $theme . '/';
if (empty($scheme)) { $scheme = Strings::sanitizeFilePathItem($scheme) ?: FRIO_DEFAULT_SCHEME;
$scheme = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'frio', 'scheme', DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'frio', 'schema', '---'));
}
$scheme = Strings::sanitizeFilePathItem($scheme);
$info = [ $info = [
'name' => $scheme, 'name' => $scheme,
@ -100,3 +98,54 @@ function get_scheme_info($scheme)
return $info; return $info;
} }
function frio_scheme_get_list(): array
{
$schemes = [
'light' => DI::l10n()->t('Light'),
'dark' => DI::l10n()->t('Dark'),
'black' => DI::l10n()->t('Black'),
];
foreach (glob('view/theme/frio/scheme/*.php') ?: [] as $file) {
$scheme = basename($file, '.php');
if (!in_array($scheme, ['default', 'light', 'dark', 'black'])) {
$scheme_info = get_scheme_info($scheme);
$schemes[$scheme] = $scheme_info['name'] ?? ucfirst($scheme);
}
}
$schemes[FRIO_CUSTOM_SCHEME] = DI::l10n()->t('Custom');
return $schemes;
}
function frio_scheme_get_current()
{
$available = array_keys(frio_scheme_get_list());
$scheme = DI::config()->get('frio', 'scheme') ?: DI::config()->get('frio', 'schema');
if (!in_array($scheme, $available)) {
return FRIO_DEFAULT_SCHEME;
}
return $scheme;
}
function frio_scheme_get_current_for_user(int $uid)
{
$available = array_keys(frio_scheme_get_list());
$scheme =
DI::pConfig()->get($uid, 'frio', 'scheme') ?:
DI::pConfig()->get($uid, 'frio', 'schema') ?:
DI::config()->get('frio', 'scheme') ?:
DI::config()->get('frio', 'schema');
if (!in_array($scheme, $available)) {
return FRIO_DEFAULT_SCHEME;
}
return $scheme;
}

View File

@ -24,10 +24,9 @@ use Friendica\Network\HTTPException\NotModifiedException;
use Friendica\Util\Strings; use Friendica\Util\Strings;
require_once 'view/theme/frio/theme.php'; require_once 'view/theme/frio/theme.php';
require_once 'view/theme/frio/php/scheme.php';
require_once 'view/theme/frio/php/PHPColors/Color.php'; require_once 'view/theme/frio/php/PHPColors/Color.php';
$scheme = '';
$schemecss = '';
$schemecssfile = false; $schemecssfile = false;
$scheme_modified = 0; $scheme_modified = 0;
@ -35,7 +34,7 @@ $scheme_modified = 0;
* This script can be included when the maintenance mode is on, which requires us to avoid any config call and * This script can be included when the maintenance mode is on, which requires us to avoid any config call and
* use the following hardcoded defaults * use the following hardcoded defaults
*/ */
$scheme = null; $scheme = FRIO_DEFAULT_SCHEME;
$scheme_accent = FRIO_SCHEME_ACCENT_BLUE; $scheme_accent = FRIO_SCHEME_ACCENT_BLUE;
$nav_bg = '#708fa0'; $nav_bg = '#708fa0';
$nav_icon_color = '#ffffff'; $nav_icon_color = '#ffffff';
@ -52,7 +51,7 @@ if (DI::mode()->has(\Friendica\App\Mode::MAINTENANCEDISABLED)) {
DI::config()->reload(); DI::config()->reload();
// Default to hard-coded values for empty settings // Default to hard-coded values for empty settings
$scheme = DI::config()->get('frio', 'scheme', DI::config()->get('frio', 'schema')); $scheme = frio_scheme_get_current();
$scheme_accent = DI::config()->get('frio', 'scheme_accent') ?: $scheme_accent; $scheme_accent = DI::config()->get('frio', 'scheme_accent') ?: $scheme_accent;
$nav_bg = DI::config()->get('frio', 'nav_bg') ?: $nav_bg; $nav_bg = DI::config()->get('frio', 'nav_bg') ?: $nav_bg;
$nav_icon_color = DI::config()->get('frio', 'nav_icon_color') ?: $nav_icon_color; $nav_icon_color = DI::config()->get('frio', 'nav_icon_color') ?: $nav_icon_color;
@ -71,7 +70,7 @@ if (DI::mode()->has(\Friendica\App\Mode::MAINTENANCEDISABLED)) {
DI::pConfig()->load($uid, 'frio'); DI::pConfig()->load($uid, 'frio');
// Only override display settings that have actually been set // Only override display settings that have actually been set
$scheme = DI::pConfig()->get($uid, 'frio', 'scheme', DI::pConfig()->get($uid, 'frio', 'schema')) ?: $scheme; $scheme = frio_scheme_get_current_for_user($uid);
$scheme_accent = DI::pConfig()->get($uid, 'frio', 'scheme_accent') ?: $scheme_accent; $scheme_accent = DI::pConfig()->get($uid, 'frio', 'scheme_accent') ?: $scheme_accent;
$nav_bg = DI::pConfig()->get($uid, 'frio', 'nav_bg') ?: $nav_bg; $nav_bg = DI::pConfig()->get($uid, 'frio', 'nav_bg') ?: $nav_bg;
$nav_icon_color = DI::pConfig()->get($uid, 'frio', 'nav_icon_color') ?: $nav_icon_color; $nav_icon_color = DI::pConfig()->get($uid, 'frio', 'nav_icon_color') ?: $nav_icon_color;
@ -89,18 +88,9 @@ if (!$login_bg_image && !$login_bg_color) {
} }
$login_bg_color = $login_bg_color ?: '#ededed'; $login_bg_color = $login_bg_color ?: '#ededed';
// Now load the scheme. If a value is changed above, we'll keep the settings $scheme = Strings::sanitizeFilePathItem($scheme);
// If not, we'll keep those defined by the scheme
// Setting $scheme to '' wasn't working for some reason, so we'll check it's
// not --- like the mobile theme does instead.
// Allow layouts to over-ride the scheme.
if (!empty($_REQUEST['scheme'])) {
$scheme = $_REQUEST['scheme'];
}
$scheme = Strings::sanitizeFilePathItem($scheme ?? ''); if ($scheme != FRIO_CUSTOM_SCHEME) {
if ($scheme && ($scheme != '---')) {
if (file_exists('view/theme/frio/scheme/' . $scheme . '.php')) { if (file_exists('view/theme/frio/scheme/' . $scheme . '.php')) {
$schemefile = 'view/theme/frio/scheme/' . $scheme . '.php'; $schemefile = 'view/theme/frio/scheme/' . $scheme . '.php';
require_once $schemefile; require_once $schemefile;
@ -110,19 +100,6 @@ if ($scheme && ($scheme != '---')) {
} }
} }
// If we haven't got a scheme, load the default. We shouldn't touch this - we
// should leave it for admins to define for themselves.
// default.php and default.css MUST be symlinks to existing scheme files.
if (!$scheme) {
if (file_exists('view/theme/frio/scheme/default.php')) {
$schemefile = 'view/theme/frio/scheme/default.php';
require_once $schemefile;
}
if (file_exists('view/theme/frio/scheme/default.css')) {
$schemecssfile = 'view/theme/frio/scheme/default.css';
}
}
$contentbg_transp = $contentbg_transp != '' ? $contentbg_transp : 100; $contentbg_transp = $contentbg_transp != '' ? $contentbg_transp : 100;
// Calculate some colors in dependance of existing colors. // Calculate some colors in dependance of existing colors.

View File

@ -4,17 +4,9 @@
<div class="form-group field select"> <div class="form-group field select">
<label for="id_{{$scheme.0}}">{{$scheme.1}}</label> <label for="id_{{$scheme.0}}">{{$scheme.1}}</label>
<select name="{{$scheme.0}}" id="id_{{$scheme.0}}" class="form-control"> <select name="{{$scheme.0}}" id="id_{{$scheme.0}}" class="form-control">
<option value="---" {{if '---' == $scheme.2}}selected="selected"{{/if}}>{{$custom}}</option>
<optgroup label="{{$accented}}">
{{foreach $scheme.3 as $value => $label}} {{foreach $scheme.3 as $value => $label}}
<option value="{{$value}}" {{if $value == $scheme.2}}selected="selected"{{/if}}>{{$label}}</option> <option value="{{$value}}" {{if $value == $scheme.2}}selected="selected"{{/if}}>{{$label}}</option>
{{/foreach}} {{/foreach}}
</optgroup>
<optgroup label="{{$legacy}}">
{{foreach $scheme.4 as $value => $label}}
<option value="{{$value}}" {{if $value == $scheme.2}}selected="selected"{{/if}}>{{$label}}</option>
{{/foreach}}
</optgroup>
</select> </select>
</div> </div>

View File

@ -41,6 +41,9 @@ const FRIO_SCHEME_ACCENT_PURPLE = '#a54bad';
const FRIO_SCHEME_ACCENT_GREEN = '#218f39'; const FRIO_SCHEME_ACCENT_GREEN = '#218f39';
const FRIO_SCHEME_ACCENT_PINK = '#d900a9'; const FRIO_SCHEME_ACCENT_PINK = '#d900a9';
const FRIO_DEFAULT_SCHEME = 'light';
const FRIO_CUSTOM_SCHEME = '---';
/* /*
* This script can be included even when the app is in maintenance mode which requires us to avoid any config call * This script can be included even when the app is in maintenance mode which requires us to avoid any config call
*/ */