Hide Gear Icon on New Experience

Forums General discussion Hide Gear Icon on New Experience

Viewing 2 reply threads
  • Author
    Posts
    • #25899
      Maciek Grischke
      Participant

      This isn’t to do with DFFS, but SharePoint in general.

      I managed to hide the Gear icon (settings icon) for non-admin users (via scriptlinks) so that nobody can go to Site Contents page, but my solution is not working on New Experience pages, lists or libraries.

      I don’t know how to inject JS/CSS to new experience pages.

      I’m talking about the gear icon in the top Nav Bar.

      I want to apply this:

      #O365_MainLink_Settings {
      display:none;
      }
      

      If it’s possible to apply this to non-admin users, that’s great, but even if it’s for all users, including the admin, it’s also great, but I can’t have users to be able to access the Site Contents page.

      When the page is loaded, I found this property in the page source: _spPageContextInf=”isSiteAdmin”=true which indicates that I am an admin.

      Does anyone know how to resolve this? Or is there another way to stop users from accessing the Site Contents page?

      I was unable to find anything online about this.

      Thanks in advance.

    • #25909
      Alexander Bautz
      Keymaster

      Unfortunately I don’t know how to do this for the “modern look” SharePoint for all pages. I have developed a Modern Content Editor Web Part that can be used to inject JS or CSS in a modern page (not published yet, but I’ll make it available soon), but this would have to be added to every page so this is not a viable option.

      My best advise would be to hide all the lists you don’t want them to see – I have added a code snippet you can use here.

      Alexander

    • #25913
      Maciek Grischke
      Participant

      Thanks Alexander.

      I tried it, but I am getting this error:

      jquery-3.4.1.min.js:2 POST https://xxx.sharepoint.com/_api/Web/Lists/GetById('53eea4ac-f648-4360-8895-508a2940dd54') 415
      send	@	jquery-3.4.1.min.js:2
      ajax	@	jquery-3.4.1.min.js:2
      toggleVisible	@	SiteContentsSettings.aspx:709
      onclick	@	SiteContentsSettings.aspx:1
      SiteContentsSettings.aspx:726 
      {readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}
      abort: ƒ (e)
      always: ƒ ()
      catch: ƒ (e)
      done: ƒ ()
      fail: ƒ ()
      getAllResponseHeaders: ƒ ()
      getResponseHeader: ƒ (e)
      overrideMimeType: ƒ (e)
      pipe: ƒ ()
      progress: ƒ ()
      promise: ƒ (e)
      readyState: 4
      responseJSON: {error: {…}}
      responseText: "{"error":{"code":"-1, Microsoft.SharePoint.Client.ClientServiceException","message":{"lang":"en-US","value":"The HTTP header Content-Type is missing or its value is invalid."}}}"
      setRequestHeader: ƒ (e,t)
      state: ƒ ()
      status: 415
      statusCode: ƒ (e)
      statusText: "error"
      then: ƒ (t,n,r)
      __proto__: Object
      

      I am a site admin / global admin so I assumed I have enough rights?

      Also, what I have used so far via scriptlink is:

      addCSS("#applist {display:none !important}");
      function addCSS(css){
      var head = document.getElementsByTagName("head")[0];
      var s = document.createElement("style");
      s.setAttribute("type", "text/css");
      if (s.styleSheet) {
      s.styleSheet.cssText = css;
      } else {
      s.appendChild(document.createTextNode(css));
      };
      head.appendChild(s);
      }
      

      which hides everything from the view and if I need to show the list, I paste this in the console:

      addCSS("#applist {display:block !important}");
      
Viewing 2 reply threads
  • You must be logged in to reply to this topic.