2016-03-28 16:29:05 +02:00
< ? php
2020-02-09 16:34:23 +01:00
/**
* @ copyright Copyright ( C ) 2020 , Friendica
*
* @ license GNU AGPL version 3 or any later version
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation , either version 3 of the
* License , or ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU Affero General Public License for more details .
*
* You should have received a copy of the GNU Affero General Public License
* along with this program . If not , see < https :// www . gnu . org / licenses />.
*
*/
2017-04-30 06:07:00 +02:00
use Friendica\App ;
2018-10-31 15:35:50 +01:00
use Friendica\Core\Renderer ;
2020-01-18 16:50:57 +01:00
use Friendica\DI ;
2017-04-30 06:07:00 +02:00
2018-01-22 13:29:50 +01:00
require_once 'view/theme/frio/php/Image.php' ;
2016-03-28 16:29:05 +02:00
2018-04-25 02:05:20 +02:00
function theme_post ( App $a )
{
2016-12-20 11:56:34 +01:00
if ( ! local_user ()) {
return ;
}
2016-03-28 16:29:05 +02:00
2017-10-23 15:16:23 +02:00
if ( isset ( $_POST [ 'frio-settings-submit' ])) {
2020-08-16 01:29:51 +02:00
foreach ([
'scheme' ,
2020-08-20 04:58:00 +02:00
'scheme_accent' ,
2020-08-16 01:29:51 +02:00
'nav_bg' ,
'nav_icon_color' ,
'link_color' ,
'background_color' ,
'contentbg_transp' ,
'background_image' ,
'bg_image_option' ,
'login_bg_image' ,
'login_bg_color'
] as $field ) {
if ( isset ( $_POST [ 'frio_' . $field ])) {
DI :: pConfig () -> set ( local_user (), 'frio' , $field , $_POST [ 'frio_' . $field ]);
}
}
2020-01-18 16:54:50 +01:00
DI :: pConfig () -> set ( local_user (), 'frio' , 'css_modified' , time ());
2017-10-23 15:16:23 +02:00
}
2016-03-28 16:29:05 +02:00
}
2018-04-25 02:05:20 +02:00
function theme_admin_post ( App $a )
{
2019-04-26 04:17:04 +02:00
if ( ! is_site_admin ()) {
2017-10-23 20:26:31 +02:00
return ;
}
if ( isset ( $_POST [ 'frio-settings-submit' ])) {
2020-08-16 01:29:51 +02:00
foreach ([
'scheme' ,
2020-08-20 04:58:00 +02:00
'scheme_accent' ,
2020-08-16 01:29:51 +02:00
'nav_bg' ,
'nav_icon_color' ,
'link_color' ,
'background_color' ,
'contentbg_transp' ,
'background_image' ,
'bg_image_option' ,
'login_bg_image' ,
'login_bg_color'
] as $field ) {
if ( isset ( $_POST [ 'frio_' . $field ])) {
DI :: config () -> set ( 'frio' , $field , $_POST [ 'frio_' . $field ]);
}
}
2020-01-19 21:21:53 +01:00
DI :: config () -> set ( 'frio' , 'css_modified' , time ());
2017-10-23 20:26:31 +02:00
}
}
2018-04-25 02:05:20 +02:00
function theme_content ( App $a )
{
2016-12-20 11:56:34 +01:00
if ( ! local_user ()) {
return ;
}
2018-01-15 14:05:12 +01:00
$arr = [];
2016-12-20 11:56:34 +01:00
2020-01-19 21:21:13 +01:00
$node_scheme = DI :: config () -> get ( 'frio' , 'scheme' , DI :: config () -> get ( 'frio' , 'scheme' ));
2019-07-18 05:08:56 +02:00
2020-01-18 16:50:57 +01:00
$arr [ 'scheme' ] = DI :: pConfig () -> get ( local_user (), 'frio' , 'scheme' , DI :: pConfig () -> get ( local_user (), 'frio' , 'schema' , $node_scheme ));
2020-08-20 04:58:00 +02:00
$arr [ 'scheme_accent' ] = DI :: pConfig () -> get ( local_user (), 'frio' , 'scheme_accent' , DI :: config () -> get ( 'frio' , 'scheme_accent' ));
2019-02-22 12:59:44 +01:00
$arr [ 'share_string' ] = '' ;
2020-01-19 21:21:13 +01:00
$arr [ 'nav_bg' ] = DI :: pConfig () -> get ( local_user (), 'frio' , 'nav_bg' , DI :: config () -> get ( 'frio' , 'nav_bg' ));
$arr [ 'nav_icon_color' ] = DI :: pConfig () -> get ( local_user (), 'frio' , 'nav_icon_color' , DI :: config () -> get ( 'frio' , 'nav_icon_color' ));
$arr [ 'link_color' ] = DI :: pConfig () -> get ( local_user (), 'frio' , 'link_color' , DI :: config () -> get ( 'frio' , 'link_color' ));
$arr [ 'background_color' ] = DI :: pConfig () -> get ( local_user (), 'frio' , 'background_color' , DI :: config () -> get ( 'frio' , 'background_color' ));
$arr [ 'contentbg_transp' ] = DI :: pConfig () -> get ( local_user (), 'frio' , 'contentbg_transp' , DI :: config () -> get ( 'frio' , 'contentbg_transp' ));
$arr [ 'background_image' ] = DI :: pConfig () -> get ( local_user (), 'frio' , 'background_image' , DI :: config () -> get ( 'frio' , 'background_image' ));
$arr [ 'bg_image_option' ] = DI :: pConfig () -> get ( local_user (), 'frio' , 'bg_image_option' , DI :: config () -> get ( 'frio' , 'bg_image_option' ));
2017-10-23 15:16:23 +02:00
return frio_form ( $arr );
2016-03-28 16:29:05 +02:00
}
2018-04-25 02:05:20 +02:00
function theme_admin ( App $a )
{
2017-10-23 20:26:31 +02:00
if ( ! local_user ()) {
return ;
}
2018-01-15 14:05:12 +01:00
$arr = [];
2017-10-23 20:26:31 +02:00
2020-01-19 21:21:13 +01:00
$arr [ 'scheme' ] = DI :: config () -> get ( 'frio' , 'scheme' , DI :: config () -> get ( 'frio' , 'schema' ));
2020-08-20 04:58:00 +02:00
$arr [ 'scheme_accent' ] = DI :: config () -> get ( 'frio' , 'scheme_accent' );
2019-02-21 18:07:31 +01:00
$arr [ 'share_string' ] = '' ;
2020-01-19 21:21:13 +01:00
$arr [ 'nav_bg' ] = DI :: config () -> get ( 'frio' , 'nav_bg' );
$arr [ 'nav_icon_color' ] = DI :: config () -> get ( 'frio' , 'nav_icon_color' );
$arr [ 'link_color' ] = DI :: config () -> get ( 'frio' , 'link_color' );
$arr [ 'background_color' ] = DI :: config () -> get ( 'frio' , 'background_color' );
$arr [ 'contentbg_transp' ] = DI :: config () -> get ( 'frio' , 'contentbg_transp' );
$arr [ 'background_image' ] = DI :: config () -> get ( 'frio' , 'background_image' );
$arr [ 'bg_image_option' ] = DI :: config () -> get ( 'frio' , 'bg_image_option' );
$arr [ 'login_bg_image' ] = DI :: config () -> get ( 'frio' , 'login_bg_image' );
$arr [ 'login_bg_color' ] = DI :: config () -> get ( 'frio' , 'login_bg_color' );
2017-10-23 20:26:31 +02:00
return frio_form ( $arr );
}
2017-10-23 15:16:23 +02:00
2018-04-25 02:05:20 +02:00
function frio_form ( $arr )
{
2018-04-25 02:26:14 +02:00
require_once 'view/theme/frio/php/scheme.php' ;
2020-08-20 04:54:12 +02:00
require_once 'view/theme/frio/theme.php' ;
2017-01-09 13:06:08 +01:00
2018-04-25 02:26:14 +02:00
$scheme_info = get_scheme_info ( $arr [ 'scheme' ]);
2018-04-25 02:12:43 +02:00
$disable = $scheme_info [ 'overwrites' ];
2016-04-29 01:49:09 +02:00
2020-08-20 04:58:00 +02:00
$schemes = [
'light' => DI :: l10n () -> t ( 'Light (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 ;
2016-03-28 16:29:05 +02:00
}
}
2020-01-18 20:52:34 +01:00
$background_image_help = '<strong>' . DI :: l10n () -> t ( 'Note' ) . ': </strong>' . DI :: l10n () -> t ( 'Check image permissions if all users are allowed to see the image' );
2016-03-28 16:29:05 +02:00
2018-10-31 15:44:06 +01:00
$t = Renderer :: getMarkupTemplate ( 'theme_settings.tpl' );
2018-01-15 14:05:12 +01:00
$ctx = [
2020-01-18 20:52:34 +01:00
'$submit' => DI :: l10n () -> t ( 'Submit' ),
'$title' => DI :: l10n () -> t ( 'Theme settings' ),
2020-08-20 04:58:00 +02:00
'$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' )]],
2020-08-16 01:29:51 +02:00
'$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 ],
2020-01-18 20:52:34 +01:00
'$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 ],
'$background_color' => array_key_exists ( 'background_color' , $disable ) ? '' : [ 'frio_background_color' , DI :: l10n () -> t ( 'Set the background color' ), $arr [ 'background_color' ], '' , false ],
2020-08-16 01:36:24 +02:00
'$contentbg_transp' => array_key_exists ( 'contentbg_transp' , $disable ) ? '' : [ 'frio_contentbg_transp' , DI :: l10n () -> t ( 'Content background opacity' ), $arr [ 'contentbg_transp' ] ? ? 100 , '' ],
2020-01-18 20:52:34 +01:00
'$background_image' => array_key_exists ( 'background_image' , $disable ) ? '' : [ 'frio_background_image' , DI :: l10n () -> t ( 'Set the background image' ), $arr [ 'background_image' ], $background_image_help , false ],
'$bg_image_options_title' => DI :: l10n () -> t ( 'Background image style' ),
2017-10-23 15:16:23 +02:00
'$bg_image_options' => Image :: get_options ( $arr ),
2018-01-15 14:05:12 +01:00
];
2018-01-14 19:19:24 +01:00
2018-04-25 02:12:43 +02:00
if ( array_key_exists ( 'login_bg_image' , $arr ) && ! array_key_exists ( 'login_bg_image' , $disable )) {
2020-01-18 20:52:34 +01:00
$ctx [ '$login_bg_image' ] = [ 'frio_login_bg_image' , DI :: l10n () -> t ( 'Login page background image' ), $arr [ 'login_bg_image' ], $background_image_help , false ];
2018-01-17 16:33:27 +01:00
}
2018-04-25 02:12:43 +02:00
if ( array_key_exists ( 'login_bg_color' , $arr ) && ! array_key_exists ( 'login_bg_color' , $disable )) {
2020-01-18 20:52:34 +01:00
$ctx [ '$login_bg_color' ] = [ 'frio_login_bg_color' , DI :: l10n () -> t ( 'Login page background color' ), $arr [ 'login_bg_color' ], DI :: l10n () -> t ( 'Leave background image and color empty for theme defaults' ), false ];
2018-04-25 02:05:20 +02:00
}
2018-01-14 19:19:24 +01:00
2018-10-31 15:35:50 +01:00
$o = Renderer :: replaceMacros ( $t , $ctx );
2016-03-28 16:29:05 +02:00
return $o ;
}