maandelijkse archieven: Juni 2009

InfoPath-formulier diensten, Formulieren gebaseerde verificatie (FBA) en unieke bestandsnamen

Ik heb het werken op sommige InfoPath-formulieren deze week in MOSS in een omgeving FBA en geleerde, Toen ik ging te zetten de formulieren naar een productieomgeving met een FBA zone die de gebruikersnaam() functie werkt niet. Ik gebruikte het voor het genereren van unieke bestandsnamen.

Goed, die functie werkt niet in een omgeving FBA (ten minste, niet uit de doos). En, na rijp beraad, met behulp van gebruikersnaam in de manier waarop die ik had gepland niet zou hebben gegarandeerd een unieke bestandsnaam in ieder geval.

Mijn oplossing was om te gebruiken het nu() functie en een regel die wordt geactiveerd bij het laden van het formulier. Ik toewijzen de bestandsnaam aan data-element wanneer het leeg is:

image

image

Het voordeel van deze aanpak is dat de naam van het bestand slechts eenmaal is ingesteld. (Ik weergeven niet het in het het schermschot, maar een voorwaarde zetten de regel alleen brand als "myFilename" leeg is). Ik gebruikte om de bestandsnaam op het bronniveau gegevens. Meestal, Ik doe iets (slechte) Als dit:

image

Het probleem met dat is dat als de gebruiker het formulier opent op maandag en de gebruiker B wijzigt het op dinsdag, u zult eindigen met twee verschillende vormen aangezien twee verschillende gebruikers met verschillende gebruikersnamen opgeslagen.

Dus, als vervelend als FBA in het algemeen en met InfoPath met name kunnen, het maakte me opnieuw na te denken een klein, maar echt belangrijke technische detail en de aanpak die ik anders niet zou hebben gedaan!

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Technorati Tags:

Beveiliging van SharePoint lijst/bibliotheek documentweergaven lijkt (soort van) Mogelijk met jQuery

Dit is een andere post in mijn aan de gang zijnde reeks over hoe te gebruiken jQuery met SharePoint.
Als u wilt meer weten over jQuery, I recommend highly: jQuery in actie door Bear Bibeault en Yehuda Katz.

Een van de eerste dingen die ik dacht, Zodra ik begon te spelen rond met jQuery, was of we het gebruiken kunnen om de weergave van een SharePoint veilig te stellen. Het antwoord is "nee" (of op zijn minst, Ik beweer niet dat het mogelijk is). Echter, het is zeker mogelijk te maken het moeilijk voor mensen om te zien een bepaalde weergave.

Ik ben begonnen met mijn sandbox-omgeving bij het werken op dit. Ik schreef over dat milieu hier: Snel en eenvoudig: Maak uw eigen jQuery Sandbox voor SharePoint.

Om "veilige" een weergave, Volg de volgende stappen:

  1. Maak een weergave die u wilt beveiligen. Ik deed dat en noemde het "Beveiligd View".

    Dit is hoe het eruitziet wanneer het niet "beveiligd":

    image

  2. Een webonderdeel Inhoudseditor toevoegen aan van de weergave pagina met behulp van de truc in het sandbox-artikel beschreven (dwz. toevoegen "PageView = gedeelde&ToolPaneView = 2 "naar de URL).
  3. Erachter te komen uw SharePoint _spUserId door gek volgt, geloof of niet:
    1. Log in op uw SharePoint-omgeving.
    2. In het adresveld van de webbrowser, type: "javascript:waarschuwing(_spUserId").
    3. Record het resultaat (het is "13" in mijn geval).

      image

  4. De volgende javascript toevoegen aan uw CEWP in de codeweergave:

    <script type ="text/javascript"
        src =".. /.. /jQuery Library/jQuery-1.3.2.min.js">
    </script>
    
    <script type ="text/javascript">
      $(functie() {
    
        waarschuwing(_spUserId);
    
        var theSecuredView = $(' iframe[FilterLink * = beveiligde % 20View]');
    
        Als ((theSecuredView.length > 0) && (_spUserId == 13))
          $(' iframe[FilterLink * = beveiligde % 20View]').bovenliggende().bovenliggende().bovenliggende().HTML("<TR bgcolor = rood><TD>Geen weergave voor u!</TD></tr>");
      });
    
    </script>
    

