mirror of
https://github.com/nextcloud/server.git
synced 2026-06-10 09:13:19 -04:00
Merge pull request #40323 from nextcloud/enh/init-scripts
This commit is contained in:
commit
747d9ef511
1 changed files with 26 additions and 11 deletions
|
|
@ -49,6 +49,7 @@ namespace OCP;
|
|||
use OC\AppScriptDependency;
|
||||
use OC\AppScriptSort;
|
||||
use bantu\IniGetWrapper\IniGetWrapper;
|
||||
use OCP\Share\IManager;
|
||||
use Psr\Container\ContainerExceptionInterface;
|
||||
|
||||
/**
|
||||
|
|
@ -57,17 +58,11 @@ use Psr\Container\ContainerExceptionInterface;
|
|||
* @since 4.0.0
|
||||
*/
|
||||
class Util {
|
||||
/** @var \OCP\Share\IManager */
|
||||
private static $shareManager;
|
||||
private static ?IManager $shareManager = null;
|
||||
|
||||
/** @var array */
|
||||
private static $scripts = [];
|
||||
|
||||
/** @var array */
|
||||
private static $scriptDeps = [];
|
||||
|
||||
/** @var array */
|
||||
private static $sortedScriptDeps = [];
|
||||
private static array $scriptsInit = [];
|
||||
private static array $scripts = [];
|
||||
private static array $scriptDeps = [];
|
||||
|
||||
/**
|
||||
* get the current installed version of Nextcloud
|
||||
|
|
@ -163,6 +158,25 @@ class Util {
|
|||
\OC_Util::addStyle($application, $file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a standalone init js file that is loaded for initialization
|
||||
*
|
||||
* Be careful loading scripts using this method as they are loaded early
|
||||
* and block the initial page rendering. They should not have dependencies
|
||||
* on any other scripts than core-common and core-main.
|
||||
*
|
||||
* @since 28.0.0
|
||||
*/
|
||||
public static function addInitScript(string $application, string $file): void {
|
||||
if (!empty($application)) {
|
||||
$path = "$application/js/$file";
|
||||
} else {
|
||||
$path = "js/$file";
|
||||
}
|
||||
|
||||
self::$scriptsInit[] = $path;
|
||||
}
|
||||
|
||||
/**
|
||||
* add a javascript file
|
||||
*
|
||||
|
|
@ -214,7 +228,8 @@ class Util {
|
|||
$sortedScripts = $scriptSort->sort(self::$scripts, self::$scriptDeps);
|
||||
|
||||
// Flatten array and remove duplicates
|
||||
$sortedScripts = $sortedScripts ? array_merge(...array_values(($sortedScripts))) : [];
|
||||
$sortedScripts = array_merge([self::$scriptsInit], $sortedScripts);
|
||||
$sortedScripts = array_merge(...array_values($sortedScripts));
|
||||
|
||||
// Override core-common and core-main order
|
||||
if (in_array('core/js/main', $sortedScripts)) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue