Kiel Specifi Homojn kiel #Ser?o Amplekso / Kontenta Fonto Uzanta SharePoint 2013 RIPOZA API

Mi havis kialon labori kun la SharePoint 2013 Serĉa API tra RIPOZO por la unua tempo. Mi deziris serĉi homojn, Ne dokumentoj. La kerna lernado ĉi tie estas ke vi specifas kontentajn fontojn tra ĝia GUID (#A? #almena? en #?i tiu kazo). La sekvanta jQuery eretaj rezultoj kiel:

    LoadExpertsAsync: Funkcio() {

        JQuery.Subteno.Cors = Vera;

        $.Ajax({
            Url: Tio ĉi.CreateFullApiUrl() +
                "?Querytext='portaloj'&Sourceid='b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&Selectproperties='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Kapabloj,AboutMe,Interesoj,JobTitle,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&Rowlimit=99",
            Metodo: "GET",
            Titoloj: { "Akcepti": "Apliko/json; Odata=verbose" },
            Konservejo: Falsa,
            Sukceso: Funkcio (Rezulto) {

En mia kazo, I?? Kuranta la API #kontra? SharePoint enreta. Akiri la GUID, Mi sekvis #?i tiu #pa?o:

  1. Aliri la SharePoint admin centron
  2. Elektita ??Earch?? De la maldekstra mana navigado
  3. Elektita ??Anage Rezultaj Fontoj?
  4. Elektita ??Ocal Homaj Rezultoj?
  5. Rigardi la URL.

Mia URL rigardis ion #?ati:

https://xyzzy-admin.sharepoint.com/_layouts/15/searchadmin/EditResultSource.aspx?level=tenant&sourceid=b09a7990%2D05ea%2D4af9%2D81ef%2Dedfab16c4e31&view=1

La sourceid parametro estas kio laborita por mi.

(Mi komprenas ke la sourceid efektive povas esti speco de konstanta afero kun SP, but I’ll always check anyway 🙂 ).

</Fino>

undefinedAboni al mia blogo.

Sekvi min sur Pepi ĉe http://www.twitter.com/pagalvin

Ekzemplo SharePoint RIPOZAJ Vokoj

Ĉi tie-a aro de ekzempla RIPOZO vokas ke laboro por mi kaj povas helpi vin ekstere ankaŭ. Kiel de 02/2014, there are two examples 🙂

  1. Referenci Kolumnon Kun Spacoj En #?ia Nomo
  2. Referenci Multi-Elektita Kolumno
  3. Elfari Homan #Ser?o tra RIPOZO

 

I??L aldonas #tio ?i kiel tempaj transludoj.

#?I tie estas kelkaj utilaj inkoj I??E trovita #anka?:

Referenci Kolumnon Kun Spacoj En #?ia Nomo

Mi kreas #la?menda liston kun kolumno nomis ??#?Tipo #A?toro? (Spaco inter Blogo kaj #A?toro).

La $elektita referenci tiun kolumnon estas:

image

Simple anstataŭigi la spacon kun “_x0020_”. Ni vidas la _x0020_ en multaj ekzemploj trans la interretoj kaj RIPOZO estas ne malsama.

Se vi surmetas?? Faras tion, Vi??E inklina akiri eraran #mesa?o tiel:

La esprimo “Bloga #A?toro” Ne estas valida.

Facile #sufi?a.

Referenci Multi-Elektita Lookup Kolumno

Instalita:

  1. Krei #la?menda liston nomita Kategoriojn.
  2. Aldoni kelkajn kategoriojn. Mi aldonis kategoriojn thusly:image
  3. Krei alian #la?menda liston vokis MockBlog kaj aldoni Kategoriojn kiel multi-elektita lista kolumno (#A? eja kolumno se tio?? Kiel vi rulas).

Aldoni kelkajn erojn al via Mockblog listo kaj vi??E preta.

Ajax stila voko uzanta jQuery rigardos ion tiel:

ServerUrl  = "/_Api/#aranea?o/listoj/GetByTitle('MockBlog')/Eroj" +
             "?$Elektita=Titolo,Kategoria/Titolo,Blogo_x0020_#A?toro/Titolo" + 
             "&$Vastigi=Blogon_x0020_#A?toro,Kategorioj";

Ni??E diranta SharePoint ??Ive mi la titolo por #?iuj la Kategorioj (Kategoria/Titolo). Akiri la realajn valorojn por Titolo De $VastigiIng la Kategoria listo.” (Mia RESTful parafrazanta estas #ver?ajne #sufi?e #malstre?a, Sed #tio ?i kiel I?? Interpretanta ?in).

Se vi??E faranta #tio ?i tra JavaScript kaj uzanta Fiddler rigardi la produktadon, Vi akiras ion tiel en reveno:

 

image

(La sur estas JSONa objekto)

Elfari Homan #Ser?o tra RIPOZO

Mi blogged pri #tio ?i aparte. La #?losilo estas specifi sourceid parametro kies valoro estas la GUID de la Loka Homa enhava fonto. (Kontentaj fontoj uzita esti vokita ampleksojn kaj ?i?? Mia-oh-mia tiel malfacile ne voki #?io amplekso por mi!).

Legita pli da pri ĝi ĉi tie: http://www.mstechblogs.com/paul/?p=10385

 

</Fino>

undefinedAboni al mia blogo.

Sekvi min sur Pepi ĉe http://www.twitter.com/pagalvin

Rapide kaj Facile: Krei SharePoint Ejo Uzanta RIPOZON

Estas multaj rimedoj #?irka? tiu rezulto kiel faras #tio ?i, Sed mi couldn?? Trovas ampleksan iri-ligi, Tiel #?i tie ni estas.

Vi povas krei SharePoint ejo uzanta la RIPOZAN API.  #?I tie?? plene bakita ekzemplon:

<!--
    SiteRequestForm.Html: Kolekti informon kaj krei ejon por la uzanto.
-->

<Centro>
<Tablo>
    <Tr>
        <Td>Eja Nomo:</Td>
        <Td><Enigo Tipo="Teksto" Nomo="SiteName" Identigaĵo="SiteName" /></Td>
    </Tr>
    <Tr>
        <Td Colspan="2">
            <Enigo Tipo="#Submeti?i" Identigaĵo="CreateSiteButton" Valoro="Krei la Ejon" />
        </Td>
    </Tr>
</Tablo>
</Centro>

<Skribo Src="../Kromsoftvaroj/jquery-1.11.0.Min.Js"></Skribo>

<Skribo>
Var CreateSiteLogicContainer = {

    CreateSiteData: {
            "Parametroj": {
                __Metadata: { "Tipo": "SP.WebInfoCreationInformation" },
                Url: "Paultest1",
                Titolo: "Paultest1",
                Priskribo: "Ripozo-kreita #aranea?o de Paul!",
                Lingvo: 1033,
                WebTemplate: "Sts",
                UseUniquePermissions: Falsa
            }
    },

    CreateSite: Funkcio () {

        JQuery.Subteno.Cors = Vera;

        CreateSiteLogicContainer.CreateSiteData.Parametroj.Url = $("#SiteName").Val();
        
        $.Ajax({
            Url: "Https://Bigapplesharepoint.Sharepoint.Com/NBAIADev/_api/#aranea?o/webinfos/aldonas",
            Metodo: "#PO?TO",

            Titoloj: {
                "Akcepti": "Apliko/json; Odata=verbose",
                "Kontenta-tipo": "Apliko/json;Odata=verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            Datumoj: JSON.Stringify(CreateSiteLogicContainer.CreateSiteData),

            Sukceso: Funkcio () { Atentigo("Sukceso"); },
            Eraro: Funkcio () { Atentigo("Eraro"); }

        });
    },

    WireUpForm: Funkcio () {
        $("#CreateSiteButton").Klako(Funkcio () {
            Atentigo("Proksimume provi kaj krei la ejon.");
            CreateSiteLogicContainer.CreateSite();
        });
    }


}

CreateSiteLogicContainer.WireUpForm();

</Skribo>

Kiam sukcesa, Vi akiras JSONan saketon en respondo tiel:

image

miaj kernaj pensoj kaj lernadoj de #tio ?i inkluzivas:

  • #?I tiu #alproksimi?o uzoj jQuery.  En mia kazo, Mia jQuery biblioteko estas #trovi?i en ??./Kromsoftvaroj.?  Vi??L deziras #?an?i tion indiki al via preferata JQa loko.
  • Vi povas kopii kaj almeti tiun tutan ereton en Kontenta Redaktora #Aranea?o Parto sur #pa?o kaj ?i devus labori nuran monpunon.  Vi??L deziras #?an?i la finan punkton de la APIa voko kaj faro certe vi referencas JQ #?uste.
  • La URL estas relativa al via API?? Endpoint.  En mia kazo, ?i?? Kreanta sub-ejoj sub https://bigapplesharepoint.com
  • Vi surmetas?? Bezono provizi kontentan-longeco. Kelkaj blogaj #po?to kaj MSDNa dokumento implicas ke vi fari, Sed okazita por mi #a?tomate, Kiu mi supozas estas estanta pritraktita de la $.Ajax vokas ?in mem.
  • #?I tiu linio estas postulita por eviti ??Orbidden?? Respondo: "X-RequestDigest": $("#__REQUESTDIGEST").Val().  Estas aliaj vojoj fari ?in, Sed #tio ?i estas #sufi?e bela.  Mi perdis la ligon al blogo kiu provizis #?i tiu mallongirejon.  H/T al vi, Mistera bloganto!

Bona fortuno kaj esperi #tio ?i helpas iun ekstere.

</Fino>

undefinedAboni al mia blogo.

Sekvi min sur Pepi ĉe http://www.twitter.com/pagalvin

Venki #?ena Problemon kun Relativa Urls en SharePoint Rapida #Lan?o

Mi deziris aldoni ligon al la rapida #lan?o navigado la alia tago kaj SharePoint diris min:

image

Pura teksta versio de kiu estas:

Certigi ke la URL estas valida kaj komencas kun #a? valida karaktero (Nombra signo (#) #A? #anta?a #detran?o (/)) #A? valida subtenita protokolon (Ekzemple, ‘Http://', ‘Https://', ‘Dosiero://', ‘Ftp://', ‘Mailto:', ‘Sciigoj:').

??lech kaj pox!?? Mi diris.

Workaround al #tio ?i estas uzi JavaScript trovi konatan ligon en la rapida #lan?o kaj superregi #?ia konduton.

Elprovi #tio ?i, Aldoni novan ligon al via testa ejo thusly:

image

Mi uzis jQuery. Solvi ĝin, Akiri kelkaj JavaScript kaj jQuery al la #pa?o uzanta vian preferatan teknikon kaj kun linio de kodo tiel:

 

$(Dokumento).Preta( Funkcio () {

    $("al:Enhavas('Testa URL #anstata?a?o')").Klako(Funkcio () { Atentigo("#?An?i klakan konduton!"); Reveno Falsa;});

});

Kaj Bob?? Via onklo.

La jQuery elektilo trovas #?iu <al> Etikedo kiu havas “Testan URL anstataŭaĵo” en ĝia nomo. Vi povas deziri trovi-melodio ke dependanta sur via ligo kaj tia.

La .Klako(Funkcio() Superregas ajna SharePoint estus farinta kiam la uzanton klakis. Fari certe vin “revenas falsan” aŭ alia ĝi faros vian aĵon kaj tiam provi al la href afero ankaŭ, Kiu estas #preska? certe ne via celo.

#Tio ?i estis farita kaj testo en SharePoint enreta medio sed devus labori bone je 2010 Kaj #anta?e #anka?.

</Fino>

undefinedAboni al mia blogo.

Sekvi min sur Pepi ĉe http://www.twitter.com/pagalvin

Rapide kaj Simpla: SharePoint RIPOZO Vokas Nurajn Revenojn 100 Rekordoj

I??E estita laboranta sur publika #tega?o retejo por mia SharePoint praktiko #?i tie je Nov-Jorko Kaj ?i uzas multa JavaScript kaj RIPOZAJ vokoj montri enhavon.

Dum #?eftendenca evoluado, Mi kreas malgrandan dataset kun nura 10 #A? do disputoj en #la?menda listo kaj mia RIPOZO vokas #?iu tirita de tie.  Unufoje mi ekfrapis supre la liston havi kelkaj cent disputoj de datumo elprovi por anticipita kreskon, Mi trovis ke mi estis akiranta #?uste 100 Disputoj revenis reen sur miaj RIPOZAJ vokoj.

#Tio ?i estas tre simpla afero trakti.  En mia kazo (Kaj mi kredas en plejpartoj de kazoj), La #defa?lta RIPOZAJ vokoj al SharePoint (Kaj eble kiel industria normo?) Reveno 100 Disputoj.  Reveni pli da ol la nerepago, Uzi la $pintan parametron sur via voko, Kiel je:

GETaj /Enrigardoj Dev/_api/#aranea?o/listoj/GetByTitle(‘MockBlog')/Eroj?$Elektita=#IDENTIGA?O,Titolo,Kategoria/Titolo,Blogo_x0020_#A?toro/Titolo,DatePublished,BlogSummary&$Vastigi=Blogon_x0020_#A?toro,Kategorioj&$Filtrilo=&$#?Apeli=9999

Mi elektis 9999 En #?i tiu kazo pro tio ke mi scias ke kreskiga-#sa?a, Tie gajnita?? Esti pli da ol 200 #A? do disputoj aldonis #?i tiu liston en jaro.  Se ?i #fari?i malgracia, Ni povas efektivigi kelkaj paging malsupren la vojo.

</Fino>

undefinedAboni al mia blogo.

Sekvi min sur Pepi ĉe http://www.twitter.com/pagalvin

Rapide kaj Simpla: Solvi ??Nvalid URLa Parametro” Problemo kun UpdateListItems en listoj.Asmx

Kiam laboranta kun UpdateListItems tra listoj.Asmx, ?i?? Facile produkti la eraron:

Nula URLa Parametro.

La URL se enhavas nulan Komandon #a? Valoron. Bonvolu kontroli la URL denove.

Vi povas akiri #?i tiu eraron kiam vi forgesas inkluzivi #IDENTIGA?O en la la listo de kampoj #?isdatigi.  Tio ĉi, #?Ati multa #?i tiu SPaj #aranea?o servoj, Estas iom counterintuitive pro tio ke vi devas inkluzivi la #IDENTIGA?O en la #IDENTIGA?O eco de la <Metodo> Elemento.  Kaj vi??E ne #?isdatigi #IDENTIGA?O kaj #ver?ajne neniam deziri al en la unua loko.

#?I tiu SAPAJ kovertaj laboroj:

<Soapenv:Koverto xmlns:Soapenv='Http://Schemas.Xmlsoap.Org/sapa/koverto/'>
  <Soapenv:Korpo>                      
    <UpdateListItems xmlns='Http://Schemas.Microsoft.Com/sharepoint/sapo/'>                     
      <ListName>{C712E2EA-54E1-47AD-9D99-1848C7773E2F}</ListName>                     
        <#?Isdatigo>                     
         <Aro OnError="#Da?ri">
          <Metoda #IDENTIGA?O="1" Cmd="#?Isdatigo">
            <Kampa Nomo="CooperativeLock">#?Losi?i!</Kampo>
            <Kampa Nomo="#IDENTIGA?O">1</Kampo>
          </Metodo>
        </Aro>                     
        </#?Isdatigo>                
      </UpdateListItems>             
  </Soapenv:Korpo>         
</Soapenv:Koverto>

Se vi elmalkovras la #IDENTIGA?O kampan referencon tiam vi??L akiras la #?ena ??Nvalid URLa parametro?? #Mesa?o.

</Fino>

undefinedAboni al mia blogo.

Sekvi min sur Pepi ĉe http://www.twitter.com/pagalvin

 

#Malri?a Viro?? Caching en JavaScript

[TL;D-ra versio: Uzaj kuketoj enteni la rezultojn de async vokoj; Fari la rezultojn de pasinta async vokoj tuj kaj tiam konfirmas ilin post #pa?o-#?ar?o.]

I??E estita laboranta sur SharePoint intrareta ejo por kliento ke #?efa?o, Inter aliaj aferoj, stylized duaranga navigado kies menuaj elektoj estas administrita tra regula malnova #la?menda listo.  La ideo estas ke la kliento akiras kontroli ??Heredanto?? Ejo?? Menuo sen influanta #a? estanta influita de la tutmonda navigado elmetis de ?I.

(Estas io nekredeble renversemulo pri aldonanta CEWP kiu indikas al HTMLa dosiero kiu #?ar?i #kelka CSS kaj JS fundamente #?an?i #preska? #?io pri ejo?? Konduto?? Sed tio?? Por alia #po?to)

La kodo por #?i tiu #sufi?e simpla:

La dolora punkto #?i tie estas ke #?iu tempo iu ajn frapas unu el la ejo?? #Pa?o, KE uzanto?? #Aranea?o retumilo estas elatinganta akiri erojn de la listo.  Unufoje dev estas kompleta kaj elprovado pruvis aferojn esti stabila kaj kompleta, #?I tiu voko estas nenecesa pli ol 99% De la tempo ekde la menuo malofte #?an?o.  ?i #anka? havas strangan UIan efikon kiu estas ofta en #?i tiu #kura?a nova mondo de hyper-ajaxy retejoj ?? La #pa?o faras kaj nur tiam faras la menuon faras.  ?i?? Maltrankvila kaj distranta en mia vido.  Kaj maltrankvila. Tiel, Caching. 

Mi modifis la logikon thusly:

  • #Ser?i kuketon en la retumilo kiu enhavas la menuon kiel mi #da?ri legita ?in
    • Se trovita, Fari ?in tuj.  Don?? Atendo por la #pa?o fini #?ar?ado.  (Vi devas fari certe vian HTML estas strategie lokita #?i tie, Sed ?i?? Ne malfacile fari).
  • Atendo por la #pa?o fini #?ar?ado kaj fari async voko #?ar?i supre menuajn erojn de listo uzanta RIPOZON #a? listoj.asmx #a? kio ajn
  • Kompari kion mi akiris #kontra? la kuketo
    • Se ?i egalas, HALTIGO
    • Alie, Uzanta jQuery, Dynamically #lo?i aron se <Li>?? En <Ul>
  • Uza CSS fari #?iu la aspektigado
  • Profito!

Kelkaj de vi estas iranta diri, ??Ey! Tie?? Neniu vera caching #da?rigi #?i tie ekde vi??E leganta la menuon #?iuokaze #?Iu ununura tempo.”  Kaj vi??E rajto ?? I?? Ne donanta la servilo ajna speco de #rompi?o.  Sed #?ar la voko estas async kaj okazas post la #pa?o?? Komenca HTML payload plene faras, ?i ??Angiloj?? Pli da respondema al la uzanto.  La menuo faras #sufi?e tre kiel la #pa?o tiroj.  Se la menuo okazas al la #?an?o, La uzanto estas submetita al maltrankvila re-tiro de la menuo, Sed nur ke unu fojo.

Estas kelkaj vojoj fari #?i tiu caching pli efika kaj helpo ekstere la servilo samtempe:

  • Metita en regulo ke la ??Ookie konservejo?? Estas valida por minimumo de 24 Horoj #a? kelkaj alia timeframe. Kiel longe kiel estas ne #eksvalidi?i kuketon, Uzi la kuketon?? Menua momentfoto kaj neniam frapita la servilon.

Puto ?? Tio?? #?Iu kiu venas atenti #?uste nun :). 

Se iu ajn havas ajnajn lertajn ideojn #?i tie I?? Amo scii ilin.

Kaj fine ?? #?I tiu tekniko povas esti uzita por alia #a?o.  #?I tiu kliento?? #Pa?o havas nombron de datumo-veturita aferojn sur diversaj #pa?o, Multaj de ili #?an?i relative malofte (#?Ati unufoje semajnon #a? unufoje monato).  Se vi celas specifajn areojn de funkcio, Vi povas doni pli respondema UI de tiranta enhavon de la loka kuketa vendejo kaj faranta tuj.  ?i sentas pli rapidan al la uzanto #e? se vi??E ne savanta la servilon ajnaj cikloj.  Vi Ujo Savi la servilajn ciklojn de decidanta sur kelkaj #kondi?o kaj ellasiloj nuligi #?i tiu lokan kuketan konservejon.  Tio?? #?Iuj situational kaj artsy #a?o kaj vere la plej amuza :). 

</Fino>

undefinedAboni al mia blogo.

Sekvi min sur Pepi ĉe http://www.twitter.com/pagalvin

Kiel al: Formi Unuan Teston kaj Testan Priraportadon kun QUnit.js kaj Kovro.Js Por Oficejo 365 SharePoint App

Intro

Mi estis esploranta unuan elprovadon kaj testan priraportadon por JavaScript kiel mi laboras sur nova SharePoint app por SharePoint enreta en la Oficejo 365 Aro.  La evidentaj esploraj vojoj gvidis min al Qunit.Js Kaj ĝusta post kiam tio, Al Kovro.Js.

QUnit lasis min instalita unuajn testojn kaj grupigi ilin en kapsuloj.  Kapsulo estas nur simpla vojo organizi rilatita testojn. (Mi ne estas certe mi estas uzanta ĝin kiel celita, Sed ĝi estas laboranta por mi tiel ege kun la malgranda aro de testoj mi tiel ege difinis).

Kovro.Js integrigas kun Qunit kaj ĝi montros min la realaj linioj de JavaScript kiu estis – kaj pli grave – ne estis efektive efektivigita en la kurso kuri la testojn.  Tio ĉi estas “priraportadaj” – linioj kiu efektivigis estas kovrita de la testo dum aliaj ne estas.

Inter instalanta bonajn testajn kazojn kaj vidanta priraportadon, Ni povas redukti la riskon ke nia kodo kaŝis mankojn.  Bonaj tempoj.

Qunit

Supozanta vin havas vian Vidan Studian projekton instalita, Komenco de elŝutanta la JavaScript pako de http://qunitjs.com.  Aldoni la JavaScript kaj responda CSS al via solvo.  Mia similas tion ĉi:

image

Cifero 1

Kiel vi povas vidi, Mi estis uzanta 1.13.0 Ĉe la tempo mi skribis ĉi tiun blogan poŝton. Ne forgesas elŝuti kaj aldoni la CSSan dosieron.

KE ekstere de la vojo, Sekvanta paŝo estas krei iun specon de testo jungas kaj referenci la Qunit pecoj.  Mi estas elprovanta aron de funkcioj en skriba dosiero vokis “QuizUtil.Js” do mi kreis HTMLan paĝon vokis “QuizUtil_testo.Html” kiel montrita:

image Cifero 2

Ĉi tie-a la kodo:

<!DOCTYPE Html>
<Html Xmlns="Http://Www.w3.org/1999/xhtml">
<Kapo>
    <Titolo>QuizUtil testo kun Qunit</Titolo>
    <Ligo Rel="Stylesheet" Href="../CSS/qunit-1.13.0.Css" />
    <Skribo Tipo="Teksto/javascript" Src="QuizUtil.Js" Datumo-kovrilo></Skribo>
    <Skriba tipo="Teksto/javascript" Src="Qunit-1.13.0.Js"></Skribo>
    <Skriba tipo="Teksto/javascript" Src="Kovro.Min.Js"></Skribo>

    <Skribo>
        Kapsulo("GetIDFromLookup");
        Testo("QuizUtil getIDFromLookupField", Funkcio () {
            Var GoodValue = "1;#Paul Galvin";

            Egala(GetIDFromLookupField(GoodValue) + 1, 2), "IDENTIGAĴO de [" + GoodValue + "] + 1 Devus esti 2";
            Egala(GetIDFromLookupField(Undefined), Undefined, "Undefined eniga argumento devus reveni undefined rezulto.");
            Egala(GetIDFromLookupField(""), Undefined, "Senhoma eniga argumento devus reveni  undefined valoro.");
            Egala(GetIDFromLookupField("Gobbledigood3-thq;Dkvn ada;Skfja sdjfbvubvqrubqer0873407t534piutheqw;Vn"), Undefined,"Ĉiam devus reveni rezultan kabrioleton al Integralo");
            Egala(GetIDFromLookupField("2;#Kelkaj alia persono"), "2", "Kontrolanta [2;#Kelkaj alia persono].");
            Egala(GetIDFromLookupField("9834524;#Longa valoro"), "9834524", "Granda valora testo.");
            NotEqual(GetIDFromLookupField("5;#Iu ajn", 6), 6, "Elprovanta  notEqual (5 Ne estas egala al 6 Por ĉi tiu ekzemplo: [5;#Iu ajn]");

        });

        Kapsulo("HtmlEscape");
        Testo("QuizUtil htmlEscape()", Funkcio () {
            Egala(HtmlEscape("<"), "&Lt;", "Evitanta  malpli ol operacianto ('<')");
            Egala(HtmlEscape("<Div klaso="someclass">Iu teksto</Div>"), "&Lt;Div klaso=&Quot;Someclass&Quot;&Gt;Iu teksto&Lt;/Div&Gt;", "Pli kompleksa testa ŝnuro.");
        });

        Kapsulo("GetDateAsCaml");
        Testo("QuizUtil getDateAsCaml()", Funkcio () {
            Egala(GetDateAsCaml(Nova Dato("12/31/2013")), "2013-12-31T:00:00:00", "Elprovanta malfacile kodita daton: [12/31/2013]");
            Egala(GetDateAsCaml(Nova Dato("01/05/2014")), "2014-01-05T:00:00:00", "Elprovanta malfacile kodita daton: [01/05/2014]");
            Egala(GetDateAsCaml(Nova Dato("01/31/2014")), "2014-01-31T:00:00:00", "Elprovanta malfacile kodita daton: [01/31/2014]");
            Egala(GetTodayAsCaml(), GetDateAsCaml(Nova Dato()), "GetTodayAsCaml() Devus egalan getDateAsCaml(Nova Dato())");
            Egala(GetDateAsCaml("Absurda valoro"), Undefined, "Provi akiri la daton de absurda valoro.");
            Egala(GetDateAsCaml(Undefined), Undefined, "Provi akiri la daton de la [Undefined] Dato.");
        });

        Kapsulo("GetParameterByName");
        Testo("QuizUtil getParameterByName (De la demanda ŝnuro)", Funkcio () {
            Egala(GetParameterByName(Undefined), Undefined, "Provi akiri undefined parametro devus reveni undefined.");
            Egala(GetParameterByName("Ne ekzistas"), Undefined, "Provi akiri parametran valoron kiam ni scias la parametron ne ekzistas.");

        });

        Kapsulo("Kuketoj");
        Testo("QuizUtil diversaj kuketaj funkcioj.", Funkcio () {
            Egala(SetCookie("Testo", "1", -1), GetCookieValue("Testo"), "Akiri kuketon mi fiksas devus labori.");
            Egala(SetCookie("Anycookie", "1", -1), Vera, "Fiksanta validan kuiradon devus reveni 'veran'.");
            Egala(SetCookie("Freneza kuketa nomo !@#$%"%\^&*(()?/><.,", "1", -1), Vera, "Fiksanta malbonan kuketan nomon devus reveni 'falsan'.");
            Egala(SetCookie(Undefined, "1", -1), Undefined, "Pasanta undefined kiel la kuketa nomo.");
            Egala(GetCookieValue("Ne ekzistas"), "", "Kuketo ne ekzistas teston.");
        });

    </Skribo>
</Kapo>
<Korpo>
    <Div Identigaĵo="Qunit"></Div>
    <Div Identigaĵo="Qunit-fiksaĵo"></Div>

</Korpo>
</Html>

Estas pluraj aferoj okazanta ĉi tie:

  1. Referencanta mian kodon (QuizUtil.Js)
  2. Referencanta Qunity.Js
  3. Difinanta kelkajn kapsulojn (GetIDFromLookup, Kuketoj, Kaj aliaj)
  4. Lokanta <Div> Kies IDENTIGAĴO estas “qunit”.

Tiam, Mi nur tiras supre ĉi tiu paĝo kaj vi akiras ion tiel:

image

Cifero 3

Se vi rigardas trans la supro, Vi havas kelkajn elektojn, Du el kiu estas interesanta:

  • Kaŝi pasita testojn: Sufiĉe evidenta.  Povas helpi vian okulon nur vidi la problemajn areojn kaj ne multa malordo.
  • Kapsulo: (Fali malsupren): Tio ĉi filtros la testojn malsupren al nur tiuj grupoj de testoj vi deziras.

Koncerne la testoj si mem – kelkaj rimarkoj:

  • Ĝi iras sen diranta ke vi devas skribi vian kodon tia ke ĝi estas testable en la unua loko.  Uzanta la ilon povas helpi observigi tiun disciplinon. Ekzemple, Mi havis funkcion vokis “getTodayAsCaml()”.  Tio ĉi ne estas tre testable pro tio ke ĝi prenas neniun enigan argumenton kaj elprovi ĝin por egaleco, Ni devus konstante ĝisdatigi la testan kodon reflekti la nunan daton.  Mi refactored ĝi de aldonanta datuman enigan parametron tiam pasanta la nunan daton kiam mi deziras hodiaŭan daton en CAMLa formato.
  • La Qunit kadro dokumentas ĝiajn proprajn testojn kaj ĝi ŝajnas sufiĉe fortika.  Ĝi povas fari simplajn aferojn kiel elprovanta por egaleco kaj ankaŭ havas subtenon por ajax stilaj vokoj (Ambaŭ “vera” aŭ mokis uzanta vian preferatan pli imita).
  • Iranta tra la procezo ankaŭ devigas vin pensi tra randaj kazoj – kio okazas kun “undefined” aŭ null estas pasita en funkcio.  Ĝi faras ĝin senvive simpla elprovi ĉi tiujn scenarojn ekstere.  Bona aĵo.

Priraportado kun Kovro.Js

Kovro.Js kompletigas Qunit de spuranta la realajn liniojn de kodo kiu efektivigas dum la kurso kuri viajn testojn.  Ĝi integrigas ĝuste en Qunit do eĉ kvankam ĝi estas tuta aparta app, Ĝi ludas agrable – ĝin vere similas ĝin estas unu seamless app.

Tio ĉi estas kovro.Js en ago:

image Cifero 4

image

Cifero 5

(Vi efektive devas klaki sur la “Ebligi priraportadon” checkbox ĉe la supro [Vidi Ciferon 3] Ebligi tion ĉi.)

La reliefigita liniojn en Cifero 5 Ne estis efektivigita de iu ajn de miaj testoj, Do mi devas elpensi teston kiu faras kaŭzi ilin efektivigi se mi deziras plenan priraportadon.

Akiri kovron.Js laboranta de sekvanta ĉi tiujn paŝojn:

  1. Elŝuti ĝin de http://blanketjs.org/.
  2. Aldoni ĝin al via projekto
  3. Ĝisdatigi vian teston jungas paĝon (QuizUtil_testo.Html en mia kazo) Kiel sekvas:
    1. Referenci la kodon
    2. Ornami via <Skribo> Referenci tiel:
    <Skribo Tipo="Teksto/javascript" Src="QuizUtil.Js" Datumo-kovrilo></Skribo>

Kovro.Js kaptas la “datumon-kovrila” eco kaj faras ĝian magion.  Ĝi hokas en Qunit, Ĝisdatigas la UI aldoni la “Ebligi priraportadan” elekton kaj voila!

Resuma (TL; D-ro)

Uzi Qunit skribi viajn testajn kazojn.

  • Elŝuti ĝin
  • Aldoni ĝin al via projekto
  • Skribi teston jungas paĝon
  • Krei viajn testojn
    • Refactor kelkaj de via kodo esti testable
    • Esti kreiva!  Pensi de freneza, Neeblaj scenaroj kaj elprovi ilin ĉiuokaze.

Uza kovro.Js certigi priraportadon

  • Fari certan Qunit estas laboranta
  • Deŝuta kovro.Js kaj aldoni ĝin al via projekto
  • Aldoni ĝin al via testo jungas paĝon:
    • Aldoni referencon al kovro.Js
    • Aldoni “datumon-kovrila” eco al via <Skribo> Etikedo
  • Kuri via Qunit testoj.

Mi neniam faris iun ajn de tio ĉi antaŭ ol kaj havis iun rudimentan aĵon laboranta en iometo de horoj. 

Feliĉa elprovado!

</Fino>

undefinedAboni al mia blogo.

Sekvi min sur Pepi ĉe http://www.twitter.com/pagalvin

La Lasta Vestokompleto Vi’ll Ever Eluziĝo?

[Rapide noti – tion ĉi estas sufiĉe longa poŝto sur laborpostena malfermo por mia grupo ĉi tie en Nov-Jorko kaj vi ja devas vivi en la tri-ŝtata areo se vi estas interesita.]

Mi aliĝis Slaloman Konsultiĝon super 18 Monatoj antaŭe Kaj ke faras tion ĉi mia plej longa daŭranta laborposteno ekde 2007. Mi ne planis ĝin ke vojo. Antaŭ ŝnuro de laborposteno saltetanta ke komencita kun mia saltego en la SharePoint mondo, Mi estis ĉe unu loko por dek unu jaroj. Mi fine trovis novan, Eltenanta lokon labori por la longa tiras ĉi tie ĉe Slalomo.

Ĉi tiu loko estas kreskanta kaj mi devas iun helpon kontroli tion. La speco de helpo mi devas estas kutime vokita “SharePoint Solva Arkitekto” kvankam mi trovis la arkitektan vorton fini kaj/aŭ neĝuste uzita en la SharePoint spaco por tre momento nun. mi estis luktanta sur kiel al blogo pri tio ĉi. Mi surmetas?? Deziras simple enlistigi ekstere aron de kuglaj punktoj en #?etkubo/Monstro stilo. Miaj bonegaj varbadaj samuloj estis faranta ke jam :). Tiel, Mi decidis preni ??Ay en la vivo?? #Alproksimi?o. Legi ?in super kaj konsideri:

1) Se ?i pledas kaj

2) #?U vi scias en viaj ostoj kiu vi povas fari ?in.

Se jes, Kontakti min (@Paul.galvin@slalom.com) Kaj lasita?? Parolado.

#?I tiu estas kio vi povas atendi fari en tipa semajna/monato kiel solva arkitekto sur mia teamo:

  • Kuri projektojn, Ofte pli ol unu samtempe. Kelkaj projektoj estas grandaj kaj do vi?? Propra ke unu projekto. ??Unning?? Projekto signifas ke vi havas kontrolon kaj respondecon por la entuta kvalito de la livero. En #preska? #?iu kazo vi??L havas PM kaj vere forta teamo de devs, BAs, UXaj homoj, Ktp., Subteni vin. Sed vi estos la ĉefa vizaĝo la kliento vidas, Fidoj, Ktp. Tie estas neniu kaŝo en la ombroj en ĉi tiu rolo :). Vi fakturos ĉi tiun tempon kaj la celon estas teni vin okupata sufiĉa fari tion ĉi 80 Procento de la tempo.
  • Helpo kun dokumentaraj – Porkinoj, RFPs, Ferdekoj – ĉiuj ke bona aĵo. Mi pensas nin havas nian PORKINAN procezon malsupren sufiĉe streĉa kaj solida do ĝi estas juste formulaic. Se vi estas uzita al skribanta Porkinojn hodiaŭ, Nia procezo ne estas iranta esti defio por vi. RFPs – ĉi tiuj estas iom pli malfacilaj. Ili emas esti bespoke en naturo komenci kun kaj RFPs tipe tiri en multoblaj malsamaj aŭtoroj. Ĝi estas ambaŭ bona kaj malbone, Sed plejparte bona. Tio ĉi povas akiri scrambly kiam ni devas al juggle la bezono por bonega klienta servo dum ankaŭ provanta gajni novan laboron. Vi verŝajne ne posedos RFP sed vi estos demandita kontribui sekciojn.
  • Vendaj vokoj, sed ne pli proksima. En la kurso de monato, Vi povas atendi daŭrigi paron de vendoj vokas kun nia venda teamo. Vi estos la SME en la ĉambro, Preni notojn kaj helpo formas la solvon. Tamen, Vi ne estos demandita aŭ atendita pritrakti la vendan ciklon de komenco fini. Vi ne devas “vendi,” Vi nura bezono esti la senemocia voĉo de fakula kialo en la ĉambro. Tio ĉi konstruas fidon kaj konfidon kaj tio estas kial vi estas tie. Nature, Se vi ŝatas vendanta, Tiam tie estas ĉambro por vi kreski ĉi tie ankaŭ.
  • Helpo kun varbado. Ni ja havas iun specon de plu-gvida programo, Sekve se vi scias vere fortaj homoj en la komunuma ke vi pensas devus esti parto de Slalomo, Vi povas profitigi tiun vojon. Ni dediĉis rekrutigistojn (Kiu estas bonega) Fari la interŝanĝadon de la leono de ĉi tiu speco de laboro. La vera helpo estas intervjuanta kandidatojn – estas ili bona kapabla kulture? Ĉu ili scias ilia aĵo? Povas ilin faras mian* vivon pli facila? 🙂 Ĉi tio venas en ŝprucoj, Paro oble monato, Kvankam en kelkaj monatoj vi ne farus ĝin ĉe ĉiuj.
  • Helpo difinas plej bonajn praktikojn, Konstrui supre nian IP kaj fari nin pli konkurenciva en la merkato. Vi estas sperta ulo/gal. Vi estis ĉirkaŭ la bloko – ne nur en SharePoint, Sed vi havas sperton en aliaj teknologioj kaj vivita tra bona kaj malbone (Eĉ terura) Projektas ĉiujn super. Rezulte, Vi scias kion laboroj kaj kio faras ne. Ni deziros vin dividi tiun sperton kun ni sur tago al taga bazo en taktika sento (T.e. Kuri viajn projektojn vere bone) Sed ankaŭ strategie. “Plej bonaj praktikoj” estas iom overused kiel termino kaj mi hezitas uzi ĝin. La baza ideo estas ke vi estas eniranta kiel sperta persono kun profunda kaj rilata sperto kaj ni deziras integrigi la plej bonan de viaj lernadoj en kiel ni okupas kun klientoj sur tago al taga bazo.
  • Havas amuzan – Ni estas tre integra aro. Mi deziras eviti sed tamen alia platitude, Sed ĝi estas vere taŭga en ĉi tiu kazo – ni laboras malfacile (Speco de) Kaj ni ludas eĉ pli malfacilan :). Tie estas Aaron Sorkin speco de banter ĉi tie, La ĉambro estas ĉiam plene de lertaj homoj, Ni ŝatas nian trinkaĵon kaj ni organizas justan nombron de amuza eventa – filmo nokto, Basbalaj vizitoj (Eĉ se ili estas Horora, Preskaŭ malbonaj teamoj).

Se mi povis sumon ĝi ĉiuj en unu vorto, Mi uzus la vortan “gvidantaron.” Gvidaj projektoj, Preni gvidan rolon en elkonstruanta la praktikon (IP, Konstruanta supre la teamon), Ktp.

Sed atendo! Tie estas pli! Kial alia labori ĉe Slalomo?

  • Rimarkinda unueco de intenco – ĉiu deziras kreski ĉi tiun aferon ekstere. “Ĉi tiu afero” estas la Nov-Jorka oficejo. Ĉiu estas sur tabulo kun tio ĉi.
  • Vento en viaj velaj – fratinaj oficejoj, Fratinaj praktikoj – Slalomo estas “plena servo” konsultanta organizon. Mi gvidas supre la SharePoint praktiko (“Praktika Area Konduko” en Slaloma lingvo). Mi havas fratinajn praktikojn ĉe 11 Aliaj Slalomaj oficejoj. Tiel eĉ kvankam mi estas reĝo kiom SharePoint estas koncernita ĉi tie ĉe Slaloma Nov-Jorko, Mi havas samulajn praktikojn en Chicago, Seatlo, Dallas, Atlanta, Boston, Ktp. De kiu mi povas tiri al subteno. ?i?? Vere la plej bona de #amba? mondoj ?? Grava memstareco #?i tie en Nov-Jorko sed aliro al tunoj de talento trans la organizo.
  • Vento en viaj vendoj (2) ?? Ni fari pli da ol SharePoint ?? Multe pli. Ni fari BI, CRM, UX, Komerca #konsulti?o, Movebla, #La?menda evoluado kaj aliaj. Ni estas bone #?e kruco vendanta inter ni mem kaj ni??E bono #?e #pentra?o ?? Kaj pli grave, Liveranta al ?? ??Ull servo?? Bildo por niaj klientoj. #Tio ?i estas precipe pledanta al mi. Mi estis ĉe multaj pli malgranda orgs laboranta sur SharePoint agadoj kaj ĉagreniĝis denove kaj denove denove ĉar ni estis kolombo holed kiel la “SharePoint homoj.” Tio ne okazas kun Slalomo kaj ni akiras fari pli da interesan laboron rezulte.
  • Loka modelo – neniu vojaĝado.
  • Longatempa kreskiga – Slalomo estis iranta gangbusters. Multa kreskiga kaj stabileco. Kresko ankaŭ signifas ke ni devas dungi gvidantojn hodiaŭ gvidi supre novajn teamojn kiel ni aldonas pli da klientoj kaj personaro subteni tiujn klientojn.

Mi povus daŭrigi, Sed mi verŝajne jam daŭrigis tro longe. Mi pensas min kaptis la esencon ĉi tie. Se vi estas pensanta pri ŝanĝanta laborpostenojn kaj tio ĉi rigardas bonan al vi, Lasita-a parolado.

Se vi estas feliĉa ĉe via nuna laborposteno – lasita-a parolado ĉiuokaze :). Mi estis en multaj lokoj kaj estis tre “feliĉa” ĉe la tempo. Slalomo estas malsama kaj mi bonvenigus ŝancon konvinki vin de tio.

</Fino>

undefinedAboni al mia blogo.

Sekvi min sur Pepi ĉe http://www.twitter.com/pagalvin

Rapide kaj Facile: Fiksita la Grandecon de Eroj en Lista Skatolo en Fenestra Vendejo App

En Fenestroj Entenas App mi estas kreanta, Mi deziras montri la uzanton diversaj informaj mesaĝoj.  Mi elektis ListBox kiel la ilo montri ĝin por ke ili povas scroll tra ili kaj ĉiuj tiu bona aĵo. 

La mesaĝoj estas informaj nura, Tiel tie?? Neniu bezono provizi #?iuj tiu kroma whitespace #?irka? ili ekde la uzanto neniam povas elekti ilin por io ajn.  La #defa?lta konduto de la ListBox provizas grandan kvanton de #rembura?o kaj mi deziris akiri liverita de ?i.  Puto ?. Vi povas?? Faras tiun specon de afero sur la ListBox rekte.  TAMEN, Vi povas fari ?in al la eroj vi aldonas:

        Privata Malplena AddGameStateLogMessage(Ŝnuro TheMessage)
        {
            TextBox t = Nova TextBox();
            T.Teksto = GameStateCounter   + ": " + TheMessage;
            T.TextWrapping = TextWrapping.Mantelo;
            T.MinWidth = 400;
            Dikeco thisPadding = Nova Dikeco(5, 0, 5, 0);
            T.Remburanta = thisPadding;
            T.FontSize = 12;

            ListBoxItem li = Nova ListBoxItem();
            Li.Kontenta = t;
            Li.MaxHeight = 25;
            ThisPadding = Nova Dikeco(5, 0, 5, 0);
            Li.Remburanta = thisPadding;

            GameStateLog.Eroj.Enigaĵo(0,Li);
        }

En la supra, I?? Kreanta TextBox kaj fiksanta #?ia fonton, #?Ia remburanta, Ktp.

Poste, Mi kreas ListBoxItem kaj fiksita #?ia enhavon al la formatted TextBox.

Fine, Mi insertas la ListBoxItem en la ListBox.  (Mi deziras montri plej lastatempaj #mesa?o #?e la supro de la listo, Tial la #Eniga?o(0,Li) #Anstata? simpla Aldoni() Alvokado.).

Mi estos tweaking #tio ?i iom #anta? I?? Vere #feli?a kun la ListBox konduto sed la skemo montrita sur estis tre fruktodona.  Espereble iu alia trovas ?in helpema.

</Fino>

undefinedAboni al mia blogo.

Sekvi min sur Pepi ĉe http://www.twitter.com/pagalvin