Partager via


Système de rendu des pages mobiles

Dernière modification : lundi 28 février 2011

S’applique à : SharePoint Foundation 2010

Cette rubrique décrit comment Microsoft SharePoint Foundation utilise les contrôles RenderingTemplate et les contrôles du sélecteur de modèles pour restituer les pages accessibles à partir des périphériques mobiles.

Contrôles sur la page

Une page mobile est restituée avec les contrôles RenderingTemplate, mais ces contrôles ne sont pas directement appelés à partir de la page. À la place, un contrôle SPMobileComponent ou un type de contrôle dérivé de SPMobileComponent est déclaré sur la page. La propriété TemplateName du contrôle spécifie l’ID d’un contrôle RenderingTemplate. Le modèle de rendu est déclaré dans un fichier ascx qui se trouve dans %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\CONTROLTEMPLATES. Si un objet d’une classe dérivée de SPMobileComponent est déclaré sur la page, la valeur de sa propriété TemplateName est déterminée en interne en fonction de la définition de site actuelle, du type de page actuel et de la zone de la page (en-tête, contenu ou pied de page) où le contrôle est déclaré. Si un objet SPMobileComponent réel est déclaré, la propriété TemplateName est spécifiée dans la déclaration.

Les contrôles RenderingTemplate inclus dans SharePoint Foundation sont déclarés dans MobileDefaultTemplates.ascx et GbwMobileDefaultTemplates.ascx. Les contrôles RenderingTemplate personnalisés sont déclarés dans les fichiers .ascx personnalisés du même dossier.

Le code suivant montre le marquage principal de la page mobile de la liste de listes, mbllists.aspx. Notez que, à certains endroits, tels que la zone d’en-tête de la page pour les appareils qui prennent en charge les styles de feuilles de style en cascade (CSS), un objet SPMobileComponent est déclaré et sa propriété TemplateName est définie explicitement. Par contre, à d’autres endroits, tels que la zone d’en-tête de la page pour les appareils qui ne prennent pas en charge les styles CSS, un objet de la classe dérivée de SPMobileComponent est déclaré. Dans ce cas, la classe est SPMobilePageTitle. Sur cette page, elle appelle un modèle de rendu dont l’ID est MobileHomePageTitle.

Notes

Le type de page « HomePage » mobile comprend des pages qui, en réalité, ne sont pas des pages d’accueil pour un site. Ce type comprend des pages qui n’ont pas véritablement leur place dans d’autres catégories, telles qu’une page d’affichage de liste ou une page de formulaire. Par exemple, la page « Liste des listes » mobile, mbllist.aspx, est de type HomePage.

<SPMobile:SPMobileForm RunAt="Server" PageType="HomePage" Paginate="true">
  <DeviceSpecific>
    <Choice Filter="supportsCss">
      <HeaderTemplate>
        <SPMobile:SPMobileComponent RunAt="Server"Templatename="MobilePageTitleWithCss" Weightless="true" />
      </HeaderTemplate>
      <FooterTemplate>
        <SPMobile:SPMobileComponent RunAt="Server" 
          Templatename="MobilePageNavigationWithCss" Weightless="true" />
      </FooterTemplate>
    </Choice>
    <Choice>
      <HeaderTemplate>
        <SPMobile:SPMobileControlContainer RunAt="Server" Weightless="true">
          <SPMobile:SPMobilePageTitle RunAt="Server" />
          <SPMobile:SPMobileComponent RunAt="Server" 
            TemplateName="MobileDefaultSeparator" />
        </SPMobile:SPMobileControlContainer>
      </HeaderTemplate>
      <FooterTemplate>
        <SPMobile:SPMobileControlContainer RunAt="Server" Weightless="true">
          <SPMobile:SPMobileComponent RunAt="Server" 
            Templatename="MobilePaginateNavigation" />
          <SPMobile:SPMobileComponent RunAt="Server" 
            TemplateName="MobileDefaultSeparator" />
          <SPMobile:SPMobilePageNavigation RunAt="Server" />
        </SPMobile:SPMobileControlContainer>
      </FooterTemplate>
    </Choice>
  </DeviceSpecific>
  <SPMobile:SPMobilePageContents RunAt="Server" />
