0

How to provide access only to the dictionary items under System node for content authors?

We don't need to expose other items under /sitecore/system/ node.

Content Authors already provided with "Sitecore/Author" role. They can see only the /sitecore/content node.

  • Although you should follow the recommendations by both answers - to see the system folder, after applying the security, your editors might need to check the "Entire tree" checkbox in the View ribbon of the content editor. – Gatogordo Nov 26 '18 at 9:47
3

You shouldn't place dictionary content items under system. Instead make a dictionary item that inherits from dictionary under your content node and apply appropriate access to this item.

If you still want to I'd recommend making a 'Dictionary editor' role and give it read/write/create/delete permissions on system/dictionary. To do this first click 'Unprotect' after selecting the right node. Then apply these settings. Assign the right users, or the content author role, also this new role.

Security editor

  • But is there any way we can give access to Dictionary items under System Node. – Siva Kumar Nov 26 '18 at 8:27
3

What Joost say is 100% correct, I recommend to use specific domain to specific website. Is really easy to copy your dictionary domain from /system node to other place.

In version 6.6 as far I remember in site definition was introduce a new attribute dictionaryDomain.

I recommend to add the dictionary item not under System node and to be specific to the site, in case you have a multisite solution.

You site definition will look like :

<site name="yoursitename" patch:before="site[@name='website']"
            ... 
            dictionaryDomain="YourDictionaryDomain"
            ... />

The dictionaryDomain is resolved in the below processor :

<!-- Performs dictionary lookups. The Sitecore.Globalization.Translate.Text() method invokes this pipeline. -->
    <getTranslation>
      <processor type="Sitecore.Pipelines.GetTranslation.ResolveContentDatabase, Sitecore.Kernel" />
      <processor type="Sitecore.Pipelines.GetTranslation.TryGetFromDomain, Sitecore.Kernel" />
      <processor type="Sitecore.Pipelines.GetTranslation.TryGetFromFallbackDomains, Sitecore.Kernel" />
      <processor type="Sitecore.Pipelines.GetTranslation.TryGetFromSiteDomain, Sitecore.Kernel" />
      <processor type="Sitecore.Pipelines.GetTranslation.TryGetFromContextDatabase, Sitecore.Kernel" />
      <processor type="Sitecore.Pipelines.GetTranslation.TryGetFromCoreDatabase, Sitecore.Kernel" />
    </getTranslation>
  • Thank you. We are looking into this solution. – Siva Kumar Nov 26 '18 at 11:34
1

I strongly agree with Joost regarding not a best practice giving content editors access to anything under /sitecore/system/ node even though you don't have other option here.

This is one of the flaws using OOTB Dictionary functionality in Sitecore. There are a lot other flaws - for instance you need to clear dictionary cache after each publish as Sitecore stores them in one .dat file under /temp folder and you always need to refresh it as you never know what has been changed. We also had trouble refreshing this file on CD servers and instead of translated dictionary entries / phrases, visitors saw dictionary keys :)

I would recommend looking into Sitecore Habitat project and inspire by its Dictionary Foundation module:

https://github.com/Sitecore/Habitat/tree/master/src/Foundation/Dictionary

If you are using SXA in your solution or planning to use, I would recommend looking into Sitecore Habitat.Home project and inspire by its Dictionary Foundation module:

https://github.com/Sitecore/Sitecore.HabitatHome.Platform/tree/master/src/Foundation/Dictionary

Then you would have Dictionary entries under /sitecore/content node like this:

enter image description here

and code how you use it could look like this:

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.