miesięczne archiwum: Czerwca 2009

Formularz programu InfoPath usług, Formularze oparte uwierzytelniania (PARYŻU W RODZINIE ŻYDOWSKIEJ) i unikatowe nazwy pliku

I been pracy na niektórych formularzy programu InfoPath tym tygodniu w MOSS w środowisku, w Paryżu w rodzinie Żydowskiej i zapamiętanych, Kiedy ja poszedłem do wdrażania formularzy do środowiska produkcyjnego z Paryżu w rodzinie Żydowskiej strefy nazwa użytkownika() funkcja nie działa. Używałem go do generowania nazw plików unikalne.

Również, Ta funkcja nie działa w środowisku, w Paryżu w rodzinie Żydowskiej (co najmniej, nie z polu). I, Po chwili refleksji, przy użyciu nazwy użytkownika w sposób, w jaki miał w planach nie zagwarantowały unikatowej nazwy pliku w każdym przypadku.

Moje rozwiązanie było używać teraz() funkcja i regułę, że pożary na ładowanie formularza. Przypisz nazwę pliku do elementu danych, gdy jest puste:

image

image

Zaletą tego podejścia jest to, że nazwa pliku jest ustawiana tylko raz. (Nie wyświetlić w zdjęcie ekranu, ale warunek reguły na ogień tylko podczas "myFilename" jest puste). Kiedyś, aby ustawić nazwę pliku na poziomie źródła danych. Zazwyczaj, Czy zrobić coś (Bad) Jak to:

image

Problem z tym, że jeśli użytkownik a otwiera formularz w poniedziałek i użytkownik b zmieni go we wtorek, użytkownik będziesz skończyć z dwóch różnych form ponieważ dwóch różnych użytkowników zapisana z nazwy różnych użytkowników.

Tak, jako irytujące w Paryżu w rodzinie Żydowskiej może być ogólnie i z programem InfoPath w szczególności, It made me przemyślenie tworzenia małych, ale naprawdę ważnych szczegółów technicznych i podejście, które I nie miało to miejsce w przeciwnym razie!

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

Technorati znaczniki:

Zabezpieczanie dokument listy programu SharePoint biblioteki widoki wydaje się (sortowane) Możliwe z jQuery

Jest to stanowisko innego w Moje Seria jak użyć jQuery z programu SharePoint.
Jeśli chcesz dowiedzieć się więcej o jQuery, Polecam: jQuery w działaniu Bear Bibeault i Yehuda Katz.

Jedną z pierwszych rzeczy, które ja pomyślałem, Kiedy ja rozpocząłem się bawić jQuery, był, czy możemy użyć go do bezpiecznego widoku programu SharePoint. Odpowiedź brzmi "nie" (lub co najmniej, Nie twierdzę, że to możliwe). Jednakże, to z pewnością możliwe do sprawiają, że trudno dla ludzi, aby zobaczyć określonego widoku.

Zacząłem z mojej piaskownicy środowiska, podczas pracy na ten temat. Pisałem o tym środowisku tutaj: Szybkie i łatwe: Utwórz własny jQuery piaskownicy dla programu SharePoint.

