Månedligt arkiv: Juni 2009

InfoPath-formularen tilsagnsfaktura, Formularbaseret godkendelse (FORMULARBASERET GODKENDELSE) og unikke filnavne

Jeg har været arbejder på nogle InfoPath-formularer i en FBA miljø i denne uge i MOSS og lærde, da jeg gik til at installere formularer til et produktionsmiljø med en FBA zone som brugernavnet() funktionen funktion virker ikke. Jeg brugte det til at generere entydige filnavne.

Godt, Denne funktion virker ikke i en FBA miljø (mindst, ikke ud af boksen). Og, på refleksion, ved hjælp af brugernavnet på den måde, jeg havde planlagt ville have garanteret et entydigt filnavn under alle omstændigheder.

Min løsning var at bruge nu() funktion og en regel, der brande på indlæsning af formen. Jeg tildele filnavnet til dataelement, når den er tom:

image

image

Fordelen ved denne fremgangsmåde er, at filnavnet angives kun én gang. (Jeg vise ikke det i skærmbilledet, men sætte en betingelse i reglen kun brand når "myFilename" er tom). Jeg plejede at angive filnavnet på kildeniveau data. Typisk, Jeg ville gøre noget (Dårlig) Som dette:

image

Problemet med det er, at hvis bruger A åbner formen på mandag og bruger B ændrer det på tirsdag, du vil ende op med to forskellige former, da to forskellige brugerne gemte det med forskellige brugernavne.

Så, som irriterende da FBA kan være i almindelighed og med InfoPath navnlig, det fik mig til at genoverveje en lille, men virkelig vigtige tekniske detaljer og tilgang, som jeg ikke ville have gjort ellers!

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Technorati Tags:

Sikring af SharePoint-liste/dokument bibliotek synspunkter synes (slags) Muligt med jQuery

Dette er en anden post i mit igangværende serie om hvordan man bruger jQuery med SharePoint.
Hvis du ønsker at lære mere om jQuery, Jeg kan varmt anbefale: jQuery i aktion af Bjørn Bibeault og Yehuda Katz.

En af de første ting jeg troede, Når jeg begyndte at lege med jQuery, var, om vi kunne bruge det til at sikre en SharePoint-visning. Svaret er "nej" (eller i det mindste, Jeg påstår ikke det er muligt). Dog, Det er bestemt muligt at gøre det vanskeligt for folk at se en bestemt visning.

Jeg startede med min sandkasse miljø, når du arbejder på det. Jeg skrev om dette miljø her: Hurtig og nem: Opret din egen jQuery sandkasse til SharePoint.

Til at "sikre" en visning, Følg disse trin:

  1. Oprette en visning, der skal sikre. Jeg gjorde det, og kaldte det "Sikret Se".

    Dette er hvad det ser ud, når det ikke er "sikret":

    image

  2. Føje webdelen Indholdsredigering til visningens side benytter den nummer beskrives i artikel i sandkassen (dvs. tilføje "sidevisning = Shared&ToolPaneView = 2 "til URL-adressen).
  3. Finde ud af din SharePoint-_spUserId ved at følge disse skøre trin, tro eller ej:
    1. Log ind på dit SharePoint-miljø.
    2. I webbrowserens adressefelt, type: "javascript:alarm(_spUserId").
    3. Post resultatet (Det er "13" i mit tilfælde).

      image

  4. Tilføj den følgende javascript til din CEWP i kodevisning:

    <script type ="text/javascript"
        src =".. /.. /jQuery Library/jQuery-1.3.2.min.js">
    </script>
    
    <script type ="text/javascript">
      $(funktion() {
    
        alarm(_spUserId);
    
        varians theSecuredView = $(' iframe[FilterLink * = sikrede % 20View]');
    
        Hvis ((theSecuredView.length > 0) && (_spUserId == 13))
          $(' iframe[FilterLink * = sikrede % 20View]').forælder().forælder().forælder().HTML("<TR bgcolor = rød><TD>Nogen mening for dig!</TD></Tr>");
      });
    
    </script>
    

