2008. május havi bejegyzések

Office 2007 ribbon ikonok

Korábban a SiteSource add-in fejlesztésekor futottam bele abba a problémába, hogy kellene egy jól mutató ikon az add-inhoz tartozó szalagra. Kedvenc ikonunkat kétféle képpen lehet megjeleníteni és a Visual Studioba beépített Ribbon Designer mindkettőre ad is lehetőséget:

Visual Studio Ribbon Designer

  1. Ha valamilyen saját képet szeretnénk használni, adjuk meg azt az Image tulajdonságban.
  2. Ha szeretnénk igazodni az Office 2007 dizájnjához, akkor pedig használhatjuk az OfficeImageId tulajdonságot.

Mivel a legminimálisabb dizájner vér sem csörgedezik az ereimben, ezért úgy döntöttem, hogy az Office beépített ikonjai közül fogok választani. Adott tehát a feladat, ki kell választani egy ikont és megadni annak az azonosítóját az OfficeImageId tulajdonságban.

A képek közötti válogatásban sokat segíthet a 2007 Office System Add-In: Icons Gallery, ami letölthető a Microsoft oldaláról. A neve teljesen félrevezető, miután letöltöttük és kicsomagoltuk, kapunk egy Office2007IconsGallery.xlsm fájlt, ami ahogy a neve is mutatja egy makrót tartalmazó Excel dokumentum. Ennek használatához először is az Excel Options ablakban kapcsoljuk be a Show Developer tab in the Ribbon opciót:

Excel: Show DeveloperTab

Majd nyissuk meg a letöltött fájlt és engedélyezzük a makrók futását, ami után a Developer tabon új ikonokat fogunk látni:

Ribbon Image Gallery

A kilenc galéria bármelyikét kinyitva rengeteg ikon közül válogathatunk, a nevüket pedig úgy tudhatjuk meg, ha föléjük visszük az egeret, vagy rájuk kattintunk:

Ribbon Image Gallery: HappyFace

A kicsomagolt Excel fájl közvetlenül letölthető innen is.

 

Technorati Tags: ,,,

SharePoint szerszámosláda – 2. rész

Január végén összegyűjtöttem egy listát a SharePointos fejlesztésekhez jól használható eszközökről, azóta azonban ismét sok mindenbe futottam bele, így ideje kiegészíteni a korábbi sort:

VSeWSS doksik és példák (Microsoft)

Az előző listában már szerepelt a Windows SharePoint Services 3.0 Tools: Visual Studio 2005 Extensions, aminek továbbra is csak a VS 2005-t támogató 1.1 verziója érhető el. (Nyárra ígérik az 1.2 verziót, ami már a VS 2008-at is ismerni fogja.) Most viszont megjelent hozzá egy Guide, amiben leírások és példák segítenek eligazodni a VSeWSS használatában.

Letöltés | Áttekintő cikk

STSADM poszterek (Kirk Stark, Microsoft)

Bár az STSADM neve szerint rendszergazdai eszköz, fejlesztők számára is nélkülözhetetlen. Kirk Stark készített néhány áttekintő posztert, ami segíthet eligazodni a parancssori paraméterek között.

Letöltés

STSADM Custom Extensions (Gary LaPointe)

Talán nem közismert, de az STSADM-hez készíthetőek kiterjesztések. Gary LaPointe SharePoint MVP ebbe vetette bele magát, és már 103 újabb parancsnál jár. Aki szeret automatizálni, annak mindenképp érdemes megnéznie legalább a parancsok listáját.

Honlap | Parancsok listája | Letöltés (WSP és forrás)

BPA for WSSv3 (Microsoft)

Szintén inkább üzemeltetői eszköz a Best Practices Analyzer for WSS 3.0, amit parancssorból indítva segíthet a szerver nem optimális beállításainak megkeresésében.

Letöltés

BDC Meta Man (LightningTools)

A Business Data Catalog hasznos funkció, de elég rémisztő megszerkeszteni az adatokat leíró definíciós fájlokat. A LightningTools cég készített egy BDC Meta Man nevű eszközt, ami ebben sokat segíthet, a Developer verzió ingyenesen tölthető le.

Honlap

