viernes, 20 de junio de 2014

Agregar jquery.js, custom.js y custom.css en cada página de Sharepoint 2013

Siempre necesitamos tener jquery disponible en cada página o agregar javascript/css custom, ej: ocultar Newsfeed y OneDrive en un ambiente On-premise (en un próximo post). Voy a estar usando la feature de delegate control: http://msdn.microsoft.com/en-us/library/office/ms478826(v=office.15).aspx

Especificamente voy a usar “AdditionalPageHead”: http://msdn.microsoft.com/en-us/library/office/ms470880(v=office.14).aspx

Iniciamos, creando una solución de Visual Studio (SharePoint 2013 empty project)

image

Seleccionar “farm solution”

image

Agregamos un user control

image

image

En el user control agrego lo siguiente:

<script type="text/javascript" src="/_layouts/15/jquery.js" />
<script type="text/javascript" src="/_layouts/15/custom.js" />
<link id="CssRegistrationCustom" rel="stylesheet" type="text/css" href="/_layouts/15/Styles/custom.css"/>

image

Más adelante le explico porqué está mal este código (específicamente el cierre del tag script). A continuación agrego un elemento vacio (Empty element)

image

En el mismo agrego lo siguiente

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Control Id="AdditionalPageHead"
           Sequence="100"           ControlSrc="~/_controltemplates/15/SPCustomDeployment/customfiles.ascx" />
</Elements>

image

image

Ahora verifico que la feature se deploye a nivel Web

image

image

Después mapeo la carpeta Layouts (Sharepoint “Layouts” Mapped Folder)

image

Y agrego los archivos jquery.js, custom.js y custom.css (dentro de la carpeta styles)

image

Deployo la solución

image

Mientras se está debuggeando me lanza el siguiente error: 0x800a1391 - JavaScript runtime error: 'theForm' is undefined

image

Por algún motivo (cómo les comenté antes) no le gusta el NO cierre completo del tag script (yo use <script  /> en vez de <script></script>). Lo que hice es utilizar los controles ScriptLink y CssRegistration .

<SharePoint:ScriptLink ID="ScriptLinkJquery" Name="/_layouts/15/jquery.js" runat="server"  Language="Javascript"/>
<SharePoint:ScriptLink ID="ScriptLinkCustom" Name="/_layouts/15/custom.js" runat="server" Language="Javascript"  />
<SharePoint:CssRegistration  ID="CssRegistrationCustom" Name="/_layouts/15/Styles/custom.css" runat="server" After="corev15.css" />

image

Deployo de nuevo, y veo que se agregó correctamente el código en el html generado

image

Miren que custom.css se agregó después de cov15.css, ya que use la propiedad after

image

También verifico si quedó bien el nombre de la feature y la descripción.

image

image

También verifico que los archivos se hayan agregado los archivos correctamente el el filesystem

image

image

image

path de features

image

Ahora para verificar que se haya cargado correctamente jquery, usamos un script editor web part.

image

image

Guardo la página y me aparece el popup

image

Sin lugar a dudas las funcionalidades de Delegate Control son muy poderosas. Voy a a estar haciendo algunos post relacionados a este, tales como ocultar “Newsfeed” y “OneDrive” en un ambiente on-premise.

No hay comentarios:

Publicar un comentario