SharePoint Conversa tenda aberta Q&Unha sesión de xoves 08/13 @ 12:30 AM EDT

Arcovis estará hospedando a nosa segunda "Tenda do SharePoint Talk" sesión deste xoves ás 12:30 AM EDT. Show up with your SharePoint questions and we’ll do our best to entertain you with banjo jokes, smart but harmless put-downs of our fellow panelists and maybe even answer a question or two. This week’s “official” panel includes yours truly, meu Arcovis socios (Natalya Voskresenskaya e Harry Jones) e Laura Rodgers (de Twitter & EndUserSharePoint fama). Bob fox threatened to join too, but I don’t take that too seriously. Last time, tivemos un gran nivel de participación do público, que turba a liña entre relatores e participantes e espera que o mesmo ocorrerá xoves.

Este evento é co-patrocinado polo Grupo de Sistemas Integrados e Servizos (www.issgroup.net).

Por favor rexístrate aquí: https://www323.livemeeting.com/lrs/8000043750/Registration.aspx?pageName=9xrzxfs9x34sb0sm

Se ten preguntas que lle gustaría que tomemos, just dial into the call and ask it. If you want us to think about it first, envíanos un correo-e ou deixe un comentario aquí.

Vexa vostede, a continuación,!

</final>

Rexístrate para o meu blog.

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

Condicións pre-existentes: Modelos do SharePoint alerta para o rescate (?)

One of my clients worked with a previous contractor to build out a small but useful HR application for the enterprise. That contractor used SharePoint Designer to implement the workflow portion of the solution. It’s a bit of a mess. Por exemplo, there are nine SPD workflows in support of a single logical workflow process and up to five of them may fire simultaneously at any given time given the right conditions. It’s not easy to debug 🙂

O meu cliente ten un número de aínda pendentes previa, one of which is to generally provide more context when the system sends out email alerts – both in the email itself as well as associated task forms. As SPD workflow implementers know, the “collect data from user” SPD action actually creates a task with a custom content type. When we use that action, we don’t get to specify much. We can prompt for some values (e.g. "Aprobar" ou "negar") and we can specify a hard coded value in the title and description. That’s about it.

Esixencia do meu cliente é dúas veces:

  1. Cando o SharePoint envía un correo electrónico sobre unha asignación de tarefa, incluír unha morea de información sobre a tarefa no corpo do correo.
  2. Máis importante, de lonxe – cando o usuario fai clic na ligazón tarefa de correo-e, the task form should have all the information the approver needs in order to make his/her approve or deny decision. Right now, the manager needs to click on the item link itself to drill down into the underlying details and no one likes that. You have to click in the email. Then you need to click a sort of obscure link on the task item. Then you can look at the underlying data (unha forma InfoPath neste caso). Then you click back/back, etc. Everyone hates it.

Eu herdei esta solución un tanto confuso técnica e quero facer cambios na forma menos intrusiva posible.

The approach I’m taking right now is to create a custom alert template. Pode ler máis sobre iso aquí. The flow works like this:

  • SPD fluxo de traballo é executado.
  • Nalgún momento, que atribúe unha tarefa a un director.
  • SharePoint system automatically sends out an alert to that manager. This is not part of the SPD workflow but rather “what SharePoint does.” (O servizo de axustado dunha decena do SharePoint, Creo).
  • Un manipulador de alerta personalizado é invocado en favor do proceso estándar de alerta (seguindo as normas de máxicas como se describe no artigo anterior fai referencia a).
  • Cando o meu manipulador personalizado alerta é executado, it generates a beautiful email. Máis importante, xa que ten a tarefa na man, tamén decora a tarefa real con todo o contexto da información necesaria para satisfacer o requisito de negocio.
  • O usuario recibe o correo electrónico e está cheo de información de contexto útil.
  • O usuario fai clic na ligazón e tarefa a tarefa en si está cheo de información de contexto útil.
  • Todo o mundo vai a casa ter crema de sandía e xeo.

I did a quick POC and it works well in a lab environment. I get my custom email alert as expected. I also get to update the task description and title itself.

A única parte complicada, ata agora, para evitar unha situación na que as actualizacións alerta o elemento, triggering another alert. This doesn’t worry me.

Parece prometedor ata agora ...

The great thing about this is that I don’t need to muck about with any of the existing SPD workflows. They are blissfully unaware that an alert handler is “IIZ RUNNIN IN da xustificación, Decoratin tarefa TEH LISTA WiF CONTEXTO MOAR".

</final>

Rexístrate para o meu blog.

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

Ao vivo SharePoint Q&Unha sesión de xoves 07/30/09 @ 12:30 AM EDT terminando 1:30AM EDT

Actualizar: The format for this is basically a conference call with a couple of PPT slides to set the stage. We have a SharePoint environment on stand by to fire up in case it helps out, but this is mainly people talking out loud. There will be opportunities for follow up by email.

