Arquivo da Categoría: jQuery e SharePoint

Consello Rápida: Engadido jQuery para Moss Publicación Páxinas

Cando mellorar Moss páxinas publising usar jQuery, Eu bati o seguinte lombo:

Server Error in ‘/’ Aplicación.


Erro do analizador

Descrición: Houbo un erro durante a análise dun recurso necesario para atender esta solicitude. Examina os detalles específicos do erro de análise e modificar o seu ficheiro de orixe apropiadamente.

Mensaxe de erro Parser: Só os controis de contido están permitidos directamente nunha páxina de contido que contén controis de contidos.

Erro de Orixe:

 
Line 10: 
Line 11: 
Line 12: <script 
Line 13:     type="text/javascript" 
Line 14:     src="/jQuery/jquery-1.4.min.js"> 

Arquivo de Orixe: /_catalogs / masterpage / KCC_FacultyMember.aspx    Liña: 12


Información sobre a versión: Microsoft. Net Framework:2.0.50727.4927; Versión de ASP.NET:2.0.50727.4927

Foi fácil o suficiente para corrixir (h / t para o meu compañeiro, Uday Ethirajulu).  Asegúrese de que o código jQuery vive dentro do "PlaceHolderAdditionalPageHead", como se mostra:

<áspide:Content ContentPlaceholderID="PlaceHolderAdditionalPageHead" runat="server">

<guión

    type="text/javascript"

    src="/jQuery/jquery-1.4.min.js">

</guión>

<script type="text/javascript">

  $(documento).preparado(función() {

   // Cousas jQuery brillante vai aquí.

   });

</guión>

</final>

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin

En Loanza da jQuery avanzado Busca-as-you-Type (por Xan Tielens)

Eu estou traballando nunha demo BPOS (en breve estará dispoñible ata o sitio web de Microsoft) and I wanted to add a little pizzazz. I’ve known about Xan Tielen de esforzos para un bo tempo e eu penso que sería unha gran técnica para engadir á demostración, so I did. You can read about it here: http://weblogs.asp.net/jan/archive/2009/07/02/sharepoint-search-as-you-type-with-jquery.aspx. It’s so simple to use it should probably be a crime (e pode que en algún lugar).

Engado só dous puntos do que xa creou / escribiu sobre:

  1. Isto fai, de feito, traballar nun BPOS (SharePoint en liña) ambiente.
  2. Para facelo funcionar sen unha mensaxe emerxente irritantes prefixo a referencia á biblioteca jquery con https no canto de http, como no:
<tipo script ="Text / javascript" src ="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></guión>

Jan points out that you should probably move the library itself to your site. Feeling a little lazy today, I decided to blog about it instead 🙂

</final>

Este é outro post no meu en curso serie de uso jQuery co SharePoint.
Se queres saber máis sobre jQuery, Eu recomendo altamente: jQuery en Acción por Bear Bibeault e Katz Yehuda.

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin

Technorati Tags:

Protexendo Views SharePoint List / Documento biblioteca parece (tipo de) Posible con jQuery

Este é outro post no meu en curso serie de uso jQuery co SharePoint.
Se queres saber máis sobre jQuery, Eu recomendo altamente: jQuery en Acción por Bear Bibeault e Katz Yehuda.

Unha das primeiras cousas que eu pensaba, unha vez comece a xogar con jQuery, was whether we could use it to secure a SharePoint view. The answer is “no” (ou polo menos, Non estou dicindo que é posible). Con todo, it is certainly possible to make it difficult for people to see a particular view.

I started with my sandbox environment when working on this. I wrote about that environment here: Fácil e rápida: Crea a túa propia Sandbox jQuery para SharePoint.

Para "garantir" unha visión, Siga estes pasos:

  1. Create a view you want to secure. I did that and called it “Secured View”.

    Isto é o que parece cando non está "garantido":

    image

  2. Engadir unha web Part do Editor de páxina da visión a usar o truco descrito no artigo sandbox (i.e. engadir "pageview = Shared&ToolPaneView = 2 "para a URL).
  3. Figure out your SharePoint _spUserId by following these crazy steps, crer ou non:
    1. Entrar no seu ambiente SharePoint.
    2. Na caixa de enderezo do navegador, tipo: "Javascript:alertar(_spUserId ").
    3. Anota o resultado (é "13" no meu caso).

      image

  4. Engadir o javascript despois da súa CEWP na visualización de código:

    <guión
        "Text / javascript"
        src =".. / .. / JQuery 20Library/jquery-1.3.2.min.js%">
    </guión>
    
    <tipo script ="Text / javascript">
      $(función() {
    
        alertar(_spUserId);
    
        foi theSecuredView = $('Iframe[FilterLink * = 20View% seguro]');
    
        se ((theSecuredView.length > 0) && (_spUserId == 13))
          $('Iframe[FilterLink * = 20View% seguro]').principal().principal().principal().html("<tr bgcolor = vermello><td>Ningún punto de vista para ti!</td></tr>");
      });
    
    </guión>
    

