use Friendica\DI;
require_once 'view/theme/frio/php/Image.php';
+require_once 'view/theme/frio/php/scheme.php';
function theme_post(App $a)
{
}
$arr = [
- 'scheme' => DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'frio', 'scheme',
- DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'frio', 'schema',
- DI::config()->get('frio', 'scheme',
- DI::config()->get('frio', 'schema')
- )
- )
- ),
-
+ 'scheme' => frio_scheme_get_current_for_user(DI::userSession()->getLocalUserId()),
'share_string' => '',
'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')),
}
$arr = [
- 'scheme' => DI::config()->get('frio', 'scheme', DI::config()->get('frio', 'schema')),
- 'scheme_accent' => DI::config()->get('frio', 'scheme_accent'),
+ 'scheme' => frio_scheme_get_current(),
+ 'scheme_accent' => DI::config()->get('frio', 'scheme_accent') ?: FRIO_SCHEME_ACCENT_BLUE,
'share_string' => '',
'nav_bg' => DI::config()->get('frio', 'nav_bg'),
'nav_icon_color' => DI::config()->get('frio', 'nav_icon_color'),
$scheme_info = get_scheme_info($arr['scheme']);
$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');
$t = Renderer::getMarkupTemplate('theme_settings.tpl');
$ctx = [
'$submit' => DI::l10n()->t('Submit'),
'$title' => DI::l10n()->t('Theme settings'),
- '$custom' => DI::l10n()->t('Custom'),
- '$legacy' => DI::l10n()->t('Legacy'),
- '$accented' => DI::l10n()->t('Accented'),
- '$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],
+ '$scheme' => ['frio_scheme', DI::l10n()->t('Appearance'), $arr['scheme'], frio_scheme_get_list()],
+ '$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')]],
+ '$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],
'$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],
'$link_color' => array_key_exists('link_color', $disable) ? '' : ['frio_link_color', DI::l10n()->t('Link color'), $arr['link_color'], '', false],
require_once 'view/theme/frio/theme.php';
require_once 'view/theme/frio/php/frio_boot.php';
+require_once 'view/theme/frio/php/scheme.php';
// $minimal = is_modal();
if (!isset($minimal)) {
// Add the theme color meta
// It makes mobile Chrome UI match Frio's top bar color.
$uid = Profile::getThemeUid($a);
- $scheme = DI::pConfig()->get($uid, 'frio', 'scheme', DI::pConfig()->get($uid, 'frio', 'schema'));
- if ($scheme && is_string($scheme) && $scheme != '---') {
+ $scheme = frio_scheme_get_current_for_user($uid);
+ if ($scheme != FRIO_CUSTOM_SCHEME) {
if (file_exists('view/theme/frio/scheme/' . $scheme . '.php')) {
$schemefile = 'view/theme/frio/scheme/' . $scheme . '.php';
$scheme_accent =
use Friendica\DI;
use Friendica\Util\Strings;
+require_once 'view/theme/frio/theme.php';
+
function get_scheme_info($scheme)
{
$theme = DI::app()->getCurrentTheme();
$themepath = 'view/theme/' . $theme . '/';
- if (empty($scheme)) {
- $scheme = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'frio', 'scheme', DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'frio', 'schema', '---'));
- }
-
- $scheme = Strings::sanitizeFilePathItem($scheme);
+ $scheme = Strings::sanitizeFilePathItem($scheme) ?: FRIO_DEFAULT_SCHEME;
$info = [
'name' => $scheme,
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;
+}
use Friendica\Util\Strings;
require_once 'view/theme/frio/theme.php';
+require_once 'view/theme/frio/php/scheme.php';
require_once 'view/theme/frio/php/PHPColors/Color.php';
-$scheme = '';
-$schemecss = '';
$schemecssfile = false;
$scheme_modified = 0;
* 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
*/
-$scheme = null;
+$scheme = FRIO_DEFAULT_SCHEME;
$scheme_accent = FRIO_SCHEME_ACCENT_BLUE;
$nav_bg = '#708fa0';
$nav_icon_color = '#ffffff';
DI::config()->reload();
// 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;
$nav_bg = DI::config()->get('frio', 'nav_bg') ?: $nav_bg;
$nav_icon_color = DI::config()->get('frio', 'nav_icon_color') ?: $nav_icon_color;
DI::pConfig()->load($uid, 'frio');
// 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;
$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;
}
$login_bg_color = $login_bg_color ?: '#ededed';
-// Now load the scheme. If a value is changed above, we'll keep the settings
-// 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 ?? '');
+$scheme = Strings::sanitizeFilePathItem($scheme);
-if ($scheme && ($scheme != '---')) {
+if ($scheme != FRIO_CUSTOM_SCHEME) {
if (file_exists('view/theme/frio/scheme/' . $scheme . '.php')) {
$schemefile = 'view/theme/frio/scheme/' . $scheme . '.php';
require_once $schemefile;
}
}
-// 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;
// Calculate some colors in dependance of existing colors.
<div class="form-group field select">
<label for="id_{{$scheme.0}}">{{$scheme.1}}</label>
<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}}
- <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}}
- </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>
</div>
const FRIO_SCHEME_ACCENT_GREEN = '#218f39';
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
*/