среда, декабря 28, 2005

Из Writely

Из C# Express через Word: с заменой абзаца на разрыв строки

/// <summary>
///
Description for XmlView.
/// </summary>
[DefaultProperty("Text"),
ToolboxData("<{0}:XmlView runat=server></{0}:XmlView>"),
XmlRoot(Namespace="XMLviewer")]
public class XmlView : Microsoft.SharePoint.WebPartPages.WebPart {
private const string defaultText = "XmlView";
private string text = defaultText;
private string xml = "";
private string xmllink = "";
private string xsl = "";
private string xsllink = "";
private Evidence evidence=null;
}


XmlWebPart & XmlView continued

Заказчику потребовалось использовать в xslt-преобразователе конструкцию <xsl:apply-templates select="document(file)..."/>
В стандартном XmlWebPart - работает. В моём XmlView - ни в какую.
При раскопках выяснилось, что загружать xsl нужно не конструкцией, которая сама напрашивается

XmlDocument xsl = new XmlDocument();
xsl.
LoadXml(xslScript); //в строке - текст xsl
XslTransform xslt =new XslTransform();
xslt.Load (new XmlNodeReader(xsl));
а немного поширше:

XmlDocument xsl = new XmlDocument();
xsl.
LoadXml(xslScript); //в строке - текст xsl
XslTransform xslt= new XslTransform();
XmlUrlResolver resolver=new XmlUrlResolver();
xslt. Load(new XmlNodeReader(xsl), resolver, XmlSecureResolver .CreateEvidenceForUrl(XslLink));
В .NET 2.0 опять по-другому:

XmlDocument xsl = new XmlDocument();
xsl.Load(
http://...test.xsl
);
XmlUrlResolver resolver=new XmlUrlResolver
();
resolver.Credentials =
CredentialCache
.DefaultNetworkCredentials;
XslCompiledTransform xslt= new XslCompiledTransform();
XsltSettings settings = new XsltSettings
();
settings.EnableDocumentFunction =
true
;
settings.EnableScript =
true
;
xslt.Load(
new XmlNodeReader
(xsl),settings,resolver);

вторник, декабря 13, 2005

Очередной прикол от Sharepoint

Фрагменты
SPList list = web.Lists[ListName];
SPListItem WholeItem = list.Items[0];
WholeItem["Viewers"] = text;
WholeItem.Update();

и

SPList list = web.Lists[ListName];
list.Items[0]["Viewers"] = text;
list.Items[0].Update();


имеют совершенно разный эффект - второй ничего никуда не пишет!

вторник, ноября 29, 2005

WSS & SPS Administrator

Утилита для курочить Шарепойнт - копирование, редактирование, добавление всяких разных элементов.

Более подробно - здесь

пятница, ноября 18, 2005

Microsoft.SharePoint.WebPartPages.XmlWebPart

