Kategori Arkiv: jQuery och SharePoint

Snabbtips: Att lägga till jQuery MOSS publiceringssidor

När förbättra MOSS publising sidor med hjälp av jQuery, Jag slog de följande hastighet bump:

Servaren misstag i ' /’ Ansökan.


Parsningsfel

Beskrivning: Ett fel uppstod vid parsningen av en resurs som krävs för att utföra den här begäran. Granska följande specifika parse fel uppgifter och ändra ditt källfilen på lämpligt sätt.

Tolken felmeddelande: Endast tillåts innehållskontroller direkt i en innehållssida som innehåller innehållskontroller.

Källkod fel:

 
Line 10: 
Line 11: 
Line 12: <script 
Line 13:     type="text/javascript" 
Line 14:     src="/jQuery/jquery-1.4.min.js"> 

Källfil: /_catalogs/masterpage/KCC_FacultyMember.aspx    Linje: 12


Versionsinformation: Microsoft.NET Framework Version:2.0.50727.4927; ASP.NET Version:2.0.50727.4927

Det var lätt att fixa (h/t till min kollega, Uday Ethirajulu).  Se till att den jQuery kod lever inne i "PlaceHolderAdditionalPageHead" som visas:

<ASP:Innehåll ContentPlaceholderID = "PlaceHolderAdditionalPageHead" runat = "server">

<skript

    Type = text/javascript""

    src="/jQuery/jQuery-1.4.min.js">

</skript>

<skript type = "text/javascript">

  $(dokument).redo(funktionen() {

   // Lysande jQuery grejer går här.

   });

</skript>

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

I beröm av jQuery förbättrade Sök---inskrivning (av Jan Tielens)

Jag arbetar på en BPOS demo (snart s vara tillgängligt upp på Microsoft webbplats) och jag ville du piffa upp. Jag har vetat om Jan Tielen insatser för ett bra tag och jag trodde det skulle vara en bra teknik för att lägga till demo, så jag gjorde. Du kan läsa om det här: http://weblogs.asp.net/jan/archive/2009/07/02/sharepoint-search-as-you-type-with-jquery.aspx. Det är så enkel att använda det bör nog vara ett brott (och kanske är någonstans).

Jag läggas bara två punkter till vad han redan skapat / skrev om:

  1. Detta gör, I själva verket, arbeta i en BPOS (SharePoint online) miljö.
  2. Det fungerar utan en irriterande popup-meddelande prefix hänvisningen till jquery biblioteket med https istället för http, som i:
<script typ ="text/javascript" src ="https://Ajax.googleapis.com/Ajax/libs/jQuery/1.3.2/jQuery.min.js"></skript>

Jan påpekar att du förmodligen bör flytta själva biblioteket till din webbplats. Mår lite lat idag, I decided to blog about it instead 🙂

</slutet>

Detta är en annan post i min pågående serie om hur du använder jQuery med SharePoint.
Om du vill veta mer om jQuery, Jag rekommenderar: jQuery i aktion av Björn Bibeault och Yehuda Katz.

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

Technorati Tags:

Skydda SharePoint lista/bibliotek dokumentvyer verkar (typ av) Möjligt med jQuery

Detta är en annan post i min pågående serie om hur du använder jQuery med SharePoint.
Om du vill veta mer om jQuery, Jag rekommenderar: jQuery i aktion av Björn Bibeault och Yehuda Katz.

En av de första saker som jag trodde, När jag började att spela med jQuery, var om vi kunde använda den för att säkra en SharePoint-vy. Svaret är "nej" (eller åtminstone, Jag påstår inte att det är möjligt). Men, Det är säkert möjligt att göra det svårt för människor att se en viss vy.

Jag började med min sandlåda miljö när du arbetar på detta. Jag skrev om att miljön här: Snabb och enkel: Skapa din egen jQuery sandlåda för SharePoint.

