Schaltfläche “Neues Element hinzufügen” entfernen

In SharePoint hat man per Default in Listenansichten die Möglichkeit “Neues Element hinzufügen”. Diese Schaltfläche kann man folgendermaßen entfernen:

Auf “Webpart bearbeiten” klicken. Dann unter Symbolleistentyp “Keine Symbolleiste” auswählen und anschließend mit “OK” bestätigen.

Symbolleisten

Advertisements

Persönliche Ansichten deaktivieren

Per Default sind in SharePoint 2010 persönliche Ansichten aktiviert. Um diese zu deaktivieren kann man folgendermaßen vorgehen:

Auf der Websitesammlungsebene  unter “Websiteaktionen->Websiteberechtigungen” auf Berechtigungsstufen klicken:

Berechtigungsstufen

Dann die entsprechende Berechtigungsstufe auswählen, z.B. “Mitwirken”. Dann im Bereich unten rechts den Punkt “Persönliche Ansichten verwalten …” deaktivieren und anschließend auf “Absenden” klicken.

PersönlicheAnsichten

Custom SharePoint Workflow Action “CalculateSum”

SharePoint offers the possibilty to create different list views, calculate and display totals grouped by one or more columns. Unfortunatly building totals (column sums) and use them in other lists or in the chart webpart seems to be a very difficult task with SharePoint 2010. With this article I’ll present a custom workflow action for building column sums. The workflow action enables Sharepoint to calculate totals, store them in a different list and e.g. bind that list to the chart webpart. If you are experienced in using workflow actions you’ll notice that “CalculateSum” is almost self explanatory.

Feel free to use and adopt my source code. If you need guidence in developing custom sandboxed workflow actions visit the following webpages: http://msdn.microsoft.com/en-us/library/gg615449.aspx and http://msdn.microsoft.com/en-us/office365trainingcourse_3v_3.aspx. If you’ve read these articles it will be very easy for you to apply the following source code:

Elements.xml:

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <WorkflowActions>
    <Action Name="CalculateSum"
            SandboxedFunction="true"
            Assembly="$SharePoint.Project.AssemblyFullName$"
            ClassName="CalculateWorkflowActions.CalculateActions"
            FunctionName="CalculateSum"
            AppliesTo="all"
            UsesCurrentItem="true"
            Category="Calculate WorkFlow Actions">
      <RuleDesigner Sentence="calculate sum of column %1; filter by column %2 with value %3 and filter by column %4 with value %5; result in %6 (execptions logged to %7)">
        <FieldBind Field="totalColumn" Text="column to sum" Id="1" DesignerType="FieldNames"/>
        <FieldBind Field="filterColumn" Text="filter by this column" Id="2" DesignerType="FieldNames"/>
        <FieldBind Field="filterValue" Text="filter value" Id="3" DesignerType="TextBox"/>
        <FieldBind Field="filterColumn2" Text="filter by this column" Id="4" DesignerType="FieldNames"/>
        <FieldBind Field="filterValue2" Text="filter value" Id="5" DesignerType="TextBox"/>
        <FieldBind Field="result" Text="result" Id="6" DesignerType="ParameterNames"/>
        <FieldBind Field="exception" Text="exception" Id="7" DesignerType="ParameterNames"/>
      </RuleDesigner>
      <Parameters>
        <Parameter Name="__Context" Type="Microsoft.SharePoint.WorkflowActions.WorkflowContext, Microsoft.SharePoint.WorkflowActions"
                   Direction="In"
                   DesignerType="Hide"/>
        <Parameter Name="totalColumn"
                   Type="System.String, mscorlib"
                   Direction="In"
                   DesignerType="FieldNames"
                   InitialValue=""
                   Description="column to build total"/>
        <Parameter Name="filterColumn"
                   Type="System.String, mscorlib"
                   Direction="Optional"
                   DesignerType="FieldNames"
                   InitialValue=""
                   Description="filter by this column element"/>
        <Parameter Name="filterValue"
                   Type="System.String, mscorlib"
                   Direction="Optional"
                   DesignerType="TextBox"
                   InitialValue=""
                   Description="filter value"/>
        <Parameter Name="filterColumn2"
                   Type="System.String, mscorlib"
                   Direction="Optional"
                   DesignerType="FieldNames"
                   InitialValue=""
                   Description="filter by this column"/>
        <Parameter Name="filterValue2"
                   Type="System.String, mscorlib"
                   Direction="Optional"
                   DesignerType="TextBox"
                   InitialValue=""
                   Description="filter value"/>
        <Parameter Name="result"
                   Type="System.String, mscorlib"
                   Direction="Out"
                   InitialValue=""
                   DesignerType="ParameterNames"
                   Description="result"/>
        <Parameter Name="exception"
                   Type="System.String, mscorlib"
                   Direction="Out"
                   InitialValue=""
                   DesignerType="ParameterNames"
                   Description="Exception encountered"/>
      </Parameters>
    </Action>
  </WorkflowActions>
