MOSS 2007 - Site Templates kopieren 
Montag, Dezember 11, 2006, 01:11 PM
Speichert man eine Site als Template, landet dieses in der Site Template Gallery auf der Top level Site. Dieses Template können innerhalb dieser SiteColelction als Vorlage bei der Neuerstellung von Sites verwendet werden.
Ein Problem ergibt sich, wenn man eine neue SiteCollection programmatisch erstellt, denn dafür kann kein .stp-Template verwendet werden, so dass die Templates nach der Anlage auch nicht in der Site Template Gallery verfügbar sind.
Nach der programmatischen Anlage der SiteCollection können jedoch .stp-Dateien aus einer anderen SiteCollection ebenfalls automatisch hinüber kopiert werden. Das ist zwar recht einfach, jedoch dauert es eine Weile, bis man den richtigen Code gefunden hat.
Das Hinzufügen einer neuen Datei kann nämlich nicht über das SPListItem Objekt erfolgen, sondern nur über SPFileCollection:

Folgender Code kopiert alle SiteTemplates aus einer SiteCollection in eine andere:

// __ Target: __
SPSite targetSite = new SPSite("http://dev.company.de:8080/sites/SiteCollectionName/");
SPWeb targetWeb = targetSite.OpenWeb();
SPFolder targetFolder = targetWeb.Folders["_catalogs"].SubFolders["wt"];
SPFileCollection targetFileCollection = targetFolder.Files;

// __ Source: __
SPSite sourceSite = new SPSite("http://dev.company.de:8090/sites/OtherSiteCollection/");
SPWeb sourceWeb = sourceSite.OpenWeb();
SPFolder sourceFolder = sourceWeb.Folders["_catalogs"].SubFolders["wt"];
SPFileCollection sourceFiles = sourceFolder.Files;

foreach (SPFile sourceFile in sourceFiles) {
txt_Debug.Text += "Copying: " + sourceFile.Name + "\r\n";
byte[] sourceFileBin = sourceFile.OpenBinary();
targetFileCollection.Add(sourceFile.Name, sourceFileBin);
}

sourceWeb.Dispose();
sourceSite.Dispose();

targetWeb.Dispose();
targetSite.Dispose();



Der Trick ist den richtigen Folder über
targetWeb.Folders["_catalogs"].SubFolders["wt"]
zu finden. Dies entspricht übrigens der virtuellen Pfadangabe in der Addresszeile des Browsers.

  |  Permalink   |  Related Link

Windows SharePoint Services 3.0 – Visual Studio Templates 
Freitag, November 10, 2006, 10:05 AM
Endlich gibt es neue Visual Studio 2005 Templates zur WebPart-Erstellung!

Mit den neuen Templates können auch vorkonfigurierte SharePoint Services 3.0 Seiten erstellt werden, aber für die Arbeit mit Office Sharepoint Server 2007 ist das automatische Deployment von WebParts der wichtigste Aspekt.




In den Configuration Properties des WebParts kann man die Ziel-SiteCollection des SharePoint Servers angeben:




so dass bei Drücken der Taste F5, automatisch das WebPart:

- kompiliert wird
- in den Global Assembly Cache aufgenonnen wird
-und In die WebPart Gallery der angegeben SiteCollection aufgenommen wird


Durch verwendung des GAC wird leider jedes Mal ein iisreset durchgeführt, und jedes zukünftige Deployment dauert etwas länger als die manuelle Variante, bei der man das WebPart im Bin-Verzeichnis installiert.

Nachtrag:
Die Installation im GAC hat sich als unpraktisch erwiesen. Wir deployen unsere WebParts nur noch in den BIN-Ordner WebApplication.


Download unter:
http://www.microsoft.com/downloads/deta ... laylang=en

Quelle:
http://blogs.gotdotnet.com/alexma/archi ... r-wss.aspx


  |  Permalink   |  Related Link

SharePoint Server 2007 – Stylesheets einer Form Library 
Donnerstag, November 9, 2006, 09:55 AM
Will man manuell in WebParts Tabellen im SharePoint Server anzeigen, ist es ratsam, die gleichen Stylesheets zu verwenden, wie in den Standard-Tabellen. So passen sich auch die eigenen Tabellen an, wenn das Theme oder die Styles geändert werden.


Grundstruktur der Listing-Tabellen einer Form Library:

<table class="ms-listviewtable">
<tbody>
<tr class="ms-viewheadertr">
<th class="ms-vh2"></th>
</tr>
<tr>
<td class="ms-vb-icon">ICON</td>
<td class="ms-vb2">Text</td>
</tr>
</tbody>
</table>

  |  Permalink   |  Related Link

SharePoint Server 2007 – WebPart Property 
Mittwoch, November 8, 2006, 11:40 AM
Ein editierbares Property für ein WebPart anzulegen funktioniert auch mit den neuen, von WebPart abgeleiteteten Klassen genauso wie bei der 2003er Version.

Beispiel für ein einfaches Textfeld:

protected string _Text;

[Personalizable(), WebBrowsable(true), WebDisplayName("Variable Text"), WebDescription("Enter an individual text to display in the WebPart.")]
public string Text {
get { return _Text; }
set { _Text = value; }
}


  |  Permalink   |  Related Link

MOSS Object Model – Auf beliebigen Listeninhalt zufreifen 
Dienstag, November 7, 2006, 03:10 PM
Um auf die Inhalte einer beliebigen Liste zuzugreifen, die sich nicht auf der aktuellen SharePoint Site befindet und nicht als WebPart eingebunden werden kann, schreibt man sich am besten ein eigenes Webpart um beliebige Inhalte anzuzeigen. Die Grundstruktur kann dabei wie folgt aussehen:

Alle Zeilen aller Felder der aktuellen View aus einer definierten Liste anzeigen:

// Als WebPart am besten den Current Context beziehen, als externe Appl. aber von außen zugreifen:
// SPSite currentSite = SPContext.Current.Site;
SPSite site = new SPSite("http://devserver:8092");
SPWeb web = site.OpenWeb();
SPList list = web.Lists.GetList(new Guid("fa35db75-1ebd-40ea-9962-d242f88cfb10"), false);
SPView view = list.DefaultView;
// Spaltennamen der DefaultView ausgeben:
foreach (string viewField in view.ViewFields) {
txt_Debug.Text += viewField + ", ";
}
txt_Debug.Text += "\r\n";

// Spalteninhalte jeder Listenzeile ausgeben:
foreach (SPListItem item in list.Items) {
txt_Debug.Text += item.Url + ": ";
foreach (string viewField in view.ViewFields) {
txt_Debug.Text += item[viewField] + ", ";
}
txt_Debug.Text += "\r\n";
}

  |  Permalink   |  Related Link


Zurück Weiter