Category Archives: jQuery e SharePoint

Dica rápida: Adicionando jQuery para páginas de publicação do MOSS

Quando melhorar páginas de publising MOSS usando jQuery, Eu bati a seguinte lombada:

Erro de servidor em ' /’ Aplicação.


Erro do analisador

Descrição: Ocorreu um erro durante a análise de um recurso necessário para atender esta solicitação. Por favor, revise os seguintes detalhes de erro de análise específica e modificar seu arquivo de origem apropriadamente.

Mensagem de erro do analisador: Somente controles de conteúdo é admitido diretamente em uma página de conteúdo que contém controles de conteúdo.

Erro de origem:

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

Arquivo de origem: /_catalogs/MasterPage/KCC_FacultyMember.aspx    Linha: 12


Informações sobre versão: Microsoft.NET Framework versão:2.0.50727.4927; ASP.NET versão:2.0.50727.4927

Foi bastante fácil de corrigir (h/t para meu colega, Ariane de Uday).  Certifique-se de que o código jQuery vive dentro da "PlaceHolderAdditionalPageHead", como mostrado:

<ASP:Conteúdo ContentPlaceholderID = "PlaceHolderAdditionalPageHead" runat = "server">

<script

    Type = "text/javascript"

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

</script>

<script type = "text/javascript">

  $(documento).pronto(função() {

   // Coisas de jQuery brilhante vai aqui.

   });

</script>

</fim>

Subscreva ao meu blog.

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

Em louvor da jQuery Enhanced-como-você-tipo de pesquisa (por Jan Tielens)

Estou trabalhando em uma demo BPOS (em breve estar disponível até no Microsoft do site) e eu queria adicionar mais energizado. Eu já sabia De Jan Tielen os esforços por um bom tempo e eu pensei que seria uma ótima técnica para adicionar para o demo, Então eu fiz. Você pode ler sobre isso aqui: http://weblogs.asp.net/jan/archive/2009/07/02/sharepoint-search-as-you-type-with-jquery.aspx. É tão simples de usar provavelmente devem ser um crime (e talvez esteja em algum lugar).

Acrescento apenas dois pontos para o que ele já criou / escreveu sobre:

  1. Isto faz, Na verdade, trabalhar em um BPOS (SharePoint online) meio ambiente.
  2. Para fazer o trabalho sem um prefixo de mensagem pop-up irritante a referência a biblioteca jquery com https em vez de http, como em:
<script type ="text/javascript" src ="https://Ajax.googleapis.com/AJAX/libs/jQuery/1.3.2/jQuery.min.js"></script>

Jan ressalta que você provavelmente deve mover a própria biblioteca para seu site. Sentindo um pouco preguiçoso hoje, I decided to blog about it instead 🙂

</fim>

Este é outro post em meu série em curso sobre como usar jQuery com o SharePoint.
Se você quer aprender mais sobre jQuery, Eu recomendo: jQuery em ação por Bibeault de urso e Yehuda Katz.

Subscreva ao meu blog.

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

Technorati Tags:

Proteger exibições da biblioteca de documento da lista SharePoint parece (tipo de) Possível com jQuery

Este é outro post em meu série em curso sobre como usar jQuery com o SharePoint.
Se você quer aprender mais sobre jQuery, Eu recomendo: jQuery em ação por Bibeault de urso e Yehuda Katz.

Uma das primeiras coisas que pensei, Depois que eu comecei a jogar ao redor com jQuery, era se poderia usá-lo para garantir um modo de exibição do SharePoint. A resposta é "não" (ou pelo menos, Não estou a dizer que é possível). No entanto, é certamente possível tornar difícil para as pessoas verem uma visão particular.

Eu comecei com meu ambiente sandbox quando trabalhando nisso. Eu escrevi sobre esse ambiente aqui: Rápido e fácil: Crie seu próprio jQuery Sandbox para SharePoint.

