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.




Ribbon Buttons für bestimmte Personengruppen

Unbeantwortet Dieser Beitrag hat 12 Antworten

Ohne Rang
24 Beiträge
Max Melcher erstellt 31 Aug. 2010 12:12
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi,

ist es möglich wenn ich nen Button in das Ribbon hinzufüge dieses nur für bestimmte Benutzergruppen einzublenden ?

Ich möchte z.b. im editifs.aspx nen "special approve" für die special approvers anzeigen lassen - aber halt nur für die.

Grüße & danke für eure Hilfe,

Max

 

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 31 Aug. 2010 12:19
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Man kann das nur über Berechtigungen steuern, nicht über Gruppenzugehörigkeiten.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
24 Beiträge
Max Melcher Als Antwort am 31 Aug. 2010 12:34
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke Andi für die schnelle Antwort (wie immer!).

 

Ist das abhängig von den Berechtigungen der aktuellen Library oder woran wird das festgelegt ?

Am Beispiel:

Angenommen ich habe 3 Libs:

Abteilung

Salat-Bestellungen

Pizza-Bestellungen

 

Und 2 Personengruppen mit den contribute Rechten auf die passende Lib:

Salat Besteller

Pizza Besteller

 

Wie kann ichs jetzt anstellen, dass vom Item Abteilung es für die Pizza Besteller den Button Pizza bestellen gibt und für die Salat Besteller das gleiche. Die Buttons sollen jedoch nicht angezeigt werden wenn man in den anderen Libs ist.

Jemand der nur die Abteilung sehen kann, unter Umständen auch mit Contribute, sollte aber die Buttons auch nicht sehen (disable würds auch tun).

Ideen?

 

Grüße

Max

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 31 Aug. 2010 13:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Die Buttons sind also bei der Liste "Abteilungen", d.h. es interessieren die Rechte auf diese Liste. Man könnte jetzt den pizza-Bestellern und den Salat-Bestellern jeweils ein besonderes Einzelrecht nur auf diese Liste geben und das darüber steuern, aber das halte ich für suboptimal. Abgesehen davon werden die Buttons nicht unsichtbar sondern ausgegraut.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
24 Beiträge
Max Melcher Als Antwort am 31 Aug. 2010 14:00
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Einzelrechte sowas aus http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spbasepermissions.aspx fände ich auch suboptimal. Wenn ich da jetzt Custom Permissionlevels eintragen könnte...

Ich werde versuchen das im javascript auszublenden, werde posten ob/wies klappt.

Danke dir!

Max

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 31 Aug. 2010 14:09
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe noch keinen Weg gefunden, das per JS zu machen. Es gibt zwar das enablescript-Attribut, aber es ist mir noch nicht gelungen dort über das Client Objektmodell irgendwas anzustellen, weil diese Abfragen immer asynchron laufen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
24 Beiträge
Max Melcher Als Antwort am 31 Aug. 2010 16:16
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich hab noch ein weiteres problem:

Die Library ist eine mit nem InfoPath-Formular (web based form, also list > customize form with infopath).

Mittels

<CustomAction Id="Approve" Location="CommandUI.Ribbon">
    <CommandUIExtension>
      <CommandUIDefinitions>
        <CommandUIDefinition Location="Ribbon.Tabs.InfoPathListTab.Actions.Controls._children">

taucht der Button dort auf - jedoch kriege ich das javascript nicht zum laufen. Dies geht anscheinend nur wenn man die registration id und type im CustomAction angibt - egal welche Combi ich da probiere es geht nicht. Ideen?

Wenn ich als ID 100 & List nehme, dann gehts in ner normalen Liste (das ist der zweite Button im Code unten). Ich hab die Liste auch schon mal exportiert und im cap geschaut wie die id ist => 100. Bin langsam ratlos.

Die Buttons könnte man deaktivieren wenn man ein Content Editor Webpart einfügt, das die Permissions testet und dann die Buttons de/aktiviert.

 

Ganzer Code:

