Kategooria Arhiiv: jQuery ja SharePointi

Ületada tüütu probleem suhteline URL SharePointi Quick Launch

Tahtsin lisada lingi kiirkäivitusnuppudena navigeerimine teisel päeval ja SharePointi ütles mulle:

image

Puhta teksti versioon sellest on:

Tagada, et URL on kehtiv ja hakkab kas sobiv märk (numbrimärk (#) või kaldkriips (/)) või sobivat toetatud protokolli (näiteks, "http://’, ' https://’, "fail://’, "ftp://’, "mailto:’, "Uudised:’).

"Blech ja pox!"Ma ütlesin.

Lahendust sellele on JavaScript abil leida tuntud linki quick launch ja alistada käitumisviisi.

Katsetada seda, Lisa uus link saidile katse thusly:

image

Ma kasutasin jQuery. Lahendada see, saaksin JavaScript ja jQuery kasutades oma lemmik tehnika lehele ja koodi niimoodi joonega:

 

$(dokumendi).valmis( funktsioon () {

    $("a:sisaldab(Katse URL asendamine)").Klõpsake nuppu(funktsioon () { märguanne("muutunud kliki käitumist!"); edasi-tagasi väär;});

});

Ja oma onu Bobi.

JQuery valija leiab iga <a> sildi, millel on "Test URL asendamine" oma nime. Te võite leida-tune mis sõltuvalt teie link ja selline.

Selle .click(funktsioon() alistab iganes SharePointi oleks teinud kasutaja klõpsamisel. Veenduge, et olete "return false" või siis see ei oma asjad ja seejärel proovige href asi liiga, mis on peaaegu kindlasti mitte teie eesmärk.

Seda tehti ja test SharePoint online keskkonnas, kuid peaks töötama hästi 2010 ja enne seda liiga.

</lõpp>

undefinedTelli minu blogi.

Järgi mind vidistama kell http://www.twitter.com/pagalvin

Kiire ja lihtne: Lahendada "sobimatu URL-i parameeter” probleem on UpdateListItems lists.asmx

Via lists.asmx UpdateListItems töötamisel, See on lihtne tekitada viga:

Sobimatu URL-i parameeter.

Esitatud URL sisaldab vigast käsku või väärtust. Vaadake URL uuesti.

See viga võib saada, kui olete unustanud lisada ID selle loendi väljade värskendamine.  See, nagu paljud neist SP veebiteenused, on natuke counterintuitive, kuna teil on vaja lisada ID atribuudi ID selle <Meetod> element.  Ja sa ei ole uuendatud ID ja ilmselt ei taha esimene koht.

See SEEP ümbrik töötab:

<soapenv:Ümbrik xmlns:soapenv ="http://schemas.xmlsoap.org/SOAP/Envelope/ ">
  <soapenv:Keha>                      
    <UpdateListItems xmlns ="http://schemas.microsoft.com/SharePoint/SOAP/ ">                     
      <listName>{C712E2EA-54E1-47AD-9D99-1848C7773E2F}</listName>                     
        <uuendused>                     
         <Partii Tõrke_korral ="Jätka">
          <Meetod ID ="1" Cmd ="Update">
            <Välja nimi ="CooperativeLock">lukus!</Väli>
            <Välja nimi ="ID">1</Väli>
          </Meetod>
        </Partii>                     
        </uuendused>                
      </UpdateListItems>             
  </soapenv:Keha>         
</soapenv:Ümbrik>

Kui teil ribad välja ID väli viide siis saad tüütu "Sobimatu URL-i parameeter" sõnum.

</lõpp>

undefinedTelli minu blogi.

Järgi mind vidistama kell http://www.twitter.com/pagalvin

 

Vaene mees on Caching JavaScript

[TL;DR versioon: kasutame küpsiseid, et salvestada tulemused async kõned; muuta tulemused viimase async kõned kohe ja seejärel Kinnita neid pärast lehe laadimist.]

Olen töötanud SharePointi intranet saidil kliendile, et funktsioonid, muu hulgas, stiliseeritud teisese navigation kelle menüüsuvandite hallatakse kaudu regulaarselt vana kohandatud loendi.  Mõte on selles, et klient saab kontrollida "oma" saidi menüü mõjutamata või mõjutavad globaalset navigatsioonisatelliitide poolt välja pandud.

(seal on midagi uskumatult õõnestava lisamine CEWP, mis viitab HTML-fail, mis laadib mõned CSS ja JS oluliselt muuta peaaegu kõike saidi käitumine... kuid see on teisele ametikohale)

See päris lihtne kood:

Valus kohapeal siin on see, et iga kord, kui keegi lööb selle saidi leheküljed, See kasutaja veebilehitseja on jõudmas saada üksuste loendist.  Kui dev on lõpetatud ja testimine on osutunud asjad olema stabiilne ja täielik, selle kutse ei ole vajalik enam kui 99% ajast alates menüü harva muutub.  On ka imelik UI mõjutada, mis on levinud see vapper uus maailm hüper-ajaxy veebisaitide-lehe renderdamist ja alles seejärel menüü Muuda.  On närviline ja häiriv, minu arvates.  Ja närviline. Nii, vahemällu. 

Ma muutmine loogika thusly:

  • Otsige küpsise brauseri, mis sisaldab menüüd kui viimati lugesin
    • Kui leiti, Muuda kohe.  Ärge oodake lõpuni laadimise lehele.  (Sa pead veenduge, et teie HTML strateegiliselt paigutatud siin, kuid see ei ole raske teha).
  • Oodake, kuni lehe lõpuni peale ja tee async helistada korralikuks menüü üksuste loendi, kasutades ülejäänud või lists.asmx või mis iganes
  • Võrdle, mida sain vastu küpsis
    • Kui see sobib, Stopp
    • Muidu, kasutades jQuery, dünaamiliselt asustada hunnik kui <Li>'s in a <UL>
  • Kasutage kogu vormingu CSS
  • Kasum!

Mõned teist lähevad öelda, "kuule! ei mingit tõelist vahemällu siin toimub kuna sa loed menüü niikuinii iga kord.”  Ja sul on õigus-ma olen andes server murda tahes.  Kuid kuna kõne on asünkroonne ja juhtub pärast esialgse ettepaneku lehe HTML lasti täielikult muudab, "tundub" kiiremini reageerima kasutaja.  Menüü muudab päris palju kui lehe viiki.  Kui menüü muutus, Kasutaja läbib närviline uuesti teha menüü, kuid ainult üks kord.

Seal on mõned viisid, et muuta see vahemälu tõhusamaks ning aidata server samal ajal:

  • Pane vähemalt kehtiva "küpsiste vahemälu" reeglit 24 tunni või mõni muu ajakava. Kui ei ole aegunud küpsis, Kasutage seda küpsist menüüd pildistamise ja kunagi tabanud server.

Noh... see on kõik, mis kohe pähe tulevad :). 

Kui kellelgi on kõik targad ideed siin oleks tore teada nende.

Ja lõpuks – seda tehnikat kasutada muid asju.  Selle kliendi leheküljel on mitmeid asju andmepõhiseid erinevatel lehekülgedel, Paljud neist muutuvad suhteliselt harva (näiteks kord nädalas või kord kuus).  Kui sihite teatud valdkondades funktsioone, annad paindlikumaks UI tõmmates sisu kohalikku küpsis salvestada ja muuta kohe.  Ta tunneb kiiremini kasutajale, isegi kui sa oled kokkuhoid, server kõik tsüklit.  Te Saate salvestada serveri tsüklit otsustades mõned tingimused ja vallandab tunnistab kehtetuks kohalik küpsiste vahemälu.  Ongi kõik olukorrast ja esteetilist asjad ja tõesti kõige toredam :). 

</lõpp>

undefinedTelli minu blogi.

Järgi mind vidistama kell http://www.twitter.com/pagalvin

XSLT- ja jQuery proovid

Olen teinud palju XSLT-jQuery ja arvasin, tahaksin jagada mõned pikad, et teised võivad leida kasulik tulevikus.

Näide 1: Paisata lihtne JavaScript / jQuery XSLT-s:

<XSL-i:malli vaste = "midagi" XML-i:Kosmos = "Säilita">

  <!– Tühja välja päringu sõbralik filtrid peidetud väli –>
  <script type = "tekst/javascript">
    $(dokumendi).valmis(funktsioon(){
      $("#QueryFriendlyFilters").Val("tühi");
    });
  </skripti>

</XSL-i:Mall>

Et natuke kiirgab mõned JavaScript, mis ootab lehe laadimise lõpetamiseks (Kuna selle $(dokumendi).valmis(…)) ja siis seab peidetud välja väärtus nimega QueryFriendlyFilters sõnasõnaline väärtusele "tühi".

Näide 2: Kasutamine <XSL-i:Kui> kontrollida "suurem kui",  "väiksem kui", jne.

<XSL-i:malli vaste = "midagi" XML-i:Kosmos = "Säilita">

  <div id = "fdcAllFilters">
 
    <XSL-i:Kui test="@Count>0">
      <span class = "fdcFilterLabel">Praegused filtrid:</span>
    </XSL-i:Kui>

    <!– rohkem asju juhtub siin. –>

</XSL-i:Mall>

Ülaltoodud väljavõte kontrollib, kas atribuut nimega "Loendamine" elemendi "midagi" on suurem kui null.  XML-i taga, see oleks midagi sellist:”

<midagi Count = "5" />

Näide 3: Itereerima läbi kõik elemendid, Interspersing jQuery kõned.

<!– Itereerima läbi kõik filtrid ja kuvatakse õige  lingid. –>
<XSL-i:iga valige = "UserFilter">

  <klassi "FilterHref =" href = "javascript:mySubmitPage('RemoveUserFilter','{@ID}’)">[X]</a>

  <span class = "fdcFilterLabel"><XSL-i:Hinna-ja select="@FilterValue"/></span>

  <script type = "tekst/javascript">

    $(dokumendi).valmis(funktsioon(){
        <XSL-i:teksti><![CDATA[$("#QueryFriendlyFilters").Val( ($("#QueryFriendlyFilters").Val() + " ]]></XSL-i:teksti>\"<XSL-i:Hinna-ja select="@FilterValue"/>\"<XSL-i:teksti><![CDATA["));]]></XSL-i:teksti>
    });

  </skripti>

</XSL-i:puhul iga>

Ülaltoodud väljavõte on kõige keerukam ja seal võib olla lihtsam seda teha.

XML-i selle taga näeb umbes välja selline:

<UserFilter ID = "123" FilterValue = "xyzzy" />

Selle koodijupi iterating kaudu <UserFilter> sõlmed. 

Kõigepealt paiskab ankur tag, mis klõpsamisel tugineb JavaScript funktsioon, mis on juba lehel, "mySubmitPage" ja läbib atribuudi väärtuse ning <UserFilter> sõlme nimega "ID". 

See kiirgab siis mõned jQuery, mis ootab lehe laadimine.  Et jQuery uuendab peidetud väli nimega "QueryFriendlyFilters" FilterValue atribuudi väärtust lisades.  Märkus kõik hull <XSL-i:teksti> ja <![CDATA[ … ]]> kraam.

See on see, Loodan, et see aitab!

</lõpp>

Telli minu blogi.

Järgi mind vidistama kell http://www.twitter.com/pagalvin

Lists.asmx, GetListItems ja kaustad

Ma tegin mõned uuringud keegi täna ümber osa SharePointi list.asmx veebiteenus 2010 (ja varem).  Ta suutis saada loendiüksuste root kausta (sealhulgas alamkatalooge nimed), aga ei suutnud saada punkte linnas alamkatalooge.  Ma tegin mõned vaadates selle internets ja on üllatavalt üldine küsimus.  Veel, Ma ei saanud hea vastata lihtsale küsimusele, "kui ma tean kaust, Kuidas saada üksused kausta?”  Kui aus olla, Ma ei proovi nii kõvasti, sest mõnda aega olen tahtnud näitaja see üks läbi minu oma naeratus.

Selle seadistama, Olen loonud saidi nimega "Blogging stsenaariumid" ja kohandatud loend nimega "Kohandatud loend koos Sub kaustad".  Siis ma loonud kausta nimega:

  • Aasta 2005
  • Aasta 2006
  • Aasta 2007

Lisasin mõned üksused kausta "aastal 2006".  See on, kuidas see välja näeb:

image

Mu sõber ei ole C# koodi aga pigem kasutades Java, nii oli SEEP ümbrik, mida ta tegelikult vaja.  Saada, et, Kirjutasin natuke jQuery ja saada tegelik HTTP vestlus viiuldaja harjunud.

Siin on asjakohane jQuery (I kopeeritud kood ette allpool kui soovite kopeeri/kleebi):

image

Nad esimene võti on nii a <queryOptions> ja <QueryOptions> sõlme.  Teine võti on see, et selle <Kausta> sõlm on URL, millele kliendil on juurdepääs.

Võib esineda muid võimalusi saada see, Aga see töötas hästi minu jaoks, kasutades jQuery.

Siin on SEEP eraldati eespool:

<soapenv:Ümbrik xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Keha>
    <GetListItemid oleksid xmlns =’
http://schemas.microsoft.com/SharePoint/SOAP/’>
      <listName>Kohandatud loendi alamkaustadena</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef nimi = "pealkiri’ />
          <FieldRef nimi ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Kausta>
http://demoserver1/Blogging Stsenaariume/loendid/kohandatud loendi Sub kaustad/aasta 2006</Kausta>
        </QueryOptions>
      </queryOptions>
   
</GetListItemid oleksid>
  </soapenv:Keha>
</soapenv:Ümbrik>

Palju näiteid ja arutelu selle ümber viinud mind uskuma, et kõik, mida mul vaja oli <QueryOptions> ja määrake kausta nimi.  Minu jaoks, Mul on vaja nii murrab ta sees <queryOptions> Samuti saate määrata täielik URL on <Kausta> sõlm.

Siin on jQuery AJAX seadistamine:

$(dokumendi).valmis(funktsioon() {
       var soapEnv =
           "<soapenv:Ümbrik xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Keha> \
                    <GetListItemid oleksid xmlns =’http://schemas.microsoft.com/SharePoint/SOAP/’> \
                       <listName>Kohandatud loendi alamkaustadena</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef nimi = "pealkiri’ /> \
                              <FieldRef nimi ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Kausta>http://demoserver1/Blogging Stsenaariume/loendid/kohandatud loendi Sub kaustad/aasta 2006</Kausta> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItemid oleksid> \
               </soapenv:Keha> \
           </soapenv:Ümbrik>";

</lõpp>

Telli minu blogi.

Järgi mind vidistama kell http://www.twitter.com/pagalvin

Lists.asmx, GetList ja "väärtus ei saa olla null”

Ma avastasin eile et kui GetList() meetod lists.asmx veebiteenus on väga hoolikalt nimetati või on kalduvus visata salapärane "Väärtus ei tohi olla tühi" erand (ja mis eeldab saad mööda veel hullem üldise tõrketeate, "Erandi tüüp ' Microsoft.SharePoint.SoapServer.SoapServerException’ oli visatud.")  Konkreetselt, Ma leidsin, et ei anna mingeid eesliide GetList meetodil.  JQuery koodijupi illustreerib punkt:

image

Kui sa seda, veebiteenus vastab "Väärtus ei tohi olla tühi" nagu see viiuldaja-esitatud HTTP transcript:

<?XML-i versioon = "1.0" kodeering = "utf-8"?>
  <seep:Ümbrik
     xmlns:seebi ="
http://schemas.xmlsoap.org/SOAP/Envelope/"    
     xmlns:Xsi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:XSD ="
http://www.w3.org/ 2001/Xmlskeemi">

  <seep:Keha>
    <seep:Süü>
      <faultcode>seep:Server</faultcode>
      <faultstring>
        Erandi tüüp ' Microsoft.SharePoint.SoapServer.SoapServerException’ visati.
      </faultstring>
      <detail>
        <errorstring xmlns ="
http://schemas.microsoft.com/SharePoint/SOAP/">
Väärtus ei tohi olla nullväärtusega.
        </errorstring>
      </detail>
    </seep:Süü>
  </seep:Keha>
</seep:Ümbrik>

Muidugi, sa ilmselt ei lisa see "s0" eesliide oma, kuid mõned tööriistad on kalduvus teha (näiteks Eclipse).

See on veelgi segadust / masendav, sest muid meetodeid talu eesliited.  Näiteks, selle GetListCollection meetod ei ole meeles, kui see on olnud eesliide, isegi koos jama prefikseid nagu "xyzzy":

image

See "väärtus ei tohi olla tühi" tundub üsna levinud lists.asmx, nii et loodetavasti see aitab keegi välja tulevikus.

</lõpp>

Telli minu blogi.

Järgi mind vidistama kell http://www.twitter.com/pagalvin

Lõputult pesitsevate <DIV> Sildid ja jQuery

See tundub nagu oddball teema, Ma ei ole kindel, see on tõesti väärt blogging umbes, kuid see on lõpetanud kunagi mind enne, nii et siin me minna naeratus

Olen töötanud kui olen tõmmates mõned andmed otsingu projekti, pakendi XML-sõnum ja seejärel selle XML-I on lõppkokkuvõttes valitsevaks HTML XSLT kaudu.  JQuery palju on seotud, üks bitiseid mis rakendab tabbing funktsioone.  Kui klõpsate vahekaardil (Päriselt, a <DIV>), jQuery tugineb .hide() ja .show() erinevate DIVd kohta (Alglehekülg koormuse laadib alla kogu sisu nii, et puuduvad käesolevas asjas puudub postbacks).

A bunch of hours ago, loogikast vahetamise vahekaarti hakanud käituma tavapärasest korrapäratult ja see ei kuva üks minu vahekaardid.  Lõpuks jälitatud see asjaolu kuni selle internet explorer (vähemalt) et mõelnud ning <DIV> pesastatud palju silte, palju sügavamal kui ette nähtud.Näitaks tootearendajate tööriistariba:

-<DIV id = "Tab1Content">
  -<DIV>
    -<DIV>
      -<DIV id = "Tab2Content">
        -<DIV>
           …………………………
                   </DIV>  <— Lõpuks näitab see oli suletud kogu tee alla siit!

Nii, Kui ma tegin a $("# Tab1Content").Peida(), Ma oleks peita ka Tab2 ja ma ei ole kunagi näidata Tab2 kui ma ka ei näidata Tab1.  Kopeerimisel ja kleepimisel kood visual studio ja see kõik on div hõõrdkatte kuni ilusti näitas, just nagu nad pidid teed, vaadates nagu see:

-<DIV id = "Tab1Content">
  +<DIV>
  +<DIV>
-<DIV id = "Tab2Content">
  +<DIV>
  +<DIV>

I võita minu pea vastu seina mõnda aega ja märganud tekitava kood oli tegelik HTML tühi palju <DIV> Sildid, nagu:

<keha>

  <DIV id = "Tab1Content">

    <DIV id = "row1" />
    <DIV id = "row2" />

  </DIV>

  <DIV id = "Tab2Content">

    <DIV id = "row1" />
    <DIV id = "row2" />

  </DIV>

</keha>

(Eespool nimetatu on ülelihtsustatud waaaaaaaaaaaay.  Tühi div-siltide täielikult kehtivad. Mõned minu <DIV> sildid on täis sisu, kuid ei olnud palju rohkem.  Ma tulin realiseerimaks et minu <XSL-i:puhul iga> direktiivides olid kiirgava lühi-vormi div tags kui ka XSL-i:puhul iga ei "leia mingeid andmeid.  HTML-I kommentaar sunnitud toodangu, nagu on näidatud:

image

 

Pärast tegin, et, kõik div märkeruutudele ilusti ja vahekaarti vahetamine hakanud.

Nagu alati, Ma loodan, et see aitab keegi in a ahtaalla.

</lõpp>

Telli minu blogi.

Järgi mind vidistama kell http://www.twitter.com/pagalvin

Veel rohkem jQuery–Näide pildi suuruse muutmine

Veebiosa päritud kliendi vana hankija ja see on probleem graafika suurus.  Pildid peaksid olema 60×50 kuid mõned veider põhjus, esialgse tarnija sundis neid 42×42, nii et nad näevad kokkupigistatud:

 

Hea pilt

Halb pilt

Siin on märgistus (mõnevõrra lihtsustatud):

<Tabel klassi = "extended-outlook">
  <thead>
    <TR>
      <th  laius = "100′>3 Teisipäev</th>
    </TR>
  </thead>

  <tbody>
    <TR klassi = "prognoos">
      <TD laius = "100′>
        <UL>
          <Li klassi = "kõrge">Kõrge: 72&kraadi;F</Li>
          <Li klassi = "madal">Madala: 44&kraadi;F</Li>
          <Li klassi = "tingimus">Päikeseline
            <img src =’
http://deskwx.weatherbug.com/images/Forecast/icons/localized/60×50/EN/trans/cond007.png’ laius = "42’ kõrgus = "42’ alt =” />
          </Li>
        </UL>
      </TD>
    </TR>

  </tbody>

</Tabel>

Sa pead tähele, et kuigi Euroopa tee pilt ise kuvatakse õige mõõt (60×50) esialgse tarnija sunnitud 42×42.  Miks?  Hull.

Igatahes, Tahtsin kiire ja lihtne lahendus sellele probleemile ja keerasin jQuery.  Trikk oli leidma kõik asjakohased <img> Sildid.  Ma ei tahtnud sopp img siltidega (mida on palju).  See natuke jQuery ei trikk:

<script type = tekst/javascript"" src ="http://Ajax.googleapis.com/Ajax/libs/jQuery/1.5/jQuery.min.js"></skripti>

<script type = "tekst/javascript">
     $(dokumendi).valmis(funktsioon () {

         $(' li.condition > img ").iga(funktsioon (indeks, kauba)
           
{
             $(kauba).CSS("laius", "60"); 
             $(kauba).CSS("kõrgus", "50");
            });
     }); // dokumendi laadimisel
</skripti>

See natuke koodi leiab kogumine <Li> Sildid, kelle klassis on "seisund" ja <img> lapsed.  Ta kordab siis kõik see läbi.  Töötas nagu võlu.

Ma oleks ilmselt sujuvamaks, Aga ma ei ole kunagi olnud üks selline unix mees, et lahendada π et 18 numbrite täpsus sed ja awk ja ma ei ole sellist kui jQuery mees kas naeratus.

</lõpp>

Telli minu blogi.

Järgi mind vidistama kell http://www.twitter.com/pagalvin

Ülemaailmne hüpikakende teatamise süsteemi

Ma kirjutasin artikli www.SharePoint.briefing.com pealkirjaga"Ülemaailmne hüpikakende teatamise süsteemi.”  See funktsioon oli rakendatud community college suhelda kooli sulgemist lume tõttu ja nii edasi. 

Ta kasutab kohandatud loendi, karbist SharePointi veebi teenuseid ja mõned jQuery ei tööta.

Siin on teaser:

image

Lugesin kogu asi siin: http://www.sharepointbriefing.com/features/article.php/3918471/Implement-a-Global-Pop-up-Notification-System.htm

</lõpp>

Telli minu blogi.

Järgi mind vidistama kell http://www.twitter.com/pagalvin

Võtta kontrolli oma OK ja Tühista nupud

Ma kirjutasin käesoleva artikli mõnda aega tagasi, Aga paistab, et ma ei lingi minu blogist ajal, nii läheb lahti:

image

Käesolevas artiklis kirjeldatakse, kuidas sundida newform.aspx suunata üks lehekülg, kui kasutaja klõpsab nuppu OK ja teisele lehele, kui ta klõpsab nuppu Loobu.

</lõpp>

Telli minu blogi.

Järgi mind vidistama kell http://www.twitter.com/pagalvin