Jeg har inkluderet denne alarm(_spUserId) Line derinde at vise hvordan det ikke virkelig en "sikring" udsigt, men blot gør det sværere at se. Mere om det i et øjeblik.

Dybest set, jQuery er på udkig efter en iFrame på den side, der har en attribut, der indeholder "Sikret % 20View" i sin værdi. Når den finder det, vi kontrollere, hvis den aktuelle bruger er "13". Hvis det er, Vi vandrer op DOM til en <TR> Tag (som jeg regnede af gennemsyn kilde og sporing af det) og derefter erstatte TR mærke med min besked. Jeg ved virkelig ikke hvor robust er (Jeg er meget mistænkelige, Faktisk), men det virkede på min sandbox. Hvis jeg kan finde en bedre måde, Jeg vil blog om det.. Dette er resultatet:

image

Jeg klikker på knappen OK og data, der er erstattet med en stor rød besked:

image

Som du kan fortælle, den måde jeg har gennemføre denne "" sikkerhedsløsning er at tillade webdelen for at gøre sig selv. Når den er færdig, Jeg overskrive indholdet med min "ingen mening for dig!"besked.

Trods det faktum, at det ikke virkelig en "sikret" "Se, Det er potentielt nyttige og med nogle kloge arbejde, Det kan i sidste ende være securable i en mere formel forstand. Det grundlæggende spørgsmål er, at klienten bliver alle data og derefter, kun når det får dataene, det tørrer det. Hvis klienten er at få data, en klog bruger kan forhindre jQuery i at køre overhovedet og se, hvad han/hun ønsker at se.

Der er andre ulemper. Denne "sikkerhed" tilgang er baseret off en _spUserId. Vi ønsker at virkelig sikker baseret på den fulde SharePoint-sikkerhedsmodel, eller i det mindste af brugernavnet. Der bliver gradvist hårdere, men jeg ser nogle gode ting skrevet om dette emne, så jeg håber der er et godt svar på problemet.

Listen over visninger, sig burde være trimmet, Hvis det er muligt. Jeg har ikke prøvet at finde ud. Jeg formoder det er muligt, men ikke virkelig løse det grundlæggende sikkerhedsproblem, fordi nogen kunne stadig bare Skriv Webadressen på den visning, som de vil (Hvis de vidste det). Dog, trimning giver mening. Det er en god usability funktion og det hjælper til at sløre ting. Hvis slutbrugeren ikke ved at se begivenheden eksisterer, de vil ikke sandsynligvis forsøge at bruge det. Undertiden, Det er godt nok.

Med lidt held, Jeg vil have mere at skrive om dette emne over tid.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Hurtig og nem: En bedre måde at bruge jQuery at skjule et tekstfelt på en SharePoint-Form

Dette er en anden post i mit igangværende serie om hvordan man bruger jQuery med SharePoint.
Hvis du ønsker at lære mere om jQuery, Jeg kan varmt anbefale: jQuery i aktion af Bjørn Bibeault og Yehuda Katz.

Tidligere, Jeg skrev om, hvordan du bruger jQuery at lokalisere og skjule et felt i en formular. Jeg var ligeglad for den særlige tilgang (Jeg kæde forældre – det er simpelthen ikke er gjort disse dage, mindst i familier af kvalitet).

Da jeg først begyndte at tænke over det, Jeg vidste, jeg havde brug at finde en <TR> som jeg kunne påberåbe sig Skjul() metode. Min tidlige forsøg på at finde den korrekte <TR> var noget som dette:

