IZDELAVA SPLETLJAJA ZA KOLAB IN SHAREPOINT 2010 · 2018-08-24 · 2.1.3 Konfiguracija strežnika...

53
Denis Kukovič IZDELAVA SPLETLJAJA ZA KOLAB IN SHAREPOINT 2010 Diplomsko delo Maribor, september 2011

Transcript of IZDELAVA SPLETLJAJA ZA KOLAB IN SHAREPOINT 2010 · 2018-08-24 · 2.1.3 Konfiguracija strežnika...

Denis Kukovič

IZDELAVA SPLETLJAJA ZA KOLAB IN SHAREPOINT 2010

Diplomsko delo

Maribor, september 2011

I

Diplomsko delo univerzitetnega študijskega programa

IZDELAVA SPLETLJAJA ZA KOLAB IN SHAREPOINT 2010

Študent: Denis Kukovič

Študijski program: Računalništvo in informacijske tehnologije (UN)

Mentor: red. prof. dr. Viljem Žumer

Smer: /

Somentor: asist. mag. Aleš Zamuda

Maribor, september 2011

II

III

ZAHVALA

Zahvaljujem se mentorju red. prof. dr. Viljemu

Žumerju za pomoč in vodenje pri opravljanju

diplomskega dela. Prav tako se zahvaljujem

somentorju asist. mag. Alešu Zamudi.

Posebna zahvala velja staršem, ki so mi

omogočili študij in me podpirali pri izbranem

študiju.

IV

IZDELAVA SPLETLJAJA ZA KOLAB IN SHAREPOINT 2010

Ključne besede: računalniške arhitekture, spletno programiranje, Apache, KDE, Kolab, Kpart, SharePoint 2010, sistemi za skupinsko delo, spletljaj.

UDK: 004.43:004.738.5(043.2)

Povzetek

Pri pridobivanju, zbiranju in deljenju informacij, je že od nekdaj pomemben proces

izmenjave podatkov. Pri tem pa je nujno, da so podatki posredovani na varen način, v

čim krajšem času in točno določenemu naslovniku oziroma odjemalcu informacij.

Ljudje strmimo k temu, da imamo svoj vir podatkov urejen in pregleden. Za čim lažjo

izmenjavo in organizacijo podatkov, so nam na voljo različna programska orodja.

Sistemi za izmenjavo in organizacijo podatkov so največkrat vpeti v internih delovnih

okoljih podjetij. Dva izmed takšnih sta Kolab in SharePoint 2010. V tej diplomski

nalogi tako opisujemo značilnosti obeh orodij, za katera izdelamo še dve vgradni

razširitvi.

V

KOLAB AND SHAREPOINT 2010 WEB PART

IMPLEMENTATION

Key words: computer architecture, web programming, Apache, KDE, Kolab, Kpart, SharePoint 2010, groupware, webpart.

UDK: 004.43:004.738.5(043.2)

Abstract

In information retrivieval, collection, and sharing, an important process is data

exchange. However, it is imperative that data is transmitted in a secure manner, as

quickly and accurately to a specific recipient or client. People strive towards ensuring

that we have our source of data ordered and clear. To handle data across a working

group easier, several variants of software tools are available. Systems for exchange and

organization of data are mostly embedded in the internal working environment for

business. Two of these are Kolab and SharePoint 2010. In this diploma work

characteristics of these two are described and we demonstrate how to develop a

pluggable extension for both.

VI

VSEBINA

1 UVOD............................................................................................................................1

2 OPIS SORODNIH DEL...............................................................................................3

2.1 KOLAB.......................................................................................................................3

2.1.1 Apache .............................................................................................................3

2.1.2 KDE..................................................................................................................4

2.1.3 Konfiguracija strežnika Kolab.........................................................................4

2.1.4 Priprava okolja Kolab......................................................................................5

2.2 SHAREPOINT 2010......................................................................................................6

2.2.1 Priprava okolja................................................................................................7

2.3 OSTALA SORODNA ORODJA.............................................................................................8

3 IZDELANI SPLETLJAJ ZA KOLAB IN SHAREPOINT 2010 ..........................10

3.1 DODATEK ZA SISTEM KOLAB........................................................................................10

3.2 SPLETLJAJ ZA SHAREPOINT 2010.................................................................................13

3.2.1 Postopek kreiranja novega spletljaja za SharePoint 2010............................13

3.3 KOMUNIKACIJA MED KOMPONENTAMI IN ZNOTRAJ NJIH.....................................................16

3.4 KODIRANJE IN SHRANJEVANJE INFORMACIJ V PODATKE......................................................18

3.5 KOMPRESIJA..............................................................................................................21

4 REZULTATI...............................................................................................................22

4.1 TABELE PRIMERJAV.....................................................................................................22

4.2 PRIMERJAVA IZDELKOV ZA SISTEM KOLAB IN SHAREPOINT 2010......................................23

................................................................................................................................24

Slika 15: izgled spletljaja za SharePoint 2010 na lokalni strani. [22]..................24

................................................................................................................................24

Slika 16: dodatne nastavitve spletljaja za SharePoint 2010..................................24

5 SKLEP.........................................................................................................................25

Programska koda za spletljaj Kolab...........................................................................28

Programska koda za spletljaj SharePoint 2010. .......................................................33

literatura........................................................................................................................39

VII

SEZNAM SLIK

Slika 1: arhitektura storitev Kolab. [11].......................................................................5

Slika 2: spletna stran Microsoft Office SharePoint 2010.............................................8

Slika 3: struktura projekta v KDev4 pri gradnji Kdel-a...........................................11

Slika 4: poenostavljena hierarhija KDel-a. [19].........................................................11

Slika 5: povezava med primeri komponent in sistemom Kolab................................12

Slika 6: KDel-i na primeru aplikacije Kontakt...........................................................12

Slika 7: izbira šablone v Microsoft Visual Studio 2010..............................................14

Slika 8: izbira lokalne strani za izvrševanje projekta. [10].......................................14

Slika 9: Solution Explorer v Microsoft Visual Studio 2010.......................................15

Slika 10: dodajanje novega spletljaja na lokalno stran..............................................16

Slika 11: model komponente Kontakt. [24].................................................................18

Slika 12: arhitektura Akonadi. [24].............................................................................20

Slika 13: izdelan KDel...................................................................................................23

Slika 14: implementirani Imenik v aplikaciji Kontakt..............................................23

Slika 15: izgled spletljaja za SharePoint 2010 na lokalni strani. [22].......................24

Slika 16: dodatne nastavitve spletljaja za SharePoint 2010......................................24

SEZNAM TABEL

Tabela 3.1: primer kodiranja Base64..........................................................................20

Tabela 3.2: primerjava kompresije različnih algoritmov (vir podatkov: [24]).......21

Tabela 4.3: primerjava sistema Kolab in SharePoint 2010.......................................22

Tabela 4.4: strojne zahteve...........................................................................................22

VIII

UPORABLJENE KRATICE

ACL – Access Control List

API – Application Programming Interface

ASCII – American Standard Code for Information Interchange

ASP.NET – Active Server Pages

DCOP – Desktop COmmunication Protocol

ISS – Internet Information Services

IMAP – Internet Message Access Protocol

KDE – K Desktop Environment (Namizno okolje K)

KDEV4 – KDevelop 4 integrirano razvojno okolje

LDAP – Lightweight Directory Access Protocol

OS – Operacijski sistem

PIM – Personal information manager

PHP – PHP Hypertext Preprocessor

RSS – Really Simple Syndication

SLAPD – Standalone LDAP Daemon

SLURPD DAEMON – Stand-alone LDAP update replication daemon

SSL – Secure Sockets Layer

TLS – Transport Layer Security

WEBDAV – Web-based Distributed Authoring and Versioning

XML – Extensible Markup Language

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 1

1 UVOD

Izmenjava podatkov je iz dneva v dan večji zalogaj za posrednike ter tudi za prejemnike

različnih informacij. Podjetja, društva in ostale organizirane skupnosti težijo k temu, da so

njihovi podatki celovito organizirani na enem mestu. Dostop do njih pa naj imajo vsi

uporabniki, ki imajo za to potrebna pooblastila oziroma certifikate. V ta namen obstajajo

različni konkurenčni programi, ki podpirajo organiziranost in izmenjavo teh podatkov.

V takšnih orodjih največkrat operiramo z npr. seznami kontaktov, koledarji, opravili,

projekti, elektronskimi sporočili in blogi. Poljubno lahko vstavimo nove dodatke, ki so že

napisani in shranjeni v knjižnici. Lahko pa napišemo svoj dodatek (vstavek), ki ga

vključimo v knjižnico in nato predstavimo še v spletni obliki. Z usklajevanjem različnih

dinamičnih pogledov lahko postavimo spletno okolje za izmenjavo podatkov:

- skupnosti,

- delovne skupine,

- projekte in

- posamezne uporabnike. [4]

Večinoma gre za interno sodelovanje, ki je dostopno le neki skupnosti, lahko pa se projekt

objavi tudi javno. Računalniški sistemi za izmenjavo podatkov običajno delujejo interno,

zato se ustanove in podjetja največkrat odločijo za organizacijo svoje lastne skupine, ki

skrbi za ustrezno delovanje takšnega sistema ter omogoča vpeljevanje sistema v samo

podjetje in nadaljnjo podporo odjemalcem. Za učinkovit sistem za skupinsko delo

potrebujemo zmogljiv strežniški računalnik, vezan na omrežje. Konfiguracija okolja in

sistema poteka v administratorskem načinu.

Namen tega diplomskega dela je opraviti primerjavo med odprto kodnim orodjem Kolab in

komercialnim Microsoftovim SharePoint 2010. Oba podpirata enostavno izmenjavo

podatkov med odjemalci preko spletnega uporabniškega vmesnika. Cilj naloge je izdelati

