вторник, 25 ноября 2008 г.

Маленький трюк по перезагрузке окна.

Собственно возникла задача после закрытия выпадающего окна (pop-up) перезагрузить основную страницу.

Собственно код получился в одну строчку.

window.open('opener.htm','Import','width=350,height=150,toolbar=no,menubar=no,scrollbars=no,resizable=no').attachEvent('onunload', function(){location.reload();});

тут мы соединяем последовательно метод window.open и установку обработчика на событие 'onunload'


четверг, 20 ноября 2008 г.

DataViewWebPart insert trouble

Проблема возникла из ниоткуда, при стандартном развертывании узла из нашего шаблона на котором содержались веб части

DataViewWebPart и ListFormWebPart происходила ошибка при обращении к данной странице, самое смешное что на другой странице при использовании данного метода все работало. Так что пришлось применить жесткий Хак, создать обработчик на создание страниц 

OnActivated(

SPFeatureReceiverProperties properties) и в коде данного метода использовать методику Cut & Paste для изменения кода страницы. Проблема была в DataViewWebPart в чем там дело мы так и не разобрались так что пришлось сделать так, а не через обьектную модель WSS.

В ходе работы нашел несколько интересных и мало описанных решений для создания веб частей программным методом. Их я приведу ниже.

// Return a SharePoint list filtered by query as a data source

static SPDataSource GetDataSource(string dataSourceId, string webUrl, SPList list, string query, uint maximumRow)

{

SPDataSource dataSource = new SPDataSource();

dataSource.UseInternalName =

true;

dataSource.ID = dataSourceId;

dataSource.DataSourceMode =

SPDataSourceMode.List;

dataSource.List = list;

dataSource.SelectCommand =

"<View>" + query + "</View>";

Parameter listIdParam = new Parameter("ListID");

listIdParam.DefaultValue = list.ID.ToString(

"B").ToUpper();

Parameter maximumRowsParam = new Parameter("MaximumRows");

maximumRowsParam.DefaultValue = maximumRow.ToString();

QueryStringParameter rootFolderParam = new QueryStringParameter("RootFolder", "RootFolder");

dataSource.SelectParameters.Add(listIdParam);

dataSource.SelectParameters.Add(maximumRowsParam);

dataSource.SelectParameters.Add(rootFolderParam);

dataSource.UpdateParameters.Add(listIdParam);

dataSource.DeleteParameters.Add(listIdParam);

dataSource.InsertParameters.Add(listIdParam);

return dataSource;

}

// Create or Update a DataView programmatically

public static bool CreateOrUpdateDataViewWebpart(string webUrl, string listName, string pageUrl,

string xslLink,

string zoneName,

string webPartName,

string titleUrl,

bool needsUpdate,

string query,

uint index,

uint maximumRow,

PersonalizationScope personalizationScope

)

{

bool viewCreatedOrUpdated = false;

System.Web.UI.WebControls.WebParts.

WebPart wp = null;

wsswp.

DataFormWebPart dataFormWebPart = null;

using (SPSite site = new SPSite(webUrl))

using (SPWeb web = site.OpenWeb())

{

web.AllowUnsafeUpdates =

true;

SPList list = web.Lists[listName];

wsswp.

SPLimitedWebPartManager wpManager = web.GetLimitedWebPartManager(pageUrl, personalizationScope);

foreach (Microsoft.SharePoint.WebPartPages.WebPart wpTemp in wpManager.WebParts)

{

if (String.Compare(webPartName, wpTemp.Title, true) == 0)

{

wp = wpTemp;

break;

}

}

string dataSourceId = webPartName;

if (wp == null)

{

// Create a webpart

dataFormWebPart =

new wsswp.DataFormWebPart();

dataFormWebPart.TitleUrl = titleUrl;

dataFormWebPart.ZoneID = zoneName;

dataFormWebPart.Title = webPartName;

dataFormWebPart.XslLink = xslLink;

SPDataSource dataSource = GetDataSource(dataSourceId, webUrl, list, query, maximumRow);

dataFormWebPart.DataSources.Add(dataSource);

wpManager.AddWebPart(dataFormWebPart, webPartName, (

int)index);

viewCreatedOrUpdated =

true;

}

else

{

// Update an existing webpart

if (needsUpdate)

{

dataFormWebPart = (wsswp.

DataFormWebPart)wp;

dataFormWebPart.TitleUrl = titleUrl;

dataFormWebPart.DataSourceID =

string.Empty;

SPDataSource dataSource = GetDataSource(dataSourceId, webUrl, list, query, maximumRow);

dataFormWebPart.DataSources.Clear();

dataFormWebPart.DataSources.Add(dataSource);

wpManager.SaveChanges(dataFormWebPart);

viewCreatedOrUpdated =

true;

}

}

return viewCreatedOrUpdated;

 

}

}

