Site Identity: name / tagline / logo / favicon / social (a brand admin screen)#15
Merged
Conversation
…o/favicon/social)
A new first-party `identity` module. The Site Identity screen (under Settings) surfaces the
site name + tagline for editing (previously only in the .ini), plus a logo and favicon
(chosen from the Media Library or uploaded via TigerMediaPicker) and the social profile URLs.
Everything writes to the config tier (live-override, no deploy) and is wired to its consumers:
- favicon -> emitted into the head as rel=icon + apple-touch-icon (Identity_Plugin_Favicon).
A single high-res square source, browser-scaled — no derivative generation.
- logo -> Organization.logo in the JSON-LD (already reads tiger.site.logo).
- socials -> Organization.sameAs (already reads tiger.seo.social.*).
Its own ACL resource (Identity_AdminController / Identity_Service_Identity), so access is
grantable independently — the seam for per-org identity management in a multi-tenant install.
Config is GLOBAL scope for now (single site, guest-visible; core stays multi-site-unaware),
isolated in Identity_Service_Identity::_scope() so the future multi-site module flips it to
per-org without touching the rest.
Files: modules/identity/{Bootstrap,controllers/AdminController,services/Identity,forms/Identity,
plugins/Favicon,configs/acl.ini,views/scripts/admin/index.phtml,languages/en/identity.php}.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Site Identity screen — surfaces the site's brand for editing and lights up the JSON-LD + favicon that were previously config-only.
What it is
A new first-party
identitymodule (modules/identity/) with a Site Identity screen under Settings:.inibefore).TigerMediaPicker.All values write to the config tier (live-override, no deploy).
Wired to what already consumes it
Identity_Plugin_Favicon→headLinkrel="icon"+apple-touch-icon).Organization.logoin the JSON-LD (the graph already readstiger.site.logo).Organization.sameAs(already readstiger.seo.social.*).So the empty nodes we saw live on tiger-dev now have a UI to fill them.
Favicon sizing — the modern, derivative-free approach
Rather than generating N icon sizes, it stores one high-res square source (the UI recommends ≥512×512) and emits it as
rel="icon"+apple-touch-icon; the browser downscales for every tab/size. Simple, robust, and standard. (Auto-derivatives viaTiger_Media_Imageremain an easy fast-follow if crisper small sizes are ever wanted.)Permissions + multi-site
The screen has its own ACL resource (
Identity_AdminController/Identity_Service_Identity), so access is grantable on its own — the seam for letting each org's admin manage its own identity in a multi-tenant install. Config is written at GLOBAL scope for now (the single site, visible to guests — anonymous requests only receive GLOBAL config, so core stays multi-site-unaware), isolated in one_scope()method so the future multi-site module (which resolves the acting org per domain) can flip identity to per-org without touching the rest of the service.Notes
configtable).site_namealso lives in the CMS Settings screen; Site Identity is its natural home — both write the same key, no conflict.TigerButton/TigerDOM, and themediaFieldview helper.🤖 Generated with Claude Code