Do "bezpiecznego" widok, wykonaj następujące kroki:

  1. Utwórz widok, który chcesz zabezpieczyć. Zrobiłem i nazwał go "Zabezpieczone w widoku".

    To jest, jak to wygląda gdy jest nie "zabezpieczone":

    image

  2. Dodaj składnik web part Edytor zawartości strony w widoku za pomocą sztuczki opisane w artykule z piaskownicy (tj.. dodać "odsłony = Shared&ToolPaneView = 2 "do adresu URL).
  3. Obliczaæ na zewn¹trz twój _spUserId programu SharePoint przez następujące kroki szalony, Wierzcie lub nie:
    1. Zaloguj się do swojego środowiska SharePoint.
    2. W polu adresu przeglądarki internetowej, Typ: "javascript:alarm(_spUserId").
    3. Zapis wyniku (to jest "13" w moim przypadku).

      image

  4. Dodać ten kolejne javascript do swojej CEWP w widoku Kod:

    <skrypt typ ="text/javascript"
        src ="../../jQuery Library/jQuery-1.3.2.min.js">
    </skrypt>
    
    <skrypt typ ="text/javascript">
      $(Funkcja() {
    
        alarm(_spUserId);
    
        var theSecuredView = $("iframe[FilterLink * = zabezpieczone % 20View]');
    
        Jeśli ((theSecuredView.length > 0) && (_spUserId == 13))
          $("iframe[FilterLink * = zabezpieczone % 20View]').nadrzędny().nadrzędny().nadrzędny().HTML("<TR bgcolor = czerwony><TD>Brak widoku dla Ciebie!</TD></TR>");
      });
    
    </skrypt>
    

Podaję tego wpisu(_spUserId) linii tam, aby wykazać, jak to nie jest naprawdę "zabezpieczenia" widok, ale po prostu co czyni go bardziej trudne zobaczyć. Więcej o tym za chwilę.

Zasadniczo, jQuery szuka iFrame na stronie, która ma atrybut zawierający "20View % zabezpieczony" w jego wartość. Gdy odnajduje ją, Sprawdzamy, czy bieżący użytkownik jest "13". Jeśli to jest, idziemy się DOM do <TR> Tag (co ja wyobra¿a³ na zewn¹trz przez wyświetlanie źródła i śledzenie go) a następnie zastąpienie znacznik TR z mojej wiadomości. Naprawdę nie wiem, jak solidny jest (Jestem bardzo podejrzane, W zasadzie), oprócz ono pracowa³ w mój skrzynka z piaskiem. Jeśli mogę znaleźć lepszy sposób, Będę o tym blogu. Jest to wynik:

image

Kliknij przycisk OK i danych jest zastępowany wiadomość czerwony duży:

image

Jak można powiedzieć, sposób mam wdrożenie tego rozwiązania "bezpieczeństwa" jest umożliwienie składnika web part do rendera sam. Po zakończeniu, Zastąpić zawartość mojego bez widoku dla Ciebie.!"wiadomości.

Pomimo faktu, że to nie jest naprawdę "zabezpieczone" "widok, to jest potencjalnie użytecznym i jakiś sprytny pracy, ostatecznie może być zabezpieczany w sensie bardziej formalne. Zasadnicza kwestia jest to, że klient jest uzyskanie wszystkich danych i następnie, tylko po to pobiera dane, to ociera się. Jeśli klient jest uzyskanie danych, sprytny użytkownik może uniemożliwić uruchomienie w ogóle jQuery i zobaczyć, co on/ona chce zobaczyć.

Istnieją inne wady. "Bezpieczeństwa" podejście to opiera się _spUserId. My byłby potrzeba do naprawdę bezpieczne oparty na modelu zabezpieczeń pełnego programu SharePoint, lub co najmniej przez nazwę użytkownika. Która staje się coraz trudniejsze, ale widzę, że kilka dobrych rzeczy napisane na ten temat, więc mam nadzieję, że ma dobrej odpowiedzi na ten problem.

Lista widoków, same powinny być okrojone, Jeśli to możliwe. Nie próbowałem wobec obliczaæ ów na zewn¹trz. Zakładam, że to możliwe, ale tak naprawdę nie rozwiązuje problemu podstawowych zabezpieczeń bo ktoś może jeszcze po prostu wpisz adres URL widoku, które chcą (gdyby wiedzieli, że to). Jednakże, przycinanie sens. To jest funkcją użyteczności dobra i przyczynia się do zaciemniać rzeczy. Jeśli użytkownik końcowy nie wie że istnieje zdarzenie widoku, oni chyba nie będzie starał się go używać. Czasami, jest to wystarczająco dobre.

Przy odrobinie szczęścia, Będę miał więcej napisać na ten temat w czasie.

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

Technorati znaczniki: ,,

Znaczniki del.icio.us: ,,

Szybkie i łatwe: Lepszy sposób wykorzystania jQuery aby ukryć pole tekstowe na formularzu programu SharePoint

Jest to stanowisko innego w Moje Seria jak użyć jQuery z programu SharePoint.
Jeśli chcesz dowiedzieć się więcej o jQuery, Polecam: jQuery w działaniu Bear Bibeault i Yehuda Katz.

Wcześniej, Pisałem o tym, jak używać jQuery do zlokalizowania i ukryć pola tekstowego w formularzu. Nie zależy mi na specyficzne podejście (I został łańcuchowym rodziców – jest po prostu nie sporządzono te dni, co najmniej w rodzinach jakości).

Kiedy po raz pierwszy rozpocząłem think about it, Ja wiedziałem I potrzebne do znalezienia <TR> do którego można wywołać Ukryj() Metoda. Mój początku wysiłku, aby znaleźć prawidłowe <TR> był mniej więcej tak:

$("tr:ma(dane wejściowe[Tytuł = Ukryj Me!])');

Problem z tym jest, że może odnaleźć co <TR> znacznik, który miał żadnych relacji rodzic, aby ukryć mnie! pole, nawet jeśli ukryć Me! jest zagnieżdżone wiele poziomów głęboko w <TR>jest. Okazuje się, że w formularzu w piaskownicy, to wyrażenie wyszukuje 9 różnych TR's którzy mają ukryć Me! jako dziecko gdzieś w swoim drzewie DOM. Zdałem sobie sprawę, że może chodzić powrót do drzewa z pola wejściowego, sam, tak właśnie, jak I zakończył nadużywającym rodziców, ale to nie odpowiadałoby me.

Ja dałem rozwagą do to i jedną z rzeczy, które przeczytałem wreszcie dokonane sensie: Nie można używać() Metoda przycięcie się <TR>to że nie ma w moim owinięte zestaw. To doprowadziło mnie do tego:

$("tr:ma(dane wejściowe[Tytuł = Ukryj Me!])').nie("tr:ma(TR)').Ukryj();

Pierwszy bit znajdzie wszystkie <TR> znaczniki, które mają Ukryj Me! dziedzinie nigdzie w ich własnej hierarchii. Następnie rozrywa się <TR> które mają również dziecka <TR>. To pozostawia nam z pojedynczym <TR> że:

1) Ma nr <TR> rekordy podrzędne

2) Mam pole wejściowe jako dziecko.

Następnie można zastosować Ukryj() Metoda do Wynikowy zestaw i Zakończyliśmy konferencję.

I 'm still trochę układu nerwowego o tym, ale nie jako układu nerwowego, jako łańcuchowym rodziców.

Nie wiem, czy to jest najlepsze praktyki czy nie. Może być bardziej odpowiedni sposób identyfikacji tylko <TR> że dbamy o w postaci programu SharePoint. Jeśli wiesz, prosimy zamieścić komentarz.

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

Technorati znaczniki: ,

Szybkie i łatwe: Aby ukryć pole tekstowe na formularzu programu SharePoint za pomocą jQuery

Jest to stanowisko innego w Moje Seria jak użyć jQuery z programu SharePoint.
Jeśli chcesz dowiedzieć się więcej o jQuery, Polecam: jQuery w działaniu Bear Bibeault i Yehuda Katz.

AKTUALIZACJA (już!): Myślę o lepszym sposobem zlokalizowania <TR> Chcę, aby ukryć tagu i napisał o nim tutaj. Może jeszcze znaleźć w tym artykule ciekawe tak więc jestem leavnig ono w górze.

Chcę, aby ukryć pole tekstowe, "Ukryj Me!"jak pokazano:

image

Następujące jQuery załatwia sprawę dla mnie:

<skrypt typ ="text/javascript">

  $(Funkcja() {


    $(„danych wejściowych[Tytuł = Ukryj Me!]').nadrzędny().nadrzędny().nadrzędny().Ukryj();

  });

</skrypt>

Kod jest informacją, "Znajdź me wszystkich wejściowego pola których tytuł = Ukryj Me!. Następnie, Pobierz jego nadrzędnym, a następnie nadrzędnego i * dalej * nadrzędnym (uffff!) i wywoływać Ukryj() Metoda na that thing, niezależnie od it dzieje się być.

I znalezienia tej struktury nadrzędnego wyświetlając HTML formularza, który SharePoint tworzona jak pokazano:

<TR>
    <TD nowrap= "true" dopasowanie w pionie= "do góry" Szerokość= "190px" Klasa= "ms-formlabel">
        <H3 Klasa= "ms-standardheader">
            <NOBR>Ukryć Me!</NOBR>
        </H3>
    </TD>

    <TD dopasowanie w pionie= "do góry" Klasa= "ms-formbody" Szerokość= "400px">
        <!-- FieldName = "Ukryj Me!"
                 FieldInternalName = "Hide_x0020_Me_x0021_"
                 FieldType = "SPFieldText"
        -->
        <zakres dir= "brak">
            <dane wejściowe
                Nazwa= "ctl00$ m$ g_bdb23c2c_fde7_495f_8676_69714a308d8e$ ctl00$ ctl04$ ctl02$ ctl00$ ctl00$ ctl04$ ctl00$ ctl00$ TextField"
                Typ= "tekst"
                Element MaxLength= "255"
                Identyfikator= "ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
                Tytuł= "Ukryj Me!"
                Klasa= "ms długi" />
                <BR>
        </zakres>


    </TD>
</TR>

Na ilustracji poniżej przedstawiono takie same, ale oznaczony z rodziców:

image

Pierwszy element nadrzędny (1) jest znacznik span. Rozpiętości w nadrzędny (2) jest znacznik TD i wreszcie otrzymamy rzeczywistej nadrzędnego chcę ukryć (3) który jest znacznik TR.

Jest to dość straszne podejście, myślę, bo to jest bardzo zależne od bardzo specyficzną strukturę tej formy. Podczas programu SharePoint 2010 wychodzi, Ta cała struktura może zmienić i złamać tego podejścia. To, co naprawdę chcesz robić jest rzemiosło selektora jQuery, który jest wzdłuż linii "Znajdź mi TR (i tylko znaczniki TR) które mają gdzieś w ich elementy podrzędne pola wprowadzania danych których tytuł = Ukryj Me!”. Zaczynając od dołu i przesuwa się w górę. Zakładając, że to wymyślić, Będziesz wysłać uaktualnioną "szybkie i łatwe" księgowania.

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

Znaczniki del.icio.us: ,

Technorati znaczniki: ,

Szybkie i łatwe: Utwórz własny jQuery piaskownicy dla programu SharePoint

Jest to stanowisko innego w Moje Seria jak użyć jQuery z programu SharePoint.
Jeśli chcesz dowiedzieć się więcej o jQuery, Polecam: jQuery w działaniu Bear Bibeault i Yehuda Katz.

Wprowadzenie do programu jQuery w programie SharePoint jest zaskakująco łatwe (Dla mnie). (Mam poważne pytania dotyczące "najlepszych praktyk" podejścia do wdrażania tych rzeczy do produkcji, ale to another day). Właśnie zacząłem grać z tej technologii i w tym celu, I stworzył piaskownicy środowiska do korzystania. Jeśli szukasz aby zacząć z jQuery, podejście to może być przydatne.

1. Utworzyć pustą witrynę

Utworzyć pusta witryna gdzieś w witrynie i nazywają to coś clever jak "jQuery piaskownicy".

2. Pobierz jQuery

Stąd można pobrać biblioteki javascript jQuery: http://docs.jquery.com/Downloading_jQuery

Zapisz to na pulpicie.

I have been using wersji "minified".

3. Tworzenie biblioteki dokumentów programu SharePoint

W serwisie piaskownicy, Tworzenie biblioteki dokumentów.

4. Przekaż jQuery biblioteki programu SharePoint

Dostęp do biblioteki doc, właśnie utworzonego i przekazuj biblioteki jQuery.

5. Utworzyć listę programu SharePoint niestandardowe

Zacząłem z listą niestandardowych bo chce wałęsać się z standardowych formularzy programu SharePoint. Można także utworzyć stronę w bibliotece stron lub stron składników web part i prawdopodobnie wiele innych miejsc.

Dodać niektórych kolumn do listy niestandardowych, tak, że masz coś do uruchomić jQuery przeciwko. Moje początkowe cele były do:

  1. Ukryć pole.
  2. Przypisanie wartości do pola.

Z tym cel na uwadze, Dodałem dwa pola tekstowe. Z biegiem czasu, I będziesz grać z łączami, obrazy, wyszukiwania, itp.

6. Modyfikować strony pliki NewForm.aspx składników Web Part i dodać składnik Web Part Edytor zawartości

To jest trochę czarny magic-ish , że jest to nowa koncepcja mi się. Pierwszy dowiedział się o tym od Paul Grenier, SharePoint jQuery Superstar, jego witrynie projektu CodePlex: http://spff.codeplex.com/.

Wykonaj te kroki, aby dodać CEWP na tej samej stronie, która pokazuje pliki NewForm.aspx dla dowolnej listy niestandardowe:

  1. Dostęp niestandardowej listy i kliknij przycisk Nowy.
  2. Dołącz następujące do adresu URL: PageView = udostępnione&ToolPaneView = 2

Który będzie przekształcić nudne formularza wpis wanilii danych z mniej więcej tak:

image

Aby to:

image

Dodać składnik web part Edytor zawartości do strony.

7. Napisz swój pierwszy jQuery kodu

Otwarcie tego CEWP w widoku Kod i dodać następujące:

image

Tutaj jest rzeczywisty kod, jeśli chcesz kopiowania/wklejania:

<skrypt typ ="text/javascript"
    src ="../../jQuery Library/jQuery-1.3.2.min.js">
</skrypt>

<skrypt typ ="text/javascript">
  $(Funkcja() {

    $("#resultsID").HTML("Są" + $("").rozmiar() + "tagi znaczników na tej stronie.");

  });
</skrypt>

Wynik:
<Identyfikator DIV ="resultsID"></DIV>
/wynik

Należy zauważyć, że pierwszy <skrypt> Tag jest Odwoływanie się do biblioteki jQuery rzeczywiste. Przypuszczalnie, rzeczy te zmiany w czasie, Dlatego warto upewnij się, że) Użyj nazwy objętej prawem i b) wskaż poprawną biblioteka dokumentów programu SharePoint.

Bask z chwały

Jeśli to zrobiłeś poprawnie, zobaczysz wynik podobny do następującego:

image

Informacje końcowe

Nie jest to jedyny sposób, aby rozpocząć, ale jest to metoda szybka, łatwe i odizolowane od istniejącego środowiska SharePoint.

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

Technorati znaczniki: ,

Znaczniki del.icio.us: ,

Szybkie i łatwe: Użyj jQuery aby ustawić a tekstu wartość pola na formularzu programu SharePoint

Ja rozpocząłem grając jQuery wczoraj. I been chcących zrobić to przez długi czas, od tego czasu Paul Grenier zaczął pisać jego serii o jQuery dla użytkowników końcowych na "Venerable" www.endusersharepoint.com Witryna sieci Web. Jak go używać, Mam nadzieję dodać że serii "Szybkie i łatwe" posty jak ten. Ten post opisuje jak ustawić wartość pola znany tekst wszystko, co chcesz.

W tym scenariuszu, Powstał listę niestandardową, których "nowy" formularz wygląda jak pokazano:

image

Jest to nowy formularz Lista niestandardowa z kolumny Nazwa domyślna i dwóch kolumn listy (nie kolumny witryny; Nie sądzę, że należy wprowadzić wszelkie różnice).

Celem jest aby przypisać wartość dowolnego pola, "DefaultMeFieldNoSpaces" (Możesz stwierdzić, że jestem bit tchórzliwego z przejściem thing "przerwa", ale I wzbogacanie go na końcu tego artykułu).

Ten bit jQuery pracował dla mnie:

<skrypt typ ="text/javascript">

  $(Funkcja() {

    $(„danych wejściowych[Tytuł = DefaultMeFieldNoSpaces]').attr(
        {wartość: "Jesteś w zawik┼éanych maze fragmenty, wszystkie podobne. ”});

  });

</skrypt>

Jak mogę ją zrozumieć ten bit jQuery jest informacją, "Znajdź mi żadnego wejścia tag którego tytuł = DefaultMeFieldNoSpaces. Następnie, Ustaw wszystkie ich wartości słynne zdanie z stara gra komputera."

Zważywszy, że tylko jedno pole w formularzu z tytułu równa "DefaultMeFieldNoSpaces" Jesteśmy zapewniony przypisywania wartości do tego pola i wobec braku innych.

Co z tym polem, którego nazwa zawiera spacje? To jest prawie to samo:

<skrypt typ ="text/javascript">

  $(Funkcja() {
     $(„danych wejściowych[Tytuł = Przypisz pola z miejsca]').attr(
        {wartość: "Jesteś w zawik┼éanych maze fragmenty, wszystkie podobne. ”});

  });

</skrypt>

Myślę, że to podejście dość bezpieczne, co oznacza, że powinniśmy być w stanie znaleźć pola, że chcemy i tylko chcemy. Jeśli spojrzeć na HTML programu SharePoint jest dawanie nam, to jest sort of messy:

<dane wejściowe
Nazwa= "ctl00$ m$ g_bdb23c2c_fde7_495f_8676_69714a308d8e$ ctl00$ ctl04$ ctl02$ ctl00$ ctl00$ ctl04$ ctl00$ ctl00$ TextField"
Typ= "tekst"
Element MaxLength= "255"
Identyfikator= "ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
Tytuł= "DefaultMeFieldNoSpaces"
Klasa= "ms długi"
/>

"tytuł" wyróżnia się jako rozpoznawalne i miejmy nadzieję unikatowy atrybut pomóc nam zidentyfikować określonej kolumnie do którego chcemy przypisać wartości naszych dowolnego.

To jest podstawowe pojęcia. Ustawienie pola w dowolny sposób ten nie zamierza zdobyć żadnej nagrody. Jednakże, Jeśli chcemy robić bardziej interesujące rzeczy poziomu formularza (wszystkie nas zawsze chce wykonać, Oczywiście, prawo po zakończymy do mycia naczyń), jak zmienić wartość "b pole" automatycznie na podstawie wartości "pola", możemy (I) chcesz dowiedzieć się tych rzeczy.

Myślę, że nasze najlepsze szansa na wartość prawdziwy tutaj jest za pośrednictwem tytuł, przynajmniej dla pól tekstowych. Może być lepiej, bardziej niezawodne podejście. Jeśli go znaleźć, Zaktualizuję na stanowisku tym. Jeśli znasz lepszy sposób, Zostaw komentarz.</koniec>

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

Technorati znaczniki: ,