ყოველთვიური არქივი: ივნისი 2009

InfoPath ფორმა სერვისი, ადგენს დაფუძნებული ავთენტიფიკაცია (FBA) და უნიკალური ფაილი სახელები

მე მომუშავე ზოგიერთი InfoPath ქმნის ამ კვირაში MOSS in FBA გარემოს და შეიტყო, როდესაც მივედი განათავსოს ფორმების წარმოების გარემოში FBA ზონის სახელი() function function does not work. I was using it to generate unique file names.

კარგად, რომ ფუნქცია არ მუშაობს FBA გარემოს (სულ მცირე, გამორიცხული არ ყუთი). ხოლო, საფუძველზე ასახვა, გამოყენებით სახელი გზა მქონდა დაგეგმილი არ იქნებოდა გარანტირებული უნიკალური ფაილი სახელი და ნებისმიერ შემთხვევაში.

ჩემი გამოსავალი იყო გამოიყენოს ახლა() 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. (მე არ ნახოთ ეს ეკრანზე დარტყმას, მაგრამ დააყენა მდგომარეობის წესი, მხოლოდ ცეცხლი, როდესაც "myFilename" ცარიელი). I used to set the file name at the data source level. Typically, მინდა რომ რამე (ცუდი) მსგავსი:

image

პრობლემა, რომ არის, რომ თუ მომხმარებლის ხსნის ფორმა ორშაბათს და შესახებ B მას სამშაბათს, თქვენ დასრულდება up ორი სხვადასხვა ფორმით წლიდან ორ სხვადასხვა წევრებს გადაარჩინა იგი სხვადასხვა მომხმარებლის სახელები.

ასე რომ,, როგორც შემაშფოთებელი, როგორც FBA შეიძლება იყოს ზოგადად და InfoPath კერძოდ, იგი მე ხელახლა ვფიქრობ, მცირე, მაგრამ მართლაც მნიშვნელოვანია ტექნიკური დეტალი და მიდგომა, მე არ გაკეთდეს სხვაგვარად!

</ბოლო>

გამოწერა ჩემი დღიური.

გამომყვეს Twitter-ზე http://www.twitter.com/pagalvin

პროგრამები Tags:

უზრუნველყოფის SharePoint სია / დოკუმენტი ბიბლიოთეკა ნახვა როგორც ჩანს (სახის) შესაძლებელია jQuery

ეს არის კიდევ ერთი პოსტი ჩემს მიმდინარე სერია , თუ როგორ გამოიყენოთ jQuery ერთად SharePoint.
თუ გსურთ მეტი jQuery, მე მაღალ რეკომენდაციას: jQuery მოქმედებაში by დათვი Bibeault და Yehuda Katz.

ერთი პირველი რამ მეგონა,, ერთხელ დავიწყე ითამაშოს გარშემო jQuery, was whether we could use it to secure a SharePoint view. The answer is “no” (ან, როგორც მინიმუმ, მე არ აცხადებდნენ შესაძლებელია). თუმცა, 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: სწრაფი და მარტივი: საკუთარი jQuery Sandbox for SharePoint.