Ik heb opgenomen waarmee attent(_spUserId) lijningang daar om aan te tonen hoe dit is niet echt een "beveiligen" een weergave, maar gewoon waardoor het moeilijker om te zien. Meer op dat in een moment.

In principe, jQuery is op zoek naar een iFrame op de pagina die een kenmerk dat "Beveiligde % 20View" in haar waarde bevat heeft. Zodra het het vindt, We controleren om te zien of de huidige gebruiker is "13". Als het is, We lopen het DOM aan een <TR> Label (die ik bedacht door bron weergeven en het traceren) en vervolgens vervangen die tag TR met mijn bericht. Ik weet echt niet hoe robuust dit is (Ik ben zeer verdacht, Eigenlijk), maar het werkte in mijn zandbak. Als ik een betere manier te vinden, Zal ik blog over het. Dit is het resultaat:

image

Ik klik op de knop OK en de gegevens is vervangen door een grote rode bericht:

image

Zoals u kunt zien, de manier waarop ik heb implementeren deze 'Beveiliging' oplossing is om het webonderdeel te maken zelf. Nadat het is voltooid, Ik overschrijven inhoudelijk met mijn "geen weergave voor u!"bericht.

Ondanks het feit dat het is niet echt een "beveiligde '" weergave, is het potentieel nuttig en met sommige slimme werk, het uiteindelijk mogelijk beveiligbare in een meer formele zin. Het fundamentele probleem is dat de cliënt alle gegevens krijgt en vervolgens, pas nadat het de gegevens ophaalt, het tenietdoet het. Als de client is het verkrijgen van de gegevens, een slimme gebruiker kan voorkomen dat de jQuery helemaal wordt uitgevoerd en zien wat hij/zij wil om te zien.

Er zijn andere nadelen. Deze "beveiliging"-aanpak is gebaseerd uit een _spUserId. Wij willen echt veilig op basis van de volledige SharePoint-beveiligingsmodel, of op zijn minst door gebruikersnaam. Dat wordt steeds moeilijker, maar ik zie een aantal goede dingen over dit onderwerp geschreven, dus ik ben hoopvol is er een goed antwoord op dat probleem.

De lijst met weergaven zelf moet worden afgesneden., indien mogelijk. Ik heb niet geprobeerd om erachter te komen dat. Ik neem aan dat het mogelijk is, maar echt het fundamentele veiligheidsprobleem niet oplost, omdat iemand kon nog net Typ de URL van de weergave die ze willen (Als zij wisten het dat). Echter, trimmen zinvol. Het is een goede usability functie en het helpt om te verduisteren dingen. Als een eindgebruiker niet weet dat de weergave-gebeurtenis bestaat, ze zal niet waarschijnlijk proberen om het te gebruiken. Soms, dat is goed genoeg.

Met geluk, Ik heb meer te schrijven over dit onderwerp na verloop van tijd.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Snel en eenvoudig: A Better Way to gebruik jQuery te verbergen een tekstveld op een SharePoint-formulier

Dit is een andere post in mijn aan de gang zijnde reeks over hoe te gebruiken jQuery met SharePoint.
Als u wilt meer weten over jQuery, I recommend highly: jQuery in actie door Bear Bibeault en Yehuda Katz.

Eerder, Ik schreef over het gebruik van jQuery te vinden en een tekstveld op een formulier verbergen. Ik niet de zorg voor de specifieke aanpak (Ik was het koppelen van ouders – dat is gewoon niet gedaan deze dagen, ten minste in families van kwaliteit).

Toen ik voor het eerst begonnen na te denken over het, Ik wist dat ik moest vinden een <TR> waarnaar kan ik beroepen op de huid() methode. Mijn vroege poging om te vinden de juiste <TR> was iets als dit:

$(' tr:heeft(input[titel = verbergen Me!])');