</Elements>

CalculateActions.cs:

using System;
using System.Collections;
using Microsoft.SharePoint;
using Microsoft.SharePoint.UserCode;

namespace CalculateWorkflowActions
{
  public class CalculateActions
  {
    public Hashtable CalculateSum(SPUserCodeWorkflowContext context, string totalColumn, string filterColumn, string filterValue, string filterColumn2, string filterValue2)
    {
      Hashtable results = new Hashtable();

      decimal sum = 0;
      bool addValue = true;

      try
      {
        using (SPSite site = new SPSite(context.CurrentWebUrl))
        {
          using (SPWeb web = site.OpenWeb())
          {
            SPListItemCollection items = web.Lists[context.ListId].GetItems();

            foreach (SPListItem item in items)
            {
              addValue = true;

              if (IsNumeric(item.GetFormattedValue(totalColumn)))
              {
                if ((string.IsNullOrEmpty(filterColumn)) ||
                   ((!string.IsNullOrEmpty(filterColumn) && (item[filterColumn].ToString() == filterValue))))
                {
                }
                else
                {
                  addValue = false;
                }

                if ((string.IsNullOrEmpty(filterColumn2)) ||
                   ((!string.IsNullOrEmpty(filterColumn2) && (item[filterColumn2].ToString() == filterValue2))))
                {
                }
                else
                {
                  addValue = false;
                }

                if (addValue)
                {
                  sum += Convert.ToDecimal(item.GetFormattedValue(totalColumn));
                }
              }
            }
          }
        }

        results["result"] = sum;
        results["exception"] = "Success";
      }
      catch (Exception e)
      {
        results["result"] = 0;
        results["exception"] = e.ToString();
      }

      return results;
    }

    private static bool IsNumeric(object Expression)
    {
      bool isNum;
      double retNum;

      isNum = Double.TryParse(Convert.ToString(Expression), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, out retNum);

      return isNum;
    }
  }
}

If you have succeeded in building and uploading the .wsp-file you can create and configure the custom workflow with SharePoint designer.

Add “CalculateSum” workflow action to your workflow:

CalculateSum1

Then enter parameters in workflow action (all filter parameters are optionally):

CalculateSum2

That’s it! In case you need the complete visual studio 2010 source code and/or the compiled solution (.wsp-file) please let me know.

 

Downloads:

WSP: https://skydrive.live.com/redir?resid=A72444E9DFA299A1!804

SourceCode: https://skydrive.live.com/redir?resid=A72444E9DFA299A1!805

 

Addendum:

In case you are unable to activate the solution check if Microsoft SharePoint Foundation Sandboxed Code Service is running!

SharePoint 2010: Ausblenden von “Gefällt mir” und “Kategorien und Notizen”

Standardmäßig sind die beiden Schaltflächen “Gefällt mir” und “Kategorien und Notizen” in einem SharePoint 2010 Portal aktiviert.

GefälltMir

Man kann diese folgendermaßen komplett ausblenden: In der SharePoint Zentraladministration den Menüpunkt “Systemeinstellungen->Farmfeatures verwalten” aufrufen. Dann das Feature “Steuerelemente des Menübands für thematische Kategorien und die Pinnwand” deaktivieren:

Deaktivieren

SharePoint bzw. Infopath Problem mit Tabbed Views