"დაკანონება" ხედი, შეასრულეთ:

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

    ეს არის ის, რაც ჰგავს, როდესაც ის არ არის "უზრუნველყოფილი":

    image

  2. დამატება შინაარსის რედაქტორი ვებ ნაწილი ხედი გვერდი გამოყენებით შეასრულა აღწერილი სავარჯიშოში მუხლის (i.e. დამატება "PageView = გაერთიანებული&ToolPaneView = 2 "URL).
  3. Figure out your SharePoint _spUserId by following these crazy steps, გვჯერა თუ არა:
    1. შესვლა თქვენი SharePoint გარემო.
    2. In ბრაუზერში მისამართი სფეროში, ტიპის: "Javascript:გაფრთხილება(_spUserId ").
    3. ჩაწერას შედეგი (ეს არის "13" ჩემს შემთხვევაში).

      image

  4. სანიშნეს შემდეგ javascript თქვენს CEWP კოდის ხედვა:

    <დამწერლობის
        "text/javascript"
        src ="../../jQuery%20Library/jquery-1.3.2.min.js">
    </დამწერლობის>
    
    <დამწერლობის ივერიის"text/javascript">
      $(ფუნქცია() {
    
        გაფრთხილება(_spUserId);
    
        იყო theSecuredView = $('Iframe[FilterLink * = უზრუნველყოფილი% 20View]');
    
        თუ ((theSecuredView.length > 0) && (_spUserId == 13))
          $('Iframe[FilterLink * = უზრუნველყოფილი% 20View]').მშობელს().მშობელს().მშობელს().html("<tr bgcolor = red><td>არ შეხედულება თქვენთვის!</td></tr>");
      });
    
    </დამწერლობის>
    

მე შედის, რომ მზადყოფნაში(_spUserId) ხაზი არსებობს იმის დემონსტრირება, თუ როგორ ეს არ არის ნამდვილად "უსაფრთხოების უზრუნველყოფის" ხედი, but simply making it more difficult to see. More on that in a moment.

ძირითადად, 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, ჩვენ ფეხით up DOM to <TR> tag (რომელიც მე figured მიერ ათვალიერებენ წყარო და მოკვლევისა ეს) და შემდეგ შეცვალა, რომ TR tag, რომ ჩემს გაგზავნა. მე ნამდვილად არ ვიცი როგორ მტკიცე ეს (მე ძალიან საეჭვო, სინამდვილეში), but it worked in my sandbox. If I find a better way, მე დღიური შესახებ. ეს არის შედეგი:

image

I დააჭირეთ OK ღილაკს და მონაცემები ცვლის დიდი წითელი გაგზავნა:

image

როგორც თქვენ ვუთხრა, the way I’ve implement this “security” solution is to allow the web part to render itself. After it finishes, I თავზე გადაწერის მისი შინაარსის with my "No view for you!"Message.

მიუხედავად იმისა, რომ ფაქტს, რომ მას არის ის, არ არის ნამდვილად a "უზრუნველყოფილი, '" view, it არის ის, პოტენციურად სასარგებლო და with ზოგიერთი 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, მხოლოდ მას შემდეგ, იგი იღებს მონაცემების, it wipes it out. If the client is getting the data, clever მომხმარებლის პროფაილი არ შეუძლია ხელი შეუშალოს jQuery from გაშვებულია at all და ვნახოთ, რა მან / she სურს,, რომ ნახოთ,.

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, მაგრამ მე ვხედავ რაღაც კარგი პერსონალი დაწერილი ამ საკითხზე, ასე რომ მე ვარ იმედი არსებობს კარგი პასუხი ამ პრობლემის.

სიის ჩვენება თავად უნდა დამსხვრეული, თუ ეს შესაძლებელია. I haven’t tried to figure that out. I assume it’s possible, მაგრამ ნამდვილად არ გადაჭრის ფუნდამენტური უსაფრთხოების საკითხი, რადგან ვინმე მაინც უნდა აკრიფოთ URL of აზრით მათ სურთ (თუ მათ იცოდნენ, რომ ეს). თუმცა, 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. ზოგჯერ, ეს არის ის, საკმარისი.

ერთად წარმატებას, მე უფრო მეტი დაწერა ამ საკითხზე დროთა.

</ბოლო>

გამოწერა ჩემი დღიური.

გამომყვეს Twitter-ზე http://www.twitter.com/pagalvin

პროგრამები Tags: ,,

del.icio.us სიტყვები: ,,

სწრაფი და მარტივი: უკეთესი გზა გამოყენება jQuery, დამალოს ტექსტური ველი on SharePoint ფორმა