$(«tr:har(input[titel = skjule mig!])');

Problemet med det er, at den ville finde hver <TR> Tag, der havde nogen overordnet-relation til Skjul mig! felt, selv om skjule mig! er indlejret mange niveauer dybt i <TR>'s. Det viser sig, at på min sandbox form, Dette udtryk finder 9 forskellige TR, der har skjule mig! som barn et sted i sin DOM-træet. Jeg indså, at jeg kunne gå tilbage op træet fra selve input feltet, så thats hvordan jeg endte med at misbruge forældre, men det gjorde ikke sidde godt med mig.

Jeg gav nogle tanke til dette og en af de ting jeg læste endelig gav mening: Jeg kunne bruge ikke() metode til at trimme ud <TR>er jeg ikke ønsker i min indpakket sæt. Det førte mig til dette:

$(«tr:har(input[titel = skjule mig!])').ikke(«tr:har(Tr)').Skjul();

Den første bit finder alle de <TR> koder, som har skjule mig! feltet overalt i deres egen hierarki. Det derefter strimler ud nogen <TR> der har også et barn <TR>. Det efterlader os med en enkelt <TR> der:

1) Ikke har nogen <TR> underordnede poster

2) Har input felt som barn.

Vi kan derefter anvende Skjul() metoden at den deraf følgende og vi er færdig.

Jeg er stadig en smule nervøs, men ikke så nervøs som kæde forældre.

Jeg ved ikke, om dette er en bedste praksis eller ikke. Der kan være en mere hensigtsmæssig måde at identificere netop den <TR> at vi interesserer os i en form, SharePoint. Hvis du kender, Skriv venligst en kommentar.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Hurtig og nem: Bruge jQuery til at skjule et tekstfelt på en SharePoint-Form

Dette er en anden post i mit igangværende serie om hvordan man bruger jQuery med SharePoint.
Hvis du ønsker at lære mere om jQuery, Jeg kan varmt anbefale: jQuery i aktion af Bjørn Bibeault og Yehuda Katz.

OPDATERING (allerede!): Jeg tror på en bedre måde at finde den <TR> Tag jeg ønsker at skjule og skrev om det her. Du kan stadig finde denne artikel interessant alligevel så jeg leavnig det op.

Jeg ønsker at skjule et tekstfelt, "Skjul mig!"som vist:

image

De følgende jQuery gør tricket for mig:

<script type ="text/javascript">

  $(funktion() {


    $(' input[titel = skjule mig!]').forælder().forælder().forælder().Skjul();

  });

</script>

Koden er at sige, "find mig alle input felter Hvis titel = skjule mig!. Derefter, få sin overordnede og derefter næste forælder og den * næste * overordnede (Pyha!) og påberåbe sig Skjul() metode på at ting, hvad det sker for at være.

Jeg regnede ud at overordnede struktur ved at få vist HTML-koden for formularen, SharePoint oprettes som vist:

<TR>
    <TD nowrap= "true" VAlign= "top" bredde= "190px" klasse= "ms-formlabel">
        <H3 klasse= "ms-standardheader">
            <nobr>Skjule mig!</nobr>
        </H3>
    </TD>

    <TD VAlign= "top" klasse= "ms-formbody" bredde= "400px">
        <!-- FieldName = "Skjul mig!"
                 FieldInternalName = "Hide_x0020_Me_x0021_"
                 FieldType = "SPFieldText"
        -->
        <span dir= "ingen">
            <input
                Navn= "ctl00$ m$ g_bdb23c2c_fde7_495f_8676_69714a308d8e$ ctl00$ ctl04$ ctl02$ ctl00$ ctl00$ ctl04$ ctl00$ ctl00$ TextField"
                type= "tekst"
                MaxLength= "255"
                id= "ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
                titel= "Skjul mig!"
                klasse= "ms-lange" />
                <br>
        </span>


    </TD>
</TR>

Dette billede viser det samme, men markeret med forældrene:

image

Det første overordnede (1) er en span-kode. Spans overordnede (2) er TD tag og så endelig får vi til virkelige forældre jeg ønsker at skjule (3) der er TR-tag selv.