razširitveni vstavek za Kolab in SharePoint 2010. Z opravljenimi meritvami in

primerjavami ponazorimo specifikacije posameznega sistema.

V drugem poglavju diplomskega dela opišemo, kaj predstavlja pojem spletno okolje za

izmenjavo in organizacijo podatkov. Narejen je pregled nad aktualnimi sorodnimi

spletnimi okolji za izmenjavo in organizacijo podatkov. V tretjem poglavju predstavimo

izdelan dodatek za Kolab in SharePoint 2010. Sledijo opisi posameznih tehnologij in

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 2

storitev, ki so vključene v Kolab in SharePoint 2010 ter priprava okolja za pravilno

delovanje le teh. Četrto poglavje diplomskega dela zajema celovit pregled in primerjavo

med obema sistemoma za izmenjavo in organizacijo podatkov. Osredotočimo se na

najdene razlike pri implementaciji dodatkov v komponente posameznega sistema. V petem

poglavju sledi zaključek, nato so vstavljene priloge, nakar je navedena še literatura.

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 3

2 OPIS SORODNIH DEL

Sistemsko izmenjevanje in organizacija podatkov je široko področje, zato obstaja veliko

različnih programskih rešitev [14]. V tem poglavju spoznamo konkurenčna orodja

omenjenega področja.

2.1 Kolab

Kolab je bil ustvarjen za potrebe nemške zvezne pisarne za varovanje informacij1 v letih

2002-2004. [19] Je skupek različnih orodij, ki so med sabo povezana. Povezuje e-

sporočila, koledar, kontakte, in opravila. Podpira različna okolja odjemalcev (KDE2 in

Outlook3). Glavne komponente, potrebne za delovanje strežnika Kolab so OpenLdap4,

Postfix5, Cyrus IMAP6, Apache7, Sasl8 in OpenSSL9. [18, 13]

2.1.1 Apache

Apache je komponenta, ki se uporablja za administratorski spletni vmesnik, kot tudi za

zagotavljanje dostopa WEBDAV10 do informacij za poštne odjemalce. Kolab uporablja

1 Federal Office for Information Security (BSI) – nemška vladna agencija, ki skrbi za upravljanje

računalniške in komunikacijske varnosti

2 K Desktop Environment (KDE) – platforma, ki komunicira z aplikacijami na različnih operacijskih

sistemih

3 Outlook – urejevalnik za e-pošto in osebne podatke

4 OpenLDAP – odprto kodna implementacija za aplikacijski protokol LDAP

5 Postfix – odprto kodni posrednik pošte

6 Cyrus IMAP – strežnik za dostavo pošte lokalnemu prejemniku

7 Apache – spletni strežnik za HTTP

8 Sasl – okolje za varnostno preverjanje pristnosti in podatkovne varnosti v internetnem protokolu

9 OpenSSL – odprto kodna implementacija SSL in TLS kriptografskega protokola za varno komunikacijo na

spletu

10 WEBDAV – protokol, ki omogoča uporabniku brati in pisati v dokumente na svetovnem spletu

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 4

Apache skupaj s PHP11, da zagotovi polno funkcionalnost v skupnem sistemu s spletno

pošto. [23]

2.1.2 KDE

KDE je prosto dostopno namizno okolje oz. platforma, ki komunicira z operacijskim

sistemom. KDE sestavljajo delavna okolja, platforma in aplikacije. GNOME12 je sorodni

projekt, vendar KDE velja za najbolj razširjeno namizno okolje v operacijskem sistemu

Linux. V našem primeru smo uporabili KDE 4.7, ki teče na operacijskem sistemu Linux,

distribucije Kubuntu13.

2.1.3 Konfiguracija strežnika Kolab

Da bi strežnik Kolab pravilno deloval, je potrebna ustrezna konfiguracija različnih storitev.

Kot osrednji storitvi sta slapd14 in LDAP15. Slapd je primer imeniškega strežnika LDAP, ki

teče na različnih Unix platformah. Omogoča nam, da v naš imenik shranimo karkoli.

Strežnik LDAP vsebuje imeniško drevo, z drugimi besedami hierarhično strukturo. V

sistem lahko povežemo več strežnikov LDAP med sabo. Storitev LDAP išče odgovore na

zahteve oziroma vprašanja odjemalca. Imeniški strežnik zahteva od odjemalcev njihovo

identiteto, kar zagotavlja večjo varnost pred nepooblaščenim vstopom v sistem.

Sistem Kolab deluje v ozadju kot pomožni strežnik tipa LDAP. Slapd izpolnjuje zahteve

LDAP in je tesno povezan s storitvijo slurpd16. Storitev slurpd je namenjena za to, da

obdrži pomožni LDAP strežnik usklajen z glavnim strežnikom LDAP.

Kolab v ozadju prejme posodobitve LDAP. Posledica so ustvarjene nastavitvene datoteke

vseh storitev. Predložene datoteke se izpolnijo s podatki LDAP in so nameščene glede na

strežniške nastavitve lokacije datotek. V naslednjih Cyrus IMAPD instalacijskih korakih je

11 PHP – PHP Hypertext Preprocessor – orodja za osebno spletno stran – odprto kodni programski jezik

12 GNOME – namizno okolje, ki komunicira s komponentami operacijskega sistema

13 Kubuntu – različica operacijskega sistema Ubuntu, z namizjem KDE

14 slapd – storitev, ki sprejema povezave LDAP na vseh vratih; odzove se operacijam LDAP

15 LDAP – imeniški storitveni protokol, ki teče preko TCP/IP; namenjen je shranjevanju vpisov, v katerih se

nahaja zbirka atributov s svojimi imeni, tipi in vsebovanimi vrednostmi (npr. atribut mail vsebuje vrednost

[email protected])

16 slurpd – oskrbuje storitvene primerke slapd; odgovoren za razdelitev sprememb, ustvarjenih v glavni

podatkovni bazi slapd vsem ostalim primerkom slapd

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 5

potrebno sprejeti dodajanje, odstranjevanje in spreminjanje uporabnikov ter map v skupni

rabi ali ACL17.

Program, ki poganja storitev Kolab, teče v neskončni zanki zaradi posodobitev LDAP. S

tem se ohranja direktorij LDAP sinhroniziran s preostalo Kolab konfiguracijo. [11] Opisan

potek izvajanja storitev prikazuje slika 1.

Slika 1: arhitektura storitev Kolab. [11]

2.1.4 Priprava okolja Kolab

Opisan način instalacije in nastavitev v tem poglavju se lahko v splošnem razlikuje od naše

uporabljene distribucije Kubuntu 10.04, kjer je nameščeno namizno okolje KDE 4.7. Ker

obstaja več variant namestitve strežnika Kolab, smo naredili več preiskusov različnih

variant. Za nas najustreznejša varianta namestitve je bila Kolab-2.2.4 v okolju OpenPKG.

Za pripravo okolja ukaze izvedemo z uporabo terminala in dodeljenimi pravicami

uporabnika root.

V začasnem direktoriju imamo shranjen arhiv, ki ga pridobimo v vrstici 3.

1:# mkdir /tmp/kolabtemp2:# cd /tmp/kolabtemp3:# wget -r -l1 -nd --no-parent http://files.kolab.org/server/release/

kolab-server-2.2.4/sources/

V tretji vrstici imamo tri parametre: prvi parameter –r pomeni rekurzivno pridobivanje,

drugi parameter -nd onemogoči izgradnjo hierarhičnih imenikov, tretji --no-parent je

namenjen temu, da se ne vračamo na starševski imenik.

Sistem Kolab namestimo v privzeti imenik, v priviligiranem uporabniškem načinu.

1:# mkdir /kolab17 ACL – seznam z dovoljenji, priložena posameznim varovanim predmetom

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 6

2:# sh install-kolab.sh 2>&1 | tee /root/kolab-install.log

Začetna konfiguracija strežnika imenovana bootstrap zahteva vpis imena domene, e-pošte

in kreiranje certifikata. Certifikat omogoča odjemalcu, da ob preverjanju pristnosti lahko

dostopa do posameznih storitev, ki jih prikazuje slika 1.

1:# /kolab/sbin/kolab_bootstrap -b

Za zagon strežnika so potrebne storitve: Amavisd18, Apache, Clamav19, Imapd20, Kolab21,

OpenLDAP, OpenPKG22, Postfix, ProFTPd23, Sasl in Spamassassin24.

1:# /kolab/bin/openpkg rc all start

S tem je začetna konfiguracija Kolab strežnika zaključena. [12]

2.2 SharePoint 2010

SharePoint 2010 je izdelek podjetja Microsoft, ki vključuje:

- Microsoft SharePoint Foundation 201025,- SharePoint Server 201026,- SharePoint Online27,- SharePoint Designer 201028,

18 Amavisd – vmesnik za preverjanje virusov in nadležne pošte

19 Clamav – prosto dostopen antivirusni program, ki deluje na različnih platformah

20 Imapd – internetni protokol na aplikacijskem sloju, omogoča dostop do e-pošte na oddaljenem strežniku

21 Kolab – strežnik za izmenjavo in organizacijo podatkov

22 OpenPKG – odprto kodni upravljalnik sistemskih paketov, za avtomatizirano nalaganje, nadgradnjo,

konfiguracijo in odstranjevanje nameščenih paketov; preprečuje medsebojno neujemanje verzij paketov

23 ProFTPd – FTP strežnik za operacijski sistem Unix

24 Spamassassin – računalniški program za filtriranje nadležne pošte (ang. spam)

25 Microsoft SharePoint Foundation 2010 – temeljna tehnologija za vsa SharePoint-ova mesta, brezplačna

različica je namenjena uvajanju v prostorih podjetja

26 SharePoint Server 2010 – strežniški izdelek, ponuja dosledno in poznano ogrodje za sezname in knjižnice;

