SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Schnellstartleiste anpassen je nach SP-Gruppenzugehörigkeit

Unbeantwortet Dieser Beitrag hat 9 Antworten

Ohne Rang
49 Beiträge
HeenzKetchup erstellt 23 Sept. 2014 13:47
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

ich habe als Navigation auf unserer Seite ausschließlich statische, manuell hinzugefügte Verlinkungen, nix dynamisches.
Jetzt kam die Frage, ob ich bestimmtLinks je nach Gruppenzugehörigkeit (Berechtigung) ein- bzw. ausblenden kann. 

Es geht darum, dass ich z.B. eine Seite habe, die nur bestimmte Leute sehen sollen. Die Berechtigung für die Seite habe ich schon gesetzt. Also User A kann sich die Seite anzeigen lassen, User B darf nicht. 
Wenn also jetzt User A auf den Navilink klickt kommt er auf die gewünschte Seite und gut. Für User B ist der Link auch sichtbar. Wenn er dann da drauf klickt, dann kommt "Zugriff verweigert". Das ist ja auch ok so, er solls ja nicht sehen.

Aber könnte ich den Link denn auch verstecken, so dass der User B gar nicht in Versuchung kommt es zu versuchen? Bzw. gar nicht mitkriegt, dass es noch mehr Seiten gibt von denen er nichts weiß?

Muss das über JavaScript laufen? Oder muss ich da selber was programmieren?

 

Besten Dank! 

Alle Antworten

Ohne Rang
204 Beiträge
Nico Thiemer Als Antwort am 24 Sept. 2014 07:58
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo!

 

Prinzipiell blendet SharePoint alle Links aus, zu die der Benutzer keine Rechte und SharePoint selbst erstellt hat. Schreibt man eigene Link z.B. im Fließtext, geht das natürlich nicht. Allerdings kann man Links im Linkwebpart personalisieren. Und dies ist genau das, was Du brauchst. Wichtig ist also die Frage, wo Deine Links stehen.

 

Viele Grüße

 

Nico Thiemer

 

--

SharePoint Enthusiast seit 2001

Twitter: https://twitter.com/NicoThiemer
Blog: http://nicothiemer.wordpress.com
XING: https://www.xing.com/profile/Nico_Thiemer

Ohne Rang
49 Beiträge
HeenzKetchup Als Antwort am 24 Sept. 2014 09:00
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi,

wie gesagt, die Links habe ich über die Websiteeinstellungen > Schnellstart hinzugefügt.
Das ist dann also der Bereich der #siteNavBox, irgendwas mit QuickLaunchNavigationManager oder so.

Das ist ja an sich die Standard-Navigation, oder?
Zum Aufbau:
- Es gibt diverse Listen und Bibliotheken, die aber alle nicht in der Schnellstartleiste auftauchen sollen.
- Es gibt von mir erstellte Seiten in der Bibliothek "Websiteseiten". Diese enthalten zum Beispiel ein Webpart zum Anzeigen einer der Listen mit einer bestimmten Listenansicht.
- Diese Seiten sollen nun über die Schnellstartleiste erreichbar sein. Was ja auch funktioniert.

Wie könnte ich denn jetzt einstellen, dass Sharepoint "denkt", dass das von SP erstellte Links sind?
Ich habe jetzt gerade nochmal nachgesehen. Ginge es vielleicht, wenn ich die CSS-Klasse für den Bereich ändere? Irgendwie "static" durch irgendwas anderes ersetzen? Oder bringt das nix? Woher weiß SP denn, um welche Art von Links es sich handelt? Über die CSS-Klassen oder irgendwie anders?

 

Mit dem empfohlenen Linkwebpart kann ich grad nix anfangen. Ich finde es nicht. Wir haben SP Foundation, gibts das da nicht? Und ich habe bei den Websiteeinstellungen zB nicht den Punkt "Navigation". 

Wie kann ich also am besten vorgehen?

Besten Dank!

Heenz

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 24 Sept. 2014 09:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wie Nico oben schon schrieb, geht es mit manuell im Browser erstellten Links nicht automatisch. Man kann die Links aber mit eigenem Code oder PowerShell erzeugen und sie dabei als "internal" markieren. Das geht nur mit Links in dieselbe Websitesammlung, aber dann greift das automatische Security Trimming. Oder man verwendet die SharePoint Publishing Infrastruktur, mit der man den Links Zielgruppen zuweisen kann. Publishing bringt aber einen eventuell unerwünschten Overhead mit sich.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
49 Beiträge
HeenzKetchup Als Antwort am 24 Sept. 2014 09:35
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das hab ich schon verstanden... 