Eu incluín que alerta(_spUserId) liña alí para demostrar como esa non é realmente un "asegurar" unha visión, but simply making it more difficult to see. More on that in a moment.

Basicamente, jQuery is looking for an iFrame on the page who has an attribute that contains “Secured View” in its value. Once it finds it, we check to see if the current user is “13”. If it is, andamos a Don a un <TR> día (que eu descubrir a través da visualización de orixe e rastreá-lo) e, a continuación, substituíndo a etiqueta TR coa miña mensaxe. Eu realmente non sei como iso é robusto (Eu son moi sospeitoso, de feito), but it worked in my sandbox. If I find a better way, Vou bloguear sobre o tema. Este é o resultado:

image

Clic no botón Aceptar e os datos son substituídos por unha mensaxe vermello gran:

image

Como pode dicir, the way I’ve implement this “security” solution is to allow the web part to render itself. After it finishes, Eu substituír o seu contido coa miña "visión Non para ti!"Mensaxe.

A pesar do feito de que non é realmente un "seguro" vista, é potencialmente útil e con algún traballo intelixente, it may eventually be securable in a more formal sense. The fundamental issue is that the client is getting all the data and then, só despois de que recibe os datos, it wipes it out. If the client is getting the data, un usuario intelixente pode impedir que o jQuery de correr en todo e ver o que el / ela quere ver.

There are other drawbacks. This “security” approach is based off a _spUserId. We’d want to really secure based on the full SharePoint security model, or at least by user name. That becomes progressively harder, pero eu vexo algunhas cousas boas escrito sobre este tema, polo que estou esperanzas de que hai unha boa resposta para o problema.

A lista de puntos de vista propios deben ser aparadas, if possible. I haven’t tried to figure that out. I assume it’s possible, pero non resolve realmente o problema de seguridade fundamental, porque alguén aínda podería só escribir o URL da visión que eles queren (no caso de que sabían que). Con todo, trimming makes sense. It’s a good usability feature and it helps to obfuscate things. If an end user doesn’t know that the view event exists, they probably won’t try to use it. Ás veces, que é bo o suficiente.

Con sorte, Eu terei máis para escribir sobre este tema ao longo do tempo.

</final>

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin

Etiquetas do del.icio.us: ,,

Fácil e rápida: A mellor forma de usar jQuery para ocultar un campo texto nun formulario do SharePoint

Este é outro post no meu en curso serie de uso jQuery co SharePoint.
Se queres saber máis sobre jQuery, Eu recomendo altamente: jQuery en Acción por Bear Bibeault e Katz Yehuda.

Anteriormente, I wrote about how to use jQuery to locate and hide a text field on a form. I didn’t care for the specific approach (Eu estaba pais fío - que é simplemente non se fai nos días de hoxe, polo menos en familias de calidade).

Cando comece a pensar niso, Eu sabía que necesitaba atopar unha <TR> to which I could invoke the hide() método. My early effort to find the correct <TR> era algo así:

$('Tr:ten(entrada[title = ocultar-me!])');

O problema con isto é que ía atopar toda a <TR> tag that had any parent relationship to the Hide Me! campo, Agochar o meu mesmo! está aninhado moitos niveis de profundidade en <TR>’s. It turns out that on my sandbox form, que a expresión atopa 9 TR diferentes das que teñen ocultar Me! as a child somewhere in its DOM tree. I realized that I could walk back up the tree from the input field itself, entón é así que eu acabei pais que abusan, pero non se sente ben comigo.

Eu dei un pouco sobre esta e unha das cousas que lin finalmente fixo sentido: Eu podería usar o non() método para cortar fóra <TR>’s I don’t want in my wrapped set. Isto levoume a este:

$('Tr:ten(entrada[title = ocultar-me!])').non('Tr:ten(tr)').agochar();

O primeiro bit atopa todos os <TR> marcas que teñen a ocultar-me! field anywhere in their own hierarchy. It then strips out any <TR> que tamén ten un neno <TR>. This leaves us with a single <TR> que:

1) Non ten <TR> rexistros fillo

2) Does have the input field as child.

Podemos, entón, aplicar a pel() método para o conxunto resultante e estamos a facer.

Eu aínda estou un pouco nervioso sobre o tema, pero non tan nervioso como os pais fío.

I don’t know if this is a best practice or not. There may be a more appropriate way of identifying just the <TR> that we care about in a SharePoint form. If you know, por favor publicar un comentario.

</final>

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin

Fácil e rápida: Use jQuery para ocultar un campo texto nun formulario do SharePoint