CodePlex projektek

Érdemes néha körülnézni a CodePlexen, mert a nagy zaj ellenére lehet hasznos projekteket találni. Íme néhány SharePointtal kapcsolatos:

SharePoint 2007 Features (Scot Hillier)

23 feature-be csomagolt újdonság a SharePointhoz fejlesztőknek, rendszergazdáknak és végfelhasználóknak egyaránt. Számomra leghasznosabbnak a Unique column policy, a Minimal- és Placeholder master, Content type hierarchy, Print list, Log viewer, Toolbar manager és Debug config bizonyultak.

Letöltés | Projekt honlap

SharePoint Toolbox

Még kicsit kezdetleges, de ígéretesnek tűnő projekt, egymástól független eszközökkel. Űrlap alapú hitelesítés használatánál a Profile Import Tool hasznos lehet.

Letöltés | Projekt honlap

SmartPart for SharePoint (Jan Tielens)

Jan Tielens méltán népszerű SmartPartja is átköltözött a GotDotNetről a CodePlexre, itt még screencastot is találunk a használatáról.

Letöltés | Projekt honlap

SmartTools for SharePoint (Jan Tielens)

Jan másik projektje a SmartParttól függetlenül folyamatosan bővül, egyelőre három WSS bővítményt tartalmaz: What’s New Webpart, Autocomplete Text Field és Enhanced Site Actions. Érdemes figyelni, mert fokozatosan gyarapodik.

Letöltés | Projekt honlap

WSPBuilder (Carsten Keutmann)

Úgy látszik nem én vagyok az egyetlen, ami nagyon nem szeret a WSS solution fájlokhoz manifest és DDF fájlokat készíteni, majd MakeCabot futtatni. Ez az eszköz segít ezeknek a fájloknak az előállításában, sőt már VS projekt sablon is létezik hozzá (ld. a kapcsolódó blog bejegyzést).

Letöltés | Projekt honlap

SharePoint Manager 2007 (Carsten Keutmann)

Carsten másik projektje nagyon hasonlít az Ontolica SharePoint Exploreréhez, de támogatja a tulajdonságok módosítását is.

Letöltés | Projekt honlap

SharePoint Solution Installer

Ez az eszköz a WSP fájlok telepítését hivatott megkönnyíteni. Nagy előnye, hogy nem csak grafikus felületet biztosít a telepítéshez, hanem telepítés előtt képes bizonyos beállítások ellenőrzésére is.

Letöltés | Projekt honlap

Useful Sharepoint Designer Custom Workflow Activities (Paul Kotlyar)

A SharePoint Designer egészen jól használható támogatást nyújt workflow projektek fejlesztéséhez, de sajnos elég kevés activity-t biztosít a folyamatok megépítéséhez. Erről a projekt webhelyről további activity-ket tölthetünk le.

Letöltés | Projekt honlap

SharePoint Tips Utility Pack (Ishai Sagi)

Szintén MVP projekt, amely eredetileg ismétlődő feladatokat ellátó kódok összefogására készült, például segítségével rekurzívan törölhetünk webhelyeket, több helyen egyszerre módosíthatunk listákat, több webhelyre egyszerre tehetünk ki kijelzőket stb. Részletesen nem próbáltam, de bekerült a szerszámosládámba.

Letöltés | Projekt honlap

Word 2007 Content Control Toolkit (Matt Scott)

A Word 2007-ben bevezetett tartalom vezérlők adatkötésének konfigurálását segítő alkalmazás, melyet a Word dokumentum generálását bemutató cikksorozatban is használtunk.

Letöltés | Projekt honlap

 

Firefoxban nem jön be az oldal

Webfejlesztés közben nagyon gyakran kerül elő az a probléma, hogy az alkalmazásunk Internet Explorer alól tökéletesen megy, Firefoxban viszont nem jelenik meg semmi. Olyan, mintha nem működne a névfeloldás, vagy a böngésző nem találná meg a szervert. Még ilyen üzenetet is kaphatunk:

Kapcsolat megszakítva

A kiszolgálóhoz való kapcsolat alaphelyzetbe állt az oldal letöltése közben.
A hálózati kapcsolat megszakadt a kapcsolatfelvétel közben. Próbálja meg újra.