Volvendo á miña conferencia SharePoint primeiro, pouco máis dun ano, Fun alcanzado por unha terrible como Q en directo&A session can be. The conference organizers had put together a sort of ad hoc group of “experts” (i.e. persoas que estaban pendurados arredor e non tiveron medo de ollar para boba encima do escenario) to answer any questions that came from the audience in the room. It was in my head back then, e periodicamente desde entón, to host a similar session but do it on line and the phone. I don’t think it can be as good as an in-person Q&Unha sesión, pero eu creo que podería ser moi legal.

Finalmente teño tempo para iso e vindeiro xoves, 07/30, a miña empresa (Arcovis) e compañeiro de empresas, Sistemas Integrados e Servizos grupo, estará hospedando un Q&A like that. I’m hoping to do these regularly, as often as weekly.

A sesión inaugural será, probablemente, un pouco accidentado, pero o concepto é este:

  • Se ten preguntas que desexa responder durante a sesión, só mostrar-se e pedir.
  • Se quere, pode enviar correo-e a cuestión con antelación.

Pretendemos pasar a primeira metade do q&Un sobre cuestións enviadas por correo e logo abri-lo para calquera cousa que alguén pregunta por que.

A sesión ten lugar o xoves, 07/30 comezando o 12:30 e rematando no 1:30 AM EDT.

Se che interesa, xentilmente Rexístrese aquí: https://www323.livemeeting.com/lrs/8000043750/Registration.aspx?pageName=pxlsd9fpsm2md7h9

The panel will include me and other SharePoint luminaries. You’ll have to sign up to find out who they are 🙂

Se desexa ser un dos luminares para un futuro Q&Unha sesión, deixe-me saber.

</final>

Rexístrate para o meu blog.

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

Technorati Tags:

Inserir Anotacións dun creador Dentro de formularios InfoPath

Eu aínda estou vivindo no mundo de formularios InfoPath e eu precisaba facer unha desas "pequenas" cambio de forma que, por desgraza, breaks a naming convention I adopted with it two weeks ago. Eu penso para min mesmo, "Alguén vai mirar para esa cousa de aquí a un ano e dicir, "O que estaba a pensar Paul? By Jove, súa convención de nomenclatura non ten sentido!"

Entender que eu podería crear un punto de vista sobre a forma para iso e, a continuación,, unha vez, realized that I could have been doing something like this all along. I added a “Developer Notes” view to the InfoPath form as such:

image

Eu configurei o formulario para que os usuarios non poden chegar a ese punto de vista e, polo tanto,, it’s only visible with the InfoPath client in design view. Now I feel a little inoculated against some future unknown developer looking at my form and thinking bad thoughts about me. Phew!

</final>

Rexístrate para o meu blog.

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

Technorati Tags:

Xestionar Views InfoPath

Paréceme pasar por fases onde InfoPath, fóra do azul, I’m crafting a bunch of forms. My fingers learn how to use the tool well and then I go through nine month drought and have to learn it all over again.

Eu estou no medio dunha fase InfoPath e estou creando formas do InfoPath con unha morea de puntos de vista. Unha cousa que probablemente vai notar que o InfoPath 2007 client shows views in alphabetical order. This is a real nuisance some times. My best technique these days is to prepend a number to the view name so that they always show in the order I want, como ilustrado aquí:

image

I wish I had been doing this all along.

</final>

Rexístrate para o meu blog.

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

Technorati Tags:

Forma de InfoPath Sevices, Forms Based Authentication (FBA) e os nomes de ficheiro únicos

Eu estou traballando nalgúns InfoPath forma esta semana en Moss nun ambiente FBA e aprendeu, cando fun implantar os formularios a un ambiente de produción cunha zona FBA que o nome de usuario() function function does not work. I was using it to generate unique file names.

Ben, que a función non funciona nun ambiente FBA (polo menos, non fóra da caixa). E, despois reflexión, usar nome de usuario na forma na que eu tiña planeado non tería garantido un nome de arquivo único, en calquera caso.

A miña solución foi usar agora() function and a rule that fires on loading of the form. I assign the file name to data element when it’s blank:

image

image

The advantage of this approach is that the file name is set only once. (Eu non mostra-lo na captura de pantalla, pero puxo unha condición na que a regra só dispara cando "myFilename" está en branco). I used to set the file name at the data source level. Typically, Quere facer algo (malo) así:

image

O problema con isto é que se o usuario A abre o formulario o luns eo usuario B cambia o martes, vai acabar con dúas formas distintas, xa que dous usuarios diferentes salvou con diferentes nomes de usuario.

Así, como irritante como FBA pode ser, en xeral, e co InfoPath en particular, iso me fixo repensar un detalle pequeno, pero moi importante técnica e visión que eu non faría doutra forma!

</final>

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: ,