Как составить список и редактировать html всей веб-части в sharepoint 2007? - PullRequest
1 голос
/ 01 декабря 2010

Я новичок в sharepoint, и мне нужно сделать очень простую модификацию во всей веб-части. У нас есть много веб-частей, содержащих очень простой HTML. HTML содержит только ссылку и изображение.

Веб-разработчики поместили полные ссылки на страницы и изображения, и это вызывает некоторые проблемы. Я хочу сканировать все веб-части HTML и заменить полные ссылки на относительные ссылки.

Возможно ли это? У нас есть тонны страниц и ссылок. Выполнение вручную займет 2 недели !!!

Спасибо!

РЕДАКТИРОВАТЬ # 2: Теперь вопрос: можно ли перечислить все файлы aspx на моем сайте? Я знаю, как получить доступ к содержимому веб-частей с помощью URL:

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);
                }

            }
        }

РЕДАКТИРОВАТЬ # 1: По запросу их пример:

Я хочу удалить "http://www.mywebsite.com" из всех общих веб-частей с кодом, подобным следующему:

<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>

Ответы [ 4 ]

1 голос
/ 02 декабря 2010

В веб-части редактора контента контент хранится в теге контента

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

. Здесь я могу предложить открыть сайт в sharepoint desginer и использовать опцию поиска и замены для всех страниц

0 голосов
/ 02 декабря 2010

Две части этого, первая - это циклическое прохождение всех страниц веб-частей на вашем сайте - довольно много примеров, поэтому не будем повторяться, повторяя это здесь.

Вторая часть - этообновите свойство Content и сохраните - похоже, это недостающая часть вашей головоломки для программного обновления веб-части редактора контента (CEWP) так: -

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);
            }
        }
    }
}
0 голосов
/ 02 декабря 2010

Если вы действительно хотите изменить содержимое в Sharepoint, это может быть сложно сделать в коде.Каждая веб-часть работает по-своему, поэтому не существует стандартного решения для всех веб-частей.Например, CQWP может извлекать данные из различных списков, поэтому способ внесения изменений для этой веб-части заключается в изменении данных в списках, из которых он извлекает.Другие веб-части могут извлекать данные из SQL Server, отчетов, иметь IFrames в них и т. Д. Некоторые веб-части могут даже иметь URL-адреса, жестко закодированные в пользовательской библиотеке DLL, которую можно изменить, только изменив решение / функцию, частью которой является библиотека DLL, иповторное развертывание обновленной версии.

Однако альтернативным решением является создание фильтра ответов, который будет принимать выходные данные Sharepoint и динамически выполнять поиск / замену каждый раз, когда страница запрашивается из Sharepoint.См. http://aspnetresources.com/articles/HttpFilters для получения дополнительной информации о том, как это сделать.

0 голосов
/ 01 декабря 2010

Я не уверен, получил ли я именно то, что требуется.Как насчет написания программы, которая делает это?Определите ссылки с помощью регулярных выражений и замените их.

...