Ez különösen Vistán gyakori, előfordulhat a Visual Studio fejlesztői webszerverével, vagy akár IIS-sel is.

Létezik egy Firefox cannot load web sites but other programs can című Mozilla tudásbázis cikk, ami több megoldási lehetőséget is felsorol, nálam eddig mindig az IPv6 kikapcsolása volt a megoldás:

  1. Irány az about:config oldal.
  2. Keressük ki a network.dns.disableIPv6 beállítást és az értékét állítsuk true-ra.
  3. Indítsuk újra a böngészőt.

IPv6 kikapcsolása Firefoxban

Ugyanezt el lehet érni, ha a hosts fájlból töröljük a ::1 sort, de az az összes alkalmazásunkat érinteni fogja, nem csak a Firefoxot.

Technorati Tags: ,,

Twitter: miért kellene, hogy érdekeljen?

Twitter őrület van a regional directors levlistán, jönnek az érvek mellette és ellene is. Aki esetleg nem ismerné, ez egy micro-blogging szolgáltatás, amiben maximum 140 karakteres üzeneteket lehet közzétenni. Akinek még ez is kevés, nézze meg a Twitter in Plain English videót, valóban jól érthető, ráadásul rövid is.

Bevallom, hogy az utóbbi években gondosan megszabadultam minden "micro" és "instant" eszköztől. Messengert maximum "appear offline" módban használok, az Outlookban letiltom a felugráló üzeneteket, és Vista telepítés után az első dolgom, hogy kikapcsolom a sidebart. Mindezt azért, mert borzasztóan elvonják a figyelmemet, kifejezetten produktivitás-gyilkos játékok. Nem tudok úgy levelet írni, kódolni meg aztán végképp nem, hogy közben felugrik egy toast a jobb alsó sarokban, és kéretlenül beletolja az agyamba, hogy más mit kurjantott világgá. Ennek a módszernek az a hátránya, hogy amikor naponta egyszer "író" üzemmódból átmegyek "olvasóba", akkor persze nagy halom hír és blogbejegyzés vár elolvasásra.

A Twitter számomra ugyanez a kategória, újabb zajterhelés. Most, hogy ennyire előjött a téma ezen a levelezőlistán, erőt vettem magamon és jobban körülnéztem, hogy okos emberek mit kommunikálnak ezen a csatornán. Az eredmény: szinte kivétel nélkül arról van szó, hogy az illető hol van és éppen mit csinál. Tényleg kellene, hogy érdekeljen, hogy valaki a reptéren ül, szivarozik vagy késik a pizzája? Van persze kivétel, Zsolt például szakmai dolgokat ír a ch9-ről, de ezeket megkapom RSS-ben is és teljesen felesleges két helyen elolvasnom.

Mit írnak mások:

Mit gondoltok ti? Használjátok? Vajon csak én vagyok ennyire negatív?

 

IRQL_NOT_LESS_OR_EQUAL

Most, hogy elkészült a Windows XP SP3, sőt az MSDN és TechNet előfizetők már slipstreamelt változatot is letölthetnek, úgy gondoltam éppen ideje, hogy az otthoni gépemet újratelepítsem. Nem éppen mai hardverről van szó, az alaplap gyártója 2003-ban adott ki utoljára hardvert, mégis a gépen eddig stabilan ment az XP, mióta csak az SP2-vel slipstreamelt változatot feltelepítettem.

Szóval adott ez a gép, amin jól használható sebességgel, hiba nélkül ment minden hosszú évek óta, erre most a Windows XP telepítő IRQL_NOT_LESS_OR_EQUAL és DRIVER_IRQL_NOT_LESS_OR_EQUAL hibákkal elszállt többször is. Volt, hogy a formázást sem tudta megcsinálni, de volt, hogy még előbb kék halált dobott. Az apróbetűs részből kiderült, hogy az atapi.sys-t okolja, de kicsit furcsának találtam, hogy éppen most legyen meghajtó vagy memória probléma.