od SharePoint Foundation se razlikuje v dodatnih funkcijah in boljši zmogljivosti

27 SharePoint Online – storitev v oblaku, gosti jo Microsoft; ni potrebno naložiti SharePoint Server

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 7

- SharePoint Workspace 201029.

Izdelki se medsebojno razlikujejo v namembnosti in načinu uporabe sistema za izmenjevanje in organizacijo podatkov. [14, 16]

2.2.1 Priprava okolja

Za začetek je potrebno upoštevati zahteve za postavitev strežnika SharePoint 2010, ki so

opisane v tabeli 4.2. Spodaj pripravljeni seznam potrebne programske opreme je namenjen

postavitvi strežnika za namene testiranja in razvijanja programske opreme na spletu

(spletljajev) v operacijskem sistemu Windows 7. [6]

Potrebna programska oprema: - Windows6.1-KB976462-v2-x64.msu30,- Windows6.1-KB982307-x64.msu31,- SharePointFoundation.exe ali SharePoint Server 2010 (setup.exe)32,

- Microsoft Sync Framework (Synchtonization.msi)33,

- SQL Server Native Client (sqlncli.msi)34,

- Windows Identity Foundation (Windows6.1-KB974405-x64.msu)35,

- Chart Controls (MSChart.exe)36 ni priporočljivo za SharePoint Foundation 2010,

28 SharePoint Designer – brezplačen program, za gradnjo spletnih strani

29 SharePoint Workspace 2010 – program namenjen ustvarjanju vsebine tudi takrat, ko ni dostopa do

omrežja; vsebina se sinhronizira naknadno

30 Windows6.1-KB976462-v2-x64 – popravek za Windows Foundation Classes (WFC): SharePoint Shared

Services Roll-up

31 Windows6.1-KB982307-x64.msu – posodobitev za .NET Framework, priskrbi dodatne značilnosti in

razširi funkcionalnost

32 SharePointFoundation.exe ali SharePoint Server 2010 – izbrani Microsoftov izdelek

33 Microsoft Sync Framework – celovita sinhronizacija platforme, omogoči sodelovanje in dostop do

aplikacij, storitev in naprav v nepovezanem načinu

34 zbirka samostojnih namestitvenih paketov za SQL Server 2005

35 Windows Identity Foundation – poenostavi dostop z vgrajeno varnostno logiko, ki ga potrebujejo razvijalci

v orodju .NET

36 Chart Controls – namestitev novih naborov krmilnih gradnikov v ASP.NET

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 8

- SQL Server Analysis Services – ADOMD.Net (SQLSERVER2008_ASADOMD10.MSI)37 ni priporočljivo za SharePoint Foundation 2010.

Sledi postopek nameščanja potrebne programske opreme in predzahtev. Postopek je

podrobneje opisan v [17].

Po opravljeni konfiguraciji je na lokalnem naslovu gostitelja ali localhost38 vidna

privzeta spletna stran SharePoint 2010. Slika 2 prikazuje že urejeno spletno stran z

dodanimi spletljaji.

Slika 2: spletna stran Microsoft Office SharePoint 2010.

2.3 Ostala sorodna orodja

Kolab in SharePoint 2010 nista edina konkurenta v sistemih za izmenjavo in organizacijo

podatkov. Za hiter razvoj na področju izmenjave in organizacije podatkov so zagotovo

dodatno zasluženi odprto kodni in prosto dostopni konkurenčni izdelki s podobnimi

rešitvami. Naštejmo nekaj sorodnih prosto dostopnih orodij:

- BitNami39,

37 SQL Server Analysis Services – del Microsoft SQL Server-ja, sistem za upravljanje podatkovnih baz –

podatkovni dobavitelj

38 localhost – ime za lokalni naslov 127.0.0.1

39 BitNami – projekt, ki proizvaja odprto kodne programske pakete za spletne aplikacije

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 9

- Clear Foundation40,- Citadel41,- Zimbra42,- Open-XChange43,- OpenGroupware44 in- Trac45.

Področje izmenjave in organizacije podatkov je zelo široko v smislu namembnosti, kar

se pozna tudi pri vseh naštetih konkurenčnih izdelkih. Večina teh izdelkov je odprto

kodnih in prosto dostopnih.

40 Clear Foundation – odprto kodno orodje, ki zagotavlja varnost, filtriranje in upravljanje; namenjeno je

neprofitnim organizacijam in posameznikom

41 Citadel – odprto kodna rešitev za e-pošto in sodelovanje; namestitev vsebuje e-pošto, koledar, imenik,

oglasne deske, wiki, podporo za več domen, takojšnje sporočanje in spletni vmesnik

42 Zimbra – odprto kodni ali komercialni izdelek, ki sestoji iz odjemalca in strežnika; vključuje komponento

za sinhronizacijo kontaktov, pošte in koledarja

43 Open-XChange – odprto kodni projekt za razvoj in sodelovanje; omogoča npr. e-pošto, koledar, imenik

44 OpenGroupware – odprto kodna skupnost, ki vabi v svoj krog nove razvijalce, da pripomorejo k boljši

prepoznavnosti in uspešnosti; na voljo so aplikacije: upravitelj kontaktov, skupni koledar, plan virov,

upravitelj opravil, e-poštni odjemalec, projekti in dokumenti, novice, orodje za sinhronizacijo podatkov,

vmesnik za nastavitve, upravitelj uporabnikov

45 Trac – odprto kodni projekt, orodje za upravljanje projekta in sledenje hroščev (ang. bug-tracking); njegove

posebnosti so: mejniki, wiki, RSS in izvoz iCalendar

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 10

3 IZDELANI SPLETLJAJ ZA KOLAB IN SHAREPOINT 2010

V tem poglavju predstavljamo razširitveni vstavek oz. spletljaj46, ki smo ju razvili za Kolab

oziroma SharePoint 2010. Vizualne elemente vstavkov smo povezali s programsko kodo,

ki je napisana v C++ in C#.

3.1 Dodatek za sistem Kolab

Sistem Kolab deluje v operacijskem sistemu Linux, v okolju KDE. Komponente, ki ga

združujejo so zgrajene iz tako imenovanih KDel-ov47 (ang. KPart-ov). Primer je

komponenta Kontakt48 (ang. Kontact), kjer so združeni npr. pošta, kontakti in koledar.

Z razvojnim okoljem Kdev4 lahko integriramo svoj KDel v izbrano komponento, ki je

napisan v programskem jeziku C++ [20], tako da ga povežemo preko knjižnic

programskega sistema Qt. Za izdelavo lastnega KDel-a je pripravljena šablona KDE 4

KPart Application.

V direktoriju imenik/src se nahajajo datoteke, ki jih bomo potrebovali pri gradnji KDel-

a. CMakeLists.txt, nam poveže glavne programe s knjižnicami in jih zgradi v izvršljivo

aplikacijo. Glavni program je v imenik_part.cpp, kjer imamo pripravljen primerek

razreda za izpis na zaslon. Knjižnica imenik_part.h vključi kodo, ki doda

funkcionalnost našemu KDel-u. V imenik_part.desktop se nahaja opis KDel-a.

Omenjene datoteke prikazuje slika 3.

KDel kot takšen nam predstavlja samostojno aplikacijo, ki jo lahko implementiramo v

ostale komponente. Za implementacijo našega KDel-a v komponento Kontakt moramo v ta

namen implementirati še svoj podrazred, imenovan Kontact::Plugin. Izdelamo objekt

kontact_imenikpplugin.so in imenikp_plugin.desktop.

46 Spletljaj – vgradna komponenta sistema za serviranje dela spletišča

47 KDel – je komponenta v KDE namiznem okolju, ki se uporablja v npr. Koffice (npr. aplikacija Kontact) in

v spletnem brskalniku Konqueror

48 Kontakt – osebni upravitelj informacij in skupno orodje za KDE; podpira koledarje, kontakte, beležke,

opomnike, novice in e-pošto; v Kontakt so lahko vpete različne aplikacije, npr. KPošta, KImenik, KDel

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 11

Slika 3: struktura projekta v KDev4 pri gradnji Kdel-a.

Datoteka CMakeLists.txt poveže ustvarjen vmesnik s prej ustvarjeno knjižnico za

KDel. Vmesnik namesti v že obstoječ strežniški direktorij komponente Kontact. Tako kot

KDel, tudi vmesnik potrebuje svoj opis, ki se nahaja v imenikp_plugin.desktop. V

imenikp_plugin.h je tokrat potrebno vstaviti razred ImenikpPlugin za prikaz

objekta. Slika 4 prikazuje hierarhičen položaj kreiranega vmesnika, ki ga določa

(KParts::ReadOnlyPart49). [21]

Slika 4: poenostavljena hierarhija KDel-a. [19]

V glavnem programu našega podrazreda imenikp_plugin.cpp se ustvari povezava s

KDel-om ter omogoči njegov prikaz. Razvidno je, da izdelani KDel nima neposredne

povezave s sistemom Kolab, temveč posredno preko komponent, ki komunicirajo preko

49 KParts::ReadOnlyPart – osnovni razred za prikaz dela (ang. part); skrbi za transparentnost omrežja

odjemalca

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 12

tega sistema z drugimi komponentami. To je tudi prednost, saj lahko obstoječ KDel

vključimo v katero koli drugo komponento. Slika 5 kaže na to, kakšna je povezava med

strežnikom Kolab, okoli katerega so storitve, ki so nujno potrebne za nemoteno delovanje

sistema za izmenjavo in organizacijo podatkov in posamezno komponento. V našem

primeru so to Kontakt, Spletni brskalnik in Upravljalec datotek.

Slika 5: povezava med primeri komponent in sistemom Kolab.

Povezave med posamezno komponento npr. Kontakt in KDel-i Imenik, Pošta, Koledar in

Opravila, kaže slika 6.

Slika 6: KDel-i na primeru aplikacije Kontakt.

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 13