Publishing ist bestimmt zu viel.

Also versuch ich es doch über Code. Das wäre dann in etwa sowas? http://dotnet-forum.de/blogs/thorstenhans/archive/2010/01/13/sharepoint-quicklinks.aspx

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 24 Sept. 2014 10:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Nein, das ist der falsche Code (für persönliche Favoritenlinks eines Benutzers). Du brauchst eher sowas: http://sharepoint1on1.blogspot.de/2013/09/sharepoint-create-quick-launch-menu.html

Wichtig dabei ist der boolsche Parameter beim Erstellen des neuen SPNavigationNode, der festlegt, ob es ein interner oder externer Link ist.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
49 Beiträge
HeenzKetchup Als Antwort am 24 Sept. 2014 10:33
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Sowas hatte ich dann jetzt auch gefunden... ;-)

Danke!

Ich werde das mal versuchen. Jetzt ist nur noch die Frage, an welcher Stelle ich das überhaupt einfügen soll. Über FeatureActivated oder so? Oder muss ich das regelmäßig machen, wenn eine Seite geöffnet wird oder sowas? Welches Event ist das denn?! Ich steh grad aufm Schlauch... 

Und zum Verständnis: Also wenn ich die Links jetzt so hinzufüge und als intern kennzeichne, dann greift die Standardroutine von SP? Also wenn ich eine Seite verlinke "/SitePages/Meine.aspx" auf die nur User A Zugriff hat, dann erscheint der Link bei User A und bei User B dann nicht? Richtig?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 30 Sept. 2014 12:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="HeenzKetchup"]Jetzt ist nur noch die Frage, an welcher Stelle ich das überhaupt einfügen soll[/quote]

Das hängt ganz vom gewünschten Ziel ab ;-)

Für eine einmalige Aktion kann man das mit PowerShell machen. Wenn Du das in gleicher Weise öfter brauchst, kannst Du ein Feature erstellen und den Code in FeatureActivated unterbringen. Wenn es für alle neuen Websites sein soll, kannst Du Dich an das SiteProvisioned-Ereignis hängen.

[quote user="HeenzKetchup"]Also wenn ich eine Seite verlinke "/SitePages/Meine.aspx" auf die nur User A Zugriff hat, dann erscheint der Link bei User A und bei User B dann nicht? Richtig?[/quote]

Richtig.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
49 Beiträge
HeenzKetchup Als Antwort am 30 Sept. 2014 12:26
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hab es in das Feature-Activated-Event bei meiner schon bestehenden Lösung eingebaut. 

Nur leider funktioniert es so nicht...

Mein Code:

Dim nodes As Navigation.SPNavigationNodeCollection = web.Navigation.QuickLaunch
Dim FirstNode As Navigation.SPNavigationNode = New Navigation.SPNavigationNode("SharePointMailer", "/", False)

'lösche alle Einträge
For index As Integer = 0 To nodes.Count - 1
    nodes(index).Delete()
Next

'Erstelle Hauptpunkt
nodes.AddAsFirst(FirstNode)

'Füge Subnodes an Firstnode
nodes(0).Children.AddAsFirst(New Navigation.SPNavigationNode("Meine offenen Mailings", "/SitePages/MeineoffenenMailings.aspx", False))
nodes(0).Children.AddAsLast(New Navigation.SPNavigationNode("Meine Mailings", "/SitePages/MeineMailings.aspx", False))
nodes(0).Children.AddAsLast(New Navigation.SPNavigationNode("Offene Mailings", "/SitePages/offen.aspx", False))
nodes(0).Children.AddAsLast(New Navigation.SPNavigationNode("Versendete Mailings", "/SitePages/Versendet.aspx", False))

 

Parameter laut Definition:

title: Name of the node as displayed in the hierarchy tree control. Required.
url: URL of the node. Required.
isExternal: Specifies whether the new node is an external node or an internal node. The new node is external if true; the node is internal if false. Required.

Was ist also falsch?!
Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 30 Sept. 2014 15:05
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du schreibst ja leider nicht, was daran nicht funktioniert bzw. ob ein Fehler auftritt. Ich kann deshalb nur raten, daß hier eine Exception geworfen wird:

[quote user="HeenzKetchup"]For index As Integer = 0 To nodes.Count - 1
    nodes(index).Delete()
Next[/quote]

Du solltest die Collection "von hinten nach vorne" durchlaufen:

For index as Integer = nodes.Count - 1 To 0 Step -1

Viele Grüße
Andi
af @ evocom de
Blog