Documente Academic
Documente Profesional
Documente Cultură
DOMENIUL DE LICENT, A:
LUCRARE DE LICENT, A
INDRUMATOR
S, TIINT, IFIC
Prof. univ. dr. Ioan Dzit, ac
ARAD
2011
ABSOLVENT
S, ucan M. Mihai
DOMENIUL DE LICENT, A:
PROIECTAREA UNUI
WEBSITE UNIVERSITAR
Aplicat, ie practic
a: www.uav.ro
INDRUMATOR
S, TIINT, IFIC
Prof. univ. dr. Ioan Dzit, ac
ARAD
2011
ABSOLVENT
S, ucan M. Mihai
APROBAT
DECAN
VIZAT
Indrumator s, tiint, ific
SEMNATURA
REFERAT
DOMENIUL: INFORMATICA
Ioan Cuza din Ias, i etc. Studiul a avut ca scop cunoas, terea site-urilor
academice: ce tipuri de layout-uri se folosesc, cum sunt organizate s, i
structurate paginile, s, i informat, iile etc. Analiza s-a facut din punct de
vedere vizual s, i tehnic, prin prisma cont, inutului s, i a structurii.
Websiteul www.uav.ro cuprinde bloguri, galerii de imagini, modul specializat pentru citit sau-s, i descarcat fis, iere un formular de contact flexibil, fluxuri de s, tiri Atom, un motor de cautare precum s, i o harta a
7. Nu exist
a suspiciuni de realizare prin fraud
a a prezentei
lucr
ari.
Realizarea site-ului Universitat, ii Aurel Vlaicu din Arad
Arad,
Data 20 mai 2011
Cuprins
Introducere
1 Prezentarea siteului
1.1 Structura siteului pentru utilizatori .
1.2 Funct, ionalitat, i pentru utilizatori . . .
1.3 Funct, ionalitat, i pentru administratori
1.4 Compatibilitatea siteului . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
6
8
9
10
.
.
.
.
.
11
11
13
13
15
16
.
.
.
.
.
.
.
.
.
.
.
26
26
29
29
38
40
41
43
46
50
55
56
CUPRINS
3.2
3.3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
57
61
62
66
71
74
75
79
83
83
92
96
102
106
107
110
113
Concluzii
115
Glosar
116
List
a de figuri
119
Bibliografie
121
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
124
. 124
. 125
. 125
. 126
. 126
. 127
Introducere
Lucrarea de fat, a prezinta proiectul de licent, a uav.ro ncepand cu aspectele
generale, pentru a continua mai apoi cu detaliile tehnice despre implementarea s, i dezvoltarea proiectului.
Scopul proiectului prezentat n aceasta lucrare, stabilit n colaborare cu
domnul profesor coordonator Ioan Dzit, ac1 , a fost realizarea unui site nou
pentru Universitatea Aurel Vlaicu din Arad. Cerint, ele noului site au fost
definite astfel:
un design nou, mai atragator s, i modern, potrivit cu profilul siteului,
navigare us, oara s, i accesibila pentru diferite tipuri de utilizatori,
cont, inut bilingv, n limbile romana s, i engleza,
ncarcarea rapida a paginilor,
tehnic compatibil cu majoritatea navigatoarelor web, pe majoritatea
sistemelor de operare n uz,
structura tehnica solida, capabila sa evolueze n timp,
bine structurat din perspectiva informat, iilor oferite vizitatorilor, clar
s, i concis,
informativ s, i util pentru profesorii s, i student, ii care vor sa aplice la
universitate, sa profeseze sau sa studieze,
us, or de ment, inut s, i de actualizat pentru cei responsabili de cont, inut.
In plus fat, a de cerint, ele ment, ionate mai sus, a fost pusa problema evolut, iei
siteului n comparat, ie cu versiunea precedenta. Practic s-a dorit ca noul site
sa creasca, sa fie mai bogat n cont, inut, mai informativ, mai bine structurat
1
http://dzitac.rdsor.ro
INTRODUCERE
http://www.robodesign.ro/marius
Capitolul 1
Prezentarea siteului
Noul site al Universitat, ii Aurel Vlaicu din Arad este un site modern, cu
Siteul include bloguri, galerii de imagini, modul specializat pentru fis, iere
de descarcat, un formular de contact flexibil, fluxuri de s, tiri Atom, un motor
de cautare s, i o harta a siteului. Pentru administratori siteul are un gestionar
de fis, iere s, i un gestionar de conturi s, i drepturi, pe langa editoarele specifice
fiecarei sect, iuni din site.
Nu n ultimul rand, platforma siteului este flexibila permit, and adaugarea
de funct, ionalitat, i noi n site, fara limitari tehnice.
1.1
Siteul Universitat, ii Aurel Vlaicu din Arad are cateva sect, iuni importante,
pentru diferitele domenii de interes ale vizitatorilor. Aceste sect, iuni sunt:
Academic sect, iunea care cont, ine paginile despre structura anului universitar n curs, despre treptele de studii universitare (licent, a, masterat s, i doctorat), s, i despre concursurile pentru posturile didactice
vacante.
Cercetare sect, iunea care cont, ine informat, iile necesare pentru profesorii
s, i student, ii interesat, i de cercetare n cadrul UAV.
Departamente sect, iunea cu informat, ii specifice pentru fiecare departament al UAV.
Facult
at, i locul unde fiecare facultate UAV are cate un set de sub-pagini
care ofera informat, ii pentru student, i: orare, datele de examinare, lista
de profesori pe discipline, s, i altele.
Personal locul unde sunt publicate pagini de prezentare a profesorilor
universitat, ii.
Resurse locul unde se gasesc informat, ii despre editura UAV, biblioteci,
platforma e-learning, s, i direct, ia resurse umane salarizare.
Reviste locul unde sunt prezentate revistele s, i restul de publicat, ii ale
universitat, ii.
Student, i este sect, iunea specifica pentru tinerii care doresc sa studieze
la UAV. Aici se gasesc informat, ii despre taxe, burse, olimpiade, concursuri, regulamente, diplome, acte necesare, organizat, ii student, es, ti,
camine s, i altele.
Universitate este sect, iunea unde se gasesc informat, ii despre universitate, istoricul acesteia, o prezentare, documente de interes public
(licitat, ii, declarat, ii de avere, hotarari ale senatului), noutat, i s, i evenimente.
Rice University6 ,
Stanford University7 ,
Carnegie Mellon University8 ,
Harvard University9 ,
University of Oxford10 .
1
http://www.uvt.ro
http://www.upb.ro
3
http://www.upt.ro
4
http://www.uaic.ro
5
http://www.uvvg.ro
6
http://www.rice.edu
7
http://www.stanford.edu
8
http://www.cmu.edu
9
http://www.harvard.edu
10
http://www.ox.ac.uk
2
1.2
Funct, ionalit
at, i pentru utilizatori
Pentru utilizatori conteaza n primul rand us, urint, a de navigare s, i us, urint, a
cu care ei gasesc informat, iile dorite. Pentru a ajuta n aceasta direct, ie, siteul
este bilingv, n romana s, i engleza, s, i ofera posibilitatea de cautare n cont, inut.
In plus, o harta completa a siteului este disponibila.
Siteul dispune de urmatoarele module:
Blog,
Galerie de imagini,
Fis, iere de descarcat,
Contact,
Harta site,
Cautare.
Pe prima pagina este o diaporama n care poze cu locat, iile UAV sunt
afis, ate. De asemenea sunt listate ultimele articole din blogurile Noutat, i s, i
Evenimente. Nu n ultimul rand sunt afis, ate s, i cele mai importante pagini
din site.
Blogul permite adaugarea de articole sortate cronologic, pe categorii.
Acesta este folosit pentru pagini de genul noutat, i sau evenimente. Fie
care articol poate avea etichete atas, ate (tags), pentru a permite o organizare
a articolelor mai buna, s, i pentru a face navigarea mai us, oara pentru utilizatori. In plus, fiecare blog include un feed /flux Atom la care se pot abona
utilizatorii care doresc sa t, ina pas cu noutat, ile din site. Fluxul Atom poate
fi limitat s, i numai pe anumite etichete. Arhiva de articole din fiecare blog
permite navigarea dupa data publicarii.
Modulul de galerie de imagini include s, i el suport pentru fluxuri Atom,
daca utilizatorul dores, te sa urmareasca un anumit album de poze.
Pagina de contact permite utilizatorilor sa contacteze diferitele departamente ale universitat, ii. Formularul este protejat anti-spam cu serviciul online
recaptcha.net.
La fiecare pagina, utilizatorul poate alege sa mareasca sau sa mics, oreze
dimensiunea textului afis, at. Articolele pot fi imprimate excluzand elementele
din site care nu sunt relevante exista un CSS specific pentru imprimare care
aranjeaza paginile sa arate bine pe foaie.
Siteul poate fi navigat pe telefoane mobile cu o interfat, a adecvata.
, I PENTRU ADMINISTRATORI
1.3. FUNCT, IONALITAT
1.3
Funct, ionalit
at, i pentru administratori
10
1.4
Compatibilitatea siteului
http://www.mozilla.com
http://www.opera.com
13
http://www.google.com/chrome
14
http://www.apple.com/safari
15
http://www.konqueror.org
16
http://www.microsoft.com/windows/internet-explorer/
12
Capitolul 2
Modul de funct, ionare al
siteului
Pentru a explica modul de funct, ionare al siteului vom ncepe prin a enumera
tehnologiile folosite de acesta s, i cerint, ele software pentru serverul web. n
continuare vom descrie a modul n care paginile siteului sunt generate dinamic
de catre scripturile PHP. Capitolul se ncheie cu o sect, iune n care sunt
descrise toate fis, ierele sursa folosite de site.
2.1
12
Pe langa tehnologiile ment, ionate mai sus, siteul foloses, te n mod general
DOM pe server cat s, i n navigatorul web. Pagina HTML este generata pe server ntr-un arbore DOM care la final este serializat n formatul dorit: HTML
sau XHTML. Codul JavaScript care se executa n navigatorul web foloses, te
s, i el structura DOM pentru a modifica pagina n funct, ie de interact, iunea cu
utilizatorul.
Awebitor este editorul de articole folosit n modulul de administrare.
Acesta utilizeaza XMLHttpRequest [2] pentru ncarcarea dinamica de cont, inut s, i designMode [3] pentru capabilitatea de editare What You See Is
What You Get (WYSIWYG).
Noul HTML5 introduce o multitudine de taguri s, i funct, ionalitat, i noi [4].
Siteul UAV foloses, te capabilitat, i HTML5 n navigatoarele web moderne.
De exemplu, pentru campurile de tip email codul foloses, te noul atribut
type=email.
http://www.uav.ro/ro/contact
2.2
13
2.3
Privire pe ansamblu
Fiecare accesare de pagina trece prin fis, ierul index.php al siteului. Acest
script PHP face chemari la restul de fis, iere n funct, ie de adresa aleasa de
utilizator.
Vom ncepe cu un exemplu de accesare a paginii de prezentare a Universitat, ii Aurel Vlaicu din Arad2 . Cererea este procesata astfel:
http://www.uav.ro/ro/universitate/prezentarea-universitatii
14
10. Se cauta calea dorita de utilizator n structura siteului. Pentru exemplul dat mai sus, prezentarea universitat, ii este o pagina de tip articol.
11. Fis, ierul XML indica titlul paginii s, i fis, ierul HTML de pe disc care trebuie afis, at: pages/ro_universitate-prezentarea-universitatii.
html.
12. In final, toata pagina este serializata n format HTML. Aceasta cont, ine
interfat, a siteului mpreuna cu cont, inutul paginii accesate de utilizator.
Serializarea se face folosindu-se obiectul DOMDocument().
13. Rezultatul, pagina completa HTML, este scris pe disc n cache/pages/
pentru a fi reutilizat pe viitor, s, i apoi este trimis catre client (utilizator).
Numele fis, ierului salvat pe disc este rezultatul funct, iei de faramit, are
md5() aplicata pe s, irul de caractere dat de calea accesata de utilizator,
mpreuna cu toate variabilele din cererea HTTP GET.
Daca utilizatorul acceseaza o pagina de tip blog, sau alt modul special,
atunci diferent, a n execut, ie este minora. Practic, n loc sa fie citit un fis, ier
HTML, n structura XML este notat modulul care trebuie inclus. Acel fis, ier
15
PHP este inclus, iar din acel moment este responsabil sa genereze cont, inutul
siteului. Pentru mai multe detalii se poate vedea sect, iunea 3.3.1.
In cazul paginilor de tip blog sau galerie de imagini, exista not, iunea
de sub-directoare n calea aleasa. De exemplu, blogul Noutat, i are adresa
/ro/universitate/noutati/, loc unde se gasesc articole. Codul care genereaza paginile blogului verifica ntreaga cale accesata de utilizator pentru a determina articolul dorit, de exemplu /ro/universitate/noutati/
invitatie-la-sport.
Sect, iunea de administrare a siteului funct, ioneaza identic, dar n admin/
include.php este schimbat fis, ierul XML care cont, ine structura siteului.
Adica, nu mai sunt ncarcate fis, ierele xml/site_en.xml s, i xml/site_ro.
xml. Sunt folosite XML-urile admin_en.xml s, i admin_ro.xml. In acestea
se gases, te structura siteului de administrare. Astfel, este refolosita interfat, a
siteului principal, pentru partea de administrare difera doar meniurile s, i
paginile care pot fi accesate.
2.3.1
16
2.4
Lista de directoare s, i fis, iere din siteul UAV este prezentata mai jos pentru a
face mai clar modul de funct, ionare al siteului. O trecere n revista a acestei
structuri permite formarea unei imagini mai clare asupra locurilor unde se
poate gasi codul responsabil pentru diferitele funct, ii ale siteului.
admin/
Tot codul care face posibila administrarea siteului.
awebitor-interface.php
Scriptul PHP care genereaza interfat, a editorului de articole, n
format XHTML. Vezi sect, iunea 3.4.
help-ro.html
Pagina cu recomandari editoriale pentru administratorii siteului.
In acest document sunt explicate principalele criterii de calitate
n redactarea cont, inutului.
iframe-layout.php
Interfat, a paginilor din admin afis, ate n <iframe>-uri. In spet, a,
acest fis, ier layout este folosit cand gestionarul de fis, iere este inclus
dinamic ntr-un <iframe> de exemplu atunci cand utilizatorul
alege sa adauge o imagine n editor.
include.php
Scriptul inclus de toate paginile din admin. Acesta configureaza
diferite aspecte generale ale paginilor de administrare. Mai precis
acest fis, ier:
ncarca structura siteului de administrare din xml/admin_en.
xml sau xml/admin_ro.xml, n funct, ie de limba curenta.
3
http://www.uav.ro/ro/contact
18
20
http://www.uav.ro/ro/sitemap
http://www.uav.ro/
22
24
Capitolul 3
Extensiile aplicat, iei web
In sect, iunea 2.3 s-a putut vedea ca siteul este construit ntr-un mod flexibil ce
permite adaugarea de pagini de orice fel. Nu se impune nici o limita asupra
tipului de pagini trebuie doar sa fie ncarcat un fis, ier PHP din care autorul
scriptului poate face orice dores, te. Aceste scripturi le numim module sau
extensii ale aplicat, iei web.
Implicit aplicat, ia web este cat se poate de zvelta, de robusta, mini
malista, fara sa aiba funct, ionalitat, i ce nu sunt dorite. In acest capitol vom
prezenta extensiile realizate pentru siteul Universitat, ii Aurel Vlaicu din
Arad.
3.1
Sect, iunea de administrare a siteului poate fi accesata doar de catre personalul autorizat. In acest scop a fost dezvoltat un sistem de conturi pentru
administratorii siteului, cu autentificare securizata.
Modulul privat .private/users/users.php este scriptul PHP care cont, ine implementarea not, iunii de conturi. Clasa RD users manager permite
autentificarea, resetarea de parole, schimbarea profilului la fiecare utilizator,
adaugarea s, i s, tergerea de utilizatori, modificarea drepturilor acestora.
Parolele s, i drepturile utilizatorilor se gasesc n directorul .private/
users/sites/. Parolele sunt criptate cu funct, ia de faramit, are SHA-512
acestea nu pot fi decriptate [8]. Pentru drepturile s, i profilul fiecarui utilizator
este folosit cate un fis, ier JSON. Formatul fis, ierului este urmatorul:
{
u s e r : numecont ,
26
27
l a s t L o g i n D a t e : 0 , // UNIX timestamp
lastLoginIP : 127.0.0.1 ,
nrLogins : 1 ,
profile: {
displayName : Nume U t i l i z a t o r ,
e m a i l : adresa@example . com
},
permissions : {
admin : {
view : true ,
r e c u r s i v e : true
},
admin \/ f i l e s \/ d i r e c t o r : {
d e f a u l t : true ,
r e c u r s i v e : true
},
admin \/ pages \/ r o \/ pagina : {
e d i t : true ,
r e c u r s i v e : true
}
}
}
Dupa cum se poate vedea n codul de mai sus, fis, ierul JSON include numele contului, numele afis, at, emailul, numarul de autentificari, data ultimei
autentificari s, i IP-ul.
Drepturile unui cont sunt exprimate ierarhic, ca ntr-o structura de directoare, un arbore. Avem utilizatorul care poate efectua un numar nelimitat de
act, iuni, n funct, ie de pagina, n funct, ie de sect, iunea siteului. Avem sect, iunile
siteului structurate ca pagini s, i sub-pagini cu nume care au fiecare o cale.
Pentru a permite editarea paginii contact trebuie acordat dreptul:
admin \/ pages \/ r o \/ c o n t a c t : {
e d i t : true ,
alta actiune : false
// orice alta act, iune urmata de true daca este permita
// sau false daca nu.
}
28
3.1.1
29
Autentificare
3.1.1.1
Formularul de autentificare
30
31
32
In fis, ierul users.php implementarea funct, iei get auth token() arata n
felul urmator:
public function get auth token () {
// Siteul are un jeton privat care a fost generat aleatoriu la
// instalarea siteului. Acesta este folosit pentru criptarea
// parolei pe server.
$ t o k e n s i t e = $ t h i s >g e t s i t e t o k e n ( ) ;
if (! $token site ) {
return null ;
}
// Generam un jeton aleator pentru sesiunea curenta.
$ t h i s >g e n s e s s i o n t o k e n ( ) ;
// Generam doua valori aleatoare unice pentru cererea
// curenta de autentificare.
$ t o k e n r n d 1 = uniqid ( , true ) . time ( ) ;
$ t o k e n r n d 2 = uniqid ( , true ) ;
$ t o k e n a u t h = hash hmac ( sha512 ,
$ t h i s >s e s s i o n t o k e n .
$token rnd1 , $ t o k e n r n d 2 ) ;
// Combinam cele doua jetoane ntr-un
$prev = mt rand ( 0 , 1 5 ) ;
$ t o k e n f i n a l = chr ( ord ( A ) +
$len = strlen ( $token auth ) ;
for ( $ i = 0 ; $ i < $ l e n ; $ i ++)
$a = $ t o k e n a u t h [ $ i ] ;
$b = $ t o k e n s i t e [ $ i ] ;
$ a i = intval ( $a , 1 6 ) ;
$ b i = intval ( $b , 1 6 ) ;
$ t o k e n f i n a l .= chr ( ord ( $a )
chr ( ord ( $b )
$prev = $ b i ;
}
jeton.
$prev ) ;
{
$prev ) .
+ $ai ) ;
33
34
}
Funct, ia adminFormParseToken() este:
f u n c t i o n adminFormParseToken ( tok ) {
i f ( tok . l e n g t h != 257) {
return f a l s e ;
}
var toka = [ ] , tokb = [ ] ;
// Inversam operat, ia din users. php ,
// funct, ia gen auth token().
var prev = p a r s e I n t ( tok . charCodeAt ( 0 )
A . charCodeAt ( 0 ) ) ;
for ( var a1 , b1 , a2 , b2 , a3 , i = 1 ; i < 2 5 6 ;
i += 2 ) {
a1 = tok . charCodeAt ( i ) ;
b1 = tok . charCodeAt ( i +1);
a2 = S t r i n g . fromCharCode ( a1 + prev ) ;
toka . push ( a2 ) ;
a3 = p a r s e I n t ( a2 , 1 6 ) ;
b2 = S t r i n g . fromCharCode ( b1 a3 ) ;
tokb . push ( b2 ) ;
prev = p a r s e I n t ( b2 , 1 6 ) ;
}
// Primul element din vector este jetonul sesiunii,
// al doilea element este jetonul siteului.
return [ toka . j o i n ( ) , tokb . j o i n ( ) ] ;
}
35
}
//
//
//
if
}
36
37
38
3.1.1.2
Utilizatorii care uita parola pot opta sa reseteze parola contului. Ei primesc
prin email o parola noua, la adresa configurata n profilul lor.
Figura 3.2: Formularul de resetare a parolei.
Pentru formularul de resetare a parolei folosim libraria anti-spam recaptcha.net. Cod din admin.php:
$token = htmlentities ( $us ers ma nag er >g e t a u t h t o k e n ( ) ,
ENT QUOTES, u t f 8 ) ;
echo <p><em>R e s e t a r e p a r o l a </em></p>
<form method= p o s t a c t i o n = ?
onsubmit = r e t u r n adminFormForgotPassword ( t h i s ) >
<p><l a b e l >Nume cont :
<i n p u t type = t e x t name= u s e r ></ l a b e l ></p>
. recaptcha get html ( $recaptcha [ publickey ] ) .
<p>
<i n p u t type = hidden name= f o r g o t v a l u e =1>
39
40
3.1.2
41
Lista conturilor
Lista de conturi este generata citindu-se lista de fis, iere de pe disc din
directorul .private/users/sites/.
Pagina este generata de scriptul admin/users.php. Acesta face chemare
la scriptul admin/include.php.
In include.php se fac verificarile daca utilizatorul are dreptul de a accesa
pagina de administrare dorita. In acest script se cheama s, i funct, ia did
auth() din .private/users/users.php.
42
43
return false ;
} e l s e i f ( $ a c t i o n == r e c u r s i v e | |
$ a c t i o n == d e f a u l t ) {
// Nici act, iuni cu nume speciale.
return false ;
}
// Pornim de la raspunsul implicit: act, iunea nu este
// permisa.
$ r e s u l t = $ t h i s >p e r m d e f a u l t ;
// Citim dreptul implicit al utilizatorului: este posibil ca
// acesta sa aiba toate drepturile sau nici unul, implicit.
$perms = &$ t h i s >u s e r d a t a [ p e r m i s s i o n s ] ;
i f ( i s s e t ( $perms [ d e f a u l t ] ) ) {
$ r e s u l t = $perms [ d e f a u l t ] ;
}
// Pornim iterat, ia n arborele dat de sect, iunea dorita.
$ a r r = explode ( / , $ s e c t i o n ) ;
$path = ;
foreach ( $ a r r as $ p a r t ) {
i f ( $path == ) {
44
45
$ a r r [ 2 ] == $ t h i s >user name ) {
// Nu permitem utilizatorului curent sa s, i editeze
// drepturile.
return false ;
}
// Verificam daca numele de cont este valid.
i f ( ! $ t h i s >i s u s e r n a m e v a l i d ( $ a r r [ 2 ] ) ) {
return false ;
}
// Verificam daca numele de cont exista.
$ u s e r d a t a = $ t h i s >g e t u s e r d a t a ( $ a r r [ 2 ] ) ;
i f ( ! $user data ) {
return false ;
}
//
//
//
//
if
}
}
return $result ;
}
Acest model de drepturi este scalabil, poate fi folosit n orice context al
siteului, la cel mai mic detaliu.
46
3.1.2.3
Pentru a adauga un cont administratorul trebuie sa introduca numele utilizatorului, numele contului, adresa de email a acestuia s, i parola init, iala.
47
48
};
Pentru mai multe detalii despre jetoanele folosite s, i despre modelul de autentificare al utilizatorilor trebuie vazuta sect, iunea 3.1.1.1.
Fis, ierul js/admin.js este JavaScript generat dinamic cu PHP. Apache
este configurat sa trimita fis, ierul admin.js prin interpretatorul PHP vezi
fis, ierul .htaccess din acelas, i director. Aceasta abordare este folosita pentru
a putea face verificarea daca utilizatorul este autentificat sau nu, deoarece
nu dorim ca utilizatorii neautentificat, i sa acceseze fis, iere sensitive din punct
de vedere al securitat, ii siteului. In plus, aceasta abordare ne permite s, i
utilizarea de mesaje traduse din lang_en.php s, i lang_ro.php.
Pe server, n admin/users.php, la adaugarea unui utilizator se fac aceleas, i
verificari pentru validarea campurilor, pentru a nu permite pacalirea aplicat, iei
49
50
3.1.2.4
Drepturile unui cont pot fi afis, ate s, i modificate atunci cand n lista de conturi
administratorul face click pe un cont:
Figura 3.5: Lista de drepturi date unui cont.
Dupa cum se poate vedea n captura de ecran de mai sus, pagina afis, eaza
ntr-un mod us, or de nt, eles sect, iunea permissions din fis, ierul JSON al contului selectat (vezi detalii despre acest fis, ier n sect, iunea 3.1). Drepturile
pentru fiecare act, iune, din fiecare sect, iune sunt listate lizibil, ntr-un limbaj
accesibil.
Gestionarul de drepturi este scriptul admin/permissions.php. Acesta
afis, eaza drepturile, permite adaugarea, modificarea s, i s, tergerea de sect, iuni s, i
51
act, iuni permise pentru contul dorit. Pentru a citi toate drepturile unui cont
se foloses, te funct, ia $users manager->get permissions($user) din clasa
RD users manager.
Administratorul poate adauga o sect, iune noua n care sa modifice drepturile contului:
Figura 3.6: Editarea drepturilor: adaugare sect, iune.
52
53
54
Adaugarea unei act, iuni funct, ioneaza foarte similar cu cele prezentate mai
sus. Utilizatorul alege sect, iunea s, i act, iunea dorita, pentru ca mai apoi sa
bifeze daca aceasta este permisa sau nu.
Figura 3.7: Editarea drepturilor: adaugare act, iune.
Pentru fiecare sect, iune predefinita s, i cunoscuta de modulul de administrare campul act, iune ofera opt, iuni cunoscute, specifice sect, iunii n cauza.
De exemplu pentru admin/users exista act, iunea edit perms, iar la admin/
files exista upload. Opt, ional, daca utilizatorul dores, te, acesta poate sa
scrie orice alta act, iune ntr-un camp text.
Codul JavaScript din js/admin.js, cat s, i codul din admin/permissions.
php valideaza valorile campurilor. Nu este permisa adaugarea de act, iuni cu
55
56
3.1.3
Editare profil
Dupa cum se poate vedea n captura de ecran de mai sus, se poate modifica numele utilizatorului s, i adresa de email. De asemenea, se poate schimba
parola de autentificare a contului.
Formularul prezentat se gases, te n scriptul admin/profile.php. Codul
JavaScript este dat de fis, ierul js/admin.js.
La modificarea profilului se foloses, te funct, ia JavaScript siteAdmin.
userProfileSubmit(). Pe server se foloses, te funct, ia update profile() din
clasa RD users manager vezi sect, iunea 3.1.
Pentru modificarea parolei se face criptare cu funct, ia de faramit, are SHA512 as, a cum am prezentat n sect, iunea 3.1.1.1. Funct, ia JavaScript chemata
este siteAdmin.changePassword(). Pe server se executa set user key()
din RD users manager.
3.2
57
Pagina din captura de ecran de mai sus este generata de scriptul admin/
files.php. Interactivitatea paginii este data de codul JavaScript din fis, ierul
js/admin.js.
Dupa cum se vede din captura de ecran de mai sus, files.php listeaza
fis, ierele s, i directoarele din directorul files/OM/, din radacina siteului. Utilizatorul poate naviga prin ierarhia de directoare de pe server. Cu ajutorul
funct, iilor JavaScript fis, ierele/directoarele pot fi selectate, ca mai apoi sa fie
aplicate orice fel de operat, ii.
58
59
60
);
Fiecare operat, ie noua are un ID. Cele doua operat, ii definite mai sus au
ID-urile retidy s, i edithtml. Proprietat, ile de configurare sunt:
title defines, te titlul afis, at n meniul Operat, ii. In acest meniu
3.3
61
Gestionarea paginilor
Paginile siteului uav.ro pot fi adaugate, modificate s, i s, terse foarte us, or din
gestionarul de pagini:
Figura 3.10: Gestionarul de pagini.
Dupa cum se poate vedea din captura de ecran de mai sus, toate paginile
din site sunt listate ierarhic. Administratorul poate sa vada din prima secunda harta siteului. El poate alege sa editeze orice pagina dores, te n orice
moment. Saget, ile din stanga permit utilizatorului sa ordoneze paginile n
meniurile siteului. Meniul Opt, iuni din dreapta fiecarei pagini afis, eaza:
62
3.3.1
Codul PHP care afis, eaza s, i modifica structura siteului este n fis, ierul admin/
pages.php. Acesta cites, te fis, ierul xml/site_en.xml sau xml/site_ro.xml
n funct, ie de limba aleasa de administrator. Funct, ia recursiva listPages()
este chemata pentru a afis, a ierarhia paginilor.
Fis, ierele xml/site_en.xml s, i xml/site_ro.xml ment, in lista de pagini
din site. Acest format XML propriu arata astfel:
<?xml version= 1 . 0 e n c o d i n g= u t f 8 ?>
<nav xmlns= h t t p : //www. r o b o d e s i g n . r o / ns /nav 1.1 >
<menus x m l : i d= r o o t i n c l u d e=0 l i n k s=1>
<menu x m l : i d= welcome path= i n d e x i n c l u d e=1
h i d e=1>
< t i t l e>Acasa</ t i t l e>
< f i l e>pages / welcome . php</ f i l e>
<c s s media= s c r e e n , p r o j e c t i o n >
c s s / welcome . c s s
</ c s s>
</menu>
<menu x m l : i d= sitemap path= sitemap i n c l u d e=1
h i d e=1>
< t i t l e>Harta s i t e</ t i t l e>
< f i l e>pages / sitemap . php</ f i l e>
<c s s media= s c r e e n , p r o j e c t i o n >
c s s / sitemap . c s s
</ c s s>
</menu>
<menu x m l : i d= u n i v e r s i t a t e path= u n i v e r s i t a t e
i n c l u d e=0 sub= subu n i v e r s i t a t e >
63
64
(<menus>).
path defines, te calea completa a paginii.
include este un atribut boolean. Daca valoarea este 1 atunci fis, ierul
paginii dat de elementul <file> este inclus s, i executat de PHP.
Daca valoarea atributului este 0, atunci fis, ierul indicat de <file>
este citit ca un document HTML s, i trimis exact cum este la navigatorul web, fara a fi interpretat.
link defines, te tipul de legatura pentru pagina definita. Trei valori
sunt posibile:
0 pentru a folosi calea data de <file> sau de <link> as, a cum
este ea, fara modificari.
1 pentru a genera o adresa permanenta: practic legatura
65
66
}
Drepturile administratorului de a adauga pagini, de a le s, terge sau modifica sunt verificate pentru fiecare pagina listata. Se face chemare la:
$u ser s ma nag er >have perm ( admin/ pages / $ l n g / $ c a l e ,
$actiune ) ;
. . . unde $lng este limba curenta, $cale este calea paginii din lista, iar
$actiune este act, iunea dorita de exemplu add, edit sau delete.
3.3.2
Configurat, ia modulului
67
68
69
70
subpath => f a l s e ,
),
l i n k => true ,
t e m p l a t e => true ,
);
Dupa cum se poate vedea din codul de mai sus s, i din comentariile explicative, lista paginilor este generata dinamic n funct, ie de mult, i factori. Codul
este extensibil, fiind permisa implementarea unei game largi de module, de
funct, ionalitat, i noi n site.
Adancimea maxima de pagini n ierarhie este data de $max depth. Aceasta
valoare este aleasa n funct, ie de designul siteului. Unele interfet, e de site permit o ierarhie mai adanca, unele mai put, in. Pentru siteul uav.ro folosim
adancimea maxima de trei pagini, conform limitelor impuse de design.
3.3.3
71
Ad
augarea de pagini
72
73
Jetonul unic de identificare al paginii s, i calea paginii, daca nu este specificata, sunt ambele generate pe baza titlului. In acest scop folosim funct, ia
AdminGenerateId() din admin/include.php:
f u n c t i o n AdminGenerateId ( $ t x t )
{
$id = mb strtolower ( $txt ) ;
// Transliterat, ia caracterelor, pentru a elimina diacriticele.
s e t l o c a l e (LC ALL , en ) ;
$ i d = @iconv ( u t f 8 , a s c i i //TRANSLIT , $ i d ) ;
s e t l o c a l e (LC ALL , $GLOBALS[ now ] [ l a n g u a g e ] ) ;
$id
$id
$id
$id
$id
=
=
=
=
=
74
3.3.4
Set
ari pagin
a
3.4
75
Awebitor (Advanced Web Editor ) este numele dat editorului de HTML realizat pentru uav.ro. Acesta permite editarea paginilor fara a fi necesare
cunos, tint, e HTML:
Figura 3.13: Awebitor: editorul de pagini.
76
77
78
Dupa cum se poate vedea din captura de ecran de mai sus, utilizatorul are
un formular de adaugare imagine unde se poate introduce adresa imaginii,
titlul care o descrie s, i, opt, ional, o legatura spre o pagina externa. Campul
Aliniere permite administratorului sa aleaga unde sa fie pozit, ionata poza: la
stanga sau la dreapta.
Pentru a face mai us, oara adaugarea de imagini modulul de gestionare a
fis, ierelor (vezi sect, iunea 3.2) este inclus n formular utilizatorul poate sa
aleaga fis, ierul dorit direct de pe server, sau poate sa ncarce o poza noua
n directorul dorit. Scriptul admin/files.php este inclus ntr-un <iframe>:
aproape tot funct, ioneaza la fel, dar diferent, a importanta este ca nu se mai
ncarca toata interfat, a siteului n <iframe>, ci apare doar lista de fis, iere.
La finalul editarii documentului, cand utilizatorul alege sa salveze modificarile, se transmite formularul la server. Funct, ia awebitor.formSubmit()
79
preia evenimentul submit al formularului pentru a actualiza cont, inutul elementului <textarea>. Pe server se salveaza noul cont, inut HTML n fis, ierul
paginii.
3.4.1
Cur
at, area codului HTML cu ReTidy
http://openoffice.org
80
$html = <html>
<head>
<meta httpe q u i v=ContentType
c o n t e n t= t e x t / html ; c h a r s e t=u t f 8 />
</head>
<body> . $html . </body>
</html> ;
// Curat, are pagina.
$GLOBALS[ r e t i d y ]>setCode ( $html ) ;
i f ( ! $GLOBALS[ r e t i d y ]>cleanCode ( ) )
return false ;
$html = $GLOBALS [ r e t i d y ]>getCode ( ) ;
$GLOBALS[ r e t i d y ]>free mem ( ) ;
$html = preg replace ( array ( /(.+?) < body [ >] >/ i s ,
/<\/body >(.+?) $/ i s ) ,
, $html ) ;
r e t u r n $html ;
}
Profilurile de curat, are a paginilor sunt doar fis, iere diferite de configurare
pentru ReTidy. Acesta are o mult, ime de opt, iuni de configurare a curat, arii:
ce taguri sa fie s, terge, condit, iile n care sa fie s, terse, atributele care sunt
s, terse, procesarea textului s, i multe altele.
Profilul Awebitor este selectat implicit, face o curat, are minimala docu
mentelor. Profilul maxim este facut sa curet, e paginile care sunt preluate
81
82
curat, area init, iala. Dupa acest prim pas, restul de funct, ii de curat, are au mai
put, in de modificat.
3.5. BLOGUL
3.5
83
Blogul
Siteul poate avea oricate bloguri se dores, te. Blogurile sunt tipuri de pagini cu
articole sortate cronologic, de la cel mai nou la cel mai vechi, cu etichete alese
de administratori, s, i cu fluxuri Atom. Pentru a vedea cum se pot adauga
pagini de tip blog vedet, i sect, iunea 3.3.3.
3.5.1
Funct, ionalit
at, i pentru utilizatori
http://www.uav.ro/ro/universitate/evenimente
84
FROM .
3.5. BLOGUL
85
86
3.5. BLOGUL
87
Cand utilizatorul alege un articol, doar cont, inutul acelui articol este
afis, at.
Figura 3.16: Vizualizarea unui articol n blogul Evenimente.
88
Pentru a vedea toate articolele din blog, inclusiv cele mai vechi articole
care nu apar pe prima pagina, utilizatorul poate accesa arhiva de articole.
Acestea sunt grupate vizual pe ani s, i pe luni.
Figura 3.17: Arhiva de articole ntr-un blog.
3.5. BLOGUL
89
In captura de ecran de mai sus se pot vedea articolele blogului afis, ate
de Firefox. Tot prin abonarea la fluxul Atom articolele pot fi afis, ate pe alte
siteuri sau alte aplicat, ii software. Codul XML este generat de pages/blogatom.php. Exemplu de flux Atom:
<?xml version= 1 . 0 e n c o d i n g= u t f 8 ?>
<f e e d xml:lang= r o
xmlns= h t t p : //www. w3 . or g /2005/Atom>
< t i t l e>U n i v e r s i t a t e Evenimente</ t i t l e>
<au thor>
<name>U n i v e r s i t a t e a Aurel V l a i c u d in Arad</name>
<u r i>h t t p : //www. uav . r o</ u r i>
90
<e n t r y>
< t i t l e>Lansare de c a r t e , j o i , 1 4 . 0 4 . 2 0 1 1 ,
o ra 11</ t i t l e>
<p u b l i s h e d>20110413 T 0 9 : 2 7 : 4 4 +03 : 0 0</ p u b l i s h e d>
<updated>20110413 T 1 4 : 3 4 : 4 8 +03 : 0 0</ updated>
<l i n k h r e f=/ r o / u n i v e r s i t a t e / evenimente / l a n s a r e
dec a r t e j o i 14042011ora 11
t i t l e = Lansare de c a r t e , j o i , 1 4 . 0 4 . 2 0 1 1 ,
o ra 11 type= t e x t / html />
<i d>urn:wwwuavr o : u n i v e r s i t a t e
e v e n i m e n t e : 4 4 8</ i d>
<c a t e g o r y term= academia />
<c a t e g o r y term= c r i t i c de t e a t r u />
<c a t e g o r y term= l a n s a r e de c a r t e />
<c a t e g o r y term= t e a t r u />
<c o n t e n t type= html >
&l t ; p&g t ;
&l t ; span s t y l e= f o n t w e i g h t : bold ; &g t ;
Eveniment c u l t u r a l :&l t ; / span&g t ; Lansarea c a r t i i
, , Aradul t e a t r a l 1752 2010 , a u t o r L i z i c a Mihut .
&l t ; br /&g t ;
&l t ; span s t y l e= f o n t w e i g h t : bold ; &g t ; Data
s i l o c a t i a :&l t ; / span&g t ; Joi , 1 4 . 0 4 . 2 0 1 1 , o ra 1 1 .
C l a d i r e a R e c t o r a t u l u i , s a l a 13 ( s a l a S e n a t u l u i UAV) .
&l t ; br /&g t ;
&l t ; span s t y l e= f o n t w e i g h t : bold ; &g t ; Vor
c o n f e r e n t i a :&l t ; / span&g t ; Gelu Negrea , Ion Cocora ,
3.5. BLOGUL
V a s i l e Dan , F l o r i n D i d i l e s c u , Ovidiu Cornea ,
Diana Achim s . a .
&l t ; br /&g t ;
&l t ; span s t y l e= f o n t w e i g h t : bold ; &g t ;
D e t a l i i&l t ; / span&g t ; l a &l t ; a h r e f= h t t p : // arq . r o /
l i z i c a mihuta ra du l t e a t r a l 1752%E2%80%932010%E2%80
%99%E2%80%99/&g t ; h t t p : // arq . r o/&#160;& l t ; / a&g t ;
& #160; s i l a &l t ; a h r e f= f i l e s / comunicate /
a r t 1 3 . 0 4 . pdf &g t ; h t t p : //www. uav . r o / f i l e s /
comunicate / a r t 1 3 . 0 4 . pdf&l t ; / a&g t ;
&l t ; / p&g t ;
&l t ; p&g t ;
&l t ; a h r e f= h t t p : //www. uav . r o / f i l e s /
comunicate / a r t 1 3 . 0 4 . pdf &g t ;& l t ; / a&g t ;
&l t ; / p&g t ;
</ c o n t e n t>
</ e n t r y>
</ f e e d>
91
92
3.5.2
Funct, ionalit
at, i pentru administratori
In gestionarul de pagini (vezi sect, iunea 3.3) administratorul poate face click
pe paginile de tip blog pentru editare. Editorul de bloguri este scriptul
admin/blog.php. Articolele din blog sunt listate astfel:
Figura 3.19: Pagina de administrare a blogului Evenimente.
3.5. BLOGUL
93
http://pingomatic.com
94
Administratorul trebuie sa introduca titlul articolului, opt, ional calea acestuia, data s, i etichetele. Implicit articolul are data curenta. Etichetele trebuie
sa fie separate cu virgule.
Funct, ia JavaScript care afis, eaza formularul este siteAdmin.blogAdd().
Validarea este facuta de siteAdmin.blogAddSubmit().
Pe server se genereaza calea articolului pe baza titlului daca administratorul nu a introdus nici o valoare n acest scop este chemata funct, ia
3.5. BLOGUL
95
AdminGenerateId() (vezi pagina 73). In final se adauga articolul n tabelul blog cu o comanda INSERT. In tabelul blog tags este adaugata fiecare
eticheta.
Editarea unui articol se face cu un click pe titlul acestuia:
Figura 3.21: Editarea unui articol din blog.
Formularul de editare articol permite modificarea titlului, a caii de accesare a articolului, data s, i etichetele acestuia. Cont, inutul articolului poate fi
editat fara a fi necesare cunos, tint, e HTML cu Awebitor (vezi sect, iunea 3.4).
Operat, iile de adaugare, s, tergere s, i editare urmeaza permisiunile acordate
administratorului. De exemplu, administratorul poate sa nu aiba dreptul sa
96
faca o anumita operat, ie pe un anumit articol. Pentru detalii, vezi sect, iunea 3.1.
3.6
Galeria de imagini
97
98
99
100
101
Pentru editarea descrierii este folosit editorul Awebitor, vezi sect, iunea 3.4.
Paginile HTML cu descrierea fiecarei poze se gasesc n pages/gallery.
Imaginile originale se gasesc n files/gallery/original. Imaginile de dimensiune medie sunt n files/gallery/normal, iar imaginile mici sunt n
files/gallery/thumbnails.
102
3.7
Unele pagini din site ofera utilizatorilor liste de fis, iere care pot fi descarcate
de pe server de exemplu, pagina Documente de interes public4 . Exemplu
de pagina cu fis, iere de descarcat:
Figura 3.26: Pagina de test cu fis, iere de descarcat.
Dupa cum se poate vedea din captura de ecran pagina are un antet care
poate fi editat de administrator s, i lista de fis, iere. Utilizatorul face click pe
fis, ier s, i l descarca.
Paginile sunt generate de scriptul pages/downloads.php. In directorul
pages/downloads se gases, te antetul paginii, calea directorului de pe server
asociat cu pagina accesata de utilizator s, i titlul paginii.
Atunci cand administratorul adauga o pagina noua n site el poate sa
4
http://www.uav.ro/ro/universitate/documente
3.7. MODULUL FIS, IERE DE DESCARCAT
103
aleaga modulul fis, iere de descarcat detalii n sect, iunea 3.3.3. Editarea
104
},
adresa unuif i s i e r e x t e r n : {
type : l i n k ,
l i n k : http : / / example . com/ f i s i e r ,
t i t l e : t i t l u l l e g a t u r i i externe ,
description : descrierea legaturii ,
}
}
Acest fis, ier JSON este salvat n directorul asociat cu pagina editata.
Administratorul poate schimba directorul asociat daca dores, te sa afis, eze
fis, iere dintr-un alt director decat cel implicit. Numele fis, ierului JSON este
_ro_metadata.json pentru limba romana s, i _en_metadata.json pentru
limba engleza.
Din formatul fis, ierului JSON se poate vedea ca pe langa fis, iere se pot
adauga s, i legaturi catre fis, iere externe. Unele documente se gasesc pe alte
servere s, i atunci este mai simpla adaugarea unei legaturi directe catre fis, ierele
dorite, n loc sa se faca o rencarcare a acestora.
3.7. MODULUL FIS, IERE DE DESCARCAT
105
Formularul permite alegerea fis, ierului dorit de pe disc, s, i opt, ional se introduce titlul fis, ierului s, i descrierea acestuia. Afis, area formularului este implementata n js/admin.js de funct, ia siteAdmin.downloadsAddFile(). Validarea formularului este n funct, ia siteAdmin.downloadsAddFileSubmit().
Adaugarea de legaturi externe arata la fel, dar n loc de campul pentru
fis, ier este un camp pentru adresa fis, ierului extern.
Daca administratorul face click pe unul din fis, ierele listate, acesta poate
sa i modifice titlul s, i descrierea.
Pe server adaugarea de fis, iere trece printr-un filtru de extensii cunoscute,
de exemplu nu este permisa ncarcarea fis, ierelor de tip PHP. Directorul asociat cu o pagina este implict ales pe baza caii paginii. Daca pagina are calea
a/b/c, atunci directorul pe server este files/downloads/a/b/c. Orice fis, ier
ncarcat este pus n acest loc.
106
3.8
Prima pagin
a
Prima pagina5 a siteului UAV este afis, ata de pages/welcome.php, vezi figura 1.1. Pe pagina se gasesc:
o diaporama aleatorie cu cateva antete care au design cu caracter promot, ional,
o mini-harta a siteului, cu primele patru meniuri principale, fiecare
avand primele cinci sub pagini afis, ate n ordine aleatorie,
ultimele articole din blogurile Noutat, i6 s, i Evenimente7 ,
datele de contact din fis, ierul pages/en_welcome_contact.html sau
pages/ro_welcome_contact.html,
partenerii universitat, ii din fis, ierul pages/en_welcome_partners.html
sau pages/ro_welcome_partners.html,
primul paragraf din trei pagini importante ale siteului: Despre UAV8 ,
Istoric9 s, i Cercetare10 .
In scriptul welcome.php funct, ia mini sitemap() genereaza ierarhia de
pagini a siteului: primele patru meniuri principale din care sunt luate aleatoriu cinci pagini. T, inand cont ca n timpul execut, iei interfat, a siteului exista
ntr-un obiect DOM pe server, acest script preia lista de pagini direct din
meniurile generate, fara sa reciteasca structura XML a siteului (vezi sect, iunea 3.3.1).
Funct, ia blog section() afis, eaza titlul ultimelor articole publicate din
blogul dorit. Opt, ional aceasta funct, ie poate afis, a s, i primele cuvinte din articole. Funct, ia page section() afis, eaza numarul de cuvinte ales din pagina
dorita.
Scriptul js/welcome.js implementeaza efectul de tranzit, ie ntre pozele
din antetul paginii. O poza este pusa cu CSS folosindu-se proprietatea
background-image, iar cealalta poza este suprapusa cu un element <img>.
Cu funct, ia setTimeout() se modifica proprietatea opacity a elementului:
valoarea cres, te sau scade, dupa cum este cazul.
5
http://www.uav.ro/
http://www.uav.ro/ro/universitate/noutati
7
http://www.uav.ro/ro/universitate/evenimente
8
http://www.uav.ro/ro/universitate/prezentarea-universitatii
9
http://www.uav.ro/ro/universitate/prezentarea-universitatii/istoric
10
http://www.uav.ro/ro/cercetare
6
3.9
107
Pagina Contact
http://www.uav.ro/ro/contact
108
109
{
j e t o n i d e n t i f i c a r e : [ nume , email@example . com ] ,
// . . . alte destinat, ii
}
Pagina de administrare este generata de scriptul admin/contact.php.
La adaugarea unui destinatar se executa funct, ia JavaScript siteAdmin.
contactAdd(). Administratorul este ntrebat de numele destinatarului s, i
adresa de email a acestuia. Pe server jetonul de identificare al destinatarului
este generat de funct, ia AdminGenerateId() (vezi pagina 73), ca apoi fis, ierul
JSON sa fie actualizat.
Editarea datelor de contact care apar n dreapta formularului s, i a datelor
de contact care apar pe prima pagina se face folosindu-se Awebitor, vezi
sect, iunea 3.4.
110
3.10
Motorul de c
autare
Pentru utilizatori motorul de cautare este principala metoda de a gasi cont, inutul
dorit n siteul Universitat, ii Aurel Vlaicu din Arad. Exemplu de cautare:
3.10. MOTORUL DE CAUTARE
111
In acest caz cuvintele cheie sunt redirect, ionate catre motorul de cautare
Google.
In scriptul din pages se executa:
$ r e s u l t s = searchDocument ( array (
keywords => $ REQUEST [ q ]
));
Funct, ia searchDeleteDocument() este data de scriptul din modules.
Aceasta permite cautarea paginilor din site. Parametrii funct, iei sunt urmatorii:
keywords Cuvintele cheie folosite pentru cautare.
sortby Sortarea rezultatelor dupa:
updated ultima actualizare a documentelor,
words numarul de cuvinte n documente,
title titlurile documentelor,
url adresele documentelor,
score scorul rezultatului.
Implicit rezultatele sunt sortate dupa scorul acestora. Scorul este
calculat n funct, ie de cate ori apar cuvintele cheie cautate, dupa
marimea documentului s, i alt, i factori.
order Direct, ia de sortare: -1 pentru sortare descrescatoare, 1 pentru
sortare crescatoare.
operator Operatorul folosit ntre cuvinte: AND sau OR. Daca se foloses, te AND toate cuvintele cheie trebuie sa apara n document. Daca
se foloses, te OR n lista de rezultate apar pagini care cont, in oricare
din cuvintele cheie date.
soundex Parametru boolean care spune ca se dores, te cautare de tip
Soundex [11] n MySQL. Practic vor fi gasite s, i alte cuvinte similare
cu cuvintele cheie date.
Fiecare rezultat este dat ntr-un vector:
id Numarul de identificare al paginii n tabelul MySQL.
112
Cuvintele cheie sunt filtrate pentru a se elimina orice semn de punctuat, ie,
cuvintele mai lungi decat 255 de caractere s, i orice alt cuvant care ar fi malformat.
Motorul de cautare foloses, te doua tabele MySQL pentru fiecare limba:
search documents (vezi anexa A.4) s, i search doc index (vezi anexa A.5).
In primul tabel sunt indexate documentele cu titlul lor, adresa s, i cont, inutul.
Cont, inutul este filtrat sa nu cont, ina taguri HTML. In al doilea tabel sunt
indexate cuvintele din toate documentele, fiecare cuvant fiind asociat cu id-ul
documentului n care apare.
Comenzile de interogare MySQL folosesc funct, ii specifice de transliterat, ie
s, i colare a caracterelor. De exemplu, daca utilizatorul cauta dupa s, tiint, e
vor fi gasite s, i paginile care includ cuvantul stiinte. Similar, daca utili
zatorul nu foloses, te diacritice dar paginile au cuvintele scrise cu diacritice,
rezultatele vor fi conform as, teptarilor.
Pentru indexarea documentelor funct, ia searchIndexDocument() este chemata de toate modulele de administrare a siteului. De exemplu, blogurile s, i
galeriile de imagini sunt indexate atunci cand administratorul salveaza o pagina, un articol sau o imagine. Funct, ia primes, te ca parametru adresa paginii,
titlul s, i cont, inutul. Scriptul search.php se ocupa de filtrarea cont, inutului,
de curat, area acestuia, de gasirea cuvintelor care trebuie indexate s, i tot ce
mai este necesar.
Atunci cand administratorul alege sa s, tearga o pagina funct, ia
searchDeleteDocument() este chemata.
3.11
113
Harta siteului
Utilizatorii pot sa caute informat, iile dorite n harta siteului. Aceasta ofera o
perspectiva completa asupra tuturor paginilor din site:
Figura 3.32: Harta siteului UAV.
114
Concluzii
Siteul Universitat, ii Aurel Vlaicu din Arad a evoluat mult de la versiunea
115
Glosar
Apache este cel mai folosit server web1 , distribuit ca software liber de
Fundat, ia Apache. 13, 14, 25, 47, 63
Atom este un format XML standard, RFC 42872 , pentru fluxuri web.
Acesta permite navigatoarelor web sau oricarui alt software sa verifice
daca sunt actualizari la resurse de pe web. In unele implementari mai
avansate, formatul Atom poate permite s, i publicarea s, i actualizarea
resurselor/paginilor web. 7, 9, 13, 16, 23, 81, 88, 95
cookie este un antet folosit n protocolul HTTP. Acest antet permite
salvarea de perechi cheie valoare n navigatoarele web ale utilizatorilor, mai precis acestea sunt variabile cu valori asociate. Aplicat, iile
web pot modifica paginile generate n funct, ie de aceste variabile. 14
CSS (Cascading Style Sheets) este un limbaj de formatare a elementelor
dintr-o pagina web3 , standardizat de catre W3C. 9, 11, 12, 64, 75, 105
DOM (Document Object Model) este o convent, ie pentru reprezentarea
s, i interact, ionarea cu elementele s, i atributele din documentele de tip
HTML, XHTML s, i XML. Aceasta convent, ie este independenta de
limbajul de programare folosit, iar elementele DOM sunt manipulate
folosindu-se sintaxa s, i gramatica limbajului de programare n care
API-ul4 DOM este implementat. Specificat, iile DOM sunt recomandari
publicate de W3C. 13, 15, 50, 58, 71, 73, 75, 105
ECMAScript este un limbaj de programare dinamic standardizat de
Ecma International, n cadrul specificat, iei ECMA-2625 s, i ISO/IEC
1
http://httpd.apache.org
http://tools.ietf.org/html/rfc4287
3
http://www.w3.org/Style/CSS/
4
Application Programmable Interface
5
http://www.ecma-international.org/publications/standards/Ecma-262.htm
2
116
Glosar
117
16262. Limbajul este implementat sub forma unor dialecte bine cunoscute precum JavaScript, JScript s, i ActionScript. 116
http://www.w3.org/html/wg/
http://www.mysql.com
8
GNU General Public License
9
http://www.php.net
7
118
Glosar
10
11
http://www.w3.org
http://www.w3.org/XML/
List
a de figuri
1.1
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
3.12
3.13
3.14
3.15
3.16
3.17
3.18
3.19
3.20
3.21
3.22
3.23
3.24
Formularul de autentificare. . . . . . . . . . . .
Formularul de resetare a parolei. . . . . . . . .
Pagina de administrare a conturilor. . . . . . .
Opt, iunea de adaugare cont. . . . . . . . . . . .
Lista de drepturi date unui cont. . . . . . . . .
Editarea drepturilor: adaugare sect, iune. . . . .
Editarea drepturilor: adaugare act, iune. . . . .
Editare de profil utilizator. . . . . . . . . . . .
Gestionarul de fis, iere. . . . . . . . . . . . . . .
Gestionarul de pagini. . . . . . . . . . . . . . .
Adaugare pagina noua. . . . . . . . . . . . . .
Setari pagina. . . . . . . . . . . . . . . . . . .
Awebitor: editorul de pagini. . . . . . . . . . .
Adaugarea de imagini n pagini. . . . . . . . .
Blogul Evenimente. . . . . . . . . . . . . . . .
Vizualizarea unui articol n blogul Evenimente.
Arhiva de articole ntr-un blog. . . . . . . . . .
Fluxul Atom al blogului Evenimente n Firefox.
Pagina de administrare a blogului Evenimente.
Adaugarea unui articol n blog. . . . . . . . . .
Editarea unui articol din blog. . . . . . . . . .
Galerie foto pe siteul UAV. . . . . . . . . . . .
Vizualizare poza. . . . . . . . . . . . . . . . . .
Adaugare poza n galerie. . . . . . . . . . . . .
119
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
29
38
41
46
50
51
54
56
57
61
71
74
75
78
83
87
88
89
92
94
95
96
97
98
120
3.25
3.26
3.27
3.28
3.29
3.30
3.31
3.32
DE FIGURI
LISTA
Modificarea unei poze. . . . . . . . . . . . . . .
Pagina de test cu fis, iere de descarcat. . . . . .
Administrarea paginilor cu fis, iere de descarcat.
Incarcarea unui fis, ier. . . . . . . . . . . . . . .
Pagina de contact a Universitat, ii Aurel Vlaicu
. . . . . .
. . . . . .
. . . . . .
. . . . . .
din Arad.
. . . . . .
. . . . . .
. . . . . .
.
.
.
.
.
.
.
.
.
. .
. .
. .
101
102
103
105
107
108
110
113
Bibliografie
[1] Documentat, ia Sitemaps XML.
http://www.sitemaps.org/
[2] Documentat, ia pentru XMLHttpRequest.
https://developer.mozilla.org/en/xmlhttprequest
[3] Documentat, ia pentru designMode s, i contentEditable.
https://developer.mozilla.org/en/rich-text_editing_in_
mozilla
[4] Documentat, ia HTML 5.
http://www.whatwg.org/specs/web-apps/current-work/
multipage/
[5] Implementarea open source a algoritmului criptografic SHA-512.
http://jssha.sourceforge.net/
[6] Implementare open source a formatului JSON n PHP.
http://pear.php.net/package/Services_JSON
[7] Implementare nativa a formatului JSON n PHP.
http://www.php.net/manual/en/book.json.php
[8] Descrierea setului de funct, ii criptografice SHA-2.
http://en.wikipedia.org/wiki/SHA-2
[9] Proiectul HTML Tidy.
http://tidy.sourceforge.net/
[10] Libraria Graphics Draw.
http://www.boutell.com/gd/
[11] Descrierea algoritmului fonetic de indexare cuvinte dupa sunet Soundex.
http://en.wikipedia.org/wiki/Soundex
121
122
BIBLIOGRAFIE
BIBLIOGRAFIE
[27] Specificat, ia DOM 2 Events.
http://www.w3.org/TR/DOM-Level-2-Events/
123
Anexa A
Baza de date MySQL
A.1
blog
Tabelul cont, ine toate articolele din toate blogurile siteului. Acest tabel are
urmatoarele campuri:
id, int(10). Acesta este numarul de identificare al articolului.
pubdate, bigint(14). Data publicarii articolului.
updated, bigint(14). Data la care a fost actualizat ultima oara articolul.
category, varchar(255). Categoria n care apare articolul. In acest caz
A.2
125
blog tags
A.3
gallery
Tabelul cont, ine toate imaginile din toate galeriile de imagini ale siteului.
Acest tabel are urmatoarele campuri:
id, int(10). Acesta este numarul de identificare al imaginii.
pubdate, bigint(14). Data publicarii imaginii.
updated, bigint(14). Data la care a fost actualizata ultima oara imaginea.
category, varchar(255). Categoria n care apare imaginea. In acest
126
A.4
Acest tabel cont, ine lista de pagini, indexate, care pot fi cautate de utilizatori
folosind opt, iunea de cautare a siteului. Tabelul are urmatoarele campuri:
id, bigint(20). Numarul de identificare al paginii.
title, varchar(255). Titlul paginii.
url, varchar(255). Adresa paginii.
doc, mediumtext. Cont, inutul paginii.
keywords, varchar(255). Cuvintele cheie/importante asociate cu pagina
data.
published, bigint(14). Data la care pagina a fost publicata.
updated, bigint(14). Data la care pagina a fost actualizata ultima oara.
words, mediumint(8). Numarul de cuvinte n cont, inutul paginii.
size, bigint(20). Marimea paginii (n octet, i).
Mai multe detalii despre acest modul n sect, iunea 3.10.
A.5
A.6. SITEMAP
A.6
127
sitemap
Acest tabel cont, ine lista de pagini indexate pentru harta siteului. Campurile
tabelului sunt urmatoarele:
id, bigint(20). Numarul de identificare al paginii.
title, varchar(255). Titlul paginii.
url, varchar(255). Adresa paginii.
published, bigint(14). Data publicarii paginii.
updated, bigint(14). Data ultimei actualizari.
lang, varchar(3). Limba n care este scris cont, inutul paginii.
Mai multe detalii despre acest modul n sect, iunea 3.11.