ADD - add in-game phone administration and configuration (#25)

* ADD - build in-game admin command center

* ADD - open admin panel by command

* ENH - rebuild admin panel as standalone editor

* ENH - compact admin workspace navigation

* ENH - expand admin device controls

* ENH - refine admin panel navigation style

* ADD - add SQL phone configurator

* FIX - expose complete phone configuration

* FIX - make company jobs freely configurable

* FIX - align configurator tables to left

* ENH - organize configurator collection controls

* ENH - organize nested configurator sections

* ENH - add configurator field descriptions

* FIX - hide fixed configurator add controls

* ENH - refine configurator editing experience

* ENH - refine admin configurator controls

* FIX - apply configurator settings instantly

* FIX - close live activity command registration

---------

Co-authored-by: Leon.Schmidt <leonmauricewill15@gmail.com>
This commit is contained in:
DerEchteAlec
2026-08-22 03:26:52 +02:00
committed by GitHub
co-authored by Leon.Schmidt
parent 7aa4677b81
commit a9143b0fba
74 changed files with 12862 additions and 329 deletions
+39 -9
View File
@@ -1567,19 +1567,49 @@ SkyPhoneApps.SendCatalog = send_catalog
SkyPhoneApps.SetPhoneOpen = set_phone_open
SkyPhoneApps.RegisterClientHooks = register_bundled_client_hooks
if Config.CustomApps.Enabled and Config.CustomApps.BundledApps then
local bundled = SkyPhoneApps.GetBundledManifests()
for index = 1, #bundled do
local registered, register_error = register_app(normalize_bundled_manifest(bundled[index]))
if not registered then
error(("[sky_phone] Could not register bundled custom app '%s': %s"):format(
bundled[index].id,
register_error
))
local function refresh_bundled_apps()
local manifests = Config.CustomApps.Enabled and Config.CustomApps.BundledApps
and SkyPhoneApps.GetBundledManifests()
or {}
local desired_ids = {}
for index = 1, #manifests do
desired_ids[manifests[index].id] = true
end
local removals = {}
for app_id, app in pairs(apps_by_id) do
if app.catalog.bundled and not desired_ids[app_id] then
removals[#removals + 1] = app_id
end
end
for index = 1, #removals do
remove_registered_app(removals[index], true, false)
end
for index = 1, #manifests do
local manifest = manifests[index]
local existing = apps_by_id[manifest.id]
local normalized = normalize_bundled_manifest(manifest)
if existing and existing.catalog.bundled then
normalized.hooks = existing.hooks
apps_by_id[manifest.id] = normalized
elseif not existing then
local registered, register_error = register_app(normalized)
if not registered then
error(("[sky_phone] Could not register bundled custom app '%s': %s"):format(
manifest.id,
register_error
))
end
end
end
sync_catalog()
end
refresh_bundled_apps()
AddEventHandler("sky_phone:configurator:updated", refresh_bundled_apps)
SkyPhoneApps.CompatibilityCore = {
Add = add_compatibility_app,
AddServerAuthorized = add_server_authorized_compatibility_app,