Para "fixar" uma visão, Siga estes passos:

  1. Criar uma exibição que você deseja proteger. Eu fiz isso e chamou-lhe "Garantiu View".

    Isto é o que parece quando ele não é "seguro":

    image

  2. Adicionar uma web part do editor de conteúdo para a página do modo de exibição usando o truque descrito no artigo da caixa de areia (ou seja. Adicionar "PageView = Shared&ToolPaneView = 2 "para a URL).
  3. Descobrir seu SharePoint _spUserId seguindo estas etapas loucas, Acredite ou não:
    1. Entrar no ambiente do SharePoint.
    2. No campo de endereço do navegador da web, tipo: "javascript:alerta(_spUserId").
    3. Gravar o resultado (é "13", no meu caso).

      image

  4. Adicionar o seguinte javascript para seu CEWP na visualização de código:

    <script type ="text/javascript"
        src ="../../jQuery Library/jQuery-1.3.2.min.js">
    </script>
    
    <script type ="text/javascript">
      $(função() {
    
        alerta(_spUserId);
    
        var theSecuredView = $(' iframe[FilterLink FilterLink * = 20View % garantido]');
    
        se ((theSecuredView.length > 0) && (_spUserId = = 13))
          $(' iframe[FilterLink FilterLink * = 20View % garantido]').pai().pai().pai().HTML("<TR bgcolor = vermelho><TD>Sem vista para você!</TD></TR>");
      });
    
    </script>
    

Eu incluí o alerta(_spUserId) linha lá para demonstrar como isso não é realmente um "protegendo" uma visão, Mas simplesmente tornando mais difícil de ver. Mais sobre isso em um momento.

Basicamente, jQuery está à procura de um iFrame na página que tem um atributo que contém "Secured % 20View" em seu valor. Uma vez que ela encontra-lo, Podemos verificar se o usuário atual é "13". Se é, caminhamos até o DOM de uma <TR> Tag (que eu descobri, exibindo a fonte e rastreá-lo) e então, substituindo aquela marca TR com minha mensagem. Não sei mesmo como robusto é (Eu sou muito suspeito, Na verdade), Mas funcionou na minha caixa de areia. Se eu encontrar uma maneira melhor, I'll blog sobre isso. Este é o resultado:

image

Eu clico no botão OK e os dados são substituídos com uma grande mensagem vermelha:

image

Como você pode dizer, do jeito que eu ter que implementar essa solução de "segurança" é permitir que a web part para processar-se. Depois que termina, Eu substituir seu conteúdo com meu "sem vista para você!"mensagem.

Apesar do fato de que não é realmente um "seguro" "vista, é potencialmente útil e com um trabalho inteligente, pode eventualmente ser protegido em um sentido mais formal. A questão fundamental é que o cliente vai receber todos os dados e então, Só depois que obtém os dados, -apagar. Se o cliente está recebendo os dados, um usuário esperto pode impedir a execução de todo de jQuery e vê o que quer ver.

Há outros inconvenientes. Esta abordagem de "segurança" é baseada fora de um _spUserId. Queremos realmente seguro com base no modelo de segurança do SharePoint completo, ou pelo menos por nome de usuário. Isso torna-se progressivamente mais difíceis, Mas vejo algumas coisas boas sobre este assunto, Então eu estou esperançoso de que há uma boa resposta para esse problema.

A lista de pontos de vista se deve ser aparada., se possível. Não tentei descobrir isso. Eu suponho que é possível, Mas realmente não resolve o problema de segurança fundamentais porque alguém poderia ainda apenas digite a URL do modo de exibição que eles querem (Se soubessem que). No entanto, aparar faz sentido. É uma característica de boa usabilidade e ajuda a ofuscar as coisas. Se um usuário final não sabe que o evento de exibição existe, Eles provavelmente não vão tentar usá-lo. Às vezes, Isso é bom o suficiente.

Com sorte, Eu vou ter mais para escrever sobre este assunto ao longo do tempo.

</fim>

Subscreva ao meu blog.

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

Rápido e fácil: A melhor maneira de usar jQuery para ocultar um campo de texto em um formulário do SharePoint

Este é outro post em meu série em curso sobre como usar jQuery com o SharePoint.
Se você quer aprender mais sobre jQuery, Eu recomendo: jQuery em ação por Bibeault de urso e Yehuda Katz.