</SPMobile:SPMobileForm>

À l’intérieur du fichier ASCX

Chaque contrôle RenderingTemplate appelé par les contrôles sur la page possède un élément Template. Le contenu de l’élément Template correspond généralement à l’un des schémas suivants.

Appels directs des contrôles Web ASP.NET

Dans le cas le plus simple, les contrôles Web Microsoft ASP.NET et les contrôles Web SharePoint Foundation à insérer sur la page mobile sont appelés directement dans l’élément Template. Par exemple, le contrôle RenderingTemplateMobileDefaultSeparator est appelé à partir des zones d’en-tête et de pied de page de plusieurs pages mobiles SharePoint Foundation. Il est défini dans MobileDefaultTemplates.ascx avec le marquage suivant.

<SharePoint:RenderingTemplate RunAt="Server" id="MobileDefaultSeparator">
  <Template>
    <mobile:Panel RunAt="Server" Alignment="Center" EnableViewState="False">
      <mobile:DeviceSpecific RunAt="Server">
        <Choice Filter="IsMicrosoftMobileExplorer">
          <ContentTemplate>
            <hr width="100%" size="1">
          </ContentTemplate>
        </Choice>
        <Choice Filter="IsHtml32">
          <ContentTemplate>
            <hr width="100%" size="1" color="#D8D8D8">
          </ContentTemplate>
        </Choice>
        <Choice Filter="IsChtml10">
          <ContentTemplate>
            <hr width="100%" size="1">
          </ContentTemplate>
        </Choice>
        <Choice Filter="IsXhtmlMp">
          <ContentTemplate>
            <hr width="100%" size="1" style="color:#D8D8D8" />
          </ContentTemplate>
        </Choice>
        <Choice>
          <ContentTemplate>
            <mobile:LiteralText RunAt="Server" Text="-----" BreakAfter="true" />
          </ContentTemplate>
        </Choice>
      </mobile:DeviceSpecific>
    </mobile:Panel>
  </Template>
</SharePoint:RenderingTemplate>

Notez que le marquage déclare un contrôle ASP.NETPanel, puis lui applique des styles en fonction du langage de marquage utilisé par le navigateur de l’appareil mobile. Si le navigateur ne correspond à aucun type spécifique, le rendu par défaut consiste à créer un séparateur avec cinq traits d’union dans un contrôle LiteralText.

Le code suivant montre la déclaration du contrôle RenderingTemplate. Notez qu’il appelle un objet SPMobileLabel.

<SharePoint:RenderingTemplate RunAt="Server" id="MobileFormFieldSeparator">
  <Template>
    <SPMobile:SPMobileLabel RunAt="Server" Text="" BreakAfter="true" />
  </Template>
</SharePoint:RenderingTemplate>

Appel d’un objet SPMobileComponent

Comme indiqué précédemment dans la section Contrôles sur la page, les contrôles SPMobileComponent et les contrôles qui dérivent de SPMobileComponent sont utilisés sur une page mobile SharePoint Foundation pour appeler des modèles de rendu. Par conséquent, il n’est pas surprenant que l’élément Template d’un contrôle RenderingTemplate comprenne parfois un appel à l’un de ces objets. Cela se produit lorsqu’une partie du contenu que le contrôle RenderingTemplate doit restituer duplique exactement ce qui est restitué (indirectement) par l’un de ces objets SPMobileComponent. Par exemple, le contrôle RenderingTemplateMobilePageNavigationWithCss est défini, dans MobileDefaultTemplates.ascx, pour partie avec un appel à la classe SPMobilePageNavigation dérivée de SPMobileComponent et pour partie avec un appel à l’objet SPMobileComponent dont la propriété TemplateName est définie sur MobilePaginateNavigation. Le code suivant montre la déclaration :

<SharePoint:RenderingTemplate RunAt="Server" 
  id="MobilePageNavigationWithCss">
  <Template>
    <SPMobile:SPMobileComponent RunAt="Server" 
      Templatename="MobilePaginateNavigation" />
    <SPMobile:SPMobileNoBreakSpace RunAt="Server" />
    <SPMobile:SPMobilePaddedPanel RunAt="Server" BackColor="#F6F6F6">
      <SPMobile:SPMobilePageNavigation RunAt="Server" />
    </SPMobile:SPMobilePaddedPanel>
  </Template>
