2010-12-01 9 views
1

Ich bin neu in Sharepoint und ich muss eine sehr einfache Änderung in allen Webpart tun. Wir haben viele Web-Teile, die sehr einfaches HTML enthalten. Das HTML enthält nur einen Link und ein Bild.Wie listet und editiert HTML aller Web-Teile in Sharepoint 2007?

Web-Entwickler hatten vollständige Links zu Seiten und Bildern und es verursacht einige Probleme. Ich möchte alle Webparts html scannen und vollständige Links durch relative Links ersetzen.

Ist es möglich? Wir haben Tonnen von Seiten und Links. Es manuell zu tun dauert 2 Wochen !!!

Danke!

EDIT # 2: Jetzt ist die Frage: Ist es möglich, alle Aspx-Dateien auf meiner Website aufzulisten? Ich weiß, wie die Bahnteile mit einer URL-Inhalte zuzugreifen:

using (SPLimitedWebPartManager manager = web.GetLimitedWebPartManager(
       "ca/Pages/Home.aspx", PersonalizationScope.Shared)) 
     { 
      foreach (System.Web.UI.WebControls.WebParts.WebPart wp in manager.WebParts) 
      { 
       System.Console.WriteLine(wp.Title); 
       if (wp.GetType().Equals(typeof(Microsoft.SharePoint.WebPartPages.ContentEditorWebPart))) 
       { 
        Microsoft.SharePoint.WebPartPages.ContentEditorWebPart thisWebPart = wp as Microsoft.SharePoint.WebPartPages.ContentEditorWebPart; 

        System.Console.WriteLine(thisWebPart.Content.InnerText); 
        System.Console.WriteLine(thisWebPart.Content.InnerXml); 
       } 

      } 
     } 

EDIT # 1: Wie verlangt ihr ein Beispiel:

ich will „http entfernen: //www.mywebsite. com“von allen geteilt webparts mit Code wie folgt:

<A title="" href="http://www.mywebsite.com/Pages/Career.aspx" target=""><IMG style="BORDER-RIGHT: 0px solid; BORDER-TOP: 0px solid; BORDER-LEFT: 0px solid; BORDER-BOTTOM: 0px solid" src="http://www.mywebsite.com/images/Career.jpg" border=0></A> 
+0

Können Sie ein Beispiel für den Ersatz schreiben Sie tun mögen. Der Link vor und nach der Änderung. –

+0

Es gibt ein Beispiel – Rico

+0

welche Art von Webpart verwenden Sie einen benutzerdefinierten Webpart oder Content-Editor Webpart oder etwas anderes –

Antwort

0

ich bin nicht sicher, ob ich bekam, was genau benötigt wird. Was ist mit dem Schreiben eines Programms, das das tun? Erkennen Sie die Links durch Regex und ersetzen Sie sie.

+0

Es ist genau das, was ich tun möchte. Es ist sogar einfach dann Regex: Ich muss nur die http: //www.mywebsite entfernen.com Aber ich weiß nicht, ob es möglich ist, alle Webparts zu iterieren und den HTML-Code zu modifizieren. Ich kenne nur die manuelle Schaltfläche "HTML-Code bearbeiten" – Rico

0

Wenn Sie den Inhalt in Sharepoint tatsächlich ändern möchten, könnte dies im Code schwierig sein. Jeder Webpart funktioniert anders, daher gibt es keine Standardlösung für alle Webparts. Ein CQWP kann z. B. Daten aus verschiedenen Listen abrufen. Daher besteht die Möglichkeit, Änderungen an diesem Webpart vorzunehmen, darin, die Daten in den Listen zu ändern, von denen sie abgerufen werden. Andere Webparts ziehen möglicherweise Daten aus SQL Server, Reports, haben IFrames in ihnen usw. Einige Webparts haben möglicherweise sogar die URLs in einer benutzerdefinierten DLL fest codiert, die Sie nur ändern konnten, indem Sie die Lösung/das Feature änderten, zu der die DLL gehört die aktualisierte Version erneut bereitstellen. Eine alternative Lösung besteht darin, einen Antwortfilter zu schreiben, der die Ausgabe von Sharepoint übernimmt und dynamisch jedes Mal, wenn eine Seite von Sharepoint angefordert wird, eine Suche/Ersetzung durchführt. Weitere Informationen dazu finden Sie unter http://aspnetresources.com/articles/HttpFilters.

1

Im Content-Web-Part-Editor der Inhalt unter Content-Tag gespeichert wird

<Content xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor"><![CDATA[<p>test document test document</p>]]></Content> 

was ich kann hier vorschlagen, ist die Website in Sharepoint desginer zu öffnen und die Entdeckung und Ersetzen-Option für alle Seiten

0

Zwei Teile dazu, der erste besteht darin, alle Web-Part-Seiten auf Ihrer Site zu durchlaufen - eine Reihe von Beispielen da draußen, also gehen Sie nicht zu schlammigen Dingen, indem Sie das hier wiederholen.

Der zweite Teil ist die Eigenschaft Content zu aktualisieren und speichern - scheinen, wie das ist der fehlende Teil des Puzzles für updating the Content Editor Web Part (CEWP) programatically so: -

using System.Xml; 
using System.Web.UI.WebControls.WebParts; 
using Microsoft.SharePoint; 
using Microsoft.SharePoint.WebPartPages; 

private void updateContentEditor(SPWeb web, string pageUrl) 
{ 
    using (SPLimitedWebPartManager manager = 
      web.GetLimitedWebPartManager(pageUrl, PersonalizationScope.Shared)) 
    { 
     foreach (WebPart wp in manager.WebParts) 
     { 
      if (wp.GetType() == typeof(ContentEditorWebPart)) 
      { 
       ContentEditorWebPart cewp = wp as ContentEditorWebPart; 
       cewp.Content.InnerXml; 

       // See http://justgeeks.blogspot.com/2009/02/i-found-to-be-bit-tricky-to-update.html 
       XmlDocument xmlDoc = new XmlDocument(); 
       XmlElement xmlElement = xmlDoc.CreateElement("MyElement"); 

       // Do you change logic here 
       xmlElement.InnerText = 
        contentEditor.Content.InnerText.Replace(BEFORE, AFTER); 

       // Save changes 
       contentEditor.Content = xmlElement; 
       manager.SaveChanges(cewp); 
      } 
     } 
    } 
}