Arkivat mujore: Qershor 2009

Sevices Forma InfoPath, Format Authentication Based (FBA) dhe emrat unik imazhit

Unë kam qenë duke punuar në disa InfoPath formon këtë javë në MOSS në një mjedis FBA dhe mësuar, kur shkova për të vendosur format në një mjedis të prodhimit me një zonë FBA se emrin() function function does not work. I was using it to generate unique file names.

Mirë, se funksioni nuk do të punojnë në një mjedis FBA (të paktën, mos dalë nga kutia). Dhe, mbi këtë reflektim, duke përdorur emrin në mënyrën se si unë kishte planifikuar nuk do të kishte garantuar një emër unik e fotografisë në çdo rast.

Zgjidhja ime ishte që të përdorin tani() 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. (Unë nuk e tregojnë atë në ekran shtënë, por vënë një kusht në rregull për të zjarrit vetëm kur "myFilename" është bosh). I used to set the file name at the data source level. Typically, Unë do të bëj diçka (keq) si kjo:

image

Problemi me këtë është se në qoftë se përdoruesi Një hap formularin hënën dhe B përdorues e ndryshon atë të martën, ju do të përfundojë me dy forma të ndryshme që dy përdorues të ndryshëm shpëtuam atë me emra të përdoruesve të ndryshëm.

Kështu, si i bezdisshëm si FBA mund të jenë në përgjithësi dhe në veçanti me InfoPath, kjo më bëri ri-mendojnë një detaj i vogël, por me të vërtetë e rëndësishme teknike dhe qasje që unë nuk do të kishte bërë ndryshe!

</fund>

Abonohen në blogun tim.

Atëherë ejani pas meje në Twitter në http://www.twitter.com/pagalvin

Technorati Tags:

Sigurimi List / Dokumenti Views SharePoint Library Seems (lloj nga) E mundur me jQuery

Kjo është një tjetër post në tim në vazhdim seri e se si të përdorin jQuery me SharePoint.
Nëse doni të mësoni më shumë në lidhje me jQuery, I highly recommend: jQuery në Veprim nga Bear Bibeault dhe Yehuda Katz.

Një nga gjërat e para që kam menduar, dikur kam filluar të luajnë rreth me jQuery, was whether we could use it to secure a SharePoint view. The answer is “no” (ose të paktën, Unë nuk jam duke pretenduar se kjo është e mundur). Megjithatë, 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: Quick dhe Easy: Krijo Own Sandbox juaj jQuery për SharePoint.

Për të "siguruar" një pamje të, ndiqni këto hapa:

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

    Kjo është ajo që duket si kur ajo nuk është "siguruar":

    image

  2. Shto një editor përmbajtje pjese web faqen pikëpamjes së përdorur hile përshkruar në nenin sandbox (i.e. shtoni "pageview = Shared&ToolPaneView = 2 "tek lidhja).
  3. Figure out your SharePoint _spUserId by following these crazy steps, besoni apo jo:
    1. Hyni në mjedisin tuaj SharePoint.
    2. Në fushën e web browser i adresave, lloj: "Javascript:vigjilent(_spUserId ").
    3. Regjistro rezultatin (kjo është "13" në rastin tim).

      image

  4. Shto javascript mëposhtme për CEWP tuaj në pikëpamje të kodit:

    <dorëshkrim
        "text/javascript"
        src ="../../jQuery%20Library/jquery-1.3.2.min.js">
    </dorëshkrim>
    
    <Lloji script ="text/javascript">
      $(funksion() {
    
        vigjilent(_spUserId);
    
        var theSecuredView = $('Iframe[FilterLink * = 20View Secured%]');
    
        nëse ((theSecuredView.length > 0) && (_spUserId == 13))
          $('Iframe[FilterLink * = 20View Secured%]').prind().prind().prind().html("<tr bgcolor = kuqe><td>Nuk ka pikëpamje për ju!</td></tr>");
      });
    
    </dorëshkrim>
    