In SharePoint 2010 kann man die Eingabeformulare für benutzerdefinierte Listen mit Hilfe von Infopath gemäß den jeweiligen Wünschen und Bedürfnissen anpassen. In einem Kundenprojekt wurde gewünscht, die Eingabefelder auf zwei verschiedene „Karteikarten“ zu verteilen. Dies kann man im Infopath-Formular durch das Anlegen von 2 verschiedenen Ansichten lösen. Über Schaltflächen und entsprechend hinterlegte Regeln kann man dann zwischen den Ansichten wechseln (siehe z.B. “Adding a button to switch between views”  oder “InfoPath 2010 switch views with tabs“). Dies funktioniert einwandfrei, wenn das Formular im “Edit”-Modus geöffnet wird. Manche Benutzer haben jedoch nur Leseberechtigungen und sehen das Formular daher nur im “Read-Only”-Modus. Dann wird man feststellen, dass auch die Schaltflächen nicht mehr sichtbar sind und man lediglich die Standardansicht sehen kann. Dies ist übrigens auch dann ein Problem, wenn man in der zugehörigen Liste die Versionierung aktiviert hat und eine alte Version des Listeneintrags öffnet.

Glücklicherweise lässt sich das folgendermaßen lösen: Man verwendet einfach anstelle der Standard-Schaltflächen sogenannte Bildschaltflächen. Unter den Eigenschaften einer Bildschaltfläche gibt es die Option „Bildschaltfläche in schreibgeschützten Ansichten ausblenden“. Diese ist standardmäßig aktiviert und muss deaktiviert werden. Dann bleiben die Schaftflächen in den oben genannten Fällen sichtbar und man kann auch im “Read-Only”-Modus zwischen den jeweiligen Ansichten wechseln.

Bildschaltfläche

Auf diese Lösung bin ich in folgendem Thread gestoßen: “Infopath: tabbed views with buttons – buttons don’t show in display mode

SharePoint 2010 security issue

Last week, I briefly thought that I would have a big security issue with one of my SharePoint 2010 lists. I have a list called “Aufträge” (orders) with permissions set on list item level. In the following picture you see that (in SharePoint 2010) I was logged in with a test user called “testuser1” who had permisson to access 2 list items (ID “84” and “83”):

splist1

After using the SharePoint Excel export functionality (“Nach Excel exportieren”)

export
I saw 3 list items (ID “84”, “83” and “82”):

ExcelList

As you can imagine I was very astonished. What’s the reason for such a behaviour? For a short time I thought I found a new SharePoint bug. But than I got a fairly simple explanation. On the operating system I was logged in with different user credentials. An account with permissions for all three list items. Excel of course runs with these credentials and seems to pull data with these credentials. To proove this I switched to user “testuser1” on my operating system and eyerything is fine . So under usual circumstances (where SharePoint and operating system credentials are the same) there’s no problem. Nevertheless, behaviour is really ugly. Microsoft should be able to improve it with little effort. Simplest solution might be starting the Excel instance with SharePoint user credentials.

Ansicht kann nicht angezeigt werden (SharePoint 2010)

Sharepoint-2010

In einem SharePoint 2010-Projekt bin ich bei einem Kunden kürzlich auf den folgenden Fehler gestoßen:

“Diese Ansicht kann nicht angezeigt werden, weil die Anzahl der darin enthaltenen Nachschlage- und Worflowstatusspalten den durch den Administrator durchgesetzten Schwellenwert (8) übersteigt.”

oder auf Englisch:

“This view cannot be displayed because the number of lookup and workflow status columns it contains exceeds the threshold enforced by the administrator.”

Ja ich muss zugeben, es waren tatsächlich eine Menge Nachschlagespalten in der Liste vorhanden. Erstaunlich war allerdings, dass ich -als Besitzer dieser Liste- diese trotzdem ohne Probleme anzeigen lassen konnte. Die Fehlermeldung kam, wenn ein Benutzer mit “Mitwirken”-Rechten darauf zugreifen wollte. Das Limit beträgt standardmäßig übrigens “8”. Glücklicherweise lässt sich dieses mit Hilfe der SharePoint-Zentraladministration ohne Probleme anheben.

Dazu einfach die Zentraladministration aufrufen. Dann unter “Anwendungsverwaltung” den Punkt “Webanwendungen verwalten” aufrufen. Anschließend die passende Webanwendung auswählen. Im Ribbon unter “Allgemeine Einstellungen” den Menüpunkt “Ressourcensteuerung” aufrufen und unter “Schwellenwert für den Listenansicht-Nachschlagevorgang” den Wert nach Bedarf erhöhen.

Ressourcensteuerung

Details dazu findet man hier: http://sharepointmalarkey.wordpress.com/2012/03/05/this-view-cannot-be-displayed-because-the-number-of-lookup-and-workflow-status-columns-it-contains-exceeds-the-threshold-enforced-by-the-administrator/