Este é outro post no meu en curso serie de uso jQuery co SharePoint.
Se queres saber máis sobre jQuery, Eu recomendo altamente: jQuery en Acción por Bear Bibeault e Katz Yehuda.

Actualización (xa!): Eu pensaba que dun xeito mellor para atopar o <TR> Quero marcar para ocultar e escribín sobre iso aquí. You may still find this article interesting anyway so I’m leavnig it up.

Eu quero ocultar un campo de texto, "Ocultar-me!"Como se mostra:

image'

O jQuery seguinte fai o truco para min:

<tipo script ="Text / javascript">

  $(función() {


    $('Input[title = ocultar-me!]').principal().principal().principal().agochar();

  });

</guión>

O código está dicindo, "Atopar-me todos os campos de entrada, cuxo título = ocultar-me!. Entón, seu pai e, a continuación, próximo pai ea nai * próxima * (enfado!) e chamar a pel() método no que a cousa, todo o que pasa de ser.

Eu descubrir que a estrutura pai, a ver o código HTML para o formulario que o SharePoint creado como se mostra:

<TR>
    <TD nowrap="true" valign="top" ancho="190px" clase="ms-formlabel">
        <H3 clase="ms-standardheader">
            <nobr>Esconderse me!</nobr>
        </H3>
    </TD>

    <TD valign="top" clase="ms-formbody" ancho="400px">
        <!-- FieldName="Hide Me!"
                 FieldInternalName="Hide_x0020_Me_x0021_"
                 FieldType="SPFieldText"
        -->
        <van vostede="none">
            <entrada
                nome="ctl00$m$g_bdb23c2c_fde7_495f_8676_69714a308d8e$ctl00$ctl04$ctl02$ctl00$ctl00$ctl04$ctl00$ctl00$TextField"
                tipo="text"
                maxlength="255"
                ID="ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
                título="Hide Me!"
                clase="ms-long" />
                <br>
        </van>


    </TD>
</TR>

Esta imaxe mostra a mesma, pero marcado cos pais:

image

O primeiro pai (1) is a span tag. Span’s parent (2) é unha etiqueta TD e, finalmente, chegamos ao pai certo Eu quero ocultar (3) que é a marca TR-se.

This is a pretty terrible approach I think because it’s extremely dependent on the very specific structure of this form. When SharePoint 2010 sae, this whole structure could change and break this approach. What I really want to do is craft a jQuery selector that is along the lines of “find me all the TR’s (e etiquetas só TR) que nalgún lugar seus elementos fillo dun campo de entrada cuxo título = Hide Me!". I starting from the bottom and moving up. Assuming I figure this out, Vou publicar unha actualización "fácil e rápida post '.

</final>

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin

Etiquetas do del.icio.us: ,

Fácil e rápida: Crea a túa propia Sandbox jQuery para SharePoint

Este é outro post no meu en curso serie de uso jQuery co SharePoint.
Se queres saber máis sobre jQuery, Eu recomendo altamente: jQuery en Acción por Bear Bibeault e Katz Yehuda.

Introdución ao jQuery no SharePoint é sorprendente fácil (para min). (Eu teño serias dúbidas sobre "mellores prácticas", unha visión para implantar estas cousas para a produción, pero iso é para outro día). I’ve just started playing with this technology and to that end, I created a sandbox environment to use. If you’re looking to get started with jQuery, podes atopar esta visión útil.

1. Crear un sitio en branco

Crea un sitio baleiro nalgún lugar no seu sitio web e chamalo algo intelixente como "Sandbox jQuery".

2. Descargar jQuery

Podes baixar a biblioteca javascript jQuery aquí: http://docs.jquery.com/Downloading_jQuery

Salve a que a súa área de traballo.

Teño benvida a empregar a versión "minified".

3. Crear unha biblioteca de documentos SharePoint

Na súa páxina web sandbox, create a document library.

4. Carga da biblioteca jQuery para SharePoint

O acceso a biblioteca documento que acaba de crear e cargar a biblioteca jQuery.

5. Crear unha lista de SharePoint personalizado

I’ve started with a custom list because I want to muck about with standard SharePoint forms. You could also create a page in a pages library or web part pages and probably a lot of other places.

Add some columns to the custom list so that you have something to run jQuery against. My initial objectives were to:

  1. Agochar un campo.
  2. Asignar un valor a un campo.

Con ese obxectivo en mente, I added two text fields. Ao longo do tempo, Vou xogar con ligazóns, imaxes, investigacións, etc.

6. Modificar a páxina de NewForm.aspx web e engadir unha web Part do Editor

Isto é un pouco maxia negra-ish , in that it’s a new concept to me. I first learned about this from Paul Grenier, SharePoint jQuery Superstar, na súa páxina web do proxecto CodePlex: http://spff.codeplex.com/.