Unë e kam përfshirë që vigjilent(_spUserId) linjë në atje për të demonstruar se si kjo nuk është me të vërtetë një "sigurimin" një pamje të, but simply making it more difficult to see. More on that in a moment.

Në parim, 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, ne ecim deri DOM për një <TR> etiketë (që unë i realizuar artistikisht nga shikimin burimin dhe gjurmimin atë) dhe pastaj duke e zëvendësuar atë etiketë TR me mesazhin tim. Unë me të vërtetë nuk e di se si kjo është e fuqishme (Unë jam shumë i dyshimtë, në të vërtetë), but it worked in my sandbox. If I find a better way, Unë do të blog në lidhje me atë. Ky është rezultat:

image

Klikoj butonin OK dhe të dhënave është zëvendësuar me një mesazh i madh i kuq:

image

Si ju mund të thoni, the way I’ve implement this “security” solution is to allow the web part to render itself. After it finishes, Unë prishësh përmbajtjen e saj me pamje "No time për ju!"Mesazhi.

Përkundër faktit se ajo nuk është me të vërtetë një "siguruar" Pikëpamja, kjo është potencialisht e dobishme dhe me disa punë zgjuar, it may eventually be securable in a more formal sense. The fundamental issue is that the client is getting all the data and then, vetëm pasi ajo merr të dhënat, it wipes it out. If the client is getting the data, një përdorues i zgjuar mund të parandalojë jQuery nga kandidimi në të gjitha dhe të shohim atë që ai / ajo dëshiron të shohë.

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, por unë shoh disa gjëra të mira shkruar mbi këtë temë, kështu që unë jam optimist se ka një përgjigje e mirë për këtë problem.

Lista e pikëpamjeve të vetë duhet të shkurtohet, nëse është e mundur. I haven’t tried to figure that out. I assume it’s possible, por nuk ka të vërtetë të zgjidhë çështjen fundamentale të sigurisë për shkak se dikush ende mund të shtypni thjesht URL e parë që ata duan (në qoftë se ata e dinin atë). Megjithatë, 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, ata ndoshta nuk do të përpiqen të përdorin atë. Nganjëherë, kjo është mjaft e mirë.

Me fat, Unë do të ketë më shumë për të shkruar mbi këtë temë me kalimin e kohës.

</fund>

Abonohen në blogun tim.

Atëherë ejani pas meje në Twitter në http://www.twitter.com/pagalvin

Quick dhe Easy: Një mënyrë e mirë për të përdorur jQuery për të fshehur një fushë teksti në një formular SharePoint

Kjo është një tjetër post në tim në vazhdim seri e se si të përdorin jQuery me SharePoint.
Nëse doni të mësoni më shumë në lidhje me jQuery, I highly recommend: jQuery në Veprim nga Bear Bibeault dhe Yehuda Katz.

Më parë, 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 (Unë kam qenë prindërit chaining - që është thjesht nuk është bërë këto ditë, të paktën në familje të cilësisë).

Kur kam filluar të mendoj për këtë, Unë e dinte se unë e nevojshme për të gjetur një <TR> për të cilën unë mund të kërkoj fshehin() metodë. My early effort to find the correct <TR> ishte diçka si kjo:

$('Tr:ka(të dhëna[title = Fshih dhënat!])');

Problemi me këtë është se ajo do të gjeni çdo <TR> tag that had any parent relationship to the Hide Me! fushë, edhe në qoftë se të dhënat Fshih! është mbivendosur nivele shumë të thella në <TR>’s. It turns out that on my sandbox form, se shprehja gjen 9 TR ndryshme të cilët kanë fshihje! as a child somewhere in its DOM tree. I realized that I could walk back up the tree from the input field itself, kështu që kjo është se si unë përfundoi prindërit abuzonin, por ajo nuk rri mirë me mua.

