Version 4.7.0
This commit is contained in:
1 parent
517a5e1f70
commit
8ba7d43898
1933 files changed
+65613
-11332
No files matched your search
@@ -58,6 +58,9 @@ class _icons extends \IPS\Dispatcher\Controller
|
||||
$homeScreen = json_decode( \IPS\Settings::i()->icons_homescreen, TRUE ) ?? array();
|
||||
$form->add( new \IPS\Helpers\Form\Upload( 'icons_homescreen', ( isset( $homeScreen['original'] ) ) ? \IPS\File::get( 'core_Icons', $homeScreen['original'] ) : NULL, FALSE, array( 'image' => true, 'storageExtension' => 'core_Icons' ) ) );
|
||||
|
||||
$homeScreenMaskable = json_decode( \IPS\Settings::i()->icons_homescreen_maskable, TRUE ) ?? array();
|
||||
$form->add( new \IPS\Helpers\Form\Upload( 'icons_homescreen_maskable', ( isset( $homeScreenMaskable['original'] ) ) ? \IPS\File::get( 'core_Icons', $homeScreenMaskable['original'] ) : NULL, FALSE, array( 'image' => true, 'storageExtension' => 'core_Icons', 'allowedFileTypes' => ['png', 'webp' ] ) ) );
|
||||
|
||||
/* Apple startup screen logo - we accept one upload and create the images we need */
|
||||
$apple = json_decode( \IPS\Settings::i()->icons_apple_startup, TRUE ) ?? array();
|
||||
$form->add( new \IPS\Helpers\Form\Upload( 'icons_apple_startup', ( isset( $apple['original'] ) ) ? \IPS\File::get( 'core_Icons', $apple['original'] ) : NULL, FALSE, array( 'image' => true, 'storageExtension' => 'core_Icons' ) ) );
|
||||
@@ -134,7 +137,7 @@ class _icons extends \IPS\Dispatcher\Controller
|
||||
}
|
||||
|
||||
/* Homescreen icon is the hardest part, as we need to generate different sizes.. */
|
||||
$values = static::processApplicationIcon( $values, $homeScreen );
|
||||
$values = static::processApplicationIcon( $values, $homeScreen, $homeScreenMaskable );
|
||||
|
||||
/* The start screen requires more different sizes so we'll rebuild that after submit */
|
||||
$rebuildStartScreen = FALSE;
|
||||
@@ -152,14 +155,7 @@ class _icons extends \IPS\Dispatcher\Controller
|
||||
}
|
||||
}
|
||||
|
||||
if( $rebuildStartScreen )
|
||||
{
|
||||
$values = static::processAppleStartupScreen( $values, $apple );
|
||||
}
|
||||
else
|
||||
{
|
||||
$values['icons_apple_startup'] = json_encode( $apple );
|
||||
}
|
||||
$values = static::processAppleStartupScreen( $values, $apple );
|
||||
|
||||
/* We need the string value of this uploaded file as well */
|
||||
$values['icons_mask_icon'] = (string) $values['icons_mask_icon'];
|
||||
@@ -212,65 +208,85 @@ class _icons extends \IPS\Dispatcher\Controller
|
||||
/**
|
||||
* Process application icon
|
||||
*
|
||||
* @param array $values Values from form submission
|
||||
* @param array $homeScreen Existing values, if any
|
||||
* @param array $values Values from form submission
|
||||
* @param array $homeScreen Existing values, if any
|
||||
* @param array $homeScreenMaskable Existing values, if any
|
||||
* @return array
|
||||
*/
|
||||
public static function processApplicationIcon( $values, $homeScreen = array() )
|
||||
public static function processApplicationIcon( $values, $homeScreen = array(), $homeScreenMaskable = array() )
|
||||
{
|
||||
if( $values['icons_homescreen'] )
|
||||
if( $values['icons_homescreen'] or $values['icons_homescreen_maskable'] )
|
||||
{
|
||||
$sizes = array(
|
||||
'android-chrome-36x36' => array( 36, 36 ),
|
||||
'android-chrome-48x48' => array( 48, 48 ),
|
||||
'android-chrome-72x72' => array( 72, 72 ),
|
||||
'android-chrome-96x96' => array( 96, 96 ),
|
||||
'android-chrome-144x144' => array( 144, 144 ),
|
||||
'android-chrome-192x192' => array( 192, 192 ),
|
||||
'android-chrome-256x256' => array( 256, 256 ),
|
||||
'android-chrome-384x384' => array( 384, 384 ),
|
||||
'android-chrome-512x512' => array( 512, 512 ),
|
||||
'msapplication-square70x70logo' => array( 128, 128 ),
|
||||
'msapplication-TileImage' => array( 144, 144 ),
|
||||
'msapplication-square150x150logo' => array( 270, 270 ),
|
||||
'msapplication-wide310x150logo' => array( 558, 558 ),
|
||||
'msapplication-square310x310logo' => array( 558, 270 ),
|
||||
'apple-touch-icon-57x57' => array( 57, 57 ),
|
||||
'apple-touch-icon-60x60' => array( 60, 60 ),
|
||||
'apple-touch-icon-72x72' => array( 72, 72 ),
|
||||
'apple-touch-icon-76x76' => array( 76, 76 ),
|
||||
'apple-touch-icon-114x114' => array( 114, 114 ),
|
||||
'apple-touch-icon-120x120' => array( 120, 120 ),
|
||||
'apple-touch-icon-144x144' => array( 144, 144 ),
|
||||
'apple-touch-icon-152x152' => array( 152, 152 ),
|
||||
'apple-touch-icon-180x180' => array( 180, 180 ),
|
||||
);
|
||||
|
||||
$setting = array( 'original' => (string) $values['icons_homescreen'] );
|
||||
|
||||
foreach( $sizes as $filename => $_sizes )
|
||||
foreach( [ 'icons_homescreen', 'icons_homescreen_maskable' ] as $type )
|
||||
{
|
||||
try
|
||||
$setting = [];
|
||||
if( $values[ $type ] )
|
||||
{
|
||||
$image = \IPS\Image::create( $values['icons_homescreen']->contents() );
|
||||
|
||||
if( $image::exifSupported() )
|
||||
{
|
||||
$image->setExifData( $values['icons_homescreen']->contents() );
|
||||
}
|
||||
|
||||
$image->crop( $_sizes[0], $_sizes[1] );
|
||||
|
||||
$setting[ $filename ] = array(
|
||||
'url' => (string) \IPS\File::create( 'core_Icons', $filename . '.png', (string) $image, NULL, TRUE, NULL, FALSE ),
|
||||
'width' => $image->width,
|
||||
'height' => $image->height
|
||||
$sizes = array(
|
||||
'android-chrome-36x36' => array(36, 36),
|
||||
'android-chrome-48x48' => array(48, 48),
|
||||
'android-chrome-72x72' => array(72, 72),
|
||||
'android-chrome-96x96' => array(96, 96),
|
||||
'android-chrome-144x144' => array(144, 144),
|
||||
'android-chrome-192x192' => array(192, 192),
|
||||
'android-chrome-256x256' => array(256, 256),
|
||||
'android-chrome-384x384' => array(384, 384),
|
||||
'android-chrome-512x512' => array(512, 512),
|
||||
'msapplication-square70x70logo' => array(128, 128),
|
||||
'msapplication-TileImage' => array(144, 144),
|
||||
'msapplication-square150x150logo' => array(270, 270),
|
||||
'msapplication-wide310x150logo' => array(558, 558),
|
||||
'msapplication-square310x310logo' => array(558, 270),
|
||||
'apple-touch-icon-57x57' => array(57, 57),
|
||||
'apple-touch-icon-60x60' => array(60, 60),
|
||||
'apple-touch-icon-72x72' => array(72, 72),
|
||||
'apple-touch-icon-76x76' => array(76, 76),
|
||||
'apple-touch-icon-114x114' => array(114, 114),
|
||||
'apple-touch-icon-120x120' => array(120, 120),
|
||||
'apple-touch-icon-144x144' => array(144, 144),
|
||||
'apple-touch-icon-152x152' => array(152, 152),
|
||||
'apple-touch-icon-180x180' => array(180, 180),
|
||||
);
|
||||
}
|
||||
catch ( \Exception $e ) { }
|
||||
}
|
||||
|
||||
$values['icons_homescreen'] = json_encode( $setting );
|
||||
$setting = array('original' => (string)$values[ $type ]);
|
||||
|
||||
foreach ( $sizes as $filename => $_sizes )
|
||||
{
|
||||
if ( $type == 'icons_homescreen_maskable' )
|
||||
{
|
||||
$filename .= "-masked";
|
||||
|
||||
if ( ! \mb_strstr( $filename, 'android-chrome' ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
try
|
||||
{
|
||||
$image = \IPS\Image::create( $values[ $type ]->contents() );
|
||||
|
||||
if ( $image::exifSupported() )
|
||||
{
|
||||
$image->setExifData( $values[ $type ]->contents() );
|
||||
}
|
||||
|
||||
$image->crop( $_sizes[0], $_sizes[1] );
|
||||
|
||||
$setting[$filename] = array(
|
||||
'url' => (string)\IPS\File::create( 'core_Icons', $filename . '.png', (string)$image, NULL, TRUE, NULL, FALSE ),
|
||||
'width' => $image->width,
|
||||
'height' => $image->height
|
||||
);
|
||||
}
|
||||
catch ( \Exception $e )
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$values[ $type ] = json_encode( $setting );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -284,6 +300,15 @@ class _icons extends \IPS\Dispatcher\Controller
|
||||
catch( \Exception $e ){}
|
||||
}
|
||||
|
||||
foreach( $homeScreenMaskable as $key => $image )
|
||||
{
|
||||
try
|
||||
{
|
||||
\IPS\File::get( 'core_Icons', ( $key == 'original' ) ? $image : $image['url'] )->delete();
|
||||
}
|
||||
catch( \Exception $e ){}
|
||||
}
|
||||
|
||||
$values['icons_homescreen'] = '';
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user