3.2 Spletljaj za SharePoint 2010

Ločimo dva tipa spletljajev:- vizualni,- standardni50 ASP.NET.

Razlika med vizualnim in standardnim je ta, da imamo pri vizualnem spletljaju vizualni

vmesnik, ki omogoča gradnjo spletljaja. Implementacija tega spletljaja zajema ascx uporabniški krmilni gradnik51 vizualnega spletljaja, gostujoč znotraj standardnega

ASP.NET spletljaja. Razred spletljaja se podeduje iz imenskega prostora uporabniškega

nadzora. [2]

Osredotočili se bomo na izdelavo vizualnega spletljaja za SharePoint 2010. Za

implementacijo lastnega spletljaja je potrebno imeti nameščeno integrirano delovno okolje

Microsoft Visual Studio 2010. Ta nam omogoča gradnjo vizualnega spletljaja za

SharePoint 2010, pregled napak in namestitev projekta direktno na delujoč strežnik.

3.2.1 Postopek kreiranja novega spletljaja za SharePoint 2010

Omogočimo zagon Microsoft Visual Studio 2010 kot skrbnik, da zadostimo raven pravic,

ki jih potrebujemo v nadaljevanju. V glavnem meniju izberemo nov projekt (ang. New

Project), nato v že pripravljenih šablonah (ang. Templates) poiščemo SharePoint 2010. Na

sliki 7 vidimo okno, ki se pojavi ob kreiranju novega projekta, kjer lahko izbiramo med

različnimi tipi šablon.

V primeru, ko izberemo SharePoint šablono, nas v naslednjem koraku vodič vpraša, katero

lokalno stran želimo uporabiti za izvrševanje projekta. Praktičen prikaz je viden na sliki 8.

V Solution Explorer-ju se prikažejo že generirane datoteke, kot vidimo na sliki 9.

Spodaj so opisani glavni elementi, ki smo jih izdelali. V datoteki Elements.xml se

nahaja koda z metapodatki. Izbrana vrstica predstavlja lastnost, v kateri navedemo ime

skupine, v kateri se bo spletljaj nahajal. To prikazuje vrstica 5, medtem ko vrstice 1, 2, 3 in

4 opisujejo metapodatke.

1. <?xml version="1.0" encoding="utf-8"?>2. <Elements xmlns="http://schemas.microsoft.com/sharepoint/" >

50 standardni – je bolj omejen od vizualnega spletljaja; funkcionalnost potegni in spusti ne deluje, nekateri

elementi ne delujejo v določenih spletnih brskalnikih (npr. spustni meni ni prikazan v Firefox brskalniku)

51 krmilni gradnik – spletni krmilni gradnik; omogoča dodajanje funkcionalnosti spletni strani

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 14

3. <Module Name="VisualWebPart1" List="113" Url="_catalogs/wp">4. <File Path="VisualWebPart1\VisualWebPart1.webpart" Url="Moj

spletljaj_VisualWebPart1.webpart" Type="GhostableInLibrary" >5. <Property Name="Group" Value="MojiWP" />6. </File>7. </Module>8. </Elements>

Slika 7: izbira šablone v Microsoft Visual Studio 2010.

Slika 8: izbira lokalne strani za izvrševanje projekta. [10]

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 15

Slika 9: Solution Explorer v Microsoft Visual Studio 2010.

Datoteka VisualWebPart1.cs vsebuje kodo, ki določa dodatne nastavitve v lastnostih

spletljaja. [9] Datoteka VisualWebPart1.webpart je dokument XML (Extensible

Markup Language), ki opisuje naš spletljaj z lastnostmi, kot sta naslov in opis, kar je

razvidno v vrsticah 10 in 11. Vrstica 6 vsebuje privzeto sporočilo, ki ga javi sistem, če

pride do napake v povezavi s spletljajem. Vrstica 1 opisuje različico in način kodiranja

dokumenta. Vrstica 3 ima privzeto povezavo na spletni naslov, vrstica 5 pa hrani

metapodatke. Preostale vrstice 2, 4, 7 – 9 ter 12 – 15 so začetne in končne značke

posameznih struktur.

1: <?xml version="1.0" encoding="utf-8"?>2: <webParts>3: <webPart xmlns="http://schemas.microsoft.com/WebPart/v3">4: <metaData>5: <type name="Moj_spletljaj.VisualWebPart1.VisualWebPart1,

$SharePoint.Project.AssemblyFullName$" />6: <importErrorMessage>$Resources:core,ImportErrorMessage;</importErrorMessage>7: </metaData>8: <data>9: <properties>10: <property name="Title" type="string">Imenik</property>11: <property name="Description" type="string">Moj spletljaj, ki omogoča iskanje

zaposlenih v internem imeniku</property>12: </properties>13: </data>14: </webPart>15: </webParts>

V datoteki VisualWebPart1UserControl.ascx smo zapisali kodo vizualnih

elementov. Datoteka VisualWebPart1UserControl.ascx.cs je namenjena

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 16

logičnemu delu aplikacije, ki je nameščen v ozadju vidnega spletljaja.

VisualWebPart1UserControl.ascx.designer.cs, je zadnji element, ki vsebuje

avtomatsko generirano kodo. Ustvarjen projekt prevedemo, če je semantično in sintaktično

pravilno zgrajen, nato ga namestimo na našo lokalno stran. S tem smo ustvarili spletljaj, ki

se nahaja v skupini MojiWP, definirani v Elements.xml. Da bo spletljaj viden

odjemalcem, ga dodamo na stran. Ob dodajanju spletljaja se določi tudi njegova pozicija

(glej sliko 10). [15, 8]

Slika 10: dodajanje novega spletljaja na lokalno stran.

V primeru, kot je opisan, je spletljaj avtomatsko naložen na strežniku v že omenjeni

skupini. Spletljaj, ki ga izvršujemo direktno na lokalno stran, je dosegljiv le v času razvoja.

Kadar nameščamo novozgrajeni spletljaj, ki ga je potrebno najprej naložiti na strežnik. [7]

3.3 Komunikacija med komponentami in znotraj njih

Komponente KDE potrebujejo možnost komuniciranja med sabo. Zagotovljeno mora biti

pošiljanje in prejemanje ukazov in obvestil posameznim komponentam ali pa naboru

poslušalcev. Prenos ukazov in obvestil med komponentami in aplikacijami odjemalca je

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 17

lahko narejen s protokolom IPC52 (Inter-Process Communication). Komunikacija med

komponentami in okoljem je odvisna tudi od posrednika, ki shranjuje podatke, to je

strežnik Akonadi53. Več o tem strežniku v poglavju 3.4. [24]

Ob vpetju aplikacije v komponento morajo veljati standardi in ustrezna kompatibilnost

vizualnih gradnikov. Za vpetost aplikacije v komponento poskrbi API. Ta vključuje ikone

in navigacijske menije ter določa njihovo pozicijo. Prav tako dodatek API zagotavlja

funkcionalnost potegni in spusti. Zato, da lahko samostojno aplikacijo vključimo v

komponento, mora biti združljiva z dodatkom Kontakt, ki je posrednik med aplikacijo in

okoljem, v katerega jo vpnemo. Ta posrednik razlaga funkcionalnost aplikacije, ki je

postala vpeta z implementacijo dodatka Kontakt API in jedrom Kontakt API.

Komunikacije med komponentami so narejene preko DCOP54 skozi urejen standardni

vmesnik. Komunikacija med procesi je posredovana s pomočjo posebnega procesorskega

strežnika. Strežnik se vključi z vsako namizno sejo. Kadar se želijo aplikacije

sporazumevati, pošljejo zahtevo strežniku DCOP, kateri odgovori s posredovanjem

zahteve na njeno lokacijo.

Serializacija podatkov je narejena z uporabo C++ prenosa operatorjev, povezanih z

osnovnimi podatkovnimi tipi v Qt. Uporablja se kompakten binarni format, ki je skrit

uporabniku DCOP-a. Če uporabimo svoj podatkovni tip, ki bo poslan preko DCOP, se

ustvari nov prenos operatorjev, ki morajo biti vključeni. V našem primeru, ko opisujemo

komunikacije v komponenti Kontakt, je DCOP glavni mehanizem za komunikacijo med

komponentami. Uporabljen je za zunanjo aplikacijsko komunikacijo, ki temelji na

konfiguraciji dodatka Kontakt, kar pomeni, da interakcija aplikacij deluje kot zunanji

proces z njihovim lastnim uporabniškim vmesnikom (primer aplikacije je slika 13) ali pa

deluje vpeta v komponento Kontakt kot notranji proces (primer vpete aplikacije prikazuje

slika 14). [5] Slika 11 prikazuje modela komponente Kontakt in razmerja med

posameznimi okolji.

52 IPC – nabor metod za izmenjevanje podatkov med več nitmi in enim procesom

53 Akonadi – strežniška storitev, ki skrbi za shranjevanje in pridobivanje podatkov iz shrambe

54 DCOP – namizni komunikacijski protokol; komunikacijski sistem med procesi in komponentami; glavni

namen je deljenje opravil med posameznimi aplikacijami

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 18

Slika 11: model komponente Kontakt. [24]

3.4 Kodiranje in shranjevanje informacij v podatke

Pri upravljanju sistema za izmenjavo in organizacijo podatkov se število podatkov

neprenehoma povečuje. Največji vpliv na to imajo e-sporočila, dogodki, kontakti, beležka

in blogi. Shranjevanje vseh teh tipov podatkov ni preprosto. Ne gre samo za shranjevanje

tekstovnih datotek, temveč tudi za binarne oblike datotek (npr. fotografija ali priponka v

sporočilu), ki spremljajo te tipe. Pri shranjevanju je pomembno vedeti, kako bomo

shranjene podatke najlažje našli dovolj hitro, kakšen je potreben dostop do njih ter kako

