Как программно создать вики-страницу (= item) в Sharepoint? - PullRequest
4 голосов
/ 09 июня 2009

как мне создать страницу вики и добавить заголовок, а также некоторый контент в sharepoint (через веб-сервисы)?

Пока это мое SOAP-сообщение:

  <soapenv:Body>
  <soap:UpdateListItems>

    <soap:listName>Cooking Wiki</soap:listName>

    <soap:updates>
     <Batch OnError="Continue">
      <Method ID="1" Cmd="New">   
       <Field Name="WikiField">Mix two eggs and a cup of milk.</Field>
      </Method>
     </Batch>
    </soap:updates>

   </soap:UpdateListItems>
  </soapenv:Body>

Создает новую страницу, но не имеет содержимого и заголовка.

Ответы [ 4 ]

4 голосов
/ 10 июня 2009

Получите копию SharePoint Manager , которая может показать вам кучу интересной информации.

вы хотите поле Имя (оно включает в себя «.aspx»). Поле заголовка не релевантно в вики (пусто), вместо этого страницы индексируются по имени.

- обновление -

Использование copy.asmx позволяет загружать новый документ. Страница шаблона - это страница, которая была загружена ранее (в ней нет информации, эквивалентной странице макета).

private byte[] GetTemplatePage()
{
    FileStream fs = new FileStream("templatePage.aspx", FileMode.Open);
    byte[] fileContents = new byte[(int)fs.Length];
    fs.Read(fileContents, 0, (int)fs.Length);

    fs.Close();
    return fileContents;
}

private void UploadDoc(string pageName)
{
    byte[] wikiBytes = GetTemplatePage();

    string dest = "http://[website]/wiki/Wiki%20Pages/" + pageName + ".aspx";
    string[] destinationUrlArray = new string[] { dest };

    IntranetCopy.Copy copyService = new IntranetCopy.Copy();
    copyService.UseDefaultCredentials = true;
    copyService.Url = "http://[website]/wiki/_vti_bin/copy.asmx";

    IntranetCopy.FieldInformation fieldInfo = new IntranetCopy.FieldInformation();
    IntranetCopy.FieldInformation[] fields = { fieldInfo };

    IntranetCopy.CopyResult[] resultsArray;
    copyService.Timeout = 600000;

    uint documentId = copyService.CopyIntoItems(dest, destinationUrlArray, fields, wikiBytes, out resultsArray);

}

Затем вы можете вызвать lists.asmx для обновления викифилда. Примечание. Я не выяснил, как переименовать документ после его загрузки с помощью веб-сервисов.

2 голосов
/ 11 июня 2009
1 голос
/ 18 июня 2009

Если больше ничего не работает, вам следует разработать собственный веб-сервис для предоставления этой функции. Готовые опции общеизвестно ограничены в функциональности, но ничто не мешает вам добавить к ним.

Я бы включил решение Ната в код веб-службы.

1 голос
/ 17 июня 2009

Дэн Винтер написал фантастическое приложение, которое, я думаю, могло бы предоставить пример кода, посмотрите здесь:

WikiMigrator

Или для получения дополнительной информации читайте его полные сообщения в блоге .

...