Prechádzať zdrojové kódy

added useRandomMediaImage for changing media image on login
added function getRandomMediaImage to changing media images

CauseFX 4 rokov pred
rodič
commit
df321597d2
3 zmenil súbory, kde vykonal 38 pridanie a 2 odobranie
  1. 32 0
      api/classes/organizr.class.php
  2. 2 1
      api/config/default.php
  3. 4 1
      js/functions.js

+ 32 - 0
api/classes/organizr.class.php

@@ -2110,6 +2110,7 @@ class Organizr
 				$this->settingsOption('multiple-url', 'loginWallpaper', ['label' => 'Login Wallpaper URL', 'help' => 'You may enter multiple URL\'s']),
 				$this->settingsOption('switch', 'useLogoLogin', ['label' => 'Use Logo instead of Title on Login Page']),
 				$this->settingsOption('switch', 'minimalLoginScreen', ['label' => 'Minimal Login Screen']),
+				$this->settingsOption('switch', 'useRandomMediaImage', ['label' => 'Use Random Media Wallpaper From Media Server']),
 			],
 			'Options' => [
 				$this->settingsOption('switch', 'alternateHomepageHeaders', ['label' => 'Alternate Homepage Titles']),
@@ -2210,6 +2211,7 @@ class Organizr
 		$appearance['buttonTextHoverColor'] = $this->config['buttonTextHoverColor'];
 		$appearance['buttonHoverColor'] = $this->config['buttonHoverColor'];
 		$appearance['loginWallpaper'] = $this->config['loginWallpaper'];
+		$appearance['randomMediaImage'] = $this->getRandomMediaImage('np');
 		$appearance['loginLogo'] = $this->config['loginLogo'];
 		$appearance['customCss'] = $this->config['customCss'];
 		$appearance['customThemeCss'] = $this->config['customThemeCss'];
@@ -2218,6 +2220,36 @@ class Organizr
 		return $appearance;
 	}
 
+	public function getRandomMediaImage($type = null)
+	{
+		if (!$this->config['useRandomMediaImage']) {
+			return false;
+		}
+		if (file_exists(dirname(__DIR__, 2) . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'cache')) {
+			$folder = dirname(__DIR__, 2) . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'cache';
+			$directoryIterator = new RecursiveDirectoryIterator($folder, FilesystemIterator::SKIP_DOTS);
+			$iteratorIterator = new RecursiveIteratorIterator($directoryIterator);
+			$images = [];
+			switch ($type) {
+				case 'np':
+					foreach ($iteratorIterator as $info) {
+						if (stripos($info->getFilename(), 'np') !== false) {
+							$images[] = 'data/cache/' . $info->getFilename();
+						}
+					}
+					if (count($images) > 0) {
+						return $images[rand(0, count($images))];
+					} else {
+						return false;
+					}
+				default:
+					return false;
+			}
+		} else {
+			return false;
+		}
+	}
+
 	public function getSettingsMain()
 	{
 		$certificateStatus = $this->hasCustomCert() ? '<span lang="en">Custom Certificate Loaded</span><br />Located at <span>' . $this->getCustomCert() . '</span>' : '<span lang="en">Custom Certificate not found - please upload below</span>';

+ 2 - 1
api/config/default.php

@@ -658,5 +658,6 @@ return [
 	'checkForPluginUpdate' => true,
 	'checkForThemeUpdate' => true,
 	'autoUpdateCronEnabled' => false,
-	'autoUpdateCronSchedule' => '@weekly'
+	'autoUpdateCronSchedule' => '@weekly',
+	'useRandomMediaImage' => false
 ];

+ 4 - 1
js/functions.js

@@ -5073,7 +5073,10 @@ function loadAppearance(appearance){
 			}
 		`;
 	}
-	if(appearance.loginWallpaper !== ''){
+	if(appearance.loginWallpaper !== '' || appearance.randomMediaImage){
+		if(appearance.randomMediaImage){
+			appearance.loginWallpaper = appearance.randomMediaImage;
+		}
 		cssSettings += `
 		    .login-register {
 			    background: url(`+randomCSV(appearance.loginWallpaper)+`) center center/cover no-repeat!important;