Siga estes pasos para engadir un CEWP para a mesma páxina que mostra NewForm.aspx para calquera lista personalizada:

  1. Entre na lista personalizada e prema en Novo.
  2. Engadir o seguinte para a URL: Pageview = Shared&ToolPaneView = 2

Isto vai transformar o seu aburrido vainilla forma de entrada de datos a partir de algo coma isto:

image

A este:

image

Engadir o contido de parte da rede editor da páxina.

7. Escriba o seu código jQuery Primeiro

Abre-se que CEWP na visualización de código e engade o seguinte:

image

Aquí está o código real se quere copiar / pegar:

<guión
    "Text / javascript"
    src =".. / .. / JQuery 20Library/jquery-1.3.2.min.js%">
</guión>

<tipo script ="Text / javascript">
  $(función() {

    $('# ResultsID').html("Hai ' + $('A').tamaño() + 'O Etiquetas Etiquetas nesta páxina.);

  });
</guión>

Resultar:
<div id ="ResultsID '></p>
/resultar

Nótese que o primeiro <guión> tag is referencing the actual jQuery library. Presumably, esas cousas cambian co tempo, así que vai querer asegurarse de unha) usar o nome correcto e b) apuntala-lo para a biblioteca correcta de documentos de SharePoint.

Bask na Gloria

Se fixo correctamente, podes ver un resultado similar ao seguinte:

image

Resumindo

Esta non é a única forma de comezar, pero é rápido, easy and isolated from your existing SharePoint environment.

</final>

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin

Etiquetas do del.icio.us: ,

Fácil e rápida: Use jQuery ao valor dun campo de texto nun formulario do SharePoint

Eu comecei a xogar con jQuery yesterday. I’ve been wanting to do this for a long time, desde entón Paul Grenier escrita comezou súa serie sobre jQuery para usuarios finais no venerable www.endusersharepoint.com web site. As I use it, I hope to add a series of “Quick and Easy” posts like this one. This post describes how to set a known text field’s value to anything you want.

Neste escenario, Eu creei unha lista personalizada cuxa forma "nova" mira como se mostra:

image

Esta é a nova forma para unha lista personalizada coa columna Título estándar e dúas columnas de lista (non columnas de sitio; Eu creo que non debe facer calquera diferencia).

O obxectivo é asignar un valor arbitrario para o campo, "DefaultMeFieldNoSpaces" (pode dicir eu son un pouco de un cobarde co "sen espazos" cousa a ocorrer, pero eu combina-lo ao final deste artigo).

Este pouco de jQuery traballou para min:

<tipo script ="Text / javascript">

  $(función() {

    $('Input[title = DefaultMeFieldNoSpaces]').attr(
        {valor: "Está nun labirinto sinuoso de pasaxes, todos iguais. "});

  });

</guión>

Polo que entendín este pouco de jQuery está dicindo, “find me any input tag whose title = DefaultMeFieldNoSpaces. Entón, establecer os seus valores a unha frase famosa dun xogo de ordenador antigo. "

Xa que haberá só un campo no formulario cun título igual a "DefaultMeFieldNoSpaces" ten por seguro de asignar un valor a ese campo e ningún outro.

Que tal un campo cuxo nome ten espazos? It’s nearly the same:

<tipo script ="Text / javascript">

  $(función() {
     $('Input[título de campo = Asignar con espazo]').attr(
        {valor: "Está nun labirinto sinuoso de pasaxes, todos iguais. "});

  });

</guión>

Eu creo que esta é unha visión bastante segura, meaning that we should be able to find the field that we want and only the field we want. If you look at the HTML SharePoint is giving us, é unha especie de confuso:

<entrada
nome="ctl00$m$g_bdb23c2c_fde7_495f_8676_69714a308d8e$ctl00$ctl04$ctl02$ctl00$ctl00$ctl04$ctl00$ctl00$TextField"
tipo="text"
maxlength="255"
ID="ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
título="DefaultMeFieldNoSpaces"
clase="ms-long"
/>

"Título" destaca como un atributo recoñecible e espero única para axudarnos a identificar a columna específica a que queremos asignar o noso valor arbitrario.

This is a foundational concept. Setting a field in an arbitrary way like this isn’t going to win any awards. Con todo, se queremos facer cousas nivel máis interesante forma (que todos sempre queremos facer, claro, logo despois que rematar de lavar os pratos), como cambiar o valor do campo "b" automaticamente a base do valor de "un campo", nós (Eu) que aprender esas cousas.

Eu creo que a nosa mellor oportunidade de obter un valor útil aquí é a través do título, at least for text fields. There may be a better, more reliable approach. If I find it, Vou actualizar este post. If you know a better way, por favor, deixe un comentario.</final>

</final>

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin