Очистить вывод html для анонимных пользователей в SharePoint 2010 - PullRequest
1 голос
/ 01 февраля 2012

Я использую SharePoint 2010 для создания большого интернет-сайта, и сейчас я нахожусь в процессе оптимизации сайта для анонимных пользователей.Просматривая исходный код html моей стартовой страницы, я обнаружил, что различные компоненты ootb в SharePoint добавляют на страницу множество ненужных вещей.(По крайней мере, они не нужны анонимному пользователю, поскольку мы используем полностью индивидуальный брендинг.)

Некоторые примеры:

В голове:

<style type="text/css"> 
.ctl00_PlaceHolderOuterWrap_DialogPlaceHolder_PlaceHolderOuterMain_TopWebPartZone_0 { border-color:Black;border-width:1px;border-style:Solid; }
.ctl00_PlaceHolderOuterWrap_DialogPlaceHolder_PlaceHolderOuterMain_LeftWebPartZone_0 { border-color:Black;border-width:1px;border-style:Solid; }
.ctl00_PlaceHolderOuterWrap_DialogPlaceHolder_PlaceHolderOuterMain_RightWebPartZone_0 { border-color:Black;border-width:1px;border-style:Solid; }
.ctl00_PlaceHolderOuterWrap_DialogPlaceHolder_PlaceHolderOuterMain_ctl01_SocialWebPartZone_0 { border-color:Black;border-width:1px;border-style:Solid; }
.ctl00_wpz_0 { border-color:Black;border-width:1px;border-style:Solid; }

В верхней части тела:

<script type="text/javascript"> 
//<![CDATA[
var MSOWebPartPageFormName = 'aspnetForm';
var g_presenceEnabled = true;
var g_wsaEnabled = false;
var g_wsaLCID = 1033;
var g_wsaSiteTemplateId = 'XXX#1';
var g_wsaListTemplateId = 850;
var _fV4UI=true;var _spPageContextInfo = {webServerRelativeUrl: "\u002fen-gb", webLanguage: 1033, currentLanguage: 1033, webUIVersion:4,pageListId:"{28b31ecf-221c-4a5f-94e2-6b97af0cfd61}",pageItemId:1, alertsEnabled:true, siteServerRelativeUrl: "\u002f", allowSilverlightPrompt:'True'};//]]>
</script>
<script type="text/javascript"> 
<!--
var L_Menu_BaseUrl="/en-gb";
var L_Menu_LCID="1033";
var L_Menu_SiteTheme="";
//-->
</script>
<script type="text/javascript"> 
//<![CDATA[
document.onreadystatechange=fnRemoveAllStatus; function fnRemoveAllStatus()    {removeAllStatus(true)};var _spWebPartComponents = new Object();//]]>
</script>

и множество других вещей в нижней части страницы, таких как функции JavaScript и т. Д.

Любой, кто пытался удалить все эти вещи?

Я ищу как можно более чистый способ анализа html в фильтре http-модуля не очень привлекательно.

Спасибо!

1 Ответ

2 голосов
/ 04 апреля 2012

Мое предложение удалить как можно больше беспорядка - использовать выделенную главную страницу для анонимного пользователя (и удалить все ненужные пользователю / серверные элементы управления).У вас может быть макет страницы, который реализует базовый класс, в котором на этапе инициализации вы назначаете свою собственную только анонимную главную страницу.

Альтернативное решение - обернуть веб-элементы управления / компоненты, отвечающие за беспорядок / ненужный HTMLв проверенном только шаблоне управления.

/// <summary>
/// Base Abstract control for conditionally (permissions, querystring, audience, anonymous, etc.) visible content 
/// </summary>
[ParseChildren(true)]
public abstract class ConditionallyVisibleControl : Control
{
    public ITemplate ContentTemplate { get; set; }
    public abstract bool ShouldBeVisible { get; }

    protected override void CreateChildControls()
    {
        base.CreateChildControls();

        if (ShouldBeVisible && ContentTemplate != null)
        {
            Control container = new Control();
            ContentTemplate.InstantiateIn(container);
            Controls.Add(container);
        }
    }
}

и они имеют что-то вроде

/// <summary>
/// Hide some content to anonymous user
/// </summary>
/// <example>
///     <UC:AnonymousTrimmedControl runat="server">
///         <ContentTemplate>
///             <!-- Any content over there that will not be rendered / visible for anonymous users -->
///         </ContentTemplate>
///     </UC:AnonymousTrimmedControl>
/// </example>

public class AnonymousTrimmedControl : ConditionallyVisibleControl
{
    public override bool ShouldBeVisible
    {
        get
        {
            return (HttpContext.Current.Request.IsAuthenticated);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...