Het probleem met dat is dat het zou vinden elke <TR> label die had een bovenliggende relatie met de Verberg Me! veld, zelfs als verbergen Me! is genest vele niveaus diep in <TR>is. Het blijkt dat op mijn sandbox-vorm, die uitdrukking vindt 9 verschillende TR hebben verbergen Me! Als een kind ergens in de DOM-structuur. Ik realiseerde me dat ik back-up van de boom van het invoerveld zelf lopen kon, dus dat is hoe ik beëindigde omhoog misbruik van ouders, maar het niet zitten goed met mij.

Ik gaf wat gedachte aan dit en een van de dingen die ik lees ten slotte zinvol: Ik kon het niet gebruiken() methode om trim uit <TR>is dat ik wil niet in mijn verpakt set. Dat leidde me naar dit:

$(' tr:heeft(input[titel = verbergen Me!])').niet(' tr:heeft(tr)').verbergen();

De eerste bit vindt alle de <TR> Tags die de huid Me hebben! veld overal in hun eigen hiërarchie. Het dan strips uit <TR> die hebben ook een kind <TR>. Dit laat ons met een honkslag <TR> die:

1) Heeft geen <TR> onderliggende records

2) Heeft het invoerveld als kind.

We kunnen vervolgens de verbergen toepassen() methode om de resulterende ingesteld en we zijn klaar.

Ik ben nog steeds een beetje zenuwachtig over dit, maar niet zo zenuwachtig als ouders chaining.

Ik weet niet of dit een beste praktijk, of niet is. Kan er een meer geschikte manier van identificatie alleen de <TR> dat we de zorg over in een SharePoint-formulier. Als u weet, post een reactie.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Snel en eenvoudig: Gebruik van jQuery een tekstveld op een SharePoint-formulier verbergen

Dit is een andere post in mijn aan de gang zijnde reeks over hoe te gebruiken jQuery met SharePoint.
Als u wilt meer weten over jQuery, I recommend highly: jQuery in actie door Bear Bibeault en Yehuda Katz.

UPDATE (al!): Ik dacht aan een betere manier om te zoeken de <TR> Label ik wil verbergen en schreef over het hier. U kunt nog steeds dit artikel interessant vinden toch dus ik leavnig ben op opwaarts.

Ik wil een tekstveld verbergen, "Hide Me!"als:

image

De volgende jQuery doet de truc voor mij:

<script type ="text/javascript">

  $(functie() {


    $(' input[titel = verbergen Me!]').bovenliggende().bovenliggende().bovenliggende().verbergen();

  });

</script>

De code is te zeggen, "vinden me alle input velden waarvan de titel = verbergen Me!. Vervolgens, krijgen de ouder en klik op volgende bovenliggende en de * volgende * bovenliggende (Oef!) en beroepen op de huid() methode op dat ding, wat het gebeurt te zijn.

Ik bedacht dat bovenliggende structuur door de HTML-code voor het formulier dat SharePoint gemaakt zoals te bekijken:

<TR>
    <TD NoWrap= "true" vAlign= "top" Breedte"190px =" klasse= "ms-formlabel">
        <H3 klasse= "ms-standardheader">
            <NOBR>Verbergen Me!</NOBR>
        </H3>
    </TD>

    <TD vAlign= "top" klasse= "ms-formbody" Breedte= "400px">
        <!-- FieldName = "Verberg Me!"
                 FieldInternalName = "Hide_x0020_Me_x0021_"
                 FieldType = "SPFieldText"
        -->
        <span dir= 'geen'>
            <input
                naam= "m$ g_bdb23c2c_fde7_495f_8676_69714a308d8e$ ctl00$ 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= "Verberg Me!"
                klasse"ms-long =" />
                <BR>
        </span>


    </TD>
</TR>

Deze foto toont hetzelfde, maar opgemaakt met de ouders:

image

De eerste ouder (1) is een span-tag. Span de bovenliggende (2) een TD-tag is en dan tot slot krijgen we aan de werkelijke ouder ik wil verbergen (3) dat is de tag TR zelf.

