maandelikse Argiewe: Junie 2009

Path Vorm dienste te lewer, Vorm verifikasie (FBA) en Unieke lêername

Ek werk op sommige Path vorm in MOSS hierdie week in 'n FBA omgewing en geleer, toe ek die vorms in te sit om 'n produksie-omgewing met 'n FBA sone dat die gebruikersnaam() function function does not work. I was using it to generate unique file names.

Wel, dat die funksie nie werk in 'n FBA-omgewing (ten minste, nie uit die boks). En, op weerspieëling, die gebruik van gebruikersnaam in die manier wat ek beplan het nie gewaarborg nie 'n unieke naam vir die lêer in elk geval.

My oplossing was om die nou te gebruik() 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. (Ek wys dit nie in die kiekie, maar sit 'n toestand op die reël slegs brand wanneer "myFilename" is leeg). I used to set the file name at the data source level. Typically, Ek wil iets doen (slegte) soos hierdie:

image

Die probleem met dit is dat as gebruiker 'n open die vorm op Maandag en die gebruiker B verander op Dinsdag, jy eindig met twee verskillende vorme omdat twee verskillende gebruikers gered word met ander gebruikers name.

So, irriterende as FBA kan wees in die algemeen en met Path in die besonder, dit het my weer dink 'n klein maar baie belangrike tegniese detail en benadering dat ek nie anders sou gedoen het!

</einde>

Skryf in op my blog.

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

Technorati Tags:

Om SharePoint Lys / Document Library Views te Lyk (soort) Moontlik met jQuery

Dit is nog 'n post in my aan die gang reeks oor hoe om te gebruik jQuery met SharePoint.
As jy wil meer oor jQuery te leer, Ek raai: jQuery in Aksie deur die Bear Bibeault en Yehuda Katz.

Een van die eerste dinge wat ek gedink het, toe ek begin om te speel met die jQuery, was whether we could use it to secure a SharePoint view. The answer is “no” (of ten minste, Ek nie beweer dat dit is moontlik). Egter, 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: Vinnige en maklike: Skep Jou Eie jQuery Sandbox vir SharePoint.

"Veilige" 'n oog, Volg hierdie stappe:

  1. Create a view you want to secure. I did that and called it “Secured View”.

    Dit is hoe dit lyk soos wanneer dit is nie "beskerm":

    image

  2. Voeg 'n redakteur web deel van die oog se bladsy met die truuk in die sandbox artikel beskryf (d.w.z. voeg "Pageview = Gedeelde&ToolPaneView = 2 "na die URL).
  3. Figure out your SharePoint _spUserId by following these crazy steps, glo of nie:
    1. Teken in jou SharePoint omgewing.
    2. In die blaaier se adres veld, tipe: "Javascript:waarsku(_spUserId ").
    3. Teken die resultaat (dit is "13" in my geval).

      image

  4. Voeg die volgende javascript te jou CEWP in die kode oog:

    <script
        "Teks / javascript"
        src ="../../jQuery Library/jquery-1.3.2.min.js">
    </script>
    
    <script type ="Teks / javascript">
      $(funksie() {
    
        waarsku(_spUserId);
    
        was theSecuredView = $("Iframe[FilterLink * = veilige% 20View]");
    
        indien ((theSecuredView.length > 0) && (_spUserId == 13))
          $("Iframe[FilterLink * = veilige% 20View]").ouer().ouer().ouer().html("<tr bgcolor = rooi><td>Geen oog vir jou!</td></tr>");
      });
    
    </script>
    

Ek het ingesluit dat die waarskuwing(_spUserId) lyn in daar is om aan te toon hoe dit is nie regtig 'n "beveiliging" 'n oog, but simply making it more difficult to see. More on that in a moment.

Basies, 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, Ons loop die DOM aan 'n <TR> dag (wat ek uitgepluis het deur die lees van die bron en die opsporing) en dan dat die TR tag vervang met my boodskap. Ek weet nie regtig hoe sterk dit is nie (Ek is baie verdagte, in werklikheid), but it worked in my sandbox. If I find a better way, Ek sal daaroor blog. Dit is die resultaat:

image

Ek kliek op die OK knoppie en die data is vervang met 'n groot rooi boodskap:

image

Soos jy kan vertel, the way I’ve implement this “security” solution is to allow the web part to render itself. After it finishes, Ek Oorskryf die inhoud daarvan met my "Geen uitsig vir jou!"Boodskap.

