Buwanang Archive: Hunyo 2009

InfoPath Form Sevices, Forms Based Authentication (FBA) at Natatanging Mga Pangalan ng File

Ako pinagsusumikapan ilang InfoPath bumubuo linggo na ito sa Moss sa isang kapaligiran FBA at natutunan, kapag nagpunta ako upang i-deploy ang mga form sa isang kapaligiran sa produksyon na may isang zone FBA na ang username() function function does not work. I was using it to generate unique file names.

Mahusay, na function na ay hindi gumagana sa isang kapaligiran FBA (kahit, Hindi sa labas ng kahon). At, sa pagmuni-muni, gamit ang username sa paraan ako ay binalak hindi sana katiyakan ang isang natatanging pangalan ng file sa anumang kaganapan.

Aking solusyon ay upang gamitin ang mga ngayon() 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. (Hindi ko ipakita ito sa mga screen shot, ngunit maglagay ng isang kondisyon sa panuntunan na lamang ang apoy kapag "myFilename" ay blangko). I used to set the file name at the data source level. Typically, Gusto ko gawin ang isang bagay (masama) ganito:

image

Ang problema sa na ay na kung ang isang user ay bubukas ang form sa Lunes at sa gumagamit B ay nagbabago dito sa Martes, makakapunta ka sa dalawang magkaibang mga form dahil dalawang iba't ibang mga gumagamit-save ito sa ibang mga user name.

Kaya, bilang nakakainis bilang FBA ay maaaring maging sa pangkalahatang at may InfoPath sa partikular na, Gawa ito sa akin muli sa tingin ang isang maliit ngunit talagang mahalaga teknikal na detalye at diskarte na hindi ko nagawa na kung hindi man ay!

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Technorati Tags:

Pag-secure ng SharePoint Listahan / Dokumento Views Library tila (uri ng) Posibleng may jQuery

Ito ay isa pang post sa aking on-pagpunta serye kung paano gamitin jQuery may SharePoint.
Kung gusto mong matuto nang higit pa tungkol sa jQuery, Ko lubos na inirerekomenda: jQuery sa Aksyon sa pamamagitan ng Bear Bibeault at Yehuda Katz.

Ang isa sa mga unang bagay na naisip ko, sa sandaling sinimulan ko upang i-play sa paligid na may jQuery, was whether we could use it to secure a SharePoint view. The answer is “no” (o hindi bababa sa, Hindi ko na nagke-claim posible). Gayunman, 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: Mabilis at madali: Lumikha ng Iyong Sariling jQuery Sandbox para sa SharePoint.

Upang "secure ang" ng tanawin, sundin ang mga hakbang na ito:

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

    Ito ay kung ano ang mukhang kapag hindi ito "secure":

    image

  2. Magdagdag ng nilalaman editor web bahagi sa pahina sa view gamit ang kahanga-hangang gawa na inilarawan sa mga artikulo sandbox (i.e. idagdag ang "PageView = Naibahaging&ToolPaneView = 2 "sa URL).
  3. Figure out your SharePoint _spUserId by following these crazy steps, Naniniwala o hindi:
    1. Mag-log in sa iyong SharePoint kapaligiran.
    2. Sa patlang ng address sa web browser, uri: "Javascript:alerto(_spUserId ").
    3. Itala ang resulta (ito ay "13" sa aking mga kaso).

      image

  4. Idagdag ang sumusunod na javascript sa iyong CEWP sa code pagtingin:

    <iskrip
        "text/javascript"
        SRC ="../../jQuery%20Library/jquery-1.3.2.min.js">
    </script>
    
    <script type ="text/javascript">
      $(tungkulin() {
    
        alerto(_spUserId);
    
        var theSecuredView = $('Iframe[FilterLink * = Secured% 20View]');
    
        kung ((theSecuredView.length > 0) && (_spUserId == 13))
          $('Iframe[FilterLink * = Secured% 20View]').magulang().magulang().magulang().html("<tr bgcolor = red><td>Walang mga view para sa iyo!</td></tr>");
      });
    
    </script>
    