Anteriormente, Eu escrevi sobre como usar jQuery para localizar e ocultar um campo de texto em um formulário. Não me importava para o enfoque específico (Foi de encadeamento pais – que simplesmente não é feito hoje em dia, pelo menos em famílias de qualidade).

Quando comecei a pensar nisso, Eu sabia que precisava encontrar um <TR> ao qual eu poderia invocar a ocultar() Método. Meu esforço inicial para encontrar o correto <TR> foi algo assim:

$(' tr:tem(entrada[título = esconder-Me!])');

O problema é que que ele iria encontrar cada <TR> marca que tinha qualquer relação de pai para a ocultar-Me! campo, mesmo que Me esconder! é aninhado profundamente em muitos níveis <TR>é. Acontece que no meu formulário de caixa de areia, Essa expressão encontra 9 TR diferentes que têm Me esconder! como uma criança em algum lugar na sua árvore DOM. Eu percebi que eu poderia andar volta para a árvore do campo entrado própria, então é isso, como eu acabei abusando de pais, mas ele não se sente bem comigo.

Eu dei algum pensamento para isso e uma das coisas que li finalmente fez sentido: Eu poderia usar o não() Método para cortar fora <TR>é que não quero no meu conjunto de quebra automática. Isso me levou a isto:

$(' tr:tem(entrada[título = esconder-Me!])').não(' tr:tem(TR)').esconder();

O primeiro bit encontra todos os <TR> marcas que têm a esconder-Me! campo em qualquer lugar na sua própria hierarquia. Ele então retira qualquer <TR> que também tem um filho <TR>. Isto nos deixa com um único <TR> que:

1) Não tem nenhum <TR> registros filho

2) Tem o campo de entrada como criança.

Podemos então aplicar a ocultar() Método para o resultante definido e pronto.

Ainda estou um pouco nervoso sobre isso, mas não tão nervoso como pais de encadeamento.

Não sei se isso é uma prática recomendada ou não. Pode haver uma maneira mais adequada de identificar apenas o <TR> que nos interessa em um formulário do SharePoint. Se você sabe, por favor, poste um comentário.

</fim>

Subscreva ao meu blog.

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

Rápido e fácil: Usando jQuery para ocultar um campo de texto em um formulário do SharePoint

Este é outro post em meu série em curso sobre como usar jQuery com o SharePoint.
Se você quer aprender mais sobre jQuery, Eu recomendo: jQuery em ação por Bibeault de urso e Yehuda Katz.

ATUALIZAÇÃO (já!): Eu acho que a melhor maneira de localizar o <TR> marca eu quero esconder e escrevi sobre isso aqui. Você pode encontrar este artigo interessante de qualquer forma estou leavnig-se.

Eu quero ocultar um campo de texto, "Me esconder!"como mostrado:

image

A seguir jQuery faz o truque para mim:

<script type ="text/javascript">

  $(função() {


    $(' entrada[título = esconder-Me!]').pai().pai().pai().esconder();

  });

</script>

O código está dizendo, "find me entrada todos os campos cujo título = esconder-Me!. Em seguida, seu pai e clique em seguida avançar pai e o * próximo * pai (Ufa!) e invocar a ocultar() Método em que coisa, tudo o que acontece de ser.

Eu descobri que a estrutura pai exibindo o HTML para o formulário que SharePoint criado como mostrado:

<TR>
    <TD NoWrap= "true" VAlign= "top" Largura= "190px" Classe= "ms-formlabel">
        <H3 Classe= "ms-standardheader">
            <sem-serifbrdiv>Me esconder!</sem-serifbrdiv>
        </H3>
    </TD>

    <TD VAlign= "top" Classe= "ms-formbody" Largura= "400px">
        <!-- FieldName = "Ocultar-Me!"
                 FieldInternalName = "Hide_x0020_Me_x0021_"
                 FieldType = "SPFieldText"
        -->
        <extensão dir= "none">
            <entrada
                nome= "ctl00$ m$ g_bdb23c2c_fde7_495f_8676_69714a308d8e$ ctl00$ ctl04$ ctl02$ ctl00$ ctl00$ ctl04$ ctl00$ ctl00$ TextField"
                tipo= "texto"
                MaxLength= "255"
                ID= "ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
                título= "Ocultar-Me!"
                Classe= "ms-long" />
                <br>
        </extensão>


    </TD>