Ten spyte van die feit dat dit nie regtig 'n "veilige" oog, dit is moontlik nuttig en met 'n paar slim werk, it may eventually be securable in a more formal sense. The fundamental issue is that the client is getting all the data and then, net nadat dit kry die data, it wipes it out. If the client is getting the data, 'n slim gebruiker kan die jQuery verhoed loop op almal en sien wat hy / sy wil om te sien.

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, maar ek sien 'n paar goeie dinge wat geskryf is oor hierdie onderwerp, so ek hoop daar is 'n goeie antwoord vir die probleem.

Die lys van die standpunte wat hulle moet geknip word, indien moontlik. I haven’t tried to figure that out. I assume it’s possible, maar nie regtig die fundamentele sekuriteit probleem op te los omdat iemand kon nog net die URL van die oog wat hulle wil tik (as hulle dit geweet het). Egter, 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. Soms, dit is goed genoeg.

Met geluk, Ek sal meer oor hierdie onderwerp te skryf oor 'n tydperk.

</einde>

Skryf in op my blog.

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

Vinnige en maklike: 'N beter manier die jQuery te gebruik om 'n teks veld weg te steek op 'n SharePoint

Dit is nog 'n post in my aan die gang reeks oor hoe om te gebruik jQuery met SharePoint.
As jy wil meer oor jQuery te leer, Ek raai: jQuery in Aksie deur die Bear Bibeault en Yehuda Katz.

Voorheen, 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 (Ek was aaneenskakeling ouers - dit is eenvoudig nie gedoen word nie hierdie dae, ten minste in die families van gehalte).

Toe ek die eerste keer begin om te dink oor dit, Ek het geweet ek nodig het om te vind 'n <TR> wat ek kon die vel opper() metode. My early effort to find the correct <TR> was iets soos hierdie:

$("Tr:het(insette[title = Steek my!])");

Die probleem met dit is dat dit elke sou vind <TR> tag that had any parent relationship to the Hide Me! veld, selfs al Steek my! berus op baie vlakke diep in <TR>’s. It turns out that on my sandbox form, dat uitdrukking vind 9 verskillende TR se wat Steek my! as a child somewhere in its DOM tree. I realized that I could walk back up the tree from the input field itself, so dit is hoe ek geëindig het die misbruik van ouers, maar dit het nie goed sit met my.

Ek het 'n paar gedagte en een van die dinge wat ek gelees het uiteindelik sin gemaak: Ek kon die nie() metode te knip uit <TR>’s I don’t want in my wrapped set. Dit het my gelei tot hierdie:

$("Tr:het(insette[title = Steek my!])").nie("Tr:het(tr)").verberg();

Die eerste bietjie vind al die <TR> tags wat Steek die my! field anywhere in their own hierarchy. It then strips out any <TR> wat ook 'n kind <TR>. This leaves us with a single <TR> wat:

1) Het geen <TR> kind rekords

2) Does have the input field as child.

Ons kan dan aansoek doen om die vel() metode om die gevolglike stel en wat ons gedoen het.

Ek is nog steeds 'n bietjie senuweeagtig oor hierdie, maar nie so senuweeagtig soos aaneenskakeling ouers.

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, post a comment.

</einde>

Skryf in op my blog.

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

Vinnige en maklike: Gebruik jQuery 'n teks veld weg te steek op 'n SharePoint vorm

Dit is nog 'n post in my aan die gang reeks oor hoe om te gebruik jQuery met SharePoint.
As jy wil meer oor jQuery te leer, Ek raai: jQuery in Aksie deur die Bear Bibeault en Yehuda Katz.

UPDATE (reeds!): Ek het dink van 'n beter manier om op te spoor <TR> kan ek wil hê om weg te steek en skryf oor dit hier. You may still find this article interesting anyway so I’m leavnig it up.

Ek wil 'n teks veld weg te steek, "Steek my!"Soos:

image'

Die volgende jQuery nie die truuk vir my:

<script type ="Teks / javascript">

  $(funksie() {


    $(Se insette[title = Steek my!]").ouer().ouer().ouer().verberg();

  });

</script>

Die kode sê, "My vind al die velde wie se title = verberg my!. Toe, kry sy ouer, en dan volgende ouer en die * volgende * ouer (Sjoe!) en roep die vel() metode op daardie ding, wat dit gebeur om te wees.

Ek het gedink dat ouer struktuur deur die lees van die HTML vir die vorm wat SharePoint geskep soos:

<TR>
    <TD sukses van hul loopbaan="true" deel van die oplossing="top" wydte="190px" klas="ms-formlabel">
        <H3 klas="ms-standardheader">
            <nobr>Steek my!</nobr>
        </H3>
    </TD>

    <TD deel van die oplossing="top" klas="ms-formbody" wydte="400px">
        <!-- FieldName="Hide Me!"
                 FieldInternalName="Hide_x0020_Me_x0021_"
                 FieldType="SPFieldText"
        -->
        <span jy="none">
            <insette
                naam="ctl00$m$g_bdb23c2c_fde7_495f_8676_69714a308d8e$ctl00$ctl04$ctl02$ctl00$ctl00$ctl04$ctl00$ctl00$TextField"
                tipe="text"
                MaxLengte="255"
                ID="ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
                titel="Hide Me!"
                klas="ms-long" />
                <br>
        </span>


    </TD>
</TR>

Hierdie foto toon dieselfde, maar gemerk met die ouers:

image

Die eerste ouer (1) is a span tag. Span’s parent (2) is 'n TD tag en dan uiteindelik ons ​​by die werklike ouer ek wil om weg te steek (3) wat is die TR tag self.

This is a pretty terrible approach I think because it’s extremely dependent on the very specific structure of this form. When SharePoint 2010 kom uit, 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 (en net TR tags) wat iewers in hul kind elemente 'n invoer veld wie title = verberg my!". I starting from the bottom and moving up. Assuming I figure this out, Ek sal na 'n updated "vinnig en maklik 'post.

</einde>

Skryf in op my blog.

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

Vinnige en maklike: Skep Jou Eie jQuery Sandbox vir SharePoint

Dit is nog 'n post in my aan die gang reeks oor hoe om te gebruik jQuery met SharePoint.
As jy wil meer oor jQuery te leer, Ek raai: jQuery in Aksie deur die Bear Bibeault en Yehuda Katz.

Kom ons begin met jQuery in SharePoint is verbasend maklik (vir my). (Ek het ernstige vrae oor 'n "beste praktyke" benadering tot die implementering van hierdie dinge aan die produksie, Maar dit is vir 'n ander dag). 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, jy kan vind hierdie benadering nuttig.

1. Skep 'n leë webwerf

Skep 'n leë plek iewers in jou werf in en noem dit iets slim soos "jQuery Sandbox".

2. Aflaai jQuery

Jy kan die jQuery JavaScript-biblioteek van hier aflaai: http://docs.jquery.com/Downloading_jQuery

Behalwe dat jou rekenaar.

Ek het al met behulp van die "minified" weergawe.

3. Skep 'n SharePoint Document Library

In jou sandput werf, create a document library.

4. Laai die jQuery Biblioteek SharePoint

Toegang tot die doc biblioteek jy net gemaak het en laai die jQuery biblioteek.

5. Skep 'n Custom SharePoint Lys

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. Steek 'n veld.
  2. Ken 'n waarde aan 'n veld.

Met dié doel voor oë, I added two text fields. Over time, Ek sal speel met skakels, beelde, soektogte, ens..

6. Verander die NewForm.aspx Web Deel Page en voeg 'n redakteur Web Deel

Dit is 'n klein swart magie-ish , in that it’s a new concept to me. I first learned about this from Paul Grenier, SharePoint jQuery Superstar, by sy CodePlex projek site: http://spff.codeplex.com/.

Volg hierdie stappe om om 'n CEWP te voeg by die dieselfde bladsy wat toon NewForm.aspx, vir 'n persoonlike lys:

  1. Toegang tot die persoonlike lys en klik op nuwe.
  2. Voeg die volgende by die URL: Pageview = Gedeelde&ToolPaneView = 2

Dit sal jou vervelige vanielje data inskrywingsvorm transformeer van iets soos hierdie:

image

Om hierdie:

image

Voeg die inhoud redakteur web deel na die bladsy.

7. Skryf jou eerste jQuery Kode

Maak dat CEWP in die kode oog en voeg die volgende:

image

Hier is die kode as jy wil kopieer / plak:

<script
    "Teks / javascript"
    src ="../../jQuery Library/jquery-1.3.2.min.js">
</script>

<script type ="Teks / javascript">
  $(funksie() {

    $("# ResultsID").html("Daar is ' + $("A").grootte() + 'N tags tags op hierdie bladsy. ");

  });
</script>

Uitslag:
<div id ='ResultsID "></Div>
/lei

Let daarop dat die eerste <script> tag is referencing the actual jQuery library. Presumably, hierdie dinge verander met verloop van tyd, sodat jy wil maak seker dat jy 'n) gebruik die regte naam en b) wys dit na die korrekte SharePoint dokument biblioteek.

Koester in die heerlikheid

As jy het dit reg, sien jy 'n resultaat soortgelyk aan die volgende:

image

Wikkel

Dit is nie die enigste manier om te begin, maar dit is vinnig, easy and isolated from your existing SharePoint environment.

</einde>

Skryf in op my blog.

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

Vinnige en maklike: Gebruik jQuery 'n teks veld se waarde in te stel op 'n SharePoint vorm

Ek het begin rondspeel met jQuery yesterday. I’ve been wanting to do this for a long time, sedert Paul Grenier begin skryf sy reeks oor jQuery vir gebruikers by die agbare www.endusersharepoint.com web site. As I use it, I hope to add a series of “Quick and Easy” posts like this one. This post describes how to set a known text field’s value to anything you want.

In hierdie scenario, Ek het 'n persoonlike lys wie se "nuwe" vorm lyk soos:

image

Dit is die nuwe vorm vir 'n persoonlike lys met die standaard titel kolom en twee kolomme lys (nie werf kolomme; Ek dink nie dit moet 'n verskil maak).

Die doel is om 'n arbitrêre waarde vir die veld te wys, "DefaultMeFieldNoSpaces" (jy kan sê ek is 'n bietjie van 'n lafaard met die "geen spasies" ding aan die gang, maar ek doen spesery dit aan die einde van hierdie artikel).

Hierdie stukkie van jQuery vir my gewerk:

<script type ="Teks / javascript">

  $(funksie() {

    $(Se insette[title = DefaultMeFieldNoSpaces]").attr(
        {waarde: "Jy is in 'n kronkelende doolhof van gange, almal gelyk. "});

  });

</script>

Soos ek dit verstaan ​​hierdie stukkie van jQuery sê, “find me any input tag whose title = DefaultMeFieldNoSpaces. Toe, stel om al hul waardes aan 'n bekende aanhaling uit 'n ou rekenaar spel. "

Aangesien daar slegs een veld op die vorm met 'n titel gelyk aan "DefaultMeFieldNoSpaces" Ons is verseker van die toeken van 'n waarde vir die veld en geen ander.

Wat van 'n veld wie se naam ruimtes in dit? It’s nearly the same:

<script type ="Teks / javascript">

  $(funksie() {
     $(Se insette[title = Ken veld Space]").attr(
        {waarde: "Jy is in 'n kronkelende doolhof van gange, almal gelyk. "});

  });

</script>

Ek dink dit is 'n redelik veilige benadering, meaning that we should be able to find the field that we want and only the field we want. If you look at the HTML SharePoint is giving us, dit is soort van morsig:

<insette
naam="ctl00$m$g_bdb23c2c_fde7_495f_8676_69714a308d8e$ctl00$ctl04$ctl02$ctl00$ctl00$ctl04$ctl00$ctl00$TextField"
tipe="text"
MaxLengte="255"
ID="ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
titel="DefaultMeFieldNoSpaces"
klas="ms-long"
/>

"Title" staan ​​uit as 'n herkenbare en hopelik unieke eienskap om ons te help om die spesifieke kolom wat ons wil ons arbitrêre waarde toe te ken identifiseer.

This is a foundational concept. Setting a field in an arbitrary way like this isn’t going to win any awards. Egter, As ons wil meer interessante vorm vlak om dinge te doen (wat ons almal altyd wil doen, natuurlik, reg nadat ons klaar die skottelgoed), wil verander die waarde van "veld b" outomaties op grond van die waarde van die "veld om 'n", ons (Ek) nodig het om hierdie dinge te leer.

Ek dink ons ​​die beste kans om 'n werklike nuttige waarde om hier te kry, is deur middel van die titel, at least for text fields. There may be a better, more reliable approach. If I find it, Ek sal hierdie pos werk. If you know a better way, los 'n kommentaar.</einde>

</einde>

Skryf in op my blog.

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