</SharePoint:RenderingTemplate>

Appels d’un objet sélecteur de modèles

Parfois, le contenu de l’élément Template est un objet d’une classe dérivée de SPMobileTemplateSelector. Il existe neuf classes :

Comme le laisse penser le nom de la classe dont ils sont dérivés, ces contrôles sélectionnent un autre contrôle RenderingTemplate pour restituer une partie de la page. Par exemple, le contrôle MobileHomePageTitle RenderingTemplate mentionné dans la section Contrôles sur la page a la valeur SPMobileWebTitle définie pour son élément Template. SPMobileWebTitle appelle un contrôle RenderingTemplate qui restitue la zone d’en-tête (Titre) d’une page d’accueil de l’affichage mobile. Le code suivant est la déclaration du modèle de rendu MobileHomePageTitle dans MobileDefaultTemplates.ascx :

<SharePoint:RenderingTemplate RunAt="Server" id="MobileHomePageTitle">
  <Template>
    <SPMobile:SPMobileWebTitle RunAt="Server" />
  </Template>
</SharePoint:RenderingTemplate>

Chaque objet SPMobileTemplateSelector sélectionne un contrôle RenderingTemplate en construisant un ID segmenté. Le runtime recherche, dans les fichiers ascx situés dans %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\CONTROLTEMPLATES, un contrôle RenderingTemplate ayant un ID correspondant. Pour plus d’informations sur les ID segmentés pour les contrôles RenderingTemplate, voir ID de modèle de rendu segmentés plus loin dans cette rubrique. Pour plus d’informations sur la façon dont les ID sont construits, voir les rubriques de référence consacrées aux neuf classes répertoriées précédemment et les sections Rendu des sections d'une page d'accueil de l'affichage mobile et Rendu des sections des pages d'affichage de liste et de formulaire plus loin dans cette rubrique.

Appels mixtes

L’élément Template d’un contrôle RenderingTemplate peut également contenir des appels à une combinaison des différents types de contrôles :

Toute chaîne d’appels qui utilise des objets SPMobileTemplateSelector, des objets dérivés de SPMobileComponent et des objets SPMobileComponent avec une valeur TemplateName explicite doit se traduire par des appels de contrôles que l’analyseur de page peut restituer dans le langage de description de page de l’appareil mobile, tel que XHTML.

ID de modèle de rendu segmentés

De nombreux contrôles RenderingTemplate dans MobileDefaultTemplates.ascx et GbwMobileDefaultTemplates.ascx possèdent des ID segmentés. Ils peuvent être classés dans les catégories suivantes :

  • Modèles de rendu variable en fonction du type de site

  • Modèles de rendu variable en fonction du type de liste

  • Modèles de rendu variable en fonction du type de champ

  • Modèles de rendu d’élément de liste pour un affichage simple

  • Modèles de rendu de redirection

  • Modèles de rendu de la liste des billets de blog

Modèles de rendu variable en fonction du type de site

Les contrôles RenderingTemplate dont le comportement de rendu varie en fonction de la définition de site possèdent des ID segmentés au format suivant :

UtilisationPageSouhaitée_IDTypeSite_TypePage_ZonePage

Les valeurs possibles pour ZonePage sont Title (zone d’en-tête d’une page mobile), Navigation (zone de pied de page) et Contents.

IDTypeSite est le nom ou numéro d’identification de la définition de site du site Web actuel. Pour les définitions de site incluses dans SharePoint Foundation, IDTypeSite peut être STS, SGS ou BLOG.

Notes

L’accès à partir des périphériques mobiles n’est pas pris en charge pour les sites MPS, CENTRALADMIN, TENANTADMIN et WIKI hérités.

Pour les définitions de site personnalisées, IDTypeSite est le numéro d’identification (pas le nom) de la définition de site. (Ce numéro est défini avec l’attribut ID d’un élément Template dans un fichier WebTemp.xml. Pour plus d’informations sur l’attribut ID d’une définition de site, voir WebTemp.xml.)