komunicirati med shrambo in odjemalcem.

V okolju KDE 3 ima vsaka aplikacija svojo lastno metodo shranjevanja in pridobivanja

podatkov, kar se je izkazalo kot slabost. Nekatere aplikacije shranjujejo podatke v eno

samo datoteko. Rezultat je slabša zmogljivost, še posebej pri dokumentih, kjer imamo

istočasen dostop do njih. Včasih se zgodi, da se enaki podatki v pomnilniku ponavljajo, to

pa povzroči preveč izgubljenega prostora. Povedano v tehnični obliki, KDE 3 uporablja

KResources55, kjer je vsaka oblika shranjenih podatkov implementirana z razredom

55 KResources – ogrodje, ki pove KDE, kako ravnati s komponentami

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 19

KResource. Ta vsebuje spletni model, ki pričakuje, da je shramba podatkov vedno na

voljo. Kot primer vzemimo, da želi odjemalec odpreti svoj poštni predal, ki uporablja

IMAP56, kar predstavlja problem, saj je odjemalec lahko v nepovezanem načinu (ang. off-

line), in tako storitev nima dostopa do zahtevanega strežnika. Rešitev bi bila na novo

napisan model, ki omogoča uporabo aplikacij tudi v nepovezanem načinu. KResources

niso ustrezno ločeni od njihovih povezanih predmetov.

Opisan način shranjevanja in pridobivanja podatkov iz stare različice, KDE 3, ni primeren

za upravljanje s sistemi za izmenjavo in organizacijo podatkov. Akonadi57 je rešitev vsem

tem nezadostnostim za novo različico, KDE 4. Je skupen upravitelj za dostop do podatkov

PIM58 in namizja odjemalca. Vsi podatki so dostopni preko centrale na način, ki omogoča

možnost sinhronega dostopa, zaklepanja in zmanjševanja uporabe pomnilnika. Akonadi je

samostojen strežnik, ločen od aplikacij odjemalca, kar pomeni, da ga lahko uporabljajo

aplikacije vseh vrst. V uporabo je prišel z namiznim okoljem KDE 4, kar pomeni, da smo

ga lahko v našem testnem okolju tega diplomskega dela tudi uporabljali. Slika 12

predstavlja globalno arhitekturo Akonadi.

Shranjevanje podatkov je z uporabo arhitekture Akonadi ustreznejše od opisanega v prvem

odstavku poglavja. Poleg že naštetih izboljšav je omogočen nepovezan način shranjevanja

podatkov na lokalnem mestu, ki služi za začasen zajem podatkov (ang. catch). Takšen

način je trivialen, saj mora biti glavna shramba podatkov na oddaljenem strežniku in ne na

lokalnem sistemu odjemalca.

Za primer shranjevanja in dostopa do podatkov vzemimo spletno aplikacijo KMail. Kot je

bilo omenjeno, se za shranjevanje uporablja skupna oblika, zato ni potrebna kakšna

posebno zahtevna nastavitev. V začasen pomnilnik se shranijo glave vseh e-sporočil,

skupaj s celotnimi sporočili, ki se nahajajo v pomembnejših datotekah. Ostala celotna

sporočila, ki se nahajajo v ostalih datotekah, so prenesena s strežnika le ob zahtevi. Tudi

priponke bodo prenesene šele na zahtevo. Aplikacija KMail pridobi znanje o vsebini

sporočil in to znanje omogoči, da lahko sama ustvari podatke o izbranem predmetu. S tem

dosežemo preglednejše brskanje med sporočili in manj procesiranja, kar pomeni hitrejši

odzivni čas.

56 IMAP – internetni protokol, ki se uporablja za dostop do e-pošte na oddaljenem strežniku

57 Akonadi – storitev za shranjevanje podatkov in metapodatkov sistema za izmenjavo in organizacijo

podatkov

58 PIM – upravitelj za osebne informacije – sistem za izmenjevanje in organizacijo podatkov

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 20

Slika 12: arhitektura Akonadi. [24]

Spletna aplikacija, kot je KMail, uporablja kodiranje Base6459. Takšno kodiranje se

uporablja pri prenosu binarnih podatkov preko medija. Namen kodiranja ni, da bi šifrirali

podatke in onemogočili pridobitev informacij ostalim odjemalcem, temveč da podatkov ni

možno spreminjati (razen ob dekodiranju). [13] Base64 kodiranje lahko kodira simbole A-

Z, a-z in 0-9 iz ASCII60 sheme. Kodiranje je 6 bitno, zato lahko predstavi največ 64

vrednosti. Besedilo pripravljeno za kodiranje pretvorimo v zaporedni bitni vzorec.

Kodiranje poteka od začetka prvih 6 bitov, nato drugih 6 bitov. V primeru, da zadnji blok

ni popoln, dopolnimo blok z biti vrednosti 0. Primer kodiranja besedila Feri z Base64

prikazuje tabela 3.1.

Tabela 3.1: primer kodiranja Base64.

59 Base64 – skupina podobnih shem, ki kodirajo binarne podatke v alfanumerično obliko.

60 ASCII – znakovna shema za prikazovanje besedil v računalništvu in komunikacijski opremi

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 21

3.5 Kompresija

Sistem za izmenjevanje in organizacijo podatkov upravlja z množico podatkov različnih

podatkovnih tipov (besedila, fotografije, video). Vse to predstavlja velik zalogaj za

procesor in shrambo. Množico podatkov lahko zmanjšamo s kompresijo. Na voljo je kar

nekaj prostih algoritmov za kompresiranje podatkov. V tabeli 3.2 so primerjave različnih

prostih algoritmov za kompresijo.

Tabela 3.2: primerjava kompresije različnih algoritmov (vir podatkov: [24]).

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 22

4 REZULTATI

V tem poglavju so narejene primerjave in opisane bistvene razlike med sistemom Kolab in

SharePoint 2010. Predstavljena sta izdelana razširitvena vstavka za posamezen sistem.

4.1 Tabele primerjav

V primerjavi obravnavanih sistemov v tabeli 4.1 opazimo, da imata nekaj skupnih

lastnosti. Najbolj očitna razlika je to, da je SharePoint 2010 plačljiv, kar odvrne

marsikaterega uporabnika, ki se odloča o postavitvi sistema za izmenjavo podatkov doma

ali v manjšem podjetju. Pozornost velja tudi pri strojnih zahtevah, saj SharePoint 2010

Server ne deluje na 32-bitnih sistemih (če izključimo možnost virtualizacije OS), za

procesiranje pa potrebuje vsaj 4 jedrni procesor, ne glede na majhno število uporabnikov

sistema.

Tabela 4.3: primerjava sistema Kolab in SharePoint 2010.

Kolab61 SharePoint 2010Odprtokodni DA NEPodpora IMAP DA DASpletni uporabniški vmesnik DA DAPodpora za MS Outlook DA DANapisan v Perl, C++, PHP, Python C#Operacijski sistem Linux Microsoft SQL Server 2008

R2, Windows 7 / VistaPodpira slovenski jezik NE DA

Tabela 4.4: strojne zahteve.

Kolab SharePoint 2010 ServerRAM [GB] Ni podatka 4Sistemski disk [GB] > 1,5 80Procesor Ni podatka 64-bitni, 4 ali 8 jederniPlatforma OpenPKG62 x86

61 Kolab Groupware-Server, stabilna izdaja 2.3.2, dne 03.06.2011

62 OpenPKG – platforma, znotraj katere je nameščen strežnik Kolab [1]

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 23

4.2 Primerjava izdelkov za sistem Kolab in SharePoint 2010

Primerjava pokaže, da lahko aplikacija za Kolab deluje v namiznem okolju KDE 4.7 kot

samostojna in zato ne potrebuje spletnega brskalnika, kot je to pri sistemu SharePoint

2010.

Razvidno je tudi, da je način delovanja sistemov različen. Microsoftov SharePoint 2010

temelji na delovanju spletnih aplikacij, ki jih poganja SharePoint 2010 Server, katerega

arhitekturo lahko definiramo tudi nad oblakom računalnikov. Kolab Server združuje

aplikacije in komponente, ki so nameščene na operacijskem sistemu. Primer samostojne

aplikacije prikazuje slika 13, primer implementacije KDel-a kot dodatek v aplikacijo

Kontakt prikazuje slika 14.

Slika 13: izdelan KDel.

Slika 14: implementirani Imenik v aplikaciji Kontakt.

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 24

Slika 15 prikazuje dva spletljaja za SharePoint 2010. Prvi je pozdravna vrstica, ki pozdravi

odjemalca z njegovim uporabniškim imenom. Drug spletljaj predstavlja imenik zaposlenih

v nekem podjetju.

Slika 15: izgled spletljaja za SharePoint 2010 na lokalni strani. [22]

V lastnostih spletljaja so dodatne nastavitve, ki nudijo odjemalcu poljuben prikaz

rezultatov (glej sliko 16).

Slika 16: dodatne nastavitve spletljaja za SharePoint 2010.

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 25

5 SKLEP

Kolab in SharePoint 2010 sta nadzorna sistema, ki omogočata administratorju vpogled nad

uporabniki – odjemalci. Oba omogočata prilagajanje izgleda in izbire uporabljanih storitev,

z drugimi besedami, prilagoditev sistema, s katerim operira posamezen odjemalec, ki pa je

omejen z dodeljenimi dovoljenji za dostop. Primerjava obeh nam pokaže, da v

funkcionalnosti ni bistvenih razlik. Uporabnik obeh sistemov lahko poljubno dodaja

spletljaje oziroma dele, ter tako zgradi svoj sistem za izmenjevanje in organizacijo

podatkov, ki mu omogoča celovit in organiziran pregled nad podatki, ki jih, če želi, deli

tudi z drugimi. Kolab sicer ne vsebuje tako imenovanih spletljajev, kot jih poznamo v