ეს არის კიდევ ერთი პოსტი ჩემს მიმდინარე სერია , თუ როგორ გამოიყენოთ jQuery ერთად SharePoint.
თუ გსურთ მეტი jQuery, მე მაღალ რეკომენდაციას: jQuery მოქმედებაში by დათვი Bibeault და Yehuda Katz.

ადრე, 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 (მე ვიყავი chaining მშობლები - ეს უბრალოდ არ ხდება ამ დღეებში, მაინც ოჯახებს ხარისხი).

როდესაც მე პირველად დაიწყო ფიქრი ამაზე, ვიცოდი, საჭიროა, რათა იპოვოს <TR> რომლის მე ვერ გამოიწვევს დამალვა() მეთოდი. My early effort to find the correct <TR> იყო რაღაც მსგავსი:

$("Tr:აქვს(შეტანის[title = დამალვა Me!])');

პრობლემა, რომელიც, რომ იპოვოს ყველა <TR> tag რომ არანაირი მშობლის ურთიერთობის დამალვა Me! სფეროში, მაშინაც კი, თუ დამალვა Me! არის წყობილი სხვადასხვა დონეზე ღრმა <TR>’s. It turns out that on my sandbox form, რომ გამოხატვის პოულობს 9 სხვადასხვა TR-ის, ვინც დამალვა Me! as a child somewhere in its DOM tree. I realized that I could walk back up the tree from the input field itself, ასე რომ, როგორ მე დასრულდა ბოროტად გამოყენების მშობლები, მაგრამ ეს არ ზის კარგად, ჩემთან ერთად.

მე გარკვეული აზრის ამ და ერთი რამ წავიკითხე საბოლოოდ გააკეთა გრძნობა: მე ვერ გამოიყენებს არ() მეთოდი მორთვა გარეთ <TR>’s I don’t want in my wrapped set. რომ გამიყვანა ამ:

$("Tr:აქვს(შეტანის[title = დამალვა Me!])').არ("Tr:აქვს(tr)').დამალვა();

პირველი ცოტა პოულობს ყველა <TR> tags, რომლებიც დამალვა Me! field anywhere in their own hierarchy. It then strips out any <TR> რომ ასევე აქვს ბავშვს <TR>. This leaves us with a single <TR> რომ:

1) არა აქვს <TR> ბავშვის ჩანაწერები

2) Does have the input field as child.

ჩვენ შეგვიძლია შემდეგ ვრცელდება დამალვა() მეთოდის შედეგად კომპლექტი და ჩვენ გავაკეთეთ.

მე ჯერ კიდევ ცოტა აანერვიულა შესახებ, მაგრამ არა ნერვიულობის როგორც 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, გთხოვთ კომენტარი.

</ბოლო>

გამოწერა ჩემი დღიური.

გამომყვეს Twitter-ზე http://www.twitter.com/pagalvin

პროგრამები Tags: ,

სწრაფი და მარტივი: გამოყენება jQuery, დამალოს ტექსტური ველი on SharePoint ფორმა

ეს არის კიდევ ერთი პოსტი ჩემს მიმდინარე სერია , თუ როგორ გამოიყენოთ jQuery ერთად SharePoint.
თუ გსურთ მეტი jQuery, მე მაღალ რეკომენდაციას: jQuery მოქმედებაში by დათვი Bibeault და Yehuda Katz.

განახლების (უკვე!): მე ვფიქრობ უკეთესი გზა იქნებიან <TR> tag მინდა დასამალი და წერდა აქ. You may still find this article interesting anyway so I’m leavnig it up.

მინდა დამალვა ველში, "დამალვა Me!"როგორც ნაჩვენებია:

image'

შემდეგ jQuery არ შეასრულა ჩემთვის:

<დამწერლობის ივერიის"text/javascript">

  $(ფუნქცია() {


    $("შეტანის[title = დამალვა Me!]').მშობელს().მშობელს().მშობელს().დამალვა();

  });

</დამწერლობის>

კოდი ამბობს, "მოვძებნოთ მე ყველა შეტანის სფეროებში, რომელთა title = დამალვა Me!. მაშინ, თავის მშობელს და შემდეგ მომავალი მშობელი და * შემდეგი * მშობელს (phew!) და დაეყრდნოს დამალვა() მეთოდის რომ რამ, რაც არ ხდება,.

I figured, რომ მშობელს სტრუქტურის ათვალიერებენ HTML for ფორმა, რომელიც SharePoint შექმნა როგორც ნაჩვენებია:

<TR>
    <TD nowrap="true" valign="top" სიგანე="190px" კლასი="ms-formlabel">
        <H3 კლასი="ms-standardheader">
            <nobr>დამალვა Me!</nobr>
        </H3>
    </TD>

    <TD valign="top" კლასი="ms-formbody" სიგანე="400px">
        <!-- FieldName="Hide Me!"
                 FieldInternalName="Hide_x0020_Me_x0021_"
                 FieldType="SPFieldText"
        -->
        <span თქვენ="none">
            <შეტანის
                სახელი="ctl00$m$g_bdb23c2c_fde7_495f_8676_69714a308d8e$ctl00$ctl04$ctl02$ctl00$ctl00$ctl04$ctl00$ctl00$TextField"
                ტიპის="text"
                maxlength="255"
                id="ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
                სათაური="Hide Me!"
                კლასი="ms-long" />
                <br>
        </span>


    </TD>
</TR>

ეს სურათი გვიჩვენებს იგივე, მაგრამ აღინიშნება მშობლებს:

image

პირველი მშობელს (1) is a span tag. Span’s parent (2) არის TD tag და შემდეგ საბოლოოდ მივიღებთ რეალურ მშობელს მინდა დამალვა (3) რაც TR tag თავად.

This is a pretty terrible approach I think because it’s extremely dependent on the very specific structure of this form. When SharePoint 2010 გამოდის, 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 (და მხოლოდ TR tags) რომ აქვს სადღაც მათი შვილი ელემენტების ველში რომლის title = დამალვა Me!". I starting from the bottom and moving up. Assuming I figure this out, მე პოსტი განახლება "სწრაფი და მარტივი 'გამოხმაურება.

</ბოლო>

გამოწერა ჩემი დღიური.

გამომყვეს Twitter-ზე http://www.twitter.com/pagalvin

del.icio.us სიტყვები: ,

პროგრამები Tags: ,

სწრაფი და მარტივი: საკუთარი jQuery Sandbox for SharePoint

ეს არის კიდევ ერთი პოსტი ჩემს მიმდინარე სერია , თუ როგორ გამოიყენოთ jQuery ერთად SharePoint.
თუ გსურთ მეტი jQuery, მე მაღალ რეკომენდაციას: jQuery მოქმედებაში by დათვი Bibeault და Yehuda Katz.

მიღება დაიწყო jQuery ამ SharePoint საკმაოდ ადვილი (ჩემთვის). (მე არ სერიოზულ კითხვებს ბადებს "საუკეთესო პრაქტიკის" მიდგომა შემოყვანა ეს ყველაფერი წარმოებას, მაგრამ ეს კიდევ ერთი დღე). 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, თქვენ შეიძლება აღმოაჩინოთ, ეს მიდგომა სასარგებლო.

1. შექმენით ცარიელი საიტის

შექმენით ცარიელი საიტი სადღაც საიტზე და მას რაღაც ჭკვიანი, როგორიცაა "jQuery Sandbox".

2. ჩამოტვირთეთ jQuery

თქვენ შეგიძლიათ jQuery javascript ბიბლიოთეკა აქედან: http://docs.jquery.com/Downloading_jQuery

შენახვა, რომ თქვენს კომპიუტერში.

მე არ იყენებს "minified" ვერსია.

3. შექმნა SharePoint დოკუმენტის ბიბლიოთეკა

თქვენი სავარჯიშოში საიტი, create a document library.

4. ატვირთვა jQuery ბიბლიოთეკა SharePoint

ხელმისაწვდომობა doc ბიბლიოთეკა ესაა შექმენით და ატვირთეთ jQuery ბიბლიოთეკა.

5. შექმნა საბაჟო 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. დამალვა სფეროში.
  2. მიანიჭეთ მნიშვნელობა სფეროში.

ამის ობიექტური გათვალისწინებით, I added two text fields. Over time, მე უნდა თამაშობს კავშირების, გამოსახულებები, lookups, და ა.შ..

6. შეცვლა NewForm.aspx ვებ ნაწილი გვერდი და დამატება ინფორმაციის რედაქტორი ვებ ნაწილი

ეს არის პატარა შავი Magic-ish , in that it’s a new concept to me. I first learned about this from პოლ Grenier, SharePoint jQuery Superstar, მისი CodePlex პროექტის საიტი: http://spff.codeplex.com/.

დაიცავით ეს საფეხური CEWP იმავე გვერდზე, რომელიც აჩვენებს NewForm.aspx ნებისმიერი საბაჟო სია:

  1. ხელმისაწვდომობა საბაჟო სიაში და დაწკაპეთ ახალი.
  2. დამატება შემდგომ URL: PageView = გაერთიანებული&ToolPaneView = 2

ეს ხელს გარდაქმნას თქვენი მოსაწყენი vanilla მონაცემთა შეყვანის ფორმით მსგავსი რამ:

image

ამ:

image

დამატება შინაარსის რედაქტორი ვებ ნაწილი გვერდზე.

7. დაწერეთ თქვენი jQuery კოდექსი

ქმნის, რომ CEWP კოდექსში ხედვა და დაამატეთ შემდეგი:

image

აი ფაქტობრივი კოდი თუ გსურთ ასლი / პასტა:

<დამწერლობის
    "text/javascript"
    src ="../../jQuery%20Library/jquery-1.3.2.min.js">
</დამწერლობის>

<დამწერლობის ივერიის"text/javascript">
  $(ფუნქცია() {

    $('# ResultsID ").html("არსებობს" + $("ა").ზომა() + 'წარწერები წარწერები ამ გვერდზე.');

  });
</დამწერლობის>

შედეგი:
<div id ="ResultsID"></div>
/გამოიწვევს

გახსოვდეთ, რომ პირველი <დამწერლობის> tag is referencing the actual jQuery library. Presumably, ეს ყველაფერი შეიცვლება დროთა განმავლობაში, ასე რომ თქვენ გვინდა დავრწმუნდეთ, რომ თქვენ) გამოყენების უფლება სახელი და ბ) აღვნიშნო, რომ ეს სწორი SharePoint დოკუმენტის ბიბლიოთეკა.

Bask in დიდების

თუ თქვენ ეს გააკეთა სწორად, დაინახავთ შედეგი მსგავსია შემდეგ:

image

შეფუთვა მდე

ეს არ არის ერთადერთი გზა უნდა დაიწყო, მაგრამ ეს სწრაფია, easy and isolated from your existing SharePoint environment.

</ბოლო>

გამოწერა ჩემი დღიური.

გამომყვეს Twitter-ზე http://www.twitter.com/pagalvin

პროგრამები Tags: ,

del.icio.us სიტყვები: ,

სწრაფი და მარტივი: გამოყენება jQuery მითითებული ტექსტი დარგის ღირებულების SharePoint ფორმა

დავიწყე სათამაშო გარშემო ერთად jQuery yesterday. I’ve been wanting to do this for a long time, მას შემდეგ, რაც პოლ Grenier წერა დაიწყო მისი სერია შესახებ jQuery საბოლოო მომხმარებელი at მხცოვანი 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.

ამ სცენარით, მე შევქმენი საბაჟო სიაში, რომლის "ახალი" სახით გამოიყურება როგორც ნაჩვენებია:

image

ეს არის ახალი ფორმა საბაჟო სიაში სტანდარტულ სათაური სვეტი და ორი სია სვეტები (არ საიტზე სვეტები; არა მგონია, ეს უნდა რაიმე სხვაობა).