Ну и штуковина! Долго пытался выяснить, что же и как она делает - полный облом. Похоже, и никто не ухитрился её в деле использовать :-(.

А всего-то и надо было - прочитать из файла xml, преобразовать его через xsl и выдать юзеру. В итоге пришлось изобретать свой аналог, который даже и работает.


четверг, ноября 17, 2005

Sharepoint Portal & .NET 2.0 continued

История не заканчивается.

Установил релиз FW .NET 2.0 (описанное ранее было с beta2) - приключения с атрибутом enableEventValidation закончились.
Обнаружилась бяка хуже - перестала работать как следует функция создания узла в портале. Сам узел создаётся, но до формирования по шаблону дело не доходит - заедает на второй странице " Добавление ссылки на узел".
В итоге в области "Узлы" ссылки на новый узел нет, при первом обращении к узлу по адресу сначала выползает форма выбора шаблонов узла.
Попробовал варианты переключения версии .net на установленном узле портала и установки на сервер с включённым вторым дотнетом - один фиг. Мелочь, но противно.

Правда, у некоторых гладко проходит - Matthew Cosier's Blog: WSS and SPS on .NET 2.0

Но у некоторых - тоже не проходит: Steven Van de Craen's Blog

суббота, ноября 05, 2005

Sharepoint notes 4.

Очередной капкан.
 
При добавлении SPFieldLookup-полей к списку list в примерах рекомендуют нечто вроде:
 
list.Fields.AddLookup(fieldName, lookupListID, fieldRequired);
SPFieldLookup newfield = list.Fields[fieldName] as SPFieldLookup
;
newfield.LookupField = lookupFieldName;
 
Всё это проходит на примерах, где поле называется Title.
 
На самом деле, приходится использовать такой код:

AddLookup(list, fieldName, lookupListID, fieldRequired, lookupFieldName);
SPFieldLookup newfield = list.Fields[fieldName] as SPFieldLookup;
 
...
 
string AddLookup(SPList list, string FieldName, Guid LookupListID, bool FieldRequired, string LookupFieldName) {
XmlDocument fxml = new XmlDocument
();
XmlElement xf = fxml.CreateElement("Field"
);
xf.SetAttribute(
"DisplayName"
, FieldName);
xf.SetAttribute(
"Type", "Lookup"
);
xf.SetAttribute(
"Required"
, FieldRequired.ToString ());
xf.SetAttribute(
"List", LookupListID.ToString("B"
));
xf.SetAttribute(
"ColName", "int1"
);
xf.SetAttribute(
"ShowField"
, LookupFieldName);

return  list.Fields.AddFieldAsXml(xf.OuterXml);

}

Sharepoint notes 3.

Опять обманули...

The Delete method of the SPFieldCollection class deletes the field with the specified display name from the collection.

public void Delete(
   string strName
);

Parameters
strName   A string that specifies the display name of the field
 
На самом деле
strName   must be InnerName.

Sharepoint notes 3.

Опять обманули...

The Delete method of the SPFieldCollection class deletes the field with the specified display name from the collection.

public void Delete(
string strName
);

Parameters
strName A string that specifies the display name of the field
На самом деле
strName must be InnerName.

пятница, ноября 04, 2005

Sharepoint notes 2.

Опять обманули...

The Add method of the SPFieldCollection class creates a field in the collection.

public string Add(
   string strDisplayName,
   Microsoft.SharePoint.SPFieldType type,
   bool bRequired
);

Return Value
A string that contains the display name of the new field.
 
На самом деле
возвращает InnerName для нового поля.

вторник, ноября 01, 2005

Sharepoint notes 1.

При добавлении пользователя в роль пытался сделать так:

role.AddUser(user);

В SDK никаких оговорок по поводу этой конструкции не видно. Исполняется молча, но ничего не добавляет :-( Работает только такая конструкция:

role.AddUser( user.LoginName, user.Email, user.Name, user.Notes + "(added by Wss Admin)");

Мелочь, но время потрачено приличное.

.NET 2.0 release

Начал какие-то исследования по использованию релиза.

Установил на втором компьютере релиз и SDK.
Попробовал собрать на нём при помощи MsBuild проект от 2005-й Студии beta 2. Собирается, и даже работает.

Скомпилил своего Wss Admin'а На 2005-й Студии. Работает как под второй бетой, так и под релизом на "сервере".
Осталось уговорить заказчика перейти на вторую версию (пусть и без Sharepoint'а пока).

понедельник, октября 31, 2005

Пристали с хернёй!!!

Спам-блог, говорят!

Уйти, что ли, отсюда на хрен, да ещё и рекламу организовать...

Завтра не прекратится этот идиотизм - так и сделаю.

Херня продолжается...

Одумались, едрёныть - "Your blog has been reviewed, verified, and whitelisted so that it will nolonger appear as potential spam."

Тем временем надыбал ещё одну системку - Multiply site - вполне пристойное место для жизни. И даже отсюда импорт постов есть ;-)

воскресенье, октября 30, 2005

Sharepoint Portal & .NET 2.0 continued

После установки релиза FW вылезла ошибка при обращении к классу Microsoft.SharePoint.Security.SharePointPermission в сборке Microsoft.SharePoint.Security, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c.
Это приключилось в вебчасти на фрагменте

web.AllowUnsafeUpdates = true;

Добавление в web.config элемента <safecontrol assembly="Microsoft.SharePoint.Security, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" namespace="Microsoft.SharePoint.Security" typename="Microsoft.SharePoint.Security.SharePointPermission" safe="True" /> эффекта не возымело :-(

Пришлось поставить trust level="Full"

VistaDB 2.1 database for .NET has been released

This 2.1 update includes over 60 improvements, including new support for .NET 2.0 and Visual Studio .NET 2005. VistaDB is a small-footprint, embedded SQL database alternative to Jet/Access, MSDE and SQL Server Express 2005 that enables developers to build .NET 1.1 and .NET 2.0 applications. Features SQL-92 support, small 500KB embedded footprint, free 2-User VistaDB Server for remote TCP/IP data access, royalty free distribution for both embedded and server, Copy 'n Go! deployment, managed ADO.NET Provider, data management and data migration tools. Free trial is available for download.

Repost this to your blog and receive a FREE copy of VistaDB 2.1!

суббота, октября 29, 2005

Мои изделия для Шарепойта (My Sharepoint's tools)

На сегодня имеем несколько результатов:
  • Картотека ВШЭ с лихими свойствами. Установлено и работает (с разными приключениями) больше 1000 экземпляров.
  • Список страниц, где можно что-то редактировать. Подвесил разок систему заказчика, пока обшаривал рекурсивно все сайты.
  • Расширенный редактор на базе FCKEditor - аналог системной веб-части. Работает у заказчика, даже какой-то студент что-то совершенствует.
  • Утилита администратора - показывает структуры WSS и Портала (на манер SharepointExplorer) и делает кое-какие действия - копирование, удаление, показ свойств (будет).

Вроде, ничего так, полгода назад ничего про этот "Шарик" не знал.

Sharepoint Portal & .NET 2.0

Ну, блин, забава...
Результат перевода виртуальных серверов фиг знает от чего зависит - от погоды, что ли, или от магнитных бурь каких...

Порядок действий.
  1. Установить второй сервиспак для Sharepoint Services
  2. Установить второй сервиспак для Sharepoint Portal
  3. Перевести веб-сайт (через консоль управления) на работу под версией .NET 2.0
    1. В свойствах сайта на табе ASP.NET включить вторую версию FW.
    2. Организовать специальный AppPool для сайтов под второй версией FW, загнать туда этот сайт.
    3. Identity для этого пула д.б. account, назначенный главным для доступа к содержимому сайтов
    4. Проследить, чтоб в этот пул попали и подсайты _layouts, _vti_bin, _wpresources. Если не попали, загнать их туда вручную через свойства подсайта.
  4. Для модификации web.config выполнить команду stsadm.exe -o upgrade -forceupgrade -url http://YourCoolSite (см. KB894903 ).
    1. Проследить, чтоб прошла модификация, как сказано в KB.
    2. Если модификация не выполнилась, то сделать её вручную, при этом проследить, чтобы в теге pages не было атрибута enableEventValidation (этот же атрибут добавляется при сносе/восстановлении портала через Центр администрирования - похоже на глюк!? ).
  5. Выполнить iisreset.
  6. Лучше бы перезапустить IE.
После этого сайт вполне себе заработал.
Дальше буду пробовать что-то на втором FW сочинить.

понедельник, октября 03, 2005

Google Web Accelerator

Ну и какашка! Сгружает файлы как бы "заранее", а при начале загрузки пользователем качает их снова.
В общем, в 100 Мб трафика мне эта "радость" обошлась. Бля!