вторник, 18 ноября 2008 г.

MOSS 2007 search trouble

Сегодня решилась одна из проблем с поиском в нашем домене описываю ситуацию. Поиск не работал все приведенные решения в интернете не помогали, хотя мы и являемся партнерами Microsoft и имеем доступ к внутренней базе ошибок.

Сегодня отменили параметр в политике для учетки от которой работал обходчик содержимого поискового модуля. Параметр (Автоопределение прокси сервера) и все заработало.

Мораль создавая служебные записи для служб используйте отдельный OU в AD и применяйте системные политики с осторожностью.

четверг, 13 ноября 2008 г.

HelpDesck WSS Template

Скачать можно тут

WSS HelpDesk Template

Введение

Приложение WSS HelpDesk Template (в дальнейшем приложение) предназначено для использования в среде Microsoft Windows Sharepoint Services 3.0 цель данного приложения обеспечить качественную техническую поддержку заявок пользователей и использование стандартных средств в окружении Microsoft Windows.

Возможности приложения

  • Создание запросов пользователей
  • Назначение категории важности
  • Назначение статуса задачи
  • Назначение важности
  • Назначения исполнителя
  • Создание скриншотов экрана из броузера
  • Редактирование назначаемых параметров
  • Форум поддержки пользователей

Системные Требования

Минимальные системные требования для установки на сервере:

  • Установленный Windows Sharepoint Services 3.0  или Microsoft Office SharePoint Server 2007

Минимальные системные требования для клиентов:

  • Windows XP и выше (возможны и другие системы, но необходима установленная библиотека GDI+)
  • Internet Explorer 6.0
  • Включенные компоненты ActiveX


Установка приложения

Установка приложения происходит с помощью, идущего в пакете с программой инсталлятора

Install.cmd

Перед его запуском необходимо установить WSS или MOSS и после этого перейти в административный узел.

clip_image002

Настройте приложение указав необходимые параметры для учетной записи

clip_image004

 

Перейдите по ссылке для выбора шаблона приложенияclip_image006

Выберите необходимый шаблон

clip_image007

И переходите по адресу  данного сайта.


После этого настройте списки:

  •  Категории
  • Компания

  • Важность

  • Статус

В соответствии с вашим окружением.

Для пользователя

После создания запроса выберите изменить элемент и щелкните по надписи Загрузить снимок экрана

clip_image009

 

Настройка

При использовании программы возможен выбор 2 схем аутентификации

  • FBAForm Based Authentification, применяется когда большинство клиентов являются внешними по отношению к вашей организации
  • Integrated Windows Authentification – Применяется когда вы внедряете приложение в корпоративной сети (AD environment)

Процедура настройки FBA описана на блоге в статье http://mossdevel.blogspot.com/2008/11/wss.html

Integrated Windows Authentification настраивается по умолчанию при создании узла WSS.

Благодарности

Спасибо всем окружающим за терпение и помощь особенно участникам форума sysadmins.ru и моей любимой девушке. Лисенок я тебя очень сильно люблю.