Dit is een vrij vreselijke benadering die ik denk dat omdat het is zeer afhankelijk van de zeer specifieke structuur van dit formulier. Wanneer SharePoint 2010 komt uit, deze hele structuur kan veranderen en breken van deze aanpak. Wat ik echt wil doen is ambachtelijke een jQuery-selector die is in de trant van "vinden me alle TR (en enige TR-tags) die hebben ergens in hun onderliggende elementen een invoerveld waarvan de titel = verbergen Me!”. Ik vanaf de bodem en omhoog te bewegen. Ervan uitgaande dat ik dit uit figuur, Ik zal posten een bijgewerkte "snel en eenvoudig ' post.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Snel en eenvoudig: Maak uw eigen jQuery Sandbox voor SharePoint

Dit is een andere post in mijn aan de gang zijnde reeks over hoe te gebruiken jQuery met SharePoint.
Als u wilt meer weten over jQuery, I recommend highly: jQuery in actie door Bear Bibeault en Yehuda Katz.

Aan de slag met jQuery in SharePoint is verrassend eenvoudig (voor mij). (Ik heb ernstige vragen over een "best practices"-benadering voor het implementeren van deze dingen tot productie, maar dat is voor een andere dag). Ik heb net begon te spelen met deze technologie en te dien einde, Ik heb gemaakt een sandbox-omgeving te gebruiken. Als u op zoek bent om te beginnen met jQuery, u kunt deze aanpak nuttig vinden.

1. Een lege Site maken

Maak een lege site ergens in uw site en noem het iets slim als "jQuery Sandbox".

2. JQuery downloaden

U kunt de jQuery javascript library downloaden vanaf hier: http://docs.jquery.com/Downloading_jQuery

Sla dat op uw bureaublad.

Mij zijn geweest using de "minified" versie.

3. Een SharePoint-documentbibliotheek maken

In uw sandbox-site, een documentbibliotheek maken.

4. De jQuery bibliotheek uploaden naar SharePoint

Toegang tot de documentbibliotheek die u zojuist hebt gemaakt en het uploaden van de bibliotheek jQuery.

5. Een aangepaste SharePoint-lijst maken

Ik ben begonnen met een aangepaste lijst, omdat ik wil muck over met standaard SharePoint-formulieren. U kunt ook een pagina in een bibliotheek van pagina's of pagina's met webonderdelen en waarschijnlijk een heleboel andere plaatsen.

Sommige kolommen toevoegen aan de aangepaste lijst zodat u iets om uit te voeren jQuery tegen hebben. Mijn oorspronkelijke doelstellingen moesten:

  1. Een veld verbergen.
  2. Een waarde aan een veld toewijzen.

Met dat doel voor ogen, Ik voegde twee tekstvelden. Na verloop van tijd, Ik zal spelen met links, afbeeldingen, zoekacties, etc.

6. De pagina NewForm.aspx Web te wijzigen en een webonderdeel Inhoudseditor toevoegen

Dit is een kleine zwarte magic-ish , in die zin dat het een nieuw concept aan me. Ik voor het eerst geleerd over dit van Paul Grenier, SharePoint jQuery Superstar, op zijn CodePlex projectsite: http://spff.codeplex.com/.

Volg deze stappen om een CEWP aan de zelfde pagina dat NewForm.aspx voor elke aangepaste lijst toont toevoegen:

  1. Toegang tot de aangepaste lijst en klik op nieuw.
  2. Het volgende aan de URL toevoegen: Paginaweergaves = gedeeld&ToolPaneView = 2

Dat zal transformeren uw saaie vanille formulier voor gegevensinvoer van iets als dit:

image

Daartoe:

image

Het webonderdeel Inhoudseditor toevoegen aan de pagina.

7. Schrijven van uw eerste jQuery Code

Open te stellen dat CEWP in de codeweergave en voeg het volgende toe:

image

Hier is de werkelijke code als u wilt kopiëren en plakken:

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

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

    $('#resultsID').HTML("Er zijn" + $('a').grootte() + 'een tags tags op deze pagina.');

  });
</script>

Resultaat:
<div id ='resultsID'></div>
/resultaat

