Problem/Motivation
Follow-up from #3425080: Add a UI option to change or hide the logo on the Toolbar and split from #3436526-68: Adjust custom navigation logo dimensions on upload.
The navigation module allows you to upload a custom image for the logo, then stores the file ID.
This means that the change can only be made on production, and the site owner would then need to sync both database and files to a development environment to be able to export configuration.
The theme logo configuration also allows you to upload an image which will be stored as a managed file, but it stores the path to the image instead and has an option to manually specify the image path. This means that site owners would be able to configure this directly on a development site (even if it points to a managed file uploaded on production) without a full file sync installed.
It would also make it possible for people to use SVGs committed to their code base for the navigation icon.
Steps to reproduce
Proposed resolution
Remaining tasks
User interface changes

API changes
Data model changes
Release notes snippet
| Comment | File | Size | Author |
|---|---|---|---|
| #34 | 3462829-nr-bot.txt | 3.6 KB | needs-review-queue-bot |
| #31 | navigation-custom-logo.png | 56.74 KB | plopesc |
Issue fork drupal-3462829
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #2
catchMarked #3468672: Allow SVG logos duplicate since this issue would enable svg logos to be used.
Comment #4
pooja_sharma commentedComment #6
pooja_sharma commentedImplemented code to support image path instead of file id of navigation logo, also made some adjustments to the respective code files for the new changes. apart form nothing seems to be left.
Please review , moving NR.
Comment #7
smustgrave commentedLeft comments on MR.
Comment #8
pooja_sharma commentedThanks for reviewing , working on the it.
Comment #9
pooja_sharma commentedAddressed the feedback, left comment on MR. PLease review, moving NR.
Comment #10
smustgrave commentedComment #11
smustgrave commentedAdded additional comments
Comment #12
pooja_sharma commentedAddressed the feedback, left comment on MR. PLease review, moving NR.
Comment #13
smustgrave commentedWill leave for somewhere else but -1 from me as we are hard coding values and schema validation appears to be missing.
Comment #14
pooja_sharma commentedOn adding validation constraints appears random test failures , moving to NW 'll debug it.
Comment #15
pooja_sharma commentedhard coding values of logo extension now added in config & added constraints validation as well
As new key
logo_extensionadded, it leads to 'validation config' warning: https://git.drupalcode.org/issue/drupal-3462829/-/jobs/2613092But not getting similar warning on local even try with this command:
drush config:inspect --filter-keys=navigation.settings --detail --list-constraintsit 'll be great if anyone can share suggestion for it.
Comment #16
pooja_sharma commentedTried to address the mentioned feedback, apart form it nothing appears to be left.
MR is mergeable, there is one warning validation config, it display validation count & line no. increase which is correct, no any error message displaying here, not sure on the basis of it, PLease review, moving to NR.
Comment #17
kumudbThere is an issue occurring when clicking on the entity used for the logo from the file system.
1. Upload a custom logo:
Navigate to Administration > Configuration > User Interface > Navigation > Settings.
Upload and save your custom logo.
2. Save the configuration:
Ensure the changes are saved properly.
3. Verify the issue:
Go to Administration > Content > Files.
Locate your most recently uploaded logo file.
Click on the Usage link for this file.
Observe the error that appears.
The website encountered an unexpected error. Try again later.
Drupal\Component\Plugin\Exception\PluginNotFoundException: The "logo" entity type does not exist. in Drupal\Core\Entity\EntityTypeManager->getDefinition() (line 138 of core/lib/Drupal/Core/Entity/EntityTypeManager.php).
Comment #18
pooja_sharma commented@kumudb, This issue not replicate due to these MR changes , I have verified & created issue here, can track there.
Comment #19
smustgrave commentedWill leave for additional reviews
But my thoughts
But logo_managed variable name for a path doesn't make much sense to me
Logo_extensions seems to have no field (is there not a way to get allowed file uploads?)
The schema for logo_managed says it's allowed to be null but if it's a path to an image then should validate it's a valid path.
Comment #20
pooja_sharma commentedAgree , 'll working on the same, keep logo_path variable name.
Generally when we upload the image on the node form , there is only visible image field, & image extension not visible to the user , it is attached with field storage.
Here if we 'll add logo_extension field then on the same form logo extension & logo upload field both 'll be visible, this 'll be bit confusing experience for the user.
On the basis of my understanding trying to rply correct me if I 'm missing anything, 'logo_managed' can be null because at the BE there are three opts available:
default: (by default this value is selected when this selected then image path not get from the config, so image path not store as well, due to which I set null) ,
hide: in this opt no image 'll display & not store it's value in config,
custom logo update: only in this opt image store in config form.
so on the basis above mentioned scenarios keep it null as it's not mandatory that always there 'll be value in this image field , if there is not value in the image field at that time how 'll I validate image path (this is something I can't figure out)
Comment #22
plopescThank you for the work on this one!
Once #3436526: Adjust custom navigation logo dimensions on upload has been merged, the ground for this one is ready.
Merged main into the MR branch and solved the conflicts as best as I could. Also added some new comments.
Wonder if the aim of this one would be to have a similar UI and logic we already have for the theme logo, but that could be discussed later.
Comment #23
pooja_sharma commentedComment #24
pooja_sharma commentedApplied suggestions on MR & fixed test failures as well now MR is meregeable.
PLease review, moving NR.
Comment #25
plopescThank you for your help here @pooja_sharma.
According the Issue Summary, the expected outcome of this issue is to have a similar UI and behavior to /admin/appearance/settings page, where the logo path can be defined manually, or uploading a custom file, whose path is stored in config.
The difference with Logo image is that logic to adjust the file dimensions on upload should still be there.
Comment #26
plopescMarking as Navigation stable blocker because would solve indirectly #3471768: Page break error display :The "logo" entity type does not exist
Comment #27
marc.bauPlease also do not forget that uploading SVG files must be forbidden where setting a path to a SVG file need to be allowed.
Comment #28
m4oliveiI've closed #3471768: Page break error display :The "logo" entity type does not exist as a duplicate of this issue, since we'll resolve that here.
Let's credit: pooja_sharma, kumudb, skaught, plopesc, and smustgrave for review / patches when we have a commit here please.
Comment #30
plopescCreated a new MR for this one where the approach is more similar to
/admin/appearance/settings.Site administrator can enter a path or upload an image whose path will be automatically used.
Comment #31
plopescAttaching screenshot of the new Navigation settings UI.