Dette er en temmelig forfærdeligt tilgang, jeg tror, fordi det er ekstremt afhængige af meget specifikke strukturen af denne formular. Når SharePoint 2010 kommer ud, denne hele struktur kunne ændre og bryde denne tilgang. Hvad jeg virkelig ønsker at gøre er håndværk en jQuery selector, der går i retning af "find mig alle TR (og eneste TR tags) der har et eller andet sted i deres underordnede elementer et inputfelt hvis titel = skjule mig!”. Jeg starter fra bunden og bevæger sig op. Antager jeg regne det ud, Jeg vil sende en opdateret "hurtig og nem ' post.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Hurtig og nem: Opret din egen jQuery sandkasse til SharePoint

Dette er en anden post i mit igangværende serie om hvordan man bruger jQuery med SharePoint.
Hvis du ønsker at lære mere om jQuery, Jeg kan varmt anbefale: jQuery i aktion af Bjørn Bibeault og Yehuda Katz.

Introduktion til jQuery i SharePoint er overraskende nemt (Til mig). (Jeg har alvorlige spørgsmål om en "bedste praksis" metode til implementering af disse ting til produktion, men det er til en anden dag). Jeg er lige begyndt at spille med denne teknologi og i forbindelse, Jeg skabt en sandkasse miljø at bruge. Hvis du søger at komme i gang med jQuery, Du kan finde denne tilgang nyttige.

1. Opret et tomt websted

Opretter et tomt websted et sted i dit websted og kalder det noget smart som "jQuery sandkasse".

2. Download jQuery

Du kan downloade jQuery javascript biblioteket fra her: http://docs.jquery.com/Downloading_jQuery

Gem det til på skrivebordet.

Jeg har blevet benytter den "minified" version.

3. Oprette et SharePoint-dokumentbibliotek

På webstedet sandkasse, oprette et dokumentbibliotek.

4. Uploade jQuery biblioteket til SharePoint

Adgang til biblioteket doc, du lige har oprettet, og uploade jQuery biblioteket.

5. Oprette en brugerdefineret SharePoint-liste

Jeg har startet med en brugerdefineret liste, fordi jeg ønsker at nusse rundt med SharePoint standardformularer. Du kan også oprette en side i et bibliotek for sider eller webdelssider og sandsynligvis en masse andre steder.

Tilføje nogle kolonner til den brugerdefinerede liste, så du har noget at køre jQuery mod. Mit oprindelige mål var at:

  1. Skjule et felt.
  2. Tildele en værdi til et felt.

Med dette mål for øje, Jeg har tilføjet to tekstfelter. Over tid, Jeg vil være at spille med links, billeder, opslag, osv.

6. Ændre siden NewForm.aspx webdel og føje webdelen Indholdsredigering

Dette er en lille sort magic-ish , i, at det er et nyt koncept til mig. Jeg første gang hørte om dette fra Paul Grenier, SharePoint jQuery Superstar, på hans CodePlex projektwebsted: http://spff.codeplex.com/.

Følg disse trin for at føje en CEWP til den samme side, der viser NewForm.aspx for enhver brugerdefineret liste:

  1. Få adgang til den brugerdefinerede liste og klik på ny.
  2. Føj følgende til URL-adressen: Sidevisning = delt&ToolPaneView = 2

Der vil omdanne din kedelige vanille dataindtastningsformular fra noget som dette:

image

Til dette:

image

Føje webdelen Indholdsredigering til siden.

7. Skriv din første jQuery kode

Lukke sig op CEWP i visningen kode og tilføje følgende:

image

Her er den faktiske kode hvis du copy/paste:

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

<script type ="text/javascript">
  $(funktion() {

    $('#resultsID').HTML('Der er' + $(«en»).størrelse() + 'en tags tags på denne side.');

  });
</script>

Resultat:
<div id ='resultsID'></div>
/resultat

Bemærk, at først <script> Tag referencing faktiske jQuery biblioteket. Formentlig, disse ting ændrer sig over tid, så du ønsker for at sikre dig en) Brug højre og b) pege på den korrekte SharePoint-dokumentbibliotek.

