Warning: Constant USER_COOKIE already defined in /var/www/admin/www/markimarta.ru/wp-config.php on line 85

Warning: Constant PASS_COOKIE already defined in /var/www/admin/www/markimarta.ru/wp-config.php on line 86

Warning: Constant AUTH_COOKIE already defined in /var/www/admin/www/markimarta.ru/wp-config.php on line 87

Warning: Constant SECURE_AUTH_COOKIE already defined in /var/www/admin/www/markimarta.ru/wp-config.php on line 88

Warning: Constant LOGGED_IN_COOKIE already defined in /var/www/admin/www/markimarta.ru/wp-config.php on line 89

Warning: Constant TEST_COOKIE already defined in /var/www/admin/www/markimarta.ru/wp-config.php on line 90
Скрыть кнопку «Изменить элемент» на форме просмотра элемента списка SharePoint « Марк и Марта.Ру. Записки отца-программиста




Скрыть кнопку "Изменить элемент" на форме просмотра элемента списка SharePoint


Warning: Undefined variable $thumbnail in /var/www/admin/www/markimarta.ru/wp-content/themes/markimarta2023/single.php on line 44

Warning: Attempt to read property "ID" on null in /var/www/admin/www/markimarta.ru/wp-content/themes/markimarta2023/single.php on line 44

Warning: Undefined variable $thumbnail in /var/www/admin/www/markimarta.ru/wp-content/themes/markimarta2023/single.php on line 45

Warning: Attempt to read property "post_title" on null in /var/www/admin/www/markimarta.ru/wp-content/themes/markimarta2023/single.php on line 45

Самый простой и быстрый способ кастомизации форм списков SharePoint – это метод с применением веб-части «Редактор содержимого» (CEWP – Content editor web part), в которую нужно добавить ссылку на html-файл с кодом.

Для одной задачи требовалось запретить возможность редактировать запись ее авторам. Создать можно, а изменить нельзя. При этом, установить разрешения, которые запрещали бы редактирование, было невозможно.

Для того, чтобы авторы записи ничего не изменили после создания, вариант удаления страницы EditForm.aspx не подходил. Потому было выбрано простое решение – скрывать кнопку «Изменить элемент» для авторов записи.

Само по себе скрытие кнопки – одна строка при условии наличия jQuery:
$("a[aria-describedby^='Ribbon.ListForm.Display.Manage.EditItem_ToolTip']").css({'display' : 'none'})

Скрытая кнопка Изменить элемент
Скрытая кнопка Изменить элемент

Ниже привожу полноценный код, который был вставлен на страницу. Он определяет имя текущего пользователя и сравнивает его с автором записи элемента списка. Если значения равны, то кнопку скрываем. Для работы скрипта необходимо подключить SPServices

<script>
//Функция для парсинга URL и Query String
function getURLParam(key,target){
    var values = [];
    if (!target) target = location.href;
    key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var pattern = key + '=([^&#]+)';
    var o_reg = new RegExp(pattern,'g');
    while (true){
        var matches = o_reg.exec(target);
        if (matches && matches[1]){
            values.push(matches[1]);
        } else {
            break;
        }
    }
    if (!values.length){
        return null;   
    } else {
        return values.length == 1 ? values[0] : values;
    }
}


	$(document).ready(function() {
		//Определяем строку запроса
		var queryString = location.search;
		//Получаем значение ID записи списка из URL
		var idstr = getURLParam ('ID', queryString);
		//Получаем значение автора записи из функции ниже
		var author = GetListItemAuthor(idstr);
		//Формат имени автора "33;#Имя автора". Преобразуем
		var a = author.replace(/\d{1,};#/, '');
		//Получаем имя текущего пользователя
		thisUserAccount= $().SPServices.SPGetCurrentUser({
		fieldNames: ["Title", "Name"],
		debug: false
		});
		if(thisUserAccount) {
			var login = thisUserAccount.Name;
			var userName = login.split("\");
			if(thisUserAccount.Title == a) {
				$("a[aria-describedby^='Ribbon.ListForm.Display.Manage.EditItem_ToolTip']").css({'display' : 'none'})
			}			
		}
	});
	
	
function GetListItemAuthor(strid) {
	myQuery = "<Query><Where><Eq><FieldRef Name='ID' /><Value Type='Counter'>" + strid + "</Value></Eq></Where></Query>";
	var itemAuthor;
	  $().SPServices({
		operation: "GetListItems",
		async: false,
		listName: "nameoflist",
		CAMLViewFields: "<ViewFields><FieldRef Name='Title' /><FieldRef Name='Author' /></ViewFields>",
		CAMLQuery: myQuery,
		completefunc: function (xData, Status) {
		  $(xData.responseXML).SPFilterNode("z:row").each(function() {
			itemAuthor = $(this).attr("ows_Author");
		  });
		}
	  });
	  return itemAuthor;
}
</script>

Комментариев нет »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment





Срок проверки reCAPTCHA истек. Перезагрузите страницу.



MarkiMarta.ru. Записки отца-программиста" с 2009 г.
Категория информационной продукции 18+
Яндекс.Метрика