среда, 28 декабря 2011 г.

Creating custom PortalSiteMapProvider for SharePoint Portal 2010

This provider ables to remove navigation from Cities list and add items from Members list.
CustomNavigationDataProvide.cs

namespace SiteGroup.WebControls
{
    public class CustomNavigationDataProvider : PortalSiteMapProvider
    {
        public override System.Web.SiteMapNodeCollection GetChildNodes(System.Web.SiteMapNode node)
        {

            PortalSiteMapNode portalNode = (PortalSiteMapNode)node;

            SPQuery query = new SPQuery() { Query = "" };
           
            // Remove nodes wich include in "Cities" list

            SiteMapNodeCollection nodeCities = this.GetCachedListItemsByQuery(
                    portalNode.WebNode, "Cities", query, SPContext.Current.Web);
            foreach (SiteMapNode nodeCity in nodeCities)
            {
                for (int nNodeIndex = coll.Count - 1; nNodeIndex >= 0; nNodeIndex--)
                {
                    if (coll[nNodeIndex].Title == nodeCity.Title)
                    {
                        coll.RemoveAt(nNodeIndex);
                    }
                }
            }
            // Add nodes to Members node
            if (node.Title == "Members")
            {
               // PortalSiteMapNode portalNode = (PortalSiteMapNode)node;

                //SPQuery query = new SPQuery() { Query = "" };
                SiteMapNodeCollection listItemNodes = this.GetCachedListItemsByQuery(
                        portalNode.WebNode, "Members", query, SPContext.Current.Web);


                coll = new SiteMapNodeCollection(listItemNodes.Count);
               
                SPWeb web = SPContext.Current.Site.RootWeb;
                Guid guidBank = web.Lists["Members"].ID;
                foreach (PortalListItemSiteMapNode nodeList in listItemNodes)
                {
                    PortalSiteMapNode nodeNew = new PortalSiteMapNode(
                        portalNode.WebNode,
                        string.Format("{0}_add", nodeList.Key),
                        Microsoft.SharePoint.Publishing.NodeTypes.ListItem,
                        nodeList.Url,
                        nodeList.Title,
                        nodeList.Description);
                    coll.Add(nodeNew);
                }

                return coll;
            }

            return coll;
        }
    }
}

Creating Navigation module

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Control
    Id="TopNavigationDataSource"
    Sequence="40"
    ControlClass="Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapDataSourceSwitch"
    ControlAssembly="Microsoft.SharePoint.Publishing, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c">
    <Property Name="ID">topSiteMap</Property>
    <Property Name="SiteMapProvider">
CustomNavigationDataProvider</Property>
    <Property Name="EnableViewState">false</Property>
    <Property Name="StartFromCurrentNode">true</Property>
    <Property Name="ShowStartingNode">true</Property>
    <Property Name="TreatStartingNodeAsCurrent">true</Property>
    <Property Name="TrimNonCurrentTypes">Heading</Property>
  </Control>
</Elements>

web.config registration

<actions>
  <add path="configuration/system.web/siteMap/providers">
    <add name="LifeGlobalNavSiteMapProvider" description="" type="SiteGroup.WebControls.
CustomNavigationDataProvider, SiteGroup, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ce31f39e24cadf59" NavigationType="Combined" EncodeOutput="true" />
  </add>
</actions>


You need to activate feature with Navigation module.

пятница, 23 декабря 2011 г.

Как получить информацию о Feature SharePoint 2010

Get-SPFeature -Identity "ADV.Life_List instances" | Format-List Пример
Get-SPFeature -Identity "SearchWebParts" | Format-List
PS C:\Users\Administrator.SP> Get-SPFeature -Identity "SearchWebParts" | Format-List


Name : FeatureDefinition/eaf6a128-0482-4f71-9a2f-b1c650680e77
Id : eaf6a128-0482-4f71-9a2f-b1c650680e77
DisplayName : SearchWebParts
SolutionId : 00000000-0000-0000-0000-000000000000
ReceiverAssembly :
ReceiverClass :
UIVersion :
UpgradeReceiverAssembly :
UpgradeReceiverClass :
Properties : {}
Version : 12.0.0.0
Scope : Site
AutoActivateInCentralAdmin : False
ActivateOnDefault : True
RootDirectory : C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Template\FeaturesSearchWebParts
Hidden : False
ActivationDependencies : {}
AlwaysForceInstall : False
RequireResources : False
DefaultResourceFile : Microsoft.Office.Server.Search
TypeName : Microsoft.SharePoint.Administration.SPFeatureDefinition
Status : Online
Parent : SPFarm Name=SharePoint_Config
Farm : SPFarm Name=SharePoint_Config
UpgradedPersistedProperties : {}

среда, 7 декабря 2011 г.

Как убрать задержку при открытии выпадающего меню SharePoint

При открытии динамического подменю SharePoint 2010 на базе AspMenu возникает задержка при перемещении на другой пункт меню. Чтобы исправить это, достаточно добавить следующий стиль. li.hover-off>ul { display:none; } см. также http://blog.voltje.be/?p=208

понедельник, 5 декабря 2011 г.

How to get ImageList in SharePoint 2010

PublishingWeb pubSite = PublishingWeb.GetPublishingWeb(SPControl.GetContextWeb(HttpContext.Current)); pubSite.ImagesLibrary

понедельник, 21 ноября 2011 г.

JavaScript error object doesn't support this property or method on Navigation page SharePoint