</TR>

Esta imagem mostra o mesmo, mas marcado com os pais:

image

Primeiro pai (1) é uma marca de span. Pai do intervalo (2) é uma marca de TD e, em seguida, finalmente chegamos ao real pai eu quero esconder (3) que é a própria marca TR.

Esta é uma abordagem muito terrível, que acho que porque é extremamente dependente da estrutura muito específica desta forma. Quando SharePoint 2010 sai, toda esta estrutura poderia mudar e quebrar esta abordagem. O que eu realmente quero fazer é ofício um seletor do jQuery que é ao longo das linhas de "encontra-me todos os TR (e apenas tags TR) que tem em algum lugar em seus elementos filho um campo de entrada cujo título = esconder-Me!”. Eu a partir do fundo e movendo-se. Supondo que eu descobrir isso, Vou postar um actualizado "rápido e fácil ' post.

</fim>

Subscreva ao meu blog.

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

Rápido e fácil: Crie seu próprio jQuery Sandbox para SharePoint

Este é outro post em meu série em curso sobre como usar jQuery com o SharePoint.
Se você quer aprender mais sobre jQuery, Eu recomendo: jQuery em ação por Bibeault de urso e Yehuda Katz.

Introdução ao jQuery no SharePoint é surpreendentemente fácil (Para mim). (Tenho sérias dúvidas sobre uma abordagem de "melhores práticas" para implantar essas coisas para produção, mas isso é para outro dia). Eu só comecei a jogar com esta tecnologia e para esse fim, Eu criei um ambiente seguro de usar. Se você estiver olhando para começar a trabalhar com jQuery, Você pode encontrar esta abordagem útil.

1. Criar um Site em branco

Criar um site em branco em algum lugar no seu site e chamá-lo algo inteligente como "jQuery Sandbox".

2. Download jQuery

Você pode baixar a biblioteca javascript jQuery aqui: http://docs.jquery.com/Downloading_jQuery

Que, para salvar no seu desktop.

Tenho vindo a utilizar a versão "minified".

3. Criar uma biblioteca de documentos do SharePoint

Em seu site seguro, criar uma biblioteca de documentos.

4. Carregar a biblioteca jQuery para SharePoint

Acessar a biblioteca de doc que você acabou de criar e carregar a biblioteca jQuery.

5. Criar uma lista do SharePoint personalizado

Eu comecei com uma lista personalizada porque quero ficar rindo com formulários padrão do SharePoint. Você também pode criar uma página em uma biblioteca de páginas ou páginas de web parts e, provavelmente, um monte de outros lugares.

Adicionar algumas colunas de lista personalizada para que você tenha algo para executar jQuery contra. Meus objetivos iniciais foram:

  1. Ocultar um campo.
  2. Atribuir um valor a um campo.

Com esse objetivo em mente, Eu adicionei dois campos de texto. Ao longo do tempo, Eu vou estar jogando com links, imagens, pesquisas de, etc.

6. Modificar NewForm. aspx Web Part Page e adicionar uma Web Part do Editor de conteúdo

Isso é um pouco de preto magic-ish , em que é um novo conceito para mim. Eu aprendi sobre isso de Paul Grenier, SharePoint jQuery Superstar, em seu site de projeto do CodePlex: http://spff.codeplex.com/.

Siga estas etapas para adicionar um CEWP para a mesma página que mostra NewForm. aspx para qualquer lista personalizada:

  1. Acessar a lista personalizada e clique em novo.
  2. Acrescentar o seguinte URL: PageView = compartilhado&ToolPaneView = 2

Que irá transformar o seu formulário de entrada de dados de baunilha chato de algo parecido com isto:

image

Para isso:

image

Adicionar a web part do editor de conteúdo para a página.

7. Escrever seu primeiro jQuery código

Abrir esse CEWP na exibição de código e adicione o seguinte:

