VSExtensibilityHelper

в связи с созданием одного большого проекта (собственной cms) возникла необходимость создать сборщика пакетов. CMS расширяемое, то есть пользователь должен иметь возможность создать свой пакет(модуль), нечто похожее на пакет nuget или wsp пакет для SharePoint. И чтобы все это не делать руками, я хочу это автоматизировать. Для создания расширения под Visual Studio очень мало информации в интернете, а из официального только https://github.com/Microsoft/VSSDK-Extensibility-Samples . Решил собрать свою библиотеку, которая бы облегчила пользователю создание VSIX дополнений. Из разных источников собрал лучшее. подробно можно прочитать здесь: https://github.com/d-kochanzhi/VSExtensibilityHelper Сразу привожу пример как создать свой Editor для определенного расширения


 и для WPF конторолов



для WinForms контролов



Теперь с легкостью любой может создать свой компановщик или редактор.

[Ещё]

js-array-extensions

Написал небольшую библиотеку для работы с массивами объектов на javascript (js-array-extensions)


примеры:


SortBy



arrayExt.SortBy(myArrayOfObjects,[ "name", "-type" ]);


сортирует массив по полям "name" по возрастанию и  "type" по убыванию


UniqueBy



arrayExt.UniqueBy(myArrayOfObjects,["name", "type"]);


получает массив из списка уникальных объектов по полям "name" и  "type" 


FilterBy



arrayExt.FilterBy(myArrayOfObjects,[ { "key": "name", "value": "Jon", "operator": "not like" } ]; );


Фильтрует массив по полю "name" где значение НЕ СОДЕРЖИТ "Jon"

[Ещё]

vuejs cmp-table

Написал vue.js компонент для отображения/редактирования данных в таблице. Полное описание и исходники тут: cmp-table


Но хотел бы показать его в работе (Используются возможности: редактируемые поля, не редактируемые поля, доп. столбцы,  группировка, сортировка, и динамические столбцы).


[Ещё]

Курс 20489: Создание продвинутых решений для Microsoft SharePoint Server 2013

Прошел Курс 20489: Создание продвинутых решений для Microsoft SharePoint Server 2013.



  • сервис поиска,

  • сервис управления содержимым,

  • управление централизованной инфраструктурой,

  • управление социальной нагрузкой,

  • управление пользовательскими данными,

  • механизмы управления веб-контентом.

[Ещё]

d.SPTextBuilder

Заполнение шаблонов писем из элемента списка Sharepoint.

 


Создаем парсер:

TextBuilder textBuilder = 
new TextBuilder(new SampleListItemProvider(item));

string mailTemplate =
"ItemTitle: {%Field(Title)%}" + Environment.NewLine +
"NoteFld: {%Field(NoteFld)%}" + Environment.NewLine +
"ChoiceFld: {%Field(ChoiceFld)%}" + Environment.NewLine +
"NumberFld: {%Field(NumberFld)%}" + Environment.NewLine +
"CurrencyFld: {%Field(CurrencyFld)%}" + Environment.NewLine +
"DateTimeFld: {%Field(DateTimeFld)%}" + Environment.NewLine +
"LookupFld: {%Field(LookupFld)%}" + Environment.NewLine +
"BooleanFld: {%Field(BooleanFld)%}" + Environment.NewLine +
"UserFld: {%Field(UserFld)%}" + Environment.NewLine +
"URLFld: {%Field(URLFld)%}" + Environment.NewLine +
"CustomProperty: {%CustomProperty%}" + Environment.NewLine +
"CustomMethodNoParams: {%CustomMethodNoParams%}" + Environment.NewLine +
"CustomMethodWithParams: {%CustomMethodWithParams(6,9)%}" + Environment.NewLine +
"CustomFormatProperty: {%CustomFormatProperty:dd/MM/yyyy%}";

string output = textBuilder.Parse(mailTemplate);

 


Результат:

ItemTitle: Hello world!
NoteFld: <div class="ExternalClass27392DF017794231B6A661BFB1A566E1"><p>​Big Text<br></p><p>Note Input<br></p></div>
ChoiceFld: Вариант 2
NumberFld: 999
CurrencyFld: 123,00 ₽
DateTimeFld: 09.08.2017
LookupFld: <a href="http://***/_layouts/15/listform.aspx?PageType=4&ListId={d23e63e7-94d2-4a0a-b569-8969eeed2a25}&ID=4&RootFolder=*">Гибкость в принятии решений</a>
BooleanFld: Yes
UserFld: <span class="ms-noWrap"><span class='ms-imnSpan'><a href='#' onclick='IMNImageOnClick(event);return false;' class='ms-imnlink ms-spimn-presenceLink' ><span class='ms-spimn-presenceWrapper ms-imnImg ms-spimn-imgSize-10x10'><img name='imnmark' class='ms-spimn-img ms-spimn-presence-disconnected-10x10x32' title='' ShowOfflinePawn='1' src='/_layouts/15/images/spimn.png?rev=23' alt='No presence information' sip='a@a.ru' id='imn_1,type=smtp'/></span></a></span><span class="ms-noWrap ms-imnSpan"><a href='#' onclick='IMNImageOnClick(event);return false;' class='ms-imnlink' tabIndex='-1'><img name='imnmark' class='ms-hide' title='' ShowOfflinePawn='1' src='/_layouts/15/images/blank.gif?rev=23' alt='' sip='a@a.ru' id='imn_2,type=smtp'/></a><a class="ms-subtleLink" onclick="GoToLinkOrDialogNewWindow(this);return false;" href="/MatrixPoll/_layouts/15/userdisp.aspx?ID=59">Дмитрий </a></span></span>
URLFld: <a href="http://****/Lists/test/EditForm.aspx">HyperLinkSample</a>
CustomProperty: 45
CustomMethodNoParams: 1
CustomMethodWithParams: 15


Ссылка:


https://github.com/dzsoft-ru/d.SPTextBuilder


 

[Ещё]