sistemu SharePoint 2010, imenujemo jih raje kar deli, razširljivi vstavki. Oba sistema

delujeta v oblaku računalnikov, ki so povezani v omrežje, na katerega se povezujemo. Ta

temelji na spletnih storitvah, ki nudijo večjo fleksibilnost, boljši izkoristek strežniških

zmogljivosti, večjo produktivnost administratorjev računalniških sistemov in nižje stroške

upravljanja z računalniško infrastrukturo. V obeh so odprte tudi nove možnosti za nove

storitve. [3]

Pri pripravi zadane naloge sta bila namestitev in nastavljanje strežnika Kolab zahtevnejša

od strežnika SharePoint 2010. Razlog za to je, da obstaja več variant namestitve strežnika

Kolab. Za nas najustreznejša rešitev je bila namestitev različice Kolab-2.2.4 v okolju

OpenPKG. Razlog temu je bila dokumentacija, ki se je pri SharePoint 2010 zdela boljša

kot pri prosto dostopnem sistemu Kolab. Kot smo omenili v podpoglavju 4.1, je

SharePoint 2010 plačljiv. V tem delu smo uporabili razvojno različico, ki se razlikuje od

običajne v tem, da ta ne podpira več instalacij, ampak je samostojna. Tako smo se izognili

licenčnemu nakupu. Za uspešno testiranje smo bili prisiljeni kupiti zmogljivejšo strojno

opremo. Spoznali smo, da ima vsak sistem prednosti in slabosti, ima pa tudi svoj krog

uporabnikov, ki s pridom uporabljajo njihove zmogljivosti. Glede na osebno izkušnjo in do

sedaj pridobljena znanja bi lahko sklepali, da je uporaba sistema SharePoint 2010 bolj

prijazna do uporabnikov in tudi do administratorjev, ki skrbijo za instalacijo sistema. Pri

testiranju smo bili namreč omejeni na programsko in strojno opremo, zato okolje ni

identično tistemu, ki bi ga uporabljali v primeru potrebnih izdatnih sredstev za temeljitejšo

raziskavo, ki presega meje tega dela.

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 26

Raziskovanje bi lahko nadaljevali s primerjavo polno opremljenih sistemov za izmenjavo

in organizacijo podatkov, kjer je prisotnih več odjemalcev. Primerna bi bila natančna

analiza učinkovitosti sistema glede na porabljena sredstva za vpeljevanje in postavitev

sistema Kolab in SharePoint 2010 v delovno okolje podjetja. S pomočjo rezultatov analize

bi podjetje lažje sprejelo odločitev, kateri sistem za izmenjavo in organizacijo podatkov je

primernejši.

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 27

KAZALO PRILOG

Programska koda za spletljaj Kolab. ...........................................................................28

1: CMakeLists.txt (imenik). .....................................................................28

2: Imenik_part.cpp (imenik). ...................................................................28

3: Imenik_part.desktop (imenik). ..........................................................31

4: Imenik_part.h (imenik). .......................................................................32

5: CMakeLists.txt (imenikp). ...................................................................33

6: Imenikp_plugin.cpp (imenikp). ..........................................................33

7: Imenik_plugin.desktop (imenikp). ...................................................34

8: Imenikp_plugin.h (imenikp). ..............................................................34

Programska koda za spletljaj SharePoint 2010. ..........................................................35

1: Elements.xml. .............................................................................................35

2: VisualWebPart1.cs. ..................................................................................35

3: VisualWebPart1.webpart. .......................................................................37

4: VisualWebPart1UserControl.ascx. ......................................................37

5: VisualWebPart1UserControl.ascx.cs. ...............................................38

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 28

PROGRAMSKA KODA ZA SPLETLJAJ KOLAB.

1: CMakeLists.txt (imenik)set(imenik_SRCS main.cpp imenik.cpp )kde4_add_executable(imenik ${imenik_SRCS})target_link_libraries(imenik ${KDE4_KDEUI_LIBS} ${KDE4_KPARTS_LIBS})########### namesčanje ###############install(TARGETS imenik ${INSTALL_TARGETS_DEFAULT_ARGS} )install( FILES imenik.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} )install( FILES imenik_shell.rc DESTINATION ${DATA_INSTALL_DIR}/imenik )################################# KPART ########################################

#kde_module_LTLIBRARIES = libimenikpart.laset(imenik_PART_SRCS imenik_part.cpp )kde4_add_plugin(imenikpart WITH_PREFIX ${imenik_PART_SRCS})target_link_libraries(imenikpart ${KDE4_KDEUI_LIBS} ${KDE4_KPARTS_LIBS} )install( FILES imenik_part.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} )install( FILES imenik_part.rc DESTINATION ${DATA_INSTALL_DIR}/imenikpart )install(TARGETS imenikpart DESTINATION ${PLUGIN_INSTALL_DIR} )

2: Imenik_part.cpp (imenik)#include "imenik_part.h"#include "imenik_part.moc"#include <kaction.h>#include <kactioncollection.h>#include <kcomponentdata.h>#include <kfiledialog.h>#include <kparts/genericfactory.h>#include <kstandardaction.h>#include <kdemacros.h>#include <QtCore/QFile>#include <QtCore/QTextStream>#include <QtGui/QTextEdit>typedef KParts::GenericFactory<imenikPart> imenikPartFactory;K_EXPORT_COMPONENT_FACTORY( libimenikpart, imenikPartFactory )

imenikPart::imenikPart( QWidget *parentWidget, QObject *parent, const QStringList & /*args*/ ) : KParts::ReadWritePart(parent){ KGlobal::locale()->insertCatalog("Imenik"); //instanca setComponentData( imenikPartFactory::componentData() ); QString niz = "Tukaj se izpiše imenik!"; QFile datoteka("/home/denis/projects/imenik/src/imenik.txt"); if (!datoteka.open(QIODevice::Text | QIODevice::ReadOnly | QIODevice::ReadWrite))

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 29

{ niz="Napaka! \nImenik ne obstaja."; datoteka.close(); } else { QTextStream stream(&datoteka); QString str="Kontakti v imeniku:\n"; while (!stream.atEnd()) str += stream.readLine() + "\n"; datoteka.close(); niz=str; } m_widget = new QTextEdit( parentWidget); //m_widget->setText("test"); mMainWidget=new QLabel(); mMainWidget->setText(niz); setWidget(m_widget); setWidget(mMainWidget); // akcije KStandardAction::saveAs(this, SLOT(fileSaveAs()), actionCollection()); save = KStandardAction::save(this, SLOT(save()), actionCollection()); // XML-UI setXMLFile("imenik_part.rc"); setReadWrite(true); setModified(false);}imenikPart::~imenikPart(){}void imenikPart::setReadWrite(bool rw){ m_widget->setReadOnly(!rw); if (rw) connect(m_widget, SIGNAL(textChanged()), this, SLOT(setModified())); else { disconnect(m_widget, SIGNAL(textChanged()), this, SLOT(setModified())); }

ReadWritePart::setReadWrite(rw);}void imenikPart::setModified(bool modified){ if (!save) return; if (modified) save->setEnabled(true); else save->setEnabled(false); //parent ReadWritePart::setModified(modified);}KAboutData *imenikPart::createAboutData(){

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 30

KAboutData *aboutData = new KAboutData("imenikpart", "imenik", ki18n("imenikPart"), "%{1.1}"); aboutData->addAuthor(ki18n("%{Denis K.}"), KLocalizedString(), "%{[email protected]}"); return aboutData;}bool imenikPart::openFile(){ QFile file("m_file"); if (!file.open(QIODevice::Text | QIODevice::ReadOnly | QIODevice::ReadWrite)) //če je datečni tok OK. return false; QTextStream stream(&file); QString str; while (!stream.atEnd()) str += stream.readLine() + "\n"; file.close(); // izpis m_widget->setPlainText("str"); mMainWidget->setText(str); return true;}bool imenikPart::saveFile(){ if (isReadWrite() == false) return false; QFile file("m_file"); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return false; QTextStream stream(&file); stream << m_widget->document(); file.close(); return true;}void imenikPart::fileSaveAs(){ QString file_name = KFileDialog::getSaveFileName(); if (file_name.isEmpty() == false) saveAs(file_name);}3: Imenik_part.desktop (imenik)[Desktop Entry]Name=imenikPartName[ca]=imenikPartName[ca@valencia]=imenikPartName[cs]=imenikPartName[da]=imenikPartName[de]=imenik-TeilName[el]=imenikPartName[en_GB]=imenikPartName[es]=imenikPartName[et]=imenikPartName[fr]=imenikPartName[ga]=imenikPartName[gl]=imenikPartName[hu]=imenikPartName[it]=imenikPartName[ja]=imenikPartName[km]=imenikPart

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 31

Name[ko]=imenik 부분Name[lv]=imenikPartName[nb]=imenik-delName[nds]=imenikKomponentName[nl]=imenikPartName[nn]=imenik-delName[pa]=imenikPartName[pl]=imenikPartName[pt]=imenikPartName[pt_BR]=imenikPartName[ro]=imenikPartName[ru]=Компонент imenikName[sr]=imenik деоName[sr@ijekavian]=imenik деоName[sr@ijekavianlatin]=imenik deoName[sr@latin]=imenik deoName[sv]=imenik-delprogramName[tr]=imenikPartName[uk]=imenikPartName[x-test]=xximenikPartxxName[zh_CN]=imenikPartName[zh_TW]=imenikPartMimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;ServiceTypes=KParts/ReadOnlyPart,KParts/ReadWritePartX-KDE-Library=libimenikpartType=ServiceX-Ubuntu-Gettext-Domain=desktop_kdesdk4: Imenik_part.h (imenik)#ifndef IMENIKPART_H#define IMENIKPART_H#include <kparts/part.h>#include <kparts/factory.h>#include <QLabel>class QWidget;class QPainter;class KUrl;class QTextEdit;class KAboutData;class KAction;/** * @short Main Part * @author %{Denis K.} <%{[email protected]}> * @version ${APP_VERSION} */class imenikPart : public KParts::ReadWritePart{ Q_OBJECTpublic: /** * Privzeti konstruktor */ imenikPart(QWidget *parentWidget,QObject *parent, const QStringList &); QLabel *MainWidget(){return mMainWidget;}; /** * Destruktor

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 32

*/ virtual ~imenikPart(); virtual void setReadWrite(bool rw); virtual void setModified(bool modified); static KAboutData *createAboutData();protected: virtual bool openFile(); virtual bool saveFile(); KAction *save;protected slots: void fileSaveAs();private: QTextEdit *m_widget; QLabel *mMainWidget; //labela s katero izpišemo besedilo };#endif // IMENIKPART_H5: CMakeLists.txt (imenikp)include_directories(${CMAKE_SOURCE_DIR}/imenikp)set(kontact_imenik_PART_SRCS imenikp_plugin.cpp)kde4_add_plugin(kontact_imenikpplugin ${kontact_imenik_PART_SRCS})target_link_libraries(kontact_imenikpplugin ${KDE4_KDEUI_LIBS} kontactinterfaces)install(TARGETS kontact_imenikpplugin DESTINATION ${PLUGIN_INSTALL_DIR})install(FILES imenikp_plugin.desktop DESTINATION ${SERVICES_INSTALL_DIR}/kontact)6: Imenikp_plugin.cpp (imenikp)#include "imenikp_plugin.h"#include <imenik_part.h>#include <kontactinterfaces/core.h>#include <kontactinterfaces/plugin.h>#include <kactioncollection.h>#include <kgenericfactory.h>#include <kicon.h>#include <kparts/componentfactory.h>EXPORT_KONTACT_PLUGIN( ImenikpPlugin, imenikp )ImenikpPlugin::ImenikpPlugin( Kontact::Core *core, const QVariantList & ) : Kontact::Plugin( core, core, "Imenik" ){ setComponentData( KontactPluginFactory::componentData() );}ImenikpPlugin::~ImenikpPlugin(){}KParts::ReadOnlyPart *ImenikpPlugin::createPart(){ KParts::ReadOnlyPart *part = loadPart(); connect( part, SIGNAL(showPart()), this, SLOT(showPart()) ); return part;}void ImenikpPlugin::readProperties( const KConfigGroup &config ){ if ( part() ) { imenikPart *myPart = static_cast<imenikPart*>( part() ); }}void ImenikpPlugin::saveProperties( KConfigGroup &config ){ if ( part() ) {

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 33

imenikPart *myPart = static_cast<imenikPart*>( part() ); }}void ImenikpPlugin::showPart(){ core()->selectPlugin( this );}#include "imenikp_plugin.moc"7: Imenik_plugin.desktop (imenikp)[Desktop Entry]Type=ServiceIcon=whateverX-KDE-ServiceTypes=Kontact/Plugin,KPluginInfoX-KDE-Library=kontact_imenikppluginX-KDE-KontactPluginVersion=7X-KDE-KontactPartLibraryName=libimenikpartX-KDE-KontactPluginHasSummary=falseX-KDE-PluginInfo-Name=kontact_imenikppluginX-KDE-PluginInfo-Version=1.0X-KDE-PluginInfo-License=GPLX-KDE-PluginInfo-EnabledByDefault=trueComment=Izpis obstoječega imenikaName=imenikp8: Imenikp_plugin.h (imenikp)#ifndef IMENIKP_PLUGIN_H#define IMENIKP_PLUGIN_H#include <kontactinterfaces/plugin.h>#include <kparts/part.h>class ImenikpPlugin : public Kontact::Plugin{ Q_OBJECT public: ImenikpPlugin( Kontact::Core *core, const QVariantList & ); ~ImenikpPlugin(); virtual void readProperties( const KConfigGroup &config ); virtual void saveProperties( KConfigGroup &config ); private slots: void showPart(); protected: KParts::ReadOnlyPart *createPart();};#endif

