none
Отображение в веб-части "Браузер организации" организационной диаграммы по заданому пользователю (SharePoint 2016) RRS feed

  • Вопрос

  • В SharePoint 2013 для отображения в веб-части организационной диаграммы заданого пользователя использовался следующий скрипт:

    function CreateHierarchyChartControl(parentId, profileId, type, persistControlId) {
    profileId="i:0#.w|DOMAIN\\user";
      var i = profileId.indexOf("|");
      var claimsmode = profileId.substr(i-1,1);
      if((i >=0 ) & (claimsmode=="w"))
      {
       profileId = profileId.substr(i+1,profileId.length-i-1);
       var initParam = profileId + ',' + type + ',' + persistControlId;
       var host = document.getElementById(parentId);
       host.setAttribute('width', '100%');
       host.setAttribute('height', '100%');
       Silverlight.createObject('/_layouts/ClientBin/hierarchychart.xap',
        host,
        'ProfileBrowserSilverlightControl',
        {
         top: '30',
         width: '100%',
         height: '100%',
         version: '2.0',
         isWindowless: 'true',
         enableHtmlAccess: 'true'
        },
        {
         onLoad: OnHierarchyChartLoaded
        },
         initParam,
         null);
        }
      }
      

    Обработка html-представления следующая:

    SP.UI.Portal.SimpleProfileBrowser.prototype.$2S_0 = function ($p0, $p1, $p2) {
    $p0="i:0#.w|DOMAIN\\user";
    var i = $p0.indexOf("|");
    $p0 = $p0.substr(i+1,$p0.length-i-1);
     
            var $v_0 = $get($p1);
            if ($v_0) {
                $v_0.innerHTML = '<DIV></DIV><DIV></DIV><DIV></DIV>';
                this.$h_0 = $v_0.firstChild;
                this.$16_0 = this.$h_0.nextSibling;
                this.$1e_0 = this.$16_0.nextSibling;
            }
            if ($p2) {
                this.$h_0.innerHTML = String.format(SpsClient.ScriptResources.silverlight_Install_Message, '<a href=\'javascript:Silverlight.getSilverlight(\"2.0\");\'>Silverlight</a>');
                Sys.UI.DomElement.addCssClass(this.$h_0, 'ms-profileBrowserHeaderText');
                Sys.UI.DomElement.addCssClass(this.$h_0.firstChild.nextSibling, 'ms-profileBrowserSilverlightLink');
            }
            this.$2V_0($p0);
    }

    После перехода на SharePoint Server 2016 представление Silverlight пустое, html-представление отображает текущего пользователя.

    Почему даный скрипт перестал работать в новой системе? Возможно, есть какое-либо альтернативное решение задачи?

    Заранее благодарю за ответ!

Ответы

  • Нашел исходный код метода, который был переопределен для изменения представления Silverlight. Заработало с новым переопределением:

    function CreateHierarchyChartControl(parentId, profileId, type, persistControlId, flowDirection, silverLightControlId)
    {
    	//добавленная строка
    	profileId = "DOMAIN\\user";
    
    	var initParam = profileId + ',' + type + ',' + persistControlId + ',' + flowDirection + ',' + silverLightControlId;
    	var host = document.getElementById(parentId);
    	
    	host.setAttribute('width', '100%');
    	host.setAttribute('height', '100%');
    	    
    	Silverlight.createObject('/_layouts/ClientBin/hierarchychart.xap',
    		host,
    		silverLightControlId,
    		{
    			top: '30',
    			width: '100%',
    			height: '100%',
    			version: '4.0.50401.0',
    			isWindowless: 'true',
    			enableHtmlAccess: 'true'
    		},
    		{
    			onLoad: OnHierarchyChartLoaded
    		},
    		initParam,
    		null);
    }


Все ответы

  • Добрый день,

    на ваш вопрос трудно ответить, т.к. с SP 2016-м мало кто еще вплотную успел столкнуться, тем более что в производственных средах он не быстро займет свою нишу.

    Необходимо сравнивать API SP2013 и SP2016, а так же DOM, CSS...

  • Нашел исходный код метода, который был переопределен для изменения представления Silverlight. Заработало с новым переопределением:

    function CreateHierarchyChartControl(parentId, profileId, type, persistControlId, flowDirection, silverLightControlId)
    {
    	//добавленная строка
    	profileId = "DOMAIN\\user";
    
    	var initParam = profileId + ',' + type + ',' + persistControlId + ',' + flowDirection + ',' + silverLightControlId;
    	var host = document.getElementById(parentId);
    	
    	host.setAttribute('width', '100%');
    	host.setAttribute('height', '100%');
    	    
    	Silverlight.createObject('/_layouts/ClientBin/hierarchychart.xap',
    		host,
    		silverLightControlId,
    		{
    			top: '30',
    			width: '100%',
    			height: '100%',
    			version: '4.0.50401.0',
    			isWindowless: 'true',
    			enableHtmlAccess: 'true'
    		},
    		{
    			onLoad: OnHierarchyChartLoaded
    		},
    		initParam,
    		null);
    }