I dha disa menduar për këtë dhe një nga gjërat që kam lexuar kuptim bërë në fund: Unë mund të përdorin jo() Metoda të shkurtojë jashtë <TR>’s I don’t want in my wrapped set. Kjo çoi mua në këtë:

$('Tr:ka(të dhëna[title = Fshih dhënat!])').nuk('Tr:ka(tr)').fsheh();

Bit e parë gjen të gjitha <TR> tags që kanë fshihje! field anywhere in their own hierarchy. It then strips out any <TR> që gjithashtu kanë një fëmijë <TR>. This leaves us with a single <TR> që:

1) Nuk ka <TR> të dhënat fëmijë

2) Does have the input field as child.

Ne pastaj mund të aplikojnë fshihej() metodë për të vendosur rezulton dhe ne jemi duke bërë.

Unë jam ende pak nervoz në lidhje me këtë, por jo aq nervoz si prindër chaining.

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, ju lutem postoni një koment.

</fund>

Abonohen në blogun tim.

Atëherë ejani pas meje në Twitter në http://www.twitter.com/pagalvin

Quick dhe Easy: Përdorimi jQuery për të fshehur një fushë teksti në një formular SharePoint

Kjo është një tjetër post në tim në vazhdim seri e se si të përdorin jQuery me SharePoint.
Nëse doni të mësoni më shumë në lidhje me jQuery, I highly recommend: jQuery në Veprim nga Bear Bibeault dhe Yehuda Katz.

UPDATE (tashmë!): Unë mendoj se ka një mënyrë më të mirë për të gjetur <TR> tag Unë dua të fshehur dhe shkroi për këtë këtu. You may still find this article interesting anyway so I’m leavnig it up.

Unë dua për të fshehur një fushë teksti, "Mbulo!"Siç tregohet:

image'

JQuery vijim e bën mashtrim për mua:

<Lloji script ="text/javascript">

  $(funksion() {


    $('Input[title = Fshih dhënat!]').prind().prind().prind().fsheh();

  });

</dorëshkrim>

Kodi është duke thënë, "Më gjeni të gjitha input fields cilëve title = fshihje!. Pastaj, merrni prindin e saj dhe pastaj prind të ardhshëm dhe * tjetër * prind (uh!) dhe kërkoj fshehin() Metoda në atë gjë, çfarëdo qoftë ajo ndodh të jetë.

I realizuar artistikisht se struktura prind me shikimin HTML për formën që SharePoint krijuar siç tregohet:

<TR>
    <TD nowrap="true" valign="top" gjerësi="190px" klasë="ms-formlabel">
        <H3 klasë="ms-standardheader">
            <nobr>Fshih Mua!</nobr>
        </H3>
    </TD>

    <TD valign="top" klasë="ms-formbody" gjerësi="400px">
        <!-- FieldName="Hide Me!"
                 FieldInternalName="Hide_x0020_Me_x0021_"
                 FieldType="SPFieldText"
        -->
        <hapësirë dir="none">
            <të dhëna
                emër="ctl00$m$g_bdb23c2c_fde7_495f_8676_69714a308d8e$ctl00$ctl04$ctl02$ctl00$ctl00$ctl04$ctl00$ctl00$TextField"
                lloj="text"
                maxlength="255"
                id="ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
                titull="Hide Me!"
                klasë="ms-long" />
                <br>
        </hapësirë>


    </TD>
</TR>

Kjo foto tregon njëjtë, por deri shënuar me prindërit:

image

Cilësues parë (1) is a span tag. Span’s parent (2) është një tag TD dhe pastaj në fund ne të merrni për prind të vërtetë unë dua të fsheh (3) Cila është tag TR vetë.

This is a pretty terrible approach I think because it’s extremely dependent on the very specific structure of this form. When SharePoint 2010 del, 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 (Dhe vetëm etiketa Tr) që kanë diku në elementet e tyre fëmijëve një fushë input cilit title = fshihje!". I starting from the bottom and moving up. Assuming I figure this out, Unë do të postoj një përditësuar "të shpejtë dhe të lehtë postim '.