მიზანია დაავალოს თვითნებური ღირებულება სფეროში, "DefaultMeFieldNoSpaces" (თქვენ გეტყვით მე ცოტა მშიშარა, რომ "არ ფართების" რამ მიმდინარეობს, მაგრამ მე ნამდვილად spice ის მიწურულს ამ მუხლის).

ეს ცოტა jQuery მუშაობდა ჩემთვის:

<დამწერლობის ივერიის"text/javascript">

  $(ფუნქცია() {

    $("შეტანის[title = DefaultMeFieldNoSpaces]').attr(
        {ღირებულება: "თქვენ ხართ twisty ლაბირინთში passages, ყველა ჰგავს. "});

  });

</დამწერლობის>

როგორც მე მესმის, რომ ამ ცოტა jQuery ამბობს, “find me any input tag whose title = DefaultMeFieldNoSpaces. მაშინ, მითითებული ყველა მათი ფასეულობები ცნობილი ფრაზა ძველი კომპიუტერული თამაში. "

მას შემდეგ, შესაძლებელი იქნება მხოლოდ ერთი ველის ფორმა ტიტული ტოლია "DefaultMeFieldNoSpaces" ჩვენ დაარწმუნა მინიჭების ღირებულების სფეროში და სხვა.

რაც შეეხება სფეროში, რომლის სახელიც აქვს ფართების მასში? It’s nearly the same:

<დამწერლობის ივერიის"text/javascript">

  $(ფუნქცია() {
     $("შეტანის[title = დაავალოს მოედანი ფართი]').attr(
        {ღირებულება: "თქვენ ხართ twisty ლაბირინთში passages, ყველა ჰგავს. "});

  });

</დამწერლობის>

ვფიქრობ, ეს არის საკმაოდ უსაფრთხო მიდგომა, 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, ეს ერთგვარი ბინძურ:

<შეტანის
სახელი="ctl00$m$g_bdb23c2c_fde7_495f_8676_69714a308d8e$ctl00$ctl04$ctl02$ctl00$ctl00$ctl04$ctl00$ctl00$TextField"
ტიპის="text"
maxlength="255"
id="ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
სათაური="DefaultMeFieldNoSpaces"
კლასი="ms-long"
/>

"სათაური" გამოირჩევა როგორც ცნობადი და იმედია უნიკალური ატრიბუტები დაგვეხმაროს იდენტიფიცირება კონკრეტული სვეტი, რომელიც ჩვენ გვინდა მივანიჭოთ ჩვენს თვითნებური ღირებულება.

This is a foundational concept. Setting a field in an arbitrary way like this isn’t going to win any awards. თუმცა, თუ ჩვენ გვინდა, რომ უფრო მეტი საინტერესო ფორმით დონეზე პერსონალი (რომელიც ყველა ჩვენგანს ყოველთვის მინდა, რა თქმა უნდა, მას შემდეგ, რაც ჩვენ დასრულდება სარეცხი კერძები), მინდა შეიცვალოს ღირებულება "სფეროში ბ" ავტომატურად საფუძველზე ღირებულება "სფეროში", ჩვენ (I) უნდა ვისწავლოთ ეს ყველაფერი.

მე ვფიქრობ, რომ ჩვენი საუკეთესო შესაძლებლობა, მიიღონ რეალური სასარგებლო ღირებულება აქ გავლით სათაური, at least for text fields. There may be a better, more reliable approach. If I find it, მე განაახლებს ჩანაწერი. If you know a better way, გთხოვთ დატოვოთ კომენტარი.</ბოლო>

</ბოლო>

გამოწერა ჩემი დღიური.

გამომყვეს Twitter-ზე http://www.twitter.com/pagalvin

პროგრამები Tags: ,