I had Javascrip error "object doesn't support this property or method" after modify master page of my SharePoint 2010 site. This error fired on Edit Navigation page _layouts/AreaNavigationSettings.aspx. You able to look at description of this error on yhis link. I used JQuery library for fixing this error. I was modified LAYOUTS\\HierarchicalListBox.js (line 1482).
HierarchicalListBox.prototype.updateInspector=function()
{ULSY9G:;
if (this.showInspector)
{
var inspectorHtml='';
if (this.selected !=null)
{
var name=this.selected.name;
var url=this.selected.url;
var description=this.selected.description;
var typeName=this.types[this.selected.type].name;
var typeImage=this.types[this.selected.type].image;
inspectorHtml+='<div style="margin: 5px 0px 5px 0px;"><b>'+L_Title_TEXT+'</b> '+STSHtmlEncode(name)+'</div>';
inspectorHtml+='<div style="margin: 5px 0px 5px 0px;"><b>'+L_Url_TEXT+'</b><span dir="ltr"> '+STSHtmlEncode(url)+'</span></div>';
inspectorHtml+='<div style="margin: 5px 0px 5px 0px;"><b>'+L_Description_TEXT+'</b> '+STSHtmlEncode(description)+'</div>';
inspectorHtml+='<div style="margin: 5px 0px 5px 0px; vertical-align: middle"><b>'+L_Type_TEXT+'</b> <img src="'+typeImage+'" width="16" height="16" border="0" align="absmiddle" alt=""/> '+STSHtmlEncode(typeName)+'</div>';
}
else
{
inspectorHtml+='<div style="margin: 5px 0px 5px 0px;">'+this.noSelectionMessage+'</div>';
}
/* container=document.getElementById('InsertInspectorPane');*/ $('#InsertInspectorPane').html(inspectorHtml);
//container.innerHTML=inspectorHtml;
}
}
You have to add jQuery library on your masterpage for this script.

четверг, 22 сентября 2011 г.

Использование SMTP сервера с аутентификацией для рассылок MOSS 2007

http://fmuntean.wordpress.com/2008/10/26/how-to-configure-iis-smtp-server-to-forward-emails-using-a-gmail-account/

Ошибка

При запуске Visual Studio 2008 SP1 возникает ошибка.

Для исправления необходимо установить обновление KB981574. Скачать его можно тут

http://thehotfixshare.net/board/index.php?autocom=downloads&showfile=12442

Создание типизированного набора данных (Typed DataSet) для XML/XSD в VS 2008

Часть возникает задача привязки элементов формы к данным, размещенных в XML файле. Самым оптимальным способом является создание типизированного набора данных (Typed Dataset). Для его создания потребуется создать XSD схему для XML файла с данными.
Откройте XML файл с данными
В главном меню VC 2008 выберите пункт меню XML -> Create Schema
Сохраните полученный XSD файл
Данная схема представляет собой обычный файл без возможности привязки данных. Можно дополнить данный XSD файл элементами для связывания данных, например, описанным здесь методом.
В окне Solution Explorer выбираем XSD файл, но не открываем его
В свойстве Build Action выбираем Content
В свойство Custom Tool вписываем MSDataSetGenerator
После сохранения схема XSD появится в окне Data Sources, соответственно можно связывать и создавать связанные с данными элементы формы простым перетаскиванием.

Руссификация консоли Ubuntu

sudo apt-get install console-cyrillic

http://linux007.livejournal.com/26295.html

понедельник, 20 июня 2011 г.

Использование enum в NHibernate

Есть задача: использовать типы данных enum для связывания с данными колонки таблицы с использованием NHibernate.

Создаем перечисление:

public enum ExportImportEnum : byte {
Import = 1,
Export = 2

}

Реализуем класс для получения данных. Он должен быть унаследован от NHibernate.Type.EnumStringType .

public class ExportImportEnumType : EnumStringType <ExportImportEnum>
{
public ExportImportEnumType()
: base ()
{

}
public override object GetValue(object code)
{
return (ExportImportEnum)code == ExportImportEnum.Import ? "I" : "E";
}
}

Перегрузка метода object GetValue(object code) позволяет возвращать в БД значения в зависимости от введеных данных.
Перегружаем также метод GetInstatce(object code) чтобы реализовать обратное приведение, из БД в объект.

public override object GetInstance(object code)
{

return (string)code == "I" ? ExportImportEnum.Import : ExportImportEnum.Export;
}

Настраиваем связывание.

Map(x => x.EI, "EI").Length(1).CustomType<ExportImportEnumType>();

понедельник, 4 апреля 2011 г.

Ошибка rsAccessDenied MS SQL 2008 R2

После установки MS SQL 2008 Reporting Services R2 на Windows 7 x64, при попытке зайти на сайт отчетов или администрирования возникает ошибка rsAccessDenied. "Вылечить" можно правкой ключа в реестре Windows, добавить ключ


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Systemhttp://www.blogger.com/img/blank.gif

dword:00000001


Как описано здесь http://stackoverflow.com/questions/4484902/rsaccessdenied-report-server

суббота, 8 января 2011 г.

Выбор бесплатного средства развертывания для приложений Windows

Для сравнения основных средств развертывания можно использовать следующую статью на MSDN. http://msdn.microsoft.com/ru-ru/library/ee721500.aspx

Отмечу основные моменты:
Стандартные проекты Visual Studio
Самый простой способ развертывания приложения. Основной недостаток, отсутствие поддержки сборки через MSBuild, т.е. если есть средства автоматической сборки, типа TFS build, то собрать инсталляционный пакет будет сложно.

InstallShield 2010 Limited Edition
Перед созданием проекта необходимо будет скачать данный продукт с сайта производителя, размер ~ 62 Мб. Является усеченной версией коммерческого продукта. Урезания коснулись веб-сайтов и прав пользователей. Невозможно создать свои собственные диалоговые окна.
Поддерживает MSBuild.

Windows Installer XML Toolset (WiX)
Наиболее полное в плане функциональности средство. Основоной недостаток, отсутствие пользователького интерфейса для создания MSI пакетов.