Пост посвящен тому, как установить свои значения шкалы оценок (матрицы вариантов или шкалы Ликерта) в опросах SharePoint. Для этого мне помог jQuery, который позволяет просто творить чудеса с функционалом портала на SharePoint.
В штатном механизме опросов портала SharePoint есть чудесный тип вопросов и ответов, который называется «Шкала оценок (матрица вариантов или шкала Ликерта) в опросах SharePoint». Чаще эту шкалу называют шкалой Лайкерта. Такая шкала позволяет выразить свое согласие в соответствии с выбранным шагом шкалы от «совсем нет» до «совсем да».
Не думаю, что реализация функционала шкалы Ликерта в SharePoint была простой. Но она есть. Но разные психологи и социологи продолжают придумывать опросы, которые не реализовать имеющимися средствами. Так, шкала оценок в опросе, который недавно необходимо было реализовать, была такая: «-2 очень плохо», «-1 плохо», «1 хорошо», «2 очень хорошо». Из ряда убрали «0» ноль. Пользователю надо именно в таком виде показать ответы.
Как сделано в SharePoint
Шкала Ликерта в SharePoint позволяет указать числовые значения (по умолчанию от 1 до 5) и сделать 3 подписи к шкале. По умолчанию подписи такие - низкий, средний и высокий.
Но заказчику нужно вывести подпись под каждую оценку.
Итак, для опроса решил использовать шкалу из 4х баллов ответа. Посмотрел на сгенерированный код, увидел, как размещены оценки и подписи.
<table cellpadding="0" cellspacing="1" border="0" height="95%" summary="Вопрос со шкалой оценок"> <tbody> <tr> <td> </td> <td class="ms-verticaldots"> </td> <td class="ms-gridCol"> Очень плохо </td> <td class="ms-gridCol" colspan="2"></td> <td class="ms-gridCol"> Очень хорошо </td> </tr> <tr> <td> </td> <td class="ms-verticaldots"> </td> <th scope="col" class="ms-gridCol">1</th> <th scope="col" class="ms-gridCol">2</th> <th scope="col" class="ms-gridCol">3</th> <th scope="col" class="ms-gridCol">4</th> </tr> <tbody> </table>
Подписи в первой строке, оценки – во второй в тэге <th>.
Модификация интерфейса опроса SharePoint без серверного кода
Изучив html-код понял, что нужно заменить содержимое тэга <th> на нужные оценки, к ним же добавить подписи. Для реализации замены заголовков был выбран jQuery. Подписи же были просто убраны в свойствах вопросов.
Кода всего ничего. Ищем тэг <th> со значениями «1», «2», «3», «4» и заменяем их на требуемые в формате «-2 очень плохо» и т.д.
" > $(document).ready(function () { var tbl = $('.ms-formtable'); var i = 0; $('th.ms-gridCol').each(function () { var t = $(this).html(); if (t == 1) { $(this).html("-2<br />(очень плохо)"); } if (t == 2) { $(this).html("-1<br />(плохо)"); } if (t == 3) { $(this).html("1<br />(хорошо)"); } if (t == 4) { $(this).html("2<br />(очень хорошо)"); } i++; }); });
Добавить Javascript на страницу опроса получилось только через SharePoint designer, т.к. при нажатии кнопки «Изменить страницу» на форме опросов не появляется риббон, который позволяет вставить в веб-часть «Редактор контента» код в виде HTML.