среда, 20 января 2010 г.

BDC 2 way connection

http://sharepointmagazine.net/technical/administration/everything-you-need-to-know-about-bdc-part-7-of-8
Как всегда слишком поздно в 2010 все уже есть однако эта статья описывает как реализовать 2 х стороннюю синхронизацию данных

вторник, 12 января 2010 г.

Field and View permission in sharepoint

Роясь в интернете сегодня нашел проект позволяющий назначать права на поля и вьюшки. Проект пока в стадии Беты однако довольно хорошо работает, так что прошу любить и жаловать. Думаю в дальнейшем присоединюсь к нему для русификации и дальнейших доработок. http://sppex.codeplex.com Описание возможностей:
  • Редактирование разрешений на поле при редактировании.
  • Редактирование разрешений на поле при просмотре.
  • Редактирование разрешений на редактирование представлений.
  • list contenttype permission(New Menu of Toolbar).

четверг, 31 декабря 2009 г.

Hide SharePoint UI element’s

При работе довольно часто возникает необходимость скрыть элементы пользовательского интерфейса, например элемент выбора представления у списка. Как всегда конечного результата можно добиться несколькими путями:

  • Правкой кода страницы (SharePoint Designer)
  • Правкой определения узла и соответственно страниц
  • Переопределением css class’a (display: none;)
  • Установкой атрибута display с помощью JavaScript

Рассмотрим последние 2 варианта как самые универсальные и не затратные.

Тут все просто на странице переопределяете нужный класс CSS и все работает.

JavaScript позволяет достичь еще более точного применения, например скрыть отдельный элемент.

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

четверг, 24 декабря 2009 г.

Выпадающее меню в WSS

Всем хорош WSS однако бывает мало функционала, один из вопросов как включить выпадающее меню как на портале? Собственно просто, подробности тут. http://sharingpoint.blogspot.com/2007/02/wss-v3-drop-down-menus-in-team-sites.html

понедельник, 30 ноября 2009 г.

SharepointImport tool

 

Описание

Данная программа предназначена для переноса данных из файлов XML, которые попадают в папку в файловой системе, в список SharePoint. Обеспечивается наблюдение за появлением файлов в указанной папке и перенос данных в 2 режимах:

  • Добавление нового элемента
  • Обновление существующего элемента

Домашняя страница

http://sharepointimport.codeplex.com/

Состав пакета

  • app.config – исходный файл конфигурации приложения
  • bin – папка с исполнимыми файлами
  • ClassDiagram.cd – диаграмма классов решения
  • example.stp – шаблон списка SharePoint
  • example.xml – Пример файла с данными для импорта
  • MoveData.cs - исходный файл с основным кодом приложения
  • MoveToSPList.csproj – проект приложения MSVC 2008
  • Program.cs - исходный файл
  • Properties – служебная папка проекта
  • Руководство пользователя.docx – этот файл

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

.NET Framework 3

WSS 3.0 или MOSS 2007

Установка

Просто запустите приложение, находящееся в папке bin\Debug, предварительно вам необходимо настроить файл MoveToSPList.exe.config в соответствии с рекомендациями в секции настройка.

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

Настройка

Настройка приложения производиться с помощью файла конфигурации приложения MoveToSPList.exe.config.

Ниже будет приведен полный текст этого файла, в нем так же присутствуют комментарии описывающие каждый настраиваемый параметр.

Внимание при указании полей списка SharePoint, указывайте внутреннее имя поля (InternalName), на снимке экрана ниже показано как его узнать.

clip_image002

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<configSections>

<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >

<section name="MoveToSPList.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

</sectionGroup>

</configSections>

<applicationSettings>

<MoveToSPList.Properties.Settings>

<!-- Папка за которой следим -->

<setting name="WatchedFolder" serializeAs="String">

<value>c:\temp</value>

</setting>

<!--Сопоставления полей, сначала идет внутреннее имя Sharepoint, после идет название поля в XML файле -->

<setting name="MappingDictionary" serializeAs="Xml">

<value>

<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<string>Title=Name</string>

<string>ID0=ID</string>

</ArrayOfString>

</value>

</setting>

<!-- Адрес узла на котором расположен список -->

<setting name="SharepointUrl" serializeAs="String">

<value>http://localhost</value>

</setting>

<!-- Имя списка в который вставляются данные -->

<setting name="SharepointListName" serializeAs="String">

<value>Example</value>

</setting>

<!-- Ключевое поле в списке шарепоинт, используется внутреннее имя -->

<setting name="SharepointKeyField" serializeAs="String">

<value>ID0</value>

</setting>

<!-- Имя ключевого аттрибута в импортируемом файле -->

<setting name="XmlKeyField" serializeAs="String">

<value>ID</value>

</setting>

</MoveToSPList.Properties.Settings>

</applicationSettings>

</configuration>

Fast clean SPItems

Задача: быстро очистить список от большого количества элементов.

Решение: Будем использовать пакетное удаление элементов из списка.

private static void ClearList(SPList list)