</fund>

Abonohen në blogun tim.

Atëherë ejani pas meje në Twitter në http://www.twitter.com/pagalvin

Quick dhe Easy: Krijo Own Sandbox juaj jQuery për SharePoint

Kjo është një tjetër post në tim në vazhdim seri e se si të përdorin jQuery me SharePoint.
Nëse doni të mësoni më shumë në lidhje me jQuery, I highly recommend: jQuery në Veprim nga Bear Bibeault dhe Yehuda Katz.

Getting filloi me jQuery në SharePoint është çuditërisht e lehtë (mua). (Unë kam pyetje serioze në lidhje me një qasje të "praktikave më të mira" për vendosjen këto gjëra për të prodhimit, por kjo është për një ditë tjetër). 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, ju mund të gjeni këtë qasje e dobishme.

1. Krijo një Site Blank

Krijo një faqe bosh diku në faqen tuaj dhe e quajti atë si diçka e zgjuar "Sandbox jQuery".

2. Shkarko jQuery

Ju mund të shkarkoni bibliotekën jQuery javascript nga këtu: http://docs.jquery.com/Downloading_jQuery

Save se për të desktop tuaj.

Unë kam qenë duke përdorur "" versionin minified.

3. Krijo një SharePoint Library Document

Në faqen tuaj sandbox, create a document library.

4. Ngarko Bibliotekën jQuery për SharePoint

Qasja bibliotekën doc keni krijuar vetëm dhe ngarkoni bibliotekën jQuery.

5. Krijo një listë me porosi SharePoint

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. Fshih një fushë.
  2. Cakto një vlerë në një fushë.

Me këtë objektiv në mendje, I added two text fields. Over time, Unë do të luajnë me lidhje, images, Lookups, etj.

6. Ndrysho NewForm.aspx Part Web page and Shto një redaktor Content Pjesa Web

Kjo është një magji pak të zi-ish , in that it’s a new concept to me. I first learned about this from Paul Grenier, SharePoint jQuery Superstar, CodePlex në faqen e tij të projektit: http://spff.codeplex.com/.

Ndiqni këto hapa për të shtuar një CEWP të njëjtën faqe që tregon NewForm.aspx për ndonjë listë me porosi:

  1. Qasja listë me porosi dhe klikoni New.
  2. Append e mëposhtme për URL: Pageview = Shared&ToolPaneView = 2

Kjo do të transformojë mërzitshëm tuaj të të dhënave vanilje formularin e hyrjes nga diçka si kjo:

image

Për këtë:

image

Shto editor përmbajtje pjesën web tek faqja.

7. Shkruani Kodi juaj e parë jQuery

Open up se CEWP në pamje të kodit dhe të shtoni në vijim:

image

Këtu është kodi aktual në qoftë se ju doni të kopje / paste:

<dorëshkrim
    "text/javascript"
    src ="../../jQuery%20Library/jquery-1.3.2.min.js">
</dorëshkrim>

<Lloji script ="text/javascript">
  $(funksion() {

    $('ResultsID #').html('Ka' + $('A').madhësi() + 'A tags tags në këtë faqe.');

  });
</dorëshkrim>

Pasojë:
<div id ='ResultsID'></div>
/pasojë

Re se pare <dorëshkrim> tag is referencing the actual jQuery library. Presumably, këto gjëra ndryshojnë me kalimin e kohës, kështu që ju do të dëshironi të bëni të sigurt që një) përdorin emrin e duhur dhe b) pikë atë në bibliotekë dokument SharePoint saktë.

Bask në lavdinë

Nëse ju e bëri atë të saktë, ju do të shihni një rezultat të ngjashëm në vijim:

image

Duke Up

Kjo nuk është e vetmja mënyrë për të marrë filluar, por është e shpejtë, easy and isolated from your existing SharePoint environment.