Hozzányúlva a géphez rögtön kiderült, hogy melege van, ráadásul szokatlanul melege. Úgy látszik a mindennapi használat során nem pörög ilyen intenzíven a diszk és a CD meghajtó, van ideje a ventillátoroknak érvényesülni vagy egyszerűen csak ez volt az első meleg nap az idén. A gép oldalát megbontva hiba nélkül felment a telepítő és azóta vígan fut az XP a maga 147MB-os commit charge értékével.

 

Technorati Tags: ,,

Word dokumentum generálása adatkötéssel – 6. rész: Végjáték

Az előző részekben megszerzett tudásunkat felhasználhatjuk arra, hogy kibővítsük a SharePoint lista elemekkel kapcsolatos szolgáltatásait. A WSS listák beépített funkciói közé tartozik, hogy kiválóan integrálódnak Excellel, Outlookkal és Access-szel, de a Word kimaradt a sorból. Pedig milyen szép is lenne, ha egy névjegyalbum valamelyik eleméből egy kattintással megcímzett levelet generálhatnánk! Nem is olyan nehéz…

Mivel a névjegyalbum típusú lista mezői ismertek, valamint azt is tudjuk, hogy hogyan néz ki nálunk egy levél címzése, ezért gyárthatunk egy Word sablont, meg némi extra kódot, ami a Word sablonba beírja a mezők értékeit. A kód egy ASPX oldalban fog futni, amit a _layouts mappába fogunk tenni és a felhasználó a névjegyalbum listában az egyes elemek helyi menüjéből tudja elérni.

Először tehát a korábbiak alapján készítsük el a Word dokumentumot, legyen benne minden olyan mező, amit egy levél címzésénél használni szoktunk: vezetéknév, keresztnév, város, irányítószám, utca és házszám, sőt még egy cég nevet is beletehetünk, mert olyan mező is van a névjegyalbumban. Akár így:

Sablon dokumentum

Második lépésként használjuk a korábban megismert Word 2007 Content Control Toolkitet, hogy hozzákapcsoljuk a tartalomvezérlőinket például az alábbi szerkezetű XML fájlhoz, ami a DOCX fájlon belül lesz elérhető:

    <?xml version="1.0" encoding="utf-8"?>
    <Contact xmlns="http://www.msdnkk.hu/samples/Contact">
        <FirstName>György</FirstName>
        <LastName>Balássy</LastName>
        <Company>MSDN Kompetencia Központ</Company>
        <City>Budapest</City>
        <Zip>1117</Zip>
        <Address>Magyar Tudósok krt. 2.</Address>
    </Contact>

Következő lépésben készítsünk egy ASPX oldalt, ahova a felhasználó el fog navigálni, amikor egy névjegyalbum listaelem szerkesztő menüjére kattint. Mivel az oldal a _layouts mappában fog lakni és application page lesz, származtassuk a LayoutsPageBase ősosztályból. Az oldal query string paraméterként meg fogja kapni a lista és a lista elem azonosítóját, amiből ki kell bogarászni egy SPListItem típusú objektumot, valahogy így (persze hibakezeléssel):

    private SPListItem GetListItem()
    {
        string listparam = this.Request.QueryString[ "listid" ];
        string itemparam = this.Request.QueryString[ "itemid" ];

        Guid listGuid = new Guid( listparam );
        int itemId = Int32.Parse( itemparam );
        SPList list = this.Web.Lists[ listGuid ];
        SPListItem item = list.Items.GetItemById( itemId );

        return item;
    }

Ebből az SPListItem példányból elő kell állítani a fenti XML-t, amihez én egy saját Contact osztályt használtam, ami a SharePointos típusból tudja inicializálni magát és kisorosítva épp a kívánt XML-t adja.

Meg kell írnunk azt a kódot, ami beteszi a sablonba az XML-t és visszaküldi a felhasználónak. Azt már korábban láttuk, hogyan tudunk egy XML partot betenni egy DOCX package-be. Itt most csak arra kell figyelnünk, hogy a sablon dokumentumunkból készítsünk egy munka másolatot, hiszen webes környezetben előfordulhat, hogy több felhasználó hívja meg ugyanezt az oldalt egyidőben. Ehhez feltételeztem, hogy a Word sablon dokumentumot egy WordExport nevű feature-ben fogom telepíteni. Így készül az ideiglenes munkafájl az SPUtility.GetGenericSetupPath metódus és a System.IO.Path osztály segítségével:

    string featureFolder = SPUtility.GetGenericSetupPath( @"TEMPLATEFEATURESWordExport" );
    string originalTemplatePath = Path.Combine( featureFolder, "Sablon.docx" );
    string currentTemplatePath = Path.GetTempFileName();
    File.Copy( originalTemplatePath, currentTemplatePath, true );

