Tag Archives: JavaScript

Rápido e fácil: Criar um Site do SharePoint usando o resto

Há um monte de recursos em torno do que mostram como fazer isso, Mas não consegui encontrar um link abrangente que, Então, aqui estamos....

Você pode criar um site do SharePoint usando a API REST.  Aqui está um exemplo totalmente cozido:

<!--
    SiteRequestForm.html: Coletar informações e criar um site para o usuário.
-->

<Centro>
<tabela>
    <TR>
        <TD>Nome do site:</TD>
        <TD><entrada tipo= "texto" nome= "NomeDoSite" ID= "NomeDoSite" /></TD>
    </TR>
    <TR>
        <TD ColSpan= 2"">
            <entrada tipo= "submit" ID= "CreateSiteButton" valor= "Criar o Site" />
        </TD>
    </TR>
</tabela>
</Centro>

<script src="../Plugins/jQuery-1.11.0.min.js"></script>

<script>
var CreateSiteLogicContainer = {

    createSiteData: {
            "parâmetros": {
                __metadata: { "tipo": "SP.WebInfoCreationInformation" },
                URL: "Paultest1",
                Título: "Paultest1",
                Descrição: "web resto-criado por Paul!",
                Língua: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: falso
            }
    },

    createSite: função () {

        jQuery.support.cors = verdadeiro;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").Val();
        
        $.Ajax({
            URL: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            Método: "POST",

            cabeçalhos: {
                "Aceitar": "application/json; OData = verbose",
                "content-type": "application/json;OData = verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            dados: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            sucesso: função () { alerta("o sucesso"); },
            erro: função () { alerta("erro"); }

        });
    },

    wireUpForm: função () {
        $("#CreateSiteButton").Clique em(função () {
            alerta("Prestes a experimentar e criar o site.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</script>

Quando bem sucedida, se um pacote JSON em resposta assim:

image

Meus pensamentos chaves e aprendizados desta incluem:

  • Essa abordagem usa jQuery.  No meu caso, minha biblioteca jQuery situa-se em ".../ plugins. "  Você vai querer mudar isso para seu local favorito de JQ.
  • Você pode copiar e colar o trecho inteiro em uma Web Part do Editor de conteúdo em uma página e deve funcionar bem.  Você vai querer mudar o ponto de extremidade da chamada de API e certifique-se de que fazer referência JQ corretamente.
  • O URL é relativo para o ponto de extremidade de sua API.  No meu caso, é criar subsites por baixo https://bigapplesharepoint.com
  • Você não precisa fornecer um conteúdo-comprimento. Alguns posts e MSDN documento implica que você faz..., Mas aconteceu-me automaticamente, que presumo que está sendo manipulado pela chamada AJAX $ em si.
  • Esta linha é necessária para evitar uma resposta de "proibida": "X-RequestDigest": $("#__REQUESTDIGEST").Val().  Existem outras maneiras de fazê-lo, Mas isso é muito bom.  Eu perdi o link para o blog que forneceu este atalho.  H/T para você, blogueiro misterioso!

Boa sorte e espero que isso ajude alguém.

</fim>

undefinedSubscreva ao meu blog.

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

Rápido e simples: SharePoint resto chamar só retorna 100 Registros

Tenho trabalhado em um site público enfrentam para a minha prática de SharePoint aqui em Nova Iorque e ele usa um monte de chamadas JavaScript e o resto para mostrar o conteúdo.

Durante o desenvolvimento da linha principal, Criar um pequeno conjunto de dados com apenas 10 ou então linhas em uma lista personalizada e todas as minhas chamadas de resto tirou de lá.  Uma vez eu cruzei a lista para ter umas 100 linhas de dados para testar para o crescimento esperado, Eu achei que eu estava ficando exatamente 100 linhas retornadas na minhas chamadas REST.

Isso é uma coisa muito simples para o endereço.  No meu caso (e eu acredito que na maioria dos casos), o padrão resto chama para SharePoint (e possivelmente como um padrão da indústria?) Voltar 100 linhas.  Para retornar mais do que o padrão, Use o parâmetro $top no seu telefonema, como em:

OBTER /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/itens?$Selecione = ID,Título,Categorias/título,Blog_x0020_Author/título,DatePublished,BlogSummary&$expandir = Blog_x0020_Author,Categorias&$filtro =&$Top = 9999

Eu escolhi 9999 Neste caso já que sei que growth-wise, Não haverá mais de 200 ou então linhas adicionadas a esta lista em um ano.  Se torna-se desajeitado, Podemos implementar uma paginação na estrada.

</fim>

undefinedSubscreva ao meu blog.

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

Coitado do cache em JavaScript

[TL;DR versão: utilizamos cookies para armazenar os resultados de chamadas assíncronas; processar os resultados das últimas chamadas assíncronas imediatamente e em seguida, validá-los após o carregamento da página.]

Tenho trabalhado no site de intranet do SharePoint para um cliente que apresenta, entre outras coisas, uma navegação secundária estilizada, cujas opções de menu são gerenciadas através de uma lista personalizada velha regular.  A idéia é que o cliente obtém controle menu do "seu" site sem afetar ou ser afetado pela navegação global, por isso.

(Há algo de incrivelmente subversiva sobre a adição de um CEWP que aponta para um arquivo HTML que carrega alguns CSS e JS fundamentalmente alterar quase tudo sobre o comportamento de um site... mas isso é para outro post)

O código para esta bem simples:

O local dolorido, aqui é que toda vez que alguém bate uma das páginas do site, navegador da web do usuário que está tentando para obter os itens da lista.  Uma vez que o colaborador é completo e teste provou coisas para ser estável e completa, Essa chamada não é necessário mais do que 99% o tempo desde o menu raramente muda.  Também tem um estranho efeito de interface do usuário que é comum este admirável mundo novo de hiper-ajaxy web sites – processa a página e só então é que o menu render.  É nervosa e distraindo na minha opinião.  E nervoso. Assim, armazenamento em cache. 

Eu modifiquei a lógica desta forma:

  • Procure um cookie no navegador que contém o menu como última li-
    • Se encontrou, torná-lo imediatamente.  Não espere terminar o carregamento da página.  (Você precisa ter certeza de que seu HTML é estrategicamente colocado aqui, Mas não é difícil de fazer).
  • Esperar a página terminar de carregar e fazer async chamada para carregar itens de menu de uma lista usando o resto ou Lists. asmx ou qualquer outro
  • Comparar o que eu tenho contra o cookie
    • Se combina com, PARAR
    • Caso contrário, usando jQuery, popular dinamicamente um bando se <Li>está em um <UL>
  • Usar CSS para fazer toda a formatação
  • Lucro!

Alguns de vocês vão dizer, "Ei! Não há verdadeiro cache aqui desde que você está lendo o menu Enfim cada vez que.”  E você está certo-eu não vou dar o servidor qualquer tipo de pausa.  Mas porque a chamada é assíncrona e acontece após a página inicial carga HTML totalmente processa, "parece" mais ágil para o usuário.  O menu processa muito tanto quanto desenha a página.  Se o menu acontece para a mudança, o usuário é submetido a uma re-desenhar nervoso do menu, Mas só uma vez.

Existem algumas maneiras de tornar mais eficaz esta cache e ajudar o servidor ao mesmo tempo:

  • Colocar em uma regra que o cache de"cookie" é válido por um período mínimo de 24 horas ou algum outro período de tempo. Enquanto não há nenhum cookie expirado, Use o instantâneo de menu do cookie e nunca bateu o servidor.

Bem... isso é tudo o que vêm à mente agora :). 

Se alguém tiver alguma idéia inteligente aqui eu adoraria conhecê-los.

E por último – esta técnica pode ser usada para outras coisas.  Página do cliente, este tem uma série de coisas orientado a dados em várias páginas, muitos deles relativamente raramente mudando (como uma vez por semana ou uma vez por mês).  Se você destinar a áreas específicas de funcionalidade, Você pode dar uma interface de usuário mais responsiva puxando o conteúdo da loja do cookie local e tornando-se imediatamente.  Parece mais rápido para o usuário, mesmo se você não está salvando o servidor qualquer ciclos.  Você pode Salve os ciclos de servidor por decidir em algumas condições e gatilhos para invalidar esta cache local de cookie.  Isso é tudo situacional e artsy coisas e realmente a coisa mais divertida :). 

</fim>

undefinedSubscreva ao meu blog.

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