TypePage et UtilisationPageSouhaitée font référence à des types de pages mobiles, mais classent les pages mobiles différemment. TypePage fait référence à la finalité fonctionnelle de la page du point de vue d’un utilisateur final, tel que page d’accueil, page d’affichage de liste ou formulaire de modification. Les valeurs possibles sont les valeurs de l’énumération SPMobilePageType. UtilisationPageSouhaitée caractérise une page mobile en fonction du type de page non mobile à laquelle elle est supposée correspondre, c’est-à-dire son type de page cible souhaité. Les valeurs possibles sont les suivantes :

  • WebPartMobile : modèles destinés à être utilisés sur les versions mobiles récapitulatives des pages de composants WebPart non mobiles.

  • WebPartMobileDetail : modèles destinés à être utilisés sur la version mobile détaillée d’une Page de composants WebPart non mobile.

  • Moblog : modèles destinés à être utilisés sur page de site de blog mobile.

  • Mobile : toutes les autres pages mobiles.

Voici une série d’exemples :

  • Mobile_STS_HomePage_Title

  • WebPartMobile_SGS_HomePage_Contents

Modèles de rendu variable en fonction du type de liste

Les contrôles RenderingTemplate dont le comportement de rendu varie en fonction de la définition de liste possèdent des ID segmentés dont les noms présentent le format suivant :

UtilisationListeSouhaitée_IDTypeListe_TypePage_ZonePage

TypePage et ZonePage ont les mêmes significations que dans la sous-section précédente. IDTypeListe est soit un numéro d’identification du type de liste actuel (par exemple 105) ou une des valeurs de l’énumération SPListTemplateType (par exemple Contacts). Si la liste est spécifiée comme appartenant au type de site du fichier Onet.xmlde la définition de site, alors IDTypeListe correspond à la valeur de l’attribut Type de l’élément List dans Onet.xml, situé dans le dossier : %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\SiteTemplates\type_site\xml. Si la liste a été ajoutée au site dans l’interface utilisateur, IDTypeListe est le numéro d’identification du type de liste utilisé comme base du nouveau type de liste.

UtilisationListeSouhaitée identifie le type de liste éventuel que le modèle est supposé restituer. Les valeurs possibles sont les suivantes :

  • Mobile : types de listes ordinaires.

  • MobileFolder : modèles destinés à restituer les éléments d’un sous-dossier d’une liste.

  • MobileDailyView : modèles destinés à restituer la liste quotidienne des événements à partir du calendrier d’un site de travail de groupe.

Voici une série d’exemples :

  • Mobile_Events_NewForm_Navigation

  • Mobile_425_EditForm_Contents

Modèles de rendu variable en fonction du type de champ

Les modèles de rendu de champ dont le comportement de rendu varie en fonction du type de champ possèdent des ID segmentés dont les noms présentent le format suivant :

MobileCustomListField_IDTypeListe_TypeChamp_Champ

IDTypeListe a la même signification que dans la sous-section précédente. TypeChamp est le type de données du champ. Il peut correspondre à n’importe quelle valeur de l’énumération SPFieldType, par exemple, Text ou Number. Il peut également être un type de champ personnalisé tel que défini par l’élément <Field Name="TypeName"> dans le fichier fldtypes*.xml qui définit le type de champ personnalisé. (Pour plus d’informations sur les types de champs personnalisés, voir Procédure : créer une définition de type de champ personnalisé.) Champ correspond au nom interne du champ, par exemple WorkPhone. Si le champ est marqué comme appartenant à la liste du fichier Schema.xml pour la définition de liste, le nom interne peut correspondre à la valeur de l’attribut Name de l’élément Field de schema.xml, situé dans le dossier %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES\Dossier_Fonctionnalité. Si le champ a été ajouté à la liste dans l’interface utilisateur, c’est-à-dire la page Créer une colonne, Champ correspond à la valeur de la propriété SPField.InternalName et ne peut être trouvé que dans le modèle d’objet.

Notes