Nagsama ako na alerto(_spUserId) linya sa doon upang ipakita kung paano ito ay hindi talagang isang "pag-secure" ng tanawin, but simply making it more difficult to see. More on that in a moment.

Talaga, jQuery is looking for an iFrame on the page who has an attribute that contains “Secured%20View” in its value. Once it finds it, we check to see if the current user is “13”. If it is, lakad namin up ang DOM sa isang <TR> tag (kung saan ako may korte out sa pamamagitan ng pagtingin sa source at ang pagsunod nito) at pagkatapos ay pinapalitan na tr tag sa aking mga mensahe. Ko talagang hindi alam kung paano malakas na ito ay (Ako'y sobrang kahina-hinala, sa katunayan), but it worked in my sandbox. If I find a better way, Kukunin ko blog ang tungkol dito. Ito ang resulta:

image

I-click ang pindutan na OK at ang data ay pinalitan ng isang malaking pulang mensahe:

image

Bilang maaari mong sabihin, the way I’ve implement this “security” solution is to allow the web part to render itself. After it finishes, I-overwrite ang nilalaman nito sa aking mga "Walang view para sa iyo!"Mensahe.

Sa kabila ng katotohanan na ito ay hindi talagang isang "secured '" view, ito ay potensyal na kapaki-pakinabang at may ilang matalino 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, lamang matapos na ito ay nakakakuha ng data, it wipes it out. If the client is getting the data, isang matalino gumagamit mapipigilan ang jQuery mula sa pagtakbo sa lahat at makita kung ano siya / siya ay nais na makita.

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, ngunit nakikita ko ang ilang mga magagandang bagay-bagay na nakasulat sa paksang ito, kaya ako ay may pag-asa mayroong isang magandang sagot sa problema na.

Ang listahan ng mga tanawin ng kanilang sarili dapat mabawasan ng, kung posible. I haven’t tried to figure that out. I assume it’s possible, ngunit hindi talagang malutas ang pangunahing mga isyu ng seguridad dahil ang isang tao ay maaari pa ring i-type lamang ang URL ng view gusto nila (kung alam nila ito). Gayunman, 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. Kung minsan, na mabuti sapat.

Gamit ang swerte, Kukunin ko magkaroon ng higit na magsulat sa paksang ito sa paglipas ng panahon.

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Mabilis at madali: Isang Mas mahusay na Way upang Gamitin jQuery upang Itago ang Teksto sa Field ng Form SharePoint

Ito ay isa pang post sa aking on-pagpunta serye kung paano gamitin jQuery may SharePoint.
Kung gusto mong matuto nang higit pa tungkol sa jQuery, Ko lubos na inirerekomenda: jQuery sa Aksyon sa pamamagitan ng Bear Bibeault at Yehuda Katz.

Dati, 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 (Ako ay chaining mga magulang - na hindi lang tapos mga araw na ito, hindi bababa sa mga pamilya ng kalidad).

Kapag ako unang nagsimula na isipin ang tungkol dito, Alam ko kailangan ko upang mahanap ang isang <TR> upang kung saan ako maaaring tumawag sa diyos ang pagtaguan() pamamaraan. My early effort to find the correct <TR> ay isang bagay na tulad nito:

$('Tr:May(input[pamagat = Itago Akin!])');

Ang problema sa na ay na ito mahanap ang bawat <TR> tag that had any parent relationship to the Hide Me! patlang, kahit Itago Akin! ay nested maraming mga antas ng malalim sa <TR>’s. It turns out that on my sandbox form, expression na hahanapin 9 ibang tr ni na nag-Itago Akin! as a child somewhere in its DOM tree. I realized that I could walk back up the tree from the input field itself, nang sa gayon ay kung paano ako napunta inaabuso magulang, ngunit hindi ito umupo na rin sa akin.

Nagbigay ako ng ilang mga pag-iisip na ito at isa sa mga bagay na nabasa ko sa wakas ay ginawa pakiramdam: Maaari ko bang gamitin ang hindi() pamamaraan i-trim out <TR>’s I don’t want in my wrapped set. Na humantong sa akin na ito:

$('Tr:May(input[pamagat = Itago Akin!])').hindi('Tr:May(tr)').itago();

Ang unang bit nahahanap ang lahat ng mga <TR> mga tag na ang Itago Akin! field anywhere in their own hierarchy. It then strips out any <TR> na rin magkaroon ng isang bata <TR>. This leaves us with a single <TR> na:

1) Ay walang <TR> anak talaan