Comment #32
plopescMR !9589 refactored once #3474123: Reorganize navigation settings to be more consistent has been merged.
Comment #34
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #35
plopescMR updated to solve the PHPStan and PHPCS errors after #3461318: Enforce return types in all new methods and functions
Comment #36
penyaskitoAdded some questions to the MR, but don't think it should block this anyway.
Comment #37
plopescThank you for your review @penyaskito.
Made some adjustments in the MR according to your comments.
Comment #38
penyaskitoMakes sense then!
RTBCing.
Comment #39
catchOne open question on the MR, and two others I answered myself as I was asking them, otherwise looks good.
Updating the issue summary to embed the screenshot.
Comment #40
plopescThank you for the review and summary update.
Answered the outstanding question.
Comment #41
catchOK now I understand why it's there I think I've got an alternative suggestion which looks like it would be easier?
Comment #42
plopescThank you for your review @catch.
Made a refactor of the validation and error handling logic. Hope it is good to go now.
Comment #44
catchThat looks better thank you!
Committed/pushed to 11.x, thanks!
I was going to cherry-pick this to 10.4.x but it doesn't apply, which suggests another change has gone into navigation 11.x which didn't get backported. Rather than rebasing this, I think we should instead try to backport that issue instead so this cherry-picks cleanly (or decide we only commit things to 11.x, but one or the other).
Comment #45
catchComment #47
catchDid the cherry-pick to 10.4.x. The php baseline change didn't apply, after regenerating the baseline I discovered there were no baseline changes on 10.4.x at all, so just committed without it.