image

Aqui está o código real, se você deseja copiar/colar:

<script type ="text/javascript"
    src ="../../jQuery Library/jQuery-1.3.2.min.js">
</script>

<script type ="text/javascript">
  $(função() {

    $('#resultsID').HTML('Há' + $('a').Tamanho() + 'um tags tags nesta página.');

  });
</script>

Resultado:
<div id ='resultsID'></div>
/resultado

Observe que o primeiro <script> marca faz referência a biblioteca jQuery real. Presumivelmente, essas coisas mudam com o tempo, Então você vai querer ter certeza de uma) usar o nome certo e b) aponte para a biblioteca de documentos do SharePoint correta.

Aquecer na glória

Se você fez isso corretamente, você verá um resultado semelhante ao seguinte:

image

Resumindo

Esta não é a única maneira de começar, mas é rápido, fácil e isolada do seu ambiente do SharePoint existente.

</fim>

Subscreva ao meu blog.

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

Rápido e fácil: Usar jQuery para valor do definir um campo de texto em um formulário do SharePoint

Comecei a brincar com jQuery ontem. Estou querendo fazer isso há muito tempo, desde que Paul Grenier comecei a escrever sua série sobre jQuery para usuários finais no Venerável www.endusersharepoint.com Web site. Como usá-lo, Espero acrescentar que uma série de "Rápida e fácil" posts como este. Este post descreve como definir valor um campo de texto conhecido a qualquer coisa que você quer.

Neste cenário, Eu criei uma lista personalizada, cuja "nova" forma olha como mostrado:

image

Este é o novo formulário para uma lista personalizada com a coluna de título padrão e duas colunas de lista (não as colunas de site; Eu não acho que ele deve fazer toda a diferença).

O objetivo é atribuir um valor arbitrário para o campo, "DefaultMeFieldNoSpaces" (Você pode dizer que eu sou um pouco de um covarde com a coisa "sem espaços" acontecendo, mas combiná-lo no final deste artigo).

Este pouco de jQuery, funcionado para mim:

<script type ="text/javascript">

  $(função() {

    $(' entrada[título = DefaultMeFieldNoSpaces]').attr(
        {valor: ' Você está em um labirinto sinuoso de passagens, todos iguais.'});

  });

</script>

Pelo que entendi este pouco de jQuery está dizendo, "me encontrar qualquer entrada tag cujo título = DefaultMeFieldNoSpaces. Em seguida, conjunto todos os seus valores de uma famosa frase de um antigo jogo de computador."

Uma vez que só haverá um campo no formulário com um título igual ao "DefaultMeFieldNoSpaces" Estamos garantida de atribuir um valor ao campo e nenhum outro.

Que tal um campo cujo nome tiver espaços? É quase a mesma coisa:

<script type ="text/javascript">

  $(função() {
     $(' entrada[título = atribuir o campo com o espaço]').attr(
        {valor: ' Você está em um labirinto sinuoso de passagens, todos iguais.'});

  });

</script>

Acho que essa é uma abordagem bastante segura, significa que poderemos encontrar os campos que queremos e só o que queremos.. Se você olhar para o SharePoint de HTML está nos dando., é meio confuso:

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

"título" destaca-se como um atributo reconhecível e espero que única para nos ajudar a identificar a coluna específica ao qual queremos atribuir o nosso valor arbitrário.

Este é um conceito fundamental. Configuração de um campo de forma arbitrária, assim não vai ganhar nenhum prêmio. No entanto, Se nós queremos fazer coisas de nível de formulário mais interessantes (que todos nós queremos sempre fazer, É claro, logo depois que terminar de lavar a louça), como alterar o valor de "b campo" automaticamente com base no valor do "campo um", Nós (EU) necessidade de aprender essas coisas.

Acho que nossa melhor chance de obter um valor útil real aqui é via o título, pelo menos para os campos de texto. Pode haver um melhor, abordagem mais confiável. Se eu encontrá-lo, Vou atualizar este post. Se você conhece uma maneira melhor, por favor, deixe um comentário.</fim>

</fim>

Subscreva ao meu blog.

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