Att "säkra" en Visa, Följ dessa steg:

  1. Skapa en vy som du vill skydda. Jag gjorde det och kallade det "Säkrade View".

    Detta är vad det ser ut när det inte är "säker":

    image

  2. Lägga till webbdelen Innehållsredigeraren till vyn sida använda knep beskrivs i artikel i sandlådan (dvs. Lägg till "sidvisning = delad&ToolPaneView = 2 "till URL).
  3. Räkna ut din SharePoint _spUserId crazy sÃ, tro eller ej:
    1. Logga in på din SharePoint-miljö.
    2. I webbläsarens Adress-fält, typ: "javascript:Alert(_spUserId").
    3. Spela in resultatet (Det är "13" i mitt fall).

      image

  4. Lägg till följande javascript till din CEWP i kodvyn:

    <script typ ="text/javascript"
        src =".. /.. /jQuery Library/jQuery-1.3.2.min.js">
    </skript>
    
    <script typ ="text/javascript">
      $(funktionen() {
    
        Alert(_spUserId);
    
        var theSecuredView = $("iframe[FilterLink * = säkrade % 20View]');
    
        om ((theSecuredView.length > 0) && (_spUserId == 13))
          $("iframe[FilterLink * = säkrade % 20View]').förälder().förälder().förälder().HTML("<TR bgcolor = röd><TD>Ingen utsikt för dig!</TD></TR>");
      });
    
    </skript>
    

Jag har tagit det alert(_spUserId) linje in där för att visa hur detta inte verkligen en "säkra" en Visa, men helt enkelt göra det svårare att se. Mer om det i ett ögonblick.

I princip, jQuery är ute efter en iFrame på sidan som har ett attribut som innehåller "Secured % 20View" i dess värde. När den finner det, Vi kontrollerar för att se om den aktuella användaren är "13". Om det är, Vi vandrar upp DOM till en <TR> tag (som jag räknat ut genom att Visa källa och spåra det) och sedan ersätta den TR-taggen med mitt budskap. Jag vet faktiskt inte hur robust är (Jag är väldigt misstänksam, I själva verket), utom den arbetat i min sandlåda. Om jag hittar ett bättre sätt, Jag ska blogga om det.. Detta är resultatet:

image

Jag klickar på OK och data ersätts med en stor röd meddelande:

image

Som du kan berätta, det sättet jag genomföra denna "säkerhet" lösning är att låta webbdelen som göra sig. Efter den är klar, Jag skriva över dess innehåll med min "ingen vy för dig!"meddelande.

Trots att det inte är verkligen en "säkrade" "Visa, Det är potentiellt användbara och med några smart arbete, Det kan så småningom komma securable i en mer formell mening. Den grundläggande frågan är att klienten blir alla data och sedan, först när det blir data, det torkar det. Om klienten är att få uppgifter, en smart användare kan förhindra jQuery körs på alla och se vad han/hon vill se.

Det finns andra nackdelar. Denna "säkerhet" tillvägagångssätt bygger bort en _spUserId. Vi vill att riktigt säkert baserat på SharePoint-säkerhetsmodellen i full, eller åtminstone av användarnamn. Det blir successivt svårare, men jag ser några bra saker skrivna om detta ämne, så jag hoppas det är ett bra svar på det problemet.

Listan över vyer sig putsas, om möjligt. Jag har inte försökt att räkna ut. Jag antar att det är möjligt, men inte riktigt lösa de grundläggande säkerhetsproblem eftersom någon kunde fortfarande bara Skriv Webbadressen till vyn de vill (om de visste det). Men, trimning är meningsfullt. Det är en bra användbarhet funktion och bidrar till att fördunkla saker. Om en användare inte vet att Visa evenemanget finns, de inte kommer att förmodligen försöka använda den. Ibland, Det är bra nog.

Med lite tur, Jag har mer att skriva om detta ämne med tiden.

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

Snabb och enkel: Ett bättre sätt att använda jQuery att dölja ett textfält i ett SharePoint-formulär

Detta är en annan post i min pågående serie om hur du använder jQuery med SharePoint.
Om du vill veta mer om jQuery, Jag rekommenderar: jQuery i aktion av Björn Bibeault och Yehuda Katz.

Tidigare, Jag skrev om hur du använder jQuery att lokalisera och dölja ett textfält i ett formulär. Jag brydde mig för det specifika tillvägagångssättet (Jag kedja föräldrar – det är helt enkelt inte gjort dessa dagar, åtminstone i familjer med kvalitet).

När jag först började att tänka på det, Jag visste att jag behövde till finna en <TR> som jag kunde åberopa Dölj() metoden. Min tidiga försök att hitta rätt <TR> var ungefär så här:

$("tr:har(input[titel = gömma mig!])');

Problemet med det är att det skulle finna varje <TR> tag som hade någon överordnad relation till gömma mig! fältet, även om gömma mig! är kapslade många nivåer djupt i <TR>'s. Det visar sig att min sandlåda formuläret, Detta uttryck finner 9 olika TR som har gömma mig! som ett barn någonstans i sin DOM-trädet. Jag insåg att jag kunde gå tillbaka upp trädet från fältet sig, så det är hur jag hamnade missbrukar föräldrar, men det sitta inte bra med mig.

Jag gav en tanke till detta och en av de saker jag läser slutligen är meningsfullt: Jag kunde använda inte() metoden att trimma ut <TR>: s jag inte vill ha i min inslagna som. Som ledde mig till detta:

$("tr:har(input[titel = gömma mig!])').inte("tr:har(TR)').Dölj();

Den första biten hittar alla de <TR> Taggar som har gömma mig! fältet var som helst i deras egen hierarki. Det sedan remsor ut någon <TR> Det har också ett barn <TR>. Detta lämnar oss med en enda <TR> som:

1) Har ingen <TR> underordnade poster

2) Har fältet som barn.

Vi kan sedan använda Dölj() metod att den resulterande och vi är klar.

Jag är fortfarande lite nervös om detta, men inte lika nervös som kedja föräldrar.

Jag vet inte om detta är en bästa praxis eller inte. Det kan vara ett mer lämpligt sätt att identifiera just den <TR> att vi bryr oss om i en SharePoint form. Om du vet, Vänligen skriv en kommentar.

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

Snabb och enkel: Använda jQuery för att dölja ett textfält i ett SharePoint-formulär

Detta är en annan post i min pågående serie om hur du använder jQuery med SharePoint.
Om du vill veta mer om jQuery, Jag rekommenderar: jQuery i aktion av Björn Bibeault och Yehuda Katz.

UPPDATERING (redan!): Jag tänkte på ett bättre sätt att hitta den <TR> tag jag vill dölja och skrev om det här. Du kan fortfarande finna denna artikel intressant hur som helst så är jag leavnig upp.

Jag vill dölja ett textfält, "Dölj mig!"som visas:

image

Följande jQuery gör susen för mig:

<script typ ="text/javascript">

  $(funktionen() {


    $("ingång[titel = gömma mig!]').förälder().förälder().förälder().Dölj();

  });

</skript>

Koden säger, "hitta mig alla ingående fält vars titel = gömma mig!. Sedan, få sina överordnade och bredvid överordnade och * nästa * förälder (Puh!) och åberopa Dölj() metod på det där, vad det råkar vara.

Jag beräknat ute den överordnade strukturen genom att visa HTML-koden för formuläret som SharePoint skapats som visas:

<TR>
    <TD nowrap= true" nederkant= "top" bredd= "190px" klass= "ms-formlabel">
        <H3 klass= "ms-standardheader">
            <nobr>Gömma mig!</nobr>
        </H3>
    </TD>

    <TD nederkant= "top" klass= "ms-formbody" bredd= "400 pixlar">
        <!-- Fältnamn = "Dölj mig!"
                 FieldInternalName = "Hide_x0020_Me_x0021_"
                 FieldType = "SPFieldText"
        -->
        <Spänn dir= "ingen">
            <input
                Namn= "ctl00$ m$ g_bdb23c2c_fde7_495f_8676_69714a308d8e$ ctl00$ ctl04$ ctl02$ ctl00$ ctl00$ ctl04$ ctl00$ ctl00$ TextField"
                typ= "text"
                MaxLength= "255"
                ID= "ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
                titel= "Dölj mig!"
                klass= "ms-lång" />
                <br>
        </Spänn>


    </TD>
</TR>

Denna bild visar samma, men märkt upp med föräldrar:

image

Den första föräldern (1) är en span-tagg. Spans överordnade (2) är en TD-tagg och sedan slutligen vi kommer till verkligt förälder jag vill dölja (3) vilket är TR-taggen själv.

Detta är ett ganska hemska tillvägagångssätt eftersom det är extremt beroende av mycket specifika strukturen av denna form. När SharePoint 2010 kommer ut, hela denna struktur skulle kunna ändra och bryta detta tillvägagångssätt. Vad jag verkligen vill göra är hantverk en jQuery väljare som är i linje med "hitta mig alla TR (och enda TR-Taggar) som har någonstans i deras underordnade element ett inmatningsfält vars titel = gömma mig!”. Jag börjar från botten och flytta. Förutsatt att jag lista ut, Jag kommer lägga upp en uppdaterad "snabb och enkel" post.

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

del.icio.us Taggar: ,

Snabb och enkel: Skapa din egen jQuery sandlåda för SharePoint

Detta är en annan post i min pågående serie om hur du använder jQuery med SharePoint.
Om du vill veta mer om jQuery, Jag rekommenderar: jQuery i aktion av Björn Bibeault och Yehuda Katz.

Det är förvånansvärt enkelt att komma igång med jQuery i SharePoint (Till mig). (Jag har allvarliga frågor om en "best practices" metod att distribuera dessa saker till produktion, men det är för en annan dag). Jag har precis börjat spela med denna teknik och därför, Jag skapade en sandlåda miljö att använda. Om du vill komma igång med jQuery, Du kan hitta detta tillvägagångssätt användbara.

1. Skapa en tom webbplats

Skapa en tom webbplats någonstans i din webbplats och kallar det något smart som "jQuery Sandbox".

2. Hämta jQuery

Du kan hämta den jQuery javascript biblioteket här: http://docs.jquery.com/Downloading_jQuery

Spara det till på skrivbordet.

Jag har blitt användande den "minified" versionen.

3. Skapa ett SharePoint-dokumentbibliotek

I din sandlåda webbplats, skapa ett dokumentbibliotek.

4. Ladda jQuery biblioteket till SharePoint

Åt doc biblioteket du just skapade och ladda jQuery biblioteket.

5. Skapa en anpassad SharePoint-lista

Jag har börjat med en anpassad lista eftersom jag vill slänga med SharePoint standardformulären. Du kan också skapa en sida i ett bibliotek för sidor eller webbdelssidor och förmodligen en massa andra ställen.

Lägga till vissa kolumner i listan anpassad så att du har något att köra jQuery mot. Min ursprungliga mål var att:

  1. Dölja ett fält.
  2. Tilldela ett värde till ett fält.

Med detta mål i åtanke, Jag la två textfält. Över tid, Jag ska spela med länkar, bilder, uppslag, m.m..

6. Ändra webbdelssidan NewForm.aspx och lägga till webbdelen Innehållsredigeraren

Detta är en liten svart magic-ish , att det är ett nytt koncept för mig. Jag lärde mig först om detta från Paul Grenier, SharePoint jQuery Superstar, på hans CodePlex project-webbplats: http://spff.codeplex.com/.

Följ dessa steg för att lägga till en CEWP på samma sida som visar NewForm.aspx för någon anpassad lista:

  1. Få tillgång till den anpassade listan och klicka på ny.
  2. Lägga till följande URL:: Sidvisning = delade&ToolPaneView = 2

Som kommer att förvandla din tråkiga vanilj datainmatningsformulär från något sådant:

image

Till detta:

image

Lägga till webbdelen Innehållsredigeraren på sidan.

7. Skriva din första jQuery kod

Öppna det CEWP i kodvyn och lägga till följande:

image

Här är den faktiska koden om du vill klistra in:

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

<script typ ="text/javascript">
  $(funktionen() {

    $("#resultsID").HTML("Det finns" + $("a").storlek() + "en Taggar Taggar på denna sida.");

  });
</skript>

Resultat:
<DIV id ="resultsID"></div>
/resultat

Observera att först <skript> tag refererar till faktiska jQuery biblioteket. Förmodligen, dessa saker förändras över tiden, så ska du se till att du en) använda den rätt namn och b) Peka på korrekt SharePoint-dokumentbiblioteket.

Sola sig i glansen

Om du gjorde det rätt, du ser ett resultat som liknar följande:

image

Inslagning

Detta är inte det enda sättet att komma igång, men det är snabbt, lätt och isolerade från befintliga SharePoint-miljön.

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

del.icio.us Taggar: ,

Snabb och enkel: Använda jQuery att ange en Text fältets värde på en SharePoint-Form

Jag började spela med jQuery Igår. Jag har velat göra detta länge, ända sedan Paul Grenier började skriva hans serie om jQuery för slutanvändare på den ärevördiga www.endusersharepoint.com webbplats. Eftersom jag använder den, Jag hoppas att lägga till en serie "Snabb och lätt" inlägg som den här. Det här inlägget beskriver hur du anger en känd text fältvärdet till vad du vill.

I det här scenariot, Jag har skapat en anpassad lista vars "nya" form ser ut som visas:

image

Detta är den nya formen för en anpassad lista med kolumnen standard och två listkolumner (inte webbplatskolumner; Jag tror inte att det skulle göra någon skillnad).

Målet är att tilldela ett godtyckligt värde i fältet, "DefaultMeFieldNoSpaces" (Du kan berätta jag är lite feg med "inga blanksteg" sak händer, men jag krydda upp det i slutet av denna artikel).

Denna bit av jQuery fungerade för mig:

<script typ ="text/javascript">

  $(funktionen() {

    $("ingång[titel = DefaultMeFieldNoSpaces]').attr(
        {värde: "Du är en krånglig labyrint av gångar, alla lika. "});

  });

</skript>

Som jag förstår det denna bit av jQuery säger, "hitta mig någon input tag vars titel = DefaultMeFieldNoSpaces. Sedan, Ställ alla deras värden på en berömd fras från en gammal datorspel".

Eftersom det endast blir ett fält i formuläret med en titel lika med "DefaultMeFieldNoSpaces" är vi försäkrade för att tilldela ett värde till fältet och ingen annan.

Vad sägs om ett fält vars namn innehåller blanksteg? Det är nästan samma:

<script typ ="text/javascript">

  $(funktionen() {
     $("ingång[titel = tilldela fält med utrymme]').attr(
        {värde: "Du är en krånglig labyrint av gångar, alla lika. "});

  });

</skript>

Jag tror att detta är ett ganska säkert tillvägagångssätt, vilket innebär att vi kan hitta det fält som vi vill och bara fältet vill vi. Om man tittar på ger HTML-SharePoint oss, Det är slags rörigt:

<input
Namn= "ctl00$ m$ g_bdb23c2c_fde7_495f_8676_69714a308d8e$ ctl00$ ctl04$ ctl02$ ctl00$ ctl00$ ctl04$ ctl00$ ctl00$ TextField"
typ= "text"
MaxLength= "255"
ID= "ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
titel= "DefaultMeFieldNoSpaces"
klass= "ms-lång"
/>

"titel" står ut som en igenkännlig och förhoppningsvis unika attribut till hjälpa oss att identifiera särskilda kolumnen som vi vill tilldela våra godtyckligt värde.

Detta är ett grundläggande begrepp. Anger ett fält på ett godtyckligt sätt som denna kommer inte att vinna några priser. Men, om vi vill göra mer intressant form nivå saker (som vi alla alltid vill göra, Självklart, direkt efter vi avslutar diska), som ändra värdet för "fältet b" automatiskt baserat på värdet av "fältet en", Vi (JAG) behöver lära sig dessa saker.

Jag tror att vår bästa chans att få ett riktigt användbart värde här är via titeln, åtminstone för textfält. Det kan finnas en bättre, mer tillförlitlig metod. Om jag tycker att det, Jag kommer uppdatera detta inlägg. Om du vet ett bättre sätt, lämna gärna en kommentar.</slutet>

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin