среда, 15 января 2014 г.

Служба метаданных недоступна

Внезапно перестала работать служба метаданных.

При открытии страницы администрирования службы выдается ошибка “В настоящий момент подключение или служба управляемых метаданных недоступна. Возможно, не были запущены веб-служба управляемых метаданных или пул приложений. Обратитесь к администратору.”

image

Помогло следующее

  1. Создал второе (временное) приложение-службу;
  2. В свойствах первоначального приложения службы скопировал в буфер обмена имя базы данных:
    image
    image
  3. Удалил первоначальную службу, выдающей ошибку. При этом оставил галку удаления данных
    image
  4. Пересоздал первоначальную службу, указав скопированное название базы данных;
  5. Удалил временное приложение.

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

Фильтр по первой букве

Если список упорядочен по алфавиту в каком-то столбце и количество элементов в списке более 100, целесообразно применить фильтр по первой букве для ускорения навигации.

Для этого необходимо

  1. Добавить в список вычисляемый столбец (с названием, например, firstletter) и с формулой =ЛЕВСИМВ([Имя];1).
  2. Добавить веб-часть редактора содержимого со следующим кодом:

<style>
.lettersfilter
{
    margin-bottom: -10px;
}
.lettersfilter .letter
{
    background-color: #f0f0f0;
    display: inline-block;
    width: 40px;
    padding-bottom: 5px;
    text-align: center;
    vertical-align: middle;
    font-size: 2em;
    margin-right: 6px;
    margin-bottom: 10px;
}
.lettersfilter .letter.all
{
    width: 90px;
}
</style>
<div class="lettersfilter">
    <a class="letter all" href="Справочник%20сотрудников.aspx">Все</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D0%B0">А</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D0%B1">Б</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D0%B2">В</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D0%B3">Г</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D0%B4">Д</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D0%B5">Е</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D1%91">Ё</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D0%B6">Ж</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D0%B7">З</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D0%B8">И</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D0%B9">Й</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D0%BA">К</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D0%BB">Л</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D0%BC">М</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D0%BD">Н</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D0%BE">О</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D0%BF">П</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D1%80">Р</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D1%81">С</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D1%82">Т</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D1%83">У</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D1%84">Ф</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D1%85">Х</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D1%86">Ц</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D1%87">Ч</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D1%88">Ш</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D1%89">Щ</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D1%8D">Э</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D1%8E">Ю</a>
    <a class="letter" href="Справочник%20сотрудников.aspx?FilterField1=firstletter&FilterValue1=%D1%8F">Я</a>
</div>

В коде заменить “Справочник%20сотрудников” на URL-страницы, где настроено представление.

Заменить “firstletter” на внутреннее название столбца, созданного на шаге 1.

Получается так:

image

вторник, 3 декабря 2013 г.

Столбцы адреса элемента в рабочем процессе SharePoint Designer

При разработке процесса в SharePoint Designer разработчику предоставляется множество различных столбцов, связанных с адресом элемента.

Какой из них выбрать в нужный момент? Вот что возвращает рабочий процесс при запросе различных столбцов на документе, расположенном в подсайте testsite, в библиотеке test, в папке “Папка” (/testsite/test/Папка/Инструкция%20по%20импорту%20в%20базу%20данных%203д-моделей.docx).

Выбирайте.

 

image

http://server/testsite/test/Папка/Инструкция%20по%20импорту%20в%20базу%20данных%203д-моделей.docx

 

image

Инструкция по импорту в базу данных 3д-моделей

 

image

Инструкция по импорту в базу данных 3д-моделей.docx

 

image

/testsite/test/Папка/Инструкция по импорту в базу данных 3д-моделей.docx

 

image

/testsite/test/Папка

 

image

/testsite/test/Папка/Инструкция по импорту в базу данных 3д-моделей.docx

 

image

http://xn--80acmlhv0b.xn--80agflthakqd0d1e/testsite

 

image

http://server/testsite/test/Папка/Инструкция по импорту в базу данных 3д-моделей.docx

среда, 30 октября 2013 г.

Оценка “Мне нравится” на форме просмотра элемента

В SharePoint 2013 есть стандартный функционал оценок:

image

Он работает отлично на обычных табличных представлениях.

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

image

На странице DispForm нет кнопки “Нравится”, есть только в табличном представлении.

Но можно добавить эту кнопку следующим кодом:

<div class="LikeSection"><span class="likecount"></span><a href="#" onclick="LikePage()" class="LikeButton"></a></div>
<SharePoint:ScriptLink language="javascript" name="reputation.js" OnDemand="true" runat="server" Localizable="false"/>
<script type="text/javascript">
    function getQueryStringParameter(urlParameterKey) {
        var params = document.URL.split('?')[1].split('&');
        var strParams = '';
        for (var i = 0; i < params.length; i = i + 1) {
            var singleParam = params[i].split('=');
            if (singleParam[0] == urlParameterKey)
                return decodeURIComponent(singleParam[1]);
        }
    }

    function LikePage() {
        var like = false;
        var likeButtonText = $("a.LikeButton").text();
        if (likeButtonText != "") {
            if (likeButtonText == "Нравится")
                like = true;
   
            var aContextObject = new SP.ClientContext();
            EnsureScriptFunc('reputation.js', 'Microsoft.Office.Server.ReputationModel.Reputation', function () {
                Microsoft.Office.Server.ReputationModel.
                Reputation.setLike(aContextObject,
                    _spPageContextInfo.pageListId.substring(1, 37),
                    getQueryStringParameter('ID'), like);
   
                aContextObject.executeQueryAsync(
                    function () {
                        //alert(String(like));
                        GetLikeCount();
                    }, function (sender, args) {
                        //alert('F0');
                    });
            });
        }
   
    }
   
    function GetLikeCount() {
   
        var context = new SP.ClientContext(_spPageContextInfo.webServerRelativeUrl);
        var list = context.get_web().get_lists().getById(_spPageContextInfo.pageListId);
        var item = list.getItemById(getQueryStringParameter('ID'));
   
        context.load(item, "LikedBy", "ID", "LikesCount");
        context.executeQueryAsync(Function.createDelegate(this, function (success) {
            // Check if the user id of the current users is in the collection LikedBy.
            var likeDisplay = true;
            var $v_0 = item.get_item('LikedBy');
            var itemc = item.get_item('LikesCount');
            if (!SP.ScriptHelpers.isNullOrUndefined($v_0)) {
                for (var $v_1 = 0, $v_2 = $v_0.length; $v_1 < $v_2; $v_1++) {
                    var $v_3 = $v_0[$v_1];
                    if ($v_3.$1E_1 === _spPageContextInfo.userId) {
                        //cb(true, item.get_item('LikesCount'));
                        //alert("Liked by me");
                        likeDisplay = false;
                    }
                }
            }
            ChangeLikeText(likeDisplay, itemc);
   
        }), Function.createDelegate(this, function (sender, args) {
            //alert('F1');
        }));
   
    }
   
    function ChangeLikeText(like, count) {
        if (like) {
            $("a.LikeButton").text('Нравится');
        }
        else {
            $("a.LikeButton").text('Разонравилось');
        }
        var htmlstring = '<img alt="" src="/_layouts/15/images/LikeFull.11x11x32.png" />' + ' ' + String(count);
        if (count > 0)
            $(".likecount").html(htmlstring)
        else
            $(".likecount").html("");
    }
   
    $(document).ready(function () {
        GetLikeCount();
        $("a.LikeButton").click(function () {
            LikePage();
        });
    });
</script>

Получается вполне симпатично:

image

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

Не работает поиск пользователя при фильтрации по группе

SharePoint 2010.

Если настроить в параметрах столбца подстановки пользователя фильтрацию по группе SharePoint

image

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

image

Т.е. вводим в поле поиска текст “Bruno”, нажимаем Enter, список пользователей пропадает а затем снова появляются все пользователи.

Хотя если не использовать диалог, а искать прямо на форме элемента, все работает корректно:

image 

В SharePoint 2013 вообще нет диалога выбора, там и без него удобно выбирается пользователь:

image

пятница, 27 сентября 2013 г.

Адреса перенаправления на функции личного сайта

Назначение URL относительно узла личных сайтов
Личный сайт текущего пользователя /_layouts/15/MySite.aspx
SkyDrive текущего пользователя /_layouts/15/MySite.aspx?MySiteRedirect=AllDocuments
Каталог сайтов текущего пользователя /_layouts/15/MySite.aspx?MySiteRedirect=AllSites
Все задачи текущего пользователя /_layouts/15/MySite.aspx?MySiteRedirect=AllTasks
Блог текущего пользователя /_layouts/15/MySite.aspx?Blog=1

Если знаете еще полезные адреса – пишите в комментариях, пожалуйста.

Заранее благодарен.

вторник, 24 сентября 2013 г.

Использование url /social

Не используйте url /social для узла личных сайтов.

Сайты пользователей при этом не создаются:

Не удалось создать сайт /sites/администратор. Исключение: Нельзя использовать "Social" как имя сайта. Имена сайтов не могут содержать определенные зарезервированные слова и не могут начинаться со знака подчеркивания. Введите другое имя.