PROGRAMSKA KODA ZA SPLETLJAJ SHAREPOINT 2010.

1: Elements.xml<?xml version="1.0" encoding="utf-8"?><Elements xmlns="http://schemas.microsoft.com/sharepoint/" ><Module Name="VisualWebPart1" List="113" Url="_catalogs/wp"><File Path="VisualWebPart1\VisualWebPart1.webpart" Url="Moj spletljaj_VisualWebPart1.webpart" Type="GhostableInLibrary" ><Property Name="Group" Value="MojiWP" /></File></Module></Elements>2: VisualWebPart1.csusing System;

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 34

using System.ComponentModel;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using Microsoft.SharePoint;using Microsoft.SharePoint.WebControls;namespace Moj_spletljaj.VisualWebPart1{ [ToolboxItemAttribute(false)] public class VisualWebPart1 : WebPart {// Visual Studio might automatically update this path when you change the Visual Web Part

//project item. private const string _ascxPath = @"~/_CONTROLTEMPLATES/Moj_spletljaj/VisualWebPart1/VisualWebPart1UserControl.ascx"; protected override void CreateChildControls() { Control control = Page.LoadControl(_ascxPath); Controls.Add(control); }

public static Boolean ID; [Category("Dodatne nastavitve"), Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("Prikaži ID"), WebDescription("Izberi, če želiš, da prikaže ID!")] public Boolean _ID { get { return ID; } set { ID = value; } } public static Boolean IME; [Category("Dodatne nastavitve"), Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("Prikaži ime zaposlenega"), WebDescription("Izberi, če želiš, da prikaže ime zaposlenega!")] public Boolean _IME { get { return IME; } set { IME = value; } } public static Boolean PRIIMEK; [Category("Dodatne nastavitve"), Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("Prikaži priimek zaposlenega"), WebDescription("Izberi, če želiš, da prikaže priimek zaposlenega!")] public Boolean _PRIIMEK { get { return PRIIMEK; } set { PRIIMEK = value; } } public static Boolean TEL; [Category("Dodatne nastavitve"), Personalizable(PersonalizationScope.Shared), WebBrowsable(true),

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 35

WebDisplayName("Prikaži telefon zaposlenega"), WebDescription("Izberi, če želiš, da prikaže telefon zaposlenega!")] public Boolean _TEL { get { return TEL; } set { TEL = value; } }

public static Boolean ODDELEK; [Category("Dodatne nastavitve"), Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("Prikaži oddelek zaposlenega"), WebDescription("Izberi, če želiš, da prikaže oddelek zaposlenega!")] public Boolean _ODDELEK { get { return ODDELEK; } set { ODDELEK = value; } } }}3: VisualWebPart1.webpart<?xml version="1.0" encoding="utf-8"?><webParts> <webPart xmlns="http://schemas.microsoft.com/WebPart/v3"> <metaData> <type name="Moj_spletljaj.VisualWebPart1.VisualWebPart1, $SharePoint.Project.AssemblyFullName$" /> <importErrorMessage>$Resources:core,ImportErrorMessage;</importErrorMessage> </metaData> <data> <properties> <property name="Title" type="string">Imenik</property> <property name="Description" type="string">Moj spletljaj, ki omogoča iskanje zaposlenih v internem imeniku</property> </properties> </data> </webPart></webParts>4: VisualWebPart1UserControl.ascx<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %><%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %><%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %><%@ Import Namespace="Microsoft.SharePoint" %> <%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %><%@ Control Language="C#" AutoEventWireup="true" CodeBehind="VisualWebPart1UserControl.ascx.cs" Inherits="Moj_spletljaj.VisualWebPart1.VisualWebPart1UserControl" %><style type="text/css"> .style1 {

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 36

font-family: "Arial Black"; } .style2 { font-family: Arial; }</style><p> <asp:Label ID="Label1" runat="server" CssClass="style2" Text="Vpišite ime iskane osebe:"></asp:Label>&nbsp;<asp:TextBox ID="TextBox1" runat="server" ontextchanged="TextBox1_TextChanged"></asp:TextBox> </p><p> <br /></p><table><tr><td class="style1"> Rezultati:</td></tr><tr><td> <asp:GridView ID="datagrdStoreData" runat="server" BackColor="White" style="font-family: Calibri; font-size: small"> <AlternatingRowStyle BackColor="#99FFFF" ForeColor="Black" /> <HeaderStyle BackColor="#0099FF" ForeColor="White" /> </asp:GridView></td></tr><tr><td> <asp:LinkButton ID="Isci_po_bazi" runat="server" style="font-family: Arial Baltic; font-size: small" onclick="Isci_po_bazi_Click">Išči po bazi</asp:LinkButton></td></tr><tr><td> <asp:LinkButton ID="Prikazi_vse" runat="server" style="font-family: Arial Black; font-size: small" onclick="Prikazi_vse_Click">Prikaži vse</asp:LinkButton></td></tr></table><asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>5: VisualWebPart1UserControl.ascx.csusing System;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Data;using System.Data.SqlClient; namespace Moj_spletljaj.VisualWebPart1{ public partial class VisualWebPart1UserControl : UserControl

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 37

{ DataSet podatkovni_set = new DataSet(); protected void Page_Load(object sender, EventArgs e) {} protected void Button1_Click(object sender, EventArgs e) {} public string QueryString() //Funkcija, ki oblikuje "SELECT" stavek za SQL poizvedbo. {//v ta string se bodo shranjevali nizi vkolikor so bili izbran parametri v Dodatnih

//nastavitvah string izbor_parametrov=null; if (VisualWebPart1.ID == true) //če je izbran parameter za prikaz ID { izbor_parametrov = "ID_ZAPOSLENEGA"; //potem se v SELECT niz doda ID_ZAPOSLENEGA } if (VisualWebPart1.IME == true) //če je izbran parameter za prikaz IME { if (izbor_parametrov != null) //in če niz ni več prazen { izbor_parametrov += ","; //doda vejico, zaradi naštevanja izbranih parametrov } izbor_parametrov += "IME"; //doda ime } if (VisualWebPart1.PRIIMEK == true) { if (izbor_parametrov != null) { izbor_parametrov += ","; } izbor_parametrov += "PRIIMEK"; } if (VisualWebPart1.TEL == true) { if (izbor_parametrov != null) { izbor_parametrov += ","; } izbor_parametrov += "TEL"; } if (VisualWebPart1.ODDELEK == true) { if (izbor_parametrov != null) { izbor_parametrov += ","; } izbor_parametrov += "ODDELEK"; }

//vrne urejen stavek "SELECT [IZBRANE LASTNOSTI] FROM Zaposleni_TB" if (izbor_parametrov != null) { return "SELECT " + izbor_parametrov + " from Zaposleni_TB"; } else {//če ni bil izbran noben parameter, vrže "SELECT * FROM Zaposleni_TB" return "SELECT * from Zaposleni_TB"; } } protected void Isci_po_bazi_Click(object sender, EventArgs e)

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 38

{ string isci = TextBox1.Text; string queryString;

//moja funkcija, ki vrne sql select string, glede na izbiro lastnosti (ID, IME, PRIIMEK,...) queryString = QueryString(); queryString += " where Zaposleni_TB.IME='" + isci + "';"; //POVEZAVA Z SQL BAZO NA STREŽNIKU DENIS-PC string connectionString = "Data Source=denis-pc\\sqlexpress;Initial Catalog=Zaposleni_DB;Integrated Security=True"; SqlConnection connection = new SqlConnection(connectionString); SqlDataAdapter adaptor = new SqlDataAdapter(); using (SqlCommand command = new SqlCommand(queryString, connection)) { adaptor.SelectCommand = command; } adaptor.Fill(podatkovni_set); datagrdStoreData.DataSource = podatkovni_set; datagrdStoreData.DataBind();

//Omogoči vidnost Label2, ki izpiše rdeče opozorilo "V bazi ni tega imena!". if (datagrdStoreData.Rows.Count == 0) Label2.Visible = true; } protected void TextBox1_TextChanged(object sender, EventArgs e) { //V primeru, da spremenimo iskalni niz, se vidnost Label2 onemogoči. Label2.Visible = false; } protected void Prikazi_vse_Click(object sender, EventArgs e) { Label2.Visible = false; string isci = TextBox1.Text; //iskalni niz string queryString; //poizvedovalni niz

//moja funkcija, ki vrne sql select string, glede na izbiro lastnosti (ID, IME, //PRIIMEK,...)

queryString = QueryString(); queryString += ";"; //na koncu poizvedovalnega niza sledi podpičje string connectionString = "Data Source=denis-pc\\sqlexpress;Initial Catalog=Zaposleni_DB;Integrated Security=True"; SqlConnection connection = new SqlConnection(connectionString); SqlDataAdapter adaptor = new SqlDataAdapter(); using (SqlCommand command = new SqlCommand(queryString, connection)) { adaptor.SelectCommand = command; } adaptor.Fill(podatkovni_set); datagrdStoreData.DataSource = podatkovni_set; datagrdStoreData.DataBind(); } }}

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 39

LITERATURA

[1] Mahboob in N. Ikram: How to Overcome the Challenges to Large Scale Adoption of

Open Source Software and Systems in Pakistan Business and Industrial Environment.

Pakistan Navy Engineering College, National University of Sciences & Technology,

Karachi (Online). 2007.

http://www.uet.edu.pk/Conferences/icosst2007/icosst_2007_papers/How_to_Overcom

e_the_Challenges_to_Large_Scale_Adoption_of_Open_Source.pdf (datum dostopa

13.5.2011).

[2] Hemetsberger in C. Reinhardt: Sharing and creating knowledge in open-source

communities: the case of KDE. Fifth European Conference on Organizational

Knowledge, Learning, and Capabilities, Innsbruck (Online). 2004.

http://ifipwg213.org/system/files/hemreinh.pdf (datum dostopa 13.5.2011).

[3] M. Štrukelj in M. Lazar: 18. konferenca Dnevi slovenske informatike; Postavitev

zasebnega oblaka z odprtokodnimi rešitvami (Online), Portorož. 18.-20.04.2011.

http://www.dsi2011.si/upload/predstavitve/Ra%C4%8Dunalni%C5%A1tvo%20v

%20oblaku/Strukelj_Marko.pdf (datum dostopa 05.09.2011).

[4] L. Suhrbier in M. Hasaric: Draft list of suitable communication / work group tools for

platform environment. Freie Universität Berlin, Department Computer Science

Networked Information System (Online). 31.05.2007.

http://wp5.e-taxonomy.eu/blog/files_edit_wp5/2007-05-31_D5.51_M14.pdf (datum

dostopa 24.08.2011).

[5] D. Faure, I. Klöcker, T. König, D. Molkentin, Z Rusin, D. Sanders in C. Schumacher :

KDE Kontact: An Application Integration Framework PIM Components Get Together.

Proceedings of USENIX 2004: FREENIX Track.

[6] Setting Up the Development Environment for SharePoint 2010 on Windows Vista,

Windows 7, and Windows Server 2008, SharePoint 2010 (Online). Microsoft MSDN.

May 2010.

http://msdn.microsoft.com/en-us/library/ee554869.aspx (datum dostopa 25.04.2011).

[7] C. Roth: Intro to SharePoint 2010 Development: How to Build and Deploy a Web Part.

Dot Net Mafia (Online). 15.2.2010.

http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2010/02/15/intro-to-

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 40

sharepoint-2010-development-how-to-build-and-deploy-a-web-part.aspx (datum

dostopa 4.5.2011).

[8] B. Massi (Online): Creating a SharePoint Visual Web Part using Visual Studio 2010.

MSDN Blogs. Microsoft Corporation. 28.01.2010.

http://blogs.msdn.com/b/bethmassi/archive/2010/01/28/creating-a-sharepoint-visual-

web-part-using-visual-studio-2010.aspx (datum dostopa 3.5.2011).

[9] J. Laik: Create a Custom Web Part for SharePoint 2010. Concurency, Inc (Online).

2010.

http://blog.concurrency.com/sharepoint/create-a-custom-web-part-for-sharepoint-2010/

(datum dostopa 29.8.2011).

[10]J. Destin: Creatin Web parts for SharePoint 2010 using Visual Studio 2010. C# Corner

(Online). 04.10.2010.

http://www.c-sharpcorner.com/UploadFile/Roji.Joy/3696/ (datum dostopa 29.8.2011).

[11]Kolab Server: Technical Description. Kroupware Contract (Online). 11.10.2004.

http://kroupware.kolab.org/technical-1.0.1-html/c421.html (datum dostopa 2.09.2011).

[12]Kolab2 Installation – Source Kolab wiki (Online). 18.06.2011.

http://wiki.kolab.org/index.php/Kolab2_Installation_-_Source (datum dostopa

04.09.2011).

[13]Y. Hilewitz in R. B. Lee: Advanced Bit Manipulation Instruction Set Architecture.

Princeton Architecture Laboratory for Multimedia and Security Department of

Electrical Engineering. November 2006.

[14]Attlee Labels: Sharepoint 2010 WebPart Tutorial, SharePoint Programming, A blog

about SharePoint 2007,SharePoint 2010, .Net Framework 4.0, Office 2010 and lot

more.... (Online). myshaepointwork.blogspot.com. 31.05.2010.

http://mysharepointwork.blogspot.com/2010/05/sharepoint-2010-webpart-tutorial.html

(datum dostopa 28.04.2011).

[15]G. Sinai: Getting started with SharePoint 2007 Web Parts (Online), 7 Apr 2008.

http://www.codeproject.com/KB/sharepoint/WebPartIntro.aspx (datum dostopa

5.5.2011).