Bask i herligheden

Hvis du gjorde det korrekt, du vil se et resultat svarende til følgende:

image

Indpakning

Dette er ikke den eneste måde at komme i gang, men det er hurtig, nem og isoleret fra din eksisterende SharePoint-miljø.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Hurtig og nem: Bruge jQuery at indstille a tekst felts værdi på en formular, SharePoint

Jeg begyndte at spille med jQuery i går. Jeg har været der ønsker at gøre dette i lang tid, lige siden Paul Grenier begyndte at skrive hans serie om jQuery for slutbrugere på det ærværdige www.endusersharepoint.com Web site. Som jeg bruger det, Jeg håber at tilføje en serie af "Quick og nemt" stillinger som denne. Dette indlæg beskriver, hvordan du indstiller en kendt tekst feltværdien til noget, du ønsker.

I dette scenario, Jeg har oprettet en brugerdefineret liste Hvis "nye" form ser ud som vist:

image

Dette er den nye form for en brugerdefineret liste med kolonnen standard titel og to listekolonner (ikke webstedskolonner; Jeg tror ikke, det bør gøre nogen forskel).

Målet er at tildele en vilkårlig værdi til feltet, "DefaultMeFieldNoSpaces" (Du kan fortælle jeg er lidt af en kujon med den "uden mellemrum" ting i gang, men jeg spice det i slutningen af denne artikel).

Denne bit af jQuery arbejdede nemlig mig:

<script type ="text/javascript">

  $(funktion() {

    $(' input[titel = DefaultMeFieldNoSpaces]').attr(
        {værdi: «Du befinder dig i en twisty labyrint af passager, alle ens.»});

  });

</script>

Som jeg forstår det denne bit af jQuery siger, "finde mig nogen input tag hvis titel = DefaultMeFieldNoSpaces. Derefter, sæt alle deres værdier til en berømt sætning fra en gammel computerspil."

Da der vil kun være ét felt i formen med en titel lig med "DefaultMeFieldNoSpaces" er vi sikret af tildeling af en værdi til dette felt, og ingen andre.

Hvad med et felt, hvis navn er mellemrum i det? Det er næsten det samme:

<script type ="text/javascript">

  $(funktion() {
     $(' input[titel = tildele felt med plads]').attr(
        {værdi: «Du befinder dig i en twisty labyrint af passager, alle ens.»});

  });

</script>

Jeg tror, dette er en temmelig sikker metode, hvilket betyder, at vi skal kunne finde det felt, vi vil, og kun feltet ønsker vi. Hvis man ser på giver SharePoint-HTML os, Det er lidt rodet:

<input
Navn= "ctl00$ m$ g_bdb23c2c_fde7_495f_8676_69714a308d8e$ ctl00$ ctl04$ ctl02$ ctl00$ ctl00$ ctl04$ ctl00$ ctl00$ TextField"
type= "tekst"
MaxLength= "255"
id= "ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
titel= "DefaultMeFieldNoSpaces"
klasse= "ms-lange"
/>

"titel" skiller sig ud som en genkendelig og forhåbentlig enestående egenskab til at hjælpe os med at identificere de særlige kolonne som vi vil tildele vores vilkårlig værdi.

Dette er et grundlæggende begreb. Indstilling af et felt i en vilkårlig måde som dette kommer ikke til at vinde nogen priser. Dog, Hvis vi ønsker at gøre mere interessant form niveau ting (som vi alle altid ønsker at gøre, Selvfølgelig, lige efter vi er færdige til opvask), som ændrer værdien af "område b" automatisk baseret på værdien af "felt en", Vi (JEG) nødt til at lære disse ting.

Jeg tror vores bedste chance for at få en rigtig nyttig værdi her er via titlen, mindst i tekstfelter. Der kan være en bedre, mere pålidelig tilgang. Hvis jeg kan finde det, Jeg opdaterer denne post. Hvis du kender en bedre måde, Indtal en kommentar.</slutningen>

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin