Месечне архиве: Јун 2009

ИнфоПатх образаца Севицес, Обрасци потврда идентитета заснована на (ФБА) и јединствена имена датотека

Радим на неком ИнфоПатх Формс ове недеље у МОСС у ФБА окружењу и научили, када сам отишао да се распореди образаца у производном окружењу са ФБА зону да корисничко име() function function does not work. I was using it to generate unique file names.

Добро, that function doesn’t work in an FBA environment (најмање, not out of the box). И, 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 (лоше) овако:

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.

Тако, 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!

</крај>

Претплатите се на мој блог.

Следите ме на Туиттер на http://www.twitter.com/pagalvin

Тецхнорати Тагс:

Обезбеђивање СхареПоинт листа / библиотеку докумената Виевс Изгледа (врста) Могуће са јКуери

Ово је још једна порука у мом у току Сериес о томе како да користите јКуери са СхареПоинт.
Ако желите да сазнате више о јКуери, Топло препоручујем: јКуери у акцији по Беар Бибеаулт и Јехуда Катз.

Једна од првих ствари које сам мислио, када сам почео да се играте са јКуери, was whether we could use it to secure a SharePoint view. The answer is “no” (или барем, I’m not claiming it’s possible). Међутим, 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: Брзо и лако: Креирај своју Сандбок јКуери за СхареПоинт.

To “secure” a view, follow these steps:

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

    This is what it looks like when it’s not “secured”:

    image

  2. Add a content editor web part to the view’s page using the trick described in the sandbox article (и.е. add “PageView=Shared&ToolPaneView=2” to the URL).
  3. Figure out your SharePoint _spUserId by following these crazy steps, believe or not:
    1. Log into your SharePoint environment.
    2. In the web browser’s address field, тип: “javascript:alert(_spUserId”).
    3. Record the result (it’s “13” in my case).

      image

  4. Add the following javascript to your CEWP in code view:

    <скрипта
        "text/javascript"
        срц ="../../jQuery%20Library/jquery-1.3.2.min.js">
    </скрипта>
    
    <сцрипт типе ="text/javascript">
      $(функција() {
    
        alert(_spUserId);
    
        var theSecuredView = $('iframe[FilterLink*=Secured%20View]');
    
        ако ((theSecuredView.length > 0) && (_spUserId == 13))
          $('iframe[FilterLink*=Secured%20View]').родитељ().родитељ().родитељ().ХТМЛ("<тр бгцолор = црвена><тд>No view for you!</тд></тр>");
      });
    
    </скрипта>
    

I’ve included that alert(_spUserId) line in there to demonstrate how this is not really a “securing” a view, 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, we walk up the DOM to a <ТР> 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, заправо), 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). Међутим, 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. Понекад, that’s good enough.

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

</крај>

Претплатите се на мој блог.

Следите ме на Туиттер на http://www.twitter.com/pagalvin

Брзо и лако: Бољи начин за коришћење јКуери да Сакриј поље за текст на СхареПоинт формулар

Ово је још једна порука у мом у току Сериес о томе како да користите јКуери са СхареПоинт.
Ако желите да сазнате више о јКуери, Топло препоручујем: јКуери у акцији по Беар Бибеаулт и Јехуда Катз.

Раније, 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 (Био сам Уланчавање родитељи - то се једноставно не ради ових дана, бар у породицама квалитета).

Када сам први пут почео да размишљам о томе, Знао сам да је потребно наћи <ТР> на које сам могао да се позове на кожу() метод. My early effort to find the correct <ТР> је нешто овако:

$('Тр:има(улазни[титле = Сакриј ме!])');

Проблем је у томе да ће пронаћи сваки <ТР> ознака да је имао било какав однос родитељ да ме сакрити! поље, чак и ако Сакриј ме! угнездио се много нивоа дубоко у <ТР>’s. It turns out that on my sandbox form, да израз проналази 9 различити ТР је ко су ме сакрити! as a child somewhere in its DOM tree. I realized that I could walk back up the tree from the input field itself, па тако сам завршио злостављали родитеље, али није добро седети са мном.

Дао сам неке мисли да овај и једна од ствари које сам прочитао на крају је имао смисла: Добро би ми не() метод да се трим <ТР>’s I don’t want in my wrapped set. То ме је довело до овог:

$('Тр:има(улазни[титле = Сакриј ме!])').не('Тр:има(тр)').сакрити();

Први бит проналази све <ТР> ознаке које су ме сакрити! field anywhere in their own hierarchy. It then strips out any <ТР> да имају дете <ТР>. This leaves us with a single <ТР> да:

1) Нема <ТР> дете записи

2) Does have the input field as child.

Тада можемо применити кожу() метод да добијени скуп, а ми смо урадили.

И даље сам помало нервозан у вези тога, али не као нервозан као вез родитеља.

I don’t know if this is a best practice or not. There may be a more appropriate way of identifying just the <ТР> that we care about in a SharePoint form. If you know, пошаљите коментар.

</крај>

Претплатите се на мој блог.

Следите ме на Туиттер на http://www.twitter.com/pagalvin

Брзо и лако: Користите јКуери да Сакриј поље за текст на СхареПоинт формулар

Ово је још једна порука у мом у току Сериес о томе како да користите јКуери са СхареПоинт.
Ако желите да сазнате више о јКуери, Топло препоручујем: јКуери у акцији по Беар Бибеаулт и Јехуда Катз.

УПДАТЕ (већ!): Ја нисам смислити бољи начин да се пронађе <ТР> означите Желим да сакрију и писао о томе овде. You may still find this article interesting anyway so I’m leavnig it up.

Желим да сакријете поље за текст, "Сакриј ме!"Као што је приказано:

image'

Следећи јКуери не трик за мене:

<сцрипт типе ="text/javascript">

  $(функција() {


    $('Улаз[титле = Сакриј ме!]').родитељ().родитељ().родитељ().сакрити();

  });

</скрипта>

Код говори, "Ми наћи сва поља за унос чији је наслов = Сакриј ме!. Онда, добити своју родитеља и онда следећи родитеља и родитеља * Следећа * (фуј!) и призову кожу() Начин на ту ствар, шта год да се дешава да се.

Схватио сам тај родитељ структура прегледом ХТМЛ у форми која СхареПоинт креирана као што је приказано:

<ТР>
    <ТД НОВРАП="true" валигн="top" ширина="190px" класа="ms-formlabel">
        <Х3 класа="ms-standardheader">
            <фонт>Сакриј ме!</фонт>
        </Х3>
    </ТД>

    <ТД валигн="top" класа="ms-formbody" ширина="400px">
        <!-- FieldName="Hide Me!"
                 FieldInternalName="Hide_x0020_Me_x0021_"
                 FieldType="SPFieldText"
        -->
        <распон ви="none">
            <улазни
                име="ctl00$m$g_bdb23c2c_fde7_495f_8676_69714a308d8e$ctl00$ctl04$ctl02$ctl00$ctl00$ctl04$ctl00$ctl00$TextField"
                тип="text"
                МАКСЛЕНГТХ="255"
                ид="ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
                наслов="Hide Me!"
                класа="ms-long" />
                <БР>
        </распон>


    </ТД>
</ТР>

Ова слика приказује исти, али означене са родитељима:

image

Прво родитељ (1) is a span tag. Span’s parent (2) ТД је ознака, а на крају ћемо доћи до реалног родитељ желим да се сакрије (3) што је ТР ознака сама.

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 (и само Тр Теги) да имају негде у својим подређених елемената улазног поља чији наслов = Сакриј ме!". I starting from the bottom and moving up. Assuming I figure this out, Ја ћу пост ажурирану "брзо и једноставно" пост.

</крај>

Претплатите се на мој блог.

Следите ме на Туиттер на http://www.twitter.com/pagalvin

Брзо и лако: Креирај своју Сандбок јКуери за СхареПоинт

Ово је још једна порука у мом у току Сериес о томе како да користите јКуери са СхареПоинт.
Ако желите да сазнате више о јКуери, Топло препоручујем: јКуери у акцији по Беар Бибеаулт и Јехуда Катз.

Први кораци са јКуери у СхареПоинт је изненађујуће лако (мени). (Ја немам озбиљна питања о "најбољим праксама" приступа ангажовања ових ствари производњу, али то је за неки други дан). 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. Креирајте празну сајт

Креирајте празну сајт негде на вашем сајту и позвати га нешто паметно попут "јКуери Сандбок".

2. Преузмите јКуери

Можете преузети јКуери ЈаваСцрипт библиотека одавде: http://docs.jquery.com/Downloading_jQuery

Сачувај то за радну површину.

Ја сам био користећи "минифиед" верзију.

3. Креирање СхареПоинт библиотека докумената

У вашем сајту сандбок, create a document library.

4. Уплоад јКуери библиотеку на СхареПоинт

Приступите доц библиотеку сте управо креирали и уплоад јКуери библиотеку.

