Posts mit dem Label WebPart werden angezeigt. Alle Posts anzeigen
Posts mit dem Label WebPart werden angezeigt. Alle Posts anzeigen

Dienstag, 4. Juli 2017

Restore deleted Form-WebParts (NewForm.aspx, EditForm.aspx, DispForm.aspx)

If a clever user hits on the idea to delete the form webpart from NewForm.aspx, EditForm.aspx or DispForm.aspx, this can be restored easily with PowerShell. No need to open SharePoint Designer.

Basically a new ListFormWebPart-object must be instanciated, connected with the list and added to the webpartzone of the page. That's it.

Have a look at the following code:

$site = New-Object Microsoft.SharePoint.SPSite -ArgumentList http://sitecollection/sites/site1
$web = $site.OpenWeb()

$list = $web.Lists["My Library"] #title of the regarding list

$webpart = new-object Microsoft.SharePoint.WebPartPages.ListFormWebPart

# assign list to webpart
$webpart.ListId = $list.ID

# possible pagetypes are PAGE_DISPLAYFORM, PAGE_EDITFORM, or PAGE_NEWFORM
# see: https://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.listformwebpart.pagetype.aspx
$webpart.PageType = "PAGE_EDITFORM"

# use the absolute link to the form-aspx
$wpm = $web.GetLimitedWebPartManager("http://sitecollection/sites/site1/myLibrary/Forms/EditForm.aspx", [System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared)

$wpm.AddWebPart($webpart, "Main", 1)

# dispose spweb-object in webpartmanager to avoid memory leaks
$wpm.Web.Dispose()

$web.Dispose()
$site.Dispose() 

Freitag, 29. August 2008

Toolbar in WebPart programmatisch ausblenden

Hier wieder ein schönes Beispiel, was für Potential für Zeitverschwendung in SharePoint steckt:
Über die Oberfläche ist es relativ simpel, die Toolbar in einem Webpart zu verstecken, wie der folgende Screenshot zeigt.



Einfach auf "Freigegebenes Webpart bearbeiten" klicken und bei Symbolleistentyp "Keine Symbolleite" auswählen. Abspeichern und Fertig.

Das ganze jetzt programmatisch in die Solution mit hineinzunehmen sollte doch wohl kein Aufwand sein. Ist es auch nicht... - wenn man weiß, wo man hinfassen muss.

Und das herauszufinden kostet Zeit.
Denn das SDK und selbst die MSDN sind da leider unvollständig. Erst ein Kommentar aus der Community brachte Licht ins Dunkel: *click*

Um also in einem Webpart - in meinem konkreten Fall das ListView-Webpart auf eine Aufgabenliste mit Gantt-View - die Symbolleiste auszublenden bedarf es folgender Anpassungen:


in der schema.xml der Liste

<views>
.....
<View Type="GANTT" DisplayName="Gantt" Url=&quotGantt.aspx" Level="1" BaseViewID="13" ContentTypeID="0x" ImageUrl="/_layouts/images/generic.png" WebPartZoneID="Main">
<Toolbar Type="None"></Toolbar>
.....
</View>
.....
</views>

in der onet.xml

<modules>
<module name="DefaultConfig" url="Lists/WebsitesList" list="101">
<file url="BlankPortalPage.aspx" name="Kalender.aspx" type="GhostableInLibrary">

<view list="Lists/TaskList" name="Gantt" displayname="Gantt" type="GANTT" baseviewid="13" webpartzoneid="Top" webpartorder="2">
<!--[CDATA[ <webpart xmlns="http://schemas.microsoft.com/WebPart/v2" iwp="http://schemas.microsoft.com/WebPart/v2/ListView"> <assembly>Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</assembly> <typename>Microsoft.SharePoint.WebPartPages.ListViewWebPart</typename> <frametype>None</frametype> <title>Kalender</title> </webpart> ]]-->
</view>
</file>

</module>

</modules>


Dadurch werden sowohl im View als auch im WebPart die Symbolleisten nicht mehr angezeigt. Der Nachteil daran ist, dass über die Oberfläche die Toolbar aber nicht mehr manuell wiederangezeigt werden kann.