</fund>

Abonohen në blogun tim.

Atëherë ejani pas meje në Twitter në http://www.twitter.com/pagalvin

Quick dhe Easy: Përdorimi jQuery që të përcaktojë vlerën e një fushë të tekstit në një formular SharePoint

Unë fillova duke luajtur rreth me jQuery yesterday. I’ve been wanting to do this for a long time, qëkur Paul Grenier Shkrim filluar seri tij Rreth jQuery për përdoruesit përfundimtarë në nderuari 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.

Në këtë skenar, Unë kam krijuar një listë me porosi të cilit "i ri" formë duket siç tregohet:

image

Kjo është forma e re për një listë me porosi me kolonën Titulli i paracaktuar dhe dy kolona lista (jo kolona faqe; Unë nuk mendoj se ajo duhet të bëjë ndonjë ndryshim).

Objektivi është që të caktojë një vlerë arbitrare në fushë, "DefaultMeFieldNoSpaces" (ju mund të thoni që unë jam pak e një frikacak me "nuk ka hapësira" gjë ndodh, por bëj erëz atë deri në fund të këtij neni,).

Kjo pak e jQuery ka punuar për mua:

<Lloji script ="text/javascript">

  $(funksion() {

    $('Input[title = DefaultMeFieldNoSpaces]').attr(
        {vlerë: 'Ju jeni në një labirint twisty e pasazheve, të gjithë njësoj. '});

  });

</dorëshkrim>

Me sa kuptoj unë kjo pak jQuery është duke thënë, “find me any input tag whose title = DefaultMeFieldNoSpaces. Pastaj, të vendosur të gjithë nga vlerat e tyre në një frazë e famshme nga një lojë kompjuterike të vjetër. "

Që nuk do të jetë vetëm një fushë në formë me një titull të barabartë me "DefaultMeFieldNoSpaces" Ne jemi të sigurt për caktimin e një vlerë në atë fushë dhe asnjë tjetër.

Po në lidhje me një fushë emri i të cilit ka hapësira në të? It’s nearly the same:

<Lloji script ="text/javascript">

  $(funksion() {
     $('Input[title = Fusha Cakto me hapësirë]').attr(
        {vlerë: 'Ju jeni në një labirint twisty e pasazheve, të gjithë njësoj. '});

  });

</dorëshkrim>

Unë mendoj se kjo është një qasje mjaft të sigurt, 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, kjo është lloj i çrregullt:

<të dhëna
emër="ctl00$m$g_bdb23c2c_fde7_495f_8676_69714a308d8e$ctl00$ctl04$ctl02$ctl00$ctl00$ctl04$ctl00$ctl00$TextField"
lloj="text"
maxlength="255"
id="ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
titull="DefaultMeFieldNoSpaces"
klasë="ms-long"
/>

"Title" qëndron si një atribut të njohur dhe shpresojmë unike për të na ndihmuar të identifikuar kolonë të veçantë në të cilën ne duam të caktojë vlerën tonë arbitrar.

This is a foundational concept. Setting a field in an arbitrary way like this isn’t going to win any awards. Megjithatë, në qoftë se ne duam të bëjmë gjëra më interesante të nivelit formë (të cilat të gjithë ne gjithmonë duan të bëjnë, sigurisht, drejtë, pasi ne fund larë enët), pëlqen të ndryshojë vlerën e "fushë b" automatikisht bazuar në vlerën e një "fushë", ne (Unë) nevojë për të mësuar këto gjëra.

Unë mendoj se shansi ynë i mirë për të marrë një vlerë reale të dobishëm këtu është me anë të titullit, at least for text fields. There may be a better, more reliable approach. If I find it, Unë do update këtë post. If you know a better way, ju lutem të lënë një koment.</fund>

</fund>

Abonohen në blogun tim.

Atëherë ejani pas meje në Twitter në http://www.twitter.com/pagalvin