<CustomAction Id="EmailContacts" Location="CommandUI.Ribbon" ShowInSealedContentTypes="TRUE">
    <CommandUIExtension>
      <CommandUIDefinitions>
        <CommandUIDefinition Location="Ribbon.Tabs.InfoPathListTab.Actions.Controls._children">

          <Button
            Id="Ribbon.Tabs.InfoPathListTab.Actions.Approve"
            Sequence="40"
            Command="emailContacts"
            Image16by16="/_layouts/1033/images/formatmap16x16.png" Image16by16Top="-144" Image16by16Left="0"
            Image32by32="/_layouts/1033/images/formatmap32x32.png" Image32by32Top="-128" Image32by32Left="-256"
            LabelText="Approve Guest Audit"
            ToolTipTitle=""
            ToolTipDescription=""
            TemplateAlias="o1"
            />


        </CommandUIDefinition>

        <CommandUIDefinition Location="Ribbon.ListForm.Edit.Actions.Controls._children">
          <Button
            Id="Ribbon.ListForm.Edit.Actions.Approve"
            Sequence="40"
            Command="emailContacts"
            Image16by16="/_layouts/1033/images/formatmap16x16.png" Image16by16Top="-144" Image16by16Left="0"
            Image32by32="/_layouts/1033/images/formatmap32x32.png" Image32by32Top="-128" Image32by32Left="-256"
            LabelText="Approve Guest Audit"
            ToolTipTitle=""
            ToolTipDescription=""
            TemplateAlias="o1"/>
        </CommandUIDefinition>
       
      </CommandUIDefinitions>
      <CommandUIHandlers>
        <CommandUIHandler
          Command="emailContacts"
          CommandAction="javascript:
                   
          var x = alert('test');"/>
      </CommandUIHandlers>
    </CommandUIExtension>
  </CustomAction>

 

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 31 Aug. 2010 17:14
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Verwende einen eigenen Inhaltstyp, als RegistrationType="ContentType" und als RegistrationId die ID des Inhaltstyps.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
24 Beiträge
Max Melcher Als Antwort am 1 Sept. 2010 13:46
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich hab Item mit der ID ctype=0x01009CB89E9E9AD307449CEA8EF1A2DCD41E - das will er nicht.

Gibts ne Möglichkeit wie ich aus Item einen eigenen Typen mache - ich hab ja auch nen Infopath-Formular und jede Menge Workflows - alle Felder löschen und in nem Site-Content-Type anlegen kommt eher nicht in Frage.

Wundersamer Weise geht die commandaction wenn ich direkt auf dem sharepoint server den ribbon button ausführe - nur halt nicht auf dem "client", sprich mein Notebook.

Zusätzliches Problem das ich dadurch rausgefunden habe ist, die Platzhalter des Ribbons sind anscheinend im Infopath Formular leer. Ich hatte vermutet das {ItemId} oder {SelectedItemId} die ID des aktuellen Items halten würden - aber ist nicht so. Eleganteste Methode die ID rauszubekommen ist nun? Als aktueller Workarround füge ich die ID im Infopath ein, setze die Schriftfarbe auf weiß und hole mir den Wert per JS.... gefallen tut das aber nicht.

 

Grüße

Max

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 1 Sept. 2010 14:16
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Max Melcher"]Wundersamer Weise geht die commandaction wenn ich direkt auf dem sharepoint server den ribbon button ausführe - nur halt nicht auf dem "client"[/quote]

Dann ist es ein Caching-Problem des IE. Leere mal den Browsercache.

[quote user="Max Melcher"]die Platzhalter des Ribbons sind anscheinend im Infopath Formular leer. Ich hatte vermutet das {ItemId} oder {SelectedItemId} die ID des aktuellen Items halten würden [/quote]

Da verhalten sich die CustomActions leider sehr unterschiedlich, je nachdem wo die Action hingehört. Eine vernünftige Übersicht dazu, wann was geht, habe ich noch nicht gefunden - und auch noch nicht selbst ausgetüftelt. Meistens geht aber JavaScript rund um das SP.ListOperation.Selection-Objekt.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
24 Beiträge
Max Melcher Als Antwort am 1 Sept. 2010 16:41
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das ist tatsächlich ein Caching-Problem - neuer Browser (Safari) und schon wurden die Command-Actions ausgeführt. Unglaublich...

 

Die Item-Id ist leider nach wie vor nicht greifbar (über board mittel, machs nach wie vor mit javascript auf das unsichtbare feld). Leider auch nichts Neues wie ich den Button auf eben dieses eine Formular beschränken kann, das brennt mir mehr unter den nägeln...

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 1 Sept. 2010 16:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe doch weiter oben gepostet, wie Du an die ItemId per javaScript kommen kannst. Genauso habe ich gepostet, wie Du den Button an einen Inhaltstyp binden kannst. Wo liegt jetzt das Problem?

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
24 Beiträge
Max Melcher Als Antwort am 6 Sept. 2010 08:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi Andi,

sorry für die später Antwort. Ich bin bei allen Lösungsvorschlägen auf Probleme/Sackgassen gestoßen.

Ich bin der Meinung, dass man das nicht über eine Solution ins Ribbon bekommt. Auf der einen Seite, weil SP.ListOperation.Selection.getSelectedList(); / Items() im Infopath-Formular leer/null ist oder es Probleme gibt genau diese eine Liste zu targeten sodass nicht in allen Formularen der Button auftaucht.

Mein kleiner aber feiner Workaround ist nun das ich die buttons einfach via Javascript in genau diesem einen Formular ins Ribbon einfüge und zwar nur dann, wenn der User die Permissions hat und noch einige andere Bedingungen. Die ID des Items bekomme ich, indem ich im Infopath die ID mit weißer Schrift anzeige (das ist der einzige Punkt der mir nicht so gefällt, aber mei es läuft) ;)

Danke dir für deine Hilfe - deine Anregungen haben mir sehr geholfen!

Grüße aus München

Max