Champ correspond au nom interne du champ (colonne), qui n’est pas toujours le même que le nom complet du champ. Pour les champs créés par les utilisateurs dans l’interface utilisateur, le nom interne est généré par le système à partir du nom complet choisi par l’utilisateur. Si l’utilisateur a inclus des espaces ou marques de ponctuation dans le nom complet, le nom interne remplace ces caractères par le numéro Unicode du caractère, délimité par des caractères de soulignement. Par exemple, si un utilisateur attribue à un champ le nom « Bientôt disponible », le nom interne sera « Bientôt_x0020_disponible ».

Voici une série d’exemples :

  • MobileCustomListField_Posts_DateTime_PublishedDate

  • MobileCustomListField_Whereabouts_User_Name

Modèles de rendu d’élément de liste pour un affichage simple

Les éléments de liste peuvent être restitués pour un affichage mobile détaillé ou pour un affichage mobile simple, parfois appelé affichage mobile « récapitulatif ». Certains modèles à ID segmenté permettent de restituer les éléments de liste dans l’affichage simple. Les ID présentent le format suivant :

Mobile_IDTypeListe_SimpleViewItemRendering

IDTypeListe a la même signification que dans les deux sous-sections précédentes.

Modèles de rendu de la liste des billets de blog

SPMobilePostsListTitle choisit Moblog_MyPosts_Title ou Moblog_AllPosts_Title pour restituer le titre d'une liste des messages sur un site blog mobile, en fonction du type d'affichage actuel du site blog, à savoir Mes messages ou Tous les messages.

Modèles de rendu de redirection

Un type de contrôle RenderingTemplate dans MobileDefaultTemplates.ascx n’effectue pas de rendu à proprement parler. Par contre, il peut être utilisé dans la chaîne des appels de modèle de rendu pour engendrer une redirection vers une page différente. Les ID présentent le format suivant :

Mobile_IDTypeSite_TypePage_Redirect

IDTypeSite et TypePage ont la même signification que dans la sous-section « Modèles de rendu variable en fonction du type de site » précédemment dans cette rubrique. Un modèle de rendu de ce type appelle SPMobileHomePageRedirection qui redirige la demande depuis l’appareil mobile vers la page spécifiée dans la propriété PageFileName. La valeur par défaut est mblwp.aspx. Le code suivant est la déclaration du modèle de rendu qui effectue une redirection vers la page d’accueil d’un site de blog :

<SharePoint:RenderingTemplate RunAt="Server" 
  id="Mobile_BLOG_HomePage_Redirect">
  <Template>
    <SPMobile:SPMobileHomePageRedirection RunAt="Server" 
      PageFileName="bloghome.aspx" />
  </Template>
</SharePoint:RenderingTemplate>

Rendu des sections d'une page d'accueil de l'affichage mobile

Comme indiqué, l’élément Template de « MobileHomePageTitle » a pour valeur SPMobileWebTitle. SPMobileWebTitle appelle un contrôle RenderingTemplate qui restitue la zone d’en-tête (Title) d’une page d’accueil de l’affichage mobile. En particulier, il recherche un contrôle RenderingTemplate ayant l’ID Mobile_IDTypeSite_HomePage_Title, où IDTypeSite est le nom ou le numéro d’identification de la définition de site du site Web actuel.

Si un contrôle RenderingTemplate pour la définition de site actuelle n’existe dans aucun fichier .ascx dans %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\CONTROLTEMPLATES, le système de rendu utilise Mobile_Default_HomePage_Title (qui, à son tour, appelle un contrôle, SPMobileWeb, qui restitue le titre du site Web avec un contrôle Label). Pour plus d’informations sur l’utilisation des contrôles RenderingTemplate de page d’accueil inclus dans SharePoint Foundation, voir Procédure : personnaliser les pages d'accueil de l'affichage mobile.

SPMobileWebContents et SPMobileWebNavigation sélectionnent un contrôle RenderingTemplate qui restitue, respectivement, la zone de contenu de la page principale et la zone de pied de page (Navigation) d’une page d’accueil de l’affichage mobile. Les trois premières classes recherchent donc des contrôles RenderingTemplate dont l’ID est au format Mobile_IDTypeSite_HomePage_ZonePage.

Rendu des sections des pages d'affichage de liste et de formulaire

