none
Как можно получить автора задачи списка Задачи из javascript? RRS feed

  • Вопрос

  • Добрый вечер!

    Как можно получить автора задачи списка Задачи из javascript (jQuery или еще какой технологией)?

    Версия Sharepoint 2013 Enterprise.

    10 июня 2016 г. 11:17

Ответы


  • Еще не получается получить ID текущего пользователя. Делаю так:

    var currentUser; 

    jQuery(document).ready(function() {

    var clientContext = new SP.ClientContext();

    var oWeb=clientContext.get_web();

    currentUser = oWeb.get_currentUser();

    currentUser.retrieve();

    clientContext.load(oWeb);

    clientContext.executeQueryAsync(Function.createDelegate(this, onQuerySucceeded), Function.createDelegate(this, onQueryFailed));

    });

    function onQuerySucceeded(sender, args) {

    alert(currentUser.get_title()); //здесь получаю имя текущего пользователя

    alert(currentUser.get_userId()); //а здесь выдает [object Object]

    }

    function onQueryFailed(sender, args) {   

    alert('Request failed. ' + args.get_message() +  '\n' + args.get_stackTrace());

    }


    И в строке alert(currentUser.get_userId) выдает [object Object] вместо предполагаемого ID пользователя






    попробуйте так

    var currentUser; 
    jQuery(document).ready(function() {
    	var clientContext = new SP.ClientContext();	
    	var oWeb=clientContext.get_web();	
    	currentUser = oWeb.get_currentUser();	
    	currentUser.retrieve();	
    	clientContext.load(oWeb);	
    	clientContext.executeQueryAsync(Function.createDelegate(this, onQuerySucceeded), Function.createDelegate(this, onQueryFailed));
    });
    function onQuerySucceeded(sender, args) {
    	alert(currentUser.get_title()); //здесь получаю имя текущего пользователя	
    	alert(currentUser.get_id()); 
    }
    function onQueryFailed(sender, args) {    
    	alert('Request failed. ' + args.get_message() +  '\n' + args.get_stackTrace());
    }


    мой блог Немного о SharePoint


    14 июня 2016 г. 6:51
    Модератор
  • Добрый день!
    На строку str.find выдает ошибку: TypeError: str.find is not a function.

    Хотя строка str нормально выводится и там на самом деле присутствует ID. 

    да, там ошибочка 

    var str = jQuery("#onetidinfoblock1").find(".ms-peopleux-userdisplink").attr("href");
    var userId = str.slice(str.search("ID")+3);


    мой блог Немного о SharePoint

    • Помечено в качестве ответа moskalenkoeu 14 июня 2016 г. 9:09
    14 июня 2016 г. 6:55
    Модератор