[16] M. Evans: Kaj je SharePoint? Microsoft Corporation (Online). 2011.

http://office.microsoft.com/sl-si/sharepoint-foundation-help/kaj-je-sharepoint-

HA010378184.aspx (datum dostopa 20.04.2011).

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 41

[17]Microsoft SharePoint. Wikipedia, The Free Encyclopedia (Online). 25.08.2011.

http://en.wikipedia.org/wiki/Sharepoint (datum dostopa 29.08.2011).

[18]Kolab. Wikipedia, TheFree Encyclopedia (Online). 13.07.2011.

http://en.wikipedia.org/wiki/Kolab (datum dostopa 29.08.2011).

[19]Kolab, Groupware Solution for Emails, Appointments, Contacts and more (Online).

2011.

http://www.kolab.org/ (datum dostopa 29.08.2011).

[20] KDE Platform. Wikipedia, The Free Encyclopedia (Online). 28.07.2011.

http://en.wikipedia.org/wiki/KDE_Platform (datum dostopa 29.08.2011).

[21]de Groot in A. Winter: KParts::ReadOnlyPart Class Reference. KDE 4.0 API

Reference (Online). 14.08.2010.

http://api.kde.org/4.0-api/kdelibs-apidocs/kparts/html/classKParts_1_1ReadOnlyPart .

html#_details (datum dostopa 04.09.2011).

[22]Exercise 4: Creating a Visual Web Part that is Integrated with SQL Azure. Microsoft

MSDN (Online). 2011.

http://msdn.microsoft.com/en-us/hh128014 (datum dostopa 04.09.2011).

[23]The Apache Software Foundation (Online). 2011.

http://www.apache.org/ (datum dostopa 06.09.2011).

[24]R. Zwerus: Storing Personal Information Management data; Akonadi – unifying PIM

data for KDE. University of Twente The Netherlands. 2007

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 42

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 43

Izdelava spletljaja za Kolab in SharePoint 2010 Stran 44