{

string xmlCaml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Batch>";

string itemNode = @"<Method><SetList Scope=""Request"">" + list.ID +

"</SetList><SetVar Name=\"ID\">{0}</SetVar><SetVar Name=\"Cmd\">Delete</SetVar></Method>";

foreach (SPListItem item in list.Items)

xmlCaml +=

string.Format(itemNode, item.ID.ToString());

xmlCaml +=

"</Batch>";

list.ParentWeb.ProcessBatchData(xmlCaml);

}

Разница между этим методом и последовательным удалением элементов огромная и скорость при увеличении количества элементов падает по линейному закону. Так что крайне рекомендую для очистки списка использовать именно этот код.

суббота, 10 октября 2009 г.

Application Templates for Windows SharePoint Services 3.0 and language mistake

Для шарепоинта существуют целые наборы типовых решений предоставляемых самой компанией Microsoft

http://technet.microsoft.com/ru-ru/windowsserver/sharepoint/bb407286.aspx

Только нужно обратить особенное внимание на язык решения :)

Очень уважаемый мною человек бился в течении 2 дней над этой проблемой, просто скачал не то.

Так вот обращайте внимание на детали. Первая ссылка на этой странице указывает на 40 шаблонов на АНГЛИЙСКОМ языке.

А вот ссылка на 20 шаблонов содержит именно локализованные версии.

Разобрались с этим только после всего цикла троблешутинга, были перевернуты и логи системы и шарепоинта и разные версии WSS. Веселья было много. В конце концов я просто посмотрел солюшены и НЕ обнаружил там ветки 1049, которая собственно и указывает на наличие русского языка.

Так что внимательно читайте странички.

пятница, 25 сентября 2009 г.

Stsadm backup with current date

Основной синтаксис команды такой

stsadm -o backup

   -url <URL name>

   -filename <file name>

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

stsadm –o backup –url http://localhost –filename stbackup_%DATE%.bak

получиться имя файла stbackup_25.09.2009.bak.

Кроме этого можно использовать переменную %TIME% содержащую текущее время

суббота, 5 сентября 2009 г.

Windows 7 & Vista prolongation key period

Microsoft встроила в Windows Vista (также и в Win 7 ) функцию, которая позволяет пользователю продлевать срок начального льготного доактивационного периода не три раза, а намного больше. Та же самая команда, которая продлевает срок активации Vista до 120 дней может быть использована неограниченное количество раз после замены ключа реестра.Эта процедура не хакерская уловка и не требует никаких инструментов или утилит вообще и, более того, документирована Microsoft, на ее сайте Technet.МетодикаШаг 1. В запущенной Windows Vista, которая не была еще активирована, щелкните кнопку Start, напечатайте regedit в строке Поиска, затем нажмите ENTER, чтобы запустить Редактор реестра.Шаг 2. Перейдите к ключу реестра:HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ SLШаг 3. Шелкните правой кнопкой мыши на SkipRearm и выберите Edit. Установленное значение по умолчанию - Dword с значением 00000000. Измените это значение на любое положительное целое число, например, 00000001, сохраните и закройте редактор реестра.Шаг 4. Запустите командную строку с правами администратора.Шаг 5. Напечатайте одну из следующих двух команд и нажмите ENTER:slmgr -rearmилиrundll32 slc.dll,SLReArmWindowsЭти команды используют встроенный в Windows Vista Менеджер лицензий (SLMGR), который по умолчанию дает 30 дней доактивационного периода. Изменение ключа SkipRearm с 0 на 1 (с 00000000 на 00000001) позволяет менеджеру лицензий SLMGR проделывать процедуру сброса счетчика неограниченное количество раз! Изменение значения ключа SkipRearm с 1 на 0 возвращает SLMGR к исходному состоянию.Шаг 6. Перезагрузите компьютер, чтобы изменения вступили в силу.Всё это применимо и в Windows 7.В Win 7 этот ключ находится здесь: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \SoftwareProtectionPlatform

пятница, 14 августа 2009 г.

Deploying Reports in Integrated Mode

Задача: опубликовать отчет созданный Reporting Server в Sharepoint document library Решение: Использовать FeatureReciver и в момент активации изменить файлы Исходник тут http://blogs.devhorizon.com/reza/?p=745

пятница, 7 августа 2009 г.

Open edit link in new window

Задача: Обеспечить открытие ссылки редактирования /просмотра элемента в новом окне

Решение: с помошью SharepointDesigner добавить следующий код в страницу представления списка.

<script type="text/javascript">
        var hrefs = document.body.getElementsByTagName("A");

        for (bb = 0; bb < hrefs.length; bb++) {
            if (hrefs[bb].href.indexOf("ItemsInOrder") != -1) {
                hrefs[bb].onclick = "";
                hrefs[bb].onblur = "";
                var str = hrefs[bb].href;
                hrefs[bb].href = "javascript:open('" + str + "'); void(0);";
                hrefs[bb].target = "";
            }
        }
    </script>