Miután beírtuk a tartalmat a munkafájlba, vissza kell küldenünk azt a felhasználónak, például így:

    this.Response.ClearContent();
    this.Response.ClearHeaders();
    this.Response.AddHeader( "content-disposition", "attachment; filename=export.docx" );
    this.Response.ContentEncoding = Encoding.UTF8;
    this.Response.TransmitFile( currentTemplatePath );
    this.Response.Flush();
    this.Response.Close();

És persze nem szabad elfeledkeznünk az ideiglenes állomány törléséről sem:

    File.Delete( currentTemplatePath );

Ezzel tehát megvan a kód, már csak telepítenünk kell, amihez természetesen előbb egy feature-t készítünk belőle! Ehhez először is egy feature.xml leíró fájlra lesz szükségünk:

    <?xml version="1.0" encoding="utf-8"?>
    <Feature xmlns="http://schemas.microsoft.com/sharepoint/" 
        Id="{63b1e30f-b4e9-4caa-b8ed-3552103f06c5}" 
        Title="Word export"
        Description="Lehetővé teszi névjegy lista elemeinek exportálását Word dokumentumba."
        Version="1.0.0.1"
        Scope="Web"
        Hidden="false"
        >
        <ElementManifests>
            <ElementManifest Location="WordExportPage.xml"/>
        </ElementManifests>
    </Feature>

A lényeg persze a WordExportPage.xml fájlba került, itt található ugyanis az exportálás menüpont hozzárendelése a névjegy lista (RegistrationId=105) elemeinek helyi menüjéhez (Location=EditControlBlock) és nézet oldali eszközsávjához (Location=DisplayFormToolbar):

    <?xml version="1.0" encoding="utf-8"?>
    <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
        <CustomAction 
            Id="MyDetailsLink"
            Title="Exportálás Wordbe"
            Description="Erre a linkre kattintva a lista elemet Word dokumentumba exportálhatja."
            RegistrationType="List"
            RegistrationId="105"
            Location="EditControlBlock"
            ImageUrl="/_layouts/images/doc16.gif"
            >
            <UrlAction Url="/_layouts/WordExport.aspx?listid={ListId}&amp;itemid={ItemId}" />
        </CustomAction>

        <CustomAction 
            Id="MyWordExportButton" 
            Title="Exportálás Wordbe" 
            Description="Erre a gombra kattintva a lista elemet Word dokumentumba exportálhatja."
            RegistrationType="List" 
            RegistrationId="105"     
            Location="DisplayFormToolbar"
            ImageUrl="/_layouts/images/doc16.gif"        
            >
            <UrlAction Url="/_layouts/WordExport.aspx?listid={ListId}&amp;itemid={ItemId}" />
        </CustomAction>
    </Elements>

Érdemes megfigyelni, hogy az UrlAction Url attribútumában a {ListId} és az {ItemId} tokenek segítségével tudjuk átadni az oldalunk számára szükséges paramétereket.

Ezt a feature-t aktiválva megjelenik a felhasználónak a névjegy lista elemein egy Exportálás Wordbe opció, melyre kattintva elnavigálhat az általunk készített WordExport.aspx oldalra, amely query string paraméterben megkapja, hogy a felhasználó melyik lista melyik elemére kattintott. Az oldal ezek alapján kibogarássza az eredeti lista elemet, majd fogja a sablon DOCX fájlt, készít róla egy másolatot a Temp mappába, beleírja a lista elem adatait, ezután visszaküldi a fájlt a felhasználónak, végül pedig letörni az ideiglenes állományt.

Mindezt szerver oldalon anélkül, hogy Office lenne telepítve a szerverre, vagy ismernünk kellene az Office objektum modelljét!

(Vége)