Les classes SPMobileListTitle, SPMobileListContents et SPMobileListNavigation sont utilisées sur les pages d’affichage de liste et de formulaire. Elles recherchent chacune des contrôles RenderingTemplate dont l’ID est au format Mobile_IDTypeListe_TypePage_ZonePage, où TypePage est View, NewForm, EditForm, DispForm ou DeletePage et IDTypeListe est défini dans la section ID de modèle de rendu segmentés plus haut dans cette rubrique.

La plupart des types de listes prédéfinis dans SharePoint Foundation sont représentés par une valeur dans l’énumération SPListTemplateType. La rubrique de référence pour ce type spécifie la valeur entière sous-jacente de chaque énumeration SPListTemplateType. Ces valeurs entières ont été sélectionnées de telle sorte qu’elles correspondent à l’ID numérique du type de liste. Par conséquent, cette rubrique de référence constitue un catalogue des numéros d’identification de liste.

Il existe certains types de listes qui n’ont pas de valeurs correspondantes dans l’énumération. Ils sont répertoriés dans le tableau suivant avec leurs numéros d’identification. Vous pouvez également utiliser le numéro d’identification de types de listes personnalisés. Ces derniers doivent être des nombres supérieurs à 10 000 pour vous assurer qu’ils n’entrent pas en conflit avec des numéros qui sont utilisés par Microsoft dans les futures versions de SharePoint Foundation. Enfin, notez que les produits Microsoft qui reposent sur SharePoint Foundation, tels que Microsoft SharePoint Server, peuvent définir, et d’ailleurs définissent, des types de listes supplémentaires.

ID

Description

151

Bibliothèque d’aide

400

Planification

401

Groupes FC

425

Nouveautés

1210

Listes de distribution

Si un contrôle RenderingTemplate dont le numéro d'identification spécifie le type de liste actuel n'existe pas, un contrôle RenderingTemplate avec un numéro d'identification au format Mobile_Default_TypePage_ZonePage est utilisé. Pour plus d'informations sur l'utilisation des contrôles RenderingTemplate de rendu de liste fournis avec SharePoint Foundation, voir Procédure : modifier les pages de formulaire et d'affichage de liste mobiles.

Rendu des champs

SPMobileListFieldSelector sélectionne des contrôles RenderingTemplate qui restituent des champs spécifiques des pages d’affichage de liste, Nouveau, Modifier ou Afficher. Il recherche un contrôle RenderingTemplate dont le numéro d’identification est au format suivant : MobileCustomListField_IDTypeListe_TypeChamp_Champ, comme défini plus haut dans la section ID de modèle de rendu segmentés de cette rubrique.

S’il n’existe aucun contrôle RenderingTemplate avec le numéro d’identification recherché, le contrôle RenderingTemplate portant le numéro d’identification MobileDefaultListField est utilisé. Pour plus d’informations sur l’utilisation des contrôles RenderingTemplate de rendu de champs fournis avec SharePoint Foundation, voir Procédure : personnaliser le rendu des champs sur les pages mobiles.

Différence entre le rendu de champs pour les appareils mobiles et pour les ordinateurs

Dans SharePoint Foundation, le rendu des champs avec des contrôles de rendu de champs personnalisés pour les appareils mobiles est similaire au rendu des champs avec des contrôles de rendu de champs personnalisés pour des ordinateurs. Néanmoins, considérez les différences suivantes :

Imbrication de contrôles RenderingTemplate

Les contrôles RenderingTemplate peuvent être imbriqués. Voir l'exemple dans Procédure : personnaliser les pages d'accueil de l'affichage mobile.

Voir aussi

Tâches

Procédure pas à pas : personnalisation de la page d'accueil de l'affichage mobile

Procédure : modifier les pages de formulaire et d'affichage de liste mobiles

Procédure pas à pas : personnalisation d'une page mobile d'affichage de liste

Procédure : personnaliser les pages d'accueil de l'affichage mobile

Procédure pas à pas : personnalisation des titres d’élément sur des formulaires mobiles

Procédure : personnaliser le rendu des champs sur les pages mobiles

Concepts

Vue d’ensemble des pages mobiles et du système de redirection

Mise en page et pagination des pages mobiles

Points de suspension et limites de rendu

Procédure : créer une définition de type de champ personnalisé

Présentation des fichiers Schema.xml

Présentation des fichiers Onet.xml