Как вывести список и отредактировать html всей веб-части в sharepoint 2007?

Я новичок в 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>

person Rico    schedule 01.12.2010    source источник
comment
Можете выложить пример замены, которую хотите сделать. Ссылка до и после модификации.   -  person Ahmad Farid    schedule 01.12.2010
comment
какой тип веб-части вы используете: настраиваемую веб-часть, веб-часть редактора контента или что-то еще   -  person Ashutosh Singh-MVP SharePoint    schedule 01.12.2010
comment
@Ashutosh Singh: веб-часть редактора контента   -  person Rico    schedule 01.12.2010


Ответы (4)


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

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

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

person Ashutosh Singh-MVP SharePoint    schedule 02.12.2010

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

person Ahmad Farid    schedule 01.12.2010
comment
Это именно то, чем я хочу заниматься. Это даже просто, а затем регулярное выражение: мне просто нужно удалить mywebsite.com, но я не знаю, возможно ли это чтобы перебрать все веб-части и изменить код HTML. Я просто знаю кнопку ручного редактирования html-кода - person Rico; 01.12.2010

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

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

person CodeThug    schedule 01.12.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);
            }
        }
    }
}
person Ryan    schedule 02.12.2010