Все ответы

  • Добрый день

    не совсем ясна задача.

    вы хотите обратиться к текущему элементу или находясь в другом месте обратится к списку?

    и что вы в итоге хотите сделать, ведь даже находясь в текущем элементе можно обратиться к нему через DOM или на этапе рендера через CSR


    мой блог Немного о SharePoint

    10 июня 2016 г. 11:19
    Модератор
  • Я хочу при открытии задачи на редактирование в редакторе сценариев получить автора задачи для проверки его с текущим пользователем и с дальнейшей соответствующей обработкой.
    10 июня 2016 г. 12:15
  • если через DOM и jQuery то 

    var str = jQuery("#onetidinfoblock1").find(".ms-peopleux-userdisplink").attr("href");
    var userId = str.slice(str.find("ID")+3);
    на выходе ID пользователя и можно его сравнить с текущим пользователем.


    мой блог Немного о SharePoint


    10 июня 2016 г. 12:31
    Модератор
  • Добрый день!
    На строку str.find выдает ошибку: TypeError: str.find is not a function.

    Хотя строка str нормально выводится и там на самом деле присутствует ID. 

    Еще не получается получить ID текущего пользователя. Делаю так:

    var currentUser; 

    jQuery(document).ready(function() {

    var clientContext = new SP.ClientContext();

    var oWeb=clientContext.get_web();

    currentUser = oWeb.get_currentUser();

    currentUser.retrieve();

    clientContext.load(oWeb);

    clientContext.executeQueryAsync(Function.createDelegate(this, onQuerySucceeded), Function.createDelegate(this, onQueryFailed));

    });

    function onQuerySucceeded(sender, args) {

    alert(currentUser.get_title()); //здесь получаю имя текущего пользователя

    alert(currentUser.get_userId()); //а здесь выдает [object Object]

    }

    function onQueryFailed(sender, args) {   

    alert('Request failed. ' + args.get_message() +  '\n' + args.get_stackTrace());

    }


    И в строке alert(currentUser.get_userId) выдает [object Object] вместо предполагаемого ID пользователя






    14 июня 2016 г. 5:52

  • Еще не получается получить ID текущего пользователя. Делаю так:

    var currentUser; 

    jQuery(document).ready(function() {

    var clientContext = new SP.ClientContext();

    var oWeb=clientContext.get_web();

    currentUser = oWeb.get_currentUser();

    currentUser.retrieve();

    clientContext.load(oWeb);

    clientContext.executeQueryAsync(Function.createDelegate(this, onQuerySucceeded), Function.createDelegate(this, onQueryFailed));

    });

    function onQuerySucceeded(sender, args) {

    alert(currentUser.get_title()); //здесь получаю имя текущего пользователя

    alert(currentUser.get_userId()); //а здесь выдает [object Object]

    }

    function onQueryFailed(sender, args) {   

    alert('Request failed. ' + args.get_message() +  '\n' + args.get_stackTrace());

    }


    И в строке alert(currentUser.get_userId) выдает [object Object] вместо предполагаемого ID пользователя






    попробуйте так

    var currentUser; 
    jQuery(document).ready(function() {
    	var clientContext = new SP.ClientContext();	
    	var oWeb=clientContext.get_web();	
    	currentUser = oWeb.get_currentUser();	
    	currentUser.retrieve();	
    	clientContext.load(oWeb);	
    	clientContext.executeQueryAsync(Function.createDelegate(this, onQuerySucceeded), Function.createDelegate(this, onQueryFailed));
    });
    function onQuerySucceeded(sender, args) {
    	alert(currentUser.get_title()); //здесь получаю имя текущего пользователя	
    	alert(currentUser.get_id()); 
    }
    function onQueryFailed(sender, args) {    
    	alert('Request failed. ' + args.get_message() +  '\n' + args.get_stackTrace());
    }


    мой блог Немного о SharePoint


    14 июня 2016 г. 6:51
    Модератор
  • Добрый день!
    На строку str.find выдает ошибку: TypeError: str.find is not a function.

    Хотя строка str нормально выводится и там на самом деле присутствует ID. 

    да, там ошибочка 

    var str = jQuery("#onetidinfoblock1").find(".ms-peopleux-userdisplink").attr("href");
    var userId = str.slice(str.search("ID")+3);


    мой блог Немного о SharePoint

    • Помечено в качестве ответа moskalenkoeu 14 июня 2016 г. 9:09
    14 июня 2016 г. 6:55
    Модератор
  • Спасибо большое!

    Теперь все работает!

    14 июня 2016 г. 9:09
  • Почему то на рабочем сервере строка str в возвращаемом значении выражения

    var str = jQuery("#onetidinfoblock1").find(".ms-peopleux-userdisplink").attr("href");

    заканчивается ; (точкой с запятой). А на тестовом сервере этой точки с запятой нет. Почему такое может быть?

    15 июня 2016 г. 13:57
  • вставьте сюда еще пару строк перед этой строкой и после. 

    мой блог Немного о SharePoint

    15 июня 2016 г. 14:01
    Модератор
  • function start() {
    var clientContext = new SP.ClientContext();
    var oWeb=clientContext.get_web();
    currentUser = oWeb.get_currentUser();
    currentUser.retrieve();

    groupCollection=currentUser.get_groups();
    clientContext.load(groupCollection);
    clientContext.load(oWeb);
    clientContext.executeQueryAsync(Function.createDelegate(this, onQuerySucceeded), Function.createDelegate(this, onQueryFailed));
    }

    function onQuerySucceeded(sender, args) {
    var str = jQuery("#onetidinfoblock1").find(".ms-peopleux-userdisplink").attr("href");
    var userId = str.slice(str.search("ID")+3, str.length-1); //Здесь я получаю ID с учетом ;

    if (userId==currentUser.get_id()) 
    {
    return;
    }

    ......


    16 июня 2016 г. 4:24
  • скажите, а на тесте отключена фича "Стратегия минимальной загрузки"?

    (на самом деле не совсем понял где работает, а где нет, но предлагаю сравнить сайты на предмет этой фичи)


    мой блог Немного о SharePoint

    16 июня 2016 г. 6:40
    Модератор
  • Не отключена как на тесте так и на рабочем сервере.

    В каком смысле где работает?

    16 июня 2016 г. 12:38
  • Проверил три фермы с 2013 

    и одну 2016 (данные правда мигрировали с 2013, не вновь созданные)

    везде ссылка на создателя элемента имеет вид http://sp/sites/ITServiceDesk/_layouts/15/listform.aspx?PageType=4&ListId={222da598-2dc2-4001-afcf-cd56a55d6ffb}&ID=25

    Форма кастомизироанная?


    мой блог Немного о SharePoint

    17 июня 2016 г. 8:28
    Модератор
  • для универсальности кода попробуйте так

    var str = jQuery("#onetidinfoblock1").find(".ms-peopleux-userdisplink").attr("href");
    var userId = str.slice(str.search("ID")+3).replace(/[^0-9]/gim,'');
    должно работать в обоих средах


    мой блог Немного о SharePoint


    17 июня 2016 г. 8:41
    Модератор
  • Здравствуйте!

    Простите за ожидание...

    Форма вроде не должна быть кастомизированная. Но могло быть так, что форма была редактируема в InfoPath. А  потом в настройках списка по-умолчанию была сделана стандартная форма,а форма InfoPath удалена. На тестовом сервере (где нет точки с запятой) вероятнее всего и было. А вот на рабочем (где есть точка с запятой) в InfoPath форма не редактировалась.

    23 июня 2016 г. 7:05