5. Креирање прилагођене листе СхареПоинт

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, Ја ћу да играм са линковима, слике, лоокуп, итд.

6. Измените НевФорм.аспк странице Веб сегмента и садржаја Додавање Веб сегмента уређивача

Ово је мала црна магија-исх , in that it’s a new concept to me. I first learned about this from Павле Грениер, СхареПоинт јКуери Суперстар, на свом сајту пројекта ЦодеПлек: http://spff.codeplex.com/.

Следите ове кораке да бисте додали ЦЕВП на истој страници која приказује НевФорм.аспк за било коју прилагођену листу:

  1. Приступите прилагођене листе и кликните на дугме Ново.
  2. Додај следеће на УРЛ: Пагевиев = Дељени&ТоолПанеВиев = 2

То ће трансформисати ваш досадно ваниле формулар за унос података из овако нешто:

image

Да би ово:

image

Додајте део садржаја веб едитор на страну.

7. Напишите свој први код јКуери

Отвори тај ЦЕВП у приказу код и додајте следећи:

image

Овде је стварни број ако желите да цопи / пасте:

<скрипта
    "text/javascript"
    срц ="../../jQuery%20Library/jquery-1.3.2.min.js">
</скрипта>

<сцрипт типе ="text/javascript">
  $(функција() {

    $('# РесултсИД').ХТМЛ("Постоје ' + $('').величина() + 'А ознаке ознаке на овој страници.');

  });
</скрипта>

Резултат:
<див ид ='РесултсИД'></див>
/резултат

Имајте на уму да је први <скрипта> tag is referencing the actual jQuery library. Presumably, ове ствари мењају током времена, тако да ћете желите да се уверите да) користе право име и б) указују да је у исправном СхареПоинт библиотеке докумената.

Уживају у слави

Ако сте то урадили исправно, видећете резултат сличан следећем:

image

Завршавајући

Ово није једини начин да почнете, али је брзо, easy and isolated from your existing SharePoint environment.

</крај>

Претплатите се на мој блог.

Следите ме на Туиттер на http://www.twitter.com/pagalvin

Брзо и лако: Користите јКуери на задату вредност у пољу за текст на СхареПоинт формулар

Почео сам да се играју са јКуери yesterday. I’ve been wanting to do this for a long time, од тада Павле Грениер почео да пише његова серија о јКуери за крајње кориснике на поштовани ввв.ендусерсхарепоинт.цом 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

То је нова форма за прилагођеној листи у колони подразумевани наслов и две листе колона (не колона локације; Не мислим да би требало да прави разлику).

Циљ је да се доделити произвољну вредност на терену, "ДефаултМеФиелдНоСпацес" (Могу ти рећи да сам мало кукавица са "нема места" ствар дешава, Али ја зачин га на крају овог чланка).

Ово мало јКуери радио за мене:

<сцрипт типе ="text/javascript">

  $(функција() {

    $('Улаз[титле = ДефаултМеФиелдНоСпацес]').аттр(
        {вредност: "Ти си у кривудавим лавиринт пролаза, сви исти. "});

  });

</скрипта>

Колико сам ја схватио ово мало јКуери говори, “find me any input tag whose title = DefaultMeFieldNoSpaces. Онда, Њихов скуп вредности за све познате фразе из старе компјутерске игре. "

Како ли ће бити само једно поље на форми са називом једнака "ДефаултМеФиелдНоСпацес" Ми смо уверени у додељивање вредности тог поља и нема других.

Шта је са терена, чије име места у њему? It’s nearly the same:

<сцрипт типе ="text/javascript">

  $(функција() {
     $('Улаз[титле = Додела поље са простора]').аттр(
        {вредност: "Ти си у кривудавим лавиринт пролаза, сви исти. "});

  });

</скрипта>

Мислим да је ово прилично сигуран приступ, 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"
МАКСЛЕНГТХ="255"
ид="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. Међутим, ако желимо да урадимо више интересантне ствари обрасца нивоу (сви ми који увек желе да раде, наравно, одмах након што завршите прање судова), свиђа промените вредност "Поље Б" аутоматски на основу вредности поља "на", ми (Ја) треба да науче ове ствари.

Мислим да је наша најбоља шанса да добијем праву употребну вредност је преко наслова, at least for text fields. There may be a better, more reliable approach. If I find it, Ја ћу ажурирати овај пост. If you know a better way, оставите коментар.</крај>

</крај>

Претплатите се на мој блог.

Следите ме на Туиттер на http://www.twitter.com/pagalvin