Sistem de management al conținutului, cu aplicații în e -learning ii UNIVERSITATEA DIN CRAIOVA FACULTATEA DE AUTOMATICĂ, CALCULATOARE ȘI ELECTRONICĂ… [604783]
UNIVERSITATEA DIN CRAIOVA
FACULTATEA DE AUTOMATICĂ, CALCULATOARE ȘI
ELECTRONICĂ
DEPARTAMENTUL DE AUTOMATICĂ ȘI ELECTRONICĂ
PROIECT DE DIPLOMĂ
Tania-Andreea Cîrjaliu
COORDONATOR ȘTIINȚIFIC
Conf. dr. ing. Daniela DANCIU
Iulie 2019
CRAIOVA
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
ii
UNIVERSITATEA DIN CRAIOVA
FACULTATEA DE AUTOMATICĂ, CALCULATOARE ȘI
ELECTRONICĂ
DEPARTAMENTUL DE AUTOMATICĂ ȘI ELECTRONICĂ
Sistem de management al conținutului, cu aplicații în e -learning
Tania-Andreea Cîrjaliu
COORDONATOR ȘTIINȚIFIC
Conf. dr. ing. Daniela DANCIU
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
iii
Iulie 2019
CRAIOVA
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
iv
DECLARAȚIE DE ORIGINALITATE
Subsemnata Alina -Maria Cîrjaliu , student a la specializarea Ingineria sistemelor multimedia din
cadrul Facultății de Automatică, Calculatoare și Electronică a Universității din C raiova, certific prin
prezenta că am luat la cunoștință de cele prezentate mai jos și că îmi asum, în acest context,
originalitatea proiectului meu de licență:
cu titlul Sistem de management al conținutului, cu aplicații în e -learning ,
coordonată de Conf . dr. ing. Daniela DANCIU ,
prezentată în sesiunea Iulie 2017.
La elaborarea proiectului de licență, se consideră plagiat una dintre următoarele acțiuni:
reproducerea exactă a cuvintelor unui alt autor, dintr -o altă lucrare, în limba română sau prin
tradu cere dintr -o altă limbă, dacă se omit ghilimele și referința precisă,
redarea cu alte cuvinte, reformularea prin cuvinte proprii sau rezumarea ideilor din alte
lucrări, dacă nu se indică sursa bibliografică,
prezentarea unor date experimentale obținute s au a unor aplicații realizate de alți autori fără
menționarea corectă a acestor surse,
însușirea totală sau parțială a unei lucrări în care regulile de mai sus sunt respectate, dar care
are alt autor.
Pentru evitarea acestor situații neplăcute se recoman dă:
plasarea între ghilimele a citatelor directe și indicarea referinței într -o listă corespunzătoare la
sfărșitul lucrării,
indicarea în text a reformulării unei idei, opinii sau teorii și corespunzător în lista de referințe
a sursei originale de la car e s-a făcut preluarea,
precizarea sursei de la care s -au preluat date experimentale, descrieri tehnice, figuri, imagini,
statistici, tabele et caetera,
precizarea referințelor poate fi omisă dacă se folosesc informații sau teorii arhicunoscute, a
căror p aternitate este unanim cunoscută și acceptată.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
v
Data, Semnătura candidat: [anonimizat],
UNIVERSITATEA DIN CRAIOVA
Facultatea de Automatică, Calculatoare și Electronică
Departamentul de Automatică și Electronică
Aprobat la data de
…………………
Director de
departament,
Prof. dr. ing.
Emil PETRE
PROIECTUL DE DIPLOMĂ
Numele și prenumele student: [anonimizat]/ -ei:
Cîrjaliu Tania-Andreea
Enunțul temei:
Sistem de management al conținutului cu aplicații în e –
learning
Datele de pornire:
Administrarea conținutu lui pentru o aplcație multimedia on –
line.
Conținutul proiectului :
1. Introducere
2. Tehnologii utilizate în dezvoltarea aplicației:
3. Implementarea proiectului
4. Prezentarea proiectului
5. Concluzii
Material grafic obligatoriu:
Da
Consultații:
Periodice
Conducătorul științific
(titlul, nume și prenume, semnătura): Conf. dr. ing. Daniela DANCIU
Data eliberării temei: 15.10.2016
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
vi
Termenul estimat de predare a
proiectului :
30.06.201 7
Data predării proiectului de către
student și semnătura acestuia:
UNIVERSITATEA DIN CRAIOVA
Facultatea de Automatică, Calculatoare și Electronică
Departamentul de Automatică și Electronică
REFERATUL CONDUCĂTORULUI ȘTIINȚIFIC
Numele și prenumele candidatului/ -ei: Cîrjaliu Alina -Maria
Specializarea: Ingineria si stemelor multimedia
Titlul proiectului : Sistem de management al conținutului cu aplicații în e –
learning
Locația în care s -a realizat practica de
documentare (se bifează una sau mai
multe din opțiunile din dreapta): În facultate □
În producție □
În cercetare □
Altă locație: [ se detaliază ]
În urma analizei lucrării candidatului au fost constatate următoarele:
Nivelul documentării Insuficient
□ Satisfăcător
□ Bine
□ Foarte bine
□
Tipul proiectului Cercetare
□ Proiectare
□ Realizare
practică □ Altul
[se detaliază ]
Aparatul matematic utilizat Simplu
□ Mediu
□ Complex
□ Absent
□
Utilitate Contract de
cercetare □ Cercetare
internă □ Utilare
□ Altul
[se detaliază ]
Redactarea lucrării Insuficient
□ Satisfăcător
□ Bine
□ Foarte bine
□
Partea grafică, desene Insuficientă
□ Satisfăcătoare
□ Bună
□ Foarte bună
□
Realizarea
practică Contribuția autorului Insuficientă
□ Satisfăcătoare
□ Mare
□ Foarte mare
□
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
vii
Complexitatea
temei Simplă
□ Medie
□ Mare
□ Complexă
□
Analiz a cerințelor Insuficient
□ Satisfăcător
□ Bine
□ Foarte bine
□
Arhitectura Simplă
□ Medie
□ Mare
□ Complexă
□
Întocmirea
specificațiilor
funcționale Insuficientă
□ Satisfăcătoare
□ Bună
□ Foarte bună
□
Implementarea Insuficientă
□ Satisfăcătoare
□ Bună
□ Foarte bună
□
Testarea Insuficientă
□ Satisfăcătoare
□ Bună
□ Foarte bună
□
Funcționarea Da
□ Parțială
□ Nu
□
Rezultate experimentale Experiment propriu
□ Preluare din bibliografie
□
Bibliografie Cărți
Reviste
Articole
Referințe web
Comentarii
și
observații
În concluzie, se propune:
ADMITEREA PROIECTULUI
□ RESPINGEREA PROIECTULUI
□
Data, Semnătura co nducătorului științific,
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
viii
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
ix
REZUMATUL PROIECTULUI
Sitemul de management al conținutului cu aplicații în e -learning este o aplicație web ce
facilitează adaugarea și modificarea de conținut într-o pagina web.
Rolul acestei aplicații este de a ușura adm inistrarea conținutului dintr -un site web pentru
persoanele ce nu au suficiente cunoștințe de programare.
Acest sistem de management are numeroase funcții : permite utiliz atorilor de tip administrator
să se autentfice în aplicaț ia web și să poată adauga p agini noi, să poata modifica paginile existente, să
aleagă meniul în care va fi publicată o nouă pagină , poate adm inistra utilizatorii existenț i, poate
administra lista limbilor existe nte, poate adauga o nouă limbă și traduce conț inutul pentru paginile
existente în limba dorită , poate seta unui anumit tip de utilizator un cont restr icționat ce îi permite
accesul doar la meniul de pagini, de unde poate adauga și modifica pagini in aplicaț ia web.
Acest sistem de management al coț tinutului poate fi folosit cu success pentru a administra
conținut cu caracter educaț ional cum ar fi: cursuri, imagini, cursuri în format video în mai multe
limbi, facilitâ nd astfel stu denților sa u vizitatorilor țintă accesul la informația educațională .
Termenii cheie : CMS, php, MyS QL, CSS, HTML, JavaScript, admin istrare conținut, adaugare
conținut, modificare conț inut, utilizator, administrator, administrare , limbă
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
x
CUPRINSUL
1 INTRODUCERE ………………………….. ………………………….. ………………………….. ………………………….. ……. 14
1.1 SCOPUL ………………………….. ………………………….. ………………………….. ………………………….. ……………… 14
1.2 MOTIVAȚIA ………………………….. ………………………….. ………………………….. ………………………….. …………. 15
1.3 CE ESTE UN SISTEM DE ADMINISTRARE AL CONȚ INUTULUI (CMS) ………………………….. ………………………….. ……. 15
1.4 CONCEPTUL DE E -LEARNING ………………………….. ………………………….. ………………………….. ………………….. 16
2 TEHNOLOGII UTILIZATE ÎN DEZVOLTAREA APLI CAȚIEI ………………………….. ………………………….. ………… 20
2.1 BAZE DE DATE MYSQL ………………………….. ………………………….. ………………………….. ………………………… 20
2.2 PHP (HYPERTEXT PREPROCESSOR ) ………………………….. ………………………….. ………………………….. ………….. 22
2.3 CSS ………………………….. ………………………….. ………………………….. ………………………….. ………………….. 26
2.4 JAVASCRIPT ………………………….. ………………………….. ………………………….. ………………………….. …………. 27
3 IMPLEMENTAREA APLICA ȚIEI WEB ………………………….. ………………………….. ………………………….. …….. 30
3.1 MYSQL ………………………….. ………………………….. ………………………….. ………………………….. …………….. 30
3.2 PHP ………………………….. ………………………….. ………………………….. ………………………….. …………………. 43
3.3 CSS ………………………….. ………………………….. ………………………….. ………………………….. ……………………….. 54
3.4 JAVASCRIPT ………………………….. ………………………….. ………………………….. ………………………….. …………. 59
3.5 CKEDITOR ………………………….. ………………………….. ………………………….. ………………………….. …………… 60
4 PREZENTAREA SISTEMUL UI D E MANAGEMENT AL CONȚ INUTULUI CU APLICAȚI I IN E -LEARNING ……… 62
5 CONCLUZII ………………………….. ………………………….. ………………………….. ………………………….. …………. 80
6 BIBLIOGRAFIE ………………………….. ………………………….. ………………………….. ………………………….. …….. 81
7 REFERINȚE WEB ………………………….. ………………………….. ………………………….. ………………………….. ….. 82
A. CODUL SURSĂ ………………………….. ………………………….. ………………………….. ………………………….. …….. 83
B. SITE -UL WEB AL PROIE CTULUI ………………………….. ………………………….. ………………………….. …………. 121
C. CD / DVD ………………………….. ………………………….. ………………………….. ………………………….. …………. 122
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
xi
LISTA FIGURILOR
FIGURA 1 DESERVIREA UNEI PAGIN I STATICE , FARA INTERVENTIA IN TERPRETORUL UI PHP ………………………….. ……………………. 24
FIGURA 2 DESERVIREA UNEI PAGIN I DINAMICE , MODIFICATA DE PHP ÎN MOMENTUL REQUEST -ULUI ………………………….. ………. 24
FIGURA 3 AUTENTIFICARE ÎN CP ANEL ………………………….. ………………………….. ………………………….. ……………………….. 30
FIGURA 4 CREAREA BAZEI DE DA TE ………………………….. ………………………….. ………………………….. ………………………….. 31
FIGURA 5 SETARILE BAZEI DE D ATE………………………….. ………………………….. ………………………….. ………………………….. . 32
FIGURA 6 ADAUGAREA UTLIZATOR ULUI BAZEI DE DATE ………………………….. ………………………….. ………………………….. …… 33
FIGURA 7 LEGATURA DINTRE UTI LIZATOR ȘI BAZA DE D ATE AFERENTĂ ………………………….. ………………………….. ………………. 33
FIGURA 8 CREAREA UNUI NOU TA BEL ÎN BAZA DE DATE ………………………….. ………………………….. ………………………….. …… 34
FIGURA 9 TABELUL ACC ESS………………………….. ………………………….. ………………………….. ………………………….. ……….. 35
FIGURA 10 TABELUL LANGUAGES ………………………….. ………………………….. ………………………….. ………………………….. .. 36
FIGURA 11 TABELUL LABELS ………………………….. ………………………….. ………………………….. ………………………….. ……… 36
FIGURA 12 TABELUL LABELS _CONTENT ………………………….. ………………………….. ………………………….. …………………….. 37
FIGURA 13 TABELUL LABELS _TYPES ………………………….. ………………………….. ………………………….. …………………………. 37
FIGURA 14 TABELUL LABELS _TYPES _CONTENT ………………………….. ………………………….. ………………………….. …………….. 38
FIGURA 15 TABELUL LANGUAGES _CONTENT ………………………….. ………………………….. ………………………….. ……………….. 38
FIGURA 16 TABELUL ACCESS _CONTENT ………………………….. ………………………….. ………………………….. …………………….. 39
FIGURA 17 TABELUL ADMINS ………………………….. ………………………….. ………………………….. ………………………….. ……. 39
FIGURA 18 TABELUL NAVIGATION _TYPES ………………………….. ………………………….. ………………………….. …………………… 40
FIGURA 19 TABELUL PAGES ………………………….. ………………………….. ………………………….. ………………………….. ………. 40
FIGURA 20 TABELUL PAGES _CONTENT ………………………….. ………………………….. ………………………….. ……………………… 41
FIGURA 21 TABELUL NAVIGATION ………………………….. ………………………….. ………………………….. ………………………….. . 41
FIGURA 22 TABELUL NAVIGATION _TYPES _CONTENT ………………………….. ……………………….. ERROR ! BOOKMARK NOT DEFINED .
FIGURA 23 RELATIILE DINTRE TA BELELE BAZEI DE DATE ………………………….. ………………………….. ………………………….. …… 42
FIGURA 24 DIRECTORUL TEMPLATE ………………………….. ………………………….. ………………………….. …………………………. 43
FIGURA 25 FISIERELE HEADER .PHP ȘI FOOTER .PHP ………………………….. ………………………….. ………………………….. ………… 43
FIGURA 26 COD HEADER .PHP ………………………….. ………………………….. ………………………….. ………………………….. ……. 44
FIGURA 27 COD CLASA DBASE ………………………….. ………………………….. ………………………….. ………………………….. …… 45
FIGURA 28 COD CONEXIUNE CATRE BAZA DE DATE ………………………….. ………………………….. ………………………….. ………… 45
FIGURA 29 COD CLASA CORE ………………………….. ………………………….. ………………………….. ………………………….. ……. 46
FIGURA 30 COD CLASA LANGUAGE ………………………….. ………………………….. ………………………….. ………………………….. 46
FIGURA 31 COD CLASA NAVIGATION ………………………….. ………………………….. ………………………….. ………………………… 47
FIGURA 32 COD CLASA PAGE ………………………….. ………………………….. ………………………….. ………………………….. ……. 47
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
xii
FIGURA 33 COD CLASA ADMIN ………………………….. ………………………….. ………………………….. ………………………….. …. 48
FIGURA 34 COD INDEX .PHP………………………….. ………………………….. ………………………….. ………………………….. ………. 48
FIGURA 35 COD ADAUGĂ UTILIZATOR “ADD.PHP” ………………………….. ………………………….. ………………………….. ………… 49
FIGURA 36 COD MODIFICĂ URILIZ ATOR – EDIT.PHP ………………………….. ………………………….. ………………………….. ………… 49
FIGURA 37 COD STERGE UTILIZAT OR – REMOVE .PHP ………………………….. ………………………….. ………………………….. ……… 50
FIGURA 38 COD INDEX .PHP………………………….. ………………………….. ………………………….. ………………………….. ………. 50
FIGURA 39 COD CAMPURI PAGINĂ NOUĂ – INDEX .PHP ………………………….. ………………………….. ………………………….. …… 51
FIGURA 40 COD ADAUGA O PAGINĂ NOUĂ – ADD.PHP ………………………….. ………………………….. ………………………….. …… 51
FIGURA 41 COD AVERTIZARE IDEN TITATE FOLOSITĂ ………………………….. ………………………….. ………………………….. ……….. 52
FIGURA 42 COD MODIFICARE PAG INA EXISTENTĂ – EDIT.PHP ………………………….. ………………………….. ………………………… 52
FIGURA 43 COD ADAUGARE PAGINĂ ÎN MENIU – NAVIGATION .PHP ………………………….. ………………………….. …………………. 53
FIGURA 44 COD ȘTERGE PAGINĂ – REMOVE .PHP ………………………….. ………………………….. ………………………….. ………….. 53
FIGURA 45 COD CLOARE SI DIMEN SIUNE HEADING ………………………….. ………………………….. ………………………….. ………… 54
FIGURA 46 CULOARE TITLU CSS………………………….. ………………………….. ………………………….. ………………………….. …. 54
FIGURA 47 INALTIME ȘI LATIME LOGO CSS ………………………….. ………………………….. ………………………….. ………………… 55
FIGURA 48 SELECTOR LIMBĂ CSS ………………………….. ………………………….. ………………………….. ………………………….. .. 55
FIGURA 49 COD NAVIGATIE FRONT .CSS ………………………….. ………………………….. ………………………….. …………………….. 56
FIGURA 50 COD STILIZARE ELEME NTE ADMIN ………………………….. ………………………….. ………………………….. ………………. 56
FIGURA 51 COD SETARE CULOARE SI DIMENSIUNE HEADIN G ADMIN ………………………….. ………………………….. …………………. 57
FIGURA 52 COD LOGO CSS ADMIN ………………………….. ………………………….. ………………………….. ………………………….. . 57
FIGURA 53 COD SELECTOR DE LIM BA ADMIN ………………………….. ………………………….. ………………………….. ………………. 58
FIGURA 54 COD ADMIN NAVGATIE .CSS ………………………….. ………………………….. ………………………….. ……………………… 58
FIGURA 55 COD CORE.JS ………………………….. ………………………….. ………………………….. ………………………….. …………. 59
FIGURA 56 COD FORM .JS ………………………….. ………………………….. ………………………….. ………………………….. ………… 60
FIGURA 57 CKEDITOR IMPLEMENTARE JAVASCRIPT ………………………….. ………………………….. ………………………….. ……….. 61
FIGURA 58 CKEDITOR COD CREARE CLASA ………………………….. ………………………….. ………………………….. ………………….. 61
FIGURA 59 EXEMPLU FUNCȚII CKE DITOR ………………………….. ………………………….. ………………………….. ……………………. 61
FIGURA 60 EXEMPLU STRUCTURĂ S ITE WEB ………………………….. ………………………….. ………………………….. ………………… 63
FIGURA 61 PAGINA HOME………………………….. ………………………….. ………………………….. ………………………….. ……….. 64
FIGURA 62 PAGINA CURS PHP ………………………….. ………………………….. ………………………….. ………………………….. …… 65
FIGURA 63 PAGINA CURS MYSQL ………………………….. ………………………….. ………………………….. ………………………….. . 66
FIGURA 64 PAGINA CURS CSS ………………………….. ………………………….. ………………………….. ………………………….. ……. 67
FIGURA 65 PAGINA CONTACT ………………………….. ………………………….. ………………………….. ………………………….. ……. 68
FIGURA 66 SELECTOR LIMBĂ ………………………….. ………………………….. ………………………….. ………………………….. …….. 69
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
xiii
FIGURA 67 PAGINA DE AUTENTIFI CARE ………………………….. ………………………….. ………………………….. ……………………… 69
FIGURA 68 INSERAREA UTILIZATO RULUI SI A PAROLEI ………………………….. ………………………….. ………………………….. …….. 69
FIGURA 69 AVERTIZARE UTILIZAT OR SAU PAROLA INCORE CTĂ………………………….. ………………………….. ………………………… 70
FIGURA 70 PAGINA DE ADMINISTR ARE PAGINI ………………………….. ………………………….. ………………………….. …………….. 70
FIGURA 71 MENIU PAGINI ………………………….. ………………………….. ………………………….. ………………………….. ……….. 71
FIGURA 72 ADAUGA O PAGINĂ NOU Ă ………………………….. ………………………….. ………………………….. ………………………. 72
FIGURA 73 INSERARE PAGINI ÎN MENIU ………………………….. ………………………….. ………………………….. …………………….. 73
FIGURA 74 LISTĂ MENIU ………………………….. ………………………….. ………………………….. ………………………….. …………. 74
FIGURA 75 LISTĂ PAGINI ………………………….. ………………………….. ………………………….. ………………………….. …………. 74
FIGURA 76 PAGINA ADM INISTRARE ETICHETE ………………………….. ………………………….. ………………………….. ……………… 75
FIGURA 77 MENIU ETICHETE ………………………….. ………………………….. ………………………….. ………………………….. …….. 75
FIGURA 78 LISTA LIMBI EXISTEN TE ………………………….. ………………………….. ………………………….. ………………………….. . 76
FIGURA 79 PAGINA TIPURI DE ET ICHETE ………………………….. ………………………….. ………………………….. …………………….. 76
FIGURA 80 PAGINĂ UTILIZATORI ………………………….. ………………………….. ………………………….. ………………………….. … 77
FIGURA 81 MENIU UTILIZATORI ………………………….. ………………………….. ………………………….. ………………………….. …. 77
FIGURA 82 ADAUGĂ UN UTILIZATO R NOU ………………………….. ………………………….. ………………………….. ………………….. 78
FIGURA 83 LISTĂ SELECTARE TIP UTILIZATOR ………………………….. ………………………….. ………………………….. ……………….. 79
FIGURA 84 PERIMISIUNI RESTRIC TIVE CONT UTILIZATOR ………………………….. ………………………….. ………………………….. ….. 79
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
xiv
1 INTRODUCERE
1.1 Scopul
Ideea de bază a acestui proiect a fost acea de a u șura adaugarea și modificarea de conținut nou
pentru o aplcație web și de putea face acest proiect util și pentru conceptul de E -learning. Astfel după
ce mi -am așternut ideile pe h artie și le -am discutat îm preună cu profesorul coordonator am început să
dezvolt o aplcație web bazată pe un sistem de management al conținutului ce se poate adauga în mai
multe limbi pentru a facilita studenților accesul la informație în limbă lor natală.
Pentru a realiza o pagina web sau a putea modifica o pagina web în general este nevoie de
cunostinte de programare, iar pentru a face acest lucru cât mai ușor am implementat un sistem de
administrare al conținutului, astfel pentru a adauga sau a modifica o pagină în aceasta aplcaț ie web nu
sunt necesare cunoștinte de programare. Utilizatorul administrator se va putea autentifica folosind un
nume de utilizator și o parolă, pentru a putea avea acces la panoul de administrare al aplicației web.
Din acel panou, uti lizatorul va putea se lecta limba în care dorește să fie afișat conținutul, poate
adauga o pa gină nouă , poate selecta tipul meniului unde dorește să faca publica pagnia (meniu
principal, meniu secundar și meniul subsol), poate adauga o nouă limbă disponibilă completand toate
etichetele afișate în limbă pe care acesta dorește să o introducă, poate crea un nou utilizator ce va avea
acces la panoul de admnistrare, poate modifica conținutul paginilor existente, poate șterge pagini,
modulele de limbă implementate și utilizatorii cre ați.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
15
1.2 Motivația
Motivația realizarii acestui sistem de management al conținutului a fost acea de a putea adauga
și modifica ușor conținut web într -o aplcație web, adaugarea paginilor În meniu se va face uăor,
selectand o pagină existentă și atri buindui unul dintre cele trei meniuri existente.
Managementul utilizatorilor este ușor de realizat, utilizatorii pot fi de două tipuri, de tip
administrator ce au acces la toate zonele din pagina de administrator și pot adauga, modifica sau
șterge conțin ut din toata aplicația web sau utilizatorul de tip utilizator ce are acces numai la meniul de
pagini, le va putea modifica, adauga și șterge.
Sistemul de managemen t al conținutului are aplicații în e -learning, paginile create de
administrator având conțin ut educational pentru a putea facilita învațamantul la distanță.
Fiind o aplcație ce poate adauga conținutul în mai multe limbi existente utilizatorul ținta nu va
fi doar regional, iar informația afișată poate fi citită în mai multe limbi. Astfel facilitâ nd studenților
din programele ERASMUS accesul la informația educațională.
1.3 Ce este un sistem de administrare al conținutului (CMS)
Un CMS (Content management system) sau un sistem de administrare a l conținutului este un
sistem software special creat pentru automatizarea cât mai amplă a gestiunii conținutului, în special
realizat pentru aplicatiile web . Scopul său este de a reduce sau elimina intervenția programatorilor la
modificarea și administrarea aplicațiilor web . CMS -ul facilitează organizarea, control ul și publicarea
de pagini, documente, imagini sau alt tip de conținut și resurse multimedia. Un ‘CMS web’ este un
sistem de management al conținutului cu facilități adiționale pentru ușurarea publicării de conținut pe
diversele pagini web.
Sistemele de ad ministrare a conținutului web sunt folosite adesea pentru stocarea și controlul
documentelor cum ar fi articole. Un CMS poate avea următoarele funcții:
Crearea și transferul de documente și material e multimedia
Identificarea utilizatorilor cheie și a rolul ui lor în gestionarea conținutului
Atribuirea de roluri și responsabilități diferitelor categorii de conținut
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
16
Urmărirea și organizarea mai multor versiuni ale aceluiași element de conținut.
Publicarea conținutullui într -o librarie , pentru a sprijini accesu l la conținut. În ultima vreme
libraria (baza de date) este o parte foarte importantă a sistemului.
De obicei un asemenea sistem oferă unelte software prin care utilizatorii fără cunoștințe de
programare pot crea și organiza conținutul cu ușurință. Majorit atea sistemelor folosesc o bază de date
pentru stocarea conținutului, și o temă de prezentare pentru afișarea a cestuia vizitatorilor obișnuiți .
Administrarea se face în mod normal printr -un motor de cautare web. [CMS 1]
1.4 Conceptul de comert electronic (e-commerce)
Comertul electronic nu are o definitie stricta care sa fie acceptata la nivel general, pentru ca
aceasta se poate modifica in functie de numeroase variabile. Numai din faptul ca e -commerce este
strict corelat cu internetul si cu tehnologia virtuala, acestea fiind domenii in continua schimbare si
evolutie, face imposibila existenta unei definitii general valabile. Totusi, de -a lungul timpului, ca
urmare a unor studii si a unei vaste experiente in domeniu, multi experti au incercat sa cuprinda cat
mai multe aspecte generale ale acestei definitii si sa le nuanteze pe cele variabile .
Astfel, nefacand parte din randul acestor experti, am cautat sa redau chiar citandu -i pe unii dintre
ei, dar fara a avea pretentia de a surprinde absolut toate particularitatile notiunii de comert electronic.
“Comert electronic inseamna, in acceptiune 'traditionala', utilizarea in retele cu valoare adaugata
a unor aplicatii de tipul transferului electron ic de documente (EDI), a comunicatiilor fax, codurilor de
bare, transferului de fisiere si a postei electronice. Extraordinara dezvoltare a interconectivitatii
calculatoarelor in Internet, in toate segmentele societatii, a condus la o tendinta tot mai evid enta a
companiilor de a folosi aceste retele in aria unui nou tip de comert, comertul electronic in Internet,
care sa apeleze – pe langa vechile serv icii amintite – si altele noi.”
“O definitie succinta si larg acceptata este urmatoarea: Comertul electro nic (e -commerce, pe
scurt EC) este acea maniera de a conduce activitatile de comert care foloseste echipamente electronice
pentru a mari aria de acoperire (locul in care se pot afla potentialii clienti) si viteza cu care este livrata
informatia. EC ofera o portunitatea de a comercializa produse in intreaga lume, sporind numarul de
potentiali clienti in primul rand prin eliminarea barierelor geografice dintre clienti si comercianti.”
“Comert electronic (sens restrans) : comertul electonic este totalitatea actelor de comert care se
desfasoara de la inceput la sfarsit prin mijloace electronice sau cu suport electronic. Adica contactez o
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
17
firma printr -un mijloc electronic (mail, mesaj pe internet, sms, etc), primesc o oferta electronica, fac
comanda electronic (mail, shopping cart, formular online) si pl ata o execut electronic (card).
Comert electronic (sens larg) : comertul electronic este totalitatea actelor de comert care au in
desfasurarea lor o pondere a mijloacelor electronice covarsitoare pentru realizar ea actului de comert.
“Un schimb electronic de informatii intre o afacere si clientii sai. Aceasta se poate face prin fax,
telefon, voice -mail, email, extranet sau Internet, pentru a enumer a doar citeva dintre mijloace.”
“Comertul electronic (e -comme rce) este procesul de cumparare, vinzare sau schimb de produse,
servicii sau informatii prin intermedi ul retelelor de calculatoa re. ”
“ Orice forma de tranzactii in afaceri in cadrul careia partile interactioneaza electronic in loc de
realizarea de schim buri fizice sau contact fizic direct.”
TIPURI DE COMERT ELECTRONIC
1.2.1 Business -to-business (B2B) : Model de comert electronic in care toti participantii sunt
companii sau alte organizatii ( ex : rtcoffice.ro)
1.2.2 Business -to-consumer (B2C): Model de comert electronic in care companiile vand la
cumparatori individuali – persoane fizice (emania.ro, amazon.com)
1.2.3 Consumer -to-business (C2B): Persoane fizice (consumatori) care utilizeaza Internetul
pentru a -si vinde produsele sau servic iile firmelor si/sau cauta vanzatori sa liciteze pentru
produsele sau serviciile de care au nevoie (telejob.ro, priceline.com)
1.2.4 Consumer -to-consumer (C2C) : Consumatori care vand direct la alti consumatori
(okazii.ro, ebay.com )
1.2.5 Comert mobil (m-commerce) – Tranzactii si activitati de comert electronic conduse prin
mediu electromagnetic (telefonul mobil)
1.2.6 E -government: Government -to-business (G2B): Model de comert electronic in care
o institutie guvernamentala cumpara sau vinde bunuri, servic ii sau informatii de la persoanele
juridice.
1.2.7 Government -to-consumer (G2C) :Acopera relatii guvern -cetateni la nivel de
informare si prestare servicii publice (ex. Platirea taxelor online)
1.3 ELEMENTE ALE COMERTULUI ELECTRONIC – ARHITECTURA UNUI SIS TEM
ELECTRONIC
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
18
Pentru a construi un sistem de e -commerce, din punct de vedere arhitectural este nevoie de
colaborarea a patru componente (subsisteme electonice/informatice) corespunzatoare
urmatoarelor roluri:
1.3.1 Client
Un echipament, clasic un PC, conectat direct (via un ISP) sau indirect (o retea a unei
corporatii) la Internet. Cumparatorul foloseste acest echipament pentru a naviga si a face
cumparaturi.
1.3.2 Comerciant
Sistem informatic (hard & soft), situat de regula la sediul comerc iantului, care gazduieste si
actualizeaza catalogul electronic de produse disponibile a fi comandate on -line pe Internet.
1.3.3 Sistemul tranzactional
Sistemul informatic (hard ware & software) responsabil cu procesarea comenzilor, initierea
platilor, evidenta inregistrarilor si a altor aspecte de business implicate in procesul de
tranzactionare.
1.3.4 Dispecer plati
Sistem informatic responsabil cu rutarea instructiunilor de plata in interiorul retelelor financiar –
bancare, cu verificarea cartilor de credit si autorizarea platilor; acest sistem joaca rolul unei porti
care face legatura dintre reteaua globala Internet s i subreteaua financiar -bancara (supusa unor
cerinte de securitate sporite), poarta prin care accesul este controlat de un 'portar' (gatekeeper);
pe baza informatiilor specifice cartii de credit (tip_card, nr_card) din instructiunile de plata
'portarul' red irecteaza informatia catre un centru de carduri (CC – un server certificat in acest scop
si agreat de banca emitenta); in acest loc este identificata banca care a emis cardul iar
instructiunile de plata sunt trimise mai departe catre serverul acestei banci conectat in reteaua
interbancara; odata informatiile ajunse in reteaua bancii cu care lucreaza cumparatorul, sunt
efectuate (automat) o serie de verificari privind autenticitatea si soldul disponibil in contul cardului
implicat in tranzactie; in functie d e rezultatul acestor verificari, banca decide fie efectuarea platii
(transfer bancar – catre contul comerciantului care poate fi deschis la orice alta banca), fie refuza
sa faca aceasta plata. In ambele cazuri, rezultatul deciziei (confimare plata sau refu z) este trimis
in timp real, parcurgand acest lant de servere in sens invers, catre client. Cu alte cuvinte, in
cateva secunde cumparatorul afla daca banca sa a operat plata sau nu.
1.4 AVANTAJE SI LIMITE ALE COMERTULUI ELECTRONIC
1.4.1 Avantaje
Beneficii pentru firme
Extinderea la pietele intrenationale
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
19
Scaderea costului de creare, procesare, distribuire, pastrare si gasire a informatiei
bazata pe hartie
Creeaza posibilitatea modelarii produselor si servici ilor pe nevoile cumparatorilor
Costuri de comunicatie mai mici
Beneficii pentru consumatori
Da posibilitatea consumatorilor sa cumpere sau sa faca tranzactii 24 h/zi, in tot timpul
anului din aproape orice locatie
Acorda consumatorilor mai multe posibilitati de alegere
Cumparatorii pot sa aleaga mai usor cel mai mic pret pentru un produs sau serviciu
Permite o livrare rapida a produselor si/sau serviciilor (in anumite cazuri)
Consumatorii pot s a primeasca informatie relevanta in secunde, si nu in zile sau
saptamani
Face posibila participarea la licitatii virtuale
Permite consumatorilor sa interactioneze cu alti cumparatori in comunitati
electronice si sa compare experientele
Faciliteaza competitia, ceea ce rezulta in scaderea preturilor
Beneficii pentru societate
Da posibilitatea mai multor persoane sa lucreze de acasa si sa cumpere de acasa
ceea ce rezulta in trafic mai mic pe strazi si poluare scazuta a a erului
Permite ca anumite marfuri sa fie vandute la preturi mai scazute, cu avanataje
pentru cei cu venituri mai mici
Creste eficienta si/sau imbunatatesc calitatea
1.4.2 Limite
Exista o lipsa de standarde universal acceptate pentru calitate, securitate si
incredere.
Uneltele de dezvoltare software sunt inca in plina evolutie
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
20
Exista unele dificultati in integrarea intre aplicatiile soft de comert electronic si
Internet cu unele aplicatii existente vechi si baze de date
Accesul Internet este inca scump si/sau inoportun
2 TEHNOLOGII UTILIZATE ÎN DEZVOLTAREA
APLICAȚIEI
Pentru dezvoltarea aplicației “Sistem de management al conținutului cu aplicații în e -learning” am
folosit mai mulre limbaje de programare:
1. Baze de date MySQL
2. PHP ( Hypertext Preproces sor)
3. CSS și HTML
4. Javascript
5. JQuery
2.1 Baze de date MySQL
MySQL este o platforma de conținut disponibil cu un sistem de administrare a bazelor de
date. Numele “MySQL” este o combinație dintre “My” ce vine de la numele fiicei cofondatorului
“Michael Widenius '” și “SQL” ce reprezintă abrevierea de la “Structured Query Language”.
Limbajul de programare folosit în realizarea bazei de date MySQL este C și C++. Baza de
date MySQL e ste compatibilă cu multe sisteme de operare: “Microsoft Windows”, “OpenSolaris” și
“OracleSolaris” etc.
Programul MySQL este oferit pieței largi în două ediții diferite: programul cu conținut
disponibil “MySQL Community Server” și “Enterprise Server”. Dif erența dintre MySQL Enterprise
Server și MySQL Community Server este bazată pe o serie de extensii proprii ce se instalează ca și
conexiuni de server, în rest folosesc aceleali versiuni de sistem și sunt bazate pe același cod sursă.
MySQL este un sistem de baze de date web, ce ruleaza pe server și este ide al de folosit pentru
aplicații de mici dimensiuni cât și pentru aplicații complexe. Este rapid, de încredere și ușor de folosit
de către utilizatori.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
21
Bazele de date MySQL sunt structurate în tabele. Tabe lele sunt o colecție de date
asemanatoare ce conțin rânduri și coloane.
Bazele de date MySQL sunt folosite pentru a stoca informații pe categorii. De exemplu o
companie poate avea o bază de date cu urmatoarele tabele:
1. Angajați
2. Produse
3. Clienți
4. Comenzi
5. Status Comenzi
Pentr u a putea scrie cod în MySQL se folosesc cereri sau intrari de tip Query.
Se poate căuta printr -o instrucțiune de tip query, iar apoi se va returna un rezultat al acestei
instrucțiuni.
Exemplu de instrucțiune SELECT: “ SELECT FirstName FROM Admins ”
Query -ul de mai sus selectează datele din coloana „ FirstName” a tabelului „Admins”.
Exemple de t ipuri de instrucț iuni:
SELECT (selectează date din baza de date și le returnează utilizatorului)
UPDATE(actual izează conținutul nou introdus î n baza de date)
DELETE (este folosit pentru a ș terge date introduse în tabelele din baza de date)
INSERT (adaugă conținut nou î n tabelele din baza de date creată )
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
22
2.2 PHP (Hypertext Preprocessor)
PHP (Hypertext Preprocessor) este un limbaj de programare cu ajutorul c ăruia se pot mo difica
conținutul paginilor web înainte ca acestea să fie transmise de server către motoarele de cautare ale
utilizatorilor.
Limbajul de programare PHP, poate genera conținut HTML cu ajutorul unor fișiere existente
sau pornind de la zero, poate afișa un element de tip imagine sau orice alt conținut ce poate fi
interpretat de un motor de cautare. În cadrul acestui proces, PHP poate c omunica cu baze de date,
anumite fișiere externe sau alt tip de resurse. Deoarece procesarea se realizează la nivelul server ului
web, înainte ca paginile web să ajunga în motorul de cautare , PHP este un limbaj de programare de tip
server -side.
Modul în care limbajul de programare PHP genereaza conținut pentru o pagina web ce va fi
afișată de motorul de cautare se face prin inst rucțiunile delimitate de etichetele “<?php ” și “ ?>”.
Asadar, orice se află intre aceste etichete ( tag-uri) va fi considerat cod -sursa și va fi executat de
interpretorul PHP și inlocuit cu rezultatul executiei. conținutul c e se află în afara acestor etiche te (
tag-urilor ) ramane neschimbat și va fi transmis către motorul de cautare . De exemplu, este prezentată
o pagină ca mai jos:
<html>
<body> Astazi este <?php print date( 'd.m.Y' ); ?> </body>
</html>
Rezultatul va fi o pagină HTML ce va conține cuvintele " Astazi este" și rezultatul codului PHP (in
cazul acesta – dată curentă). Codul HTML final, transmis de server în urma procesarii PHP este
urmatorul:
<html>
<body>Astazi este 22.06.2017 </body>
</html>
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
23
Codul PHP nu este necesar să fie inclus în pagina HTML. Secv enta de mai jos produce o pagină
asemanatoare celei de mai sus (î n acest caz PHP crează o pagină HTML de la zero).
<?php
print '<html><body>';
print Astazi este' . date( 'd.m.Y' );
print '</body></html>';
?>
„PHP reprezintă un limbaj de programare de tip interpretat. Ceace înseamnă ca fișierele ce
contin cod -sursă PHP sunt interpretate ca atare în momentul execuț iei, de către PHP. Astfel , pentru
execuția unei portiuni de cod PHP este folosit codul -sursa asa cum a fost scris el, și nu este
transform at într-o forma intermediara (binara sau cod -masina) cum se intampla la Java sau C/C++.
Acest lucru oferă flexibilitate, î ntrucat orice modificare a fișierelor sursă va fi aplic ata imediat la
urmatoarea execuț ie, far a alti pasi intermediari. Există și dezavantaje la acest mod de lucru, cum ar fi
timp mai mare de execuție a codului, dar în anumite situații avantajele pot cântari mai mult decât
dezavantajele. Datorită faptului ca limbajul este unul interpretat, PHP mai este numit și limbaj de
scripting .
În sens mai larg, PHP este un limbaj de programare universal (sau general -purpose ), oferind toate
facilitaț ile oricarui limbaj avansat. Codul scris în PHP poate face aproape aceleaș i lucruri ca un cod de
C/C++ sau Java. Cu toate astea, PHP s -a impus în zona w eb, ca limb aj server -side, ce extinde
funcț ionalitatea serverelor web. Din acest motiv programarea în PHP mai este denumită și
programare web sau programare web server -side.”[PHP1].
Interpretorul de PHP este folosit ca o componenta adițională, reprezentan t o extensie a
serverului web ce este invocată ori de cat e ori o pagina PHP este accesată . Componenta procesează
codul -sursă din pagină , iar apoi trimite rezultatul înapoi la server ul web, ajungâ nd în final în
motoarele de cautare ale utilizatorilor. Acest proces este prezentat în prima imagine de mai jos .
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
24
Figura 1 Deservirea unei pagini statice, fa ra interventia interpretorului PHP
Figura 2 Deservirea unei pagini dinamice, modificata de PHP în momen tul request -ului
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
25
PHP de tip static și dinamic
Prin intermediul imaginilor de mai sus, se poate observa ca atunci când nu există un
interpretor PHP, paginile sunt trimise direct spre utilizatori în forma în care acestea sunt salvate pe
disc, fara nici o altă modificare . Pentru a putea actua liza conținutul acestora, este nevoie de
intervenția directă asupra lor și salvarea modificarilor pe server. Acest tip de pagină sunt denumită
"pagina statica ".
Folosind o secventa de cod PHP se va putea prelua conținutul introdus într -o baza de date,
eliminand problema actualizarii – scriptul de PHP va afișa automat noile date adaugate în baza de
date. Astfel se poate rezolva și problema legaturilor personalizate toate elementele specifice unor date
nou adaugate pot fi generate în mod automat.
Aceste pa gini sunt, astfel , modificate de PHP la momentul accesarii lor de către utilizatori. în funcție
de parametrii primiti și de secventa de co d definita de programator, aceași pagină poate avea conținut
diferit. Aceasta proprietate este denumită dinamism, iar o astfel de pagina este considerata pagină
dinamică .
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
26
2.3 CSS
Foile de stil în cascada (CSS) reprezintă un limbaj de stilizare al etichetelor HTML . Denumirea
CSS este dată de expresia Cascading Style Sheets (Foi de stil în cascada) . O variantă ma i modernă de
stilizare este cea în care se folosesc numai foile de stil în cascadă. Acest lucru reprezintă faptul ca de
la culoarea literelor și a fundalului inclusiv pana la pozitionarea elementelor de pe o pagina web, totul
este stilizat prin CSS. Stilu rile folosite pe o pagina pot fi î ncorporate în pagina respectivă sau pot fi
chemate din fișiere externe, fișiere de tip css.
Stilurile pentru o pagină web pot fi definite în partea de Head a documentului html sau se pot
defini î ntr-un fișier de tip css e xtern, pe care putem apela tot din partea de head a paginii sau putem
aplica un stil diferit în partea Body a fiș ierului html, la fiecare etichetă html în parte.
Cu ajutorul stilurilor CSS se poate stiliza aplicații web î ntregi dintr -un singur fisier. Daca se va
alege aceasta optiune pentru aplicația web va rezulta mai putin cod în conținutul fiecarei pagini, iar
aplicația web se va incarca mult ma rapid în motoarele de cautare . Daca în viitor se va face o
modificare asupra aplicației web , nu va mai fi necesară modificarea fiecarei pagini a aplicatiei , ci se
va modifica un singur fisier, fișierul de tip css extern.
CSS-ul oferă libertatea de a suprascrie un stil deja definit, deoarece lucrează după o anumită
ierarhie, adică :
1: – Prima dată se va lua în considerare stilul deja definit în fișierul extern, după care urmează
2- stilul definit în partea head a fisierului HTML , iar ultima dată
3- cu CSS-ul inline (in linie), adică stilul definit într -o etichetă html cu ajutorul atributului style
se va putea suprascrie orice stil definit anterior.
Exemplu de sintaxa css:
p {
text-align:right; // alinierea textului la dreapta
color:green; // culoarea textului: verde
font-family:"times new roman"; // familia fontului „Times new roman” }[CSS1]
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
27
2.4 JavaScript
Limb ajul de programare JavaScript (JS) este un limbaj de programare orientat pe obiect baz at
pe conceptul prototipurilor. Adesea este folosit pentru introducerea unor f uncționalități în paginile
web. Astfel c odul Javascript ce face parte din aceste pagini este rulat de către motorul de cautare .
Limbajul este foarte cunoscut pentru folosirea sa în construirea aplicațiilor web, dar poate fi folosit și
pentru acesul la obie cte încastrate (embedded objects) în alte aplicații.
Deși numele este asemanator și chiar există anumite similarități în sintaxă, între JavaScript și
limbajul de programare Java nu există nicio legătură. Asemenea limbajului Java, JavaScript are o
sintaxă apropiată de cea a limbajului de programare C.
“Programatorii web pot îngloba în paginile HTML script -uri pentru diverse activități cum ar fi
verificarea datelor introduse de utilizatori sau crearea de meniuri și alte efecte animate. ” [2]
Declararea varia bilelor standard în JavaScript , acestea nu au tip atașat, și orice valoare poate fi
stocată în orice variabilă.
Variabilele sunt declarate cu un var declarație și se pot declara mai multe variabile associate
unei singure date.
Aici este un exemplu de decla rații variabile și valori globale:
var x = 0 ; // o variabilă globală, deoarece nu este inclusa în nici o funcție
function f () {
var z = 'foxes' , r = 'birds' ; // 2 variabile locale
m = 'fish' ; // variabilă globală, deoarece nu a
fost declarat îna inteniciunde
function child () {
var r = 'monkeys' ; // Această variabilă este locală și nu afectează "birds" r a functiei mamă.
z = 'penguins' ; // Funcția copil este capabilă de a accesa variabilele din funcția mamă
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
28
}
twenty = 20 ; //Această variabilă este declarată pe următoarea linie, dar utilizabilă oriunde în
funcția child () ;
return x ; //Putem folosi x aici, deoarece este globală
}
Când JavaScript încearcă să rezolve un identificator, se pare, în funcție de domeniul de apl icare
locală. Dacă acest identificator nu este găsit, se pare, în funcția de exterior, care a declarat una locală,
și așa mai departe de -a lungul lanțului de domeniul de aplicare până când ajunge la domeniul global în
cazul în care variabila este globală.
Dacă nu este încă găsit, Javascript va ridica o excepție ReferenceError.
Atunci când atribuirea unui identificator, Javascript face exact același proces pentru a prelua
acest identificator, cu excepția faptului că în cazul în care nu se găsește în domeni ul global, se va crea
"variabila", ca o proprietate a obiectului la nivel global.
Declararea unei variabile (cu cuvântul cheie var), în afara corpului oricărei funcții, va crea, de
asemenea, o variabilă nouă la nivel mondial.
Mesaje de eroare [modificare | modificare sursă]
Mesaje de eroare personalizate pot fi create folosind clasa Error:
throw new Error ("Ceva a mers prost.");
Imbricate în instrucțiunile condiționate, aceste instanțe pot înlocui blocurile try/catch:
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
29
var emailAddress = ("Va rugam să introduceti adresa de e -mail:", "");
if ( ! emailAddress || emailAddress. length === 0 ) {
throw new Error ("Ne pare rău. Trebuie să introduceți o adresă de e -mail pentru a
continua"); [JAVASCR1]
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
30
3 IMPLEMENTAREA APLICA ȚIEI WEB
3.1 MySQL
Proiectarea bazei de date este cel mai important element din acest proiect, deoarece în baza de
date vor fi stocate informațiile paginilor web existente, informații privind etichetele de limbă
introduse, informații cu privire la adaugarea și stocarea utiliz atorilor.
Deoarece platforma de administrare a conținului este un proiect complex, baza de date va avea
mai multe tabele ce se vor lega intre ele prin legaturi unu la unu și unu la mulți si mulți la mulți.
Deoarece platforma pentru administrarea conținutul ui va fi creată pe un server online, se vor
prezenta pașii necesari pentru a crea și popula baza de date, structura tabelelor și a legaturilor dintre
ele.
1. În bara de cautare a motorului de cautare folosit se va scrie numele domeniului urmat de
semnul “/” ș i apoi se va scrie cpanel (exemplu: www.oprean.net/cpanel ).
2. Utilizatorul va fi redirecționat către o paginș de autentificare în cpanel, aici se va introduce
utilizatorul și parola aferenta contului după care se va apasa butonul de “Login”.
Figura 3 autentificare în cpanel
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
31
3. După autentificare, utilizatorul va fi redirecționat către pagina meniu a cpanel -ului. Se va
cauta optiunea “MySQL Database Wiza rd” și o se va accesa pentru a putea crea baza de
date.
4. După accesarea “MySQL Database Wizard” utilizatorul va fi redirectionat către pagina în
care se va putea crea baza de date:
Figura 4 crearea bazei de date
5. Se va denumi baza de date “ district_pres447 ” și se va ap asa butonul “Next Step”.
6. Se va putea selecta tipul de caractere pe care baza noastra de date le va asimila cât și limbă
stabilita pentru aceasta.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
32
Figura 5 setarile bazei de date
7. Fiecare bază de date trebuie să aiba un utilizat or propriu, astfel după creerea bazei de date
trebuie să se creeze și să se configureze utilizatorul aferent acesteia.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
33
Din optiunea “MySQL Users” ce se gaseste tot în “MySQL Databases Wizard”, se adaugă
numele utilizatorului, se setează o parolă și se va a pasa pe butonul “Create User”.
Figura 6 adaugarea utlizatorului bazei de date
8. Acum urmează să se atribuie utilizatorului nou creat baza de date. Din optiunea “Add user to
database”, se va selecta utilizatorul creat și baza de da te și se va apasa pe butonul “Add”.
Figura 7 legatura dintre utilizator și baza de date aferentă
Adaugarea tabelelor în baza de date:
1. Se deschide “phpMyAdmin” și selectam baza de date.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
34
2. Se va apasa pe b utonul “New” , iar utilizato rul va fi redirecționat către creerea unui nou tabel:
Figura 8 crearea unui nou tabel în baza de date
Primul tabel este tabelul “pskb_access ”, pentru adaugarea și stocarea utilizatorilor:
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
35
Figura 9 tabelul pskb_ access
Astfel “id _profile ” reprezint ă numarul de utilizatori, este setat ca și cheie primară cu atributul de
“auto_increment”. Nu permite campuri goale.
Al doilea tabel este tabelul “ pskb_address ” în care vor fi stocate adresele clentilor folosite în
platforma și id -ul aces tora:
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
36
Figura 10 tabelul pskb_address
Al treilea tabel este tabelul “ pskb_address _format ” ce reprezintă formatul necesa r pentru adaugarea
unei adrese.
Figura 11 tabelul pskb_address _format
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
37
Al patru -lea tabel este tabelul pskb_andropdown , aici vor fi stocate elementele din ba ra de tip drop –
down , se afisaza, id -ul din meniu, pozitia pe care sunt afisate, daca sunt active sau nn u, categoria din
care fac parte si produsele aferente.
Figura 12 tabelul pskb_andropdown
Tabelul cu numarul cinci este “ pskb_anmenu ” aici vor fi stocate elementele afisate in meniul
principal al aplicatiei web. Culoarea etichetelor ce va fi afisata utilizatorilor, numarul coloanei afisate,
pozitia elementelor afisate.
Figura 13 tabelul pskb_anmenu
Tabelul cu numarul șase este “pskb_cart ”, câmpul Id _cart este cheia primară a acestui tabel,
setata ca “auto_increment” (valoarea să crește cu 1), aici vor fi stocate numarul produselor adaugate
in cosul de cumparaturi , delivery_option este coloana ce stocheaza datele de livrare pe care clientul
doreste sa le foloseasca cum arr fi: Ridicare de la sediu sau livrare prin curier, coloana id_currency
este coloana ce afisaza moneda in car e este efectuata comanda online, date_Add este coloana unde se
stocheaza date exacta la care a fost inregistrata comanda online.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
38
Figura 14 tabelul pskb_Cart
Figura 15 tabelul pskb_Cart _2
Tabelul cu numarul șapte este “pskb_cart_product ” aici se vor înregistra și stoca date despre
produsele adaugate in cosul de cumparaturi. Id-ul unic al produselor si data adaug ata a produselor in
cosul de cumparaturi.
Figura 16 tabelul pskb_cart_product
Tabelul cu numarul opt este „ pskb_carrier ”, aici se vor înregistra și stoca date cu privire la politica de
livrare a magazinului, numele magazinului, posibilitatea de livrare si cantitatea acceptata.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
39
Figura 15 tabelul pskb_carrier
Tabelul cu numarul 9 este tabelul „ pskb_authorization_role ”, aici se înregistrează și stochează
informații despre utilizatorii inregistrati si rolu l acestora precum si permisiunea de a c era, sterge, citii
si actualize informatii cu privire la produsele afisate in aplicatia web.
Figura 16 tabelul pskb_authorization_role
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
40
Tabelul cu numarul 10 este tabelul „ pskb_attribute ”, aici se înregistrează și stochează informații
culoarea atributului unui produs, spre exemplu avem un produs la care difera doar culoarea, ca sa nu
adaugam continut duplicat p utem seta ca atribut cele doua culorui ale produsului.
Figura 17 tabelul pskb_attribute
Tabelul cu numarul 11 este tabelul „ pskb_anproducttabs ”, in acest tabel sunt definite tipul de
caractere pentru numele produselor, pozitia pe care acestea sunt afisate, aceasta pozit ie fiind o cheie
secundara, iar ca si cheie prmara avem id -ul produselor, care este de tipul int ( intreg ) si se
autoincrementeaza cu 1 fata de numarurl precedent.
Figura 18 tabelul pskb_anproducttabs
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
41
Tabelul cu numarul 12 este tabelul „ pskb_anproducttabs _content ” acest tabel contine legaturi
multiple avand ca si cheie primara id_ anproducttabs _content , setata ca int( 10) numere intregi pana la
10 zecimale, iar urmat oarele legaturi sunt legaturi secundare, setate ca si che ie secundara .
Figura 19 tabelul pskb_anproducttabs _content
Tabelul cu numarul 13 este tabelul „ pskb_attachment ” aici se înregistrează și stochează informații
despre tipul de atasamente adaugate in aplicatia web, precum si numele acestora si dimensiunea
atasamentelor adaugate.
Figura 20 tabelul pskb_attachment
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
42
Figura 21 relatiile dintre tabelele bazei de date
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
43
3.2 PHP
După ce baza de date a fost creată iar, tabelele au fost configurate și legăturile au fost create se
poate începe implementarea aplicației web prin definirea claselor cu ajutorul limbajului de
programare PHP.
Realizarea structurii pentru a cre a tema aplicației web:
In directorul „Template” se gasesc două directoare „admin” și „front” ce contin fiecare cate două
fișiere „footer.php” și ” header.php”
Figura 22 directorul template
Figura 23 fisierele header.php și footer.php
Tema aplicației web este implementată atat pentru sectiunea “a dministrator” cat și pentru secț iunea
vizibila utilizatorului final.
Astfel în directorul “front” este definit în php “header -ul” și “footer -ul” temei create pent ru
utilizatorul ce nu are drepturi de vizualizare asupra sectiunii de administrare a aplicației web.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
44
Figura 24 cod header.php
In fișierul “header.php” se incepe prin declararea tipului de fișier <!DOCTYPE HTML>
pentru a putea fi recunoscut și citit de motorul de cautare.
Intre etichetele de tip <head> și </head> sunt definite titlul aplicației web, cuvintele cheie și
descrierea meta a acestei aplicații precum și un link către fișierul extern de foi de stil în cascada.
Intre etic hetele <body> și </body> sunt definite portiunile de “pre -header” și containerul inclus de
acesta, logo -ul afisat al aplicației web precum și meniul ce va conține opțiunile de limbă disponibile,
meniul principal pe care se vor regasi paginile afișsate ale aplicației web, meniul secundar sau cel din
stanga în care puteam adauga de asemenea pagini ce vor fi afișsate în aplciatia web.
Conexiunea bazei de date se realizează în fișierul “Dbase.php” din directorul “Classes”.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
45
Figura 25 cod clasa Dbase
Aici sunt definite, numele bazei de date, utilizatorul și parola pentru a putea avea acces la baza de date
din phpMyAdmin.
Figura 26 cod conexiune catre baza de date
Se va seta conexiunea printr -un constructor ce a peleaza conexiunea, se vor seta proprietatiile bazei de
date.
In fișierul “Core.php” din directorul Classes sunt definite ca și variabile publice variabilele:
“language”, “lang_menu”, “Navigation” , “Admin”, cele trei tipuri de meniu “navigation_1”,
“navig ation_2”, “navigation_3”, cuvintele cheie, descrierea meta și titlul meta “meta_title”,
“meta_description” și “meta_keywords” și continutul.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
46
Figura 27 cod clasa Core
In fișierul “language.php” din directorul “Classes” sunt defini te atributele limbii ce urmează a fi
introdusa:
Figura 28 cod clasa Language
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
47
Aici sunt setate etichetele (“labels”), conținutul etichetelor (“labels_content”), tipul acestora
(“labels_types”), conținutul paginilor (“pages_conte nt”) și tipul și conținutul meniului
(“navigation_types_content”).
In fișierul “Navigation.php” din directorul “Classes” este definita clasa “Navigation”.
Figura 29 cod clasa Navigation
In aceasta clasa sunt declarate ca și vari abile private (“private”) tabelele “navigation”,
“navigation_types”, “pages”, “pages_content” “navigation_types_content”.
In fișierul “page.php” din directorul “Classes” este definita clasa Page, ce conține variabilele private
“pages” și “pages_content” și ca variabila declarata publica este variabila “objLanguage”.
Figura 30 cod clasa Page
în fișierul “Admin.php” din directorul “Classes” este definita clasa “Admin” în care sunt declarate ca
variabile private (“private”) tabelele “admins”, “access” și “access_content”, conexiunea la baza de
date “Db”, iar ca și variabila publica este declarant utilizatorul (“user”).
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
48
Figura 31 cod clasa Admin
In directorul “admin” sunt 4 directoare “admins”, “error”, “ languages”, “login” și “pages”, în fiecare
dintre cele patru directoare se gasesc fișiere de tip .php.
Astfel în directorul “admins” fișierul “index.php” daca utilizatorul de tip administrator are acces,
acesta va fi redirectionat către pagina index.php de unde se va putea adauga un cont de administrator
nous au va putea modifica conturi de administrator sau utilizator existente.
Figura 32 cod index.php
In fișierul “add.php” tot din directorul “admins” este implementata metoda de a putea adauga un nou
cont de administrator sau de utilizator:
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
49
Figura 33 cod adaugă utilizator “add.php”
In fișierul “edit.php” din directorul “admins” este implementata medtoda prin cre utilizatorul va putea
modifica informații ale conturilor de administrator sau de utilizator existente.
Figura 34 cod modifică urilizator – edit.php
In fișierul “remove.php” din directorul “admins” este implementata medtoda prin cre utilizatorul va
putea șterge conturile de administrator sau de utilizator existente.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
50
Figura 35 cod sterge utilizator – remove.php
In fișierul “index.php” din directorul “login” este implementata metoda prin care utilizatorul se va
autentifica pentru a fi redirectiona t către pagina administrator.
Figura 36 cod index.php
In fișierul “index.php” din directorul “pages” este implementata functionalitatea ce o prezintă o
pagina noua. câmpurile pe care aceasta le contine: nume, continut, titlu meta , descriere meta și
cuvintele cheie.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
51
Figura 37 cod campuri pagină nouă – index.php
In fișierul “add.php” din directorul “pages” este implementata metoda prin care utilizatorul va putea
adauga o pagina noua:
Figura 38 cod adauga o pagină nouă – add.php
Daca utilizatorul va folosi aceasi identitate a paginii de 2 ori va fi avertizat printr -o eroare și va fi
redirectionat către pagina index.php
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
52
Figura 39 cod avertizare identitate folosită
In fișierul “edit.php” din directorul “pages” este implementata metoda prin care utilizatorul va putea
modifica conținutul și tipul unei pagini existente:
Figura 40 cod modificare pagina existentă – edit.php
In fișierul “navigation.php” din directorul “pages” este implementat adaugarea paginilor existente în
unul dintre cele 3 tipuri de navigatie (meniuri) create.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
53
Figura 41 cod adaugare pagină în meniu – navigation.php
In fișierul “remove.php” din directorul “pages” este implementata metoda prin care utilizatorul va
putea șterge paginile existente.
Figura 42 cod șterge pagină – remove.php
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
54
3.3 CSS
Definirea foilor de stil în cascada s -a facut în două fișiere externe .c ss, primul fișier este “core.css” în
care sunt definite stilurile și culorile pe care le va putea vedea utilizatorul larg.
Figura 43 cod cloare si dimensiune heading
Titlurile h1 (“heading”), h2, h3, h4, și h5 prezintă aceasi cu loare: “#3298FD”, după care se seteaza
dimensiunea afișată a fiecarui titlu.
Figura 44 culoare titlu CSS
Logo -ul este setat ca avand o latime de 262 de pixeli și o inaltime de 51 de pixeli
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
55
Figura 45 inaltime și latime logo CSS
Lista cu limbile disponibile este afișată în dreapta ecranului, are o dimensiune de 5 pixeli și marginea
cu dimensiunea de 1 pixel, de asemenea are culoarea setata este culoarea alba.
Figura 46 selector limbă CSS
Meniul sau navigatia are inaltimea de 50 de pixeli, culoarea de fundal este alba, este realizat dintr -o
lista neordonata de elemente, prezintă font italic, iar atunci când utilizatorul pune cursorul deasupra
unui element din meniu, culoarea text ului afisat se schimba din alb în albastru.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
56
Figura 47 cod navigatie front .css
Al doilea fișier de tip .css se află în directorul “admin” este denumit tot “core.css”, în acest fișier
sunt stilizate elemente vazute de utilizat orul administrator:
Figura 48 cod stilizare elemente admin
Marginile sunt setate la 0 pixeli, la fel și spatierea, în câmpul corpul aplicației fontul are dimensiunea
de 12 pixeli, codul de culoare #211f20, alinierea este centrala .
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
57
Figura 49 cod setare culoare si dimensiune heading admin
Dimensiunea titlului (heading 1) este de 21 de pixelu, codul de culoare este #333, ce reprezintă
culoarea neagra.
Logo -ul este setat ca avand o latime de 262 de pixeli ș i o inaltime de 51 de pixeli
Figura 50 cod logo css admin
Lista cu limbile disponibile este afișată în dreapta ecranului, are o dimensiune de 5 pixeli și marginea
cu dimensiunea de 1 pixel, de asemenea are culoarea setata este cu loarea alba.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
58
Figura 51 cod selector de limba admin
Meniul sau navigatia are inaltimea de 50 de pixeli, culoarea de fundal este alba, este realizat dintr -o
lista neordonata de elemente, prezintă font italic, iar atunci când util izatorul pune cursorul deasupra
unui element din meniu, culoarea textului afisat se schimba din alb în albastru.
Figura 52 cod admin navgatie.css
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
59
3.4 JavaScript
Fiserul de tip .js denumit “core.js” se află în directorul “classes ” prin intermediul limbajului de
programare JavaScript este implemantata metoda de a selecta din lista optiunea de limbă disponibila.
Figura 53 cod Core.js
In fișierul “form.js” din directorul “classes” este implementata metoda d e a trimite email către
administrator prin apasearea butonului trimite sau “submit”.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
60
Figura 54 cod form.js
3.5 Ckeditor
Editorul “CKeditor” este un editor de tip sursă deschisa careuia I se pot adauge imbunatatiri și al carui
cod po ate fi modificat de către utilizator.
Este realizat de Amazon, descarcarea acestuia se face gratuity și se poate implementa în aplicația web
ce conține un câmp de tip “textarea” în care utilizatorul dorește să faca modificari asuprea textului, să
insere p oze, legaturi, să ordoneze crescator liste.
Acest editor facilitează utilizatorilor modificarea textului scris.
Implementarea acestuia se face destul de usor, dup ace editorul a fost descarcat se va urca în
directorul radacina al aplicației web și se va ex trage.
In fișierul în care este defint câmpul de text de tip “textarea” trebuie definite și adaugate calea în care
se gaseste extras editorul precum și un script de JavaScript.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
61
Figura 55 ckeditor implementare javascript
Urmatoru l pas este acela de a crea clasa “ckeditor” utilizatorul poate să denumeasca câmpul asupra
caruia I se va aplica acest editor cum doreste:
Figura 56 ckeditor cod creare clasa
Dup ace a fost implementat editorul va arata astfel:
Figura 57 exemplu funcții ckeditor
Prezintă opțiuni ușor de folosit asemanatoare meniului din neditoarele de text “Word”.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
62
4 PREZENTAREA SISTEMUL UI DE MANAGEMENT AL
CONȚINUTULUI CU APLI CAȚII IN E -LEARNING
Aplicaț ia web de manage ment al conținutului prezintă două zone, cea a utilizatorului și cea a
administratorului.
Managementul conținutului se face de administratorul aplicației web în zona de management al
paginilor, utilizatorilor și al optiunilor de limba.
Utilizatorul final v a vedea numai o parte a aplicației web, cea pe care administratorul a droit să o
afiseze.
Acesta va putea naviga printer paginile afisate, va putea schimba limbă în care este afișată pagina
web, va putea trimite mesaje către administrator cu ajutorul formu larului din pagina de contact.
Conț inutul vizibil are apalicatii în conceptul de e -learning. Acest concept facilitează
invatamantul la distanta, prin intermediul elementelor de redare multimedia.
Astfel aplicația web de sistem de management al conținutulu i facilite ază atat adaugarea de conținut
nou cum ar fii: cursuri, prezentari video, legaturi către fisiere, imagini și modificarea acestora
facilitand astfel efortul depus de cadrele didactice în a prezenta studenților diferite forme ale cursului.
In plus, în funcție de categoriile de utilizatori ce urmaresc cu interes aceasta aplicatie, administratorul
poate adauga conținutul în mai multe limbi pentru ca studenților interesati să le fie ușor să înteleagă
cursurile în limbă lor natală .
Aplicaț ia web este u n site web pe un singur nivel
Se poate observa după modul de aș ezare al butoanelor și al pag inilor din meniu pe un singur rând sau
pe o singura coloană.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
63
Figura 58 exemplu structură site web
Utilizatorul se poate întoarce la orice pagină dorește simplu, accesand paginile afiș ate din meniul
principal.
Prima pagină pe care o va vedea utilizatorl este pagina “Acasa”
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
64
Figura 59 pagina Home
Aici sunt prezentate informații despre conținutul paginilor web și de asemenea utilizatorul este invitat
să urmeze cursurile ce sunt prezentate.
Pagina CURS PHP oferă utilizatorului informații introductive despre limbajul de programare php, un
curs video și un curs complet de tip pdf.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
65
Figura 60 pagina curs php
Pagina Curs MYSQL oferă utilizatorului informații introductive despre bazele de date MySQL, un
curs video și invită utilizatorul să citeasca un curs complet MySQL de tip pdf.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
66
Figura 61 pagina curs MySQL
Pagina “CURS CSS” oferă utilizatorului informații introductive despre limbajul de progra mare CSS
(Foi de stil în cascadă ), un curs video și invită utilizatorul să parcurca un curs complet CSS de tip pdf.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
67
Figura 62 pagina curs css
Pagina “CONTACT” prezintă un formular de contact î n care utilizatorul poate pune î ntrebari pentru
ca apoi a dministratorul aplcație web să îi raspundă .
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
68
Figura 63 pagina contact
Continutul paginilor web ce sunt vizibile pentru uti lizatorul final este implementat în 4 limbi diferite:
Romana, Engleza, Germana și Span iola acelasi conținut fiind afișat în limb a pe care utilizatorul o va
selecta din lista de opțiuni disponibile
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
69
Figura 64 selector limbă
Zona ac cesibilă administrator ului se face numai dup a ce acesta se va autentifica, pentru aceasta va
trebui să scrie în bara de cautare a motorului de cautare domeniul aplicației web urmat de “/panel”, de
exemplu www.opre an.net/panel . Utilizatorul va fi redirectionat către pagina de autentificare a
aplicației web.
Figura 65 pagina de autentificare
Lista cu opțiunile de limbă este prezenta și pe aceasta pagina, conținutul acesteia fiind tradus î n
funcție de limbă selectata de exemplu engleza
Figura 66 inserarea utilizatorului si a parolei
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
70
Dupa ce utilizatorul se va autentifi ca folosind un email și o parolă valida va apasa pe butonul de
“Autentificare” și va fi redirecti onat către pagina de administrate a conținutului pentru aplicația web.
În caz contrar acesta va primii un mesaj de avertizare cu “Nume de utilizator incorrect sau parola
incorecta”
Figura 67 avertizare utilizator sau parola inc orectă
Pagina de administrare:
Figura 68 pagina de administrare pagini
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
71
În aceasta zona de administrare, utilizatorul de tip administrator are acces la trei meniuri
“Pagini”, “Limbi” și “Utilizatori”.
De asemenea sunt afișsate paginile existente în aplicația web cu două posibilitati și anume
“Modifica” și “Sterge”.
Sunt trei tipuri de pagini ce nu pot fi sterse deoarece un site web nu poate există fara acest tip de
pagini și anume: “Acasa”, “Eroare 404” și “Contact”.
Daca utiliza torul va pune cursorul peste meniul “Pagini” vor aparea trei opțiuni
Figura 69 meniu pagini
Prima optiune este “Pagini” aceasta va afișa paginile existente pe care utilizatorul le va putea modifica
sau sterge.
A două optiune est e “Adauga o pagina noua” daca utilizatorul va alege aceasta optiune va fi
redirectionat către o pagina în care va putea adauga nou continut.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
72
Figura 70 adauga o pagină nouă
Sunt afișate câmpurile “Nume Pagina” aici utilizatorul va înregistra numele paginii pe care dorește să
o publice, “Continut” în acest câmp se poate insera conținutul pagininii, se poate modifica tipul
textului, se poate adauga o legătură și se pot adauga imagini sau insera cod php sau html .
Câmpul “Titlu cheie” în acest câmp utilizatorul poate pune un titlu sugestiv astfel încat pagina web să
fie ușor de gă sit în motoarele de cautare.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
73
Câmpul “Descriere cheie” acest tip de descriere ajuta la promovarea pagnii web pe motoarele d e
cautare astfel după anumite că utari ce sunt introduse în acest câmp motoarele de cautare vor afișa
pagina web.
Câmpul “Cuvinte cheie”, în acest câmp se pot introduce diverse cuvinte cheie representative pentru o
mai buna promovare a paginii web.
Câmpul “Identitate” utilizatorul defineste t ipul paginii pe care o va publica.
A treia opț iune “Meniu” va redirecționa utlizatorul către configurarea meniului.
Figura 71 inserare pagini în meniu
Sunt afișsate două liste de tip “drop -down” și paginile ce sunt incluse în fie care meniu și anume
meniu principal, m eniu secundar sau meniul din stâ nga și meniul subsol.
Din prima lista de tip drop -down utilizatorul va putea alege tipul meniului în care acesta dorește să
publice pagina creată .
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
74
Figura 72 listă meniu
Din a două lista de tip “drop -down” utilizatorul va allege pagina pe care dorește să o introduca în meniu.
Figura 73 listă pagini
Dupa ce va al ege atat tipul meniului cât și pagina dorită utilizator ul va insera pagina în meniu apăsâ nd
pe butonul “Adauga”.
Al doilea element din meniul principal este elementul “LIMBI” a tunci când este accesat
redirecționează utilizatorul către o lista de etichete, din aceasta pagină , utilizatorul poate modifica
denumirea etichetelor, le p oate șterge sau poate adauga o etichetă nouă selectâ nd tipul acesteia din
lista de tip “drop -down” numită “selecteaza tipul”.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
75
Figura 74 pagina administrare etichete
Utilizatorul poate naviga pentru a putea vizualiza etichetele cu ajutorul butoanelor “Urmatorul” și
“Ultimul”.
Daca utilizatorul va ț ine cursorul deasupra elementului “Limbi” din meniul principal se vor afișa trei
opțiuni disponibile: “Lista etichete”, “Lista Limbi” și “Tipuri de etichete”.
Figura 75 meniu etichete
Optiunea “Lista limbi” va redirecționa utilizatorul către o pagină în care sunt afișate lista l imbilor
existente în aplicația web. Se poate adauga o limbă nouă prin introducerea numelui limbii respective
și apasarea butonului “Adaug a” urmand ca etichetele limbii respective să fie traduse din pagina “Lista
etichete”. De asemenea utilizatorul poate șterge una dintre limbile existent e sau îi poate modifica
denumirea.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
76
Figura 76 lista limbi existente
A treia opț iune disponibilă este “Tipuri de etichete” utilizatorul va fi redirectionat la pagina ce
afiseaza tipul etichetelor existente. Utilizatorul poate adauga un tip de etichetă nou sau poate modifica
conținutul existent, dar nu poate șterge aceste tipuri de eti chete. Stergerea lor se poate face doar din
baza de date în care acestea au fost configurate.
Figura 77 pagina tipuri de etichete
Din meniul principal ultimul element afisat este cel de “Utilizatori”, daca va fi accesat utilizato rul va
fi automat rediectionat către pagina “Lista utilizatori”, în aceasta pagina vor fi afisati utilizatorii
existenti. Se pot modifica sau sterge.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
77
Figura 78 pagină utilizatori
Daca utilizatorul va tine cursorul peste acest el emnt vor fi afișsate două opțiuni disponibile și anume
“Lista utilizatori” și “Adauga administrator”.
Figura 79 meniu utilizatori
Cand utilizator va accesa optiunea “Adauga administrator” acesta va fi redirectionat către o pagi na în
care va putea adauga un nou cont de administrator sau utilizator. Toate câmpurile sunt obligatorii nu
se accepta campuri goale. Se va introduce “Prenumele”, “Numele”, “Adresa de email” ce accepta
numai conținut cu format de email ( alina@yahoo.com ) și setarea parolei ce va fi folosita pentru
autentificare.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
78
Figura 80 adaugă un utilizator nou
Campul “Acces” este de tip lista “drop -down” cu două opțiuni posibile și anume: “Administrator” și
“Utilizator”.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
79
Figura 81 listă selectare tip utilizator
Diferenta dintre aceste două tipuri de utilizator este destul de mare, utilizator de tip administrator
poate modifica, adauga și șterge conținutul din aplicația web de ma nagement al contintului, iar
utilizatorul de tip utilizator poate adauga, modifica și șterge pagini, poate adauga pagini și selecta
tipul meniului, dar nu are acces la lista utilizatorilor, nu are acces la lista limbilor și nu poate face
modificari în aces te zone.
Figura 82 perimisiuni restrictive cont utilizator
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
80
5 CONCLUZII
Prin implementarea b azei de date pentru a stoca conț inutul sistemului de management al
conținutului, prin crearea paginilor prin implementarea acestora cu ajutorul limbajelor de programare
php, html, css si javascript s-a realizat o aplicație software menită să faciliteze administrarea
conținutului multimedia pentru o pagină web.
Funcț ionalitațile de bază ale acestui sistem , permit utilizatorului de tip adm inistrator să se
autentifice în aplicație și să poată adaugă conținut nou, modifica sau șterge conținut existent, să poată
alege meniul în care dorește să publice pagina creată, să poată aduga utilizatori de tip administrator ce
vor avea acelaș i drepturi s au de tip utilizato r ce pot face modificari numai în zona adăugarii și
modifică rii paginilor web.
Deoarece conținutul poate fi adaugat în mai multe limbi în funcție de vizitatorul țintă, acest
sistem de management al conț inutul ui poate avea aplicații î n e-Learning și permite atat moderatorului
să publice con ținut cu caracter educațional de tip text, legatură sau multimedia (imagini, video etc.)
cât și vizitatorului final să selecteze din meniul ce afișază limbile disponibile în li mba î n care doreș te
să lectureze info rmația educațională .
Acest sistem poate fi folosit cu succes de catre un iversitatile partenere ERASMUS și poate
facilita studenților stră ini accesul la informație în limba lor natală .
În concluzie acest sistem de management al conținutului facili tează atat moderatorul (utilizatorul
de tip administrator) în adaugarea de conținut nou sau modificarea de conținut existent pe o pagină
web fară a fi nevoie de modificarea paginii respective în codul sursă al acesteia, cât si vizitatorului
final prin posi bilitatea de a alege din mai multe limbi afișate conținutul aferent astfel încat procesul de
lecturare al informațiilor cu caracter educațional să fie cât mai plăcut pentru vizitatori.
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
81
6 BIBLIOGRAFIE
Bibliografia va fi ordonată al fabetic dupa eticheta fiecărei element (de ex. DOOM05 în lista
de mai jos este o etichetă). Etichetele materialelor consultate vor fi formatate folosind:
primele litere ale primului autor urmate de cele două cifre semnificative ale anului
apariției materia lului, sau
dintr -un acronim popular al lucrării respective, urmat din nou de cele două cifre
semnificative ale anului apariției.
[DOOM05]
[JAVASCR01] – Dicționarul ortografic, ortoepic și morfologic al limbii române , Editura
Univers Enciclopedic, Bucureș ti, 2005
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
82
7 REFERINȚE WEB
[CMS1] – https://www.ultra -design.ro/sistemul -de-administrare -cms/
[ELEARNING1] – http://e -calificare.blogspot.ro/2013/01/conceptul -de-e-learning.html
[PHP1] – http://php.punctsivirgula.ro/serverside/
[JAVASCR1] – https://ro.wikipedia.org/wiki/JavaScript
[CSS1] – http://www.rasfoiesc.com/educatie/informatica/html/FOI -DE-STIL -IN-CASCADA –
CSS8 4.php
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
83
A. CODUL SURSĂ
A.1 Admin.php
<?php
class Admin {
private $table = 'admins';
private $table_2 = 'access';
private $table_3 = 'access_content';
private $Db;
private $objLanguage;
public $user;
public function __construct($objLanguage = nul l) {
$this ->objLanguage = is_object($objLanguage) ?
$objLanguage :
new Language();
$this ->Db = new Dbase();
}
public function getOne($id = null) {
if (!empty($id)) {
$sql = "SELECT `id`, `first_name`, `last_name`,
`email`, `salt`, `ac cess`,
CONCAT_WS(' ', `first_name`, `last_name`) AS `full_name`
FROM `{$this ->table}`
WHERE `id` = ?";
return $this ->Db->getOne($sql, $id);
}
}
public function getByEmail($email = null) {
if (!empty($email)) {
$sql = "SELECT *
FROM `{$this ->table}`
WHERE `email` = ?";
return $this ->Db->getOne($sql, $email);
}
}
public function isAdmin($email = null, $password = null) {
if (!empty($email) && !empty($password)) {
$this ->user = $this ->getByEmail($email);
if (!empty($this ->user)) {
$password = $this ->makePassword($password, $this ->user['salt']);
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
84
if ($this ->user['password'] == $password) {
return true;
}
return false;
}
return false;
}
return false;
}
public function makePassw ord($password = null, $salt = null) {
return sha1($password.$salt.$password);
}
public function getAll($search = null) {
$fields = array();
$values = array($this ->objLanguage ->language);
$sql = "SELECT `u`.*,
CONCAT_WS(' ', `u`.`first_name`, `u`.`last_name`) AS `full_name`,
`a`.`label`
FROM `{$this ->table}` `u`
LEFT JOIN `{$this ->table_3}` `a`
ON (`a`.`access` = `u`.`access` AND `a`.`language` = ?)";
if (!empty($search) && is_array($search)) {
$sql .= " WHERE (";
forea ch($search as $key => $value) {
$fields[] = "`u`.`{$key}` LIKE ?";
$values[] = "%{$value}%";
}
$sql .= implode(" OR ", $fields);
$sql .= ")";
}
$sql .= " ORDER BY `u`.`first_name`, `u`.`last_name` ASC";
return $this ->Db->getAll($sql, $values);
}
public function getAccess() {
$sql = "SELECT `a`.`id`, `c`.`label`
FROM `{$this ->table_2}` `a`
LEFT JOIN `{$this ->table_3}` `c`
ON (`c`.`access` = `a`.`id` AND `c`.`language` = ?)
ORDER BY `a`.`id` ASC";
return $thi s->Db->getAll($sql, $this ->objLanguage ->language);
}
public function duplicate($email = null, $id = null) {
if (!empty($email)) {
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
85
$values = array($email);
$sql = "SELECT *
FROM `{$this ->table}`
WHERE `email` = ?";
if (!empty($id)) {
$sql .= " AND `id` != ?";
$values[] = $id;
}
return $this ->Db->getAll($sql, $values);
}
return true;
}
public function update($array = null, $admin = null) {
if (!empty($array) && !empty($admin)) {
$array = Helper::makeArray($arra y);
$fields = array();
$values = array();
$sql = "UPDATE `{$this ->table}` SET ";
foreach($array as $key => $value) {
if (!Helper::isEmpty($value)) {
switch($key) {
case 'password':
$fields[] = "`{$key}` = ?";
$values[ ] = $this ->makePassword($value, $admin['salt']);
break;
default:
$fields[] = "`{$key}` = ?";
$values[] = $value;
}
}
}
$sql .= implode(", ", $fields);
$sql .= " WHERE `id` = ?";
$values[] = $admin['id'];
return $this ->Db->execute($sql, $values);
}
return false;
}
public function remove($id = null) {
if (!empty($id)) {
$sql = "DELETE FROM `{$this ->table}`
WHERE `id` = ?";
return $this ->Db->execute($sql, $id);
}
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
86
return false;
}
public function add($array = null) {
if (!empty($array)) {
$sql = "INSERT INTO `{$this ->table}`
(`first_name`, `last_name`, `email`, `password`, `access`, `salt`)
VALUES (?, ?, ?, ?, ?, ?)";
return $this ->Db->insert($sql, array(
$array['fi rst_name'],
$array['last_name'],
$array['email'],
$array['password'],
$array['access'],
$array['salt']
));
}
return false;
}
}
A.2 Core.php
<?php
class Core {
public $objLanguage;
public $lang_menu;
public $objUrl;
public $ objNavigation;
public $objAdmin;
public $admin;
public $navigation;
public $navigation_1;
public $navigation_2;
public $navigation_3;
public $meta_title;
public $meta_description;
public $meta_keywords;
public $content;
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
87
public $column;
public $script;
public function run() {
$this ->objLanguage = new Language();
$this ->lang_menu = Helper::getPlug(
'language',
array('objLanguage' => $this ->objLanguage)
);
$this ->objUrl = new Url();
$this ->objNavigation = new Nav igation($this ->objUrl, $this ->objLanguage);
switch($this ->objUrl ->module) {
case 'panel':
set_include_path(implode(PATH_SEPARATOR, array(
realpath(TEMPLATE_PATH.DS.'admin'),
get_include_path()
)));
$this ->runAdmin();
break;
default:
set_include_path(implode(PATH_SEPARATOR, array(
realpath(TEMPLATE_PATH.DS.'front'),
get_include_path()
)));
$this ->runFront();
}
}
public function runFront() {
$this ->parseNavigation();
$this ->parseColumn();
if (array_key_exists($this ->objUrl ->cpage, Router::$_modules)) {
$file = ROOT_PATH.DS.'mod'.DS.Router::$_modules[$this ->objUrl ->cpage].'.php';
if (is_file($file)) {
ob_start();
require_once($file);
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
88
echo ob_get_clean();
} else {
$objPage = new Page($this ->objLanguage);
$page = $objPage ->getError();
$this ->parsePage($page);
ob_start();
require_once('header.php');
echo $this ->content;
require_once('footer.php');
echo ob_get_clean();
}
} else {
$objPage = new Page($this ->objLanguage);
$page = $objPage ->getByIdentity($this ->objUrl ->cpage);
if (empty($page)) {
$page = $objPage ->getError();
}
$this ->parsePage($page);
ob_start();
require_once('header. php');
echo $this ->content;
require_once('footer.php');
echo ob_get_clean();
}
}
public function parsePage($page = null) {
if (!empty($page) && is_array($page)) {
$this ->meta_title = $page['meta_title'];
$this ->meta_description = $page['meta_description'];
$this ->meta_keywords = $page['meta_keywords'];
$this ->content = $page['content'];
}
}
public function parseNavigation() {
$this ->navigation_1 = $this ->objNavigation ->get(1);
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
89
$this ->navigation_2 = $this ->objNavigat ion->get(2);
$this ->navigation_3 = $this ->objNavigation ->get(3);
}
public function parseColumn() {
$array = array(
'<img src="/media/images/new -radicals.png" alt="New Radicals"
width="250" height="166" style="float:left;margin -bottom:17px;" />',
'<img src="/media/images/red -hot-chili-peppers.png" alt="Red Hot Chili Peppers"
width="250" height="163" style="float:left;margin -bottom:17px;" />',
'<img src="/media/images/blur.png" alt="Blur"
width="250" height="132" style="float:lef t;margin -bottom:17px;" />',
'<img src="/media/images/henry -rollins.png" alt="Henry Rollins"
width="250" height="167" style="float:left;margin -bottom:17px;" />'
);
$keys = array_rand($array, 3);
$this ->column = $array[$keys[0]].$array[$ke ys[1]].$array[$keys[2]];
}
public function addScript($path = null) {
if (!empty($path)) {
$this ->script .= '<script src="'.$path.'"></script>';
}
}
public function runAdmin() {
$this ->objAdmin = new Admin($this ->objLanguage);
if ($this->objUrl ->main == 'logout') {
Login::logout();
} else if ($this ->objUrl ->c == 'login' && Login::isLogged()) {
Helper::redirect('/panel/content/c/pages/a/index');
} else if ($this ->objUrl ->c != 'login' && !Login::isLogged()) {
Helper::redirect('/panel');
} else if (Login::isLogged()) {
$this ->admin = $this ->objAdmin ->getOne($_SESSION[Login::$key_user_id]);
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
90
}
$file = ROOT_PATH.DS.'admin'.DS.'core'.DS.$this ->objUrl ->c.DS.$this ->objUrl ->a.'.php';
if (!is_file($file)) {
$file = ROOT_PATH.DS.'admin'.DS.'core'.DS.'error'.DS.'index.php';
}
ob_start();
require_once($file);
echo ob_get_clean();
}
}
A.3 Dbase. Php
<?php
class Dbase {
private $_db_host = 'localhost';
private $_db_name = 'opreanne_multilingual';
private $_db_user = 'opreanne_root';
private $_db_password = 'P@ssword1';
private $_db_object = null;
private $_db_driver_options = array();
public $_last_statement;
public $_affected_rows;
public $_id;
public functi on __construct($dbconn = null) {
$this ->setProperties($dbconn);
$this ->connect();
}
public function setProperties($array = null) {
if (!empty($array) && is_array($array) && count($array) == 4) {
foreach($array as $key => $value) {
$this ->$key = $value;
}
}
}
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
91
private function connect() {
$this ->setDriverOptions(array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
));
try {
$this ->_db_object = new PDO(
"mysql:dbname={$this ->_db_name};host={$this ->_db_host}",
$this->_db_user,
$this ->_db_password,
$this ->_driver_options
);
} catch (PDOException $e) {
echo $e ->getMessage();
exit;
}
}
public function setDriverOptions($options = null) {
if (!empty($options)) {
$this ->_driver_options = $opt ions;
}
}
private function query($sql = null, $params = null) {
if (!empty($sql)) {
$this ->_last_statement = $sql;
if ($this ->_db_object == null) {
$this ->connect();
}
try {
$statement = $this ->_db_object ->prepa re($sql, $this ->_driver_options);
$params = Helper::makeArray($params);
if (!$statement ->execute($params) || $statement ->errorCode() != '0000') {
$error = $statement ->errorInfo();
throw new PDOException("Database error {$error[0 ]} : {$error[2]}, driver error
code is {$error[1]}");
exit;
}
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
92
return $statement;
} catch (PDOException $e) {
echo $this ->formatException($e);
exit;
}
}
}
public function formatException($exception = null) {
if (is_object($exception)) {
$out = array();
$out[] = '<strong>Message:</strong> '.$exception ->getMessage();
$out[] = '<strong>Code:</strong> '.$exception ->getCode();
$out[] = '<strong>File:</strong> '.$exception ->getFile();
$out[] = '<strong >Line:</strong> '.$exception ->getLine();
$out[] = '<strong>Trace:</strong> '.$exception ->getTraceAsString();
$out[] = '<strong>Last statement:</strong> '.$this ->_last_statement;
return '<p>'.implode('<br />', $out).'</p>';
}
}
public function getLastInsertId($sequenceName = null) {
return $this ->_db_object ->lastInsertId($sequenceName);
}
public function getAll($sql = null, $params = null) {
if (!empty($sql)) {
$statement = $this ->query($sql, $params);
return $statement ->fetchAll(PDO ::FETCH_ASSOC);
}
}
public function getOne($sql = null, $params = null) {
if (!empty($sql)) {
$statement = $this ->query($sql, $params);
return $statement ->fetch(PDO::FETCH_ASSOC);
}
}
public function execute($sql = null, $params = null) {
if (!empty($sql)) {
$statement = $this ->query($sql, $params);
$this ->_affected_rows = $statement ->rowCount();
return true;
}
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
93
return false;
}
public function insert($sql = null, $params = null) {
if (!empty($sql)) {
if ($this ->execute ($sql, $params)) {
$this ->_id = $this ->getLastInsertId();
return true;
}
return false;
}
return false;
}
}
A.4 Email. Php
<?php
require_once('Swift'.DS.'swift_required.php');
class Email {
private $_smtp_host = SMTP_HOST;
private $_smtp _port = SMTP_PORT;
private $_smtp_user = SMTP_USER;
private $_smtp_pass = SMTP_PASSWORD;
public function send($case = null, $from = null, $to = null, $data = null) {
if (!empty($case) && !empty($from) && !empty($to)) {
$from = is_array($from) ? $from : array($from => $from);
$to = is_array($to) ? $to : array($to => $to);
$file = EMAILS_PATH.DS.$case.'.php';
if (is_file($file)) {
ob_start();
require_once($file);
$body = ob_get_clean();
} else {
$body = 'Missi ng email template';
}
$transport = Swift_SmtpTransport::newInstance($this ->_smtp_host, $this ->_smtp_port);
$transport ->setUsername($this ->_smtp_user);
$transport ->setPassword($this ->_smtp_pass);
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
94
$objMailer = Swift_Mailer::newInstance ($transport);
switch($case) {
case 1:
$message = Swift_Message::newInstance('Contact from My Website');
$message ->setMaxLineLength(700);
$message ->setPriority(2);
$message ->setFrom($from);
$message ->setTo($to);
$mess age->setBody($body, 'text/html');
$message ->addPart(strip_tags($body), 'text/plain');
break;
}
$result = $objMailer ->send($message);
return empty($result) ? false : true;
}
return false;
}
}
A.5 Form.php
<?php
class Form {
public $objUrl ;
public function __construct($objUrl = null) {
$this ->objUrl = is_object($objUrl) ? $objUrl : new Url();
}
public function post2Array($expected = null, $do_not_strip = null, $special = null) {
if ($_POST) {
$expected = Helper::makeArray($expe cted);
$do_not_strip = Helper::makeArray($do_not_strip);
$out = array();
foreach($_POST as $key => $value) {
$value = stripslashes($value);
if (!empty($special) && array_key_exists($key, $special)) {
$value = $this ->special($special[$ key], $value);
}
if (empty($do_not_strip) || !in_array($key, $do_not_strip)) {
$value = strip_tags($value);
}
if (!empty($expected)) {
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
95
if (in_array($key, $expected)) {
$out[$key] = $value;
}
} else {
$out[$key] = $value;
}
}
return $out;
}
}
public function special($key = null, $value = null) {
switch($key) {
case 'sanitise':
return Helper::sanitise($value);
break;
default:
return $value;
}
}
public function stickyText($key = null, $value = null) {
if (!empty($key)) {
if ($_POST && array_key_exists($key, $_POST)) {
return stripslashes($_POST[$key]);
} else {
if (!empty($value)) {
return $value;
}
}
}
}
public function post2Url($key = null) {
if (!empty($key) && isset($_POST[$key])) {
$url = $this ->objUrl ->getCurrent($key);
$post_key = urlencode(stripslashes($_POST[$key]));
$url = !empty($post_key) ?
$url.'/'.$key.'/'.$post_key :
$url;
Helper::redirect($url);
}
}
public function stickySelect($key = null, $value = null, $data = null) {
if (!empty($key)) {
if ($_POST) {
if (array_key_exists($key, $_POST) && $_POST[$key] == $value) {
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
96
return ' selected="selected"';
}
} else {
if (!empty($data) && $va lue == $data) {
return ' selected="selected"';
}
}
}
}
}
A.6 Helper.php
<?php
class Helper {
public static function sanitise($string = null) {
if (!empty($string)) {
$string = strtolower(trim($string));
$string = preg_replace("/[^A -Za-z0-9.\s]/", "", $string);
return preg_replace("/[ \s]+/", " -", $string);
}
}
public static function makeArray($array = null) {
return is_array($array) ? $array : array($array);
}
public static function getPlug($file = null, $data = null) {
if (!empty($file)) {
$file = ROOT_PATH.DS.'plugs'.DS.$file.'.php';
if (is_file($file)) {
ob_start();
require_once($file);
return ob_get_clean();
}
}
}
public static function clearString($string = null, $array = null) {
if (!empty($ string) && !self::isEmpty($array)) {
$array = self::makeArray($array);
foreach($array as $key => $value) {
$string = str_replace($value, '', $string);
}
return $string;
}
}
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
97
public static function isEmpty($value = null) {
return empt y($value) && !is_numeric($value) ? true : false;
}
public static function redirect($location = null) {
if (!empty($location)) {
header("Location: {$location}");
exit;
}
}
}
A.7 Language.php
<?php
class Language {
private $table = 'languages';
private $table_2 = 'labels';
private $table_3 = 'labels_content';
private $table_4 = 'labels_types';
private $table_5 = 'languages_content';
private $table_6 = 'labels_types_content';
private $table_7 = 'pages_content';
private $table_8 = 'navigation_ types_content';
public $language = 1;
private $Db;
public $labels = array();
public function __construct() {
if (!empty($_COOKIE['lang'])) {
$this ->language = $_COOKIE['lang'];
}
$this ->Db = new Dbase();
$this ->getLabels();
}
public fu nction getLabels() {
$sql = "SELECT `l`.`id`, `c`.`content`
FROM `{$this ->table_2}` `l`
LEFT JOIN `{$this ->table_3}` `c`
ON `c`.`label` = `l`.`id`
WHERE `c`.`language` = ?
ORDER BY `l`.`name` ASC";
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
98
$labels = $this ->Db->getAll($sq l, $this ->language);
if (empty($labels)) {
setcookie('lang', 1, time() + 31536000, '/');
$this ->language = 1;
$sql = "SELECT `l`.`id`, `c`.`content`
FROM `{$this ->table_2}` `l`
LEFT JOIN `{$this ->table_3}` `c`
ON `c`.`label` = `l `.`id`
WHERE `c`.`language` = ?
ORDER BY `l`.`name` ASC";
$labels = $this ->Db->getAll($sql, $this ->language);
}
if (!empty($labels)) {
foreach($labels as $row) {
$this ->labels[$row['id']] = $row['content'];
}
}
}
public funct ion getAll($search = null) {
$fields = array();
$values = array($this ->language);
$sql = "SELECT `l`.`id`, `l`.`name`, `c`.`label`
FROM `{$this ->table}` `l`
LEFT JOIN `{$this ->table_5}` `c`
ON `c`.`language_id` = `l`.`id`
WHERE `c`.` language` = ?";
if (!empty($search) && is_array($search)) {
$sql .= " AND (";
foreach($search as $key => $value) {
$fields[] = "`c`.`{$key}` LIKE ?";
$values[] = "%{$value}%";
}
$sql .= implode(" OR ", $fields);
$sql .= ")";
}
$sql .= " ORDER BY `l`.`name` ASC";
return $this ->Db->getAll($sql, $values);
}
public function getAllLabels($search = null) {
$fields = array();
$values = array($this ->language, $this ->language);
$sql = "SELECT `l`.`id`, `l`.`name`, `l`.`type` ,
`c`.`content`, `t`.`content` AS `type_name`
FROM `{$this ->table_2}` `l`
LEFT JOIN `{$this ->table_3}` `c`
ON `c`.`label` = `l`.`id`
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
99
LEFT JOIN `{$this ->table_6}` `t`
ON `t`.`label` = `l`.`type`
WHERE `c`.`language` = ?
AND `t`.`language` = ?";
if (!empty($search) && is_array($search)) {
$sql .= " AND (";
foreach($search as $key => $value) {
$fields[] = "`c`.`{$key}` LIKE ?";
$values[] = "%{$value}%";
}
$sql .= implode(" OR ", $fields);
$sql .= ")";
}
$sql .= " ORDER BY `l`.`type`, `l`.`name` ASC";
return $this ->Db->getAll($sql, $values);
}
public function getTypes($search = null) {
$fields = array();
$values = array($this ->language);
$sql = "SELECT `c`.*, `t`.`name`,
IF (
(
SELECT COUNT(`id`)
FROM `{$this ->table_2}`
WHERE `type` = `t`.`id`
) > 0,
1,
0
) AS `is_assigned`
FROM `{$this ->table_4}` `t`
LEFT JOIN `{$this ->table_6}` `c`
ON `c`.`label` = `t`.`id`
WHERE `c`.`language ` = ?";
if (!empty($search) && is_array($search)) {
$sql .= " AND (";
foreach($search as $key => $value) {
$fields[] = "`c`.`{$key}` LIKE ?";
$values[] = "%{$value}%";
}
$sql .= implode(" OR ", $fields);
$sql .= ")";
}
$sql .= " ORDER BY `t`.`name` ASC";
return $this ->Db->getAll($sql, $values);
}
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
100
public function updateAll($array = null) {
if (!empty($array)) {
$array = Helper::makeArray($array);
$errors = array();
foreach($array as $key => $value) {
$sql = "UPDATE `{$this ->table_3}`
SET `content` = ?
WHERE `label` = ?
AND `language` = ?";
if (!$this ->Db->execute($sql, array($value, $key, $this ->language))) {
$errors[] = $key;
}
}
return empty($errors) ? true : false;
}
return false;
}
public function add($content = null, $type = null) {
if (!empty($content) && !empty($type)) {
$sql = "INSERT INTO `{$this ->table_2}`
(`name`, `type`) VALUES (?, ?)";
if ($this ->Db->insert($sql, array($content, $type))) {
$id = $this ->Db->_id;
$errors = array();
$languages = $this ->getAll();
if (!empty($languages)) {
foreach($languages as $row) {
$sql = "INSERT INTO `{$this ->table_3}`
(`label`, `language`, `content`)
VALUES (?, ?, ?)";
if (!$this ->Db->insert($sql, array($id, $row['id'], $content))) {
$errors[] = $row['id'];
}
}
return empty($errors) ? true : false;
}
return false;
}
return false;
}
return false;
}
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
101
public function remove($id = null) {
if (!empty($id)) {
$sql = "DELETE FROM `{$this ->table_2}`
WHERE `id` = ?";
return $this ->Db->execute($sql, $id);
}
return false;
}
public function updateLanguages($array = null) {
if (!empty($array)) {
$array = Helper::makeArray($array);
$errors = array();
foreach($array as $key => $value) {
$sql = "UPDATE `{$this ->table_5}`
SET `label` = ?
WHERE `language_id` = ?
AND `language` = ?";
if (!$this ->Db->execute($sql, array($value, $k ey, $this ->language))) {
$errors[] = $key;
}
}
return empty($errors) ? true : false;
}
return false;
}
public function addLanguage($label = null) {
if (!empty($label)) {
$sql = "INSERT INTO `{$this ->table}`
(`name`) VA LUES (?)";
if ($this ->Db->insert($sql, $label)) {
$id = $this ->Db->_id;
$languages = $this ->getAll();
$values = array();
if (!empty($languages)) {
$sql = "START TRANSACTION;";
foreach($languages as $la nguage) {
$sql .= "INSERT INTO `{$this ->table_5}`
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
102
(`language_id`, `language`, `label`)
VALUES (?, ?, ?);";
$values[] = $id;
$values[] = $language['id'];
$values[] = $label;
$sql .= "INSERT INTO `{$this ->table_5}`
(`language_id`, `language`, `label`)
VALUES (?, ?, ?);";
$values[] = $language['id'];
$values[] = $id;
$values[] = $language['label'];
}
$sql .= "INSERT INTO `{$this ->table_5}`
(`language_id`, `language`, `label`)
VALUES (?, ?, ?);";
$values[] = $id;
$values[] = $id;
$values[] = $label;
$objPage = new Page();
$pages = $objPage ->getAll();
if (!empty($pages)) {
foreach($pages as $page) {
$sql .= "INSERT INTO `{$this ->table_7}`
(`page`, `language`, `name`, `content`,
`meta_title`, `meta_description`,
`meta_keywords`)
VALUES (?, ?, ?, ?, ?, ?, ?);";
$values[] = $page['id'];
$values[] = $id;
$values[] = $page['name'];
$values[] = $page['content'];
$values[] = $page['meta_title'];
$values[] = $page['meta_description'];
$values[] = $page['meta_keywords'];
}
}
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
103
$objNavigation = new Navigation();
$navigation_types = $objNavigation ->getAllTypes();
if (!empty($navigation_types)) {
foreach($navigation_types as $navigation_type) {
$sql .= "INSERT INTO `{$this ->table_8}`
(`navigation`, `language`, `label`)
VALUES (?, ?, ?);";
$values[] = $navigation_type['navigation'];
$values[] = $id;
$values[] = $navigation_type['label'];
}
}
$label_types = $this ->getTypes();
if (!empty($label_types)) {
foreach($label_types as $label_type) {
$sql .= "INSERT INTO `{$this ->table_6}`
(`label`, `language`, `content`)
VALUES (?, ?, ?);";
$values[] = $label_type['label'];
$valu es[] = $id;
$values[] = $label_type['name'];
}
}
if (!empty($this ->labels)) {
foreach($this ->labels as $key => $value) {
$sql .= "INSERT INTO `{$this ->table_3}`
(`label`, `language`, `content`)
VALUES (?, ?, ?);";
$values[] = $key;
$values[] = $id;
$values[] = $value;
}
}
$sql .= "COMMIT;";
return $this ->Db->execute($sql, $values);
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
104
}
return false;
}
return f alse;
}
return false;
}
public function removeLanguage($id = null) {
if (!empty($id)) {
$sql = "DELETE FROM `{$this ->table}`
WHERE `id` = ?";
return $this ->Db->execute($sql, $id);
}
return false;
}
public function updateTy pes($array = null) {
if (!empty($array)) {
$array = Helper::makeArray($array);
$errors = array();
foreach($array as $key => $value) {
$sql = "UPDATE `{$this ->table_6}`
SET `content` = ?
WHERE `label` = ?
AND `language` = ?" ;
if (!$this ->Db->execute($sql, array($value, $key, $this ->language))) {
$errors[] = $key;
}
}
return empty($errors) ? true : false;
}
return false;
}
public function addType($label = null) {
if (!empty($label)) {
$sql = "INSERT INTO `{$this ->table_4}`
(`name`) VALUES (?)";
if ($this ->Db->insert($sql, $label)) {
$id = $this ->Db->_id;
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
105
$types = $this ->getAll();
if (!empty($types)) {
$errors = array();
foreach( $types as $type) {
$sql = "INSERT INTO `{$this ->table_6}`
(`label`, `language`, `content`)
VALUES (?, ?, ?)";
if (!$this ->Db->insert($sql, array($id, $type['id'], $label))) {
$errors[] = $type['id'];
}
}
return empty($errors) ? true : false;
}
return false;
}
return false;
}
return false;
}
public function getType($id = null) {
if (!empty($id)) {
$sql = "SELECT `c`.*, `t`.`name`,
IF (
(
SELECT COUNT(`id`)
FROM `{$this ->table_2}`
WHERE `type` = `t`.`id`
) > 0,
1,
0
) AS `is_assigned`
FROM `{$this ->table_4}` `t`
LEFT JOIN `{$this ->table_6}` `c`
ON `c`.`label` = `t`.`id`
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
106
WHERE `t`.`id` = ?
AND `c`.`language` = ?";
return $this ->Db->getOne($sql, array($id, $this ->language));
}
}
public function removeType($id = null) {
if (!empty($id)) {
$sql = "DELETE FROM `{$this ->table_4}`
WHERE `id` = ?";
return $this ->Db->execute($sql, $id);
}
return false;
}
}
A.8 Login.php
<?php
class Login {
public static $key_user_id = 'user_id';
public static $key_log = 'logged';
public static function isLogged() {
if (
!empty($_SESSION[self::$key_user_id]) &&
!empty($_SESSION[self::$key_log])
) {
return true;
}
return false;
}
public static function logout() {
session_destroy();
Helper::redirect('/panel');
}
public static function loginAdmin($id = null) {
if (!empty($id)) {
$_SESSION[se lf::$key_user_id] = $id;
$_SESSION[self::$key_log] = time();
}
}
}
A.9 Navigation.php
<?php
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
107
class Navigation {
private $table = 'navigation';
private $table_2 = 'navigation_types';
private $table_3 = 'pages';
private $table_4 = 'pages_content';
private $table_5 = 'navigation_types_content';
private $objDb;
public $objUrl;
public $objLanguage;
public $classActive = 'active';
public function __construct($objUrl = null, $objLanguage = null) {
$this ->objUrl = is_object($objUrl) ? $objUrl : new Url();
$this ->objLanguage = is_object($objLanguage) ? $objLanguage : new Language();
$this ->Db = new Dbase();
}
public function getOne($id = null) {
if (!empty($id)) {
$sql = "SELECT *
FROM `{$this ->table}`
WHERE `id` = ?";
return $this ->Db->getOne($sql, $id);
}
}
public function active($main = null, $pairs = null, $single = true) {
if (!empty($main)) {
if (empty($pairs)) {
if ($main == $this ->objUrl ->main) {
return !$single ? ' '.$this ->classActive : ' class="'.$t his->classActive.'"';
}
} else {
$exceptions = array();
foreach($pairs as $key => $value) {
$paramUrl = $this ->objUrl ->get($key);
if ($paramUrl != $value) {
$exceptions[] = $key;
}
}
if ($main == $this ->objUrl->main && empty($exceptions)) {
return !$single ? ' '.$this ->classActive : ' class="'.$this ->classActive.'"';
}
}
}
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
108
}
public function getAllTypes() {
$sql = "SELECT *
FROM `{$this ->table_5}`
WHERE `language` = ?
ORDER BY ` navigation` ASC";
return $this ->Db->getAll($sql, $this ->objLanguage ->language);
}
public function getRecords($case = null) {
if (!empty($case)) {
$sql = "SELECT `n`.*, `t`.`label`, `p`.`identity`, `c`.`name`
FROM `{$this ->table}` `n`
JOIN `{$this ->table_5}` `t`
ON `t`.`navigation` = `n`.`type`
JOIN `{$this ->table_3}` `p`
ON `p`.`id` = `n`.`page`
JOIN `{$this ->table_4}` `c`
ON `c`.`page` = `n`.`page`
WHERE `n`.`type` = ?
AND `c`.`language` = ?
AND `t`.`language` = ?
ORDER BY `n`.`order` ASC";
return $this ->Db->getAll($sql, array($case, $this ->objLanguage ->language, $this ->objLanguage –
>language));
}
}
public function get($case = null) {
if (!empty($case)) {
$list = $this ->getRecords ($case);
if (!empty($list)) {
$out = array();
switch($case) {
case 1:
foreach($list as $row) {
$item = '<li';
$item .= $this ->active($row['identity']);
$item .= '><a href="';
$item .= $this ->objUrl ->href($row[' identity']);
$item .= '" title="';
$item .= $row['name'];
$item .= '">';
$item .= $row['name'];
$item .= '</a></li>';
$out[] = $item;
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
109
}
$out = '<ul id="navigation">'.implode('', $out).'</ul>';
break;
case 2:
$i = 1;
foreach($list as $row) {
$item = '<li';
if ($i == count($list)) {
$item .= ' class="last';
$item .= $this ->active($row['identity'], null, false);
$item .= '"';
} else {
$item .= $this ->active($row['identity']);
}
$item .= '><a href="';
$item .= $this ->objUrl ->href($row['identity']);
$item .= '" title="';
$item .= $row['name'];
$item .= '">';
$item .= $row['name'];
$item .= '</a></li>';
$out[] = $item;
$i++;
}
$out = '<ul id="navigation -left">'.implode('', $out).'</ul>';
break;
case 3:
foreach($list as $row) {
$item = '<a href="';
$item .= $this ->objUrl ->href($row['identity']);
$item . = '" title="';
$item .= $row['name'];
$item .= '"';
$item .= $this ->active($row['identity']);
$item .= '>';
$item .= $row['name'];
$item .= '</a>';
$out[] = $item;
}
$out = '<p>'.implode(' :: ', $out).'</ p>';
break;
default:
return null;
}
return !empty($out) ? '<nav>'.$out.'</nav>' : null;
}
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
110
}
}
public function updateOrder($id = null, $order = null) {
if (!empty($id) && !empty($order)) {
$sql = "UPDATE `{$this ->table}`
SET `order` = ?
WHERE `id` = ?";
return $this ->Db->execute($sql, array($order, $id));
}
}
public function getLast($type = null) {
if (!empty($type)) {
$sql = "SELECT *
FROM `{$this ->table}`
WHERE `type` = ?
ORDER BY `or der` DESC
LIMIT 0, 1";
return $this ->Db->getOne($sql, $type);
}
}
public function add($type = null, $page = null) {
if (!empty($type) && !empty($page)) {
$last = $this ->getLast($type);
$order = !empty($last) ? $last['order'] + 1 : 1;
$sql = "INSERT INTO `{$this ->table}`
(`type`, `page`, `order`)
VALUES (?, ?, ?)";
return $this ->Db->insert($sql, array($type, $page, $order));
}
}
public function remove($id = null) {
if (!empty($id)) {
$sql = "DELETE FROM `{$this ->table}`
WHERE `id` = ?";
return $this ->Db->execute($sql, $id);
}
}
}
A.10 Page.php
<?php
class Page {
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
111
public $objLanguage;
private $table = 'pages';
private $table_2 = 'pages_content';
private $Db;
public $language = 1;
public $error_pag e_id = 2;
public $not_removable = array(1, 2, 3);
public function __construct($objLanguage = null) {
$this ->Db = new Dbase();
$this ->objLanguage = is_object($objLanguage) ? $objLanguage : new Language();
}
public function getAll($search = null) {
$fields = array();
$values = array($this ->objLanguage ->language);
$sql = "SELECT `p`.`id`, `p`.`identity`, `c`.`name`,
`c`.`content`, `c`.`meta_title`, `c`.`meta_description`, `c`.`meta_keywords`
FROM `{$this ->table}` `p`
LEFT JOIN `{$th is->table_2}` `c`
ON `c`.`page` = `p`.`id`
WHERE `c`.`language` = ?";
if (!empty($search) && is_array($search)) {
$sql .= " AND (";
foreach($search as $key => $value) {
$fields[] = "`c`.`{$key}` LIKE ?";
$values[] = "%{$value}%";
}
$sql .= implode(" OR ", $fields);
$sql .= ")";
}
return $this ->Db->getAll($sql, $values);
}
public function getOne($id = null) {
$sql = "SELECT `p`.`id`, `p`.`identity`, `c`.`name`,
`c`.`content`, `c`.`meta_title`, `c`.`meta_descripti on`, `c`.`meta_keywords`
FROM `{$this ->table}` `p`
LEFT JOIN `{$this ->table_2}` `c`
ON `c`.`page` = `p`.`id`
WHERE `c`.`language` = ?
AND `p`.`id` = ?";
$page = $this ->Db->getOne($sql, array($this ->objLanguage ->language, $id));
if (empty($page)) {
$page = $this ->Db->getOne($sql, array($this ->language, $id));
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
112
}
return $page;
}
public function getByIdentity($identity = null) {
$sql = "SELECT `p`.`id`, `p`.`identity`, `c`.`name`,
`c`.`content`, `c`.`meta_title`, `c`.` meta_description`, `c`.`meta_keywords`
FROM `{$this ->table}` `p`
LEFT JOIN `{$this ->table_2}` `c`
ON `c`.`page` = `p`.`id`
WHERE `c`.`language` = ?
AND `p`.`identity` = ?";
$page = $this ->Db->getOne($sql, array($this ->objLanguage ->language, $identity));
if (empty($page)) {
$page = $this ->Db->getOne($sql, array($this ->language, $identity));
}
return $page;
}
public function getError() {
return $this ->getOne($this ->error_page_id);
}
public function duplicate($identi ty = null, $id = null) {
if (!Helper::isEmpty($identity)) {
$array = array($identity);
$sql = "SELECT *
FROM `{$this ->table}`
WHERE `identity` = ?";
if (!empty($id)) {
$sql .= " AND `id` != ?";
$array[] = $id;
}
$sql .= " LIMIT 0, 1";
$result = $this ->Db->getOne($sql, $array);
return !empty($result) ? true : false;
}
return true;
}
public function update($array = null, $id = null) {
if (!empty($array)) {
$sql = "START TRANSACTION;";
$sql .= "UPDATE `{$this ->table}`
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
113
SET `identity` = ?
WHERE `id` = ?;";
$sql .= "UPDATE `{$this ->table_2}`
SET `name` = ?,
`content` = ?,
`meta_title` = ?,
`meta_description` = ?,
`meta_keywords` = ?
WHERE `page` = ?
AND `lang uage` = ?;";
$sql .= "COMMIT;";
return $this ->Db->execute($sql, array(
$array['identity'],
$id,
$array['name'],
$array['content'],
$array['meta_title'],
$array['meta_description'],
$array['meta_keywords'],
$id,
$this->objLanguage ->language
));
}
}
public function add($array = null) {
if (!empty($array)) {
$languages = $this ->objLanguage ->getAll();
if (!empty($languages)) {
$sql = "INSERT INTO `{$this ->table}`
(`title`, `identi ty`) VALUES (?, ?)";
if ($this ->Db->insert($sql, array($array['name'], $array['identity']))) {
$id = $this ->Db->_id;
$values = array();
$sql = "START TRANSACTION;";
foreach($languages as $row) {
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
114
$sql .= "INSERT INTO `{$this ->table_2}`
(
`page`, `language`, `name`, `content`,
`meta_title`, `meta_description`,
`meta_keywords`
)
VALUES (?, ?, ?, ?, ?, ?, ?);";
$values[] = $id;
$values[] = $row['id'];
$values[] = $array['name'];
$values[] = $array['content'];
$values[] = $array['meta_title'];
$values[] = $array['meta_description'];
$values[] = $array['meta_keywords'];
}
$sql .= "COMMIT; ";
return $this ->Db->execute($sql, $values);
}
return false;
}
return false;
}
return false;
}
public function remove($id = null) {
if (!empty($id)) {
$sql = "DELETE FROM `{$this ->table}`
WHERE `id` = ?";
return $this ->Db->execute($sql, $id);
}
}
}
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
115
Cod CSS:
Core.css
* {
margin:0;
padding:0;
outline:none;
border:none;
}
body {
font-size:12px;
line-height:20px;
background:#FFFFFF;
text-align:center;
font-family:Arial,Verd ana,Sans -serif;
color:#000101;
}
h1,h2,h3,h4,h5,p {
padding -bottom: 17px;
}
h1,h2,h3,h4,h5,a {
color: #3298FD;
}
h1 {
font-size:21px;
margin -bottom: 17px;
border -bottom: solid 1px #333;
}
h2 {
font-size: 18px;
}
h3 {
font-size: 16px;
}
h4 {
font-size: 14px;
}
#pre-header,#header,#navigation,#container,#footer {
width: 100%;
float: left;
}
#wrapper,#pre -header -container {
width:900px;
margin:0 auto;
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
116
text-align:left;
}
#pre-header {
height: 88px;
border -top: solid 8px #3298FD;
}
#pre-header -container {
height: 88px;
background: url(/images/logo.png) no -repeat 0 22px;
position: relative;
}
#logo,#logo a {
width: 262px;
height: 51px;
text-decoration: none;
text-indent: -999999em;
overflow: hidden;
display: block;
}
#logo {
position: absolute;
top: 20px;
left: 0;
}
#language {
position: absolute;
top: 30px;
right: 0;
padding:5px;
border: solid 1px #111;
}
option {
padding -right: 20px;
border:none;
}
#header {
height: 300px;
border -top: solid 5px #3298FD;
background -repeat: no-repeat;
background -position:0 0;
}
#navigation {
height: 50px;
background: #111;
list-style: none;
}
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
117
#navigation li,#navigation li a {
display: block;
float: left;
}
#navigation li a {
text-decoration: none;
text-transform: uppercase;
padding: 16px 30px 0 30px;
height: 34px;
color: #fff;
}
#navigation li a:hover,#navigation li.active a,#navigation li.active a:hover {
color: #3298FD;
}
#navigation li.active a,#navigation li.active a:hover {
font-style: italic;
}
#container {
padding: 20px 0;
border -bottom: solid 1px #333;
}
#left,#right,.column -item,#footer -left,#footer -right,#navigation -left,#navigation -left li,#navigation -left a {
float: left;
}
#left {
width: 250px;
}
#right {
width: 630px;
padding -left: 20px;
}
.column -item {
width: 210px;
padding:10px 20px;
margin -bottom: 17px;
background: #393638;
}
#navigation -left {
list-style: none;
width: 210px;
}
#navigation -left li,#navigation -left li a {
width: 210px;
}
#navigation -left li {
border -bottom: dashed 1px #666;
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
118
}
#navigatio n-left li.last {
border: none;
}
#navigation -left li.active a,#navigation -left li.active a:hover {
color: #3298FD;
}
#navigation -left li a {
color: #fff;
text-decoration: none;
padding: 5px 0;
}
#footer {
padding: 10px 0;
}
#footer p,#footer a,#foote r span {
color: #666;
text-decoration: none;
}
#footer a.active,#footer a.active:hover {
color: #3298FD;
}
#footer -left {
width: 430px;
padding -right: 20px;
}
#footer -right {
width: 430px;
padding -left: 20px;
text-align: right;
}
table {
border -collapse:collapse;
border -spacing:0;
}
.tbl_insert th,.tbl_insert td {
text-align: left;
vertical -align: top;
padding: 3px 0;
}
.field {
background: #464445;
color: #fff;
padding: 5px;
width: 400px;
border: solid 1px #111;
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
119
}
.field:focus {
backg round: #333;
}
.area {
width: 570px;
height: 150px;
}
.button,a.button {
border: solid 1px #111;
padding: 3px 15px;
text-decoration: none;
color: #fff;
text-transform: uppercase;
float: left;
}
.button -orange {
background: url(/images/button.png) repeat -x 0 0;
}
.clearer,.devider {
clear: both;
width: 100%;
font-size: 0;
line-height: 0;
height: 0;
}
.devider {
height: 17px;
}
.border -top-solid {
border -top: solid 1px #333;
}
.orange,.warning {
color: #3298FD;
}
.warning {
display: block;
}
.yellow {
color: #ffd300;
}
.dn {
display: none;
}
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
120
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
121
B. SITE -UL WEB AL PROIE CTULUI
www.oprean.net
Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electr onică
Sistem de management al conținutului, cu aplicații în e -learning
122
C. CD / DVD
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Sistem de management al conținutului, cu aplicații în e -learning ii UNIVERSITATEA DIN CRAIOVA FACULTATEA DE AUTOMATICĂ, CALCULATOARE ȘI ELECTRONICĂ… [604783] (ID: 604783)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