2) Does have the input field as child.

Maaari naming pagkatapos ay ilapat ang pagtaguan() pamamaraan upang ang mga nagresultang set at tapos na kami.

Ako pa rin ng kaunti ng nerbiyos tungkol sa, ngunit hindi bilang ng nerbiyos bilang mga magulang 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, paki-post ng komento.

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Mabilis at madali: Gamitin jQuery upang Itago ang Teksto sa Field ng Form SharePoint

Ito ay isa pang post sa aking on-pagpunta serye kung paano gamitin jQuery may SharePoint.
Kung gusto mong matuto nang higit pa tungkol sa jQuery, Ko lubos na inirerekomenda: jQuery sa Aksyon sa pamamagitan ng Bear Bibeault at Yehuda Katz.

I-UPDATE (na!): Ako nag-isip ng isang mas mahusay na paraan upang mahanap ang <TR> tag ang gusto kong itago at sinulat ni tungkol sa ito dito. You may still find this article interesting anyway so I’m leavnig it up.

Gusto kong itago ang isang patlang ng teksto, "Itago Akin!"Tulad ng ipinapakita:

image'

Ang mga sumusunod na jQuery ang ipinapakita ng kahanga-hangang gawa para sa akin:

<script type ="text/javascript">

  $(tungkulin() {


    $('Input[pamagat = Itago Akin!]').magulang().magulang().magulang().itago();

  });

</script>

Ang code ay sinasabi, "Mahanap ako ng lahat ng mga patlang ng pag-input na ang pamagat = Itago Akin!. Pagkatapos, makakuha ng mga magulang nito at pagkatapos ay susunod magulang at ang susunod * * magulang (phew!) at paandarin ang pagtaguan() sa paraan na bagay, ano ang mangyayari ito upang maging.

Ako may korte out na magulang istraktura sa pamamagitan ng pagtingin sa HTML para sa form na nilikha SharePoint tulad ng ipinapakita:

<TR>
    <TD nowrap="true" valign="top" lapad="190px" klase="ms-formlabel">
        <H3 klase="ms-standardheader">
            <nobr>Itago Akin!</nobr>
        </H3>
    </TD>

    <TD valign="top" klase="ms-formbody" lapad="400px">
        <!-- FieldName="Hide Me!"
                 FieldInternalName="Hide_x0020_Me_x0021_"
                 FieldType="SPFieldText"
        -->
        <maikling panahon mo="none">
            <input
                pangalan="ctl00$m$g_bdb23c2c_fde7_495f_8676_69714a308d8e$ctl00$ctl04$ctl02$ctl00$ctl00$ctl04$ctl00$ctl00$TextField"
                uri="text"
                MAXLENGTH="255"
                ID="ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
                pamagat="Hide Me!"
                klase="ms-long" />
                <br>
        </maikling panahon>


    </TD>
</TR>

Ang larawan na ito ay nagpapakita ng parehong, ngunit minarkahan up sa mga magulang:

image

Ang unang magulang (1) is a span tag. Span’s parent (2) ay isang td tag at pagkatapos ay sa wakas namin na makuha ang totoong magulang gusto kong itago (3) kung saan ay ang tr tag mismo.

This is a pretty terrible approach I think because it’s extremely dependent on the very specific structure of this form. When SharePoint 2010 dumating out, 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 (at lamang tr mga tag) na mayroon sa isang lugar sa kanilang mga element ng bata ang isang input field na pamagat = Itago Akin!". I starting from the bottom and moving up. Assuming I figure this out, Kukunin ko mag-post ng isang na-update "mabilis at madaling 'post.

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Mabilis at madali: Lumikha ng Iyong Sariling jQuery Sandbox para sa SharePoint