Merk op dat de eerste <script> Label referencement de werkelijke jQuery bibliotheek. Vermoedelijk, deze dingen veranderen in de tijd, dus u zult willen ervoor zorgen u een) Gebruik de juiste naam en b) verwijzen naar de juiste SharePoint-documentbibliotheek.

Koesteren in de glorie

Als u het goed hebt gedaan, ziet u een resultaat vergelijkbaar met de volgende:

image

Het verpakken omhoog

Dit is niet de enige manier om te beginnen, maar het is snel, gemakkelijk en geïsoleerde van uw bestaande SharePoint-omgeving.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Snel en eenvoudig: Gebruik van jQuery op een tekstveld instellen de waarde op een SharePoint-formulier

Ik begon te spelen rond met jQuery gisteren. Ik heb willen om dit te doen voor een lange tijd, Sinds Paul Grenier begonnen met het schrijven zijn serie over jQuery voor eindgebruikers in de eerbiedwaardige www.endusersharepoint.com Web site. Zoals ik het gebruiken, Ik hoop om toe te voegen dat een reeks van "Snel en gemakkelijk" berichten zoals deze. Dit bericht wordt beschreven hoe u een bekende tekstveld waarde aan alles wat die je wilt.

In dit scenario, Ik heb een aangepaste lijst waarvan "nieuwe" vorm ziet er zoals:

image

Dit is het nieuwe formulier voor een aangepaste lijst met de standaardkolom Titel en twee kolommen van de lijst (niet sitekolommen; Ik denk niet dat het moet een verschil maken).

Het doel is een willekeurige waarde toewijzen aan het veld, "DefaultMeFieldNoSpaces" (u kunt vertellen dat ik ben een beetje een lafaard met het "geen spaties" ding gaande, maar ik het kruid omhoog aan het eind van dit artikel).

Dit stukje van jQuery gehanteerd voor mij:

<script type ="text/javascript">

  $(functie() {

    $(' input[titel = DefaultMeFieldNoSpaces]').attr(
        {waarde: ' Je bent in een bochtig doolhof van gangen, allemaal hetzelfde. "});

  });

</script>

Ik heb begrepen dat dit beetje jQuery zegt, "vinden me een input-tag waarvan de titel = DefaultMeFieldNoSpaces. Vervolgens, stelt alle standaardwaarden aan een beroemde zin van een oude computerspel."

Aangezien er slechts één veld op het formulier met een titel gelijk is aan "DefaultMeFieldNoSpaces" zijn we verzekerd van een waarde toewijst aan dat veld en geen andere.

Hoe zit het met een veld waarvan de naam spaties bevat heeft? Het is bijna hetzelfde:

<script type ="text/javascript">

  $(functie() {
     $(' input[titel = veld met ruimte toewijzen]').attr(
        {waarde: ' Je bent in een bochtig doolhof van gangen, allemaal hetzelfde. "});

  });

</script>

Ik denk dat dit een redelijk veilig aanpak, Wat betekent dat we moeten kunnen vinden van het veld dat wij willen en alleen het veld willen we. Als je kijkt naar baart de HTML-SharePoint ons, het is soort van rommelig:

<input
naam= "m$ g_bdb23c2c_fde7_495f_8676_69714a308d8e$ ctl00$ 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-long ="
/>

"titel" onderscheidt zich als een herkenbare en hopelijk unieke kenmerk te ons helpen identificeren van de specifieke kolom waarnaar we willen onze willekeurige waarde toe te wijzen.

Dit is een fundamenteel concept. Instellen van een veld in een willekeurige manier zoals dit is niet van plan om te winnen geen prijzen. Echter, Als we willen meer interessante vorm niveau dingen doen (die wij allemaal altijd willen doen, Natuurlijk, rechts nadat we klaar de afwas), Als het wijzigen van de waarde van "veld b" automatisch op basis van de waarde van "veld een", Wij (IK) noodzaak om deze dingen te leren.

Ik denk dat onze beste kans om een echt nuttig waarde hier is via de titel, ten minste voor tekstvelden. Kan er een beter, meer betrouwbare benadering. Als ik het vinden, Ik zal deze post bijwerken. Als u weet van een betere manier, laat alstublieft een reactie.</einde>

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin