Monthly Archives: Júní 2009

Infopath Form Sevices, Eyðublöð byggt auðkenningar (FBA) og einstök nöfn File

Ég hef verið að vinna á sumum InfoPath eyðublöð þessari viku í mosa í FBA umhverfi og lærði, þegar ég fór að senda eyðublöðin til framleiðslu umhverfi með FBA svæði sem notandanafn() function function does not work. I was using it to generate unique file names.

Jæja, that function doesn’t work in an FBA environment (að minnsta kosti, not out of the box). Og, upon reflection, using username in the way I had planned wouldn’t have guaranteed a unique file name in any event.

My solution was to use the now() 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. (I don’t show it in the screen shot, but put a condition on the rule to only fire when “myFilename” is blank). I used to set the file name at the data source level. Typically, I would do something (slæmt) like this:

image

The problem with that is that if user A opens the form on Monday and the user B changes it on Tuesday, you’ll end up with two different forms since two different users saved it with different user names.

Svo, as annoying as FBA can be in general and with InfoPath in particular, it made me re-think a small but really important technical detail and approach that I wouldn’t have done otherwise!

</enda>

Gerast áskrifandi að bloggið mitt.

Fylgdu mér á Twitter á http://www.twitter.com/pagalvin

Technorati Tags:

Tryggja SharePoint Listi / Document Library Innlit Virðast (konar) Mögulegt með jQuery

Þetta er annar póstur í mínum á að fara röð um hvernig á að nota jQuery með SharePoint.
Ef þú vilt læra meira um jQuery, Ég mæli: jQuery í Aðgerð með Bear Bibeault og Yehuda Katz.

Einn af the fyrstur hlutur ég hélt, þegar ég byrjaði að leika í kring með jQuery, var hvort við gætum notað það til að tryggja SharePoint útsýni. Svarið er "nei" (or at least, Ég ætla ekki að segja að það er hægt). Hins, það er vissulega hægt að gera það erfitt fyrir fólk að sjá ákveðna sýn.

Ég byrjaði með sandkassa umhverfi mitt þegar vinna á þessu. Ég skrifaði um það umhverfi hér: Fljótur og Þægilegur: Búa til eigin jQuery Sandbox þín fyrir SharePoint.

Að "tryggja" útsýni, Fylgdu þessum leiðbeiningum:

  1. Búa til mynd sem þú vilt að tryggja. Ég gerði það og kallaði það "Tryggt View".

    Þetta er það sem það lítur út eins og þegar það er ekki "öruggur":

    image

  2. Bæta við efni ritstjóri vefur hluti á síðuna útsýnisins er með bragð sem lýst er í sandkassa grein (i.e. bæta "birting = Deilt&ToolPaneView = 2 "á slóðina).
  3. Reikna út SharePoint _spUserId með því að fylgja þessum brjálaður skrefum, trúa eða ekki:
    1. Skrá þig inn í SharePoint umhverfi.
    2. Í heimilisfang The vefur flettitæki er á sviði, tegund: "JavaScript:alert(_spUserId ").
    3. Upptaka niðurstöðu (það er "13" í mínu tilfelli).

      image

  4. Bættu eftirfarandi JavaScript til CEWP þitt í númerið ljósi:

    <handrit
        "Text / javascript"
        src ="../../jQuery%20Library/jquery-1.3.2.min.js">
    </handrit>
    
    <handrit type ="Text / javascript">
      $(virka() {
    
        alert(_spUserId);
    
        var theSecuredView = $('iframe[FilterLink * = örugg% 20View]");
    
        ef ((theSecuredView.length > 0) && (_spUserId == 13))
          $('iframe[FilterLink * = örugg% 20View]").foreldri().foreldri().foreldri().HTML("<tr bgcolor=red><td>Engin skoða fyrir þig!</td></tr>");
      });
    
    </handrit>
    

Ég hef sett með að viðvörun(_spUserId) lína í það að sýna fram á hvernig þetta er í raun ekki "tryggja" útsýni, en einfaldlega að gera það erfiðara að sjá. Meira um það í smá stund.

Grundvallaratriðum, 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, we walk up the DOM to a <TR> tag (which I figured out by viewing source and tracing it) and then replacing that TR tag with my message. I really don’t know how robust this is (I’m very suspicious, í raun), but it worked in my sandbox. If I find a better way, I’ll blog about it. This is the result:

image

I click the OK button and the data is replaced with a big red message:

image

As you can tell, the way I’ve implement this “security” solution is to allow the web part to render itself. After it finishes, I overwrite its content with my “No view for you!” message.

Despite the fact that it’s not really a “secured’” view, it’s potentially useful and with some clever work, it may eventually be securable in a more formal sense. The fundamental issue is that the client is getting all the data and then, only after it gets the data, it wipes it out. If the client is getting the data, a clever user can prevent the jQuery from running at all and see what he/she wants to see.

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, but I see some good stuff written on this subject, so I’m hopeful there’s a good answer to that problem.

The list of views themselves should be trimmed, if possible. I haven’t tried to figure that out. I assume it’s possible, but doesn’t really solve the fundamental security issue because someone could still just type the URL of the view they want (if they knew it). Hins, 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. Stundum, that’s good enough.

With luck, I’ll have more to write on this subject over time.

</enda>

Gerast áskrifandi að bloggið mitt.

Fylgdu mér á Twitter á http://www.twitter.com/pagalvin

Fljótur og Þægilegur: Betri leið til að nota jQuery til að fela textareitinn á SharePoint Form

Þetta er annar póstur í mínum á að fara röð um hvernig á að nota jQuery með SharePoint.
Ef þú vilt læra meira um jQuery, Ég mæli: jQuery í Aðgerð með Bear Bibeault og Yehuda Katz.

Áður, 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 (Ég var chaining foreldrar - það er einfaldlega ekki gert þessa dagana, amk í fjölskyldum gæði).

Þegar ég byrjaði fyrst að hugsa um það, Ég vissi að ég þurfti að finna <TR> to which I could invoke the hide() aðferð. My early effort to find the correct <TR> var eitthvað eins og this:

$('TR:hefur(inntak[titill = Fela mig!])");

Vandinn við það er að það myndi finna alla <TR> tag that had any parent relationship to the Hide Me! sviði, jafnvel þótt fela mig! er hreiður mörgum stigum djúpt í <TR>’s. It turns out that on my sandbox form, að tjáning finnur 9 mismunandi TR um sem hafa fel mig! as a child somewhere in its DOM tree. I realized that I could walk back up the tree from the input field itself, so that’s how I ended up abusing parents, but it didn’t sit well with me.

I gave some thought to this and one of the things I read finally made sense: I could use the not() method to trim out <TR>’s I don’t want in my wrapped set. Það leiddi mig til þessa:

$('TR:hefur(inntak[titill = Fela mig!])").not('TR:hefur(tr)").fela();

The first bit finds all the <TR> tags that have the Hide Me! field anywhere in their own hierarchy. It then strips out any <TR> that also have a child <TR>. This leaves us with a single <TR> that:

1) Has no <TR> child records

2) Does have the input field as child.

We can then apply the hide() method to the resulting set and we’re done.

I’m still a bit nervous about this, but not as nervous as chaining parents.

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, vinsamlegast staða a athugasemd.

</enda>

Gerast áskrifandi að bloggið mitt.

Fylgdu mér á Twitter á http://www.twitter.com/pagalvin

Fljótur og Þægilegur: Notaðu jQuery að fela Text Field á SharePoint Form

Þetta er annar póstur í mínum á að fara röð um hvernig á að nota jQuery með SharePoint.
Ef þú vilt læra meira um jQuery, Ég mæli: jQuery í Aðgerð með Bear Bibeault og Yehuda Katz.

UPDATE (þegar!): Ég vissi að hugsa um betri leið til að finna <TR> merki ég vil fela og skrifaði um það hér. You may still find this article interesting anyway so I’m leavnig it up.

Ég vil að fela textabox, "Fel mig!"Eins og sýnt:

image'

Eftirfarandi jQuery gerir bragð fyrir mig:

<handrit type ="Text / javascript">

  $(virka() {


    $("Inntak[titill = Fela mig!]").foreldri().foreldri().foreldri().fela();

  });

</handrit>

Kóðinn er að segja, "Finna mig alla inntak reiti sem á titil = Fela mig!. Þá, fá foreldra sína og þá næstu foreldra og á * næstu * foreldri (Phew!) og ákalla húðina() aðferð á þessi hlutur, hvað sem það gerist að vera.

Ég mynstrağur út að foreldri uppbyggingu með því að skoða HTML fyrir formi sem SharePoint til sem sýnt:

<TR>
    <TD nowrap="true" valign="top" breidd="190px" flokki="ms-formlabel">
        <H3 flokki="ms-standardheader">
            <nobr>Fela mig!</nobr>
        </H3>
    </TD>

    <TD valign="top" flokki="ms-formbody" breidd="400px">
        <!-- FieldName="Hide Me!"
                 FieldInternalName="Hide_x0020_Me_x0021_"
                 FieldType="SPFieldText"
        -->
        <span dir="none">
            <inntak
                nafn="ctl00$m$g_bdb23c2c_fde7_495f_8676_69714a308d8e$ctl00$ctl04$ctl02$ctl00$ctl00$ctl04$ctl00$ctl00$TextField"
                tegund= "Texti"
                Hám.lengd= "255"
                id="ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
                titill="Hide Me!"
                flokki= "MS-langur" />
                <br>
        </span>


    </TD>
</TR>

Þessi mynd sýnir það sama, en merktur með foreldrum:

image

Fyrsta foreldri (1) is a span tag. Span’s parent (2) er TD tag og þá lokum við fá til the raunverulegur foreldri sem ég vil að fela (3) , sem er TR merki sjálft.

This is a pretty terrible approach I think because it’s extremely dependent on the very specific structure of this form. When SharePoint 2010 kemur út, 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 (Og aðeins tr tags) að hafa einhvers staðar í þætti barnið þeirra inntak sviði sem lét titill = Fela mig!". I starting from the bottom and moving up. Assuming I figure this out, Ég skrifa uppfærða "fljótur og þægilegur" Post.

</enda>

Gerast áskrifandi að bloggið mitt.

Fylgdu mér á Twitter á http://www.twitter.com/pagalvin

Fljótur og Þægilegur: Búa til eigin jQuery Sandbox þín fyrir SharePoint

Þetta er annar póstur í mínum á að fara röð um hvernig á að nota jQuery með SharePoint.
Ef þú vilt læra meira um jQuery, Ég mæli: jQuery í Aðgerð með Bear Bibeault og Yehuda Katz.

Að byrja með jQuery í SharePoint er furðu auðvelt (mér). (Ég hef alvarlegar spurningar um "bestu starfsvenjur" nálgun til að beita þessum hlutum til framleiðslu, en það er fyrir annan 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, þú getur fundið þessi aðferð gagnlegt.

1. Búa til Eyða Site

Búa til autt síðuna einhvers staðar á síðuna þína og kalla það eitthvað snjall eins og "jQuery Sandkassi".

2. Sækja jQuery

Þú getur sótt jQuery javascript bókasafn frá hér: http://docs.jquery.com/Downloading_jQuery

Vista sem að skjáborðinu þínu.

Ég hef verið að nota "minified" útgáfa.

3. Búa til SharePoint skjal bókasafn

Í síðuna sandkassi þína, create a document library.

4. Senda inn jQuery Library til SharePoint

Aðgangur DOC bókasafn sem þú bjóst bara og senda jQuery bókasafn.

5. Búa til sérsniðna SharePoint Listi

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. Fela reit.
  2. Úthluta gildi til a sviði.

Með því markmiði í huga, I added two text fields. Með tímanum, Ég ætla að spila með tenglum, myndir, leit, o.fl..

6. Breyta NewForm.aspx Web Part Page og Bæta við Ritstjóri Content Web Part

Þetta er lítill svartur galdur-ish , in that it’s a new concept to me. I first learned about this from Paul Grenier, SharePoint jQuery Superstar, á hans CodePlex verkefni síðuna: http://spff.codeplex.com/.

Fylgdu þessum skrefum til að bæta við CEWP á sömu síðu sem sýnir NewForm.aspx fyrir hvaða sérsniðnum lista:

  1. Aðgangur að sérsniðnum lista og smella Nýtt.
  2. Auka eftirfarandi við slóðina: PageView = Samnýtt&ToolPaneView = 2

Það mun breyta leiðinlegt vanillu gögn innganga þína mynd úr eitthvað svona:

image

Til að þetta:

image

Bæta við ritstjóra efni á vefnum hluta til á síðunni.

7. Skrifa Fyrsta jQuery númerið þitt

Opinn upp að CEWP í kóðann að skoða og bæta við eftirfarandi:

image

Hér er í raun númer ef þú vilt afrita / líma:

<handrit
    "Text / javascript"
    src ="../../jQuery%20Library/jquery-1.3.2.min.js">
</handrit>

<handrit type ="Text / javascript">
  $(virka() {

    $('# ResultsID').HTML("Það eru" + $('A').stærð() + 'Í merki merki á þessari síðu á');

  });
</handrit>

Niðurstaða:
<div id ='ResultsID'></div>
/leitt

Athugaðu að fyrsta <handrit> tag is referencing the actual jQuery library. Presumably, þetta breyst með tímanum, svo þú þarft að ganga úr skugga um þú) nota rétt nafn og b) benda það á réttan SharePoint skjal bókasafn.

Bask í dýrð

Ef þú gerðir það rétt, þú munt sjá niðurstöður svipaðar eftirfarandi:

image

Umbúðir Up

Þetta er ekki eina leiðin til að byrja, en það er fljótleg, easy and isolated from your existing SharePoint environment.

</enda>

Gerast áskrifandi að bloggið mitt.

Fylgdu mér á Twitter á http://www.twitter.com/pagalvin

Fljótur og Þægilegur: Notaðu jQuery til Setja Value A textareits er á SharePoint Form

Ég byrjaði að leika í kring með jQuery yesterday. I’ve been wanting to do this for a long time, síðan Paul Grenier byrjaði að skrifa röð hans um jQuery fyrir notendur á að venerable 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.

Í þessari atburðarás, Ég hef búið til sérsniðnar lista sem lét "nýja" mynd lítur út eins og sýnt:

image

Þetta er nýtt form fyrir sérsniðnum lista með Title sjálfgefið dálki og tveggja lista dálka (ekki síða dálka; Ég held ekki að það ætti að skipta máli).

Markmiðið er að tengja einhverja gildi á sviði, "DefaultMeFieldNoSpaces" (þú getur sagt Ég hluti af a coward með "engin bil" hlutur að fara á, en ég krydda þetta upp í lok þessa grein).

Þessi hluti af jQuery í uppnámi fyrir mig:

<handrit type ="Text / javascript">

  $(virka() {

    $("Inntak[title = DefaultMeFieldNoSpaces]").attr(
        {gildi: "Þú ert í twisty völundarhús af köflum, öll eins. "});

  });

</handrit>

Eins og ég skil það þetta hluti af jQuery er að segja, “find me any input tag whose title = DefaultMeFieldNoSpaces. Þá, setja öll gildi á fræga setningu frá gömlum tölvuleik. "

Þar mun aðeins vera einn reitur á eyðublaði með titli jafn "DefaultMeFieldNoSpaces" við erum viss um að gefa gildi á því sviði og ekkert annað.

Hvað um málefni sem nafn hefur rými í það? It’s nearly the same:

<handrit type ="Text / javascript">

  $(virka() {
     $("Inntak[titill = Úthluta Field Með Space]").attr(
        {gildi: "Þú ert í twisty völundarhús af köflum, öll eins. "});

  });

</handrit>

Ég held að þetta sé nokkuð öruggt nálgun, 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, það er tegund af sóðalegur:

<inntak
nafn="ctl00$m$g_bdb23c2c_fde7_495f_8676_69714a308d8e$ctl00$ctl04$ctl02$ctl00$ctl00$ctl04$ctl00$ctl00$TextField"
tegund= "Texti"
Hám.lengd= "255"
id="ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
titill= "DefaultMeFieldNoSpaces"
flokki= "MS-langur"
/>

"Titillinn" stendur upp úr sem þekkta og vonandi einstöku til að hjálpa okkur að bera kennsl á ákveðin dálk sem við viljum að úthluta handahófi gildi okkar.

This is a foundational concept. Setting a field in an arbitrary way like this isn’t going to win any awards. Hins, ef við viljum gera meira áhugavert form stigi efni (sem okkur langar alltaf að gera, auðvitað, rétt eftir að við ljúkum þvo leirtau), eins og breyta gildi "b sviði" sjálfkrafa byggt á verðmæti "sviði að", við (Ég) þarf að læra þetta.

Ég held að besta tækifæri okkar til að fá alvöru gagnlegt gildi hér er um í titli, at least for text fields. There may be a better, more reliable approach. If I find it, Ég uppfæri þessa færslu. If you know a better way, vinsamlegast eftir umsögn.</enda>

</enda>

Gerast áskrifandi að bloggið mitt.

Fylgdu mér á Twitter á http://www.twitter.com/pagalvin