Ito ay isa pang post sa aking on-pagpunta serye kung paano gamitin jQuery may SharePoint.
Kung gusto mong matuto nang higit pa tungkol sa jQuery, Ko lubos na inirerekomenda: jQuery sa Aksyon sa pamamagitan ng Bear Bibeault at Yehuda Katz.

Pagsisimula sa jQuery sa SharePoint ay nakakagulat na madaling (akin). (Akong seryosong tanong tungkol sa isang "pinakamahusay na kasanayan" diskarte sa pag-deploy ang mga bagay na produksyon, ngunit iyan ay para sa isa pang araw). 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, maaari mong mahanap ang diskarte na ito kapaki-pakinabang.

1. Lumikha ng isang Blangkong Site

Lumikha ng blangkong site sa isang lugar sa iyong site at tumawag ito ng isang bagay na matalino tulad ng "jQuery Sandbox".

2. I-download ang jQuery

Maaari mong i-download ang jQuery javascript library mula dito: http://docs.jquery.com/Downloading_jQuery

I-save ang na sa sa iyong desktop.

Ako ay na-gamit ang "minified" bersyon.

3. Lumikha ng isang Library SharePoint Dokumento

Sa iyong sandbox site, create a document library.

4. I-upload ang jQuery Library upang SharePoint

I-access ang doc library mo lamang nilikha at i-upload ang jQuery library.

5. Lumikha ng isang Custom List 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. Itago ang isang patlang.
  2. Magtalaga ng isang halaga sa isang patlang.

Gamit na layunin sa isip, I added two text fields. Over time, Kukunin ko mai-play na may mga link, mga larawan, lookup, at iba pa.

6. Baguhin ang NewForm.aspx Web Bahagi Page at Magdagdag ng Nilalaman Editor Web Part

Ito ay isang maliit na itim na magic-HDR , in that it’s a new concept to me. I first learned about this from Paul Grenier, SharePoint jQuery superstar, sa kanyang site CodePlex proyekto: http://spff.codeplex.com/.

Sundin ang mga hakbang na ito upang idagdag ang isang CEWP sa parehong pahina na nagpapakita sa NewForm.aspx para sa anumang pasadyang listahan:

  1. I-access ang mga custom na listahan at i-click ang Bagong.
  2. Ikabit ang sumusunod na mga URL: PageView = Naibahaging&ToolPaneView = 2

Iyon ay ibahin ang anyo ng iyong pagbubutas vanilla data entry form mula sa isang bagay na tulad nito:

image

Upang ito:

image

Idagdag ang nilalaman editor web bahagi sa pahina.

7. Isulat ang iyong Unang jQuery Code

Buksan up na CEWP sa view ng code at idagdag ang mga sumusunod:

image

Narito ang aktwal na code kung gusto mong kopyahin / ilagay:

<iskrip
    "text/javascript"
    SRC ="../../jQuery%20Library/jquery-1.3.2.min.js">
</script>

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

    $('# ResultsID').html('Mayroong' + $('Ang isang').laki() + 'Ang isang tag ng tag sa pahinang ito.');

  });
</script>

Magbunga:
<div id ='ResultsID'></div>
/magbunga

Tandaan na ang unang <script> tag is referencing the actual jQuery library. Presumably, mga bagay na ito sa paglipas ng panahon, kaya makikita mo gusto upang matiyak na isang) gamitin ang tamang pangalan at b) ituro ito sa tamang library SharePoint dokumento.

Magpainit sa Glory

Kung ginawa mo ito nang tama, makakakita ka ng isang resulta kamukha ng mga sumusunod:

image

Pambalot Up

Ito ay hindi lamang ang tanging paraan upang makapagsimula, subalit ito ay mabilis na, easy and isolated from your existing SharePoint environment.

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin

Mabilis at madali: Gamitin jQuery upang Itakda ang Halaga ng Isang Patlang ng Teksto sa isang Form SharePoint

Ako makapagsimula-play sa paligid na may jQuery yesterday. I’ve been wanting to do this for a long time, mula pa nang Paul Grenier nagsimula pagsulat kanyang serye tungkol sa jQuery para sa Mga End User sa mga karapat-dapat sambahin 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.

Sa sitwasyong ito, Ako pa nakalikha ng isang pasadyang listahan na ang "bagong" form na mukhang tulad ng ipinapakita:

image

Ito ang bagong paraan para sa isang pasadyang listahan sa hanay ng default na Pamagat at dalawang mga hanay listahan (hindi site na hanay; Hindi sa tingin ko ito dapat na gumawa ng anumang mga pagkakaiba).

Ang layunin ay upang italaga ang isang arbitrary halaga sa mga patlang, "DefaultMeFieldNoSpaces" (maaari mong sabihin ako ng isang bit ng isang bahag ang buntot sa "walang mga puwang" bagay na nangyayari sa, ngunit gagawin ko lagyan ng pampalasa up ito sa dulo ng artikulong ito).

Ito bit ng jQuery nagtrabaho para sa akin:

<script type ="text/javascript">

  $(tungkulin() {

    $('Input[pamagat = DefaultMeFieldNoSpaces]').attr(
        {halaga: 'Ikaw ay nasa isang twisty maze ng sipi, magkamukha lahat. '});

  });

</script>

Bilang Naiintindihan ko ito bit na ito ng jQuery ay sinasabi, “find me any input tag whose title = DefaultMeFieldNoSpaces. Pagkatapos, itakda ang lahat ng kanilang mga halaga sa isang sikat na parirala mula sa isang lumang laro computer. "

Dahil doon ay tanging isa field sa form na may pamagat na katumbas ng "DefaultMeFieldNoSpaces" kami ay panatag ng pagtatalaga ng isang halaga sa patlang na iyon at walang iba pang mga.

Paano ang tungkol sa isang patlang na ang pangalan ay may puwang sa loob nito? It’s nearly the same:

<script type ="text/javascript">

  $(tungkulin() {
     $('Input[pamagat = Italaga Field Sa Space]').attr(
        {halaga: 'Ikaw ay nasa isang twisty maze ng sipi, magkamukha lahat. '});

  });

</script>

Sa tingin ko ito ay isang medyo ligtas na diskarte, 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, ito ay isang uri ng marumi:

<input
pangalan="ctl00$m$g_bdb23c2c_fde7_495f_8676_69714a308d8e$ctl00$ctl04$ctl02$ctl00$ctl00$ctl04$ctl00$ctl00$TextField"
uri="text"
MAXLENGTH="255"
ID="ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
pamagat="DefaultMeFieldNoSpaces"
klase="ms-long"
/>

"Pamagat" ay nakatayo out bilang ng nakikilalang at sana ay natatanging katangian upang matulungan kaming matukoy ang partikular na hanay na kung saan nais naming italaga ang aming mga di-makatwirang halaga.

This is a foundational concept. Setting a field in an arbitrary way like this isn’t going to win any awards. Gayunman, kung gusto naming gawin mas kawili-wiling paraan antas ng mga bagay-bagay (kung saan ang lahat sa atin laging nais na gawin, mangyari pa, karapatan pagkatapos namin matapos ang washing dishes), gustong baguhin ang halaga ng "field b" ay awtomatikong batay sa halaga ng "field ng", tayo (Ako) kailangan upang malaman ang mga bagay na.

Sa tingin ko ang aming pinakamahusay na pagkakataon upang makakuha ng isang tunay na kapaki-pakinabang na halaga dito ay sa pamamagitan ng pamagat, at least for text fields. There may be a better, more reliable approach. If I find it, Kukunin ko i-update ang post na ito. If you know a better way, mangyaring mag-iwan ng komento.</dulo>

</dulo>

Mag-subscribe sa aking blog.

Sundin ako sa Twitter sa http://www.twitter.com/pagalvin